Merge branch 'rmobile' of git://git.denx.de/u-boot-sh
authorTom Rini <trini@konsulko.com>
Sun, 13 Sep 2015 21:25:16 +0000 (17:25 -0400)
committerTom Rini <trini@konsulko.com>
Sun, 13 Sep 2015 21:25:16 +0000 (17:25 -0400)
1209 files changed:
Makefile
README
arch/arc/Kconfig
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/cpu/arm1136/mx31/generic.c
arch/arm/cpu/arm926ejs/lpc32xx/devices.c
arch/arm/cpu/arm926ejs/mx27/generic.c
arch/arm/cpu/arm926ejs/mxs/Makefile
arch/arm/cpu/arm926ejs/mxs/mxs.c
arch/arm/cpu/arm926ejs/spear/cpu.c
arch/arm/cpu/armv7/Makefile
arch/arm/cpu/armv7/cpu.c
arch/arm/cpu/armv7/mx6/Kconfig
arch/arm/cpu/armv7/mx6/clock.c
arch/arm/cpu/armv7/mx6/ddr.c
arch/arm/cpu/armv7/mx6/soc.c
arch/arm/cpu/armv7/mx7/Kconfig [new file with mode: 0644]
arch/arm/cpu/armv7/mx7/Makefile [new file with mode: 0644]
arch/arm/cpu/armv7/mx7/clock.c [new file with mode: 0644]
arch/arm/cpu/armv7/mx7/clock_slice.c [new file with mode: 0644]
arch/arm/cpu/armv7/mx7/soc.c [new file with mode: 0644]
arch/arm/cpu/armv7/omap-common/emif-common.c
arch/arm/cpu/armv7/omap3/Kconfig
arch/arm/cpu/armv7/sunxi/Makefile
arch/arm/cpu/armv7/sunxi/board.c
arch/arm/cpu/armv7/sunxi/tzpc.c [new file with mode: 0644]
arch/arm/cpu/armv7/vf610/generic.c
arch/arm/cpu/armv8/cache_v8.c
arch/arm/cpu/armv8/fsl-lsch3/README
arch/arm/cpu/armv8/fsl-lsch3/cpu.c
arch/arm/cpu/armv8/fsl-lsch3/fsl_lsch3_serdes.c
arch/arm/cpu/armv8/fsl-lsch3/lowlevel.S
arch/arm/cpu/armv8/fsl-lsch3/ls2085a_serdes.c
arch/arm/dts/Makefile
arch/arm/dts/cros-ec-sbs.dtsi [new file with mode: 0644]
arch/arm/dts/exynos5250-snow.dts
arch/arm/dts/exynos5250-spring.dts
arch/arm/dts/exynos5420-peach-pit.dts
arch/arm/dts/exynos5800-peach-pi.dts
arch/arm/dts/rk3288-firefly.dts [new file with mode: 0644]
arch/arm/dts/rk3288-firefly.dtsi [new file with mode: 0644]
arch/arm/dts/rk3288-jerry.dts [new file with mode: 0644]
arch/arm/dts/rk3288-thermal.dtsi [new file with mode: 0644]
arch/arm/dts/rk3288-veyron-chromebook.dtsi [new file with mode: 0644]
arch/arm/dts/rk3288-veyron.dtsi [new file with mode: 0644]
arch/arm/dts/rk3288.dtsi [new file with mode: 0644]
arch/arm/dts/socfpga_cyclone5_de0_nano_soc.dts [new file with mode: 0644]
arch/arm/dts/socfpga_cyclone5_mcvevk.dts [new file with mode: 0644]
arch/arm/dts/socfpga_cyclone5_sockit.dts [new file with mode: 0644]
arch/arm/dts/sun4i-a10-inet1.dts [new file with mode: 0644]
arch/arm/dts/sun4i-a10-inet9f-rev03.dts [new file with mode: 0644]
arch/arm/dts/sun4i-a10-pov-protab2-ips9.dts [new file with mode: 0644]
arch/arm/dts/sun5i-a10s-wobo-i5.dts [new file with mode: 0644]
arch/arm/dts/sun5i-a10s.dtsi
arch/arm/dts/sun5i-a13-inet-98v-rev2.dts [new file with mode: 0644]
arch/arm/dts/sun5i-a13-q8-tablet.dts [new file with mode: 0644]
arch/arm/dts/sun5i-q8-common.dtsi [new file with mode: 0644]
arch/arm/dts/sun7i-a20-olimex-som-evb.dts [new file with mode: 0644]
arch/arm/dts/sun8i-a23-gt90h-v4.dts [new file with mode: 0644]
arch/arm/dts/sunxi-q8-common.dtsi [new file with mode: 0644]
arch/arm/imx-common/Makefile
arch/arm/imx-common/cache.c [new file with mode: 0644]
arch/arm/imx-common/cpu.c
arch/arm/imx-common/init.c [new file with mode: 0644]
arch/arm/imx-common/iomux-v3.c
arch/arm/imx-common/syscounter.c [new file with mode: 0644]
arch/arm/include/asm/arch-am33xx/cpu.h
arch/arm/include/asm/arch-fsl-lsch3/config.h
arch/arm/include/asm/arch-hi6220/gpio.h
arch/arm/include/asm/arch-imx/cpu.h
arch/arm/include/asm/arch-lpc32xx/clk.h
arch/arm/include/asm/arch-lpc32xx/gpio_grp.h
arch/arm/include/asm/arch-ls102xa/config.h
arch/arm/include/asm/arch-ls102xa/immap_ls102xa.h
arch/arm/include/asm/arch-ls102xa/ls102xa_devdis.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx31/sys_proto.h
arch/arm/include/asm/arch-mx35/sys_proto.h
arch/arm/include/asm/arch-mx5/iomux-mx51.h
arch/arm/include/asm/arch-mx5/sys_proto.h
arch/arm/include/asm/arch-mx6/clock.h
arch/arm/include/asm/arch-mx6/crm_regs.h
arch/arm/include/asm/arch-mx6/imx-regs.h
arch/arm/include/asm/arch-mx6/mx6-ddr.h
arch/arm/include/asm/arch-mx6/mx6sl-ddr.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx6/sys_proto.h
arch/arm/include/asm/arch-mx7/clock.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx7/clock_slice.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx7/crm_regs.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx7/gpio.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx7/imx-regs.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx7/mx7-pins.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx7/mx7d_pins.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx7/sys_proto.h [new file with mode: 0644]
arch/arm/include/asm/arch-mxs/sys_proto.h
arch/arm/include/asm/arch-omap5/cpu.h
arch/arm/include/asm/arch-rockchip/clock.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/cru_rk3288.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/ddr_rk3288.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/gpio.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/grf_rk3288.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/hardware.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/i2c.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/periph.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/pmu_rk3288.h [new file with mode: 0644]
arch/arm/include/asm/arch-rockchip/sdram.h [new file with mode: 0644]
arch/arm/include/asm/arch-spear/spr_misc.h
arch/arm/include/asm/arch-sunxi/tzpc.h [new file with mode: 0644]
arch/arm/include/asm/arch-tegra/dc.h
arch/arm/include/asm/armv8/mmu.h
arch/arm/include/asm/fsl_secure_boot.h
arch/arm/include/asm/imx-common/boot_mode.h
arch/arm/include/asm/imx-common/iomux-v3.h
arch/arm/include/asm/imx-common/sys_proto.h [new file with mode: 0644]
arch/arm/include/asm/imx-common/syscounter.h [new file with mode: 0644]
arch/arm/include/asm/mach-types.h
arch/arm/lib/Makefile
arch/arm/lib/ccn504.S [new file with mode: 0644]
arch/arm/mach-at91/Kconfig
arch/arm/mach-davinci/Kconfig
arch/arm/mach-davinci/cpu.c
arch/arm/mach-keystone/include/mach/clock_defs.h
arch/arm/mach-keystone/include/mach/hardware.h
arch/arm/mach-kirkwood/Kconfig
arch/arm/mach-mvebu/include/mach/soc.h
arch/arm/mach-nomadik/Kconfig [deleted file]
arch/arm/mach-nomadik/Makefile [deleted file]
arch/arm/mach-nomadik/gpio.c [deleted file]
arch/arm/mach-nomadik/include/mach/gpio.h [deleted file]
arch/arm/mach-nomadik/include/mach/mtu.h [deleted file]
arch/arm/mach-nomadik/reset.S [deleted file]
arch/arm/mach-nomadik/timer.c [deleted file]
arch/arm/mach-rockchip/Kconfig [new file with mode: 0644]
arch/arm/mach-rockchip/Makefile [new file with mode: 0644]
arch/arm/mach-rockchip/board-spl.c [new file with mode: 0644]
arch/arm/mach-rockchip/board.c [new file with mode: 0644]
arch/arm/mach-rockchip/common.c [new file with mode: 0644]
arch/arm/mach-rockchip/rk3288/Kconfig [new file with mode: 0644]
arch/arm/mach-rockchip/rk3288/Makefile [new file with mode: 0644]
arch/arm/mach-rockchip/rk3288/reset_rk3288.c [new file with mode: 0644]
arch/arm/mach-rockchip/rk3288/sdram_rk3288.c [new file with mode: 0644]
arch/arm/mach-rockchip/rk3288/syscon_rk3288.c [new file with mode: 0644]
arch/arm/mach-socfpga/Kconfig
arch/arm/mach-socfpga/include/mach/dwmmc.h
arch/arm/mach-socfpga/misc.c
arch/arm/mach-socfpga/reset_manager.c
arch/arm/mach-socfpga/spl.c
arch/arm/mach-versatile/Kconfig [deleted file]
arch/arm/mach-zynq/include/mach/gpio.h
arch/powerpc/cpu/mpc5xx/Kconfig
arch/powerpc/cpu/mpc85xx/Kconfig
arch/powerpc/cpu/mpc85xx/b4860_ids.c
arch/powerpc/cpu/mpc85xx/liodn.c
arch/powerpc/cpu/mpc85xx/p2041_ids.c
arch/powerpc/cpu/mpc85xx/p3041_ids.c
arch/powerpc/cpu/mpc85xx/p4080_ids.c
arch/powerpc/cpu/mpc85xx/p5020_ids.c
arch/powerpc/cpu/mpc85xx/p5040_ids.c
arch/powerpc/cpu/mpc85xx/start.S
arch/powerpc/cpu/mpc85xx/t1024_ids.c
arch/powerpc/cpu/mpc85xx/t1040_ids.c
arch/powerpc/cpu/mpc85xx/t2080_ids.c
arch/powerpc/cpu/mpc85xx/t4240_ids.c
arch/powerpc/cpu/ppc4xx/Kconfig
arch/powerpc/cpu/ppc4xx/start.S
arch/powerpc/include/asm/fsl_liodn.h
arch/powerpc/include/asm/fsl_secure_boot.h
arch/powerpc/include/asm/global_data.h
arch/sandbox/dts/sandbox.dts
arch/sandbox/dts/test.dts
arch/x86/cpu/coreboot/coreboot.c
arch/x86/cpu/quark/Makefile
arch/x86/cpu/quark/msg_port.c
arch/x86/cpu/quark/pci.c [deleted file]
arch/x86/cpu/quark/quark.c
arch/x86/dts/chromebook_link.dts
arch/x86/dts/chromebox_panther.dts
arch/x86/dts/galileo.dts
arch/x86/include/asm/arch-quark/quark.h
board/BuR/kwb/board.c
board/BuS/eb_cpux9k2/Kconfig [deleted file]
board/BuS/eb_cpux9k2/MAINTAINERS [deleted file]
board/BuS/eb_cpux9k2/Makefile [deleted file]
board/BuS/eb_cpux9k2/cpux9k2.c [deleted file]
board/BuS/vl_ma2sc/Kconfig [deleted file]
board/BuS/vl_ma2sc/MAINTAINERS [deleted file]
board/BuS/vl_ma2sc/Makefile [deleted file]
board/BuS/vl_ma2sc/vl_ma2sc.c [deleted file]
board/Marvell/mv88f6281gtw_ge/Kconfig [deleted file]
board/Marvell/mv88f6281gtw_ge/MAINTAINERS [deleted file]
board/Marvell/mv88f6281gtw_ge/Makefile [deleted file]
board/Marvell/mv88f6281gtw_ge/kwbimage.cfg [deleted file]
board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c [deleted file]
board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.h [deleted file]
board/Marvell/openrd/Kconfig [deleted file]
board/Marvell/openrd/MAINTAINERS [deleted file]
board/Marvell/openrd/Makefile [deleted file]
board/Marvell/openrd/kwbimage.cfg [deleted file]
board/Marvell/openrd/openrd.c [deleted file]
board/Marvell/openrd/openrd.h [deleted file]
board/Marvell/rd6281a/Kconfig [deleted file]
board/Marvell/rd6281a/MAINTAINERS [deleted file]
board/Marvell/rd6281a/Makefile [deleted file]
board/Marvell/rd6281a/kwbimage.cfg [deleted file]
board/Marvell/rd6281a/rd6281a.c [deleted file]
board/Marvell/rd6281a/rd6281a.h [deleted file]
board/aristainetos/Kconfig
board/aristainetos/aristainetos-v1.c
board/aristainetos/aristainetos-v2.c
board/aristainetos/aristainetos.c
board/armltd/versatile/MAINTAINERS [deleted file]
board/armltd/versatile/Makefile [deleted file]
board/armltd/versatile/lowlevel_init.S [deleted file]
board/armltd/versatile/versatile.c [deleted file]
board/bachmann/ot1200/Kconfig
board/bachmann/ot1200/ot1200.c
board/balloon3/Kconfig [deleted file]
board/balloon3/MAINTAINERS [deleted file]
board/balloon3/Makefile [deleted file]
board/balloon3/balloon3.c [deleted file]
board/barco/platinum/Kconfig
board/barco/platinum/platinum_picon.c
board/barco/platinum/spl_picon.c
board/barco/platinum/spl_titanium.c
board/barco/titanium/Kconfig
board/boundary/nitrogen6x/Kconfig
board/boundary/nitrogen6x/MAINTAINERS
board/boundary/nitrogen6x/nitrogen6x.c
board/cmi/Kconfig [deleted file]
board/cmi/MAINTAINERS [deleted file]
board/cmi/Makefile [deleted file]
board/cmi/README [deleted file]
board/cmi/cmi.c [deleted file]
board/cmi/flash.c [deleted file]
board/comelit/dig297/Kconfig [deleted file]
board/comelit/dig297/MAINTAINERS [deleted file]
board/comelit/dig297/Makefile [deleted file]
board/comelit/dig297/dig297.c [deleted file]
board/comelit/dig297/dig297.h [deleted file]
board/compulab/cm_fx6/Kconfig
board/compulab/cm_fx6/cm_fx6.c
board/compulab/cm_t35/cm_t35.c
board/compulab/cm_t3517/mux.c
board/compulab/common/eeprom.c
board/compulab/common/eeprom.h
board/congatec/cgtqmx6eval/Kconfig
board/congatec/cgtqmx6eval/cgtqmx6eval.c
board/csb272/Kconfig [deleted file]
board/csb272/MAINTAINERS [deleted file]
board/csb272/Makefile [deleted file]
board/csb272/csb272.c [deleted file]
board/csb272/init.S [deleted file]
board/csb472/Kconfig [deleted file]
board/csb472/MAINTAINERS [deleted file]
board/csb472/Makefile [deleted file]
board/csb472/csb472.c [deleted file]
board/csb472/init.S [deleted file]
board/davedenx/qong/Kconfig [deleted file]
board/davedenx/qong/MAINTAINERS [deleted file]
board/davedenx/qong/Makefile [deleted file]
board/davedenx/qong/fpga.c [deleted file]
board/davedenx/qong/lowlevel_init.S [deleted file]
board/davedenx/qong/qong.c [deleted file]
board/davedenx/qong/qong_fpga.h [deleted file]
board/davinci/dm355evm/Kconfig [deleted file]
board/davinci/dm355evm/MAINTAINERS [deleted file]
board/davinci/dm355evm/Makefile [deleted file]
board/davinci/dm355evm/config.mk [deleted file]
board/davinci/dm355evm/dm355evm.c [deleted file]
board/davinci/dm355leopard/Kconfig [deleted file]
board/davinci/dm355leopard/MAINTAINERS [deleted file]
board/davinci/dm355leopard/Makefile [deleted file]
board/davinci/dm355leopard/config.mk [deleted file]
board/davinci/dm355leopard/dm355leopard.c [deleted file]
board/davinci/dm365evm/Kconfig [deleted file]
board/davinci/dm365evm/MAINTAINERS [deleted file]
board/davinci/dm365evm/Makefile [deleted file]
board/davinci/dm365evm/config.mk [deleted file]
board/davinci/dm365evm/dm365evm.c [deleted file]
board/davinci/dm6467evm/Kconfig [deleted file]
board/davinci/dm6467evm/MAINTAINERS [deleted file]
board/davinci/dm6467evm/Makefile [deleted file]
board/davinci/dm6467evm/config.mk [deleted file]
board/davinci/dm6467evm/dm6467evm.c [deleted file]
board/davinci/dvevm/Kconfig [deleted file]
board/davinci/dvevm/MAINTAINERS [deleted file]
board/davinci/dvevm/Makefile [deleted file]
board/davinci/dvevm/board_init.S [deleted file]
board/davinci/dvevm/config.mk [deleted file]
board/davinci/dvevm/dvevm.c [deleted file]
board/davinci/schmoogie/Kconfig [deleted file]
board/davinci/schmoogie/MAINTAINERS [deleted file]
board/davinci/schmoogie/Makefile [deleted file]
board/davinci/schmoogie/board_init.S [deleted file]
board/davinci/schmoogie/config.mk [deleted file]
board/davinci/schmoogie/schmoogie.c [deleted file]
board/davinci/sffsdr/Kconfig [deleted file]
board/davinci/sffsdr/MAINTAINERS [deleted file]
board/davinci/sffsdr/Makefile [deleted file]
board/davinci/sffsdr/board_init.S [deleted file]
board/davinci/sffsdr/config.mk [deleted file]
board/davinci/sffsdr/sffsdr.c [deleted file]
board/davinci/sonata/Kconfig [deleted file]
board/davinci/sonata/MAINTAINERS [deleted file]
board/davinci/sonata/Makefile [deleted file]
board/davinci/sonata/board_init.S [deleted file]
board/davinci/sonata/config.mk [deleted file]
board/davinci/sonata/sonata.c [deleted file]
board/denx/mcvevk/MAINTAINERS [new file with mode: 0644]
board/denx/mcvevk/Makefile [new file with mode: 0644]
board/denx/mcvevk/qts/iocsr_config.h [new file with mode: 0644]
board/denx/mcvevk/qts/pinmux_config.h [new file with mode: 0644]
board/denx/mcvevk/qts/pll_config.h [new file with mode: 0644]
board/denx/mcvevk/qts/sdram_config.h [new file with mode: 0644]
board/denx/mcvevk/socfpga.c [new file with mode: 0644]
board/embest/mx6boards/Kconfig
board/enbw/enbw_cmc/Kconfig [deleted file]
board/enbw/enbw_cmc/MAINTAINERS [deleted file]
board/enbw/enbw_cmc/Makefile [deleted file]
board/enbw/enbw_cmc/enbw_cmc.c [deleted file]
board/esd/otc570/Kconfig [deleted file]
board/esd/otc570/MAINTAINERS [deleted file]
board/esd/otc570/Makefile [deleted file]
board/esd/otc570/otc570.c [deleted file]
board/esd/otc570/partition.c [deleted file]
board/esg/ima3-mx53/Kconfig [deleted file]
board/esg/ima3-mx53/MAINTAINERS [deleted file]
board/esg/ima3-mx53/Makefile [deleted file]
board/esg/ima3-mx53/ima3-mx53.c [deleted file]
board/esg/ima3-mx53/imximage.cfg [deleted file]
board/eukrea/cpu9260/Kconfig [deleted file]
board/eukrea/cpu9260/MAINTAINERS [deleted file]
board/eukrea/cpu9260/Makefile [deleted file]
board/eukrea/cpu9260/cpu9260.c [deleted file]
board/eukrea/cpu9260/led.c [deleted file]
board/eukrea/cpuat91/Kconfig [deleted file]
board/eukrea/cpuat91/MAINTAINERS [deleted file]
board/eukrea/cpuat91/Makefile [deleted file]
board/eukrea/cpuat91/cpuat91.c [deleted file]
board/firefly/firefly-rk3288/Kconfig [new file with mode: 0644]
board/firefly/firefly-rk3288/MAINTAINERS [new file with mode: 0644]
board/firefly/firefly-rk3288/Makefile [new file with mode: 0644]
board/firefly/firefly-rk3288/firefly-rk3288.c [new file with mode: 0644]
board/freescale/ls1021aqds/ls1021aqds.c
board/freescale/ls1021atwr/ls1021atwr.c
board/freescale/ls2085a/MAINTAINERS
board/freescale/ls2085aqds/README
board/freescale/ls2085aqds/eth.c
board/freescale/ls2085aqds/ls2085aqds.c
board/freescale/mx6qarm2/Kconfig
board/freescale/mx6qsabreauto/Kconfig
board/freescale/mx6qsabreauto/mx6qsabreauto.c
board/freescale/mx6sabresd/Kconfig
board/freescale/mx6sabresd/mx6sabresd.c
board/freescale/mx6slevk/Kconfig
board/freescale/mx6slevk/mx6slevk.c
board/freescale/mx6sxsabresd/Kconfig
board/freescale/mx6sxsabresd/mx6sxsabresd.c
board/freescale/mx6ul_14x14_evk/Kconfig
board/freescale/mx6ul_14x14_evk/README [new file with mode: 0644]
board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
board/freescale/mx7dsabresd/Kconfig [new file with mode: 0644]
board/freescale/mx7dsabresd/MAINTAINERS [new file with mode: 0644]
board/freescale/mx7dsabresd/Makefile [new file with mode: 0644]
board/freescale/mx7dsabresd/imximage.cfg [new file with mode: 0644]
board/freescale/mx7dsabresd/mx7dsabresd.c [new file with mode: 0644]
board/freescale/t102xqds/MAINTAINERS
board/freescale/t102xrdb/t1023_rcw.cfg
board/freescale/t1040qds/MAINTAINERS
board/gateworks/gw_ventana/Kconfig
board/gateworks/gw_ventana/gw_ventana_spl.c
board/genesi/mx51_efikamx/Kconfig [deleted file]
board/genesi/mx51_efikamx/MAINTAINERS [deleted file]
board/genesi/mx51_efikamx/Makefile [deleted file]
board/genesi/mx51_efikamx/efikamx-usb.c [deleted file]
board/genesi/mx51_efikamx/efikamx.c [deleted file]
board/genesi/mx51_efikamx/imximage_mx.cfg [deleted file]
board/genesi/mx51_efikamx/imximage_sb.cfg [deleted file]
board/google/chromebook_jerry/Kconfig [new file with mode: 0644]
board/google/chromebook_jerry/MAINTAINERS [new file with mode: 0644]
board/google/chromebook_jerry/Makefile [new file with mode: 0644]
board/google/chromebook_jerry/jerry.c [new file with mode: 0644]
board/google/common/Makefile
board/h2200/h2200.c
board/hale/tt01/Kconfig [deleted file]
board/hale/tt01/MAINTAINERS [deleted file]
board/hale/tt01/Makefile [deleted file]
board/hale/tt01/lowlevel_init.S [deleted file]
board/hale/tt01/tt01.c [deleted file]
board/icpdas/lp8x4x/Kconfig [deleted file]
board/icpdas/lp8x4x/MAINTAINERS [deleted file]
board/icpdas/lp8x4x/Makefile [deleted file]
board/icpdas/lp8x4x/lp8x4x.c [deleted file]
board/intel/bayleybay/bayleybay.c
board/intel/crownbay/crownbay.c
board/intel/galileo/galileo.c
board/isee/igep0033/MAINTAINERS
board/isee/igep00x0/MAINTAINERS
board/isee/igep00x0/igep00x0.c
board/jornada/Kconfig [deleted file]
board/jornada/MAINTAINERS [deleted file]
board/jornada/Makefile [deleted file]
board/jornada/jornada.c [deleted file]
board/jornada/setup.S [deleted file]
board/karo/tk71/Kconfig [deleted file]
board/karo/tk71/MAINTAINERS [deleted file]
board/karo/tk71/Makefile [deleted file]
board/karo/tk71/kwbimage.cfg [deleted file]
board/karo/tk71/tk71.c [deleted file]
board/karo/tx25/Kconfig [deleted file]
board/karo/tx25/MAINTAINERS [deleted file]
board/karo/tx25/Makefile [deleted file]
board/karo/tx25/lowlevel_init.S [deleted file]
board/karo/tx25/tx25.c [deleted file]
board/kosagi/novena/Kconfig
board/logicpd/imx27lite/Kconfig [deleted file]
board/logicpd/imx27lite/MAINTAINERS [deleted file]
board/logicpd/imx27lite/Makefile [deleted file]
board/logicpd/imx27lite/imx27lite.c [deleted file]
board/logicpd/imx27lite/lowlevel_init.S [deleted file]
board/logicpd/imx31_litekit/Kconfig [deleted file]
board/logicpd/imx31_litekit/MAINTAINERS [deleted file]
board/logicpd/imx31_litekit/Makefile [deleted file]
board/logicpd/imx31_litekit/imx31_litekit.c [deleted file]
board/logicpd/imx31_litekit/lowlevel_init.S [deleted file]
board/logicpd/omap3som/omap3logic.c
board/lwmon5/Kconfig [deleted file]
board/lwmon5/MAINTAINERS [deleted file]
board/lwmon5/Makefile [deleted file]
board/lwmon5/config.mk [deleted file]
board/lwmon5/init.S [deleted file]
board/lwmon5/kbd.c [deleted file]
board/lwmon5/lwmon5.c [deleted file]
board/lwmon5/sdram.c [deleted file]
board/matrix_vision/mvblx/Kconfig [deleted file]
board/matrix_vision/mvblx/MAINTAINERS [deleted file]
board/matrix_vision/mvblx/Makefile [deleted file]
board/matrix_vision/mvblx/config.mk [deleted file]
board/matrix_vision/mvblx/fpga.c [deleted file]
board/matrix_vision/mvblx/fpga.h [deleted file]
board/matrix_vision/mvblx/mvblx.c [deleted file]
board/matrix_vision/mvblx/mvblx.h [deleted file]
board/matrix_vision/mvblx/sys_eeprom.c [deleted file]
board/palmld/Kconfig [deleted file]
board/palmld/MAINTAINERS [deleted file]
board/palmld/Makefile [deleted file]
board/palmld/palmld.c [deleted file]
board/palmtc/Kconfig [deleted file]
board/palmtc/MAINTAINERS [deleted file]
board/palmtc/Makefile [deleted file]
board/palmtc/palmtc.c [deleted file]
board/palmtreo680/Kconfig [deleted file]
board/palmtreo680/MAINTAINERS [deleted file]
board/palmtreo680/Makefile [deleted file]
board/palmtreo680/README [deleted file]
board/palmtreo680/palmtreo680.c [deleted file]
board/pcs440ep/Kconfig [deleted file]
board/pcs440ep/MAINTAINERS [deleted file]
board/pcs440ep/Makefile [deleted file]
board/pcs440ep/config.mk [deleted file]
board/pcs440ep/flash.c [deleted file]
board/pcs440ep/init.S [deleted file]
board/pcs440ep/pcs440ep.c [deleted file]
board/prodrive/alpr/Kconfig [deleted file]
board/prodrive/alpr/MAINTAINERS [deleted file]
board/prodrive/alpr/Makefile [deleted file]
board/prodrive/alpr/alpr.c [deleted file]
board/prodrive/alpr/config.mk [deleted file]
board/prodrive/alpr/fpga.c [deleted file]
board/prodrive/alpr/init.S [deleted file]
board/prodrive/alpr/nand.c [deleted file]
board/prodrive/p3p440/Kconfig [deleted file]
board/prodrive/p3p440/MAINTAINERS [deleted file]
board/prodrive/p3p440/Makefile [deleted file]
board/prodrive/p3p440/config.mk [deleted file]
board/prodrive/p3p440/init.S [deleted file]
board/prodrive/p3p440/p3p440.c [deleted file]
board/prodrive/p3p440/p3p440.h [deleted file]
board/pxa255_idp/Kconfig [deleted file]
board/pxa255_idp/MAINTAINERS [deleted file]
board/pxa255_idp/Makefile [deleted file]
board/pxa255_idp/README [deleted file]
board/pxa255_idp/idp_notes.txt [deleted file]
board/pxa255_idp/pxa_idp.c [deleted file]
board/pxa255_idp/pxa_reg_calcs.out [deleted file]
board/pxa255_idp/pxa_reg_calcs.py [deleted file]
board/raspberrypi/rpi/rpi.c
board/samsung/common/exynos5-dt.c
board/samsung/common/misc.c
board/sbc405/Kconfig [deleted file]
board/sbc405/MAINTAINERS [deleted file]
board/sbc405/Makefile [deleted file]
board/sbc405/sbc405.c [deleted file]
board/sbc405/strataflash.c [deleted file]
board/scb9328/Kconfig [deleted file]
board/scb9328/MAINTAINERS [deleted file]
board/scb9328/Makefile [deleted file]
board/scb9328/flash.c [deleted file]
board/scb9328/intel.h [deleted file]
board/scb9328/lowlevel_init.S [deleted file]
board/scb9328/scb9328.c [deleted file]
board/siemens/corvus/board.c
board/siemens/smartweb/smartweb.c
board/siemens/taurus/taurus.c
board/solidrun/mx6cuboxi/Kconfig
board/solidrun/mx6cuboxi/mx6cuboxi.c
board/st-ericsson/snowball/Kconfig [deleted file]
board/st-ericsson/snowball/MAINTAINERS [deleted file]
board/st-ericsson/snowball/Makefile [deleted file]
board/st-ericsson/snowball/db8500_pins.h [deleted file]
board/st-ericsson/snowball/snowball.c [deleted file]
board/st-ericsson/u8500/Kconfig [deleted file]
board/st-ericsson/u8500/MAINTAINERS [deleted file]
board/st-ericsson/u8500/Makefile [deleted file]
board/st-ericsson/u8500/gpio.c [deleted file]
board/st-ericsson/u8500/u8500_href.c [deleted file]
board/st/nhk8815/Kconfig [deleted file]
board/st/nhk8815/MAINTAINERS [deleted file]
board/st/nhk8815/Makefile [deleted file]
board/st/nhk8815/README.nhk8815 [deleted file]
board/st/nhk8815/nhk8815.c [deleted file]
board/stx/stxgp3/Kconfig [deleted file]
board/stx/stxgp3/MAINTAINERS [deleted file]
board/stx/stxgp3/Makefile [deleted file]
board/stx/stxgp3/ddr.c [deleted file]
board/stx/stxgp3/flash.c [deleted file]
board/stx/stxgp3/law.c [deleted file]
board/stx/stxgp3/stxgp3.c [deleted file]
board/stx/stxgp3/tlb.c [deleted file]
board/stx/stxssa/Kconfig [deleted file]
board/stx/stxssa/MAINTAINERS [deleted file]
board/stx/stxssa/Makefile [deleted file]
board/stx/stxssa/ddr.c [deleted file]
board/stx/stxssa/law.c [deleted file]
board/stx/stxssa/stxssa.c [deleted file]
board/stx/stxssa/tlb.c [deleted file]
board/sunxi/Kconfig
board/sunxi/MAINTAINERS
board/sunxi/board.c
board/taskit/stamp9g20/Kconfig [deleted file]
board/taskit/stamp9g20/MAINTAINERS [deleted file]
board/taskit/stamp9g20/Makefile [deleted file]
board/taskit/stamp9g20/led.c [deleted file]
board/taskit/stamp9g20/stamp9g20.c [deleted file]
board/tbs/tbs2910/Kconfig
board/tcl/sl50/Kconfig [new file with mode: 0644]
board/tcl/sl50/MAINTAINERS [new file with mode: 0644]
board/tcl/sl50/Makefile [new file with mode: 0644]
board/tcl/sl50/board.c [new file with mode: 0644]
board/tcl/sl50/board.h [new file with mode: 0644]
board/tcl/sl50/mux.c [new file with mode: 0644]
board/technologic/ts4800/Kconfig [new file with mode: 0644]
board/technologic/ts4800/MAINTAINERS [new file with mode: 0644]
board/technologic/ts4800/Makefile [new file with mode: 0644]
board/technologic/ts4800/ts4800.c [new file with mode: 0644]
board/technologic/ts4800/ts4800.h [new file with mode: 0644]
board/terasic/de0-nano-soc/MAINTAINERS [new file with mode: 0644]
board/terasic/de0-nano-soc/Makefile [new file with mode: 0644]
board/terasic/de0-nano-soc/qts/iocsr_config.h [new file with mode: 0644]
board/terasic/de0-nano-soc/qts/pinmux_config.h [new file with mode: 0644]
board/terasic/de0-nano-soc/qts/pll_config.h [new file with mode: 0644]
board/terasic/de0-nano-soc/qts/sdram_config.h [new file with mode: 0644]
board/terasic/de0-nano-soc/socfpga.c [new file with mode: 0644]
board/terasic/sockit/MAINTAINERS [new file with mode: 0644]
board/terasic/sockit/Makefile [new file with mode: 0644]
board/terasic/sockit/qts/iocsr_config.h [new file with mode: 0644]
board/terasic/sockit/qts/pinmux_config.h [new file with mode: 0644]
board/terasic/sockit/qts/pll_config.h [new file with mode: 0644]
board/terasic/sockit/qts/sdram_config.h [new file with mode: 0644]
board/terasic/sockit/socfpga.c [new file with mode: 0644]
board/ti/sdp3430/Kconfig [deleted file]
board/ti/sdp3430/MAINTAINERS [deleted file]
board/ti/sdp3430/Makefile [deleted file]
board/ti/sdp3430/config.mk [deleted file]
board/ti/sdp3430/sdp.c [deleted file]
board/ti/sdp3430/sdp.h [deleted file]
board/tqc/tqma6/Kconfig
board/tqc/tqma6/tqma6.c
board/tqc/tqma6/tqma6_mba6.c
board/trizepsiv/Kconfig [deleted file]
board/trizepsiv/MAINTAINERS [deleted file]
board/trizepsiv/Makefile [deleted file]
board/trizepsiv/conxs.c [deleted file]
board/trizepsiv/eeprom.c [deleted file]
board/ttcontrol/vision2/Kconfig [deleted file]
board/ttcontrol/vision2/MAINTAINERS [deleted file]
board/ttcontrol/vision2/Makefile [deleted file]
board/ttcontrol/vision2/imximage_hynix.cfg [deleted file]
board/ttcontrol/vision2/vision2.c [deleted file]
board/udoo/1066mhz_4x256mx16.cfg [deleted file]
board/udoo/Kconfig
board/udoo/MAINTAINERS
board/udoo/Makefile
board/udoo/clocks.cfg [deleted file]
board/udoo/ddr-setup.cfg [deleted file]
board/udoo/udoo.c
board/udoo/udoo.cfg [deleted file]
board/udoo/udoo_spl.c [new file with mode: 0644]
board/vpac270/Kconfig [deleted file]
board/vpac270/MAINTAINERS [deleted file]
board/vpac270/Makefile [deleted file]
board/vpac270/onenand.c [deleted file]
board/vpac270/u-boot-spl.lds [deleted file]
board/vpac270/vpac270.c [deleted file]
board/wandboard/Kconfig
board/warp/Kconfig
board/xaeniax/Kconfig [deleted file]
board/xaeniax/MAINTAINERS [deleted file]
board/xaeniax/Makefile [deleted file]
board/xaeniax/flash.c [deleted file]
board/xaeniax/xaeniax.c [deleted file]
board/zeus/Kconfig [deleted file]
board/zeus/MAINTAINERS [deleted file]
board/zeus/Makefile [deleted file]
board/zeus/README [deleted file]
board/zeus/update.c [deleted file]
board/zeus/zeus.c [deleted file]
board/zipitz2/Kconfig [deleted file]
board/zipitz2/MAINTAINERS [deleted file]
board/zipitz2/Makefile [deleted file]
board/zipitz2/zipitz2.c [deleted file]
common/Kconfig
common/Makefile
common/cmd_dfu.c
common/cmd_fitupd.c
common/cmd_i2c.c
common/cmd_tpm.c
common/cmd_tpm_test.c [new file with mode: 0644]
common/cmd_ubi.c
common/cmd_usb.c
common/env_fat.c
common/env_mmc.c
common/env_nand.c
common/env_ubi.c
common/image.c
common/lcd_simplefb.c
common/main.c
common/update.c
common/usb.c
common/usb_hub.c
common/usb_kbd.c
common/usb_storage.c
configs/A10-OLinuXino-Lime_defconfig
configs/A10s-Wobo-i5_defconfig [new file with mode: 0644]
configs/A13-OLinuXinoM_defconfig
configs/A13-OLinuXino_defconfig
configs/A20-OLinuXino-Lime_defconfig
configs/A20-Olimex-SOM-EVB_defconfig [new file with mode: 0644]
configs/Ampe_A76_defconfig
configs/Cubieboard_defconfig
configs/Cubietruck_defconfig
configs/T1024QDS_D4_SECURE_BOOT_defconfig [deleted file]
configs/T1024QDS_DDR4_SECURE_BOOT_defconfig [new file with mode: 0644]
configs/T1024QDS_DDR4_defconfig [new file with mode: 0644]
configs/T1040QDS_D4_defconfig [deleted file]
configs/T1040QDS_DDR4_defconfig [new file with mode: 0644]
configs/alpr_defconfig [deleted file]
configs/am335x_boneblack_defconfig
configs/am335x_sl50_defconfig [new file with mode: 0644]
configs/aristainetos2_defconfig
configs/aristainetos2b_defconfig [new file with mode: 0644]
configs/aristainetos_defconfig
configs/axs101_defconfig
configs/axs103_defconfig
configs/balloon3_defconfig [deleted file]
configs/bayleybay_defconfig
configs/cgtqmx6qeval_defconfig
configs/chromebook_jerry_defconfig [new file with mode: 0644]
configs/chromebook_link_defconfig
configs/chromebox_panther_defconfig
configs/cm_fx6_defconfig
configs/cmi_mpc5xx_defconfig [deleted file]
configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
configs/controlcenterd_36BIT_SDCARD_defconfig
configs/controlcenterd_TRAILBLAZER_DEVELOP_defconfig
configs/controlcenterd_TRAILBLAZER_defconfig
configs/coreboot-x86_defconfig
configs/cpu9260_128M_defconfig [deleted file]
configs/cpu9260_defconfig [deleted file]
configs/cpu9260_nand_128M_defconfig [deleted file]
configs/cpu9260_nand_defconfig [deleted file]
configs/cpu9G20_128M_defconfig [deleted file]
configs/cpu9G20_defconfig [deleted file]
configs/cpu9G20_nand_128M_defconfig [deleted file]
configs/cpu9G20_nand_defconfig [deleted file]
configs/cpuat91_defconfig [deleted file]
configs/cpuat91_ram_defconfig [deleted file]
configs/crownbay_defconfig
configs/csb272_defconfig [deleted file]
configs/csb472_defconfig [deleted file]
configs/d2net_v2_defconfig [deleted file]
configs/davinci_dm355evm_defconfig [deleted file]
configs/davinci_dm355leopard_defconfig [deleted file]
configs/davinci_dm365evm_defconfig [deleted file]
configs/davinci_dm6467Tevm_defconfig [deleted file]
configs/davinci_dm6467evm_defconfig [deleted file]
configs/davinci_dvevm_defconfig [deleted file]
configs/davinci_schmoogie_defconfig [deleted file]
configs/davinci_sffsdr_defconfig [deleted file]
configs/davinci_sonata_defconfig [deleted file]
configs/dig297_defconfig [deleted file]
configs/eb_cpux9k2_defconfig [deleted file]
configs/eb_cpux9k2_ram_defconfig [deleted file]
configs/enbw_cmc_defconfig [deleted file]
configs/firefly-rk3288_defconfig [new file with mode: 0644]
configs/forfun_q88db_defconfig
configs/galileo_defconfig
configs/gt90h_v4_defconfig [new file with mode: 0644]
configs/gwventana_defconfig
configs/ima3-mx53_defconfig [deleted file]
configs/imx27lite_defconfig [deleted file]
configs/imx31_litekit_defconfig [deleted file]
configs/inet1_defconfig [new file with mode: 0644]
configs/inet97fv2_defconfig [new file with mode: 0644]
configs/inet98v_rev2_defconfig [new file with mode: 0644]
configs/inet9f_rev03_defconfig [new file with mode: 0644]
configs/inetspace_v2_defconfig [deleted file]
configs/jornada_defconfig [deleted file]
configs/lcd4_lwmon5_defconfig [deleted file]
configs/lp8x4x_defconfig [deleted file]
configs/ls2085a_emu_D4_defconfig [deleted file]
configs/ls2085a_emu_defconfig
configs/lwmon5_defconfig [deleted file]
configs/magnesium_defconfig [deleted file]
configs/marsboard_defconfig
configs/mv88f6281gtw_ge_defconfig [deleted file]
configs/mx51_efikamx_defconfig [deleted file]
configs/mx51_efikasb_defconfig [deleted file]
configs/mx6cuboxi_defconfig
configs/mx6dlarm2_defconfig
configs/mx6dlarm2_lpddr2_defconfig
configs/mx6dlsabreauto_defconfig
configs/mx6dlsabresd_defconfig
configs/mx6qarm2_defconfig
configs/mx6qarm2_lpddr2_defconfig
configs/mx6qpsabreauto_defconfig
configs/mx6qsabreauto_defconfig
configs/mx6qsabrelite_defconfig
configs/mx6qsabresd_defconfig
configs/mx6sabresd_spl_defconfig
configs/mx6slevk_defconfig
configs/mx6slevk_spinor_defconfig
configs/mx6slevk_spl_defconfig [new file with mode: 0644]
configs/mx6sxsabresd_defconfig
configs/mx6sxsabresd_spl_defconfig
configs/mx6ul_14x14_evk_defconfig
configs/mx6ul_9x9_evk_defconfig [new file with mode: 0644]
configs/mx7dsabresd_defconfig [new file with mode: 0644]
configs/nhk8815_defconfig [deleted file]
configs/nhk8815_onenand_defconfig [deleted file]
configs/nitrogen6dl2g_defconfig
configs/nitrogen6dl_defconfig
configs/nitrogen6q2g_defconfig
configs/nitrogen6q_defconfig
configs/nitrogen6s1g_defconfig
configs/nitrogen6s_defconfig
configs/novena_defconfig
configs/nyan-big_defconfig
configs/omap3_mvblx_defconfig [deleted file]
configs/omap3_sdp3430_defconfig [deleted file]
configs/openrd_base_defconfig [deleted file]
configs/openrd_client_defconfig [deleted file]
configs/openrd_ultimate_defconfig [deleted file]
configs/ot1200_defconfig
configs/ot1200_spl_defconfig
configs/otc570_dataflash_defconfig [deleted file]
configs/otc570_defconfig [deleted file]
configs/p3p440_defconfig [deleted file]
configs/palmld_defconfig [deleted file]
configs/palmtc_defconfig [deleted file]
configs/palmtreo680_defconfig [deleted file]
configs/pcs440ep_defconfig [deleted file]
configs/peach-pi_defconfig
configs/peach-pit_defconfig
configs/platinum_picon_defconfig
configs/platinum_titanium_defconfig
configs/polaris_defconfig [deleted file]
configs/portuxg20_defconfig [deleted file]
configs/pov_protab2_ips9_defconfig [new file with mode: 0644]
configs/pxa255_idp_defconfig [deleted file]
configs/q8_a13_tablet_defconfig [new file with mode: 0644]
configs/qong_defconfig [deleted file]
configs/rd6281a_defconfig [deleted file]
configs/riotboard_defconfig
configs/sandbox_defconfig
configs/sbc405_defconfig [deleted file]
configs/scb9328_defconfig [deleted file]
configs/snow_defconfig
configs/snowball_defconfig [deleted file]
configs/socfpga_de0_nano_soc_defconfig [new file with mode: 0644]
configs/socfpga_mcvevk_defconfig [new file with mode: 0644]
configs/socfpga_sockit_defconfig [new file with mode: 0644]
configs/spring_defconfig
configs/stamp9g20_defconfig [deleted file]
configs/stxgp3_defconfig [deleted file]
configs/stxssa_4M_defconfig [deleted file]
configs/stxssa_defconfig [deleted file]
configs/tbs2910_defconfig
configs/titanium_defconfig
configs/tk71_defconfig [deleted file]
configs/tqma6s_wru4_mmc_defconfig
configs/trizepsiv_defconfig [deleted file]
configs/ts4800_defconfig [new file with mode: 0644]
configs/tt01_defconfig [deleted file]
configs/tx25_defconfig [deleted file]
configs/u8500_href_defconfig [deleted file]
configs/udoo_defconfig [new file with mode: 0644]
configs/udoo_quad_defconfig [deleted file]
configs/versatileab_defconfig [deleted file]
configs/versatilepb_defconfig [deleted file]
configs/versatileqemu_defconfig [deleted file]
configs/vision2_defconfig [deleted file]
configs/vl_ma2sc_defconfig [deleted file]
configs/vl_ma2sc_ram_defconfig [deleted file]
configs/vpac270_nor_128_defconfig [deleted file]
configs/vpac270_nor_256_defconfig [deleted file]
configs/vpac270_ond_256_defconfig [deleted file]
configs/wandboard_defconfig
configs/warp_defconfig
configs/xaeniax_defconfig [deleted file]
configs/zeus_defconfig [deleted file]
configs/zipitz2_defconfig [deleted file]
disk/part_dos.c
disk/part_efi.c
disk/part_mac.c
doc/README.dfutftp [new file with mode: 0644]
doc/README.fec_mxc
doc/README.imx5
doc/README.omap3
doc/README.pxe
doc/README.rockchip [new file with mode: 0644]
doc/README.scrapyard
doc/README.switch_config [deleted file]
doc/README.update
doc/README.watchdog
doc/README.x86
doc/device-tree-bindings/clock/rockchip,rk3188-cru.txt [new file with mode: 0644]
doc/device-tree-bindings/clock/rockchip,rk3288-cru.txt [new file with mode: 0644]
doc/device-tree-bindings/clock/rockchip,rk3288-dmc.txt [new file with mode: 0644]
doc/device-tree-bindings/clock/rockchip.txt [new file with mode: 0644]
doc/device-tree-bindings/pinctrl/rockchip,pinctrl.txt [new file with mode: 0644]
doc/device-tree-bindings/thermal/rockchip-thermal.txt [new file with mode: 0644]
doc/git-mailrc
drivers/Kconfig
drivers/Makefile
drivers/block/ahci.c
drivers/clk/Makefile
drivers/clk/clk_rk3288.c [new file with mode: 0644]
drivers/core/Kconfig
drivers/core/Makefile
drivers/core/device.c
drivers/core/root.c
drivers/core/uclass.c
drivers/ddr/marvell/a38x/ddr3_init.h
drivers/dfu/Kconfig
drivers/dfu/Makefile
drivers/dfu/dfu.c
drivers/dfu/dfu_mmc.c
drivers/dfu/dfu_tftp.c [new file with mode: 0644]
drivers/gpio/Kconfig
drivers/gpio/Makefile
drivers/gpio/lpc32xx_gpio.c
drivers/gpio/mxc_gpio.c
drivers/gpio/rk_gpio.c [new file with mode: 0644]
drivers/gpio/s5p_gpio.c
drivers/gpio/sunxi_gpio.c
drivers/gpio/tegra_gpio.c
drivers/i2c/Kconfig
drivers/i2c/Makefile
drivers/i2c/rk_i2c.c [new file with mode: 0644]
drivers/i2c/s3c24x0_i2c.c
drivers/i2c/tegra_i2c.c
drivers/led/Kconfig
drivers/led/Makefile
drivers/misc/Kconfig
drivers/misc/Makefile
drivers/misc/fsl_debug_server.c
drivers/misc/fsl_devdis.c [new file with mode: 0644]
drivers/misc/mxc_ocotp.c
drivers/misc/mxs_ocotp.c
drivers/mmc/Kconfig
drivers/mmc/Makefile
drivers/mmc/dw_mmc.c
drivers/mmc/exynos_dw_mmc.c
drivers/mmc/mmc.c
drivers/mmc/rockchip_dw_mmc.c [new file with mode: 0644]
drivers/mmc/rpmb.c
drivers/mmc/socfpga_dw_mmc.c
drivers/mmc/sunxi_mmc.c
drivers/mtd/nand/Kconfig
drivers/mtd/nand/Makefile
drivers/mtd/nand/fsmc_nand.c
drivers/mtd/nand/jz4740_nand.c
drivers/mtd/nand/nand_util.c
drivers/mtd/nand/nomadik.c [deleted file]
drivers/mtd/nand/sunxi_nand_spl.c
drivers/mtd/nand/tegra_nand.c
drivers/net/Kconfig
drivers/net/altera_tse.c
drivers/net/designware.c
drivers/net/e1000.c
drivers/net/fec_mxc.c
drivers/net/fm/init.c
drivers/net/pch_gbe.c
drivers/net/pch_gbe.h
drivers/net/phy/vitesse.c
drivers/net/rtl8169.c
drivers/net/smc91111.c
drivers/net/smc91111.h
drivers/net/tsec.c
drivers/pci/pci-uclass.c
drivers/pci/pcie_imx.c
drivers/pci/pcie_layerscape.c
drivers/pinctrl/Kconfig [new file with mode: 0644]
drivers/pinctrl/Makefile [new file with mode: 0644]
drivers/pinctrl/pinctrl-generic.c [new file with mode: 0644]
drivers/pinctrl/pinctrl-sandbox.c [new file with mode: 0644]
drivers/pinctrl/pinctrl-uclass.c [new file with mode: 0644]
drivers/pinctrl/rockchip/Makefile [new file with mode: 0644]
drivers/pinctrl/rockchip/pinctrl_rk3288.c [new file with mode: 0644]
drivers/power/Kconfig
drivers/power/pmic/Kconfig
drivers/power/pmic/Makefile
drivers/power/pmic/act8846.c [new file with mode: 0644]
drivers/power/pmic/pmic_pfuze3000.c [new file with mode: 0644]
drivers/power/regulator/Kconfig
drivers/power/regulator/Makefile
drivers/power/regulator/act8846.c [new file with mode: 0644]
drivers/rtc/ds3231.c
drivers/serial/Kconfig
drivers/serial/Makefile
drivers/serial/ns16550.c
drivers/serial/serial_arc.c
drivers/serial/serial_pl01x.c
drivers/serial/serial_rockchip.c [new file with mode: 0644]
drivers/serial/serial_s5p.c
drivers/spi/Kconfig
drivers/spi/Makefile
drivers/spi/davinci_spi.c
drivers/spi/designware_spi.c
drivers/spi/ep93xx_spi.c
drivers/spi/exynos_spi.c
drivers/spi/fsl_dspi.c
drivers/spi/mxs_spi.c
drivers/spi/rk_spi.c [new file with mode: 0644]
drivers/spi/rk_spi.h [new file with mode: 0644]
drivers/spi/tegra114_spi.c
drivers/spi/tegra20_sflash.c
drivers/spi/tegra20_slink.c
drivers/spi/zynq_spi.c
drivers/thermal/Makefile
drivers/thermal/imx_thermal.c
drivers/tpm/Kconfig
drivers/tpm/Makefile
drivers/tpm/tpm-uclass.c [new file with mode: 0644]
drivers/tpm/tpm.c [deleted file]
drivers/tpm/tpm_atmel_twi.c
drivers/tpm/tpm_internal.h [new file with mode: 0644]
drivers/tpm/tpm_private.h [deleted file]
drivers/tpm/tpm_tis_i2c.c
drivers/tpm/tpm_tis_i2c.h [new file with mode: 0644]
drivers/tpm/tpm_tis_lpc.c
drivers/tpm/tpm_tis_sandbox.c
drivers/usb/eth/asix.c
drivers/usb/eth/asix88179.c
drivers/usb/eth/mcs7830.c
drivers/usb/eth/smsc95xx.c
drivers/usb/gadget/Makefile
drivers/usb/gadget/at91_udc.c [new file with mode: 0644]
drivers/usb/gadget/at91_udc.h [new file with mode: 0644]
drivers/usb/gadget/ci_udc.c
drivers/usb/gadget/composite.c
drivers/usb/gadget/ether.c
drivers/usb/gadget/f_thor.c
drivers/usb/gadget/f_thor.h
drivers/usb/gadget/g_dnl.c
drivers/usb/host/dwc2.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-tegra.c
drivers/usb/host/ehci.h
drivers/usb/host/ohci-hcd.c
drivers/usb/host/usb-uclass.c
drivers/usb/host/xhci-exynos5.c
drivers/usb/musb-new/Kconfig
drivers/video/anx9804.c
drivers/video/bcm2835.c
drivers/video/da8xx-fb.c
drivers/video/lg4573.c
drivers/video/mb862xx.c
drivers/video/mx3fb.c
drivers/video/mxc_ipuv3_fb.c
drivers/video/tegra124/dp.c
drivers/watchdog/Makefile
dts/Kconfig
fs/ext4/dev.c
fs/ext4/ext4_common.c
fs/ext4/ext4_write.c
fs/fat/fat.c
fs/fat/fat_write.c
fs/ubifs/super.c
fs/ubifs/ubifs.c
include/common.h
include/configs/B4860QDS.h
include/configs/MPC8540ADS.h
include/configs/MPC8541CDS.h
include/configs/MPC8544DS.h
include/configs/MPC8548CDS.h
include/configs/MPC8555CDS.h
include/configs/MPC8560ADS.h
include/configs/MPC8568MDS.h
include/configs/MPC8569MDS.h
include/configs/MPC8610HPCD.h
include/configs/T102xQDS.h
include/configs/T102xRDB.h
include/configs/T1040QDS.h
include/configs/T104xRDB.h
include/configs/T208xQDS.h
include/configs/T208xRDB.h
include/configs/T4240RDB.h
include/configs/alpr.h [deleted file]
include/configs/am335x_evm.h
include/configs/am335x_sl50.h [new file with mode: 0644]
include/configs/am43xx_evm.h
include/configs/aristainetos-common.h
include/configs/aristainetos.h
include/configs/aristainetos2.h
include/configs/aristainetos2b.h [new file with mode: 0644]
include/configs/at91-sama5_common.h
include/configs/at91sam9260ek.h
include/configs/at91sam9261ek.h
include/configs/at91sam9263ek.h
include/configs/at91sam9m10g45ek.h
include/configs/at91sam9n12ek.h
include/configs/at91sam9rlek.h
include/configs/at91sam9x5ek.h
include/configs/balloon3.h [deleted file]
include/configs/bcm28155_ap.h
include/configs/bur_am335x_common.h
include/configs/cgtqmx6eval.h
include/configs/chromebook_jerry.h [new file with mode: 0644]
include/configs/chromebox_panther.h
include/configs/cm_fx6.h
include/configs/cm_t3517.h
include/configs/cmi_mpc5xx.h [deleted file]
include/configs/controlcenterd.h
include/configs/corvus.h
include/configs/cpu9260.h [deleted file]
include/configs/cpuat91.h [deleted file]
include/configs/crownbay.h
include/configs/csb272.h [deleted file]
include/configs/csb472.h [deleted file]
include/configs/davinci_dm355evm.h [deleted file]
include/configs/davinci_dm355leopard.h [deleted file]
include/configs/davinci_dm365evm.h [deleted file]
include/configs/davinci_dm6467evm.h [deleted file]
include/configs/davinci_dvevm.h [deleted file]
include/configs/davinci_schmoogie.h [deleted file]
include/configs/davinci_sffsdr.h [deleted file]
include/configs/davinci_sonata.h [deleted file]
include/configs/dig297.h [deleted file]
include/configs/ea20.h
include/configs/eb_cpux9k2.h [deleted file]
include/configs/edb93xx.h
include/configs/efi-x86.h
include/configs/embestmx6boards.h
include/configs/enbw_cmc.h [deleted file]
include/configs/exynos5-common.h
include/configs/firefly-rk3288.h [new file with mode: 0644]
include/configs/galileo.h
include/configs/gw_ventana.h
include/configs/ima3-mx53.h [deleted file]
include/configs/imx27lite.h [deleted file]
include/configs/imx31_litekit.h [deleted file]
include/configs/imx6_spl.h
include/configs/jornada.h [deleted file]
include/configs/lacie_kw.h
include/configs/lp8x4x.h [deleted file]
include/configs/ls1021aqds.h
include/configs/ls1021atwr.h
include/configs/ls2085a_common.h
include/configs/ls2085a_simu.h
include/configs/ls2085aqds.h
include/configs/ls2085ardb.h
include/configs/lwmon5.h [deleted file]
include/configs/magnesium.h [deleted file]
include/configs/meesc.h
include/configs/mv88f6281gtw_ge.h [deleted file]
include/configs/mx51_efikamx.h [deleted file]
include/configs/mx6cuboxi.h
include/configs/mx6sabre_common.h
include/configs/mx6slevk.h
include/configs/mx6sxsabresd.h
include/configs/mx6ul_14x14_evk.h
include/configs/mx7_common.h [new file with mode: 0644]
include/configs/mx7dsabresd.h [new file with mode: 0644]
include/configs/nhk8815.h [deleted file]
include/configs/omap3_igep00x0.h
include/configs/omap3_logic.h
include/configs/omap3_mvblx.h [deleted file]
include/configs/omap3_sdp3430.h [deleted file]
include/configs/omap5_uevm.h
include/configs/openrd.h [deleted file]
include/configs/otc570.h [deleted file]
include/configs/p3p440.h [deleted file]
include/configs/palmld.h [deleted file]
include/configs/palmtc.h [deleted file]
include/configs/palmtreo680.h [deleted file]
include/configs/pcs440ep.h [deleted file]
include/configs/pxa255_idp.h [deleted file]
include/configs/qong.h [deleted file]
include/configs/rd6281a.h [deleted file]
include/configs/rk3288_common.h [new file with mode: 0644]
include/configs/sandbox.h
include/configs/sbc405.h [deleted file]
include/configs/scb9328.h [deleted file]
include/configs/smartweb.h
include/configs/snowball.h [deleted file]
include/configs/socfpga_common.h
include/configs/socfpga_de0_nano_soc.h [new file with mode: 0644]
include/configs/socfpga_mcvevk.h [new file with mode: 0644]
include/configs/socfpga_sockit.h [new file with mode: 0644]
include/configs/stamp9g20.h [deleted file]
include/configs/stxgp3.h [deleted file]
include/configs/stxssa.h [deleted file]
include/configs/sunxi-common.h
include/configs/t4qds.h
include/configs/taurus.h
include/configs/tbs2910.h
include/configs/tegra-common-post.h
include/configs/tegra-common-usb-gadget.h
include/configs/tegra-common.h
include/configs/ti_armv7_common.h
include/configs/ti_omap4_common.h
include/configs/ti_omap5_common.h
include/configs/tk71.h [deleted file]
include/configs/tqma6_wru4.h
include/configs/trizepsiv.h [deleted file]
include/configs/ts4800.h [new file with mode: 0644]
include/configs/tt01.h [deleted file]
include/configs/tx25.h [deleted file]
include/configs/u8500_href.h [deleted file]
include/configs/udoo.h
include/configs/versatile.h [deleted file]
include/configs/vision2.h [deleted file]
include/configs/vl_ma2sc.h [deleted file]
include/configs/vpac270.h [deleted file]
include/configs/x600.h
include/configs/x86-common.h
include/configs/xaeniax.h [deleted file]
include/configs/zeus.h [deleted file]
include/configs/zipitz2.h [deleted file]
include/dfu.h
include/dm/device-internal.h
include/dm/lists.h
include/dm/pinctrl.h [new file with mode: 0644]
include/dm/uclass-id.h
include/dm/uclass.h
include/dt-bindings/clock/rk3288-cru.h [new file with mode: 0644]
include/dt-bindings/clock/rockchip,rk808.h [new file with mode: 0644]
include/dt-bindings/pinctrl/rockchip.h [new file with mode: 0644]
include/dt-bindings/power-domain/rk3288.h [new file with mode: 0644]
include/dwmmc.h
include/fdtdec.h
include/fsl-mc/fsl_mc.h
include/fsl_devdis.h [new file with mode: 0644]
include/image.h
include/linux/bitops.h
include/linux/usb/at91_udc.h [new file with mode: 0644]
include/memalign.h [new file with mode: 0644]
include/micrel.h
include/net.h
include/net/tftp.h [new file with mode: 0644]
include/netdev.h
include/nomadik.h [deleted file]
include/power/act8846_pmic.h [new file with mode: 0644]
include/power/pfuze3000_pmic.h [new file with mode: 0644]
include/rtc.h
include/status_led.h
include/tis.h
include/tpm.h
lib/Kconfig
lib/fdtdec.c
lib/gzip.c
lib/tpm.c
lib/zlib/zutil.c
net/bootp.c
net/eth.c
net/net.c
net/rarp.c
net/tftp.c
net/tftp.h [deleted file]
test/dfu/README
test/dfu/dfu_gadget_test.sh
test/dm/eth.c
tools/Makefile
tools/buildman/builder.py
tools/ifdtool.c
tools/imagetool.h
tools/imximage.c
tools/mkimage.c
tools/mksunxiboot.c
tools/mxsboot.c
tools/patman/gitutil.py
tools/patman/series.py
tools/rkcommon.c [new file with mode: 0644]
tools/rkcommon.h [new file with mode: 0644]
tools/rkimage.c [new file with mode: 0644]
tools/rksd.c [new file with mode: 0644]
tools/rkspi.c [new file with mode: 0644]

index 4fe1d8858925b8c0366fc8cbe18a5eeeedfb19f9..86a917f67c8653fa01e336eadc93cccb0b786328 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -1,7 +1,7 @@
 VERSION = 2015
 PATCHLEVEL = 10
 SUBLEVEL =
-EXTRAVERSION = -rc2
+EXTRAVERSION = -rc3
 NAME =
 
 # *DOCUMENTATION*
diff --git a/README b/README
index a52ff46c213d9afe4fa9b624679582f319515b61..1acc3559680c73c8e116a8be57a7d97d65c6d18e 100644 (file)
--- a/README
+++ b/README
@@ -1494,12 +1494,6 @@ The following options need to be configured:
                Support for i2c bus TPM devices. Only one device
                per system is supported at this time.
 
-                       CONFIG_TPM_TIS_I2C_BUS_NUMBER
-                       Define the the i2c bus number for the TPM device
-
-                       CONFIG_TPM_TIS_I2C_SLAVE_ADDRESS
-                       Define the TPM's address on the i2c bus
-
                        CONFIG_TPM_TIS_I2C_BURST_LIMITATION
                        Define the burst count bytes upper limit
 
index 925e31201ef1486d23333b8b2c2b5ac8e4e3e796..264c83d261b32e775bb569bacf34f5f2548e3d69 100644 (file)
@@ -129,7 +129,7 @@ config ARC_CACHE_LINE_SHIFT
 
 choice
        prompt "Target select"
-       optional
+       default TARGET_AXS101
 
 config TARGET_TB100
        bool "Support tb100"
index cd88df443ab0206c7a931f19126de0979f0f8a83..c4371c71733e2c29cf44ce3d39b1cfbe12d95ae0 100644 (file)
@@ -62,9 +62,15 @@ config SEMIHOSTING
          the hosted environment to call out to the emulator to
          retrieve files from the host machine.
 
+config SYS_L2CACHE_OFF
+       bool "L2cache off"
+       help
+         If SoC does not support L2CACHE or one do not want to enable
+         L2CACHE, choose this option.
+
 choice
        prompt "Target select"
-       default ARCH_VERSATILE
+       default TARGET_HIKEY
 
 config ARCH_AT91
        bool "Atmel AT91"
@@ -73,10 +79,6 @@ config TARGET_EDB93XX
        bool "Support edb93xx"
        select CPU_ARM920T
 
-config TARGET_SCB9328
-       bool "Support scb9328"
-       select CPU_ARM920T
-
 config TARGET_VCMA9
        bool "Support VCMA9"
        select CPU_ARM920T
@@ -132,11 +134,6 @@ config TARGET_MX25PDK
        bool "Support mx25pdk"
        select CPU_ARM926EJS
 
-config TARGET_TX25
-       bool "Support tx25"
-       select CPU_ARM926EJS
-       select SUPPORT_SPL
-
 config TARGET_ZMX25
        bool "Support zmx25"
        select CPU_ARM926EJS
@@ -146,14 +143,6 @@ config TARGET_APF27
        select CPU_ARM926EJS
        select SUPPORT_SPL
 
-config TARGET_IMX27LITE
-       bool "Support imx27lite"
-       select CPU_ARM926EJS
-
-config TARGET_MAGNESIUM
-       bool "Support magnesium"
-       select CPU_ARM926EJS
-
 config TARGET_APX4DEVKIT
        bool "Support apx4devkit"
        select CPU_ARM926EJS
@@ -199,10 +188,6 @@ config TARGET_SC_SPS_1
        select CPU_ARM926EJS
        select SUPPORT_SPL
 
-config ARCH_NOMADIK
-       bool "ST-Ericsson Nomadik"
-       select CPU_ARM926EJS
-
 config ORION5X
        bool "Marvell Orion"
        select CPU_ARM926EJS
@@ -237,18 +222,10 @@ config TARGET_X600
        select CPU_ARM926EJS
        select SUPPORT_SPL
 
-config ARCH_VERSATILE
-       bool "ARM Ltd. Versatile family"
-       select CPU_ARM926EJS
-
 config TARGET_IMX31_PHYCORE
        bool "Support imx31_phycore"
        select CPU_ARM1136
 
-config TARGET_QONG
-       bool "Support qong"
-       select CPU_ARM1136
-
 config TARGET_MX31ADS
        bool "Support mx31ads"
        select CPU_ARM1136
@@ -258,14 +235,6 @@ config TARGET_MX31PDK
        select CPU_ARM1136
        select SUPPORT_SPL
 
-config TARGET_TT01
-       bool "Support tt01"
-       select CPU_ARM1136
-
-config TARGET_IMX31_LITEKIT
-       bool "Support imx31_litekit"
-       select CPU_ARM1136
-
 config TARGET_WOODBURN
        bool "Support woodburn"
        select CPU_ARM1136
@@ -394,6 +363,13 @@ config TARGET_AM335X_EVM
        select DM_SERIAL
        select DM_GPIO
 
+config TARGET_AM335X_SL50
+       bool "Support am335x_sl50"
+       select CPU_V7
+       select SUPPORT_SPL
+       select DM
+       select DM_SERIAL
+
 config TARGET_AM43XX_EVM
        bool "Support am43xx_evm"
        select CPU_V7
@@ -466,6 +442,10 @@ config ARCH_KEYSTONE
        select CPU_V7
        select SUPPORT_SPL
 
+config ARCH_MX7
+       bool "Freescale MX7"
+       select CPU_V7
+
 config ARCH_MX6
        bool "Freescale MX6"
        select CPU_V7
@@ -479,10 +459,6 @@ config TARGET_M53EVK
        select CPU_V7
        select SUPPORT_SPL
 
-config TARGET_IMA3_MX53
-       bool "Support ima3-mx53"
-       select CPU_V7
-
 config TARGET_MX51EVK
        bool "Support mx51evk"
        select CPU_V7
@@ -503,120 +479,6 @@ config TARGET_MX53SMD
        bool "Support mx53smd"
        select CPU_V7
 
-config TARGET_MX51_EFIKAMX
-       bool "Support mx51_efikamx"
-       select CPU_V7
-
-config TARGET_VISION2
-       bool "Support vision2"
-       select CPU_V7
-
-config TARGET_UDOO
-       bool "Support udoo"
-       select CPU_V7
-
-config TARGET_WANDBOARD
-       bool "Support wandboard"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_WARP
-       bool "Support WaRP"
-       select CPU_V7
-
-config TARGET_TITANIUM
-       bool "Support titanium"
-       select CPU_V7
-
-config TARGET_NITROGEN6X
-       bool "Support nitrogen6x"
-       select CPU_V7
-
-config TARGET_CGTQMX6EVAL
-       bool "Support cgtqmx6eval"
-       select CPU_V7
-
-config TARGET_EMBESTMX6BOARDS
-       bool "Support embestmx6boards"
-       select CPU_V7
-
-config TARGET_ARISTAINETOS
-       bool "Support aristainetos"
-       select CPU_V7
-
-config TARGET_ARISTAINETOS2
-       bool "Support aristainetos2"
-       select CPU_V7
-
-config TARGET_MX6QARM2
-       bool "Support mx6qarm2"
-       select CPU_V7
-
-config TARGET_MX6QSABREAUTO
-       bool "Support mx6qsabreauto"
-       select CPU_V7
-       select DM
-       select DM_THERMAL
-
-config TARGET_MX6SABRESD
-       bool "Support mx6sabresd"
-       select CPU_V7
-       select SUPPORT_SPL
-       select DM
-       select DM_THERMAL
-
-config TARGET_MX6CUBOXI
-       bool "Support Solid-run mx6 boards"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_MX6SLEVK
-       bool "Support mx6slevk"
-       select CPU_V7
-
-config TARGET_MX6SXSABRESD
-       bool "Support mx6sxsabresd"
-       select CPU_V7
-       select SUPPORT_SPL
-       select DM
-       select DM_THERMAL
-
-config TARGET_MX6UL_14X14_EVK
-       bool "Support mx6ul_14x14_evk"
-       select CPU_V7
-       select DM
-       select DM_THERMAL
-       select SUPPORT_SPL
-
-config TARGET_GW_VENTANA
-       bool "Support gw_ventana"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_KOSAGI_NOVENA
-       bool "Support Kosagi Novena"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_TBS2910
-       bool "Support tbs2910"
-       select CPU_V7
-
-config TARGET_OT1200
-       bool "Bachmann OT1200"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_PLATINUM_PICON
-       bool "Support platinum-picon"
-       select CPU_V7
-       select SUPPORT_SPL
-
-config TARGET_PLATINUM_TITANIUM
-       bool "Support platinum-titanium"
-       select CPU_V7
-       select SUPPORT_SPL
-
 config OMAP34XX
        bool "OMAP34XX SoC"
        select CPU_V7
@@ -639,6 +501,8 @@ config ARCH_SOCFPGA
        bool "Altera SOCFPGA family"
        select CPU_V7
        select SUPPORT_SPL
+       select OF_CONTROL
+       select SPL_OF_CONTROL
        select DM
        select DM_SPI_FLASH
        select DM_SPI
@@ -662,12 +526,8 @@ config ARCH_SUNXI
        select USB_STORAGE
        select USB_KEYBOARD
 
-config TARGET_SNOWBALL
-       bool "Support snowball"
-       select CPU_V7
-
-config TARGET_U8500_HREF
-       bool "Support u8500_href"
+config TARGET_TS4800
+       bool "Support TS4800"
        select CPU_V7
 
 config TARGET_VF610TWR
@@ -756,60 +616,14 @@ config TARGET_LS1021ATWR
        select CPU_V7
        select SUPPORT_SPL
 
-config TARGET_BALLOON3
-       bool "Support balloon3"
-       select CPU_PXA
-
 config TARGET_H2200
        bool "Support h2200"
        select CPU_PXA
 
-config TARGET_PALMLD
-       bool "Support palmld"
-       select CPU_PXA
-
-config TARGET_PALMTC
-       bool "Support palmtc"
-       select CPU_PXA
-
-config TARGET_PALMTREO680
-       bool "Support palmtreo680"
-       select CPU_PXA
-       select SUPPORT_SPL
-
-config TARGET_PXA255_IDP
-       bool "Support pxa255_idp"
-       select CPU_PXA
-
-config TARGET_TRIZEPSIV
-       bool "Support trizepsiv"
-       select CPU_PXA
-
-config TARGET_VPAC270
-       bool "Support vpac270"
-       select CPU_PXA
-       select SUPPORT_SPL
-
-config TARGET_XAENIAX
-       bool "Support xaeniax"
-       select CPU_PXA
-
-config TARGET_ZIPITZ2
-       bool "Support zipitz2"
-       select CPU_PXA
-
-config TARGET_LP8X4X
-       bool "Support lp8x4x"
-       select CPU_PXA
-
 config TARGET_COLIBRI_PXA270
        bool "Support colibri_pxa270"
        select CPU_PXA
 
-config TARGET_JORNADA
-       bool "Support jornada"
-       select CPU_SA1100
-
 config ARCH_UNIPHIER
        bool "Socionext UniPhier SoCs"
        select CPU_V7
@@ -829,6 +643,14 @@ config TARGET_STM32F429_DISCOVERY
        bool "Support STM32F429 Discovery"
        select CPU_V7M
 
+config ARCH_ROCKCHIP
+       bool "Support Rockchip SoCs"
+       select SUPPORT_SPL
+       select SPL
+       select OF_CONTROL
+       select CPU_V7
+       select DM
+
 endchoice
 
 source "arch/arm/mach-at91/Kconfig"
@@ -847,12 +669,12 @@ source "arch/arm/mach-keystone/Kconfig"
 
 source "arch/arm/mach-kirkwood/Kconfig"
 
+source "arch/arm/cpu/armv7/mx7/Kconfig"
+
 source "arch/arm/cpu/armv7/mx6/Kconfig"
 
 source "arch/arm/cpu/armv7/mx5/Kconfig"
 
-source "arch/arm/mach-nomadik/Kconfig"
-
 source "arch/arm/cpu/armv7/omap3/Kconfig"
 
 source "arch/arm/cpu/armv7/omap4/Kconfig"
@@ -863,6 +685,8 @@ source "arch/arm/mach-orion5x/Kconfig"
 
 source "arch/arm/cpu/armv7/rmobile/Kconfig"
 
+source "arch/arm/mach-rockchip/Kconfig"
+
 source "arch/arm/cpu/armv7/s5pc1xx/Kconfig"
 
 source "arch/arm/mach-socfpga/Kconfig"
@@ -871,8 +695,6 @@ source "arch/arm/mach-tegra/Kconfig"
 
 source "arch/arm/mach-uniphier/Kconfig"
 
-source "arch/arm/mach-versatile/Kconfig"
-
 source "arch/arm/mach-zynq/Kconfig"
 
 source "arch/arm/cpu/armv7/Kconfig"
@@ -883,7 +705,6 @@ source "arch/arm/cpu/armv8/Kconfig"
 
 source "arch/arm/imx-common/Kconfig"
 
-source "board/aristainetos/Kconfig"
 source "board/BuR/kwb/Kconfig"
 source "board/BuR/tseries/Kconfig"
 source "board/CarMediaLab/flea3/Kconfig"
@@ -894,27 +715,16 @@ source "board/Marvell/gplugd/Kconfig"
 source "board/armadeus/apf27/Kconfig"
 source "board/armltd/vexpress/Kconfig"
 source "board/armltd/vexpress64/Kconfig"
-source "board/hisilicon/hikey/Kconfig"
-source "board/bachmann/ot1200/Kconfig"
-source "board/balloon3/Kconfig"
-source "board/barco/platinum/Kconfig"
-source "board/barco/titanium/Kconfig"
 source "board/bluegiga/apx4devkit/Kconfig"
-source "board/boundary/nitrogen6x/Kconfig"
 source "board/broadcom/bcm28155_ap/Kconfig"
 source "board/broadcom/bcmcygnus/Kconfig"
 source "board/broadcom/bcmnsp/Kconfig"
 source "board/cirrus/edb93xx/Kconfig"
 source "board/compulab/cm_t335/Kconfig"
 source "board/compulab/cm_t43/Kconfig"
-source "board/compulab/cm_fx6/Kconfig"
-source "board/congatec/cgtqmx6eval/Kconfig"
 source "board/creative/xfi3/Kconfig"
-source "board/davedenx/qong/Kconfig"
 source "board/denx/m28evk/Kconfig"
 source "board/denx/m53evk/Kconfig"
-source "board/embest/mx6boards/Kconfig"
-source "board/esg/ima3-mx53/Kconfig"
 source "board/freescale/ls2085a/Kconfig"
 source "board/freescale/ls2085aqds/Kconfig"
 source "board/freescale/ls2085ardb/Kconfig"
@@ -931,56 +741,34 @@ source "board/freescale/mx53ard/Kconfig"
 source "board/freescale/mx53evk/Kconfig"
 source "board/freescale/mx53loco/Kconfig"
 source "board/freescale/mx53smd/Kconfig"
-source "board/freescale/mx6qarm2/Kconfig"
-source "board/freescale/mx6qsabreauto/Kconfig"
-source "board/freescale/mx6sabresd/Kconfig"
-source "board/freescale/mx6slevk/Kconfig"
-source "board/freescale/mx6sxsabresd/Kconfig"
-source "board/freescale/mx6ul_14x14_evk/Kconfig"
 source "board/freescale/vf610twr/Kconfig"
-source "board/gateworks/gw_ventana/Kconfig"
-source "board/genesi/mx51_efikamx/Kconfig"
 source "board/gumstix/pepper/Kconfig"
 source "board/h2200/Kconfig"
-source "board/hale/tt01/Kconfig"
-source "board/icpdas/lp8x4x/Kconfig"
+source "board/hisilicon/hikey/Kconfig"
 source "board/imx31_phycore/Kconfig"
 source "board/isee/igep0033/Kconfig"
-source "board/jornada/Kconfig"
-source "board/karo/tx25/Kconfig"
-source "board/kosagi/novena/Kconfig"
-source "board/logicpd/imx27lite/Kconfig"
-source "board/logicpd/imx31_litekit/Kconfig"
 source "board/maxbcm/Kconfig"
 source "board/mpl/vcma9/Kconfig"
 source "board/olimex/mx23_olinuxino/Kconfig"
-source "board/palmld/Kconfig"
-source "board/palmtc/Kconfig"
-source "board/palmtreo680/Kconfig"
 source "board/phytec/pcm051/Kconfig"
 source "board/ppcag/bg0900/Kconfig"
-source "board/pxa255_idp/Kconfig"
 source "board/samsung/smdk2410/Kconfig"
 source "board/sandisk/sansa_fuze_plus/Kconfig"
-source "board/scb9328/Kconfig"
 source "board/schulercontrol/sc_sps_1/Kconfig"
 source "board/siemens/draco/Kconfig"
 source "board/siemens/pxm2/Kconfig"
 source "board/siemens/rut/Kconfig"
 source "board/silica/pengwyn/Kconfig"
-source "board/solidrun/mx6cuboxi/Kconfig"
 source "board/spear/spear300/Kconfig"
 source "board/spear/spear310/Kconfig"
 source "board/spear/spear320/Kconfig"
 source "board/spear/spear600/Kconfig"
 source "board/spear/x600/Kconfig"
-source "board/st-ericsson/snowball/Kconfig"
-source "board/st-ericsson/u8500/Kconfig"
 source "board/st/stm32f429-discovery/Kconfig"
 source "board/st/stv0991/Kconfig"
 source "board/sunxi/Kconfig"
 source "board/syteco/zmx25/Kconfig"
-source "board/tbs/tbs2910/Kconfig"
+source "board/tcl/sl50/Kconfig"
 source "board/ti/am335x/Kconfig"
 source "board/ti/am43xx/Kconfig"
 source "board/birdland/bav335x/Kconfig"
@@ -989,17 +777,10 @@ source "board/ti/ti816x/Kconfig"
 source "board/timll/devkit3250/Kconfig"
 source "board/toradex/colibri_pxa270/Kconfig"
 source "board/toradex/colibri_vf/Kconfig"
-source "board/trizepsiv/Kconfig"
-source "board/ttcontrol/vision2/Kconfig"
-source "board/udoo/Kconfig"
-source "board/vpac270/Kconfig"
+source "board/technologic/ts4800/Kconfig"
 source "board/vscom/baltos/Kconfig"
-source "board/wandboard/Kconfig"
-source "board/warp/Kconfig"
 source "board/woodburn/Kconfig"
 source "board/work-microwave/work_92105/Kconfig"
-source "board/xaeniax/Kconfig"
-source "board/zipitz2/Kconfig"
 
 source "arch/arm/Kconfig.debug"
 
index e84d6d366e10cfacf4ab916499d1ddd1173d7d42..1ce9c2432b3a39ca20523b12f2638ab9dcb32743 100644 (file)
@@ -55,9 +55,9 @@ machine-$(CONFIG_ARCH_NOMADIK)                += nomadik
 # TODO: rename CONFIG_ORION5X -> CONFIG_ARCH_ORION5X
 machine-$(CONFIG_ORION5X)              += orion5x
 machine-$(CONFIG_ARCH_SOCFPGA)         += socfpga
+machine-$(CONFIG_ARCH_ROCKCHIP)                += rockchip
 machine-$(CONFIG_TEGRA)                        += tegra
 machine-$(CONFIG_ARCH_UNIPHIER)                += uniphier
-machine-$(CONFIG_ARCH_VERSATILE)       += versatile
 machine-$(CONFIG_ARCH_ZYNQ)            += zynq
 
 machdirs := $(patsubst %,arch/arm/mach-%/,$(machine-y))
@@ -79,11 +79,11 @@ libs-y += arch/arm/cpu/
 libs-y += arch/arm/lib/
 
 ifeq ($(CONFIG_SPL_BUILD),y)
-ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35))
+ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx31 mx35))
 libs-y += arch/arm/imx-common/
 endif
 else
-ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx31 mx35 mxs vf610))
+ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx31 mx35 mxs vf610))
 libs-y += arch/arm/imx-common/
 endif
 endif
index 060d46b82ca02b1bef8b779ab30fa308da421c9b..fe966702fa30ba8feb23cd26c54bc72b85f2fe4b 100644 (file)
@@ -175,7 +175,7 @@ u32 get_cpu_rev(void)
 
        for (i = 0; i < ARRAY_SIZE(mx31_cpu_type); i++)
                if (srev == mx31_cpu_type[i].srev)
-                       return mx31_cpu_type[i].v;
+                       return mx31_cpu_type[i].v | (MXC_CPU_MX31 << 12);
 
        return srev | 0x8000;
 }
index d9fa2807d7a74c4bed436ec86dbf5610fba8163f..b1c3f8f4ad8d722234d87cad5bee61d591ce4074 100644 (file)
@@ -44,8 +44,7 @@ void lpc32xx_uart_init(unsigned int uart_id)
 void lpc32xx_dma_init(void)
 {
        /* Enable DMA interface */
-       writel(DMA_CLK_ENABLE, &clk->dmaclk_ctrl);
-
+       writel(CLK_DMA_ENABLE, &clk->dmaclk_ctrl);
 }
 
 void lpc32xx_mac_init(void)
index 5ee9f07d8735b2d10dd3bb25322aa0984edc386c..b713c8451944515ba301ef33e1f1f5e0734de0de 100644 (file)
@@ -12,6 +12,7 @@
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/gpio.h>
+#include <asm/imx-common/sys_proto.h>
 #ifdef CONFIG_MXC_MMC
 #include <asm/arch/mxcmmc.h>
 #endif
@@ -159,6 +160,11 @@ unsigned int mxc_get_clock(enum mxc_clock clk)
 }
 
 
+u32 get_cpu_rev(void)
+{
+       return MXC_CPU_MX27 << 12;
+}
+
 #if defined(CONFIG_DISPLAY_CPUINFO)
 int print_cpuinfo (void)
 {
index 6c594945582bbdd3a6a1538f7b2492f3d6a857a2..71c2c0e7b40c169be167b351b5a6e199e292efaa 100644 (file)
@@ -74,12 +74,10 @@ u-boot.csf: u-boot.ivt u-boot.bin board/$(VENDOR)/$(BOARD)/sign/u-boot.csf
 %.sig: %.csf
        $(call if_changed,mkcst_mxs)
 
-quiet_cmd_mkimage_mxs = MKIMAGE $@
-cmd_mkimage_mxs = $(objtree)/tools/mkimage -n $< -T mxsimage $@ \
-       $(if $(KBUILD_VERBOSE:1=), >/dev/null)
-
+MKIMAGEFLAGS_u-boot.sb = -n $< -T mxsimage
 u-boot.sb: $(src)/$(MKIMAGE_TARGET-y) u-boot.bin spl/u-boot-spl.bin FORCE
-       $(call if_changed,mkimage_mxs)
+       $(call if_changed,mkimage)
 
+MKIMAGEFLAGS_u-boot-signed.sb = -n $< -T mxsimage
 u-boot-signed.sb: $(src)/mxsimage-signed.cfg u-boot.ivt u-boot.sig spl/u-boot-spl.ivt spl/u-boot-spl.sig FORCE
-       $(call if_changed,mkimage_mxs)
+       $(call if_changed,mkimage)
index b1d8721213d8df005950077507a52da85e630e93..a6af0fcb36eef20d0bb650d9b5b3419b685f46df 100644 (file)
@@ -132,23 +132,7 @@ int arch_cpu_init(void)
        return 0;
 }
 
-#if defined(CONFIG_DISPLAY_CPUINFO)
-static const char *get_cpu_type(void)
-{
-       struct mxs_digctl_regs *digctl_regs =
-               (struct mxs_digctl_regs *)MXS_DIGCTL_BASE;
-
-       switch (readl(&digctl_regs->hw_digctl_chipid) & HW_DIGCTL_CHIPID_MASK) {
-       case HW_DIGCTL_CHIPID_MX23:
-               return "23";
-       case HW_DIGCTL_CHIPID_MX28:
-               return "28";
-       default:
-               return "??";
-       }
-}
-
-static const char *get_cpu_rev(void)
+u32 get_cpu_rev(void)
 {
        struct mxs_digctl_regs *digctl_regs =
                (struct mxs_digctl_regs *)MXS_DIGCTL_BASE;
@@ -158,25 +142,34 @@ static const char *get_cpu_rev(void)
        case HW_DIGCTL_CHIPID_MX23:
                switch (rev) {
                case 0x0:
-                       return "1.0";
                case 0x1:
-                       return "1.1";
                case 0x2:
-                       return "1.2";
                case 0x3:
-                       return "1.3";
                case 0x4:
-                       return "1.4";
+                       return (MXC_CPU_MX23 << 12) | (rev + 0x10);
                default:
-                       return "??";
+                       return 0;
                }
        case HW_DIGCTL_CHIPID_MX28:
                switch (rev) {
                case 0x1:
-                       return "1.2";
+                       return (MXC_CPU_MX28 << 12) | 0x12;
                default:
-                       return "??";
+                       return 0;
                }
+       default:
+               return 0;
+       }
+}
+
+#if defined(CONFIG_DISPLAY_CPUINFO)
+const char *get_imx_type(u32 imxtype)
+{
+       switch (imxtype) {
+       case MXC_CPU_MX23:
+               return "23";    /* Quad-Plus version of the mx6 */
+       case MXC_CPU_MX28:
+               return "28";    /* Dual-Plus version of the mx6 */
        default:
                return "??";
        }
@@ -184,12 +177,15 @@ static const char *get_cpu_rev(void)
 
 int print_cpuinfo(void)
 {
+       u32 cpurev;
        struct mxs_spl_data *data = (struct mxs_spl_data *)
                ((CONFIG_SYS_TEXT_BASE - sizeof(struct mxs_spl_data)) & ~0xf);
 
-       printf("CPU:   Freescale i.MX%s rev%s at %d MHz\n",
-               get_cpu_type(),
-               get_cpu_rev(),
+       cpurev = get_cpu_rev();
+       printf("CPU:   Freescale i.MX%s rev%d.%d at %d MHz\n",
+               get_imx_type((cpurev & 0xFF000) >> 12),
+               (cpurev & 0x000F0) >> 4,
+               (cpurev & 0x0000F) >> 0,
                mxc_get_clock(MXC_ARM_CLK) / 1000000);
        printf("BOOT:  %s\n", mxs_boot_modes[data->boot_mode_idx].mode);
        return 0;
index e39cdbaa6e5110f056222fee6dd413b093f0fbbd..be0d14fbf04b9230a659d781ad5ea174e5224aa9 100644 (file)
@@ -83,3 +83,37 @@ int print_cpuinfo(void)
        return 0;
 }
 #endif
+
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_NAND_ECC_BCH)
+static int do_switch_ecc(cmd_tbl_t *cmdtp, int flag, int argc,
+                        char *const argv[])
+{
+       if (argc != 2)
+               goto usage;
+
+       if (strncmp(argv[1], "hw", 2) == 0) {
+               /* 1-bit HW ECC */
+               printf("Switching to 1-bit HW ECC\n");
+               fsmc_nand_switch_ecc(1);
+       } else if (strncmp(argv[1], "bch4", 2) == 0) {
+               /* 4-bit SW ECC BCH4 */
+               printf("Switching to 4-bit SW ECC (BCH4)\n");
+               fsmc_nand_switch_ecc(4);
+       } else {
+               goto usage;
+       }
+
+       return 0;
+
+usage:
+       printf("Usage: nandecc %s\n", cmdtp->usage);
+       return 1;
+}
+
+U_BOOT_CMD(
+       nandecc, 2, 0,  do_switch_ecc,
+       "switch NAND ECC calculation algorithm",
+       "hw|bch4 - Switch between NAND hardware 1-bit HW and"
+       " 4-bit SW BCH\n"
+);
+#endif
index 6769d8fbfe4f99b289ce29a92e4e3fb9d35cf6e3..79a38df2cb791aecd415cc70e1ab4e296808b369 100644 (file)
@@ -12,7 +12,7 @@ obj-y += cache_v7.o
 obj-y  += cpu.o cp15.o
 obj-y  += syslib.o
 
-ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI)$(CONFIG_ARCH_SOCFPGA),)
+ifneq ($(CONFIG_AM43XX)$(CONFIG_AM33XX)$(CONFIG_OMAP44XX)$(CONFIG_OMAP54XX)$(CONFIG_TEGRA)$(CONFIG_MX6)$(CONFIG_MX7)$(CONFIG_TI81XX)$(CONFIG_AT91FAMILY)$(CONFIG_SUNXI)$(CONFIG_ARCH_SOCFPGA),)
 ifneq ($(CONFIG_SKIP_LOWLEVEL_INIT),y)
 obj-y  += lowlevel_init.o
 endif
@@ -44,6 +44,7 @@ obj-$(if $(filter bcmnsp,$(SOC)),y) += bcmnsp/
 obj-$(if $(filter ls102xa,$(SOC)),y) += ls102xa/
 obj-$(if $(filter mx5,$(SOC)),y) += mx5/
 obj-$(CONFIG_MX6) += mx6/
+obj-$(CONFIG_MX7) += mx7/
 obj-$(CONFIG_OMAP34XX) += omap3/
 obj-$(CONFIG_OMAP44XX) += omap4/
 obj-$(CONFIG_OMAP54XX) += omap5/
index 0b0e5003cc3c390e9cb86fe13d8426e5840ae731..6eac5ef3fe0049f5f41d11c1762f2a299527398d 100644 (file)
@@ -36,12 +36,6 @@ int cleanup_before_linux_select(int flags)
        disable_interrupts();
 #endif
 
-       /*
-        * Turn off I-cache and invalidate it
-        */
-       icache_disable();
-       invalidate_icache_all();
-
        if (flags & CBL_DISABLE_CACHES) {
                /*
                * turn off D-cache
@@ -61,7 +55,16 @@ int cleanup_before_linux_select(int flags)
                * to avoid coherency problems for kernel
                */
                invalidate_dcache_all();
+
+               icache_disable();
+               invalidate_icache_all();
        } else {
+               /*
+                * Turn off I-cache and invalidate it
+                */
+               icache_disable();
+               invalidate_icache_all();
+
                flush_dcache_all();
                invalidate_icache_all();
                icache_enable();
index dce7ffc022ae7ef9d30a29147c509dfdd3cd98f5..0b02e9e77807ce33ae62ac0180d052a8a166b198 100644 (file)
@@ -33,25 +33,143 @@ choice
        prompt "MX6 board select"
        optional
 
+config TARGET_ARISTAINETOS
+       bool "aristainetos"
+
+config TARGET_ARISTAINETOS2
+       bool "aristainetos2"
+
+config TARGET_ARISTAINETOS2B
+       bool "Support aristainetos2-revB"
+
+config TARGET_CGTQMX6EVAL
+       bool "cgtqmx6eval"
+
 config TARGET_CM_FX6
-       bool "Support CM-FX6"
+       bool "CM-FX6"
        select SUPPORT_SPL
        select DM
        select DM_SERIAL
        select DM_GPIO
 
+config TARGET_EMBESTMX6BOARDS
+       bool "embestmx6boards"
+
+config TARGET_GW_VENTANA
+       bool "gw_ventana"
+       select SUPPORT_SPL
+
+config TARGET_KOSAGI_NOVENA
+       bool "Kosagi Novena"
+       select SUPPORT_SPL
+
+config TARGET_MX6CUBOXI
+       bool "Solid-run mx6 boards"
+       select SUPPORT_SPL
+
+config TARGET_MX6QARM2
+       bool "mx6qarm2"
+
+config TARGET_MX6QSABREAUTO
+       bool "mx6qsabreauto"
+       select DM
+       select DM_THERMAL
+
+config TARGET_MX6SABRESD
+       bool "mx6sabresd"
+       select SUPPORT_SPL
+       select DM
+       select DM_THERMAL
+
+config TARGET_MX6SLEVK
+       bool "mx6slevk"
+       select SUPPORT_SPL
+
+config TARGET_MX6SXSABRESD
+       bool "mx6sxsabresd"
+       select SUPPORT_SPL
+       select DM
+       select DM_THERMAL
+
+config TARGET_MX6UL_9X9_EVK
+       bool "mx6ul_9x9_evk"
+       select MX6UL
+       select DM
+       select DM_THERMAL
+       select SUPPORT_SPL
+
+config TARGET_MX6UL_14X14_EVK
+       bool "mx6ul_14x14_evk"
+       select MX6UL
+       select DM
+       select DM_THERMAL
+       select SUPPORT_SPL
+
+config TARGET_NITROGEN6X
+       bool "nitrogen6x"
+
+config TARGET_OT1200
+       bool "Bachmann OT1200"
+       select SUPPORT_SPL
+
+config TARGET_PLATINUM_PICON
+       bool "platinum-picon"
+       select SUPPORT_SPL
+
+config TARGET_PLATINUM_TITANIUM
+       bool "platinum-titanium"
+       select SUPPORT_SPL
+
 config TARGET_SECOMX6
-       bool "Support secomx6 boards"
+       bool "secomx6 boards"
+
+config TARGET_TBS2910
+       bool "TBS2910 Matrix ARM mini PC"
+
+config TARGET_TITANIUM
+       bool "titanium"
 
 config TARGET_TQMA6
        bool "TQ Systems TQMa6 board"
 
+config TARGET_UDOO
+       bool "udoo"
+       select SUPPORT_SPL
+
+config TARGET_WANDBOARD
+       bool "wandboard"
+       select SUPPORT_SPL
+
+config TARGET_WARP
+       bool "WaRP"
+
 endchoice
 
 config SYS_SOC
        default "mx6"
 
+source "board/aristainetos/Kconfig"
+source "board/bachmann/ot1200/Kconfig"
+source "board/barco/platinum/Kconfig"
+source "board/barco/titanium/Kconfig"
+source "board/boundary/nitrogen6x/Kconfig"
+source "board/compulab/cm_fx6/Kconfig"
+source "board/congatec/cgtqmx6eval/Kconfig"
+source "board/embest/mx6boards/Kconfig"
+source "board/freescale/mx6qarm2/Kconfig"
+source "board/freescale/mx6qsabreauto/Kconfig"
+source "board/freescale/mx6sabresd/Kconfig"
+source "board/freescale/mx6slevk/Kconfig"
+source "board/freescale/mx6sxsabresd/Kconfig"
+source "board/freescale/mx6ul_14x14_evk/Kconfig"
+source "board/gateworks/gw_ventana/Kconfig"
+source "board/kosagi/novena/Kconfig"
 source "board/seco/Kconfig"
+source "board/solidrun/mx6cuboxi/Kconfig"
+source "board/tbs/tbs2910/Kconfig"
 source "board/tqc/tqma6/Kconfig"
+source "board/udoo/Kconfig"
+source "board/wandboard/Kconfig"
+source "board/warp/Kconfig"
 
 endif
index 9cf4eece137ee0657aecc5284ddd6f4bb198f403..ba6cc75a7b21193e51f5d17e651c1a3a61afda1c 100644 (file)
@@ -524,7 +524,7 @@ void enable_qspi_clk(int qspi_num)
 #endif
 
 #ifdef CONFIG_FEC_MXC
-int enable_fec_anatop_clock(enum enet_freq freq)
+int enable_fec_anatop_clock(int fec_id, enum enet_freq freq)
 {
        u32 reg = 0;
        s32 timeout = 100000;
@@ -535,9 +535,19 @@ int enable_fec_anatop_clock(enum enet_freq freq)
        if (freq < ENET_25MHZ || freq > ENET_125MHZ)
                return -EINVAL;
 
-       reg = readl(&anatop->pll_enet);
-       reg &= ~BM_ANADIG_PLL_ENET_DIV_SELECT;
-       reg |= freq;
+       if (fec_id == 0) {
+               reg &= ~BM_ANADIG_PLL_ENET_DIV_SELECT;
+               reg |= BF_ANADIG_PLL_ENET_DIV_SELECT(freq);
+       } else if (fec_id == 1) {
+               /* Only i.MX6SX/UL support ENET2 */
+               if (!(is_cpu_type(MXC_CPU_MX6SX) ||
+                     is_cpu_type(MXC_CPU_MX6UL)))
+                       return -EINVAL;
+               reg &= ~BM_ANADIG_PLL_ENET2_DIV_SELECT;
+               reg |= BF_ANADIG_PLL_ENET2_DIV_SELECT(freq);
+       } else {
+               return -EINVAL;
+       }
 
        if ((reg & BM_ANADIG_PLL_ENET_POWERDOWN) ||
            (!(reg & BM_ANADIG_PLL_ENET_LOCK))) {
@@ -552,7 +562,10 @@ int enable_fec_anatop_clock(enum enet_freq freq)
        }
 
        /* Enable FEC clock */
-       reg |= BM_ANADIG_PLL_ENET_ENABLE;
+       if (fec_id == 0)
+               reg |= BM_ANADIG_PLL_ENET_ENABLE;
+       else
+               reg |= BM_ANADIG_PLL_ENET2_ENABLE;
        reg &= ~BM_ANADIG_PLL_ENET_BYPASS;
        writel(reg, &anatop->pll_enet);
 
index b808627a42787e8249b2b9e120e4885109b22547..6b039e45318834d62d5d7b53892a25f0c894125c 100644 (file)
@@ -7,6 +7,7 @@
 
 #include <common.h>
 #include <linux/types.h>
+#include <asm/arch/clock.h>
 #include <asm/arch/mx6-ddr.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/io.h>
@@ -115,6 +116,61 @@ void mx6ul_dram_iocfg(unsigned width,
 }
 #endif
 
+#if defined(CONFIG_MX6SL)
+void mx6sl_dram_iocfg(unsigned width,
+                     const struct mx6sl_iomux_ddr_regs *ddr,
+                     const struct mx6sl_iomux_grp_regs *grp)
+{
+       struct mx6sl_iomux_ddr_regs *mx6_ddr_iomux;
+       struct mx6sl_iomux_grp_regs *mx6_grp_iomux;
+
+       mx6_ddr_iomux = (struct mx6sl_iomux_ddr_regs *)MX6SL_IOM_DDR_BASE;
+       mx6_grp_iomux = (struct mx6sl_iomux_grp_regs *)MX6SL_IOM_GRP_BASE;
+
+       /* DDR IO TYPE */
+       mx6_grp_iomux->grp_ddr_type = grp->grp_ddr_type;
+       mx6_grp_iomux->grp_ddrpke = grp->grp_ddrpke;
+
+       /* CLOCK */
+       mx6_ddr_iomux->dram_sdclk_0 = ddr->dram_sdclk_0;
+
+       /* ADDRESS */
+       mx6_ddr_iomux->dram_cas = ddr->dram_cas;
+       mx6_ddr_iomux->dram_ras = ddr->dram_ras;
+       mx6_grp_iomux->grp_addds = grp->grp_addds;
+
+       /* Control */
+       mx6_ddr_iomux->dram_reset = ddr->dram_reset;
+       mx6_ddr_iomux->dram_sdba2 = ddr->dram_sdba2;
+       mx6_grp_iomux->grp_ctlds = grp->grp_ctlds;
+
+       /* Data Strobes */
+       mx6_grp_iomux->grp_ddrmode_ctl = grp->grp_ddrmode_ctl;
+       mx6_ddr_iomux->dram_sdqs0 = ddr->dram_sdqs0;
+       mx6_ddr_iomux->dram_sdqs1 = ddr->dram_sdqs1;
+       if (width >= 32) {
+               mx6_ddr_iomux->dram_sdqs2 = ddr->dram_sdqs2;
+               mx6_ddr_iomux->dram_sdqs3 = ddr->dram_sdqs3;
+       }
+
+       /* Data */
+       mx6_grp_iomux->grp_ddrmode = grp->grp_ddrmode;
+       mx6_grp_iomux->grp_b0ds = grp->grp_b0ds;
+       mx6_grp_iomux->grp_b1ds = grp->grp_b1ds;
+       if (width >= 32) {
+               mx6_grp_iomux->grp_b2ds = grp->grp_b2ds;
+               mx6_grp_iomux->grp_b3ds = grp->grp_b3ds;
+       }
+
+       mx6_ddr_iomux->dram_dqm0 = ddr->dram_dqm0;
+       mx6_ddr_iomux->dram_dqm1 = ddr->dram_dqm1;
+       if (width >= 32) {
+               mx6_ddr_iomux->dram_dqm2 = ddr->dram_dqm2;
+               mx6_ddr_iomux->dram_dqm3 = ddr->dram_dqm3;
+       }
+}
+#endif
+
 #if defined(CONFIG_MX6QDL) || defined(CONFIG_MX6Q) || defined(CONFIG_MX6D)
 /* Configure MX6DQ mmdc iomux */
 void mx6dq_dram_iocfg(unsigned width,
@@ -275,24 +331,314 @@ void mx6sdl_dram_iocfg(unsigned width,
  * Configure mx6 mmdc registers based on:
  *  - board-specific memory configuration
  *  - board-specific calibration data
- *  - ddr3 chip details
+ *  - ddr3/lpddr2 chip details
  *
  * The various calculations here are derived from the Freescale
- * i.Mx6DQSDL DDR3 Script Aid spreadsheet (DOC-94917) designed to generate MMDC
- * configuration registers based on memory system and memory chip parameters.
+ * 1. i.Mx6DQSDL DDR3 Script Aid spreadsheet (DOC-94917) designed to generate
+ *    MMDC configuration registers based on memory system and memory chip
+ *    parameters.
+ *
+ * 2. i.Mx6SL LPDDR2 Script Aid spreadsheet V0.04 designed to generate MMDC
+ *    configuration registers based on memory system and memory chip
+ *    parameters.
  *
  * The defaults here are those which were specified in the spreadsheet.
  * For details on each register, refer to the IMX6DQRM and/or IMX6SDLRM
- * section titled MMDC initialization
+ * and/or IMX6SLRM section titled MMDC initialization.
  */
 #define MR(val, ba, cmd, cs1) \
        ((val << 16) | (1 << 15) | (cmd << 4) | (cs1 << 3) | ba)
 #define MMDC1(entry, value) do {                                         \
-       if (!is_cpu_type(MXC_CPU_MX6SX) && !is_cpu_type(MXC_CPU_MX6UL))   \
+       if (!is_cpu_type(MXC_CPU_MX6SX) && !is_cpu_type(MXC_CPU_MX6UL) && \
+           !is_cpu_type(MXC_CPU_MX6SL))                                  \
                mmdc1->entry = value;                                     \
        } while (0)
 
-void mx6_dram_cfg(const struct mx6_ddr_sysinfo *sysinfo,
+/*
+ * According JESD209-2B-LPDDR2: Table 103
+ * WL: write latency
+ */
+static int lpddr2_wl(uint32_t mem_speed)
+{
+       switch (mem_speed) {
+       case 1066:
+       case 933:
+               return 4;
+       case 800:
+               return 3;
+       case 677:
+       case 533:
+               return 2;
+       case 400:
+       case 333:
+               return 1;
+       default:
+               puts("invalid memory speed\n");
+               hang();
+       }
+
+       return 0;
+}
+
+/*
+ * According JESD209-2B-LPDDR2: Table 103
+ * RL: read latency
+ */
+static int lpddr2_rl(uint32_t mem_speed)
+{
+       switch (mem_speed) {
+       case 1066:
+               return 8;
+       case 933:
+               return 7;
+       case 800:
+               return 6;
+       case 677:
+               return 5;
+       case 533:
+               return 4;
+       case 400:
+       case 333:
+               return 3;
+       default:
+               puts("invalid memory speed\n");
+               hang();
+       }
+
+       return 0;
+}
+
+void mx6_lpddr2_cfg(const struct mx6_ddr_sysinfo *sysinfo,
+                   const struct mx6_mmdc_calibration *calib,
+                   const struct mx6_lpddr2_cfg *lpddr2_cfg)
+{
+       volatile struct mmdc_p_regs *mmdc0;
+       u32 val;
+       u8 tcke, tcksrx, tcksre, trrd;
+       u8 twl, txp, tfaw, tcl;
+       u16 tras, twr, tmrd, trtp, twtr, trfc, txsr;
+       u16 trcd_lp, trppb_lp, trpab_lp, trc_lp;
+       u16 cs0_end;
+       u8 coladdr;
+       int clkper; /* clock period in picoseconds */
+       int clock;  /* clock freq in mHz */
+       int cs;
+
+       /* only support 16/32 bits */
+       if (sysinfo->dsize > 1)
+               hang();
+
+       mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
+
+       clock = mxc_get_clock(MXC_DDR_CLK) / 1000000U;
+       clkper = (1000 * 1000) / clock; /* pico seconds */
+
+       twl = lpddr2_wl(lpddr2_cfg->mem_speed) - 1;
+
+       /* LPDDR2-S2 and LPDDR2-S4 have the same tRFC value. */
+       switch (lpddr2_cfg->density) {
+       case 1:
+       case 2:
+       case 4:
+               trfc = DIV_ROUND_UP(130000, clkper) - 1;
+               txsr = DIV_ROUND_UP(140000, clkper) - 1;
+               break;
+       case 8:
+               trfc = DIV_ROUND_UP(210000, clkper) - 1;
+               txsr = DIV_ROUND_UP(220000, clkper) - 1;
+               break;
+       default:
+               /*
+                * 64Mb, 128Mb, 256Mb, 512Mb are not supported currently.
+                */
+               hang();
+               break;
+       }
+       /*
+        * txpdll, txpr, taonpd and taofpd are not relevant in LPDDR2 mode,
+        * set them to 0. */
+       txp = DIV_ROUND_UP(7500, clkper) - 1;
+       tcke = 3;
+       if (lpddr2_cfg->mem_speed == 333)
+               tfaw = DIV_ROUND_UP(60000, clkper) - 1;
+       else
+               tfaw = DIV_ROUND_UP(50000, clkper) - 1;
+       trrd = DIV_ROUND_UP(10000, clkper) - 1;
+
+       /* tckesr for LPDDR2 */
+       tcksre = DIV_ROUND_UP(15000, clkper);
+       tcksrx = tcksre;
+       twr  = DIV_ROUND_UP(15000, clkper) - 1;
+       /*
+        * tMRR: 2, tMRW: 5
+        * tMRD should be set to max(tMRR, tMRW)
+        */
+       tmrd = 5;
+       tras = DIV_ROUND_UP(lpddr2_cfg->trasmin, clkper / 10) - 1;
+       /* LPDDR2 mode use tRCD_LP filed in MDCFG3. */
+       trcd_lp = DIV_ROUND_UP(lpddr2_cfg->trcd_lp, clkper / 10) - 1;
+       trc_lp = DIV_ROUND_UP(lpddr2_cfg->trasmin + lpddr2_cfg->trppb_lp,
+                             clkper / 10) - 1;
+       trppb_lp = DIV_ROUND_UP(lpddr2_cfg->trppb_lp, clkper / 10) - 1;
+       trpab_lp = DIV_ROUND_UP(lpddr2_cfg->trpab_lp, clkper / 10) - 1;
+       /* To LPDDR2, CL in MDCFG0 refers to RL */
+       tcl = lpddr2_rl(lpddr2_cfg->mem_speed) - 3;
+       twtr = DIV_ROUND_UP(7500, clkper) - 1;
+       trtp = DIV_ROUND_UP(7500, clkper) - 1;
+
+       cs0_end = 4 * sysinfo->cs_density - 1;
+
+       debug("density:%d Gb (%d Gb per chip)\n",
+             sysinfo->cs_density, lpddr2_cfg->density);
+       debug("clock: %dMHz (%d ps)\n", clock, clkper);
+       debug("memspd:%d\n", lpddr2_cfg->mem_speed);
+       debug("trcd_lp=%d\n", trcd_lp);
+       debug("trppb_lp=%d\n", trppb_lp);
+       debug("trpab_lp=%d\n", trpab_lp);
+       debug("trc_lp=%d\n", trc_lp);
+       debug("tcke=%d\n", tcke);
+       debug("tcksrx=%d\n", tcksrx);
+       debug("tcksre=%d\n", tcksre);
+       debug("trfc=%d\n", trfc);
+       debug("txsr=%d\n", txsr);
+       debug("txp=%d\n", txp);
+       debug("tfaw=%d\n", tfaw);
+       debug("tcl=%d\n", tcl);
+       debug("tras=%d\n", tras);
+       debug("twr=%d\n", twr);
+       debug("tmrd=%d\n", tmrd);
+       debug("twl=%d\n", twl);
+       debug("trtp=%d\n", trtp);
+       debug("twtr=%d\n", twtr);
+       debug("trrd=%d\n", trrd);
+       debug("cs0_end=%d\n", cs0_end);
+       debug("ncs=%d\n", sysinfo->ncs);
+
+       /*
+        * board-specific configuration:
+        *  These values are determined empirically and vary per board layout
+        */
+       mmdc0->mpwldectrl0 = calib->p0_mpwldectrl0;
+       mmdc0->mpwldectrl1 = calib->p0_mpwldectrl1;
+       mmdc0->mpdgctrl0 = calib->p0_mpdgctrl0;
+       mmdc0->mpdgctrl1 = calib->p0_mpdgctrl1;
+       mmdc0->mprddlctl = calib->p0_mprddlctl;
+       mmdc0->mpwrdlctl = calib->p0_mpwrdlctl;
+       mmdc0->mpzqlp2ctl = calib->mpzqlp2ctl;
+
+       /* Read data DQ Byte0-3 delay */
+       mmdc0->mprddqby0dl = 0x33333333;
+       mmdc0->mprddqby1dl = 0x33333333;
+       if (sysinfo->dsize > 0) {
+               mmdc0->mprddqby2dl = 0x33333333;
+               mmdc0->mprddqby3dl = 0x33333333;
+       }
+
+       /* Write data DQ Byte0-3 delay */
+       mmdc0->mpwrdqby0dl = 0xf3333333;
+       mmdc0->mpwrdqby1dl = 0xf3333333;
+       if (sysinfo->dsize > 0) {
+               mmdc0->mpwrdqby2dl = 0xf3333333;
+               mmdc0->mpwrdqby3dl = 0xf3333333;
+       }
+
+       /*
+        * In LPDDR2 mode this register should be cleared,
+        * so no termination will be activated.
+        */
+       mmdc0->mpodtctrl = 0;
+
+       /* complete calibration */
+       val = (1 << 11); /* Force measurement on delay-lines */
+       mmdc0->mpmur0 = val;
+
+       /* Step 1: configuration request */
+       mmdc0->mdscr = (u32)(1 << 15); /* config request */
+
+       /* Step 2: Timing configuration */
+       mmdc0->mdcfg0 = (trfc << 24) | (txsr << 16) | (txp << 13) |
+                       (tfaw << 4) | tcl;
+       mmdc0->mdcfg1 = (tras << 16) | (twr << 9) | (tmrd << 5) | twl;
+       mmdc0->mdcfg2 = (trtp << 6) | (twtr << 3) | trrd;
+       mmdc0->mdcfg3lp = (trc_lp << 16) | (trcd_lp << 8) |
+                         (trppb_lp << 4) | trpab_lp;
+       mmdc0->mdotc = 0;
+
+       mmdc0->mdasp = cs0_end; /* CS addressing */
+
+       /* Step 3: Configure DDR type */
+       mmdc0->mdmisc = (sysinfo->cs1_mirror << 19) | (sysinfo->walat << 16) |
+                       (sysinfo->bi_on << 12) | (sysinfo->mif3_mode << 9) |
+                       (sysinfo->ralat << 6) | (1 << 3);
+
+       /* Step 4: Configure delay while leaving reset */
+       mmdc0->mdor = (sysinfo->sde_to_rst << 8) |
+                     (sysinfo->rst_to_cke << 0);
+
+       /* Step 5: Configure DDR physical parameters (density and burst len) */
+       coladdr = lpddr2_cfg->coladdr;
+       if (lpddr2_cfg->coladdr == 8)           /* 8-bit COL is 0x3 */
+               coladdr += 4;
+       else if (lpddr2_cfg->coladdr == 12)     /* 12-bit COL is 0x4 */
+               coladdr += 1;
+       mmdc0->mdctl =  (lpddr2_cfg->rowaddr - 11) << 24 |      /* ROW */
+                       (coladdr - 9) << 20 |                   /* COL */
+                       (0 << 19) |     /* Burst Length = 4 for LPDDR2 */
+                       (sysinfo->dsize << 16); /* DDR data bus size */
+
+       /* Step 6: Perform ZQ calibration */
+       val = 0xa1390003; /* one-time HW ZQ calib */
+       mmdc0->mpzqhwctrl = val;
+
+       /* Step 7: Enable MMDC with desired chip select */
+       mmdc0->mdctl |= (1 << 31) |                          /* SDE_0 for CS0 */
+                       ((sysinfo->ncs == 2) ? 1 : 0) << 30; /* SDE_1 for CS1 */
+
+       /* Step 8: Write Mode Registers to Init LPDDR2 devices */
+       for (cs = 0; cs < sysinfo->ncs; cs++) {
+               /* MR63: reset */
+               mmdc0->mdscr = MR(63, 0, 3, cs);
+               /* MR10: calibration,
+                * 0xff is calibration command after intilization.
+                */
+               val = 0xA | (0xff << 8);
+               mmdc0->mdscr = MR(val, 0, 3, cs);
+               /* MR1 */
+               val = 0x1 | (0x82 << 8);
+               mmdc0->mdscr = MR(val, 0, 3, cs);
+               /* MR2 */
+               val = 0x2 | (0x04 << 8);
+               mmdc0->mdscr = MR(val, 0, 3, cs);
+               /* MR3 */
+               val = 0x3 | (0x02 << 8);
+               mmdc0->mdscr = MR(val, 0, 3, cs);
+       }
+
+       /* Step 10: Power down control and self-refresh */
+       mmdc0->mdpdc = (tcke & 0x7) << 16 |
+                       5            << 12 |  /* PWDT_1: 256 cycles */
+                       5            <<  8 |  /* PWDT_0: 256 cycles */
+                       1            <<  6 |  /* BOTH_CS_PD */
+                       (tcksrx & 0x7) << 3 |
+                       (tcksre & 0x7);
+       mmdc0->mapsr = 0x00001006; /* ADOPT power down enabled */
+
+       /* Step 11: Configure ZQ calibration: one-time and periodic 1ms */
+       val = 0xa1310003;
+       mmdc0->mpzqhwctrl = val;
+
+       /* Step 12: Configure and activate periodic refresh */
+       mmdc0->mdref = (0 << 14) | /* REF_SEL: Periodic refresh cycle: 64kHz */
+                      (3 << 11);  /* REFR: Refresh Rate - 4 refreshes */
+
+       /* Step 13: Deassert config request - init complete */
+       mmdc0->mdscr = 0x00000000;
+
+       /* wait for auto-ZQ calibration to complete */
+       mdelay(1);
+}
+
+void mx6_ddr3_cfg(const struct mx6_ddr_sysinfo *sysinfo,
                  const struct mx6_mmdc_calibration *calib,
                  const struct mx6_ddr3_cfg *ddr3_cfg)
 {
@@ -312,7 +658,8 @@ void mx6_dram_cfg(const struct mx6_ddr_sysinfo *sysinfo,
        u16 mem_speed = ddr3_cfg->mem_speed;
 
        mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
-       if (!is_cpu_type(MXC_CPU_MX6SX) && !is_cpu_type(MXC_CPU_MX6UL))
+       if (!is_cpu_type(MXC_CPU_MX6SX) && !is_cpu_type(MXC_CPU_MX6UL) &&
+           !is_cpu_type(MXC_CPU_MX6SL))
                mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
 
        /* Limit mem_speed for MX6D/MX6Q */
@@ -598,3 +945,17 @@ void mx6_dram_cfg(const struct mx6_ddr_sysinfo *sysinfo,
        /* wait for auto-ZQ calibration to complete */
        mdelay(1);
 }
+
+void mx6_dram_cfg(const struct mx6_ddr_sysinfo *sysinfo,
+                 const struct mx6_mmdc_calibration *calib,
+                 const void *ddr_cfg)
+{
+       if (sysinfo->ddr_type == DDR_TYPE_DDR3) {
+               mx6_ddr3_cfg(sysinfo, calib, ddr_cfg);
+       } else if (sysinfo->ddr_type == DDR_TYPE_LPDDR2) {
+               mx6_lpddr2_cfg(sysinfo, calib, ddr_cfg);
+       } else {
+               puts("Unsupported ddr type\n");
+               hang();
+       }
+}
index 8ad8da846500e7664faaaa849307de7b68331d91..282302b1fc15a1224db191608106dec7f8f59596 100644 (file)
@@ -8,9 +8,6 @@
  */
 
 #include <common.h>
-#include <asm/armv7.h>
-#include <asm/bootm.h>
-#include <asm/pl310.h>
 #include <asm/errno.h>
 #include <asm/io.h>
 #include <asm/arch/imx-regs.h>
@@ -38,7 +35,7 @@ struct scu_regs {
        u32     fpga_rev;
 };
 
-#if defined(CONFIG_IMX6_THERMAL)
+#if defined(CONFIG_IMX_THERMAL)
 static const struct imx_thermal_plat imx6_thermal_plat = {
        .regs = (void *)ANATOP_BASE_ADDR,
        .fuse_bank = 1,
@@ -186,65 +183,6 @@ u32 __weak get_board_rev(void)
 }
 #endif
 
-void init_aips(void)
-{
-       struct aipstz_regs *aips1, *aips2;
-#ifdef CONFIG_MX6SX
-       struct aipstz_regs *aips3;
-#endif
-
-       aips1 = (struct aipstz_regs *)AIPS1_BASE_ADDR;
-       aips2 = (struct aipstz_regs *)AIPS2_BASE_ADDR;
-#ifdef CONFIG_MX6SX
-       aips3 = (struct aipstz_regs *)AIPS3_CONFIG_BASE_ADDR;
-#endif
-
-       /*
-        * Set all MPROTx to be non-bufferable, trusted for R/W,
-        * not forced to user-mode.
-        */
-       writel(0x77777777, &aips1->mprot0);
-       writel(0x77777777, &aips1->mprot1);
-       writel(0x77777777, &aips2->mprot0);
-       writel(0x77777777, &aips2->mprot1);
-
-       /*
-        * Set all OPACRx to be non-bufferable, not require
-        * supervisor privilege level for access,allow for
-        * write access and untrusted master access.
-        */
-       writel(0x00000000, &aips1->opacr0);
-       writel(0x00000000, &aips1->opacr1);
-       writel(0x00000000, &aips1->opacr2);
-       writel(0x00000000, &aips1->opacr3);
-       writel(0x00000000, &aips1->opacr4);
-       writel(0x00000000, &aips2->opacr0);
-       writel(0x00000000, &aips2->opacr1);
-       writel(0x00000000, &aips2->opacr2);
-       writel(0x00000000, &aips2->opacr3);
-       writel(0x00000000, &aips2->opacr4);
-
-#ifdef CONFIG_MX6SX
-       /*
-        * Set all MPROTx to be non-bufferable, trusted for R/W,
-        * not forced to user-mode.
-        */
-       writel(0x77777777, &aips3->mprot0);
-       writel(0x77777777, &aips3->mprot1);
-
-       /*
-        * Set all OPACRx to be non-bufferable, not require
-        * supervisor privilege level for access,allow for
-        * write access and untrusted master access.
-        */
-       writel(0x00000000, &aips3->opacr0);
-       writel(0x00000000, &aips3->opacr1);
-       writel(0x00000000, &aips3->opacr2);
-       writel(0x00000000, &aips3->opacr3);
-       writel(0x00000000, &aips3->opacr4);
-#endif
-}
-
 static void clear_ldo_ramp(void)
 {
        struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
@@ -312,20 +250,6 @@ static int set_ldo_voltage(enum ldo_reg ldo, u32 mv)
        return 0;
 }
 
-static void imx_set_wdog_powerdown(bool enable)
-{
-       struct wdog_regs *wdog1 = (struct wdog_regs *)WDOG1_BASE_ADDR;
-       struct wdog_regs *wdog2 = (struct wdog_regs *)WDOG2_BASE_ADDR;
-       struct wdog_regs *wdog3 = (struct wdog_regs *)WDOG3_BASE_ADDR;
-
-       if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL))
-               writew(enable, &wdog3->wmcr);
-
-       /* Write to the PDE (Power Down Enable) bit */
-       writew(enable, &wdog1->wmcr);
-       writew(enable, &wdog2->wmcr);
-}
-
 static void set_ahb_rate(u32 val)
 {
        struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
@@ -378,22 +302,6 @@ static void set_preclk_from_osc(void)
 }
 #endif
 
-#define SRC_SCR_WARM_RESET_ENABLE      0
-
-static void init_src(void)
-{
-       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
-       u32 val;
-
-       /*
-        * force warm reset sources to generate cold reset
-        * for a more reliable restart
-        */
-       val = readl(&src_regs->scr);
-       val &= ~(1 << SRC_SCR_WARM_RESET_ENABLE);
-       writel(val, &src_regs->scr);
-}
-
 int arch_cpu_init(void)
 {
        init_aips();
@@ -440,31 +348,6 @@ int board_postclk_init(void)
        return 0;
 }
 
-#ifndef CONFIG_SYS_DCACHE_OFF
-void enable_caches(void)
-{
-#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH)
-       enum dcache_option option = DCACHE_WRITETHROUGH;
-#else
-       enum dcache_option option = DCACHE_WRITEBACK;
-#endif
-
-       /* Avoid random hang when download by usb */
-       invalidate_dcache_all();
-
-       /* Enable D-cache. I-cache is already enabled in start.S */
-       dcache_enable();
-
-       /* Enable caching on OCRAM and ROM */
-       mmu_set_region_dcache_behaviour(ROMCP_ARB_BASE_ADDR,
-                                       ROMCP_ARB_END_ADDR,
-                                       option);
-       mmu_set_region_dcache_behaviour(IRAM_BASE_ADDR,
-                                       IRAM_SIZE,
-                                       option);
-}
-#endif
-
 #if defined(CONFIG_FEC_MXC)
 void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
 {
@@ -486,18 +369,6 @@ void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
 }
 #endif
 
-void boot_mode_apply(unsigned cfg_val)
-{
-       unsigned reg;
-       struct src *psrc = (struct src *)SRC_BASE_ADDR;
-       writel(cfg_val, &psrc->gpr9);
-       reg = readl(&psrc->gpr10);
-       if (cfg_val)
-               reg |= 1 << 28;
-       else
-               reg &= ~(1 << 28);
-       writel(reg, &psrc->gpr10);
-}
 /*
  * cfg_val will be used for
  * Boot_cfg4[7:0]:Boot_cfg3[7:0]:Boot_cfg2[7:0]:Boot_cfg1[7:0]
@@ -605,70 +476,3 @@ void imx_setup_hdmi(void)
        writel(reg, &mxc_ccm->chsccdr);
 }
 #endif
-
-#ifndef CONFIG_SYS_L2CACHE_OFF
-#define IOMUXC_GPR11_L2CACHE_AS_OCRAM 0x00000002
-void v7_outer_cache_enable(void)
-{
-       struct pl310_regs *const pl310 = (struct pl310_regs *)L2_PL310_BASE;
-       unsigned int val;
-
-
-       /*
-        * Set bit 22 in the auxiliary control register. If this bit
-        * is cleared, PL310 treats Normal Shared Non-cacheable
-        * accesses as Cacheable no-allocate.
-        */
-       setbits_le32(&pl310->pl310_aux_ctrl, L310_SHARED_ATT_OVERRIDE_ENABLE);
-
-#if defined CONFIG_MX6SL
-       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       val = readl(&iomux->gpr[11]);
-       if (val & IOMUXC_GPR11_L2CACHE_AS_OCRAM) {
-               /* L2 cache configured as OCRAM, reset it */
-               val &= ~IOMUXC_GPR11_L2CACHE_AS_OCRAM;
-               writel(val, &iomux->gpr[11]);
-       }
-#endif
-
-       /* Must disable the L2 before changing the latency parameters */
-       clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
-
-       writel(0x132, &pl310->pl310_tag_latency_ctrl);
-       writel(0x132, &pl310->pl310_data_latency_ctrl);
-
-       val = readl(&pl310->pl310_prefetch_ctrl);
-
-       /* Turn on the L2 I/D prefetch */
-       val |= 0x30000000;
-
-       /*
-        * The L2 cache controller(PL310) version on the i.MX6D/Q is r3p1-50rel0
-        * The L2 cache controller(PL310) version on the i.MX6DL/SOLO/SL is r3p2
-        * But according to ARM PL310 errata: 752271
-        * ID: 752271: Double linefill feature can cause data corruption
-        * Fault Status: Present in: r3p0, r3p1, r3p1-50rel0. Fixed in r3p2
-        * Workaround: The only workaround to this erratum is to disable the
-        * double linefill feature. This is the default behavior.
-        */
-
-#ifndef CONFIG_MX6Q
-       val |= 0x40800000;
-#endif
-       writel(val, &pl310->pl310_prefetch_ctrl);
-
-       val = readl(&pl310->pl310_power_ctrl);
-       val |= L2X0_DYNAMIC_CLK_GATING_EN;
-       val |= L2X0_STNDBY_MODE_EN;
-       writel(val, &pl310->pl310_power_ctrl);
-
-       setbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
-}
-
-void v7_outer_cache_disable(void)
-{
-       struct pl310_regs *const pl310 = (struct pl310_regs *)L2_PL310_BASE;
-
-       clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
-}
-#endif /* !CONFIG_SYS_L2CACHE_OFF */
diff --git a/arch/arm/cpu/armv7/mx7/Kconfig b/arch/arm/cpu/armv7/mx7/Kconfig
new file mode 100644 (file)
index 0000000..892ffae
--- /dev/null
@@ -0,0 +1,27 @@
+if ARCH_MX7
+
+config MX7
+       bool
+       default y
+
+config MX7D
+       bool
+
+choice
+       prompt "MX7 board select"
+       optional
+
+config TARGET_MX7DSABRESD
+       bool "mx7dsabresd"
+       select CPU_V7
+       select DM
+       select DM_THERMAL
+
+endchoice
+
+config SYS_SOC
+       default "mx7"
+
+source "board/freescale/mx7dsabresd/Kconfig"
+
+endif
diff --git a/arch/arm/cpu/armv7/mx7/Makefile b/arch/arm/cpu/armv7/mx7/Makefile
new file mode 100644 (file)
index 0000000..e6ecef0
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# (C) Copyright 2015 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+#
+
+obj-y  := soc.o clock.o clock_slice.o
diff --git a/arch/arm/cpu/armv7/mx7/clock.c b/arch/arm/cpu/armv7/mx7/clock.c
new file mode 100644 (file)
index 0000000..77db6e8
--- /dev/null
@@ -0,0 +1,1127 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * Author:
+ *     Peng Fan <Peng.Fan@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <div64.h>
+#include <asm/io.h>
+#include <asm/errno.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+struct mxc_ccm_anatop_reg *ccm_anatop = (struct mxc_ccm_anatop_reg *)
+                                        ANATOP_BASE_ADDR;
+struct mxc_ccm_reg *ccm_reg = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+#ifdef CONFIG_FSL_ESDHC
+DECLARE_GLOBAL_DATA_PTR;
+#endif
+
+int get_clocks(void)
+{
+#ifdef CONFIG_FSL_ESDHC
+#if CONFIG_SYS_FSL_ESDHC_ADDR == USDHC2_BASE_ADDR
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+#elif CONFIG_SYS_FSL_ESDHC_ADDR == USDHC3_BASE_ADDR
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+#else
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+#endif
+#endif
+       return 0;
+}
+
+u32 get_ahb_clk(void)
+{
+       return get_root_clk(AHB_CLK_ROOT);
+}
+
+static u32 get_ipg_clk(void)
+{
+       /*
+        * The AHB and IPG are fixed at 2:1 ratio, and synchronized to
+        * each other.
+        */
+       return get_ahb_clk() / 2;
+}
+
+u32 imx_get_uartclk(void)
+{
+       return get_root_clk(UART1_CLK_ROOT);
+}
+
+u32 imx_get_fecclk(void)
+{
+       return get_root_clk(ENET_AXI_CLK_ROOT);
+}
+
+#ifdef CONFIG_MXC_OCOTP
+void enable_ocotp_clk(unsigned char enable)
+{
+       clock_enable(CCGR_OCOTP, enable);
+}
+
+void enable_thermal_clk(void)
+{
+       enable_ocotp_clk(1);
+}
+#endif
+
+void enable_usboh3_clk(unsigned char enable)
+{
+       u32 target;
+
+       if (enable) {
+               /* disable the clock gate first */
+               clock_enable(CCGR_USB_HSIC, 0);
+
+               /* 120Mhz */
+               target = CLK_ROOT_ON |
+                        USB_HSIC_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK |
+                        CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                        CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+               clock_set_target_val(USB_HSIC_CLK_ROOT, target);
+
+               /* enable the clock gate */
+               clock_enable(CCGR_USB_CTRL, 1);
+               clock_enable(CCGR_USB_HSIC, 1);
+               clock_enable(CCGR_USB_PHY1, 1);
+               clock_enable(CCGR_USB_PHY2, 1);
+       } else {
+               clock_enable(CCGR_USB_CTRL, 0);
+               clock_enable(CCGR_USB_HSIC, 0);
+               clock_enable(CCGR_USB_PHY1, 0);
+               clock_enable(CCGR_USB_PHY2, 0);
+       }
+}
+
+static u32 decode_pll(enum pll_clocks pll, u32 infreq)
+{
+       u32 reg, div_sel;
+       u32 num, denom;
+
+       /*
+        * Alought there are four choices for the bypass src,
+        * we choose OSC_24M which is the default set in ROM.
+        */
+       switch (pll) {
+       case PLL_CORE:
+               reg = readl(&ccm_anatop->pll_arm);
+
+               if (reg & CCM_ANALOG_PLL_ARM_POWERDOWN_MASK)
+                       return 0;
+
+               if (reg & CCM_ANALOG_PLL_ARM_BYPASS_MASK)
+                       return MXC_HCLK;
+
+               div_sel = (reg & CCM_ANALOG_PLL_ARM_DIV_SELECT_MASK) >>
+                          CCM_ANALOG_PLL_ARM_DIV_SELECT_SHIFT;
+
+               return (infreq * div_sel) / 2;
+
+       case PLL_SYS:
+               reg = readl(&ccm_anatop->pll_480);
+
+               if (reg & CCM_ANALOG_PLL_480_POWERDOWN_MASK)
+                       return 0;
+
+               if (reg & CCM_ANALOG_PLL_480_BYPASS_MASK)
+                       return MXC_HCLK;
+
+               if (((reg & CCM_ANALOG_PLL_480_DIV_SELECT_MASK) >>
+                       CCM_ANALOG_PLL_480_DIV_SELECT_SHIFT) == 0)
+                       return 480000000u;
+               else
+                       return 528000000u;
+
+       case PLL_ENET:
+               reg = readl(&ccm_anatop->pll_enet);
+
+               if (reg & CCM_ANALOG_PLL_ENET_POWERDOWN_MASK)
+                       return 0;
+
+               if (reg & CCM_ANALOG_PLL_ENET_BYPASS_MASK)
+                       return MXC_HCLK;
+
+               return 1000000000u;
+
+       case PLL_DDR:
+               reg = readl(&ccm_anatop->pll_ddr);
+
+               if (reg & CCM_ANALOG_PLL_DDR_POWERDOWN_MASK)
+                       return 0;
+
+               num = ccm_anatop->pll_ddr_num;
+               denom = ccm_anatop->pll_ddr_denom;
+
+               if (reg & CCM_ANALOG_PLL_DDR_BYPASS_MASK)
+                       return MXC_HCLK;
+
+               div_sel = (reg & CCM_ANALOG_PLL_DDR_DIV_SELECT_MASK) >>
+                          CCM_ANALOG_PLL_DDR_DIV_SELECT_SHIFT;
+
+               return infreq * (div_sel + num / denom);
+
+       case PLL_USB:
+               return 480000000u;
+
+       default:
+               printf("Unsupported pll clocks %d\n", pll);
+               break;
+       }
+
+       return 0;
+}
+
+static u32 mxc_get_pll_sys_derive(int derive)
+{
+       u32 freq, div, frac;
+       u32 reg;
+
+       div = 1;
+       reg = readl(&ccm_anatop->pll_480);
+       freq = decode_pll(PLL_SYS, MXC_HCLK);
+
+       switch (derive) {
+       case PLL_SYS_MAIN_480M_CLK:
+               if (reg & CCM_ANALOG_PLL_480_MAIN_DIV1_CLKGATE_MASK)
+                       return 0;
+               else
+                       return freq;
+       case PLL_SYS_MAIN_240M_CLK:
+               if (reg & CCM_ANALOG_PLL_480_MAIN_DIV2_CLKGATE_MASK)
+                       return 0;
+               else
+                       return freq / 2;
+       case PLL_SYS_MAIN_120M_CLK:
+               if (reg & CCM_ANALOG_PLL_480_MAIN_DIV4_CLKGATE_MASK)
+                       return 0;
+               else
+                       return freq / 4;
+       case PLL_SYS_PFD0_392M_CLK:
+               reg = readl(&ccm_anatop->pfd_480a);
+               if (reg & CCM_ANALOG_PFD_480A_PFD0_DIV1_CLKGATE_MASK)
+                       return 0;
+               frac = (reg & CCM_ANALOG_PFD_480A_PFD0_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480A_PFD0_FRAC_SHIFT;
+               break;
+       case PLL_SYS_PFD0_196M_CLK:
+               if (reg & CCM_ANALOG_PLL_480_PFD0_DIV2_CLKGATE_MASK)
+                       return 0;
+               reg = readl(&ccm_anatop->pfd_480a);
+               frac = (reg & CCM_ANALOG_PFD_480A_PFD0_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480A_PFD0_FRAC_SHIFT;
+               div = 2;
+               break;
+       case PLL_SYS_PFD1_332M_CLK:
+               reg = readl(&ccm_anatop->pfd_480a);
+               if (reg & CCM_ANALOG_PFD_480A_PFD1_DIV1_CLKGATE_MASK)
+                       return 0;
+               frac = (reg & CCM_ANALOG_PFD_480A_PFD1_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480A_PFD1_FRAC_SHIFT;
+               break;
+       case PLL_SYS_PFD1_166M_CLK:
+               if (reg & CCM_ANALOG_PLL_480_PFD1_DIV2_CLKGATE_MASK)
+                       return 0;
+               reg = readl(&ccm_anatop->pfd_480a);
+               frac = (reg & CCM_ANALOG_PFD_480A_PFD1_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480A_PFD1_FRAC_SHIFT;
+               div = 2;
+               break;
+       case PLL_SYS_PFD2_270M_CLK:
+               reg = readl(&ccm_anatop->pfd_480a);
+               if (reg & CCM_ANALOG_PFD_480A_PFD2_DIV1_CLKGATE_MASK)
+                       return 0;
+               frac = (reg & CCM_ANALOG_PFD_480A_PFD2_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480A_PFD2_FRAC_SHIFT;
+               break;
+       case PLL_SYS_PFD2_135M_CLK:
+               if (reg & CCM_ANALOG_PLL_480_PFD2_DIV2_CLKGATE_MASK)
+                       return 0;
+               reg = readl(&ccm_anatop->pfd_480a);
+               frac = (reg & CCM_ANALOG_PFD_480A_PFD2_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480A_PFD2_FRAC_SHIFT;
+               div = 2;
+               break;
+       case PLL_SYS_PFD3_CLK:
+               reg = readl(&ccm_anatop->pfd_480a);
+               if (reg & CCM_ANALOG_PFD_480A_PFD3_DIV1_CLKGATE_MASK)
+                       return 0;
+               frac = (reg & CCM_ANALOG_PFD_480A_PFD3_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480A_PFD3_FRAC_SHIFT;
+               break;
+       case PLL_SYS_PFD4_CLK:
+               reg = readl(&ccm_anatop->pfd_480b);
+               if (reg & CCM_ANALOG_PFD_480B_PFD4_DIV1_CLKGATE_MASK)
+                       return 0;
+               frac = (reg & CCM_ANALOG_PFD_480B_PFD4_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480B_PFD4_FRAC_SHIFT;
+               break;
+       case PLL_SYS_PFD5_CLK:
+               reg = readl(&ccm_anatop->pfd_480b);
+               if (reg & CCM_ANALOG_PFD_480B_PFD5_DIV1_CLKGATE_MASK)
+                       return 0;
+               frac = (reg & CCM_ANALOG_PFD_480B_PFD5_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480B_PFD5_FRAC_SHIFT;
+               break;
+       case PLL_SYS_PFD6_CLK:
+               reg = readl(&ccm_anatop->pfd_480b);
+               if (reg & CCM_ANALOG_PFD_480B_PFD6_DIV1_CLKGATE_MASK)
+                       return 0;
+               frac = (reg & CCM_ANALOG_PFD_480B_PFD6_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480B_PFD6_FRAC_SHIFT;
+               break;
+       case PLL_SYS_PFD7_CLK:
+               reg = readl(&ccm_anatop->pfd_480b);
+               if (reg & CCM_ANALOG_PFD_480B_PFD7_DIV1_CLKGATE_MASK)
+                       return 0;
+               frac = (reg & CCM_ANALOG_PFD_480B_PFD7_FRAC_MASK) >>
+                       CCM_ANALOG_PFD_480B_PFD7_FRAC_SHIFT;
+               break;
+       default:
+               printf("Error derived pll_sys clock %d\n", derive);
+               return 0;
+       }
+
+       return ((freq / frac) * 18) / div;
+}
+
+static u32 mxc_get_pll_enet_derive(int derive)
+{
+       u32 freq, reg;
+
+       freq = decode_pll(PLL_ENET, MXC_HCLK);
+       reg = readl(&ccm_anatop->pll_enet);
+
+       switch (derive) {
+       case PLL_ENET_MAIN_500M_CLK:
+               if (reg & CCM_ANALOG_PLL_ENET_ENABLE_CLK_500MHZ_MASK)
+                       return freq / 2;
+               break;
+       case PLL_ENET_MAIN_250M_CLK:
+               if (reg & CCM_ANALOG_PLL_ENET_ENABLE_CLK_250MHZ_MASK)
+                       return freq / 4;
+               break;
+       case PLL_ENET_MAIN_125M_CLK:
+               if (reg & CCM_ANALOG_PLL_ENET_ENABLE_CLK_125MHZ_MASK)
+                       return freq / 8;
+               break;
+       case PLL_ENET_MAIN_100M_CLK:
+               if (reg & CCM_ANALOG_PLL_ENET_ENABLE_CLK_100MHZ_MASK)
+                       return freq / 10;
+               break;
+       case PLL_ENET_MAIN_50M_CLK:
+               if (reg & CCM_ANALOG_PLL_ENET_ENABLE_CLK_50MHZ_MASK)
+                       return freq / 20;
+               break;
+       case PLL_ENET_MAIN_40M_CLK:
+               if (reg & CCM_ANALOG_PLL_ENET_ENABLE_CLK_40MHZ_MASK)
+                       return freq / 25;
+               break;
+       case PLL_ENET_MAIN_25M_CLK:
+               if (reg & CCM_ANALOG_PLL_ENET_ENABLE_CLK_25MHZ_MASK)
+                       return freq / 40;
+               break;
+       default:
+               printf("Error derived pll_enet clock %d\n", derive);
+               break;
+       }
+
+       return 0;
+}
+
+static u32 mxc_get_pll_ddr_derive(int derive)
+{
+       u32 freq, reg;
+
+       freq = decode_pll(PLL_DDR, MXC_HCLK);
+       reg = readl(&ccm_anatop->pll_ddr);
+
+       switch (derive) {
+       case PLL_DRAM_MAIN_1066M_CLK:
+               return freq;
+       case PLL_DRAM_MAIN_533M_CLK:
+               if (reg & CCM_ANALOG_PLL_DDR_DIV2_ENABLE_CLK_MASK)
+                       return freq / 2;
+               break;
+       default:
+               printf("Error derived pll_ddr clock %d\n", derive);
+               break;
+       }
+
+       return 0;
+}
+
+static u32 mxc_get_pll_derive(enum pll_clocks pll, int derive)
+{
+       switch (pll) {
+       case PLL_SYS:
+               return mxc_get_pll_sys_derive(derive);
+       case PLL_ENET:
+               return mxc_get_pll_enet_derive(derive);
+       case PLL_DDR:
+               return mxc_get_pll_ddr_derive(derive);
+       default:
+               printf("Error pll.\n");
+               return 0;
+       }
+}
+
+static u32 get_root_src_clk(enum clk_root_src root_src)
+{
+       switch (root_src) {
+       case OSC_24M_CLK:
+               return 24000000u;
+       case PLL_ARM_MAIN_800M_CLK:
+               return decode_pll(PLL_CORE, MXC_HCLK);
+
+       case PLL_SYS_MAIN_480M_CLK:
+       case PLL_SYS_MAIN_240M_CLK:
+       case PLL_SYS_MAIN_120M_CLK:
+       case PLL_SYS_PFD0_392M_CLK:
+       case PLL_SYS_PFD0_196M_CLK:
+       case PLL_SYS_PFD1_332M_CLK:
+       case PLL_SYS_PFD1_166M_CLK:
+       case PLL_SYS_PFD2_270M_CLK:
+       case PLL_SYS_PFD2_135M_CLK:
+       case PLL_SYS_PFD3_CLK:
+       case PLL_SYS_PFD4_CLK:
+       case PLL_SYS_PFD5_CLK:
+       case PLL_SYS_PFD6_CLK:
+       case PLL_SYS_PFD7_CLK:
+               return mxc_get_pll_derive(PLL_SYS, root_src);
+
+       case PLL_ENET_MAIN_500M_CLK:
+       case PLL_ENET_MAIN_250M_CLK:
+       case PLL_ENET_MAIN_125M_CLK:
+       case PLL_ENET_MAIN_100M_CLK:
+       case PLL_ENET_MAIN_50M_CLK:
+       case PLL_ENET_MAIN_40M_CLK:
+       case PLL_ENET_MAIN_25M_CLK:
+               return mxc_get_pll_derive(PLL_ENET, root_src);
+
+       case PLL_DRAM_MAIN_1066M_CLK:
+       case PLL_DRAM_MAIN_533M_CLK:
+               return mxc_get_pll_derive(PLL_DDR, root_src);
+
+       case PLL_AUDIO_MAIN_CLK:
+               return decode_pll(PLL_AUDIO, MXC_HCLK);
+       case PLL_VIDEO_MAIN_CLK:
+               return decode_pll(PLL_VIDEO, MXC_HCLK);
+
+       case PLL_USB_MAIN_480M_CLK:
+               return decode_pll(PLL_USB, MXC_HCLK);
+
+       case REF_1M_CLK:
+               return 1000000;
+       case OSC_32K_CLK:
+               return MXC_CLK32;
+
+       case EXT_CLK_1:
+       case EXT_CLK_2:
+       case EXT_CLK_3:
+       case EXT_CLK_4:
+               printf("No EXT CLK supported??\n");
+               break;
+       };
+
+       return 0;
+}
+
+u32 get_root_clk(enum clk_root_index clock_id)
+{
+       enum clk_root_src root_src;
+       u32 post_podf, pre_podf, auto_podf, root_src_clk;
+       int auto_en;
+
+       if (clock_root_enabled(clock_id) <= 0)
+               return 0;
+
+       if (clock_get_prediv(clock_id, &pre_podf) < 0)
+               return 0;
+
+       if (clock_get_postdiv(clock_id, &post_podf) < 0)
+               return 0;
+
+       if (clock_get_autopostdiv(clock_id, &auto_podf, &auto_en) < 0)
+               return 0;
+
+       if (auto_en == 0)
+               auto_podf = 0;
+
+       if (clock_get_src(clock_id, &root_src) < 0)
+               return 0;
+
+       root_src_clk = get_root_src_clk(root_src);
+
+       /*
+        * bypass clk is ignored.
+        */
+
+       return root_src_clk / (post_podf + 1) / (pre_podf + 1) /
+               (auto_podf + 1);
+}
+
+static u32 get_ddrc_clk(void)
+{
+       u32 reg, freq;
+       enum root_post_div post_div;
+
+       reg = readl(&ccm_reg->root[DRAM_CLK_ROOT].target_root);
+       if (reg & CLK_ROOT_MUX_MASK)
+               /* DRAM_ALT_CLK_ROOT */
+               freq = get_root_clk(DRAM_ALT_CLK_ROOT);
+       else
+               /* PLL_DRAM_MAIN_1066M_CLK */
+               freq = mxc_get_pll_derive(PLL_DDR, PLL_DRAM_MAIN_1066M_CLK);
+
+       post_div = reg & DRAM_CLK_ROOT_POST_DIV_MASK;
+
+       return freq / (post_div + 1) / 2;
+}
+
+unsigned int mxc_get_clock(enum mxc_clock clk)
+{
+       switch (clk) {
+       case MXC_ARM_CLK:
+               return get_root_clk(ARM_A7_CLK_ROOT);
+       case MXC_AXI_CLK:
+               return get_root_clk(MAIN_AXI_CLK_ROOT);
+       case MXC_AHB_CLK:
+               return get_root_clk(AHB_CLK_ROOT);
+       case MXC_IPG_CLK:
+               return get_ipg_clk();
+       case MXC_I2C_CLK:
+               return get_root_clk(I2C1_CLK_ROOT);
+       case MXC_UART_CLK:
+               return get_root_clk(UART1_CLK_ROOT);
+       case MXC_CSPI_CLK:
+               return get_root_clk(ECSPI1_CLK_ROOT);
+       case MXC_DDR_CLK:
+               return get_ddrc_clk();
+       case MXC_ESDHC_CLK:
+               return get_root_clk(USDHC1_CLK_ROOT);
+       case MXC_ESDHC2_CLK:
+               return get_root_clk(USDHC2_CLK_ROOT);
+       case MXC_ESDHC3_CLK:
+               return get_root_clk(USDHC3_CLK_ROOT);
+       default:
+               printf("Unsupported mxc_clock %d\n", clk);
+               break;
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_SYS_I2C_MXC
+/* i2c_num can be 0 - 3 */
+int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
+{
+       u32 target;
+
+       if (i2c_num >= 4)
+               return -EINVAL;
+
+       if (enable) {
+               clock_enable(CCGR_I2C1 + i2c_num, 0);
+
+               /* Set i2c root clock to PLL_SYS_MAIN_120M_CLK */
+
+               target = CLK_ROOT_ON |
+                        I2C1_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK |
+                        CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                        CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2);
+               clock_set_target_val(I2C1_CLK_ROOT + i2c_num, target);
+
+               clock_enable(CCGR_I2C1 + i2c_num, 1);
+       } else {
+               clock_enable(CCGR_I2C1 + i2c_num, 0);
+       }
+
+       return 0;
+}
+#endif
+
+static void init_clk_esdhc(void)
+{
+       u32 target;
+
+       /* disable the clock gate first */
+       clock_enable(CCGR_USDHC1, 0);
+       clock_enable(CCGR_USDHC2, 0);
+       clock_enable(CCGR_USDHC3, 0);
+
+       /* 196: 392/2 */
+       target = CLK_ROOT_ON | USDHC1_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2);
+       clock_set_target_val(USDHC1_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | USDHC1_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2);
+       clock_set_target_val(USDHC2_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | USDHC1_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2);
+       clock_set_target_val(USDHC3_CLK_ROOT, target);
+
+       /* enable the clock gate */
+       clock_enable(CCGR_USDHC1, 1);
+       clock_enable(CCGR_USDHC2, 1);
+       clock_enable(CCGR_USDHC3, 1);
+}
+
+static void init_clk_uart(void)
+{
+       u32 target;
+
+       /* disable the clock gate first */
+       clock_enable(CCGR_UART1, 0);
+       clock_enable(CCGR_UART2, 0);
+       clock_enable(CCGR_UART3, 0);
+       clock_enable(CCGR_UART4, 0);
+       clock_enable(CCGR_UART5, 0);
+       clock_enable(CCGR_UART6, 0);
+       clock_enable(CCGR_UART7, 0);
+
+       /* 24Mhz */
+       target = CLK_ROOT_ON | UART1_CLK_ROOT_FROM_OSC_24M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(UART1_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | UART2_CLK_ROOT_FROM_OSC_24M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(UART2_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | UART3_CLK_ROOT_FROM_OSC_24M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(UART3_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | UART4_CLK_ROOT_FROM_OSC_24M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(UART4_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | UART5_CLK_ROOT_FROM_OSC_24M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(UART5_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | UART6_CLK_ROOT_FROM_OSC_24M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(UART6_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | UART7_CLK_ROOT_FROM_OSC_24M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(UART7_CLK_ROOT, target);
+
+       /* enable the clock gate */
+       clock_enable(CCGR_UART1, 1);
+       clock_enable(CCGR_UART2, 1);
+       clock_enable(CCGR_UART3, 1);
+       clock_enable(CCGR_UART4, 1);
+       clock_enable(CCGR_UART5, 1);
+       clock_enable(CCGR_UART6, 1);
+       clock_enable(CCGR_UART7, 1);
+}
+
+static void init_clk_weim(void)
+{
+       u32 target;
+
+       /* disable the clock gate first */
+       clock_enable(CCGR_WEIM, 0);
+
+       /* 120Mhz */
+       target = CLK_ROOT_ON | EIM_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(EIM_CLK_ROOT, target);
+
+       /* enable the clock gate */
+       clock_enable(CCGR_WEIM, 1);
+}
+
+static void init_clk_ecspi(void)
+{
+       u32 target;
+
+       /* disable the clock gate first */
+       clock_enable(CCGR_ECSPI1, 0);
+       clock_enable(CCGR_ECSPI2, 0);
+       clock_enable(CCGR_ECSPI3, 0);
+       clock_enable(CCGR_ECSPI4, 0);
+
+       /* 60Mhz: 240/4 */
+       target = CLK_ROOT_ON | ECSPI1_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV4);
+       clock_set_target_val(ECSPI1_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | ECSPI2_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV4);
+       clock_set_target_val(ECSPI2_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | ECSPI3_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV4);
+       clock_set_target_val(ECSPI3_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | ECSPI4_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV4);
+       clock_set_target_val(ECSPI4_CLK_ROOT, target);
+
+       /* enable the clock gate */
+       clock_enable(CCGR_ECSPI1, 1);
+       clock_enable(CCGR_ECSPI2, 1);
+       clock_enable(CCGR_ECSPI3, 1);
+       clock_enable(CCGR_ECSPI4, 1);
+}
+
+static void init_clk_wdog(void)
+{
+       u32 target;
+
+       /* disable the clock gate first */
+       clock_enable(CCGR_WDOG1, 0);
+       clock_enable(CCGR_WDOG2, 0);
+       clock_enable(CCGR_WDOG3, 0);
+       clock_enable(CCGR_WDOG4, 0);
+
+       /* 24Mhz */
+       target = CLK_ROOT_ON | WDOG_CLK_ROOT_FROM_OSC_24M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(WDOG_CLK_ROOT, target);
+
+       /* enable the clock gate */
+       clock_enable(CCGR_WDOG1, 1);
+       clock_enable(CCGR_WDOG2, 1);
+       clock_enable(CCGR_WDOG3, 1);
+       clock_enable(CCGR_WDOG4, 1);
+}
+
+#ifdef CONFIG_MXC_EPDC
+static void init_clk_epdc(void)
+{
+       u32 target;
+
+       /* disable the clock gate first */
+       clock_enable(CCGR_EPDC, 0);
+
+       /* 24Mhz */
+       target = CLK_ROOT_ON | EPDC_PIXEL_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV12);
+       clock_set_target_val(EPDC_PIXEL_CLK_ROOT, target);
+
+       /* enable the clock gate */
+       clock_enable(CCGR_EPDC, 1);
+}
+#endif
+
+static int enable_pll_enet(void)
+{
+       u32 reg;
+       s32 timeout = 100000;
+
+       reg = readl(&ccm_anatop->pll_enet);
+       /* If pll_enet powered up, no need to set it again */
+       if (reg & ANADIG_PLL_ENET_PWDN_MASK) {
+               reg &= ~ANADIG_PLL_ENET_PWDN_MASK;
+               writel(reg, &ccm_anatop->pll_enet);
+
+               while (timeout--) {
+                       if (readl(&ccm_anatop->pll_enet) & ANADIG_PLL_LOCK)
+                               break;
+               }
+
+               if (timeout <= 0) {
+                       /* If timeout, we set pwdn for pll_enet. */
+                       reg |= ANADIG_PLL_ENET_PWDN_MASK;
+                       return -ETIME;
+               }
+       }
+
+       /* Clear bypass */
+       writel(CCM_ANALOG_PLL_ENET_BYPASS_MASK, &ccm_anatop->pll_enet_clr);
+
+       writel((CCM_ANALOG_PLL_ENET_ENABLE_CLK_500MHZ_MASK
+               | CCM_ANALOG_PLL_ENET_ENABLE_CLK_250MHZ_MASK
+               | CCM_ANALOG_PLL_ENET_ENABLE_CLK_125MHZ_MASK
+               | CCM_ANALOG_PLL_ENET_ENABLE_CLK_100MHZ_MASK
+               | CCM_ANALOG_PLL_ENET_ENABLE_CLK_50MHZ_MASK
+               | CCM_ANALOG_PLL_ENET_ENABLE_CLK_40MHZ_MASK
+               | CCM_ANALOG_PLL_ENET_ENABLE_CLK_25MHZ_MASK),
+              &ccm_anatop->pll_enet_set);
+
+       return 0;
+}
+static int enable_pll_video(u32 pll_div, u32 pll_num, u32 pll_denom,
+       u32 post_div)
+{
+       u32 reg = 0;
+       ulong start;
+
+       debug("pll5 div = %d, num = %d, denom = %d\n",
+               pll_div, pll_num, pll_denom);
+
+       /* Power up PLL5 video and disable its output */
+       writel(CCM_ANALOG_PLL_VIDEO_CLR_ENABLE_CLK_MASK |
+               CCM_ANALOG_PLL_VIDEO_CLR_POWERDOWN_MASK |
+               CCM_ANALOG_PLL_VIDEO_CLR_BYPASS_MASK |
+               CCM_ANALOG_PLL_VIDEO_CLR_DIV_SELECT_MASK |
+               CCM_ANALOG_PLL_VIDEO_CLR_POST_DIV_SEL_MASK |
+               CCM_ANALOG_PLL_VIDEO_CLR_TEST_DIV_SELECT_MASK,
+               &ccm_anatop->pll_video_clr);
+
+       /* Set div, num and denom */
+       switch (post_div) {
+       case 1:
+               writel(CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT(pll_div) |
+                       CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT(0x1) |
+                       CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL(0x0),
+                       &ccm_anatop->pll_video_set);
+               break;
+       case 2:
+               writel(CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT(pll_div) |
+                       CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT(0x0) |
+                       CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL(0x0),
+                       &ccm_anatop->pll_video_set);
+               break;
+       case 3:
+               writel(CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT(pll_div) |
+                       CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT(0x0) |
+                       CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL(0x1),
+                       &ccm_anatop->pll_video_set);
+               break;
+       case 4:
+               writel(CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT(pll_div) |
+                       CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT(0x0) |
+                       CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL(0x3),
+                       &ccm_anatop->pll_video_set);
+               break;
+       case 0:
+       default:
+               writel(CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT(pll_div) |
+                       CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT(0x2) |
+                       CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL(0x0),
+                       &ccm_anatop->pll_video_set);
+               break;
+       }
+
+       writel(CCM_ANALOG_PLL_VIDEO_NUM_A(pll_num),
+               &ccm_anatop->pll_video_num);
+
+       writel(CCM_ANALOG_PLL_VIDEO_DENOM_B(pll_denom),
+               &ccm_anatop->pll_video_denom);
+
+       /* Wait PLL5 lock */
+       start = get_timer(0);   /* Get current timestamp */
+
+       do {
+               reg = readl(&ccm_anatop->pll_video);
+               if (reg & CCM_ANALOG_PLL_VIDEO_LOCK_MASK) {
+                       /* Enable PLL out */
+                       writel(CCM_ANALOG_PLL_VIDEO_CLR_ENABLE_CLK_MASK,
+                                       &ccm_anatop->pll_video_set);
+                       return 0;
+               }
+       } while (get_timer(0) < (start + 10)); /* Wait 10ms */
+
+       printf("Lock PLL5 timeout\n");
+
+       return 1;
+}
+
+int set_clk_qspi(void)
+{
+       u32 target;
+
+       /* disable the clock gate first */
+       clock_enable(CCGR_QSPI, 0);
+
+       /* 49M: 392/2/4 */
+       target = CLK_ROOT_ON | QSPI_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2);
+       clock_set_target_val(QSPI_CLK_ROOT, target);
+
+       /* enable the clock gate */
+       clock_enable(CCGR_QSPI, 1);
+
+       return 0;
+}
+
+int set_clk_nand(void)
+{
+       u32 target;
+
+       /* disable the clock gate first */
+       clock_enable(CCGR_RAWNAND, 0);
+
+       enable_pll_enet();
+       /* 100: 500/5 */
+       target = CLK_ROOT_ON | NAND_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV5);
+       clock_set_target_val(NAND_CLK_ROOT, target);
+
+       /* enable the clock gate */
+       clock_enable(CCGR_RAWNAND, 1);
+
+       return 0;
+}
+
+void mxs_set_lcdclk(uint32_t base_addr, uint32_t freq)
+{
+       u32 hck = MXC_HCLK/1000;
+       u32 min = hck * 27;
+       u32 max = hck * 54;
+       u32 temp, best = 0;
+       u32 i, j, pred = 1, postd = 1;
+       u32 pll_div, pll_num, pll_denom, post_div = 0;
+       u32 target;
+
+       debug("mxs_set_lcdclk, freq = %d\n", freq);
+
+       clock_enable(CCGR_LCDIF, 0);
+
+       temp = (freq * 8 * 8);
+       if (temp < min) {
+               for (i = 1; i <= 4; i++) {
+                       if ((temp * (1 << i)) > min) {
+                               post_div = i;
+                               freq = (freq * (1 << i));
+                               break;
+                       }
+               }
+
+               if (5 == i) {
+                       printf("Fail to set rate to %dkhz", freq);
+                       return;
+               }
+       }
+
+       for (i = 1; i <= 8; i++) {
+               for (j = 1; j <= 8; j++) {
+                       temp = freq * i * j;
+                       if (temp > max || temp < min)
+                               continue;
+
+                       if (best == 0 || temp < best) {
+                               best = temp;
+                               pred = i;
+                               postd = j;
+                       }
+               }
+       }
+
+       if (best == 0) {
+               printf("Fail to set rate to %dkhz", freq);
+               return;
+       }
+
+       debug("best %d, pred = %d, postd = %d\n", best, pred, postd);
+
+       pll_div = best / hck;
+       pll_denom = 1000000;
+       pll_num = (best - hck * pll_div) * pll_denom / hck;
+
+       if (enable_pll_video(pll_div, pll_num, pll_denom, post_div))
+               return;
+
+       target = CLK_ROOT_ON | LCDIF_PIXEL_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK |
+                CLK_ROOT_PRE_DIV((pred - 1)) | CLK_ROOT_POST_DIV((postd - 1));
+       clock_set_target_val(LCDIF_PIXEL_CLK_ROOT, target);
+
+       clock_enable(CCGR_LCDIF, 1);
+}
+
+#ifdef CONFIG_FEC_MXC
+int set_clk_enet(enum enet_freq type)
+{
+       u32 target;
+       int ret;
+       u32 enet1_ref, enet2_ref;
+
+       /* disable the clock first */
+       clock_enable(CCGR_ENET1, 0);
+       clock_enable(CCGR_ENET2, 0);
+
+       switch (type) {
+       case ENET_125MHz:
+               enet1_ref = ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK;
+               enet2_ref = ENET2_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK;
+               break;
+       case ENET_50MHz:
+               enet1_ref = ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK;
+               enet2_ref = ENET2_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK;
+               break;
+       case ENET_25MHz:
+               enet1_ref = ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK;
+               enet2_ref = ENET2_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       ret = enable_pll_enet();
+       if (ret != 0)
+               return ret;
+
+       /* set enet axi clock 196M: 392/2 */
+       target = CLK_ROOT_ON | ENET_AXI_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV2);
+       clock_set_target_val(ENET_AXI_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | enet1_ref |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(ENET1_REF_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | ENET1_TIME_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV4);
+       clock_set_target_val(ENET1_TIME_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | enet2_ref |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(ENET2_REF_CLK_ROOT, target);
+
+       target = CLK_ROOT_ON | ENET2_TIME_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV4);
+       clock_set_target_val(ENET2_TIME_CLK_ROOT, target);
+
+#ifdef CONFIG_FEC_MXC_25M_REF_CLK
+       target = CLK_ROOT_ON |
+                ENET_PHY_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK |
+                CLK_ROOT_PRE_DIV(CLK_ROOT_PRE_DIV1) |
+                CLK_ROOT_POST_DIV(CLK_ROOT_POST_DIV1);
+       clock_set_target_val(ENET_PHY_REF_CLK_ROOT, target);
+#endif
+       /* enable clock */
+       clock_enable(CCGR_ENET1, 1);
+       clock_enable(CCGR_ENET2, 1);
+
+       return 0;
+}
+#endif
+
+/* Configure PLL/PFD freq */
+void clock_init(void)
+{
+/* Rom has enabled PLL_ARM, PLL_DDR, PLL_SYS, PLL_ENET
+ *   In u-boot, we have to:
+ *   1. Configure PFD3- PFD7 for freq we needed in u-boot
+ *   2. Set clock root for peripherals (ip channel) used in u-boot but without set rate
+ *       interface.  The clocks for these peripherals are enabled after this intialization.
+ *   3. Other peripherals with set clock rate interface does not be set in this function.
+ */
+       u32 reg;
+
+       /*
+        * Configure PFD4 to 392M
+        * 480M * 18 / 0x16 = 392M
+        */
+       reg = readl(&ccm_anatop->pfd_480b);
+
+       reg &= ~(ANATOP_PFD480B_PFD4_FRAC_MASK |
+                CCM_ANALOG_PFD_480B_PFD4_DIV1_CLKGATE_MASK);
+       reg |= ANATOP_PFD480B_PFD4_FRAC_392M_VAL;
+
+       writel(reg, &ccm_anatop->pfd_480b);
+
+       init_clk_esdhc();
+       init_clk_uart();
+       init_clk_weim();
+       init_clk_ecspi();
+       init_clk_wdog();
+#ifdef CONFIG_MXC_EPDC
+       init_clk_epdc();
+#endif
+
+       enable_usboh3_clk(1);
+
+       clock_enable(CCGR_SNVS, 1);
+
+#ifdef CONFIG_NAND_MXS
+       clock_enable(CCGR_RAWNAND, 1);
+#endif
+}
+
+#ifdef CONFIG_SECURE_BOOT
+void hab_caam_clock_enable(unsigned char enable)
+{
+       if (enable)
+               clock_enable(CCGR_CAAM, 1);
+       else
+               clock_enable(CCGR_CAAM, 0);
+}
+#endif
+
+#ifdef CONFIG_MXC_EPDC
+void epdc_clock_enable(void)
+{
+       clock_enable(CCGR_EPDC, 1);
+}
+void epdc_clock_disable(void)
+{
+       clock_enable(CCGR_EPDC, 0);
+}
+#endif
+
+/*
+ * Dump some core clockes.
+ */
+int do_mx7_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       u32 freq;
+       freq = decode_pll(PLL_CORE, MXC_HCLK);
+       printf("PLL_CORE    %8d MHz\n", freq / 1000000);
+       freq = decode_pll(PLL_SYS, MXC_HCLK);
+       printf("PLL_SYS    %8d MHz\n", freq / 1000000);
+       freq = decode_pll(PLL_ENET, MXC_HCLK);
+       printf("PLL_NET    %8d MHz\n", freq / 1000000);
+
+       printf("\n");
+
+       printf("IPG        %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000);
+       printf("UART       %8d kHz\n", mxc_get_clock(MXC_UART_CLK) / 1000);
+#ifdef CONFIG_MXC_SPI
+       printf("CSPI       %8d kHz\n", mxc_get_clock(MXC_CSPI_CLK) / 1000);
+#endif
+       printf("AHB        %8d kHz\n", mxc_get_clock(MXC_AHB_CLK) / 1000);
+       printf("AXI        %8d kHz\n", mxc_get_clock(MXC_AXI_CLK) / 1000);
+       printf("DDR        %8d kHz\n", mxc_get_clock(MXC_DDR_CLK) / 1000);
+       printf("USDHC1     %8d kHz\n", mxc_get_clock(MXC_ESDHC_CLK) / 1000);
+       printf("USDHC2     %8d kHz\n", mxc_get_clock(MXC_ESDHC2_CLK) / 1000);
+       printf("USDHC3     %8d kHz\n", mxc_get_clock(MXC_ESDHC3_CLK) / 1000);
+
+       return 0;
+}
+
+U_BOOT_CMD(
+       clocks, CONFIG_SYS_MAXARGS, 1, do_mx7_showclocks,
+       "display clocks",
+       ""
+);
diff --git a/arch/arm/cpu/armv7/mx7/clock_slice.c b/arch/arm/cpu/armv7/mx7/clock_slice.c
new file mode 100644 (file)
index 0000000..ad5d504
--- /dev/null
@@ -0,0 +1,757 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * Author:
+ *     Peng Fan <Peng.Fan@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <div64.h>
+#include <asm/io.h>
+#include <asm/errno.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+static struct clk_root_map root_array[] = {
+       {ARM_A7_CLK_ROOT, CCM_CORE_CHANNEL,
+        {OSC_24M_CLK, PLL_ARM_MAIN_800M_CLK, PLL_ENET_MAIN_500M_CLK,
+         PLL_DRAM_MAIN_1066M_CLK, PLL_SYS_MAIN_480M_CLK,
+         PLL_SYS_PFD0_392M_CLK, PLL_AUDIO_MAIN_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {ARM_M4_CLK_ROOT, CCM_BUS_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_250M_CLK,
+         PLL_SYS_PFD2_270M_CLK, PLL_DRAM_MAIN_533M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {ARM_M0_CLK_ROOT, CCM_BUS_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_ENET_MAIN_125M_CLK,
+         PLL_SYS_PFD2_135M_CLK, PLL_DRAM_MAIN_533M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {MAIN_AXI_CLK_ROOT, CCM_BUS_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD1_332M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_SYS_PFD5_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {DISP_AXI_CLK_ROOT, CCM_BUS_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD1_332M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_SYS_PFD6_CLK, PLL_SYS_PFD7_CLK,
+         PLL_AUDIO_MAIN_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {ENET_AXI_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_270M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_SYS_PFD4_CLK}
+       },
+       {NAND_USDHC_BUS_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_270M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_SYS_MAIN_240M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_SYS_PFD6_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_AUDIO_MAIN_CLK}
+       },
+       {AHB_CLK_ROOT, CCM_AHB_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_SYS_PFD0_392M_CLK, PLL_ENET_MAIN_125M_CLK, PLL_USB_MAIN_480M_CLK,
+         PLL_AUDIO_MAIN_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {DRAM_PHYM_CLK_ROOT, CCM_DRAM_PHYM_CHANNEL,
+        {PLL_DRAM_MAIN_1066M_CLK, DRAM_PHYM_ALT_CLK_ROOT}
+       },
+       {DRAM_CLK_ROOT, CCM_DRAM_CHANNEL,
+        {PLL_DRAM_MAIN_1066M_CLK, DRAM_ALT_CLK_ROOT}
+       },
+       {DRAM_PHYM_ALT_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_DRAM_MAIN_533M_CLK, PLL_SYS_MAIN_480M_CLK,
+         PLL_ENET_MAIN_500M_CLK, PLL_USB_MAIN_480M_CLK, PLL_SYS_PFD7_CLK,
+         PLL_AUDIO_MAIN_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {DRAM_ALT_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_DRAM_MAIN_533M_CLK, PLL_SYS_MAIN_480M_CLK,
+         PLL_ENET_MAIN_500M_CLK, PLL_ENET_MAIN_250M_CLK,
+         PLL_SYS_PFD0_392M_CLK, PLL_AUDIO_MAIN_CLK, PLL_SYS_PFD2_270M_CLK}
+       },
+       {USB_HSIC_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_480M_CLK, PLL_USB_MAIN_480M_CLK,
+         PLL_SYS_PFD3_CLK, PLL_SYS_PFD4_CLK, PLL_SYS_PFD5_CLK,
+         PLL_SYS_PFD6_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {PCIE_CTRL_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_250M_CLK, PLL_SYS_MAIN_240M_CLK,
+         PLL_SYS_PFD2_270M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_ENET_MAIN_500M_CLK, PLL_SYS_PFD1_332M_CLK, PLL_SYS_PFD6_CLK}
+       },
+       {PCIE_PHY_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_ENET_MAIN_500M_CLK,
+         EXT_CLK_1, EXT_CLK_2, EXT_CLK_3,
+         EXT_CLK_4, PLL_SYS_PFD0_392M_CLK}
+       },
+       {EPDC_PIXEL_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD1_332M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_SYS_MAIN_480M_CLK, PLL_SYS_PFD5_CLK, PLL_SYS_PFD6_CLK,
+         PLL_SYS_PFD7_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {LCDIF_PIXEL_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD5_CLK, PLL_DRAM_MAIN_533M_CLK,
+         EXT_CLK_3, PLL_SYS_PFD4_CLK, PLL_SYS_PFD2_270M_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {MIPI_DSI_EXTSER_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD5_CLK, PLL_SYS_PFD3_CLK,
+         PLL_SYS_MAIN_480M_CLK, PLL_SYS_PFD0_196M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_AUDIO_MAIN_CLK}
+       },
+       {MIPI_CSI_WARP_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD4_CLK, PLL_SYS_PFD3_CLK,
+         PLL_SYS_MAIN_480M_CLK, PLL_SYS_PFD0_196M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_AUDIO_MAIN_CLK}
+       },
+       {MIPI_DPHY_REF_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_SYS_PFD5_CLK, REF_1M_CLK, EXT_CLK_2,
+         PLL_VIDEO_MAIN_CLK, EXT_CLK_3}
+       },
+       {SAI1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_VIDEO_MAIN_CLK, PLL_SYS_PFD4_CLK,
+         PLL_ENET_MAIN_125M_CLK, EXT_CLK_2}
+       },
+       {SAI2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_VIDEO_MAIN_CLK, PLL_SYS_PFD4_CLK,
+         PLL_ENET_MAIN_125M_CLK, EXT_CLK_2}
+       },
+       {SAI3_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_VIDEO_MAIN_CLK, PLL_SYS_PFD4_CLK,
+         PLL_ENET_MAIN_125M_CLK, EXT_CLK_3}
+       },
+       {SPDIF_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_VIDEO_MAIN_CLK, PLL_SYS_PFD4_CLK,
+         PLL_ENET_MAIN_125M_CLK, EXT_CLK_3}
+       },
+       {ENET1_REF_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_125M_CLK, PLL_ENET_MAIN_50M_CLK,
+         PLL_ENET_MAIN_25M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, EXT_CLK_4}
+       },
+       {ENET1_TIME_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_AUDIO_MAIN_CLK,
+         EXT_CLK_1, EXT_CLK_2, EXT_CLK_3,
+         EXT_CLK_4, PLL_VIDEO_MAIN_CLK}
+       },
+       {ENET2_REF_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_125M_CLK, PLL_ENET_MAIN_50M_CLK,
+         PLL_ENET_MAIN_25M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, EXT_CLK_4}
+       },
+       {ENET2_TIME_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_AUDIO_MAIN_CLK,
+         EXT_CLK_1, EXT_CLK_2, EXT_CLK_3,
+         EXT_CLK_4, PLL_VIDEO_MAIN_CLK}
+       },
+       {ENET_PHY_REF_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_25M_CLK, PLL_ENET_MAIN_50M_CLK,
+         PLL_ENET_MAIN_125M_CLK, PLL_DRAM_MAIN_533M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_SYS_PFD3_CLK}
+       },
+       {EIM_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_SYS_PFD2_270M_CLK, PLL_SYS_PFD3_CLK,
+         PLL_ENET_MAIN_125M_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {NAND_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_480M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_SYS_PFD0_392M_CLK, PLL_SYS_PFD3_CLK, PLL_ENET_MAIN_500M_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {QSPI_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD4_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_ENET_MAIN_500M_CLK, PLL_SYS_PFD3_CLK, PLL_SYS_PFD2_270M_CLK,
+         PLL_SYS_PFD6_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {USDHC1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD0_392M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_ENET_MAIN_500M_CLK, PLL_SYS_PFD4_CLK, PLL_SYS_PFD2_270M_CLK,
+         PLL_SYS_PFD6_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {USDHC2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD0_392M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_ENET_MAIN_500M_CLK, PLL_SYS_PFD4_CLK, PLL_SYS_PFD2_270M_CLK,
+         PLL_SYS_PFD6_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {USDHC3_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD0_392M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_ENET_MAIN_500M_CLK, PLL_SYS_PFD4_CLK, PLL_SYS_PFD2_270M_CLK,
+         PLL_SYS_PFD6_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {CAN1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_SYS_MAIN_480M_CLK, PLL_ENET_MAIN_40M_CLK, PLL_USB_MAIN_480M_CLK,
+         EXT_CLK_1, EXT_CLK_4}
+       },
+       {CAN2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_SYS_MAIN_480M_CLK, PLL_ENET_MAIN_40M_CLK, PLL_USB_MAIN_480M_CLK,
+         EXT_CLK_1, EXT_CLK_3}
+       },
+       {I2C1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_ENET_MAIN_50M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_AUDIO_MAIN_CLK, PLL_VIDEO_MAIN_CLK,
+         PLL_USB_MAIN_480M_CLK, PLL_SYS_PFD2_135M_CLK}
+       },
+       {I2C2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_ENET_MAIN_50M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_AUDIO_MAIN_CLK, PLL_VIDEO_MAIN_CLK,
+         PLL_USB_MAIN_480M_CLK, PLL_SYS_PFD2_135M_CLK}
+       },
+       {I2C3_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_ENET_MAIN_50M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_AUDIO_MAIN_CLK, PLL_VIDEO_MAIN_CLK,
+         PLL_USB_MAIN_480M_CLK, PLL_SYS_PFD2_135M_CLK}
+       },
+       {I2C4_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_120M_CLK, PLL_ENET_MAIN_50M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_AUDIO_MAIN_CLK, PLL_VIDEO_MAIN_CLK,
+         PLL_USB_MAIN_480M_CLK, PLL_SYS_PFD2_135M_CLK}
+       },
+       {UART1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_480M_CLK, EXT_CLK_2,
+         EXT_CLK_4, PLL_USB_MAIN_480M_CLK}
+       },
+       {UART2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_480M_CLK, EXT_CLK_2,
+         EXT_CLK_3, PLL_USB_MAIN_480M_CLK}
+       },
+       {UART3_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_480M_CLK, EXT_CLK_2,
+         EXT_CLK_4, PLL_USB_MAIN_480M_CLK}
+       },
+       {UART4_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_480M_CLK, EXT_CLK_2,
+         EXT_CLK_3, PLL_USB_MAIN_480M_CLK}
+       },
+       {UART5_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_480M_CLK, EXT_CLK_2,
+         EXT_CLK_4, PLL_USB_MAIN_480M_CLK}
+       },
+       {UART6_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_480M_CLK, EXT_CLK_2,
+         EXT_CLK_3, PLL_USB_MAIN_480M_CLK}
+       },
+       {UART7_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_480M_CLK, EXT_CLK_2,
+         EXT_CLK_4, PLL_USB_MAIN_480M_CLK}
+       },
+       {ECSPI1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_SYS_MAIN_120M_CLK, PLL_SYS_MAIN_480M_CLK, PLL_SYS_PFD4_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {ECSPI2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_SYS_MAIN_120M_CLK, PLL_SYS_MAIN_480M_CLK, PLL_SYS_PFD4_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {ECSPI3_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_SYS_MAIN_120M_CLK, PLL_SYS_MAIN_480M_CLK, PLL_SYS_PFD4_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {ECSPI4_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_ENET_MAIN_40M_CLK,
+         PLL_SYS_MAIN_120M_CLK, PLL_SYS_MAIN_480M_CLK, PLL_SYS_PFD4_CLK,
+         PLL_ENET_MAIN_250M_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {PWM1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_AUDIO_MAIN_CLK, EXT_CLK_1,
+         REF_1M_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {PWM2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_AUDIO_MAIN_CLK, EXT_CLK_1,
+         REF_1M_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {PWM3_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_AUDIO_MAIN_CLK, EXT_CLK_2,
+         REF_1M_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {PWM4_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_AUDIO_MAIN_CLK, EXT_CLK_2,
+         REF_1M_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {FLEXTIMER1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_AUDIO_MAIN_CLK, EXT_CLK_3,
+         REF_1M_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {FLEXTIMER2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_AUDIO_MAIN_CLK, EXT_CLK_3,
+         REF_1M_CLK, PLL_VIDEO_MAIN_CLK}
+       },
+       {SIM1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_USB_MAIN_480M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_ENET_MAIN_125M_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {SIM2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_USB_MAIN_480M_CLK, PLL_VIDEO_MAIN_CLK,
+         PLL_ENET_MAIN_125M_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {GPT1_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_PFD0_392M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_VIDEO_MAIN_CLK, REF_1M_CLK,
+         PLL_AUDIO_MAIN_CLK, EXT_CLK_1}
+       },
+       {GPT2_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_PFD0_392M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_VIDEO_MAIN_CLK, REF_1M_CLK,
+         PLL_AUDIO_MAIN_CLK, EXT_CLK_2}
+       },
+       {GPT3_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_PFD0_392M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_VIDEO_MAIN_CLK, REF_1M_CLK,
+         PLL_AUDIO_MAIN_CLK, EXT_CLK_3}
+       },
+       {GPT4_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_100M_CLK, PLL_SYS_PFD0_392M_CLK,
+         PLL_ENET_MAIN_40M_CLK, PLL_VIDEO_MAIN_CLK, REF_1M_CLK,
+         PLL_AUDIO_MAIN_CLK, EXT_CLK_4}
+       },
+       {TRACE_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_ENET_MAIN_125M_CLK, PLL_USB_MAIN_480M_CLK,
+         EXT_CLK_1, EXT_CLK_3}
+       },
+       {WDOG_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_ENET_MAIN_125M_CLK, PLL_USB_MAIN_480M_CLK,
+         REF_1M_CLK, PLL_SYS_PFD1_166M_CLK}
+       },
+       {CSI_MCLK_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_ENET_MAIN_125M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {AUDIO_MCLK_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_PFD2_135M_CLK, PLL_SYS_MAIN_120M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, PLL_ENET_MAIN_125M_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, PLL_USB_MAIN_480M_CLK}
+       },
+       {WRCLK_CLK_ROOT, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_ENET_MAIN_40M_CLK, PLL_DRAM_MAIN_533M_CLK,
+         PLL_USB_MAIN_480M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_SYS_PFD2_270M_CLK,
+         PLL_ENET_MAIN_500M_CLK, PLL_SYS_PFD7_CLK}
+       },
+       {IPP_DO_CLKO1, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_480M_CLK, PLL_SYS_MAIN_240M_CLK,
+         PLL_SYS_PFD0_196M_CLK, PLL_SYS_PFD3_CLK, PLL_ENET_MAIN_500M_CLK,
+         PLL_DRAM_MAIN_533M_CLK, REF_1M_CLK}
+       },
+       {IPP_DO_CLKO2, CCM_IP_CHANNEL,
+        {OSC_24M_CLK, PLL_SYS_MAIN_240M_CLK, PLL_SYS_PFD0_392M_CLK,
+         PLL_SYS_PFD1_166M_CLK, PLL_SYS_PFD4_CLK, PLL_AUDIO_MAIN_CLK,
+         PLL_VIDEO_MAIN_CLK, OSC_32K_CLK}
+       },
+};
+
+/* select which entry of root_array */
+static int select(enum clk_root_index clock_id)
+{
+       int i, size;
+       struct clk_root_map *p = root_array;
+
+       size = ARRAY_SIZE(root_array);
+
+       for (i = 0; i < size; i++, p++) {
+               if (clock_id == p->entry)
+                       return i;
+       }
+
+       return -EINVAL;
+}
+
+static int src_supported(int entry, enum clk_root_src clock_src)
+{
+       int i, size;
+       struct clk_root_map *p = &root_array[entry];
+
+       if ((p->type == CCM_DRAM_PHYM_CHANNEL) || (p->type == CCM_DRAM_CHANNEL))
+               size = 2;
+       else
+               size = 8;
+
+       for (i = 0; i < size; i++) {
+               if (p->src_mux[i] == clock_src)
+                       return i;
+       }
+
+       return -EINVAL;
+}
+
+/* Set src for clock root slice. */
+int clock_set_src(enum clk_root_index clock_id, enum clk_root_src clock_src)
+{
+       int root_entry, src_entry;
+       u32 reg;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       root_entry = select(clock_id);
+       if (root_entry < 0)
+               return -EINVAL;
+
+       src_entry = src_supported(root_entry, clock_src);
+       if (src_entry < 0)
+               return -EINVAL;
+
+       reg = __raw_readl(&imx_ccm->root[clock_id].target_root);
+       reg &= ~CLK_ROOT_MUX_MASK;
+       reg |= src_entry << CLK_ROOT_MUX_SHIFT;
+       __raw_writel(reg, &imx_ccm->root[clock_id].target_root);
+
+       return 0;
+}
+
+/* Get src of a clock root slice. */
+int clock_get_src(enum clk_root_index clock_id, enum clk_root_src *p_clock_src)
+{
+       u32 val;
+       int root_entry;
+       struct clk_root_map *p;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       val = __raw_readl(&imx_ccm->root[clock_id].target_root);
+       val &= CLK_ROOT_MUX_MASK;
+       val >>= CLK_ROOT_MUX_SHIFT;
+
+       root_entry = select(clock_id);
+       if (root_entry < 0)
+               return -EINVAL;
+
+       p = &root_array[root_entry];
+       *p_clock_src = p->src_mux[val];
+
+       return 0;
+}
+
+int clock_set_prediv(enum clk_root_index clock_id, enum root_pre_div pre_div)
+{
+       int root_entry;
+       struct clk_root_map *p;
+       u32 reg;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       root_entry = select(clock_id);
+       if (root_entry < 0)
+               return -EINVAL;
+
+       p = &root_array[root_entry];
+
+       if ((p->type == CCM_CORE_CHANNEL) ||
+           (p->type == CCM_DRAM_PHYM_CHANNEL) ||
+           (p->type == CCM_DRAM_CHANNEL)) {
+               if (pre_div != CLK_ROOT_PRE_DIV1) {
+                       printf("Error pre div!\n");
+                       return -EINVAL;
+               }
+       }
+
+       reg = __raw_readl(&imx_ccm->root[clock_id].target_root);
+       reg &= ~CLK_ROOT_PRE_DIV_MASK;
+       reg |= pre_div << CLK_ROOT_PRE_DIV_SHIFT;
+       __raw_writel(reg, &imx_ccm->root[clock_id].target_root);
+
+       return 0;
+}
+
+int clock_get_prediv(enum clk_root_index clock_id, enum root_pre_div *pre_div)
+{
+       u32 val;
+       int root_entry;
+       struct clk_root_map *p;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       root_entry = select(clock_id);
+       if (root_entry < 0)
+               return -EINVAL;
+
+       p = &root_array[root_entry];
+
+       if ((p->type == CCM_CORE_CHANNEL) ||
+           (p->type == CCM_DRAM_PHYM_CHANNEL) ||
+           (p->type == CCM_DRAM_CHANNEL)) {
+               *pre_div = 0;
+               return 0;
+       }
+
+       val = __raw_readl(&imx_ccm->root[clock_id].target_root);
+       val &= CLK_ROOT_PRE_DIV_MASK;
+       val >>= CLK_ROOT_PRE_DIV_SHIFT;
+
+       *pre_div = val;
+
+       return 0;
+}
+
+int clock_set_postdiv(enum clk_root_index clock_id, enum root_post_div div)
+{
+       u32 reg;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       if (clock_id == DRAM_PHYM_CLK_ROOT) {
+               if (div != CLK_ROOT_POST_DIV1) {
+                       printf("Error post div!\n");
+                       return -EINVAL;
+               }
+       }
+
+       /* Only 3 bit post div. */
+       if ((clock_id == DRAM_CLK_ROOT) && (div > CLK_ROOT_POST_DIV7)) {
+               printf("Error post div!\n");
+               return -EINVAL;
+       }
+
+       reg = __raw_readl(&imx_ccm->root[clock_id].target_root);
+       reg &= ~CLK_ROOT_POST_DIV_MASK;
+       reg |= div << CLK_ROOT_POST_DIV_SHIFT;
+       __raw_writel(reg, &imx_ccm->root[clock_id].target_root);
+
+       return 0;
+}
+
+int clock_get_postdiv(enum clk_root_index clock_id, enum root_post_div *div)
+{
+       u32 val;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       if (clock_id == DRAM_PHYM_CLK_ROOT) {
+               *div = 0;
+               return 0;
+       }
+
+       val = __raw_readl(&imx_ccm->root[clock_id].target_root);
+       if (clock_id == DRAM_CLK_ROOT)
+               val &= DRAM_CLK_ROOT_POST_DIV_MASK;
+       else
+               val &= CLK_ROOT_POST_DIV_MASK;
+       val >>= CLK_ROOT_POST_DIV_SHIFT;
+
+       *div = val;
+
+       return 0;
+}
+
+int clock_set_autopostdiv(enum clk_root_index clock_id, enum root_auto_div div,
+                         int auto_en)
+{
+       u32 val;
+       int root_entry;
+       struct clk_root_map *p;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       root_entry = select(clock_id);
+       if (root_entry < 0)
+               return -EINVAL;
+
+       p = &root_array[root_entry];
+
+       if ((p->type != CCM_BUS_CHANNEL) && (p->type != CCM_AHB_CHANNEL)) {
+               printf("Auto postdiv not supported.!\n");
+               return -EINVAL;
+       }
+
+       /*
+        * Each time only one filed can be changed, no use target_root_set.
+        */
+       val = __raw_readl(&imx_ccm->root[clock_id].target_root);
+       val &= ~CLK_ROOT_AUTO_DIV_MASK;
+       val |= (div << CLK_ROOT_AUTO_DIV_SHIFT);
+
+       if (auto_en)
+               val |= CLK_ROOT_AUTO_EN;
+       else
+               val &= ~CLK_ROOT_AUTO_EN;
+
+       __raw_writel(val, &imx_ccm->root[clock_id].target_root);
+
+       return 0;
+}
+
+int clock_get_autopostdiv(enum clk_root_index clock_id, enum root_auto_div *div,
+                         int *auto_en)
+{
+       u32 val;
+       int root_entry;
+       struct clk_root_map *p;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       root_entry = select(clock_id);
+       if (root_entry < 0)
+               return -EINVAL;
+
+       p = &root_array[root_entry];
+
+       /*
+        * Only bus/ahb channel supports auto div.
+        * If unsupported, just set auto_en and div with 0.
+        */
+       if ((p->type != CCM_BUS_CHANNEL) && (p->type != CCM_AHB_CHANNEL)) {
+               *auto_en = 0;
+               *div = 0;
+               return 0;
+       }
+
+       val = __raw_readl(&imx_ccm->root[clock_id].target_root);
+       if ((val & CLK_ROOT_AUTO_EN_MASK) == 0)
+               *auto_en = 0;
+       else
+               *auto_en = 1;
+
+       val &= CLK_ROOT_AUTO_DIV_MASK;
+       val >>= CLK_ROOT_AUTO_DIV_SHIFT;
+
+       *div = val;
+
+       return 0;
+}
+
+int clock_get_target_val(enum clk_root_index clock_id, u32 *val)
+{
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       *val = __raw_readl(&imx_ccm->root[clock_id].target_root);
+
+       return 0;
+}
+
+int clock_set_target_val(enum clk_root_index clock_id, u32 val)
+{
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       __raw_writel(val, &imx_ccm->root[clock_id].target_root);
+
+       return 0;
+}
+
+/* Auto_div and auto_en is ignored, they are rarely used. */
+int clock_root_cfg(enum clk_root_index clock_id, enum root_pre_div pre_div,
+                  enum root_post_div post_div, enum clk_root_src clock_src)
+{
+       u32 val;
+       int root_entry, src_entry;
+       struct clk_root_map *p;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       root_entry = select(clock_id);
+       if (root_entry < 0)
+               return -EINVAL;
+
+       p = &root_array[root_entry];
+
+       if ((p->type == CCM_CORE_CHANNEL) ||
+           (p->type == CCM_DRAM_PHYM_CHANNEL) ||
+           (p->type == CCM_DRAM_CHANNEL)) {
+               if (pre_div != CLK_ROOT_PRE_DIV1) {
+                       printf("Error pre div!\n");
+                       return -EINVAL;
+               }
+       }
+
+       /* Only 3 bit post div. */
+       if (p->type == CCM_DRAM_CHANNEL) {
+               if (post_div > CLK_ROOT_POST_DIV7) {
+                       printf("Error post div!\n");
+                       return -EINVAL;
+               }
+       }
+
+       if (p->type == CCM_DRAM_PHYM_CHANNEL) {
+               if (post_div != CLK_ROOT_POST_DIV1) {
+                       printf("Error post div!\n");
+                       return -EINVAL;
+               }
+       }
+
+       src_entry = src_supported(root_entry, clock_src);
+       if (src_entry < 0)
+               return -EINVAL;
+
+       val = CLK_ROOT_ON | pre_div << CLK_ROOT_PRE_DIV_SHIFT |
+             post_div << CLK_ROOT_POST_DIV_SHIFT |
+             src_entry << CLK_ROOT_MUX_SHIFT;
+
+       __raw_writel(val, &imx_ccm->root[clock_id].target_root);
+
+       return 0;
+}
+
+int clock_root_enabled(enum clk_root_index clock_id)
+{
+       u32 val;
+
+       if (clock_id >= CLK_ROOT_MAX)
+               return -EINVAL;
+
+       /*
+        * No enable bit for DRAM controller and PHY. Just return enabled.
+        */
+       if ((clock_id == DRAM_PHYM_CLK_ROOT) || (clock_id == DRAM_CLK_ROOT))
+               return 1;
+
+       val = __raw_readl(&imx_ccm->root[clock_id].target_root);
+
+       return (val & CLK_ROOT_ENABLE_MASK) ? 1 : 0;
+}
+
+/* CCGR gate operation */
+int clock_enable(enum clk_ccgr_index index, bool enable)
+{
+       if (index >= CCGR_MAX)
+               return -EINVAL;
+
+       if (enable)
+               __raw_writel(CCM_CLK_ON_MSK,
+                            &imx_ccm->ccgr_array[index].ccgr_set);
+       else
+               __raw_writel(CCM_CLK_ON_MSK,
+                            &imx_ccm->ccgr_array[index].ccgr_clr);
+
+       return 0;
+}
diff --git a/arch/arm/cpu/armv7/mx7/soc.c b/arch/arm/cpu/armv7/mx7/soc.c
new file mode 100644 (file)
index 0000000..8d50149
--- /dev/null
@@ -0,0 +1,269 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/imx-common/boot_mode.h>
+#include <asm/imx-common/dma.h>
+#include <asm/arch/crm_regs.h>
+#include <dm.h>
+#include <imx_thermal.h>
+
+struct src *src_reg = (struct src *)SRC_BASE_ADDR;
+
+#if defined(CONFIG_IMX_THERMAL)
+static const struct imx_thermal_plat imx7_thermal_plat = {
+       .regs = (void *)ANATOP_BASE_ADDR,
+       .fuse_bank = 3,
+       .fuse_word = 3,
+};
+
+U_BOOT_DEVICE(imx7_thermal) = {
+       .name = "imx_thermal",
+       .platdata = &imx7_thermal_plat,
+};
+#endif
+
+/*
+ * OCOTP_TESTER3[9:8] (see Fusemap Description Table offset 0x440)
+ * defines a 2-bit SPEED_GRADING
+ */
+#define OCOTP_TESTER3_SPEED_SHIFT      8
+#define OCOTP_TESTER3_SPEED_800MHZ     0
+#define OCOTP_TESTER3_SPEED_850MHZ     1
+#define OCOTP_TESTER3_SPEED_1GHZ       2
+
+u32 get_cpu_speed_grade_hz(void)
+{
+       struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
+       struct fuse_bank *bank = &ocotp->bank[1];
+       struct fuse_bank1_regs *fuse =
+               (struct fuse_bank1_regs *)bank->fuse_regs;
+       uint32_t val;
+
+       val = readl(&fuse->tester3);
+       val >>= OCOTP_TESTER3_SPEED_SHIFT;
+       val &= 0x3;
+
+       switch(val) {
+       case OCOTP_TESTER3_SPEED_800MHZ:
+               return 792000000;
+       case OCOTP_TESTER3_SPEED_850MHZ:
+               return 852000000;
+       case OCOTP_TESTER3_SPEED_1GHZ:
+               return 996000000;
+       }
+       return 0;
+}
+
+/*
+ * OCOTP_TESTER3[7:6] (see Fusemap Description Table offset 0x440)
+ * defines a 2-bit SPEED_GRADING
+ */
+#define OCOTP_TESTER3_TEMP_SHIFT       6
+
+u32 get_cpu_temp_grade(int *minc, int *maxc)
+{
+       struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
+       struct fuse_bank *bank = &ocotp->bank[1];
+       struct fuse_bank1_regs *fuse =
+               (struct fuse_bank1_regs *)bank->fuse_regs;
+       uint32_t val;
+
+       val = readl(&fuse->tester3);
+       val >>= OCOTP_TESTER3_TEMP_SHIFT;
+       val &= 0x3;
+
+       if (minc && maxc) {
+               if ( val == TEMP_AUTOMOTIVE) {
+                       *minc = -40;
+                       *maxc = 125;
+               } else if (val == TEMP_INDUSTRIAL) {
+                       *minc = -40;
+                       *maxc = 105;
+               } else if (val == TEMP_EXTCOMMERCIAL) {
+                       *minc = -20;
+                       *maxc = 105;
+               } else {
+                       *minc = 0;
+                       *maxc = 95;
+               }
+       }
+       return val;
+}
+
+u32 get_cpu_rev(void)
+{
+       struct mxc_ccm_anatop_reg *ccm_anatop = (struct mxc_ccm_anatop_reg *)
+                                                ANATOP_BASE_ADDR;
+       u32 reg = readl(&ccm_anatop->digprog);
+       u32 type = (reg >> 16) & 0xff;
+
+       reg &= 0xff;
+       return (type << 12) | reg;
+}
+
+#ifdef CONFIG_REVISION_TAG
+u32 __weak get_board_rev(void)
+{
+       return get_cpu_rev();
+}
+#endif
+
+int arch_cpu_init(void)
+{
+       init_aips();
+
+       /* Disable PDE bit of WMCR register */
+       imx_set_wdog_powerdown(false);
+
+#ifdef CONFIG_APBH_DMA
+       /* Start APBH DMA */
+       mxs_dma_init();
+#endif
+
+       return 0;
+}
+
+#ifdef CONFIG_SERIAL_TAG
+void get_board_serial(struct tag_serialnr *serialnr)
+{
+       struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
+       struct fuse_bank *bank = &ocotp->bank[0];
+       struct fuse_bank0_regs *fuse =
+               (struct fuse_bank0_regs *)bank->fuse_regs;
+
+       serialnr->low = fuse->tester0;
+       serialnr->high = fuse->tester1;
+}
+#endif
+
+#if defined(CONFIG_FEC_MXC)
+void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
+{
+       struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
+       struct fuse_bank *bank = &ocotp->bank[9];
+       struct fuse_bank9_regs *fuse =
+               (struct fuse_bank9_regs *)bank->fuse_regs;
+
+       if (0 == dev_id) {
+               u32 value = readl(&fuse->mac_addr1);
+               mac[0] = (value >> 8);
+               mac[1] = value;
+
+               value = readl(&fuse->mac_addr0);
+               mac[2] = value >> 24;
+               mac[3] = value >> 16;
+               mac[4] = value >> 8;
+               mac[5] = value;
+       } else {
+               u32 value = readl(&fuse->mac_addr2);
+               mac[0] = value >> 24;
+               mac[1] = value >> 16;
+               mac[2] = value >> 8;
+               mac[3] = value;
+
+               value = readl(&fuse->mac_addr1);
+               mac[4] = value >> 24;
+               mac[5] = value >> 16;
+       }
+}
+#endif
+
+void set_wdog_reset(struct wdog_regs *wdog)
+{
+       u32 reg = readw(&wdog->wcr);
+       /*
+        * Output WDOG_B signal to reset external pmic or POR_B decided by
+        * the board desgin. Without external reset, the peripherals/DDR/
+        * PMIC are not reset, that may cause system working abnormal.
+        */
+       reg = readw(&wdog->wcr);
+       reg |= 1 << 3;
+       /*
+        * WDZST bit is write-once only bit. Align this bit in kernel,
+        * otherwise kernel code will have no chance to set this bit.
+        */
+       reg |= 1 << 0;
+       writew(reg, &wdog->wcr);
+}
+
+/*
+ * cfg_val will be used for
+ * Boot_cfg4[7:0]:Boot_cfg3[7:0]:Boot_cfg2[7:0]:Boot_cfg1[7:0]
+ * After reset, if GPR10[28] is 1, ROM will copy GPR9[25:0]
+ * to SBMR1, which will determine the boot device.
+ */
+const struct boot_mode soc_boot_modes[] = {
+       {"ecspi1:0",    MAKE_CFGVAL(0x00, 0x60, 0x00, 0x00)},
+       {"ecspi1:1",    MAKE_CFGVAL(0x40, 0x62, 0x00, 0x00)},
+       {"ecspi1:2",    MAKE_CFGVAL(0x80, 0x64, 0x00, 0x00)},
+       {"ecspi1:3",    MAKE_CFGVAL(0xc0, 0x66, 0x00, 0x00)},
+
+       {"weim",        MAKE_CFGVAL(0x00, 0x50, 0x00, 0x00)},
+       {"qspi1",       MAKE_CFGVAL(0x10, 0x40, 0x00, 0x00)},
+       /* 4 bit bus width */
+       {"usdhc1",      MAKE_CFGVAL(0x10, 0x10, 0x00, 0x00)},
+       {"usdhc2",      MAKE_CFGVAL(0x10, 0x14, 0x00, 0x00)},
+       {"usdhc3",      MAKE_CFGVAL(0x10, 0x18, 0x00, 0x00)},
+       {"mmc1",        MAKE_CFGVAL(0x10, 0x20, 0x00, 0x00)},
+       {"mmc2",        MAKE_CFGVAL(0x10, 0x24, 0x00, 0x00)},
+       {"mmc3",        MAKE_CFGVAL(0x10, 0x28, 0x00, 0x00)},
+       {NULL,          0},
+};
+
+enum boot_device get_boot_device(void)
+{
+       struct bootrom_sw_info **p =
+               (struct bootrom_sw_info **)ROM_SW_INFO_ADDR;
+
+       enum boot_device boot_dev = SD1_BOOT;
+       u8 boot_type = (*p)->boot_dev_type;
+       u8 boot_instance = (*p)->boot_dev_instance;
+
+       switch (boot_type) {
+       case BOOT_TYPE_SD:
+               boot_dev = boot_instance + SD1_BOOT;
+               break;
+       case BOOT_TYPE_MMC:
+               boot_dev = boot_instance + MMC1_BOOT;
+               break;
+       case BOOT_TYPE_NAND:
+               boot_dev = NAND_BOOT;
+               break;
+       case BOOT_TYPE_QSPI:
+               boot_dev = QSPI_BOOT;
+               break;
+       case BOOT_TYPE_WEIM:
+               boot_dev = WEIM_NOR_BOOT;
+               break;
+       case BOOT_TYPE_SPINOR:
+               boot_dev = SPI_NOR_BOOT;
+               break;
+       default:
+               break;
+       }
+
+       return boot_dev;
+}
+
+void s_init(void)
+{
+#if !defined CONFIG_SPL_BUILD
+       /* 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 configuration. */
+       clock_init();
+
+       return;
+}
index f5b22f6a783626590f06123050437e8d3ad14b21..bf7bf262c7f6dec7f8f440b4c6b0974825379c59 100644 (file)
@@ -294,8 +294,8 @@ static void dra7_ddr3_leveling(u32 base, const struct emif_regs *regs)
                        EMIF_REG_PHY_FIFO_WE_IN_MISALINED_CLR);
 
        /* Disable refreshed before leveling */
-       clrsetbits_le32(&emif->emif_sdram_ref_ctrl, EMIF_REG_INITREF_DIS_SHIFT,
-                       EMIF_REG_INITREF_DIS_SHIFT);
+       clrsetbits_le32(&emif->emif_sdram_ref_ctrl, EMIF_REG_INITREF_DIS_MASK,
+                       EMIF_REG_INITREF_DIS_MASK);
 
        /* Start Full leveling */
        writel(DDR3_FULL_LVL, &emif->emif_rd_wr_lvl_ctl);
@@ -309,7 +309,7 @@ static void dra7_ddr3_leveling(u32 base, const struct emif_regs *regs)
        }
 
        /* Enable refreshes after leveling */
-       clrbits_le32(&emif->emif_sdram_ref_ctrl, EMIF_REG_INITREF_DIS_SHIFT);
+       clrbits_le32(&emif->emif_sdram_ref_ctrl, EMIF_REG_INITREF_DIS_MASK);
 
        debug("HW leveling success\n");
        /*
index f4fb6cb486ba3a0ca8d2a16933db322cadd05eed..4fa72f7835bb54a8d6915e72f41c6c7b20353de8 100644 (file)
@@ -12,9 +12,6 @@ config TARGET_MT_VENTOUX
        bool "TeeJet Mt.Ventoux"
        select SUPPORT_SPL
 
-config TARGET_OMAP3_SDP3430
-       bool "TI OMAP3430 SDP"
-
 config TARGET_OMAP3_BEAGLE
        bool "TI OMAP3 BeagleBoard"
        select SUPPORT_SPL
@@ -79,9 +76,6 @@ config TARGET_ECO5PK
        bool "ECO5PK"
        select SUPPORT_SPL
 
-config TARGET_DIG297
-       bool "DIG297"
-
 config TARGET_TRICORDER
        bool "Tricorder"
        select SUPPORT_SPL
@@ -92,9 +86,9 @@ config TARGET_MCX
 
 config TARGET_OMAP3_LOGIC
        bool "OMAP3 Logic"
-
-config TARGET_OMAP3_MVBLX
-       bool "OMAP3 MVBLX"
+       select DM
+       select DM_SERIAL
+       select DM_GPIO
 
 config TARGET_NOKIA_RX51
        bool "Nokia RX51"
@@ -128,7 +122,6 @@ config SYS_SOC
 
 source "board/logicpd/am3517evm/Kconfig"
 source "board/teejet/mt_ventoux/Kconfig"
-source "board/ti/sdp3430/Kconfig"
 source "board/ti/beagle/Kconfig"
 source "board/compulab/cm_t35/Kconfig"
 source "board/compulab/cm_t3517/Kconfig"
@@ -140,11 +133,9 @@ source "board/logicpd/zoom1/Kconfig"
 source "board/ti/am3517crane/Kconfig"
 source "board/pandora/Kconfig"
 source "board/8dtech/eco5pk/Kconfig"
-source "board/comelit/dig297/Kconfig"
 source "board/corscience/tricorder/Kconfig"
 source "board/htkw/mcx/Kconfig"
 source "board/logicpd/omap3som/Kconfig"
-source "board/matrix_vision/mvblx/Kconfig"
 source "board/nokia/rx51/Kconfig"
 source "board/technexion/tao3530/Kconfig"
 source "board/technexion/twister/Kconfig"
index 76c7e555f1d79e55f37ae12cb5fd539ef6cbc4c0..459d5d8b0c7caacb6b6ae6a548813010cddbfe3f 100644 (file)
@@ -28,6 +28,7 @@ obj-$(CONFIG_MACH_SUN6I)      += clock_sun6i.o
 obj-$(CONFIG_MACH_SUN7I)       += clock_sun4i.o
 obj-$(CONFIG_MACH_SUN8I)       += clock_sun6i.o
 obj-$(CONFIG_MACH_SUN9I)       += clock_sun9i.o
+obj-$(CONFIG_MACH_SUN6I)       += tzpc.o
 
 obj-$(CONFIG_AXP152_POWER)     += pmic_bus.o
 obj-$(CONFIG_AXP209_POWER)     += pmic_bus.o
index f01846ef9a6bf9c715fb91d5dc29bbe487ed660a..b40198b36ee5c03a8caaaff42dc53b855c84566e 100644 (file)
@@ -23,6 +23,7 @@
 #include <asm/arch/gpio.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/timer.h>
+#include <asm/arch/tzpc.h>
 #include <asm/arch/mmc.h>
 
 #include <linux/compiler.h>
@@ -115,6 +116,10 @@ void s_init(void)
                "orr r0, r0, #1 << 6\n"
                "mcr p15, 0, r0, c1, c0, 1\n");
 #endif
+#if defined CONFIG_MACH_SUN6I
+       /* Enable non-secure access to the RTC */
+       tzpc_init();
+#endif
 
        clock_init();
        timer_init();
diff --git a/arch/arm/cpu/armv7/sunxi/tzpc.c b/arch/arm/cpu/armv7/sunxi/tzpc.c
new file mode 100644 (file)
index 0000000..5c9c69b
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * (C) Copyright 2015 Chen-Yu Tsai <wens@csie.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/io.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/tzpc.h>
+
+/* Configure Trust Zone Protection Controller */
+void tzpc_init(void)
+{
+       struct sunxi_tzpc *tzpc = (struct sunxi_tzpc *)SUNXI_TZPC_BASE;
+
+       /* Enable non-secure access to the RTC */
+       writel(SUNXI_TZPC_DECPORT0_RTC, &tzpc->decport0_set);
+}
index 05c401dc73ce66529d7033325c5424aff1b9711e..08b9ef42a19012982a44f9572198931da3681aa6 100644 (file)
@@ -9,6 +9,7 @@
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/crm_regs.h>
+#include <asm/imx-common/sys_proto.h>
 #include <netdev.h>
 #ifdef CONFIG_FSL_ESDHC
 #include <fsl_esdhc.h>
@@ -266,6 +267,11 @@ void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
 }
 #endif
 
+u32 get_cpu_rev(void)
+{
+       return MXC_CPU_VF610 << 12;
+}
+
 #if defined(CONFIG_DISPLAY_CPUINFO)
 static char *get_reset_cause(void)
 {
index 835f6a6525ea08e8c3a1473d78fa7dbf1428c681..6bde1cf6a00e01f97f258fd38733de8db179152a 100644 (file)
 DECLARE_GLOBAL_DATA_PTR;
 
 #ifndef CONFIG_SYS_DCACHE_OFF
-void set_pgtable_section(u64 *page_table, u64 index, u64 section,
-                        u64 memory_type)
+inline void set_pgtable_section(u64 *page_table, u64 index, u64 section,
+                        u64 memory_type, u64 share)
 {
        u64 value;
 
        value = section | PMD_TYPE_SECT | PMD_SECT_AF;
        value |= PMD_ATTRINDX(memory_type);
+       value |= share;
+       page_table[index] = value;
+}
+
+inline void set_pgtable_table(u64 *page_table, u64 index, u64 *table_addr)
+{
+       u64 value;
+
+       value = (u64)table_addr | PMD_TYPE_TABLE;
        page_table[index] = value;
 }
 
@@ -32,7 +41,7 @@ static void mmu_setup(void)
        /* Setup an identity-mapping for all spaces */
        for (i = 0; i < (PGTABLE_SIZE >> 3); i++) {
                set_pgtable_section(page_table, i, i << SECTION_SHIFT,
-                                   MT_DEVICE_NGNRNE);
+                                   MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE);
        }
 
        /* Setup an identity-mapping for all RAM space */
@@ -42,7 +51,7 @@ static void mmu_setup(void)
                for (j = start >> SECTION_SHIFT;
                     j < end >> SECTION_SHIFT; j++) {
                        set_pgtable_section(page_table, j, j << SECTION_SHIFT,
-                                           MT_NORMAL);
+                                           MT_NORMAL, PMD_SECT_NON_SHARE);
                }
        }
 
index 3c154793157382b4601001e241d868d6bf87c09e..08da7e4d1d2d9dd1f4b87136c5f4c987937b97e1 100644 (file)
@@ -171,3 +171,74 @@ nand write <u-boot image in memory> 80000 <size of u-boot image>
 
 Notice the difference from QDS is SRC, SRC_ADDR and the offset of u-boot image
 to match board NAND device with 4KB/page, block size 512KB.
+
+MMU Translation Tables
+======================
+
+(1) Early MMU Tables:
+
+     Level 0                   Level 1                   Level 2
+------------------        ------------------        ------------------
+| 0x00_0000_0000 | -----> | 0x00_0000_0000 | -----> | 0x00_0000_0000 |
+------------------        ------------------        ------------------
+| 0x80_0000_0000 | --|    | 0x00_4000_0000 |        | 0x00_0020_0000 |
+------------------   |    ------------------        ------------------
+|    invalid     |   |    | 0x00_8000_0000 |        | 0x00_0040_0000 |
+------------------   |    ------------------        ------------------
+                     |    | 0x00_c000_0000 |        | 0x00_0060_0000 |
+                     |    ------------------        ------------------
+                     |    | 0x01_0000_0000 |        | 0x00_0080_0000 |
+                     |    ------------------        ------------------
+                     |            ...                      ...
+                     |    ------------------
+                     |    | 0x05_8000_0000 |  --|
+                     |    ------------------    |
+                     |    | 0x05_c000_0000 |    |
+                     |    ------------------    |
+                     |            ...           |
+                     |    ------------------    |   ------------------
+                     |--> | 0x80_0000_0000 |    |-> | 0x00_3000_0000 |
+                          ------------------        ------------------
+                          | 0x80_4000_0000 |        | 0x00_3020_0000 |
+                          ------------------        ------------------
+                          | 0x80_8000_0000 |        | 0x00_3040_0000 |
+                          ------------------        ------------------
+                          | 0x80_c000_0000 |        | 0x00_3060_0000 |
+                          ------------------        ------------------
+                          | 0x81_0000_0000 |        | 0x00_3080_0000 |
+                          ------------------        ------------------
+                                ...                       ...
+
+(2) Final MMU Tables:
+
+     Level 0                   Level 1                   Level 2
+------------------        ------------------        ------------------
+| 0x00_0000_0000 | -----> | 0x00_0000_0000 | -----> | 0x00_0000_0000 |
+------------------        ------------------        ------------------
+| 0x80_0000_0000 | --|    | 0x00_4000_0000 |        | 0x00_0020_0000 |
+------------------   |    ------------------        ------------------
+|    invalid     |   |    | 0x00_8000_0000 |        | 0x00_0040_0000 |
+------------------   |    ------------------        ------------------
+                     |    | 0x00_c000_0000 |        | 0x00_0060_0000 |
+                     |    ------------------        ------------------
+                     |    | 0x01_0000_0000 |        | 0x00_0080_0000 |
+                     |    ------------------        ------------------
+                     |            ...                      ...
+                     |    ------------------
+                     |    | 0x08_0000_0000 | --|
+                     |    ------------------   |
+                     |    | 0x08_4000_0000 |   |
+                     |    ------------------   |
+                     |            ...          |
+                     |    ------------------   |    ------------------
+                     |--> | 0x80_0000_0000 |   |--> | 0x08_0000_0000 |
+                          ------------------        ------------------
+                          | 0x80_4000_0000 |        | 0x08_0020_0000 |
+                          ------------------        ------------------
+                          | 0x80_8000_0000 |        | 0x08_0040_0000 |
+                          ------------------        ------------------
+                          | 0x80_c000_0000 |        | 0x08_0060_0000 |
+                          ------------------        ------------------
+                          | 0x81_0000_0000 |        | 0x08_0080_0000 |
+                          ------------------        ------------------
+                                ...                       ...
index d02c0beef9f231f845ce052b1152e89abf0ba7a3..eb1213e9f0a90292dc7fcbde15e6219375ceb7f6 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <asm/io.h>
+#include <asm/errno.h>
 #include <asm/system.h>
 #include <asm/armv8/mmu.h>
 #include <asm/io.h>
@@ -53,27 +54,16 @@ void cpu_name(char *name)
 }
 
 #ifndef CONFIG_SYS_DCACHE_OFF
-/*
- * To start MMU before DDR is available, we create MMU table in SRAM.
- * The base address of SRAM is CONFIG_SYS_FSL_OCRAM_BASE. We use three
- * levels of translation tables here to cover 40-bit address space.
- * We use 4KB granule size, with 40 bits physical address, T0SZ=24
- * Level 0 IA[39], table address @0
- * Level 1 IA[31:30], table address @0x1000, 0x2000
- * Level 2 IA[29:21], table address @0x3000, 0x4000
- * Address above 0x5000 is free for other purpose.
- */
 
-#define SECTION_SHIFT_L0       39UL
-#define SECTION_SHIFT_L1       30UL
-#define SECTION_SHIFT_L2       21UL
-#define BLOCK_SIZE_L0          0x8000000000UL
-#define BLOCK_SIZE_L1          (1 << SECTION_SHIFT_L1)
-#define BLOCK_SIZE_L2          (1 << SECTION_SHIFT_L2)
-#define CONFIG_SYS_IFC_BASE    0x30000000
-#define CONFIG_SYS_IFC_SIZE    0x10000000
-#define CONFIG_SYS_IFC_BASE2   0x500000000
-#define CONFIG_SYS_IFC_SIZE2   0x100000000
+#define SECTION_SHIFT_L0               39UL
+#define SECTION_SHIFT_L1               30UL
+#define SECTION_SHIFT_L2               21UL
+#define BLOCK_SIZE_L0                  0x8000000000
+#define BLOCK_SIZE_L1                  0x40000000
+#define BLOCK_SIZE_L2                  0x200000
+
+#define NUM_OF_ENTRY           512
+
 #define TCR_EL2_PS_40BIT       (2 << 16)
 #define LSCH3_VA_BITS          (40)
 #define LSCH3_TCR      (TCR_TG0_4K             | \
@@ -89,95 +79,265 @@ void cpu_name(char *name)
                        TCR_IRGN_WBWA           | \
                        TCR_T0SZ(LSCH3_VA_BITS))
 
+#define CONFIG_SYS_FSL_CCSR_BASE       0x00000000
+#define CONFIG_SYS_FSL_CCSR_SIZE       0x10000000
+#define CONFIG_SYS_FSL_QSPI_BASE1      0x20000000
+#define CONFIG_SYS_FSL_QSPI_SIZE1      0x10000000
+#define CONFIG_SYS_FSL_IFC_BASE1       0x30000000
+#define CONFIG_SYS_FSL_IFC_SIZE1       0x10000000
+#define CONFIG_SYS_FSL_IFC_SIZE1_1     0x400000
+#define CONFIG_SYS_FSL_DRAM_BASE1      0x80000000
+#define CONFIG_SYS_FSL_DRAM_SIZE1      0x80000000
+#define CONFIG_SYS_FSL_QSPI_BASE2      0x400000000
+#define CONFIG_SYS_FSL_QSPI_SIZE2      0x100000000
+#define CONFIG_SYS_FSL_IFC_BASE2       0x500000000
+#define CONFIG_SYS_FSL_IFC_SIZE2       0x100000000
+#define CONFIG_SYS_FSL_DCSR_BASE       0x700000000
+#define CONFIG_SYS_FSL_DCSR_SIZE       0x40000000
+#define CONFIG_SYS_FSL_MC_BASE         0x80c000000
+#define CONFIG_SYS_FSL_MC_SIZE         0x4000000
+#define CONFIG_SYS_FSL_NI_BASE         0x810000000
+#define CONFIG_SYS_FSL_NI_SIZE         0x8000000
+#define CONFIG_SYS_FSL_QBMAN_BASE      0x818000000
+#define CONFIG_SYS_FSL_QBMAN_SIZE      0x8000000
+#define CONFIG_SYS_FSL_QBMAN_SIZE_1    0x4000000
+#define CONFIG_SYS_PCIE1_PHYS_SIZE     0x200000000
+#define CONFIG_SYS_PCIE2_PHYS_SIZE     0x200000000
+#define CONFIG_SYS_PCIE3_PHYS_SIZE     0x200000000
+#define CONFIG_SYS_PCIE4_PHYS_SIZE     0x200000000
+#define CONFIG_SYS_FSL_WRIOP1_BASE     0x4300000000
+#define CONFIG_SYS_FSL_WRIOP1_SIZE     0x100000000
+#define CONFIG_SYS_FSL_AIOP1_BASE      0x4b00000000
+#define CONFIG_SYS_FSL_AIOP1_SIZE      0x100000000
+#define CONFIG_SYS_FSL_PEBUF_BASE      0x4c00000000
+#define CONFIG_SYS_FSL_PEBUF_SIZE      0x400000000
+#define CONFIG_SYS_FSL_DRAM_BASE2      0x8080000000
+#define CONFIG_SYS_FSL_DRAM_SIZE2      0x7F80000000
+
+struct sys_mmu_table {
+       u64 virt_addr;
+       u64 phys_addr;
+       u64 size;
+       u64 memory_type;
+       u64 share;
+};
+
+static const struct sys_mmu_table lsch3_early_mmu_table[] = {
+       { CONFIG_SYS_FSL_CCSR_BASE, CONFIG_SYS_FSL_CCSR_BASE,
+         CONFIG_SYS_FSL_CCSR_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_OCRAM_BASE, CONFIG_SYS_FSL_OCRAM_BASE,
+         CONFIG_SYS_FSL_OCRAM_SIZE, MT_NORMAL, PMD_SECT_NON_SHARE },
+       /* For IFC Region #1, only the first 4MB is cache-enabled */
+       { CONFIG_SYS_FSL_IFC_BASE1, CONFIG_SYS_FSL_IFC_BASE1,
+         CONFIG_SYS_FSL_IFC_SIZE1_1, MT_NORMAL, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_IFC_BASE1 + CONFIG_SYS_FSL_IFC_SIZE1_1,
+         CONFIG_SYS_FSL_IFC_BASE1 + CONFIG_SYS_FSL_IFC_SIZE1_1,
+         CONFIG_SYS_FSL_IFC_SIZE1 - CONFIG_SYS_FSL_IFC_SIZE1_1,
+         MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FSL_IFC_BASE1,
+         CONFIG_SYS_FSL_IFC_SIZE1, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_DRAM_BASE1, CONFIG_SYS_FSL_DRAM_BASE1,
+         CONFIG_SYS_FSL_DRAM_SIZE1, MT_NORMAL, PMD_SECT_OUTER_SHARE },
+       { CONFIG_SYS_FSL_DCSR_BASE, CONFIG_SYS_FSL_DCSR_BASE,
+         CONFIG_SYS_FSL_DCSR_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_DRAM_BASE2, CONFIG_SYS_FSL_DRAM_BASE2,
+         CONFIG_SYS_FSL_DRAM_SIZE2, MT_NORMAL, PMD_SECT_OUTER_SHARE },
+};
+
+static const struct sys_mmu_table lsch3_final_mmu_table[] = {
+       { CONFIG_SYS_FSL_CCSR_BASE, CONFIG_SYS_FSL_CCSR_BASE,
+         CONFIG_SYS_FSL_CCSR_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_OCRAM_BASE, CONFIG_SYS_FSL_OCRAM_BASE,
+         CONFIG_SYS_FSL_OCRAM_SIZE, MT_NORMAL, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_DRAM_BASE1, CONFIG_SYS_FSL_DRAM_BASE1,
+         CONFIG_SYS_FSL_DRAM_SIZE1, MT_NORMAL, PMD_SECT_OUTER_SHARE },
+       { CONFIG_SYS_FSL_QSPI_BASE2, CONFIG_SYS_FSL_QSPI_BASE2,
+         CONFIG_SYS_FSL_QSPI_SIZE2, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_IFC_BASE2, CONFIG_SYS_FSL_IFC_BASE2,
+         CONFIG_SYS_FSL_IFC_SIZE2, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_DCSR_BASE, CONFIG_SYS_FSL_DCSR_BASE,
+         CONFIG_SYS_FSL_DCSR_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_MC_BASE, CONFIG_SYS_FSL_MC_BASE,
+         CONFIG_SYS_FSL_MC_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_NI_BASE, CONFIG_SYS_FSL_NI_BASE,
+         CONFIG_SYS_FSL_NI_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       /* For QBMAN portal, only the first 64MB is cache-enabled */
+       { CONFIG_SYS_FSL_QBMAN_BASE, CONFIG_SYS_FSL_QBMAN_BASE,
+         CONFIG_SYS_FSL_QBMAN_SIZE_1, MT_NORMAL, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_QBMAN_BASE + CONFIG_SYS_FSL_QBMAN_SIZE_1,
+         CONFIG_SYS_FSL_QBMAN_BASE + CONFIG_SYS_FSL_QBMAN_SIZE_1,
+         CONFIG_SYS_FSL_QBMAN_SIZE - CONFIG_SYS_FSL_QBMAN_SIZE_1,
+         MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_PCIE1_PHYS_ADDR, CONFIG_SYS_PCIE1_PHYS_ADDR,
+         CONFIG_SYS_PCIE1_PHYS_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_PCIE2_PHYS_ADDR, CONFIG_SYS_PCIE2_PHYS_ADDR,
+         CONFIG_SYS_PCIE2_PHYS_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_PCIE3_PHYS_ADDR, CONFIG_SYS_PCIE3_PHYS_ADDR,
+         CONFIG_SYS_PCIE3_PHYS_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+#ifdef CONFIG_LS2085A
+       { CONFIG_SYS_PCIE4_PHYS_ADDR, CONFIG_SYS_PCIE4_PHYS_ADDR,
+         CONFIG_SYS_PCIE4_PHYS_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+#endif
+       { CONFIG_SYS_FSL_WRIOP1_BASE, CONFIG_SYS_FSL_WRIOP1_BASE,
+         CONFIG_SYS_FSL_WRIOP1_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_AIOP1_BASE, CONFIG_SYS_FSL_AIOP1_BASE,
+         CONFIG_SYS_FSL_AIOP1_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_PEBUF_BASE, CONFIG_SYS_FSL_PEBUF_BASE,
+         CONFIG_SYS_FSL_PEBUF_SIZE, MT_DEVICE_NGNRNE, PMD_SECT_NON_SHARE },
+       { CONFIG_SYS_FSL_DRAM_BASE2, CONFIG_SYS_FSL_DRAM_BASE2,
+         CONFIG_SYS_FSL_DRAM_SIZE2, MT_NORMAL, PMD_SECT_OUTER_SHARE },
+};
+
+struct table_info {
+       u64 *ptr;
+       u64 table_base;
+       u64 entry_size;
+};
+
 /*
- * Final MMU
- * Let's start from the same layout as early MMU and modify as needed.
- * IFC regions will be cache-inhibit.
+ * Set the block entries according to the information of the table.
  */
-#define FINAL_QBMAN_CACHED_MEM 0x818000000UL
-#define FINAL_QBMAN_CACHED_SIZE        0x4000000
+static int set_block_entry(const struct sys_mmu_table *list,
+                          struct table_info *table)
+{
+       u64 block_size = 0, block_shift = 0;
+       u64 block_addr, index;
+       int j;
+
+       if (table->entry_size == BLOCK_SIZE_L1) {
+               block_size = BLOCK_SIZE_L1;
+               block_shift = SECTION_SHIFT_L1;
+       } else if (table->entry_size == BLOCK_SIZE_L2) {
+               block_size = BLOCK_SIZE_L2;
+               block_shift = SECTION_SHIFT_L2;
+       } else {
+               return -EINVAL;
+       }
 
+       block_addr = list->phys_addr;
+       index = (list->virt_addr - table->table_base) >> block_shift;
+
+       for (j = 0; j < (list->size >> block_shift); j++) {
+               set_pgtable_section(table->ptr,
+                                   index,
+                                   block_addr,
+                                   list->memory_type,
+                                   list->share);
+               block_addr += block_size;
+               index++;
+       }
 
-static inline void early_mmu_setup(void)
+       return 0;
+}
+
+/*
+ * Find the corresponding table entry for the list.
+ */
+static int find_table(const struct sys_mmu_table *list,
+                     struct table_info *table, u64 *level0_table)
 {
-       int el;
-       u64 i;
-       u64 section_l1t0, section_l1t1, section_l2t0, section_l2t1;
-       u64 *level0_table = (u64 *)CONFIG_SYS_FSL_OCRAM_BASE;
-       u64 *level1_table_0 = (u64 *)(CONFIG_SYS_FSL_OCRAM_BASE + 0x1000);
-       u64 *level1_table_1 = (u64 *)(CONFIG_SYS_FSL_OCRAM_BASE + 0x2000);
-       u64 *level2_table_0 = (u64 *)(CONFIG_SYS_FSL_OCRAM_BASE + 0x3000);
-       u64 *level2_table_1 = (u64 *)(CONFIG_SYS_FSL_OCRAM_BASE + 0x4000);
+       u64 index = 0, level = 0;
+       u64 *level_table = level0_table;
+       u64 temp_base = 0, block_size = 0, block_shift = 0;
+
+       while (level < 3) {
+               if (level == 0) {
+                       block_size = BLOCK_SIZE_L0;
+                       block_shift = SECTION_SHIFT_L0;
+               } else if (level == 1) {
+                       block_size = BLOCK_SIZE_L1;
+                       block_shift = SECTION_SHIFT_L1;
+               } else if (level == 2) {
+                       block_size = BLOCK_SIZE_L2;
+                       block_shift = SECTION_SHIFT_L2;
+               }
 
-       level0_table[0] =
-               (u64)level1_table_0 | PMD_TYPE_TABLE;
-       level0_table[1] =
-               (u64)level1_table_1 | PMD_TYPE_TABLE;
+               index = 0;
+               while (list->virt_addr >= temp_base) {
+                       index++;
+                       temp_base += block_size;
+               }
 
-       /*
-        * set level 1 table 0 to cache_inhibit, covering 0 to 512GB
-        * set level 1 table 1 to cache enabled, covering 512GB to 1TB
-        * set level 2 table to cache-inhibit, covering 0 to 1GB
-        */
-       section_l1t0 = 0;
-       section_l1t1 = BLOCK_SIZE_L0;
-       section_l2t0 = 0;
-       section_l2t1 = CONFIG_SYS_FLASH_BASE;
-       for (i = 0; i < 512; i++) {
-               set_pgtable_section(level1_table_0, i, section_l1t0,
-                                   MT_DEVICE_NGNRNE);
-               set_pgtable_section(level1_table_1, i, section_l1t1,
-                                   MT_NORMAL);
-               set_pgtable_section(level2_table_0, i, section_l2t0,
-                                   MT_DEVICE_NGNRNE);
-               set_pgtable_section(level2_table_1, i, section_l2t1,
-                                   MT_DEVICE_NGNRNE);
-               section_l1t0 += BLOCK_SIZE_L1;
-               section_l1t1 += BLOCK_SIZE_L1;
-               section_l2t0 += BLOCK_SIZE_L2;
-               section_l2t1 += BLOCK_SIZE_L2;
+               temp_base -= block_size;
+
+               if ((level_table[index - 1] & PMD_TYPE_MASK) ==
+                   PMD_TYPE_TABLE) {
+                       level_table = (u64 *)(level_table[index - 1] &
+                                     ~PMD_TYPE_MASK);
+                       level++;
+                       continue;
+               } else {
+                       if (level == 0)
+                               return -EINVAL;
+
+                       if ((list->phys_addr + list->size) >
+                           (temp_base + block_size * NUM_OF_ENTRY))
+                               return -EINVAL;
+
+                       /*
+                        * Check the address and size of the list member is
+                        * aligned with the block size.
+                        */
+                       if (((list->phys_addr & (block_size - 1)) != 0) ||
+                           ((list->size & (block_size - 1)) != 0))
+                               return -EINVAL;
+
+                       table->ptr = level_table;
+                       table->table_base = temp_base -
+                                           ((index - 1) << block_shift);
+                       table->entry_size = block_size;
+
+                       return 0;
+               }
        }
+       return -EINVAL;
+}
 
-       level1_table_0[0] =
-               (u64)level2_table_0 | PMD_TYPE_TABLE;
-       level1_table_0[1] =
-               0x40000000 | PMD_SECT_AF | PMD_TYPE_SECT |
-               PMD_ATTRINDX(MT_DEVICE_NGNRNE);
-       level1_table_0[2] =
-               0x80000000 | PMD_SECT_AF | PMD_TYPE_SECT |
-               PMD_ATTRINDX(MT_NORMAL);
-       level1_table_0[3] =
-               0xc0000000 | PMD_SECT_AF | PMD_TYPE_SECT |
-               PMD_ATTRINDX(MT_NORMAL);
-
-       /* Rewerite table to enable cache for OCRAM */
-       set_pgtable_section(level2_table_0,
-                           CONFIG_SYS_FSL_OCRAM_BASE >> SECTION_SHIFT_L2,
-                           CONFIG_SYS_FSL_OCRAM_BASE,
-                           MT_NORMAL);
-
-#if defined(CONFIG_SYS_NOR0_CSPR_EARLY) && defined(CONFIG_SYS_NOR_AMASK_EARLY)
-       /* Rewrite table to enable cache for two entries (4MB) */
-       section_l2t1 = CONFIG_SYS_IFC_BASE;
-       set_pgtable_section(level2_table_0,
-                           section_l2t1 >> SECTION_SHIFT_L2,
-                           section_l2t1,
-                           MT_NORMAL);
-       section_l2t1 += BLOCK_SIZE_L2;
-       set_pgtable_section(level2_table_0,
-                           section_l2t1 >> SECTION_SHIFT_L2,
-                           section_l2t1,
-                           MT_NORMAL);
-#endif
-
-       /* Create a mapping for 256MB IFC region to final flash location */
-       level1_table_0[CONFIG_SYS_FLASH_BASE >> SECTION_SHIFT_L1] =
-               (u64)level2_table_1 | PMD_TYPE_TABLE;
-       section_l2t1 = CONFIG_SYS_IFC_BASE;
-       for (i = 0; i < 0x10000000 >> SECTION_SHIFT_L2; i++) {
-               set_pgtable_section(level2_table_1, i,
-                                   section_l2t1, MT_DEVICE_NGNRNE);
-               section_l2t1 += BLOCK_SIZE_L2;
+/*
+ * To start MMU before DDR is available, we create MMU table in SRAM.
+ * The base address of SRAM is CONFIG_SYS_FSL_OCRAM_BASE. We use three
+ * levels of translation tables here to cover 40-bit address space.
+ * We use 4KB granule size, with 40 bits physical address, T0SZ=24
+ * Level 0 IA[39], table address @0
+ * Level 1 IA[38:30], table address @0x1000, 0x2000
+ * Level 2 IA[29:21], table address @0x3000, 0x4000
+ * Address above 0x5000 is free for other purpose.
+ */
+static inline void early_mmu_setup(void)
+{
+       unsigned int el, i;
+       u64 *level0_table = (u64 *)CONFIG_SYS_FSL_OCRAM_BASE;
+       u64 *level1_table0 = (u64 *)(CONFIG_SYS_FSL_OCRAM_BASE + 0x1000);
+       u64 *level1_table1 = (u64 *)(CONFIG_SYS_FSL_OCRAM_BASE + 0x2000);
+       u64 *level2_table0 = (u64 *)(CONFIG_SYS_FSL_OCRAM_BASE + 0x3000);
+       u64 *level2_table1 = (u64 *)(CONFIG_SYS_FSL_OCRAM_BASE + 0x4000);
+       struct table_info table = {level0_table, 0, BLOCK_SIZE_L0};
+
+       /* Invalidate all table entries */
+       memset(level0_table, 0, 0x5000);
+
+       /* Fill in the table entries */
+       set_pgtable_table(level0_table, 0, level1_table0);
+       set_pgtable_table(level0_table, 1, level1_table1);
+       set_pgtable_table(level1_table0, 0, level2_table0);
+       set_pgtable_table(level1_table0,
+                         CONFIG_SYS_FLASH_BASE >> SECTION_SHIFT_L1,
+                         level2_table1);
+
+       /* Find the table and fill in the block entries */
+       for (i = 0; i < ARRAY_SIZE(lsch3_early_mmu_table); i++) {
+               if (find_table(&lsch3_early_mmu_table[i],
+                              &table, level0_table) == 0) {
+                       /*
+                        * If find_table() returns error, it cannot be dealt
+                        * with here. Breakpoint can be added for debugging.
+                        */
+                       set_block_entry(&lsch3_early_mmu_table[i], &table);
+                       /*
+                        * If set_block_entry() returns error, it cannot be
+                        * dealt with here too.
+                        */
+               }
        }
 
        el = current_el();
@@ -186,89 +346,55 @@ static inline void early_mmu_setup(void)
 }
 
 /*
- * This final tale looks similar to early table, but different in detail.
- * These tables are in regular memory. Cache on IFC is disabled. One sub table
- * is added to enable cache for QBMan.
+ * The final tables look similar to early tables, but different in detail.
+ * These tables are in DRAM. Sub tables are added to enable cache for
+ * QBMan and OCRAM.
+ *
+ * Level 1 table 0 contains 512 entries for each 1GB from 0 to 512GB.
+ * Level 1 table 1 contains 512 entries for each 1GB from 512GB to 1TB.
+ * Level 2 table 0 contains 512 entries for each 2MB from 0 to 1GB.
+ * Level 2 table 1 contains 512 entries for each 2MB from 32GB to 33GB.
  */
 static inline void final_mmu_setup(void)
 {
-       int el;
-       u64 i, tbl_base, tbl_limit, section_base;
-       u64 section_l1t0, section_l1t1, section_l2;
+       unsigned int el, i;
        u64 *level0_table = (u64 *)gd->arch.tlb_addr;
-       u64 *level1_table_0 = (u64 *)(gd->arch.tlb_addr + 0x1000);
-       u64 *level1_table_1 = (u64 *)(gd->arch.tlb_addr + 0x2000);
-       u64 *level2_table_0 = (u64 *)(gd->arch.tlb_addr + 0x3000);
-       u64 *level2_table_1 = (u64 *)(gd->arch.tlb_addr + 0x4000);
-
-
-       level0_table[0] =
-               (u64)level1_table_0 | PMD_TYPE_TABLE;
-       level0_table[1] =
-               (u64)level1_table_1 | PMD_TYPE_TABLE;
-
-       /*
-        * set level 1 table 0 to cache_inhibit, covering 0 to 512GB
-        * set level 1 table 1 to cache enabled, covering 512GB to 1TB
-        * set level 2 table 0 to cache-inhibit, covering 0 to 1GB
-        */
-       section_l1t0 = 0;
-       section_l1t1 = BLOCK_SIZE_L0 | PMD_SECT_OUTER_SHARE;
-       section_l2 = 0;
-       for (i = 0; i < 512; i++) {
-               set_pgtable_section(level1_table_0, i, section_l1t0,
-                                   MT_DEVICE_NGNRNE);
-               set_pgtable_section(level1_table_1, i, section_l1t1,
-                                   MT_NORMAL);
-               set_pgtable_section(level2_table_0, i, section_l2,
-                                   MT_DEVICE_NGNRNE);
-               section_l1t0 += BLOCK_SIZE_L1;
-               section_l1t1 += BLOCK_SIZE_L1;
-               section_l2 += BLOCK_SIZE_L2;
-       }
-
-       level1_table_0[0] =
-               (u64)level2_table_0 | PMD_TYPE_TABLE;
-       level1_table_0[2] =
-               0x80000000 | PMD_SECT_AF | PMD_TYPE_SECT |
-               PMD_SECT_OUTER_SHARE | PMD_ATTRINDX(MT_NORMAL);
-       level1_table_0[3] =
-               0xc0000000 | PMD_SECT_AF | PMD_TYPE_SECT |
-               PMD_SECT_OUTER_SHARE | PMD_ATTRINDX(MT_NORMAL);
-
-       /* Rewrite table to enable cache */
-       set_pgtable_section(level2_table_0,
-                           CONFIG_SYS_FSL_OCRAM_BASE >> SECTION_SHIFT_L2,
-                           CONFIG_SYS_FSL_OCRAM_BASE,
-                           MT_NORMAL);
+       u64 *level1_table0 = (u64 *)(gd->arch.tlb_addr + 0x1000);
+       u64 *level1_table1 = (u64 *)(gd->arch.tlb_addr + 0x2000);
+       u64 *level2_table0 = (u64 *)(gd->arch.tlb_addr + 0x3000);
+       u64 *level2_table1 = (u64 *)(gd->arch.tlb_addr + 0x4000);
+       struct table_info table = {level0_table, 0, BLOCK_SIZE_L0};
+
+       /* Invalidate all table entries */
+       memset(level0_table, 0, PGTABLE_SIZE);
+
+       /* Fill in the table entries */
+       set_pgtable_table(level0_table, 0, level1_table0);
+       set_pgtable_table(level0_table, 1, level1_table1);
+       set_pgtable_table(level1_table0, 0, level2_table0);
+       set_pgtable_table(level1_table0,
+                         CONFIG_SYS_FSL_QBMAN_BASE >> SECTION_SHIFT_L1,
+                         level2_table1);
+
+       /* Find the table and fill in the block entries */
+       for (i = 0; i < ARRAY_SIZE(lsch3_final_mmu_table); i++) {
+               if (find_table(&lsch3_final_mmu_table[i],
+                              &table, level0_table) == 0) {
+                       if (set_block_entry(&lsch3_final_mmu_table[i],
+                                           &table) != 0) {
+                               printf("MMU error: could not set block entry for %p\n",
+                                      &lsch3_final_mmu_table[i]);
+                       }
 
-       /*
-        * Fill in other part of tables if cache is needed
-        * If finer granularity than 1GB is needed, sub table
-        * should be created.
-        */
-       section_base = FINAL_QBMAN_CACHED_MEM & ~(BLOCK_SIZE_L1 - 1);
-       i = section_base >> SECTION_SHIFT_L1;
-       level1_table_0[i] = (u64)level2_table_1 | PMD_TYPE_TABLE;
-       section_l2 = section_base;
-       for (i = 0; i < 512; i++) {
-               set_pgtable_section(level2_table_1, i, section_l2,
-                                   MT_DEVICE_NGNRNE);
-               section_l2 += BLOCK_SIZE_L2;
-       }
-       tbl_base = FINAL_QBMAN_CACHED_MEM & (BLOCK_SIZE_L1 - 1);
-       tbl_limit = (FINAL_QBMAN_CACHED_MEM + FINAL_QBMAN_CACHED_SIZE) &
-                   (BLOCK_SIZE_L1 - 1);
-       for (i = tbl_base >> SECTION_SHIFT_L2;
-            i < tbl_limit >> SECTION_SHIFT_L2; i++) {
-               section_l2 = section_base + (i << SECTION_SHIFT_L2);
-               set_pgtable_section(level2_table_1, i,
-                                   section_l2, MT_NORMAL);
+               } else {
+                       printf("MMU error: could not find the table for %p\n",
+                              &lsch3_final_mmu_table[i]);
+               }
        }
 
        /* flush new MMU table */
        flush_dcache_range(gd->arch.tlb_addr,
-                          gd->arch.tlb_addr +  gd->arch.tlb_size);
+                          gd->arch.tlb_addr + gd->arch.tlb_size);
 
        /* point TTBR to the new table */
        el = current_el();
index 02ca126ab80b85c90e7175f31f8d52ef8de0a032..ae0834365e4487ca01860a0bfbde7180367cecb9 100644 (file)
@@ -90,7 +90,38 @@ void serdes_init(u32 sd, u32 sd_addr, u32 sd_prctl_mask, u32 sd_prctl_shift,
                else {
                        serdes_prtcl_map[lane_prtcl] = 1;
 #ifdef CONFIG_FSL_MC_ENET
-                       wriop_init_dpmac(sd, lane + 1, (int)lane_prtcl);
+                       switch (lane_prtcl) {
+                       case QSGMII_A:
+                               wriop_init_dpmac(sd, 5, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 6, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 7, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 8, (int)lane_prtcl);
+                               break;
+                       case QSGMII_B:
+                               wriop_init_dpmac(sd, 1, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 2, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 3, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 4, (int)lane_prtcl);
+                               break;
+                       case QSGMII_C:
+                               wriop_init_dpmac(sd, 13, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 14, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 15, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 16, (int)lane_prtcl);
+                               break;
+                       case QSGMII_D:
+                               wriop_init_dpmac(sd, 9, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 10, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 11, (int)lane_prtcl);
+                               wriop_init_dpmac(sd, 12, (int)lane_prtcl);
+                               break;
+                       default:
+                                if (lane_prtcl >= SGMII1 &&
+                                          lane_prtcl <= SGMII16)
+                                       wriop_init_dpmac(sd, lane + 1,
+                                                        (int)lane_prtcl);
+                               break;
+                       }
 #endif
                }
        }
index 018c61742ee8fd4a3b1e3ade9ac7cccc338a022e..6b19d36f115fce5d5647ff3edd9db98a6781e608 100644 (file)
@@ -16,13 +16,71 @@ ENTRY(lowlevel_init)
        mov     x29, lr                 /* Save LR */
 
        /* Add fully-coherent masters to DVM domain */
-       ldr     x1, =CCI_MN_BASE
-       ldr     x2, [x1, #CCI_MN_RNF_NODEID_LIST]
-       str     x2, [x1, #CCI_MN_DVM_DOMAIN_CTL_SET]
-1:     ldr     x3, [x1, #CCI_MN_DVM_DOMAIN_CTL_SET]
-       mvn     x0, x3
-       tst     x0, x3          /* Wait for domain addition to complete */
-       b.ne    1b
+       ldr     x0, =CCI_MN_BASE
+       ldr     x1, =CCI_MN_RNF_NODEID_LIST
+       ldr     x2, =CCI_MN_DVM_DOMAIN_CTL_SET
+       bl      ccn504_add_masters_to_dvm
+
+       /* Set all RN-I ports to QoS of 15 */
+       ldr     x0, =CCI_S0_QOS_CONTROL_BASE(0)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S1_QOS_CONTROL_BASE(0)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S2_QOS_CONTROL_BASE(0)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+
+       ldr     x0, =CCI_S0_QOS_CONTROL_BASE(2)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S1_QOS_CONTROL_BASE(2)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S2_QOS_CONTROL_BASE(2)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+
+       ldr     x0, =CCI_S0_QOS_CONTROL_BASE(6)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S1_QOS_CONTROL_BASE(6)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S2_QOS_CONTROL_BASE(6)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+
+       ldr     x0, =CCI_S0_QOS_CONTROL_BASE(12)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S1_QOS_CONTROL_BASE(12)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S2_QOS_CONTROL_BASE(12)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+
+       ldr     x0, =CCI_S0_QOS_CONTROL_BASE(16)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S1_QOS_CONTROL_BASE(16)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S2_QOS_CONTROL_BASE(16)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+
+       ldr     x0, =CCI_S0_QOS_CONTROL_BASE(20)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S1_QOS_CONTROL_BASE(20)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
+       ldr     x0, =CCI_S2_QOS_CONTROL_BASE(20)
+       ldr     x1, =0x00FF000C
+       bl      ccn504_set_qos
 
        /* Set the SMMU page size in the sACR register */
        ldr     x1, =SMMU_BASE
index 098745bd74035a1a13dbbb8eec9f377de316ff5f..0b79a501d9d1d3ea6f7a3f6ce9ad1f0f8161ca0e 100644 (file)
@@ -32,9 +32,9 @@ static struct serdes_config serdes1_cfg_tbl[] = {
        {0x2A, {XFI8, XFI7, XFI6, XFI5, XFI4, XFI3, XFI2, XFI1 } },
        {0x2B, {SGMII8, SGMII7, SGMII6, SGMII5, XAUI1, XAUI1, XAUI1, XAUI1  } },
        {0x32, {XAUI2, XAUI2, XAUI2, XAUI2, XAUI1, XAUI1, XAUI1, XAUI1  } },
-       {0x33, {PCIE2, PCIE2, PCIE2, PCIE2, QSGMII_D, QSGMII_C, QSGMII_B,
-               QSGMII_A} },
-       {0x35, {QSGMII_D, QSGMII_C, QSGMII_B, PCIE2, XFI4, XFI3, XFI2, XFI1 } },
+       {0x33, {PCIE2, PCIE2, PCIE2, PCIE2, QSGMII_C, QSGMII_D, QSGMII_A,
+               QSGMII_B} },
+       {0x35, {QSGMII_C, QSGMII_D, QSGMII_A, PCIE2, XFI4, XFI3, XFI2, XFI1 } },
                {}
 };
 static struct serdes_config serdes2_cfg_tbl[] = {
index c4c43447599395ca77d0c4adc7fd5d7508847f87..0a8c88de9e3280e003591b20084ee4f91cc47ca7 100644 (file)
@@ -15,6 +15,9 @@ dtb-$(CONFIG_EXYNOS5) += exynos5250-arndale.dtb \
        exynos5420-peach-pit.dtb \
        exynos5800-peach-pi.dtb \
        exynos5422-odroidxu3.dtb
+dtb-$(CONFIG_ARCH_ROCKCHIP) += \
+       rk3288-firefly.dtb \
+       rk3288-jerry.dtb
 dtb-$(CONFIG_TEGRA) += tegra20-harmony.dtb \
        tegra20-medcom-wide.dtb \
        tegra20-paz00.dtb \
@@ -57,7 +60,10 @@ dtb-$(CONFIG_AM33XX) += am335x-boneblack.dtb am335x-evm.dtb
 
 dtb-$(CONFIG_ARCH_SOCFPGA) +=                          \
        socfpga_arria5_socdk.dtb                        \
+       socfpga_cyclone5_mcvevk.dtb                     \
        socfpga_cyclone5_socdk.dtb                      \
+       socfpga_cyclone5_de0_nano_soc.dtb                       \
+       socfpga_cyclone5_sockit.dtb                     \
        socfpga_cyclone5_socrates.dtb
 dtb-$(CONFIG_TARGET_DRA7XX_EVM) += dra72-evm.dtb
 dtb-$(CONFIG_TARGET_STV0991) += stv0991.dtb
@@ -75,9 +81,11 @@ dtb-$(CONFIG_MACH_SUN4I) += \
        sun4i-a10-gemei-g9.dtb \
        sun4i-a10-hackberry.dtb \
        sun4i-a10-hyundai-a7hd.dtb \
+       sun4i-a10-inet1.dtb \
        sun4i-a10-inet-3f.dtb \
        sun4i-a10-inet-3w.dtb \
        sun4i-a10-inet97fv2.dtb \
+       sun4i-a10-inet9f-rev03.dtb \
        sun4i-a10-itead-iteaduino-plus.dtb \
        sun4i-a10-jesurun-q5.dtb \
        sun4i-a10-marsboard.dtb \
@@ -85,19 +93,23 @@ dtb-$(CONFIG_MACH_SUN4I) += \
        sun4i-a10-mk802.dtb \
        sun4i-a10-mk802ii.dtb \
        sun4i-a10-olinuxino-lime.dtb \
-       sun4i-a10-pcduino.dtb
+       sun4i-a10-pcduino.dtb \
+       sun4i-a10-pov-protab2-ips9.dtb
 dtb-$(CONFIG_MACH_SUN5I) += \
        sun5i-a10s-auxtek-t003.dtb \
        sun5i-a10s-auxtek-t004.dtb \
        sun5i-a10s-mk802.dtb \
        sun5i-a10s-olinuxino-micro.dtb \
        sun5i-a10s-r7-tv-dongle.dtb \
+       sun5i-a10s-wobo-i5.dtb \
        sun5i-a13-ampe-a76.dtb \
        sun5i-a13-forfun-q88db.dtb \
        sun5i-a13-hsg-h702.dtb \
        sun5i-a13-inet-86vs.dtb \
+       sun5i-a13-inet-98v-rev2.dtb \
        sun5i-a13-olinuxino.dtb \
        sun5i-a13-olinuxino-micro.dtb \
+       sun5i-a13-q8-tablet.dtb \
        sun5i-a13-tzx-q8-713b7.dtb \
        sun5i-a13-utoo-p66.dtb
 dtb-$(CONFIG_MACH_SUN6I) += \
@@ -121,6 +133,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \
        sun7i-a20-m3.dtb \
        sun7i-a20-m5.dtb \
        sun7i-a20-mk808c.dtb \
+       sun7i-a20-olimex-som-evb.dtb \
        sun7i-a20-olinuxino-lime.dtb \
        sun7i-a20-olinuxino-lime2.dtb \
        sun7i-a20-olinuxino-micro.dtb \
@@ -134,6 +147,7 @@ dtb-$(CONFIG_MACH_SUN7I) += \
        sun7i-a20-yones-toptech-bd1078.dtb
 dtb-$(CONFIG_MACH_SUN8I_A23) += \
        sun8i-a23-evb.dtb \
+       sun8i-a23-gt90h-v4.dtb \
        sun8i-a23-ippo-q8h-v5.dtb \
        sun8i-a23-ippo-q8h-v1.2.dtb
 dtb-$(CONFIG_MACH_SUN8I_A33) += \
diff --git a/arch/arm/dts/cros-ec-sbs.dtsi b/arch/arm/dts/cros-ec-sbs.dtsi
new file mode 100644 (file)
index 0000000..3f35d20
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Smart battery dts fragment for devices that use cros-ec-sbs
+ *
+ * Copyright (c) 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+*/
+
+&i2c_tunnel {
+       battery: sbs-battery@b {
+               compatible = "sbs,sbs-battery";
+               reg = <0xb>;
+               sbs,i2c-retry-count = <2>;
+               sbs,poll-retry-count = <1>;
+       };
+};
index 32c0098bd8be7138925d867a387cd31bd701a203..bda549998861c65b6cfd66c9c29a4fc68996c3fb 100644 (file)
                };
        };
 
+       i2c@12C90000 {
+               clock-frequency = <100000>;
+               tpm@20 {
+                       reg = <0x20>;
+                       u-boot,i2c-offset-len = <0>;
+                       compatible = "infineon,slb9635tt";
+               };
+       };
+
        spi@12d30000 {
                spi-max-frequency = <50000000>;
                firmware_storage_spi: flash@0 {
index 76d5323dc314ab7aedbcd910995fdb09f9aa1345..81b3d29f9cf032d962f1e41c8dc0168e8079d654 100644 (file)
                                         <&gpy4 2 0>;
        };
 
+       i2c@12C90000 {
+               clock-frequency = <100000>;
+               tpm@20 {
+                       reg = <0x20>;
+                       compatible = "infineon,slb9645tt";
+               };
+       };
+
        mmc@12200000 {
                samsung,bus-width = <8>;
                samsung,timing = <1 3 3>;
index 2d2b7c9bdea544ba9e15047cb383828c26d7c520..16d52f4928121afce9ca12c4d263c6ae6ddfea67 100644 (file)
 
        i2c@12E10000 { /* i2c9 */
                clock-frequency = <400000>;
-                tpm@20 {
-                        compatible = "infineon,slb9645tt";
-                        reg = <0x20>;
+               tpm@20 {
+                       compatible = "infineon,slb9645tt";
+                       reg = <0x20>;
                };
        };
 
index 600c2948cf3eebdce9be99b91e2ffcbe4224d6f9..1d7ff23c933cbeef16c088be12030b069b08c761 100644 (file)
@@ -72,9 +72,9 @@
 
        i2c@12E10000 { /* i2c9 */
                clock-frequency = <400000>;
-                tpm@20 {
-                        compatible = "infineon,slb9645tt";
-                        reg = <0x20>;
+               tpm@20 {
+                       compatible = "infineon,slb9645tt";
+                       reg = <0x20>;
                };
        };
 
diff --git a/arch/arm/dts/rk3288-firefly.dts b/arch/arm/dts/rk3288-firefly.dts
new file mode 100644 (file)
index 0000000..aed8d3a
--- /dev/null
@@ -0,0 +1,75 @@
+/*
+ * Copyright (c) 2014, 2015 FUKAUMI Naoki <naobsd@gmail.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+ X11
+ */
+
+/dts-v1/;
+#include "rk3288-firefly.dtsi"
+
+/ {
+       model = "Firefly-RK3288";
+       compatible = "firefly,firefly-rk3288", "rockchip,rk3288";
+
+       chosen {
+               stdout-path = &uart2;
+       };
+
+       config {
+               u-boot,dm-pre-reloc;
+               u-boot,boot-led = "firefly:green:power";
+       };
+};
+
+&dmc {
+       rockchip,num-channels = <2>;
+       rockchip,pctl-timing = <0x29a 0xc8 0x1f8 0x42 0x4e 0x4 0xea 0xa
+               0x5 0x0 0xa 0x7 0x19 0x24 0xa 0x7
+               0x5 0xa 0x5 0x200 0x5 0x10 0x40 0x0
+               0x1 0x7 0x7 0x4 0xc 0x43 0x100 0x0
+               0x5 0x0>;
+       rockchip,phy-timing = <0x48f9aab4 0xea0910 0x1002c200
+               0xa60 0x40 0x10 0x0>;
+       rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf>;
+       rockchip,sdram-params = <0x30B25564 0x627 3 666000000 3 9 1>;
+};
+
+&ir {
+       gpios = <&gpio7 0 GPIO_ACTIVE_LOW>;
+};
+
+&pinctrl {
+       u-boot,dm-pre-reloc;
+       act8846 {
+               pmic_vsel: pmic-vsel {
+                       rockchip,pins = <7 14 RK_FUNC_GPIO &pcfg_output_low>;
+               };
+       };
+
+       ir {
+               ir_int: ir-int {
+                       rockchip,pins = <7 0 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&uart2 {
+       u-boot,dm-pre-reloc;
+       reg-shift = <2>;
+};
+
+&sdmmc {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio3 {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio8 {
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/rk3288-firefly.dtsi b/arch/arm/dts/rk3288-firefly.dtsi
new file mode 100644 (file)
index 0000000..5aec1b8
--- /dev/null
@@ -0,0 +1,457 @@
+/*
+ * Copyright (c) 2014, 2015 FUKAUMI Naoki <naobsd@gmail.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+ X11
+ */
+
+#include "rk3288.dtsi"
+
+/ {
+       memory {
+               reg = <0 0x80000000>;
+       };
+
+       ext_gmac: external-gmac-clock {
+               compatible = "fixed-clock";
+               #clock-cells = <0>;
+               clock-frequency = <125000000>;
+               clock-output-names = "ext_gmac";
+       };
+
+       ir: ir-receiver {
+               compatible = "gpio-ir-receiver";
+               pinctrl-names = "default";
+               pinctrl-0 = <&ir_int>;
+       };
+
+       keys: gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               button@0 {
+                       gpio-key,wakeup = <1>;
+                       gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
+                       label = "GPIO Power";
+                       linux,code = <116>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwr_key>;
+               };
+       };
+
+       leds {
+               u-boot,dm-pre-reloc;
+               compatible = "gpio-leds";
+
+               work {
+                       u-boot,dm-pre-reloc;
+                       gpios = <&gpio8 1 GPIO_ACTIVE_LOW>;
+                       label = "firefly:blue:user";
+                       linux,default-trigger = "rc-feedback";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&work_led>;
+               };
+
+               power {
+                       u-boot,dm-pre-reloc;
+                       gpios = <&gpio8 2 GPIO_ACTIVE_LOW>;
+                       label = "firefly:green:power";
+                       linux,default-trigger = "default-on";
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&power_led>;
+               };
+       };
+
+       vcc_sys: vsys-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_sys";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       vcc_sd: sdmmc-regulator {
+               compatible = "regulator-fixed";
+               gpio = <&gpio7 11 GPIO_ACTIVE_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sdmmc_pwr>;
+               regulator-name = "vcc_sd";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               startup-delay-us = <100000>;
+               vin-supply = <&vcc_io>;
+       };
+
+       vcc_flash: flash-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_flash";
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_io>;
+       };
+
+       vcc_5v: usb-regulator {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc_host_5v: usb-host-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 14 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&host_vbus_drv>;
+               regulator-name = "vcc_host_5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               vin-supply = <&vcc_5v>;
+       };
+
+       vcc_otg_5v: usb-otg-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&otg_vbus_drv>;
+               regulator-name = "vcc_otg_5v";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+               vin-supply = <&vcc_5v>;
+       };
+};
+
+&cpu0 {
+       cpu0-supply = <&vdd_cpu>;
+};
+
+&emmc {
+       broken-cd;
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       disable-wp;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_clk>, <&emmc_cmd>, <&emmc_pwr>, <&emmc_bus8>;
+       vmmc-supply = <&vcc_io>;
+       vqmmc-supply = <&vcc_flash>;
+       status = "okay";
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c5>;
+       status = "okay";
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+       status = "okay";
+
+       vdd_cpu: syr827@40 {
+               compatible = "silergy,syr827";
+               fcs,suspend-voltage-selector = <1>;
+               reg = <0x40>;
+               regulator-name = "vdd_cpu";
+               regulator-min-microvolt = <850000>;
+               regulator-max-microvolt = <1350000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vdd_gpu: syr828@41 {
+               compatible = "silergy,syr828";
+               fcs,suspend-voltage-selector = <1>;
+               reg = <0x41>;
+               regulator-name = "vdd_gpu";
+               regulator-min-microvolt = <850000>;
+               regulator-max-microvolt = <1350000>;
+               regulator-always-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       hym8563: hym8563@51 {
+               compatible = "haoyu,hym8563";
+               reg = <0x51>;
+               #clock-cells = <0>;
+               clock-frequency = <32768>;
+               clock-output-names = "xin32k";
+               interrupt-parent = <&gpio7>;
+               interrupts = <4 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&rtc_int>;
+       };
+
+       act8846: act8846@5a {
+               compatible = "active-semi,act8846";
+               reg = <0x5a>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_vsel>, <&pwr_hold>;
+               system-power-controller;
+
+               regulators {
+                       vcc_ddr: REG1 {
+                               regulator-name = "vcc_ddr";
+                               regulator-min-microvolt = <1200000>;
+                               regulator-max-microvolt = <1200000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_io: REG2 {
+                               regulator-name = "vcc_io";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vdd_log: REG3 {
+                               regulator-name = "vdd_log";
+                               regulator-min-microvolt = <1100000>;
+                               regulator-max-microvolt = <1100000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_20: REG4 {
+                               regulator-name = "vcc_20";
+                               regulator-min-microvolt = <2000000>;
+                               regulator-max-microvolt = <2000000>;
+                               regulator-always-on;
+                       };
+
+                       vccio_sd: REG5 {
+                               regulator-name = "vccio_sd";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-always-on;
+                       };
+
+                       vdd10_lcd: REG6 {
+                               regulator-name = "vdd10_lcd";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-always-on;
+                       };
+
+                       vcca_18: REG7 {
+                               regulator-name = "vcca_18";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                       };
+
+                       vcca_33: REG8 {
+                               regulator-name = "vcca_33";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       vcc_lan: REG9 {
+                               regulator-name = "vcc_lan";
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                       };
+
+                       vdd_10: REG10 {
+                               regulator-name = "vdd_10";
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-always-on;
+                       };
+
+                       vcc_18: REG11 {
+                               regulator-name = "vcc_18";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+
+                       vcc18_lcd: REG12 {
+                               regulator-name = "vcc18_lcd";
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-always-on;
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       status = "okay";
+};
+
+&i2c2 {
+       status = "okay";
+};
+
+&i2c4 {
+       status = "okay";
+};
+
+&i2c5 {
+       status = "okay";
+};
+
+&pinctrl {
+       pcfg_output_high: pcfg-output-high {
+               output-high;
+       };
+
+       pcfg_output_low: pcfg-output-low {
+               output-low;
+       };
+
+       act8846 {
+               pwr_hold: pwr-hold {
+                       rockchip,pins = <0 1 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       gmac {
+               phy_int: phy-int {
+                       rockchip,pins = <0 9 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               phy_pmeb: phy-pmeb {
+                       rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               phy_rst: phy-rst {
+                       rockchip,pins = <4 8 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       hym8563 {
+               rtc_int: rtc-int {
+                       rockchip,pins = <7 4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       keys {
+               pwr_key: pwr-key {
+                       rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       leds {
+               power_led: power-led {
+                       rockchip,pins = <8 2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               work_led: work-led {
+                       rockchip,pins = <8 1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sdmmc {
+               sdmmc_pwr: sdmmc-pwr {
+                       rockchip,pins = <7 11 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb_host {
+               host_vbus_drv: host-vbus-drv {
+                       rockchip,pins = <0 14 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usbhub_rst: usbhub-rst {
+                       rockchip,pins = <8 3 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       usb_otg {
+               otg_vbus_drv: otg-vbus-drv {
+                       rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&saradc {
+       vref-supply = <&vcc_18>;
+       status = "okay";
+};
+
+&sdio0 {
+       broken-cd;
+       bus-width = <4>;
+       disable-wp;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdio0_bus4>, <&sdio0_cmd>, <&sdio0_clk>;
+       vmmc-supply = <&vcc_18>;
+       status = "disabled";
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       card-detect-delay = <200>;
+       disable-wp;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk>, <&sdmmc_cmd>, <&sdmmc_cd>, <&sdmmc_bus4>;
+       vmmc-supply = <&vcc_sd>;
+       status = "okay";
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi0_clk>, <&spi0_cs0>, <&spi0_tx>, <&spi0_rx>, <&spi0_cs1>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer>, <&uart0_cts>, <&uart0_rts>;
+       status = "okay";
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&uart3 {
+       status = "okay";
+};
+
+&usb_host1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usbhub_rst>;
+       status = "okay";
+};
+
+&usb_otg {
+       status = "okay";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
+
+&wdt {
+       status = "okay";
+};
diff --git a/arch/arm/dts/rk3288-jerry.dts b/arch/arm/dts/rk3288-jerry.dts
new file mode 100644 (file)
index 0000000..da37ea8
--- /dev/null
@@ -0,0 +1,203 @@
+/*
+ * Google Veyron Jerry Rev 3+ board device tree source
+ *
+ * Copyright 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+/dts-v1/;
+#include "rk3288-veyron-chromebook.dtsi"
+#include "cros-ec-sbs.dtsi"
+
+/ {
+       model = "Google Jerry";
+       compatible = "google,veyron-jerry-rev7", "google,veyron-jerry-rev6",
+                    "google,veyron-jerry-rev5", "google,veyron-jerry-rev4",
+                    "google,veyron-jerry-rev3", "google,veyron-jerry",
+                    "google,veyron", "rockchip,rk3288";
+
+        chosen {
+                stdout-path = &uart2;
+        };
+
+       panel_regulator: panel-regualtor {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio7 14 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&lcd_enable_h>;
+               regulator-name = "panel_regulator";
+               vin-supply = <&vcc33_sys>;
+       };
+
+       vcc18_lcd: vcc18-lcd {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 13 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&avdd_1v8_disp_en>;
+               regulator-name = "vcc18_lcd";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc18_wl>;
+       };
+
+       backlight_regulator: backlight-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio2 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bl_pwr_en>;
+               regulator-name = "backlight_regulator";
+               vin-supply = <&vcc33_sys>;
+               startup-delay-us = <15000>;
+       };
+};
+
+&gpio_keys {
+       power {
+               gpios = <&gpio0 5 GPIO_ACTIVE_LOW>;
+       };
+};
+
+&backlight {
+       power-supply = <&backlight_regulator>;
+};
+
+&panel {
+       power-supply= <&panel_regulator>;
+};
+
+&rk808 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&pmic_int_l &dvs_1 &dvs_2>;
+       dvs-gpios = <&gpio7 12 GPIO_ACTIVE_HIGH>,
+                   <&gpio7 15 GPIO_ACTIVE_HIGH>;
+
+       regulators {
+               mic_vcc: LDO_REG2 {
+                       regulator-always-on;
+                       regulator-boot-on;
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-name = "mic_vcc";
+                       regulator-suspend-mem-disabled;
+               };
+       };
+};
+
+&sdmmc {
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd_disabled &sdmmc_cd_gpio
+                       &sdmmc_bus4>;
+       disable-wp;
+};
+
+&vcc_5v {
+       enable-active-high;
+       gpio = <&gpio7 21 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&drv_5v>;
+};
+
+&vcc50_hdmi {
+       enable-active-high;
+       gpio = <&gpio5 19 GPIO_ACTIVE_HIGH>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&vcc50_hdmi_en>;
+};
+
+&edp {
+       pinctrl-names = "default";
+       pinctrl-0 = <&edp_hpd>;
+};
+
+&pinctrl {
+       backlight {
+               bl_pwr_en: bl_pwr_en {
+                       rockchip,pins = <2 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       buck-5v {
+               drv_5v: drv-5v {
+                       rockchip,pins = <7 21 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       edp {
+               edp_hpd: edp_hpd {
+                       rockchip,pins = <7 11 RK_FUNC_2 &pcfg_pull_down>;
+               };
+       };
+
+       emmc {
+               /* Make sure eMMC is not in reset */
+               emmc_deassert_reset: emmc-deassert-reset {
+                       rockchip,pins = <2 9 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       hdmi {
+               vcc50_hdmi_en: vcc50-hdmi-en {
+                       rockchip,pins = <5 19 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       lcd {
+               lcd_enable_h: lcd-en {
+                       rockchip,pins = <7 14 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               avdd_1v8_disp_en: avdd-1v8-disp-en {
+                       rockchip,pins = <2 13 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       pmic {
+               dvs_1: dvs-1 {
+                       rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+
+               dvs_2: dvs-2 {
+                       rockchip,pins = <7 15 RK_FUNC_GPIO &pcfg_pull_down>;
+               };
+       };
+};
+
+&i2c4 {
+       status = "okay";
+
+       /*
+        * Trackpad pin control is shared between Elan and Synaptics devices
+        * so we have to pull it up to the bus level.
+        */
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c4_xfer &trackpad_int>;
+
+       trackpad@15 {
+               compatible = "elan,i2c_touchpad";
+               interrupt-parent = <&gpio7>;
+               interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+               /*
+                * Remove the inherited pinctrl settings to avoid clashing
+                * with bus-wide ones.
+                */
+               /delete-property/pinctrl-names;
+               /delete-property/pinctrl-0;
+               reg = <0x15>;
+               vcc-supply = <&vcc33_io>;
+               wakeup-source;
+       };
+
+       trackpad@2c {
+               compatible = "hid-over-i2c";
+               interrupt-parent = <&gpio7>;
+               interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+               reg = <0x2c>;
+               hid-descr-addr = <0x0020>;
+               vcc-supply = <&vcc33_io>;
+               wakeup-source;
+       };
+};
diff --git a/arch/arm/dts/rk3288-thermal.dtsi b/arch/arm/dts/rk3288-thermal.dtsi
new file mode 100644 (file)
index 0000000..59482c1
--- /dev/null
@@ -0,0 +1,88 @@
+/*
+ * Device Tree Source for RK3288 SoC thermal
+ *
+ * Copyright (c) 2014, Fuzhou Rockchip Electronics Co., Ltd
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <dt-bindings/thermal/thermal.h>
+
+reserve_thermal: reserve_thermal {
+       polling-delay-passive = <1000>; /* milliseconds */
+       polling-delay = <5000>; /* milliseconds */
+
+                       /* sensor       ID */
+       thermal-sensors = <&tsadc       0>;
+
+};
+
+cpu_thermal: cpu_thermal {
+       polling-delay-passive = <100>; /* milliseconds */
+       polling-delay = <5000>; /* milliseconds */
+
+                       /* sensor       ID */
+       thermal-sensors = <&tsadc       1>;
+       linux,hwmon;
+
+       trips {
+               cpu_alert0: cpu_alert0 {
+                       temperature = <70000>; /* millicelsius */
+                       hysteresis = <2000>; /* millicelsius */
+                       type = "passive";
+               };
+               cpu_alert1: cpu_alert1 {
+                       temperature = <75000>; /* millicelsius */
+                       hysteresis = <2000>; /* millicelsius */
+                       type = "passive";
+               };
+               cpu_crit: cpu_crit {
+                       temperature = <100000>; /* millicelsius */
+                       hysteresis = <2000>; /* millicelsius */
+                       type = "critical";
+               };
+       };
+
+       cooling-maps {
+               map0 {
+                       trip = <&cpu_alert0>;
+                       cooling-device =
+                               <&cpu0 THERMAL_NO_LIMIT 6>;
+               };
+               map1 {
+                       trip = <&cpu_alert1>;
+                       cooling-device =
+                               <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+               };
+       };
+};
+
+gpu_thermal: gpu_thermal {
+       polling-delay-passive = <100>; /* milliseconds */
+       polling-delay = <5000>; /* milliseconds */
+
+                       /* sensor       ID */
+       thermal-sensors = <&tsadc       2>;
+       linux,hwmon;
+
+       trips {
+               gpu_alert0: gpu_alert0 {
+                       temperature = <80000>; /* millicelsius */
+                       hysteresis = <2000>; /* millicelsius */
+                       type = "passive";
+               };
+               gpu_crit: gpu_crit {
+                       temperature = <100000>; /* millicelsius */
+                       hysteresis = <2000>; /* millicelsius */
+                       type = "critical";
+               };
+       };
+
+       cooling-maps {
+               map0 {
+                       trip = <&gpu_alert0>;
+                       cooling-device =
+                               <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+               };
+       };
+};
diff --git a/arch/arm/dts/rk3288-veyron-chromebook.dtsi b/arch/arm/dts/rk3288-veyron-chromebook.dtsi
new file mode 100644 (file)
index 0000000..6d619c9
--- /dev/null
@@ -0,0 +1,200 @@
+/*
+ * Google Veyron (and derivatives) board device tree source
+ *
+ * Copyright 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <dt-bindings/clock/rockchip,rk808.h>
+#include <dt-bindings/input/input.h>
+#include "rk3288-veyron.dtsi"
+
+/ {
+       aliases {
+               i2c20 = &i2c_tunnel;
+       };
+
+       gpio_keys: gpio-keys {
+               pinctrl-0 = <&pwr_key_h &ap_lid_int_l>;
+               lid {
+                       label = "Lid";
+                       gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
+                       linux,code = <0>; /* SW_LID */
+                       linux,input-type = <5>; /* EV_SW */
+                       debounce-interval = <1>;
+                       gpio-key,wakeup;
+                };
+       };
+
+       gpio-charger {
+               compatible = "gpio-charger";
+               gpios = <&gpio0 8 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ac_present_ap>;
+               charger-type = "mains";
+       };
+
+       /* A non-regulated voltage from power supply or battery */
+       vccsys: vccsys {
+               compatible = "regulator-fixed";
+               regulator-name = "vccsys";
+               regulator-boot-on;
+               regulator-always-on;
+       };
+
+       vcc33_sys: vcc33-sys {
+               vin-supply = <&vccsys>;
+       };
+
+       vcc_5v: vcc-5v {
+               vin-supply = <&vccsys>;
+       };
+
+       /* This turns on vbus for host1 (dwc2) */
+       vcc5_host1: vcc5-host1-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 11 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&host1_pwr_en>;
+               regulator-name = "vcc5_host1";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+
+       /* This turns on vbus for otg for host mode (dwc2) */
+       vcc5v_otg: vcc5v-otg-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 12 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&usbotg_pwren_h>;
+               regulator-name = "vcc5_host2";
+               regulator-always-on;
+               regulator-boot-on;
+       };
+};
+
+&rk808 {
+       regulators {
+               vcc33_ccd: LDO_REG8 {
+                       regulator-always-on;
+                       regulator-boot-on;
+                       regulator-min-microvolt = <3300000>;
+                       regulator-max-microvolt = <3300000>;
+                       regulator-name = "vcc33_ccd";
+                       regulator-suspend-mem-disabled;
+               };
+       };
+};
+
+&spi0 {
+       status = "okay";
+
+       cros_ec: ec@0 {
+               compatible = "google,cros-ec-spi";
+               spi-max-frequency = <3000000>;
+               interrupt-parent = <&gpio7>;
+               interrupts = <7 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ec_int>;
+               reg = <0>;
+               google,cros-ec-spi-pre-delay = <30>;
+
+               i2c_tunnel: i2c-tunnel {
+                       compatible = "google,cros-ec-i2c-tunnel";
+                       google,remote-bus = <0>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+               };
+       };
+};
+
+&i2c4 {
+       trackpad@15 {
+               compatible = "elan,i2c_touchpad";
+               interrupt-parent = <&gpio7>;
+               interrupts = <3 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&trackpad_int>;
+               reg = <0x15>;
+               vcc-supply = <&vcc33_io>;
+               wakeup-source;
+       };
+};
+
+&pinctrl {
+       pinctrl-0 = <
+               /* Common for sleep and wake, but no owners */
+               &ddr0_retention
+               &ddrio_pwroff
+               &global_pwroff
+
+               /* Wake only */
+               &suspend_l_wake
+               &bt_dev_wake_awake
+       >;
+       pinctrl-1 = <
+               /* Common for sleep and wake, but no owners */
+               &ddr0_retention
+               &ddrio_pwroff
+               &global_pwroff
+
+               /* Sleep only */
+               &suspend_l_sleep
+               &bt_dev_wake_sleep
+       >;
+
+       buttons {
+               ap_lid_int_l: ap-lid-int-l {
+                       rockchip,pins = <0 6 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       charger {
+               ac_present_ap: ac-present-ap {
+                       rockchip,pins = <0 8 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       cros-ec {
+               ec_int: ec-int {
+                       rockchip,pins = <7 7 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sdmmc {
+               sdmmc_wp_gpio: sdmmc-wp-gpio {
+                       rockchip,pins = <7 10 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       suspend {
+               suspend_l_wake: suspend-l-wake {
+                       rockchip,pins = <0 17 RK_FUNC_GPIO &pcfg_output_low>;
+               };
+
+               suspend_l_sleep: suspend-l-sleep {
+                       rockchip,pins = <0 17 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       trackpad {
+               trackpad_int: trackpad-int {
+                       rockchip,pins = <7 3 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       usb-host {
+               host1_pwr_en: host1-pwr-en {
+                       rockchip,pins = <0 11 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               usbotg_pwren_h: usbotg-pwren-h {
+                       rockchip,pins = <0 12 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+#include "cros-ec-keyboard.dtsi"
diff --git a/arch/arm/dts/rk3288-veyron.dtsi b/arch/arm/dts/rk3288-veyron.dtsi
new file mode 100644 (file)
index 0000000..7e37158
--- /dev/null
@@ -0,0 +1,844 @@
+/*
+ * Google Veyron (and derivatives) board device tree source
+ *
+ * Copyright 2014 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <dt-bindings/clock/rockchip,rk808.h>
+#include <dt-bindings/input/input.h>
+#include "rk3288.dtsi"
+
+/ {
+       memory {
+               reg = <0x0 0x80000000>;
+       };
+
+       chosen {
+               stdout-path = &uart2;
+       };
+
+       config {
+               u-boot,dm-pre-reloc;
+               u-boot,boot0 = &spi_flash;
+       };
+
+       firmware {
+               chromeos {
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&fw_wp_ap>;
+                       write-protect-gpio = <&gpio7 6 GPIO_ACTIVE_LOW>;
+               };
+       };
+
+       backlight: backlight {
+               compatible = "pwm-backlight";
+               brightness-levels = <
+                         0   1   2   3   4   5   6   7
+                         8   9  10  11  12  13  14  15
+                        16  17  18  19  20  21  22  23
+                        24  25  26  27  28  29  30  31
+                        32  33  34  35  36  37  38  39
+                        40  41  42  43  44  45  46  47
+                        48  49  50  51  52  53  54  55
+                        56  57  58  59  60  61  62  63
+                        64  65  66  67  68  69  70  71
+                        72  73  74  75  76  77  78  79
+                        80  81  82  83  84  85  86  87
+                        88  89  90  91  92  93  94  95
+                        96  97  98  99 100 101 102 103
+                       104 105 106 107 108 109 110 111
+                       112 113 114 115 116 117 118 119
+                       120 121 122 123 124 125 126 127
+                       128 129 130 131 132 133 134 135
+                       136 137 138 139 140 141 142 143
+                       144 145 146 147 148 149 150 151
+                       152 153 154 155 156 157 158 159
+                       160 161 162 163 164 165 166 167
+                       168 169 170 171 172 173 174 175
+                       176 177 178 179 180 181 182 183
+                       184 185 186 187 188 189 190 191
+                       192 193 194 195 196 197 198 199
+                       200 201 202 203 204 205 206 207
+                       208 209 210 211 212 213 214 215
+                       216 217 218 219 220 221 222 223
+                       224 225 226 227 228 229 230 231
+                       232 233 234 235 236 237 238 239
+                       240 241 242 243 244 245 246 247
+                       248 249 250 251 252 253 254 255>;
+               default-brightness-level = <128>;
+               enable-gpios = <&gpio7 2 GPIO_ACTIVE_HIGH>;
+               backlight-boot-off;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bl_en>;
+               pwms = <&pwm0 0 1000000 0>;
+       };
+
+       panel: panel {
+               compatible ="cnm,n116bgeea2","simple-panel";
+               status = "okay";
+               power-supply = <&vcc33_lcd>;
+               backlight = <&backlight>;
+       };
+
+       gpio_keys: gpio-keys {
+               compatible = "gpio-keys";
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwr_key_h>;
+               power {
+                       label = "Power";
+                       gpios = <&gpio0 5 GPIO_ACTIVE_HIGH>;
+                       linux,code = <KEY_POWER>;
+                       debounce-interval = <100>;
+                       gpio-key,wakeup;
+               };
+       };
+
+       gpio-restart {
+               compatible = "gpio-restart";
+               gpios = <&gpio0 13 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ap_warm_reset_h>;
+               priority = /bits/ 8 <200>;
+       };
+
+       sound {
+               compatible = "rockchip,rockchip-audio-max98090";
+               rockchip,model = "ROCKCHIP-I2S";
+               rockchip,i2s-controller = <&i2s>;
+               rockchip,audio-codec = <&max98090>;
+               rockchip,hp-det-gpios = <&gpio6 5 GPIO_ACTIVE_HIGH>;
+               rockchip,mic-det-gpios = <&gpio6 11 GPIO_ACTIVE_LOW>;
+               rockchip,headset-codec = <&headsetcodec>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&mic_det>, <&hp_det>;
+       };
+
+       vdd_logic: pwm-regulator {
+               compatible = "pwm-regulator";
+               pwms = <&pwm1 0 2000 0>;
+
+               voltage-table = <1350000 0>,
+                               <1300000 10>,
+                               <1250000 20>,
+                               <1200000 31>,
+                               <1150000 41>,
+                               <1100000 52>,
+                               <1050000 62>,
+                               <1000000 72>,
+                               < 950000 83>;
+
+               regulator-min-microvolt = <950000>;
+               regulator-max-microvolt = <1350000>;
+               regulator-name = "vdd_logic";
+               regulator-ramp-delay = <4000>;
+       };
+
+       vcc33_sys: vcc33-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc33_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vccsys>;
+       };
+
+       vcc_5v: vcc-5v {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_5v";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+       };
+
+       vcc50_hdmi: vcc50-hdmi {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc50_hdmi";
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc_5v>;
+       };
+
+       bt_regulator: bt-regulator {
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card pouplated):
+                * - BT_I2S_WS_BT_RFDISABLE_L
+                * - No connect
+                */
+
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio4 29 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_enable_l>;
+               regulator-name = "bt_regulator";
+       };
+
+       wifi_regulator: wifi-regulator {
+               /*
+                * On the module itself this is one of these (depending
+                * on the actual card populated):
+                * - SDIO_RESET_L_WL_REG_ON
+                * - PDN (power down when low)
+                */
+
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio4 28 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_enable_h>;
+               regulator-name = "wifi_regulator";
+
+               /* Faux input supply.  See bt_regulator description. */
+               vin-supply = <&bt_regulator>;
+       };
+
+       io-domains {
+               compatible = "rockchip,rk3288-io-voltage-domain";
+               rockchip,grf = <&grf>;
+
+               audio-supply = <&vcc18_codec>;
+               bb-supply = <&vcc33_io>;
+               dvp-supply = <&vcc_18>;
+               flash0-supply = <&vcc18_flashio>;
+               gpio1830-supply = <&vcc33_io>;
+               gpio30-supply = <&vcc33_io>;
+               lcdc-supply = <&vcc33_lcd>;
+               sdcard-supply = <&vccio_sd>;
+               wifi-supply = <&vcc18_wl>;
+       };
+};
+
+&cpu0 {
+       cpu0-supply = <&vdd_cpu>;
+};
+
+&dmc {
+       logic-supply = <&vdd_logic>;
+       rockchip,odt-disable-freq = <333000000>;
+       rockchip,dll-disable-freq = <333000000>;
+       rockchip,sr-enable-freq = <333000000>;
+       rockchip,pd-enable-freq = <666000000>;
+       rockchip,auto-self-refresh-cnt = <0>;
+       rockchip,auto-power-down-cnt = <64>;
+       rockchip,ddr-speed-bin = <21>;
+       rockchip,trcd = <10>;
+       rockchip,trp = <10>;
+       operating-points = <
+               /* KHz    uV */
+               200000 1050000
+               333000 1100000
+               533000 1150000
+               666000 1200000
+       >;
+       rockchip,num-channels = <2>;
+       rockchip,pctl-timing = <0x29a 0xc8 0x1f8 0x42 0x4e 0x4 0xea 0xa
+               0x5 0x0 0xa 0x7 0x19 0x24 0xa 0x7
+               0x5 0xa 0x5 0x200 0x5 0x10 0x40 0x0
+               0x1 0x7 0x7 0x4 0xc 0x43 0x100 0x0
+               0x5 0x0>;
+       rockchip,phy-timing = <0x48f9aab4 0xea0910 0x1002c200
+               0xa60 0x40 0x10 0x0>;
+       rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf>;
+       rockchip,sdram-params = <0x30B25564 0x627 3 666000000 3 9 1>;
+};
+
+&efuse {
+       status = "okay";
+};
+
+&emmc {
+       broken-cd;
+       bus-width = <8>;
+       cap-mmc-highspeed;
+       mmc-hs200-1_8v;
+       disable-wp;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&emmc_clk &emmc_cmd &emmc_bus8 &emmc_deassert_reset>;
+       status = "okay";
+};
+
+&sdio0 {
+       broken-cd;
+       bus-width = <4>;
+       cap-sd-highspeed;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       cap-sdio-irq;
+       card-external-vcc-supply = <&wifi_regulator>;
+       clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>, <&cru SCLK_SDIO0_DRV>,
+                <&cru SCLK_SDIO0_SAMPLE>, <&rk808 RK808_CLKOUT1>;
+       clock-names = "biu", "ciu", "ciu_drv", "ciu_sample", "card_ext_clock";
+       keep-power-in-suspend;
+       non-removable;
+       num-slots = <1>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdio0_clk &sdio0_cmd &sdio0_bus4>;
+       status = "okay";
+       vmmc-supply = <&vcc33_sys>;
+       vqmmc-supply = <&vcc18_wl>;
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       sd-uhs-sdr12;
+       sd-uhs-sdr25;
+       sd-uhs-sdr50;
+       sd-uhs-sdr104;
+       card-detect-delay = <200>;
+       cd-gpios = <&gpio7 5 GPIO_ACTIVE_LOW>;
+       num-slots = <1>;
+       status = "okay";
+       vmmc-supply = <&vcc33_sd>;
+       vqmmc-supply = <&vccio_sd>;
+};
+
+&spi2 {
+       status = "okay";
+       u-boot,dm-pre-reloc;
+
+       spi_flash: spiflash@0 {
+               u-boot,dm-pre-reloc;
+               compatible = "spidev", "spi-flash";
+               spi-max-frequency = <20000000>; /* Reduce for Dediprog em100 pro */
+               reg = <0>;
+       };
+};
+
+&i2c0 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;         /* 2.5ns measured */
+       i2c-scl-rising-time-ns = <100>;         /* 45ns measured */
+
+       rk808: pmic@1b {
+               compatible = "rockchip,rk808";
+               clock-output-names = "xin32k", "wifibt_32kin";
+               interrupt-parent = <&gpio0>;
+               interrupts = <4 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int_l>;
+               reg = <0x1b>;
+               rockchip,system-power-controller;
+               wakeup-source;
+               #clock-cells = <1>;
+
+               vcc1-supply = <&vcc33_sys>;
+               vcc2-supply = <&vcc33_sys>;
+               vcc3-supply = <&vcc33_sys>;
+               vcc4-supply = <&vcc33_sys>;
+               vcc6-supply = <&vcc_5v>;
+               vcc7-supply = <&vcc33_sys>;
+               vcc8-supply = <&vcc33_sys>;
+               vcc9-supply = <&vcc_5v>;
+               vcc10-supply = <&vcc33_sys>;
+               vcc11-supply = <&vcc_5v>;
+               vcc12-supply = <&vcc_18>;
+
+               vddio-supply = <&vcc33_io>;
+
+               regulators {
+                       vdd_cpu: DCDC_REG1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <750000>;
+                               regulator-max-microvolt = <1450000>;
+                               regulator-name = "vdd_arm";
+                               regulator-ramp-delay = <6001>;
+                               regulator-suspend-mem-disabled;
+                       };
+
+                       vdd_gpu: DCDC_REG2 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <1250000>;
+                               regulator-name = "vdd_gpu";
+                               regulator-ramp-delay = <6001>;
+                               regulator-suspend-mem-disabled;
+                       };
+
+                       vcc135_ddr: DCDC_REG3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vcc135_ddr";
+                               regulator-suspend-mem-enabled;
+                       };
+
+                       /*
+                        * vcc_18 has several aliases.  (vcc18_flashio and
+                        * vcc18_wl).  We'll add those aliases here just to
+                        * make it easier to follow the schematic.  The signals
+                        * are actually hooked together and only separated for
+                        * power measurement purposes).
+                        */
+                       vcc18_wl: vcc18_flashio: vcc_18: DCDC_REG4 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc_18";
+                               regulator-suspend-mem-microvolt = <1800000>;
+                       };
+
+                       /*
+                        * Note that both vcc33_io and vcc33_pmuio are always
+                        * powered together. To simplify the logic in the dts
+                        * we just refer to vcc33_io every time something is
+                        * powered from vcc33_pmuio. In fact, on later boards
+                        * (such as danger) they're the same net.
+                        */
+                       vcc33_io: LDO_REG1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc33_io";
+                               regulator-suspend-mem-microvolt = <3300000>;
+                       };
+
+                       vdd_10: LDO_REG3 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1000000>;
+                               regulator-max-microvolt = <1000000>;
+                               regulator-name = "vdd_10";
+                               regulator-suspend-mem-microvolt = <1000000>;
+                       };
+
+                       vccio_sd: LDO_REG4 {
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vccio_sd";
+                               regulator-suspend-mem-disabled;
+                       };
+
+                       vcc33_sd: LDO_REG5 {
+                               regulator-min-microvolt = <3300000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-name = "vcc33_sd";
+                               regulator-suspend-mem-disabled;
+                       };
+
+                       vcc18_codec: LDO_REG6 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <1800000>;
+                               regulator-name = "vcc18_codec";
+                               regulator-suspend-mem-disabled;
+                       };
+
+                       vdd10_lcd_pwren_h: LDO_REG7 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <2500000>;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-name = "vdd10_lcd_pwren_h";
+                               regulator-suspend-mem-disabled;
+                       };
+
+                       vcc33_lcd: SWITCH_REG1 {
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-name = "vcc33_lcd";
+                               regulator-suspend-mem-disabled;
+                       };
+               };
+       };
+};
+
+&i2c1 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;         /* 2.5ns measured */
+       i2c-scl-rising-time-ns = <100>;         /* 40ns measured */
+
+       tpm: tpm@20 {
+               compatible = "infineon,slb9645tt";
+               reg = <0x20>;
+               powered-while-suspended;
+       };
+};
+
+&i2c2 {
+       status = "okay";
+
+       /* 100kHz since 4.7k resistors don't rise fast enough */
+       clock-frequency = <100000>;
+       i2c-scl-falling-time-ns = <50>;         /* 10ns measured */
+       i2c-scl-rising-time-ns = <800>;         /* 600ns measured */
+
+       max98090: max98090@10 {
+               compatible = "maxim,max98090";
+               reg = <0x10>;
+               interrupt-parent = <&gpio6>;
+               interrupts = <7 IRQ_TYPE_EDGE_FALLING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&int_codec>;
+       };
+};
+
+&i2c3 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;
+       i2c-scl-rising-time-ns = <300>;
+};
+
+&i2c4 {
+       status = "okay";
+
+       clock-frequency = <400000>;
+       i2c-scl-falling-time-ns = <50>;         /* 11ns measured */
+       i2c-scl-rising-time-ns = <300>;         /* 225ns measured */
+
+       headsetcodec: ts3a227e@3b {
+               compatible = "ti,ts3a227e";
+               reg = <0x3b>;
+               interrupt-parent = <&gpio0>;
+               interrupts = <3 IRQ_TYPE_LEVEL_LOW>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&ts3a227e_int_l>;
+               ti,micbias = <7>;               /* MICBIAS = 2.8V */
+       };
+};
+
+&i2c5 {
+       status = "okay";
+
+       clock-frequency = <100000>;
+       i2c-scl-falling-time-ns = <300>;
+       i2c-scl-rising-time-ns = <1000>;
+};
+
+&i2s {
+       status = "okay";
+       clock-names = "i2s_hclk", "i2s_clk", "i2s_clk_out";
+       clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>, <&cru SCLK_I2S0_OUT>;
+};
+
+&wdt {
+       status = "okay";
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&pwm1 {
+       status = "okay";
+};
+
+&uart0 {
+       status = "okay";
+
+       /* Pins don't include flow control by default; add that in */
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
+       /* We need to go faster than 24MHz, so adjust clock parents / rates */
+       assigned-clocks = <&cru SCLK_UART0>;
+       assigned-clock-rates = <48000000>;
+};
+
+&uart1 {
+       status = "okay";
+};
+
+&uart2 {
+       status = "okay";
+       u-boot,dm-pre-reloc;
+       reg-shift = <2>;
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
+
+&edp {
+       status = "okay";
+       rockchip,panel = <&panel>;
+};
+
+&hdmi {
+       status = "okay";
+};
+
+&hdmi_audio {
+       status = "okay";
+};
+
+&gpu {
+       status = "okay";
+};
+
+&tsadc {
+       tsadc-tshut-mode = <1>; /* tshut mode 0:CRU 1:GPIO */
+       tsadc-tshut-polarity = <1>; /* tshut polarity 0:LOW 1:HIGH */
+       status = "okay";
+};
+
+&pinctrl {
+       u-boot,dm-pre-reloc;
+       pinctrl-names = "default", "sleep";
+       pinctrl-0 = <
+               /* Common for sleep and wake, but no owners */
+               &ddr0_retention
+               &ddrio_pwroff
+               &global_pwroff
+
+               /* Wake only */
+               &bt_dev_wake_awake
+       >;
+       pinctrl-1 = <
+               /* Common for sleep and wake, but no owners */
+               &ddr0_retention
+               &ddrio_pwroff
+               &global_pwroff
+
+               /* Sleep only */
+               &bt_dev_wake_sleep
+       >;
+
+       /* Add this for sdmmc pins to SD card */
+       pcfg_pull_none_drv_8ma: pcfg-pull-none-drv-8ma {
+               drive-strength = <8>;
+       };
+
+       pcfg_pull_up_drv_8ma: pcfg-pull-up-drv-8ma {
+               bias-pull-up;
+               drive-strength = <8>;
+       };
+
+       pcfg_output_high: pcfg-output-high {
+               output-high;
+       };
+
+       pcfg_output_low: pcfg-output-low {
+               output-low;
+       };
+
+       backlight {
+               bl_en: bl-en {
+                       rockchip,pins = <7 2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       buttons {
+               pwr_key_h: pwr-key-h {
+                       rockchip,pins = <0 5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       codec {
+               hp_det: hp-det {
+                       rockchip,pins = <6 5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+               int_codec: int-codec {
+                       rockchip,pins = <6 7 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+               mic_det: mic-det {
+                       rockchip,pins = <6 11 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       emmc {
+               /* Make sure eMMC is not in reset */
+               emmc_deassert_reset: emmc-deassert-reset {
+                       rockchip,pins = <7 12 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+
+               /*
+                * We run eMMC at max speed; bump up drive strength.
+                * We also have external pulls, so disable the internal ones.
+                */
+               emmc_clk: emmc-clk {
+                       rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none_drv_8ma>;
+               };
+
+               emmc_cmd: emmc-cmd {
+                       rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_none_drv_8ma>;
+               };
+
+               emmc_bus8: emmc-bus8 {
+                       rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 1 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 2 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 3 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 4 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 5 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 6 RK_FUNC_2 &pcfg_pull_none_drv_8ma>,
+                                       <3 7 RK_FUNC_2 &pcfg_pull_none_drv_8ma>;
+               };
+       };
+
+       headset {
+               ts3a227e_int_l: ts3a227e-int-l {
+                       rockchip,pins = <0 3 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       pmic {
+               pmic_int_l: pmic-int-l {
+                       rockchip,pins = <RK_GPIO0 4 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       reboot {
+               ap_warm_reset_h: ap-warm-reset-h {
+                       rockchip,pins = <RK_GPIO0 13 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sdio0 {
+               wifi_enable_h: wifienable-h {
+                       rockchip,pins = <4 28 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               /* NOTE: mislabelled on schematic; should be bt_enable_h */
+               bt_enable_l: bt-enable-l {
+                       rockchip,pins = <4 29 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               /*
+                * We run sdio0 at max speed; bump up drive strength.
+                * We also have external pulls, so disable the internal ones.
+                */
+               sdio0_bus4: sdio0-bus4 {
+                       rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <4 21 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <4 22 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <4 23 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdio0_cmd: sdio0-cmd {
+                       rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdio0_clk: sdio0-clk {
+                       rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               /*
+                * These pins are only present on very new veyron boards; on
+                * older boards bt_dev_wake is simply always high.  Note that
+                * gpio4_26 is a NC on old veyron boards, so it doesn't hurt
+                * to map this pin everywhere
+                */
+               bt_dev_wake_sleep: bt-dev-wake-sleep {
+                       rockchip,pins = <4 26 RK_FUNC_GPIO &pcfg_output_low>;
+               };
+
+               bt_dev_wake_awake: bt-dev-wake-awake {
+                       rockchip,pins = <4 26 RK_FUNC_GPIO &pcfg_output_high>;
+               };
+       };
+
+       sdmmc {
+               /*
+                * We run sdmmc at max speed; bump up drive strength.
+                * We also have external pulls, so disable the internal ones.
+                */
+               sdmmc_bus4: sdmmc-bus4 {
+                       rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <6 17 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <6 18 RK_FUNC_1 &pcfg_pull_none_drv_8ma>,
+                                       <6 19 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdmmc_clk: sdmmc-clk {
+                       rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               sdmmc_cmd: sdmmc-cmd {
+                       rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_none_drv_8ma>;
+               };
+
+               /*
+                * Builtin CD line is hooked to ground to prevent JTAG at boot
+                * (and also to get the voltage rail correct).  Make we
+                * configure gpio6_C6 as GPIO so dw_mmc builtin CD doesn't
+                * think there's a card inserted
+                */
+               sdmmc_cd_disabled: sdmmc-cd-disabled {
+                       rockchip,pins = <6 22 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               /* This is where we actually hook up CD */
+               sdmmc_cd_gpio: sdmmc-cd-gpio {
+                       rockchip,pins = <7 5 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       tpm {
+               tpm_int_h: tpm-int-h {
+                       rockchip,pins = <7 4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       write-protect {
+               fw_wp_ap: fw-wp-ap {
+                       rockchip,pins = <7 6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&usbphy {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+       needs-reset-on-resume;
+};
+
+&usb_host1 {
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+       assigned-clocks = <&cru SCLK_USBPHY480M_SRC>;
+       assigned-clock-parents = <&cru SCLK_OTGPHY0>;
+};
+
+&sdmmc {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio3 {
+       u-boot,dm-pre-reloc;
+};
+
+&gpio8 {
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/rk3288.dtsi b/arch/arm/dts/rk3288.dtsi
new file mode 100644 (file)
index 0000000..0f49709
--- /dev/null
@@ -0,0 +1,1473 @@
+/*
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/interrupt-controller/arm-gic.h>
+#include <dt-bindings/pinctrl/rockchip.h>
+#include <dt-bindings/clock/rk3288-cru.h>
+#include <dt-bindings/power-domain/rk3288.h>
+#include <dt-bindings/thermal/thermal.h>
+#include "skeleton.dtsi"
+
+/ {
+       compatible = "rockchip,rk3288";
+
+       interrupt-parent = <&gic>;
+       aliases {
+               gpio0 = &gpio0;
+               gpio1 = &gpio1;
+               gpio2 = &gpio2;
+               gpio3 = &gpio3;
+               gpio4 = &gpio4;
+               gpio5 = &gpio5;
+               gpio6 = &gpio6;
+               gpio7 = &gpio7;
+               gpio8 = &gpio8;
+               i2c0 = &i2c0;
+               i2c1 = &i2c1;
+               i2c2 = &i2c2;
+               i2c3 = &i2c3;
+               i2c4 = &i2c4;
+               i2c5 = &i2c5;
+               mmc0 = &emmc;
+               mmc1 = &sdmmc;
+               mmc2 = &sdio0;
+               mmc3 = &sdio1;
+               mshc0 = &emmc;
+               mshc1 = &sdmmc;
+               mshc2 = &sdio0;
+               mshc3 = &sdio1;
+               serial0 = &uart0;
+               serial1 = &uart1;
+               serial2 = &uart2;
+               serial3 = &uart3;
+               serial4 = &uart4;
+               spi0 = &spi0;
+               spi1 = &spi1;
+               spi2 = &spi2;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+               enable-method = "rockchip,rk3066-smp";
+               rockchip,pmu = <&pmu>;
+
+               cpu0: cpu@500 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a12";
+                       reg = <0x500>;
+                       operating-points = <
+                               /* KHz    uV */
+                               1800000 1400000
+                               1704000 1350000
+                               1608000 1300000
+                               1512000 1250000
+                               1416000 1200000
+                               1200000 1100000
+                               1008000 1050000
+                                816000 1000000
+                                696000  950000
+                                600000  900000
+                                408000  900000
+                                216000  900000
+                                126000  900000
+                       >;
+                       #cooling-cells = <2>; /* min followed by max */
+                       clock-latency = <40000>;
+                       clocks = <&cru ARMCLK>;
+                       resets = <&cru SRST_CORE0>;
+               };
+               cpu@501 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a12";
+                       reg = <0x501>;
+                       resets = <&cru SRST_CORE1>;
+               };
+               cpu@502 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a12";
+                       reg = <0x502>;
+                       resets = <&cru SRST_CORE2>;
+               };
+               cpu@503 {
+                       device_type = "cpu";
+                       compatible = "arm,cortex-a12";
+                       reg = <0x503>;
+                       resets = <&cru SRST_CORE3>;
+               };
+       };
+
+       amba {
+               compatible = "arm,amba-bus";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               dmac_peri: dma-controller@ff250000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       broken-no-flushp;
+                       reg = <0xff250000 0x4000>;
+                       interrupts = <GIC_SPI 2 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 3 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&cru ACLK_DMAC2>;
+                       clock-names = "apb_pclk";
+               };
+
+               dmac_bus_ns: dma-controller@ff600000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       broken-no-flushp;
+                       reg = <0xff600000 0x4000>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&cru ACLK_DMAC1>;
+                       clock-names = "apb_pclk";
+                       status = "disabled";
+               };
+
+               dmac_bus_s: dma-controller@ffb20000 {
+                       compatible = "arm,pl330", "arm,primecell";
+                       broken-no-flushp;
+                       reg = <0xffb20000 0x4000>;
+                       interrupts = <GIC_SPI 0 IRQ_TYPE_LEVEL_HIGH>,
+                                    <GIC_SPI 1 IRQ_TYPE_LEVEL_HIGH>;
+                       #dma-cells = <1>;
+                       clocks = <&cru ACLK_DMAC1>;
+                       clock-names = "apb_pclk";
+               };
+       };
+
+       xin24m: oscillator {
+               compatible = "fixed-clock";
+               clock-frequency = <24000000>;
+               clock-output-names = "xin24m";
+               #clock-cells = <0>;
+       };
+
+       timer {
+               arm,use-physical-timer;
+               compatible = "arm,armv7-timer";
+               interrupts = <GIC_PPI 13 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 14 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 11 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>,
+                            <GIC_PPI 10 (GIC_CPU_MASK_SIMPLE(4) | IRQ_TYPE_LEVEL_HIGH)>;
+               clock-frequency = <24000000>;
+               always-on;
+       };
+
+       display-subsystem {
+               compatible = "rockchip,display-subsystem";
+               ports = <&vopl_out>, <&vopb_out>;
+       };
+
+       sdmmc: dwmmc@ff0c0000 {
+               compatible = "rockchip,rk3288-dw-mshc";
+               clock-freq-min-max = <400000 150000000>;
+               clocks = <&cru HCLK_SDMMC>, <&cru SCLK_SDMMC>,
+                        <&cru SCLK_SDMMC_DRV>, <&cru SCLK_SDMMC_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
+               fifo-depth = <0x100>;
+               interrupts = <GIC_SPI 32 IRQ_TYPE_LEVEL_HIGH>;
+               reg = <0xff0c0000 0x4000>;
+               status = "disabled";
+       };
+
+       sdio0: dwmmc@ff0d0000 {
+               compatible = "rockchip,rk3288-dw-mshc";
+               clock-freq-min-max = <400000 150000000>;
+               clocks = <&cru HCLK_SDIO0>, <&cru SCLK_SDIO0>,
+                        <&cru SCLK_SDIO0_DRV>, <&cru SCLK_SDIO0_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
+               fifo-depth = <0x100>;
+               interrupts = <GIC_SPI 33 IRQ_TYPE_LEVEL_HIGH>;
+               reg = <0xff0d0000 0x4000>;
+               status = "disabled";
+       };
+
+       sdio1: dwmmc@ff0e0000 {
+               compatible = "rockchip,rk3288-dw-mshc";
+               clock-freq-min-max = <400000 150000000>;
+               clocks = <&cru HCLK_SDIO1>, <&cru SCLK_SDIO1>,
+                        <&cru SCLK_SDIO1_DRV>, <&cru SCLK_SDIO1_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
+               fifo-depth = <0x100>;
+               interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+               reg = <0xff0e0000 0x4000>;
+               status = "disabled";
+       };
+
+       emmc: dwmmc@ff0f0000 {
+               compatible = "rockchip,rk3288-dw-mshc";
+               clock-freq-min-max = <400000 150000000>;
+               clocks = <&cru HCLK_EMMC>, <&cru SCLK_EMMC>,
+                        <&cru SCLK_EMMC_DRV>, <&cru SCLK_EMMC_SAMPLE>;
+               clock-names = "biu", "ciu", "ciu_drv", "ciu_sample";
+               fifo-depth = <0x100>;
+               interrupts = <GIC_SPI 35 IRQ_TYPE_LEVEL_HIGH>;
+               reg = <0xff0f0000 0x4000>;
+               status = "disabled";
+       };
+
+       saradc: saradc@ff100000 {
+               compatible = "rockchip,saradc";
+               reg = <0xff100000 0x100>;
+               interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+               #io-channel-cells = <1>;
+               clocks = <&cru SCLK_SARADC>, <&cru PCLK_SARADC>;
+               clock-names = "saradc", "apb_pclk";
+               status = "disabled";
+       };
+
+       spi0: spi@ff110000 {
+               compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
+               clocks = <&cru SCLK_SPI0>, <&cru PCLK_SPI0>;
+               clock-names = "spiclk", "apb_pclk";
+               dmas = <&dmac_peri 11>, <&dmac_peri 12>;
+               dma-names = "tx", "rx";
+               interrupts = <GIC_SPI 44 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi0_clk &spi0_tx &spi0_rx &spi0_cs0>;
+               reg = <0xff110000 0x1000>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       spi1: spi@ff120000 {
+               compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
+               clocks = <&cru SCLK_SPI1>, <&cru PCLK_SPI1>;
+               clock-names = "spiclk", "apb_pclk";
+               dmas = <&dmac_peri 13>, <&dmac_peri 14>;
+               dma-names = "tx", "rx";
+               interrupts = <GIC_SPI 45 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi1_clk &spi1_tx &spi1_rx &spi1_cs0>;
+               reg = <0xff120000 0x1000>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       spi2: spi@ff130000 {
+               compatible = "rockchip,rk3288-spi", "rockchip,rk3066-spi";
+               clocks = <&cru SCLK_SPI2>, <&cru PCLK_SPI2>;
+               clock-names = "spiclk", "apb_pclk";
+               dmas = <&dmac_peri 15>, <&dmac_peri 16>;
+               dma-names = "tx", "rx";
+               interrupts = <GIC_SPI 46 IRQ_TYPE_LEVEL_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&spi2_clk &spi2_tx &spi2_rx &spi2_cs0>;
+               reg = <0xff130000 0x1000>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+       };
+
+       i2c1: i2c@ff140000 {
+               compatible = "rockchip,rk3288-i2c";
+               reg = <0xff140000 0x1000>;
+               interrupts = <GIC_SPI 62 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C1>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c1_xfer>;
+               status = "disabled";
+       };
+
+       i2c3: i2c@ff150000 {
+               compatible = "rockchip,rk3288-i2c";
+               reg = <0xff150000 0x1000>;
+               interrupts = <GIC_SPI 63 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C3>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c3_xfer>;
+               status = "disabled";
+       };
+
+       i2c4: i2c@ff160000 {
+               compatible = "rockchip,rk3288-i2c";
+               reg = <0xff160000 0x1000>;
+               interrupts = <GIC_SPI 64 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C4>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c4_xfer>;
+               status = "disabled";
+       };
+
+       i2c5: i2c@ff170000 {
+               compatible = "rockchip,rk3288-i2c";
+               reg = <0xff170000 0x1000>;
+               interrupts = <GIC_SPI 65 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C5>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c5_xfer>;
+               status = "disabled";
+       };
+       uart0: serial@ff180000 {
+               compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
+               reg = <0xff180000 0x100>;
+               interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               clocks = <&cru SCLK_UART0>, <&cru PCLK_UART0>;
+               clock-names = "baudclk", "apb_pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart0_xfer>;
+               status = "disabled";
+       };
+
+       uart1: serial@ff190000 {
+               compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
+               reg = <0xff190000 0x100>;
+               interrupts = <GIC_SPI 56 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               clocks = <&cru SCLK_UART1>, <&cru PCLK_UART1>;
+               clock-names = "baudclk", "apb_pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart1_xfer>;
+               status = "disabled";
+       };
+
+       uart2: serial@ff690000 {
+               compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
+               reg = <0xff690000 0x100>;
+               interrupts = <GIC_SPI 57 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               clocks = <&cru SCLK_UART2>, <&cru PCLK_UART2>;
+               clock-names = "baudclk", "apb_pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart2_xfer>;
+               status = "disabled";
+       };
+       uart3: serial@ff1b0000 {
+               compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
+               reg = <0xff1b0000 0x100>;
+               interrupts = <GIC_SPI 58 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               clocks = <&cru SCLK_UART3>, <&cru PCLK_UART3>;
+               clock-names = "baudclk", "apb_pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart3_xfer>;
+               status = "disabled";
+       };
+
+       uart4: serial@ff1c0000 {
+               compatible = "rockchip,rk3288-uart", "snps,dw-apb-uart";
+               reg = <0xff1c0000 0x100>;
+               interrupts = <GIC_SPI 59 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <4>;
+               clocks = <&cru SCLK_UART4>, <&cru PCLK_UART4>;
+               clock-names = "baudclk", "apb_pclk";
+               pinctrl-names = "default";
+               pinctrl-0 = <&uart4_xfer>;
+               status = "disabled";
+       };
+       thermal: thermal-zones {
+               #include "rk3288-thermal.dtsi"
+       };
+
+       tsadc: tsadc@ff280000 {
+               compatible = "rockchip,rk3288-tsadc";
+               reg = <0xff280000 0x100>;
+               interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
+               clock-names = "tsadc", "apb_pclk";
+               resets = <&cru SRST_TSADC>;
+               reset-names = "tsadc-apb";
+               pinctrl-names = "otp_out";
+               pinctrl-0 = <&otp_out>;
+               #thermal-sensor-cells = <1>;
+               hw-shut-temp = <125000>;
+               status = "disabled";
+       };
+
+       gmac: ethernet@ff290000 {
+               compatible = "rockchip,rk3288-gmac";
+               reg = <0xff290000 0x10000>;
+               interrupts = <GIC_SPI 27 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "macirq";
+               rockchip,grf = <&grf>;
+               clocks = <&cru SCLK_MAC>,
+                       <&cru SCLK_MAC_RX>, <&cru SCLK_MAC_TX>,
+                       <&cru SCLK_MACREF>, <&cru SCLK_MACREF_OUT>,
+                       <&cru ACLK_GMAC>, <&cru PCLK_GMAC>;
+               clock-names = "stmmaceth",
+                       "mac_clk_rx", "mac_clk_tx",
+                       "clk_mac_ref", "clk_mac_refout",
+                       "aclk_mac", "pclk_mac";
+       };
+
+       usb_host0_ehci: usb@ff500000 {
+               compatible = "generic-ehci";
+               reg = <0xff500000 0x100>;
+               interrupts = <GIC_SPI 24 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_USBHOST0>;
+               clock-names = "usbhost";
+               phys = <&usbphy1>;
+               phy-names = "usb";
+               status = "disabled";
+       };
+
+       /* NOTE: ohci@ff520000 doesn't actually work on hardware */
+
+       usb_host1: usb@ff540000 {
+               compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
+                               "snps,dwc2";
+               reg = <0xff540000 0x40000>;
+               interrupts = <GIC_SPI 25 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_USBHOST1>;
+               clock-names = "otg";
+               phys = <&usbphy2>;
+               phy-names = "usb2-phy";
+               status = "disabled";
+       };
+
+       usb_otg: usb@ff580000 {
+               compatible = "rockchip,rk3288-usb", "rockchip,rk3066-usb",
+                               "snps,dwc2";
+               reg = <0xff580000 0x40000>;
+               interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_OTG0>;
+               clock-names = "otg";
+               phys = <&usbphy0>;
+               phy-names = "usb2-phy";
+               status = "disabled";
+       };
+
+       usb_hsic: usb@ff5c0000 {
+               compatible = "generic-ehci";
+               reg = <0xff5c0000 0x100>;
+               interrupts = <GIC_SPI 26 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru HCLK_HSIC>;
+               clock-names = "usbhost";
+               status = "disabled";
+       };
+
+       dmc: dmc@ff610000 {
+               u-boot,dm-pre-reloc;
+               compatible = "rockchip,rk3288-dmc", "syscon";
+               rockchip,cru = <&cru>;
+               rockchip,grf = <&grf>;
+               rockchip,pmu = <&pmu>;
+               rockchip,sgrf = <&sgrf>;
+               rockchip,noc = <&noc>;
+               reg = <0xff610000 0x3fc
+                      0xff620000 0x294
+                      0xff630000 0x3fc
+                      0xff640000 0x294>;
+               rockchip,sram = <&ddr_sram>;
+               clocks = <&cru PCLK_DDRUPCTL0>, <&cru PCLK_PUBL0>,
+                        <&cru PCLK_DDRUPCTL1>, <&cru PCLK_PUBL1>,
+                        <&cru ARMCLK>;
+               clock-names = "pclk_ddrupctl0", "pclk_publ0",
+                             "pclk_ddrupctl1", "pclk_publ1",
+                             "arm_clk";
+       };
+
+       i2c0: i2c@ff650000 {
+               compatible = "rockchip,rk3288-i2c";
+               reg = <0xff650000 0x1000>;
+               interrupts = <GIC_SPI 60 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c0_xfer>;
+               status = "disabled";
+       };
+
+       i2c2: i2c@ff660000 {
+               compatible = "rockchip,rk3288-i2c";
+               reg = <0xff660000 0x1000>;
+               interrupts = <GIC_SPI 61 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               clock-names = "i2c";
+               clocks = <&cru PCLK_I2C2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2c2_xfer>;
+               status = "disabled";
+       };
+
+       pwm0: pwm@ff680000 {
+               compatible = "rockchip,rk3288-pwm";
+               reg = <0xff680000 0x10>;
+               #pwm-cells = <3>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm0_pin>;
+               clocks = <&cru PCLK_PWM>;
+               clock-names = "pwm";
+               rockchip,grf = <&grf>;
+               status = "disabled";
+       };
+
+       pwm1: pwm@ff680010 {
+               compatible = "rockchip,rk3288-pwm";
+               reg = <0xff680010 0x10>;
+               #pwm-cells = <3>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm1_pin>;
+               clocks = <&cru PCLK_PWM>;
+               clock-names = "pwm";
+               rockchip,grf = <&grf>;
+               status = "disabled";
+       };
+
+       pwm2: pwm@ff680020 {
+               compatible = "rockchip,rk3288-pwm";
+               reg = <0xff680020 0x10>;
+               #pwm-cells = <3>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm2_pin>;
+               clocks = <&cru PCLK_PWM>;
+               clock-names = "pwm";
+               rockchip,grf = <&grf>;
+               status = "disabled";
+       };
+
+       pwm3: pwm@ff680030 {
+               compatible = "rockchip,rk3288-pwm";
+               reg = <0xff680030 0x10>;
+               #pwm-cells = <2>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pwm3_pin>;
+               clocks = <&cru PCLK_PWM>;
+               clock-names = "pwm";
+               rockchip,grf = <&grf>;
+               status = "disabled";
+       };
+
+       bus_intmem@ff700000 {
+               compatible = "mmio-sram";
+               reg = <0xff700000 0x18000>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges = <0 0xff700000 0x18000>;
+               smp-sram@0 {
+                       compatible = "rockchip,rk3066-smp-sram";
+                       reg = <0x00 0x10>;
+               };
+               ddr_sram: ddr-sram@1000 {
+                       compatible = "rockchip,rk3288-ddr-sram";
+                       reg = <0x1000 0x4000>;
+               };
+       };
+
+       sram@ff720000 {
+               compatible = "rockchip,rk3288-pmu-sram", "mmio-sram";
+               reg = <0xff720000 0x1000>;
+       };
+
+       pmu: power-management@ff730000 {
+               u-boot,dm-pre-reloc;
+               compatible = "rockchip,rk3288-pmu", "syscon";
+               reg = <0xff730000 0x100>;
+       };
+
+       sgrf: syscon@ff740000 {
+               u-boot,dm-pre-reloc;
+               compatible = "rockchip,rk3288-sgrf", "syscon";
+               reg = <0xff740000 0x1000>;
+       };
+
+       cru: clock-controller@ff760000 {
+               compatible = "rockchip,rk3288-cru";
+               reg = <0xff760000 0x1000>;
+               rockchip,grf = <&grf>;
+               u-boot,dm-pre-reloc;
+               #clock-cells = <1>;
+               #reset-cells = <1>;
+               assigned-clocks = <&cru DCLK_VOP0>, <&cru DCLK_VOP1>,
+                                 <&cru PLL_GPLL>, <&cru PLL_CPLL>,
+                                 <&cru PLL_NPLL>, <&cru ACLK_CPU>,
+                                 <&cru HCLK_CPU>, <&cru PCLK_CPU>,
+                                 <&cru ACLK_PERI>, <&cru HCLK_PERI>,
+                                 <&cru PCLK_PERI>;
+               assigned-clock-rates = <0>, <0>,
+                                      <594000000>, <400000000>,
+                                      <500000000>, <300000000>,
+                                      <150000000>, <75000000>,
+                                      <300000000>, <150000000>,
+                                      <75000000>;
+               assigned-clock-parents = <&cru PLL_NPLL>, <&cru PLL_GPLL>;
+       };
+
+       grf: syscon@ff770000 {
+               u-boot,dm-pre-reloc;
+               compatible = "rockchip,rk3288-grf", "syscon";
+               reg = <0xff770000 0x1000>;
+       };
+
+       wdt: watchdog@ff800000 {
+               compatible = "rockchip,rk3288-wdt", "snps,dw-wdt";
+               reg = <0xff800000 0x100>;
+               clocks = <&cru PCLK_WDT>;
+               interrupts = <GIC_SPI 111 IRQ_TYPE_LEVEL_HIGH>;
+               status = "disabled";
+       };
+
+       i2s: i2s@ff890000 {
+               compatible = "rockchip,rk3288-i2s", "rockchip,rk3066-i2s";
+               reg = <0xff890000 0x10000>;
+               interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               dmas = <&dmac_bus_s 0>, <&dmac_bus_s 1>;
+               dma-names = "tx", "rx";
+               clock-names = "i2s_hclk", "i2s_clk";
+               clocks = <&cru HCLK_I2S0>, <&cru SCLK_I2S0>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&i2s0_bus>;
+               status = "disabled";
+       };
+
+       vopb: vop@ff930000 {
+               compatible = "rockchip,rk3288-vop";
+               reg = <0xff930000 0x19c>;
+               interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru ACLK_VOP0>, <&cru DCLK_VOP0>, <&cru HCLK_VOP0>;
+               clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
+               resets = <&cru SRST_LCDC0_AXI>, <&cru SRST_LCDC0_AHB>, <&cru SRST_LCDC0_DCLK>;
+               reset-names = "axi", "ahb", "dclk";
+               iommus = <&vopb_mmu>;
+               power-domains = <&power RK3288_PD_VIO>;
+               status = "disabled";
+               vopb_out: port {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       vopb_out_edp: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&edp_in_vopb>;
+                       };
+                       vopb_out_hdmi: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&hdmi_in_vopb>;
+                       };
+               };
+       };
+
+       vopb_mmu: iommu@ff930300 {
+               compatible = "rockchip,iommu";
+               reg = <0xff930300 0x100>;
+               interrupts = <GIC_SPI 15 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "vopb_mmu";
+               power-domains = <&power RK3288_PD_VIO>;
+               #iommu-cells = <0>;
+               status = "disabled";
+       };
+
+       vopl: vop@ff940000 {
+               compatible = "rockchip,rk3288-vop";
+               reg = <0xff940000 0x19c>;
+               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru ACLK_VOP1>, <&cru DCLK_VOP1>, <&cru HCLK_VOP1>;
+               clock-names = "aclk_vop", "dclk_vop", "hclk_vop";
+               resets = <&cru SRST_LCDC1_AXI>, <&cru SRST_LCDC1_AHB>, <&cru SRST_LCDC1_DCLK>;
+               reset-names = "axi", "ahb", "dclk";
+               iommus = <&vopl_mmu>;
+               power-domains = <&power RK3288_PD_VIO>;
+               status = "disabled";
+               vopl_out: port {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       vopl_out_edp: endpoint@0 {
+                               reg = <0>;
+                               remote-endpoint = <&edp_in_vopl>;
+                       };
+                       vopl_out_hdmi: endpoint@1 {
+                               reg = <1>;
+                               remote-endpoint = <&hdmi_in_vopl>;
+                       };
+
+               };
+       };
+
+       vopl_mmu: iommu@ff940300 {
+               compatible = "rockchip,iommu";
+               reg = <0xff940300 0x100>;
+               interrupts = <GIC_SPI 16 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "vopl_mmu";
+               power-domains = <&power RK3288_PD_VIO>;
+               #iommu-cells = <0>;
+               status = "disabled";
+       };
+
+       edp: edp@ff970000 {
+               compatible = "rockchip,rk3288-edp";
+               reg = <0xff970000 0x4000>;
+               interrupts = <GIC_SPI 98 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru SCLK_EDP>, <&cru SCLK_EDP_24M>, <&cru PCLK_EDP_CTRL>;
+               rockchip,grf = <&grf>;
+               clock-names = "clk_edp", "clk_edp_24m", "pclk_edp";
+               resets = <&cru 111>;
+               reset-names = "edp";
+               power-domains = <&power RK3288_PD_VIO>;
+               status = "disabled";
+               ports {
+                       edp_in: port {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               edp_in_vopb: endpoint@0 {
+                                       reg = <0>;
+                                       remote-endpoint = <&vopb_out_edp>;
+                               };
+                               edp_in_vopl: endpoint@1 {
+                                       reg = <1>;
+                                       remote-endpoint = <&vopl_out_edp>;
+                               };
+                       };
+               };
+       };
+
+       hdmi: hdmi@ff980000 {
+               compatible = "rockchip,rk3288-dw-hdmi";
+               reg = <0xff980000 0x20000>;
+               reg-io-width = <4>;
+               ddc-i2c-bus = <&i2c5>;
+               rockchip,grf = <&grf>;
+               interrupts = <GIC_SPI 103 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&cru  PCLK_HDMI_CTRL>, <&cru SCLK_HDMI_HDCP>;
+               clock-names = "iahb", "isfr";
+               status = "disabled";
+               ports {
+                       hdmi_in: port {
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               hdmi_in_vopb: endpoint@0 {
+                                       reg = <0>;
+                                       remote-endpoint = <&vopb_out_hdmi>;
+                               };
+                               hdmi_in_vopl: endpoint@1 {
+                                       reg = <1>;
+                                       remote-endpoint = <&vopl_out_hdmi>;
+                               };
+                       };
+               };
+       };
+
+       hdmi_audio: hdmi_audio {
+               compatible = "rockchip,rk3288-hdmi-audio";
+               i2s-controller = <&i2s>;
+               status = "disable";
+       };
+
+       vpu: video-codec@ff9a0000 {
+               compatible = "rockchip,rk3288-vpu";
+               reg = <0xff9a0000 0x800>;
+               interrupts = <GIC_SPI 9 IRQ_TYPE_LEVEL_HIGH>,
+                               <GIC_SPI 10 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "vepu", "vdpu";
+               clocks = <&cru ACLK_VCODEC>, <&cru HCLK_VCODEC>;
+               clock-names = "aclk_vcodec", "hclk_vcodec";
+               power-domains = <&power RK3288_PD_VIDEO>;
+               iommus = <&vpu_mmu>;
+       };
+
+       vpu_mmu: iommu@ff9a0800 {
+               compatible = "rockchip,iommu";
+               reg = <0xff9a0800 0x100>;
+               interrupts = <GIC_SPI 11 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "vpu_mmu";
+               power-domains = <&power RK3288_PD_VIDEO>;
+               #iommu-cells = <0>;
+       };
+
+       gpu: gpu@ffa30000 {
+               compatible = "arm,malit764",
+                            "arm,malit76x",
+                            "arm,malit7xx",
+                            "arm,mali-midgard";
+               reg = <0xffa30000 0x10000>;
+               interrupts = <GIC_SPI 6 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 7 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 8 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "JOB", "MMU", "GPU";
+               clocks = <&cru ACLK_GPU>;
+               clock-names = "aclk_gpu";
+               operating-points = <
+                       /* KHz uV */
+                       100000 950000
+                       200000 950000
+                       300000 1000000
+                       400000 1100000
+                       /* 500000 1200000 - See crosbug.com/p/33857 */
+                       600000 1250000
+               >;
+               power-domains = <&power RK3288_PD_GPU>;
+               status = "disabled";
+       };
+
+       noc: syscon@ffac0000 {
+               u-boot,dm-pre-reloc;
+               compatible = "rockchip,rk3288-noc", "syscon";
+               reg = <0xffac0000 0x2000>;
+       };
+
+       efuse: efuse@ffb40000 {
+               compatible = "rockchip,rk3288-efuse";
+               reg = <0xffb40000 0x10000>;
+               status = "disabled";
+       };
+
+       gic: interrupt-controller@ffc01000 {
+               compatible = "arm,gic-400";
+               interrupt-controller;
+               #interrupt-cells = <3>;
+               #address-cells = <0>;
+
+               reg = <0xffc01000 0x1000>,
+                     <0xffc02000 0x1000>,
+                     <0xffc04000 0x2000>,
+                     <0xffc06000 0x2000>;
+               interrupts = <GIC_PPI 9 0xf04>;
+       };
+
+       cpuidle: cpuidle {
+               compatible = "rockchip,rk3288-cpuidle";
+       };
+
+       usbphy: phy {
+               compatible = "rockchip,rk3288-usb-phy";
+               rockchip,grf = <&grf>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+               status = "disabled";
+
+               usbphy0: usb-phy0 {
+                       #phy-cells = <0>;
+                       reg = <0x320>;
+                       clocks = <&cru SCLK_OTGPHY0>;
+                       clock-names = "phyclk";
+               };
+
+               usbphy1: usb-phy1 {
+                       #phy-cells = <0>;
+                       reg = <0x334>;
+                       clocks = <&cru SCLK_OTGPHY1>;
+                       clock-names = "phyclk";
+               };
+
+               usbphy2: usb-phy2 {
+                       #phy-cells = <0>;
+                       reg = <0x348>;
+                       clocks = <&cru SCLK_OTGPHY2>;
+                       clock-names = "phyclk";
+               };
+       };
+
+       pinctrl: pinctrl {
+               compatible = "rockchip,rk3288-pinctrl";
+               rockchip,grf = <&grf>;
+               rockchip,pmu = <&pmu>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               gpio0: gpio0@ff750000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg =   <0xff750000 0x100>;
+                       interrupts = <GIC_SPI 81 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO0>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio1: gpio1@ff780000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0xff780000 0x100>;
+                       interrupts = <GIC_SPI 82 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO1>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio2: gpio2@ff790000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0xff790000 0x100>;
+                       interrupts = <GIC_SPI 83 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO2>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio3: gpio3@ff7a0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0xff7a0000 0x100>;
+                       interrupts = <GIC_SPI 84 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO3>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio4: gpio4@ff7b0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0xff7b0000 0x100>;
+                       interrupts = <GIC_SPI 85 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO4>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio5: gpio5@ff7c0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0xff7c0000 0x100>;
+                       interrupts = <GIC_SPI 86 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO5>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio6: gpio6@ff7d0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0xff7d0000 0x100>;
+                       interrupts = <GIC_SPI 87 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO6>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio7: gpio7@ff7e0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0xff7e0000 0x100>;
+                       interrupts = <GIC_SPI 88 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO7>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio8: gpio8@ff7f0000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0xff7f0000 0x100>;
+                       interrupts = <GIC_SPI 89 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&cru PCLK_GPIO8>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               pcfg_pull_up: pcfg-pull-up {
+                       bias-pull-up;
+               };
+
+               pcfg_pull_down: pcfg-pull-down {
+                       bias-pull-down;
+               };
+
+               pcfg_pull_none: pcfg-pull-none {
+                       bias-disable;
+               };
+
+               pcfg_pull_none_12ma: pcfg-pull-none-12ma {
+                       bias-disable;
+                       drive-strength = <12>;
+               };
+
+               sleep {
+                       global_pwroff: global-pwroff {
+                               rockchip,pins = <0 0 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       ddrio_pwroff: ddrio-pwroff {
+                               rockchip,pins = <0 1 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       ddr0_retention: ddr0-retention {
+                               rockchip,pins = <0 2 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       ddr1_retention: ddr1-retention {
+                               rockchip,pins = <0 3 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+               };
+
+               i2c0 {
+                       i2c0_xfer: i2c0-xfer {
+                               rockchip,pins = <0 15 RK_FUNC_1 &pcfg_pull_none>,
+                                               <0 16 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c1 {
+                       i2c1_xfer: i2c1-xfer {
+                               rockchip,pins = <8 4 RK_FUNC_1 &pcfg_pull_none>,
+                                               <8 5 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c2 {
+                       i2c2_xfer: i2c2-xfer {
+                               rockchip,pins = <6 9 RK_FUNC_1 &pcfg_pull_none>,
+                                               <6 10 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c3 {
+                       i2c3_xfer: i2c3-xfer {
+                               rockchip,pins = <2 16 RK_FUNC_1 &pcfg_pull_none>,
+                                               <2 17 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c4 {
+                       i2c4_xfer: i2c4-xfer {
+                               rockchip,pins = <7 17 RK_FUNC_1 &pcfg_pull_none>,
+                                               <7 18 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2c5 {
+                       i2c5_xfer: i2c5-xfer {
+                               rockchip,pins = <7 19 RK_FUNC_1 &pcfg_pull_none>,
+                                               <7 20 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               i2s0 {
+                       i2s0_bus: i2s0-bus {
+                               rockchip,pins = <6 0 RK_FUNC_1 &pcfg_pull_none>,
+                                               <6 1 RK_FUNC_1 &pcfg_pull_none>,
+                                               <6 2 RK_FUNC_1 &pcfg_pull_none>,
+                                               <6 3 RK_FUNC_1 &pcfg_pull_none>,
+                                               <6 4 RK_FUNC_1 &pcfg_pull_none>,
+                                               <6 8 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               sdmmc {
+                       sdmmc_clk: sdmmc-clk {
+                               rockchip,pins = <6 20 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       sdmmc_cmd: sdmmc-cmd {
+                               rockchip,pins = <6 21 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdmmc_cd: sdmcc-cd {
+                               rockchip,pins = <6 22 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdmmc_bus1: sdmmc-bus1 {
+                               rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdmmc_bus4: sdmmc-bus4 {
+                               rockchip,pins = <6 16 RK_FUNC_1 &pcfg_pull_up>,
+                                               <6 17 RK_FUNC_1 &pcfg_pull_up>,
+                                               <6 18 RK_FUNC_1 &pcfg_pull_up>,
+                                               <6 19 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+               };
+
+               sdio0 {
+                       sdio0_bus1: sdio0-bus1 {
+                               rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_bus4: sdio0-bus4 {
+                               rockchip,pins = <4 20 RK_FUNC_1 &pcfg_pull_up>,
+                                               <4 21 RK_FUNC_1 &pcfg_pull_up>,
+                                               <4 22 RK_FUNC_1 &pcfg_pull_up>,
+                                               <4 23 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_cmd: sdio0-cmd {
+                               rockchip,pins = <4 24 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_clk: sdio0-clk {
+                               rockchip,pins = <4 25 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       sdio0_cd: sdio0-cd {
+                               rockchip,pins = <4 26 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_wp: sdio0-wp {
+                               rockchip,pins = <4 27 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_pwr: sdio0-pwr {
+                               rockchip,pins = <4 28 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_bkpwr: sdio0-bkpwr {
+                               rockchip,pins = <4 29 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+
+                       sdio0_int: sdio0-int {
+                               rockchip,pins = <4 30 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+               };
+
+               sdio1 {
+                       sdio1_bus1: sdio1-bus1 {
+                               rockchip,pins = <3 24 RK_FUNC_4 &pcfg_pull_up>;
+                       };
+
+                       sdio1_bus4: sdio1-bus4 {
+                               rockchip,pins = <3 24 RK_FUNC_4 &pcfg_pull_up>,
+                                               <3 25 RK_FUNC_4 &pcfg_pull_up>,
+                                               <3 26 RK_FUNC_4 &pcfg_pull_up>,
+                                               <3 27 RK_FUNC_4 &pcfg_pull_up>;
+                       };
+
+                       sdio1_cd: sdio1-cd {
+                               rockchip,pins = <3 28 RK_FUNC_4 &pcfg_pull_up>;
+                       };
+
+                       sdio1_wp: sdio1-wp {
+                               rockchip,pins = <3 29 RK_FUNC_4 &pcfg_pull_up>;
+                       };
+
+                       sdio1_bkpwr: sdio1-bkpwr {
+                               rockchip,pins = <3 30 RK_FUNC_4 &pcfg_pull_up>;
+                       };
+
+                       sdio1_int: sdio1-int {
+                               rockchip,pins = <3 31 RK_FUNC_4 &pcfg_pull_up>;
+                       };
+
+                       sdio1_cmd: sdio1-cmd {
+                               rockchip,pins = <4 6 RK_FUNC_4 &pcfg_pull_up>;
+                       };
+
+                       sdio1_clk: sdio1-clk {
+                               rockchip,pins = <4 7 RK_FUNC_4 &pcfg_pull_none>;
+                       };
+
+                       sdio1_pwr: sdio1-pwr {
+                               rockchip,pins = <4 9 RK_FUNC_4 &pcfg_pull_up>;
+                       };
+               };
+
+               emmc {
+                       emmc_clk: emmc-clk {
+                               rockchip,pins = <3 18 RK_FUNC_2 &pcfg_pull_none>;
+                       };
+
+                       emmc_cmd: emmc-cmd {
+                               rockchip,pins = <3 16 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+
+                       emmc_pwr: emmc-pwr {
+                               rockchip,pins = <3 9 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+
+                       emmc_bus1: emmc-bus1 {
+                               rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+
+                       emmc_bus4: emmc-bus4 {
+                               rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 1 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 2 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 3 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+
+                       emmc_bus8: emmc-bus8 {
+                               rockchip,pins = <3 0 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 1 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 2 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 3 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 4 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 5 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 6 RK_FUNC_2 &pcfg_pull_up>,
+                                               <3 7 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+               };
+
+               spi0 {
+                       spi0_clk: spi0-clk {
+                               rockchip,pins = <5 12 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       spi0_cs0: spi0-cs0 {
+                               rockchip,pins = <5 13 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       spi0_tx: spi0-tx {
+                               rockchip,pins = <5 14 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       spi0_rx: spi0-rx {
+                               rockchip,pins = <5 15 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       spi0_cs1: spi0-cs1 {
+                               rockchip,pins = <5 16 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+               };
+               spi1 {
+                       spi1_clk: spi1-clk {
+                               rockchip,pins = <7 12 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi1_cs0: spi1-cs0 {
+                               rockchip,pins = <7 13 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi1_rx: spi1-rx {
+                               rockchip,pins = <7 14 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+                       spi1_tx: spi1-tx {
+                               rockchip,pins = <7 15 RK_FUNC_2 &pcfg_pull_up>;
+                       };
+               };
+
+               spi2 {
+                       spi2_cs1: spi2-cs1 {
+                               rockchip,pins = <8 3 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       spi2_clk: spi2-clk {
+                               rockchip,pins = <8 6 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       spi2_cs0: spi2-cs0 {
+                               rockchip,pins = <8 7 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       spi2_rx: spi2-rx {
+                               rockchip,pins = <8 8 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+                       spi2_tx: spi2-tx {
+                               rockchip,pins = <8 9 RK_FUNC_1 &pcfg_pull_up>;
+                       };
+               };
+
+               uart0 {
+                       uart0_xfer: uart0-xfer {
+                               rockchip,pins = <4 16 RK_FUNC_1 &pcfg_pull_up>,
+                                               <4 17 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       uart0_cts: uart0-cts {
+                               rockchip,pins = <4 18 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       uart0_rts: uart0-rts {
+                               rockchip,pins = <4 19 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               uart1 {
+                       uart1_xfer: uart1-xfer {
+                               rockchip,pins = <5 8 RK_FUNC_1 &pcfg_pull_up>,
+                                               <5 9 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       uart1_cts: uart1-cts {
+                               rockchip,pins = <5 10 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       uart1_rts: uart1-rts {
+                               rockchip,pins = <5 11 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               uart2 {
+                       uart2_xfer: uart2-xfer {
+                               rockchip,pins = <7 22 RK_FUNC_1 &pcfg_pull_up>,
+                                               <7 23 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+                       /* no rts / cts for uart2 */
+               };
+
+               uart3 {
+                       uart3_xfer: uart3-xfer {
+                               rockchip,pins = <7 7 RK_FUNC_1 &pcfg_pull_up>,
+                                               <7 8 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       uart3_cts: uart3-cts {
+                               rockchip,pins = <7 9 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+
+                       uart3_rts: uart3-rts {
+                               rockchip,pins = <7 10 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               uart4 {
+                       uart4_xfer: uart4-xfer {
+                               rockchip,pins = <5 12 3 &pcfg_pull_up>,
+                                               <5 13 3 &pcfg_pull_none>;
+                       };
+
+                       uart4_cts: uart4-cts {
+                               rockchip,pins = <5 14 3 &pcfg_pull_none>;
+                       };
+
+                       uart4_rts: uart4-rts {
+                               rockchip,pins = <5 15 3 &pcfg_pull_none>;
+                       };
+               };
+
+               tsadc {
+                       otp_out: otp-out {
+                               rockchip,pins = <0 10 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               pwm0 {
+                       pwm0_pin: pwm0-pin {
+                               rockchip,pins = <7 0 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               pwm1 {
+                       pwm1_pin: pwm1-pin {
+                               rockchip,pins = <7 1 RK_FUNC_1 &pcfg_pull_none>;
+                       };
+               };
+
+               pwm2 {
+                       pwm2_pin: pwm2-pin {
+                               rockchip,pins = <7 22 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+               };
+
+               pwm3 {
+                       pwm3_pin: pwm3-pin {
+                               rockchip,pins = <7 23 RK_FUNC_3 &pcfg_pull_none>;
+                       };
+               };
+
+               gmac {
+                       rgmii_pins: rgmii-pins {
+                               rockchip,pins = <3 30 3 &pcfg_pull_none>,
+                                               <3 31 3 &pcfg_pull_none>,
+                                               <3 26 3 &pcfg_pull_none>,
+                                               <3 27 3 &pcfg_pull_none>,
+                                               <3 28 3 &pcfg_pull_none_12ma>,
+                                               <3 29 3 &pcfg_pull_none_12ma>,
+                                               <3 24 3 &pcfg_pull_none_12ma>,
+                                               <3 25 3 &pcfg_pull_none_12ma>,
+                                               <4 0 3 &pcfg_pull_none>,
+                                               <4 5 3 &pcfg_pull_none>,
+                                               <4 6 3 &pcfg_pull_none>,
+                                               <4 9 3 &pcfg_pull_none_12ma>,
+                                               <4 4 3 &pcfg_pull_none_12ma>,
+                                               <4 1 3 &pcfg_pull_none>,
+                                               <4 3 3 &pcfg_pull_none>;
+                       };
+
+                       rmii_pins: rmii-pins {
+                               rockchip,pins = <3 30 3 &pcfg_pull_none>,
+                                               <3 31 3 &pcfg_pull_none>,
+                                               <3 28 3 &pcfg_pull_none>,
+                                               <3 29 3 &pcfg_pull_none>,
+                                               <4 0 3 &pcfg_pull_none>,
+                                               <4 5 3 &pcfg_pull_none>,
+                                               <4 4 3 &pcfg_pull_none>,
+                                               <4 1 3 &pcfg_pull_none>,
+                                               <4 2 3 &pcfg_pull_none>,
+                                               <4 3 3 &pcfg_pull_none>;
+                       };
+               };
+       };
+
+       power: power-controller {
+               compatible = "rockchip,rk3288-power-controller";
+               #power-domain-cells = <1>;
+               rockchip,pmu = <&pmu>;
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               pd_gpu {
+                       reg = <RK3288_PD_GPU>;
+                       clocks = <&cru ACLK_GPU>;
+               };
+
+               pd_hevc {
+                       reg = <RK3288_PD_HEVC>;
+                       clocks = <&cru ACLK_HEVC>,
+                                <&cru SCLK_HEVC_CABAC>,
+                                <&cru SCLK_HEVC_CORE>,
+                                <&cru HCLK_HEVC>;
+               };
+
+               pd_vio {
+                       reg = <RK3288_PD_VIO>;
+                       clocks = <&cru ACLK_IEP>,
+                                <&cru ACLK_ISP>,
+                                <&cru ACLK_RGA>,
+                                <&cru ACLK_VIP>,
+                                <&cru ACLK_VOP0>,
+                                <&cru ACLK_VOP1>,
+                                <&cru DCLK_VOP0>,
+                                <&cru DCLK_VOP1>,
+                                <&cru HCLK_IEP>,
+                                <&cru HCLK_ISP>,
+                                <&cru HCLK_RGA>,
+                                <&cru HCLK_VIP>,
+                                <&cru HCLK_VOP0>,
+                                <&cru HCLK_VOP1>,
+                                <&cru PCLK_EDP_CTRL>,
+                                <&cru PCLK_HDMI_CTRL>,
+                                <&cru PCLK_LVDS_PHY>,
+                                <&cru PCLK_MIPI_CSI>,
+                                <&cru PCLK_MIPI_DSI0>,
+                                <&cru PCLK_MIPI_DSI1>,
+                                <&cru SCLK_EDP_24M>,
+                                <&cru SCLK_EDP>,
+                                <&cru SCLK_HDMI_CEC>,
+                                <&cru SCLK_HDMI_HDCP>,
+                                <&cru SCLK_ISP_JPE>,
+                                <&cru SCLK_ISP>,
+                                <&cru SCLK_RGA>;
+               };
+
+               pd_video {
+                       reg = <RK3288_PD_VIDEO>;
+                       clocks = <&cru ACLK_VCODEC>,
+                                <&cru HCLK_VCODEC>;
+               };
+       };
+};
diff --git a/arch/arm/dts/socfpga_cyclone5_de0_nano_soc.dts b/arch/arm/dts/socfpga_cyclone5_de0_nano_soc.dts
new file mode 100644 (file)
index 0000000..b649c9a
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright Altera Corporation (C) 2015
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "socfpga_cyclone5.dtsi"
+
+/ {
+       model = "Terasic DE0-Nano(Atlas)";
+       compatible = "altr,socfpga-cyclone5", "altr,socfpga";
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       aliases {
+               ethernet0 = &gmac1;
+       };
+
+       memory {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x40000000>; /* 1GB */
+       };
+
+       soc {
+               u-boot,dm-pre-reloc;
+       };
+};
+
+&gmac1 {
+       status = "okay";
+       phy-mode = "rgmii";
+
+       rxd0-skew-ps = <420>;
+       rxd1-skew-ps = <420>;
+       rxd2-skew-ps = <420>;
+       rxd3-skew-ps = <420>;
+       txen-skew-ps = <0>;
+       txc-skew-ps = <1860>;
+       rxdv-skew-ps = <420>;
+       rxc-skew-ps = <1680>;
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&gpio2 {
+       status = "okay";
+};
+
+&mmc0 {
+       status = "okay";
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/socfpga_cyclone5_mcvevk.dts b/arch/arm/dts/socfpga_cyclone5_mcvevk.dts
new file mode 100644 (file)
index 0000000..e1e3d73
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * Copyright (C) 2015 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "socfpga_cyclone5.dtsi"
+
+/ {
+       model = "DENX MCVEVK";
+       compatible = "altr,socfpga-cyclone5", "altr,socfpga";
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       aliases {
+               ethernet0 = &gmac0;
+       };
+
+       memory {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x40000000>; /* 1GB */
+       };
+
+       soc {
+               u-boot,dm-pre-reloc;
+       };
+};
+
+&gmac0 {
+       status = "okay";
+       phy-mode = "rgmii";
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&gpio2 {
+       status = "okay";
+};
+
+&mmc0 {
+       status = "okay";
+       bus-width = <8>;
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/socfpga_cyclone5_sockit.dts b/arch/arm/dts/socfpga_cyclone5_sockit.dts
new file mode 100644 (file)
index 0000000..d7c41c8
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ *  Copyright (C) 2014 Steffen Trumtrar <s.trumtrar@pengutronix.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include "socfpga_cyclone5.dtsi"
+
+/ {
+       model = "Terasic SoCkit";
+       compatible = "altr,socfpga-cyclone5", "altr,socfpga";
+
+       chosen {
+               bootargs = "console=ttyS0,115200";
+       };
+
+       aliases {
+               ethernet0 = &gmac1;
+       };
+
+       memory {
+               name = "memory";
+               device_type = "memory";
+               reg = <0x0 0x40000000>; /* 1GB */
+       };
+
+       soc {
+               u-boot,dm-pre-reloc;
+       };
+};
+
+&gmac1 {
+       status = "okay";
+       phy-mode = "rgmii";
+
+       rxd0-skew-ps = <0>;
+       rxd1-skew-ps = <0>;
+       rxd2-skew-ps = <0>;
+       rxd3-skew-ps = <0>;
+       txen-skew-ps = <0>;
+       txc-skew-ps = <2600>;
+       rxdv-skew-ps = <0>;
+       rxc-skew-ps = <2000>;
+};
+
+&gpio0 {
+       status = "okay";
+};
+
+&gpio1 {
+       status = "okay";
+};
+
+&gpio2 {
+       status = "okay";
+};
+
+&i2c0 {
+       status = "okay";
+
+       rtc: rtc@68 {
+               compatible = "stm,m41t82";
+               reg = <0x68>;
+       };
+};
+
+&mmc0 {
+       status = "okay";
+       u-boot,dm-pre-reloc;
+};
+
+&qspi {
+       status = "okay";
+       u-boot,dm-pre-reloc;
+
+       flash0: n25q00@0 {
+               u-boot,dm-pre-reloc;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               compatible = "n25q00", "spi-flash";
+               reg = <0>;      /* chip select */
+               spi-max-frequency = <50000000>;
+               m25p,fast-read;
+               page-size = <256>;
+               block-size = <16>; /* 2^16, 64KB */
+               read-delay = <4>;  /* delay value in read data capture register */
+               tshsl-ns = <50>;
+               tsd2d-ns = <50>;
+               tchsh-ns = <4>;
+               tslch-ns = <4>;
+       };
+};
diff --git a/arch/arm/dts/sun4i-a10-inet1.dts b/arch/arm/dts/sun4i-a10-inet1.dts
new file mode 100644 (file)
index 0000000..487ce63
--- /dev/null
@@ -0,0 +1,226 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun4i-a10.dtsi"
+#include "sunxi-common-regulators.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "iNet-1";
+       compatible = "inet-tek,inet1", "allwinner,sun4i-a10";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci0  {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupts = <0>;
+       };
+};
+
+#include "axp209.dtsi"
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+
+       /* Accelerometer */
+       bma250@18 {
+               compatible = "bosch,bma250";
+               reg = <0x18>;
+               interrupt-parent = <&pio>;
+               interrupts = <7 0 IRQ_TYPE_EDGE_RISING>; /* PH0 / EINT0 */
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins_a>;
+       status = "okay";
+};
+
+&lradc {
+       vref-supply = <&reg_ldo2>;
+       status = "okay";
+
+       button@200 {
+               label = "Volume Up";
+               linux,code = <KEY_VOLUMEUP>;
+               channel = <0>;
+               voltage = <200000>;
+       };
+
+       button@1000 {
+               label = "Volume Down";
+               linux,code = <KEY_VOLUMEDOWN>;
+               channel = <0>;
+               voltage = <1000000>;
+       };
+
+       button@1200 {
+               label = "Home";
+               linux,code = <KEY_HOMEPAGE>;
+               channel = <0>;
+               voltage = <1200000>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
+       cd-inverted;
+       status = "okay";
+};
+
+&ohci0  {
+       status = "okay";
+};
+
+&otg_sram {
+       status = "okay";
+};
+
+&pio {
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH5";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
+};
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1400000>;
+       regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <1250000>;
+       regulator-max-microvolt = <1250000>;
+       regulator-name = "vdd-int-dll";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&reg_usb0_vbus {
+       status = "okay";
+};
+
+&reg_usb1_vbus {
+       status = "okay";
+};
+
+&reg_usb2_vbus {
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins_a>;
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+       usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
+       usb1_vbus-supply = <&reg_usb1_vbus>;
+       usb2_vbus-supply = <&reg_usb2_vbus>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/sun4i-a10-inet9f-rev03.dts b/arch/arm/dts/sun4i-a10-inet9f-rev03.dts
new file mode 100644 (file)
index 0000000..8446465
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun4i-a10.dtsi"
+#include "sunxi-common-regulators.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "iNet-9F Rev 03";
+       compatible = "inet-tek,inet9f-rev03", "allwinner,sun4i-a10";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupts = <0>;
+       };
+};
+
+#include "axp209.dtsi"
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins_a>;
+       status = "okay";
+};
+
+&lradc {
+       vref-supply = <&reg_ldo2>;
+       status = "okay";
+
+       button@200 {
+               label = "Menu";
+               linux,code = <KEY_MENU>;
+               channel = <0>;
+               voltage = <200000>;
+       };
+
+       button@600 {
+               label = "Volume Up";
+               linux,code = <KEY_VOLUMEUP>;
+               channel = <0>;
+               voltage = <600000>;
+       };
+
+       button@800 {
+               label = "Volume Down";
+               linux,code = <KEY_VOLUMEDOWN>;
+               channel = <0>;
+               voltage = <800000>;
+       };
+
+       button@1000 {
+               label = "Home";
+               linux,code = <KEY_HOMEPAGE>;
+               channel = <0>;
+               voltage = <1000000>;
+       };
+
+       button@1200 {
+               label = "Esc";
+               linux,code = <KEY_ESC>;
+               channel = <0>;
+               voltage = <1200000>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
+       cd-inverted;
+       status = "okay";
+};
+
+&otg_sram {
+       status = "okay";
+};
+
+&pio {
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH5";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
+};
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1400000>;
+       regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <1250000>;
+       regulator-max-microvolt = <1250000>;
+       regulator-name = "vdd-int-dll";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&reg_usb0_vbus {
+       status = "okay";
+};
+
+&reg_usb2_vbus {
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins_a>;
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+       usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
+       usb2_vbus-supply = <&reg_usb2_vbus>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/sun4i-a10-pov-protab2-ips9.dts b/arch/arm/dts/sun4i-a10-pov-protab2-ips9.dts
new file mode 100644 (file)
index 0000000..223515e
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun4i-a10.dtsi"
+#include "sunxi-common-regulators.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "Point of View Protab2-IPS9";
+       compatible = "pov,protab2-ips9", "allwinner,sun4i-a10";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupts = <0>;
+       };
+};
+
+#include "axp209.dtsi"
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins_a>;
+       status = "okay";
+};
+
+&lradc {
+       vref-supply = <&reg_ldo2>;
+       status = "okay";
+
+       button@400 {
+               label = "Volume Up";
+               linux,code = <KEY_VOLUMEUP>;
+               channel = <0>;
+               voltage = <400000>;
+       };
+
+       button@800 {
+               label = "Volume Down";
+               linux,code = <KEY_VOLUMEDOWN>;
+               channel = <0>;
+               voltage = <800000>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
+       cd-inverted;
+       status = "okay";
+};
+
+&otg_sram {
+       status = "okay";
+};
+
+&pio {
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH5";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
+};
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1400000>;
+       regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <1250000>;
+       regulator-max-microvolt = <1250000>;
+       regulator-name = "vdd-int-dll";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&reg_ldo3 {
+       /*
+        * We need to always power the camera sensor, otherwhise all access
+        * to i2c1 is blocked.
+        */
+       regulator-always-on;
+       regulator-min-microvolt = <2800000>;
+       regulator-max-microvolt = <2800000>;
+       regulator-name = "vdd-csi";
+};
+
+&reg_usb0_vbus {
+       status = "okay";
+};
+
+&reg_usb1_vbus {
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins_a>;
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 7 4 GPIO_ACTIVE_HIGH>; /* PH4 */
+       usb0_vbus_det-gpio = <&pio 7 5 GPIO_ACTIVE_HIGH>; /* PH5 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
+       usb1_vbus-supply = <&reg_usb1_vbus>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/sun5i-a10s-wobo-i5.dts b/arch/arm/dts/sun5i-a10s-wobo-i5.dts
new file mode 100644 (file)
index 0000000..9fea918
--- /dev/null
@@ -0,0 +1,224 @@
+/*
+ * Copyright 2015 Jelle van der Waa <jelle@vdwaa.nl>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun5i-a10s.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "A10s-Wobo i5";
+       compatible = "wobo,a10s-wobo-i5", "allwinner,sun5i-a10s";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_pins_wobo_i5>;
+
+               blue {
+                       label = "a10s-wobo-i5:blue:usr";
+                       gpios = <&pio 1 2 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       reg_emac_3v3: emac-3v3 {
+               compatible = "regulator-fixed";
+               pinctrl-names = "default";
+               pinctrl-0 = <&emac_power_pin_wobo>;
+               regulator-name = "emac-3v3";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               enable-active-high;
+               gpio = <&pio 0 2 GPIO_ACTIVE_HIGH>;
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&emac {
+       pinctrl-names = "default";
+       pinctrl-0 = <&emac_pins_b>;
+       phy = <&phy1>;
+       status = "okay";
+};
+
+&emac_sram {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupts = <0>;
+       };
+};
+
+#include "axp209.dtsi"
+
+&mdio {
+       phy-supply = <&reg_emac_3v3>;
+       status = "okay";
+
+       phy1: ethernet-phy@1 {
+               reg = <1>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_wobo_i5>;
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       cd-gpios = <&pio 1 3 GPIO_ACTIVE_HIGH>; /* PB3 */
+       cd-inverted;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&otg_sram {
+       status = "okay";
+};
+
+&pio {
+       led_pins_wobo_i5: led_pins@0 {
+               allwinner,pins = "PB2";
+               allwinner,function = "gpio_out";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+
+       mmc0_cd_pin_wobo_i5: mmc0_cd_pin@0 {
+               allwinner,pins = "PB3";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       emac_power_pin_wobo: emac_power_pin@0 {
+               allwinner,pins = "PA02";
+               allwinner,function = "gpio_out";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+};
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1400000>;
+       regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <1250000>;
+       regulator-max-microvolt = <1250000>;
+       regulator-name = "vdd-int-dll";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&reg_ldo3 {
+       regulator-always-on;
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+       regulator-name = "vcc-wifi";
+};
+
+&reg_usb1_vbus {
+       gpio = <&pio 6 12 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins_a>;
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usb1_vbus_pin_a {
+       allwinner,pins = "PG12";
+};
+
+&usbphy {
+       usb1_vbus-supply = <&reg_usb1_vbus>;
+       status = "okay";
+};
index f11efb722bbb025cc7f0d5b7b22524e3bc060c45..4173e1e59713476e2a6b74a2f941c700baf11d97 100644 (file)
                allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
        };
 
+       emac_pins_b: emac0@1 {
+               allwinner,pins = "PD6", "PD7", "PD10",
+                               "PD11", "PD12", "PD13", "PD14",
+                               "PD15", "PD18", "PD19", "PD20",
+                               "PD21", "PD22", "PD23", "PD24",
+                               "PD25", "PD26", "PD27";
+               allwinner,function = "emac";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+
        mmc1_pins_a: mmc1@0 {
                allwinner,pins = "PG3", "PG4", "PG5",
                                 "PG6", "PG7", "PG8";
diff --git a/arch/arm/dts/sun5i-a13-inet-98v-rev2.dts b/arch/arm/dts/sun5i-a13-inet-98v-rev2.dts
new file mode 100644 (file)
index 0000000..6d466a2
--- /dev/null
@@ -0,0 +1,236 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun5i-a13.dtsi"
+#include "sunxi-common-regulators.dtsi"
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "INet-98V Rev 02";
+       compatible = "primux,inet98v-rev2", "allwinner,sun5i-a13";
+
+       aliases {
+               serial0 = &uart1;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupts = <0>;
+       };
+};
+
+#include "axp209.dtsi"
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+
+       pcf8563: rtc@51 {
+               compatible = "nxp,pcf8563";
+               reg = <0x51>;
+       };
+};
+
+&lradc {
+       vref-supply = <&reg_ldo2>;
+       status = "okay";
+
+       button@200 {
+               label = "Volume Up";
+               linux,code = <KEY_VOLUMEUP>;
+               channel = <0>;
+               voltage = <200000>;
+       };
+
+       button@400 {
+               label = "Volume Down";
+               linux,code = <KEY_VOLUMEDOWN>;
+               channel = <0>;
+               voltage = <400000>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_inet98fv2>;
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       cd-gpios = <&pio 6 0 GPIO_ACTIVE_HIGH>; /* PG0 */
+       cd-inverted;
+       status = "okay";
+};
+
+&mmc2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc2_pins_a>;
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <8>;
+       non-removable;
+       status = "okay";
+
+       mmccard: mmccard@0 {
+               reg = <0>;
+               compatible = "mmc-card";
+               broken-hpi;
+       };
+};
+
+&otg_sram {
+       status = "okay";
+};
+
+&pio {
+       mmc0_cd_pin_inet98fv2: mmc0_cd_pin@0 {
+               allwinner,pins = "PG0";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PG1";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PG2";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+};
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1400000>;
+       regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <1250000>;
+       regulator-max-microvolt = <1250000>;
+       regulator-name = "vdd-int-pll";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&reg_ldo3 {
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+       regulator-name = "vcc-wifi";
+};
+
+&reg_usb0_vbus {
+       gpio = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
+       status = "okay";
+};
+
+&reg_usb1_vbus {
+       gpio = <&pio 6 11 GPIO_ACTIVE_HIGH>; /* PG11 */
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins_b>;
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usb0_vbus_pin_a {
+       allwinner,pins = "PG12";
+};
+
+&usb1_vbus_pin_a {
+       allwinner,pins = "PG11";
+};
+
+&usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */
+       usb0_vbus_det-gpio = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
+       usb1_vbus-supply = <&reg_usb1_vbus>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/sun5i-a13-q8-tablet.dts b/arch/arm/dts/sun5i-a13-q8-tablet.dts
new file mode 100644 (file)
index 0000000..72e93ac
--- /dev/null
@@ -0,0 +1,60 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun5i-a13.dtsi"
+#include "sun5i-q8-common.dtsi"
+
+/ {
+       model = "Q8 A13 Tablet";
+       compatible = "allwinner,q8-a13", "allwinner,sun5i-a13";
+};
+
+&reg_ldo3 {
+       regulator-min-microvolt = <3300000>;
+       regulator-max-microvolt = <3300000>;
+       regulator-name = "vcc-wifi";
+};
+
+&usbphy {
+       usb1_vbus-supply = <&reg_ldo3>;
+};
diff --git a/arch/arm/dts/sun5i-q8-common.dtsi b/arch/arm/dts/sun5i-q8-common.dtsi
new file mode 100644 (file)
index 0000000..0641d68
--- /dev/null
@@ -0,0 +1,170 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+#include "sunxi-q8-common.dtsi"
+
+/ {
+       aliases {
+               serial0 = &uart1;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&cpu0 {
+       cpu-supply = <&reg_dcdc2>;
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&i2c0 {
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupts = <0>;
+       };
+};
+
+&i2c1 {
+       pcf8563: rtc@51 {
+               compatible = "nxp,pcf8563";
+               reg = <0x51>;
+       };
+};
+
+#include "axp209.dtsi"
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_q8>;
+       vmmc-supply = <&reg_vcc3v0>;
+       bus-width = <4>;
+       cd-gpios = <&pio 6 0 GPIO_ACTIVE_HIGH>; /* PG0 */
+       cd-inverted;
+       status = "okay";
+};
+
+&otg_sram {
+       status = "okay";
+};
+
+&pio {
+       mmc0_cd_pin_q8: mmc0_cd_pin@0 {
+               allwinner,pins = "PG0";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PG1";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_DOWN>;
+       };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PG2";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+
+       usb0_vbus_pin_a: usb0_vbus_pin@0 {
+               allwinner,pins = "PG12";
+               allwinner,function = "gpio_out";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+};
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1500000>;
+       regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1400000>;
+       regulator-name = "vdd-int-pll";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&reg_usb0_vbus {
+       gpio = <&pio 6 12 GPIO_ACTIVE_HIGH>; /* PG12 */
+       status = "okay";
+};
+
+&uart1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins_b>;
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpio = <&pio 6 2 GPIO_ACTIVE_HIGH>; /* PG2 */
+       usb0_vbus_det-gpio = <&pio 6 1 GPIO_ACTIVE_HIGH>; /* PG1 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/sun7i-a20-olimex-som-evb.dts b/arch/arm/dts/sun7i-a20-olimex-som-evb.dts
new file mode 100644 (file)
index 0000000..6904dbd
--- /dev/null
@@ -0,0 +1,244 @@
+/*
+ * Copyright 2015 - Marcus Cooper <codekipper@gmail.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun7i-a20.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/interrupt-controller/irq.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "Olimex A20-Olimex-SOM-EVB";
+       compatible = "olimex,a20-olimex-som-evb", "allwinner,sun7i-a20";
+
+       aliases {
+               serial0 = &uart0;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+
+       leds {
+               compatible = "gpio-leds";
+               pinctrl-names = "default";
+               pinctrl-0 = <&led_pins_olimex_som_evb>;
+
+               green {
+                       label = "a20-olimex-som-evb:green:usr";
+                       gpios = <&pio 7 2 GPIO_ACTIVE_HIGH>;
+                       default-state = "on";
+               };
+       };
+
+       reg_axp_ipsout: axp_ipsout {
+               compatible = "regulator-fixed";
+               regulator-name = "axp-ipsout";
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               regulator-always-on;
+       };
+};
+
+&ahci {
+       target-supply = <&reg_ahci_5v>;
+       status = "okay";
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&ehci1 {
+       status = "okay";
+};
+
+&gmac {
+       pinctrl-names = "default";
+       pinctrl-0 = <&gmac_pins_rgmii_a>;
+       phy = <&phy1>;
+       phy-mode = "rgmii";
+       status = "okay";
+
+       phy1: ethernet-phy@1 {
+               reg = <1>;
+       };
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+
+       axp209: pmic@34 {
+               reg = <0x34>;
+               interrupt-parent = <&nmi_intc>;
+               interrupts = <0 IRQ_TYPE_LEVEL_LOW>;
+       };
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_reference_design>;
+       vmmc-supply = <&reg_vcc3v3>;
+       bus-width = <4>;
+       cd-gpios = <&pio 7 1 GPIO_ACTIVE_HIGH>; /* PH1 */
+       cd-inverted;
+       status = "okay";
+};
+
+&ohci0 {
+       status = "okay";
+};
+
+&ohci1 {
+       status = "okay";
+};
+
+&otg_sram {
+       status = "okay";
+};
+
+&pio {
+       ahci_pwr_pin_olimex_som_evb: ahci_pwr_pin@1 {
+               allwinner,pins = "PC3";
+               allwinner,function = "gpio_out";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+
+       led_pins_olimex_som_evb: led_pins@0 {
+               allwinner,pins = "PH2";
+               allwinner,function = "gpio_out";
+               allwinner,drive = <SUN4I_PINCTRL_20_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+
+       usb0_id_detect_pin: usb0_id_detect_pin@0 {
+               allwinner,pins = "PH04";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+
+       usb0_vbus_detect_pin: usb0_vbus_detect_pin@0 {
+               allwinner,pins = "PH05";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_NO_PULL>;
+       };
+};
+
+&reg_ahci_5v {
+       pinctrl-0 = <&ahci_pwr_pin_olimex_som_evb>;
+       gpio = <&pio 2 3 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+#include "axp209.dtsi"
+
+&reg_dcdc2 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1425000>;
+       regulator-name = "vdd-cpu";
+};
+
+&reg_dcdc3 {
+       regulator-always-on;
+       regulator-min-microvolt = <1000000>;
+       regulator-max-microvolt = <1400000>;
+       regulator-name = "vdd-int-dll";
+};
+
+&reg_ldo1 {
+       regulator-name = "vdd-rtc";
+};
+
+&reg_ldo2 {
+       regulator-always-on;
+       regulator-min-microvolt = <3000000>;
+       regulator-max-microvolt = <3000000>;
+       regulator-name = "avcc";
+};
+
+&reg_usb0_vbus {
+       status = "okay";
+};
+
+&reg_usb1_vbus {
+       status = "okay";
+};
+
+&reg_usb2_vbus {
+       status = "okay";
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins_a>;
+       status = "okay";
+};
+
+&usb_otg {
+       dr_mode = "otg";
+       status = "okay";
+};
+
+&usbphy {
+       pinctrl-names = "default";
+       pinctrl-0 = <&usb0_id_detect_pin>, <&usb0_vbus_detect_pin>;
+       usb0_id_det-gpios = <&pio 7 04 GPIO_ACTIVE_HIGH>; /* PH04 */
+       usb0_vbus_det-gpios = <&pio 7 05 GPIO_ACTIVE_HIGH>; /* PH05 */
+       usb0_vbus-supply = <&reg_usb0_vbus>;
+       usb1_vbus-supply = <&reg_usb1_vbus>;
+       usb2_vbus-supply = <&reg_usb2_vbus>;
+       status = "okay";
+};
diff --git a/arch/arm/dts/sun8i-a23-gt90h-v4.dts b/arch/arm/dts/sun8i-a23-gt90h-v4.dts
new file mode 100644 (file)
index 0000000..1aeb06c
--- /dev/null
@@ -0,0 +1,145 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+/dts-v1/;
+#include "sun8i-a23.dtsi"
+#include "sunxi-common-regulators.dtsi"
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+
+/ {
+       model = "Allwinner GT90H Quad Core Tablet (v4)";
+       compatible = "allwinner,gt90h-v4", "allwinner,sun8i-a33";
+
+       aliases {
+               serial0 = &r_uart;
+       };
+
+       chosen {
+               stdout-path = "serial0:115200n8";
+       };
+};
+
+&ehci0 {
+       status = "okay";
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+};
+
+&lradc {
+       vref-supply = <&reg_vcc3v0>;
+       status = "okay";
+
+       button@200 {
+               label = "Volume Up";
+               linux,code = <KEY_VOLUMEUP>;
+               channel = <0>;
+               voltage = <200000>;
+       };
+
+       button@400 {
+               label = "Volume Down";
+               linux,code = <KEY_VOLUMEDOWN>;
+               channel = <0>;
+               voltage = <400000>;
+       };
+
+       button@600 {
+               label = "Back";
+               linux,code = <KEY_BACK>;
+               channel = <0>;
+               voltage = <600000>;
+       };
+};
+
+&mmc0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins_a>, <&mmc0_cd_pin_gt90h>;
+       /* FIXME this really is aldo1, correct once we've pmic support */
+       vmmc-supply = <&reg_vcc3v0>;
+       bus-width = <4>;
+       cd-gpios = <&pio 1 4 GPIO_ACTIVE_HIGH>; /* PB4 */
+       cd-inverted;
+       status = "okay";
+};
+
+&pio {
+       mmc0_cd_pin_gt90h: mmc0_cd_pin@0 {
+               allwinner,pins = "PB4";
+               allwinner,function = "gpio_in";
+               allwinner,drive = <SUN4I_PINCTRL_10_MA>;
+               allwinner,pull = <SUN4I_PINCTRL_PULL_UP>;
+       };
+};
+
+&r_uart {
+       pinctrl-names = "default";
+       pinctrl-0 = <&r_uart_pins_a>;
+       status = "okay";
+};
+
+/*
+ * FIXME for now we only support host mode and rely on u-boot to have
+ * turned on Vbus which is controlled by the axp223 pmic on the board.
+ *
+ * Once we have axp223 support we should switch to fully supporting otg.
+ */
+&usb_otg {
+       dr_mode = "host";
+       status = "okay";
+};
+
+&usbphy {
+       status = "okay";
+};
diff --git a/arch/arm/dts/sunxi-q8-common.dtsi b/arch/arm/dts/sunxi-q8-common.dtsi
new file mode 100644 (file)
index 0000000..17b26ff
--- /dev/null
@@ -0,0 +1,77 @@
+/*
+ * Copyright 2015 Hans de Goede <hdegoede@redhat.com>
+ *
+ * This file is dual-licensed: you can use it either under the terms
+ * of the GPL or the X11 license, at your option. Note that this dual
+ * licensing only applies to this file, and not this project as a
+ * whole.
+ *
+ *  a) This file is free software; you can redistribute it and/or
+ *     modify it under the terms of the GNU General Public License as
+ *     published by the Free Software Foundation; either version 2 of the
+ *     License, or (at your option) any later version.
+ *
+ *     This file is distributed in the hope that it will be useful,
+ *     but WITHOUT ANY WARRANTY; without even the implied warranty of
+ *     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ *     GNU General Public License for more details.
+ *
+ * Or, alternatively,
+ *
+ *  b) Permission is hereby granted, free of charge, to any person
+ *     obtaining a copy of this software and associated documentation
+ *     files (the "Software"), to deal in the Software without
+ *     restriction, including without limitation the rights to use,
+ *     copy, modify, merge, publish, distribute, sublicense, and/or
+ *     sell copies of the Software, and to permit persons to whom the
+ *     Software is furnished to do so, subject to the following
+ *     conditions:
+ *
+ *     The above copyright notice and this permission notice shall be
+ *     included in all copies or substantial portions of the Software.
+ *
+ *     THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
+ *     EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
+ *     OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
+ *     NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
+ *     HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
+ *     WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
+ *     FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+ *     OTHER DEALINGS IN THE SOFTWARE.
+ */
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include <dt-bindings/pinctrl/sun4i-a10.h>
+#include "sunxi-common-regulators.dtsi"
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins_a>;
+       status = "okay";
+};
+
+&i2c1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c1_pins_a>;
+       status = "okay";
+};
+
+&lradc {
+       vref-supply = <&reg_vcc3v0>;
+       status = "okay";
+
+       button@200 {
+               label = "Volume Up";
+               linux,code = <KEY_VOLUMEUP>;
+               channel = <0>;
+               voltage = <200000>;
+       };
+
+       button@400 {
+               label = "Volume Down";
+               linux,code = <KEY_VOLUMEDOWN>;
+               channel = <0>;
+               voltage = <400000>;
+       };
+};
index b9f1ca4da98828fded63bd3a0b60f9b61162bba0..1698d061e770829ae9f674189294441f41ecf08c 100644 (file)
@@ -7,7 +7,7 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-ifeq ($(SOC),$(filter $(SOC),mx25 mx35 mx5 mx6 vf610))
+ifeq ($(SOC),$(filter $(SOC),mx25 mx35 mx5 mx6 mx7 vf610))
 obj-y  = iomux-v3.o
 endif
 ifeq ($(SOC),$(filter $(SOC),mx5 mx6))
@@ -18,7 +18,13 @@ ifeq ($(SOC),$(filter $(SOC),mx6 mxs))
 obj-y  += misc.o
 obj-$(CONFIG_SPL_BUILD)        += spl.o
 endif
-ifeq ($(SOC),$(filter $(SOC),mx6))
+ifeq ($(SOC),$(filter $(SOC),mx7))
+obj-y  += cpu.o
+obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o
+obj-$(CONFIG_SYSCOUNTER_TIMER) += syscounter.o
+endif
+ifeq ($(SOC),$(filter $(SOC),mx6 mx7))
+obj-y  += cache.o init.o
 obj-$(CONFIG_CMD_SATA) += sata.o
 obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o
 endif
diff --git a/arch/arm/imx-common/cache.c b/arch/arm/imx-common/cache.c
new file mode 100644 (file)
index 0000000..54b021c
--- /dev/null
@@ -0,0 +1,103 @@
+/*
+ * Copyright 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/armv7.h>
+#include <asm/pl310.h>
+#include <asm/io.h>
+
+#ifndef CONFIG_SYS_DCACHE_OFF
+void enable_caches(void)
+{
+#if defined(CONFIG_SYS_ARM_CACHE_WRITETHROUGH)
+       enum dcache_option option = DCACHE_WRITETHROUGH;
+#else
+       enum dcache_option option = DCACHE_WRITEBACK;
+#endif
+       /* Avoid random hang when download by usb */
+       invalidate_dcache_all();
+
+       /* Enable D-cache. I-cache is already enabled in start.S */
+       dcache_enable();
+
+       /* Enable caching on OCRAM and ROM */
+       mmu_set_region_dcache_behaviour(ROMCP_ARB_BASE_ADDR,
+                                       ROMCP_ARB_END_ADDR,
+                                       option);
+       mmu_set_region_dcache_behaviour(IRAM_BASE_ADDR,
+                                       IRAM_SIZE,
+                                       option);
+}
+#endif
+
+#ifndef CONFIG_SYS_L2CACHE_OFF
+#ifdef CONFIG_SYS_L2_PL310
+#define IOMUXC_GPR11_L2CACHE_AS_OCRAM 0x00000002
+void v7_outer_cache_enable(void)
+{
+       struct pl310_regs *const pl310 = (struct pl310_regs *)L2_PL310_BASE;
+       unsigned int val;
+
+
+       /*
+        * Set bit 22 in the auxiliary control register. If this bit
+        * is cleared, PL310 treats Normal Shared Non-cacheable
+        * accesses as Cacheable no-allocate.
+        */
+       setbits_le32(&pl310->pl310_aux_ctrl, L310_SHARED_ATT_OVERRIDE_ENABLE);
+
+#if defined CONFIG_MX6SL
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       val = readl(&iomux->gpr[11]);
+       if (val & IOMUXC_GPR11_L2CACHE_AS_OCRAM) {
+               /* L2 cache configured as OCRAM, reset it */
+               val &= ~IOMUXC_GPR11_L2CACHE_AS_OCRAM;
+               writel(val, &iomux->gpr[11]);
+       }
+#endif
+
+       /* Must disable the L2 before changing the latency parameters */
+       clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
+
+       writel(0x132, &pl310->pl310_tag_latency_ctrl);
+       writel(0x132, &pl310->pl310_data_latency_ctrl);
+
+       val = readl(&pl310->pl310_prefetch_ctrl);
+
+       /* Turn on the L2 I/D prefetch */
+       val |= 0x30000000;
+
+       /*
+        * The L2 cache controller(PL310) version on the i.MX6D/Q is r3p1-50rel0
+        * The L2 cache controller(PL310) version on the i.MX6DL/SOLO/SL is r3p2
+        * But according to ARM PL310 errata: 752271
+        * ID: 752271: Double linefill feature can cause data corruption
+        * Fault Status: Present in: r3p0, r3p1, r3p1-50rel0. Fixed in r3p2
+        * Workaround: The only workaround to this erratum is to disable the
+        * double linefill feature. This is the default behavior.
+        */
+
+#ifndef CONFIG_MX6Q
+       val |= 0x40800000;
+#endif
+       writel(val, &pl310->pl310_prefetch_ctrl);
+
+       val = readl(&pl310->pl310_power_ctrl);
+       val |= L2X0_DYNAMIC_CLK_GATING_EN;
+       val |= L2X0_STNDBY_MODE_EN;
+       writel(val, &pl310->pl310_power_ctrl);
+
+       setbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
+}
+
+void v7_outer_cache_disable(void)
+{
+       struct pl310_regs *const pl310 = (struct pl310_regs *)L2_PL310_BASE;
+
+       clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
+}
+#endif /* !CONFIG_SYS_L2_PL310 */
+#endif /* !CONFIG_SYS_L2CACHE_OFF */
index e27546c906dc6e0251e0d9a7588de6241657ba0f..d3d1fc5afaf19d5e44a1d831727190dc2c48b296 100644 (file)
@@ -46,13 +46,28 @@ static char *get_reset_cause(void)
        case 0x00008:
                return "IPP USER";
        case 0x00010:
+#ifdef CONFIG_MX7
+               return "WDOG1";
+#else
                return "WDOG";
+#endif
        case 0x00020:
                return "JTAG HIGH-Z";
        case 0x00040:
                return "JTAG SW";
+       case 0x00080:
+               return "WDOG3";
+#ifdef CONFIG_MX7
+       case 0x00100:
+               return "WDOG4";
+       case 0x00200:
+               return "TEMPSENSE";
+#else
+       case 0x00100:
+               return "TEMPSENSE";
        case 0x10000:
                return "WARM BOOT";
+#endif
        default:
                return "unknown reset";
        }
@@ -122,6 +137,8 @@ unsigned imx_ddr_size(void)
 const char *get_imx_type(u32 imxtype)
 {
        switch (imxtype) {
+       case MXC_CPU_MX7D:
+               return "7D";    /* Dual-core version of the mx7 */
        case MXC_CPU_MX6QP:
                return "6QP";   /* Quad-Plus version of the mx6 */
        case MXC_CPU_MX6DP:
@@ -154,14 +171,12 @@ int print_cpuinfo(void)
        u32 cpurev;
        __maybe_unused u32 max_freq;
 
-#if defined(CONFIG_MX6) && defined(CONFIG_IMX6_THERMAL)
+       cpurev = get_cpu_rev();
+
+#if defined(CONFIG_IMX_THERMAL)
        struct udevice *thermal_dev;
        int cpu_tmp, minc, maxc, ret;
-#endif
-
-       cpurev = get_cpu_rev();
 
-#if defined(CONFIG_MX6)
        printf("CPU:   Freescale i.MX%s rev%d.%d",
               get_imx_type((cpurev & 0xFF000) >> 12),
               (cpurev & 0x000F0) >> 4,
@@ -181,7 +196,7 @@ int print_cpuinfo(void)
                mxc_get_clock(MXC_ARM_CLK) / 1000000);
 #endif
 
-#if defined(CONFIG_MX6) && defined(CONFIG_IMX6_THERMAL)
+#if defined(CONFIG_IMX_THERMAL)
        puts("CPU:   ");
        switch (get_cpu_temp_grade(&minc, &maxc)) {
        case TEMP_AUTOMOTIVE:
@@ -205,9 +220,9 @@ int print_cpuinfo(void)
                if (!ret)
                        printf(" at %dC\n", cpu_tmp);
                else
-                       puts(" - invalid sensor data\n");
+                       debug(" - invalid sensor data\n");
        } else {
-               puts(" - invalid sensor device\n");
+               debug(" - invalid sensor device\n");
        }
 #endif
 
@@ -238,6 +253,7 @@ int cpu_mmc_init(bd_t *bis)
 }
 #endif
 
+#ifndef CONFIG_MX7
 u32 get_ahb_clk(void)
 {
        struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
@@ -249,6 +265,7 @@ u32 get_ahb_clk(void)
 
        return get_periph_clk() / (ahb_podf + 1);
 }
+#endif
 
 void arch_preboot_os(void)
 {
diff --git a/arch/arm/imx-common/init.c b/arch/arm/imx-common/init.c
new file mode 100644 (file)
index 0000000..56d5010
--- /dev/null
@@ -0,0 +1,117 @@
+/*
+ * Copyright 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/imx-common/boot_mode.h>
+#include <asm/arch/crm_regs.h>
+
+void init_aips(void)
+{
+       struct aipstz_regs *aips1, *aips2, *aips3;
+
+       aips1 = (struct aipstz_regs *)AIPS1_BASE_ADDR;
+       aips2 = (struct aipstz_regs *)AIPS2_BASE_ADDR;
+       aips3 = (struct aipstz_regs *)AIPS3_BASE_ADDR;
+
+       /*
+        * Set all MPROTx to be non-bufferable, trusted for R/W,
+        * not forced to user-mode.
+        */
+       writel(0x77777777, &aips1->mprot0);
+       writel(0x77777777, &aips1->mprot1);
+       writel(0x77777777, &aips2->mprot0);
+       writel(0x77777777, &aips2->mprot1);
+
+       /*
+        * Set all OPACRx to be non-bufferable, not require
+        * supervisor privilege level for access,allow for
+        * write access and untrusted master access.
+        */
+       writel(0x00000000, &aips1->opacr0);
+       writel(0x00000000, &aips1->opacr1);
+       writel(0x00000000, &aips1->opacr2);
+       writel(0x00000000, &aips1->opacr3);
+       writel(0x00000000, &aips1->opacr4);
+       writel(0x00000000, &aips2->opacr0);
+       writel(0x00000000, &aips2->opacr1);
+       writel(0x00000000, &aips2->opacr2);
+       writel(0x00000000, &aips2->opacr3);
+       writel(0x00000000, &aips2->opacr4);
+
+       if (is_cpu_type(MXC_CPU_MX6SX) || is_soc_type(MXC_SOC_MX7))
+       {
+               /*
+                * Set all MPROTx to be non-bufferable, trusted for R/W,
+                * not forced to user-mode.
+                */
+               writel(0x77777777, &aips3->mprot0);
+               writel(0x77777777, &aips3->mprot1);
+
+               /*
+                * Set all OPACRx to be non-bufferable, not require
+                * supervisor privilege level for access,allow for
+                * write access and untrusted master access.
+                */
+               writel(0x00000000, &aips3->opacr0);
+               writel(0x00000000, &aips3->opacr1);
+               writel(0x00000000, &aips3->opacr2);
+               writel(0x00000000, &aips3->opacr3);
+               writel(0x00000000, &aips3->opacr4);
+       }
+}
+
+void imx_set_wdog_powerdown(bool enable)
+{
+       struct wdog_regs *wdog1 = (struct wdog_regs *)WDOG1_BASE_ADDR;
+       struct wdog_regs *wdog2 = (struct wdog_regs *)WDOG2_BASE_ADDR;
+       struct wdog_regs *wdog3 = (struct wdog_regs *)WDOG3_BASE_ADDR;
+#ifdef CONFIG_MX7D
+       struct wdog_regs *wdog4 = (struct wdog_regs *)WDOG4_BASE_ADDR;
+#endif
+
+       /* Write to the PDE (Power Down Enable) bit */
+       writew(enable, &wdog1->wmcr);
+       writew(enable, &wdog2->wmcr);
+
+       if (is_cpu_type(MXC_CPU_MX6SX) || is_cpu_type(MXC_CPU_MX6UL) ||
+                       is_soc_type(MXC_SOC_MX7))
+               writew(enable, &wdog3->wmcr);
+#ifdef CONFIG_MX7D
+       writew(enable, &wdog4->wmcr);
+#endif
+}
+
+#define SRC_SCR_WARM_RESET_ENABLE      0
+
+void init_src(void)
+{
+       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
+       u32 val;
+
+       /*
+        * force warm reset sources to generate cold reset
+        * for a more reliable restart
+        */
+       val = readl(&src_regs->scr);
+       val &= ~(1 << SRC_SCR_WARM_RESET_ENABLE);
+       writel(val, &src_regs->scr);
+}
+
+void boot_mode_apply(unsigned cfg_val)
+{
+       unsigned reg;
+       struct src *psrc = (struct src *)SRC_BASE_ADDR;
+       writel(cfg_val, &psrc->gpr9);
+       reg = readl(&psrc->gpr10);
+       if (cfg_val)
+               reg |= 1 << 28;
+       else
+               reg &= ~(1 << 28);
+       writel(reg, &psrc->gpr10);
+}
index 7fb23dd0271de08ed0101f944c2f0d63da0c49ff..b4f481fa53b2376387b692bae10bc2dac8eca221 100644 (file)
@@ -41,6 +41,18 @@ void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
        }
 #endif
 
+#ifdef CONFIG_IOMUX_LPSR
+       u32 lpsr = (pad & MUX_MODE_LPSR) >> MUX_MODE_SHIFT;
+
+       if (lpsr == IOMUX_CONFIG_LPSR) {
+               base = (void *)IOMUXC_LPSR_BASE_ADDR;
+               mux_mode &= ~IOMUX_CONFIG_LPSR;
+               /* set daisy chain sel_input */
+               if (sel_input_ofs)
+                       sel_input_ofs += IOMUX_LPSR_SEL_INPUT_OFS;
+       }
+#endif
+
        if (mux_ctrl_ofs)
                __raw_writel(mux_mode, base + mux_ctrl_ofs);
 
@@ -55,6 +67,12 @@ void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
        if (!(pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs)
                __raw_writel(pad_ctrl, base + pad_ctrl_ofs);
 #endif
+
+#ifdef CONFIG_IOMUX_LPSR
+       if (lpsr == IOMUX_CONFIG_LPSR)
+               base = (void *)IOMUXC_BASE_ADDR;
+#endif
+
 }
 
 /* configures a list of pads within declared with IOMUX_PADS macro */
diff --git a/arch/arm/imx-common/syscounter.c b/arch/arm/imx-common/syscounter.c
new file mode 100644 (file)
index 0000000..e00fef2
--- /dev/null
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * The file use ls102xa/timer.c as a reference.
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <div64.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/imx-common/syscounter.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * This function is intended for SHORT delays only.
+ * It will overflow at around 10 seconds @ 400MHz,
+ * or 20 seconds @ 200MHz.
+ */
+unsigned long usec2ticks(unsigned long usec)
+{
+       ulong ticks;
+
+       if (usec < 1000)
+               ticks = ((usec * (get_tbclk()/1000)) + 500) / 1000;
+       else
+               ticks = ((usec / 10) * (get_tbclk() / 100000));
+
+       return ticks;
+}
+
+static inline unsigned long long tick_to_time(unsigned long long tick)
+{
+       unsigned long freq;
+
+       asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r" (freq));
+
+       tick *= CONFIG_SYS_HZ;
+       do_div(tick, freq);
+
+       return tick;
+}
+
+static inline unsigned long long us_to_tick(unsigned long long usec)
+{
+       unsigned long freq;
+
+       asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r" (freq));
+
+       usec = usec * freq  + 999999;
+       do_div(usec, 1000000);
+
+       return usec;
+}
+
+int timer_init(void)
+{
+       struct sctr_regs *sctr = (struct sctr_regs *)SCTR_BASE_ADDR;
+       unsigned long val, freq;
+
+       freq = CONFIG_SC_TIMER_CLK;
+       asm("mcr p15, 0, %0, c14, c0, 0" : : "r" (freq));
+
+       writel(freq, &sctr->cntfid0);
+
+       /* Enable system counter */
+       val = readl(&sctr->cntcr);
+       val &= ~(SC_CNTCR_FREQ0 | SC_CNTCR_FREQ1);
+       val |= SC_CNTCR_FREQ0 | SC_CNTCR_ENABLE | SC_CNTCR_HDBG;
+       writel(val, &sctr->cntcr);
+
+       gd->arch.tbl = 0;
+       gd->arch.tbu = 0;
+
+       return 0;
+}
+
+unsigned long long get_ticks(void)
+{
+       unsigned long long now;
+
+       asm("mrrc p15, 0, %Q0, %R0, c14" : "=r" (now));
+
+       gd->arch.tbl = (unsigned long)(now & 0xffffffff);
+       gd->arch.tbu = (unsigned long)(now >> 32);
+
+       return now;
+}
+
+ulong get_timer_masked(void)
+{
+       return tick_to_time(get_ticks());
+}
+
+ulong get_timer(ulong base)
+{
+       return get_timer_masked() - base;
+}
+
+void __udelay(unsigned long usec)
+{
+       unsigned long long tmp;
+       ulong tmo;
+
+       tmo = us_to_tick(usec);
+       tmp = get_ticks() + tmo;        /* get current timestamp */
+
+       while (get_ticks() < tmp)       /* loop till event */
+                /*NOP*/;
+}
+
+/*
+ * 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)
+{
+       unsigned long freq;
+
+       asm volatile("mrc p15, 0, %0, c14, c0, 0" : "=r" (freq));
+
+       return freq;
+}
index 13a9cad23884ec409d95338d3ce3320d7a72154d..112ac5eacd9148a08691e5bc1d0be856f5174ae6 100644 (file)
@@ -17,7 +17,6 @@
 
 #include <asm/arch/hardware.h>
 
-#define BIT(x)                         (1 << x)
 #define CL_BIT(x)                      (0 << x)
 
 /* Timer register bits */
index a4576ddce1a2d9e6c6f0a8b2461918e82b9cc3e5..96d6c98cb8312c38606e740fcc288b13e4e5303a 100644 (file)
@@ -19,6 +19,7 @@
 
 #define CONFIG_MP
 #define CONFIG_SYS_FSL_OCRAM_BASE      0x18000000      /* initial RAM */
+#define CONFIG_SYS_FSL_OCRAM_SIZE      0x00200000      /* 2M */
 /* Link Definitions */
 #define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_FSL_OCRAM_BASE + 0xfff0)
 
 #define CCI_MN_DVM_DOMAIN_CTL          0x200
 #define CCI_MN_DVM_DOMAIN_CTL_SET      0x210
 
+#define CCI_RN_I_0_BASE                        (CCI_MN_BASE + 0x800000)
+#define CCI_RN_I_2_BASE                        (CCI_MN_BASE + 0x820000)
+#define CCI_RN_I_6_BASE                        (CCI_MN_BASE + 0x860000)
+#define CCI_RN_I_12_BASE               (CCI_MN_BASE + 0x8C0000)
+#define CCI_RN_I_16_BASE               (CCI_MN_BASE + 0x900000)
+#define CCI_RN_I_20_BASE               (CCI_MN_BASE + 0x940000)
+
+#define CCI_S0_QOS_CONTROL_BASE(x) ((CCI_RN_I_0_BASE + (x * 0x10000)) + 0x10)
+#define CCI_S1_QOS_CONTROL_BASE(x) ((CCI_RN_I_0_BASE + (x * 0x10000)) + 0x110)
+#define CCI_S2_QOS_CONTROL_BASE(x) ((CCI_RN_I_0_BASE + (x * 0x10000)) + 0x210)
+
 /* Device Configuration */
 #define DCFG_BASE              0x01e00000
 #define DCFG_PORSR1                    0x000
index 98122a2f707006cd93dec1734b2ce059b2b86fc5..4fafaef5d55c015c27bb46d62e3c0fa7348fafad 100644 (file)
@@ -11,8 +11,6 @@
 #define HI6220_GPIO_BASE(bank) (((bank < 4) ? 0xf8011000 : \
                                0xf7020000 - 0x4000) + (0x1000 * bank))
 
-#define BIT(x)                 (1 << (x))
-
 #define HI6220_GPIO_PER_BANK   8
 #define HI6220_GPIO_DIR                0x400
 
index c7f9fffacb9408c1cc1c207a3d16c448c17d93be..7e681e94d742588d4f32df4d39b8e9e0f520fde8 100644 (file)
@@ -4,6 +4,12 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#define MXC_CPU_MX23           0x23
+#define MXC_CPU_MX25           0x25
+#define MXC_CPU_MX27           0x27
+#define MXC_CPU_MX28           0x28
+#define MXC_CPU_MX31           0x31
+#define MXC_CPU_MX35           0x35
 #define MXC_CPU_MX51           0x51
 #define MXC_CPU_MX53           0x53
 #define MXC_CPU_MX6SL          0x60
 #define MXC_CPU_MX6D           0x67
 #define MXC_CPU_MX6DP          0x68
 #define MXC_CPU_MX6QP          0x69
+#define MXC_CPU_MX7D           0x72
+#define MXC_CPU_VF610          0xF6 /* dummy ID */
+
+#define MXC_SOC_MX6            0x60
+#define MXC_SOC_MX7            0x70
 
 #define CS0_128                                        0
 #define CS0_64M_CS1_64M                                1
index d21310e1945261234bf867a37bf2448110d878da..303ff1cdb73f05a19fd40595c8ecb1fd27e3e444 100644 (file)
@@ -158,9 +158,6 @@ struct clk_pm_regs {
 #define CLK_NAND_SLC_SELECT            (1 << 2)
 #define CLK_NAND_MLC_INT               (1 << 5)
 
-/* DMA Clock Control Register bits */
-#define DMA_CLK_ENABLE                 (1 << 0)
-
 /* SSP Clock Control Register bits */
 #define CLK_SSP0_ENABLE_CLOCK          (1 << 0)
 
index c9cf9df7cb567a18d0087c6b5c82a3c6ae6ddda3..64acf150a3321ad7ce5de733c5e8c38e9d988eb9 100644 (file)
@@ -12,7 +12,7 @@
 
 /*
  * Macro to map the pin for the lpc32xx_gpio driver.
- * Note: - GPIOS are considered here as homogeneous and linear, from 0 to 127;
+ * Note: - GPIOS are considered here as homogeneous and linear from 0 to 159;
  *         mapping is done per register, as group of 32.
  *         (see drivers/gpio/lpc32xx_gpio.c for details).
  *       - macros can be use with the following pins:
@@ -26,9 +26,9 @@
 #define LPC32XX_GPIO_P0_GRP 0
 #define LPC32XX_GPIO_P1_GRP 32
 #define LPC32XX_GPIO_P2_GRP 64
-#define LPC32XX_GPI_P3_GRP  96
 #define LPC32XX_GPO_P3_GRP  96
 #define LPC32XX_GPIO_P3_GRP (LPC32XX_GPO_P3_GRP + 25)
+#define LPC32XX_GPI_P3_GRP  128
 
 /*
  * A specific GPIO can be selected with this macro
index c55cdef4c76a5751a2976148b56451f2ab7fb0a7..bcaf7bf2e418ddc587e23fb692c461bca1165a8e 100644 (file)
 #define CONFIG_SYS_FSL_SFP_VER_3_2
 #define CONFIG_SYS_FSL_SFP_BE
 #define CONFIG_SYS_FSL_SRK_LE
-#define CONFIG_KEY_REVOCATION
-#define CONFIG_FSL_ISBC_KEY_EXT
-
-#ifdef CONFIG_SECURE_BOOT
-#define CONFIG_CMD_ESBC_VALIDATE
-#define CONFIG_FSL_SEC_MON
-#define CONFIG_SHA_PROG_HW_ACCEL
-#define CONFIG_DM
-#define CONFIG_RSA
-#define CONFIG_RSA_FREESCALE_EXP
-#ifndef CONFIG_FSL_CAAM
-#define CONFIG_FSL_CAAM
-#endif
-#endif
 
 #define DCU_LAYER_MAX_NUM                      16
 
index d34044a5f7c0044426e26ba799c500e15505bec1..60aa0d3b6f43bdf5db72c975ad5268c83de033ff 100644 (file)
@@ -143,7 +143,7 @@ struct ccsr_gur {
        u32     sdhcpcr;
 };
 
-#define SCFG_ETSECDMAMCR_LE_BD_FR      0xf8001a0f
+#define SCFG_ETSECDMAMCR_LE_BD_FR      0x00000c00
 #define SCFG_ETSECCMCR_GE2_CLK125      0x04000000
 #define SCFG_ETSECCMCR_GE0_CLK125      0x00000000
 #define SCFG_ETSECCMCR_GE1_CLK125      0x08000000
diff --git a/arch/arm/include/asm/arch-ls102xa/ls102xa_devdis.h b/arch/arm/include/asm/arch-ls102xa/ls102xa_devdis.h
new file mode 100644 (file)
index 0000000..3e9e9ea
--- /dev/null
@@ -0,0 +1,52 @@
+/*
+ * Copyright 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __FSL_LS102XA_DEVDIS_H_
+#define __FSL_LS102XA_DEVDIS_H_
+
+#include <fsl_devdis.h>
+
+const struct devdis_table devdis_tbl[] = {
+       { "pbl", 0x0, 0x80000000 },     /* PBL  */
+       { "esdhc", 0x0, 0x20000000 },   /* eSDHC        */
+       { "qdma", 0x0, 0x800000 },      /* qDMA         */
+       { "edma", 0x0, 0x400000 },      /* eDMA         */
+       { "usb3", 0x0, 0x84000 },       /* USB3.0 controller and PHY*/
+       { "usb2", 0x0, 0x40000 },       /* USB2.0 controller    */
+       { "sata", 0x0, 0x8000 },        /* SATA         */
+       { "sec", 0x0, 0x200 },          /* SEC          */
+       { "dcu", 0x0, 0x2 },            /* Display controller Unit      */
+       { "qe", 0x0, 0x1 },             /* QUICC Engine */
+       { "etsec1", 0x1, 0x80000000 },  /* eTSEC1 controller    */
+       { "etesc2", 0x1, 0x40000000 },  /* eTSEC2 controller    */
+       { "etsec3", 0x1, 0x20000000 },  /* eTSEC3 controller    */
+       { "pex1", 0x2, 0x80000000 },    /* PCIE controller 1    */
+       { "pex2", 0x2, 0x40000000 },    /* PCIE controller 2    */
+       { "duart1", 0x3, 0x20000000 },  /* DUART1       */
+       { "duart2", 0x3, 0x10000000 },  /* DUART2       */
+       { "qspi", 0x3, 0x8000000 },     /* QSPI         */
+       { "ddr", 0x4, 0x80000000 },     /* DDR          */
+       { "ocram1", 0x4, 0x8000000 },   /* OCRAM1       */
+       { "ifc", 0x4, 0x800000 },       /* IFC          */
+       { "gpio", 0x4, 0x400000 },      /* GPIO         */
+       { "dbg", 0x4, 0x200000 },       /* DBG          */
+       { "can1", 0x4, 0x80000 },       /* FlexCAN1     */
+       { "can2_4", 0x4, 0x40000 },     /* FlexCAN2_3_4 */
+       { "ftm2_8", 0x4, 0x20000 },     /* FlexTimer2_3_4_5_6_7_8       */
+       { "secmon", 0x4, 0x4000 },      /* Security Monitor     */
+       { "wdog1_2", 0x4, 0x400 },      /* WatchDog1_2  */
+       { "i2c2_3", 0x4, 0x200 },       /* I2C2_3       */
+       { "sai1_4", 0x4, 0x100 },       /* SAI1_2_3_4   */
+       { "lpuart2_6", 0x4, 0x80 },     /* LPUART2_3_4_5_6      */
+       { "dspi1_2", 0x4, 0x40 },       /* DSPI1_2      */
+       { "asrc", 0x4, 0x20 },          /* ASRC         */
+       { "spdif", 0x4, 0x10 },         /* SPDIF        */
+       { "i2c1", 0x4, 0x4 },           /* I2C1         */
+       { "lpuart1", 0x4, 0x2 },        /* LPUART1      */
+       { "ftm1", 0x4, 0x1 },           /* FlexTimer1   */
+};
+
+#endif
index b0dfcba586c4f9b89dc88c0406565fb612679deb..674b25cff40ad55ce17d6966fa3f220050e2c503 100644 (file)
@@ -5,8 +5,10 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#ifndef _SYS_PROTO_H_
-#define _SYS_PROTO_H_
+#ifndef _MX31_SYS_PROTO_H_
+#define _MX31_SYS_PROTO_H_
+
+#include <asm/imx-common/sys_proto.h>
 
 struct mxc_weimcs {
        u32 upper;
@@ -16,5 +18,4 @@ struct mxc_weimcs {
 
 void mxc_setup_weimcs(int cs, const struct mxc_weimcs *weimcs);
 int mxc_mmc_init(bd_t *bis);
-u32 get_cpu_rev(void);
 #endif
index 35c03520aa2113b3542ba6e081efe498c804faed..0979fda48764d6b5aa8cafd05f9bb086051f35a3 100644 (file)
@@ -5,12 +5,12 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#ifndef _SYS_PROTO_H_
-#define _SYS_PROTO_H_
+#ifndef _MX35_SYS_PROTO_H_
+#define _MX35_SYS_PROTO_H_
 
-u32 get_cpu_rev(void);
-void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config,
-       u32 row, u32 col, u32 dsize, u32 refresh);
-#define is_soc_rev(rev)        ((get_cpu_rev() & 0xFF) - rev)
+#include <asm/imx-common/sys_proto.h>
+
+void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config, u32 row,
+                         u32 col, u32 dsize, u32 refresh);
 
 #endif
index 70aaa37f9d5c5f72078e54097ef9c4457ed0b121..b7b169505f91c4a213be59efca47e8a5aed770e7 100644 (file)
@@ -184,8 +184,19 @@ enum {
        MX51_PAD_DISPB2_SER_DIO__GPIO3_6        = IOMUX_PAD(0x6c0, 0x2c0, 4, 0x98c, 1, MX51_GPIO_PAD_CTRL),
        MX51_PAD_DI1_PIN3__DI1_PIN3             = IOMUX_PAD(0x72c, 0x32c, 0, __NA_, 0, NO_PAD_CTRL),
        MX51_PAD_DI1_PIN2__DI1_PIN2             = IOMUX_PAD(0x734, 0x330, 0, __NA_, 0, NO_PAD_CTRL),
+       MX51_PAD_DI2_PIN2__FEC_MDC              = IOMUX_PAD(0x74C, 0x344, 2, __NA_, 0, MX51_PAD_CTRL_5),
        MX51_PAD_DI2_DISP_CLK__DI2_DISP_CLK     = IOMUX_PAD(0x754, 0x34c, 0, __NA_, 0, NO_PAD_CTRL),
        MX51_PAD_DI_GP4__DI2_PIN15              = IOMUX_PAD(0x758, 0x350, 4, __NA_, 0, NO_PAD_CTRL),
+       MX51_PAD_DISP2_DAT6__FEC_TDAT1          = IOMUX_PAD(0x774, 0x36C, 2, __NA_, 0, MX51_PAD_CTRL_5),
+       MX51_PAD_DISP2_DAT7__FEC_TDAT2          = IOMUX_PAD(0x778, 0x370, 2, __NA_, 0, MX51_PAD_CTRL_5),
+       MX51_PAD_DISP2_DAT8__FEC_TDAT3          = IOMUX_PAD(0x77C, 0x374, 2, __NA_, 0, MX51_PAD_CTRL_5),
+       MX51_PAD_DISP2_DAT9__FEC_TX_EN          = IOMUX_PAD(0x780, 0x378, 2, __NA_, 0, MX51_PAD_CTRL_5),
+       MX51_PAD_DISP2_DAT10__FEC_COL           = IOMUX_PAD(0x784, 0x37C, 2, 0x94c, 0x1, MX51_PAD_CTRL_2),
+       MX51_PAD_DISP2_DAT11__FEC_RXCLK         = IOMUX_PAD(0x788, 0x380, 2, 0x968, 0x1, MX51_PAD_CTRL_2),
+       MX51_PAD_DISP2_DAT12__FEC_RX_DV         = IOMUX_PAD(0x78C, 0x384, 2, 0x96c, 0x1, MX51_PAD_CTRL_4),
+       MX51_PAD_DISP2_DAT13__FEC_TX_CLK        = IOMUX_PAD(0x790, 0x388, 2, 0x974, 0x1, MX51_PAD_CTRL_4),
+       MX51_PAD_DISP2_DAT14__FEC_RDAT0         = IOMUX_PAD(0x794, 0x38C, 2, 0x958, 0x1, MX51_PAD_CTRL_4),
+       MX51_PAD_DISP2_DAT15__FEC_TDAT0         = IOMUX_PAD(0x798, 0x390, 2, 0x0, 0, MX51_PAD_CTRL_5),
        MX51_PAD_SD1_CMD__SD1_CMD               = IOMUX_PAD(0x79c, 0x394, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL),
        MX51_PAD_SD1_CLK__SD1_CLK               = IOMUX_PAD(0x7a0, 0x398, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL | PAD_CTL_HYS),
        MX51_PAD_SD1_DATA0__SD1_DATA0           = IOMUX_PAD(0x7a4, 0x39c, 0x10, __NA_, 0, MX51_SDHCI_PAD_CTRL),
index b06c77f65c73ddf1d07469d6ba1a00e4d4d2ed8a..16c9b766d9a7df8fec7332c1c4084a2eea283ca9 100644 (file)
@@ -5,24 +5,4 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#ifndef _SYS_PROTO_H_
-#define _SYS_PROTO_H_
-
-#include "../arch-imx/cpu.h"
-
-#define is_soc_rev(rev)        ((get_cpu_rev() & 0xFF) - rev)
-u32 get_cpu_rev(void);
-unsigned imx_ddr_size(void);
-void sdelay(unsigned long);
-void set_chipselect_size(int const);
-
-/*
- * Initializes on-chip ethernet controllers.
- * to override, implement board_eth_init()
- */
-
-int fecmxc_initialize(bd_t *bis);
-u32 get_ahb_clk(void);
-u32 get_periph_clk(void);
-
-#endif
+#include <asm/imx-common/sys_proto.h>
index 7b3bbb8185b0d511afe368770acd812257c55d77..2b220d6f8f97d30d2054388351c828a6d7362a74 100644 (file)
@@ -64,7 +64,7 @@ int enable_pcie_clock(void);
 int enable_i2c_clk(unsigned char enable, unsigned i2c_num);
 int enable_spi_clk(unsigned char enable, unsigned spi_num);
 void enable_ipu_clock(void);
-int enable_fec_anatop_clock(enum enet_freq freq);
+int enable_fec_anatop_clock(int fec_id, enum enet_freq freq);
 void enable_enet_clk(unsigned char enable);
 void enable_qspi_clk(int qspi_num);
 void enable_thermal_clk(void);
index fe75da4c98900ffddf35b419cb2f4fc174f1ee99..10306cd776c2f85bf73bcd08ac53c681f8f0aca3 100644 (file)
@@ -1052,6 +1052,12 @@ struct mxc_ccm_reg {
 #define BF_ANADIG_PLL_ENET_DIV_SELECT(v)  \
        (((v) << 0) & BM_ANADIG_PLL_ENET_DIV_SELECT)
 
+/* ENET2 for i.MX6SX/UL */
+#define BM_ANADIG_PLL_ENET2_ENABLE 0x00100000
+#define BM_ANADIG_PLL_ENET2_DIV_SELECT 0x0000000C
+#define BF_ANADIG_PLL_ENET2_DIV_SELECT(v)  \
+       (((v) << 2) & BM_ANADIG_PLL_ENET2_DIV_SELECT)
+
 #define BM_ANADIG_PFD_480_PFD3_CLKGATE 0x80000000
 #define BM_ANADIG_PFD_480_PFD3_STABLE 0x40000000
 #define BP_ANADIG_PFD_480_PFD3_FRAC      24
index 4d84a9b753f53b4b5a3e13e16a792e9b11d3f0f7..74512ac08e3825a2c9952266fac966e900cf5eb0 100644 (file)
 /* Defines for Blocks connected via AIPS (SkyBlue) */
 #define ATZ1_BASE_ADDR              AIPS1_ARB_BASE_ADDR
 #define ATZ2_BASE_ADDR              AIPS2_ARB_BASE_ADDR
+#define ATZ3_BASE_ADDR              AIPS3_ARB_BASE_ADDR
 #define AIPS1_BASE_ADDR             AIPS1_ON_BASE_ADDR
 #define AIPS2_BASE_ADDR             AIPS2_ON_BASE_ADDR
+#define AIPS3_BASE_ADDR             AIPS3_ON_BASE_ADDR
 
 #define SPDIF_BASE_ADDR             (ATZ1_BASE_ADDR + 0x04000)
 #define ECSPI1_BASE_ADDR            (ATZ1_BASE_ADDR + 0x08000)
 
 #define AIPS2_ON_BASE_ADDR          (ATZ2_BASE_ADDR + 0x7C000)
 #define AIPS2_OFF_BASE_ADDR         (ATZ2_BASE_ADDR + 0x80000)
+#define AIPS3_ON_BASE_ADDR          (ATZ3_BASE_ADDR + 0x7C000)
+#define AIPS3_OFF_BASE_ADDR         (ATZ3_BASE_ADDR + 0x80000)
 #define CAAM_BASE_ADDR              (ATZ2_BASE_ADDR)
 #define ARM_BASE_ADDR              (ATZ2_BASE_ADDR + 0x40000)
 
@@ -630,9 +634,10 @@ struct ocotp_regs {
        u32     version;
        u32     rsvd7[0xdb];
 
+       /* fuse banks */
        struct fuse_bank {
                u32     fuse_regs[0x20];
-       } bank[16];
+       } bank[0];
 };
 
 struct fuse_bank0_regs {
index 7bfbdc3cf9206f986857ff835db624a075800fd8..68d9bda2c5ce984faade0094fcd8d8f1b88c5ae9 100644 (file)
 #ifdef CONFIG_MX6UL
 #include "mx6ul-ddr.h"
 #else
+#ifdef CONFIG_MX6SL
+#include "mx6sl-ddr.h"
+#else
 #error "Please select cpu"
+#endif /* CONFIG_MX6SL */
 #endif /* CONFIG_MX6UL */
 #endif /* CONFIG_MX6SX */
 #endif /* CONFIG_MX6DL or CONFIG_MX6S */
 #endif /* CONFIG_MX6Q */
 #else
 
+enum {
+       DDR_TYPE_DDR3,
+       DDR_TYPE_LPDDR2,
+};
+
 /* MMDC P0/P1 Registers */
 struct mmdc_p_regs {
        u32 mdctl;
@@ -40,30 +49,120 @@ struct mmdc_p_regs {
        u32 res1[2];
        u32 mdrwd;
        u32 mdor;
-       u32 res2[3];
+       u32 mdmrr;
+       u32 mdcfg3lp;
+       u32 mdmr4;
        u32 mdasp;
-       u32 res3[240];
+       u32 res2[239];
+       u32 maarcr;
        u32 mapsr;
-       u32 res4[254];
+       u32 maexidr0;
+       u32 maexidr1;
+       u32 madpcr0;
+       u32 madpcr1;
+       u32 madpsr0;
+       u32 madpsr1;
+       u32 madpsr2;
+       u32 madpsr3;
+       u32 madpsr4;
+       u32 madpsr5;
+       u32 masbs0;
+       u32 masbs1;
+       u32 res3[2];
+       u32 magenp;
+       u32 res4[239];
        u32 mpzqhwctrl;
-       u32 res5[2];
+       u32 mpzqswctrl;
+       u32 mpwlgcr;
        u32 mpwldectrl0;
        u32 mpwldectrl1;
-       u32 res6;
+       u32 mpwldlst;
        u32 mpodtctrl;
        u32 mprddqby0dl;
        u32 mprddqby1dl;
        u32 mprddqby2dl;
        u32 mprddqby3dl;
-       u32 res7[4];
+       u32 mpwrdqby0dl;
+       u32 mpwrdqby1dl;
+       u32 mpwrdqby2dl;
+       u32 mpwrdqby3dl;
        u32 mpdgctrl0;
        u32 mpdgctrl1;
-       u32 res8;
+       u32 mpdgdlst0;
        u32 mprddlctl;
-       u32 res9;
+       u32 mprddlst;
        u32 mpwrdlctl;
-       u32 res10[25];
+       u32 mpwrdlst;
+       u32 mpsdctrl;
+       u32 mpzqlp2ctl;
+       u32 mprddlhwctl;
+       u32 mpwrdlhwctl;
+       u32 mprddlhwst0;
+       u32 mprddlhwst1;
+       u32 mpwrdlhwst0;
+       u32 mpwrdlhwst1;
+       u32 mpwlhwerr;
+       u32 mpdghwst0;
+       u32 mpdghwst1;
+       u32 mpdghwst2;
+       u32 mpdghwst3;
+       u32 mppdcmpr1;
+       u32 mppdcmpr2;
+       u32 mpswdar0;
+       u32 mpswdrdr0;
+       u32 mpswdrdr1;
+       u32 mpswdrdr2;
+       u32 mpswdrdr3;
+       u32 mpswdrdr4;
+       u32 mpswdrdr5;
+       u32 mpswdrdr6;
+       u32 mpswdrdr7;
        u32 mpmur0;
+       u32 mpwrcadl;
+       u32 mpdccr;
+};
+
+#define MX6SL_IOM_DDR_BASE     0x020e0300
+struct mx6sl_iomux_ddr_regs {
+       u32 dram_cas;
+       u32 dram_cs0_b;
+       u32 dram_cs1_b;
+       u32 dram_dqm0;
+       u32 dram_dqm1;
+       u32 dram_dqm2;
+       u32 dram_dqm3;
+       u32 dram_ras;
+       u32 dram_reset;
+       u32 dram_sdba0;
+       u32 dram_sdba1;
+       u32 dram_sdba2;
+       u32 dram_sdcke0;
+       u32 dram_sdcke1;
+       u32 dram_sdclk_0;
+       u32 dram_odt0;
+       u32 dram_odt1;
+       u32 dram_sdqs0;
+       u32 dram_sdqs1;
+       u32 dram_sdqs2;
+       u32 dram_sdqs3;
+       u32 dram_sdwe_b;
+};
+
+#define MX6SL_IOM_GRP_BASE     0x020e0500
+struct mx6sl_iomux_grp_regs {
+       u32 res1[43];
+       u32 grp_addds;
+       u32 grp_ddrmode_ctl;
+       u32 grp_ddrpke;
+       u32 grp_ddrpk;
+       u32 grp_ddrhys;
+       u32 grp_ddrmode;
+       u32 grp_b0ds;
+       u32 grp_ctlds;
+       u32 grp_b1ds;
+       u32 grp_ddr_type;
+       u32 grp_b2ds;
+       u32 grp_b3ds;
 };
 
 #define MX6UL_IOM_DDR_BASE     0x020e0200
@@ -278,6 +377,21 @@ struct mx6_ddr3_cfg {
        u8 SRT;         /* self-refresh temperature: 0=normal, 1=extended */
 };
 
+/* Device Information: Varies per LPDDR2 part number and speed grade */
+struct mx6_lpddr2_cfg {
+       u16 mem_speed;  /* ie 800 for LPDDR2-800 */
+       u8 density;     /* chip density (Gb) (1,2,4,8) */
+       u8 width;       /* bus width (bits) (4,8,16) */
+       u8 banks;       /* number of banks */
+       u8 rowaddr;     /* row address bits (11-16)*/
+       u8 coladdr;     /* col address bits (9-12) */
+       u16 trcd_lp;
+       u16 trppb_lp;
+       u16 trpab_lp;
+       u16 trcmin;     /* tRC min (ns*100) */
+       u16 trasmin;    /* tRAS min (ns*100) */
+};
+
 /* System Information: Varies per board design, layout, and term choices */
 struct mx6_ddr_sysinfo {
        u8 dsize;       /* size of bus (in dwords: 0=16bit,1=32bit,2=64bit) */
@@ -293,6 +407,7 @@ struct mx6_ddr_sysinfo {
        u8 rst_to_cke;  /* Time from SDE enable to CKE rise */
        u8 sde_to_rst;  /* Time from SDE enable until DDR reset# is high */
        u8 pd_fast_exit;/* enable precharge powerdown fast-exit */
+       u8 ddr_type;    /* DDR type: DDR3(0) or LPDDR2(1) */
 };
 
 /*
@@ -320,6 +435,8 @@ struct mx6_mmdc_calibration {
        /* write delay */
        u32 p0_mpwrdlctl;
        u32 p1_mpwrdlctl;
+       /* lpddr2 zq hw calibration */
+       u32 mpzqlp2ctl;
 };
 
 /* configure iomux (pinctl/padctl) */
@@ -335,11 +452,14 @@ void mx6sx_dram_iocfg(unsigned width,
 void mx6ul_dram_iocfg(unsigned width,
                      const struct mx6ul_iomux_ddr_regs *,
                      const struct mx6ul_iomux_grp_regs *);
+void mx6sl_dram_iocfg(unsigned width,
+                     const struct mx6sl_iomux_ddr_regs *,
+                     const struct mx6sl_iomux_grp_regs *);
 
 /* configure mx6 mmdc registers */
 void mx6_dram_cfg(const struct mx6_ddr_sysinfo *,
                  const struct mx6_mmdc_calibration *,
-                 const struct mx6_ddr3_cfg *);
+                 const void *);
 
 #endif /* CONFIG_SPL_BUILD */
 
diff --git a/arch/arm/include/asm/arch-mx6/mx6sl-ddr.h b/arch/arm/include/asm/arch-mx6/mx6sl-ddr.h
new file mode 100644 (file)
index 0000000..c3c4d69
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_MX6SL_DDR_H__
+#define __ASM_ARCH_MX6SL_DDR_H__
+
+#ifndef CONFIG_MX6SL
+#error "wrong CPU"
+#endif
+
+#define MX6_IOM_DRAM_CAS_B     0x020e0300
+#define MX6_IOM_DRAM_CS0_B     0x020e0304
+#define MX6_IOM_DRAM_CS1_B     0x020e0308
+
+#define MX6_IOM_DRAM_DQM0      0x020e030c
+#define MX6_IOM_DRAM_DQM1      0x020e0310
+#define MX6_IOM_DRAM_DQM2      0x020e0314
+#define MX6_IOM_DRAM_DQM3      0x020e0318
+
+#define MX6_IOM_DRAM_RAS_B     0x020e031c
+#define MX6_IOM_DRAM_RESET     0x020e0320
+
+#define MX6_IOM_DRAM_SDBA0     0x020e0324
+#define MX6_IOM_DRAM_SDBA1     0x020e0328
+#define MX6_IOM_DRAM_SDBA2     0x020e032c
+
+#define MX6_IOM_DRAM_SDCKE0    0x020e0330
+#define MX6_IOM_DRAM_SDCKE1    0x020e0334
+
+#define MX6_IOM_DRAM_SDCLK0_P  0x020e0338
+
+#define MX6_IOM_DRAM_ODT0      0x020e033c
+#define MX6_IOM_DRAM_ODT1      0x020e0340
+
+#define MX6_IOM_DRAM_SDQS0_P   0x020e0344
+#define MX6_IOM_DRAM_SDQS1_P   0x020e0348
+#define MX6_IOM_DRAM_SDQS2_P   0x020e034c
+#define MX6_IOM_DRAM_SDQS3_P   0x020e0350
+
+#define MX6_IOM_DRAM_SDWE_B    0x020e0354
+
+#endif /*__ASM_ARCH_MX6SL_DDR_H__ */
index eee8ca8af710988a4a5c38b09b68cf973dc8085e..16c9b766d9a7df8fec7332c1c4084a2eea283ca9 100644 (file)
@@ -5,47 +5,4 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#ifndef _SYS_PROTO_H_
-#define _SYS_PROTO_H_
-
-#include <asm/imx-common/regs-common.h>
-#include "../arch-imx/cpu.h"
-
-#define soc_rev() (get_cpu_rev() & 0xFF)
-#define is_soc_rev(rev) (soc_rev() == rev)
-
-u32 get_nr_cpus(void);
-u32 get_cpu_rev(void);
-u32 get_cpu_speed_grade_hz(void);
-u32 get_cpu_temp_grade(int *minc, int *maxc);
-
-/* returns MXC_CPU_ value */
-#define cpu_type(rev) (((rev) >> 12) & 0xff)
-
-/* both macros return/take MXC_CPU_ constants */
-#define get_cpu_type() (cpu_type(get_cpu_rev()))
-#define is_cpu_type(cpu) (get_cpu_type() == cpu)
-
-const char *get_imx_type(u32 imxtype);
-unsigned imx_ddr_size(void);
-void set_chipselect_size(int const);
-
-#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
-
-/*
- * Initializes on-chip ethernet controllers.
- * to override, implement board_eth_init()
- */
-
-int fecmxc_initialize(bd_t *bis);
-u32 get_ahb_clk(void);
-u32 get_periph_clk(void);
-
-int mxs_reset_block(struct mxs_register_32 *reg);
-int mxs_wait_mask_set(struct mxs_register_32 *reg,
-                      uint32_t mask,
-                      unsigned int timeout);
-int mxs_wait_mask_clr(struct mxs_register_32 *reg,
-                      uint32_t mask,
-                      unsigned int timeout);
-#endif
+#include <asm/imx-common/sys_proto.h>
diff --git a/arch/arm/include/asm/arch-mx7/clock.h b/arch/arm/include/asm/arch-mx7/clock.h
new file mode 100644 (file)
index 0000000..688d236
--- /dev/null
@@ -0,0 +1,348 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * Author:
+ *     Peng Fan <Peng.Fan@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_ARCH_CLOCK_H
+#define _ASM_ARCH_CLOCK_H
+
+#include <common.h>
+#include <asm/arch/crm_regs.h>
+
+#ifdef CONFIG_SYS_MX7_HCLK
+#define MXC_HCLK       CONFIG_SYS_MX7_HCLK
+#else
+#define MXC_HCLK       24000000
+#endif
+
+#ifdef CONFIG_SYS_MX7_CLK32
+#define MXC_CLK32      CONFIG_SYS_MX7_CLK32
+#else
+#define MXC_CLK32      32768
+#endif
+
+/* Mainly for compatible to imx common code. */
+enum mxc_clock {
+       MXC_ARM_CLK = 0,
+       MXC_AHB_CLK,
+       MXC_IPG_CLK,
+       MXC_UART_CLK,
+       MXC_CSPI_CLK,
+       MXC_AXI_CLK,
+       MXC_DDR_CLK,
+       MXC_ESDHC_CLK,
+       MXC_ESDHC2_CLK,
+       MXC_ESDHC3_CLK,
+       MXC_I2C_CLK,
+};
+
+/* PLL supported by i.mx7d */
+enum pll_clocks {
+       PLL_CORE,       /* Core PLL */
+       PLL_SYS,        /* System PLL*/
+       PLL_ENET,       /* Enet PLL */
+       PLL_AUDIO,      /* Audio PLL */
+       PLL_VIDEO,      /* Video PLL*/
+       PLL_DDR,        /* Dram PLL */
+       PLL_USB,        /* USB PLL, fixed at 480MHZ */
+};
+
+/* clk src for clock root gen */
+enum clk_root_src {
+       OSC_24M_CLK,
+
+       PLL_ARM_MAIN_800M_CLK,
+
+       PLL_SYS_MAIN_480M_CLK,
+       PLL_SYS_MAIN_240M_CLK,
+       PLL_SYS_MAIN_120M_CLK,
+       PLL_SYS_PFD0_392M_CLK,
+       PLL_SYS_PFD0_196M_CLK,
+       PLL_SYS_PFD1_332M_CLK,
+       PLL_SYS_PFD1_166M_CLK,
+       PLL_SYS_PFD2_270M_CLK,
+       PLL_SYS_PFD2_135M_CLK,
+       PLL_SYS_PFD3_CLK,
+       PLL_SYS_PFD4_CLK,
+       PLL_SYS_PFD5_CLK,
+       PLL_SYS_PFD6_CLK,
+       PLL_SYS_PFD7_CLK,
+
+       PLL_ENET_MAIN_500M_CLK,
+       PLL_ENET_MAIN_250M_CLK,
+       PLL_ENET_MAIN_125M_CLK,
+       PLL_ENET_MAIN_100M_CLK,
+       PLL_ENET_MAIN_50M_CLK,
+       PLL_ENET_MAIN_40M_CLK,
+       PLL_ENET_MAIN_25M_CLK,
+
+       PLL_DRAM_MAIN_1066M_CLK,
+       PLL_DRAM_MAIN_533M_CLK,
+
+       PLL_AUDIO_MAIN_CLK,
+       PLL_VIDEO_MAIN_CLK,
+
+       PLL_USB_MAIN_480M_CLK,          /* fixed at 480MHZ */
+
+       EXT_CLK_1,
+       EXT_CLK_2,
+       EXT_CLK_3,
+       EXT_CLK_4,
+
+       REF_1M_CLK,
+       OSC_32K_CLK,
+};
+
+/*
+ * Clock root index
+ */
+enum clk_root_index {
+       ARM_A7_CLK_ROOT = 0,
+       ARM_M4_CLK_ROOT = 1,
+       ARM_M0_CLK_ROOT = 2,
+       MAIN_AXI_CLK_ROOT = 16,
+       DISP_AXI_CLK_ROOT = 17,
+       ENET_AXI_CLK_ROOT = 18,
+       NAND_USDHC_BUS_CLK_ROOT = 19,
+       AHB_CLK_ROOT = 32,
+       DRAM_PHYM_CLK_ROOT = 48,
+       DRAM_CLK_ROOT = 49,
+       DRAM_PHYM_ALT_CLK_ROOT = 64,
+       DRAM_ALT_CLK_ROOT = 65,
+       USB_HSIC_CLK_ROOT = 66,
+       PCIE_CTRL_CLK_ROOT = 67,
+       PCIE_PHY_CLK_ROOT = 68,
+       EPDC_PIXEL_CLK_ROOT = 69,
+       LCDIF_PIXEL_CLK_ROOT = 70,
+       MIPI_DSI_EXTSER_CLK_ROOT = 71,
+       MIPI_CSI_WARP_CLK_ROOT = 72,
+       MIPI_DPHY_REF_CLK_ROOT = 73,
+       SAI1_CLK_ROOT = 74,
+       SAI2_CLK_ROOT = 75,
+       SAI3_CLK_ROOT = 76,
+       SPDIF_CLK_ROOT = 77,
+       ENET1_REF_CLK_ROOT = 78,
+       ENET1_TIME_CLK_ROOT = 79,
+       ENET2_REF_CLK_ROOT = 80,
+       ENET2_TIME_CLK_ROOT = 81,
+       ENET_PHY_REF_CLK_ROOT = 82,
+       EIM_CLK_ROOT = 83,
+       NAND_CLK_ROOT = 84,
+       QSPI_CLK_ROOT = 85,
+       USDHC1_CLK_ROOT = 86,
+       USDHC2_CLK_ROOT = 87,
+       USDHC3_CLK_ROOT = 88,
+       CAN1_CLK_ROOT = 89,
+       CAN2_CLK_ROOT = 90,
+       I2C1_CLK_ROOT = 91,
+       I2C2_CLK_ROOT = 92,
+       I2C3_CLK_ROOT = 93,
+       I2C4_CLK_ROOT = 94,
+       UART1_CLK_ROOT = 95,
+       UART2_CLK_ROOT = 96,
+       UART3_CLK_ROOT = 97,
+       UART4_CLK_ROOT = 98,
+       UART5_CLK_ROOT = 99,
+       UART6_CLK_ROOT = 100,
+       UART7_CLK_ROOT = 101,
+       ECSPI1_CLK_ROOT = 102,
+       ECSPI2_CLK_ROOT = 103,
+       ECSPI3_CLK_ROOT = 104,
+       ECSPI4_CLK_ROOT = 105,
+       PWM1_CLK_ROOT = 106,
+       PWM2_CLK_ROOT = 107,
+       PWM3_CLK_ROOT = 108,
+       PWM4_CLK_ROOT = 109,
+       FLEXTIMER1_CLK_ROOT = 110,
+       FLEXTIMER2_CLK_ROOT = 111,
+       SIM1_CLK_ROOT = 112,
+       SIM2_CLK_ROOT = 113,
+       GPT1_CLK_ROOT = 114,
+       GPT2_CLK_ROOT = 115,
+       GPT3_CLK_ROOT = 116,
+       GPT4_CLK_ROOT = 117,
+       TRACE_CLK_ROOT = 118,
+       WDOG_CLK_ROOT = 119,
+       CSI_MCLK_CLK_ROOT = 120,
+       AUDIO_MCLK_CLK_ROOT = 121,
+       WRCLK_CLK_ROOT = 122,
+       IPP_DO_CLKO1 = 123,
+       IPP_DO_CLKO2 = 124,
+
+       CLK_ROOT_MAX,
+};
+
+struct clk_root_setting {
+       enum clk_root_index root;
+       u32 setting;
+};
+
+/*
+ * CCGR mapping
+ */
+enum clk_ccgr_index {
+       CCGR_CPU = 0,
+       CCGR_M4 = 1,
+       CCGR_SIM_MAIN = 4,
+       CCGR_SIM_DISPLAY = 5,
+       CCGR_SIM_ENET = 6,
+       CCGR_SIM_M = 7,
+       CCGR_SIM_S = 8,
+       CCGR_SIM_WAKEUP = 9,
+       CCGR_IPMUX1 = 10,
+       CCGR_IPMUX2 = 11,
+       CCGR_IPMUX3 = 12,
+       CCGR_ROM = 16,
+       CCGR_OCRAM = 17,
+       CCGR_OCRAM_S = 18,
+       CCGR_DRAM = 19,
+       CCGR_RAWNAND = 20,
+       CCGR_QSPI = 21,
+       CCGR_WEIM = 22,
+       CCGR_ADC = 32,
+       CCGR_ANATOP = 33,
+       CCGR_SCTR = 34,
+       CCGR_OCOTP = 35,
+       CCGR_CAAM = 36,
+       CCGR_SNVS = 37,
+       CCGR_RDC = 38,
+       CCGR_MU = 39,
+       CCGR_HS = 40,
+       CCGR_DVFS = 41,
+       CCGR_QOS = 42,
+       CCGR_QOS_DISPMIX = 43,
+       CCGR_QOS_MEGAMIX = 44,
+       CCGR_CSU = 45,
+       CCGR_DBGMON = 46,
+       CCGR_DEBUG = 47,
+       CCGR_TRACE = 48,
+       CCGR_SEC_DEBUG = 49,
+       CCGR_SEMA1 = 64,
+       CCGR_SEMA2 = 65,
+       CCGR_PERFMON1 = 68,
+       CCGR_PERFMON2 = 69,
+       CCGR_SDMA = 72,
+       CCGR_CSI = 73,
+       CCGR_EPDC = 74,
+       CCGR_LCDIF = 75,
+       CCGR_PXP = 76,
+       CCGR_PCIE = 96,
+       CCGR_MIPI_CSI = 100,
+       CCGR_MIPI_DSI = 101,
+       CCGR_MIPI_MEM_PHY = 102,
+       CCGR_USB_CTRL = 104,
+       CCGR_USB_HSIC = 105,
+       CCGR_USB_PHY1 = 106,
+       CCGR_USB_PHY2 = 107,
+       CCGR_USDHC1 = 108,
+       CCGR_USDHC2 = 109,
+       CCGR_USDHC3 = 110,
+       CCGR_ENET1 = 112,
+       CCGR_ENET2 = 113,
+       CCGR_CAN1 = 116,
+       CCGR_CAN2 = 117,
+       CCGR_ECSPI1 = 120,
+       CCGR_ECSPI2 = 121,
+       CCGR_ECSPI3 = 122,
+       CCGR_ECSPI4 = 123,
+       CCGR_GPT1 = 124,
+       CCGR_GPT2 = 125,
+       CCGR_GPT3 = 126,
+       CCGR_GPT4 = 127,
+       CCGR_FTM1 = 128,
+       CCGR_FTM2 = 129,
+       CCGR_PWM1 = 132,
+       CCGR_PWM2 = 133,
+       CCGR_PWM3 = 134,
+       CCGR_PWM4 = 135,
+       CCGR_I2C1 = 136,
+       CCGR_I2C2 = 137,
+       CCGR_I2C3 = 138,
+       CCGR_I2C4 = 139,
+       CCGR_SAI1 = 140,
+       CCGR_SAI2 = 141,
+       CCGR_SAI3 = 142,
+       CCGR_SIM1 = 144,
+       CCGR_SIM2 = 145,
+       CCGR_UART1 = 148,
+       CCGR_UART2 = 149,
+       CCGR_UART3 = 150,
+       CCGR_UART4 = 151,
+       CCGR_UART5 = 152,
+       CCGR_UART6 = 153,
+       CCGR_UART7 = 154,
+       CCGR_WDOG1 = 156,
+       CCGR_WDOG2 = 157,
+       CCGR_WDOG3 = 158,
+       CCGR_WDOG4 = 159,
+       CCGR_GPIO1 = 160,
+       CCGR_GPIO2 = 161,
+       CCGR_GPIO3 = 162,
+       CCGR_GPIO4 = 163,
+       CCGR_GPIO5 = 164,
+       CCGR_GPIO6 = 165,
+       CCGR_GPIO7 = 166,
+       CCGR_IOMUX = 168,
+       CCGR_IOMUX_LPSR = 169,
+       CCGR_KPP = 170,
+
+       CCGR_SKIP,
+       CCGR_MAX,
+};
+
+/* Clock root channel */
+enum clk_root_type {
+       CCM_CORE_CHANNEL,
+       CCM_BUS_CHANNEL,
+       CCM_AHB_CHANNEL,
+       CCM_DRAM_PHYM_CHANNEL,
+       CCM_DRAM_CHANNEL,
+       CCM_IP_CHANNEL,
+};
+
+#include <asm/arch/clock_slice.h>
+
+/*
+ * entry: the clock root index
+ * type: ccm channel
+ * src_mux: each entry corresponding to the clock src, detailed info in CCM RM
+ */
+struct clk_root_map {
+       enum clk_root_index entry;
+       enum clk_root_type type;
+       uint8_t src_mux[8];
+};
+
+enum enet_freq {
+       ENET_25MHz,
+       ENET_50MHz,
+       ENET_125MHz,
+};
+
+u32 get_root_clk(enum clk_root_index clock_id);
+u32 mxc_get_clock(enum mxc_clock clk);
+u32 imx_get_uartclk(void);
+u32 imx_get_fecclk(void);
+void clock_init(void);
+#ifdef CONFIG_SYS_I2C_MXC
+int enable_i2c_clk(unsigned char enable, unsigned i2c_num);
+#endif
+#ifdef CONFIG_FEC_MXC
+int set_clk_enet(enum enet_freq type);
+#endif
+int set_clk_qspi(void);
+int set_clk_nand(void);
+#ifdef CONFIG_MXC_OCOTP
+void enable_ocotp_clk(unsigned char enable);
+#endif
+void enable_usboh3_clk(unsigned char enable);
+#ifdef CONFIG_SECURE_BOOT
+void hab_caam_clock_enable(unsigned char enable);
+#endif
+void mxs_set_lcdclk(uint32_t base_addr, uint32_t freq);
+void enable_thermal_clk(void);
+#endif
diff --git a/arch/arm/include/asm/arch-mx7/clock_slice.h b/arch/arm/include/asm/arch-mx7/clock_slice.h
new file mode 100644 (file)
index 0000000..6ede0cd
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Copyright (C) 2014-2015 Freescale Semiconductor, Inc.
+ *
+ * Author:
+ *     Peng Fan <Peng.Fan@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_ARCH_CLOCK_SLICE_H
+#define _ASM_ARCH_CLOCK_SLICE_H
+
+enum root_pre_div {
+       CLK_ROOT_PRE_DIV1 = 0,
+       CLK_ROOT_PRE_DIV2,
+       CLK_ROOT_PRE_DIV3,
+       CLK_ROOT_PRE_DIV4,
+       CLK_ROOT_PRE_DIV5,
+       CLK_ROOT_PRE_DIV6,
+       CLK_ROOT_PRE_DIV7,
+       CLK_ROOT_PRE_DIV8,
+};
+
+enum root_post_div {
+       CLK_ROOT_POST_DIV1 = 0,
+       CLK_ROOT_POST_DIV2,
+       CLK_ROOT_POST_DIV3,
+       CLK_ROOT_POST_DIV4,
+       CLK_ROOT_POST_DIV5,
+       CLK_ROOT_POST_DIV6,
+       CLK_ROOT_POST_DIV7,
+       CLK_ROOT_POST_DIV8,
+       CLK_ROOT_POST_DIV9,
+       CLK_ROOT_POST_DIV10,
+       CLK_ROOT_POST_DIV11,
+       CLK_ROOT_POST_DIV12,
+       CLK_ROOT_POST_DIV13,
+       CLK_ROOT_POST_DIV14,
+       CLK_ROOT_POST_DIV15,
+       CLK_ROOT_POST_DIV16,
+       CLK_ROOT_POST_DIV17,
+       CLK_ROOT_POST_DIV18,
+       CLK_ROOT_POST_DIV19,
+       CLK_ROOT_POST_DIV20,
+       CLK_ROOT_POST_DIV21,
+       CLK_ROOT_POST_DIV22,
+       CLK_ROOT_POST_DIV23,
+       CLK_ROOT_POST_DIV24,
+       CLK_ROOT_POST_DIV25,
+       CLK_ROOT_POST_DIV26,
+       CLK_ROOT_POST_DIV27,
+       CLK_ROOT_POST_DIV28,
+       CLK_ROOT_POST_DIV29,
+       CLK_ROOT_POST_DIV30,
+       CLK_ROOT_POST_DIV31,
+       CLK_ROOT_POST_DIV32,
+       CLK_ROOT_POST_DIV33,
+       CLK_ROOT_POST_DIV34,
+       CLK_ROOT_POST_DIV35,
+       CLK_ROOT_POST_DIV36,
+       CLK_ROOT_POST_DIV37,
+       CLK_ROOT_POST_DIV38,
+       CLK_ROOT_POST_DIV39,
+       CLK_ROOT_POST_DIV40,
+       CLK_ROOT_POST_DIV41,
+       CLK_ROOT_POST_DIV42,
+       CLK_ROOT_POST_DIV43,
+       CLK_ROOT_POST_DIV44,
+       CLK_ROOT_POST_DIV45,
+       CLK_ROOT_POST_DIV46,
+       CLK_ROOT_POST_DIV47,
+       CLK_ROOT_POST_DIV48,
+       CLK_ROOT_POST_DIV49,
+       CLK_ROOT_POST_DIV50,
+       CLK_ROOT_POST_DIV51,
+       CLK_ROOT_POST_DIV52,
+       CLK_ROOT_POST_DIV53,
+       CLK_ROOT_POST_DIV54,
+       CLK_ROOT_POST_DIV55,
+       CLK_ROOT_POST_DIV56,
+       CLK_ROOT_POST_DIV57,
+       CLK_ROOT_POST_DIV58,
+       CLK_ROOT_POST_DIV59,
+       CLK_ROOT_POST_DIV60,
+       CLK_ROOT_POST_DIV61,
+       CLK_ROOT_POST_DIV62,
+       CLK_ROOT_POST_DIV63,
+       CLK_ROOT_POST_DIV64,
+};
+
+enum root_auto_div {
+       CLK_ROOT_AUTO_DIV1 = 0,
+       CLK_ROOT_AUTO_DIV2,
+       CLK_ROOT_AUTO_DIV4,
+       CLK_ROOT_AUTO_DIV8,
+       CLK_ROOT_AUTO_DIV16,
+};
+
+int clock_set_src(enum clk_root_index clock_id, enum clk_root_src clock_src);
+int clock_get_src(enum clk_root_index clock_id, enum clk_root_src *p_clock_src);
+int clock_set_prediv(enum clk_root_index clock_id, enum root_pre_div pre_div);
+int clock_get_prediv(enum clk_root_index clock_id, enum root_pre_div *pre_div);
+int clock_set_postdiv(enum clk_root_index clock_id, enum root_post_div div);
+int clock_get_postdiv(enum clk_root_index clock_id, enum root_post_div *div);
+int clock_set_autopostdiv(enum clk_root_index clock_id, enum root_auto_div div,
+                         int auto_en);
+int clock_get_autopostdiv(enum clk_root_index clock_id, enum root_auto_div *div,
+                         int *auto_en);
+int clock_get_target_val(enum clk_root_index clock_id, u32 *val);
+int clock_set_target_val(enum clk_root_index clock_id, u32 val);
+int clock_root_cfg(enum clk_root_index clock_id, enum root_pre_div pre_div,
+                  enum root_post_div post_div, enum clk_root_src clock_src);
+int clock_root_enabled(enum clk_root_index clock_id);
+
+int clock_enable(enum clk_ccgr_index index, bool enable);
+#endif
diff --git a/arch/arm/include/asm/arch-mx7/crm_regs.h b/arch/arm/include/asm/arch-mx7/crm_regs.h
new file mode 100644 (file)
index 0000000..d65d4d9
--- /dev/null
@@ -0,0 +1,2813 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * Author:
+ *     Peng Fan <Peng.Fan@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ARCH_ARM_MACH_MX7_CCM_REGS_H__
+#define __ARCH_ARM_MACH_MX7_CCM_REGS_H__
+
+#include <asm/arch/imx-regs.h>
+#include <asm/io.h>
+
+#define        CCM_GPR0_OFFSET                 0x0
+#define        CCM_OBSERVE0_OFFSET             0x0400
+#define        CCM_SCTRL0_OFFSET               0x0800
+#define        CCM_CCGR0_OFFSET                0x4000
+#define        CCM_ROOT0_TARGET_OFFSET         0x8000
+
+#ifndef __ASSEMBLY__
+
+struct mxc_ccm_ccgr {
+       uint32_t ccgr;
+       uint32_t ccgr_set;
+       uint32_t ccgr_clr;
+       uint32_t ccgr_tog;
+};
+
+struct mxc_ccm_root_slice {
+       uint32_t target_root;
+       uint32_t target_root_set;
+       uint32_t target_root_clr;
+       uint32_t target_root_tog;
+       uint32_t reserved_0[4];
+       uint32_t post;
+       uint32_t post_root_set;
+       uint32_t post_root_clr;
+       uint32_t post_root_tog;
+       uint32_t pre;
+       uint32_t pre_root_set;
+       uint32_t pre_root_clr;
+       uint32_t pre_root_tog;
+       uint32_t reserved_1[12];
+       uint32_t access_ctrl;
+       uint32_t access_ctrl_root_set;
+       uint32_t access_ctrl_root_clr;
+       uint32_t access_ctrl_root_tog;
+};
+
+/** CCM - Peripheral register structure */
+struct mxc_ccm_reg {
+       uint32_t gpr0;
+       uint32_t gpr0_set;
+       uint32_t gpr0_clr;
+       uint32_t gpr0_tog;
+       uint32_t reserved_0[4092];
+       struct mxc_ccm_ccgr ccgr_array[191];    /* offset 0x4000 */
+       uint32_t reserved_1[3332];
+       struct mxc_ccm_root_slice root[121];    /* offset 0x8000 */
+
+};
+
+struct mxc_ccm_anatop_reg {
+       uint32_t ctrl_24m;                      /* offset 0x0000 */
+       uint32_t ctrl_24m_set;
+       uint32_t ctrl_24m_clr;
+       uint32_t ctrl_24m_tog;
+       uint32_t rcosc_config0;                 /* offset 0x0010 */
+       uint32_t rcosc_config0_set;
+       uint32_t rcosc_config0_clr;
+       uint32_t rcosc_config0_tog;
+       uint32_t rcosc_config1;                 /* offset 0x0020 */
+       uint32_t rcosc_config1_set;
+       uint32_t rcosc_config1_clr;
+       uint32_t rcosc_config1_tog;
+       uint32_t rcosc_config2;                 /* offset 0x0030 */
+       uint32_t rcosc_config2_set;
+       uint32_t rcosc_config2_clr;
+       uint32_t rcosc_config2_tog;
+       uint8_t reserved_0[16];
+       uint32_t osc_32k;                       /* offset 0x0050 */
+       uint32_t osc_32k_set;
+       uint32_t osc_32k_clr;
+       uint32_t osc_32k_tog;
+       uint32_t pll_arm;                       /* offset 0x0060 */
+       uint32_t pll_arm_set;
+       uint32_t pll_arm_clr;
+       uint32_t pll_arm_tog;
+       uint32_t pll_ddr;                       /* offset 0x0070 */
+       uint32_t pll_ddr_set;
+       uint32_t pll_ddr_clr;
+       uint32_t pll_ddr_tog;
+       uint32_t pll_ddr_ss;                    /* offset 0x0080 */
+       uint8_t reserved_1[12];
+       uint32_t pll_ddr_num;                   /* offset 0x0090 */
+       uint8_t reserved_2[12];
+       uint32_t pll_ddr_denom;                 /* offset 0x00a0 */
+       uint8_t reserved_3[12];
+       uint32_t pll_480;                       /* offset 0x00b0 */
+       uint32_t pll_480_set;
+       uint32_t pll_480_clr;
+       uint32_t pll_480_tog;
+       uint32_t pfd_480a;                      /* offset 0x00c0 */
+       uint32_t pfd_480a_set;
+       uint32_t pfd_480a_clr;
+       uint32_t pfd_480a_tog;
+       uint32_t pfd_480b;                      /* offset 0x00d0 */
+       uint32_t pfd_480b_set;
+       uint32_t pfd_480b_clr;
+       uint32_t pfd_480b_tog;
+       uint32_t pll_enet;                      /* offset 0x00e0 */
+       uint32_t pll_enet_set;
+       uint32_t pll_enet_clr;
+       uint32_t pll_enet_tog;
+       uint32_t pll_audio;                     /* offset 0x00f0 */
+       uint32_t pll_audio_set;
+       uint32_t pll_audio_clr;
+       uint32_t pll_audio_tog;
+       uint32_t pll_audio_ss;                  /* offset 0x0100 */
+       uint8_t reserved_4[12];
+       uint32_t pll_audio_num;                 /* offset 0x0110 */
+       uint8_t reserved_5[12];
+       uint32_t pll_audio_denom;               /* offset 0x0120 */
+       uint8_t reserved_6[12];
+       uint32_t pll_video;                     /* offset 0x0130 */
+       uint32_t pll_video_set;
+       uint32_t pll_video_clr;
+       uint32_t pll_video_tog;
+       uint32_t pll_video_ss;                  /* offset 0x0140 */
+       uint8_t reserved_7[12];
+       uint32_t pll_video_num;                 /* offset 0x0150 */
+       uint8_t reserved_8[12];
+       uint32_t pll_video_denom;               /* offset 0x0160 */
+       uint8_t reserved_9[12];
+       uint32_t clk_misc0;                     /* offset 0x0170 */
+       uint32_t clk_misc0_set;
+       uint32_t clk_misc0_clr;
+       uint32_t clk_misc0_tog;
+       uint32_t clk_rsvd;                      /* offset 0x0180 */
+       uint8_t reserved_10[124];
+       uint32_t reg_1p0a;                      /* offset 0x0200 */
+       uint32_t reg_1p0a_set;
+       uint32_t reg_1p0a_clr;
+       uint32_t reg_1p0a_tog;
+       uint32_t reg_1p0d;                      /* offsest 0x0210 */
+       uint32_t reg_1p0d_set;
+       uint32_t reg_1p0d_clr;
+       uint32_t reg_1p0d_tog;
+       uint32_t reg_hsic_1p2;                  /* offset 0x0220 */
+       uint32_t reg_hsic_1p2_set;
+       uint32_t reg_hsic_1p2_clr;
+       uint32_t reg_hsic_1p2_tog;
+       uint32_t reg_lpsr_1p0;                  /* offset 0x0230 */
+       uint32_t reg_lpsr_1p0_set;
+       uint32_t reg_lpsr_1p0_clr;
+       uint32_t reg_lpsr_1p0_tog;
+       uint32_t reg_3p0;                       /* offset 0x0240 */
+       uint32_t reg_3p0_set;
+       uint32_t reg_3p0_clr;
+       uint32_t reg_3p0_tog;
+       uint32_t reg_snvs;                      /* offset 0x0250 */
+       uint32_t reg_snvs_set;
+       uint32_t reg_snvs_clr;
+       uint32_t reg_snvs_tog;
+       uint32_t analog_debug_misc0;            /* offset 0x0260 */
+       uint32_t analog_debug_misc0_set;
+       uint32_t analog_debug_misc0_clr;
+       uint32_t analog_debug_misc0_tog;
+       uint32_t ref;                           /* offset 0x0270 */
+       uint32_t ref_set;
+       uint32_t ref_clr;
+       uint32_t ref_tog;
+       uint8_t reserved_11[128];
+       uint32_t tempsense0;                    /* offset 0x0300 */
+       uint32_t tempsense0_set;
+       uint32_t tempsense0_clr;
+       uint32_t tempsense0_tog;
+       uint32_t tempsense1;                    /* offset 0x0310 */
+       uint32_t tempsense1_set;
+       uint32_t tempsense1_clr;
+       uint32_t tempsense1_tog;
+       uint32_t tempsense_trim;                /* offset 0x0320 */
+       uint32_t tempsense_trim_set;
+       uint32_t tempsense_trim_clr;
+       uint32_t tempsense_trim_tog;
+       uint32_t lowpwr_ctrl;                   /* offset 0x0330 */
+       uint32_t lowpwr_ctrl_set;
+       uint32_t lowpwr_ctrl_clr;
+       uint32_t lowpwr_ctrl_tog;
+       uint32_t snvs_tamper_offset_ctrl;       /* offset 0x0340 */
+       uint32_t snvs_tamper_offset_ctrl_set;
+       uint32_t snvs_tamper_offset_ctrl_clr;
+       uint32_t snvs_tamper_offset_ctrl_tog;
+       uint32_t snvs_tamper_pull_ctrl;         /* offset 0x0350 */
+       uint32_t snvs_tamper_pull_ctrl_set;
+       uint32_t snvs_tamper_pull_ctrl_clr;
+       uint32_t snvs_tamper_pull_ctrl_tog;
+       uint32_t snvs_test;                     /* offset 0x0360 */
+       uint32_t snvs_test_set;
+       uint32_t snvs_test_clr;
+       uint32_t snvs_test_tog;
+       uint32_t snvs_tamper_trim_ctrl;         /* offset 0x0370 */
+       uint32_t snvs_tamper_trim_ctrl_set;
+       uint32_t snvs_tamper_trim_ctrl_ctrl;
+       uint32_t snvs_tamper_trim_ctrl_tog;
+       uint32_t snvs_misc_ctrl;                /* offset 0x0380 */
+       uint32_t snvs_misc_ctrl_set;
+       uint32_t snvs_misc_ctrl_clr;
+       uint32_t snvs_misc_ctrl_tog;
+       uint8_t reserved_12[112];
+       uint32_t misc;                          /* offset 0x0400 */
+       uint8_t reserved_13[252];
+       uint32_t adc0;                          /* offset 0x0500 */
+       uint8_t reserved_14[12];
+       uint32_t adc1;                          /* offset 0x0510 */
+       uint8_t reserved_15[748];
+       uint32_t digprog;                       /* offset 0x0800 */
+};
+#endif
+
+#define ANADIG_CLK_MISC0_PFD_480_AUTOGATE_EN_MASK      (0x01 << 17)
+
+#define ANADIG_PLL_LOCK                                        0x80000000
+
+#define ANADIG_PLL_ARM_PWDN_MASK                       (0x01 << 12)
+#define ANADIG_PLL_480_PWDN_MASK                       (0x01 << 12)
+#define ANADIG_PLL_DDR_PWDN_MASK                       (0x01 << 20)
+#define ANADIG_PLL_ENET_PWDN_MASK                      (0x01 << 5)
+#define ANADIG_PLL_VIDEO_PWDN_MASK                     (0x01 << 12)
+
+
+#define ANATOP_PFD480B_PFD4_FRAC_MASK                  0x0000003f
+#define ANATOP_PFD480B_PFD4_FRAC_320M_VAL              0x0000001B
+#define ANATOP_PFD480B_PFD4_FRAC_392M_VAL              0x00000016
+#define ANATOP_PFD480B_PFD4_FRAC_432M_VAL              0x00000014
+
+/* PLL_ARM Bit Fields */
+#define CCM_ANALOG_PLL_ARM_DIV_SELECT_MASK             0x7F
+#define CCM_ANALOG_PLL_ARM_DIV_SELECT_SHIFT            0
+#define CCM_ANALOG_PLL_ARM_HALF_LF_MASK                        0x80
+#define CCM_ANALOG_PLL_ARM_HALF_LF_SHIFT               7
+#define CCM_ANALOG_PLL_ARM_DOUBLE_LF_MASK              0x100
+#define CCM_ANALOG_PLL_ARM_DOUBLE_LF_SHIFT             8
+#define CCM_ANALOG_PLL_ARM_HALF_CP_MASK                        0x200
+#define CCM_ANALOG_PLL_ARM_HALF_CP_SHIFT               9
+#define CCM_ANALOG_PLL_ARM_DOUBLE_CP_MASK              0x400
+#define CCM_ANALOG_PLL_ARM_DOUBLE_CP_SHIFT             10
+#define CCM_ANALOG_PLL_ARM_HOLD_RING_OFF_MASK          0x800
+#define CCM_ANALOG_PLL_ARM_HOLD_RING_OFF_SHIFT         11
+#define CCM_ANALOG_PLL_ARM_POWERDOWN_MASK              0x1000
+#define CCM_ANALOG_PLL_ARM_POWERDOWN_SHIFT             12
+#define CCM_ANALOG_PLL_ARM_ENABLE_CLK_MASK             0x2000
+#define CCM_ANALOG_PLL_ARM_ENABLE_CLK_SHIFT            13
+#define CCM_ANALOG_PLL_ARM_BYPASS_CLK_SRC_MASK         0xC000
+#define CCM_ANALOG_PLL_ARM_BYPASS_CLK_SRC_SHIFT                14
+#define CCM_ANALOG_PLL_ARM_BYPASS_MASK                 0x10000
+#define CCM_ANALOG_PLL_ARM_BYPASS_SHIFT                        16
+#define CCM_ANALOG_PLL_ARM_LVDS_SEL_MASK               0x20000
+#define CCM_ANALOG_PLL_ARM_LVDS_SEL_SHIFT              17
+#define CCM_ANALOG_PLL_ARM_LVDS_24MHZ_SEL_MASK         0x40000
+#define CCM_ANALOG_PLL_ARM_LVDS_24MHZ_SEL_SHIFT                18
+#define CCM_ANALOG_PLL_ARM_PLL_SEL_MASK                        0x80000
+#define CCM_ANALOG_PLL_ARM_PLL_SEL_SHIFT               19
+#define CCM_ANALOG_PLL_ARM_PLL_ARM_OVERRIDE_MASK       0x100000
+#define CCM_ANALOG_PLL_ARM_PLL_ARM_OVERRIDE_SHIFT      20
+#define CCM_ANALOG_PLL_ARM_RSVD0_MASK                  0x7FE00000
+#define CCM_ANALOG_PLL_ARM_RSVD0_SHIFT                 21
+#define CCM_ANALOG_PLL_ARM_LOCK_MASK                   0x80000000
+#define CCM_ANALOG_PLL_ARM_LOCK_SHIFT                  31
+
+/* PLL_DDR Bit Fields */
+#define CCM_ANALOG_PLL_DDR_DIV_SELECT_MASK             0x7F
+#define CCM_ANALOG_PLL_DDR_DIV_SELECT_SHIFT            0
+#define CCM_ANALOG_PLL_DDR_HALF_LF_MASK                        0x80
+#define CCM_ANALOG_PLL_DDR_HALF_LF_SHIFT               7
+#define CCM_ANALOG_PLL_DDR_DOUBLE_LF_MASK              0x100
+#define CCM_ANALOG_PLL_DDR_DOUBLE_LF_SHIFT             8
+#define CCM_ANALOG_PLL_DDR_HALF_CP_MASK                        0x200
+#define CCM_ANALOG_PLL_DDR_HALF_CP_SHIFT               9
+#define CCM_ANALOG_PLL_DDR_DOUBLE_CP_MASK              0x400
+#define CCM_ANALOG_PLL_DDR_DOUBLE_CP_SHIFT             10
+#define CCM_ANALOG_PLL_DDR_HOLD_RING_OFF_MASK          0x800
+#define CCM_ANALOG_PLL_DDR_HOLD_RING_OFF_SHIFT         11
+#define CCM_ANALOG_PLL_DDR_DIV2_ENABLE_CLK_MASK                0x1000
+#define CCM_ANALOG_PLL_DDR_DIV2_ENABLE_CLK_SHIFT       12
+#define CCM_ANALOG_PLL_DDR_ENABLE_CLK_MASK             0x2000
+#define CCM_ANALOG_PLL_DDR_ENABLE_CLK_SHIFT            13
+#define CCM_ANALOG_PLL_DDR_BYPASS_CLK_SRC_MASK         0xC000
+#define CCM_ANALOG_PLL_DDR_BYPASS_CLK_SRC_SHIFT                14
+#define CCM_ANALOG_PLL_DDR_BYPASS_MASK                 0x10000
+#define CCM_ANALOG_PLL_DDR_BYPASS_SHIFT                        16
+#define CCM_ANALOG_PLL_DDR_DITHER_ENABLE_MASK          0x20000
+#define CCM_ANALOG_PLL_DDR_DITHER_ENABLE_SHIFT         17
+#define CCM_ANALOG_PLL_DDR_PFD_OFFSET_EN_MASK          0x40000
+#define CCM_ANALOG_PLL_DDR_PFD_OFFSET_EN_SHIFT         18
+#define CCM_ANALOG_PLL_DDR_PLL_DDR_OVERRIDE_MASK       0x80000
+#define CCM_ANALOG_PLL_DDR_PLL_DDR_OVERRIDE_SHIFT      19
+#define CCM_ANALOG_PLL_DDR_POWERDOWN_MASK              0x100000
+#define CCM_ANALOG_PLL_DDR_POWERDOWN_SHIFT             20
+#define CCM_ANALOG_PLL_DDR_TEST_DIV_SELECT_MASK                0x600000
+#define CCM_ANALOG_PLL_DDR_TEST_DIV_SELECT_SHIFT       21
+#define CCM_ANALOG_PLL_DDR_RSVD1_MASK                  0x7F800000
+#define CCM_ANALOG_PLL_DDR_RSVD1_SHIFT                 23
+#define CCM_ANALOG_PLL_DDR_LOCK_MASK                   0x80000000
+#define CCM_ANALOG_PLL_DDR_LOCK_SHIFT                  31
+
+/* PLL_480 Bit Fields */
+#define CCM_ANALOG_PLL_480_DIV_SELECT_MASK             0x1
+#define CCM_ANALOG_PLL_480_DIV_SELECT_SHIFT            0
+#define CCM_ANALOG_PLL_480_RSVD0_MASK                  0xE
+#define CCM_ANALOG_PLL_480_RSVD0_SHIFT                 1
+#define CCM_ANALOG_PLL_480_MAIN_DIV1_CLKGATE_MASK      0x10
+#define CCM_ANALOG_PLL_480_MAIN_DIV1_CLKGATE_SHIFT     4
+#define CCM_ANALOG_PLL_480_MAIN_DIV2_CLKGATE_MASK      0x20
+#define CCM_ANALOG_PLL_480_MAIN_DIV2_CLKGATE_SHIFT     5
+#define CCM_ANALOG_PLL_480_MAIN_DIV4_CLKGATE_MASK      0x40
+#define CCM_ANALOG_PLL_480_MAIN_DIV4_CLKGATE_SHIFT     6
+#define CCM_ANALOG_PLL_480_HALF_LF_MASK                        0x80
+#define CCM_ANALOG_PLL_480_HALF_LF_SHIFT               7
+#define CCM_ANALOG_PLL_480_DOUBLE_LF_MASK              0x100
+#define CCM_ANALOG_PLL_480_DOUBLE_LF_SHIFT             8
+#define CCM_ANALOG_PLL_480_HALF_CP_MASK                        0x200
+#define CCM_ANALOG_PLL_480_HALF_CP_SHIFT               9
+#define CCM_ANALOG_PLL_480_DOUBLE_CP_MASK              0x400
+#define CCM_ANALOG_PLL_480_DOUBLE_CP_SHIFT             10
+#define CCM_ANALOG_PLL_480_HOLD_RING_OFF_MASK          0x800
+#define CCM_ANALOG_PLL_480_HOLD_RING_OFF_SHIFT         11
+#define CCM_ANALOG_PLL_480_POWERDOWN_MASK              0x1000
+#define CCM_ANALOG_PLL_480_POWERDOWN_SHIFT             12
+#define CCM_ANALOG_PLL_480_ENABLE_CLK_MASK             0x2000
+#define CCM_ANALOG_PLL_480_ENABLE_CLK_SHIFT            13
+#define CCM_ANALOG_PLL_480_BYPASS_CLK_SRC_MASK         0xC000
+#define CCM_ANALOG_PLL_480_BYPASS_CLK_SRC_SHIFT                14
+#define CCM_ANALOG_PLL_480_BYPASS_MASK                 0x10000
+#define CCM_ANALOG_PLL_480_BYPASS_SHIFT                        16
+#define CCM_ANALOG_PLL_480_PLL_480_OVERRIDE_MASK       0x20000
+#define CCM_ANALOG_PLL_480_PLL_480_OVERRIDE_SHIFT      17
+#define CCM_ANALOG_PLL_480_PFD0_OVERRIDE_MASK          0x40000
+#define CCM_ANALOG_PLL_480_PFD0_OVERRIDE_SHIFT         18
+#define CCM_ANALOG_PLL_480_PFD1_OVERRIDE_MASK          0x80000
+#define CCM_ANALOG_PLL_480_PFD1_OVERRIDE_SHIFT         19
+#define CCM_ANALOG_PLL_480_PFD2_OVERRIDE_MASK          0x100000
+#define CCM_ANALOG_PLL_480_PFD2_OVERRIDE_SHIFT         20
+#define CCM_ANALOG_PLL_480_PFD3_OVERRIDE_MASK          0x200000
+#define CCM_ANALOG_PLL_480_PFD3_OVERRIDE_SHIFT         21
+#define CCM_ANALOG_PLL_480_PFD4_OVERRIDE_MASK          0x400000
+#define CCM_ANALOG_PLL_480_PFD4_OVERRIDE_SHIFT         22
+#define CCM_ANALOG_PLL_480_PFD5_OVERRIDE_MASK          0x800000
+#define CCM_ANALOG_PLL_480_PFD5_OVERRIDE_SHIFT         23
+#define CCM_ANALOG_PLL_480_PFD6_OVERRIDE_MASK          0x1000000
+#define CCM_ANALOG_PLL_480_PFD6_OVERRIDE_SHIFT         24
+#define CCM_ANALOG_PLL_480_PFD7_OVERRIDE_MASK          0x2000000
+#define CCM_ANALOG_PLL_480_PFD7_OVERRIDE_SHIFT         25
+#define CCM_ANALOG_PLL_480_PFD0_DIV2_CLKGATE_MASK      0x4000000
+#define CCM_ANALOG_PLL_480_PFD0_DIV2_CLKGATE_SHIFT     26
+#define CCM_ANALOG_PLL_480_PFD1_DIV2_CLKGATE_MASK      0x8000000
+#define CCM_ANALOG_PLL_480_PFD1_DIV2_CLKGATE_SHIFT     27
+#define CCM_ANALOG_PLL_480_PFD2_DIV2_CLKGATE_MASK      0x10000000
+#define CCM_ANALOG_PLL_480_PFD2_DIV2_CLKGATE_SHIFT     28
+#define CCM_ANALOG_PLL_480_RSVD1_MASK                  0x60000000
+#define CCM_ANALOG_PLL_480_RSVD1_SHIFT                 29
+#define CCM_ANALOG_PLL_480_LOCK_MASK                   0x80000000
+#define CCM_ANALOG_PLL_480_LOCK_SHIFT                  31
+
+/* PFD_480A Bit Fields */
+#define CCM_ANALOG_PFD_480A_PFD0_FRAC_MASK             0x3F
+#define CCM_ANALOG_PFD_480A_PFD0_FRAC_SHIFT            0
+#define CCM_ANALOG_PFD_480A_PFD0_STABLE_MASK           0x40
+#define CCM_ANALOG_PFD_480A_PFD0_STABLE_SHIFT          6
+#define CCM_ANALOG_PFD_480A_PFD0_DIV1_CLKGATE_MASK     0x80
+#define CCM_ANALOG_PFD_480A_PFD0_DIV1_CLKGATE_SHIFT    7
+#define CCM_ANALOG_PFD_480A_PFD1_FRAC_MASK             0x3F00
+#define CCM_ANALOG_PFD_480A_PFD1_FRAC_SHIFT            8
+#define CCM_ANALOG_PFD_480A_PFD1_STABLE_MASK           0x4000
+#define CCM_ANALOG_PFD_480A_PFD1_STABLE_SHIFT          14
+#define CCM_ANALOG_PFD_480A_PFD1_DIV1_CLKGATE_MASK     0x8000
+#define CCM_ANALOG_PFD_480A_PFD1_DIV1_CLKGATE_SHIFT    15
+#define CCM_ANALOG_PFD_480A_PFD2_FRAC_MASK             0x3F0000
+#define CCM_ANALOG_PFD_480A_PFD2_FRAC_SHIFT            16
+#define CCM_ANALOG_PFD_480A_PFD2_STABLE_MASK           0x400000
+#define CCM_ANALOG_PFD_480A_PFD2_STABLE_SHIFT          22
+#define CCM_ANALOG_PFD_480A_PFD2_DIV1_CLKGATE_MASK     0x800000
+#define CCM_ANALOG_PFD_480A_PFD2_DIV1_CLKGATE_SHIFT    23
+#define CCM_ANALOG_PFD_480A_PFD3_FRAC_MASK             0x3F000000
+#define CCM_ANALOG_PFD_480A_PFD3_FRAC_SHIFT            24
+#define CCM_ANALOG_PFD_480A_PFD3_STABLE_MASK           0x40000000
+#define CCM_ANALOG_PFD_480A_PFD3_STABLE_SHIFT          30
+#define CCM_ANALOG_PFD_480A_PFD3_DIV1_CLKGATE_MASK     0x80000000
+#define CCM_ANALOG_PFD_480A_PFD3_DIV1_CLKGATE_SHIFT    31
+/* PFD_480B Bit Fields */
+#define CCM_ANALOG_PFD_480B_PFD4_FRAC_MASK             0x3F
+#define CCM_ANALOG_PFD_480B_PFD4_FRAC_SHIFT            0
+#define CCM_ANALOG_PFD_480B_PFD4_STABLE_MASK           0x40
+#define CCM_ANALOG_PFD_480B_PFD4_STABLE_SHIFT          6
+#define CCM_ANALOG_PFD_480B_PFD4_DIV1_CLKGATE_MASK     0x80
+#define CCM_ANALOG_PFD_480B_PFD4_DIV1_CLKGATE_SHIFT    7
+#define CCM_ANALOG_PFD_480B_PFD5_FRAC_MASK             0x3F00
+#define CCM_ANALOG_PFD_480B_PFD5_FRAC_SHIFT            8
+#define CCM_ANALOG_PFD_480B_PFD5_STABLE_MASK           0x4000
+#define CCM_ANALOG_PFD_480B_PFD5_STABLE_SHIFT          14
+#define CCM_ANALOG_PFD_480B_PFD5_DIV1_CLKGATE_MASK     0x8000
+#define CCM_ANALOG_PFD_480B_PFD5_DIV1_CLKGATE_SHIFT    15
+#define CCM_ANALOG_PFD_480B_PFD6_FRAC_MASK             0x3F0000
+#define CCM_ANALOG_PFD_480B_PFD6_FRAC_SHIFT            16
+#define CCM_ANALOG_PFD_480B_PFD6_STABLE_MASK           0x400000
+#define CCM_ANALOG_PFD_480B_PFD6_STABLE_SHIFT          22
+#define CCM_ANALOG_PFD_480B_PFD6_DIV1_CLKGATE_MASK     0x800000
+#define CCM_ANALOG_PFD_480B_PFD6_DIV1_CLKGATE_SHIFT    23
+#define CCM_ANALOG_PFD_480B_PFD7_FRAC_MASK             0x3F000000
+#define CCM_ANALOG_PFD_480B_PFD7_FRAC_SHIFT            24
+#define CCM_ANALOG_PFD_480B_PFD7_STABLE_MASK           0x40000000
+#define CCM_ANALOG_PFD_480B_PFD7_STABLE_SHIFT          30
+#define CCM_ANALOG_PFD_480B_PFD7_DIV1_CLKGATE_MASK     0x80000000
+#define CCM_ANALOG_PFD_480B_PFD7_DIV1_CLKGATE_SHIFT    31
+
+/* PLL_ENET Bit Fields */
+#define CCM_ANALOG_PLL_ENET_HALF_LF_MASK               0x1
+#define CCM_ANALOG_PLL_ENET_HALF_LF_SHIFT              0
+#define CCM_ANALOG_PLL_ENET_DOUBLE_LF_MASK             0x2
+#define CCM_ANALOG_PLL_ENET_DOUBLE_LF_SHIFT            1
+#define CCM_ANALOG_PLL_ENET_HALF_CP_MASK               0x4
+#define CCM_ANALOG_PLL_ENET_HALF_CP_SHIFT              2
+#define CCM_ANALOG_PLL_ENET_DOUBLE_CP_MASK             0x8
+#define CCM_ANALOG_PLL_ENET_DOUBLE_CP_SHIFT            3
+#define CCM_ANALOG_PLL_ENET_HOLD_RING_OFF_MASK         0x10
+#define CCM_ANALOG_PLL_ENET_HOLD_RING_OFF_SHIFT                4
+#define CCM_ANALOG_PLL_ENET_POWERDOWN_MASK             0x20
+#define CCM_ANALOG_PLL_ENET_POWERDOWN_SHIFT            5
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_25MHZ_MASK      0x40
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_25MHZ_SHIFT     6
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_40MHZ_MASK      0x80
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_40MHZ_SHIFT     7
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_50MHZ_MASK      0x100
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_50MHZ_SHIFT     8
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_100MHZ_MASK     0x200
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_100MHZ_SHIFT    9
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_125MHZ_MASK     0x400
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_125MHZ_SHIFT    10
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_250MHZ_MASK     0x800
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_250MHZ_SHIFT    11
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_500MHZ_MASK     0x1000
+#define CCM_ANALOG_PLL_ENET_ENABLE_CLK_500MHZ_SHIFT    12
+#define CCM_ANALOG_PLL_ENET_PLL_ENET_OVERRIDE_MASK     0x2000
+#define CCM_ANALOG_PLL_ENET_PLL_ENET_OVERRIDE_SHIFT    13
+#define CCM_ANALOG_PLL_ENET_BYPASS_CLK_SRC_MASK                0xC000
+#define CCM_ANALOG_PLL_ENET_BYPASS_CLK_SRC_SHIFT       14
+#define CCM_ANALOG_PLL_ENET_BYPASS_MASK                        0x10000
+#define CCM_ANALOG_PLL_ENET_BYPASS_SHIFT               16
+#define CCM_ANALOG_PLL_ENET_DITHER_ENABLE_MASK         0x20000
+#define CCM_ANALOG_PLL_ENET_DITHER_ENABLE_SHIFT                17
+#define CCM_ANALOG_PLL_ENET_PFD_OFFSET_EN_MASK         0x40000
+#define CCM_ANALOG_PLL_ENET_PFD_OFFSET_EN_SHIFT                18
+#define CCM_ANALOG_PLL_ENET_RSVD1_MASK                 0x7FF80000
+#define CCM_ANALOG_PLL_ENET_RSVD1_SHIFT                        19
+#define CCM_ANALOG_PLL_ENET_LOCK_MASK                  0x80000000
+#define CCM_ANALOG_PLL_ENET_LOCK_SHIFT                 31
+
+/* PLL_AUDIO Bit Fields */
+#define CCM_ANALOG_PLL_AUDIO_DIV_SELECT_MASK     0x7Fu
+#define CCM_ANALOG_PLL_AUDIO_DIV_SELECT_SHIFT    0
+#define CCM_ANALOG_PLL_AUDIO_DIV_SELECT(x)       (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_AUDIO_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_AUDIO_HALF_LF_MASK        0x80u
+#define CCM_ANALOG_PLL_AUDIO_HALF_LF_SHIFT       7
+#define CCM_ANALOG_PLL_AUDIO_DOUBLE_LF_MASK      0x100u
+#define CCM_ANALOG_PLL_AUDIO_DOUBLE_LF_SHIFT     8
+#define CCM_ANALOG_PLL_AUDIO_HALF_CP_MASK        0x200u
+#define CCM_ANALOG_PLL_AUDIO_HALF_CP_SHIFT       9
+#define CCM_ANALOG_PLL_AUDIO_DOUBLE_CP_MASK      0x400u
+#define CCM_ANALOG_PLL_AUDIO_DOUBLE_CP_SHIFT     10
+#define CCM_ANALOG_PLL_AUDIO_HOLD_RING_OFF_MASK  0x800u
+#define CCM_ANALOG_PLL_AUDIO_HOLD_RING_OFF_SHIFT 11
+#define CCM_ANALOG_PLL_AUDIO_POWERDOWN_MASK      0x1000u
+#define CCM_ANALOG_PLL_AUDIO_POWERDOWN_SHIFT     12
+#define CCM_ANALOG_PLL_AUDIO_ENABLE_CLK_MASK     0x2000u
+#define CCM_ANALOG_PLL_AUDIO_ENABLE_CLK_SHIFT    13
+#define CCM_ANALOG_PLL_AUDIO_BYPASS_CLK_SRC_MASK 0xC000u
+#define CCM_ANALOG_PLL_AUDIO_BYPASS_CLK_SRC_SHIFT 14
+#define CCM_ANALOG_PLL_AUDIO_BYPASS_CLK_SRC(x)   (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_BYPASS_CLK_SRC_SHIFT))&CCM_ANALOG_PLL_AUDIO_BYPASS_CLK_SRC_MASK)
+#define CCM_ANALOG_PLL_AUDIO_BYPASS_MASK         0x10000u
+#define CCM_ANALOG_PLL_AUDIO_BYPASS_SHIFT        16
+#define CCM_ANALOG_PLL_AUDIO_DITHER_ENABLE_MASK  0x20000u
+#define CCM_ANALOG_PLL_AUDIO_DITHER_ENABLE_SHIFT 17
+#define CCM_ANALOG_PLL_AUDIO_PFD_OFFSET_EN_MASK  0x40000u
+#define CCM_ANALOG_PLL_AUDIO_PFD_OFFSET_EN_SHIFT 18
+#define CCM_ANALOG_PLL_AUDIO_TEST_DIV_SELECT_MASK 0x180000u
+#define CCM_ANALOG_PLL_AUDIO_TEST_DIV_SELECT_SHIFT 19
+#define CCM_ANALOG_PLL_AUDIO_TEST_DIV_SELECT(x)  (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_TEST_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_AUDIO_TEST_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_AUDIO_RSVD0_MASK          0x200000u
+#define CCM_ANALOG_PLL_AUDIO_RSVD0_SHIFT         21
+#define CCM_ANALOG_PLL_AUDIO_POST_DIV_SEL_MASK   0xC00000u
+#define CCM_ANALOG_PLL_AUDIO_POST_DIV_SEL_SHIFT  22
+#define CCM_ANALOG_PLL_AUDIO_POST_DIV_SEL(x)     (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_POST_DIV_SEL_SHIFT))&CCM_ANALOG_PLL_AUDIO_POST_DIV_SEL_MASK)
+#define CCM_ANALOG_PLL_AUDIO_PLL_AUDIO_OVERRIDE_MASK 0x1000000u
+#define CCM_ANALOG_PLL_AUDIO_PLL_AUDIO_OVERRIDE_SHIFT 24
+#define CCM_ANALOG_PLL_AUDIO_RSVD1_MASK          0x7E000000u
+#define CCM_ANALOG_PLL_AUDIO_RSVD1_SHIFT         25
+#define CCM_ANALOG_PLL_AUDIO_RSVD1(x)            (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_RSVD1_SHIFT))&CCM_ANALOG_PLL_AUDIO_RSVD1_MASK)
+#define CCM_ANALOG_PLL_AUDIO_LOCK_MASK           0x80000000u
+#define CCM_ANALOG_PLL_AUDIO_LOCK_SHIFT          31
+/* PLL_AUDIO_SET Bit Fields */
+#define CCM_ANALOG_PLL_AUDIO_SET_DIV_SELECT_MASK 0x7Fu
+#define CCM_ANALOG_PLL_AUDIO_SET_DIV_SELECT_SHIFT 0
+#define CCM_ANALOG_PLL_AUDIO_SET_DIV_SELECT(x)   (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_SET_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_AUDIO_SET_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_AUDIO_SET_HALF_LF_MASK    0x80u
+#define CCM_ANALOG_PLL_AUDIO_SET_HALF_LF_SHIFT   7
+#define CCM_ANALOG_PLL_AUDIO_SET_DOUBLE_LF_MASK  0x100u
+#define CCM_ANALOG_PLL_AUDIO_SET_DOUBLE_LF_SHIFT 8
+#define CCM_ANALOG_PLL_AUDIO_SET_HALF_CP_MASK    0x200u
+#define CCM_ANALOG_PLL_AUDIO_SET_HALF_CP_SHIFT   9
+#define CCM_ANALOG_PLL_AUDIO_SET_DOUBLE_CP_MASK  0x400u
+#define CCM_ANALOG_PLL_AUDIO_SET_DOUBLE_CP_SHIFT 10
+#define CCM_ANALOG_PLL_AUDIO_SET_HOLD_RING_OFF_MASK 0x800u
+#define CCM_ANALOG_PLL_AUDIO_SET_HOLD_RING_OFF_SHIFT 11
+#define CCM_ANALOG_PLL_AUDIO_SET_POWERDOWN_MASK  0x1000u
+#define CCM_ANALOG_PLL_AUDIO_SET_POWERDOWN_SHIFT 12
+#define CCM_ANALOG_PLL_AUDIO_SET_ENABLE_CLK_MASK 0x2000u
+#define CCM_ANALOG_PLL_AUDIO_SET_ENABLE_CLK_SHIFT 13
+#define CCM_ANALOG_PLL_AUDIO_SET_BYPASS_CLK_SRC_MASK 0xC000u
+#define CCM_ANALOG_PLL_AUDIO_SET_BYPASS_CLK_SRC_SHIFT 14
+#define CCM_ANALOG_PLL_AUDIO_SET_BYPASS_CLK_SRC(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_SET_BYPASS_CLK_SRC_SHIFT))&CCM_ANALOG_PLL_AUDIO_SET_BYPASS_CLK_SRC_MASK)
+#define CCM_ANALOG_PLL_AUDIO_SET_BYPASS_MASK     0x10000u
+#define CCM_ANALOG_PLL_AUDIO_SET_BYPASS_SHIFT    16
+#define CCM_ANALOG_PLL_AUDIO_SET_DITHER_ENABLE_MASK 0x20000u
+#define CCM_ANALOG_PLL_AUDIO_SET_DITHER_ENABLE_SHIFT 17
+#define CCM_ANALOG_PLL_AUDIO_SET_PFD_OFFSET_EN_MASK 0x40000u
+#define CCM_ANALOG_PLL_AUDIO_SET_PFD_OFFSET_EN_SHIFT 18
+#define CCM_ANALOG_PLL_AUDIO_SET_TEST_DIV_SELECT_MASK 0x180000u
+#define CCM_ANALOG_PLL_AUDIO_SET_TEST_DIV_SELECT_SHIFT 19
+#define CCM_ANALOG_PLL_AUDIO_SET_TEST_DIV_SELECT(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_SET_TEST_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_AUDIO_SET_TEST_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_AUDIO_SET_RSVD0_MASK      0x200000u
+#define CCM_ANALOG_PLL_AUDIO_SET_RSVD0_SHIFT     21
+#define CCM_ANALOG_PLL_AUDIO_SET_POST_DIV_SEL_MASK 0xC00000u
+#define CCM_ANALOG_PLL_AUDIO_SET_POST_DIV_SEL_SHIFT 22
+#define CCM_ANALOG_PLL_AUDIO_SET_POST_DIV_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_SET_POST_DIV_SEL_SHIFT))&CCM_ANALOG_PLL_AUDIO_SET_POST_DIV_SEL_MASK)
+#define CCM_ANALOG_PLL_AUDIO_SET_PLL_AUDIO_OVERRIDE_MASK 0x1000000u
+#define CCM_ANALOG_PLL_AUDIO_SET_PLL_AUDIO_OVERRIDE_SHIFT 24
+#define CCM_ANALOG_PLL_AUDIO_SET_RSVD1_MASK      0x7E000000u
+#define CCM_ANALOG_PLL_AUDIO_SET_RSVD1_SHIFT     25
+#define CCM_ANALOG_PLL_AUDIO_SET_RSVD1(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_SET_RSVD1_SHIFT))&CCM_ANALOG_PLL_AUDIO_SET_RSVD1_MASK)
+#define CCM_ANALOG_PLL_AUDIO_SET_LOCK_MASK       0x80000000u
+#define CCM_ANALOG_PLL_AUDIO_SET_LOCK_SHIFT      31
+/* PLL_AUDIO_CLR Bit Fields */
+#define CCM_ANALOG_PLL_AUDIO_CLR_DIV_SELECT_MASK 0x7Fu
+#define CCM_ANALOG_PLL_AUDIO_CLR_DIV_SELECT_SHIFT 0
+#define CCM_ANALOG_PLL_AUDIO_CLR_DIV_SELECT(x)   (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_CLR_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_AUDIO_CLR_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_AUDIO_CLR_HALF_LF_MASK    0x80u
+#define CCM_ANALOG_PLL_AUDIO_CLR_HALF_LF_SHIFT   7
+#define CCM_ANALOG_PLL_AUDIO_CLR_DOUBLE_LF_MASK  0x100u
+#define CCM_ANALOG_PLL_AUDIO_CLR_DOUBLE_LF_SHIFT 8
+#define CCM_ANALOG_PLL_AUDIO_CLR_HALF_CP_MASK    0x200u
+#define CCM_ANALOG_PLL_AUDIO_CLR_HALF_CP_SHIFT   9
+#define CCM_ANALOG_PLL_AUDIO_CLR_DOUBLE_CP_MASK  0x400u
+#define CCM_ANALOG_PLL_AUDIO_CLR_DOUBLE_CP_SHIFT 10
+#define CCM_ANALOG_PLL_AUDIO_CLR_HOLD_RING_OFF_MASK 0x800u
+#define CCM_ANALOG_PLL_AUDIO_CLR_HOLD_RING_OFF_SHIFT 11
+#define CCM_ANALOG_PLL_AUDIO_CLR_POWERDOWN_MASK  0x1000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_POWERDOWN_SHIFT 12
+#define CCM_ANALOG_PLL_AUDIO_CLR_ENABLE_CLK_MASK 0x2000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_ENABLE_CLK_SHIFT 13
+#define CCM_ANALOG_PLL_AUDIO_CLR_BYPASS_CLK_SRC_MASK 0xC000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_BYPASS_CLK_SRC_SHIFT 14
+#define CCM_ANALOG_PLL_AUDIO_CLR_BYPASS_CLK_SRC(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_CLR_BYPASS_CLK_SRC_SHIFT))&CCM_ANALOG_PLL_AUDIO_CLR_BYPASS_CLK_SRC_MASK)
+#define CCM_ANALOG_PLL_AUDIO_CLR_BYPASS_MASK     0x10000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_BYPASS_SHIFT    16
+#define CCM_ANALOG_PLL_AUDIO_CLR_DITHER_ENABLE_MASK 0x20000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_DITHER_ENABLE_SHIFT 17
+#define CCM_ANALOG_PLL_AUDIO_CLR_PFD_OFFSET_EN_MASK 0x40000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_PFD_OFFSET_EN_SHIFT 18
+#define CCM_ANALOG_PLL_AUDIO_CLR_TEST_DIV_SELECT_MASK 0x180000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_TEST_DIV_SELECT_SHIFT 19
+#define CCM_ANALOG_PLL_AUDIO_CLR_TEST_DIV_SELECT(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_CLR_TEST_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_AUDIO_CLR_TEST_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_AUDIO_CLR_RSVD0_MASK      0x200000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_RSVD0_SHIFT     21
+#define CCM_ANALOG_PLL_AUDIO_CLR_POST_DIV_SEL_MASK 0xC00000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_POST_DIV_SEL_SHIFT 22
+#define CCM_ANALOG_PLL_AUDIO_CLR_POST_DIV_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_CLR_POST_DIV_SEL_SHIFT))&CCM_ANALOG_PLL_AUDIO_CLR_POST_DIV_SEL_MASK)
+#define CCM_ANALOG_PLL_AUDIO_CLR_PLL_AUDIO_OVERRIDE_MASK 0x1000000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_PLL_AUDIO_OVERRIDE_SHIFT 24
+#define CCM_ANALOG_PLL_AUDIO_CLR_RSVD1_MASK      0x7E000000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_RSVD1_SHIFT     25
+#define CCM_ANALOG_PLL_AUDIO_CLR_RSVD1(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_CLR_RSVD1_SHIFT))&CCM_ANALOG_PLL_AUDIO_CLR_RSVD1_MASK)
+#define CCM_ANALOG_PLL_AUDIO_CLR_LOCK_MASK       0x80000000u
+#define CCM_ANALOG_PLL_AUDIO_CLR_LOCK_SHIFT      31
+/* PLL_AUDIO_TOG Bit Fields */
+#define CCM_ANALOG_PLL_AUDIO_TOG_DIV_SELECT_MASK 0x7Fu
+#define CCM_ANALOG_PLL_AUDIO_TOG_DIV_SELECT_SHIFT 0
+#define CCM_ANALOG_PLL_AUDIO_TOG_DIV_SELECT(x)   (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_TOG_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_AUDIO_TOG_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_AUDIO_TOG_HALF_LF_MASK    0x80u
+#define CCM_ANALOG_PLL_AUDIO_TOG_HALF_LF_SHIFT   7
+#define CCM_ANALOG_PLL_AUDIO_TOG_DOUBLE_LF_MASK  0x100u
+#define CCM_ANALOG_PLL_AUDIO_TOG_DOUBLE_LF_SHIFT 8
+#define CCM_ANALOG_PLL_AUDIO_TOG_HALF_CP_MASK    0x200u
+#define CCM_ANALOG_PLL_AUDIO_TOG_HALF_CP_SHIFT   9
+#define CCM_ANALOG_PLL_AUDIO_TOG_DOUBLE_CP_MASK  0x400u
+#define CCM_ANALOG_PLL_AUDIO_TOG_DOUBLE_CP_SHIFT 10
+#define CCM_ANALOG_PLL_AUDIO_TOG_HOLD_RING_OFF_MASK 0x800u
+#define CCM_ANALOG_PLL_AUDIO_TOG_HOLD_RING_OFF_SHIFT 11
+#define CCM_ANALOG_PLL_AUDIO_TOG_POWERDOWN_MASK  0x1000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_POWERDOWN_SHIFT 12
+#define CCM_ANALOG_PLL_AUDIO_TOG_ENABLE_CLK_MASK 0x2000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_ENABLE_CLK_SHIFT 13
+#define CCM_ANALOG_PLL_AUDIO_TOG_BYPASS_CLK_SRC_MASK 0xC000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_BYPASS_CLK_SRC_SHIFT 14
+#define CCM_ANALOG_PLL_AUDIO_TOG_BYPASS_CLK_SRC(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_TOG_BYPASS_CLK_SRC_SHIFT))&CCM_ANALOG_PLL_AUDIO_TOG_BYPASS_CLK_SRC_MASK)
+#define CCM_ANALOG_PLL_AUDIO_TOG_BYPASS_MASK     0x10000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_BYPASS_SHIFT    16
+#define CCM_ANALOG_PLL_AUDIO_TOG_DITHER_ENABLE_MASK 0x20000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_DITHER_ENABLE_SHIFT 17
+#define CCM_ANALOG_PLL_AUDIO_TOG_PFD_OFFSET_EN_MASK 0x40000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_PFD_OFFSET_EN_SHIFT 18
+#define CCM_ANALOG_PLL_AUDIO_TOG_TEST_DIV_SELECT_MASK 0x180000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_TEST_DIV_SELECT_SHIFT 19
+#define CCM_ANALOG_PLL_AUDIO_TOG_TEST_DIV_SELECT(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_TOG_TEST_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_AUDIO_TOG_TEST_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_AUDIO_TOG_RSVD0_MASK      0x200000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_RSVD0_SHIFT     21
+#define CCM_ANALOG_PLL_AUDIO_TOG_POST_DIV_SEL_MASK 0xC00000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_POST_DIV_SEL_SHIFT 22
+#define CCM_ANALOG_PLL_AUDIO_TOG_POST_DIV_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_TOG_POST_DIV_SEL_SHIFT))&CCM_ANALOG_PLL_AUDIO_TOG_POST_DIV_SEL_MASK)
+#define CCM_ANALOG_PLL_AUDIO_TOG_PLL_AUDIO_OVERRIDE_MASK 0x1000000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_PLL_AUDIO_OVERRIDE_SHIFT 24
+#define CCM_ANALOG_PLL_AUDIO_TOG_RSVD1_MASK      0x7E000000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_RSVD1_SHIFT     25
+#define CCM_ANALOG_PLL_AUDIO_TOG_RSVD1(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_TOG_RSVD1_SHIFT))&CCM_ANALOG_PLL_AUDIO_TOG_RSVD1_MASK)
+#define CCM_ANALOG_PLL_AUDIO_TOG_LOCK_MASK       0x80000000u
+#define CCM_ANALOG_PLL_AUDIO_TOG_LOCK_SHIFT      31
+/* PLL_AUDIO_SS Bit Fields */
+#define CCM_ANALOG_PLL_AUDIO_SS_STEP_MASK        0x7FFFu
+#define CCM_ANALOG_PLL_AUDIO_SS_STEP_SHIFT       0
+#define CCM_ANALOG_PLL_AUDIO_SS_STEP(x)          (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_SS_STEP_SHIFT))&CCM_ANALOG_PLL_AUDIO_SS_STEP_MASK)
+#define CCM_ANALOG_PLL_AUDIO_SS_ENABLE_MASK      0x8000u
+#define CCM_ANALOG_PLL_AUDIO_SS_ENABLE_SHIFT     15
+#define CCM_ANALOG_PLL_AUDIO_SS_STOP_MASK        0xFFFF0000u
+#define CCM_ANALOG_PLL_AUDIO_SS_STOP_SHIFT       16
+#define CCM_ANALOG_PLL_AUDIO_SS_STOP(x)          (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_SS_STOP_SHIFT))&CCM_ANALOG_PLL_AUDIO_SS_STOP_MASK)
+/* PLL_AUDIO_NUM Bit Fields */
+#define CCM_ANALOG_PLL_AUDIO_NUM_A_MASK          0x3FFFFFFFu
+#define CCM_ANALOG_PLL_AUDIO_NUM_A_SHIFT         0
+#define CCM_ANALOG_PLL_AUDIO_NUM_A(x)            (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_NUM_A_SHIFT))&CCM_ANALOG_PLL_AUDIO_NUM_A_MASK)
+#define CCM_ANALOG_PLL_AUDIO_NUM_RSVD0_MASK      0xC0000000u
+#define CCM_ANALOG_PLL_AUDIO_NUM_RSVD0_SHIFT     30
+#define CCM_ANALOG_PLL_AUDIO_NUM_RSVD0(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_NUM_RSVD0_SHIFT))&CCM_ANALOG_PLL_AUDIO_NUM_RSVD0_MASK)
+/* PLL_AUDIO_DENOM Bit Fields */
+#define CCM_ANALOG_PLL_AUDIO_DENOM_B_MASK        0x3FFFFFFFu
+#define CCM_ANALOG_PLL_AUDIO_DENOM_B_SHIFT       0
+#define CCM_ANALOG_PLL_AUDIO_DENOM_B(x)          (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_DENOM_B_SHIFT))&CCM_ANALOG_PLL_AUDIO_DENOM_B_MASK)
+#define CCM_ANALOG_PLL_AUDIO_DENOM_RSVD0_MASK    0xC0000000u
+#define CCM_ANALOG_PLL_AUDIO_DENOM_RSVD0_SHIFT   30
+#define CCM_ANALOG_PLL_AUDIO_DENOM_RSVD0(x)      (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_AUDIO_DENOM_RSVD0_SHIFT))&CCM_ANALOG_PLL_AUDIO_DENOM_RSVD0_MASK)
+/* PLL_VIDEO Bit Fields */
+#define CCM_ANALOG_PLL_VIDEO_DIV_SELECT_MASK     0x7Fu
+#define CCM_ANALOG_PLL_VIDEO_DIV_SELECT_SHIFT    0
+#define CCM_ANALOG_PLL_VIDEO_DIV_SELECT(x)       (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_VIDEO_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_VIDEO_HALF_LF_MASK        0x80u
+#define CCM_ANALOG_PLL_VIDEO_HALF_LF_SHIFT       7
+#define CCM_ANALOG_PLL_VIDEO_DOUBLE_LF_MASK      0x100u
+#define CCM_ANALOG_PLL_VIDEO_DOUBLE_LF_SHIFT     8
+#define CCM_ANALOG_PLL_VIDEO_HALF_CP_MASK        0x200u
+#define CCM_ANALOG_PLL_VIDEO_HALF_CP_SHIFT       9
+#define CCM_ANALOG_PLL_VIDEO_DOUBLE_CP_MASK      0x400u
+#define CCM_ANALOG_PLL_VIDEO_DOUBLE_CP_SHIFT     10
+#define CCM_ANALOG_PLL_VIDEO_HOLD_RING_OFF_MASK  0x800u
+#define CCM_ANALOG_PLL_VIDEO_HOLD_RING_OFF_SHIFT 11
+#define CCM_ANALOG_PLL_VIDEO_POWERDOWN_MASK      0x1000u
+#define CCM_ANALOG_PLL_VIDEO_POWERDOWN_SHIFT     12
+#define CCM_ANALOG_PLL_VIDEO_ENABLE_CLK_MASK     0x2000u
+#define CCM_ANALOG_PLL_VIDEO_ENABLE_CLK_SHIFT    13
+#define CCM_ANALOG_PLL_VIDEO_BYPASS_CLK_SRC_MASK 0xC000u
+#define CCM_ANALOG_PLL_VIDEO_BYPASS_CLK_SRC_SHIFT 14
+#define CCM_ANALOG_PLL_VIDEO_BYPASS_CLK_SRC(x)   (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_BYPASS_CLK_SRC_SHIFT))&CCM_ANALOG_PLL_VIDEO_BYPASS_CLK_SRC_MASK)
+#define CCM_ANALOG_PLL_VIDEO_BYPASS_MASK         0x10000u
+#define CCM_ANALOG_PLL_VIDEO_BYPASS_SHIFT        16
+#define CCM_ANALOG_PLL_VIDEO_DITHER_ENABLE_MASK  0x20000u
+#define CCM_ANALOG_PLL_VIDEO_DITHER_ENABLE_SHIFT 17
+#define CCM_ANALOG_PLL_VIDEO_PFD_OFFSET_EN_MASK  0x40000u
+#define CCM_ANALOG_PLL_VIDEO_PFD_OFFSET_EN_SHIFT 18
+#define CCM_ANALOG_PLL_VIDEO_TEST_DIV_SELECT_MASK 0x180000u
+#define CCM_ANALOG_PLL_VIDEO_TEST_DIV_SELECT_SHIFT 19
+#define CCM_ANALOG_PLL_VIDEO_TEST_DIV_SELECT(x)  (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_TEST_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_VIDEO_TEST_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_VIDEO_RSVD0_MASK          0x200000u
+#define CCM_ANALOG_PLL_VIDEO_RSVD0_SHIFT         21
+#define CCM_ANALOG_PLL_VIDEO_POST_DIV_SEL_MASK   0xC00000u
+#define CCM_ANALOG_PLL_VIDEO_POST_DIV_SEL_SHIFT  22
+#define CCM_ANALOG_PLL_VIDEO_POST_DIV_SEL(x)     (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_POST_DIV_SEL_SHIFT))&CCM_ANALOG_PLL_VIDEO_POST_DIV_SEL_MASK)
+#define CCM_ANALOG_PLL_VIDEO_PLL_VIDEO_OVERRIDE_MASK 0x1000000u
+#define CCM_ANALOG_PLL_VIDEO_PLL_VIDEO_OVERRIDE_SHIFT 24
+#define CCM_ANALOG_PLL_VIDEO_RSVD1_MASK          0x7E000000u
+#define CCM_ANALOG_PLL_VIDEO_RSVD1_SHIFT         25
+#define CCM_ANALOG_PLL_VIDEO_RSVD1(x)            (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_RSVD1_SHIFT))&CCM_ANALOG_PLL_VIDEO_RSVD1_MASK)
+#define CCM_ANALOG_PLL_VIDEO_LOCK_MASK           0x80000000u
+#define CCM_ANALOG_PLL_VIDEO_LOCK_SHIFT          31
+/* PLL_VIDEO_SET Bit Fields */
+#define CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT_MASK 0x7Fu
+#define CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT_SHIFT 0
+#define CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT(x)   (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_VIDEO_SET_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_VIDEO_SET_HALF_LF_MASK    0x80u
+#define CCM_ANALOG_PLL_VIDEO_SET_HALF_LF_SHIFT   7
+#define CCM_ANALOG_PLL_VIDEO_SET_DOUBLE_LF_MASK  0x100u
+#define CCM_ANALOG_PLL_VIDEO_SET_DOUBLE_LF_SHIFT 8
+#define CCM_ANALOG_PLL_VIDEO_SET_HALF_CP_MASK    0x200u
+#define CCM_ANALOG_PLL_VIDEO_SET_HALF_CP_SHIFT   9
+#define CCM_ANALOG_PLL_VIDEO_SET_DOUBLE_CP_MASK  0x400u
+#define CCM_ANALOG_PLL_VIDEO_SET_DOUBLE_CP_SHIFT 10
+#define CCM_ANALOG_PLL_VIDEO_SET_HOLD_RING_OFF_MASK 0x800u
+#define CCM_ANALOG_PLL_VIDEO_SET_HOLD_RING_OFF_SHIFT 11
+#define CCM_ANALOG_PLL_VIDEO_SET_POWERDOWN_MASK  0x1000u
+#define CCM_ANALOG_PLL_VIDEO_SET_POWERDOWN_SHIFT 12
+#define CCM_ANALOG_PLL_VIDEO_SET_ENABLE_CLK_MASK 0x2000u
+#define CCM_ANALOG_PLL_VIDEO_SET_ENABLE_CLK_SHIFT 13
+#define CCM_ANALOG_PLL_VIDEO_SET_BYPASS_CLK_SRC_MASK 0xC000u
+#define CCM_ANALOG_PLL_VIDEO_SET_BYPASS_CLK_SRC_SHIFT 14
+#define CCM_ANALOG_PLL_VIDEO_SET_BYPASS_CLK_SRC(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_SET_BYPASS_CLK_SRC_SHIFT))&CCM_ANALOG_PLL_VIDEO_SET_BYPASS_CLK_SRC_MASK)
+#define CCM_ANALOG_PLL_VIDEO_SET_BYPASS_MASK     0x10000u
+#define CCM_ANALOG_PLL_VIDEO_SET_BYPASS_SHIFT    16
+#define CCM_ANALOG_PLL_VIDEO_SET_DITHER_ENABLE_MASK 0x20000u
+#define CCM_ANALOG_PLL_VIDEO_SET_DITHER_ENABLE_SHIFT 17
+#define CCM_ANALOG_PLL_VIDEO_SET_PFD_OFFSET_EN_MASK 0x40000u
+#define CCM_ANALOG_PLL_VIDEO_SET_PFD_OFFSET_EN_SHIFT 18
+#define CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT_MASK 0x180000u
+#define CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT_SHIFT 19
+#define CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_VIDEO_SET_TEST_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_VIDEO_SET_RSVD0_MASK      0x200000u
+#define CCM_ANALOG_PLL_VIDEO_SET_RSVD0_SHIFT     21
+#define CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL_MASK 0xC00000u
+#define CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL_SHIFT 22
+#define CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL_SHIFT))&CCM_ANALOG_PLL_VIDEO_SET_POST_DIV_SEL_MASK)
+#define CCM_ANALOG_PLL_VIDEO_SET_PLL_VIDEO_OVERRIDE_MASK 0x1000000u
+#define CCM_ANALOG_PLL_VIDEO_SET_PLL_VIDEO_OVERRIDE_SHIFT 24
+#define CCM_ANALOG_PLL_VIDEO_SET_RSVD1_MASK      0x7E000000u
+#define CCM_ANALOG_PLL_VIDEO_SET_RSVD1_SHIFT     25
+#define CCM_ANALOG_PLL_VIDEO_SET_RSVD1(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_SET_RSVD1_SHIFT))&CCM_ANALOG_PLL_VIDEO_SET_RSVD1_MASK)
+#define CCM_ANALOG_PLL_VIDEO_SET_LOCK_MASK       0x80000000u
+#define CCM_ANALOG_PLL_VIDEO_SET_LOCK_SHIFT      31
+/* PLL_VIDEO_CLR Bit Fields */
+#define CCM_ANALOG_PLL_VIDEO_CLR_DIV_SELECT_MASK 0x7Fu
+#define CCM_ANALOG_PLL_VIDEO_CLR_DIV_SELECT_SHIFT 0
+#define CCM_ANALOG_PLL_VIDEO_CLR_DIV_SELECT(x)   (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_CLR_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_VIDEO_CLR_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_VIDEO_CLR_HALF_LF_MASK    0x80u
+#define CCM_ANALOG_PLL_VIDEO_CLR_HALF_LF_SHIFT   7
+#define CCM_ANALOG_PLL_VIDEO_CLR_DOUBLE_LF_MASK  0x100u
+#define CCM_ANALOG_PLL_VIDEO_CLR_DOUBLE_LF_SHIFT 8
+#define CCM_ANALOG_PLL_VIDEO_CLR_HALF_CP_MASK    0x200u
+#define CCM_ANALOG_PLL_VIDEO_CLR_HALF_CP_SHIFT   9
+#define CCM_ANALOG_PLL_VIDEO_CLR_DOUBLE_CP_MASK  0x400u
+#define CCM_ANALOG_PLL_VIDEO_CLR_DOUBLE_CP_SHIFT 10
+#define CCM_ANALOG_PLL_VIDEO_CLR_HOLD_RING_OFF_MASK 0x800u
+#define CCM_ANALOG_PLL_VIDEO_CLR_HOLD_RING_OFF_SHIFT 11
+#define CCM_ANALOG_PLL_VIDEO_CLR_POWERDOWN_MASK  0x1000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_POWERDOWN_SHIFT 12
+#define CCM_ANALOG_PLL_VIDEO_CLR_ENABLE_CLK_MASK 0x2000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_ENABLE_CLK_SHIFT 13
+#define CCM_ANALOG_PLL_VIDEO_CLR_BYPASS_CLK_SRC_MASK 0xC000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_BYPASS_CLK_SRC_SHIFT 14
+#define CCM_ANALOG_PLL_VIDEO_CLR_BYPASS_CLK_SRC(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_CLR_BYPASS_CLK_SRC_SHIFT))&CCM_ANALOG_PLL_VIDEO_CLR_BYPASS_CLK_SRC_MASK)
+#define CCM_ANALOG_PLL_VIDEO_CLR_BYPASS_MASK     0x10000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_BYPASS_SHIFT    16
+#define CCM_ANALOG_PLL_VIDEO_CLR_DITHER_ENABLE_MASK 0x20000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_DITHER_ENABLE_SHIFT 17
+#define CCM_ANALOG_PLL_VIDEO_CLR_PFD_OFFSET_EN_MASK 0x40000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_PFD_OFFSET_EN_SHIFT 18
+#define CCM_ANALOG_PLL_VIDEO_CLR_TEST_DIV_SELECT_MASK 0x180000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_TEST_DIV_SELECT_SHIFT 19
+#define CCM_ANALOG_PLL_VIDEO_CLR_TEST_DIV_SELECT(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_CLR_TEST_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_VIDEO_CLR_TEST_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_VIDEO_CLR_RSVD0_MASK      0x200000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_RSVD0_SHIFT     21
+#define CCM_ANALOG_PLL_VIDEO_CLR_POST_DIV_SEL_MASK 0xC00000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_POST_DIV_SEL_SHIFT 22
+#define CCM_ANALOG_PLL_VIDEO_CLR_POST_DIV_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_CLR_POST_DIV_SEL_SHIFT))&CCM_ANALOG_PLL_VIDEO_CLR_POST_DIV_SEL_MASK)
+#define CCM_ANALOG_PLL_VIDEO_CLR_PLL_VIDEO_OVERRIDE_MASK 0x1000000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_PLL_VIDEO_OVERRIDE_SHIFT 24
+#define CCM_ANALOG_PLL_VIDEO_CLR_RSVD1_MASK      0x7E000000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_RSVD1_SHIFT     25
+#define CCM_ANALOG_PLL_VIDEO_CLR_RSVD1(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_CLR_RSVD1_SHIFT))&CCM_ANALOG_PLL_VIDEO_CLR_RSVD1_MASK)
+#define CCM_ANALOG_PLL_VIDEO_CLR_LOCK_MASK       0x80000000u
+#define CCM_ANALOG_PLL_VIDEO_CLR_LOCK_SHIFT      31
+/* PLL_VIDEO_TOG Bit Fields */
+#define CCM_ANALOG_PLL_VIDEO_TOG_DIV_SELECT_MASK 0x7Fu
+#define CCM_ANALOG_PLL_VIDEO_TOG_DIV_SELECT_SHIFT 0
+#define CCM_ANALOG_PLL_VIDEO_TOG_DIV_SELECT(x)   (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_TOG_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_VIDEO_TOG_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_VIDEO_TOG_HALF_LF_MASK    0x80u
+#define CCM_ANALOG_PLL_VIDEO_TOG_HALF_LF_SHIFT   7
+#define CCM_ANALOG_PLL_VIDEO_TOG_DOUBLE_LF_MASK  0x100u
+#define CCM_ANALOG_PLL_VIDEO_TOG_DOUBLE_LF_SHIFT 8
+#define CCM_ANALOG_PLL_VIDEO_TOG_HALF_CP_MASK    0x200u
+#define CCM_ANALOG_PLL_VIDEO_TOG_HALF_CP_SHIFT   9
+#define CCM_ANALOG_PLL_VIDEO_TOG_DOUBLE_CP_MASK  0x400u
+#define CCM_ANALOG_PLL_VIDEO_TOG_DOUBLE_CP_SHIFT 10
+#define CCM_ANALOG_PLL_VIDEO_TOG_HOLD_RING_OFF_MASK 0x800u
+#define CCM_ANALOG_PLL_VIDEO_TOG_HOLD_RING_OFF_SHIFT 11
+#define CCM_ANALOG_PLL_VIDEO_TOG_POWERDOWN_MASK  0x1000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_POWERDOWN_SHIFT 12
+#define CCM_ANALOG_PLL_VIDEO_TOG_ENABLE_CLK_MASK 0x2000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_ENABLE_CLK_SHIFT 13
+#define CCM_ANALOG_PLL_VIDEO_TOG_BYPASS_CLK_SRC_MASK 0xC000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_BYPASS_CLK_SRC_SHIFT 14
+#define CCM_ANALOG_PLL_VIDEO_TOG_BYPASS_CLK_SRC(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_TOG_BYPASS_CLK_SRC_SHIFT))&CCM_ANALOG_PLL_VIDEO_TOG_BYPASS_CLK_SRC_MASK)
+#define CCM_ANALOG_PLL_VIDEO_TOG_BYPASS_MASK     0x10000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_BYPASS_SHIFT    16
+#define CCM_ANALOG_PLL_VIDEO_TOG_DITHER_ENABLE_MASK 0x20000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_DITHER_ENABLE_SHIFT 17
+#define CCM_ANALOG_PLL_VIDEO_TOG_PFD_OFFSET_EN_MASK 0x40000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_PFD_OFFSET_EN_SHIFT 18
+#define CCM_ANALOG_PLL_VIDEO_TOG_TEST_DIV_SELECT_MASK 0x180000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_TEST_DIV_SELECT_SHIFT 19
+#define CCM_ANALOG_PLL_VIDEO_TOG_TEST_DIV_SELECT(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_TOG_TEST_DIV_SELECT_SHIFT))&CCM_ANALOG_PLL_VIDEO_TOG_TEST_DIV_SELECT_MASK)
+#define CCM_ANALOG_PLL_VIDEO_TOG_RSVD0_MASK      0x200000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_RSVD0_SHIFT     21
+#define CCM_ANALOG_PLL_VIDEO_TOG_POST_DIV_SEL_MASK 0xC00000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_POST_DIV_SEL_SHIFT 22
+#define CCM_ANALOG_PLL_VIDEO_TOG_POST_DIV_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_TOG_POST_DIV_SEL_SHIFT))&CCM_ANALOG_PLL_VIDEO_TOG_POST_DIV_SEL_MASK)
+#define CCM_ANALOG_PLL_VIDEO_TOG_PLL_VIDEO_OVERRIDE_MASK 0x1000000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_PLL_VIDEO_OVERRIDE_SHIFT 24
+#define CCM_ANALOG_PLL_VIDEO_TOG_RSVD1_MASK      0x7E000000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_RSVD1_SHIFT     25
+#define CCM_ANALOG_PLL_VIDEO_TOG_RSVD1(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_TOG_RSVD1_SHIFT))&CCM_ANALOG_PLL_VIDEO_TOG_RSVD1_MASK)
+#define CCM_ANALOG_PLL_VIDEO_TOG_LOCK_MASK       0x80000000u
+#define CCM_ANALOG_PLL_VIDEO_TOG_LOCK_SHIFT      31
+/* PLL_VIDEO_SS Bit Fields */
+#define CCM_ANALOG_PLL_VIDEO_SS_STEP_MASK        0x7FFFu
+#define CCM_ANALOG_PLL_VIDEO_SS_STEP_SHIFT       0
+#define CCM_ANALOG_PLL_VIDEO_SS_STEP(x)          (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_SS_STEP_SHIFT))&CCM_ANALOG_PLL_VIDEO_SS_STEP_MASK)
+#define CCM_ANALOG_PLL_VIDEO_SS_ENABLE_MASK      0x8000u
+#define CCM_ANALOG_PLL_VIDEO_SS_ENABLE_SHIFT     15
+#define CCM_ANALOG_PLL_VIDEO_SS_STOP_MASK        0xFFFF0000u
+#define CCM_ANALOG_PLL_VIDEO_SS_STOP_SHIFT       16
+#define CCM_ANALOG_PLL_VIDEO_SS_STOP(x)          (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_SS_STOP_SHIFT))&CCM_ANALOG_PLL_VIDEO_SS_STOP_MASK)
+/* PLL_VIDEO_NUM Bit Fields */
+#define CCM_ANALOG_PLL_VIDEO_NUM_A_MASK          0x3FFFFFFFu
+#define CCM_ANALOG_PLL_VIDEO_NUM_A_SHIFT         0
+#define CCM_ANALOG_PLL_VIDEO_NUM_A(x)            (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_NUM_A_SHIFT))&CCM_ANALOG_PLL_VIDEO_NUM_A_MASK)
+#define CCM_ANALOG_PLL_VIDEO_NUM_RSVD0_MASK      0xC0000000u
+#define CCM_ANALOG_PLL_VIDEO_NUM_RSVD0_SHIFT     30
+#define CCM_ANALOG_PLL_VIDEO_NUM_RSVD0(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_NUM_RSVD0_SHIFT))&CCM_ANALOG_PLL_VIDEO_NUM_RSVD0_MASK)
+/* PLL_VIDEO_DENOM Bit Fields */
+#define CCM_ANALOG_PLL_VIDEO_DENOM_B_MASK        0x3FFFFFFFu
+#define CCM_ANALOG_PLL_VIDEO_DENOM_B_SHIFT       0
+#define CCM_ANALOG_PLL_VIDEO_DENOM_B(x)          (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_DENOM_B_SHIFT))&CCM_ANALOG_PLL_VIDEO_DENOM_B_MASK)
+#define CCM_ANALOG_PLL_VIDEO_DENOM_RSVD0_MASK    0xC0000000u
+#define CCM_ANALOG_PLL_VIDEO_DENOM_RSVD0_SHIFT   30
+#define CCM_ANALOG_PLL_VIDEO_DENOM_RSVD0(x)      (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_PLL_VIDEO_DENOM_RSVD0_SHIFT))&CCM_ANALOG_PLL_VIDEO_DENOM_RSVD0_MASK)
+/* CLK_MISC0 Bit Fields */
+#define CCM_ANALOG_CLK_MISC0_LVDS1_CLK_SEL_MASK  0x1Fu
+#define CCM_ANALOG_CLK_MISC0_LVDS1_CLK_SEL_SHIFT 0
+#define CCM_ANALOG_CLK_MISC0_LVDS1_CLK_SEL(x)    (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_CLK_MISC0_LVDS1_CLK_SEL_SHIFT))&CCM_ANALOG_CLK_MISC0_LVDS1_CLK_SEL_MASK)
+#define CCM_ANALOG_CLK_MISC0_LVDSCLK1_OBEN_MASK  0x20u
+#define CCM_ANALOG_CLK_MISC0_LVDSCLK1_OBEN_SHIFT 5
+#define CCM_ANALOG_CLK_MISC0_LVDSCLK1_IBEN_MASK  0x40u
+#define CCM_ANALOG_CLK_MISC0_LVDSCLK1_IBEN_SHIFT 6
+#define CCM_ANALOG_CLK_MISC0_ACLK2_PREDIV_MASK   0x80u
+#define CCM_ANALOG_CLK_MISC0_ACLK2_PREDIV_SHIFT  7
+#define CCM_ANALOG_CLK_MISC0_RSVD0_MASK          0xFFFFFF00u
+#define CCM_ANALOG_CLK_MISC0_RSVD0_SHIFT         8
+#define CCM_ANALOG_CLK_MISC0_RSVD0(x)            (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_CLK_MISC0_RSVD0_SHIFT))&CCM_ANALOG_CLK_MISC0_RSVD0_MASK)
+/* CLK_MISC0_SET Bit Fields */
+#define CCM_ANALOG_CLK_MISC0_SET_LVDS1_CLK_SEL_MASK 0x1Fu
+#define CCM_ANALOG_CLK_MISC0_SET_LVDS1_CLK_SEL_SHIFT 0
+#define CCM_ANALOG_CLK_MISC0_SET_LVDS1_CLK_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_CLK_MISC0_SET_LVDS1_CLK_SEL_SHIFT))&CCM_ANALOG_CLK_MISC0_SET_LVDS1_CLK_SEL_MASK)
+#define CCM_ANALOG_CLK_MISC0_SET_LVDSCLK1_OBEN_MASK 0x20u
+#define CCM_ANALOG_CLK_MISC0_SET_LVDSCLK1_OBEN_SHIFT 5
+#define CCM_ANALOG_CLK_MISC0_SET_LVDSCLK1_IBEN_MASK 0x40u
+#define CCM_ANALOG_CLK_MISC0_SET_LVDSCLK1_IBEN_SHIFT 6
+#define CCM_ANALOG_CLK_MISC0_SET_ACLK2_PREDIV_MASK 0x80u
+#define CCM_ANALOG_CLK_MISC0_SET_ACLK2_PREDIV_SHIFT 7
+#define CCM_ANALOG_CLK_MISC0_SET_RSVD0_MASK      0xFFFFFF00u
+#define CCM_ANALOG_CLK_MISC0_SET_RSVD0_SHIFT     8
+#define CCM_ANALOG_CLK_MISC0_SET_RSVD0(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_CLK_MISC0_SET_RSVD0_SHIFT))&CCM_ANALOG_CLK_MISC0_SET_RSVD0_MASK)
+/* CLK_MISC0_CLR Bit Fields */
+#define CCM_ANALOG_CLK_MISC0_CLR_LVDS1_CLK_SEL_MASK 0x1Fu
+#define CCM_ANALOG_CLK_MISC0_CLR_LVDS1_CLK_SEL_SHIFT 0
+#define CCM_ANALOG_CLK_MISC0_CLR_LVDS1_CLK_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_CLK_MISC0_CLR_LVDS1_CLK_SEL_SHIFT))&CCM_ANALOG_CLK_MISC0_CLR_LVDS1_CLK_SEL_MASK)
+#define CCM_ANALOG_CLK_MISC0_CLR_LVDSCLK1_OBEN_MASK 0x20u
+#define CCM_ANALOG_CLK_MISC0_CLR_LVDSCLK1_OBEN_SHIFT 5
+#define CCM_ANALOG_CLK_MISC0_CLR_LVDSCLK1_IBEN_MASK 0x40u
+#define CCM_ANALOG_CLK_MISC0_CLR_LVDSCLK1_IBEN_SHIFT 6
+#define CCM_ANALOG_CLK_MISC0_CLR_ACLK2_PREDIV_MASK 0x80u
+#define CCM_ANALOG_CLK_MISC0_CLR_ACLK2_PREDIV_SHIFT 7
+#define CCM_ANALOG_CLK_MISC0_CLR_RSVD0_MASK      0xFFFFFF00u
+#define CCM_ANALOG_CLK_MISC0_CLR_RSVD0_SHIFT     8
+#define CCM_ANALOG_CLK_MISC0_CLR_RSVD0(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_CLK_MISC0_CLR_RSVD0_SHIFT))&CCM_ANALOG_CLK_MISC0_CLR_RSVD0_MASK)
+/* CLK_MISC0_TOG Bit Fields */
+#define CCM_ANALOG_CLK_MISC0_TOG_LVDS1_CLK_SEL_MASK 0x1Fu
+#define CCM_ANALOG_CLK_MISC0_TOG_LVDS1_CLK_SEL_SHIFT 0
+#define CCM_ANALOG_CLK_MISC0_TOG_LVDS1_CLK_SEL(x) (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_CLK_MISC0_TOG_LVDS1_CLK_SEL_SHIFT))&CCM_ANALOG_CLK_MISC0_TOG_LVDS1_CLK_SEL_MASK)
+#define CCM_ANALOG_CLK_MISC0_TOG_LVDSCLK1_OBEN_MASK 0x20u
+#define CCM_ANALOG_CLK_MISC0_TOG_LVDSCLK1_OBEN_SHIFT 5
+#define CCM_ANALOG_CLK_MISC0_TOG_LVDSCLK1_IBEN_MASK 0x40u
+#define CCM_ANALOG_CLK_MISC0_TOG_LVDSCLK1_IBEN_SHIFT 6
+#define CCM_ANALOG_CLK_MISC0_TOG_ACLK2_PREDIV_MASK 0x80u
+#define CCM_ANALOG_CLK_MISC0_TOG_ACLK2_PREDIV_SHIFT 7
+#define CCM_ANALOG_CLK_MISC0_TOG_RSVD0_MASK      0xFFFFFF00u
+#define CCM_ANALOG_CLK_MISC0_TOG_RSVD0_SHIFT     8
+#define CCM_ANALOG_CLK_MISC0_TOG_RSVD0(x)        (((uint32_t)(((uint32_t)(x))<<CCM_ANALOG_CLK_MISC0_TOG_RSVD0_SHIFT))&CCM_ANALOG_CLK_MISC0_TOG_RSVD0_MASK)
+
+/* REG_1P0A Bit Fields */
+#define PMU_REG_1P0A_ENABLE_LINREG_MASK          0x1u
+#define PMU_REG_1P0A_ENABLE_LINREG_SHIFT         0
+#define PMU_REG_1P0A_ENABLE_BO_MASK              0x2u
+#define PMU_REG_1P0A_ENABLE_BO_SHIFT             1
+#define PMU_REG_1P0A_ENABLE_ILIMIT_MASK          0x4u
+#define PMU_REG_1P0A_ENABLE_ILIMIT_SHIFT         2
+#define PMU_REG_1P0A_ENABLE_PULLDOWN_MASK        0x8u
+#define PMU_REG_1P0A_ENABLE_PULLDOWN_SHIFT       3
+#define PMU_REG_1P0A_BO_OFFSET_MASK              0x70u
+#define PMU_REG_1P0A_BO_OFFSET_SHIFT             4
+#define PMU_REG_1P0A_BO_OFFSET(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_BO_OFFSET_SHIFT))&PMU_REG_1P0A_BO_OFFSET_MASK)
+#define PMU_REG_1P0A_ENABLE_PWRUPLOAD_MASK       0x80u
+#define PMU_REG_1P0A_ENABLE_PWRUPLOAD_SHIFT      7
+#define PMU_REG_1P0A_OUTPUT_TRG_MASK             0x1F00u
+#define PMU_REG_1P0A_OUTPUT_TRG_SHIFT            8
+#define PMU_REG_1P0A_OUTPUT_TRG(x)               (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_OUTPUT_TRG_SHIFT))&PMU_REG_1P0A_OUTPUT_TRG_MASK)
+#define PMU_REG_1P0A_RSVD0_MASK                  0xE000u
+#define PMU_REG_1P0A_RSVD0_SHIFT                 13
+#define PMU_REG_1P0A_RSVD0(x)                    (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_RSVD0_SHIFT))&PMU_REG_1P0A_RSVD0_MASK)
+#define PMU_REG_1P0A_BO_MASK                     0x10000u
+#define PMU_REG_1P0A_BO_SHIFT                    16
+#define PMU_REG_1P0A_OK_MASK                     0x20000u
+#define PMU_REG_1P0A_OK_SHIFT                    17
+#define PMU_REG_1P0A_ENABLE_WEAK_LINREG_MASK     0x40000u
+#define PMU_REG_1P0A_ENABLE_WEAK_LINREG_SHIFT    18
+#define PMU_REG_1P0A_SELREF_WEAK_LINREG_MASK     0x80000u
+#define PMU_REG_1P0A_SELREF_WEAK_LINREG_SHIFT    19
+#define PMU_REG_1P0A_REG_TEST_MASK               0xF00000u
+#define PMU_REG_1P0A_REG_TEST_SHIFT              20
+#define PMU_REG_1P0A_REG_TEST(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_REG_TEST_SHIFT))&PMU_REG_1P0A_REG_TEST_MASK)
+#define PMU_REG_1P0A_RSVD1_MASK                  0xFF000000u
+#define PMU_REG_1P0A_RSVD1_SHIFT                 24
+#define PMU_REG_1P0A_RSVD1(x)                    (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_RSVD1_SHIFT))&PMU_REG_1P0A_RSVD1_MASK)
+/* REG_1P0A_SET Bit Fields */
+#define PMU_REG_1P0A_SET_ENABLE_LINREG_MASK      0x1u
+#define PMU_REG_1P0A_SET_ENABLE_LINREG_SHIFT     0
+#define PMU_REG_1P0A_SET_ENABLE_BO_MASK          0x2u
+#define PMU_REG_1P0A_SET_ENABLE_BO_SHIFT         1
+#define PMU_REG_1P0A_SET_ENABLE_ILIMIT_MASK      0x4u
+#define PMU_REG_1P0A_SET_ENABLE_ILIMIT_SHIFT     2
+#define PMU_REG_1P0A_SET_ENABLE_PULLDOWN_MASK    0x8u
+#define PMU_REG_1P0A_SET_ENABLE_PULLDOWN_SHIFT   3
+#define PMU_REG_1P0A_SET_BO_OFFSET_MASK          0x70u
+#define PMU_REG_1P0A_SET_BO_OFFSET_SHIFT         4
+#define PMU_REG_1P0A_SET_BO_OFFSET(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_SET_BO_OFFSET_SHIFT))&PMU_REG_1P0A_SET_BO_OFFSET_MASK)
+#define PMU_REG_1P0A_SET_ENABLE_PWRUPLOAD_MASK   0x80u
+#define PMU_REG_1P0A_SET_ENABLE_PWRUPLOAD_SHIFT  7
+#define PMU_REG_1P0A_SET_OUTPUT_TRG_MASK         0x1F00u
+#define PMU_REG_1P0A_SET_OUTPUT_TRG_SHIFT        8
+#define PMU_REG_1P0A_SET_OUTPUT_TRG(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_SET_OUTPUT_TRG_SHIFT))&PMU_REG_1P0A_SET_OUTPUT_TRG_MASK)
+#define PMU_REG_1P0A_SET_RSVD0_MASK              0xE000u
+#define PMU_REG_1P0A_SET_RSVD0_SHIFT             13
+#define PMU_REG_1P0A_SET_RSVD0(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_SET_RSVD0_SHIFT))&PMU_REG_1P0A_SET_RSVD0_MASK)
+#define PMU_REG_1P0A_SET_BO_MASK                 0x10000u
+#define PMU_REG_1P0A_SET_BO_SHIFT                16
+#define PMU_REG_1P0A_SET_OK_MASK                 0x20000u
+#define PMU_REG_1P0A_SET_OK_SHIFT                17
+#define PMU_REG_1P0A_SET_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_1P0A_SET_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_1P0A_SET_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_1P0A_SET_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_1P0A_SET_REG_TEST_MASK           0xF00000u
+#define PMU_REG_1P0A_SET_REG_TEST_SHIFT          20
+#define PMU_REG_1P0A_SET_REG_TEST(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_SET_REG_TEST_SHIFT))&PMU_REG_1P0A_SET_REG_TEST_MASK)
+#define PMU_REG_1P0A_SET_RSVD1_MASK              0xFF000000u
+#define PMU_REG_1P0A_SET_RSVD1_SHIFT             24
+#define PMU_REG_1P0A_SET_RSVD1(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_SET_RSVD1_SHIFT))&PMU_REG_1P0A_SET_RSVD1_MASK)
+/* REG_1P0A_CLR Bit Fields */
+#define PMU_REG_1P0A_CLR_ENABLE_LINREG_MASK      0x1u
+#define PMU_REG_1P0A_CLR_ENABLE_LINREG_SHIFT     0
+#define PMU_REG_1P0A_CLR_ENABLE_BO_MASK          0x2u
+#define PMU_REG_1P0A_CLR_ENABLE_BO_SHIFT         1
+#define PMU_REG_1P0A_CLR_ENABLE_ILIMIT_MASK      0x4u
+#define PMU_REG_1P0A_CLR_ENABLE_ILIMIT_SHIFT     2
+#define PMU_REG_1P0A_CLR_ENABLE_PULLDOWN_MASK    0x8u
+#define PMU_REG_1P0A_CLR_ENABLE_PULLDOWN_SHIFT   3
+#define PMU_REG_1P0A_CLR_BO_OFFSET_MASK          0x70u
+#define PMU_REG_1P0A_CLR_BO_OFFSET_SHIFT         4
+#define PMU_REG_1P0A_CLR_BO_OFFSET(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_CLR_BO_OFFSET_SHIFT))&PMU_REG_1P0A_CLR_BO_OFFSET_MASK)
+#define PMU_REG_1P0A_CLR_ENABLE_PWRUPLOAD_MASK   0x80u
+#define PMU_REG_1P0A_CLR_ENABLE_PWRUPLOAD_SHIFT  7
+#define PMU_REG_1P0A_CLR_OUTPUT_TRG_MASK         0x1F00u
+#define PMU_REG_1P0A_CLR_OUTPUT_TRG_SHIFT        8
+#define PMU_REG_1P0A_CLR_OUTPUT_TRG(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_CLR_OUTPUT_TRG_SHIFT))&PMU_REG_1P0A_CLR_OUTPUT_TRG_MASK)
+#define PMU_REG_1P0A_CLR_RSVD0_MASK              0xE000u
+#define PMU_REG_1P0A_CLR_RSVD0_SHIFT             13
+#define PMU_REG_1P0A_CLR_RSVD0(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_CLR_RSVD0_SHIFT))&PMU_REG_1P0A_CLR_RSVD0_MASK)
+#define PMU_REG_1P0A_CLR_BO_MASK                 0x10000u
+#define PMU_REG_1P0A_CLR_BO_SHIFT                16
+#define PMU_REG_1P0A_CLR_OK_MASK                 0x20000u
+#define PMU_REG_1P0A_CLR_OK_SHIFT                17
+#define PMU_REG_1P0A_CLR_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_1P0A_CLR_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_1P0A_CLR_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_1P0A_CLR_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_1P0A_CLR_REG_TEST_MASK           0xF00000u
+#define PMU_REG_1P0A_CLR_REG_TEST_SHIFT          20
+#define PMU_REG_1P0A_CLR_REG_TEST(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_CLR_REG_TEST_SHIFT))&PMU_REG_1P0A_CLR_REG_TEST_MASK)
+#define PMU_REG_1P0A_CLR_RSVD1_MASK              0xFF000000u
+#define PMU_REG_1P0A_CLR_RSVD1_SHIFT             24
+#define PMU_REG_1P0A_CLR_RSVD1(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_CLR_RSVD1_SHIFT))&PMU_REG_1P0A_CLR_RSVD1_MASK)
+/* REG_1P0A_TOG Bit Fields */
+#define PMU_REG_1P0A_TOG_ENABLE_LINREG_MASK      0x1u
+#define PMU_REG_1P0A_TOG_ENABLE_LINREG_SHIFT     0
+#define PMU_REG_1P0A_TOG_ENABLE_BO_MASK          0x2u
+#define PMU_REG_1P0A_TOG_ENABLE_BO_SHIFT         1
+#define PMU_REG_1P0A_TOG_ENABLE_ILIMIT_MASK      0x4u
+#define PMU_REG_1P0A_TOG_ENABLE_ILIMIT_SHIFT     2
+#define PMU_REG_1P0A_TOG_ENABLE_PULLDOWN_MASK    0x8u
+#define PMU_REG_1P0A_TOG_ENABLE_PULLDOWN_SHIFT   3
+#define PMU_REG_1P0A_TOG_BO_OFFSET_MASK          0x70u
+#define PMU_REG_1P0A_TOG_BO_OFFSET_SHIFT         4
+#define PMU_REG_1P0A_TOG_BO_OFFSET(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_TOG_BO_OFFSET_SHIFT))&PMU_REG_1P0A_TOG_BO_OFFSET_MASK)
+#define PMU_REG_1P0A_TOG_ENABLE_PWRUPLOAD_MASK   0x80u
+#define PMU_REG_1P0A_TOG_ENABLE_PWRUPLOAD_SHIFT  7
+#define PMU_REG_1P0A_TOG_OUTPUT_TRG_MASK         0x1F00u
+#define PMU_REG_1P0A_TOG_OUTPUT_TRG_SHIFT        8
+#define PMU_REG_1P0A_TOG_OUTPUT_TRG(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_TOG_OUTPUT_TRG_SHIFT))&PMU_REG_1P0A_TOG_OUTPUT_TRG_MASK)
+#define PMU_REG_1P0A_TOG_RSVD0_MASK              0xE000u
+#define PMU_REG_1P0A_TOG_RSVD0_SHIFT             13
+#define PMU_REG_1P0A_TOG_RSVD0(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_TOG_RSVD0_SHIFT))&PMU_REG_1P0A_TOG_RSVD0_MASK)
+#define PMU_REG_1P0A_TOG_BO_MASK                 0x10000u
+#define PMU_REG_1P0A_TOG_BO_SHIFT                16
+#define PMU_REG_1P0A_TOG_OK_MASK                 0x20000u
+#define PMU_REG_1P0A_TOG_OK_SHIFT                17
+#define PMU_REG_1P0A_TOG_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_1P0A_TOG_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_1P0A_TOG_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_1P0A_TOG_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_1P0A_TOG_REG_TEST_MASK           0xF00000u
+#define PMU_REG_1P0A_TOG_REG_TEST_SHIFT          20
+#define PMU_REG_1P0A_TOG_REG_TEST(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_TOG_REG_TEST_SHIFT))&PMU_REG_1P0A_TOG_REG_TEST_MASK)
+#define PMU_REG_1P0A_TOG_RSVD1_MASK              0xFF000000u
+#define PMU_REG_1P0A_TOG_RSVD1_SHIFT             24
+#define PMU_REG_1P0A_TOG_RSVD1(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0A_TOG_RSVD1_SHIFT))&PMU_REG_1P0A_TOG_RSVD1_MASK)
+/* REG_1P0D Bit Fields */
+#define PMU_REG_1P0D_ENABLE_LINREG_MASK          0x1u
+#define PMU_REG_1P0D_ENABLE_LINREG_SHIFT         0
+#define PMU_REG_1P0D_ENABLE_BO_MASK              0x2u
+#define PMU_REG_1P0D_ENABLE_BO_SHIFT             1
+#define PMU_REG_1P0D_ENABLE_ILIMIT_MASK          0x4u
+#define PMU_REG_1P0D_ENABLE_ILIMIT_SHIFT         2
+#define PMU_REG_1P0D_ENABLE_PULLDOWN_MASK        0x8u
+#define PMU_REG_1P0D_ENABLE_PULLDOWN_SHIFT       3
+#define PMU_REG_1P0D_BO_OFFSET_MASK              0x70u
+#define PMU_REG_1P0D_BO_OFFSET_SHIFT             4
+#define PMU_REG_1P0D_BO_OFFSET(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_BO_OFFSET_SHIFT))&PMU_REG_1P0D_BO_OFFSET_MASK)
+#define PMU_REG_1P0D_ENABLE_PWRUPLOAD_MASK       0x80u
+#define PMU_REG_1P0D_ENABLE_PWRUPLOAD_SHIFT      7
+#define PMU_REG_1P0D_OUTPUT_TRG_MASK             0x1F00u
+#define PMU_REG_1P0D_OUTPUT_TRG_SHIFT            8
+#define PMU_REG_1P0D_OUTPUT_TRG(x)               (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_OUTPUT_TRG_SHIFT))&PMU_REG_1P0D_OUTPUT_TRG_MASK)
+#define PMU_REG_1P0D_RSVD0_MASK                  0xE000u
+#define PMU_REG_1P0D_RSVD0_SHIFT                 13
+#define PMU_REG_1P0D_RSVD0(x)                    (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_RSVD0_SHIFT))&PMU_REG_1P0D_RSVD0_MASK)
+#define PMU_REG_1P0D_BO_MASK                     0x10000u
+#define PMU_REG_1P0D_BO_SHIFT                    16
+#define PMU_REG_1P0D_OK_MASK                     0x20000u
+#define PMU_REG_1P0D_OK_SHIFT                    17
+#define PMU_REG_1P0D_ENABLE_WEAK_LINREG_MASK     0x40000u
+#define PMU_REG_1P0D_ENABLE_WEAK_LINREG_SHIFT    18
+#define PMU_REG_1P0D_SELREF_WEAK_LINREG_MASK     0x80000u
+#define PMU_REG_1P0D_SELREF_WEAK_LINREG_SHIFT    19
+#define PMU_REG_1P0D_REG_TEST_MASK               0xF00000u
+#define PMU_REG_1P0D_REG_TEST_SHIFT              20
+#define PMU_REG_1P0D_REG_TEST(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_REG_TEST_SHIFT))&PMU_REG_1P0D_REG_TEST_MASK)
+#define PMU_REG_1P0D_RSVD1_MASK                  0x7F000000u
+#define PMU_REG_1P0D_RSVD1_SHIFT                 24
+#define PMU_REG_1P0D_RSVD1(x)                    (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_RSVD1_SHIFT))&PMU_REG_1P0D_RSVD1_MASK)
+#define PMU_REG_1P0D_OVERRIDE_MASK               0x80000000u
+#define PMU_REG_1P0D_OVERRIDE_SHIFT              31
+/* REG_1P0D_SET Bit Fields */
+#define PMU_REG_1P0D_SET_ENABLE_LINREG_MASK      0x1u
+#define PMU_REG_1P0D_SET_ENABLE_LINREG_SHIFT     0
+#define PMU_REG_1P0D_SET_ENABLE_BO_MASK          0x2u
+#define PMU_REG_1P0D_SET_ENABLE_BO_SHIFT         1
+#define PMU_REG_1P0D_SET_ENABLE_ILIMIT_MASK      0x4u
+#define PMU_REG_1P0D_SET_ENABLE_ILIMIT_SHIFT     2
+#define PMU_REG_1P0D_SET_ENABLE_PULLDOWN_MASK    0x8u
+#define PMU_REG_1P0D_SET_ENABLE_PULLDOWN_SHIFT   3
+#define PMU_REG_1P0D_SET_BO_OFFSET_MASK          0x70u
+#define PMU_REG_1P0D_SET_BO_OFFSET_SHIFT         4
+#define PMU_REG_1P0D_SET_BO_OFFSET(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_SET_BO_OFFSET_SHIFT))&PMU_REG_1P0D_SET_BO_OFFSET_MASK)
+#define PMU_REG_1P0D_SET_ENABLE_PWRUPLOAD_MASK   0x80u
+#define PMU_REG_1P0D_SET_ENABLE_PWRUPLOAD_SHIFT  7
+#define PMU_REG_1P0D_SET_OUTPUT_TRG_MASK         0x1F00u
+#define PMU_REG_1P0D_SET_OUTPUT_TRG_SHIFT        8
+#define PMU_REG_1P0D_SET_OUTPUT_TRG(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_SET_OUTPUT_TRG_SHIFT))&PMU_REG_1P0D_SET_OUTPUT_TRG_MASK)
+#define PMU_REG_1P0D_SET_RSVD0_MASK              0xE000u
+#define PMU_REG_1P0D_SET_RSVD0_SHIFT             13
+#define PMU_REG_1P0D_SET_RSVD0(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_SET_RSVD0_SHIFT))&PMU_REG_1P0D_SET_RSVD0_MASK)
+#define PMU_REG_1P0D_SET_BO_MASK                 0x10000u
+#define PMU_REG_1P0D_SET_BO_SHIFT                16
+#define PMU_REG_1P0D_SET_OK_MASK                 0x20000u
+#define PMU_REG_1P0D_SET_OK_SHIFT                17
+#define PMU_REG_1P0D_SET_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_1P0D_SET_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_1P0D_SET_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_1P0D_SET_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_1P0D_SET_REG_TEST_MASK           0xF00000u
+#define PMU_REG_1P0D_SET_REG_TEST_SHIFT          20
+#define PMU_REG_1P0D_SET_REG_TEST(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_SET_REG_TEST_SHIFT))&PMU_REG_1P0D_SET_REG_TEST_MASK)
+#define PMU_REG_1P0D_SET_RSVD1_MASK              0x7F000000u
+#define PMU_REG_1P0D_SET_RSVD1_SHIFT             24
+#define PMU_REG_1P0D_SET_RSVD1(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_SET_RSVD1_SHIFT))&PMU_REG_1P0D_SET_RSVD1_MASK)
+#define PMU_REG_1P0D_SET_OVERRIDE_MASK           0x80000000u
+#define PMU_REG_1P0D_SET_OVERRIDE_SHIFT          31
+/* REG_1P0D_CLR Bit Fields */
+#define PMU_REG_1P0D_CLR_ENABLE_LINREG_MASK      0x1u
+#define PMU_REG_1P0D_CLR_ENABLE_LINREG_SHIFT     0
+#define PMU_REG_1P0D_CLR_ENABLE_BO_MASK          0x2u
+#define PMU_REG_1P0D_CLR_ENABLE_BO_SHIFT         1
+#define PMU_REG_1P0D_CLR_ENABLE_ILIMIT_MASK      0x4u
+#define PMU_REG_1P0D_CLR_ENABLE_ILIMIT_SHIFT     2
+#define PMU_REG_1P0D_CLR_ENABLE_PULLDOWN_MASK    0x8u
+#define PMU_REG_1P0D_CLR_ENABLE_PULLDOWN_SHIFT   3
+#define PMU_REG_1P0D_CLR_BO_OFFSET_MASK          0x70u
+#define PMU_REG_1P0D_CLR_BO_OFFSET_SHIFT         4
+#define PMU_REG_1P0D_CLR_BO_OFFSET(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_CLR_BO_OFFSET_SHIFT))&PMU_REG_1P0D_CLR_BO_OFFSET_MASK)
+#define PMU_REG_1P0D_CLR_ENABLE_PWRUPLOAD_MASK   0x80u
+#define PMU_REG_1P0D_CLR_ENABLE_PWRUPLOAD_SHIFT  7
+#define PMU_REG_1P0D_CLR_OUTPUT_TRG_MASK         0x1F00u
+#define PMU_REG_1P0D_CLR_OUTPUT_TRG_SHIFT        8
+#define PMU_REG_1P0D_CLR_OUTPUT_TRG(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_CLR_OUTPUT_TRG_SHIFT))&PMU_REG_1P0D_CLR_OUTPUT_TRG_MASK)
+#define PMU_REG_1P0D_CLR_RSVD0_MASK              0xE000u
+#define PMU_REG_1P0D_CLR_RSVD0_SHIFT             13
+#define PMU_REG_1P0D_CLR_RSVD0(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_CLR_RSVD0_SHIFT))&PMU_REG_1P0D_CLR_RSVD0_MASK)
+#define PMU_REG_1P0D_CLR_BO_MASK                 0x10000u
+#define PMU_REG_1P0D_CLR_BO_SHIFT                16
+#define PMU_REG_1P0D_CLR_OK_MASK                 0x20000u
+#define PMU_REG_1P0D_CLR_OK_SHIFT                17
+#define PMU_REG_1P0D_CLR_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_1P0D_CLR_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_1P0D_CLR_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_1P0D_CLR_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_1P0D_CLR_REG_TEST_MASK           0xF00000u
+#define PMU_REG_1P0D_CLR_REG_TEST_SHIFT          20
+#define PMU_REG_1P0D_CLR_REG_TEST(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_CLR_REG_TEST_SHIFT))&PMU_REG_1P0D_CLR_REG_TEST_MASK)
+#define PMU_REG_1P0D_CLR_RSVD1_MASK              0x7F000000u
+#define PMU_REG_1P0D_CLR_RSVD1_SHIFT             24
+#define PMU_REG_1P0D_CLR_RSVD1(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_CLR_RSVD1_SHIFT))&PMU_REG_1P0D_CLR_RSVD1_MASK)
+#define PMU_REG_1P0D_CLR_OVERRIDE_MASK           0x80000000u
+#define PMU_REG_1P0D_CLR_OVERRIDE_SHIFT          31
+/* REG_1P0D_TOG Bit Fields */
+#define PMU_REG_1P0D_TOG_ENABLE_LINREG_MASK      0x1u
+#define PMU_REG_1P0D_TOG_ENABLE_LINREG_SHIFT     0
+#define PMU_REG_1P0D_TOG_ENABLE_BO_MASK          0x2u
+#define PMU_REG_1P0D_TOG_ENABLE_BO_SHIFT         1
+#define PMU_REG_1P0D_TOG_ENABLE_ILIMIT_MASK      0x4u
+#define PMU_REG_1P0D_TOG_ENABLE_ILIMIT_SHIFT     2
+#define PMU_REG_1P0D_TOG_ENABLE_PULLDOWN_MASK    0x8u
+#define PMU_REG_1P0D_TOG_ENABLE_PULLDOWN_SHIFT   3
+#define PMU_REG_1P0D_TOG_BO_OFFSET_MASK          0x70u
+#define PMU_REG_1P0D_TOG_BO_OFFSET_SHIFT         4
+#define PMU_REG_1P0D_TOG_BO_OFFSET(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_TOG_BO_OFFSET_SHIFT))&PMU_REG_1P0D_TOG_BO_OFFSET_MASK)
+#define PMU_REG_1P0D_TOG_ENABLE_PWRUPLOAD_MASK   0x80u
+#define PMU_REG_1P0D_TOG_ENABLE_PWRUPLOAD_SHIFT  7
+#define PMU_REG_1P0D_TOG_OUTPUT_TRG_MASK         0x1F00u
+#define PMU_REG_1P0D_TOG_OUTPUT_TRG_SHIFT        8
+#define PMU_REG_1P0D_TOG_OUTPUT_TRG(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_TOG_OUTPUT_TRG_SHIFT))&PMU_REG_1P0D_TOG_OUTPUT_TRG_MASK)
+#define PMU_REG_1P0D_TOG_RSVD0_MASK              0xE000u
+#define PMU_REG_1P0D_TOG_RSVD0_SHIFT             13
+#define PMU_REG_1P0D_TOG_RSVD0(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_TOG_RSVD0_SHIFT))&PMU_REG_1P0D_TOG_RSVD0_MASK)
+#define PMU_REG_1P0D_TOG_BO_MASK                 0x10000u
+#define PMU_REG_1P0D_TOG_BO_SHIFT                16
+#define PMU_REG_1P0D_TOG_OK_MASK                 0x20000u
+#define PMU_REG_1P0D_TOG_OK_SHIFT                17
+#define PMU_REG_1P0D_TOG_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_1P0D_TOG_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_1P0D_TOG_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_1P0D_TOG_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_1P0D_TOG_REG_TEST_MASK           0xF00000u
+#define PMU_REG_1P0D_TOG_REG_TEST_SHIFT          20
+#define PMU_REG_1P0D_TOG_REG_TEST(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_TOG_REG_TEST_SHIFT))&PMU_REG_1P0D_TOG_REG_TEST_MASK)
+#define PMU_REG_1P0D_TOG_RSVD1_MASK              0x7F000000u
+#define PMU_REG_1P0D_TOG_RSVD1_SHIFT             24
+#define PMU_REG_1P0D_TOG_RSVD1(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_1P0D_TOG_RSVD1_SHIFT))&PMU_REG_1P0D_TOG_RSVD1_MASK)
+#define PMU_REG_1P0D_TOG_OVERRIDE_MASK           0x80000000u
+#define PMU_REG_1P0D_TOG_OVERRIDE_SHIFT          31
+/* REG_HSIC_1P2 Bit Fields */
+#define PMU_REG_HSIC_1P2_ENABLE_LINREG_MASK      0x1u
+#define PMU_REG_HSIC_1P2_ENABLE_LINREG_SHIFT     0
+#define PMU_REG_HSIC_1P2_ENABLE_BO_MASK          0x2u
+#define PMU_REG_HSIC_1P2_ENABLE_BO_SHIFT         1
+#define PMU_REG_HSIC_1P2_ENABLE_ILIMIT_MASK      0x4u
+#define PMU_REG_HSIC_1P2_ENABLE_ILIMIT_SHIFT     2
+#define PMU_REG_HSIC_1P2_ENABLE_PULLDOWN_MASK    0x8u
+#define PMU_REG_HSIC_1P2_ENABLE_PULLDOWN_SHIFT   3
+#define PMU_REG_HSIC_1P2_BO_OFFSET_MASK          0x70u
+#define PMU_REG_HSIC_1P2_BO_OFFSET_SHIFT         4
+#define PMU_REG_HSIC_1P2_BO_OFFSET(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_BO_OFFSET_SHIFT))&PMU_REG_HSIC_1P2_BO_OFFSET_MASK)
+#define PMU_REG_HSIC_1P2_ENABLE_PWRUPLOAD_MASK   0x80u
+#define PMU_REG_HSIC_1P2_ENABLE_PWRUPLOAD_SHIFT  7
+#define PMU_REG_HSIC_1P2_OUTPUT_TRG_MASK         0x1F00u
+#define PMU_REG_HSIC_1P2_OUTPUT_TRG_SHIFT        8
+#define PMU_REG_HSIC_1P2_OUTPUT_TRG(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_OUTPUT_TRG_SHIFT))&PMU_REG_HSIC_1P2_OUTPUT_TRG_MASK)
+#define PMU_REG_HSIC_1P2_RSVD0_MASK              0xE000u
+#define PMU_REG_HSIC_1P2_RSVD0_SHIFT             13
+#define PMU_REG_HSIC_1P2_RSVD0(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_RSVD0_SHIFT))&PMU_REG_HSIC_1P2_RSVD0_MASK)
+#define PMU_REG_HSIC_1P2_BO_MASK                 0x10000u
+#define PMU_REG_HSIC_1P2_BO_SHIFT                16
+#define PMU_REG_HSIC_1P2_OK_MASK                 0x20000u
+#define PMU_REG_HSIC_1P2_OK_SHIFT                17
+#define PMU_REG_HSIC_1P2_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_HSIC_1P2_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_HSIC_1P2_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_HSIC_1P2_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_HSIC_1P2_REG_TEST_MASK           0xF00000u
+#define PMU_REG_HSIC_1P2_REG_TEST_SHIFT          20
+#define PMU_REG_HSIC_1P2_REG_TEST(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_REG_TEST_SHIFT))&PMU_REG_HSIC_1P2_REG_TEST_MASK)
+#define PMU_REG_HSIC_1P2_RSVD1_MASK              0x7F000000u
+#define PMU_REG_HSIC_1P2_RSVD1_SHIFT             24
+#define PMU_REG_HSIC_1P2_RSVD1(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_RSVD1_SHIFT))&PMU_REG_HSIC_1P2_RSVD1_MASK)
+#define PMU_REG_HSIC_1P2_OVERRIDE_MASK           0x80000000u
+#define PMU_REG_HSIC_1P2_OVERRIDE_SHIFT          31
+/* REG_HSIC_1P2_SET Bit Fields */
+#define PMU_REG_HSIC_1P2_SET_ENABLE_LINREG_MASK  0x1u
+#define PMU_REG_HSIC_1P2_SET_ENABLE_LINREG_SHIFT 0
+#define PMU_REG_HSIC_1P2_SET_ENABLE_BO_MASK      0x2u
+#define PMU_REG_HSIC_1P2_SET_ENABLE_BO_SHIFT     1
+#define PMU_REG_HSIC_1P2_SET_ENABLE_ILIMIT_MASK  0x4u
+#define PMU_REG_HSIC_1P2_SET_ENABLE_ILIMIT_SHIFT 2
+#define PMU_REG_HSIC_1P2_SET_ENABLE_PULLDOWN_MASK 0x8u
+#define PMU_REG_HSIC_1P2_SET_ENABLE_PULLDOWN_SHIFT 3
+#define PMU_REG_HSIC_1P2_SET_BO_OFFSET_MASK      0x70u
+#define PMU_REG_HSIC_1P2_SET_BO_OFFSET_SHIFT     4
+#define PMU_REG_HSIC_1P2_SET_BO_OFFSET(x)        (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_SET_BO_OFFSET_SHIFT))&PMU_REG_HSIC_1P2_SET_BO_OFFSET_MASK)
+#define PMU_REG_HSIC_1P2_SET_ENABLE_PWRUPLOAD_MASK 0x80u
+#define PMU_REG_HSIC_1P2_SET_ENABLE_PWRUPLOAD_SHIFT 7
+#define PMU_REG_HSIC_1P2_SET_OUTPUT_TRG_MASK     0x1F00u
+#define PMU_REG_HSIC_1P2_SET_OUTPUT_TRG_SHIFT    8
+#define PMU_REG_HSIC_1P2_SET_OUTPUT_TRG(x)       (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_SET_OUTPUT_TRG_SHIFT))&PMU_REG_HSIC_1P2_SET_OUTPUT_TRG_MASK)
+#define PMU_REG_HSIC_1P2_SET_RSVD0_MASK          0xE000u
+#define PMU_REG_HSIC_1P2_SET_RSVD0_SHIFT         13
+#define PMU_REG_HSIC_1P2_SET_RSVD0(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_SET_RSVD0_SHIFT))&PMU_REG_HSIC_1P2_SET_RSVD0_MASK)
+#define PMU_REG_HSIC_1P2_SET_BO_MASK             0x10000u
+#define PMU_REG_HSIC_1P2_SET_BO_SHIFT            16
+#define PMU_REG_HSIC_1P2_SET_OK_MASK             0x20000u
+#define PMU_REG_HSIC_1P2_SET_OK_SHIFT            17
+#define PMU_REG_HSIC_1P2_SET_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_HSIC_1P2_SET_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_HSIC_1P2_SET_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_HSIC_1P2_SET_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_HSIC_1P2_SET_REG_TEST_MASK       0xF00000u
+#define PMU_REG_HSIC_1P2_SET_REG_TEST_SHIFT      20
+#define PMU_REG_HSIC_1P2_SET_REG_TEST(x)         (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_SET_REG_TEST_SHIFT))&PMU_REG_HSIC_1P2_SET_REG_TEST_MASK)
+#define PMU_REG_HSIC_1P2_SET_RSVD1_MASK          0x7F000000u
+#define PMU_REG_HSIC_1P2_SET_RSVD1_SHIFT         24
+#define PMU_REG_HSIC_1P2_SET_RSVD1(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_SET_RSVD1_SHIFT))&PMU_REG_HSIC_1P2_SET_RSVD1_MASK)
+#define PMU_REG_HSIC_1P2_SET_OVERRIDE_MASK       0x80000000u
+#define PMU_REG_HSIC_1P2_SET_OVERRIDE_SHIFT      31
+/* REG_HSIC_1P2_CLR Bit Fields */
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_LINREG_MASK  0x1u
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_LINREG_SHIFT 0
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_BO_MASK      0x2u
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_BO_SHIFT     1
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_ILIMIT_MASK  0x4u
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_ILIMIT_SHIFT 2
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_PULLDOWN_MASK 0x8u
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_PULLDOWN_SHIFT 3
+#define PMU_REG_HSIC_1P2_CLR_BO_OFFSET_MASK      0x70u
+#define PMU_REG_HSIC_1P2_CLR_BO_OFFSET_SHIFT     4
+#define PMU_REG_HSIC_1P2_CLR_BO_OFFSET(x)        (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_CLR_BO_OFFSET_SHIFT))&PMU_REG_HSIC_1P2_CLR_BO_OFFSET_MASK)
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_PWRUPLOAD_MASK 0x80u
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_PWRUPLOAD_SHIFT 7
+#define PMU_REG_HSIC_1P2_CLR_OUTPUT_TRG_MASK     0x1F00u
+#define PMU_REG_HSIC_1P2_CLR_OUTPUT_TRG_SHIFT    8
+#define PMU_REG_HSIC_1P2_CLR_OUTPUT_TRG(x)       (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_CLR_OUTPUT_TRG_SHIFT))&PMU_REG_HSIC_1P2_CLR_OUTPUT_TRG_MASK)
+#define PMU_REG_HSIC_1P2_CLR_RSVD0_MASK          0xE000u
+#define PMU_REG_HSIC_1P2_CLR_RSVD0_SHIFT         13
+#define PMU_REG_HSIC_1P2_CLR_RSVD0(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_CLR_RSVD0_SHIFT))&PMU_REG_HSIC_1P2_CLR_RSVD0_MASK)
+#define PMU_REG_HSIC_1P2_CLR_BO_MASK             0x10000u
+#define PMU_REG_HSIC_1P2_CLR_BO_SHIFT            16
+#define PMU_REG_HSIC_1P2_CLR_OK_MASK             0x20000u
+#define PMU_REG_HSIC_1P2_CLR_OK_SHIFT            17
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_HSIC_1P2_CLR_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_HSIC_1P2_CLR_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_HSIC_1P2_CLR_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_HSIC_1P2_CLR_REG_TEST_MASK       0xF00000u
+#define PMU_REG_HSIC_1P2_CLR_REG_TEST_SHIFT      20
+#define PMU_REG_HSIC_1P2_CLR_REG_TEST(x)         (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_CLR_REG_TEST_SHIFT))&PMU_REG_HSIC_1P2_CLR_REG_TEST_MASK)
+#define PMU_REG_HSIC_1P2_CLR_RSVD1_MASK          0x7F000000u
+#define PMU_REG_HSIC_1P2_CLR_RSVD1_SHIFT         24
+#define PMU_REG_HSIC_1P2_CLR_RSVD1(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_CLR_RSVD1_SHIFT))&PMU_REG_HSIC_1P2_CLR_RSVD1_MASK)
+#define PMU_REG_HSIC_1P2_CLR_OVERRIDE_MASK       0x80000000u
+#define PMU_REG_HSIC_1P2_CLR_OVERRIDE_SHIFT      31
+/* REG_HSIC_1P2_TOG Bit Fields */
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_LINREG_MASK  0x1u
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_LINREG_SHIFT 0
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_BO_MASK      0x2u
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_BO_SHIFT     1
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_ILIMIT_MASK  0x4u
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_ILIMIT_SHIFT 2
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_PULLDOWN_MASK 0x8u
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_PULLDOWN_SHIFT 3
+#define PMU_REG_HSIC_1P2_TOG_BO_OFFSET_MASK      0x70u
+#define PMU_REG_HSIC_1P2_TOG_BO_OFFSET_SHIFT     4
+#define PMU_REG_HSIC_1P2_TOG_BO_OFFSET(x)        (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_TOG_BO_OFFSET_SHIFT))&PMU_REG_HSIC_1P2_TOG_BO_OFFSET_MASK)
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_PWRUPLOAD_MASK 0x80u
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_PWRUPLOAD_SHIFT 7
+#define PMU_REG_HSIC_1P2_TOG_OUTPUT_TRG_MASK     0x1F00u
+#define PMU_REG_HSIC_1P2_TOG_OUTPUT_TRG_SHIFT    8
+#define PMU_REG_HSIC_1P2_TOG_OUTPUT_TRG(x)       (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_TOG_OUTPUT_TRG_SHIFT))&PMU_REG_HSIC_1P2_TOG_OUTPUT_TRG_MASK)
+#define PMU_REG_HSIC_1P2_TOG_RSVD0_MASK          0xE000u
+#define PMU_REG_HSIC_1P2_TOG_RSVD0_SHIFT         13
+#define PMU_REG_HSIC_1P2_TOG_RSVD0(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_TOG_RSVD0_SHIFT))&PMU_REG_HSIC_1P2_TOG_RSVD0_MASK)
+#define PMU_REG_HSIC_1P2_TOG_BO_MASK             0x10000u
+#define PMU_REG_HSIC_1P2_TOG_BO_SHIFT            16
+#define PMU_REG_HSIC_1P2_TOG_OK_MASK             0x20000u
+#define PMU_REG_HSIC_1P2_TOG_OK_SHIFT            17
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_HSIC_1P2_TOG_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_HSIC_1P2_TOG_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_HSIC_1P2_TOG_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_HSIC_1P2_TOG_REG_TEST_MASK       0xF00000u
+#define PMU_REG_HSIC_1P2_TOG_REG_TEST_SHIFT      20
+#define PMU_REG_HSIC_1P2_TOG_REG_TEST(x)         (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_TOG_REG_TEST_SHIFT))&PMU_REG_HSIC_1P2_TOG_REG_TEST_MASK)
+#define PMU_REG_HSIC_1P2_TOG_RSVD1_MASK          0x7F000000u
+#define PMU_REG_HSIC_1P2_TOG_RSVD1_SHIFT         24
+#define PMU_REG_HSIC_1P2_TOG_RSVD1(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_HSIC_1P2_TOG_RSVD1_SHIFT))&PMU_REG_HSIC_1P2_TOG_RSVD1_MASK)
+#define PMU_REG_HSIC_1P2_TOG_OVERRIDE_MASK       0x80000000u
+#define PMU_REG_HSIC_1P2_TOG_OVERRIDE_SHIFT      31
+/* REG_LPSR_1P0 Bit Fields */
+#define PMU_REG_LPSR_1P0_ENABLE_LINREG_MASK      0x1u
+#define PMU_REG_LPSR_1P0_ENABLE_LINREG_SHIFT     0
+#define PMU_REG_LPSR_1P0_ENABLE_BO_MASK          0x2u
+#define PMU_REG_LPSR_1P0_ENABLE_BO_SHIFT         1
+#define PMU_REG_LPSR_1P0_ENABLE_ILIMIT_MASK      0x4u
+#define PMU_REG_LPSR_1P0_ENABLE_ILIMIT_SHIFT     2
+#define PMU_REG_LPSR_1P0_ENABLE_PULLDOWN_MASK    0x8u
+#define PMU_REG_LPSR_1P0_ENABLE_PULLDOWN_SHIFT   3
+#define PMU_REG_LPSR_1P0_BO_OFFSET_MASK          0x70u
+#define PMU_REG_LPSR_1P0_BO_OFFSET_SHIFT         4
+#define PMU_REG_LPSR_1P0_BO_OFFSET(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_BO_OFFSET_SHIFT))&PMU_REG_LPSR_1P0_BO_OFFSET_MASK)
+#define PMU_REG_LPSR_1P0_ENABLE_PWRUPLOAD_MASK   0x80u
+#define PMU_REG_LPSR_1P0_ENABLE_PWRUPLOAD_SHIFT  7
+#define PMU_REG_LPSR_1P0_OUTPUT_TRG_MASK         0x1F00u
+#define PMU_REG_LPSR_1P0_OUTPUT_TRG_SHIFT        8
+#define PMU_REG_LPSR_1P0_OUTPUT_TRG(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_OUTPUT_TRG_SHIFT))&PMU_REG_LPSR_1P0_OUTPUT_TRG_MASK)
+#define PMU_REG_LPSR_1P0_RSVD0_MASK              0xE000u
+#define PMU_REG_LPSR_1P0_RSVD0_SHIFT             13
+#define PMU_REG_LPSR_1P0_RSVD0(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_RSVD0_SHIFT))&PMU_REG_LPSR_1P0_RSVD0_MASK)
+#define PMU_REG_LPSR_1P0_BO_MASK                 0x10000u
+#define PMU_REG_LPSR_1P0_BO_SHIFT                16
+#define PMU_REG_LPSR_1P0_OK_MASK                 0x20000u
+#define PMU_REG_LPSR_1P0_OK_SHIFT                17
+#define PMU_REG_LPSR_1P0_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_LPSR_1P0_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_LPSR_1P0_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_LPSR_1P0_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_LPSR_1P0_REG_TEST_MASK           0xF00000u
+#define PMU_REG_LPSR_1P0_REG_TEST_SHIFT          20
+#define PMU_REG_LPSR_1P0_REG_TEST(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_REG_TEST_SHIFT))&PMU_REG_LPSR_1P0_REG_TEST_MASK)
+#define PMU_REG_LPSR_1P0_RSVD1_MASK              0xFF000000u
+#define PMU_REG_LPSR_1P0_RSVD1_SHIFT             24
+#define PMU_REG_LPSR_1P0_RSVD1(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_RSVD1_SHIFT))&PMU_REG_LPSR_1P0_RSVD1_MASK)
+/* REG_LPSR_1P0_SET Bit Fields */
+#define PMU_REG_LPSR_1P0_SET_ENABLE_LINREG_MASK  0x1u
+#define PMU_REG_LPSR_1P0_SET_ENABLE_LINREG_SHIFT 0
+#define PMU_REG_LPSR_1P0_SET_ENABLE_BO_MASK      0x2u
+#define PMU_REG_LPSR_1P0_SET_ENABLE_BO_SHIFT     1
+#define PMU_REG_LPSR_1P0_SET_ENABLE_ILIMIT_MASK  0x4u
+#define PMU_REG_LPSR_1P0_SET_ENABLE_ILIMIT_SHIFT 2
+#define PMU_REG_LPSR_1P0_SET_ENABLE_PULLDOWN_MASK 0x8u
+#define PMU_REG_LPSR_1P0_SET_ENABLE_PULLDOWN_SHIFT 3
+#define PMU_REG_LPSR_1P0_SET_BO_OFFSET_MASK      0x70u
+#define PMU_REG_LPSR_1P0_SET_BO_OFFSET_SHIFT     4
+#define PMU_REG_LPSR_1P0_SET_BO_OFFSET(x)        (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_SET_BO_OFFSET_SHIFT))&PMU_REG_LPSR_1P0_SET_BO_OFFSET_MASK)
+#define PMU_REG_LPSR_1P0_SET_ENABLE_PWRUPLOAD_MASK 0x80u
+#define PMU_REG_LPSR_1P0_SET_ENABLE_PWRUPLOAD_SHIFT 7
+#define PMU_REG_LPSR_1P0_SET_OUTPUT_TRG_MASK     0x1F00u
+#define PMU_REG_LPSR_1P0_SET_OUTPUT_TRG_SHIFT    8
+#define PMU_REG_LPSR_1P0_SET_OUTPUT_TRG(x)       (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_SET_OUTPUT_TRG_SHIFT))&PMU_REG_LPSR_1P0_SET_OUTPUT_TRG_MASK)
+#define PMU_REG_LPSR_1P0_SET_RSVD0_MASK          0xE000u
+#define PMU_REG_LPSR_1P0_SET_RSVD0_SHIFT         13
+#define PMU_REG_LPSR_1P0_SET_RSVD0(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_SET_RSVD0_SHIFT))&PMU_REG_LPSR_1P0_SET_RSVD0_MASK)
+#define PMU_REG_LPSR_1P0_SET_BO_MASK             0x10000u
+#define PMU_REG_LPSR_1P0_SET_BO_SHIFT            16
+#define PMU_REG_LPSR_1P0_SET_OK_MASK             0x20000u
+#define PMU_REG_LPSR_1P0_SET_OK_SHIFT            17
+#define PMU_REG_LPSR_1P0_SET_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_LPSR_1P0_SET_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_LPSR_1P0_SET_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_LPSR_1P0_SET_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_LPSR_1P0_SET_REG_TEST_MASK       0xF00000u
+#define PMU_REG_LPSR_1P0_SET_REG_TEST_SHIFT      20
+#define PMU_REG_LPSR_1P0_SET_REG_TEST(x)         (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_SET_REG_TEST_SHIFT))&PMU_REG_LPSR_1P0_SET_REG_TEST_MASK)
+#define PMU_REG_LPSR_1P0_SET_RSVD1_MASK          0xFF000000u
+#define PMU_REG_LPSR_1P0_SET_RSVD1_SHIFT         24
+#define PMU_REG_LPSR_1P0_SET_RSVD1(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_SET_RSVD1_SHIFT))&PMU_REG_LPSR_1P0_SET_RSVD1_MASK)
+/* REG_LPSR_1P0_CLR Bit Fields */
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_LINREG_MASK  0x1u
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_LINREG_SHIFT 0
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_BO_MASK      0x2u
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_BO_SHIFT     1
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_ILIMIT_MASK  0x4u
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_ILIMIT_SHIFT 2
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_PULLDOWN_MASK 0x8u
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_PULLDOWN_SHIFT 3
+#define PMU_REG_LPSR_1P0_CLR_BO_OFFSET_MASK      0x70u
+#define PMU_REG_LPSR_1P0_CLR_BO_OFFSET_SHIFT     4
+#define PMU_REG_LPSR_1P0_CLR_BO_OFFSET(x)        (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_CLR_BO_OFFSET_SHIFT))&PMU_REG_LPSR_1P0_CLR_BO_OFFSET_MASK)
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_PWRUPLOAD_MASK 0x80u
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_PWRUPLOAD_SHIFT 7
+#define PMU_REG_LPSR_1P0_CLR_OUTPUT_TRG_MASK     0x1F00u
+#define PMU_REG_LPSR_1P0_CLR_OUTPUT_TRG_SHIFT    8
+#define PMU_REG_LPSR_1P0_CLR_OUTPUT_TRG(x)       (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_CLR_OUTPUT_TRG_SHIFT))&PMU_REG_LPSR_1P0_CLR_OUTPUT_TRG_MASK)
+#define PMU_REG_LPSR_1P0_CLR_RSVD0_MASK          0xE000u
+#define PMU_REG_LPSR_1P0_CLR_RSVD0_SHIFT         13
+#define PMU_REG_LPSR_1P0_CLR_RSVD0(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_CLR_RSVD0_SHIFT))&PMU_REG_LPSR_1P0_CLR_RSVD0_MASK)
+#define PMU_REG_LPSR_1P0_CLR_BO_MASK             0x10000u
+#define PMU_REG_LPSR_1P0_CLR_BO_SHIFT            16
+#define PMU_REG_LPSR_1P0_CLR_OK_MASK             0x20000u
+#define PMU_REG_LPSR_1P0_CLR_OK_SHIFT            17
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_LPSR_1P0_CLR_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_LPSR_1P0_CLR_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_LPSR_1P0_CLR_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_LPSR_1P0_CLR_REG_TEST_MASK       0xF00000u
+#define PMU_REG_LPSR_1P0_CLR_REG_TEST_SHIFT      20
+#define PMU_REG_LPSR_1P0_CLR_REG_TEST(x)         (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_CLR_REG_TEST_SHIFT))&PMU_REG_LPSR_1P0_CLR_REG_TEST_MASK)
+#define PMU_REG_LPSR_1P0_CLR_RSVD1_MASK          0xFF000000u
+#define PMU_REG_LPSR_1P0_CLR_RSVD1_SHIFT         24
+#define PMU_REG_LPSR_1P0_CLR_RSVD1(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_CLR_RSVD1_SHIFT))&PMU_REG_LPSR_1P0_CLR_RSVD1_MASK)
+/* REG_LPSR_1P0_TOG Bit Fields */
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_LINREG_MASK  0x1u
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_LINREG_SHIFT 0
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_BO_MASK      0x2u
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_BO_SHIFT     1
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_ILIMIT_MASK  0x4u
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_ILIMIT_SHIFT 2
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_PULLDOWN_MASK 0x8u
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_PULLDOWN_SHIFT 3
+#define PMU_REG_LPSR_1P0_TOG_BO_OFFSET_MASK      0x70u
+#define PMU_REG_LPSR_1P0_TOG_BO_OFFSET_SHIFT     4
+#define PMU_REG_LPSR_1P0_TOG_BO_OFFSET(x)        (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_TOG_BO_OFFSET_SHIFT))&PMU_REG_LPSR_1P0_TOG_BO_OFFSET_MASK)
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_PWRUPLOAD_MASK 0x80u
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_PWRUPLOAD_SHIFT 7
+#define PMU_REG_LPSR_1P0_TOG_OUTPUT_TRG_MASK     0x1F00u
+#define PMU_REG_LPSR_1P0_TOG_OUTPUT_TRG_SHIFT    8
+#define PMU_REG_LPSR_1P0_TOG_OUTPUT_TRG(x)       (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_TOG_OUTPUT_TRG_SHIFT))&PMU_REG_LPSR_1P0_TOG_OUTPUT_TRG_MASK)
+#define PMU_REG_LPSR_1P0_TOG_RSVD0_MASK          0xE000u
+#define PMU_REG_LPSR_1P0_TOG_RSVD0_SHIFT         13
+#define PMU_REG_LPSR_1P0_TOG_RSVD0(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_TOG_RSVD0_SHIFT))&PMU_REG_LPSR_1P0_TOG_RSVD0_MASK)
+#define PMU_REG_LPSR_1P0_TOG_BO_MASK             0x10000u
+#define PMU_REG_LPSR_1P0_TOG_BO_SHIFT            16
+#define PMU_REG_LPSR_1P0_TOG_OK_MASK             0x20000u
+#define PMU_REG_LPSR_1P0_TOG_OK_SHIFT            17
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_WEAK_LINREG_MASK 0x40000u
+#define PMU_REG_LPSR_1P0_TOG_ENABLE_WEAK_LINREG_SHIFT 18
+#define PMU_REG_LPSR_1P0_TOG_SELREF_WEAK_LINREG_MASK 0x80000u
+#define PMU_REG_LPSR_1P0_TOG_SELREF_WEAK_LINREG_SHIFT 19
+#define PMU_REG_LPSR_1P0_TOG_REG_TEST_MASK       0xF00000u
+#define PMU_REG_LPSR_1P0_TOG_REG_TEST_SHIFT      20
+#define PMU_REG_LPSR_1P0_TOG_REG_TEST(x)         (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_TOG_REG_TEST_SHIFT))&PMU_REG_LPSR_1P0_TOG_REG_TEST_MASK)
+#define PMU_REG_LPSR_1P0_TOG_RSVD1_MASK          0xFF000000u
+#define PMU_REG_LPSR_1P0_TOG_RSVD1_SHIFT         24
+#define PMU_REG_LPSR_1P0_TOG_RSVD1(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_LPSR_1P0_TOG_RSVD1_SHIFT))&PMU_REG_LPSR_1P0_TOG_RSVD1_MASK)
+/* REG_3P0 Bit Fields */
+#define PMU_REG_3P0_ENABLE_LINREG_MASK           0x1u
+#define PMU_REG_3P0_ENABLE_LINREG_SHIFT          0
+#define PMU_REG_3P0_ENABLE_BO_MASK               0x2u
+#define PMU_REG_3P0_ENABLE_BO_SHIFT              1
+#define PMU_REG_3P0_ENABLE_ILIMIT_MASK           0x4u
+#define PMU_REG_3P0_ENABLE_ILIMIT_SHIFT          2
+#define PMU_REG_3P0_RSVD0_MASK                   0x8u
+#define PMU_REG_3P0_RSVD0_SHIFT                  3
+#define PMU_REG_3P0_BO_OFFSET_MASK               0x70u
+#define PMU_REG_3P0_BO_OFFSET_SHIFT              4
+#define PMU_REG_3P0_BO_OFFSET(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_BO_OFFSET_SHIFT))&PMU_REG_3P0_BO_OFFSET_MASK)
+#define PMU_REG_3P0_VBUS_SEL_MASK                0x80u
+#define PMU_REG_3P0_VBUS_SEL_SHIFT               7
+#define PMU_REG_3P0_OUTPUT_TRG_MASK              0x1F00u
+#define PMU_REG_3P0_OUTPUT_TRG_SHIFT             8
+#define PMU_REG_3P0_OUTPUT_TRG(x)                (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_OUTPUT_TRG_SHIFT))&PMU_REG_3P0_OUTPUT_TRG_MASK)
+#define PMU_REG_3P0_RSVD1_MASK                   0xE000u
+#define PMU_REG_3P0_RSVD1_SHIFT                  13
+#define PMU_REG_3P0_RSVD1(x)                     (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_RSVD1_SHIFT))&PMU_REG_3P0_RSVD1_MASK)
+#define PMU_REG_3P0_BO_VDD3P0_MASK               0x10000u
+#define PMU_REG_3P0_BO_VDD3P0_SHIFT              16
+#define PMU_REG_3P0_OK_VDD3P0_MASK               0x20000u
+#define PMU_REG_3P0_OK_VDD3P0_SHIFT              17
+#define PMU_REG_3P0_REG_TEST_MASK                0x3C0000u
+#define PMU_REG_3P0_REG_TEST_SHIFT               18
+#define PMU_REG_3P0_REG_TEST(x)                  (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_REG_TEST_SHIFT))&PMU_REG_3P0_REG_TEST_MASK)
+#define PMU_REG_3P0_RSVD2_MASK                   0xFFC00000u
+#define PMU_REG_3P0_RSVD2_SHIFT                  22
+#define PMU_REG_3P0_RSVD2(x)                     (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_RSVD2_SHIFT))&PMU_REG_3P0_RSVD2_MASK)
+/* REG_3P0_SET Bit Fields */
+#define PMU_REG_3P0_SET_ENABLE_LINREG_MASK       0x1u
+#define PMU_REG_3P0_SET_ENABLE_LINREG_SHIFT      0
+#define PMU_REG_3P0_SET_ENABLE_BO_MASK           0x2u
+#define PMU_REG_3P0_SET_ENABLE_BO_SHIFT          1
+#define PMU_REG_3P0_SET_ENABLE_ILIMIT_MASK       0x4u
+#define PMU_REG_3P0_SET_ENABLE_ILIMIT_SHIFT      2
+#define PMU_REG_3P0_SET_RSVD0_MASK               0x8u
+#define PMU_REG_3P0_SET_RSVD0_SHIFT              3
+#define PMU_REG_3P0_SET_BO_OFFSET_MASK           0x70u
+#define PMU_REG_3P0_SET_BO_OFFSET_SHIFT          4
+#define PMU_REG_3P0_SET_BO_OFFSET(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_SET_BO_OFFSET_SHIFT))&PMU_REG_3P0_SET_BO_OFFSET_MASK)
+#define PMU_REG_3P0_SET_VBUS_SEL_MASK            0x80u
+#define PMU_REG_3P0_SET_VBUS_SEL_SHIFT           7
+#define PMU_REG_3P0_SET_OUTPUT_TRG_MASK          0x1F00u
+#define PMU_REG_3P0_SET_OUTPUT_TRG_SHIFT         8
+#define PMU_REG_3P0_SET_OUTPUT_TRG(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_SET_OUTPUT_TRG_SHIFT))&PMU_REG_3P0_SET_OUTPUT_TRG_MASK)
+#define PMU_REG_3P0_SET_RSVD1_MASK               0xE000u
+#define PMU_REG_3P0_SET_RSVD1_SHIFT              13
+#define PMU_REG_3P0_SET_RSVD1(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_SET_RSVD1_SHIFT))&PMU_REG_3P0_SET_RSVD1_MASK)
+#define PMU_REG_3P0_SET_BO_VDD3P0_MASK           0x10000u
+#define PMU_REG_3P0_SET_BO_VDD3P0_SHIFT          16
+#define PMU_REG_3P0_SET_OK_VDD3P0_MASK           0x20000u
+#define PMU_REG_3P0_SET_OK_VDD3P0_SHIFT          17
+#define PMU_REG_3P0_SET_REG_TEST_MASK            0x3C0000u
+#define PMU_REG_3P0_SET_REG_TEST_SHIFT           18
+#define PMU_REG_3P0_SET_REG_TEST(x)              (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_SET_REG_TEST_SHIFT))&PMU_REG_3P0_SET_REG_TEST_MASK)
+#define PMU_REG_3P0_SET_RSVD2_MASK               0xFFC00000u
+#define PMU_REG_3P0_SET_RSVD2_SHIFT              22
+#define PMU_REG_3P0_SET_RSVD2(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_SET_RSVD2_SHIFT))&PMU_REG_3P0_SET_RSVD2_MASK)
+/* REG_3P0_CLR Bit Fields */
+#define PMU_REG_3P0_CLR_ENABLE_LINREG_MASK       0x1u
+#define PMU_REG_3P0_CLR_ENABLE_LINREG_SHIFT      0
+#define PMU_REG_3P0_CLR_ENABLE_BO_MASK           0x2u
+#define PMU_REG_3P0_CLR_ENABLE_BO_SHIFT          1
+#define PMU_REG_3P0_CLR_ENABLE_ILIMIT_MASK       0x4u
+#define PMU_REG_3P0_CLR_ENABLE_ILIMIT_SHIFT      2
+#define PMU_REG_3P0_CLR_RSVD0_MASK               0x8u
+#define PMU_REG_3P0_CLR_RSVD0_SHIFT              3
+#define PMU_REG_3P0_CLR_BO_OFFSET_MASK           0x70u
+#define PMU_REG_3P0_CLR_BO_OFFSET_SHIFT          4
+#define PMU_REG_3P0_CLR_BO_OFFSET(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_CLR_BO_OFFSET_SHIFT))&PMU_REG_3P0_CLR_BO_OFFSET_MASK)
+#define PMU_REG_3P0_CLR_VBUS_SEL_MASK            0x80u
+#define PMU_REG_3P0_CLR_VBUS_SEL_SHIFT           7
+#define PMU_REG_3P0_CLR_OUTPUT_TRG_MASK          0x1F00u
+#define PMU_REG_3P0_CLR_OUTPUT_TRG_SHIFT         8
+#define PMU_REG_3P0_CLR_OUTPUT_TRG(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_CLR_OUTPUT_TRG_SHIFT))&PMU_REG_3P0_CLR_OUTPUT_TRG_MASK)
+#define PMU_REG_3P0_CLR_RSVD1_MASK               0xE000u
+#define PMU_REG_3P0_CLR_RSVD1_SHIFT              13
+#define PMU_REG_3P0_CLR_RSVD1(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_CLR_RSVD1_SHIFT))&PMU_REG_3P0_CLR_RSVD1_MASK)
+#define PMU_REG_3P0_CLR_BO_VDD3P0_MASK           0x10000u
+#define PMU_REG_3P0_CLR_BO_VDD3P0_SHIFT          16
+#define PMU_REG_3P0_CLR_OK_VDD3P0_MASK           0x20000u
+#define PMU_REG_3P0_CLR_OK_VDD3P0_SHIFT          17
+#define PMU_REG_3P0_CLR_REG_TEST_MASK            0x3C0000u
+#define PMU_REG_3P0_CLR_REG_TEST_SHIFT           18
+#define PMU_REG_3P0_CLR_REG_TEST(x)              (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_CLR_REG_TEST_SHIFT))&PMU_REG_3P0_CLR_REG_TEST_MASK)
+#define PMU_REG_3P0_CLR_RSVD2_MASK               0xFFC00000u
+#define PMU_REG_3P0_CLR_RSVD2_SHIFT              22
+#define PMU_REG_3P0_CLR_RSVD2(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_CLR_RSVD2_SHIFT))&PMU_REG_3P0_CLR_RSVD2_MASK)
+/* REG_3P0_TOG Bit Fields */
+#define PMU_REG_3P0_TOG_ENABLE_LINREG_MASK       0x1u
+#define PMU_REG_3P0_TOG_ENABLE_LINREG_SHIFT      0
+#define PMU_REG_3P0_TOG_ENABLE_BO_MASK           0x2u
+#define PMU_REG_3P0_TOG_ENABLE_BO_SHIFT          1
+#define PMU_REG_3P0_TOG_ENABLE_ILIMIT_MASK       0x4u
+#define PMU_REG_3P0_TOG_ENABLE_ILIMIT_SHIFT      2
+#define PMU_REG_3P0_TOG_RSVD0_MASK               0x8u
+#define PMU_REG_3P0_TOG_RSVD0_SHIFT              3
+#define PMU_REG_3P0_TOG_BO_OFFSET_MASK           0x70u
+#define PMU_REG_3P0_TOG_BO_OFFSET_SHIFT          4
+#define PMU_REG_3P0_TOG_BO_OFFSET(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_TOG_BO_OFFSET_SHIFT))&PMU_REG_3P0_TOG_BO_OFFSET_MASK)
+#define PMU_REG_3P0_TOG_VBUS_SEL_MASK            0x80u
+#define PMU_REG_3P0_TOG_VBUS_SEL_SHIFT           7
+#define PMU_REG_3P0_TOG_OUTPUT_TRG_MASK          0x1F00u
+#define PMU_REG_3P0_TOG_OUTPUT_TRG_SHIFT         8
+#define PMU_REG_3P0_TOG_OUTPUT_TRG(x)            (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_TOG_OUTPUT_TRG_SHIFT))&PMU_REG_3P0_TOG_OUTPUT_TRG_MASK)
+#define PMU_REG_3P0_TOG_RSVD1_MASK               0xE000u
+#define PMU_REG_3P0_TOG_RSVD1_SHIFT              13
+#define PMU_REG_3P0_TOG_RSVD1(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_TOG_RSVD1_SHIFT))&PMU_REG_3P0_TOG_RSVD1_MASK)
+#define PMU_REG_3P0_TOG_BO_VDD3P0_MASK           0x10000u
+#define PMU_REG_3P0_TOG_BO_VDD3P0_SHIFT          16
+#define PMU_REG_3P0_TOG_OK_VDD3P0_MASK           0x20000u
+#define PMU_REG_3P0_TOG_OK_VDD3P0_SHIFT          17
+#define PMU_REG_3P0_TOG_REG_TEST_MASK            0x3C0000u
+#define PMU_REG_3P0_TOG_REG_TEST_SHIFT           18
+#define PMU_REG_3P0_TOG_REG_TEST(x)              (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_TOG_REG_TEST_SHIFT))&PMU_REG_3P0_TOG_REG_TEST_MASK)
+#define PMU_REG_3P0_TOG_RSVD2_MASK               0xFFC00000u
+#define PMU_REG_3P0_TOG_RSVD2_SHIFT              22
+#define PMU_REG_3P0_TOG_RSVD2(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REG_3P0_TOG_RSVD2_SHIFT))&PMU_REG_3P0_TOG_RSVD2_MASK)
+/* REF Bit Fields */
+#define PMU_REF_REFTOP_PWD_MASK                  0x1u
+#define PMU_REF_REFTOP_PWD_SHIFT                 0
+#define PMU_REF_REFTOP_PWDVBGUP_MASK             0x2u
+#define PMU_REF_REFTOP_PWDVBGUP_SHIFT            1
+#define PMU_REF_REFTOP_LOWPOWER_MASK             0x4u
+#define PMU_REF_REFTOP_LOWPOWER_SHIFT            2
+#define PMU_REF_REFTOP_SELFBIASOFF_MASK          0x8u
+#define PMU_REF_REFTOP_SELFBIASOFF_SHIFT         3
+#define PMU_REF_REFTOP_VBGADJ_MASK               0x70u
+#define PMU_REF_REFTOP_VBGADJ_SHIFT              4
+#define PMU_REF_REFTOP_VBGADJ(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_REF_REFTOP_VBGADJ_SHIFT))&PMU_REF_REFTOP_VBGADJ_MASK)
+#define PMU_REF_REFTOP_VBGUP_MASK                0x80u
+#define PMU_REF_REFTOP_VBGUP_SHIFT               7
+#define PMU_REF_REFTOP_BIAS_TST_MASK             0x300u
+#define PMU_REF_REFTOP_BIAS_TST_SHIFT            8
+#define PMU_REF_REFTOP_BIAS_TST(x)               (((uint32_t)(((uint32_t)(x))<<PMU_REF_REFTOP_BIAS_TST_SHIFT))&PMU_REF_REFTOP_BIAS_TST_MASK)
+#define PMU_REF_LPBG_SEL_MASK                    0x400u
+#define PMU_REF_LPBG_SEL_SHIFT                   10
+#define PMU_REF_LPBG_TEST_MASK                   0x800u
+#define PMU_REF_LPBG_TEST_SHIFT                  11
+#define PMU_REF_REFTOP_IBIAS_OFF_MASK            0x1000u
+#define PMU_REF_REFTOP_IBIAS_OFF_SHIFT           12
+#define PMU_REF_REFTOP_LINREGREF_EN_MASK         0x2000u
+#define PMU_REF_REFTOP_LINREGREF_EN_SHIFT        13
+#define PMU_REF_RSVD1_MASK                       0xFFFFC000u
+#define PMU_REF_RSVD1_SHIFT                      14
+#define PMU_REF_RSVD1(x)                         (((uint32_t)(((uint32_t)(x))<<PMU_REF_RSVD1_SHIFT))&PMU_REF_RSVD1_MASK)
+/* REF_SET Bit Fields */
+#define PMU_REF_SET_REFTOP_PWD_MASK              0x1u
+#define PMU_REF_SET_REFTOP_PWD_SHIFT             0
+#define PMU_REF_SET_REFTOP_PWDVBGUP_MASK         0x2u
+#define PMU_REF_SET_REFTOP_PWDVBGUP_SHIFT        1
+#define PMU_REF_SET_REFTOP_LOWPOWER_MASK         0x4u
+#define PMU_REF_SET_REFTOP_LOWPOWER_SHIFT        2
+#define PMU_REF_SET_REFTOP_SELFBIASOFF_MASK      0x8u
+#define PMU_REF_SET_REFTOP_SELFBIASOFF_SHIFT     3
+#define PMU_REF_SET_REFTOP_VBGADJ_MASK           0x70u
+#define PMU_REF_SET_REFTOP_VBGADJ_SHIFT          4
+#define PMU_REF_SET_REFTOP_VBGADJ(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REF_SET_REFTOP_VBGADJ_SHIFT))&PMU_REF_SET_REFTOP_VBGADJ_MASK)
+#define PMU_REF_SET_REFTOP_VBGUP_MASK            0x80u
+#define PMU_REF_SET_REFTOP_VBGUP_SHIFT           7
+#define PMU_REF_SET_REFTOP_BIAS_TST_MASK         0x300u
+#define PMU_REF_SET_REFTOP_BIAS_TST_SHIFT        8
+#define PMU_REF_SET_REFTOP_BIAS_TST(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REF_SET_REFTOP_BIAS_TST_SHIFT))&PMU_REF_SET_REFTOP_BIAS_TST_MASK)
+#define PMU_REF_SET_LPBG_SEL_MASK                0x400u
+#define PMU_REF_SET_LPBG_SEL_SHIFT               10
+#define PMU_REF_SET_LPBG_TEST_MASK               0x800u
+#define PMU_REF_SET_LPBG_TEST_SHIFT              11
+#define PMU_REF_SET_REFTOP_IBIAS_OFF_MASK        0x1000u
+#define PMU_REF_SET_REFTOP_IBIAS_OFF_SHIFT       12
+#define PMU_REF_SET_REFTOP_LINREGREF_EN_MASK     0x2000u
+#define PMU_REF_SET_REFTOP_LINREGREF_EN_SHIFT    13
+#define PMU_REF_SET_RSVD1_MASK                   0xFFFFC000u
+#define PMU_REF_SET_RSVD1_SHIFT                  14
+#define PMU_REF_SET_RSVD1(x)                     (((uint32_t)(((uint32_t)(x))<<PMU_REF_SET_RSVD1_SHIFT))&PMU_REF_SET_RSVD1_MASK)
+/* REF_CLR Bit Fields */
+#define PMU_REF_CLR_REFTOP_PWD_MASK              0x1u
+#define PMU_REF_CLR_REFTOP_PWD_SHIFT             0
+#define PMU_REF_CLR_REFTOP_PWDVBGUP_MASK         0x2u
+#define PMU_REF_CLR_REFTOP_PWDVBGUP_SHIFT        1
+#define PMU_REF_CLR_REFTOP_LOWPOWER_MASK         0x4u
+#define PMU_REF_CLR_REFTOP_LOWPOWER_SHIFT        2
+#define PMU_REF_CLR_REFTOP_SELFBIASOFF_MASK      0x8u
+#define PMU_REF_CLR_REFTOP_SELFBIASOFF_SHIFT     3
+#define PMU_REF_CLR_REFTOP_VBGADJ_MASK           0x70u
+#define PMU_REF_CLR_REFTOP_VBGADJ_SHIFT          4
+#define PMU_REF_CLR_REFTOP_VBGADJ(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REF_CLR_REFTOP_VBGADJ_SHIFT))&PMU_REF_CLR_REFTOP_VBGADJ_MASK)
+#define PMU_REF_CLR_REFTOP_VBGUP_MASK            0x80u
+#define PMU_REF_CLR_REFTOP_VBGUP_SHIFT           7
+#define PMU_REF_CLR_REFTOP_BIAS_TST_MASK         0x300u
+#define PMU_REF_CLR_REFTOP_BIAS_TST_SHIFT        8
+#define PMU_REF_CLR_REFTOP_BIAS_TST(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REF_CLR_REFTOP_BIAS_TST_SHIFT))&PMU_REF_CLR_REFTOP_BIAS_TST_MASK)
+#define PMU_REF_CLR_LPBG_SEL_MASK                0x400u
+#define PMU_REF_CLR_LPBG_SEL_SHIFT               10
+#define PMU_REF_CLR_LPBG_TEST_MASK               0x800u
+#define PMU_REF_CLR_LPBG_TEST_SHIFT              11
+#define PMU_REF_CLR_REFTOP_IBIAS_OFF_MASK        0x1000u
+#define PMU_REF_CLR_REFTOP_IBIAS_OFF_SHIFT       12
+#define PMU_REF_CLR_REFTOP_LINREGREF_EN_MASK     0x2000u
+#define PMU_REF_CLR_REFTOP_LINREGREF_EN_SHIFT    13
+#define PMU_REF_CLR_RSVD1_MASK                   0xFFFFC000u
+#define PMU_REF_CLR_RSVD1_SHIFT                  14
+#define PMU_REF_CLR_RSVD1(x)                     (((uint32_t)(((uint32_t)(x))<<PMU_REF_CLR_RSVD1_SHIFT))&PMU_REF_CLR_RSVD1_MASK)
+/* REF_TOG Bit Fields */
+#define PMU_REF_TOG_REFTOP_PWD_MASK              0x1u
+#define PMU_REF_TOG_REFTOP_PWD_SHIFT             0
+#define PMU_REF_TOG_REFTOP_PWDVBGUP_MASK         0x2u
+#define PMU_REF_TOG_REFTOP_PWDVBGUP_SHIFT        1
+#define PMU_REF_TOG_REFTOP_LOWPOWER_MASK         0x4u
+#define PMU_REF_TOG_REFTOP_LOWPOWER_SHIFT        2
+#define PMU_REF_TOG_REFTOP_SELFBIASOFF_MASK      0x8u
+#define PMU_REF_TOG_REFTOP_SELFBIASOFF_SHIFT     3
+#define PMU_REF_TOG_REFTOP_VBGADJ_MASK           0x70u
+#define PMU_REF_TOG_REFTOP_VBGADJ_SHIFT          4
+#define PMU_REF_TOG_REFTOP_VBGADJ(x)             (((uint32_t)(((uint32_t)(x))<<PMU_REF_TOG_REFTOP_VBGADJ_SHIFT))&PMU_REF_TOG_REFTOP_VBGADJ_MASK)
+#define PMU_REF_TOG_REFTOP_VBGUP_MASK            0x80u
+#define PMU_REF_TOG_REFTOP_VBGUP_SHIFT           7
+#define PMU_REF_TOG_REFTOP_BIAS_TST_MASK         0x300u
+#define PMU_REF_TOG_REFTOP_BIAS_TST_SHIFT        8
+#define PMU_REF_TOG_REFTOP_BIAS_TST(x)           (((uint32_t)(((uint32_t)(x))<<PMU_REF_TOG_REFTOP_BIAS_TST_SHIFT))&PMU_REF_TOG_REFTOP_BIAS_TST_MASK)
+#define PMU_REF_TOG_LPBG_SEL_MASK                0x400u
+#define PMU_REF_TOG_LPBG_SEL_SHIFT               10
+#define PMU_REF_TOG_LPBG_TEST_MASK               0x800u
+#define PMU_REF_TOG_LPBG_TEST_SHIFT              11
+#define PMU_REF_TOG_REFTOP_IBIAS_OFF_MASK        0x1000u
+#define PMU_REF_TOG_REFTOP_IBIAS_OFF_SHIFT       12
+#define PMU_REF_TOG_REFTOP_LINREGREF_EN_MASK     0x2000u
+#define PMU_REF_TOG_REFTOP_LINREGREF_EN_SHIFT    13
+#define PMU_REF_TOG_RSVD1_MASK                   0xFFFFC000u
+#define PMU_REF_TOG_RSVD1_SHIFT                  14
+#define PMU_REF_TOG_RSVD1(x)                     (((uint32_t)(((uint32_t)(x))<<PMU_REF_TOG_RSVD1_SHIFT))&PMU_REF_TOG_RSVD1_MASK)
+/* LOWPWR_CTRL Bit Fields */
+#define PMU_LOWPWR_CTRL_STOP_MODE_CONFIG_MASK    0x3u
+#define PMU_LOWPWR_CTRL_STOP_MODE_CONFIG_SHIFT   0
+#define PMU_LOWPWR_CTRL_STOP_MODE_CONFIG(x)      (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_STOP_MODE_CONFIG_SHIFT))&PMU_LOWPWR_CTRL_STOP_MODE_CONFIG_MASK)
+#define PMU_LOWPWR_CTRL_RSVD0_MASK               0xFCu
+#define PMU_LOWPWR_CTRL_RSVD0_SHIFT              2
+#define PMU_LOWPWR_CTRL_RSVD0(x)                 (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_RSVD0_SHIFT))&PMU_LOWPWR_CTRL_RSVD0_MASK)
+#define PMU_LOWPWR_CTRL_L1_PWRGATE_MASK          0x100u
+#define PMU_LOWPWR_CTRL_L1_PWRGATE_SHIFT         8
+#define PMU_LOWPWR_CTRL_L2_PWRGATE_MASK          0x200u
+#define PMU_LOWPWR_CTRL_L2_PWRGATE_SHIFT         9
+#define PMU_LOWPWR_CTRL_CPU_PWRGATE_MASK         0x400u
+#define PMU_LOWPWR_CTRL_CPU_PWRGATE_SHIFT        10
+#define PMU_LOWPWR_CTRL_DISPLAY_PWRGATE_MASK     0x800u
+#define PMU_LOWPWR_CTRL_DISPLAY_PWRGATE_SHIFT    11
+#define PMU_LOWPWR_CTRL_MIX_PWRGATE_MASK         0x1000u
+#define PMU_LOWPWR_CTRL_MIX_PWRGATE_SHIFT        12
+#define PMU_LOWPWR_CTRL_GPU_PWRGATE_MASK         0x2000u
+#define PMU_LOWPWR_CTRL_GPU_PWRGATE_SHIFT        13
+#define PMU_LOWPWR_CTRL_CONTROL0_MASK            0xFFC000u
+#define PMU_LOWPWR_CTRL_CONTROL0_SHIFT           14
+#define PMU_LOWPWR_CTRL_CONTROL0(x)              (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_CONTROL0_SHIFT))&PMU_LOWPWR_CTRL_CONTROL0_MASK)
+#define PMU_LOWPWR_CTRL_CONTROL1_MASK            0xFF000000u
+#define PMU_LOWPWR_CTRL_CONTROL1_SHIFT           24
+#define PMU_LOWPWR_CTRL_CONTROL1(x)              (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_CONTROL1_SHIFT))&PMU_LOWPWR_CTRL_CONTROL1_MASK)
+/* LOWPWR_CTRL_SET Bit Fields */
+#define PMU_LOWPWR_CTRL_SET_STOP_MODE_CONFIG_MASK 0x3u
+#define PMU_LOWPWR_CTRL_SET_STOP_MODE_CONFIG_SHIFT 0
+#define PMU_LOWPWR_CTRL_SET_STOP_MODE_CONFIG(x)  (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_SET_STOP_MODE_CONFIG_SHIFT))&PMU_LOWPWR_CTRL_SET_STOP_MODE_CONFIG_MASK)
+#define PMU_LOWPWR_CTRL_SET_RSVD0_MASK           0xFCu
+#define PMU_LOWPWR_CTRL_SET_RSVD0_SHIFT          2
+#define PMU_LOWPWR_CTRL_SET_RSVD0(x)             (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_SET_RSVD0_SHIFT))&PMU_LOWPWR_CTRL_SET_RSVD0_MASK)
+#define PMU_LOWPWR_CTRL_SET_L1_PWRGATE_MASK      0x100u
+#define PMU_LOWPWR_CTRL_SET_L1_PWRGATE_SHIFT     8
+#define PMU_LOWPWR_CTRL_SET_L2_PWRGATE_MASK      0x200u
+#define PMU_LOWPWR_CTRL_SET_L2_PWRGATE_SHIFT     9
+#define PMU_LOWPWR_CTRL_SET_CPU_PWRGATE_MASK     0x400u
+#define PMU_LOWPWR_CTRL_SET_CPU_PWRGATE_SHIFT    10
+#define PMU_LOWPWR_CTRL_SET_DISPLAY_PWRGATE_MASK 0x800u
+#define PMU_LOWPWR_CTRL_SET_DISPLAY_PWRGATE_SHIFT 11
+#define PMU_LOWPWR_CTRL_SET_MIX_PWRGATE_MASK     0x1000u
+#define PMU_LOWPWR_CTRL_SET_MIX_PWRGATE_SHIFT    12
+#define PMU_LOWPWR_CTRL_SET_GPU_PWRGATE_MASK     0x2000u
+#define PMU_LOWPWR_CTRL_SET_GPU_PWRGATE_SHIFT    13
+#define PMU_LOWPWR_CTRL_SET_CONTROL0_MASK        0xFFC000u
+#define PMU_LOWPWR_CTRL_SET_CONTROL0_SHIFT       14
+#define PMU_LOWPWR_CTRL_SET_CONTROL0(x)          (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_SET_CONTROL0_SHIFT))&PMU_LOWPWR_CTRL_SET_CONTROL0_MASK)
+#define PMU_LOWPWR_CTRL_SET_CONTROL1_MASK        0xFF000000u
+#define PMU_LOWPWR_CTRL_SET_CONTROL1_SHIFT       24
+#define PMU_LOWPWR_CTRL_SET_CONTROL1(x)          (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_SET_CONTROL1_SHIFT))&PMU_LOWPWR_CTRL_SET_CONTROL1_MASK)
+/* LOWPWR_CTRL_CLR Bit Fields */
+#define PMU_LOWPWR_CTRL_CLR_STOP_MODE_CONFIG_MASK 0x3u
+#define PMU_LOWPWR_CTRL_CLR_STOP_MODE_CONFIG_SHIFT 0
+#define PMU_LOWPWR_CTRL_CLR_STOP_MODE_CONFIG(x)  (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_CLR_STOP_MODE_CONFIG_SHIFT))&PMU_LOWPWR_CTRL_CLR_STOP_MODE_CONFIG_MASK)
+#define PMU_LOWPWR_CTRL_CLR_RSVD0_MASK           0xFCu
+#define PMU_LOWPWR_CTRL_CLR_RSVD0_SHIFT          2
+#define PMU_LOWPWR_CTRL_CLR_RSVD0(x)             (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_CLR_RSVD0_SHIFT))&PMU_LOWPWR_CTRL_CLR_RSVD0_MASK)
+#define PMU_LOWPWR_CTRL_CLR_L1_PWRGATE_MASK      0x100u
+#define PMU_LOWPWR_CTRL_CLR_L1_PWRGATE_SHIFT     8
+#define PMU_LOWPWR_CTRL_CLR_L2_PWRGATE_MASK      0x200u
+#define PMU_LOWPWR_CTRL_CLR_L2_PWRGATE_SHIFT     9
+#define PMU_LOWPWR_CTRL_CLR_CPU_PWRGATE_MASK     0x400u
+#define PMU_LOWPWR_CTRL_CLR_CPU_PWRGATE_SHIFT    10
+#define PMU_LOWPWR_CTRL_CLR_DISPLAY_PWRGATE_MASK 0x800u
+#define PMU_LOWPWR_CTRL_CLR_DISPLAY_PWRGATE_SHIFT 11
+#define PMU_LOWPWR_CTRL_CLR_MIX_PWRGATE_MASK     0x1000u
+#define PMU_LOWPWR_CTRL_CLR_MIX_PWRGATE_SHIFT    12
+#define PMU_LOWPWR_CTRL_CLR_GPU_PWRGATE_MASK     0x2000u
+#define PMU_LOWPWR_CTRL_CLR_GPU_PWRGATE_SHIFT    13
+#define PMU_LOWPWR_CTRL_CLR_CONTROL0_MASK        0xFFC000u
+#define PMU_LOWPWR_CTRL_CLR_CONTROL0_SHIFT       14
+#define PMU_LOWPWR_CTRL_CLR_CONTROL0(x)          (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_CLR_CONTROL0_SHIFT))&PMU_LOWPWR_CTRL_CLR_CONTROL0_MASK)
+#define PMU_LOWPWR_CTRL_CLR_CONTROL1_MASK        0xFF000000u
+#define PMU_LOWPWR_CTRL_CLR_CONTROL1_SHIFT       24
+#define PMU_LOWPWR_CTRL_CLR_CONTROL1(x)          (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_CLR_CONTROL1_SHIFT))&PMU_LOWPWR_CTRL_CLR_CONTROL1_MASK)
+/* LOWPWR_CTRL_TOG Bit Fields */
+#define PMU_LOWPWR_CTRL_TOG_STOP_MODE_CONFIG_MASK 0x3u
+#define PMU_LOWPWR_CTRL_TOG_STOP_MODE_CONFIG_SHIFT 0
+#define PMU_LOWPWR_CTRL_TOG_STOP_MODE_CONFIG(x)  (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_TOG_STOP_MODE_CONFIG_SHIFT))&PMU_LOWPWR_CTRL_TOG_STOP_MODE_CONFIG_MASK)
+#define PMU_LOWPWR_CTRL_TOG_RSVD0_MASK           0xFCu
+#define PMU_LOWPWR_CTRL_TOG_RSVD0_SHIFT          2
+#define PMU_LOWPWR_CTRL_TOG_RSVD0(x)             (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_TOG_RSVD0_SHIFT))&PMU_LOWPWR_CTRL_TOG_RSVD0_MASK)
+#define PMU_LOWPWR_CTRL_TOG_L1_PWRGATE_MASK      0x100u
+#define PMU_LOWPWR_CTRL_TOG_L1_PWRGATE_SHIFT     8
+#define PMU_LOWPWR_CTRL_TOG_L2_PWRGATE_MASK      0x200u
+#define PMU_LOWPWR_CTRL_TOG_L2_PWRGATE_SHIFT     9
+#define PMU_LOWPWR_CTRL_TOG_CPU_PWRGATE_MASK     0x400u
+#define PMU_LOWPWR_CTRL_TOG_CPU_PWRGATE_SHIFT    10
+#define PMU_LOWPWR_CTRL_TOG_DISPLAY_PWRGATE_MASK 0x800u
+#define PMU_LOWPWR_CTRL_TOG_DISPLAY_PWRGATE_SHIFT 11
+#define PMU_LOWPWR_CTRL_TOG_MIX_PWRGATE_MASK     0x1000u
+#define PMU_LOWPWR_CTRL_TOG_MIX_PWRGATE_SHIFT    12
+#define PMU_LOWPWR_CTRL_TOG_GPU_PWRGATE_MASK     0x2000u
+#define PMU_LOWPWR_CTRL_TOG_GPU_PWRGATE_SHIFT    13
+#define PMU_LOWPWR_CTRL_TOG_CONTROL0_MASK        0xFFC000u
+#define PMU_LOWPWR_CTRL_TOG_CONTROL0_SHIFT       14
+#define PMU_LOWPWR_CTRL_TOG_CONTROL0(x)          (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_TOG_CONTROL0_SHIFT))&PMU_LOWPWR_CTRL_TOG_CONTROL0_MASK)
+#define PMU_LOWPWR_CTRL_TOG_CONTROL1_MASK        0xFF000000u
+#define PMU_LOWPWR_CTRL_TOG_CONTROL1_SHIFT       24
+#define PMU_LOWPWR_CTRL_TOG_CONTROL1(x)          (((uint32_t)(((uint32_t)(x))<<PMU_LOWPWR_CTRL_TOG_CONTROL1_SHIFT))&PMU_LOWPWR_CTRL_TOG_CONTROL1_MASK)
+
+
+/* HW_ANADIG_TEMPSENSE0 Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_LOW_ALARM_VALUE_MASK 0x1FFu
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_LOW_ALARM_VALUE_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_LOW_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_LOW_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_LOW_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_HIGH_ALARM_VALUE_MASK 0x3FE00u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_HIGH_ALARM_VALUE_SHIFT 9
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_HIGH_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_HIGH_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_HIGH_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_PANIC_ALARM_VALUE_MASK 0x7FC0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_PANIC_ALARM_VALUE_SHIFT 18
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_PANIC_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_PANIC_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_PANIC_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_RSVD1_MASK  0xF8000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_RSVD1_SHIFT 27
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_RSVD1(x)    (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_RSVD1_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_RSVD1_MASK)
+/* HW_ANADIG_TEMPSENSE0_SET Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_LOW_ALARM_VALUE_MASK 0x1FFu
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_LOW_ALARM_VALUE_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_LOW_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_SET_LOW_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_SET_LOW_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_HIGH_ALARM_VALUE_MASK 0x3FE00u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_HIGH_ALARM_VALUE_SHIFT 9
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_HIGH_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_SET_HIGH_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_SET_HIGH_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_PANIC_ALARM_VALUE_MASK 0x7FC0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_PANIC_ALARM_VALUE_SHIFT 18
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_PANIC_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_SET_PANIC_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_SET_PANIC_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_RSVD1_MASK 0xF8000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_RSVD1_SHIFT 27
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_SET_RSVD1(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_SET_RSVD1_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_SET_RSVD1_MASK)
+/* HW_ANADIG_TEMPSENSE0_CLR Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_LOW_ALARM_VALUE_MASK 0x1FFu
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_LOW_ALARM_VALUE_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_LOW_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_LOW_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_LOW_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_HIGH_ALARM_VALUE_MASK 0x3FE00u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_HIGH_ALARM_VALUE_SHIFT 9
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_HIGH_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_HIGH_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_HIGH_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_PANIC_ALARM_VALUE_MASK 0x7FC0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_PANIC_ALARM_VALUE_SHIFT 18
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_PANIC_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_PANIC_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_PANIC_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_RSVD1_MASK 0xF8000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_RSVD1_SHIFT 27
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_RSVD1(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_RSVD1_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_CLR_RSVD1_MASK)
+/* HW_ANADIG_TEMPSENSE0_TOG Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_LOW_ALARM_VALUE_MASK 0x1FFu
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_LOW_ALARM_VALUE_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_LOW_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_LOW_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_LOW_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_HIGH_ALARM_VALUE_MASK 0x3FE00u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_HIGH_ALARM_VALUE_SHIFT 9
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_HIGH_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_HIGH_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_HIGH_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_PANIC_ALARM_VALUE_MASK 0x7FC0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_PANIC_ALARM_VALUE_SHIFT 18
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_PANIC_ALARM_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_PANIC_ALARM_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_PANIC_ALARM_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_RSVD1_MASK 0xF8000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_RSVD1_SHIFT 27
+#define TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_RSVD1(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_RSVD1_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE0_TOG_RSVD1_MASK)
+/* HW_ANADIG_TEMPSENSE1 Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TEMP_VALUE_MASK 0x1FFu
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TEMP_VALUE_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TEMP_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_TEMP_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_TEMP_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_POWER_DOWN_MASK 0x200u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_POWER_DOWN_SHIFT 9
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_TEMP_MASK 0x400u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_TEMP_SHIFT 10
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_FINISHED_MASK 0x800u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_FINISHED_SHIFT 11
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_RSVD0_MASK  0xF000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_RSVD0_SHIFT 12
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_RSVD0(x)    (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_RSVD0_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_RSVD0_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_FREQ_MASK 0xFFFF0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_FREQ_SHIFT 16
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_FREQ(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_FREQ_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_FREQ_MASK)
+/* HW_ANADIG_TEMPSENSE1_SET Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_TEMP_VALUE_MASK 0x1FFu
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_TEMP_VALUE_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_TEMP_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_SET_TEMP_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_SET_TEMP_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_POWER_DOWN_MASK 0x200u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_POWER_DOWN_SHIFT 9
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_MEASURE_TEMP_MASK 0x400u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_MEASURE_TEMP_SHIFT 10
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_FINISHED_MASK 0x800u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_FINISHED_SHIFT 11
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_RSVD0_MASK 0xF000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_RSVD0_SHIFT 12
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_RSVD0(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_SET_RSVD0_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_SET_RSVD0_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_MEASURE_FREQ_MASK 0xFFFF0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_MEASURE_FREQ_SHIFT 16
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_SET_MEASURE_FREQ(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_SET_MEASURE_FREQ_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_SET_MEASURE_FREQ_MASK)
+/* HW_ANADIG_TEMPSENSE1_CLR Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_TEMP_VALUE_MASK 0x1FFu
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_TEMP_VALUE_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_TEMP_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_TEMP_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_TEMP_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_POWER_DOWN_MASK 0x200u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_POWER_DOWN_SHIFT 9
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_MEASURE_TEMP_MASK 0x400u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_MEASURE_TEMP_SHIFT 10
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_FINISHED_MASK 0x800u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_FINISHED_SHIFT 11
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_RSVD0_MASK 0xF000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_RSVD0_SHIFT 12
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_RSVD0(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_RSVD0_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_RSVD0_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_MEASURE_FREQ_MASK 0xFFFF0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_MEASURE_FREQ_SHIFT 16
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_MEASURE_FREQ(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_MEASURE_FREQ_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_CLR_MEASURE_FREQ_MASK)
+/* HW_ANADIG_TEMPSENSE1_TOG Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_TEMP_VALUE_MASK 0x1FFu
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_TEMP_VALUE_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_TEMP_VALUE(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_TEMP_VALUE_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_TEMP_VALUE_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_POWER_DOWN_MASK 0x200u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_POWER_DOWN_SHIFT 9
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_MEASURE_TEMP_MASK 0x400u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_MEASURE_TEMP_SHIFT 10
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_FINISHED_MASK 0x800u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_FINISHED_SHIFT 11
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_RSVD0_MASK 0xF000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_RSVD0_SHIFT 12
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_RSVD0(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_RSVD0_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_RSVD0_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_MEASURE_FREQ_MASK 0xFFFF0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_MEASURE_FREQ_SHIFT 16
+#define TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_MEASURE_FREQ(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_MEASURE_FREQ_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE1_TOG_MEASURE_FREQ_MASK)
+/* HW_ANADIG_TEMPSENSE_TRIM Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_VREF_SEL_MASK 0x1Fu
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_VREF_SEL_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_VREF_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_VREF_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_VREF_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD0_MASK 0x60u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD0_SHIFT 5
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD0(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD0_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD0_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_EN_READ_MASK 0x80u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_EN_READ_SHIFT 7
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_VREF_VBE_SEL_MASK 0x1FF00u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_VREF_VBE_SEL_SHIFT 8
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_VREF_VBE_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_VREF_VBE_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_VREF_VBE_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD1_MASK 0xE0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD1_SHIFT 17
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD1(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD1_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD1_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_SLOPE_SEL_MASK 0xF00000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_SLOPE_SEL_SHIFT 20
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_SLOPE_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_SLOPE_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_BUF_SLOPE_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD2_MASK 0x1F000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD2_SHIFT 24
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD2(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD2_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_RSVD2_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_MUX_ADDR_MASK 0xE0000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_MUX_ADDR_SHIFT 29
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_MUX_ADDR(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_MUX_ADDR_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_T_MUX_ADDR_MASK)
+/* HW_ANADIG_TEMPSENSE_TRIM_SET Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_VREF_SEL_MASK 0x1Fu
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_VREF_SEL_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_VREF_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_VREF_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_VREF_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD0_MASK 0x60u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD0_SHIFT 5
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD0(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD0_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD0_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_EN_READ_MASK 0x80u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_EN_READ_SHIFT 7
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_VREF_VBE_SEL_MASK 0x1FF00u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_VREF_VBE_SEL_SHIFT 8
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_VREF_VBE_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_VREF_VBE_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_VREF_VBE_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD1_MASK 0xE0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD1_SHIFT 17
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD1(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD1_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD1_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_SLOPE_SEL_MASK 0xF00000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_SLOPE_SEL_SHIFT 20
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_SLOPE_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_SLOPE_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_BUF_SLOPE_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD2_MASK 0x1F000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD2_SHIFT 24
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD2(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD2_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_RSVD2_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_MUX_ADDR_MASK 0xE0000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_MUX_ADDR_SHIFT 29
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_MUX_ADDR(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_MUX_ADDR_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_SET_T_MUX_ADDR_MASK)
+/* HW_ANADIG_TEMPSENSE_TRIM_CLR Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_VREF_SEL_MASK 0x1Fu
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_VREF_SEL_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_VREF_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_VREF_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_VREF_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD0_MASK 0x60u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD0_SHIFT 5
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD0(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD0_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD0_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_EN_READ_MASK 0x80u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_EN_READ_SHIFT 7
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_VREF_VBE_SEL_MASK 0x1FF00u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_VREF_VBE_SEL_SHIFT 8
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_VREF_VBE_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_VREF_VBE_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_VREF_VBE_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD1_MASK 0xE0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD1_SHIFT 17
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD1(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD1_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD1_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_SLOPE_SEL_MASK 0xF00000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_SLOPE_SEL_SHIFT 20
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_SLOPE_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_SLOPE_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_BUF_SLOPE_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD2_MASK 0x1F000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD2_SHIFT 24
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD2(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD2_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_RSVD2_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_MUX_ADDR_MASK 0xE0000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_MUX_ADDR_SHIFT 29
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_MUX_ADDR(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_MUX_ADDR_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_CLR_T_MUX_ADDR_MASK)
+/* HW_ANADIG_TEMPSENSE_TRIM_TOG Bit Fields */
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_VREF_SEL_MASK 0x1Fu
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_VREF_SEL_SHIFT 0
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_VREF_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_VREF_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_VREF_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD0_MASK 0x60u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD0_SHIFT 5
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD0(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD0_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD0_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_EN_READ_MASK 0x80u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_EN_READ_SHIFT 7
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_VREF_VBE_SEL_MASK 0x1FF00u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_VREF_VBE_SEL_SHIFT 8
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_VREF_VBE_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_VREF_VBE_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_VREF_VBE_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD1_MASK 0xE0000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD1_SHIFT 17
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD1(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD1_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD1_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_SLOPE_SEL_MASK 0xF00000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_SLOPE_SEL_SHIFT 20
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_SLOPE_SEL(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_SLOPE_SEL_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_BUF_SLOPE_SEL_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD2_MASK 0x1F000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD2_SHIFT 24
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD2(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD2_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_RSVD2_MASK)
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_MUX_ADDR_MASK 0xE0000000u
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_MUX_ADDR_SHIFT 29
+#define TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_MUX_ADDR(x) (((uint32_t)(((uint32_t)(x))<<TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_MUX_ADDR_SHIFT))&TEMPMON_HW_ANADIG_TEMPSENSE_TRIM_TOG_T_MUX_ADDR_MASK)
+
+
+#define CCM_GPR(i)             (CCM_BASE_ADDRESS + CCM_GPR0_OFFSET + 0x10 * (i))
+#define CCM_OBSERVE(i)         (CCM_BASE_ADDRESS + CCM_OBSERVE0_OFFSET + 0x10 * (i))
+#define CCM_SCTRL(i)           (CCM_BASE_ADDRESS + CCM_SCTRL0_OFFSET + 0x10 * (i))
+#define CCM_CCGR(i)            (CCM_BASE_ADDRESS + CCM_CCGR0_OFFSET + 0x10 * (i))
+#define CCM_ROOT_TARGET(i)     (CCM_BASE_ADDRESS + CCM_ROOT0_TARGET_OFFSET + 0x80 * (i))
+
+#define CCM_GPR_SET(i)         (CCM_BASE_ADDRESS + CCM_GPR0_OFFSET + 0x10 * (i) + 4)
+#define CCM_OBSERVE_SET(i)     (CCM_BASE_ADDRESS + CCM_OBSERVE0_OFFSET + 0x10 * (i) + 4)
+#define CCM_SCTRL_SET(i)       (CCM_BASE_ADDRESS + CCM_SCTRL0_OFFSET + 0x10 * (i) + 4)
+#define CCM_CCGR_SET(i)                (CCM_BASE_ADDRESS + CCM_CCGR0_OFFSET + 0x10 * (i) + 4)
+#define CCM_ROOT_TARGET_SET(i) (CCM_BASE_ADDRESS + CCM_ROOT0_TARGET_OFFSET + 0x80 * (i) + 4)
+
+#define CCM_GPR_CLR(i)         (CCM_BASE_ADDRESS + CCM_GPR0_OFFSET + 0x10 * (i) + 8)
+#define CCM_OBSERVE_CLR(i)     (CCM_BASE_ADDRESS + CCM_OBSERVE0_OFFSET + 0x10 * (i) + 8)
+#define CCM_SCTRL_CLR(i)       (CCM_BASE_ADDRESS + CCM_SCTRL0_OFFSET + 0x10 * (i) + 8)
+#define CCM_CCGR_CLR(i)                (CCM_BASE_ADDRESS + CCM_CCGR0_OFFSET + 0x10 * (i) + 8)
+#define CCM_ROOT_TARGET_CLR(i) (CCM_BASE_ADDRESS + CCM_ROOT0_TARGET_OFFSET + 0x80 * (i) + 8)
+
+#define CCM_GPR_TOGGLE(i)      (CCM_BASE_ADDRESS + CCM_GPR0_OFFSET + 0x10 * (i) + 12)
+#define CCM_OBSERVE_TOGGLE(i)  (CCM_BASE_ADDRESS + CCM_OBSERVE0_OFFSET + 0x10 * (i) + 12)
+#define CCM_SCTRL_TOGGLE(i)    (CCM_BASE_ADDRESS + CCM_SCTRL0_OFFSET + 0x10 * (i) + 12)
+#define CCM_CCGR_TOGGLE(i)     (CCM_BASE_ADDRESS + CCM_CCGR0_OFFSET + 0x10 * (i) + 12)
+#define CCM_ROOT_TARGET_TOGGLE(i)      (CCM_BASE_ADDRESS + CCM_ROOT0_TARGET_OFFSET + 0x80 * (i) + 12)
+
+#define HW_CCM_GPR_WR(i, v)            writel((v), CCM_GPR(i))
+#define HW_CCM_CCM_OBSERVE_WR(i, v)    writel((v), CCM_OBSERVE(i))
+#define HW_CCM_SCTRL_WR(i, v)          writel((v), CCM_SCTRL(i))
+#define HW_CCM_CCGR_WR(i, v)           writel((v), CCM_CCGR(i))
+#define HW_CCM_ROOT_TARGET_WR(i, v)    writel((v), CCM_ROOT_TARGET(i))
+
+#define HW_CCM_GPR_RD(i)               readl(CCM_GPR(i))
+#define HW_CCM_CCM_OBSERVE_RD(i)       readl(CCM_OBSERVE(i))
+#define HW_CCM_SCTRL_RD(i)             readl(CCM_SCTRL(i))
+#define HW_CCM_CCGR_RD(i)              readl(CCM_CCGR(i))
+#define HW_CCM_ROOT_TARGET_RD(i)       readl(CCM_ROOT_TARGET(i))
+
+#define HW_CCM_GPR_SET(i, v)           writel((v), CCM_GPR_SET(i))
+#define HW_CCM_CCM_OBSERVE_SET(i, v)   writel((v), CCM_CCM_OBSERVE_SET(i))
+#define HW_CCM_SCTRL_SET(i, v)         writel((v), CCM_SCTRL_SET(i))
+#define HW_CCM_CCGR_SET(i, v)          writel((v), CCM_CCGR_SET(i))
+#define HW_CCM_ROOT_TARGET_SET(i, v)   writel((v), CCM_ROOT_TARGET_SET(i))
+
+#define HW_CCM_GPR_CLR(i, v)           writel((v), CCM_GPR_CLR(i))
+#define HW_CCM_CCM_OBSERVE_CLR(i, v)   writel((v), CCM_CCM_OBSERVE_CLR(i))
+#define HW_CCM_SCTRL_CLR(i, v)         writel((v), CCM_SCTRL_CLR(i))
+#define HW_CCM_CCGR_CLR(i, v)          writel((v), CCM_CCGR_CLR(i))
+#define HW_CCM_ROOT_TARGET_CLR(i, v)   writel((v), CCM_ROOT_TARGET_CLR(i))
+
+#define HW_CCM_GPR_TOGGLE(i, v)                writel((v), CCM_GPR_TOGGLE(i))
+#define HW_CCM_CCM_OBSERVE_TOGGLE(i, v)        writel((v), CCM_CCM_OBSERVE_TOGGLE(i))
+#define HW_CCM_SCTRL_TOGGLE(i, v)      writel((v), CCM_SCTRL_TOGGLE(i))
+#define HW_CCM_CCGR_TOGGLE(i, v)       writel((v), CCM_CCGR_TOGGLE(i))
+#define HW_CCM_ROOT_TARGET_TOGGLE(i, v)        writel((v), CCM_ROOT_TARGET_TOGGLE(i))
+
+#define CCM_CLK_ON_MSK 0x03
+
+#define CCM_ROOT_TGT_POST_DIV_SHIFT    0
+#define CCM_ROOT_TGT_PRE_DIV_SHIFT     15
+#define CCM_ROOT_TGT_MUX_SHIFT         24
+#define CCM_ROOT_TGT_ENABLE_SHIFT      28
+#define CCM_ROOT_TGT_POST_DIV_MSK      0x3F
+#define CCM_ROOT_TGT_PRE_DIV_MSK       (0x07 << CCM_ROOT_TGT_PRE_DIV_SHIFT)
+#define CCM_ROOT_TGT_MUX_MSK           (0x07 << CCM_ROOT_TGT_MUX_SHIFT)
+#define CCM_ROOT_TGT_ENABLE_MSK                (0x01 << CCM_ROOT_TGT_ENABLE_SHIFT)
+
+#define CCM_ROOT_TGT_POST_DIV(x)       ((((x) - 1) << CCM_ROOT_TGT_POST_DIV_SHIFT) & CCM_ROOT_TGT_POST_DIV_MSK)
+#define CCM_ROOT_TGT_PRE_DIV(x)                ((((x) - 1) << CCM_ROOT_TGT_PRE_DIV_SHIFT) & CCM_ROOT_TGT_PRE_DIV_MSK)
+#define CCM_ROOT_TGT_MUX_TO(x)         ((((x) - 1) << CCM_ROOT_TGT_MUX_SHIFT) & CCM_ROOT_TGT_MUX_MSK)
+
+/*
+ * Field values definition for clock slice TARGET register
+ */
+
+#define CLK_ROOT_ON            0x10000000
+#define CLK_ROOT_OFF           0x0
+#define CLK_ROOT_ENABLE_MASK   0x10000000
+#define CLK_ROOT_ENABLE_SHIFT  28
+
+#define CLK_ROOT_ALT0          0x00000000
+#define CLK_ROOT_ALT1          0x01000000
+#define CLK_ROOT_ALT2          0x02000000
+#define CLK_ROOT_ALT3          0x03000000
+#define CLK_ROOT_ALT4          0x04000000
+#define CLK_ROOT_ALT5          0x05000000
+#define CLK_ROOT_ALT6          0x06000000
+#define CLK_ROOT_ALT7          0x07000000
+
+
+#define DRAM_CLK_ROOT_POST_DIV_MASK    0x00000007
+#define CLK_ROOT_POST_DIV_MASK 0x0000003f
+#define CLK_ROOT_POST_DIV_SHIFT        0
+#define CLK_ROOT_POST_DIV(n) ((n << CLK_ROOT_POST_DIV_SHIFT) & CLK_ROOT_POST_DIV_MASK)
+
+#define CLK_ROOT_AUTO_DIV_MASK 0x00000700
+#define CLK_ROOT_AUTO_DIV_SHIFT        8
+#define CLK_ROOT_AUTO_DIV(n) ((n << CLK_ROOT_AUTO_DIV_SHIFT) & CLK_ROOT_AUTO_DIV_MASK)
+
+#define CLK_ROOT_AUTO_EN_MASK  0x00001000
+#define CLK_ROOT_AUTO_EN       0x00001000
+
+#define CLK_ROOT_PRE_DIV_MASK  0x00070000
+#define CLK_ROOT_PRE_DIV_SHIFT 16
+#define CLK_ROOT_PRE_DIV(n) ((n << CLK_ROOT_PRE_DIV_SHIFT) & CLK_ROOT_PRE_DIV_MASK)
+
+#define CLK_ROOT_MUX_MASK      0x07000000
+#define CLK_ROOT_MUX_SHIFT     24
+
+#define CLK_ROOT_EN_MASK       0x10000000
+
+#define CLK_ROOT_AUTO_ON       0x00001000
+#define CLK_ROOT_AUTO_OFF      0x0
+
+/* ARM_A7_CLK_ROOT */
+#define ARM_A7_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define ARM_A7_CLK_ROOT_FROM_PLL_ARM_MAIN_800M_CLK             0x01000000
+#define ARM_A7_CLK_ROOT_FROM_PLL_DRAM_MAIN_1066M_CLK           0x03000000
+#define ARM_A7_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK             0x04000000
+#define ARM_A7_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK             0x05000000
+#define ARM_A7_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK            0x02000000
+#define ARM_A7_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                        0x06000000
+#define ARM_A7_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK             0x07000000
+
+/* ARM_M4_CLK_ROOT */
+#define ARM_M4_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define ARM_M4_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK            0x04000000
+#define ARM_M4_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK             0x01000000
+#define ARM_M4_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK             0x03000000
+#define ARM_M4_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK            0x02000000
+#define ARM_M4_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                        0x05000000
+#define ARM_M4_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                        0x06000000
+#define ARM_M4_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK             0x07000000
+
+/* ARM_M0_CLK_ROOT */
+#define ARM_M0_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define ARM_M0_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK            0x04000000
+#define ARM_M0_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK             0x01000000
+#define ARM_M0_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK             0x03000000
+#define ARM_M0_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK            0x02000000
+#define ARM_M0_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                        0x05000000
+#define ARM_M0_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                        0x06000000
+#define ARM_M0_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK             0x07000000
+
+/* MAIN_AXI_CLK_ROOT */
+#define MAIN_AXI_CLK_ROOT_FROM_OSC_24M_CLK                     0x00000000
+#define MAIN_AXI_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK          0x02000000
+#define MAIN_AXI_CLK_ROOT_FROM_PLL_SYS_PFD1_332M_CLK           0x01000000
+#define MAIN_AXI_CLK_ROOT_FROM_PLL_SYS_PFD5_CLK                        0x04000000
+#define MAIN_AXI_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                        0x07000000
+#define MAIN_AXI_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK          0x03000000
+#define MAIN_AXI_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK              0x05000000
+#define MAIN_AXI_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK              0x06000000
+
+/* DISP_AXI_CLK_ROOT */
+#define DISP_AXI_CLK_ROOT_FROM_OSC_24M_CLK                     0x00000000
+#define DISP_AXI_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK          0x02000000
+#define DISP_AXI_CLK_ROOT_FROM_PLL_SYS_PFD1_332M_CLK           0x01000000
+#define DISP_AXI_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK                        0x04000000
+#define DISP_AXI_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                        0x05000000
+#define DISP_AXI_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK          0x03000000
+#define DISP_AXI_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK              0x06000000
+#define DISP_AXI_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK              0x07000000
+
+/* ENET_AXI_CLK_ROOT */
+#define ENET_AXI_CLK_ROOT_FROM_OSC_24M_CLK                     0x00000000
+#define ENET_AXI_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK          0x02000000
+#define ENET_AXI_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK           0x04000000
+#define ENET_AXI_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK           0x01000000
+#define ENET_AXI_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                        0x07000000
+#define ENET_AXI_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK          0x03000000
+#define ENET_AXI_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK              0x05000000
+#define ENET_AXI_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK              0x06000000
+
+/* NAND_USDHC_BUS_CLK_ROOT */
+#define NAND_USDHC_BUS_CLK_ROOT_FROM_OSC_24M_CLK               0x00000000
+#define NAND_USDHC_BUS_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK    0x02000000
+#define NAND_USDHC_BUS_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK     0x03000000
+#define NAND_USDHC_BUS_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK     0x01000000
+#define NAND_USDHC_BUS_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK     0x04000000
+#define NAND_USDHC_BUS_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK          0x05000000
+#define NAND_USDHC_BUS_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK    0x06000000
+#define NAND_USDHC_BUS_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                0x07000000
+
+/* AHB_CLK_ROOT */
+#define AHB_CLK_ROOT_FROM_OSC_24M_CLK                          0x00000000
+#define AHB_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK               0x02000000
+#define AHB_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK                        0x03000000
+#define AHB_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK                        0x01000000
+#define AHB_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK               0x04000000
+#define AHB_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                   0x06000000
+#define AHB_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                   0x07000000
+#define AHB_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK                        0x05000000
+
+/* DRAM_PHYM_CLK_ROOT */
+#define DRAM_PHYM_CLK_ROOT_FROM_PLL_DRAM_MAIN_1066M_CLK                0x00000000
+#define DRAM_PHYM_CLK_ROOT_FROM_PLL_DRAM_PHYM_ALT_CLK_ROOT     0x01000000
+
+/* DRAM_CLK_ROOT */
+#define DRAM_CLK_ROOT_FROM_PLL_DRAM_MAIN_1066M_CLK             0x00000000
+#define DRAM_CLK_ROOT_FROM_PLL_DRAM_ALT_CLK_ROOT               0x01000000
+
+/* DRAM_PHYM_ALT_CLK_ROOT */
+#define DRAM_PHYM_ALT_CLK_ROOT_FROM_OSC_24M_CLK                        0x00000000
+#define DRAM_PHYM_ALT_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK     0x01000000
+#define DRAM_PHYM_ALT_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK      0x02000000
+#define DRAM_PHYM_ALT_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK           0x05000000
+#define DRAM_PHYM_ALT_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK     0x03000000
+#define DRAM_PHYM_ALT_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK         0x06000000
+#define DRAM_PHYM_ALT_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK         0x07000000
+#define DRAM_PHYM_ALT_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK      0x04000000
+
+/* DRAM_ALT_CLK_ROOT */
+#define DRAM_ALT_CLK_ROOT_FROM_OSC_24M_CLK                     0x00000000
+#define DRAM_ALT_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK          0x01000000
+#define DRAM_ALT_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK           0x02000000
+#define DRAM_ALT_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK           0x05000000
+#define DRAM_ALT_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK           0x07000000
+#define DRAM_ALT_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK          0x03000000
+#define DRAM_ALT_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK          0x04000000
+#define DRAM_ALT_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK              0x06000000
+
+/* USB_HSIC_CLK_ROOT */
+#define USB_HSIC_CLK_ROOT_FROM_OSC_24M_CLK                     0x00000000
+#define USB_HSIC_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK           0x01000000
+#define USB_HSIC_CLK_ROOT_FROM_PLL_SYS_PFD3_CLK                        0x03000000
+#define USB_HSIC_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                        0x04000000
+#define USB_HSIC_CLK_ROOT_FROM_PLL_SYS_PFD5_CLK                        0x05000000
+#define USB_HSIC_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK                        0x06000000
+#define USB_HSIC_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                        0x07000000
+#define USB_HSIC_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK           0x02000000
+
+/* PCIE_CTRL_CLK_ROOT */
+#define PCIE_CTRL_CLK_ROOT_FROM_OSC_24M_CLK                    0x00000000
+#define PCIE_CTRL_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK         0x04000000
+#define PCIE_CTRL_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK          0x02000000
+#define PCIE_CTRL_CLK_ROOT_FROM_PLL_SYS_PFD1_332M_CLK          0x06000000
+#define PCIE_CTRL_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK          0x03000000
+#define PCIE_CTRL_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK               0x07000000
+#define PCIE_CTRL_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK         0x05000000
+#define PCIE_CTRL_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK         0x01000000
+
+/* PCIE_PHY_CLK_ROOT */
+#define PCIE_PHY_CLK_ROOT_FROM_OSC_24M_CLK                     0x00000000
+#define PCIE_PHY_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK           0x07000000
+#define PCIE_PHY_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK          0x02000000
+#define PCIE_PHY_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK          0x01000000
+#define PCIE_PHY_CLK_ROOT_FROM_EXT_CLK_1                       0x03000000
+#define PCIE_PHY_CLK_ROOT_FROM_EXT_CLK_2                       0x04000000
+#define PCIE_PHY_CLK_ROOT_FROM_EXT_CLK_3                       0x05000000
+#define PCIE_PHY_CLK_ROOT_FROM_EXT_CLK_4                       0x06000000
+
+/* EPDC_PIXEL_CLK_ROOT */
+#define EPDC_PIXEL_CLK_ROOT_FROM_OSC_24M_CLK                   0x00000000
+#define EPDC_PIXEL_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK                0x02000000
+#define EPDC_PIXEL_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK         0x03000000
+#define EPDC_PIXEL_CLK_ROOT_FROM_PLL_SYS_PFD1_332M_CLK         0x01000000
+#define EPDC_PIXEL_CLK_ROOT_FROM_PLL_SYS_PFD5_CLK              0x04000000
+#define EPDC_PIXEL_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK              0x05000000
+#define EPDC_PIXEL_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK              0x06000000
+#define EPDC_PIXEL_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK            0x07000000
+
+/* LCDIF_PIXEL_CLK_ROOT */
+#define LCDIF_PIXEL_CLK_ROOT_FROM_OSC_24M_CLK                  0x00000000
+#define LCDIF_PIXEL_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK       0x02000000
+#define LCDIF_PIXEL_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK                0x05000000
+#define LCDIF_PIXEL_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK             0x04000000
+#define LCDIF_PIXEL_CLK_ROOT_FROM_PLL_SYS_PFD5_CLK             0x01000000
+#define LCDIF_PIXEL_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK           0x06000000
+#define LCDIF_PIXEL_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK                0x07000000
+#define LCDIF_PIXEL_CLK_ROOT_FROM_EXT_CLK_3                    0x03000000
+
+/* MIPI_DSI_EXTSER_CLK_ROOT */
+#define MIPI_DSI_EXTSER_CLK_ROOT_FROM_OSC_24M_CLK              0x00000000
+#define MIPI_DSI_EXTSER_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK   0x05000000
+#define MIPI_DSI_EXTSER_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK    0x03000000
+#define MIPI_DSI_EXTSER_CLK_ROOT_FROM_PLL_SYS_PFD0_196M_CLK    0x04000000
+#define MIPI_DSI_EXTSER_CLK_ROOT_FROM_PLL_SYS_PFD3_CLK         0x02000000
+#define MIPI_DSI_EXTSER_CLK_ROOT_FROM_PLL_SYS_PFD5_CLK         0x01000000
+#define MIPI_DSI_EXTSER_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK       0x07000000
+#define MIPI_DSI_EXTSER_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK       0x06000000
+
+/* MIPI_CSI_WARP_CLK_ROOT */
+#define MIPI_CSI_WARP_CLK_ROOT_FROM_OSC_24M_CLK                        0x00000000
+#define MIPI_CSI_WARP_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK     0x05000000
+#define MIPI_CSI_WARP_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK      0x03000000
+#define MIPI_CSI_WARP_CLK_ROOT_FROM_PLL_SYS_PFD0_196M_CLK      0x04000000
+#define MIPI_CSI_WARP_CLK_ROOT_FROM_PLL_SYS_PFD3_CLK           0x02000000
+#define MIPI_CSI_WARP_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK           0x01000000
+#define MIPI_CSI_WARP_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK         0x07000000
+#define MIPI_CSI_WARP_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK         0x06000000
+
+/* MIPI_DPHY_REF_CLK_ROOT */
+#define MIPI_DPHY_REF_CLK_ROOT_FROM_OSC_24M_CLK                        0x00000000
+#define MIPI_DPHY_REF_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK     0x02000000
+#define MIPI_DPHY_REF_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK      0x01000000
+#define MIPI_DPHY_REF_CLK_ROOT_FROM_PLL_SYS_PFD5_CLK           0x03000000
+#define MIPI_DPHY_REF_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK         0x06000000
+#define MIPI_DPHY_REF_CLK_ROOT_FROM_REF_1M_CLK                 0x04000000
+#define MIPI_DPHY_REF_CLK_ROOT_FROM_EXT_CLK_2                  0x05000000
+#define MIPI_DPHY_REF_CLK_ROOT_FROM_EXT_CLK_3                  0x07000000
+
+/* SAI1_CLK_ROOT */
+#define SAI1_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define SAI1_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define SAI1_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x01000000
+#define SAI1_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                    0x05000000
+#define SAI1_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK              0x06000000
+#define SAI1_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x02000000
+#define SAI1_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x04000000
+#define SAI1_CLK_ROOT_FROM_EXT_CLK_2                           0x07000000
+
+/* SAI2_CLK_ROOT */
+#define SAI2_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define SAI2_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define SAI2_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x01000000
+#define SAI2_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                    0x05000000
+#define SAI2_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK              0x06000000
+#define SAI2_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x02000000
+#define SAI2_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x04000000
+#define SAI2_CLK_ROOT_FROM_EXT_CLK_2                           0x07000000
+
+/* SAI3_CLK_ROOT */
+#define SAI3_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define SAI3_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define SAI3_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x01000000
+#define SAI3_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                    0x05000000
+#define SAI3_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK              0x06000000
+#define SAI3_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x02000000
+#define SAI3_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x04000000
+#define SAI3_CLK_ROOT_FROM_EXT_CLK_3                           0x07000000
+
+/* SPDIF_CLK_ROOT */
+#define SPDIF_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define SPDIF_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK             0x03000000
+#define SPDIF_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK              0x01000000
+#define SPDIF_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                   0x05000000
+#define SPDIF_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK             0x06000000
+#define SPDIF_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                 0x02000000
+#define SPDIF_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                 0x04000000
+#define SPDIF_CLK_ROOT_FROM_EXT_CLK_3                          0x07000000
+
+/* ENET1_REF_CLK_ROOT */
+#define ENET1_REF_CLK_ROOT_FROM_OSC_24M_CLK                    0x00000000
+#define ENET1_REF_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK          0x04000000
+#define ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK         0x01000000
+#define ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK          0x02000000
+#define ENET1_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK          0x03000000
+#define ENET1_REF_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK             0x05000000
+#define ENET1_REF_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK             0x06000000
+#define ENET1_REF_CLK_ROOT_FROM_EXT_CLK_4                      0x07000000
+
+/* ENET1_TIME_CLK_ROOT */
+#define ENET1_TIME_CLK_ROOT_FROM_OSC_24M_CLK                   0x00000000
+#define ENET1_TIME_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK                0x01000000
+#define ENET1_TIME_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK            0x02000000
+#define ENET1_TIME_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK            0x07000000
+#define ENET1_TIME_CLK_ROOT_FROM_EXT_CLK_1                     0x03000000
+#define ENET1_TIME_CLK_ROOT_FROM_EXT_CLK_2                     0x04000000
+#define ENET1_TIME_CLK_ROOT_FROM_EXT_CLK_3                     0x05000000
+#define ENET1_TIME_CLK_ROOT_FROM_EXT_CLK_4                     0x06000000
+
+/* ENET2_REF_CLK_ROOT */
+#define ENET2_REF_CLK_ROOT_FROM_OSC_24M_CLK                    0x00000000
+#define ENET2_REF_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK          0x04000000
+#define ENET2_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK         0x01000000
+#define ENET2_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK          0x02000000
+#define ENET2_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK          0x03000000
+#define ENET2_REF_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK             0x05000000
+#define ENET2_REF_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK             0x06000000
+#define ENET2_REF_CLK_ROOT_FROM_EXT_CLK_4                      0x07000000
+
+/* ENET2_TIME_CLK_ROOT */
+#define ENET2_TIME_CLK_ROOT_FROM_OSC_24M_CLK                   0x00000000
+#define ENET2_TIME_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK                0x01000000
+#define ENET2_TIME_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK            0x02000000
+#define ENET2_TIME_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK            0x07000000
+#define ENET2_TIME_CLK_ROOT_FROM_EXT_CLK_1                     0x03000000
+#define ENET2_TIME_CLK_ROOT_FROM_EXT_CLK_2                     0x04000000
+#define ENET2_TIME_CLK_ROOT_FROM_EXT_CLK_3                     0x05000000
+#define ENET2_TIME_CLK_ROOT_FROM_EXT_CLK_4                     0x06000000
+
+/* ENET_PHY_REF_CLK_ROOT */
+#define ENET_PHY_REF_CLK_ROOT_FROM_OSC_24M_CLK                 0x00000000
+#define ENET_PHY_REF_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK      0x04000000
+#define ENET_PHY_REF_CLK_ROOT_FROM_PLL_SYS_PFD3_CLK            0x07000000
+#define ENET_PHY_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK      0x03000000
+#define ENET_PHY_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK       0x02000000
+#define ENET_PHY_REF_CLK_ROOT_FROM_PLL_ENET_MAIN_25M_CLK       0x01000000
+#define ENET_PHY_REF_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK          0x05000000
+#define ENET_PHY_REF_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK          0x06000000
+
+/* EIM_CLK_ROOT */
+#define EIM_CLK_ROOT_FROM_OSC_24M_CLK                          0x00000000
+#define EIM_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK               0x03000000
+#define EIM_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK                        0x02000000
+#define EIM_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK                        0x04000000
+#define EIM_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK                        0x01000000
+#define EIM_CLK_ROOT_FROM_PLL_SYS_PFD3_CLK                     0x05000000
+#define EIM_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK               0x06000000
+#define EIM_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK                        0x07000000
+
+/* NAND_CLK_ROOT */
+#define NAND_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define NAND_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x02000000
+#define NAND_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK               0x01000000
+#define NAND_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK               0x03000000
+#define NAND_CLK_ROOT_FROM_PLL_SYS_PFD3_CLK                    0x04000000
+#define NAND_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK              0x05000000
+#define NAND_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK              0x06000000
+#define NAND_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x07000000
+
+/* QSPI_CLK_ROOT */
+#define QSPI_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define QSPI_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x02000000
+#define QSPI_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK               0x05000000
+#define QSPI_CLK_ROOT_FROM_PLL_SYS_PFD3_CLK                    0x04000000
+#define QSPI_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                    0x01000000
+#define QSPI_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK                    0x06000000
+#define QSPI_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                    0x07000000
+#define QSPI_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK              0x03000000
+
+/* USDHC1_CLK_ROOT */
+#define USDHC1_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define USDHC1_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK            0x02000000
+#define USDHC1_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK             0x01000000
+#define USDHC1_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK             0x05000000
+#define USDHC1_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                  0x04000000
+#define USDHC1_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK                  0x06000000
+#define USDHC1_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                  0x07000000
+#define USDHC1_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK            0x03000000
+
+/* USDHC2_CLK_ROOT */
+#define USDHC2_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define USDHC2_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK            0x02000000
+#define USDHC2_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK             0x01000000
+#define USDHC2_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK             0x05000000
+#define USDHC2_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                  0x04000000
+#define USDHC2_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK                  0x06000000
+#define USDHC2_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                  0x07000000
+#define USDHC2_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK            0x03000000
+
+/* USDHC3_CLK_ROOT */
+#define USDHC3_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define USDHC3_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK            0x02000000
+#define USDHC3_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK             0x01000000
+#define USDHC3_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK             0x05000000
+#define USDHC3_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                  0x04000000
+#define USDHC3_CLK_ROOT_FROM_PLL_SYS_PFD6_CLK                  0x06000000
+#define USDHC3_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                  0x07000000
+#define USDHC3_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK            0x03000000
+
+/* CAN1_CLK_ROOT */
+#define CAN1_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define CAN1_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x02000000
+#define CAN1_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK               0x03000000
+#define CAN1_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x01000000
+#define CAN1_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x04000000
+#define CAN1_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x05000000
+#define CAN1_CLK_ROOT_FROM_EXT_CLK_1                           0x06000000
+#define CAN1_CLK_ROOT_FROM_EXT_CLK_4                           0x07000000
+
+/* CAN2_CLK_ROOT */
+#define CAN2_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define CAN2_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x02000000
+#define CAN2_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK               0x03000000
+#define CAN2_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x01000000
+#define CAN2_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x04000000
+#define CAN2_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x05000000
+#define CAN2_CLK_ROOT_FROM_EXT_CLK_1                           0x06000000
+#define CAN2_CLK_ROOT_FROM_EXT_CLK_3                           0x07000000
+
+/* I2C1_CLK_ROOT */
+#define I2C1_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define I2C1_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define I2C1_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x01000000
+#define I2C1_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x07000000
+#define I2C1_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK               0x02000000
+#define I2C1_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x04000000
+#define I2C1_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x05000000
+#define I2C1_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x06000000
+
+/* I2C2_CLK_ROOT */
+#define I2C2_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define I2C2_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define I2C2_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x01000000
+#define I2C2_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x07000000
+#define I2C2_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK               0x02000000
+#define I2C2_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x04000000
+#define I2C2_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x05000000
+#define I2C2_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x06000000
+
+/* I2C3_CLK_ROOT */
+#define I2C3_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define I2C3_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define I2C3_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x01000000
+#define I2C3_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x07000000
+#define I2C3_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK               0x02000000
+#define I2C3_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x04000000
+#define I2C3_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x05000000
+#define I2C3_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x06000000
+
+/* I2C4_CLK_ROOT */
+#define I2C4_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define I2C4_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define I2C4_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x01000000
+#define I2C4_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x07000000
+#define I2C4_CLK_ROOT_FROM_PLL_ENET_MAIN_50M_CLK               0x02000000
+#define I2C4_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x04000000
+#define I2C4_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x05000000
+#define I2C4_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x06000000
+
+/* UART1_CLK_ROOT */
+#define UART1_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define UART1_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK              0x04000000
+#define UART1_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK              0x01000000
+#define UART1_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK             0x03000000
+#define UART1_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK              0x02000000
+#define UART1_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x07000000
+#define UART1_CLK_ROOT_FROM_EXT_CLK_2                          0x05000000
+#define UART1_CLK_ROOT_FROM_EXT_CLK_4                          0x06000000
+
+/* UART2_CLK_ROOT */
+#define UART2_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define UART2_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK              0x04000000
+#define UART2_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK              0x01000000
+#define UART2_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK             0x03000000
+#define UART2_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK              0x02000000
+#define UART2_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x07000000
+#define UART2_CLK_ROOT_FROM_EXT_CLK_2                          0x05000000
+#define UART2_CLK_ROOT_FROM_EXT_CLK_3                          0x06000000
+
+/* UART3_CLK_ROOT */
+#define UART3_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define UART3_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK              0x04000000
+#define UART3_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK              0x01000000
+#define UART3_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK             0x03000000
+#define UART3_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK              0x02000000
+#define UART3_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x07000000
+#define UART3_CLK_ROOT_FROM_EXT_CLK_2                          0x05000000
+#define UART3_CLK_ROOT_FROM_EXT_CLK_4                          0x06000000
+
+/* UART4_CLK_ROOT */
+#define UART4_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define UART4_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK              0x04000000
+#define UART4_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK              0x01000000
+#define UART4_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK             0x03000000
+#define UART4_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK              0x02000000
+#define UART4_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x07000000
+#define UART4_CLK_ROOT_FROM_EXT_CLK_2                          0x05000000
+#define UART4_CLK_ROOT_FROM_EXT_CLK_3                          0x06000000
+
+/* UART5_CLK_ROOT */
+#define UART5_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define UART5_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK              0x04000000
+#define UART5_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK              0x01000000
+#define UART5_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK             0x03000000
+#define UART5_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK              0x02000000
+#define UART5_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x07000000
+#define UART5_CLK_ROOT_FROM_EXT_CLK_2                          0x05000000
+#define UART5_CLK_ROOT_FROM_EXT_CLK_4                          0x06000000
+
+/* UART6_CLK_ROOT */
+#define UART6_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define UART6_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK              0x04000000
+#define UART6_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK              0x01000000
+#define UART6_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK             0x03000000
+#define UART6_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK              0x02000000
+#define UART6_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x07000000
+#define UART6_CLK_ROOT_FROM_EXT_CLK_2                          0x05000000
+#define UART6_CLK_ROOT_FROM_EXT_CLK_3                          0x06000000
+
+/* UART7_CLK_ROOT */
+#define UART7_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define UART7_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK              0x04000000
+#define UART7_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK              0x01000000
+#define UART7_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK             0x03000000
+#define UART7_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK              0x02000000
+#define UART7_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x07000000
+#define UART7_CLK_ROOT_FROM_EXT_CLK_2                          0x05000000
+#define UART7_CLK_ROOT_FROM_EXT_CLK_4                          0x06000000
+
+/* ECSPI1_CLK_ROOT */
+#define ECSPI1_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define ECSPI1_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK             0x04000000
+#define ECSPI1_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK             0x01000000
+#define ECSPI1_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK             0x03000000
+#define ECSPI1_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                  0x05000000
+#define ECSPI1_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK            0x06000000
+#define ECSPI1_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK             0x02000000
+#define ECSPI1_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK             0x07000000
+
+/* ECSPI2_CLK_ROOT */
+#define ECSPI2_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define ECSPI2_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK             0x04000000
+#define ECSPI2_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK             0x01000000
+#define ECSPI2_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK             0x03000000
+#define ECSPI2_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                  0x05000000
+#define ECSPI2_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK            0x06000000
+#define ECSPI2_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK             0x02000000
+#define ECSPI2_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK             0x07000000
+
+/* ECSPI3_CLK_ROOT */
+#define ECSPI3_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define ECSPI3_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK             0x04000000
+#define ECSPI3_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK             0x01000000
+#define ECSPI3_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK             0x03000000
+#define ECSPI3_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                  0x05000000
+#define ECSPI3_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK            0x06000000
+#define ECSPI3_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK             0x02000000
+#define ECSPI3_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK             0x07000000
+
+/* ECSPI4_CLK_ROOT */
+#define ECSPI4_CLK_ROOT_FROM_OSC_24M_CLK                       0x00000000
+#define ECSPI4_CLK_ROOT_FROM_PLL_SYS_MAIN_480M_CLK             0x04000000
+#define ECSPI4_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK             0x01000000
+#define ECSPI4_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK             0x03000000
+#define ECSPI4_CLK_ROOT_FROM_PLL_SYS_PFD4_CLK                  0x05000000
+#define ECSPI4_CLK_ROOT_FROM_PLL_ENET_MAIN_250M_CLK            0x06000000
+#define ECSPI4_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK             0x02000000
+#define ECSPI4_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK             0x07000000
+
+/* PWM1_CLK_ROOT */
+#define PWM1_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define PWM1_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x02000000
+#define PWM1_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK              0x01000000
+#define PWM1_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x03000000
+#define PWM1_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x04000000
+#define PWM1_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x07000000
+#define PWM1_CLK_ROOT_FROM_REF_1M_CLK                          0x06000000
+#define PWM1_CLK_ROOT_FROM_EXT_CLK_1                           0x05000000
+
+/* PWM2_CLK_ROOT */
+#define PWM2_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define PWM2_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x02000000
+#define PWM2_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK              0x01000000
+#define PWM2_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x03000000
+#define PWM2_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x04000000
+#define PWM2_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x07000000
+#define PWM2_CLK_ROOT_FROM_REF_1M_CLK                          0x06000000
+#define PWM2_CLK_ROOT_FROM_EXT_CLK_1                           0x05000000
+
+/* PWM3_CLK_ROOT */
+#define PWM3_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define PWM3_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x02000000
+#define PWM3_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK              0x01000000
+#define PWM3_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x03000000
+#define PWM3_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x04000000
+#define PWM3_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x07000000
+#define PWM3_CLK_ROOT_FROM_REF_1M_CLK                          0x06000000
+#define PWM3_CLK_ROOT_FROM_EXT_CLK_2                           0x05000000
+
+/* PWM4_CLK_ROOT */
+#define PWM4_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define PWM4_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x02000000
+#define PWM4_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK              0x01000000
+#define PWM4_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x03000000
+#define PWM4_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x04000000
+#define PWM4_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x07000000
+#define PWM4_CLK_ROOT_FROM_REF_1M_CLK                          0x06000000
+#define PWM4_CLK_ROOT_FROM_EXT_CLK_2                           0x05000000
+
+/* FLEXTIMER1_CLK_ROOT */
+#define FLEXTIMER1_CLK_ROOT_FROM_OSC_24M_CLK                   0x00000000
+#define FLEXTIMER1_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK         0x02000000
+#define FLEXTIMER1_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK                0x01000000
+#define FLEXTIMER1_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK         0x03000000
+#define FLEXTIMER1_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK            0x04000000
+#define FLEXTIMER1_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK            0x07000000
+#define FLEXTIMER1_CLK_ROOT_FROM_REF_1M_CLK                    0x06000000
+#define FLEXTIMER1_CLK_ROOT_FROM_EXT_CLK_3                     0x05000000
+
+/* FLEXTIMER2_CLK_ROOT */
+#define FLEXTIMER2_CLK_ROOT_FROM_OSC_24M_CLK                   0x00000000
+#define FLEXTIMER2_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK         0x02000000
+#define FLEXTIMER2_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK                0x01000000
+#define FLEXTIMER2_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK         0x03000000
+#define FLEXTIMER2_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK            0x04000000
+#define FLEXTIMER2_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK            0x07000000
+#define FLEXTIMER2_CLK_ROOT_FROM_REF_1M_CLK                    0x06000000
+#define FLEXTIMER2_CLK_ROOT_FROM_EXT_CLK_3                     0x05000000
+
+/* SIM1_CLK_ROOT */
+#define SIM1_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define SIM1_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define SIM1_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x02000000
+#define SIM1_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x01000000
+#define SIM1_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                    0x07000000
+#define SIM1_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK              0x06000000
+#define SIM1_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x05000000
+#define SIM1_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x04000000
+
+/* SIM2_CLK_ROOT */
+#define SIM2_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define SIM2_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define SIM2_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x02000000
+#define SIM2_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x01000000
+#define SIM2_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                    0x07000000
+#define SIM2_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK              0x06000000
+#define SIM2_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x05000000
+#define SIM2_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x04000000
+
+/* GPT1_CLK_ROOT */
+#define GPT1_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define GPT1_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK               0x02000000
+#define GPT1_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK              0x01000000
+#define GPT1_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x03000000
+#define GPT1_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x06000000
+#define GPT1_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x04000000
+#define GPT1_CLK_ROOT_FROM_REF_1M_CLK                          0x05000000
+#define GPT1_CLK_ROOT_FROM_EXT_CLK_1                           0x07000000
+
+/* GPT2_CLK_ROOT */
+#define GPT2_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define GPT2_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK               0x02000000
+#define GPT2_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK              0x01000000
+#define GPT2_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x03000000
+#define GPT2_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x06000000
+#define GPT2_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x04000000
+#define GPT2_CLK_ROOT_FROM_REF_1M_CLK                          0x05000000
+#define GPT2_CLK_ROOT_FROM_EXT_CLK_2                           0x07000000
+
+/* GPT3_CLK_ROOT */
+#define GPT3_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define GPT3_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK               0x02000000
+#define GPT3_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK              0x01000000
+#define GPT3_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x03000000
+#define GPT3_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x06000000
+#define GPT3_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x04000000
+#define GPT3_CLK_ROOT_FROM_REF_1M_CLK                          0x05000000
+#define GPT3_CLK_ROOT_FROM_EXT_CLK_3                           0x07000000
+
+/* GPT4_CLK_ROOT */
+#define GPT4_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define GPT4_CLK_ROOT_FROM_PLL_SYS_PFD0_392M_CLK               0x02000000
+#define GPT4_CLK_ROOT_FROM_PLL_ENET_MAIN_100M_CLK              0x01000000
+#define GPT4_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK               0x03000000
+#define GPT4_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK                  0x06000000
+#define GPT4_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK                  0x04000000
+#define GPT4_CLK_ROOT_FROM_REF_1M_CLK                          0x05000000
+#define GPT4_CLK_ROOT_FROM_EXT_CLK_4                           0x07000000
+
+/* TRACE_CLK_ROOT */
+#define TRACE_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define TRACE_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK             0x03000000
+#define TRACE_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK              0x02000000
+#define TRACE_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK              0x01000000
+#define TRACE_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK             0x04000000
+#define TRACE_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x05000000
+#define TRACE_CLK_ROOT_FROM_EXT_CLK_1                          0x06000000
+#define TRACE_CLK_ROOT_FROM_EXT_CLK_3                          0x07000000
+
+/* WDOG_CLK_ROOT */
+#define WDOG_CLK_ROOT_FROM_OSC_24M_CLK                         0x00000000
+#define WDOG_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK              0x03000000
+#define WDOG_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK               0x02000000
+#define WDOG_CLK_ROOT_FROM_PLL_SYS_PFD1_166M_CLK               0x07000000
+#define WDOG_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK               0x01000000
+#define WDOG_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK              0x04000000
+#define WDOG_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK               0x05000000
+#define WDOG_CLK_ROOT_FROM_REF_1M_CLK                          0x06000000
+
+/* CSI_MCLK_CLK_ROOT */
+#define CSI_MCLK_CLK_ROOT_FROM_OSC_24M_CLK                     0x00000000
+#define CSI_MCLK_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK          0x03000000
+#define CSI_MCLK_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK           0x02000000
+#define CSI_MCLK_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK           0x01000000
+#define CSI_MCLK_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK          0x04000000
+#define CSI_MCLK_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK              0x05000000
+#define CSI_MCLK_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK              0x06000000
+#define CSI_MCLK_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK           0x07000000
+
+/* AUDIO_MCLK_CLK_ROOT */
+#define AUDIO_MCLK_CLK_ROOT_FROM_OSC_24M_CLK                   0x00000000
+#define AUDIO_MCLK_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK                0x03000000
+#define AUDIO_MCLK_CLK_ROOT_FROM_PLL_SYS_MAIN_120M_CLK         0x02000000
+#define AUDIO_MCLK_CLK_ROOT_FROM_PLL_SYS_PFD2_135M_CLK         0x01000000
+#define AUDIO_MCLK_CLK_ROOT_FROM_PLL_ENET_MAIN_125M_CLK                0x04000000
+#define AUDIO_MCLK_CLK_ROOT_FROM_PLL_AUDIO_MAIN_CLK            0x05000000
+#define AUDIO_MCLK_CLK_ROOT_FROM_PLL_VIDEO_MAIN_CLK            0x06000000
+#define AUDIO_MCLK_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK         0x07000000
+
+/* WRCLK_CLK_ROOT */
+#define WRCLK_CLK_ROOT_FROM_OSC_24M_CLK                                0x00000000
+#define WRCLK_CLK_ROOT_FROM_PLL_DRAM_MAIN_533M_CLK             0x02000000
+#define WRCLK_CLK_ROOT_FROM_PLL_SYS_MAIN_240M_CLK              0x04000000
+#define WRCLK_CLK_ROOT_FROM_PLL_SYS_PFD2_270M_CLK              0x05000000
+#define WRCLK_CLK_ROOT_FROM_PLL_SYS_PFD7_CLK                   0x07000000
+#define WRCLK_CLK_ROOT_FROM_PLL_ENET_MAIN_500M_CLK             0x06000000
+#define WRCLK_CLK_ROOT_FROM_PLL_ENET_MAIN_40M_CLK              0x01000000
+#define WRCLK_CLK_ROOT_FROM_PLL_USB_MAIN_480M_CLK              0x03000000
+
+/* IPP_DO_CLKO1 */
+#define IPP_DO_CLKO1_FROM_OSC_24M_CLK                          0x00000000
+#define IPP_DO_CLKO1_FROM_PLL_DRAM_MAIN_533M_CLK               0x06000000
+#define IPP_DO_CLKO1_FROM_PLL_SYS_MAIN_480M_CLK                        0x01000000
+#define IPP_DO_CLKO1_FROM_PLL_SYS_MAIN_240M_CLK                        0x02000000
+#define IPP_DO_CLKO1_FROM_PLL_SYS_PFD0_196M_CLK                        0x03000000
+#define IPP_DO_CLKO1_FROM_PLL_SYS_PFD3_CLK                     0x04000000
+#define IPP_DO_CLKO1_FROM_PLL_ENET_MAIN_500M_CLK               0x05000000
+#define IPP_DO_CLKO1_FROM_REF_1M_CLK                           0x07000000
+
+/* IPP_DO_CLKO2 */
+#define IPP_DO_CLKO2_FROM_OSC_24M_CLK                          0x00000000
+#define IPP_DO_CLKO2_FROM_PLL_SYS_MAIN_240M_CLK                        0x01000000
+#define IPP_DO_CLKO2_FROM_PLL_SYS_PFD0_392M_CLK                        0x02000000
+#define IPP_DO_CLKO2_FROM_PLL_SYS_PFD1_166M_CLK                        0x03000000
+#define IPP_DO_CLKO2_FROM_PLL_SYS_PFD4_CLK                     0x04000000
+#define IPP_DO_CLKO2_FROM_PLL_AUDIO_MAIN_CLK                   0x05000000
+#define IPP_DO_CLKO2_FROM_PLL_VIDEO_MAIN_CLK                   0x06000000
+#define IPP_DO_CLKO2_FROM_OSC_32K_CLK                          0x07000000
+
+#endif
diff --git a/arch/arm/include/asm/arch-mx7/gpio.h b/arch/arm/include/asm/arch-mx7/gpio.h
new file mode 100644 (file)
index 0000000..b7890c2
--- /dev/null
@@ -0,0 +1,12 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_MX7_GPIO_H
+#define __ASM_ARCH_MX7_GPIO_H
+
+#include <asm/imx-common/gpio.h>
+
+#endif /* __ASM_ARCH_MX7_GPIO_H */
diff --git a/arch/arm/include/asm/arch-mx7/imx-regs.h b/arch/arm/include/asm/arch-mx7/imx-regs.h
new file mode 100644 (file)
index 0000000..4dc11ee
--- /dev/null
@@ -0,0 +1,1307 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_MX7_IMX_REGS_H__
+#define __ASM_ARCH_MX7_IMX_REGS_H__
+
+#define ARCH_MXC
+
+#define CONFIG_SYS_CACHELINE_SIZE      64
+
+#define ROM_SW_INFO_ADDR                0x000001E8
+#define ROMCP_ARB_BASE_ADDR             0x00000000
+#define ROMCP_ARB_END_ADDR              0x00017FFF
+#define BOOT_ROM_BASE_ADDR              ROMCP_ARB_BASE_ADDR
+#define CAAM_ARB_BASE_ADDR              0x00100000
+#define CAAM_ARB_END_ADDR               0x00107FFF
+#define GIC400_ARB_BASE_ADDR            0x31000000
+#define GIC400_ARB_END_ADDR             0x31007FFF
+#define APBH_DMA_ARB_BASE_ADDR          0x33000000
+#define APBH_DMA_ARB_END_ADDR           0x33007FFF
+#define M4_BOOTROM_BASE_ADDR            0x00180000
+
+#define MXS_APBH_BASE                  APBH_DMA_ARB_BASE_ADDR
+#define MXS_GPMI_BASE                  (APBH_DMA_ARB_BASE_ADDR + 0x02000)
+#define MXS_BCH_BASE                   (APBH_DMA_ARB_BASE_ADDR + 0x04000)
+
+/* GPV - PL301 configuration ports */
+#define GPV0_BASE_ADDR                  0x32000000
+#define GPV1_BASE_ADDR                  0x32100000
+#define GPV2_BASE_ADDR                  0x32200000
+#define GPV3_BASE_ADDR                  0x32300000
+#define GPV4_BASE_ADDR                  0x32400000
+#define GPV5_BASE_ADDR                  0x32500000
+#define GPV6_BASE_ADDR                  0x32600000
+#define GPV7_BASE_ADDR                  0x32700000
+
+#define OCRAM_ARB_BASE_ADDR             0x00900000
+#define OCRAM_ARB_END_ADDR              0x0091FFFF
+#define OCRAM_EPDC_BASE_ADDR            0x00920000
+#define OCRAM_EPDC_END_ADDR             0x0093FFFF
+#define OCRAM_PXP_BASE_ADDR             0x00940000
+#define OCRAM_PXP_END_ADDR              0x00947FFF
+#define IRAM_BASE_ADDR                  OCRAM_ARB_BASE_ADDR
+#define IRAM_SIZE                      0x00020000
+
+#define AIPS1_ARB_BASE_ADDR             0x30000000
+#define AIPS1_ARB_END_ADDR              0x303FFFFF
+#define AIPS2_ARB_BASE_ADDR             0x30400000
+#define AIPS2_ARB_END_ADDR              0x307FFFFF
+#define AIPS3_ARB_BASE_ADDR             0x30800000
+#define AIPS3_ARB_END_ADDR              0x30BFFFFF
+
+#define WEIM_ARB_BASE_ADDR              0x28000000
+#define WEIM_ARB_END_ADDR               0x2FFFFFFF
+
+#define QSPI0_ARB_BASE_ADDR             0x60000000
+#define QSPI0_ARB_END_ADDR              0x6FFFFFFF
+#define PCIE_ARB_BASE_ADDR              0x40000000
+#define PCIE_ARB_END_ADDR               0x4FFFFFFF
+#define PCIE_REG_BASE_ADDR              0x33800000
+#define PCIE_REG_END_ADDR               0x33803FFF
+
+#define MMDC0_ARB_BASE_ADDR             0x80000000
+#define MMDC0_ARB_END_ADDR              0xBFFFFFFF
+#define MMDC1_ARB_BASE_ADDR             0xC0000000
+#define MMDC1_ARB_END_ADDR              0xFFFFFFFF
+
+/* Cortex-A9 MPCore private memory region */
+#define ARM_PERIPHBASE                  0x31000000
+#define SCU_BASE_ADDR                   ARM_PERIPHBASE
+#define GLOBAL_TIMER_BASE_ADDR          (ARM_PERIPHBASE + 0x0200)
+#define PRIVATE_TIMERS_WD_BASE_ADDR     (ARM_PERIPHBASE + 0x0600)
+
+
+/* Defines for Blocks connected via AIPS (SkyBlue) */
+#define AIPS_TZ1_BASE_ADDR              AIPS1_ARB_BASE_ADDR
+#define AIPS_TZ2_BASE_ADDR              AIPS2_ARB_BASE_ADDR
+#define AIPS_TZ3_BASE_ADDR              AIPS3_ARB_BASE_ADDR
+
+/* DAP base-address */
+#define ARM_IPS_BASE_ADDR               AIPS1_ARB_BASE_ADDR
+
+/* AIPS_TZ#1- On Platform */
+#define AIPS1_ON_BASE_ADDR              (AIPS_TZ1_BASE_ADDR+0x1F0000)
+/* AIPS_TZ#1- Off Platform */
+#define AIPS1_OFF_BASE_ADDR             (AIPS_TZ1_BASE_ADDR+0x200000)
+
+#define GPIO1_BASE_ADDR                 AIPS1_OFF_BASE_ADDR
+#define GPIO2_BASE_ADDR                 (AIPS1_OFF_BASE_ADDR+0x10000)
+#define GPIO3_BASE_ADDR                 (AIPS1_OFF_BASE_ADDR+0x20000)
+#define GPIO4_BASE_ADDR                 (AIPS1_OFF_BASE_ADDR+0x30000)
+#define GPIO5_BASE_ADDR                 (AIPS1_OFF_BASE_ADDR+0x40000)
+#define GPIO6_BASE_ADDR                 (AIPS1_OFF_BASE_ADDR+0x50000)
+#define GPIO7_BASE_ADDR                 (AIPS1_OFF_BASE_ADDR+0x60000)
+#define IOMUXC_LPSR_GPR_BASE_ADDR      (AIPS1_OFF_BASE_ADDR+0x70000)
+#define WDOG1_BASE_ADDR                (AIPS1_OFF_BASE_ADDR+0x80000)
+#define WDOG2_BASE_ADDR                (AIPS1_OFF_BASE_ADDR+0x90000)
+#define WDOG3_BASE_ADDR                (AIPS1_OFF_BASE_ADDR+0xA0000)
+#define WDOG4_BASE_ADDR                (AIPS1_OFF_BASE_ADDR+0xB0000)
+#define IOMUXC_LPSR_BASE_ADDR          (AIPS1_OFF_BASE_ADDR+0xC0000)
+#define GPT_IPS_BASE_ADDR              (AIPS1_OFF_BASE_ADDR+0xD0000)
+#define GPT1_BASE_ADDR GPT_IPS_BASE_ADDR
+#define GPT2_IPS_BASE_ADDR             (AIPS1_OFF_BASE_ADDR+0xE0000)
+#define GPT3_IPS_BASE_ADDR             (AIPS1_OFF_BASE_ADDR+0xF0000)
+#define GPT4_IPS_BASE_ADDR             (AIPS1_OFF_BASE_ADDR+0x100000)
+#define ROMCP_IPS_BASE_ADDR            (AIPS1_OFF_BASE_ADDR+0x110000)
+#define KPP_IPS_BASE_ADDR              (AIPS1_OFF_BASE_ADDR+0x120000)
+#define IOMUXC_IPS_BASE_ADDR           (AIPS1_OFF_BASE_ADDR+0x130000)
+#define IOMUXC_BASE_ADDR               IOMUXC_IPS_BASE_ADDR
+#define IOMUXC_GPR_BASE_ADDR           (AIPS1_OFF_BASE_ADDR+0x140000)
+#define OCOTP_BASE_ADDR                (AIPS1_OFF_BASE_ADDR+0x150000)
+#define ANATOP_BASE_ADDR               (AIPS1_OFF_BASE_ADDR+0x160000)
+#define SNVS_BASE_ADDR                 (AIPS1_OFF_BASE_ADDR+0x170000)
+#define CCM_BASE_ADDR                  (AIPS1_OFF_BASE_ADDR+0x180000)
+#define SRC_BASE_ADDR                  (AIPS1_OFF_BASE_ADDR+0x190000)
+#define GPC_IPS_BASE_ADDR              (AIPS1_OFF_BASE_ADDR+0x1A0000)
+#define SEMA41_IPS_BASE_ADDR           (AIPS1_OFF_BASE_ADDR+0x1B0000)
+#define SEMA42_IPS_BASE_ADDR           (AIPS1_OFF_BASE_ADDR+0x1C0000)
+#define RDC_IPS_BASE_ADDR              (AIPS1_OFF_BASE_ADDR+0x1D0000)
+#define CSU_IPS_BASE_ADDR              (AIPS1_OFF_BASE_ADDR+0x1E0000)
+
+/* AIPS_TZ#2- On Platform */
+#define AIPS2_ON_BASE_ADDR              (AIPS_TZ2_BASE_ADDR+0x1F0000)
+/* AIPS_TZ#2- Off Platform */
+#define AIPS2_OFF_BASE_ADDR             (AIPS_TZ2_BASE_ADDR+0x200000)
+#define ADC1_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x10000)
+#define ADC2_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x20000)
+#define ECSPI4_BASE_ADDR                (AIPS2_OFF_BASE_ADDR+0x30000)
+#define FTM1_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x40000)
+#define FTM2_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x50000)
+#define PWM1_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x60000)
+#define PWM2_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x70000)
+#define PWM3_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x80000)
+#define PWM4_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x90000)
+#define SYSCNT_RD_IPS_BASE_ADDR         (AIPS2_OFF_BASE_ADDR+0xA0000)
+#define SYSCNT_CMP_IPS_BASE_ADDR        (AIPS2_OFF_BASE_ADDR+0xB0000)
+#define SYSCNT_CTRL_IPS_BASE_ADDR       (AIPS2_OFF_BASE_ADDR+0xC0000)
+#define PCIE_PHY_IPS_BASE_ADDR          (AIPS2_OFF_BASE_ADDR+0xD0000)
+#define EPDC_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0xF0000)
+#define EPDC_BASE_ADDR                  EPDC_IPS_BASE_ADDR
+#define EPXP_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x100000)
+#define CSI1_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x110000)
+#define ELCDIF1_IPS_BASE_ADDR           (AIPS2_OFF_BASE_ADDR+0x130000)
+#define MIPI_CSI2_IPS_BASE_ADDR         (AIPS2_OFF_BASE_ADDR+0x150000)
+#define MIPI_DSI_IPS_BASE_ADDR          (AIPS2_OFF_BASE_ADDR+0x160000)
+#define IP2APB_TZASC1_IPS_BASE_ADDR     (AIPS2_OFF_BASE_ADDR+0x180000)
+#define DDRPHY_IPS_BASE_ADDR            (AIPS2_OFF_BASE_ADDR+0x190000)
+#define DDRC_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x1A0000)
+#define IP2APB_PERFMON1_IPS_BASE_ADDR   (AIPS2_OFF_BASE_ADDR+0x1C0000)
+#define IP2APB_PERFMON2_IPS_BASE_ADDR   (AIPS2_OFF_BASE_ADDR+0x1D0000)
+#define IP2APB_AXIMON_IPS_BASE_ADDR     (AIPS2_OFF_BASE_ADDR+0x1E0000)
+#define QOSC_IPS_BASE_ADDR              (AIPS2_OFF_BASE_ADDR+0x1F0000)
+
+/* AIPS_TZ#3  - Global enable (0) */
+#define ECSPI1_BASE_ADDR                (AIPS_TZ3_BASE_ADDR+0x20000)
+#define ECSPI2_BASE_ADDR                (AIPS_TZ3_BASE_ADDR+0x30000)
+#define ECSPI3_BASE_ADDR                (AIPS_TZ3_BASE_ADDR+0x40000)
+#define UART1_IPS_BASE_ADDR             (AIPS_TZ3_BASE_ADDR+0x60000)
+#define UART3_IPS_BASE_ADDR             (AIPS_TZ3_BASE_ADDR+0x80000)
+#define UART2_IPS_BASE_ADDR             (AIPS_TZ3_BASE_ADDR+0x90000)
+#define SAI1_IPS_BASE_ADDR              (AIPS_TZ3_BASE_ADDR+0xA0000)
+#define SAI2_IPS_BASE_ADDR              (AIPS_TZ3_BASE_ADDR+0xB0000)
+#define SAI3_IPS_BASE_ADDR              (AIPS_TZ3_BASE_ADDR+0xC0000)
+#define SPBA_IPS_BASE_ADDR              (AIPS_TZ3_BASE_ADDR+0xF0000)
+#define CAAM_IPS_BASE_ADDR              (AIPS_TZ3_BASE_ADDR+0x100000)
+
+/* AIPS_TZ#3- On Platform */
+#define AIPS3_ON_BASE_ADDR              (AIPS_TZ3_BASE_ADDR+0x1F0000)
+/* AIPS_TZ#3- Off Platform */
+#define AIPS3_OFF_BASE_ADDR             (AIPS_TZ3_BASE_ADDR+0x200000)
+#define CAN1_IPS_BASE_ADDR              AIPS3_OFF_BASE_ADDR
+#define CAN2_IPS_BASE_ADDR              (AIPS3_OFF_BASE_ADDR+0x10000)
+#define I2C1_BASE_ADDR                  (AIPS3_OFF_BASE_ADDR+0x20000)
+#define I2C2_BASE_ADDR                  (AIPS3_OFF_BASE_ADDR+0x30000)
+#define I2C3_BASE_ADDR                  (AIPS3_OFF_BASE_ADDR+0x40000)
+#define I2C4_BASE_ADDR                  (AIPS3_OFF_BASE_ADDR+0x50000)
+#define UART4_IPS_BASE_ADDR             (AIPS3_OFF_BASE_ADDR+0x60000)
+#define UART5_IPS_BASE_ADDR             (AIPS3_OFF_BASE_ADDR+0x70000)
+#define UART6_IPS_BASE_ADDR             (AIPS3_OFF_BASE_ADDR+0x80000)
+#define UART7_IPS_BASE_ADDR             (AIPS3_OFF_BASE_ADDR+0x90000)
+#define MUCPU_IPS_BASE_ADDR             (AIPS3_OFF_BASE_ADDR+0xA0000)
+#define MUDSP_IPS_BASE_ADDR             (AIPS3_OFF_BASE_ADDR+0xB0000)
+#define HS_IPS_BASE_ADDR                (AIPS3_OFF_BASE_ADDR+0xC0000)
+#define USBOH2_PL301_IPS_BASE_ADDR      (AIPS3_OFF_BASE_ADDR+0xD0000)
+#define USBOTG1_IPS_BASE_ADDR          (AIPS3_OFF_BASE_ADDR+0x110000)
+#define USBOTG2_IPS_BASE_ADDR          (AIPS3_OFF_BASE_ADDR+0x120000)
+#define USBHSIC_IPS_BASE_ADDR          (AIPS3_OFF_BASE_ADDR+0x130000)
+#define USDHC1_BASE_ADDR                (AIPS3_OFF_BASE_ADDR+0x140000)
+#define USDHC2_BASE_ADDR                (AIPS3_OFF_BASE_ADDR+0x150000)
+#define USDHC3_BASE_ADDR                (AIPS3_OFF_BASE_ADDR+0x160000)
+#define EMVSIM1_IPS_BASE_ADDR           (AIPS3_OFF_BASE_ADDR+0x190000)
+#define EMVSIM2_IPS_BASE_ADDR           (AIPS3_OFF_BASE_ADDR+0x1A0000)
+#define SIM1_IPS_BASE_ADDR              (AIPS3_OFF_BASE_ADDR+0x190000)
+#define SIM2_IPS_BASE_ADDR              (AIPS3_OFF_BASE_ADDR+0x1A0000)
+#define QSPI1_IPS_BASE_ADDR             (AIPS3_OFF_BASE_ADDR+0x1B0000)
+#define WEIM_IPS_BASE_ADDR              (AIPS3_OFF_BASE_ADDR+0x1C0000)
+#define SDMA_PORT_IPS_HOST_BASE_ADDR    (AIPS3_OFF_BASE_ADDR+0x1D0000)
+#define ENET_IPS_BASE_ADDR              (AIPS3_OFF_BASE_ADDR+0x1E0000)
+#define ENET2_IPS_BASE_ADDR             (AIPS3_OFF_BASE_ADDR+0x1F0000)
+
+#define AIPS1_BASE_ADDR                        AIPS1_ON_BASE_ADDR
+#define AIPS2_BASE_ADDR                        AIPS2_ON_BASE_ADDR
+#define AIPS3_BASE_ADDR                        AIPS3_ON_BASE_ADDR
+
+#define SDMA_IPS_HOST_BASE_ADDR         SDMA_PORT_IPS_HOST_BASE_ADDR
+#define SDMA_IPS_HOST_IPS_BASE_ADDR     SDMA_PORT_IPS_HOST_BASE_ADDR
+
+#define SCTR_BASE_ADDR SYSCNT_CTRL_IPS_BASE_ADDR
+#define DEBUG_MONITOR_BASE_ADDR IP2APB_AXIMON_IPS_BASE_ADDR
+
+#define USB_BASE_ADDR USBOTG1_IPS_BASE_ADDR
+
+#define FEC_QUIRK_ENET_MAC
+#define SNVS_LPGPR     0x68
+
+#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
+#include <asm/types.h>
+
+extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac);
+
+/* System Reset Controller (SRC) */
+struct src {
+       u32     scr;
+       u32 a7rcr0;
+       u32 a7rcr1;
+       u32 m4rcr;
+       u32 reserved1;
+       u32 ercr;
+       u32 reserved2;
+       u32 hsicphy_rcr;
+       u32 usbophy1_rcr;
+       u32 usbophy2_rcr;
+       u32 mipiphy_rcr;
+       u32 pciephy_rcr;
+       u32 reserved3[10];
+       u32     sbmr1;
+       u32     srsr;
+       u32     reserved4[2];
+       u32     sisr;
+       u32     simr;
+       u32 sbmr2;
+       u32 gpr1;
+       u32 gpr2;
+       u32 gpr3;
+       u32 gpr4;
+       u32 gpr5;
+       u32 gpr6;
+       u32 gpr7;
+       u32 gpr8;
+       u32 gpr9;
+       u32 gpr10;
+       u32 reserved5[985];
+       u32 ddrc_rcr;
+};
+
+/* GPR0 Bit Fields */
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL0_MASK     0x1u
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL0_SHIFT    0
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL1_MASK     0x2u
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL1_SHIFT    1
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL2_MASK     0x4u
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL2_SHIFT    2
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL3_MASK     0x8u
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL3_SHIFT    3
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL4_MASK     0x10u
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL4_SHIFT    4
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL5_MASK     0x20u
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL5_SHIFT    5
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL6_MASK     0x40u
+#define IOMUXC_GPR_GPR0_DMAREQ_MUX_SEL6_SHIFT    6
+/* GPR1 Bit Fields */
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ACT_CS0_MASK    0x1u
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ACT_CS0_SHIFT   0
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS0_MASK     0x6u
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS0_SHIFT    1
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS0(x)       (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS0_SHIFT))&IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS0_MASK)
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ACT_CS1_MASK    0x8u
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ACT_CS1_SHIFT   3
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS1_MASK     0x30u
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS1_SHIFT    4
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS1(x)       (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS1_SHIFT))&IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS1_MASK)
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ACT_CS2_MASK    0x40u
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ACT_CS2_SHIFT   6
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS2_MASK     0x180u
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS2_SHIFT    7
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS2(x)       (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS2_SHIFT))&IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS2_MASK)
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ACT_CS3_MASK    0x200u
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ACT_CS3_SHIFT   9
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS3_MASK     0xC00u
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS3_SHIFT    10
+#define IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS3(x)       (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS3_SHIFT))&IOMUXC_GPR_GPR1_GPR_WEIM_ADDRS3_MASK)
+#define IOMUXC_GPR_GPR1_GPR_IRQ_MASK             0x1000u
+#define IOMUXC_GPR_GPR1_GPR_IRQ_SHIFT            12
+#define IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_MASK 0x2000u
+#define IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_SHIFT 13
+#define IOMUXC_GPR_GPR1_GPR_ENET2_TX_CLK_SEL_MASK 0x4000u
+#define IOMUXC_GPR_GPR1_GPR_ENET2_TX_CLK_SEL_SHIFT 14
+#define IOMUXC_GPR_GPR1_GPR_ANATOP_TESTMODE_MASK 0x8000u
+#define IOMUXC_GPR_GPR1_GPR_ANATOP_TESTMODE_SHIFT 15
+#define IOMUXC_GPR_GPR1_GPR_PAD_ADD_DS_MASK      0x10000u
+#define IOMUXC_GPR_GPR1_GPR_PAD_ADD_DS_SHIFT     16
+#define IOMUXC_GPR_GPR1_GPR_ENET1_CLK_DIR_MASK   0x20000u
+#define IOMUXC_GPR_GPR1_GPR_ENET1_CLK_DIR_SHIFT  17
+#define IOMUXC_GPR_GPR1_GPR_ENET2_CLK_DIR_MASK   0x40000u
+#define IOMUXC_GPR_GPR1_GPR_ENET2_CLK_DIR_SHIFT  18
+#define IOMUXC_GPR_GPR1_GPR_EXC_ERR_RESP_EN_MASK 0x400000u
+#define IOMUXC_GPR_GPR1_GPR_EXC_ERR_RESP_EN_SHIFT 22
+#define IOMUXC_GPR_GPR1_GPR_TZASC1_SECURE_BOOT_LOCK_MASK 0x800000u
+#define IOMUXC_GPR_GPR1_GPR_TZASC1_SECURE_BOOT_LOCK_SHIFT 23
+#define IOMUXC_GPR_GPR1_GPR_DBG_ACK_MASK         0x30000000u
+#define IOMUXC_GPR_GPR1_GPR_DBG_ACK_SHIFT        28
+#define IOMUXC_GPR_GPR1_GPR_DBG_ACK(x)           (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR1_GPR_DBG_ACK_SHIFT))&IOMUXC_GPR_GPR1_GPR_DBG_ACK_MASK)
+#define IOMUXC_GPR_GPR1_GPR_ENABLE_OCRAM_EPDC_MASK 0x40000000u
+#define IOMUXC_GPR_GPR1_GPR_ENABLE_OCRAM_EPDC_SHIFT 30
+/* GPR2 Bit Fields */
+#define IOMUXC_GPR_GPR2_GPR_MEM_PXP_LOWPOWER_MASK 0x1u
+#define IOMUXC_GPR_GPR2_GPR_MEM_PXP_LOWPOWER_SHIFT 0
+#define IOMUXC_GPR_GPR2_GPR_MEM_PXP_SD_MASK      0x2u
+#define IOMUXC_GPR_GPR2_GPR_MEM_PXP_SD_SHIFT     1
+#define IOMUXC_GPR_GPR2_GPR_MEM_PXP_DS_MASK      0x4u
+#define IOMUXC_GPR_GPR2_GPR_MEM_PXP_DS_SHIFT     2
+#define IOMUXC_GPR_GPR2_GPR_MEM_PXP_LS_MASK      0x8u
+#define IOMUXC_GPR_GPR2_GPR_MEM_PXP_LS_SHIFT     3
+#define IOMUXC_GPR_GPR2_GPR_MEM_LCDIF_LOWPOWER_MASK 0x10u
+#define IOMUXC_GPR_GPR2_GPR_MEM_LCDIF_LOWPOWER_SHIFT 4
+#define IOMUXC_GPR_GPR2_GPR_MEM_LCDIF_SD_MASK    0x20u
+#define IOMUXC_GPR_GPR2_GPR_MEM_LCDIF_SD_SHIFT   5
+#define IOMUXC_GPR_GPR2_GPR_MEM_LCDIF_DS_MASK    0x40u
+#define IOMUXC_GPR_GPR2_GPR_MEM_LCDIF_DS_SHIFT   6
+#define IOMUXC_GPR_GPR2_GPR_MEM_LCDIF_LS_MASK    0x80u
+#define IOMUXC_GPR_GPR2_GPR_MEM_LCDIF_LS_SHIFT   7
+#define IOMUXC_GPR_GPR2_GPR_MEM_EPDC_LOWPOWER_MASK 0x100u
+#define IOMUXC_GPR_GPR2_GPR_MEM_EPDC_LOWPOWER_SHIFT 8
+#define IOMUXC_GPR_GPR2_GPR_MEM_EPDC_SD_MASK     0x200u
+#define IOMUXC_GPR_GPR2_GPR_MEM_EPDC_SD_SHIFT    9
+#define IOMUXC_GPR_GPR2_GPR_MEM_EPDC_DS_MASK     0x400u
+#define IOMUXC_GPR_GPR2_GPR_MEM_EPDC_DS_SHIFT    10
+#define IOMUXC_GPR_GPR2_GPR_MEM_EPDC_LS_MASK     0x800u
+#define IOMUXC_GPR_GPR2_GPR_MEM_EPDC_LS_SHIFT    11
+#define IOMUXC_GPR_GPR2_GPR_MEM_CPU_LOWPOWER_MASK 0x1000u
+#define IOMUXC_GPR_GPR2_GPR_MEM_CPU_LOWPOWER_SHIFT 12
+#define IOMUXC_GPR_GPR2_GPR_MEM_CPU_SD_MASK      0x2000u
+#define IOMUXC_GPR_GPR2_GPR_MEM_CPU_SD_SHIFT     13
+#define IOMUXC_GPR_GPR2_GPR_MEM_CPU_DS_MASK      0x4000u
+#define IOMUXC_GPR_GPR2_GPR_MEM_CPU_DS_SHIFT     14
+#define IOMUXC_GPR_GPR2_GPR_MEM_CPU_LS_MASK      0x8000u
+#define IOMUXC_GPR_GPR2_GPR_MEM_CPU_LS_SHIFT     15
+#define IOMUXC_GPR_GPR2_GPR_MQS_CLK_DIV_MASK     0xFF0000u
+#define IOMUXC_GPR_GPR2_GPR_MQS_CLK_DIV_SHIFT    16
+#define IOMUXC_GPR_GPR2_GPR_MQS_CLK_DIV(x)       (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR2_GPR_MQS_CLK_DIV_SHIFT))&IOMUXC_GPR_GPR2_GPR_MQS_CLK_DIV_MASK)
+#define IOMUXC_GPR_GPR2_GPR_MQS_SW_RST_MASK      0x1000000u
+#define IOMUXC_GPR_GPR2_GPR_MQS_SW_RST_SHIFT     24
+#define IOMUXC_GPR_GPR2_GPR_MQS_EN_MASK          0x2000000u
+#define IOMUXC_GPR_GPR2_GPR_MQS_EN_SHIFT         25
+#define IOMUXC_GPR_GPR2_GPR_MQS_OVERSAMPLE_MASK  0x4000000u
+#define IOMUXC_GPR_GPR2_GPR_MQS_OVERSAMPLE_SHIFT 26
+#define IOMUXC_GPR_GPR2_GPR_DRAM_RESET_BYPASS_MASK 0x8000000u
+#define IOMUXC_GPR_GPR2_GPR_DRAM_RESET_BYPASS_SHIFT 27
+#define IOMUXC_GPR_GPR2_GPR_DRAM_RESET_MASK      0x10000000u
+#define IOMUXC_GPR_GPR2_GPR_DRAM_RESET_SHIFT     28
+#define IOMUXC_GPR_GPR2_GPR_DRAM_CKE0_MASK       0x20000000u
+#define IOMUXC_GPR_GPR2_GPR_DRAM_CKE0_SHIFT      29
+#define IOMUXC_GPR_GPR2_GPR_DRAM_CKE1_MASK       0x40000000u
+#define IOMUXC_GPR_GPR2_GPR_DRAM_CKE1_SHIFT      30
+#define IOMUXC_GPR_GPR2_GPR_DRAM_CKE_BYPASS_MASK 0x80000000u
+#define IOMUXC_GPR_GPR2_GPR_DRAM_CKE_BYPASS_SHIFT 31
+/* GPR3 Bit Fields */
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_READ_DATA_WAIT_EN_MASK 0x1u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_READ_DATA_WAIT_EN_SHIFT 0
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_READ_ADDR_PIPELINE_EN_MASK 0x2u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_READ_ADDR_PIPELINE_EN_SHIFT 1
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_WRITE_DATA_PIPELINE_EN_MASK 0x4u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_WRITE_DATA_PIPELINE_EN_SHIFT 2
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_WRITE_ADDR_PIPELINE_EN_MASK 0x8u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_WRITE_ADDR_PIPELINE_EN_SHIFT 3
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_S_READ_DATA_WAIT_EN_MASK 0x10u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_S_READ_DATA_WAIT_EN_SHIFT 4
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_S_READ_ADDR_PIPELINE_EN_MASK 0x20u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_S_READ_ADDR_PIPELINE_EN_SHIFT 5
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_S_WRITE_DATA_PIPELINE_EN_MASK 0x40u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_S_WRITE_DATA_PIPELINE_EN_SHIFT 6
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_S_WRITE_ADDR_PIPELINE_EN_MASK 0x80u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_S_WRITE_ADDR_PIPELINE_EN_SHIFT 7
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_EPDC_READ_DATA_WAIT_EN_MASK 0x100u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_EPDC_READ_DATA_WAIT_EN_SHIFT 8
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_EPDC_READ_ADDR_PIPELINE_EN_MASK 0x200u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_EPDC_READ_ADDR_PIPELINE_EN_SHIFT 9
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_EPDC_WRITE_DATA_PIPELINE_EN_MASK 0x400u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_EPDC_WRITE_DATA_PIPELINE_EN_SHIFT 10
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_EPDC_WRITE_ADDR_PIPELINE_EN_MASK 0x800u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_EPDC_WRITE_ADDR_PIPELINE_EN_SHIFT 11
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_PXP_READ_DATA_WAIT_EN_MASK 0x1000u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_PXP_READ_DATA_WAIT_EN_SHIFT 12
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_PXP_READ_ADDR_PIPELINE_EN_MASK 0x2000u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_PXP_READ_ADDR_PIPELINE_EN_SHIFT 13
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_PXP_WRITE_DATA_PIPELINE_EN_MASK 0x4000u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_PXP_WRITE_DATA_PIPELINE_EN_SHIFT 14
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_PXP_WRITE_ADDR_PIPELINE_EN_MASK 0x8000u
+#define IOMUXC_GPR_GPR3_GPR_OCRAM_CTRL_PXP_WRITE_ADDR_PIPELINE_EN_SHIFT 15
+#define IOMUXC_GPR_GPR3_ocram_ctrl_read_data_wait_en_update_pending_MASK 0x10000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_read_data_wait_en_update_pending_SHIFT 16
+#define IOMUXC_GPR_GPR3_ocram_ctrl_read_addr_pipeline_en_update_pending_MASK 0x20000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_read_addr_pipeline_en_update_pending_SHIFT 17
+#define IOMUXC_GPR_GPR3_ocram_ctrl_write_data_pipeline_en_update_pending_MASK 0x40000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_write_data_pipeline_en_update_pending_SHIFT 18
+#define IOMUXC_GPR_GPR3_ocram_ctrl_write_addr_pipeline_en_update_pending_MASK 0x80000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_write_addr_pipeline_en_update_pending_SHIFT 19
+#define IOMUXC_GPR_GPR3_ocram_ctrl_s_read_data_wait_en_update_pending_MASK 0x100000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_s_read_data_wait_en_update_pending_SHIFT 20
+#define IOMUXC_GPR_GPR3_ocram_ctrl_s_read_addr_pipeline_en_update_pending_MASK 0x200000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_s_read_addr_pipeline_en_update_pending_SHIFT 21
+#define IOMUXC_GPR_GPR3_ocram_ctrl_s_write_data_pipeline_en_update_pending_MASK 0x400000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_s_write_data_pipeline_en_update_pending_SHIFT 22
+#define IOMUXC_GPR_GPR3_ocram_ctrl_s_write_addr_pipeline_en_update_pending_MASK 0x800000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_s_write_addr_pipeline_en_update_pending_SHIFT 23
+#define IOMUXC_GPR_GPR3_ocram_ctrl_epdc_read_data_wait_en_update_pending_MASK 0x1000000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_epdc_read_data_wait_en_update_pending_SHIFT 24
+#define IOMUXC_GPR_GPR3_ocram_ctrl_epdc_read_addr_pipeline_en_update_pending_MASK 0x2000000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_epdc_read_addr_pipeline_en_update_pending_SHIFT 25
+#define IOMUXC_GPR_GPR3_ocram_ctrl_epdc_write_data_pipeline_en_update_pending_MASK 0x4000000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_epdc_write_data_pipeline_en_update_pending_SHIFT 26
+#define IOMUXC_GPR_GPR3_ocram_ctrl_epdc_write_addr_pipeline_en_update_pending_MASK 0x8000000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_epdc_write_addr_pipeline_en_update_pending_SHIFT 27
+#define IOMUXC_GPR_GPR3_ocram_ctrl_pxp_read_data_wait_en_update_pending_MASK 0x10000000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_pxp_read_data_wait_en_update_pending_SHIFT 28
+#define IOMUXC_GPR_GPR3_ocram_ctrl_pxp_read_addr_pipeline_en_update_pending_MASK 0x20000000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_pxp_read_addr_pipeline_en_update_pending_SHIFT 29
+#define IOMUXC_GPR_GPR3_ocram_ctrl_pxp_write_data_pipeline_en_update_pending_MASK 0x40000000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_pxp_write_data_pipeline_en_update_pending_SHIFT 30
+#define IOMUXC_GPR_GPR3_ocram_ctrl_pxp_write_addr_pipeline_en_update_pending_MASK 0x80000000u
+#define IOMUXC_GPR_GPR3_ocram_ctrl_pxp_write_addr_pipeline_en_update_pending_SHIFT 31
+/* GPR4 Bit Fields */
+#define IOMUXC_GPR_GPR4_GPR_SDMA_IPG_STOP_MASK   0x1u
+#define IOMUXC_GPR_GPR4_GPR_SDMA_IPG_STOP_SHIFT  0
+#define IOMUXC_GPR_GPR4_GPR_CAN1_IPG_STOP_MASK   0x2u
+#define IOMUXC_GPR_GPR4_GPR_CAN1_IPG_STOP_SHIFT  1
+#define IOMUXC_GPR_GPR4_GPR_CAN2_IPG_STOP_MASK   0x4u
+#define IOMUXC_GPR_GPR4_GPR_CAN2_IPG_STOP_SHIFT  2
+#define IOMUXC_GPR_GPR4_GPR_ENET1_IPG_STOP_MASK  0x8u
+#define IOMUXC_GPR_GPR4_GPR_ENET1_IPG_STOP_SHIFT 3
+#define IOMUXC_GPR_GPR4_GPR_ENET2_IPG_STOP_MASK  0x10u
+#define IOMUXC_GPR_GPR4_GPR_ENET2_IPG_STOP_SHIFT 4
+#define IOMUXC_GPR_GPR4_GPR_SAI1_IPG_STOP_MASK   0x20u
+#define IOMUXC_GPR_GPR4_GPR_SAI1_IPG_STOP_SHIFT  5
+#define IOMUXC_GPR_GPR4_GPR_SAI2_IPG_STOP_MASK   0x40u
+#define IOMUXC_GPR_GPR4_GPR_SAI2_IPG_STOP_SHIFT  6
+#define IOMUXC_GPR_GPR4_GPR_SAI3_IPG_STOP_MASK   0x80u
+#define IOMUXC_GPR_GPR4_GPR_SAI3_IPG_STOP_SHIFT  7
+#define IOMUXC_GPR_GPR4_sdma_ipg_stop_ack_MASK   0x10000u
+#define IOMUXC_GPR_GPR4_sdma_ipg_stop_ack_SHIFT  16
+#define IOMUXC_GPR_GPR4_can1_ipg_stop_ack_MASK   0x20000u
+#define IOMUXC_GPR_GPR4_can1_ipg_stop_ack_SHIFT  17
+#define IOMUXC_GPR_GPR4_can2_ipg_stop_ack_MASK   0x40000u
+#define IOMUXC_GPR_GPR4_can2_ipg_stop_ack_SHIFT  18
+#define IOMUXC_GPR_GPR4_enet1_ipg_stop_ack_MASK  0x80000u
+#define IOMUXC_GPR_GPR4_enet1_ipg_stop_ack_SHIFT 19
+#define IOMUXC_GPR_GPR4_enet2_ipg_stop_ack_MASK  0x100000u
+#define IOMUXC_GPR_GPR4_enet2_ipg_stop_ack_SHIFT 20
+#define IOMUXC_GPR_GPR4_sai1_ipg_stop_ack_MASK   0x200000u
+#define IOMUXC_GPR_GPR4_sai1_ipg_stop_ack_SHIFT  21
+#define IOMUXC_GPR_GPR4_sai2_ipg_stop_ack_MASK   0x400000u
+#define IOMUXC_GPR_GPR4_sai2_ipg_stop_ack_SHIFT  22
+#define IOMUXC_GPR_GPR4_sai3_ipg_stop_ack_MASK   0x800000u
+#define IOMUXC_GPR_GPR4_sai3_ipg_stop_ack_SHIFT  23
+#define IOMUXC_GPR_GPR4_cpu_STANDBYWFI_MASK      0x6000000u
+#define IOMUXC_GPR_GPR4_cpu_STANDBYWFI_SHIFT     25
+#define IOMUXC_GPR_GPR4_cpu_STANDBYWFI(x)        (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR4_cpu_STANDBYWFI_SHIFT))&IOMUXC_GPR_GPR4_cpu_STANDBYWFI_MASK)
+#define IOMUXC_GPR_GPR4_cpu_STANDBYWFE_MASK      0x18000000u
+#define IOMUXC_GPR_GPR4_cpu_STANDBYWFE_SHIFT     27
+#define IOMUXC_GPR_GPR4_cpu_STANDBYWFE(x)        (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR4_cpu_STANDBYWFE_SHIFT))&IOMUXC_GPR_GPR4_cpu_STANDBYWFE_MASK)
+/* GPR5 Bit Fields */
+#define IOMUXC_GPR_GPR5_GPR_CSI_MUX_CONTROL_MASK 0x10u
+#define IOMUXC_GPR_GPR5_GPR_CSI_MUX_CONTROL_SHIFT 4
+#define IOMUXC_GPR_GPR5_GPR_LVDS_MUX_CONTROL_MASK 0x20u
+#define IOMUXC_GPR_GPR5_GPR_LVDS_MUX_CONTROL_SHIFT 5
+#define IOMUXC_GPR_GPR5_GPR_WDOG1_MASK_MASK      0x40u
+#define IOMUXC_GPR_GPR5_GPR_WDOG1_MASK_SHIFT     6
+#define IOMUXC_GPR_GPR5_GPR_WDOG2_MASK_MASK      0x80u
+#define IOMUXC_GPR_GPR5_GPR_WDOG2_MASK_SHIFT     7
+#define IOMUXC_GPR_GPR5_GPR_LCDIF_HANDSHAKE_MASK 0x1000u
+#define IOMUXC_GPR_GPR5_GPR_LCDIF_HANDSHAKE_SHIFT 12
+#define IOMUXC_GPR_GPR5_GPR_PCIE_BTNRST_MASK     0x80000u
+#define IOMUXC_GPR_GPR5_GPR_PCIE_BTNRST_SHIFT    19
+#define IOMUXC_GPR_GPR5_GPR_WDOG3_MASK_MASK      0x100000u
+#define IOMUXC_GPR_GPR5_GPR_WDOG3_MASK_SHIFT     20
+#define IOMUXC_GPR_GPR5_GPR_LCDIF_CSI_VSYNC_SEL_MASK 0x200000u
+#define IOMUXC_GPR_GPR5_GPR_LCDIF_CSI_VSYNC_SEL_SHIFT 21
+#define IOMUXC_GPR_GPR5_GPR_WDOG4_MASK_MASK      0x400000u
+#define IOMUXC_GPR_GPR5_GPR_WDOG4_MASK_SHIFT     22
+#define IOMUXC_GPR_GPR5_GPR_GPT4_CAPIN1_SEL_MASK 0x1000000u
+#define IOMUXC_GPR_GPR5_GPR_GPT4_CAPIN1_SEL_SHIFT 24
+#define IOMUXC_GPR_GPR5_GPR_GPT4_CAPIN2_SEL_MASK 0x2000000u
+#define IOMUXC_GPR_GPR5_GPR_GPT4_CAPIN2_SEL_SHIFT 25
+#define IOMUXC_GPR_GPR5_GPR_ENET1_EVENT3IN_SEL_MASK 0x4000000u
+#define IOMUXC_GPR_GPR5_GPR_ENET1_EVENT3IN_SEL_SHIFT 26
+#define IOMUXC_GPR_GPR5_GPR_ENET2_EVENT3IN_SEL_MASK 0x8000000u
+#define IOMUXC_GPR_GPR5_GPR_ENET2_EVENT3IN_SEL_SHIFT 27
+#define IOMUXC_GPR_GPR5_GPR_REF_1M_CLK_GPT1_MASK 0x10000000u
+#define IOMUXC_GPR_GPR5_GPR_REF_1M_CLK_GPT1_SHIFT 28
+#define IOMUXC_GPR_GPR5_GPR_REF_1M_CLK_GPT2_MASK 0x20000000u
+#define IOMUXC_GPR_GPR5_GPR_REF_1M_CLK_GPT2_SHIFT 29
+#define IOMUXC_GPR_GPR5_GPR_REF_1M_CLK_GPT3_MASK 0x40000000u
+#define IOMUXC_GPR_GPR5_GPR_REF_1M_CLK_GPT3_SHIFT 30
+#define IOMUXC_GPR_GPR5_GPR_REF_1M_CLK_GPT4_MASK 0x80000000u
+#define IOMUXC_GPR_GPR5_GPR_REF_1M_CLK_GPT4_SHIFT 31
+/* GPR6 Bit Fields */
+#define IOMUXC_GPR_GPR6_GPR_ARCACHE_PXP6_MASK    0x1u
+#define IOMUXC_GPR_GPR6_GPR_ARCACHE_PXP6_SHIFT   0
+#define IOMUXC_GPR_GPR6_GPR_AWCACHE_PXP6_MASK    0x2u
+#define IOMUXC_GPR_GPR6_GPR_AWCACHE_PXP6_SHIFT   1
+#define IOMUXC_GPR_GPR6_GPR_ARCACHE_PXP6_EN_MASK 0x4u
+#define IOMUXC_GPR_GPR6_GPR_ARCACHE_PXP6_EN_SHIFT 2
+#define IOMUXC_GPR_GPR6_GPR_AWCACHE_PXP6_EN_MASK 0x8u
+#define IOMUXC_GPR_GPR6_GPR_AWCACHE_PXP6_EN_SHIFT 3
+/* GPR7 Bit Fields */
+#define IOMUXC_GPR_GPR7_GPR_chd1_pwd_ldo_usb_1p0_MASK 0x1u
+#define IOMUXC_GPR_GPR7_GPR_chd1_pwd_ldo_usb_1p0_SHIFT 0
+#define IOMUXC_GPR_GPR7_GPR_chd1_lowpwr_ldo_usb_1p0_MASK 0x2u
+#define IOMUXC_GPR_GPR7_GPR_chd1_lowpwr_ldo_usb_1p0_SHIFT 1
+#define IOMUXC_GPR_GPR7_GPR_chd1_en_ilimit_ldo_usb_1p0_MASK 0x4u
+#define IOMUXC_GPR_GPR7_GPR_chd1_en_ilimit_ldo_usb_1p0_SHIFT 2
+#define IOMUXC_GPR_GPR7_GPR_chd1_en_pwrupload_ldo_usb_1p0_MASK 0x8u
+#define IOMUXC_GPR_GPR7_GPR_chd1_en_pwrupload_ldo_usb_1p0_SHIFT 3
+#define IOMUXC_GPR_GPR7_GPR_chd1_chrg_det_test_MASK 0x30u
+#define IOMUXC_GPR_GPR7_GPR_chd1_chrg_det_test_SHIFT 4
+#define IOMUXC_GPR_GPR7_GPR_chd1_chrg_det_test(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR7_GPR_chd1_chrg_det_test_SHIFT))&IOMUXC_GPR_GPR7_GPR_chd1_chrg_det_test_MASK)
+#define IOMUXC_GPR_GPR7_GPR_chd2_pwd_ldo_usb_1p0_MASK 0x40u
+#define IOMUXC_GPR_GPR7_GPR_chd2_pwd_ldo_usb_1p0_SHIFT 6
+#define IOMUXC_GPR_GPR7_GPR_chd2_lowpwr_ldo_usb_1p0_MASK 0x80u
+#define IOMUXC_GPR_GPR7_GPR_chd2_lowpwr_ldo_usb_1p0_SHIFT 7
+#define IOMUXC_GPR_GPR7_GPR_chd2_en_ilimit_ldo_usb_1p0_MASK 0x100u
+#define IOMUXC_GPR_GPR7_GPR_chd2_en_ilimit_ldo_usb_1p0_SHIFT 8
+#define IOMUXC_GPR_GPR7_GPR_chd2_en_pwrupload_ldo_usb_1p0_MASK 0x200u
+#define IOMUXC_GPR_GPR7_GPR_chd2_en_pwrupload_ldo_usb_1p0_SHIFT 9
+#define IOMUXC_GPR_GPR7_GPR_chd2_chrg_det_test_MASK 0xC00u
+#define IOMUXC_GPR_GPR7_GPR_chd2_chrg_det_test_SHIFT 10
+#define IOMUXC_GPR_GPR7_GPR_chd2_chrg_det_test(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR7_GPR_chd2_chrg_det_test_SHIFT))&IOMUXC_GPR_GPR7_GPR_chd2_chrg_det_test_MASK)
+#define IOMUXC_GPR_GPR7_GPR_pcie_clk_rst_fix_lnkrst_disable_MASK 0x1000u
+#define IOMUXC_GPR_GPR7_GPR_pcie_clk_rst_fix_lnkrst_disable_SHIFT 12
+#define IOMUXC_GPR_GPR7_GPR_pcie_clk_rst_fix_perst_disable_MASK 0x2000u
+#define IOMUXC_GPR_GPR7_GPR_pcie_clk_rst_fix_perst_disable_SHIFT 13
+/* GPR8 Bit Fields */
+#define IOMUXC_GPR_GPR8_ddr_phy_ctrl_wake_up_MASK 0xF8u
+#define IOMUXC_GPR_GPR8_ddr_phy_ctrl_wake_up_SHIFT 3
+#define IOMUXC_GPR_GPR8_ddr_phy_ctrl_wake_up(x)  (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR8_ddr_phy_ctrl_wake_up_SHIFT))&IOMUXC_GPR_GPR8_ddr_phy_ctrl_wake_up_MASK)
+#define IOMUXC_GPR_GPR8_ddr_phy_dfi_init_start_MASK 0x100u
+#define IOMUXC_GPR_GPR8_ddr_phy_dfi_init_start_SHIFT 8
+/* GPR9 Bit Fields */
+#define IOMUXC_GPR_GPR9_GPR_TZASC1_MUX_CONTROL_MASK 0x1u
+#define IOMUXC_GPR_GPR9_GPR_TZASC1_MUX_CONTROL_SHIFT 0
+#define IOMUXC_GPR_GPR9_ddr_phy_ctrl_pd_MASK     0x3Eu
+#define IOMUXC_GPR_GPR9_ddr_phy_ctrl_pd_SHIFT    1
+#define IOMUXC_GPR_GPR9_ddr_phy_ctrl_pd(x)       (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR9_ddr_phy_ctrl_pd_SHIFT))&IOMUXC_GPR_GPR9_ddr_phy_ctrl_pd_MASK)
+/* GPR10 Bit Fields */
+#define IOMUXC_GPR_GPR10_GPR0_BF0_MASK           0x1u
+#define IOMUXC_GPR_GPR10_GPR0_BF0_SHIFT          0
+#define IOMUXC_GPR_GPR10_GPR_DBG_EN_MASK         0x2u
+#define IOMUXC_GPR_GPR10_GPR_DBG_EN_SHIFT        1
+#define IOMUXC_GPR_GPR10_GPR_SEC_ERR_RESP_EN_MASK 0x4u
+#define IOMUXC_GPR_GPR10_GPR_SEC_ERR_RESP_EN_SHIFT 2
+#define IOMUXC_GPR_GPR10_GPR_OCRAM_CTRL_EPDC_OCRAM_TZ_SECURE_REGION0_MASK 0x8u
+#define IOMUXC_GPR_GPR10_GPR_OCRAM_CTRL_EPDC_OCRAM_TZ_SECURE_REGION0_SHIFT 3
+#define IOMUXC_GPR_GPR10_GPR_OCRAM_CTRL_EPDC_OCRAM_TZ_SECURE_REGION1_MASK 0x3F0u
+#define IOMUXC_GPR_GPR10_GPR_OCRAM_CTRL_EPDC_OCRAM_TZ_SECURE_REGION1_SHIFT 4
+#define IOMUXC_GPR_GPR10_GPR_OCRAM_CTRL_EPDC_OCRAM_TZ_SECURE_REGION1(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR10_GPR_OCRAM_CTRL_EPDC_OCRAM_TZ_SECURE_REGION1_SHIFT))&IOMUXC_GPR_GPR10_GPR_OCRAM_CTRL_EPDC_OCRAM_TZ_SECURE_REGION1_MASK)
+/* GPR11 Bit Fields */
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_OCRAM_TZ_SECURE_REGION0_MASK 0x1u
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_OCRAM_TZ_SECURE_REGION0_SHIFT 0
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_OCRAM_TZ_SECURE_REGION1_MASK 0x3Eu
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_OCRAM_TZ_SECURE_REGION1_SHIFT 1
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_OCRAM_TZ_SECURE_REGION1(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_OCRAM_TZ_SECURE_REGION1_SHIFT))&IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_OCRAM_TZ_SECURE_REGION1_MASK)
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_PXP_OCRAM_TZ_SECURE_REGION0_MASK 0x40u
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_PXP_OCRAM_TZ_SECURE_REGION0_SHIFT 6
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_PXP_OCRAM_TZ_SECURE_REGION1_MASK 0x380u
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_PXP_OCRAM_TZ_SECURE_REGION1_SHIFT 7
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_PXP_OCRAM_TZ_SECURE_REGION1(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_PXP_OCRAM_TZ_SECURE_REGION1_SHIFT))&IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_PXP_OCRAM_TZ_SECURE_REGION1_MASK)
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_S_OCRAM_TZ_SECURE_REGION0_MASK 0x400u
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_S_OCRAM_TZ_SECURE_REGION0_SHIFT 10
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_S_OCRAM_TZ_SECURE_REGION1_MASK 0x3800u
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_S_OCRAM_TZ_SECURE_REGION1_SHIFT 11
+#define IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_S_OCRAM_TZ_SECURE_REGION1(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_S_OCRAM_TZ_SECURE_REGION1_SHIFT))&IOMUXC_GPR_GPR11_GPR_OCRAM_CTRL_S_OCRAM_TZ_SECURE_REGION1_MASK)
+/* GPR12 Bit Fields */
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_TRSV_REG_RST_CH0_MASK 0x1u
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_TRSV_REG_RST_CH0_SHIFT 0
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_TRSV_RST_CH0_MASK 0x2u
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_TRSV_RST_CH0_SHIFT 1
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_SSC_EN_MASK 0x8u
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_SSC_EN_SHIFT 3
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_CMN_REG_RST_MASK 0x10u
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_CMN_REG_RST_SHIFT 4
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_REFCLK_SEL_MASK 0x20u
+#define IOMUXC_GPR_GPR12_GPR_PCIE_PHY_REFCLK_SEL_SHIFT 5
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DEVICE_TYPE_MASK 0xF000u
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DEVICE_TYPE_SHIFT 12
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DEVICE_TYPE(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DEVICE_TYPE_SHIFT))&IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DEVICE_TYPE_MASK)
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_STATUS_BUS_SELECT_MASK 0x1E0000u
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_STATUS_BUS_SELECT_SHIFT 17
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_STATUS_BUS_SELECT(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_STATUS_BUS_SELECT_SHIFT))&IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_STATUS_BUS_SELECT_MASK)
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_CTRL_BUS_MASK 0xE00000u
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_CTRL_BUS_SHIFT 21
+#define IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_CTRL_BUS(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_CTRL_BUS_SHIFT))&IOMUXC_GPR_GPR12_GPR_PCIE_CTRL_DIAG_CTRL_BUS_MASK)
+/* GPR13 Bit Fields */
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_USDHC_MASK  0x1u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_USDHC_SHIFT 0
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_USDHC_MASK  0x2u
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_USDHC_SHIFT 1
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_PXP_MASK    0x4u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_PXP_SHIFT   2
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_PXP_MASK    0x8u
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_PXP_SHIFT   3
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_PCIE_MASK   0x10u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_PCIE_SHIFT  4
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_PCIE_MASK   0x20u
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_PCIE_SHIFT  5
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_LCDIF_MASK  0x40u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_LCDIF_SHIFT 6
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_EPDC_MASK   0x80u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_EPDC_SHIFT  7
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_PXP_EN_MASK 0x100u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_PXP_EN_SHIFT 8
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_PXP_EN_MASK 0x200u
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_PXP_EN_SHIFT 9
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_PCIE_EN_MASK 0x400u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_PCIE_EN_SHIFT 10
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_PCIE_EN_MASK 0x800u
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_PCIE_EN_SHIFT 11
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_LCDIF_EN_MASK 0x1000u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_LCDIF_EN_SHIFT 12
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_EPDC_EN_MASK 0x2000u
+#define IOMUXC_GPR_GPR13_GPR_ARCACHE_EPDC_EN_SHIFT 13
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_EPDC_MASK   0x4000u
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_EPDC_SHIFT  14
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_EPDC_EN_MASK 0x8000u
+#define IOMUXC_GPR_GPR13_GPR_AWCACHE_EPDC_EN_SHIFT 15
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_AFC_CODE_OUT_CH0_MASK 0xFF0000u
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_AFC_CODE_OUT_CH0_SHIFT 16
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_AFC_CODE_OUT_CH0(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR13_GPR_PCIE_PHY_AFC_CODE_OUT_CH0_SHIFT))&IOMUXC_GPR_GPR13_GPR_PCIE_PHY_AFC_CODE_OUT_CH0_MASK)
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_VCO_BAND_MASK 0xF000000u
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_VCO_BAND_SHIFT 24
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_VCO_BAND(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR13_GPR_PCIE_PHY_VCO_BAND_SHIFT))&IOMUXC_GPR_GPR13_GPR_PCIE_PHY_VCO_BAND_MASK)
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_PMA_CDR_LOCKED_CH0_MASK 0x10000000u
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_PMA_CDR_LOCKED_CH0_SHIFT 28
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_PMA_RX_PRESENT_CH0_MASK 0x20000000u
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_PMA_RX_PRESENT_CH0_SHIFT 29
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_CDR_VCO_MON_CH0_MASK 0x40000000u
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_CDR_VCO_MON_CH0_SHIFT 30
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_PCS_REFCLK_DISABLE_MASK 0x80000000u
+#define IOMUXC_GPR_GPR13_GPR_PCIE_PHY_PCS_REFCLK_DISABLE_SHIFT 31
+/* GPR14 Bit Fields */
+#define IOMUXC_GPR_GPR14_GPR_SIM1_SIMV2_EMV_SEL_MASK 0x1u
+#define IOMUXC_GPR_GPR14_GPR_SIM1_SIMV2_EMV_SEL_SHIFT 0
+#define IOMUXC_GPR_GPR14_GPR_SIM2_SIMV2_EMV_SEL_MASK 0x2u
+#define IOMUXC_GPR_GPR14_GPR_SIM2_SIMV2_EMV_SEL_SHIFT 1
+/* GPR15 Bit Fields */
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_VBLK_FLAG_MASK 0x1u
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_VBLK_FLAG_SHIFT 0
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_AUTO_SEL_MASK 0x2u
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_AUTO_SEL_SHIFT 1
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_DESKEW_CNT_SET_MASK 0x3FFCu
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_DESKEW_CNT_SET_SHIFT 2
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_DESKEW_CNT_SET(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR15_GPR_LVDS_I_DESKEW_CNT_SET_SHIFT))&IOMUXC_GPR_GPR15_GPR_LVDS_I_DESKEW_CNT_SET_MASK)
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_LOCK_PPM_SET_MASK 0x3F0000u
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_LOCK_PPM_SET_SHIFT 16
+#define IOMUXC_GPR_GPR15_GPR_LVDS_I_LOCK_PPM_SET(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR15_GPR_LVDS_I_LOCK_PPM_SET_SHIFT))&IOMUXC_GPR_GPR15_GPR_LVDS_I_LOCK_PPM_SET_MASK)
+/* GPR16 Bit Fields */
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SKEW_REG_CUR_MASK 0x3u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SKEW_REG_CUR_SHIFT 0
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SKEW_REG_CUR(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR16_GPR_LVDS_SKEW_REG_CUR_SHIFT))&IOMUXC_GPR_GPR16_GPR_LVDS_SKEW_REG_CUR_MASK)
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SEL_DATABF_MASK 0x4u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SEL_DATABF_SHIFT 2
+#define IOMUXC_GPR_GPR16_GPR_LVDS_CNTB_TDLY_MASK 0x8u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_CNTB_TDLY_SHIFT 3
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SKEW_EN_H_MASK 0x10u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SKEW_EN_H_SHIFT 4
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SKEWINI_MASK   0x20u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SKEWINI_SHIFT  5
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SK_BIAS_MASK   0x3C0u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SK_BIAS_SHIFT  6
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SK_BIAS(x)     (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR16_GPR_LVDS_SK_BIAS_SHIFT))&IOMUXC_GPR_GPR16_GPR_LVDS_SK_BIAS_MASK)
+#define IOMUXC_GPR_GPR16_GPR_LVDS_AUTO_DSK_SEL_MASK 0x400u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_AUTO_DSK_SEL_SHIFT 10
+#define IOMUXC_GPR_GPR16_GPR_LVDS_LOCK_CNT_MASK  0x800u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_LOCK_CNT_SHIFT 11
+#define IOMUXC_GPR_GPR16_GPR_LVDS_OUTCON_MASK    0x1000u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_OUTCON_SHIFT   12
+#define IOMUXC_GPR_GPR16_GPR_LVDS_FC_CODE_MASK   0xE000u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_FC_CODE_SHIFT  13
+#define IOMUXC_GPR_GPR16_GPR_LVDS_FC_CODE(x)     (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR16_GPR_LVDS_FC_CODE_SHIFT))&IOMUXC_GPR_GPR16_GPR_LVDS_FC_CODE_MASK)
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SRC_TRH_MASK   0x10000u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_SRC_TRH_SHIFT  16
+#define IOMUXC_GPR_GPR16_GPR_LVDS_VOD_HIGH_S_MASK 0x20000u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_VOD_HIGH_S_SHIFT 17
+#define IOMUXC_GPR_GPR16_GPR_LVDS_CNNCT_CNT_MASK 0x180000u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_CNNCT_CNT_SHIFT 19
+#define IOMUXC_GPR_GPR16_GPR_LVDS_CNNCT_CNT(x)   (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR16_GPR_LVDS_CNNCT_CNT_SHIFT))&IOMUXC_GPR_GPR16_GPR_LVDS_CNNCT_CNT_MASK)
+#define IOMUXC_GPR_GPR16_GPR_LVDS_CNNCT_MODE_SEL_MASK 0x200000u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_CNNCT_MODE_SEL_SHIFT 21
+#define IOMUXC_GPR_GPR16_GPR_LVDS_FLT_CNT_MASK   0x400000u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_FLT_CNT_SHIFT  22
+#define IOMUXC_GPR_GPR16_GPR_LVDS_VOD_ONLY_CNT_MASK 0x800000u
+#define IOMUXC_GPR_GPR16_GPR_LVDS_VOD_ONLY_CNT_SHIFT 23
+/* GPR17 Bit Fields */
+#define IOMUXC_GPR_GPR17_GPR_LVDS_CNT_PEN_H_MASK 0xFFu
+#define IOMUXC_GPR_GPR17_GPR_LVDS_CNT_PEN_H_SHIFT 0
+#define IOMUXC_GPR_GPR17_GPR_LVDS_CNT_PEN_H(x)   (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR17_GPR_LVDS_CNT_PEN_H_SHIFT))&IOMUXC_GPR_GPR17_GPR_LVDS_CNT_PEN_H_MASK)
+#define IOMUXC_GPR_GPR17_GPR_LVDS_CNT_VOD_H_MASK 0xFF00u
+#define IOMUXC_GPR_GPR17_GPR_LVDS_CNT_VOD_H_SHIFT 8
+#define IOMUXC_GPR_GPR17_GPR_LVDS_CNT_VOD_H(x)   (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR17_GPR_LVDS_CNT_VOD_H_SHIFT))&IOMUXC_GPR_GPR17_GPR_LVDS_CNT_VOD_H_MASK)
+/* GPR18 Bit Fields */
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CH_SEL_MASK 0x7u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CH_SEL_SHIFT 0
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CH_SEL(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CH_SEL_SHIFT))&IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CH_SEL_MASK)
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_DATA_INV_MASK 0x18u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_DATA_INV_SHIFT 3
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_DATA_INV(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_DATA_INV_SHIFT))&IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_DATA_INV_MASK)
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CLK_INV_MASK 0x60u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CLK_INV_SHIFT 5
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CLK_INV(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CLK_INV_SHIFT))&IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_CLK_INV_MASK)
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_SKEW_CTRL_MASK 0x3F00u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_SKEW_CTRL_SHIFT 8
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_SKEW_CTRL(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_SKEW_CTRL_SHIFT))&IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_SKEW_CTRL_MASK)
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_FORCE_ERROR_MASK 0x4000u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_FORCE_ERROR_SHIFT 14
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_USER_PATTERN_MASK 0x7F0000u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_USER_PATTERN_SHIFT 16
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_USER_PATTERN(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_USER_PATTERN_SHIFT))&IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_USER_PATTERN_MASK)
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_PAT_SEL_MASK 0x3000000u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_PAT_SEL_SHIFT 24
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_PAT_SEL(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_PAT_SEL_SHIFT))&IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_PAT_SEL_MASK)
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_EN_MASK 0x4000000u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_EN_SHIFT 26
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_RESETB_MASK 0x8000000u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_I_BIST_RESETB_SHIFT 27
+#define IOMUXC_GPR_GPR18_GPR_LVDS_DLYS_BST_MASK  0x10000000u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_DLYS_BST_SHIFT 28
+#define IOMUXC_GPR_GPR18_GPR_LVDS_SKINI_BST_MASK 0x20000000u
+#define IOMUXC_GPR_GPR18_GPR_LVDS_SKINI_BST_SHIFT 29
+/* GPR19 Bit Fields */
+#define IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_STATUS_MASK 0x1u
+#define IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_STATUS_SHIFT 0
+#define IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_ERR_COUNT_MASK 0xFF00u
+#define IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_ERR_COUNT_SHIFT 8
+#define IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_ERR_COUNT(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_ERR_COUNT_SHIFT))&IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_ERR_COUNT_MASK)
+#define IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_SYNC_MASK 0x10000u
+#define IOMUXC_GPR_GPR19_GPR_LVDS_O_BIST_SYNC_SHIFT 16
+#define IOMUXC_GPR_GPR19_GPR_LVDS_MON_FOR_CNNCT_MASK 0x20000u
+#define IOMUXC_GPR_GPR19_GPR_LVDS_MON_FOR_CNNCT_SHIFT 17
+/* GPR20 Bit Fields */
+#define IOMUXC_GPR_GPR20_GPR_LVDS_P_MASK         0x3Fu
+#define IOMUXC_GPR_GPR20_GPR_LVDS_P_SHIFT        0
+#define IOMUXC_GPR_GPR20_GPR_LVDS_P(x)           (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR20_GPR_LVDS_P_SHIFT))&IOMUXC_GPR_GPR20_GPR_LVDS_P_MASK)
+#define IOMUXC_GPR_GPR20_GPR_LVDS_M_MASK         0x3F00u
+#define IOMUXC_GPR_GPR20_GPR_LVDS_M_SHIFT        8
+#define IOMUXC_GPR_GPR20_GPR_LVDS_M(x)           (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR20_GPR_LVDS_M_SHIFT))&IOMUXC_GPR_GPR20_GPR_LVDS_M_MASK)
+#define IOMUXC_GPR_GPR20_GPR_LVDS_S_MASK         0x30000u
+#define IOMUXC_GPR_GPR20_GPR_LVDS_S_SHIFT        16
+#define IOMUXC_GPR_GPR20_GPR_LVDS_S(x)           (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR20_GPR_LVDS_S_SHIFT))&IOMUXC_GPR_GPR20_GPR_LVDS_S_MASK)
+#define IOMUXC_GPR_GPR20_GPR_LVDS_VSEL_MASK      0x1000000u
+#define IOMUXC_GPR_GPR20_GPR_LVDS_VSEL_SHIFT     24
+#define IOMUXC_GPR_GPR20_GPR_LVDS_CK_POL_SEL_MASK 0x2000000u
+#define IOMUXC_GPR_GPR20_GPR_LVDS_CK_POL_SEL_SHIFT 25
+#define IOMUXC_GPR_GPR20_GPR_LVDS_I_TX2801X_DUMMY_MASK 0x38000000u
+#define IOMUXC_GPR_GPR20_GPR_LVDS_I_TX2801X_DUMMY_SHIFT 27
+#define IOMUXC_GPR_GPR20_GPR_LVDS_I_TX2801X_DUMMY(x) (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR20_GPR_LVDS_I_TX2801X_DUMMY_SHIFT))&IOMUXC_GPR_GPR20_GPR_LVDS_I_TX2801X_DUMMY_MASK)
+/* GPR21 Bit Fields */
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC0_MASK      0x7u
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC0_SHIFT     0
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC0(x)        (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR21_GPR_LVDS_SKC0_SHIFT))&IOMUXC_GPR_GPR21_GPR_LVDS_SKC0_MASK)
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC1_MASK      0x38u
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC1_SHIFT     3
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC1(x)        (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR21_GPR_LVDS_SKC1_SHIFT))&IOMUXC_GPR_GPR21_GPR_LVDS_SKC1_MASK)
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC2_MASK      0x1C0u
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC2_SHIFT     6
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC2(x)        (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR21_GPR_LVDS_SKC2_SHIFT))&IOMUXC_GPR_GPR21_GPR_LVDS_SKC2_MASK)
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKCCK_MASK     0xE00u
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKCCK_SHIFT    9
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKCCK(x)       (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR21_GPR_LVDS_SKCCK_SHIFT))&IOMUXC_GPR_GPR21_GPR_LVDS_SKCCK_MASK)
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC3_MASK      0x7000u
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC3_SHIFT     12
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC3(x)        (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR21_GPR_LVDS_SKC3_SHIFT))&IOMUXC_GPR_GPR21_GPR_LVDS_SKC3_MASK)
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC4_MASK      0x38000u
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC4_SHIFT     15
+#define IOMUXC_GPR_GPR21_GPR_LVDS_SKC4(x)        (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR21_GPR_LVDS_SKC4_SHIFT))&IOMUXC_GPR_GPR21_GPR_LVDS_SKC4_MASK)
+#define IOMUXC_GPR_GPR21_SJC_BYPASS_CJTAGC_MASK  0x40000u
+#define IOMUXC_GPR_GPR21_SJC_BYPASS_CJTAGC_SHIFT 18
+#define IOMUXC_GPR_GPR21_DAP_BYPASS_CJTAGC_MASK  0x80000u
+#define IOMUXC_GPR_GPR21_DAP_BYPASS_CJTAGC_SHIFT 19
+/* GPR22 Bit Fields */
+#define IOMUXC_GPR_GPR22_ddrc_mrr_data_out_MASK  0xFF0000u
+#define IOMUXC_GPR_GPR22_ddrc_mrr_data_out_SHIFT 16
+#define IOMUXC_GPR_GPR22_ddrc_mrr_data_out(x)    (((uint32_t)(((uint32_t)(x))<<IOMUXC_GPR_GPR22_ddrc_mrr_data_out_SHIFT))&IOMUXC_GPR_GPR22_ddrc_mrr_data_out_MASK)
+#define IOMUXC_GPR_GPR22_ddrc_mrr_valid_out_MASK 0x1000000u
+#define IOMUXC_GPR_GPR22_ddrc_mrr_valid_out_SHIFT 24
+#define IOMUXC_GPR_GPR22_ddr_phy_dfi_init_complete_MASK 0x2000000u
+#define IOMUXC_GPR_GPR22_ddr_phy_dfi_init_complete_SHIFT 25
+#define IOMUXC_GPR_GPR22_GPR_chd2_dvdd_usb_stable_MASK 0x4000000u
+#define IOMUXC_GPR_GPR22_GPR_chd2_dvdd_usb_stable_SHIFT 26
+#define IOMUXC_GPR_GPR22_aux_chrg_det_2_usb_iso_enable_1_MASK 0x8000000u
+#define IOMUXC_GPR_GPR22_aux_chrg_det_2_usb_iso_enable_1_SHIFT 27
+#define IOMUXC_GPR_GPR22_GPR_chd1_dvdd_usb_stable_MASK 0x10000000u
+#define IOMUXC_GPR_GPR22_GPR_chd1_dvdd_usb_stable_SHIFT 28
+#define IOMUXC_GPR_GPR22_aux_chrg_det_1_usb_iso_enable_1_MASK 0x20000000u
+#define IOMUXC_GPR_GPR22_aux_chrg_det_1_usb_iso_enable_1_SHIFT 29
+#define IOMUXC_GPR_GPR22_GPR_PCIE_PHY_PLL_LOCKED_MASK 0x80000000u
+#define IOMUXC_GPR_GPR22_GPR_PCIE_PHY_PLL_LOCKED_SHIFT 31
+
+#define IMX7D_GPR5_CSI1_MUX_CTRL_MASK                  (0x1 << 4)
+#define IMX7D_GPR5_CSI1_MUX_CTRL_PARALLEL_CSI          (0x0 << 4)
+#define IMX7D_GPR5_CSI1_MUX_CTRL_MIPI_CSI              (0x1 << 4)
+
+struct iomuxc {
+       u32 gpr[23];
+       /* mux and pad registers */
+};
+
+struct iomuxc_gpr_base_regs {
+       u32 gpr[23];        /* 0x000 */
+};
+
+/* ECSPI registers */
+struct cspi_regs {
+       u32 rxdata;
+       u32 txdata;
+       u32 ctrl;
+       u32 cfg;
+       u32 intr;
+       u32 dma;
+       u32 stat;
+       u32 period;
+};
+
+/*
+ * CSPI register definitions
+ */
+#define MXC_ECSPI
+#define MXC_CSPICTRL_EN                (1 << 0)
+#define MXC_CSPICTRL_MODE      (1 << 1)
+#define MXC_CSPICTRL_XCH       (1 << 2)
+#define MXC_CSPICTRL_MODE_MASK (0xf << 4)
+#define MXC_CSPICTRL_CHIPSELECT(x)     (((x) & 0x3) << 12)
+#define MXC_CSPICTRL_BITCOUNT(x)       (((x) & 0xfff) << 20)
+#define MXC_CSPICTRL_PREDIV(x) (((x) & 0xF) << 12)
+#define MXC_CSPICTRL_POSTDIV(x)        (((x) & 0xF) << 8)
+#define MXC_CSPICTRL_SELCHAN(x)        (((x) & 0x3) << 18)
+#define MXC_CSPICTRL_MAXBITS   0xfff
+#define MXC_CSPICTRL_TC                (1 << 7)
+#define MXC_CSPICTRL_RXOVF     (1 << 6)
+#define MXC_CSPIPERIOD_32KHZ   (1 << 15)
+#define MAX_SPI_BYTES  32
+
+/* Bit position inside CTRL register to be associated with SS */
+#define MXC_CSPICTRL_CHAN      18
+
+/* Bit position inside CON register to be associated with SS */
+#define MXC_CSPICON_PHA                0  /* SCLK phase control */
+#define MXC_CSPICON_POL                4  /* SCLK polarity */
+#define MXC_CSPICON_SSPOL      12 /* SS polarity */
+#define MXC_CSPICON_CTL                20 /* inactive state of SCLK */
+
+#define MXC_SPI_BASE_ADDRESSES \
+       ECSPI1_BASE_ADDR, \
+       ECSPI2_BASE_ADDR, \
+       ECSPI3_BASE_ADDR, \
+       ECSPI4_BASE_ADDR
+
+struct ocotp_regs {
+       u32 ctrl;
+       u32 ctrl_set;
+       u32 ctrl_clr;
+       u32 ctrl_tog;
+       u32 timing;
+       u32 rsvd0[3];
+       u32 data0;
+       u32 rsvd1[3];
+       u32 data1;
+       u32 rsvd2[3];
+       u32 data2;
+       u32 rsvd3[3];
+       u32 data3;
+       u32 rsvd4[3];
+       u32 read_ctrl;
+       u32 rsvd5[3];
+       u32 read_fuse_data0;
+       u32 rsvd6[3];
+       u32 read_fuse_data1;
+       u32 rsvd7[3];
+       u32 read_fuse_data2;
+       u32 rsvd8[3];
+       u32 read_fuse_data3;
+       u32 rsvd9[3];
+       u32 sw_sticky;
+       u32 rsvd10[3];
+       u32 scs;
+       u32 scs_set;
+       u32 scs_clr;
+       u32 scs_tog;
+       u32 crc_addr;
+       u32 rsvd11[3];
+       u32 crc_value;
+       u32 rsvd12[3];
+       u32 version;
+       u32 rsvd13[0xc3];
+
+       struct fuse_bank {      /* offset 0x400 */
+               u32 fuse_regs[0x10];
+       } bank[16];
+};
+
+struct fuse_bank0_regs {
+       u32 lock;
+       u32 rsvd0[3];
+       u32 tester0;
+       u32 rsvd1[3];
+       u32 tester1;
+       u32 rsvd2[3];
+       u32 tester2;
+       u32 rsvd3[3];
+};
+
+struct fuse_bank1_regs {
+       u32 tester3;
+       u32 rsvd0[3];
+       u32 tester4;
+       u32 rsvd1[3];
+       u32 tester5;
+       u32 rsvd2[3];
+       u32 cfg0;
+       u32 rsvd3[3];
+};
+
+struct fuse_bank2_regs {
+       u32 cfg1;
+       u32 rsvd0[3];
+       u32 cfg2;
+       u32 rsvd1[3];
+       u32 cfg3;
+       u32 rsvd2[3];
+       u32 cfg4;
+       u32 rsvd3[3];
+};
+
+struct fuse_bank3_regs {
+       u32 mem_trim0;
+       u32 rsvd0[3];
+       u32 mem_trim1;
+       u32 rsvd1[3];
+       u32 ana0;
+       u32 rsvd2[3];
+       u32 ana1;
+       u32 rsvd3[3];
+};
+
+struct fuse_bank8_regs {
+       u32 sjc_resp_low;
+       u32 rsvd0[3];
+       u32 sjc_resp_high;
+       u32 rsvd1[3];
+       u32 usb_id;
+       u32 rsvd2[3];
+       u32 field_return;
+       u32 rsvd3[3];
+};
+
+struct fuse_bank9_regs {
+       u32 mac_addr0;
+       u32 rsvd0[3];
+       u32 mac_addr1;
+       u32 rsvd1[3];
+       u32 mac_addr2;
+       u32 rsvd2[7];
+};
+
+struct aipstz_regs {
+       u32     mprot0;
+       u32     mprot1;
+       u32     rsvd[0xe];
+       u32     opacr0;
+       u32     opacr1;
+       u32     opacr2;
+       u32     opacr3;
+       u32     opacr4;
+};
+
+struct wdog_regs {
+       u16     wcr;    /* Control */
+       u16     wsr;    /* Service */
+       u16     wrsr;   /* Reset Status */
+       u16     wicr;   /* Interrupt Control */
+       u16     wmcr;   /* Miscellaneous Control */
+};
+
+struct dbg_monitor_regs {
+       u32     ctrl[4];                /* Control */
+       u32     master_en[4];           /* Master enable */
+       u32     irq[4];                 /* IRQ */
+       u32     trap_addr_low[4];       /* Trap address low */
+       u32     trap_addr_high[4];      /* Trap address high */
+       u32     trap_id[4];             /* Trap ID */
+       u32     snvs_addr[4];           /* SNVS address */
+       u32     snvs_data[4];           /* SNVS data */
+       u32     snvs_info[4];           /* SNVS info */
+       u32     version[4];             /* Version */
+};
+
+struct rdc_regs {
+       u32     vir;            /* Version information */
+       u32     reserved1[8];
+       u32     stat;           /* Status */
+       u32     intctrl;        /* Interrupt and Control */
+       u32     intstat;        /* Interrupt Status */
+       u32     reserved2[116];
+       u32     mda[27];                /* Master Domain Assignment */
+       u32     reserved3[101];
+       u32     pdap[118];              /* Peripheral Domain Access Permissions */
+       u32     reserved4[138];
+       struct {
+               u32 mrsa;               /* Memory Region Start Address */
+               u32 mrea;               /* Memory Region End Address */
+               u32 mrc;                /* Memory Region Control */
+               u32 mrvs;               /* Memory Region Violation Status */
+       } mem_region[52];
+};
+
+struct rdc_sema_regs {
+       u8      gate[64];       /* Gate */
+       u16     rstgt;          /* Reset Gate */
+};
+
+/* eLCDIF controller registers */
+struct mxs_lcdif_regs {
+       u32     hw_lcdif_ctrl;                  /* 0x00 */
+       u32     hw_lcdif_ctrl_set;
+       u32     hw_lcdif_ctrl_clr;
+       u32     hw_lcdif_ctrl_tog;
+       u32     hw_lcdif_ctrl1;                 /* 0x10 */
+       u32     hw_lcdif_ctrl1_set;
+       u32     hw_lcdif_ctrl1_clr;
+       u32     hw_lcdif_ctrl1_tog;
+       u32     hw_lcdif_ctrl2;                 /* 0x20 */
+       u32     hw_lcdif_ctrl2_set;
+       u32     hw_lcdif_ctrl2_clr;
+       u32     hw_lcdif_ctrl2_tog;
+       u32     hw_lcdif_transfer_count;        /* 0x30 */
+       u32     reserved1[3];
+       u32     hw_lcdif_cur_buf;               /* 0x40 */
+       u32     reserved2[3];
+       u32     hw_lcdif_next_buf;              /* 0x50 */
+       u32     reserved3[3];
+       u32     hw_lcdif_timing;                /* 0x60 */
+       u32     reserved4[3];
+       u32     hw_lcdif_vdctrl0;               /* 0x70 */
+       u32     hw_lcdif_vdctrl0_set;
+       u32     hw_lcdif_vdctrl0_clr;
+       u32     hw_lcdif_vdctrl0_tog;
+       u32     hw_lcdif_vdctrl1;               /* 0x80 */
+       u32     reserved5[3];
+       u32     hw_lcdif_vdctrl2;               /* 0x90 */
+       u32     reserved6[3];
+       u32     hw_lcdif_vdctrl3;               /* 0xa0 */
+       u32     reserved7[3];
+       u32     hw_lcdif_vdctrl4;               /* 0xb0 */
+       u32     reserved8[3];
+       u32     hw_lcdif_dvictrl0;              /* 0xc0 */
+       u32     reserved9[3];
+       u32     hw_lcdif_dvictrl1;              /* 0xd0 */
+       u32     reserved10[3];
+       u32     hw_lcdif_dvictrl2;              /* 0xe0 */
+       u32     reserved11[3];
+       u32     hw_lcdif_dvictrl3;              /* 0xf0 */
+       u32     reserved12[3];
+       u32     hw_lcdif_dvictrl4;              /* 0x100 */
+       u32     reserved13[3];
+       u32     hw_lcdif_csc_coeffctrl0;        /* 0x110 */
+       u32     reserved14[3];
+       u32     hw_lcdif_csc_coeffctrl1;        /* 0x120 */
+       u32     reserved15[3];
+       u32     hw_lcdif_csc_coeffctrl2;        /* 0x130 */
+       u32     reserved16[3];
+       u32     hw_lcdif_csc_coeffctrl3;        /* 0x140 */
+       u32     reserved17[3];
+       u32     hw_lcdif_csc_coeffctrl4;        /* 0x150 */
+       u32     reserved18[3];
+       u32     hw_lcdif_csc_offset;    /* 0x160 */
+       u32     reserved19[3];
+       u32     hw_lcdif_csc_limit;             /* 0x170 */
+       u32     reserved20[3];
+       u32     hw_lcdif_data;                  /* 0x180 */
+       u32     reserved21[3];
+       u32     hw_lcdif_bm_error_stat; /* 0x190 */
+       u32     reserved22[3];
+       u32     hw_lcdif_crc_stat;              /* 0x1a0 */
+       u32     reserved23[3];
+       u32     hw_lcdif_lcdif_stat;    /* 0x1b0 */
+       u32     reserved24[3];
+       u32     hw_lcdif_version;               /* 0x1c0 */
+       u32     reserved25[3];
+       u32     hw_lcdif_debug0;                /* 0x1d0 */
+       u32     reserved26[3];
+       u32     hw_lcdif_debug1;                /* 0x1e0 */
+       u32     reserved27[3];
+       u32     hw_lcdif_debug2;                /* 0x1f0 */
+       u32     reserved28[3];
+       u32     hw_lcdif_thres;                 /* 0x200 */
+       u32     reserved29[3];
+       u32     hw_lcdif_as_ctrl;               /* 0x210 */
+       u32     reserved30[3];
+       u32     hw_lcdif_as_buf;                /* 0x220 */
+       u32     reserved31[3];
+       u32     hw_lcdif_as_next_buf;   /* 0x230 */
+       u32     reserved32[3];
+       u32     hw_lcdif_as_clrkeylow;  /* 0x240 */
+       u32     reserved33[3];
+       u32     hw_lcdif_as_clrkeyhigh; /* 0x250 */
+       u32     reserved34[3];
+       u32     hw_lcdif_as_sync_delay; /* 0x260 */
+       u32     reserved35[3];
+       u32     hw_lcdif_as_debug3;             /* 0x270 */
+       u32     reserved36[3];
+       u32     hw_lcdif_as_debug4;             /* 0x280 */
+       u32     reserved37[3];
+       u32     hw_lcdif_as_debug5;             /* 0x290 */
+};
+
+#define MXS_LCDIF_BASE ELCDIF1_IPS_BASE_ADDR
+
+#define        LCDIF_CTRL_SFTRST                                       (1 << 31)
+#define        LCDIF_CTRL_CLKGATE                                      (1 << 30)
+#define        LCDIF_CTRL_YCBCR422_INPUT                               (1 << 29)
+#define        LCDIF_CTRL_READ_WRITEB                                  (1 << 28)
+#define        LCDIF_CTRL_WAIT_FOR_VSYNC_EDGE                          (1 << 27)
+#define        LCDIF_CTRL_DATA_SHIFT_DIR                               (1 << 26)
+#define        LCDIF_CTRL_SHIFT_NUM_BITS_MASK                          (0x1f << 21)
+#define        LCDIF_CTRL_SHIFT_NUM_BITS_OFFSET                        21
+#define        LCDIF_CTRL_DVI_MODE                                     (1 << 20)
+#define        LCDIF_CTRL_BYPASS_COUNT                                 (1 << 19)
+#define        LCDIF_CTRL_VSYNC_MODE                                   (1 << 18)
+#define        LCDIF_CTRL_DOTCLK_MODE                                  (1 << 17)
+#define        LCDIF_CTRL_DATA_SELECT                                  (1 << 16)
+#define        LCDIF_CTRL_INPUT_DATA_SWIZZLE_MASK                      (0x3 << 14)
+#define        LCDIF_CTRL_INPUT_DATA_SWIZZLE_OFFSET                    14
+#define        LCDIF_CTRL_CSC_DATA_SWIZZLE_MASK                        (0x3 << 12)
+#define        LCDIF_CTRL_CSC_DATA_SWIZZLE_OFFSET                      12
+#define        LCDIF_CTRL_LCD_DATABUS_WIDTH_MASK                       (0x3 << 10)
+#define        LCDIF_CTRL_LCD_DATABUS_WIDTH_OFFSET                     10
+#define        LCDIF_CTRL_LCD_DATABUS_WIDTH_16BIT                      (0 << 10)
+#define        LCDIF_CTRL_LCD_DATABUS_WIDTH_8BIT                       (1 << 10)
+#define        LCDIF_CTRL_LCD_DATABUS_WIDTH_18BIT                      (2 << 10)
+#define        LCDIF_CTRL_LCD_DATABUS_WIDTH_24BIT                      (3 << 10)
+#define        LCDIF_CTRL_WORD_LENGTH_MASK                             (0x3 << 8)
+#define        LCDIF_CTRL_WORD_LENGTH_OFFSET                           8
+#define        LCDIF_CTRL_WORD_LENGTH_16BIT                            (0 << 8)
+#define        LCDIF_CTRL_WORD_LENGTH_8BIT                             (1 << 8)
+#define        LCDIF_CTRL_WORD_LENGTH_18BIT                            (2 << 8)
+#define        LCDIF_CTRL_WORD_LENGTH_24BIT                            (3 << 8)
+#define        LCDIF_CTRL_RGB_TO_YCBCR422_CSC                          (1 << 7)
+#define        LCDIF_CTRL_LCDIF_MASTER                                 (1 << 5)
+#define        LCDIF_CTRL_DATA_FORMAT_16_BIT                           (1 << 3)
+#define        LCDIF_CTRL_DATA_FORMAT_18_BIT                           (1 << 2)
+#define        LCDIF_CTRL_DATA_FORMAT_24_BIT                           (1 << 1)
+#define        LCDIF_CTRL_RUN                                          (1 << 0)
+
+#define        LCDIF_CTRL1_COMBINE_MPU_WR_STRB                         (1 << 27)
+#define        LCDIF_CTRL1_BM_ERROR_IRQ_EN                             (1 << 26)
+#define        LCDIF_CTRL1_BM_ERROR_IRQ                                (1 << 25)
+#define        LCDIF_CTRL1_RECOVER_ON_UNDERFLOW                        (1 << 24)
+#define        LCDIF_CTRL1_INTERLACE_FIELDS                            (1 << 23)
+#define        LCDIF_CTRL1_START_INTERLACE_FROM_SECOND_FIELD           (1 << 22)
+#define        LCDIF_CTRL1_FIFO_CLEAR                                  (1 << 21)
+#define        LCDIF_CTRL1_IRQ_ON_ALTERNATE_FIELDS                     (1 << 20)
+#define        LCDIF_CTRL1_BYTE_PACKING_FORMAT_MASK                    (0xf << 16)
+#define        LCDIF_CTRL1_BYTE_PACKING_FORMAT_OFFSET                  16
+#define        LCDIF_CTRL1_OVERFLOW_IRQ_EN                             (1 << 15)
+#define        LCDIF_CTRL1_UNDERFLOW_IRQ_EN                            (1 << 14)
+#define        LCDIF_CTRL1_CUR_FRAME_DONE_IRQ_EN                       (1 << 13)
+#define        LCDIF_CTRL1_VSYNC_EDGE_IRQ_EN                           (1 << 12)
+#define        LCDIF_CTRL1_OVERFLOW_IRQ                                (1 << 11)
+#define        LCDIF_CTRL1_UNDERFLOW_IRQ                               (1 << 10)
+#define        LCDIF_CTRL1_CUR_FRAME_DONE_IRQ                          (1 << 9)
+#define        LCDIF_CTRL1_VSYNC_EDGE_IRQ                              (1 << 8)
+#define        LCDIF_CTRL1_BUSY_ENABLE                                 (1 << 2)
+#define        LCDIF_CTRL1_MODE86                                      (1 << 1)
+#define        LCDIF_CTRL1_RESET                                       (1 << 0)
+
+#define        LCDIF_CTRL2_OUTSTANDING_REQS_MASK                       (0x7 << 21)
+#define        LCDIF_CTRL2_OUTSTANDING_REQS_OFFSET                     21
+#define        LCDIF_CTRL2_OUTSTANDING_REQS_REQ_1                      (0x0 << 21)
+#define        LCDIF_CTRL2_OUTSTANDING_REQS_REQ_2                      (0x1 << 21)
+#define        LCDIF_CTRL2_OUTSTANDING_REQS_REQ_4                      (0x2 << 21)
+#define        LCDIF_CTRL2_OUTSTANDING_REQS_REQ_8                      (0x3 << 21)
+#define        LCDIF_CTRL2_OUTSTANDING_REQS_REQ_16                     (0x4 << 21)
+#define        LCDIF_CTRL2_BURST_LEN_8                                 (1 << 20)
+#define        LCDIF_CTRL2_ODD_LINE_PATTERN_MASK                       (0x7 << 16)
+#define        LCDIF_CTRL2_ODD_LINE_PATTERN_OFFSET                     16
+#define        LCDIF_CTRL2_ODD_LINE_PATTERN_RGB                        (0x0 << 16)
+#define        LCDIF_CTRL2_ODD_LINE_PATTERN_RBG                        (0x1 << 16)
+#define        LCDIF_CTRL2_ODD_LINE_PATTERN_GBR                        (0x2 << 16)
+#define        LCDIF_CTRL2_ODD_LINE_PATTERN_GRB                        (0x3 << 16)
+#define        LCDIF_CTRL2_ODD_LINE_PATTERN_BRG                        (0x4 << 16)
+#define        LCDIF_CTRL2_ODD_LINE_PATTERN_BGR                        (0x5 << 16)
+#define        LCDIF_CTRL2_EVEN_LINE_PATTERN_MASK                      (0x7 << 12)
+#define        LCDIF_CTRL2_EVEN_LINE_PATTERN_OFFSET                    12
+#define        LCDIF_CTRL2_EVEN_LINE_PATTERN_RGB                       (0x0 << 12)
+#define        LCDIF_CTRL2_EVEN_LINE_PATTERN_RBG                       (0x1 << 12)
+#define        LCDIF_CTRL2_EVEN_LINE_PATTERN_GBR                       (0x2 << 12)
+#define        LCDIF_CTRL2_EVEN_LINE_PATTERN_GRB                       (0x3 << 12)
+#define        LCDIF_CTRL2_EVEN_LINE_PATTERN_BRG                       (0x4 << 12)
+#define        LCDIF_CTRL2_EVEN_LINE_PATTERN_BGR                       (0x5 << 12)
+#define        LCDIF_CTRL2_READ_PACK_DIR                               (1 << 10)
+#define        LCDIF_CTRL2_READ_MODE_OUTPUT_IN_RGB_FORMAT              (1 << 9)
+#define        LCDIF_CTRL2_READ_MODE_6_BIT_INPUT                       (1 << 8)
+#define        LCDIF_CTRL2_READ_MODE_NUM_PACKED_SUBWORDS_MASK          (0x7 << 4)
+#define        LCDIF_CTRL2_READ_MODE_NUM_PACKED_SUBWORDS_OFFSET        4
+#define        LCDIF_CTRL2_INITIAL_DUMMY_READ_MASK                     (0x7 << 1)
+#define        LCDIF_CTRL2_INITIAL_DUMMY_READ_OFFSET                   1
+
+#define        LCDIF_TRANSFER_COUNT_V_COUNT_MASK                       (0xffff << 16)
+#define        LCDIF_TRANSFER_COUNT_V_COUNT_OFFSET                     16
+#define        LCDIF_TRANSFER_COUNT_H_COUNT_MASK                       (0xffff << 0)
+#define        LCDIF_TRANSFER_COUNT_H_COUNT_OFFSET                     0
+
+#define        LCDIF_CUR_BUF_ADDR_MASK                                 0xffffffff
+#define        LCDIF_CUR_BUF_ADDR_OFFSET                               0
+
+#define        LCDIF_NEXT_BUF_ADDR_MASK                                0xffffffff
+#define        LCDIF_NEXT_BUF_ADDR_OFFSET                              0
+
+#define        LCDIF_TIMING_CMD_HOLD_MASK                              (0xff << 24)
+#define        LCDIF_TIMING_CMD_HOLD_OFFSET                            24
+#define        LCDIF_TIMING_CMD_SETUP_MASK                             (0xff << 16)
+#define        LCDIF_TIMING_CMD_SETUP_OFFSET                           16
+#define        LCDIF_TIMING_DATA_HOLD_MASK                             (0xff << 8)
+#define        LCDIF_TIMING_DATA_HOLD_OFFSET                           8
+#define        LCDIF_TIMING_DATA_SETUP_MASK                            (0xff << 0)
+#define        LCDIF_TIMING_DATA_SETUP_OFFSET                          0
+
+#define        LCDIF_VDCTRL0_VSYNC_OEB                                 (1 << 29)
+#define        LCDIF_VDCTRL0_ENABLE_PRESENT                            (1 << 28)
+#define        LCDIF_VDCTRL0_VSYNC_POL                                 (1 << 27)
+#define        LCDIF_VDCTRL0_HSYNC_POL                                 (1 << 26)
+#define        LCDIF_VDCTRL0_DOTCLK_POL                                (1 << 25)
+#define        LCDIF_VDCTRL0_ENABLE_POL                                (1 << 24)
+#define        LCDIF_VDCTRL0_VSYNC_PERIOD_UNIT                         (1 << 21)
+#define        LCDIF_VDCTRL0_VSYNC_PULSE_WIDTH_UNIT                    (1 << 20)
+#define        LCDIF_VDCTRL0_HALF_LINE                                 (1 << 19)
+#define        LCDIF_VDCTRL0_HALF_LINE_MODE                            (1 << 18)
+#define        LCDIF_VDCTRL0_VSYNC_PULSE_WIDTH_MASK                    0x3ffff
+#define        LCDIF_VDCTRL0_VSYNC_PULSE_WIDTH_OFFSET                  0
+
+#define        LCDIF_VDCTRL1_VSYNC_PERIOD_MASK                         0xffffffff
+#define        LCDIF_VDCTRL1_VSYNC_PERIOD_OFFSET                       0
+
+#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_MASK                    (0x3fff << 18)
+#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_OFFSET                  18
+#define        LCDIF_VDCTRL2_HSYNC_PERIOD_MASK                         0x3ffff
+#define        LCDIF_VDCTRL2_HSYNC_PERIOD_OFFSET                       0
+
+#define        LCDIF_VDCTRL3_MUX_SYNC_SIGNALS                          (1 << 29)
+#define        LCDIF_VDCTRL3_VSYNC_ONLY                                (1 << 28)
+#define        LCDIF_VDCTRL3_HORIZONTAL_WAIT_CNT_MASK                  (0xfff << 16)
+#define        LCDIF_VDCTRL3_HORIZONTAL_WAIT_CNT_OFFSET                16
+#define        LCDIF_VDCTRL3_VERTICAL_WAIT_CNT_MASK                    (0xffff << 0)
+#define        LCDIF_VDCTRL3_VERTICAL_WAIT_CNT_OFFSET                  0
+
+#define        LCDIF_VDCTRL4_DOTCLK_DLY_SEL_MASK                       (0x7 << 29)
+#define        LCDIF_VDCTRL4_DOTCLK_DLY_SEL_OFFSET                     29
+#define        LCDIF_VDCTRL4_SYNC_SIGNALS_ON                           (1 << 18)
+#define        LCDIF_VDCTRL4_DOTCLK_H_VALID_DATA_CNT_MASK              0x3ffff
+#define        LCDIF_VDCTRL4_DOTCLK_H_VALID_DATA_CNT_OFFSET            0
+
+
+extern void check_cpu_temperature(void);
+
+extern void pcie_power_up(void);
+extern void pcie_power_off(void);
+
+/* If ROM fail back to USB recover mode, USBPH0_PWD will be clear to use USB
+ * If boot from the other mode, USB0_PWD will keep reset value
+ */
+#define        is_boot_from_usb(void) (readl(USBOTG1_IPS_BASE_ADDR + 0x158) || \
+       readl(USBOTG2_IPS_BASE_ADDR + 0x158))
+#define        disconnect_from_pc(void) writel(0x0, USBOTG1_IPS_BASE_ADDR + 0x140)
+
+/* Boot device type */
+#define BOOT_TYPE_SD           0x1
+#define BOOT_TYPE_MMC          0x2
+#define BOOT_TYPE_NAND         0x3
+#define BOOT_TYPE_QSPI         0x4
+#define BOOT_TYPE_WEIM         0x5
+#define BOOT_TYPE_SPINOR       0x6
+
+struct bootrom_sw_info {
+       u8 reserved_1;
+       u8 boot_dev_instance;
+       u8 boot_dev_type;
+       u8 reserved_2;
+       u32 arm_core_freq;
+       u32 axi_freq;
+       u32 ddr_freq;
+       u32 gpt1_freq;
+       u32 reserved_3[3];
+};
+
+#endif /* __ASSEMBLER__*/
+#endif /* __ASM_ARCH_MX7_IMX_REGS_H__ */
diff --git a/arch/arm/include/asm/arch-mx7/mx7-pins.h b/arch/arm/include/asm/arch-mx7/mx7-pins.h
new file mode 100644 (file)
index 0000000..164c2be
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __ASM_ARCH_MX7_PINS_H__
+#define __ASM_ARCH_MX7_PINS_H__
+
+#include <asm/imx-common/iomux-v3.h>
+
+#if defined(CONFIG_MX7D)
+#include "mx7d_pins.h"
+#elif defined(CONFIG_MX7S)
+#include "mx7s_pins.h"
+#else
+#error "Please select cpu"
+#endif /* CONFIG_MX7D */
+
+#endif /*__ASM_ARCH_MX7_PINS_H__ */
diff --git a/arch/arm/include/asm/arch-mx7/mx7d_pins.h b/arch/arm/include/asm/arch-mx7/mx7d_pins.h
new file mode 100644 (file)
index 0000000..d8b4097
--- /dev/null
@@ -0,0 +1,1308 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_IMX7D_PINS_H__
+#define __ASM_ARCH_IMX7D_PINS_H__
+
+#include <asm/imx-common/iomux-v3.h>
+
+enum {
+       MX7D_PAD_GPIO1_IO00__GPIO1_IO0                           = IOMUX_PAD(0x0030, 0x0000, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO00__PWM4_OUT                            = IOMUX_PAD(0x0030, 0x0000, IOMUX_CONFIG_LPSR | 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO00__WDOG1_WDOG_B                        = IOMUX_PAD(0x0030, 0x0000, IOMUX_CONFIG_LPSR | 3, 0x0000, 0, 0),
+
+       MX7D_PAD_GPIO1_IO01__GPIO1_IO1                           = IOMUX_PAD(0x0034, 0x0004, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO01__PWM1_OUT                            = IOMUX_PAD(0x0034, 0x0004, IOMUX_CONFIG_LPSR | 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO01__CCM_ENET_REF_CLK3                   = IOMUX_PAD(0x0034, 0x0004, IOMUX_CONFIG_LPSR | 2, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO01__SAI1_MCLK                           = IOMUX_PAD(0x0034, 0x0004, IOMUX_CONFIG_LPSR | 3, 0x0000, 0, 0),
+
+       MX7D_PAD_GPIO1_IO02__GPIO1_IO2                           = IOMUX_PAD(0x0038, 0x0008, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO02__PWM2_OUT                            = IOMUX_PAD(0x0038, 0x0008, IOMUX_CONFIG_LPSR | 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO02__CCM_ENET_REF_CLK1                   = IOMUX_PAD(0x0038, 0x0008, IOMUX_CONFIG_LPSR | 2, 0x0564, 3, 0),
+       MX7D_PAD_GPIO1_IO02__SAI2_MCLK                           = IOMUX_PAD(0x0038, 0x0008, IOMUX_CONFIG_LPSR | 3, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO02__CCM_CLKO1                           = IOMUX_PAD(0x0038, 0x0008, IOMUX_CONFIG_LPSR | 5, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO02__USB_OTG1_ID                         = IOMUX_PAD(0x0038, 0x0008, IOMUX_CONFIG_LPSR | 7, 0x0734, 3, 0),
+
+       MX7D_PAD_GPIO1_IO03__GPIO1_IO3                           = IOMUX_PAD(0x003c, 0x000C, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO03__PWM3_OUT                            = IOMUX_PAD(0x003c, 0x000C, IOMUX_CONFIG_LPSR | 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO03__CCM_ENET_REF_CLK2                   = IOMUX_PAD(0x003c, 0x000C, IOMUX_CONFIG_LPSR | 2, 0x0570, 3, 0),
+       MX7D_PAD_GPIO1_IO03__SAI3_MCLK                           = IOMUX_PAD(0x003c, 0x000C, IOMUX_CONFIG_LPSR | 3, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO03__CCM_CLKO2                           = IOMUX_PAD(0x003c, 0x000C, IOMUX_CONFIG_LPSR | 5, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO03__USB_OTG2_ID                         = IOMUX_PAD(0x003c, 0x000C, IOMUX_CONFIG_LPSR | 7, 0x0730, 3, 0),
+
+       MX7D_PAD_GPIO1_IO04__GPIO1_IO4                           = IOMUX_PAD(0x0040, 0x0010, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO04__USB_OTG1_OC                         = IOMUX_PAD(0x0040, 0x0010, IOMUX_CONFIG_LPSR | 1, 0x072C, 1, 0),
+       MX7D_PAD_GPIO1_IO04__FLEXTIMER_CH4                       = IOMUX_PAD(0x0040, 0x0010, IOMUX_CONFIG_LPSR | 2, 0x0594, 1, 0),
+       MX7D_PAD_GPIO1_IO04__UART5_CTS_B                         = IOMUX_PAD(0x0040, 0x0010, IOMUX_CONFIG_LPSR | 3, 0x0710, 4, 0),
+       MX7D_PAD_GPIO1_IO04__I2C1_SCL                            = IOMUX_PAD(0x0040, 0x0010, IOMUX_CONFIG_LPSR | IOMUX_CONFIG_SION | 4, 0x05D4, 2, 0),
+
+       MX7D_PAD_GPIO1_IO05__GPIO1_IO5                           = IOMUX_PAD(0x0044, 0x0014, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO05__USB_OTG1_PWR                        = IOMUX_PAD(0x0044, 0x0014, IOMUX_CONFIG_LPSR | 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO05__FLEXTIMER1_CH5                      = IOMUX_PAD(0x0044, 0x0014, IOMUX_CONFIG_LPSR | 2, 0x0598, 1, 0),
+       MX7D_PAD_GPIO1_IO05__UART5_RTS_B                         = IOMUX_PAD(0x0044, 0x0014, IOMUX_CONFIG_LPSR | 3, 0x0710, 5, 0),
+       MX7D_PAD_GPIO1_IO05__I2C1_SDA                            = IOMUX_PAD(0x0044, 0x0014, IOMUX_CONFIG_LPSR | IOMUX_CONFIG_SION | 4, 0x05D8, 2, 0),
+
+       MX7D_PAD_GPIO1_IO06__GPIO1_IO6                           = IOMUX_PAD(0x0048, 0x0018, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO06__USB_OTG2_OC                         = IOMUX_PAD(0x0048, 0x0018, IOMUX_CONFIG_LPSR | 1, 0x0728, 1, 0),
+       MX7D_PAD_GPIO1_IO06__FLEXTIMER1_CH6                      = IOMUX_PAD(0x0048, 0x0018, IOMUX_CONFIG_LPSR | 2, 0x059C, 1, 0),
+       MX7D_PAD_GPIO1_IO06__UART5_RX_DATA                       = IOMUX_PAD(0x0048, 0x0018, IOMUX_CONFIG_LPSR | 3, 0x0714, 4, 0),
+       MX7D_PAD_GPIO1_IO06__I2C2_SCL                            = IOMUX_PAD(0x0048, 0x0018, IOMUX_CONFIG_LPSR | IOMUX_CONFIG_SION | 4, 0x05DC, 2, 0),
+       MX7D_PAD_GPIO1_IO06__CCM_WAIT                            = IOMUX_PAD(0x0048, 0x0018, IOMUX_CONFIG_LPSR | 5, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO06__KPP_ROW4                            = IOMUX_PAD(0x0048, 0x0018, IOMUX_CONFIG_LPSR | 6, 0x0624, 1, 0),
+
+       MX7D_PAD_GPIO1_IO07__GPIO1_IO7                           = IOMUX_PAD(0x004c, 0x001c, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO07__USB_OTG2_PWR                        = IOMUX_PAD(0x004c, 0x001c, IOMUX_CONFIG_LPSR | 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO07__FLEXTIMER1_CH7                      = IOMUX_PAD(0x004c, 0x001c, IOMUX_CONFIG_LPSR | 2, 0x05A0, 1, 0),
+       MX7D_PAD_GPIO1_IO07__UART5_TX_DATA                       = IOMUX_PAD(0x004c, 0x001c, IOMUX_CONFIG_LPSR | 3, 0x0714, 5, 0),
+       MX7D_PAD_GPIO1_IO07__I2C2_SDA                            = IOMUX_PAD(0x004c, 0x001c, IOMUX_CONFIG_LPSR | IOMUX_CONFIG_SION | 4, 0x05E0, 2, 0),
+       MX7D_PAD_GPIO1_IO07__CCM_STOP                            = IOMUX_PAD(0x004c, 0x001c, IOMUX_CONFIG_LPSR | 5, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO07__KPP_COL4                            = IOMUX_PAD(0x004c, 0x001c, IOMUX_CONFIG_LPSR | 6, 0x0604, 1, 0),
+};
+
+enum {
+       MX7D_PAD_GPIO1_IO08__GPIO1_IO8                           = IOMUX_PAD(0x026C, 0x0014, 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO08__SD1_VSELECT                         = IOMUX_PAD(0x026C, 0x0014, 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO08__WDOG1_WDOG_B                        = IOMUX_PAD(0x026C, 0x0014, 2, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO08__UART3_DCE_RX                        = IOMUX_PAD(0x026C, 0x0014, 3, 0x0704, 0, 0),
+       MX7D_PAD_GPIO1_IO08__UART3_DTE_TX                        = IOMUX_PAD(0x026C, 0x0014, 3, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO08__I2C3_SCL                            = IOMUX_PAD(0x026C, 0x0014, IOMUX_CONFIG_SION | 4, 0x05E4, 0, 0),
+       MX7D_PAD_GPIO1_IO08__KPP_COL5                            = IOMUX_PAD(0x026C, 0x0014, 6, 0x0608, 0, 0),
+       MX7D_PAD_GPIO1_IO08__PWM1_OUT                            = IOMUX_PAD(0x026C, 0x0014, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_GPIO1_IO09__GPIO1_IO9                           = IOMUX_PAD(0x0270, 0x0018, 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO09__SD1_LCTL                            = IOMUX_PAD(0x0270, 0x0018, 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO09__CCM_ENET_REF_CLK3                   = IOMUX_PAD(0x0270, 0x0018, 2, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO09__UART3_DCE_TX                        = IOMUX_PAD(0x0270, 0x0018, 3, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO09__UART3_DTE_RX                        = IOMUX_PAD(0x0270, 0x0018, 3, 0x0704, 1, 0),
+       MX7D_PAD_GPIO1_IO09__I2C3_SDA                            = IOMUX_PAD(0x0270, 0x0018, IOMUX_CONFIG_SION | 4, 0x05E8, 0, 0),
+       MX7D_PAD_GPIO1_IO09__CCM_PMIC_READY                      = IOMUX_PAD(0x0270, 0x0018, 5, 0x04F4, 0, 0),
+       MX7D_PAD_GPIO1_IO09__KPP_ROW5                            = IOMUX_PAD(0x0270, 0x0018, 6, 0x0628, 0, 0),
+       MX7D_PAD_GPIO1_IO09__PWM2_OUT                            = IOMUX_PAD(0x0270, 0x0018, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_GPIO1_IO10__GPIO1_IO10                          = IOMUX_PAD(0x0274, 0x001C, 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO10__SD2_LCTL                            = IOMUX_PAD(0x0274, 0x001C, 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO10__ENET1_MDIO                          = IOMUX_PAD(0x0274, 0x001C, 2, 0x0568, 0, 0),
+       MX7D_PAD_GPIO1_IO10__UART3_DCE_RTS                       = IOMUX_PAD(0x0274, 0x001C, 3, 0x0700, 0, 0),
+       MX7D_PAD_GPIO1_IO10__UART3_DTE_CTS                       = IOMUX_PAD(0x0274, 0x001C, 3, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO10__I2C4_SCL                            = IOMUX_PAD(0x0274, 0x001C, IOMUX_CONFIG_SION | 4, 0x05EC, 0, 0),
+       MX7D_PAD_GPIO1_IO10__FLEXTIMER1_PHA                      = IOMUX_PAD(0x0274, 0x001C, 5, 0x05A4, 0, 0),
+       MX7D_PAD_GPIO1_IO10__KPP_COL6                            = IOMUX_PAD(0x0274, 0x001C, 6, 0x060C, 0, 0),
+       MX7D_PAD_GPIO1_IO10__PWM3_OUT                            = IOMUX_PAD(0x0274, 0x001C, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_GPIO1_IO11__GPIO1_IO11                          = IOMUX_PAD(0x0278, 0x0020, 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO11__SD3_LCTL                            = IOMUX_PAD(0x0278, 0x0020, 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO11__ENET1_MDC                           = IOMUX_PAD(0x0278, 0x0020, 2, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO11__UART3_DCE_CTS                       = IOMUX_PAD(0x0278, 0x0020, 3, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO11__UART3_DTE_RTS                       = IOMUX_PAD(0x0278, 0x0020, 3, 0x0700, 1, 0),
+       MX7D_PAD_GPIO1_IO11__I2C4_SDA                            = IOMUX_PAD(0x0278, 0x0020, IOMUX_CONFIG_SION | 4, 0x05F0, 0, 0),
+       MX7D_PAD_GPIO1_IO11__FLEXTIMER1_PHB                      = IOMUX_PAD(0x0278, 0x0020, 5, 0x05A8, 0, 0),
+       MX7D_PAD_GPIO1_IO11__KPP_ROW6                            = IOMUX_PAD(0x0278, 0x0020, 6, 0x062C, 0, 0),
+       MX7D_PAD_GPIO1_IO11__PWM4_OUT                            = IOMUX_PAD(0x0278, 0x0020, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_GPIO1_IO12__GPIO1_IO12                          = IOMUX_PAD(0x027C, 0x0024, 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO12__SD2_VSELECT                         = IOMUX_PAD(0x027C, 0x0024, 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO12__CCM_ENET_REF_CLK1                   = IOMUX_PAD(0x027C, 0x0024, 2, 0x0564, 0, 0),
+       MX7D_PAD_GPIO1_IO12__FLEXCAN1_RX                         = IOMUX_PAD(0x027C, 0x0024, 3, 0x04DC, 0, 0),
+       MX7D_PAD_GPIO1_IO12__CM4_NMI                             = IOMUX_PAD(0x027C, 0x0024, 4, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO12__CCM_EXT_CLK1                        = IOMUX_PAD(0x027C, 0x0024, 5, 0x04E4, 0, 0),
+       MX7D_PAD_GPIO1_IO12__SNVS_VIO_5                          = IOMUX_PAD(0x027C, 0x0024, 6, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO12__USB_OTG1_ID                         = IOMUX_PAD(0x027C, 0x0024, 7, 0x0734, 0, 0),
+
+       MX7D_PAD_GPIO1_IO13__GPIO1_IO13                          = IOMUX_PAD(0x0280, 0x0028, 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO13__SD3_VSELECT                         = IOMUX_PAD(0x0280, 0x0028, 1, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO13__CCM_ENET_REF_CLK2                   = IOMUX_PAD(0x0280, 0x0028, 2, 0x0570, 0, 0),
+       MX7D_PAD_GPIO1_IO13__FLEXCAN1_TX                         = IOMUX_PAD(0x0280, 0x0028, 3, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO13__CCM_PMIC_READY                      = IOMUX_PAD(0x0280, 0x0028, 4, 0x04F4, 1, 0),
+       MX7D_PAD_GPIO1_IO13__CCM_EXT_CLK2                        = IOMUX_PAD(0x0280, 0x0028, 5, 0x04E8, 0, 0),
+       MX7D_PAD_GPIO1_IO13__SNVS_VIO_5_CTL                      = IOMUX_PAD(0x0280, 0x0028, 6, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO13__USB_OTG2_ID                         = IOMUX_PAD(0x0280, 0x0028, 7, 0x0730, 0, 0),
+
+       MX7D_PAD_GPIO1_IO14__GPIO1_IO14                          = IOMUX_PAD(0x0284, 0x002C, 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO14__SD3_CD_B                            = IOMUX_PAD(0x0284, 0x002C, 1, 0x0738, 0, 0),
+       MX7D_PAD_GPIO1_IO14__ENET2_MDIO                          = IOMUX_PAD(0x0284, 0x002C, 2, 0x0574, 0, 0),
+       MX7D_PAD_GPIO1_IO14__FLEXCAN2_RX                         = IOMUX_PAD(0x0284, 0x002C, 3, 0x04E0, 0, 0),
+       MX7D_PAD_GPIO1_IO14__WDOG3_WDOG_B                        = IOMUX_PAD(0x0284, 0x002C, 4, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO14__CCM_EXT_CLK3                        = IOMUX_PAD(0x0284, 0x002C, 5, 0x04EC, 0, 0),
+       MX7D_PAD_GPIO1_IO14__SDMA_EXT_EVENT0                     = IOMUX_PAD(0x0284, 0x002C, 6, 0x06D8, 0, 0),
+
+       MX7D_PAD_GPIO1_IO15__GPIO1_IO15                          = IOMUX_PAD(0x0288, 0x0030, 0, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO15__SD3_WP                              = IOMUX_PAD(0x0288, 0x0030, 1, 0x073C, 0, 0),
+       MX7D_PAD_GPIO1_IO15__ENET2_MDC                           = IOMUX_PAD(0x0288, 0x0030, 2, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO15__FLEXCAN2_TX                         = IOMUX_PAD(0x0288, 0x0030, 3, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO15__WDOG4_WDOG_B                        = IOMUX_PAD(0x0288, 0x0030, 4, 0x0000, 0, 0),
+       MX7D_PAD_GPIO1_IO15__CCM_EXT_CLK4                        = IOMUX_PAD(0x0288, 0x0030, 5, 0x04F0, 0, 0),
+       MX7D_PAD_GPIO1_IO15__SDMA_EXT_EVENT1                     = IOMUX_PAD(0x0288, 0x0030, 6, 0x06DC, 0, 0),
+
+       MX7D_PAD_EPDC_DATA00__EPDC_DATA0                         = IOMUX_PAD(0x02A4, 0x0034, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA00__SIM1_PORT2_TRXD                    = IOMUX_PAD(0x02A4, 0x0034, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA00__QSPI_A_DATA0                       = IOMUX_PAD(0x02A4, 0x0034, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA00__KPP_ROW3                           = IOMUX_PAD(0x02A4, 0x0034, 3, 0x0620, 0, 0),
+       MX7D_PAD_EPDC_DATA00__EIM_AD0                            = IOMUX_PAD(0x02A4, 0x0034, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA00__GPIO2_IO0                          = IOMUX_PAD(0x02A4, 0x0034, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA00__LCD_DATA0                          = IOMUX_PAD(0x02A4, 0x0034, 6, 0x0638, 0, 0),
+       MX7D_PAD_EPDC_DATA00__LCD_CLK                            = IOMUX_PAD(0x02A4, 0x0034, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA01__EPDC_DATA1                         = IOMUX_PAD(0x02A8, 0x0038, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA01__SIM1_PORT2_CLK                     = IOMUX_PAD(0x02A8, 0x0038, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA01__QSPI_A_DATA1                       = IOMUX_PAD(0x02A8, 0x0038, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA01__KPP_COL3                           = IOMUX_PAD(0x02A8, 0x0038, 3, 0x0600, 0, 0),
+       MX7D_PAD_EPDC_DATA01__EIM_AD1                            = IOMUX_PAD(0x02A8, 0x0038, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA01__GPIO2_IO1                          = IOMUX_PAD(0x02A8, 0x0038, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA01__LCD_DATA1                          = IOMUX_PAD(0x02A8, 0x0038, 6, 0x063C, 0, 0),
+       MX7D_PAD_EPDC_DATA01__LCD_ENABLE                         = IOMUX_PAD(0x02A8, 0x0038, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA02__EPDC_DATA2                         = IOMUX_PAD(0x02AC, 0x003C, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA02__SIM1_PORT2_RST_B                   = IOMUX_PAD(0x02AC, 0x003C, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA02__QSPI_A_DATA2                       = IOMUX_PAD(0x02AC, 0x003C, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA02__KPP_ROW2                           = IOMUX_PAD(0x02AC, 0x003C, 3, 0x061C, 0, 0),
+       MX7D_PAD_EPDC_DATA02__EIM_AD2                            = IOMUX_PAD(0x02AC, 0x003C, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA02__GPIO2_IO2                          = IOMUX_PAD(0x02AC, 0x003C, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA02__LCD_DATA2                          = IOMUX_PAD(0x02AC, 0x003C, 6, 0x0640, 0, 0),
+       MX7D_PAD_EPDC_DATA02__LCD_VSYNC                          = IOMUX_PAD(0x02AC, 0x003C, 7, 0x0698, 0, 0),
+
+       MX7D_PAD_EPDC_DATA03__EPDC_DATA3                         = IOMUX_PAD(0x02B0, 0x0040, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA03__SIM1_PORT2_SVEN                    = IOMUX_PAD(0x02B0, 0x0040, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA03__QSPI_A_DATA3                       = IOMUX_PAD(0x02B0, 0x0040, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA03__KPP_COL2                           = IOMUX_PAD(0x02B0, 0x0040, 3, 0x05FC, 0, 0),
+       MX7D_PAD_EPDC_DATA03__EIM_AD3                            = IOMUX_PAD(0x02B0, 0x0040, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA03__GPIO2_IO3                          = IOMUX_PAD(0x02B0, 0x0040, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA03__LCD_DATA3                          = IOMUX_PAD(0x02B0, 0x0040, 6, 0x0644, 0, 0),
+       MX7D_PAD_EPDC_DATA03__LCD_HSYNC                          = IOMUX_PAD(0x02B0, 0x0040, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA04__EPDC_DATA4                         = IOMUX_PAD(0x02B4, 0x0044, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA04__SIM1_PORT2_PD                      = IOMUX_PAD(0x02B4, 0x0044, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA04__QSPI_A_DQS                         = IOMUX_PAD(0x02B4, 0x0044, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA04__KPP_ROW1                           = IOMUX_PAD(0x02B4, 0x0044, 3, 0x0618, 0, 0),
+       MX7D_PAD_EPDC_DATA04__EIM_AD4                            = IOMUX_PAD(0x02B4, 0x0044, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA04__GPIO2_IO4                          = IOMUX_PAD(0x02B4, 0x0044, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA04__LCD_DATA4                          = IOMUX_PAD(0x02B4, 0x0044, 6, 0x0648, 0, 0),
+       MX7D_PAD_EPDC_DATA04__JTAG_FAIL                          = IOMUX_PAD(0x02B4, 0x0044, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA05__EPDC_DATA5                         = IOMUX_PAD(0x02B8, 0x0048, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA05__SIM2_PORT2_TRXD                    = IOMUX_PAD(0x02B8, 0x0048, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA05__QSPI_A_SCLK                        = IOMUX_PAD(0x02B8, 0x0048, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA05__KPP_COL1                           = IOMUX_PAD(0x02B8, 0x0048, 3, 0x05F8, 0, 0),
+       MX7D_PAD_EPDC_DATA05__EIM_AD5                            = IOMUX_PAD(0x02B8, 0x0048, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA05__GPIO2_IO5                          = IOMUX_PAD(0x02B8, 0x0048, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA05__LCD_DATA5                          = IOMUX_PAD(0x02B8, 0x0048, 6, 0x064C, 0, 0),
+       MX7D_PAD_EPDC_DATA05__JTAG_ACTIVE                        = IOMUX_PAD(0x02B8, 0x0048, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA06__EPDC_DATA6                         = IOMUX_PAD(0x02BC, 0x004C, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA06__SIM2_PORT2_CLK                     = IOMUX_PAD(0x02BC, 0x004C, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA06__QSPI_A_SS0_B                       = IOMUX_PAD(0x02BC, 0x004C, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA06__KPP_ROW0                           = IOMUX_PAD(0x02BC, 0x004C, 3, 0x0614, 0, 0),
+       MX7D_PAD_EPDC_DATA06__EIM_AD6                            = IOMUX_PAD(0x02BC, 0x004C, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA06__GPIO2_IO6                          = IOMUX_PAD(0x02BC, 0x004C, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA06__LCD_DATA6                          = IOMUX_PAD(0x02BC, 0x004C, 6, 0x0650, 0, 0),
+       MX7D_PAD_EPDC_DATA06__JTAG_DE_B                          = IOMUX_PAD(0x02BC, 0x004C, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA07__EPDC_DATA7                         = IOMUX_PAD(0x02C0, 0x0050, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA07__SIM2_PORT2_RST_B                   = IOMUX_PAD(0x02C0, 0x0050, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA07__QSPI_A_SS1_B                       = IOMUX_PAD(0x02C0, 0x0050, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA07__KPP_COL0                           = IOMUX_PAD(0x02C0, 0x0050, 3, 0x05F4, 0, 0),
+       MX7D_PAD_EPDC_DATA07__EIM_AD7                            = IOMUX_PAD(0x02C0, 0x0050, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA07__GPIO2_IO7                          = IOMUX_PAD(0x02C0, 0x0050, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA07__LCD_DATA7                          = IOMUX_PAD(0x02C0, 0x0050, 6, 0x0654, 0, 0),
+       MX7D_PAD_EPDC_DATA07__JTAG_DONE                          = IOMUX_PAD(0x02C0, 0x0050, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA08__EPDC_DATA8                         = IOMUX_PAD(0x02C4, 0x0054, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA08__SIM1_PORT1_TRXD                    = IOMUX_PAD(0x02C4, 0x0054, 1, 0x06E4, 0, 0),
+       MX7D_PAD_EPDC_DATA08__QSPI_B_DATA0                       = IOMUX_PAD(0x02C4, 0x0054, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA08__UART6_DCE_RX                       = IOMUX_PAD(0x02C4, 0x0054, 3, 0x071C, 0, 0),
+       MX7D_PAD_EPDC_DATA08__UART6_DTE_TX                       = IOMUX_PAD(0x02C4, 0x0054, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA08__EIM_OE                             = IOMUX_PAD(0x02C4, 0x0054, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA08__GPIO2_IO8                          = IOMUX_PAD(0x02C4, 0x0054, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA08__LCD_DATA8                          = IOMUX_PAD(0x02C4, 0x0054, 6, 0x0658, 0, 0),
+       MX7D_PAD_EPDC_DATA08__LCD_BUSY                           = IOMUX_PAD(0x02C4, 0x0054, 7, 0x0634, 0, 0),
+       MX7D_PAD_EPDC_DATA08__EPDC_SDCLK                         = IOMUX_PAD(0x02C4, 0x0054, 8, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA09__EPDC_DATA9                         = IOMUX_PAD(0x02C8, 0x0058, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA09__SIM1_PORT1_CLK                     = IOMUX_PAD(0x02C8, 0x0058, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA09__QSPI_B_DATA1                       = IOMUX_PAD(0x02C8, 0x0058, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA09__UART6_DCE_TX                       = IOMUX_PAD(0x02C8, 0x0058, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA09__UART6_DTE_RX                       = IOMUX_PAD(0x02C8, 0x0058, 3, 0x071C, 1, 0),
+       MX7D_PAD_EPDC_DATA09__EIM_RW                             = IOMUX_PAD(0x02C8, 0x0058, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA09__GPIO2_IO9                          = IOMUX_PAD(0x02C8, 0x0058, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA09__LCD_DATA9                          = IOMUX_PAD(0x02C8, 0x0058, 6, 0x065C, 0, 0),
+       MX7D_PAD_EPDC_DATA09__LCD_DATA0                          = IOMUX_PAD(0x02C8, 0x0058, 7, 0x0638, 1, 0),
+       MX7D_PAD_EPDC_DATA09__EPDC_SDLE                          = IOMUX_PAD(0x02C8, 0x0058, 8, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA10__EPDC_DATA10                        = IOMUX_PAD(0x02CC, 0x005C, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA10__SIM1_PORT1_RST_B                   = IOMUX_PAD(0x02CC, 0x005C, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA10__QSPI_B_DATA2                       = IOMUX_PAD(0x02CC, 0x005C, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA10__UART6_DCE_RTS                      = IOMUX_PAD(0x02CC, 0x005C, 3, 0x0718, 0, 0),
+       MX7D_PAD_EPDC_DATA10__UART6_DTE_CTS                      = IOMUX_PAD(0x02CC, 0x005C, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA10__EIM_CS0_B                          = IOMUX_PAD(0x02CC, 0x005C, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA10__GPIO2_IO10                         = IOMUX_PAD(0x02CC, 0x005C, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA10__LCD_DATA10                         = IOMUX_PAD(0x02CC, 0x005C, 6, 0x0660, 0, 0),
+       MX7D_PAD_EPDC_DATA10__LCD_DATA9                          = IOMUX_PAD(0x02CC, 0x005C, 7, 0x065C, 1, 0),
+       MX7D_PAD_EPDC_DATA10__EPDC_SDOE                          = IOMUX_PAD(0x02CC, 0x005C, 8, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA11__EPDC_DATA11                        = IOMUX_PAD(0x02D0, 0x0060, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA11__SIM1_PORT1_SVEN                    = IOMUX_PAD(0x02D0, 0x0060, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA11__QSPI_B_DATA3                       = IOMUX_PAD(0x02D0, 0x0060, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA11__UART6_DCE_CTS                      = IOMUX_PAD(0x02D0, 0x0060, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA11__UART6_DTE_RTS                      = IOMUX_PAD(0x02D0, 0x0060, 3, 0x0718, 1, 0),
+       MX7D_PAD_EPDC_DATA11__EIM_BCLK                           = IOMUX_PAD(0x02D0, 0x0060, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA11__GPIO2_IO11                         = IOMUX_PAD(0x02D0, 0x0060, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA11__LCD_DATA11                         = IOMUX_PAD(0x02D0, 0x0060, 6, 0x0664, 0, 0),
+       MX7D_PAD_EPDC_DATA11__LCD_DATA1                          = IOMUX_PAD(0x02D0, 0x0060, 7, 0x063C, 1, 0),
+       MX7D_PAD_EPDC_DATA11__EPDC_SDCE0                         = IOMUX_PAD(0x02D0, 0x0060, 8, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA12__EPDC_DATA12                        = IOMUX_PAD(0x02D4, 0x0064, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA12__SIM1_PORT1_PD                      = IOMUX_PAD(0x02D4, 0x0064, 1, 0x06E0, 0, 0),
+       MX7D_PAD_EPDC_DATA12__QSPI_B_DQS                         = IOMUX_PAD(0x02D4, 0x0064, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA12__UART7_DCE_RX                       = IOMUX_PAD(0x02D4, 0x0064, 3, 0x0724, 0, 0),
+       MX7D_PAD_EPDC_DATA12__UART7_DTE_TX                       = IOMUX_PAD(0x02D4, 0x0064, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA12__EIM_LBA_B                          = IOMUX_PAD(0x02D4, 0x0064, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA12__GPIO2_IO12                         = IOMUX_PAD(0x02D4, 0x0064, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA12__LCD_DATA12                         = IOMUX_PAD(0x02D4, 0x0064, 6, 0x0668, 0, 0),
+       MX7D_PAD_EPDC_DATA12__LCD_DATA21                         = IOMUX_PAD(0x02D4, 0x0064, 7, 0x068C, 0, 0),
+       MX7D_PAD_EPDC_DATA12__EPDC_GDCLK                         = IOMUX_PAD(0x02D4, 0x0064, 8, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA13__EPDC_DATA13                        = IOMUX_PAD(0x02D8, 0x0068, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA13__SIM2_PORT1_TRXD                    = IOMUX_PAD(0x02D8, 0x0068, 1, 0x06EC, 0, 0),
+       MX7D_PAD_EPDC_DATA13__QSPI_B_SCLK                        = IOMUX_PAD(0x02D8, 0x0068, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA13__UART7_DCE_TX                       = IOMUX_PAD(0x02D8, 0x0068, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA13__UART7_DTE_RX                       = IOMUX_PAD(0x02D8, 0x0068, 3, 0x0724, 1, 0),
+       MX7D_PAD_EPDC_DATA13__EIM_WAIT                           = IOMUX_PAD(0x02D8, 0x0068, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA13__GPIO2_IO13                         = IOMUX_PAD(0x02D8, 0x0068, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA13__LCD_DATA13                         = IOMUX_PAD(0x02D8, 0x0068, 6, 0x066C, 0, 0),
+       MX7D_PAD_EPDC_DATA13__LCD_CS                             = IOMUX_PAD(0x02D8, 0x0068, 7, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA13__EPDC_GDOE                          = IOMUX_PAD(0x02D8, 0x0068, 8, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA14__EPDC_DATA14                        = IOMUX_PAD(0x02DC, 0x006C, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA14__SIM2_PORT1_CLK                     = IOMUX_PAD(0x02DC, 0x006C, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA14__QSPI_B_SS0_B                       = IOMUX_PAD(0x02DC, 0x006C, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA14__UART7_DCE_RTS                      = IOMUX_PAD(0x02DC, 0x006C, 3, 0x0720, 0, 0),
+       MX7D_PAD_EPDC_DATA14__UART7_DTE_CTS                      = IOMUX_PAD(0x02DC, 0x006C, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA14__EIM_EB_B0                          = IOMUX_PAD(0x02DC, 0x006C, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA14__GPIO2_IO14                         = IOMUX_PAD(0x02DC, 0x006C, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA14__LCD_DATA14                         = IOMUX_PAD(0x02DC, 0x006C, 6, 0x0670, 0, 0),
+       MX7D_PAD_EPDC_DATA14__LCD_DATA22                         = IOMUX_PAD(0x02DC, 0x006C, 7, 0x0690, 0, 0),
+       MX7D_PAD_EPDC_DATA14__EPDC_GDSP                          = IOMUX_PAD(0x02DC, 0x006C, 8, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_DATA15__EPDC_DATA15                        = IOMUX_PAD(0x02E0, 0x0070, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA15__SIM2_PORT1_RST_B                   = IOMUX_PAD(0x02E0, 0x0070, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA15__QSPI_B_SS1_B                       = IOMUX_PAD(0x02E0, 0x0070, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA15__UART7_DCE_CTS                      = IOMUX_PAD(0x02E0, 0x0070, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA15__UART7_DTE_RTS                      = IOMUX_PAD(0x02E0, 0x0070, 3, 0x0720, 1, 0),
+       MX7D_PAD_EPDC_DATA15__EIM_CS1_B                          = IOMUX_PAD(0x02E0, 0x0070, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA15__GPIO2_IO15                         = IOMUX_PAD(0x02E0, 0x0070, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA15__LCD_DATA15                         = IOMUX_PAD(0x02E0, 0x0070, 6, 0x0674, 0, 0),
+       MX7D_PAD_EPDC_DATA15__LCD_WR_RWN                         = IOMUX_PAD(0x02E0, 0x0070, 7, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_DATA15__EPDC_PWR_COM                       = IOMUX_PAD(0x02E0, 0x0070, 8, 0x0000, 0, 0),
+
+       MX7D_PAD_EPDC_SDCLK__EPDC_SDCLK                          = IOMUX_PAD(0x02E4, 0x0074, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCLK__SIM2_PORT2_SVEN                     = IOMUX_PAD(0x02E4, 0x0074, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCLK__ENET2_RGMII_RD0                     = IOMUX_PAD(0x02E4, 0x0074, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCLK__KPP_ROW4                            = IOMUX_PAD(0x02E4, 0x0074, 3, 0x0624, 0, 0),
+       MX7D_PAD_EPDC_SDCLK__EIM_AD10                            = IOMUX_PAD(0x02E4, 0x0074, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCLK__GPIO2_IO16                          = IOMUX_PAD(0x02E4, 0x0074, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCLK__LCD_CLK                             = IOMUX_PAD(0x02E4, 0x0074, 6, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCLK__LCD_DATA20                          = IOMUX_PAD(0x02E4, 0x0074, 7, 0x0688, 0, 0),
+
+       MX7D_PAD_EPDC_SDLE__EPDC_SDLE                            = IOMUX_PAD(0x02E8, 0x0078, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDLE__SIM2_PORT2_PD                        = IOMUX_PAD(0x02E8, 0x0078, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDLE__ENET2_RGMII_RD1                      = IOMUX_PAD(0x02E8, 0x0078, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDLE__KPP_COL4                             = IOMUX_PAD(0x02E8, 0x0078, 3, 0x0604, 0, 0),
+       MX7D_PAD_EPDC_SDLE__EIM_AD11                             = IOMUX_PAD(0x02E8, 0x0078, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDLE__GPIO2_IO17                           = IOMUX_PAD(0x02E8, 0x0078, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDLE__LCD_DATA16                           = IOMUX_PAD(0x02E8, 0x0078, 6, 0x0678, 0, 0),
+       MX7D_PAD_EPDC_SDLE__LCD_DATA8                            = IOMUX_PAD(0x02E8, 0x0078, 7, 0x0658, 1, 0),
+
+       MX7D_PAD_EPDC_SDOE__EPDC_SDOE                            = IOMUX_PAD(0x02EC, 0x007C, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDOE__FLEXTIMER1_CH0                       = IOMUX_PAD(0x02EC, 0x007C, 1, 0x0584, 0, 0),
+       MX7D_PAD_EPDC_SDOE__ENET2_RGMII_RD2                      = IOMUX_PAD(0x02EC, 0x007C, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDOE__KPP_COL5                             = IOMUX_PAD(0x02EC, 0x007C, 3, 0x0608, 1, 0),
+       MX7D_PAD_EPDC_SDOE__EIM_AD12                             = IOMUX_PAD(0x02EC, 0x007C, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDOE__GPIO2_IO18                           = IOMUX_PAD(0x02EC, 0x007C, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDOE__LCD_DATA17                           = IOMUX_PAD(0x02EC, 0x007C, 6, 0x067C, 0, 0),
+       MX7D_PAD_EPDC_SDOE__LCD_DATA23                           = IOMUX_PAD(0x02EC, 0x007C, 7, 0x0694, 0, 0),
+
+       MX7D_PAD_EPDC_SDSHR__EPDC_SDSHR                          = IOMUX_PAD(0x02F0, 0x0080, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDSHR__FLEXTIMER1_CH1                      = IOMUX_PAD(0x02F0, 0x0080, 1, 0x0588, 0, 0),
+       MX7D_PAD_EPDC_SDSHR__ENET2_RGMII_RD3                     = IOMUX_PAD(0x02F0, 0x0080, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDSHR__KPP_ROW5                            = IOMUX_PAD(0x02F0, 0x0080, 3, 0x0628, 1, 0),
+       MX7D_PAD_EPDC_SDSHR__EIM_AD13                            = IOMUX_PAD(0x02F0, 0x0080, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDSHR__GPIO2_IO19                          = IOMUX_PAD(0x02F0, 0x0080, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDSHR__LCD_DATA18                          = IOMUX_PAD(0x02F0, 0x0080, 6, 0x0680, 0, 0),
+       MX7D_PAD_EPDC_SDSHR__LCD_DATA10                          = IOMUX_PAD(0x02F0, 0x0080, 7, 0x0660, 1, 0),
+
+       MX7D_PAD_EPDC_SDCE0__EPDC_SDCE0                          = IOMUX_PAD(0x02F4, 0x0084, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE0__FLEXTIMER1_CH2                      = IOMUX_PAD(0x02F4, 0x0084, 1, 0x058C, 0, 0),
+       MX7D_PAD_EPDC_SDCE0__ENET2_RGMII_RX_CTL                  = IOMUX_PAD(0x02F4, 0x0084, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE0__EIM_AD14                            = IOMUX_PAD(0x02F4, 0x0084, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE0__GPIO2_IO20                          = IOMUX_PAD(0x02F4, 0x0084, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE0__LCD_DATA19                          = IOMUX_PAD(0x02F4, 0x0084, 6, 0x0684, 0, 0),
+       MX7D_PAD_EPDC_SDCE0__LCD_DATA5                           = IOMUX_PAD(0x02F4, 0x0084, 7, 0x064C, 1, 0),
+
+       MX7D_PAD_EPDC_SDCE1__EPDC_SDCE1                          = IOMUX_PAD(0x02F8, 0x0088, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE1__FLEXTIMER1_CH3                      = IOMUX_PAD(0x02F8, 0x0088, 1, 0x0590, 0, 0),
+       MX7D_PAD_EPDC_SDCE1__ENET2_RGMII_RXC                     = IOMUX_PAD(0x02F8, 0x0088, 2, 0x0578, 0, 0),
+       MX7D_PAD_EPDC_SDCE1__ENET2_RX_ER                         = IOMUX_PAD(0x02F8, 0x0088, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE1__EIM_AD15                            = IOMUX_PAD(0x02F8, 0x0088, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE1__GPIO2_IO21                          = IOMUX_PAD(0x02F8, 0x0088, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE1__LCD_DATA20                          = IOMUX_PAD(0x02F8, 0x0088, 6, 0x0688, 1, 0),
+       MX7D_PAD_EPDC_SDCE1__LCD_DATA4                           = IOMUX_PAD(0x02F8, 0x0088, 7, 0x0648, 1, 0),
+
+       MX7D_PAD_EPDC_SDCE2__EPDC_SDCE2                          = IOMUX_PAD(0x02FC, 0x008C, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE2__SIM2_PORT1_SVEN                     = IOMUX_PAD(0x02FC, 0x008C, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE2__ENET2_RGMII_TD0                     = IOMUX_PAD(0x02FC, 0x008C, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE2__KPP_COL6                            = IOMUX_PAD(0x02FC, 0x008C, 3, 0x060C, 1, 0),
+       MX7D_PAD_EPDC_SDCE2__EIM_ADDR16                          = IOMUX_PAD(0x02FC, 0x008C, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE2__GPIO2_IO22                          = IOMUX_PAD(0x02FC, 0x008C, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE2__LCD_DATA21                          = IOMUX_PAD(0x02FC, 0x008C, 6, 0x068C, 1, 0),
+       MX7D_PAD_EPDC_SDCE2__LCD_DATA3                           = IOMUX_PAD(0x02FC, 0x008C, 7, 0x0644, 1, 0),
+
+       MX7D_PAD_EPDC_SDCE3__EPDC_SDCE3                          = IOMUX_PAD(0x0300, 0x0090, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE3__SIM2_PORT1_PD                       = IOMUX_PAD(0x0300, 0x0090, 1, 0x06E8, 0, 0),
+       MX7D_PAD_EPDC_SDCE3__ENET2_RGMII_TD1                     = IOMUX_PAD(0x0300, 0x0090, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE3__KPP_ROW6                            = IOMUX_PAD(0x0300, 0x0090, 3, 0x062C, 1, 0),
+       MX7D_PAD_EPDC_SDCE3__EIM_ADDR17                          = IOMUX_PAD(0x0300, 0x0090, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE3__GPIO2_IO23                          = IOMUX_PAD(0x0300, 0x0090, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_SDCE3__LCD_DATA22                          = IOMUX_PAD(0x0300, 0x0090, 6, 0x0690, 1, 0),
+       MX7D_PAD_EPDC_SDCE3__LCD_DATA2                           = IOMUX_PAD(0x0300, 0x0090, 7, 0x0640, 1, 0),
+
+       MX7D_PAD_EPDC_GDCLK__EPDC_GDCLK                          = IOMUX_PAD(0x0304, 0x0094, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDCLK__FLEXTIMER2_CH0                      = IOMUX_PAD(0x0304, 0x0094, 1, 0x05AC, 0, 0),
+       MX7D_PAD_EPDC_GDCLK__ENET2_RGMII_TD2                     = IOMUX_PAD(0x0304, 0x0094, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDCLK__KPP_COL7                            = IOMUX_PAD(0x0304, 0x0094, 3, 0x0610, 0, 0),
+       MX7D_PAD_EPDC_GDCLK__EIM_ADDR18                          = IOMUX_PAD(0x0304, 0x0094, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDCLK__GPIO2_IO24                          = IOMUX_PAD(0x0304, 0x0094, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDCLK__LCD_DATA23                          = IOMUX_PAD(0x0304, 0x0094, 6, 0x0694, 1, 0),
+       MX7D_PAD_EPDC_GDCLK__LCD_DATA16                          = IOMUX_PAD(0x0304, 0x0094, 7, 0x0678, 1, 0),
+
+       MX7D_PAD_EPDC_GDOE__EPDC_GDOE                            = IOMUX_PAD(0x0308, 0x0098, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDOE__FLEXTIMER2_CH1                       = IOMUX_PAD(0x0308, 0x0098, 1, 0x05B0, 0, 0),
+       MX7D_PAD_EPDC_GDOE__ENET2_RGMII_TD3                      = IOMUX_PAD(0x0308, 0x0098, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDOE__KPP_ROW7                             = IOMUX_PAD(0x0308, 0x0098, 3, 0x0630, 0, 0),
+       MX7D_PAD_EPDC_GDOE__EIM_ADDR19                           = IOMUX_PAD(0x0308, 0x0098, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDOE__GPIO2_IO25                           = IOMUX_PAD(0x0308, 0x0098, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDOE__LCD_WR_RWN                           = IOMUX_PAD(0x0308, 0x0098, 6, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDOE__LCD_DATA18                           = IOMUX_PAD(0x0308, 0x0098, 7, 0x0680, 1, 0),
+
+       MX7D_PAD_EPDC_GDRL__EPDC_GDRL                            = IOMUX_PAD(0x030C, 0x009C, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDRL__FLEXTIMER2_CH2                       = IOMUX_PAD(0x030C, 0x009C, 1, 0x05B4, 0, 0),
+       MX7D_PAD_EPDC_GDRL__ENET2_RGMII_TX_CTL                   = IOMUX_PAD(0x030C, 0x009C, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDRL__EIM_ADDR20                           = IOMUX_PAD(0x030C, 0x009C, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDRL__GPIO2_IO26                           = IOMUX_PAD(0x030C, 0x009C, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDRL__LCD_RD_E                             = IOMUX_PAD(0x030C, 0x009C, 6, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDRL__LCD_DATA19                           = IOMUX_PAD(0x030C, 0x009C, 7, 0x0684, 1, 0),
+
+       MX7D_PAD_EPDC_GDSP__EPDC_GDSP                            = IOMUX_PAD(0x0310, 0x00A0, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDSP__FLEXTIMER2_CH3                       = IOMUX_PAD(0x0310, 0x00A0, 1, 0x05B8, 0, 0),
+       MX7D_PAD_EPDC_GDSP__ENET2_RGMII_TXC                      = IOMUX_PAD(0x0310, 0x00A0, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDSP__ENET2_TX_ER                          = IOMUX_PAD(0x0310, 0x00A0, 3, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDSP__EIM_ADDR21                           = IOMUX_PAD(0x0310, 0x00A0, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDSP__GPIO2_IO27                           = IOMUX_PAD(0x0310, 0x00A0, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_GDSP__LCD_BUSY                             = IOMUX_PAD(0x0310, 0x00A0, 6, 0x0634, 1, 0),
+       MX7D_PAD_EPDC_GDSP__LCD_DATA17                           = IOMUX_PAD(0x0310, 0x00A0, 7, 0x067C, 1, 0),
+
+       MX7D_PAD_EPDC_BDR0__EPDC_BDR0                            = IOMUX_PAD(0x0314, 0x00A4, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR0__ENET2_TX_CLK                         = IOMUX_PAD(0x0314, 0x00A4, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR0__CCM_ENET_REF_CLK2                    = IOMUX_PAD(0x0314, 0x00A4, 3, 0x0570, 1, 0),
+       MX7D_PAD_EPDC_BDR0__EIM_ADDR22                           = IOMUX_PAD(0x0314, 0x00A4, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR0__GPIO2_IO28                           = IOMUX_PAD(0x0314, 0x00A4, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR0__LCD_CS                               = IOMUX_PAD(0x0314, 0x00A4, 6, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR0__LCD_DATA7                            = IOMUX_PAD(0x0314, 0x00A4, 7, 0x0654, 1, 0),
+
+       MX7D_PAD_EPDC_BDR1__EPDC_BDR1                            = IOMUX_PAD(0x0318, 0x00A8, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR1__EPDC_SDCLKN                          = IOMUX_PAD(0x0318, 0x00A8, 1, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR1__ENET2_RX_CLK                         = IOMUX_PAD(0x0318, 0x00A8, 2, 0x0578, 1, 0),
+       MX7D_PAD_EPDC_BDR1__EIM_AD8                              = IOMUX_PAD(0x0318, 0x00A8, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR1__GPIO2_IO29                           = IOMUX_PAD(0x0318, 0x00A8, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR1__LCD_ENABLE                           = IOMUX_PAD(0x0318, 0x00A8, 6, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_BDR1__LCD_DATA6                            = IOMUX_PAD(0x0318, 0x00A8, 7, 0x0650, 1, 0),
+
+       MX7D_PAD_EPDC_PWR_COM__EPDC_PWR_COM                      = IOMUX_PAD(0x031C, 0x00AC, 0, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_PWR_COM__FLEXTIMER2_PHA                    = IOMUX_PAD(0x031C, 0x00AC, 1, 0x05CC, 0, 0),
+       MX7D_PAD_EPDC_PWR_COM__ENET2_CRS                         = IOMUX_PAD(0x031C, 0x00AC, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_PWR_COM__EIM_AD9                           = IOMUX_PAD(0x031C, 0x00AC, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_PWR_COM__GPIO2_IO30                        = IOMUX_PAD(0x031C, 0x00AC, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_PWR_COM__LCD_HSYNC                         = IOMUX_PAD(0x031C, 0x00AC, 6, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_PWR_COM__LCD_DATA11                        = IOMUX_PAD(0x031C, 0x00AC, 7, 0x0664, 1, 0),
+
+       MX7D_PAD_EPDC_PWR_STAT__EPDC_PWR_STAT                    = IOMUX_PAD(0x0320, 0x00B0, 0, 0x0580, 0, 0),
+       MX7D_PAD_EPDC_PWR_STAT__FLEXTIMER2_PHB                   = IOMUX_PAD(0x0320, 0x00B0, 1, 0x05D0, 0, 0),
+       MX7D_PAD_EPDC_PWR_STAT__ENET2_COL                        = IOMUX_PAD(0x0320, 0x00B0, 2, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_PWR_STAT__EIM_EB_B1                        = IOMUX_PAD(0x0320, 0x00B0, 4, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_PWR_STAT__GPIO2_IO31                       = IOMUX_PAD(0x0320, 0x00B0, 5, 0x0000, 0, 0),
+       MX7D_PAD_EPDC_PWR_STAT__LCD_VSYNC                        = IOMUX_PAD(0x0320, 0x00B0, 6, 0x0698, 1, 0),
+       MX7D_PAD_EPDC_PWR_STAT__LCD_DATA12                       = IOMUX_PAD(0x0320, 0x00B0, 7, 0x0668, 1, 0),
+
+       MX7D_PAD_LCD_CLK__LCD_CLK                                = IOMUX_PAD(0x0324, 0x00B4, 0, 0x0000, 0, 0),
+       MX7D_PAD_LCD_CLK__ECSPI4_MISO                            = IOMUX_PAD(0x0324, 0x00B4, 1, 0x0558, 0, 0),
+       MX7D_PAD_LCD_CLK__ENET1_1588_EVENT2_IN                   = IOMUX_PAD(0x0324, 0x00B4, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_CLK__CSI_DATA16                             = IOMUX_PAD(0x0324, 0x00B4, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_CLK__UART2_DCE_RX                           = IOMUX_PAD(0x0324, 0x00B4, 4, 0x06FC, 0, 0),
+       MX7D_PAD_LCD_CLK__UART2_DTE_TX                           = IOMUX_PAD(0x0324, 0x00B4, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_CLK__GPIO3_IO0                              = IOMUX_PAD(0x0324, 0x00B4, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_ENABLE__LCD_ENABLE                          = IOMUX_PAD(0x0328, 0x00B8, 0, 0x0000, 0, 0),
+       MX7D_PAD_LCD_ENABLE__ECSPI4_MOSI                         = IOMUX_PAD(0x0328, 0x00B8, 1, 0x055C, 0, 0),
+       MX7D_PAD_LCD_ENABLE__ENET1_1588_EVENT3_IN                = IOMUX_PAD(0x0328, 0x00B8, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_ENABLE__CSI_DATA17                          = IOMUX_PAD(0x0328, 0x00B8, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_ENABLE__UART2_DCE_TX                        = IOMUX_PAD(0x0328, 0x00B8, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_ENABLE__UART2_DTE_RX                        = IOMUX_PAD(0x0328, 0x00B8, 4, 0x06FC, 1, 0),
+       MX7D_PAD_LCD_ENABLE__GPIO3_IO1                           = IOMUX_PAD(0x0328, 0x00B8, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_HSYNC__LCD_HSYNC                            = IOMUX_PAD(0x032C, 0x00BC, 0, 0x0000, 0, 0),
+       MX7D_PAD_LCD_HSYNC__ECSPI4_SCLK                          = IOMUX_PAD(0x032C, 0x00BC, 1, 0x0554, 0, 0),
+       MX7D_PAD_LCD_HSYNC__ENET2_1588_EVENT2_IN                 = IOMUX_PAD(0x032C, 0x00BC, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_HSYNC__CSI_DATA18                           = IOMUX_PAD(0x032C, 0x00BC, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_HSYNC__UART2_DCE_RTS                        = IOMUX_PAD(0x032C, 0x00BC, 4, 0x06F8, 0, 0),
+       MX7D_PAD_LCD_HSYNC__UART2_DTE_CTS                        = IOMUX_PAD(0x032C, 0x00BC, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_HSYNC__GPIO3_IO2                            = IOMUX_PAD(0x032C, 0x00BC, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_VSYNC__LCD_VSYNC                            = IOMUX_PAD(0x0330, 0x00C0, 0, 0x0698, 2, 0),
+       MX7D_PAD_LCD_VSYNC__ECSPI4_SS0                           = IOMUX_PAD(0x0330, 0x00C0, 1, 0x0560, 0, 0),
+       MX7D_PAD_LCD_VSYNC__ENET2_1588_EVENT3_IN                 = IOMUX_PAD(0x0330, 0x00C0, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_VSYNC__CSI_DATA19                           = IOMUX_PAD(0x0330, 0x00C0, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_VSYNC__UART2_DCE_CTS                        = IOMUX_PAD(0x0330, 0x00C0, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_VSYNC__UART2_DTE_RTS                        = IOMUX_PAD(0x0330, 0x00C0, 4, 0x06F8, 1, 0),
+       MX7D_PAD_LCD_VSYNC__GPIO3_IO3                            = IOMUX_PAD(0x0330, 0x00C0, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_RESET__LCD_RESET                            = IOMUX_PAD(0x0334, 0x00C4, 0, 0x0000, 0, 0),
+       MX7D_PAD_LCD_RESET__GPT1_COMPARE1                        = IOMUX_PAD(0x0334, 0x00C4, 1, 0x0000, 0, 0),
+       MX7D_PAD_LCD_RESET__ARM_PLATFORM_EVENTI                  = IOMUX_PAD(0x0334, 0x00C4, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_RESET__CSI_FIELD                            = IOMUX_PAD(0x0334, 0x00C4, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_RESET__EIM_DTACK_B                          = IOMUX_PAD(0x0334, 0x00C4, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_RESET__GPIO3_IO4                            = IOMUX_PAD(0x0334, 0x00C4, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA00__LCD_DATA0                           = IOMUX_PAD(0x0338, 0x00C8, 0, 0x0638, 2, 0),
+       MX7D_PAD_LCD_DATA00__GPT1_COMPARE2                       = IOMUX_PAD(0x0338, 0x00C8, 1, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA00__CSI_DATA20                          = IOMUX_PAD(0x0338, 0x00C8, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA00__EIM_DATA0                           = IOMUX_PAD(0x0338, 0x00C8, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA00__GPIO3_IO5                           = IOMUX_PAD(0x0338, 0x00C8, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA00__SRC_BOOT_CFG0                       = IOMUX_PAD(0x0338, 0x00C8, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA01__LCD_DATA1                           = IOMUX_PAD(0x033C, 0x00CC, 0, 0x063C, 2, 0),
+       MX7D_PAD_LCD_DATA01__GPT1_COMPARE3                       = IOMUX_PAD(0x033C, 0x00CC, 1, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA01__CSI_DATA21                          = IOMUX_PAD(0x033C, 0x00CC, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA01__EIM_DATA1                           = IOMUX_PAD(0x033C, 0x00CC, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA01__GPIO3_IO6                           = IOMUX_PAD(0x033C, 0x00CC, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA01__SRC_BOOT_CFG1                       = IOMUX_PAD(0x033C, 0x00CC, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA02__LCD_DATA2                           = IOMUX_PAD(0x0340, 0x00D0, 0, 0x0640, 2, 0),
+       MX7D_PAD_LCD_DATA02__GPT1_CLK                            = IOMUX_PAD(0x0340, 0x00D0, 1, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA02__CSI_DATA22                          = IOMUX_PAD(0x0340, 0x00D0, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA02__EIM_DATA2                           = IOMUX_PAD(0x0340, 0x00D0, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA02__GPIO3_IO7                           = IOMUX_PAD(0x0340, 0x00D0, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA02__SRC_BOOT_CFG2                       = IOMUX_PAD(0x0340, 0x00D0, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA03__LCD_DATA3                           = IOMUX_PAD(0x0344, 0x00D4, 0, 0x0644, 2, 0),
+       MX7D_PAD_LCD_DATA03__GPT1_CAPTURE1                       = IOMUX_PAD(0x0344, 0x00D4, 1, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA03__CSI_DATA23                          = IOMUX_PAD(0x0344, 0x00D4, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA03__EIM_DATA3                           = IOMUX_PAD(0x0344, 0x00D4, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA03__GPIO3_IO8                           = IOMUX_PAD(0x0344, 0x00D4, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA03__SRC_BOOT_CFG3                       = IOMUX_PAD(0x0344, 0x00D4, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA04__LCD_DATA4                           = IOMUX_PAD(0x0348, 0x00D8, 0, 0x0648, 2, 0),
+       MX7D_PAD_LCD_DATA04__GPT1_CAPTURE2                       = IOMUX_PAD(0x0348, 0x00D8, 1, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA04__CSI_VSYNC                           = IOMUX_PAD(0x0348, 0x00D8, 3, 0x0520, 0, 0),
+       MX7D_PAD_LCD_DATA04__EIM_DATA4                           = IOMUX_PAD(0x0348, 0x00D8, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA04__GPIO3_IO9                           = IOMUX_PAD(0x0348, 0x00D8, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA04__SRC_BOOT_CFG4                       = IOMUX_PAD(0x0348, 0x00D8, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA05__LCD_DATA5                           = IOMUX_PAD(0x034C, 0x00DC, 0, 0x064C, 2, 0),
+       MX7D_PAD_LCD_DATA05__CSI_HSYNC                           = IOMUX_PAD(0x034C, 0x00DC, 3, 0x0518, 0, 0),
+       MX7D_PAD_LCD_DATA05__EIM_DATA5                           = IOMUX_PAD(0x034C, 0x00DC, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA05__GPIO3_IO10                          = IOMUX_PAD(0x034C, 0x00DC, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA05__SRC_BOOT_CFG5                       = IOMUX_PAD(0x034C, 0x00DC, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA06__LCD_DATA6                           = IOMUX_PAD(0x0350, 0x00E0, 0, 0x0650, 2, 0),
+       MX7D_PAD_LCD_DATA06__CSI_PIXCLK                          = IOMUX_PAD(0x0350, 0x00E0, 3, 0x051C, 0, 0),
+       MX7D_PAD_LCD_DATA06__EIM_DATA6                           = IOMUX_PAD(0x0350, 0x00E0, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA06__GPIO3_IO11                          = IOMUX_PAD(0x0350, 0x00E0, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA06__SRC_BOOT_CFG6                       = IOMUX_PAD(0x0350, 0x00E0, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA07__LCD_DATA7                           = IOMUX_PAD(0x0354, 0x00E4, 0, 0x0654, 2, 0),
+       MX7D_PAD_LCD_DATA07__CSI_MCLK                            = IOMUX_PAD(0x0354, 0x00E4, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA07__EIM_DATA7                           = IOMUX_PAD(0x0354, 0x00E4, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA07__GPIO3_IO12                          = IOMUX_PAD(0x0354, 0x00E4, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA07__SRC_BOOT_CFG7                       = IOMUX_PAD(0x0354, 0x00E4, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA08__LCD_DATA8                           = IOMUX_PAD(0x0358, 0x00E8, 0, 0x0658, 2, 0),
+       MX7D_PAD_LCD_DATA08__CSI_DATA9                           = IOMUX_PAD(0x0358, 0x00E8, 3, 0x0514, 0, 0),
+       MX7D_PAD_LCD_DATA08__EIM_DATA8                           = IOMUX_PAD(0x0358, 0x00E8, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA08__GPIO3_IO13                          = IOMUX_PAD(0x0358, 0x00E8, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA08__SRC_BOOT_CFG8                       = IOMUX_PAD(0x0358, 0x00E8, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA09__LCD_DATA9                           = IOMUX_PAD(0x035C, 0x00EC, 0, 0x065C, 2, 0),
+       MX7D_PAD_LCD_DATA09__CSI_DATA8                           = IOMUX_PAD(0x035C, 0x00EC, 3, 0x0510, 0, 0),
+       MX7D_PAD_LCD_DATA09__EIM_DATA9                           = IOMUX_PAD(0x035C, 0x00EC, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA09__GPIO3_IO14                          = IOMUX_PAD(0x035C, 0x00EC, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA09__SRC_BOOT_CFG9                       = IOMUX_PAD(0x035C, 0x00EC, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA10__LCD_DATA10                          = IOMUX_PAD(0x0360, 0x00F0, 0, 0x0660, 2, 0),
+       MX7D_PAD_LCD_DATA10__CSI_DATA7                           = IOMUX_PAD(0x0360, 0x00F0, 3, 0x050C, 0, 0),
+       MX7D_PAD_LCD_DATA10__EIM_DATA10                          = IOMUX_PAD(0x0360, 0x00F0, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA10__GPIO3_IO15                          = IOMUX_PAD(0x0360, 0x00F0, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA10__SRC_BOOT_CFG10                      = IOMUX_PAD(0x0360, 0x00F0, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA11__LCD_DATA11                          = IOMUX_PAD(0x0364, 0x00F4, 0, 0x0664, 2, 0),
+       MX7D_PAD_LCD_DATA11__CSI_DATA6                           = IOMUX_PAD(0x0364, 0x00F4, 3, 0x0508, 0, 0),
+       MX7D_PAD_LCD_DATA11__EIM_DATA11                          = IOMUX_PAD(0x0364, 0x00F4, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA11__GPIO3_IO16                          = IOMUX_PAD(0x0364, 0x00F4, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA11__SRC_BOOT_CFG11                      = IOMUX_PAD(0x0364, 0x00F4, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA12__LCD_DATA12                          = IOMUX_PAD(0x0368, 0x00F8, 0, 0x0668, 2, 0),
+       MX7D_PAD_LCD_DATA12__CSI_DATA5                           = IOMUX_PAD(0x0368, 0x00F8, 3, 0x0504, 0, 0),
+       MX7D_PAD_LCD_DATA12__EIM_DATA12                          = IOMUX_PAD(0x0368, 0x00F8, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA12__GPIO3_IO17                          = IOMUX_PAD(0x0368, 0x00F8, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA12__SRC_BOOT_CFG12                      = IOMUX_PAD(0x0368, 0x00F8, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA13__LCD_DATA13                          = IOMUX_PAD(0x036C, 0x00FC, 0, 0x066C, 1, 0),
+       MX7D_PAD_LCD_DATA13__CSI_DATA4                           = IOMUX_PAD(0x036C, 0x00FC, 3, 0x0500, 0, 0),
+       MX7D_PAD_LCD_DATA13__EIM_DATA13                          = IOMUX_PAD(0x036C, 0x00FC, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA13__GPIO3_IO18                          = IOMUX_PAD(0x036C, 0x00FC, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA13__SRC_BOOT_CFG13                      = IOMUX_PAD(0x036C, 0x00FC, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA14__LCD_DATA14                          = IOMUX_PAD(0x0370, 0x0100, 0, 0x0670, 1, 0),
+       MX7D_PAD_LCD_DATA14__CSI_DATA3                           = IOMUX_PAD(0x0370, 0x0100, 3, 0x04FC, 0, 0),
+       MX7D_PAD_LCD_DATA14__EIM_DATA14                          = IOMUX_PAD(0x0370, 0x0100, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA14__GPIO3_IO19                          = IOMUX_PAD(0x0370, 0x0100, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA14__SRC_BOOT_CFG14                      = IOMUX_PAD(0x0370, 0x0100, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA15__LCD_DATA15                          = IOMUX_PAD(0x0374, 0x0104, 0, 0x0674, 1, 0),
+       MX7D_PAD_LCD_DATA15__CSI_DATA2                           = IOMUX_PAD(0x0374, 0x0104, 3, 0x04F8, 0, 0),
+       MX7D_PAD_LCD_DATA15__EIM_DATA15                          = IOMUX_PAD(0x0374, 0x0104, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA15__GPIO3_IO20                          = IOMUX_PAD(0x0374, 0x0104, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA15__SRC_BOOT_CFG15                      = IOMUX_PAD(0x0374, 0x0104, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA16__LCD_DATA16                          = IOMUX_PAD(0x0378, 0x0108, 0, 0x0678, 2, 0),
+       MX7D_PAD_LCD_DATA16__FLEXTIMER1_CH4                      = IOMUX_PAD(0x0378, 0x0108, 1, 0x0594, 0, 0),
+       MX7D_PAD_LCD_DATA16__CSI_DATA1                           = IOMUX_PAD(0x0378, 0x0108, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA16__EIM_CRE                             = IOMUX_PAD(0x0378, 0x0108, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA16__GPIO3_IO21                          = IOMUX_PAD(0x0378, 0x0108, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA16__SRC_BOOT_CFG16                      = IOMUX_PAD(0x0378, 0x0108, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA17__LCD_DATA17                          = IOMUX_PAD(0x037C, 0x010C, 0, 0x067C, 2, 0),
+       MX7D_PAD_LCD_DATA17__FLEXTIMER1_CH5                      = IOMUX_PAD(0x037C, 0x010C, 1, 0x0598, 0, 0),
+       MX7D_PAD_LCD_DATA17__CSI_DATA0                           = IOMUX_PAD(0x037C, 0x010C, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA17__EIM_ACLK_FREERUN                    = IOMUX_PAD(0x037C, 0x010C, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA17__GPIO3_IO22                          = IOMUX_PAD(0x037C, 0x010C, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA17__SRC_BOOT_CFG17                      = IOMUX_PAD(0x037C, 0x010C, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA18__LCD_DATA18                          = IOMUX_PAD(0x0380, 0x0110, 0, 0x0680, 2, 0),
+       MX7D_PAD_LCD_DATA18__FLEXTIMER1_CH6                      = IOMUX_PAD(0x0380, 0x0110, 1, 0x059C, 0, 0),
+       MX7D_PAD_LCD_DATA18__ARM_PLATFORM_EVENTO                 = IOMUX_PAD(0x0380, 0x0110, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA18__CSI_DATA15                          = IOMUX_PAD(0x0380, 0x0110, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA18__EIM_CS2_B                           = IOMUX_PAD(0x0380, 0x0110, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA18__GPIO3_IO23                          = IOMUX_PAD(0x0380, 0x0110, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA18__SRC_BOOT_CFG18                      = IOMUX_PAD(0x0380, 0x0110, 6, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA19__EIM_CS3_B                           = IOMUX_PAD(0x0384, 0x0114, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA19__GPIO3_IO24                          = IOMUX_PAD(0x0384, 0x0114, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA19__SRC_BOOT_CFG19                      = IOMUX_PAD(0x0384, 0x0114, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA19__LCD_DATA19                          = IOMUX_PAD(0x0384, 0x0114, 0, 0x0684, 2, 0),
+       MX7D_PAD_LCD_DATA19__FLEXTIMER1_CH7                      = IOMUX_PAD(0x0384, 0x0114, 1, 0x05A0, 0, 0),
+       MX7D_PAD_LCD_DATA19__CSI_DATA14                          = IOMUX_PAD(0x0384, 0x0114, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA20__EIM_ADDR23                          = IOMUX_PAD(0x0388, 0x0118, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA20__GPIO3_IO25                          = IOMUX_PAD(0x0388, 0x0118, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA20__I2C3_SCL                            = IOMUX_PAD(0x0388, 0x0118, IOMUX_CONFIG_SION | 6, 0x05E4, 1, 0),
+
+       MX7D_PAD_LCD_DATA20__LCD_DATA20                          = IOMUX_PAD(0x0388, 0x0118, 0, 0x0688, 2, 0),
+       MX7D_PAD_LCD_DATA20__FLEXTIMER2_CH4                      = IOMUX_PAD(0x0388, 0x0118, 1, 0x05BC, 0, 0),
+       MX7D_PAD_LCD_DATA20__ENET1_1588_EVENT2_OUT               = IOMUX_PAD(0x0388, 0x0118, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA20__CSI_DATA13                          = IOMUX_PAD(0x0388, 0x0118, 3, 0x0000, 0, 0),
+
+       MX7D_PAD_LCD_DATA21__LCD_DATA21                          = IOMUX_PAD(0x038C, 0x011C, 0, 0x068C, 2, 0),
+       MX7D_PAD_LCD_DATA21__FLEXTIMER2_CH5                      = IOMUX_PAD(0x038C, 0x011C, 1, 0x05C0, 0, 0),
+       MX7D_PAD_LCD_DATA21__ENET1_1588_EVENT3_OUT               = IOMUX_PAD(0x038C, 0x011C, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA21__CSI_DATA12                          = IOMUX_PAD(0x038C, 0x011C, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA21__EIM_ADDR24                          = IOMUX_PAD(0x038C, 0x011C, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA21__GPIO3_IO26                          = IOMUX_PAD(0x038C, 0x011C, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA21__I2C3_SDA                            = IOMUX_PAD(0x038C, 0x011C, IOMUX_CONFIG_SION | 6, 0x05E8, 1, 0),
+
+       MX7D_PAD_LCD_DATA22__LCD_DATA22                          = IOMUX_PAD(0x0390, 0x0120, 0, 0x0690, 2, 0),
+       MX7D_PAD_LCD_DATA22__FLEXTIMER2_CH6                      = IOMUX_PAD(0x0390, 0x0120, 1, 0x05C4, 0, 0),
+       MX7D_PAD_LCD_DATA22__ENET2_1588_EVENT2_OUT               = IOMUX_PAD(0x0390, 0x0120, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA22__CSI_DATA11                          = IOMUX_PAD(0x0390, 0x0120, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA22__EIM_ADDR25                          = IOMUX_PAD(0x0390, 0x0120, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA22__GPIO3_IO27                          = IOMUX_PAD(0x0390, 0x0120, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA22__I2C4_SCL                            = IOMUX_PAD(0x0390, 0x0120, IOMUX_CONFIG_SION | 6, 0x05EC, 1, 0),
+
+       MX7D_PAD_LCD_DATA23__LCD_DATA23                          = IOMUX_PAD(0x0394, 0x0124, 0, 0x0694, 2, 0),
+       MX7D_PAD_LCD_DATA23__FLEXTIMER2_CH7                      = IOMUX_PAD(0x0394, 0x0124, 1, 0x05C8, 0, 0),
+       MX7D_PAD_LCD_DATA23__ENET2_1588_EVENT3_OUT               = IOMUX_PAD(0x0394, 0x0124, 2, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA23__CSI_DATA10                          = IOMUX_PAD(0x0394, 0x0124, 3, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA23__EIM_ADDR26                          = IOMUX_PAD(0x0394, 0x0124, 4, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA23__GPIO3_IO28                          = IOMUX_PAD(0x0394, 0x0124, 5, 0x0000, 0, 0),
+       MX7D_PAD_LCD_DATA23__I2C4_SDA                            = IOMUX_PAD(0x0394, 0x0124, IOMUX_CONFIG_SION | 6, 0x05F0, 1, 0),
+
+       MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX                     = IOMUX_PAD(0x0398, 0x0128, 0, 0x0000, 0, 0),
+
+       MX7D_PAD_UART1_RX_DATA__UART1_DTE_TX                     = IOMUX_PAD(0x0398, 0x0128, 0, 0x0000, 0, 0),
+       MX7D_PAD_UART1_RX_DATA__I2C1_SCL                         = IOMUX_PAD(0x0398, 0x0128, IOMUX_CONFIG_SION | 1, 0x0000, 0, 0),
+       MX7D_PAD_UART1_RX_DATA__CCM_PMIC_READY                   = IOMUX_PAD(0x0398, 0x0128, 2, 0x0000, 0, 0),
+       MX7D_PAD_UART1_RX_DATA__ECSPI1_SS1                       = IOMUX_PAD(0x0398, 0x0128, 3, 0x0000, 0, 0),
+       MX7D_PAD_UART1_RX_DATA__ENET2_1588_EVENT0_IN             = IOMUX_PAD(0x0398, 0x0128, 4, 0x0000, 0, 0),
+       MX7D_PAD_UART1_RX_DATA__GPIO4_IO0                        = IOMUX_PAD(0x0398, 0x0128, 5, 0x0000, 0, 0),
+       MX7D_PAD_UART1_RX_DATA__ENET1_MDIO                       = IOMUX_PAD(0x0398, 0x0128, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX                     = IOMUX_PAD(0x039C, 0x012C, 0, 0x0000, 0, 0),
+
+       MX7D_PAD_UART1_TX_DATA__UART1_DTE_RX                     = IOMUX_PAD(0x039C, 0x012C, 0, 0x06F4, 1, 0),
+       MX7D_PAD_UART1_TX_DATA__I2C1_SDA                         = IOMUX_PAD(0x039C, 0x012C, IOMUX_CONFIG_SION | 1, 0x05D8, 0, 0),
+       MX7D_PAD_UART1_TX_DATA__SAI3_MCLK                        = IOMUX_PAD(0x039C, 0x012C, 2, 0x0000, 0, 0),
+       MX7D_PAD_UART1_TX_DATA__ECSPI1_SS2                       = IOMUX_PAD(0x039C, 0x012C, 3, 0x0000, 0, 0),
+       MX7D_PAD_UART1_TX_DATA__ENET2_1588_EVENT0_OUT            = IOMUX_PAD(0x039C, 0x012C, 4, 0x0000, 0, 0),
+       MX7D_PAD_UART1_TX_DATA__GPIO4_IO1                        = IOMUX_PAD(0x039C, 0x012C, 5, 0x0000, 0, 0),
+       MX7D_PAD_UART1_TX_DATA__ENET1_MDC                        = IOMUX_PAD(0x039C, 0x012C, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_UART2_RX_DATA__UART2_DCE_RX                     = IOMUX_PAD(0x03A0, 0x0130, 0, 0x0000, 0, 0),
+
+       MX7D_PAD_UART2_RX_DATA__UART2_DTE_TX                     = IOMUX_PAD(0x03A0, 0x0130, 0, 0x0000, 0, 0),
+       MX7D_PAD_UART2_RX_DATA__I2C2_SCL                         = IOMUX_PAD(0x03A0, 0x0130, IOMUX_CONFIG_SION | 1, 0x0000, 0, 0),
+       MX7D_PAD_UART2_RX_DATA__SAI3_RX_BCLK                     = IOMUX_PAD(0x03A0, 0x0130, 2, 0x0000, 0, 0),
+       MX7D_PAD_UART2_RX_DATA__ECSPI1_SS3                       = IOMUX_PAD(0x03A0, 0x0130, 3, 0x0000, 0, 0),
+       MX7D_PAD_UART2_RX_DATA__ENET2_1588_EVENT1_IN             = IOMUX_PAD(0x03A0, 0x0130, 4, 0x0000, 0, 0),
+       MX7D_PAD_UART2_RX_DATA__GPIO4_IO2                        = IOMUX_PAD(0x03A0, 0x0130, 5, 0x0000, 0, 0),
+       MX7D_PAD_UART2_RX_DATA__ENET2_MDIO                       = IOMUX_PAD(0x03A0, 0x0130, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_UART2_TX_DATA__UART2_DCE_TX                     = IOMUX_PAD(0x03A4, 0x0134, 0, 0x0000, 0, 0),
+
+       MX7D_PAD_UART2_TX_DATA__UART2_DTE_RX                     = IOMUX_PAD(0x03A4, 0x0134, 0, 0x0000, 0, 0),
+       MX7D_PAD_UART2_TX_DATA__I2C2_SDA                         = IOMUX_PAD(0x03A4, 0x0134, IOMUX_CONFIG_SION | 1, 0x05E0, 0, 0),
+       MX7D_PAD_UART2_TX_DATA__SAI3_RX_DATA0                    = IOMUX_PAD(0x03A4, 0x0134, 2, 0x06C8, 0, 0),
+       MX7D_PAD_UART2_TX_DATA__ECSPI1_RDY                       = IOMUX_PAD(0x03A4, 0x0134, 3, 0x0000, 0, 0),
+       MX7D_PAD_UART2_TX_DATA__ENET2_1588_EVENT1_OUT            = IOMUX_PAD(0x03A4, 0x0134, 4, 0x0000, 0, 0),
+       MX7D_PAD_UART2_TX_DATA__GPIO4_IO3                        = IOMUX_PAD(0x03A4, 0x0134, 5, 0x0000, 0, 0),
+       MX7D_PAD_UART2_TX_DATA__ENET2_MDC                        = IOMUX_PAD(0x03A4, 0x0134, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_UART3_RX_DATA__UART3_DCE_RX                     = IOMUX_PAD(0x03A8, 0x0138, 0, 0x0704, 2, 0),
+
+       MX7D_PAD_UART3_RX_DATA__UART3_DTE_TX                     = IOMUX_PAD(0x03A8, 0x0138, 0, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RX_DATA__USB_OTG1_OC                      = IOMUX_PAD(0x03A8, 0x0138, 1, 0x072C, 0, 0),
+       MX7D_PAD_UART3_RX_DATA__SAI3_RX_SYNC                     = IOMUX_PAD(0x03A8, 0x0138, 2, 0x06CC, 0, 0),
+       MX7D_PAD_UART3_RX_DATA__ECSPI1_MISO                      = IOMUX_PAD(0x03A8, 0x0138, 3, 0x0528, 0, 0),
+       MX7D_PAD_UART3_RX_DATA__ENET1_1588_EVENT0_IN             = IOMUX_PAD(0x03A8, 0x0138, 4, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RX_DATA__GPIO4_IO4                        = IOMUX_PAD(0x03A8, 0x0138, 5, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RX_DATA__SD1_LCTL                         = IOMUX_PAD(0x03A8, 0x0138, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_UART3_TX_DATA__UART3_DCE_TX                     = IOMUX_PAD(0x03AC, 0x013C, 0, 0x0000, 0, 0),
+
+       MX7D_PAD_UART3_TX_DATA__UART3_DTE_RX                     = IOMUX_PAD(0x03AC, 0x013C, 0, 0x0704, 3, 0),
+       MX7D_PAD_UART3_TX_DATA__USB_OTG1_PWR                     = IOMUX_PAD(0x03AC, 0x013C, 1, 0x0000, 0, 0),
+       MX7D_PAD_UART3_TX_DATA__SAI3_TX_BCLK                     = IOMUX_PAD(0x03AC, 0x013C, 2, 0x06D0, 0, 0),
+       MX7D_PAD_UART3_TX_DATA__ECSPI1_MOSI                      = IOMUX_PAD(0x03AC, 0x013C, 3, 0x052C, 0, 0),
+       MX7D_PAD_UART3_TX_DATA__ENET1_1588_EVENT0_OUT            = IOMUX_PAD(0x03AC, 0x013C, 4, 0x0000, 0, 0),
+       MX7D_PAD_UART3_TX_DATA__GPIO4_IO5                        = IOMUX_PAD(0x03AC, 0x013C, 5, 0x0000, 0, 0),
+       MX7D_PAD_UART3_TX_DATA__SD2_LCTL                         = IOMUX_PAD(0x03AC, 0x013C, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_UART3_RTS_B__UART3_DCE_RTS                      = IOMUX_PAD(0x03B0, 0x0140, 0, 0x0000, 0, 0),
+
+       MX7D_PAD_UART3_RTS_B__UART3_DTE_CTS                      = IOMUX_PAD(0x03B0, 0x0140, 0, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RTS_B__USB_OTG2_OC                        = IOMUX_PAD(0x03B0, 0x0140, 1, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RTS_B__SAI3_TX_DATA0                      = IOMUX_PAD(0x03B0, 0x0140, 2, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RTS_B__ECSPI1_SCLK                        = IOMUX_PAD(0x03B0, 0x0140, 3, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RTS_B__ENET1_1588_EVENT1_IN               = IOMUX_PAD(0x03B0, 0x0140, 4, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RTS_B__GPIO4_IO6                          = IOMUX_PAD(0x03B0, 0x0140, 5, 0x0000, 0, 0),
+       MX7D_PAD_UART3_RTS_B__SD3_LCTL                           = IOMUX_PAD(0x03B0, 0x0140, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_UART3_CTS_B__UART3_DCE_CTS                      = IOMUX_PAD(0x03B4, 0x0144, 0, 0x0000, 0, 0),
+
+       MX7D_PAD_UART3_CTS_B__UART3_DTE_RTS                      = IOMUX_PAD(0x03B4, 0x0144, 0, 0x0700, 3, 0),
+       MX7D_PAD_UART3_CTS_B__USB_OTG2_PWR                       = IOMUX_PAD(0x03B4, 0x0144, 1, 0x0000, 0, 0),
+       MX7D_PAD_UART3_CTS_B__SAI3_TX_SYNC                       = IOMUX_PAD(0x03B4, 0x0144, 2, 0x06D4, 0, 0),
+       MX7D_PAD_UART3_CTS_B__ECSPI1_SS0                         = IOMUX_PAD(0x03B4, 0x0144, 3, 0x0530, 0, 0),
+       MX7D_PAD_UART3_CTS_B__ENET1_1588_EVENT1_OUT              = IOMUX_PAD(0x03B4, 0x0144, 4, 0x0000, 0, 0),
+       MX7D_PAD_UART3_CTS_B__GPIO4_IO7                          = IOMUX_PAD(0x03B4, 0x0144, 5, 0x0000, 0, 0),
+       MX7D_PAD_UART3_CTS_B__SD1_VSELECT                        = IOMUX_PAD(0x03B4, 0x0144, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_I2C1_SCL__I2C1_SCL                              = IOMUX_PAD(0x03B8, 0x0148, IOMUX_CONFIG_SION | 0, 0x05D4, 1, 0),
+       MX7D_PAD_I2C1_SCL__UART4_DCE_CTS                         = IOMUX_PAD(0x03B8, 0x0148, 1, 0x0000, 0, 0),
+       MX7D_PAD_I2C1_SCL__UART4_DTE_RTS                         = IOMUX_PAD(0x03B8, 0x0148, 1, 0x0708, 0, 0),
+       MX7D_PAD_I2C1_SCL__FLEXCAN1_RX                           = IOMUX_PAD(0x03B8, 0x0148, 2, 0x04DC, 1, 0),
+       MX7D_PAD_I2C1_SCL__ECSPI3_MISO                           = IOMUX_PAD(0x03B8, 0x0148, 3, 0x0548, 0, 0),
+       MX7D_PAD_I2C1_SCL__GPIO4_IO8                             = IOMUX_PAD(0x03B8, 0x0148, 5, 0x0000, 0, 0),
+       MX7D_PAD_I2C1_SCL__SD2_VSELECT                           = IOMUX_PAD(0x03B8, 0x0148, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_I2C1_SDA__I2C1_SDA                              = IOMUX_PAD(0x03BC, 0x014C, IOMUX_CONFIG_SION | 0, 0x05D8, 1, 0),
+       MX7D_PAD_I2C1_SDA__UART4_DCE_RTS                         = IOMUX_PAD(0x03BC, 0x014C, 1, 0x0708, 1, 0),
+       MX7D_PAD_I2C1_SDA__UART4_DTE_CTS                         = IOMUX_PAD(0x03BC, 0x014C, 1, 0x0000, 0, 0),
+       MX7D_PAD_I2C1_SDA__FLEXCAN1_TX                           = IOMUX_PAD(0x03BC, 0x014C, 2, 0x0000, 0, 0),
+       MX7D_PAD_I2C1_SDA__ECSPI3_MOSI                           = IOMUX_PAD(0x03BC, 0x014C, 3, 0x054C, 0, 0),
+       MX7D_PAD_I2C1_SDA__CCM_ENET_REF_CLK1                     = IOMUX_PAD(0x03BC, 0x014C, 4, 0x0564, 1, 0),
+       MX7D_PAD_I2C1_SDA__GPIO4_IO9                             = IOMUX_PAD(0x03BC, 0x014C, 5, 0x0000, 0, 0),
+       MX7D_PAD_I2C1_SDA__SD3_VSELECT                           = IOMUX_PAD(0x03BC, 0x014C, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_I2C2_SCL__I2C2_SCL                              = IOMUX_PAD(0x03C0, 0x0150, IOMUX_CONFIG_SION | 0, 0x05DC, 1, 0),
+       MX7D_PAD_I2C2_SCL__UART4_DCE_RX                          = IOMUX_PAD(0x03C0, 0x0150, 1, 0x070C, 0, 0),
+       MX7D_PAD_I2C2_SCL__UART4_DTE_TX                          = IOMUX_PAD(0x03C0, 0x0150, 1, 0x0000, 0, 0),
+       MX7D_PAD_I2C2_SCL__WDOG3_WDOG_B                          = IOMUX_PAD(0x03C0, 0x0150, 2, 0x0000, 0, 0),
+       MX7D_PAD_I2C2_SCL__ECSPI3_SCLK                           = IOMUX_PAD(0x03C0, 0x0150, 3, 0x0544, 0, 0),
+       MX7D_PAD_I2C2_SCL__CCM_ENET_REF_CLK2                     = IOMUX_PAD(0x03C0, 0x0150, 4, 0x0570, 2, 0),
+       MX7D_PAD_I2C2_SCL__GPIO4_IO10                            = IOMUX_PAD(0x03C0, 0x0150, 5, 0x0000, 0, 0),
+       MX7D_PAD_I2C2_SCL__SD3_CD_B                              = IOMUX_PAD(0x03C0, 0x0150, 6, 0x0738, 1, 0),
+
+       MX7D_PAD_I2C2_SDA__I2C2_SDA                              = IOMUX_PAD(0x03C4, 0x0154, IOMUX_CONFIG_SION | 0, 0x05E0, 1, 0),
+       MX7D_PAD_I2C2_SDA__UART4_DCE_TX                          = IOMUX_PAD(0x03C4, 0x0154, 1, 0x0000, 0, 0),
+       MX7D_PAD_I2C2_SDA__UART4_DTE_RX                          = IOMUX_PAD(0x03C4, 0x0154, 1, 0x070C, 1, 0),
+       MX7D_PAD_I2C2_SDA__WDOG3_WDOG_RST_B_DEB                  = IOMUX_PAD(0x03C4, 0x0154, 2, 0x0000, 0, 0),
+       MX7D_PAD_I2C2_SDA__ECSPI3_SS0                            = IOMUX_PAD(0x03C4, 0x0154, 3, 0x0550, 0, 0),
+       MX7D_PAD_I2C2_SDA__CCM_ENET_REF_CLK3                     = IOMUX_PAD(0x03C4, 0x0154, 4, 0x0000, 0, 0),
+       MX7D_PAD_I2C2_SDA__GPIO4_IO11                            = IOMUX_PAD(0x03C4, 0x0154, 5, 0x0000, 0, 0),
+       MX7D_PAD_I2C2_SDA__SD3_WP                                = IOMUX_PAD(0x03C4, 0x0154, 6, 0x073C, 1, 0),
+
+       MX7D_PAD_I2C3_SCL__I2C3_SCL                              = IOMUX_PAD(0x03C8, 0x0158, IOMUX_CONFIG_SION | 0, 0x05E4, 2, 0),
+       MX7D_PAD_I2C3_SCL__UART5_DCE_CTS                         = IOMUX_PAD(0x03C8, 0x0158, 1, 0x0000, 0, 0),
+       MX7D_PAD_I2C3_SCL__UART5_DTE_RTS                         = IOMUX_PAD(0x03C8, 0x0158, 1, 0x0710, 0, 0),
+       MX7D_PAD_I2C3_SCL__FLEXCAN2_RX                           = IOMUX_PAD(0x03C8, 0x0158, 2, 0x04E0, 1, 0),
+       MX7D_PAD_I2C3_SCL__CSI_VSYNC                             = IOMUX_PAD(0x03C8, 0x0158, 3, 0x0520, 1, 0),
+       MX7D_PAD_I2C3_SCL__SDMA_EXT_EVENT0                       = IOMUX_PAD(0x03C8, 0x0158, 4, 0x06D8, 1, 0),
+       MX7D_PAD_I2C3_SCL__GPIO4_IO12                            = IOMUX_PAD(0x03C8, 0x0158, 5, 0x0000, 0, 0),
+       MX7D_PAD_I2C3_SCL__EPDC_BDR0                             = IOMUX_PAD(0x03C8, 0x0158, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_I2C3_SDA__I2C3_SDA                              = IOMUX_PAD(0x03CC, 0x015C, IOMUX_CONFIG_SION | 0, 0x05E8, 2, 0),
+       MX7D_PAD_I2C3_SDA__UART5_DCE_RTS                         = IOMUX_PAD(0x03CC, 0x015C, 1, 0x0710, 1, 0),
+       MX7D_PAD_I2C3_SDA__UART5_DTE_CTS                         = IOMUX_PAD(0x03CC, 0x015C, 1, 0x0000, 0, 0),
+       MX7D_PAD_I2C3_SDA__FLEXCAN2_TX                           = IOMUX_PAD(0x03CC, 0x015C, 2, 0x0000, 0, 0),
+       MX7D_PAD_I2C3_SDA__CSI_HSYNC                             = IOMUX_PAD(0x03CC, 0x015C, 3, 0x0518, 1, 0),
+       MX7D_PAD_I2C3_SDA__SDMA_EXT_EVENT1                       = IOMUX_PAD(0x03CC, 0x015C, 4, 0x06DC, 1, 0),
+       MX7D_PAD_I2C3_SDA__GPIO4_IO13                            = IOMUX_PAD(0x03CC, 0x015C, 5, 0x0000, 0, 0),
+       MX7D_PAD_I2C3_SDA__EPDC_BDR1                             = IOMUX_PAD(0x03CC, 0x015C, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_I2C4_SCL__I2C4_SCL                              = IOMUX_PAD(0x03D0, 0x0160, IOMUX_CONFIG_SION | 0, 0x05EC, 2, 0),
+       MX7D_PAD_I2C4_SCL__UART5_DCE_RX                          = IOMUX_PAD(0x03D0, 0x0160, 1, 0x0714, 0, 0),
+       MX7D_PAD_I2C4_SCL__UART5_DTE_TX                          = IOMUX_PAD(0x03D0, 0x0160, 1, 0x0000, 0, 0),
+       MX7D_PAD_I2C4_SCL__WDOG4_WDOG_B                          = IOMUX_PAD(0x03D0, 0x0160, 2, 0x0000, 0, 0),
+       MX7D_PAD_I2C4_SCL__CSI_PIXCLK                            = IOMUX_PAD(0x03D0, 0x0160, 3, 0x051C, 1, 0),
+       MX7D_PAD_I2C4_SCL__USB_OTG1_ID                           = IOMUX_PAD(0x03D0, 0x0160, 4, 0x0734, 1, 0),
+       MX7D_PAD_I2C4_SCL__GPIO4_IO14                            = IOMUX_PAD(0x03D0, 0x0160, 5, 0x0000, 0, 0),
+       MX7D_PAD_I2C4_SCL__EPDC_VCOM0                            = IOMUX_PAD(0x03D0, 0x0160, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_I2C4_SDA__I2C4_SDA                              = IOMUX_PAD(0x03D4, 0x0164, IOMUX_CONFIG_SION | 0, 0x05F0, 2, 0),
+       MX7D_PAD_I2C4_SDA__UART5_DCE_TX                          = IOMUX_PAD(0x03D4, 0x0164, 1, 0x0000, 0, 0),
+       MX7D_PAD_I2C4_SDA__UART5_DTE_RX                          = IOMUX_PAD(0x03D4, 0x0164, 1, 0x0714, 1, 0),
+       MX7D_PAD_I2C4_SDA__WDOG4_WDOG_RST_B_DEB                  = IOMUX_PAD(0x03D4, 0x0164, 2, 0x0000, 0, 0),
+       MX7D_PAD_I2C4_SDA__CSI_MCLK                              = IOMUX_PAD(0x03D4, 0x0164, 3, 0x0000, 0, 0),
+       MX7D_PAD_I2C4_SDA__USB_OTG2_ID                           = IOMUX_PAD(0x03D4, 0x0164, 4, 0x0730, 1, 0),
+       MX7D_PAD_I2C4_SDA__GPIO4_IO15                            = IOMUX_PAD(0x03D4, 0x0164, 5, 0x0000, 0, 0),
+       MX7D_PAD_I2C4_SDA__EPDC_VCOM1                            = IOMUX_PAD(0x03D4, 0x0164, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_ECSPI1_SCLK__ECSPI1_SCLK                        = IOMUX_PAD(0x03D8, 0x0168, 0, 0x0524, 1, 0),
+       MX7D_PAD_ECSPI1_SCLK__UART6_DCE_RX                       = IOMUX_PAD(0x03D8, 0x0168, 1, 0x071C, 2, 0),
+       MX7D_PAD_ECSPI1_SCLK__UART6_DTE_TX                       = IOMUX_PAD(0x03D8, 0x0168, 1, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_SCLK__SD2_DATA4                          = IOMUX_PAD(0x03D8, 0x0168, 2, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_SCLK__CSI_DATA2                          = IOMUX_PAD(0x03D8, 0x0168, 3, 0x04F8, 1, 0),
+       MX7D_PAD_ECSPI1_SCLK__GPIO4_IO16                         = IOMUX_PAD(0x03D8, 0x0168, 5, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_SCLK__EPDC_PWR_COM                       = IOMUX_PAD(0x03D8, 0x0168, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_ECSPI1_MOSI__ECSPI1_MOSI                        = IOMUX_PAD(0x03DC, 0x016C, 0, 0x052C, 1, 0),
+       MX7D_PAD_ECSPI1_MOSI__UART6_DCE_TX                       = IOMUX_PAD(0x03DC, 0x016C, 1, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_MOSI__UART6_DTE_RX                       = IOMUX_PAD(0x03DC, 0x016C, 1, 0x071C, 3, 0),
+       MX7D_PAD_ECSPI1_MOSI__SD2_DATA5                          = IOMUX_PAD(0x03DC, 0x016C, 2, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_MOSI__CSI_DATA3                          = IOMUX_PAD(0x03DC, 0x016C, 3, 0x04FC, 1, 0),
+       MX7D_PAD_ECSPI1_MOSI__GPIO4_IO17                         = IOMUX_PAD(0x03DC, 0x016C, 5, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_MOSI__EPDC_PWR_STAT                      = IOMUX_PAD(0x03DC, 0x016C, 6, 0x0580, 1, 0),
+
+       MX7D_PAD_ECSPI1_MISO__ECSPI1_MISO                        = IOMUX_PAD(0x03E0, 0x0170, 0, 0x0528, 1, 0),
+       MX7D_PAD_ECSPI1_MISO__UART6_DCE_RTS                      = IOMUX_PAD(0x03E0, 0x0170, 1, 0x0718, 2, 0),
+       MX7D_PAD_ECSPI1_MISO__UART6_DTE_CTS                      = IOMUX_PAD(0x03E0, 0x0170, 1, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_MISO__SD2_DATA6                          = IOMUX_PAD(0x03E0, 0x0170, 2, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_MISO__CSI_DATA4                          = IOMUX_PAD(0x03E0, 0x0170, 3, 0x0500, 1, 0),
+       MX7D_PAD_ECSPI1_MISO__GPIO4_IO18                         = IOMUX_PAD(0x03E0, 0x0170, 5, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_MISO__EPDC_PWR_IRQ                       = IOMUX_PAD(0x03E0, 0x0170, 6, 0x057C, 0, 0),
+
+       MX7D_PAD_ECSPI1_SS0__ECSPI1_SS0                          = IOMUX_PAD(0x03E4, 0x0174, 0, 0x0530, 1, 0),
+       MX7D_PAD_ECSPI1_SS0__UART6_DCE_CTS                       = IOMUX_PAD(0x03E4, 0x0174, 1, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_SS0__UART6_DTE_RTS                       = IOMUX_PAD(0x03E4, 0x0174, 1, 0x0718, 3, 0),
+       MX7D_PAD_ECSPI1_SS0__SD2_DATA7                           = IOMUX_PAD(0x03E4, 0x0174, 2, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_SS0__CSI_DATA5                           = IOMUX_PAD(0x03E4, 0x0174, 3, 0x0504, 1, 0),
+       MX7D_PAD_ECSPI1_SS0__GPIO4_IO19                          = IOMUX_PAD(0x03E4, 0x0174, 5, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI1_SS0__EPDC_PWR_CTRL3                      = IOMUX_PAD(0x03E4, 0x0174, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_ECSPI2_SCLK__ECSPI2_SCLK                        = IOMUX_PAD(0x03E8, 0x0178, 0, 0x0534, 0, 0),
+       MX7D_PAD_ECSPI2_SCLK__UART7_DCE_RX                       = IOMUX_PAD(0x03E8, 0x0178, 1, 0x0724, 2, 0),
+       MX7D_PAD_ECSPI2_SCLK__UART7_DTE_TX                       = IOMUX_PAD(0x03E8, 0x0178, 1, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_SCLK__SD1_DATA4                          = IOMUX_PAD(0x03E8, 0x0178, 2, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_SCLK__CSI_DATA6                          = IOMUX_PAD(0x03E8, 0x0178, 3, 0x0508, 1, 0),
+       MX7D_PAD_ECSPI2_SCLK__LCD_DATA13                         = IOMUX_PAD(0x03E8, 0x0178, 4, 0x066C, 2, 0),
+       MX7D_PAD_ECSPI2_SCLK__GPIO4_IO20                         = IOMUX_PAD(0x03E8, 0x0178, 5, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_SCLK__EPDC_PWR_CTRL0                     = IOMUX_PAD(0x03E8, 0x0178, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_ECSPI2_MOSI__ECSPI2_MOSI                        = IOMUX_PAD(0x03EC, 0x017C, 0, 0x053C, 0, 0),
+       MX7D_PAD_ECSPI2_MOSI__UART7_DCE_TX                       = IOMUX_PAD(0x03EC, 0x017C, 1, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_MOSI__UART7_DTE_RX                       = IOMUX_PAD(0x03EC, 0x017C, 1, 0x0724, 3, 0),
+       MX7D_PAD_ECSPI2_MOSI__SD1_DATA5                          = IOMUX_PAD(0x03EC, 0x017C, 2, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_MOSI__CSI_DATA7                          = IOMUX_PAD(0x03EC, 0x017C, 3, 0x050C, 1, 0),
+       MX7D_PAD_ECSPI2_MOSI__LCD_DATA14                         = IOMUX_PAD(0x03EC, 0x017C, 4, 0x0670, 2, 0),
+       MX7D_PAD_ECSPI2_MOSI__GPIO4_IO21                         = IOMUX_PAD(0x03EC, 0x017C, 5, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_MOSI__EPDC_PWR_CTRL1                     = IOMUX_PAD(0x03EC, 0x017C, 6, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_MISO__GPIO4_IO22                         = IOMUX_PAD(0x03F0, 0x0180, 5, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_MISO__EPDC_PWR_CTRL2                     = IOMUX_PAD(0x03F0, 0x0180, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_ECSPI2_MISO__ECSPI2_MISO                        = IOMUX_PAD(0x03F0, 0x0180, 0, 0x0538, 0, 0),
+       MX7D_PAD_ECSPI2_MISO__UART7_DCE_RTS                      = IOMUX_PAD(0x03F0, 0x0180, 1, 0x0720, 2, 0),
+       MX7D_PAD_ECSPI2_MISO__UART7_DTE_CTS                      = IOMUX_PAD(0x03F0, 0x0180, 1, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_MISO__SD1_DATA6                          = IOMUX_PAD(0x03F0, 0x0180, 2, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_MISO__CSI_DATA8                          = IOMUX_PAD(0x03F0, 0x0180, 3, 0x0510, 1, 0),
+       MX7D_PAD_ECSPI2_MISO__LCD_DATA15                         = IOMUX_PAD(0x03F0, 0x0180, 4, 0x0674, 2, 0),
+
+       MX7D_PAD_ECSPI2_SS0__ECSPI2_SS0                          = IOMUX_PAD(0x03F4, 0x0184, 0, 0x0540, 0, 0),
+       MX7D_PAD_ECSPI2_SS0__UART7_DCE_CTS                       = IOMUX_PAD(0x03F4, 0x0184, 1, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_SS0__UART7_DTE_RTS                       = IOMUX_PAD(0x03F4, 0x0184, 1, 0x0720, 3, 0),
+       MX7D_PAD_ECSPI2_SS0__SD1_DATA7                           = IOMUX_PAD(0x03F4, 0x0184, 2, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_SS0__CSI_DATA9                           = IOMUX_PAD(0x03F4, 0x0184, 3, 0x0514, 1, 0),
+       MX7D_PAD_ECSPI2_SS0__LCD_RESET                           = IOMUX_PAD(0x03F4, 0x0184, 4, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_SS0__GPIO4_IO23                          = IOMUX_PAD(0x03F4, 0x0184, 5, 0x0000, 0, 0),
+       MX7D_PAD_ECSPI2_SS0__EPDC_PWR_WAKE                       = IOMUX_PAD(0x03F4, 0x0184, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_SD1_CD_B__SD1_CD_B                              = IOMUX_PAD(0x03F8, 0x0188, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_CD_B__UART6_DCE_RX                          = IOMUX_PAD(0x03F8, 0x0188, 2, 0x071C, 4, 0),
+       MX7D_PAD_SD1_CD_B__UART6_DTE_TX                          = IOMUX_PAD(0x03F8, 0x0188, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD1_CD_B__ECSPI4_MISO                           = IOMUX_PAD(0x03F8, 0x0188, 3, 0x0558, 1, 0),
+       MX7D_PAD_SD1_CD_B__FLEXTIMER1_CH0                        = IOMUX_PAD(0x03F8, 0x0188, 4, 0x0584, 1, 0),
+       MX7D_PAD_SD1_CD_B__GPIO5_IO0                             = IOMUX_PAD(0x03F8, 0x0188, 5, 0x0000, 0, 0),
+       MX7D_PAD_SD1_CD_B__CCM_CLKO1                             = IOMUX_PAD(0x03F8, 0x0188, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_SD1_WP__SD1_WP                                  = IOMUX_PAD(0x03FC, 0x018C, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_WP__UART6_DCE_TX                            = IOMUX_PAD(0x03FC, 0x018C, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD1_WP__UART6_DTE_RX                            = IOMUX_PAD(0x03FC, 0x018C, 2, 0x071C, 5, 0),
+       MX7D_PAD_SD1_WP__ECSPI4_MOSI                             = IOMUX_PAD(0x03FC, 0x018C, 3, 0x055C, 1, 0),
+       MX7D_PAD_SD1_WP__FLEXTIMER1_CH1                          = IOMUX_PAD(0x03FC, 0x018C, 4, 0x0588, 1, 0),
+       MX7D_PAD_SD1_WP__GPIO5_IO1                               = IOMUX_PAD(0x03FC, 0x018C, 5, 0x0000, 0, 0),
+       MX7D_PAD_SD1_WP__CCM_CLKO2                               = IOMUX_PAD(0x03FC, 0x018C, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_SD1_RESET_B__SD1_RESET_B                        = IOMUX_PAD(0x0400, 0x0190, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_RESET_B__SAI3_MCLK                          = IOMUX_PAD(0x0400, 0x0190, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD1_RESET_B__UART6_DCE_RTS                      = IOMUX_PAD(0x0400, 0x0190, 2, 0x0718, 4, 0),
+       MX7D_PAD_SD1_RESET_B__UART6_DTE_CTS                      = IOMUX_PAD(0x0400, 0x0190, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD1_RESET_B__ECSPI4_SCLK                        = IOMUX_PAD(0x0400, 0x0190, 3, 0x0554, 1, 0),
+       MX7D_PAD_SD1_RESET_B__FLEXTIMER1_CH2                     = IOMUX_PAD(0x0400, 0x0190, 4, 0x058C, 1, 0),
+       MX7D_PAD_SD1_RESET_B__GPIO5_IO2                          = IOMUX_PAD(0x0400, 0x0190, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD1_CLK__SD1_CLK                                = IOMUX_PAD(0x0404, 0x0194, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_CLK__SAI3_RX_SYNC                           = IOMUX_PAD(0x0404, 0x0194, 1, 0x06CC, 1, 0),
+       MX7D_PAD_SD1_CLK__UART6_DCE_CTS                          = IOMUX_PAD(0x0404, 0x0194, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD1_CLK__UART6_DTE_RTS                          = IOMUX_PAD(0x0404, 0x0194, 2, 0x0718, 5, 0),
+       MX7D_PAD_SD1_CLK__ECSPI4_SS0                             = IOMUX_PAD(0x0404, 0x0194, 3, 0x0560, 1, 0),
+       MX7D_PAD_SD1_CLK__FLEXTIMER1_CH3                         = IOMUX_PAD(0x0404, 0x0194, 4, 0x0590, 1, 0),
+       MX7D_PAD_SD1_CLK__GPIO5_IO3                              = IOMUX_PAD(0x0404, 0x0194, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD1_CMD__SD1_CMD                                = IOMUX_PAD(0x0408, 0x0198, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_CMD__SAI3_RX_BCLK                           = IOMUX_PAD(0x0408, 0x0198, 1, 0x06C4, 1, 0),
+       MX7D_PAD_SD1_CMD__ECSPI4_SS1                             = IOMUX_PAD(0x0408, 0x0198, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD1_CMD__FLEXTIMER2_CH0                         = IOMUX_PAD(0x0408, 0x0198, 4, 0x05AC, 1, 0),
+       MX7D_PAD_SD1_CMD__GPIO5_IO4                              = IOMUX_PAD(0x0408, 0x0198, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD1_DATA0__SD1_DATA0                            = IOMUX_PAD(0x040C, 0x019C, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA0__SAI3_RX_DATA0                        = IOMUX_PAD(0x040C, 0x019C, 1, 0x06C8, 1, 0),
+       MX7D_PAD_SD1_DATA0__UART7_DCE_RX                         = IOMUX_PAD(0x040C, 0x019C, 2, 0x0724, 4, 0),
+       MX7D_PAD_SD1_DATA0__UART7_DTE_TX                         = IOMUX_PAD(0x040C, 0x019C, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA0__ECSPI4_SS2                           = IOMUX_PAD(0x040C, 0x019C, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA0__FLEXTIMER2_CH1                       = IOMUX_PAD(0x040C, 0x019C, 4, 0x05B0, 1, 0),
+       MX7D_PAD_SD1_DATA0__GPIO5_IO5                            = IOMUX_PAD(0x040C, 0x019C, 5, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA0__CCM_EXT_CLK1                         = IOMUX_PAD(0x040C, 0x019C, 6, 0x04E4, 1, 0),
+
+       MX7D_PAD_SD1_DATA1__SD1_DATA1                            = IOMUX_PAD(0x0410, 0x01A0, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA1__SAI3_TX_BCLK                         = IOMUX_PAD(0x0410, 0x01A0, 1, 0x06D0, 1, 0),
+       MX7D_PAD_SD1_DATA1__UART7_DCE_TX                         = IOMUX_PAD(0x0410, 0x01A0, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA1__UART7_DTE_RX                         = IOMUX_PAD(0x0410, 0x01A0, 2, 0x0724, 5, 0),
+       MX7D_PAD_SD1_DATA1__ECSPI4_SS3                           = IOMUX_PAD(0x0410, 0x01A0, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA1__FLEXTIMER2_CH2                       = IOMUX_PAD(0x0410, 0x01A0, 4, 0x05B4, 1, 0),
+       MX7D_PAD_SD1_DATA1__GPIO5_IO6                            = IOMUX_PAD(0x0410, 0x01A0, 5, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA1__CCM_EXT_CLK2                         = IOMUX_PAD(0x0410, 0x01A0, 6, 0x04E8, 1, 0),
+
+       MX7D_PAD_SD1_DATA2__SD1_DATA2                            = IOMUX_PAD(0x0414, 0x01A4, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA2__SAI3_TX_SYNC                         = IOMUX_PAD(0x0414, 0x01A4, 1, 0x06D4, 1, 0),
+       MX7D_PAD_SD1_DATA2__UART7_DCE_CTS                        = IOMUX_PAD(0x0414, 0x01A4, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA2__UART7_DTE_RTS                        = IOMUX_PAD(0x0414, 0x01A4, 2, 0x0720, 4, 0),
+       MX7D_PAD_SD1_DATA2__ECSPI4_RDY                           = IOMUX_PAD(0x0414, 0x01A4, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA2__FLEXTIMER2_CH3                       = IOMUX_PAD(0x0414, 0x01A4, 4, 0x05B8, 1, 0),
+       MX7D_PAD_SD1_DATA2__GPIO5_IO7                            = IOMUX_PAD(0x0414, 0x01A4, 5, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA2__CCM_EXT_CLK3                         = IOMUX_PAD(0x0414, 0x01A4, 6, 0x04EC, 1, 0),
+
+       MX7D_PAD_SD1_DATA3__SD1_DATA3                            = IOMUX_PAD(0x0418, 0x01A8, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA3__SAI3_TX_DATA0                        = IOMUX_PAD(0x0418, 0x01A8, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA3__UART7_DCE_RTS                        = IOMUX_PAD(0x0418, 0x01A8, 2, 0x0720, 5, 0),
+       MX7D_PAD_SD1_DATA3__UART7_DTE_CTS                        = IOMUX_PAD(0x0418, 0x01A8, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA3__ECSPI3_SS1                           = IOMUX_PAD(0x0418, 0x01A8, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA3__FLEXTIMER1_PHA                       = IOMUX_PAD(0x0418, 0x01A8, 4, 0x05A4, 1, 0),
+       MX7D_PAD_SD1_DATA3__GPIO5_IO8                            = IOMUX_PAD(0x0418, 0x01A8, 5, 0x0000, 0, 0),
+       MX7D_PAD_SD1_DATA3__CCM_EXT_CLK4                         = IOMUX_PAD(0x0418, 0x01A8, 6, 0x04F0, 1, 0),
+
+       MX7D_PAD_SD2_CD_B__SD2_CD_B                              = IOMUX_PAD(0x041C, 0x01AC, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CD_B__ENET1_MDIO                            = IOMUX_PAD(0x041C, 0x01AC, 1, 0x0568, 2, 0),
+       MX7D_PAD_SD2_CD_B__ENET2_MDIO                            = IOMUX_PAD(0x041C, 0x01AC, 2, 0x0574, 2, 0),
+       MX7D_PAD_SD2_CD_B__ECSPI3_SS2                            = IOMUX_PAD(0x041C, 0x01AC, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CD_B__FLEXTIMER1_PHB                        = IOMUX_PAD(0x041C, 0x01AC, 4, 0x05A8, 1, 0),
+       MX7D_PAD_SD2_CD_B__GPIO5_IO9                             = IOMUX_PAD(0x041C, 0x01AC, 5, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CD_B__SDMA_EXT_EVENT0                       = IOMUX_PAD(0x041C, 0x01AC, 6, 0x06D8, 2, 0),
+
+       MX7D_PAD_SD2_WP__SD2_WP                                  = IOMUX_PAD(0x0420, 0x01B0, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_WP__ENET1_MDC                               = IOMUX_PAD(0x0420, 0x01B0, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD2_WP__ENET2_MDC                               = IOMUX_PAD(0x0420, 0x01B0, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD2_WP__ECSPI3_SS3                              = IOMUX_PAD(0x0420, 0x01B0, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_WP__USB_OTG1_ID                             = IOMUX_PAD(0x0420, 0x01B0, 4, 0x0734, 2, 0),
+       MX7D_PAD_SD2_WP__GPIO5_IO10                              = IOMUX_PAD(0x0420, 0x01B0, 5, 0x0000, 0, 0),
+       MX7D_PAD_SD2_WP__SDMA_EXT_EVENT1                         = IOMUX_PAD(0x0420, 0x01B0, 6, 0x06DC, 2, 0),
+
+       MX7D_PAD_SD2_RESET_B__SD2_RESET_B                        = IOMUX_PAD(0x0424, 0x01B4, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_RESET_B__SAI2_MCLK                          = IOMUX_PAD(0x0424, 0x01B4, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD2_RESET_B__SD2_RESET                          = IOMUX_PAD(0x0424, 0x01B4, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD2_RESET_B__ECSPI3_RDY                         = IOMUX_PAD(0x0424, 0x01B4, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_RESET_B__USB_OTG2_ID                        = IOMUX_PAD(0x0424, 0x01B4, 4, 0x0730, 2, 0),
+       MX7D_PAD_SD2_RESET_B__GPIO5_IO11                         = IOMUX_PAD(0x0424, 0x01B4, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD2_CLK__SD2_CLK                                = IOMUX_PAD(0x0428, 0x01B8, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CLK__SAI2_RX_SYNC                           = IOMUX_PAD(0x0428, 0x01B8, 1, 0x06B8, 0, 0),
+       MX7D_PAD_SD2_CLK__MQS_RIGHT                              = IOMUX_PAD(0x0428, 0x01B8, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CLK__GPT4_CLK                               = IOMUX_PAD(0x0428, 0x01B8, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CLK__GPIO5_IO12                             = IOMUX_PAD(0x0428, 0x01B8, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD2_CMD__SD2_CMD                                = IOMUX_PAD(0x042C, 0x01BC, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CMD__SAI2_RX_BCLK                           = IOMUX_PAD(0x042C, 0x01BC, 1, 0x06B0, 0, 0),
+       MX7D_PAD_SD2_CMD__MQS_LEFT                               = IOMUX_PAD(0x042C, 0x01BC, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CMD__GPT4_CAPTURE1                          = IOMUX_PAD(0x042C, 0x01BC, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_CMD__SIM2_PORT1_TRXD                        = IOMUX_PAD(0x042C, 0x01BC, 4, 0x06EC, 1, 0),
+       MX7D_PAD_SD2_CMD__GPIO5_IO13                             = IOMUX_PAD(0x042C, 0x01BC, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD2_DATA0__SD2_DATA0                            = IOMUX_PAD(0x0430, 0x01C0, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA0__SAI2_RX_DATA0                        = IOMUX_PAD(0x0430, 0x01C0, 1, 0x06B4, 0, 0),
+       MX7D_PAD_SD2_DATA0__UART4_DCE_RX                         = IOMUX_PAD(0x0430, 0x01C0, 2, 0x070C, 2, 0),
+       MX7D_PAD_SD2_DATA0__UART4_DTE_TX                         = IOMUX_PAD(0x0430, 0x01C0, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA0__GPT4_CAPTURE2                        = IOMUX_PAD(0x0430, 0x01C0, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA0__SIM2_PORT1_CLK                       = IOMUX_PAD(0x0430, 0x01C0, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA0__GPIO5_IO14                           = IOMUX_PAD(0x0430, 0x01C0, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD2_DATA1__SD2_DATA1                            = IOMUX_PAD(0x0434, 0x01C4, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA1__SAI2_TX_BCLK                         = IOMUX_PAD(0x0434, 0x01C4, 1, 0x06BC, 0, 0),
+       MX7D_PAD_SD2_DATA1__UART4_DCE_TX                         = IOMUX_PAD(0x0434, 0x01C4, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA1__UART4_DTE_RX                         = IOMUX_PAD(0x0434, 0x01C4, 2, 0x070C, 3, 0),
+       MX7D_PAD_SD2_DATA1__GPT4_COMPARE1                        = IOMUX_PAD(0x0434, 0x01C4, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA1__SIM2_PORT1_RST_B                     = IOMUX_PAD(0x0434, 0x01C4, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA1__GPIO5_IO15                           = IOMUX_PAD(0x0434, 0x01C4, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD2_DATA2__SD2_DATA2                            = IOMUX_PAD(0x0438, 0x01C8, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA2__SAI2_TX_SYNC                         = IOMUX_PAD(0x0438, 0x01C8, 1, 0x06C0, 0, 0),
+       MX7D_PAD_SD2_DATA2__UART4_DCE_CTS                        = IOMUX_PAD(0x0438, 0x01C8, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA2__UART4_DTE_RTS                        = IOMUX_PAD(0x0438, 0x01C8, 2, 0x0708, 2, 0),
+       MX7D_PAD_SD2_DATA2__GPT4_COMPARE2                        = IOMUX_PAD(0x0438, 0x01C8, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA2__SIM2_PORT1_SVEN                      = IOMUX_PAD(0x0438, 0x01C8, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA2__GPIO5_IO16                           = IOMUX_PAD(0x0438, 0x01C8, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD2_DATA3__SD2_DATA3                            = IOMUX_PAD(0x043C, 0x01CC, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA3__SAI2_TX_DATA0                        = IOMUX_PAD(0x043C, 0x01CC, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA3__UART4_DCE_RTS                        = IOMUX_PAD(0x043C, 0x01CC, 2, 0x0708, 3, 0),
+       MX7D_PAD_SD2_DATA3__UART4_DTE_CTS                        = IOMUX_PAD(0x043C, 0x01CC, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA3__GPT4_COMPARE3                        = IOMUX_PAD(0x043C, 0x01CC, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD2_DATA3__SIM2_PORT1_PD                        = IOMUX_PAD(0x043C, 0x01CC, 4, 0x06E8, 1, 0),
+       MX7D_PAD_SD2_DATA3__GPIO5_IO17                           = IOMUX_PAD(0x043C, 0x01CC, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_CLK__SD3_CLK                                = IOMUX_PAD(0x0440, 0x01D0, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_CLK__NAND_CLE                               = IOMUX_PAD(0x0440, 0x01D0, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_CLK__ECSPI4_MISO                            = IOMUX_PAD(0x0440, 0x01D0, 2, 0x0558, 2, 0),
+       MX7D_PAD_SD3_CLK__SAI3_RX_SYNC                           = IOMUX_PAD(0x0440, 0x01D0, 3, 0x06CC, 2, 0),
+       MX7D_PAD_SD3_CLK__GPT3_CLK                               = IOMUX_PAD(0x0440, 0x01D0, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD3_CLK__GPIO6_IO0                              = IOMUX_PAD(0x0440, 0x01D0, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_CMD__SD3_CMD                                = IOMUX_PAD(0x0444, 0x01D4, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_CMD__NAND_ALE                               = IOMUX_PAD(0x0444, 0x01D4, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_CMD__ECSPI4_MOSI                            = IOMUX_PAD(0x0444, 0x01D4, 2, 0x055C, 2, 0),
+       MX7D_PAD_SD3_CMD__SAI3_RX_BCLK                           = IOMUX_PAD(0x0444, 0x01D4, 3, 0x06C4, 2, 0),
+       MX7D_PAD_SD3_CMD__GPT3_CAPTURE1                          = IOMUX_PAD(0x0444, 0x01D4, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD3_CMD__GPIO6_IO1                              = IOMUX_PAD(0x0444, 0x01D4, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_DATA0__SD3_DATA0                            = IOMUX_PAD(0x0448, 0x01D8, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA0__NAND_DATA00                          = IOMUX_PAD(0x0448, 0x01D8, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA0__ECSPI4_SS0                           = IOMUX_PAD(0x0448, 0x01D8, 2, 0x0560, 2, 0),
+       MX7D_PAD_SD3_DATA0__SAI3_RX_DATA0                        = IOMUX_PAD(0x0448, 0x01D8, 3, 0x06C8, 2, 0),
+       MX7D_PAD_SD3_DATA0__GPT3_CAPTURE2                        = IOMUX_PAD(0x0448, 0x01D8, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA0__GPIO6_IO2                            = IOMUX_PAD(0x0448, 0x01D8, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_DATA1__SD3_DATA1                            = IOMUX_PAD(0x044C, 0x01DC, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA1__NAND_DATA01                          = IOMUX_PAD(0x044C, 0x01DC, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA1__ECSPI4_SCLK                          = IOMUX_PAD(0x044C, 0x01DC, 2, 0x0554, 2, 0),
+       MX7D_PAD_SD3_DATA1__SAI3_TX_BCLK                         = IOMUX_PAD(0x044C, 0x01DC, 3, 0x06D0, 2, 0),
+       MX7D_PAD_SD3_DATA1__GPT3_COMPARE1                        = IOMUX_PAD(0x044C, 0x01DC, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA1__GPIO6_IO3                            = IOMUX_PAD(0x044C, 0x01DC, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_DATA2__SD3_DATA2                            = IOMUX_PAD(0x0450, 0x01E0, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA2__NAND_DATA02                          = IOMUX_PAD(0x0450, 0x01E0, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA2__I2C3_SDA                             = IOMUX_PAD(0x0450, 0x01E0, IOMUX_CONFIG_SION | 2, 0x05E8, 3, 0),
+       MX7D_PAD_SD3_DATA2__SAI3_TX_SYNC                         = IOMUX_PAD(0x0450, 0x01E0, 3, 0x06D4, 2, 0),
+       MX7D_PAD_SD3_DATA2__GPT3_COMPARE2                        = IOMUX_PAD(0x0450, 0x01E0, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA2__GPIO6_IO4                            = IOMUX_PAD(0x0450, 0x01E0, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_DATA3__SD3_DATA3                            = IOMUX_PAD(0x0454, 0x01E4, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA3__NAND_DATA03                          = IOMUX_PAD(0x0454, 0x01E4, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA3__I2C3_SCL                             = IOMUX_PAD(0x0454, 0x01E4, IOMUX_CONFIG_SION | 2, 0x05E4, 3, 0),
+       MX7D_PAD_SD3_DATA3__SAI3_TX_DATA0                        = IOMUX_PAD(0x0454, 0x01E4, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA3__GPT3_COMPARE3                        = IOMUX_PAD(0x0454, 0x01E4, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA3__GPIO6_IO5                            = IOMUX_PAD(0x0454, 0x01E4, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_DATA4__SD3_DATA4                            = IOMUX_PAD(0x0458, 0x01E8, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA4__NAND_DATA04                          = IOMUX_PAD(0x0458, 0x01E8, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA4__UART3_DCE_RX                         = IOMUX_PAD(0x0458, 0x01E8, 3, 0x0704, 4, 0),
+       MX7D_PAD_SD3_DATA4__UART3_DTE_TX                         = IOMUX_PAD(0x0458, 0x01E8, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA4__FLEXCAN2_RX                          = IOMUX_PAD(0x0458, 0x01E8, 4, 0x04E0, 2, 0),
+       MX7D_PAD_SD3_DATA4__GPIO6_IO6                            = IOMUX_PAD(0x0458, 0x01E8, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_DATA5__SD3_DATA5                            = IOMUX_PAD(0x045C, 0x01EC, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA5__NAND_DATA05                          = IOMUX_PAD(0x045C, 0x01EC, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA5__UART3_DCE_TX                         = IOMUX_PAD(0x045C, 0x01EC, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA5__UART3_DTE_RX                         = IOMUX_PAD(0x045C, 0x01EC, 3, 0x0704, 5, 0),
+       MX7D_PAD_SD3_DATA5__FLEXCAN1_TX                          = IOMUX_PAD(0x045C, 0x01EC, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA5__GPIO6_IO7                            = IOMUX_PAD(0x045C, 0x01EC, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_DATA6__SD3_DATA6                            = IOMUX_PAD(0x0460, 0x01F0, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA6__NAND_DATA06                          = IOMUX_PAD(0x0460, 0x01F0, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA6__SD3_WP                               = IOMUX_PAD(0x0460, 0x01F0, 2, 0x073C, 2, 0),
+       MX7D_PAD_SD3_DATA6__UART3_DCE_RTS                        = IOMUX_PAD(0x0460, 0x01F0, 3, 0x0700, 4, 0),
+       MX7D_PAD_SD3_DATA6__UART3_DTE_CTS                        = IOMUX_PAD(0x0460, 0x01F0, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA6__FLEXCAN2_TX                          = IOMUX_PAD(0x0460, 0x01F0, 4, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA6__GPIO6_IO8                            = IOMUX_PAD(0x0460, 0x01F0, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_DATA7__SD3_DATA7                            = IOMUX_PAD(0x0464, 0x01F4, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA7__NAND_DATA07                          = IOMUX_PAD(0x0464, 0x01F4, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA7__SD3_CD_B                             = IOMUX_PAD(0x0464, 0x01F4, 2, 0x0738, 2, 0),
+       MX7D_PAD_SD3_DATA7__UART3_DCE_CTS                        = IOMUX_PAD(0x0464, 0x01F4, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD3_DATA7__UART3_DTE_RTS                        = IOMUX_PAD(0x0464, 0x01F4, 3, 0x0700, 5, 0),
+       MX7D_PAD_SD3_DATA7__FLEXCAN1_RX                          = IOMUX_PAD(0x0464, 0x01F4, 4, 0x04DC, 2, 0),
+       MX7D_PAD_SD3_DATA7__GPIO6_IO9                            = IOMUX_PAD(0x0464, 0x01F4, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_STROBE__SD3_STROBE                          = IOMUX_PAD(0x0468, 0x01F8, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_STROBE__NAND_RE_B                           = IOMUX_PAD(0x0468, 0x01F8, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_STROBE__GPIO6_IO10                          = IOMUX_PAD(0x0468, 0x01F8, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SD3_RESET_B__SD3_RESET_B                        = IOMUX_PAD(0x046C, 0x01FC, 0, 0x0000, 0, 0),
+       MX7D_PAD_SD3_RESET_B__NAND_WE_B                          = IOMUX_PAD(0x046C, 0x01FC, 1, 0x0000, 0, 0),
+       MX7D_PAD_SD3_RESET_B__SD3_RESET                          = IOMUX_PAD(0x046C, 0x01FC, 2, 0x0000, 0, 0),
+       MX7D_PAD_SD3_RESET_B__SAI3_MCLK                          = IOMUX_PAD(0x046C, 0x01FC, 3, 0x0000, 0, 0),
+       MX7D_PAD_SD3_RESET_B__GPIO6_IO11                         = IOMUX_PAD(0x046C, 0x01FC, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI1_RX_DATA__SAI1_RX_DATA0                     = IOMUX_PAD(0x0470, 0x0200, 0, 0x06A0, 0, 0),
+       MX7D_PAD_SAI1_RX_DATA__NAND_CE1_B                        = IOMUX_PAD(0x0470, 0x0200, 1, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_DATA__UART5_DCE_RX                      = IOMUX_PAD(0x0470, 0x0200, 2, 0x0714, 2, 0),
+       MX7D_PAD_SAI1_RX_DATA__UART5_DTE_TX                      = IOMUX_PAD(0x0470, 0x0200, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_DATA__FLEXCAN1_RX                       = IOMUX_PAD(0x0470, 0x0200, 3, 0x04DC, 3, 0),
+       MX7D_PAD_SAI1_RX_DATA__SIM1_PORT1_TRXD                   = IOMUX_PAD(0x0470, 0x0200, 4, 0x06E4, 1, 0),
+       MX7D_PAD_SAI1_RX_DATA__GPIO6_IO12                        = IOMUX_PAD(0x0470, 0x0200, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_DATA__SRC_ANY_PU_RESET                  = IOMUX_PAD(0x0470, 0x0200, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI1_TX_BCLK__SAI1_TX_BCLK                      = IOMUX_PAD(0x0474, 0x0204, 0, 0x06A8, 0, 0),
+       MX7D_PAD_SAI1_TX_BCLK__NAND_CE0_B                        = IOMUX_PAD(0x0474, 0x0204, 1, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_BCLK__UART5_DCE_TX                      = IOMUX_PAD(0x0474, 0x0204, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_BCLK__UART5_DTE_RX                      = IOMUX_PAD(0x0474, 0x0204, 2, 0x0714, 3, 0),
+       MX7D_PAD_SAI1_TX_BCLK__FLEXCAN1_TX                       = IOMUX_PAD(0x0474, 0x0204, 3, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_BCLK__SIM1_PORT1_CLK                    = IOMUX_PAD(0x0474, 0x0204, 4, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_BCLK__GPIO6_IO13                        = IOMUX_PAD(0x0474, 0x0204, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_BCLK__SRC_EARLY_RESET                   = IOMUX_PAD(0x0474, 0x0204, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI1_TX_SYNC__SAI1_TX_SYNC                      = IOMUX_PAD(0x0478, 0x0208, 0, 0x06AC, 0, 0),
+       MX7D_PAD_SAI1_TX_SYNC__NAND_DQS                          = IOMUX_PAD(0x0478, 0x0208, 1, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_SYNC__UART5_DCE_CTS                     = IOMUX_PAD(0x0478, 0x0208, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_SYNC__UART5_DTE_RTS                     = IOMUX_PAD(0x0478, 0x0208, 2, 0x0710, 2, 0),
+       MX7D_PAD_SAI1_TX_SYNC__FLEXCAN2_RX                       = IOMUX_PAD(0x0478, 0x0208, 3, 0x04E0, 3, 0),
+       MX7D_PAD_SAI1_TX_SYNC__SIM1_PORT1_RST_B                  = IOMUX_PAD(0x0478, 0x0208, 4, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_SYNC__GPIO6_IO14                        = IOMUX_PAD(0x0478, 0x0208, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_SYNC__SRC_INT_BOOT                      = IOMUX_PAD(0x0478, 0x0208, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI1_TX_DATA__SAI1_TX_DATA0                     = IOMUX_PAD(0x047C, 0x020C, 0, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_DATA__NAND_READY_B                      = IOMUX_PAD(0x047C, 0x020C, 1, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_DATA__UART5_DCE_RTS                     = IOMUX_PAD(0x047C, 0x020C, 2, 0x0710, 3, 0),
+       MX7D_PAD_SAI1_TX_DATA__UART5_DTE_CTS                     = IOMUX_PAD(0x047C, 0x020C, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_DATA__FLEXCAN2_TX                       = IOMUX_PAD(0x047C, 0x020C, 3, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_DATA__SIM1_PORT1_SVEN                   = IOMUX_PAD(0x047C, 0x020C, 4, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_DATA__GPIO6_IO15                        = IOMUX_PAD(0x047C, 0x020C, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_TX_DATA__SRC_SYSTEM_RESET                  = IOMUX_PAD(0x047C, 0x020C, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI1_RX_SYNC__SAI1_RX_SYNC                      = IOMUX_PAD(0x0480, 0x0210, 0, 0x06A4, 0, 0),
+       MX7D_PAD_SAI1_RX_SYNC__NAND_CE2_B                        = IOMUX_PAD(0x0480, 0x0210, 1, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_SYNC__SAI2_RX_SYNC                      = IOMUX_PAD(0x0480, 0x0210, 2, 0x06B8, 1, 0),
+       MX7D_PAD_SAI1_RX_SYNC__I2C4_SCL                          = IOMUX_PAD(0x0480, 0x0210, IOMUX_CONFIG_SION | 3, 0x05EC, 3, 0),
+       MX7D_PAD_SAI1_RX_SYNC__SIM1_PORT1_PD                     = IOMUX_PAD(0x0480, 0x0210, 4, 0x06E0, 1, 0),
+       MX7D_PAD_SAI1_RX_SYNC__GPIO6_IO16                        = IOMUX_PAD(0x0480, 0x0210, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_SYNC__MQS_RIGHT                         = IOMUX_PAD(0x0480, 0x0210, 6, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_SYNC__SRC_CA7_RESET_B0                  = IOMUX_PAD(0x0480, 0x0210, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI1_RX_BCLK__SAI1_RX_BCLK                      = IOMUX_PAD(0x0484, 0x0214, 0, 0x069C, 0, 0),
+       MX7D_PAD_SAI1_RX_BCLK__NAND_CE3_B                        = IOMUX_PAD(0x0484, 0x0214, 1, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_BCLK__SAI2_RX_BCLK                      = IOMUX_PAD(0x0484, 0x0214, 2, 0x06B0, 1, 0),
+       MX7D_PAD_SAI1_RX_BCLK__I2C4_SDA                          = IOMUX_PAD(0x0484, 0x0214, IOMUX_CONFIG_SION | 3, 0x05F0, 3, 0),
+       MX7D_PAD_SAI1_RX_BCLK__FLEXTIMER2_PHA                    = IOMUX_PAD(0x0484, 0x0214, 4, 0x05CC, 1, 0),
+       MX7D_PAD_SAI1_RX_BCLK__GPIO6_IO17                        = IOMUX_PAD(0x0484, 0x0214, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_BCLK__MQS_LEFT                          = IOMUX_PAD(0x0484, 0x0214, 6, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_RX_BCLK__SRC_CA7_RESET_B1                  = IOMUX_PAD(0x0484, 0x0214, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI1_MCLK__SAI1_MCLK                            = IOMUX_PAD(0x0488, 0x0218, 0, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_MCLK__NAND_WP_B                            = IOMUX_PAD(0x0488, 0x0218, 1, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_MCLK__SAI2_MCLK                            = IOMUX_PAD(0x0488, 0x0218, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_MCLK__CCM_PMIC_READY                       = IOMUX_PAD(0x0488, 0x0218, 3, 0x04F4, 3, 0),
+       MX7D_PAD_SAI1_MCLK__FLEXTIMER2_PHB                       = IOMUX_PAD(0x0488, 0x0218, 4, 0x05D0, 1, 0),
+       MX7D_PAD_SAI1_MCLK__GPIO6_IO18                           = IOMUX_PAD(0x0488, 0x0218, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI1_MCLK__SRC_TESTER_ACK                       = IOMUX_PAD(0x0488, 0x0218, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI2_TX_SYNC__SAI2_TX_SYNC                      = IOMUX_PAD(0x048C, 0x021C, 0, 0x06C0, 1, 0),
+       MX7D_PAD_SAI2_TX_SYNC__ECSPI3_MISO                       = IOMUX_PAD(0x048C, 0x021C, 1, 0x0548, 1, 0),
+       MX7D_PAD_SAI2_TX_SYNC__UART4_DCE_RX                      = IOMUX_PAD(0x048C, 0x021C, 2, 0x070C, 4, 0),
+       MX7D_PAD_SAI2_TX_SYNC__UART4_DTE_TX                      = IOMUX_PAD(0x048C, 0x021C, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_TX_SYNC__UART1_DCE_CTS                     = IOMUX_PAD(0x048C, 0x021C, 3, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_TX_SYNC__UART1_DTE_RTS                     = IOMUX_PAD(0x048C, 0x021C, 3, 0x06F0, 0, 0),
+       MX7D_PAD_SAI2_TX_SYNC__FLEXTIMER2_CH4                    = IOMUX_PAD(0x048C, 0x021C, 4, 0x05BC, 1, 0),
+       MX7D_PAD_SAI2_TX_SYNC__GPIO6_IO19                        = IOMUX_PAD(0x048C, 0x021C, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI2_TX_BCLK__SAI2_TX_BCLK                      = IOMUX_PAD(0x0490, 0x0220, 0, 0x06BC, 1, 0),
+       MX7D_PAD_SAI2_TX_BCLK__ECSPI3_MOSI                       = IOMUX_PAD(0x0490, 0x0220, 1, 0x054C, 1, 0),
+       MX7D_PAD_SAI2_TX_BCLK__UART4_DCE_TX                      = IOMUX_PAD(0x0490, 0x0220, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_TX_BCLK__UART4_DTE_RX                      = IOMUX_PAD(0x0490, 0x0220, 2, 0x070C, 5, 0),
+       MX7D_PAD_SAI2_TX_BCLK__UART1_DCE_RTS                     = IOMUX_PAD(0x0490, 0x0220, 3, 0x06F0, 1, 0),
+       MX7D_PAD_SAI2_TX_BCLK__UART1_DTE_CTS                     = IOMUX_PAD(0x0490, 0x0220, 3, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_TX_BCLK__FLEXTIMER2_CH5                    = IOMUX_PAD(0x0490, 0x0220, 4, 0x05C0, 1, 0),
+       MX7D_PAD_SAI2_TX_BCLK__GPIO6_IO20                        = IOMUX_PAD(0x0490, 0x0220, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_SAI2_RX_DATA__SAI2_RX_DATA0                     = IOMUX_PAD(0x0494, 0x0224, 0, 0x06B4, 1, 0),
+       MX7D_PAD_SAI2_RX_DATA__ECSPI3_SCLK                       = IOMUX_PAD(0x0494, 0x0224, 1, 0x0544, 1, 0),
+       MX7D_PAD_SAI2_RX_DATA__UART4_DCE_CTS                     = IOMUX_PAD(0x0494, 0x0224, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_RX_DATA__UART4_DTE_RTS                     = IOMUX_PAD(0x0494, 0x0224, 2, 0x0708, 4, 0),
+       MX7D_PAD_SAI2_RX_DATA__UART2_DCE_CTS                     = IOMUX_PAD(0x0494, 0x0224, 3, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_RX_DATA__UART2_DTE_RTS                     = IOMUX_PAD(0x0494, 0x0224, 3, 0x06F8, 2, 0),
+       MX7D_PAD_SAI2_RX_DATA__FLEXTIMER2_CH6                    = IOMUX_PAD(0x0494, 0x0224, 4, 0x05C4, 1, 0),
+       MX7D_PAD_SAI2_RX_DATA__GPIO6_IO21                        = IOMUX_PAD(0x0494, 0x0224, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_RX_DATA__KPP_COL7                          = IOMUX_PAD(0x0494, 0x0224, 6, 0x0610, 1, 0),
+
+       MX7D_PAD_SAI2_TX_DATA__SAI2_TX_DATA0                     = IOMUX_PAD(0x0498, 0x0228, 0, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_TX_DATA__ECSPI3_SS0                        = IOMUX_PAD(0x0498, 0x0228, 1, 0x0550, 1, 0),
+       MX7D_PAD_SAI2_TX_DATA__UART4_DCE_RTS                     = IOMUX_PAD(0x0498, 0x0228, 2, 0x0708, 5, 0),
+       MX7D_PAD_SAI2_TX_DATA__UART4_DTE_CTS                     = IOMUX_PAD(0x0498, 0x0228, 2, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_TX_DATA__UART2_DCE_RTS                     = IOMUX_PAD(0x0498, 0x0228, 3, 0x06F8, 3, 0),
+       MX7D_PAD_SAI2_TX_DATA__UART2_DTE_CTS                     = IOMUX_PAD(0x0498, 0x0228, 3, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_TX_DATA__FLEXTIMER2_CH7                    = IOMUX_PAD(0x0498, 0x0228, 4, 0x05C8, 1, 0),
+       MX7D_PAD_SAI2_TX_DATA__GPIO6_IO22                        = IOMUX_PAD(0x0498, 0x0228, 5, 0x0000, 0, 0),
+       MX7D_PAD_SAI2_TX_DATA__KPP_ROW7                          = IOMUX_PAD(0x0498, 0x0228, 6, 0x0630, 1, 0),
+
+       MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0                = IOMUX_PAD(0x049C, 0x022C, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD0__PWM1_OUT                       = IOMUX_PAD(0x049C, 0x022C, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD0__I2C3_SCL                       = IOMUX_PAD(0x049C, 0x022C, IOMUX_CONFIG_SION | 2, 0x05E4, 4, 0),
+       MX7D_PAD_ENET1_RGMII_RD0__UART1_DCE_CTS                  = IOMUX_PAD(0x049C, 0x022C, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD0__UART1_DTE_RTS                  = IOMUX_PAD(0x049C, 0x022C, 3, 0x06F0, 2, 0),
+       MX7D_PAD_ENET1_RGMII_RD0__EPDC_VCOM0                     = IOMUX_PAD(0x049C, 0x022C, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD0__GPIO7_IO0                      = IOMUX_PAD(0x049C, 0x022C, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD0__KPP_ROW3                       = IOMUX_PAD(0x049C, 0x022C, 6, 0x0620, 1, 0),
+
+       MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1                = IOMUX_PAD(0x04A0, 0x0230, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD1__PWM2_OUT                       = IOMUX_PAD(0x04A0, 0x0230, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD1__I2C3_SDA                       = IOMUX_PAD(0x04A0, 0x0230, IOMUX_CONFIG_SION | 2, 0x05E8, 4, 0),
+       MX7D_PAD_ENET1_RGMII_RD1__UART1_DCE_RTS                  = IOMUX_PAD(0x04A0, 0x0230, 3, 0x06F0, 3, 0),
+       MX7D_PAD_ENET1_RGMII_RD1__UART1_DTE_CTS                  = IOMUX_PAD(0x04A0, 0x0230, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD1__EPDC_VCOM1                     = IOMUX_PAD(0x04A0, 0x0230, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD1__GPIO7_IO1                      = IOMUX_PAD(0x04A0, 0x0230, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD1__KPP_COL3                       = IOMUX_PAD(0x04A0, 0x0230, 6, 0x0600, 1, 0),
+
+       MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2                = IOMUX_PAD(0x04A4, 0x0234, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD2__FLEXCAN1_RX                    = IOMUX_PAD(0x04A4, 0x0234, 1, 0x04DC, 4, 0),
+       MX7D_PAD_ENET1_RGMII_RD2__ECSPI2_SCLK                    = IOMUX_PAD(0x04A4, 0x0234, 2, 0x0534, 1, 0),
+       MX7D_PAD_ENET1_RGMII_RD2__UART1_DCE_RX                   = IOMUX_PAD(0x04A4, 0x0234, 3, 0x06F4, 2, 0),
+       MX7D_PAD_ENET1_RGMII_RD2__UART1_DTE_TX                   = IOMUX_PAD(0x04A4, 0x0234, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD2__EPDC_SDCE4                     = IOMUX_PAD(0x04A4, 0x0234, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD2__GPIO7_IO2                      = IOMUX_PAD(0x04A4, 0x0234, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD2__KPP_ROW2                       = IOMUX_PAD(0x04A4, 0x0234, 6, 0x061C, 1, 0),
+
+       MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3                = IOMUX_PAD(0x04A8, 0x0238, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD3__FLEXCAN1_TX                    = IOMUX_PAD(0x04A8, 0x0238, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD3__ECSPI2_MOSI                    = IOMUX_PAD(0x04A8, 0x0238, 2, 0x053C, 1, 0),
+       MX7D_PAD_ENET1_RGMII_RD3__UART1_DCE_TX                   = IOMUX_PAD(0x04A8, 0x0238, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD3__UART1_DTE_RX                   = IOMUX_PAD(0x04A8, 0x0238, 3, 0x06F4, 3, 0),
+       MX7D_PAD_ENET1_RGMII_RD3__EPDC_SDCE5                     = IOMUX_PAD(0x04A8, 0x0238, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD3__GPIO7_IO3                      = IOMUX_PAD(0x04A8, 0x0238, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RD3__KPP_COL2                       = IOMUX_PAD(0x04A8, 0x0238, 6, 0x05FC, 1, 0),
+
+       MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL          = IOMUX_PAD(0x04AC, 0x023C, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RX_CTL__ECSPI2_SS1                  = IOMUX_PAD(0x04AC, 0x023C, 2, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RX_CTL__EPDC_SDCE6                  = IOMUX_PAD(0x04AC, 0x023C, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RX_CTL__GPIO7_IO4                   = IOMUX_PAD(0x04AC, 0x023C, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RX_CTL__KPP_ROW1                    = IOMUX_PAD(0x04AC, 0x023C, 6, 0x0618, 1, 0),
+
+       MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC                = IOMUX_PAD(0x04B0, 0x0240, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RXC__ENET1_RX_ER                    = IOMUX_PAD(0x04B0, 0x0240, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RXC__ECSPI2_SS2                     = IOMUX_PAD(0x04B0, 0x0240, 2, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RXC__EPDC_SDCE7                     = IOMUX_PAD(0x04B0, 0x0240, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RXC__GPIO7_IO5                      = IOMUX_PAD(0x04B0, 0x0240, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_RXC__KPP_COL1                       = IOMUX_PAD(0x04B0, 0x0240, 6, 0x0000, 0, 0),
+
+       MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0                = IOMUX_PAD(0x04B4, 0x0244, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD0__PWM3_OUT                       = IOMUX_PAD(0x04B4, 0x0244, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD0__ECSPI2_SS3                     = IOMUX_PAD(0x04B4, 0x0244, 2, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD0__EPDC_SDCE8                     = IOMUX_PAD(0x04B4, 0x0244, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD0__GPIO7_IO6                      = IOMUX_PAD(0x04B4, 0x0244, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD0__KPP_ROW0                       = IOMUX_PAD(0x04B4, 0x0244, 6, 0x0614, 1, 0),
+
+       MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1                = IOMUX_PAD(0x04B8, 0x0248, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD1__PWM4_OUT                       = IOMUX_PAD(0x04B8, 0x0248, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD1__ECSPI2_RDY                     = IOMUX_PAD(0x04B8, 0x0248, 2, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD1__EPDC_SDCE9                     = IOMUX_PAD(0x04B8, 0x0248, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD1__GPIO7_IO7                      = IOMUX_PAD(0x04B8, 0x0248, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD1__KPP_COL0                       = IOMUX_PAD(0x04B8, 0x0248, 6, 0x05F4, 1, 0),
+
+       MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2                = IOMUX_PAD(0x04BC, 0x024C, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD2__FLEXCAN2_RX                    = IOMUX_PAD(0x04BC, 0x024C, 1, 0x04E0, 4, 0),
+       MX7D_PAD_ENET1_RGMII_TD2__ECSPI2_MISO                    = IOMUX_PAD(0x04BC, 0x024C, 2, 0x0538, 1, 0),
+       MX7D_PAD_ENET1_RGMII_TD2__I2C4_SCL                       = IOMUX_PAD(0x04BC, 0x024C, IOMUX_CONFIG_SION | 3, 0x05EC, 4, 0),
+       MX7D_PAD_ENET1_RGMII_TD2__EPDC_SDOED                     = IOMUX_PAD(0x04BC, 0x024C, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD2__GPIO7_IO8                      = IOMUX_PAD(0x04BC, 0x024C, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3                = IOMUX_PAD(0x04C0, 0x0250, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD3__FLEXCAN2_TX                    = IOMUX_PAD(0x04C0, 0x0250, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD3__ECSPI2_SS0                     = IOMUX_PAD(0x04C0, 0x0250, 2, 0x0540, 1, 0),
+       MX7D_PAD_ENET1_RGMII_TD3__I2C4_SDA                       = IOMUX_PAD(0x04C0, 0x0250, IOMUX_CONFIG_SION | 3, 0x05F0, 4, 0),
+       MX7D_PAD_ENET1_RGMII_TD3__EPDC_SDOEZ                     = IOMUX_PAD(0x04C0, 0x0250, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD3__GPIO7_IO9                      = IOMUX_PAD(0x04C0, 0x0250, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TD3__CAAM_RNG_OSC_OBS               = IOMUX_PAD(0x04C0, 0x0250, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL          = IOMUX_PAD(0x04C4, 0x0254, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TX_CTL__SAI1_RX_SYNC                = IOMUX_PAD(0x04C4, 0x0254, 2, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TX_CTL__GPT2_COMPARE1               = IOMUX_PAD(0x04C4, 0x0254, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TX_CTL__EPDC_PWR_CTRL2              = IOMUX_PAD(0x04C4, 0x0254, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TX_CTL__GPIO7_IO10                  = IOMUX_PAD(0x04C4, 0x0254, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC                = IOMUX_PAD(0x04C8, 0x0258, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TXC__ENET1_TX_ER                    = IOMUX_PAD(0x04C8, 0x0258, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TXC__SAI1_RX_BCLK                   = IOMUX_PAD(0x04C8, 0x0258, 2, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TXC__GPT2_COMPARE2                  = IOMUX_PAD(0x04C8, 0x0258, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TXC__EPDC_PWR_CTRL3                 = IOMUX_PAD(0x04C8, 0x0258, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RGMII_TXC__GPIO7_IO11                     = IOMUX_PAD(0x04C8, 0x0258, 5, 0x0000, 0, 0),
+
+       MX7D_PAD_ENET1_TX_CLK__ENET1_TX_CLK                      = IOMUX_PAD(0x04CC, 0x025C, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_TX_CLK__CCM_ENET_REF_CLK1                 = IOMUX_PAD(0x04CC, 0x025C, 1, 0x0564, 2, 0),
+       MX7D_PAD_ENET1_TX_CLK__SAI1_RX_DATA0                     = IOMUX_PAD(0x04CC, 0x025C, 2, 0x06A0, 1, 0),
+       MX7D_PAD_ENET1_TX_CLK__GPT2_COMPARE3                     = IOMUX_PAD(0x04CC, 0x025C, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_TX_CLK__EPDC_PWR_IRQ                      = IOMUX_PAD(0x04CC, 0x025C, 4, 0x057C, 1, 0),
+       MX7D_PAD_ENET1_TX_CLK__GPIO7_IO12                        = IOMUX_PAD(0x04CC, 0x025C, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_TX_CLK__CCM_EXT_CLK1                      = IOMUX_PAD(0x04CC, 0x025C, 6, 0x04E4, 2, 0),
+       MX7D_PAD_ENET1_TX_CLK__CSU_ALARM_AUT0                    = IOMUX_PAD(0x04CC, 0x025C, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_ENET1_RX_CLK__ENET1_RX_CLK                      = IOMUX_PAD(0x04D0, 0x0260, 0, 0x056C, 0, 0),
+       MX7D_PAD_ENET1_RX_CLK__WDOG2_WDOG_B                      = IOMUX_PAD(0x04D0, 0x0260, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RX_CLK__SAI1_TX_BCLK                      = IOMUX_PAD(0x04D0, 0x0260, 2, 0x06A8, 1, 0),
+       MX7D_PAD_ENET1_RX_CLK__GPT2_CLK                          = IOMUX_PAD(0x04D0, 0x0260, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RX_CLK__EPDC_PWR_WAKE                     = IOMUX_PAD(0x04D0, 0x0260, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RX_CLK__GPIO7_IO13                        = IOMUX_PAD(0x04D0, 0x0260, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_RX_CLK__CCM_EXT_CLK2                      = IOMUX_PAD(0x04D0, 0x0260, 6, 0x04E8, 2, 0),
+       MX7D_PAD_ENET1_RX_CLK__CSU_ALARM_AUT1                    = IOMUX_PAD(0x04D0, 0x0260, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_ENET1_CRS__ENET1_CRS                            = IOMUX_PAD(0x04D4, 0x0264, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_CRS__WDOG2_WDOG_RST_B_DEB                 = IOMUX_PAD(0x04D4, 0x0264, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_CRS__SAI1_TX_SYNC                         = IOMUX_PAD(0x04D4, 0x0264, 2, 0x06AC, 1, 0),
+       MX7D_PAD_ENET1_CRS__GPT2_CAPTURE1                        = IOMUX_PAD(0x04D4, 0x0264, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_CRS__EPDC_PWR_CTRL0                       = IOMUX_PAD(0x04D4, 0x0264, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_CRS__GPIO7_IO14                           = IOMUX_PAD(0x04D4, 0x0264, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_CRS__CCM_EXT_CLK3                         = IOMUX_PAD(0x04D4, 0x0264, 6, 0x04EC, 2, 0),
+       MX7D_PAD_ENET1_CRS__CSU_ALARM_AUT2                       = IOMUX_PAD(0x04D4, 0x0264, 7, 0x0000, 0, 0),
+
+       MX7D_PAD_ENET1_COL__ENET1_COL                            = IOMUX_PAD(0x04D8, 0x0268, 0, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_COL__WDOG1_WDOG_ANY                       = IOMUX_PAD(0x04D8, 0x0268, 1, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_COL__SAI1_TX_DATA0                        = IOMUX_PAD(0x04D8, 0x0268, 2, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_COL__GPT2_CAPTURE2                        = IOMUX_PAD(0x04D8, 0x0268, 3, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_COL__EPDC_PWR_CTRL1                       = IOMUX_PAD(0x04D8, 0x0268, 4, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_COL__GPIO7_IO15                           = IOMUX_PAD(0x04D8, 0x0268, 5, 0x0000, 0, 0),
+       MX7D_PAD_ENET1_COL__CCM_EXT_CLK4                         = IOMUX_PAD(0x04D8, 0x0268, 6, 0x04F0, 2, 0),
+       MX7D_PAD_ENET1_COL__CSU_INT_DEB                          = IOMUX_PAD(0x04D8, 0x0268, 7, 0x0000, 0, 0),
+};
+#endif  /* __ASM_ARCH_IMX7D_PINS_H__ */
diff --git a/arch/arm/include/asm/arch-mx7/sys_proto.h b/arch/arm/include/asm/arch-mx7/sys_proto.h
new file mode 100644 (file)
index 0000000..ca7608b
--- /dev/null
@@ -0,0 +1,9 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/imx-common/sys_proto.h>
+
+void set_wdog_reset(struct wdog_regs *wdog);
index 46787237540c2c697fd253bc76bb0c97a3089144..20ff101a2bf64898f6bb497d8aa0b8fbe5679649 100644 (file)
@@ -7,18 +7,10 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#ifndef __SYS_PROTO_H__
-#define __SYS_PROTO_H__
+#ifndef __MXS_SYS_PROTO_H__
+#define __MXS_SYS_PROTO_H__
 
-#include <asm/imx-common/regs-common.h>
-
-int mxs_reset_block(struct mxs_register_32 *reg);
-int mxs_wait_mask_set(struct mxs_register_32 *reg,
-                      uint32_t mask,
-                      unsigned int timeout);
-int mxs_wait_mask_clr(struct mxs_register_32 *reg,
-                      uint32_t mask,
-                      unsigned int timeout);
+#include <asm/imx-common/sys_proto.h>
 
 int mxsmmc_initialize(bd_t *bis, int id, int (*wp)(int), int (*cd)(int));
 
index 6109b92777c9b8c184e553f2003c847af55a393b..b1513e9aaf468751178c4525a258aca6cea4d885 100644 (file)
@@ -56,8 +56,6 @@ struct watchdog {
 #endif /* __ASSEMBLY__ */
 #endif /* __KERNEL_STRICT_NAMES */
 
-#define BIT(x)                         (1 << (x))
-
 #define WD_UNLOCK1             0xAAAA
 #define WD_UNLOCK2             0x5555
 
diff --git a/arch/arm/include/asm/arch-rockchip/clock.h b/arch/arm/include/asm/arch-rockchip/clock.h
new file mode 100644 (file)
index 0000000..8a0376c
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_ARCH_CLOCK_H
+#define _ASM_ARCH_CLOCK_H
+
+/* define pll mode */
+#define RKCLK_PLL_MODE_SLOW            0
+#define RKCLK_PLL_MODE_NORMAL          1
+
+enum {
+       ROCKCHIP_SYSCON_NOC,
+       ROCKCHIP_SYSCON_GRF,
+       ROCKCHIP_SYSCON_SGRF,
+       ROCKCHIP_SYSCON_PMU,
+};
+
+/* Standard Rockchip clock numbers */
+enum rk_clk_id {
+       CLK_OSC,
+       CLK_ARM,
+       CLK_DDR,
+       CLK_CODEC,
+       CLK_GENERAL,
+       CLK_NEW,
+
+       CLK_COUNT,
+};
+
+static inline int rk_pll_id(enum rk_clk_id clk_id)
+{
+       return clk_id - 1;
+}
+
+/**
+ * clk_get_divisor() - Calculate the required clock divisior
+ *
+ * Given an input rate and a required output_rate, calculate the Rockchip
+ * divisor needed to achieve this.
+ *
+ * @input_rate:                Input clock rate in Hz
+ * @output_rate:       Output clock rate in Hz
+ * @return divisor register value to use
+ */
+static inline u32 clk_get_divisor(ulong input_rate, uint output_rate)
+{
+       uint clk_div;
+
+       clk_div = input_rate / output_rate;
+       clk_div = (clk_div + 1) & 0xfffe;
+
+       return clk_div;
+}
+
+/**
+ * rockchip_get_cru() - get a pointer to the clock/reset unit registers
+ *
+ * @return pointer to registers, or -ve error on error
+ */
+void *rockchip_get_cru(void);
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/cru_rk3288.h b/arch/arm/include/asm/arch-rockchip/cru_rk3288.h
new file mode 100644 (file)
index 0000000..7ebcc40
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * (C) Copyright 2008-2014 Rockchip Electronics
+ * Peter, Software Engineering, <superpeter.cai@gmail.com>.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+#ifndef _ASM_ARCH_CRU_RK3288_H
+#define _ASM_ARCH_CRU_RK3288_H
+
+#define OSC_HZ         (24 * 1000 * 1000)
+
+#define APLL_HZ                (1800 * 1000000)
+#define GPLL_HZ                (594 * 1000000)
+#define CPLL_HZ                (384 * 1000000)
+#define NPLL_HZ                (384 * 1000000)
+
+/* The SRAM is clocked off aclk_bus, so we want to max it out for boot speed */
+#define PD_BUS_ACLK_HZ 297000000
+#define PD_BUS_HCLK_HZ 148500000
+#define PD_BUS_PCLK_HZ 74250000
+
+#define PERI_ACLK_HZ   148500000
+#define PERI_HCLK_HZ   148500000
+#define PERI_PCLK_HZ   74250000
+
+struct rk3288_cru {
+       struct rk3288_pll {
+               u32 con0;
+               u32 con1;
+               u32 con2;
+               u32 con3;
+       } pll[5];
+       u32 cru_mode_con;
+       u32 reserved0[3];
+       u32 cru_clksel_con[43];
+       u32 reserved1[21];
+       u32 cru_clkgate_con[19];
+       u32 reserved2;
+       u32 cru_glb_srst_fst_value;
+       u32 cru_glb_srst_snd_value;
+       u32 cru_softrst_con[12];
+       u32 cru_misc_con;
+       u32 cru_glb_cnt_th;
+       u32 cru_glb_rst_con;
+       u32 reserved3;
+       u32 cru_glb_rst_st;
+       u32 reserved4;
+       u32 cru_sdmmc_con[2];
+       u32 cru_sdio0_con[2];
+       u32 cru_sdio1_con[2];
+       u32 cru_emmc_con[2];
+};
+check_member(rk3288_cru, cru_emmc_con[1], 0x021c);
+
+/* CRU_CLKSEL11_CON */
+enum {
+       HSICPHY_DIV_SHIFT       = 8,
+       HSICPHY_DIV_MASK        = 0x3f,
+
+       MMC0_PLL_SHIFT          = 6,
+       MMC0_PLL_MASK           = 3,
+       MMC0_PLL_SELECT_CODEC   = 0,
+       MMC0_PLL_SELECT_GENERAL,
+       MMC0_PLL_SELECT_24MHZ,
+
+       MMC0_DIV_SHIFT          = 0,
+       MMC0_DIV_MASK           = 0x3f,
+};
+
+/* CRU_CLKSEL12_CON */
+enum {
+       EMMC_PLL_SHIFT          = 0xe,
+       EMMC_PLL_MASK           = 3,
+       EMMC_PLL_SELECT_CODEC   = 0,
+       EMMC_PLL_SELECT_GENERAL,
+       EMMC_PLL_SELECT_24MHZ,
+
+       EMMC_DIV_SHIFT          = 8,
+       EMMC_DIV_MASK           = 0x3f,
+
+       SDIO0_PLL_SHIFT         = 6,
+       SDIO0_PLL_MASK          = 3,
+       SDIO0_PLL_SELECT_CODEC  = 0,
+       SDIO0_PLL_SELECT_GENERAL,
+       SDIO0_PLL_SELECT_24MHZ,
+
+       SDIO0_DIV_SHIFT         = 0,
+       SDIO0_DIV_MASK          = 0x3f,
+};
+
+/* CRU_CLKSEL25_CON */
+enum {
+       SPI1_PLL_SHIFT          = 0xf,
+       SPI1_PLL_MASK           = 1,
+       SPI1_PLL_SELECT_CODEC   = 0,
+       SPI1_PLL_SELECT_GENERAL,
+
+       SPI1_DIV_SHIFT          = 8,
+       SPI1_DIV_MASK           = 0x7f,
+
+       SPI0_PLL_SHIFT          = 7,
+       SPI0_PLL_MASK           = 1,
+       SPI0_PLL_SELECT_CODEC   = 0,
+       SPI0_PLL_SELECT_GENERAL,
+
+       SPI0_DIV_SHIFT          = 0,
+       SPI0_DIV_MASK           = 0x7f,
+};
+
+/* CRU_CLKSEL39_CON */
+enum {
+       ACLK_HEVC_PLL_SHIFT     = 0xe,
+       ACLK_HEVC_PLL_MASK      = 3,
+       ACLK_HEVC_PLL_SELECT_CODEC = 0,
+       ACLK_HEVC_PLL_SELECT_GENERAL,
+       ACLK_HEVC_PLL_SELECT_NEW,
+
+       ACLK_HEVC_DIV_SHIFT     = 8,
+       ACLK_HEVC_DIV_MASK      = 0x1f,
+
+       SPI2_PLL_SHIFT          = 7,
+       SPI2_PLL_MASK           = 1,
+       SPI2_PLL_SELECT_CODEC   = 0,
+       SPI2_PLL_SELECT_GENERAL,
+
+       SPI2_DIV_SHIFT          = 0,
+       SPI2_DIV_MASK           = 0x7f,
+};
+
+/* CRU_MODE_CON */
+enum {
+       NPLL_WORK_SHIFT         = 0xe,
+       NPLL_WORK_MASK          = 3,
+       NPLL_WORK_SLOW          = 0,
+       NPLL_WORK_NORMAL,
+       NPLL_WORK_DEEP,
+
+       GPLL_WORK_SHIFT         = 0xc,
+       GPLL_WORK_MASK          = 3,
+       GPLL_WORK_SLOW          = 0,
+       GPLL_WORK_NORMAL,
+       GPLL_WORK_DEEP,
+
+       CPLL_WORK_SHIFT         = 8,
+       CPLL_WORK_MASK          = 3,
+       CPLL_WORK_SLOW          = 0,
+       CPLL_WORK_NORMAL,
+       CPLL_WORK_DEEP,
+
+       DPLL_WORK_SHIFT         = 4,
+       DPLL_WORK_MASK          = 3,
+       DPLL_WORK_SLOW          = 0,
+       DPLL_WORK_NORMAL,
+       DPLL_WORK_DEEP,
+
+       APLL_WORK_SHIFT         = 0,
+       APLL_WORK_MASK          = 3,
+       APLL_WORK_SLOW          = 0,
+       APLL_WORK_NORMAL,
+       APLL_WORK_DEEP,
+};
+
+/* CRU_APLL_CON0 */
+enum {
+       CLKR_SHIFT              = 8,
+       CLKR_MASK               = 0x3f,
+
+       CLKOD_SHIFT             = 0,
+       CLKOD_MASK              = 0xf,
+};
+
+/* CRU_APLL_CON1 */
+enum {
+       LOCK_SHIFT              = 0x1f,
+       LOCK_MASK               = 1,
+       LOCK_UNLOCK             = 0,
+       LOCK_LOCK,
+
+       CLKF_SHIFT              = 0,
+       CLKF_MASK               = 0x1fff,
+};
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/ddr_rk3288.h b/arch/arm/include/asm/arch-rockchip/ddr_rk3288.h
new file mode 100644 (file)
index 0000000..fccabcd
--- /dev/null
@@ -0,0 +1,484 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_ARCH_DDR_RK3288_H
+#define _ASM_ARCH_DDR_RK3288_H
+
+struct rk3288_ddr_pctl {
+       u32 scfg;
+       u32 sctl;
+       u32 stat;
+       u32 intrstat;
+       u32 reserved0[12];
+       u32 mcmd;
+       u32 powctl;
+       u32 powstat;
+       u32 cmdtstat;
+       u32 tstaten;
+       u32 reserved1[3];
+       u32 mrrcfg0;
+       u32 mrrstat0;
+       u32 mrrstat1;
+       u32 reserved2[4];
+       u32 mcfg1;
+       u32 mcfg;
+       u32 ppcfg;
+       u32 mstat;
+       u32 lpddr2zqcfg;
+       u32 reserved3;
+       u32 dtupdes;
+       u32 dtuna;
+       u32 dtune;
+       u32 dtuprd0;
+       u32 dtuprd1;
+       u32 dtuprd2;
+       u32 dtuprd3;
+       u32 dtuawdt;
+       u32 reserved4[3];
+       u32 togcnt1u;
+       u32 tinit;
+       u32 trsth;
+       u32 togcnt100n;
+       u32 trefi;
+       u32 tmrd;
+       u32 trfc;
+       u32 trp;
+       u32 trtw;
+       u32 tal;
+       u32 tcl;
+       u32 tcwl;
+       u32 tras;
+       u32 trc;
+       u32 trcd;
+       u32 trrd;
+       u32 trtp;
+       u32 twr;
+       u32 twtr;
+       u32 texsr;
+       u32 txp;
+       u32 txpdll;
+       u32 tzqcs;
+       u32 tzqcsi;
+       u32 tdqs;
+       u32 tcksre;
+       u32 tcksrx;
+       u32 tcke;
+       u32 tmod;
+       u32 trstl;
+       u32 tzqcl;
+       u32 tmrr;
+       u32 tckesr;
+       u32 tdpd;
+       u32 reserved5[14];
+       u32 ecccfg;
+       u32 ecctst;
+       u32 eccclr;
+       u32 ecclog;
+       u32 reserved6[28];
+       u32 dtuwactl;
+       u32 dturactl;
+       u32 dtucfg;
+       u32 dtuectl;
+       u32 dtuwd0;
+       u32 dtuwd1;
+       u32 dtuwd2;
+       u32 dtuwd3;
+       u32 dtuwdm;
+       u32 dturd0;
+       u32 dturd1;
+       u32 dturd2;
+       u32 dturd3;
+       u32 dtulfsrwd;
+       u32 dtulfsrrd;
+       u32 dtueaf;
+       u32 dfitctrldelay;
+       u32 dfiodtcfg;
+       u32 dfiodtcfg1;
+       u32 dfiodtrankmap;
+       u32 dfitphywrdata;
+       u32 dfitphywrlat;
+       u32 reserved7[2];
+       u32 dfitrddataen;
+       u32 dfitphyrdlat;
+       u32 reserved8[2];
+       u32 dfitphyupdtype0;
+       u32 dfitphyupdtype1;
+       u32 dfitphyupdtype2;
+       u32 dfitphyupdtype3;
+       u32 dfitctrlupdmin;
+       u32 dfitctrlupdmax;
+       u32 dfitctrlupddly;
+       u32 reserved9;
+       u32 dfiupdcfg;
+       u32 dfitrefmski;
+       u32 dfitctrlupdi;
+       u32 reserved10[4];
+       u32 dfitrcfg0;
+       u32 dfitrstat0;
+       u32 dfitrwrlvlen;
+       u32 dfitrrdlvlen;
+       u32 dfitrrdlvlgateen;
+       u32 dfiststat0;
+       u32 dfistcfg0;
+       u32 dfistcfg1;
+       u32 reserved11;
+       u32 dfitdramclken;
+       u32 dfitdramclkdis;
+       u32 dfistcfg2;
+       u32 dfistparclr;
+       u32 dfistparlog;
+       u32 reserved12[3];
+       u32 dfilpcfg0;
+       u32 reserved13[3];
+       u32 dfitrwrlvlresp0;
+       u32 dfitrwrlvlresp1;
+       u32 dfitrwrlvlresp2;
+       u32 dfitrrdlvlresp0;
+       u32 dfitrrdlvlresp1;
+       u32 dfitrrdlvlresp2;
+       u32 dfitrwrlvldelay0;
+       u32 dfitrwrlvldelay1;
+       u32 dfitrwrlvldelay2;
+       u32 dfitrrdlvldelay0;
+       u32 dfitrrdlvldelay1;
+       u32 dfitrrdlvldelay2;
+       u32 dfitrrdlvlgatedelay0;
+       u32 dfitrrdlvlgatedelay1;
+       u32 dfitrrdlvlgatedelay2;
+       u32 dfitrcmd;
+       u32 reserved14[46];
+       u32 ipvr;
+       u32 iptr;
+};
+check_member(rk3288_ddr_pctl, iptr, 0x03fc);
+
+struct rk3288_ddr_publ_datx {
+       u32 dxgcr;
+       u32 dxgsr[2];
+       u32 dxdllcr;
+       u32 dxdqtr;
+       u32 dxdqstr;
+       u32 reserved[10];
+};
+
+struct rk3288_ddr_publ {
+       u32 ridr;
+       u32 pir;
+       u32 pgcr;
+       u32 pgsr;
+       u32 dllgcr;
+       u32 acdllcr;
+       u32 ptr[3];
+       u32 aciocr;
+       u32 dxccr;
+       u32 dsgcr;
+       u32 dcr;
+       u32 dtpr[3];
+       u32 mr[4];
+       u32 odtcr;
+       u32 dtar;
+       u32 dtdr[2];
+       u32 reserved1[24];
+       u32 dcuar;
+       u32 dcudr;
+       u32 dcurr;
+       u32 dculr;
+       u32 dcugcr;
+       u32 dcutpr;
+       u32 dcusr[2];
+       u32 reserved2[8];
+       u32 bist[17];
+       u32 reserved3[15];
+       u32 zq0cr[2];
+       u32 zq0sr[2];
+       u32 zq1cr[2];
+       u32 zq1sr[2];
+       u32 zq2cr[2];
+       u32 zq2sr[2];
+       u32 zq3cr[2];
+       u32 zq3sr[2];
+       struct rk3288_ddr_publ_datx datx8[4];
+};
+check_member(rk3288_ddr_publ, datx8[3].dxdqstr, 0x0294);
+
+struct rk3288_msch {
+       u32 coreid;
+       u32 revisionid;
+       u32 ddrconf;
+       u32 ddrtiming;
+       u32 ddrmode;
+       u32 readlatency;
+       u32 reserved1[8];
+       u32 activate;
+       u32 devtodev;
+};
+check_member(rk3288_msch, devtodev, 0x003c);
+
+/* PCT_DFISTCFG0 */
+#define DFI_INIT_START                 (1 << 0)
+
+/* PCT_DFISTCFG1 */
+#define DFI_DRAM_CLK_SR_EN             (1 << 0)
+#define DFI_DRAM_CLK_DPD_EN            (1 << 1)
+
+/* PCT_DFISTCFG2 */
+#define DFI_PARITY_INTR_EN             (1 << 0)
+#define DFI_PARITY_EN                  (1 << 1)
+
+/* PCT_DFILPCFG0 */
+#define TLP_RESP_TIME_SHIFT            16
+#define LP_SR_EN                       (1 << 8)
+#define LP_PD_EN                       (1 << 0)
+
+/* PCT_DFITCTRLDELAY */
+#define TCTRL_DELAY_TIME_SHIFT         0
+
+/* PCT_DFITPHYWRDATA */
+#define TPHY_WRDATA_TIME_SHIFT         0
+
+/* PCT_DFITPHYRDLAT */
+#define TPHY_RDLAT_TIME_SHIFT          0
+
+/* PCT_DFITDRAMCLKDIS */
+#define TDRAM_CLK_DIS_TIME_SHIFT       0
+
+/* PCT_DFITDRAMCLKEN */
+#define TDRAM_CLK_EN_TIME_SHIFT                0
+
+/* PCTL_DFIODTCFG */
+#define RANK0_ODT_WRITE_SEL            (1 << 3)
+#define RANK1_ODT_WRITE_SEL            (1 << 11)
+
+/* PCTL_DFIODTCFG1 */
+#define ODT_LEN_BL8_W_SHIFT            16
+
+/* PUBL_ACDLLCR */
+#define ACDLLCR_DLLDIS                 (1 << 31)
+#define ACDLLCR_DLLSRST                        (1 << 30)
+
+/* PUBL_DXDLLCR */
+#define DXDLLCR_DLLDIS                 (1 << 31)
+#define DXDLLCR_DLLSRST                        (1 << 30)
+
+/* PUBL_DLLGCR */
+#define DLLGCR_SBIAS                   (1 << 30)
+
+/* PUBL_DXGCR */
+#define DQSRTT                         (1 << 9)
+#define DQRTT                          (1 << 10)
+
+/* PIR */
+#define PIR_INIT                       (1 << 0)
+#define PIR_DLLSRST                    (1 << 1)
+#define PIR_DLLLOCK                    (1 << 2)
+#define PIR_ZCAL                       (1 << 3)
+#define PIR_ITMSRST                    (1 << 4)
+#define PIR_DRAMRST                    (1 << 5)
+#define PIR_DRAMINIT                   (1 << 6)
+#define PIR_QSTRN                      (1 << 7)
+#define PIR_RVTRN                      (1 << 8)
+#define PIR_ICPC                       (1 << 16)
+#define PIR_DLLBYP                     (1 << 17)
+#define PIR_CTLDINIT                   (1 << 18)
+#define PIR_CLRSR                      (1 << 28)
+#define PIR_LOCKBYP                    (1 << 29)
+#define PIR_ZCALBYP                    (1 << 30)
+#define PIR_INITBYP                    (1u << 31)
+
+/* PGCR */
+#define PGCR_DFTLMT_SHIFT              3
+#define PGCR_DFTCMP_SHIFT              2
+#define PGCR_DQSCFG_SHIFT              1
+#define PGCR_ITMDMD_SHIFT              0
+
+/* PGSR */
+#define PGSR_IDONE                     (1 << 0)
+#define PGSR_DLDONE                    (1 << 1)
+#define PGSR_ZCDONE                    (1 << 2)
+#define PGSR_DIDONE                    (1 << 3)
+#define PGSR_DTDONE                    (1 << 4)
+#define PGSR_DTERR                     (1 << 5)
+#define PGSR_DTIERR                    (1 << 6)
+#define PGSR_DFTERR                    (1 << 7)
+#define PGSR_RVERR                     (1 << 8)
+#define PGSR_RVEIRR                    (1 << 9)
+
+/* PTR0 */
+#define PRT_ITMSRST_SHIFT              18
+#define PRT_DLLLOCK_SHIFT              6
+#define PRT_DLLSRST_SHIFT              0
+
+/* PTR1 */
+#define PRT_DINIT0_SHIFT               0
+#define PRT_DINIT1_SHIFT               19
+
+/* PTR2 */
+#define PRT_DINIT2_SHIFT               0
+#define PRT_DINIT3_SHIFT               17
+
+/* DCR */
+#define DDRMD_LPDDR                    0
+#define DDRMD_DDR                      1
+#define DDRMD_DDR2                     2
+#define DDRMD_DDR3                     3
+#define DDRMD_LPDDR2_LPDDR3            4
+#define DDRMD_MASK                     7
+#define DDRMD_SHIFT                    0
+#define PDQ_MASK                       7
+#define PDQ_SHIFT                      4
+
+/* DXCCR */
+#define DQSNRES_MASK                   0xf
+#define DQSNRES_SHIFT                  8
+#define DQSRES_MASK                    0xf
+#define DQSRES_SHIFT                   4
+
+/* DTPR */
+#define TDQSCKMAX_SHIFT                        27
+#define TDQSCKMAX_MASK                 7
+#define TDQSCK_SHIFT                   24
+#define TDQSCK_MASK                    7
+
+/* DSGCR */
+#define DQSGX_SHIFT                    5
+#define DQSGX_MASK                     7
+#define DQSGE_SHIFT                    8
+#define DQSGE_MASK                     7
+
+/* SCTL */
+#define INIT_STATE                     0
+#define CFG_STATE                      1
+#define GO_STATE                       2
+#define SLEEP_STATE                    3
+#define WAKEUP_STATE                   4
+
+/* STAT */
+#define LP_TRIG_SHIFT                  4
+#define LP_TRIG_MASK                   7
+#define PCTL_STAT_MSK                  7
+#define INIT_MEM                       0
+#define CONFIG                         1
+#define CONFIG_REQ                     2
+#define ACCESS                         3
+#define ACCESS_REQ                     4
+#define LOW_POWER                      5
+#define LOW_POWER_ENTRY_REQ            6
+#define LOW_POWER_EXIT_REQ             7
+
+/* ZQCR*/
+#define PD_OUTPUT_SHIFT                        0
+#define PU_OUTPUT_SHIFT                        5
+#define PD_ONDIE_SHIFT                 10
+#define PU_ONDIE_SHIFT                 15
+#define ZDEN_SHIFT                     28
+
+/* DDLGCR */
+#define SBIAS_BYPASS                   (1 << 23)
+
+/* MCFG */
+#define MDDR_LPDDR2_CLK_STOP_IDLE_SHIFT        24
+#define PD_IDLE_SHIFT                  8
+#define MDDR_EN                                (2 << 22)
+#define LPDDR2_EN                      (3 << 22)
+#define DDR2_EN                                (0 << 5)
+#define DDR3_EN                                (1 << 5)
+#define LPDDR2_S2                      (0 << 6)
+#define LPDDR2_S4                      (1 << 6)
+#define MDDR_LPDDR2_BL_2               (0 << 20)
+#define MDDR_LPDDR2_BL_4               (1 << 20)
+#define MDDR_LPDDR2_BL_8               (2 << 20)
+#define MDDR_LPDDR2_BL_16              (3 << 20)
+#define DDR2_DDR3_BL_4                 0
+#define DDR2_DDR3_BL_8                 1
+#define TFAW_SHIFT                     18
+#define PD_EXIT_SLOW                   (0 << 17)
+#define PD_EXIT_FAST                   (1 << 17)
+#define PD_TYPE_SHIFT                  16
+#define BURSTLENGTH_SHIFT              20
+
+/* POWCTL */
+#define POWER_UP_START                 (1 << 0)
+
+/* POWSTAT */
+#define POWER_UP_DONE                  (1 << 0)
+
+/* MCMD */
+enum {
+       DESELECT_CMD                    = 0,
+       PREA_CMD,
+       REF_CMD,
+       MRS_CMD,
+       ZQCS_CMD,
+       ZQCL_CMD,
+       RSTL_CMD,
+       MRR_CMD                         = 8,
+       DPDE_CMD,
+};
+
+#define LPDDR2_MA_SHIFT                        4
+#define LPDDR2_MA_MASK                 0xff
+#define LPDDR2_OP_SHIFT                        12
+#define LPDDR2_OP_MASK                 0xff
+
+#define START_CMD                      (1u << 31)
+
+/* DEVTODEV */
+#define BUSWRTORD_SHIFT                        4
+#define BUSRDTOWR_SHIFT                        2
+#define BUSRDTORD_SHIFT                        0
+
+/* mr1 for ddr3 */
+#define DDR3_DLL_DISABLE               1
+
+/*
+ *TODO(sjg@chromium.org): We use a PMU register to store SDRAM information for
+ * passing from SPL to U-Boot. It would probably be better to use a normal C
+ * structure in SRAM.
+ *
+ * sys_reg bitfield struct
+ * [31] row_3_4_ch1
+ * [30] row_3_4_ch0
+ * [29:28] chinfo
+ * [27] rank_ch1
+ * [26:25] col_ch1
+ * [24] bk_ch1
+ * [23:22] cs0_row_ch1
+ * [21:20] cs1_row_ch1
+ * [19:18] bw_ch1
+ * [17:16] dbw_ch1;
+ * [15:13] ddrtype
+ * [12] channelnum
+ * [11] rank_ch0
+ * [10:9] col_ch0
+ * [8] bk_ch0
+ * [7:6] cs0_row_ch0
+ * [5:4] cs1_row_ch0
+ * [3:2] bw_ch0
+ * [1:0] dbw_ch0
+*/
+#define SYS_REG_DDRTYPE_SHIFT          13
+#define SYS_REG_DDRTYPE_MASK           7
+#define SYS_REG_NUM_CH_SHIFT           12
+#define SYS_REG_NUM_CH_MASK            1
+#define SYS_REG_ROW_3_4_SHIFT(ch)      (30 + (ch))
+#define SYS_REG_ROW_3_4_MASK           1
+#define SYS_REG_CHINFO_SHIFT(ch)       (28 + (ch))
+#define SYS_REG_RANK_SHIFT(ch)         (11 + (ch) * 16)
+#define SYS_REG_RANK_MASK              1
+#define SYS_REG_COL_SHIFT(ch)          (9 + (ch) * 16)
+#define SYS_REG_COL_MASK               3
+#define SYS_REG_BK_SHIFT(ch)           (8 + (ch) * 16)
+#define SYS_REG_BK_MASK                        1
+#define SYS_REG_CS0_ROW_SHIFT(ch)      (6 + (ch) * 16)
+#define SYS_REG_CS0_ROW_MASK           3
+#define SYS_REG_CS1_ROW_SHIFT(ch)      (4 + (ch) * 16)
+#define SYS_REG_CS1_ROW_MASK           3
+#define SYS_REG_BW_SHIFT(ch)           (2 + (ch) * 16)
+#define SYS_REG_BW_MASK                        3
+#define SYS_REG_DBW_SHIFT(ch)          ((ch) * 16)
+#define SYS_REG_DBW_MASK               3
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/gpio.h b/arch/arm/include/asm/arch-rockchip/gpio.h
new file mode 100644 (file)
index 0000000..e39218d
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef _ASM_ARCH_GPIO_H
+#define _ASM_ARCH_GPIO_H
+
+struct rockchip_gpio_regs {
+       u32 swport_dr;
+       u32 swport_ddr;
+       u32 reserved0[(0x30 - 0x08) / 4];
+       u32 inten;
+       u32 intmask;
+       u32 inttype_level;
+       u32 int_polarity;
+       u32 int_status;
+       u32 int_rawstatus;
+       u32 debounce;
+       u32 porta_eoi;
+       u32 ext_port;
+       u32 reserved1[(0x60 - 0x54) / 4];
+       u32 ls_sync;
+};
+check_member(rockchip_gpio_regs, ls_sync, 0x60);
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/grf_rk3288.h b/arch/arm/include/asm/arch-rockchip/grf_rk3288.h
new file mode 100644 (file)
index 0000000..0117a17
--- /dev/null
@@ -0,0 +1,768 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ * Copyright 2014 Rockchip Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_ARCH_GRF_RK3288_H
+#define _ASM_ARCH_GRF_RK3288_H
+
+struct rk3288_grf_gpio_lh {
+       u32 l;
+       u32 h;
+};
+
+struct rk3288_grf {
+       u32 reserved[3];
+       u32 gpio1d_iomux;
+       u32 gpio2a_iomux;
+       u32 gpio2b_iomux;
+
+       u32 gpio2c_iomux;
+       u32 reserved2;
+       u32 gpio3a_iomux;
+       u32 gpio3b_iomux;
+
+       u32 gpio3c_iomux;
+       u32 gpio3dl_iomux;
+       u32 gpio3dh_iomux;
+       u32 gpio4al_iomux;
+
+       u32 gpio4ah_iomux;
+       u32 gpio4bl_iomux;
+       u32 reserved3;
+       u32 gpio4c_iomux;
+
+       u32 gpio4d_iomux;
+       u32 reserved4;
+       u32 gpio5b_iomux;
+       u32 gpio5c_iomux;
+
+       u32 reserved5;
+       u32 gpio6a_iomux;
+       u32 gpio6b_iomux;
+       u32 gpio6c_iomux;
+       u32 reserved6;
+       u32 gpio7a_iomux;
+       u32 gpio7b_iomux;
+       u32 gpio7cl_iomux;
+       u32 gpio7ch_iomux;
+       u32 reserved7;
+       u32 gpio8a_iomux;
+       u32 gpio8b_iomux;
+       u32 reserved8[30];
+       struct rk3288_grf_gpio_lh gpio_sr[8];
+       u32 gpio1_p[8][4];
+       u32 gpio1_e[8][4];
+       u32 gpio_smt;
+       u32 soc_con0;
+       u32 soc_con1;
+       u32 soc_con2;
+       u32 soc_con3;
+       u32 soc_con4;
+       u32 soc_con5;
+       u32 soc_con6;
+       u32 soc_con7;
+       u32 soc_con8;
+       u32 soc_con9;
+       u32 soc_con10;
+       u32 soc_con11;
+       u32 soc_con12;
+       u32 soc_con13;
+       u32 soc_con14;
+       u32 soc_status[22];
+       u32 reserved9[2];
+       u32 peridmac_con[4];
+       u32 ddrc0_con0;
+       u32 ddrc1_con0;
+       u32 cpu_con[5];
+       u32 reserved10[3];
+       u32 cpu_status0;
+       u32 reserved11;
+       u32 uoc0_con[5];
+       u32 uoc1_con[5];
+       u32 uoc2_con[4];
+       u32 uoc3_con[2];
+       u32 uoc4_con[2];
+       u32 pvtm_con[3];
+       u32 pvtm_status[3];
+       u32 io_vsel;
+       u32 saradc_testbit;
+       u32 tsadc_testbit_l;
+       u32 tsadc_testbit_h;
+       u32 os_reg[4];
+       u32 reserved12;
+       u32 soc_con15;
+       u32 soc_con16;
+};
+
+struct rk3288_sgrf {
+       u32 soc_con0;
+       u32 soc_con1;
+       u32 soc_con2;
+       u32 soc_con3;
+       u32 soc_con4;
+       u32 soc_con5;
+       u32 reserved1[(0x20-0x18)/4];
+       u32 busdmac_con[2];
+       u32 reserved2[(0x40-0x28)/4];
+       u32 cpu_con[3];
+       u32 reserved3[(0x50-0x4c)/4];
+       u32 soc_con6;
+       u32 soc_con7;
+       u32 soc_con8;
+       u32 soc_con9;
+       u32 soc_con10;
+       u32 soc_con11;
+       u32 soc_con12;
+       u32 soc_con13;
+       u32 soc_con14;
+       u32 soc_con15;
+       u32 soc_con16;
+       u32 soc_con17;
+       u32 soc_con18;
+       u32 soc_con19;
+       u32 soc_con20;
+       u32 soc_con21;
+       u32 reserved4[(0x100-0x90)/4];
+       u32 soc_status[2];
+       u32 reserved5[(0x120-0x108)/4];
+       u32 fast_boot_addr;
+};
+
+/* GRF_GPIO1D_IOMUX */
+enum {
+       GPIO1D3_SHIFT           = 6,
+       GPIO1D3_MASK            = 1,
+       GPIO1D3_GPIO            = 0,
+       GPIO1D3_LCDC0_DCLK,
+
+       GPIO1D2_SHIFT           = 4,
+       GPIO1D2_MASK            = 1,
+       GPIO1D2_GPIO            = 0,
+       GPIO1D2_LCDC0_DEN,
+
+       GPIO1D1_SHIFT           = 2,
+       GPIO1D1_MASK            = 1,
+       GPIO1D1_GPIO            = 0,
+       GPIO1D1_LCDC0_VSYNC,
+
+       GPIO1D0_SHIFT           = 0,
+       GPIO1D0_MASK            = 1,
+       GPIO1D0_GPIO            = 0,
+       GPIO1D0_LCDC0_HSYNC,
+};
+
+/* GRF_GPIO2C_IOMUX */
+enum {
+       GPIO2C1_SHIFT           = 2,
+       GPIO2C1_MASK            = 1,
+       GPIO2C1_GPIO            = 0,
+       GPIO2C1_I2C3CAM_SDA,
+
+       GPIO2C0_SHIFT           = 0,
+       GPIO2C0_MASK            = 1,
+       GPIO2C0_GPIO            = 0,
+       GPIO2C0_I2C3CAM_SCL,
+};
+
+/* GRF_GPIO3A_IOMUX */
+enum {
+       GPIO3A7_SHIFT           = 14,
+       GPIO3A7_MASK            = 3,
+       GPIO3A7_GPIO            = 0,
+       GPIO3A7_FLASH0_DATA7,
+       GPIO3A7_EMMC_DATA7,
+
+       GPIO3A6_SHIFT           = 12,
+       GPIO3A6_MASK            = 3,
+       GPIO3A6_GPIO            = 0,
+       GPIO3A6_FLASH0_DATA6,
+       GPIO3A6_EMMC_DATA6,
+
+       GPIO3A5_SHIFT           = 10,
+       GPIO3A5_MASK            = 3,
+       GPIO3A5_GPIO            = 0,
+       GPIO3A5_FLASH0_DATA5,
+       GPIO3A5_EMMC_DATA5,
+
+       GPIO3A4_SHIFT           = 8,
+       GPIO3A4_MASK            = 3,
+       GPIO3A4_GPIO            = 0,
+       GPIO3A4_FLASH0_DATA4,
+       GPIO3A4_EMMC_DATA4,
+
+       GPIO3A3_SHIFT           = 6,
+       GPIO3A3_MASK            = 3,
+       GPIO3A3_GPIO            = 0,
+       GPIO3A3_FLASH0_DATA3,
+       GPIO3A3_EMMC_DATA3,
+
+       GPIO3A2_SHIFT           = 4,
+       GPIO3A2_MASK            = 3,
+       GPIO3A2_GPIO            = 0,
+       GPIO3A2_FLASH0_DATA2,
+       GPIO3A2_EMMC_DATA2,
+
+       GPIO3A1_SHIFT           = 2,
+       GPIO3A1_MASK            = 3,
+       GPIO3A1_GPIO            = 0,
+       GPIO3A1_FLASH0_DATA1,
+       GPIO3A1_EMMC_DATA1,
+
+       GPIO3A0_SHIFT           = 0,
+       GPIO3A0_MASK            = 3,
+       GPIO3A0_GPIO            = 0,
+       GPIO3A0_FLASH0_DATA0,
+       GPIO3A0_EMMC_DATA0,
+};
+
+/* GRF_GPIO3B_IOMUX */
+enum {
+       GPIO3B7_SHIFT           = 14,
+       GPIO3B7_MASK            = 1,
+       GPIO3B7_GPIO            = 0,
+       GPIO3B7_FLASH0_CSN1,
+
+       GPIO3B6_SHIFT           = 12,
+       GPIO3B6_MASK            = 1,
+       GPIO3B6_GPIO            = 0,
+       GPIO3B6_FLASH0_CSN0,
+
+       GPIO3B5_SHIFT           = 10,
+       GPIO3B5_MASK            = 1,
+       GPIO3B5_GPIO            = 0,
+       GPIO3B5_FLASH0_WRN,
+
+       GPIO3B4_SHIFT           = 8,
+       GPIO3B4_MASK            = 1,
+       GPIO3B4_GPIO            = 0,
+       GPIO3B4_FLASH0_CLE,
+
+       GPIO3B3_SHIFT           = 6,
+       GPIO3B3_MASK            = 1,
+       GPIO3B3_GPIO            = 0,
+       GPIO3B3_FLASH0_ALE,
+
+       GPIO3B2_SHIFT           = 4,
+       GPIO3B2_MASK            = 1,
+       GPIO3B2_GPIO            = 0,
+       GPIO3B2_FLASH0_RDN,
+
+       GPIO3B1_SHIFT           = 2,
+       GPIO3B1_MASK            = 3,
+       GPIO3B1_GPIO            = 0,
+       GPIO3B1_FLASH0_WP,
+       GPIO3B1_EMMC_PWREN,
+
+       GPIO3B0_SHIFT           = 0,
+       GPIO3B0_MASK            = 1,
+       GPIO3B0_GPIO            = 0,
+       GPIO3B0_FLASH0_RDY,
+};
+
+/* GRF_GPIO3C_IOMUX */
+enum {
+       GPIO3C2_SHIFT           = 4,
+       GPIO3C2_MASK            = 3,
+       GPIO3C2_GPIO            = 0,
+       GPIO3C2_FLASH0_DQS,
+       GPIO3C2_EMMC_CLKOUT,
+
+       GPIO3C1_SHIFT           = 2,
+       GPIO3C1_MASK            = 3,
+       GPIO3C1_GPIO            = 0,
+       GPIO3C1_FLASH0_CSN3,
+       GPIO3C1_EMMC_RSTNOUT,
+
+       GPIO3C0_SHIFT           = 0,
+       GPIO3C0_MASK            = 3,
+       GPIO3C0_GPIO            = 0,
+       GPIO3C0_FLASH0_CSN2,
+       GPIO3C0_EMMC_CMD,
+};
+
+/* GRF_GPIO4C_IOMUX */
+enum {
+       GPIO4C7_SHIFT           = 14,
+       GPIO4C7_MASK            = 1,
+       GPIO4C7_GPIO            = 0,
+       GPIO4C7_SDIO0_DATA3,
+
+       GPIO4C6_SHIFT           = 12,
+       GPIO4C6_MASK            = 1,
+       GPIO4C6_GPIO            = 0,
+       GPIO4C6_SDIO0_DATA2,
+
+       GPIO4C5_SHIFT           = 10,
+       GPIO4C5_MASK            = 1,
+       GPIO4C5_GPIO            = 0,
+       GPIO4C5_SDIO0_DATA1,
+
+       GPIO4C4_SHIFT           = 8,
+       GPIO4C4_MASK            = 1,
+       GPIO4C4_GPIO            = 0,
+       GPIO4C4_SDIO0_DATA0,
+
+       GPIO4C3_SHIFT           = 6,
+       GPIO4C3_MASK            = 1,
+       GPIO4C3_GPIO            = 0,
+       GPIO4C3_UART0BT_RTSN,
+
+       GPIO4C2_SHIFT           = 4,
+       GPIO4C2_MASK            = 1,
+       GPIO4C2_GPIO            = 0,
+       GPIO4C2_UART0BT_CTSN,
+
+       GPIO4C1_SHIFT           = 2,
+       GPIO4C1_MASK            = 1,
+       GPIO4C1_GPIO            = 0,
+       GPIO4C1_UART0BT_SOUT,
+
+       GPIO4C0_SHIFT           = 0,
+       GPIO4C0_MASK            = 1,
+       GPIO4C0_GPIO            = 0,
+       GPIO4C0_UART0BT_SIN,
+};
+
+/* GRF_GPIO5B_IOMUX */
+enum {
+       GPIO5B7_SHIFT           = 14,
+       GPIO5B7_MASK            = 3,
+       GPIO5B7_GPIO            = 0,
+       GPIO5B7_SPI0_RXD,
+       GPIO5B7_TS0_DATA7,
+       GPIO5B7_UART4EXP_SIN,
+
+       GPIO5B6_SHIFT           = 12,
+       GPIO5B6_MASK            = 3,
+       GPIO5B6_GPIO            = 0,
+       GPIO5B6_SPI0_TXD,
+       GPIO5B6_TS0_DATA6,
+       GPIO5B6_UART4EXP_SOUT,
+
+       GPIO5B5_SHIFT           = 10,
+       GPIO5B5_MASK            = 3,
+       GPIO5B5_GPIO            = 0,
+       GPIO5B5_SPI0_CSN0,
+       GPIO5B5_TS0_DATA5,
+       GPIO5B5_UART4EXP_RTSN,
+
+       GPIO5B4_SHIFT           = 8,
+       GPIO5B4_MASK            = 3,
+       GPIO5B4_GPIO            = 0,
+       GPIO5B4_SPI0_CLK,
+       GPIO5B4_TS0_DATA4,
+       GPIO5B4_UART4EXP_CTSN,
+
+       GPIO5B3_SHIFT           = 6,
+       GPIO5B3_MASK            = 3,
+       GPIO5B3_GPIO            = 0,
+       GPIO5B3_UART1BB_RTSN,
+       GPIO5B3_TS0_DATA3,
+
+       GPIO5B2_SHIFT           = 4,
+       GPIO5B2_MASK            = 3,
+       GPIO5B2_GPIO            = 0,
+       GPIO5B2_UART1BB_CTSN,
+       GPIO5B2_TS0_DATA2,
+
+       GPIO5B1_SHIFT           = 2,
+       GPIO5B1_MASK            = 3,
+       GPIO5B1_GPIO            = 0,
+       GPIO5B1_UART1BB_SOUT,
+       GPIO5B1_TS0_DATA1,
+
+       GPIO5B0_SHIFT           = 0,
+       GPIO5B0_MASK            = 3,
+       GPIO5B0_GPIO            = 0,
+       GPIO5B0_UART1BB_SIN,
+       GPIO5B0_TS0_DATA0,
+};
+
+/* GRF_GPIO5C_IOMUX */
+enum {
+       GPIO5C3_SHIFT           = 6,
+       GPIO5C3_MASK            = 1,
+       GPIO5C3_GPIO            = 0,
+       GPIO5C3_TS0_ERR,
+
+       GPIO5C2_SHIFT           = 4,
+       GPIO5C2_MASK            = 1,
+       GPIO5C2_GPIO            = 0,
+       GPIO5C2_TS0_CLK,
+
+       GPIO5C1_SHIFT           = 2,
+       GPIO5C1_MASK            = 1,
+       GPIO5C1_GPIO            = 0,
+       GPIO5C1_TS0_VALID,
+
+       GPIO5C0_SHIFT           = 0,
+       GPIO5C0_MASK            = 3,
+       GPIO5C0_GPIO            = 0,
+       GPIO5C0_SPI0_CSN1,
+       GPIO5C0_TS0_SYNC,
+};
+
+/* GRF_GPIO6B_IOMUX */
+enum {
+       GPIO6B3_SHIFT           = 6,
+       GPIO6B3_MASK            = 1,
+       GPIO6B3_GPIO            = 0,
+       GPIO6B3_SPDIF_TX,
+
+       GPIO6B2_SHIFT           = 4,
+       GPIO6B2_MASK            = 1,
+       GPIO6B2_GPIO            = 0,
+       GPIO6B2_I2C1AUDIO_SCL,
+
+       GPIO6B1_SHIFT           = 2,
+       GPIO6B1_MASK            = 1,
+       GPIO6B1_GPIO            = 0,
+       GPIO6B1_I2C1AUDIO_SDA,
+
+       GPIO6B0_SHIFT           = 0,
+       GPIO6B0_MASK            = 1,
+       GPIO6B0_GPIO            = 0,
+       GPIO6B0_I2S_CLK,
+};
+
+/* GRF_GPIO6C_IOMUX */
+enum {
+       GPIO6C6_SHIFT           = 12,
+       GPIO6C6_MASK            = 1,
+       GPIO6C6_GPIO            = 0,
+       GPIO6C6_SDMMC0_DECTN,
+
+       GPIO6C5_SHIFT           = 10,
+       GPIO6C5_MASK            = 1,
+       GPIO6C5_GPIO            = 0,
+       GPIO6C5_SDMMC0_CMD,
+
+       GPIO6C4_SHIFT           = 8,
+       GPIO6C4_MASK            = 3,
+       GPIO6C4_GPIO            = 0,
+       GPIO6C4_SDMMC0_CLKOUT,
+       GPIO6C4_JTAG_TDO,
+
+       GPIO6C3_SHIFT           = 6,
+       GPIO6C3_MASK            = 3,
+       GPIO6C3_GPIO            = 0,
+       GPIO6C3_SDMMC0_DATA3,
+       GPIO6C3_JTAG_TCK,
+
+       GPIO6C2_SHIFT           = 4,
+       GPIO6C2_MASK            = 3,
+       GPIO6C2_GPIO            = 0,
+       GPIO6C2_SDMMC0_DATA2,
+       GPIO6C2_JTAG_TDI,
+
+       GPIO6C1_SHIFT           = 2,
+       GPIO6C1_MASK            = 3,
+       GPIO6C1_GPIO            = 0,
+       GPIO6C1_SDMMC0_DATA1,
+       GPIO6C1_JTAG_TRSTN,
+
+       GPIO6C0_SHIFT           = 0,
+       GPIO6C0_MASK            = 3,
+       GPIO6C0_GPIO            = 0,
+       GPIO6C0_SDMMC0_DATA0,
+       GPIO6C0_JTAG_TMS,
+};
+
+/* GRF_GPIO7A_IOMUX */
+enum {
+       GPIO7A7_SHIFT           = 14,
+       GPIO7A7_MASK            = 3,
+       GPIO7A7_GPIO            = 0,
+       GPIO7A7_UART3GPS_SIN,
+       GPIO7A7_GPS_MAG,
+       GPIO7A7_HSADCT1_DATA0,
+
+       GPIO7A1_SHIFT           = 2,
+       GPIO7A1_MASK            = 1,
+       GPIO7A1_GPIO            = 0,
+       GPIO7A1_PWM_1,
+
+       GPIO7A0_SHIFT           = 0,
+       GPIO7A0_MASK            = 3,
+       GPIO7A0_GPIO            = 0,
+       GPIO7A0_PWM_0,
+       GPIO7A0_VOP0_PWM,
+       GPIO7A0_VOP1_PWM,
+};
+
+/* GRF_GPIO7B_IOMUX */
+enum {
+       GPIO7B7_SHIFT           = 14,
+       GPIO7B7_MASK            = 3,
+       GPIO7B7_GPIO            = 0,
+       GPIO7B7_ISP_SHUTTERTRIG,
+       GPIO7B7_SPI1_TXD,
+
+       GPIO7B6_SHIFT           = 12,
+       GPIO7B6_MASK            = 3,
+       GPIO7B6_GPIO            = 0,
+       GPIO7B6_ISP_PRELIGHTTRIG,
+       GPIO7B6_SPI1_RXD,
+
+       GPIO7B5_SHIFT           = 10,
+       GPIO7B5_MASK            = 3,
+       GPIO7B5_GPIO            = 0,
+       GPIO7B5_ISP_FLASHTRIGOUT,
+       GPIO7B5_SPI1_CSN0,
+
+       GPIO7B4_SHIFT           = 8,
+       GPIO7B4_MASK            = 3,
+       GPIO7B4_GPIO            = 0,
+       GPIO7B4_ISP_SHUTTEREN,
+       GPIO7B4_SPI1_CLK,
+
+       GPIO7B3_SHIFT           = 6,
+       GPIO7B3_MASK            = 3,
+       GPIO7B3_GPIO            = 0,
+       GPIO7B3_USB_DRVVBUS1,
+       GPIO7B3_EDP_HOTPLUG,
+
+       GPIO7B2_SHIFT           = 4,
+       GPIO7B2_MASK            = 3,
+       GPIO7B2_GPIO            = 0,
+       GPIO7B2_UART3GPS_RTSN,
+       GPIO7B2_USB_DRVVBUS0,
+
+       GPIO7B1_SHIFT           = 2,
+       GPIO7B1_MASK            = 3,
+       GPIO7B1_GPIO            = 0,
+       GPIO7B1_UART3GPS_CTSN,
+       GPIO7B1_GPS_RFCLK,
+       GPIO7B1_GPST1_CLK,
+
+       GPIO7B0_SHIFT           = 0,
+       GPIO7B0_MASK            = 3,
+       GPIO7B0_GPIO            = 0,
+       GPIO7B0_UART3GPS_SOUT,
+       GPIO7B0_GPS_SIG,
+       GPIO7B0_HSADCT1_DATA1,
+};
+
+/* GRF_GPIO7CL_IOMUX */
+enum {
+       GPIO7C3_SHIFT           = 12,
+       GPIO7C3_MASK            = 3,
+       GPIO7C3_GPIO            = 0,
+       GPIO7C3_I2C5HDMI_SDA,
+       GPIO7C3_EDPHDMII2C_SDA,
+
+       GPIO7C2_SHIFT           = 8,
+       GPIO7C2_MASK            = 1,
+       GPIO7C2_GPIO            = 0,
+       GPIO7C2_I2C4TP_SCL,
+
+       GPIO7C1_SHIFT           = 4,
+       GPIO7C1_MASK            = 1,
+       GPIO7C1_GPIO            = 0,
+       GPIO7C1_I2C4TP_SDA,
+
+       GPIO7C0_SHIFT           = 0,
+       GPIO7C0_MASK            = 3,
+       GPIO7C0_GPIO            = 0,
+       GPIO7C0_ISP_FLASHTRIGIN,
+       GPIO7C0_EDPHDMI_CECINOUTT1,
+};
+
+/* GRF_GPIO7CH_IOMUX */
+enum {
+       GPIO7C7_SHIFT           = 12,
+       GPIO7C7_MASK            = 7,
+       GPIO7C7_GPIO            = 0,
+       GPIO7C7_UART2DBG_SOUT,
+       GPIO7C7_UART2DBG_SIROUT,
+       GPIO7C7_PWM_3,
+       GPIO7C7_EDPHDMI_CECINOUT,
+
+       GPIO7C6_SHIFT           = 8,
+       GPIO7C6_MASK            = 3,
+       GPIO7C6_GPIO            = 0,
+       GPIO7C6_UART2DBG_SIN,
+       GPIO7C6_UART2DBG_SIRIN,
+       GPIO7C6_PWM_2,
+
+       GPIO7C4_SHIFT           = 0,
+       GPIO7C4_MASK            = 3,
+       GPIO7C4_GPIO            = 0,
+       GPIO7C4_I2C5HDMI_SCL,
+       GPIO7C4_EDPHDMII2C_SCL,
+};
+
+/* GRF_GPIO8A_IOMUX */
+enum {
+       GPIO8A7_SHIFT           = 14,
+       GPIO8A7_MASK            = 3,
+       GPIO8A7_GPIO            = 0,
+       GPIO8A7_SPI2_CSN0,
+       GPIO8A7_SC_DETECT,
+       GPIO8A7_RESERVE,
+
+       GPIO8A6_SHIFT           = 12,
+       GPIO8A6_MASK            = 3,
+       GPIO8A6_GPIO            = 0,
+       GPIO8A6_SPI2_CLK,
+       GPIO8A6_SC_IO,
+       GPIO8A6_RESERVE,
+
+       GPIO8A5_SHIFT           = 10,
+       GPIO8A5_MASK            = 3,
+       GPIO8A5_GPIO            = 0,
+       GPIO8A5_I2C2SENSOR_SCL,
+       GPIO8A5_SC_CLK,
+
+       GPIO8A4_SHIFT           = 8,
+       GPIO8A4_MASK            = 3,
+       GPIO8A4_GPIO            = 0,
+       GPIO8A4_I2C2SENSOR_SDA,
+       GPIO8A4_SC_RST,
+
+       GPIO8A3_SHIFT           = 6,
+       GPIO8A3_MASK            = 3,
+       GPIO8A3_GPIO            = 0,
+       GPIO8A3_SPI2_CSN1,
+       GPIO8A3_SC_IOT1,
+
+       GPIO8A2_SHIFT           = 4,
+       GPIO8A2_MASK            = 1,
+       GPIO8A2_GPIO            = 0,
+       GPIO8A2_SC_DETECTT1,
+
+       GPIO8A1_SHIFT           = 2,
+       GPIO8A1_MASK            = 3,
+       GPIO8A1_GPIO            = 0,
+       GPIO8A1_PS2_DATA,
+       GPIO8A1_SC_VCC33V,
+
+       GPIO8A0_SHIFT           = 0,
+       GPIO8A0_MASK            = 3,
+       GPIO8A0_GPIO            = 0,
+       GPIO8A0_PS2_CLK,
+       GPIO8A0_SC_VCC18V,
+};
+
+/* GRF_GPIO8B_IOMUX */
+enum {
+       GPIO8B1_SHIFT           = 2,
+       GPIO8B1_MASK            = 3,
+       GPIO8B1_GPIO            = 0,
+       GPIO8B1_SPI2_TXD,
+       GPIO8B1_SC_CLK,
+
+       GPIO8B0_SHIFT           = 0,
+       GPIO8B0_MASK            = 3,
+       GPIO8B0_GPIO            = 0,
+       GPIO8B0_SPI2_RXD,
+       GPIO8B0_SC_RST,
+};
+
+/* GRF_SOC_CON0 */
+enum {
+       PAUSE_MMC_PERI_SHIFT    = 0xf,
+       PAUSE_MMC_PERI_MASK     = 1,
+
+       PAUSE_EMEM_PERI_SHIFT   = 0xe,
+       PAUSE_EMEM_PERI_MASK    = 1,
+
+       PAUSE_USB_PERI_SHIFT    = 0xd,
+       PAUSE_USB_PERI_MASK     = 1,
+
+       GRF_FORCE_JTAG_SHIFT    = 0xc,
+       GRF_FORCE_JTAG_MASK     = 1,
+
+       GRF_CORE_IDLE_REQ_MODE_SEL1_SHIFT = 0xb,
+       GRF_CORE_IDLE_REQ_MODE_SEL1_MASK = 1,
+
+       GRF_CORE_IDLE_REQ_MODE_SEL0_SHIFT = 0xa,
+       GRF_CORE_IDLE_REQ_MODE_SEL0_MASK = 1,
+
+       DDR1_16BIT_EN_SHIFT     = 9,
+       DDR1_16BIT_EN_MASK      = 1,
+
+       DDR0_16BIT_EN_SHIFT     = 8,
+       DDR0_16BIT_EN_MASK      = 1,
+
+       VCODEC_SHIFT            = 7,
+       VCODEC_MASK             = 1,
+       VCODEC_SELECT_VEPU_ACLK = 0,
+       VCODEC_SELECT_VDPU_ACLK,
+
+       UPCTL1_C_ACTIVE_IN_SHIFT = 6,
+       UPCTL1_C_ACTIVE_IN_MASK = 1,
+       UPCTL1_C_ACTIVE_IN_MAY  = 0,
+       UPCTL1_C_ACTIVE_IN_WILL,
+
+       UPCTL0_C_ACTIVE_IN_SHIFT = 5,
+       UPCTL0_C_ACTIVE_IN_MASK = 1,
+       UPCTL0_C_ACTIVE_IN_MAY  = 0,
+       UPCTL0_C_ACTIVE_IN_WILL,
+
+       MSCH1_MAINDDR3_SHIFT    = 4,
+       MSCH1_MAINDDR3_MASK     = 1,
+       MSCH1_MAINDDR3_DDR3     = 1,
+
+       MSCH0_MAINDDR3_SHIFT    = 3,
+       MSCH0_MAINDDR3_MASK     = 1,
+       MSCH0_MAINDDR3_DDR3     = 1,
+
+       MSCH1_MAINPARTIALPOP_SHIFT = 2,
+       MSCH1_MAINPARTIALPOP_MASK = 1,
+
+       MSCH0_MAINPARTIALPOP_SHIFT = 1,
+       MSCH0_MAINPARTIALPOP_MASK = 1,
+};
+
+/* GRF_SOC_CON2 */
+enum {
+       UPCTL1_LPDDR3_ODT_EN_SHIFT = 0xd,
+       UPCTL1_LPDDR3_ODT_EN_MASK = 1,
+       UPCTL1_LPDDR3_ODT_EN_ODT = 1,
+
+       UPCTL1_BST_DIABLE_SHIFT = 0xc,
+       UPCTL1_BST_DIABLE_MASK  = 1,
+       UPCTL1_BST_DIABLE_DISABLE = 1,
+
+       LPDDR3_EN1_SHIFT        = 0xb,
+       LPDDR3_EN1_MASK         = 1,
+       LPDDR3_EN1_LPDDR3       = 1,
+
+       UPCTL0_LPDDR3_ODT_EN_SHIFT = 0xa,
+       UPCTL0_LPDDR3_ODT_EN_MASK = 1,
+       UPCTL0_LPDDR3_ODT_EN_ODT_ENABLE = 1,
+
+       UPCTL0_BST_DIABLE_SHIFT = 9,
+       UPCTL0_BST_DIABLE_MASK  = 1,
+       UPCTL0_BST_DIABLE_DISABLE = 1,
+
+       LPDDR3_EN0_SHIFT        = 8,
+       LPDDR3_EN0_MASK         = 1,
+       LPDDR3_EN0_LPDDR3       = 1,
+
+       GRF_POC_FLASH0_CTRL_SHIFT = 7,
+       GRF_POC_FLASH0_CTRL_MASK = 1,
+       GRF_POC_FLASH0_CTRL_GPIO3C_3 = 0,
+       GRF_POC_FLASH0_CTRL_GRF_IO_VSEL,
+
+       SIMCARD_MUX_SHIFT       = 6,
+       SIMCARD_MUX_MASK        = 1,
+       SIMCARD_MUX_USE_A       = 1,
+       SIMCARD_MUX_USE_B       = 0,
+
+       GRF_SPDIF_2CH_EN_SHIFT  = 1,
+       GRF_SPDIF_2CH_EN_MASK   = 1,
+       GRF_SPDIF_2CH_EN_8CH    = 0,
+       GRF_SPDIF_2CH_EN_2CH,
+
+       PWM_SHIFT               = 0,
+       PWM_MASK                = 1,
+       PWM_RK                  = 1,
+       PWM_PWM                 = 0,
+};
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/hardware.h b/arch/arm/include/asm/arch-rockchip/hardware.h
new file mode 100644 (file)
index 0000000..d5af5b8
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_ARCH_HARDWARE_H
+#define _ASM_ARCH_HARDWARE_H
+
+#define RK_CLRSETBITS(clr, set)                ((((clr) | (set)) << 16) | set)
+#define RK_SETBITS(set)                        RK_CLRSETBITS(0, set)
+#define RK_CLRBITS(clr)                        RK_CLRSETBITS(clr, 0)
+
+#define TIMER7_BASE            0xff810020
+
+#define rk_clrsetreg(addr, clr, set)   writel((clr) << 16 | (set), addr)
+#define rk_clrreg(addr, clr)           writel((clr) << 16, addr)
+#define rk_setreg(addr, set)           writel(set, addr)
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/i2c.h b/arch/arm/include/asm/arch-rockchip/i2c.h
new file mode 100644 (file)
index 0000000..d81f8ff
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * (C) Copyright 2012 SAMSUNG Electronics
+ * Jaehoon Chung <jh80.chung@samsung.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_I2C_H
+#define __ASM_ARCH_I2C_H
+
+struct i2c_regs {
+       u32 con;
+       u32 clkdiv;
+       u32 mrxaddr;
+       u32 mrxraddr;
+       u32 mtxcnt;
+       u32 mrxcnt;
+       u32 ien;
+       u32 ipd;
+       u32 fcnt;
+       u32 reserved0[0x37];
+       u32 txdata[8];
+       u32 reserved1[0x38];
+       u32 rxdata[8];
+};
+
+/* Control register */
+#define I2C_CON_EN             (1 << 0)
+#define I2C_CON_MOD(mod)       ((mod) << 1)
+#define I2C_MODE_TX            0x00
+#define I2C_MODE_TRX           0x01
+#define I2C_MODE_RX            0x02
+#define I2C_MODE_RRX           0x03
+#define I2C_CON_MASK           (3 << 1)
+
+#define I2C_CON_START          (1 << 3)
+#define I2C_CON_STOP           (1 << 4)
+#define I2C_CON_LASTACK                (1 << 5)
+#define I2C_CON_ACTACK         (1 << 6)
+
+/* Clock dividor register */
+#define I2C_CLKDIV_VAL(divl, divh) \
+       (((divl) & 0xffff) | (((divh) << 16) & 0xffff0000))
+
+/* the slave address accessed  for master rx mode */
+#define I2C_MRXADDR_SET(vld, addr)     (((vld) << 24) | (addr))
+
+/* the slave register address accessed  for master rx mode */
+#define I2C_MRXRADDR_SET(vld, raddr)   (((vld) << 24) | (raddr))
+
+/* interrupt enable register */
+#define I2C_BTFIEN             (1 << 0)
+#define I2C_BRFIEN             (1 << 1)
+#define I2C_MBTFIEN            (1 << 2)
+#define I2C_MBRFIEN            (1 << 3)
+#define I2C_STARTIEN           (1 << 4)
+#define I2C_STOPIEN            (1 << 5)
+#define I2C_NAKRCVIEN          (1 << 6)
+
+/* interrupt pending register */
+#define I2C_BTFIPD              (1 << 0)
+#define I2C_BRFIPD              (1 << 1)
+#define I2C_MBTFIPD             (1 << 2)
+#define I2C_MBRFIPD             (1 << 3)
+#define I2C_STARTIPD            (1 << 4)
+#define I2C_STOPIPD             (1 << 5)
+#define I2C_NAKRCVIPD           (1 << 6)
+#define I2C_IPD_ALL_CLEAN       0x7f
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/periph.h b/arch/arm/include/asm/arch-rockchip/periph.h
new file mode 100644 (file)
index 0000000..fa6069b
--- /dev/null
@@ -0,0 +1,54 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_ARCH_PERIPH_H
+#define _ASM_ARCH_PERIPH_H
+
+/*
+ * The peripherals supported by the hardware. This is used to specify clocks
+ * and pinctrl settings. Some SoCs will not support all of these, but it
+ * provides a common reference for common drivers to use.
+ */
+enum periph_id {
+       PERIPH_ID_PWM0,
+       PERIPH_ID_PWM1,
+       PERIPH_ID_PWM2,
+       PERIPH_ID_PWM3,
+       PERIPH_ID_PWM4,
+       PERIPH_ID_I2C0,
+       PERIPH_ID_I2C1,
+       PERIPH_ID_I2C2,
+       PERIPH_ID_I2C3,
+       PERIPH_ID_I2C4,
+       PERIPH_ID_I2C5,
+       PERIPH_ID_SPI0,
+       PERIPH_ID_SPI1,
+       PERIPH_ID_SPI2,
+       PERIPH_ID_UART0,
+       PERIPH_ID_UART1,
+       PERIPH_ID_UART2,
+       PERIPH_ID_UART3,
+       PERIPH_ID_UART4,
+       PERIPH_ID_LCDC0,
+       PERIPH_ID_LCDC1,
+       PERIPH_ID_SDMMC0,
+       PERIPH_ID_SDMMC1,
+       PERIPH_ID_SDMMC2,
+       PERIPH_ID_HDMI,
+
+       PERIPH_ID_COUNT,
+
+       /* Some aliases */
+       PERIPH_ID_EMMC = PERIPH_ID_SDMMC0,
+       PERIPH_ID_SDCARD = PERIPH_ID_SDMMC1,
+       PERIPH_ID_UART_BT = PERIPH_ID_UART0,
+       PERIPH_ID_UART_BB = PERIPH_ID_UART1,
+       PERIPH_ID_UART_DBG = PERIPH_ID_UART2,
+       PERIPH_ID_UART_GPS = PERIPH_ID_UART3,
+       PERIPH_ID_UART_EXP = PERIPH_ID_UART4,
+};
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/pmu_rk3288.h b/arch/arm/include/asm/arch-rockchip/pmu_rk3288.h
new file mode 100644 (file)
index 0000000..12fa685
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ *
+ * Copyright 2014 Rockchip Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_ARCH_PMU_RK3288_H
+#define _ASM_ARCH_PMU_RK3288_H
+
+struct rk3288_pmu {
+       u32 wakeup_cfg[2];
+       u32 pwrdn_con;
+       u32 pwrdn_st;
+
+       u32 idle_req;
+       u32 idle_st;
+       u32 pwrmode_con;
+       u32 pwr_state;
+
+       u32 osc_cnt;
+       u32 pll_cnt;
+       u32 stabl_cnt;
+       u32 ddr0io_pwron_cnt;
+
+       u32 ddr1io_pwron_cnt;
+       u32 core_pwrdn_cnt;
+       u32 core_pwrup_cnt;
+       u32 gpu_pwrdn_cnt;
+
+       u32 gpu_pwrup_cnt;
+       u32 wakeup_rst_clr_cnt;
+       u32 sft_con;
+       u32 ddr_sref_st;
+
+       u32 int_con;
+       u32 int_st;
+       u32 boot_addr_sel;
+       u32 grf_con;
+
+       u32 gpio_sr;
+       u32 gpio0pull[3];
+
+       u32 gpio0drv[3];
+       u32 gpio_op;
+
+       u32 gpio0_sel18;        /* 0x80 */
+       u32 gpio0a_iomux;
+       u32 gpio0b_iomux;
+       u32 gpio0c_iomux;
+       u32 gpio0d_iomux;
+       u32 sys_reg[4];
+};
+check_member(rk3288_pmu, sys_reg[3], 0x00a0);
+
+/* PMU_GPIO0_B_IOMUX */
+enum {
+       GPIO0_B7_SHIFT          = 14,
+       GPIO0_B7_MASK           = 1,
+       GPIO0_B7_GPIOB7         = 0,
+       GPIO0_B7_I2C0PMU_SDA,
+
+       GPIO0_B5_SHIFT          = 10,
+       GPIO0_B5_MASK           = 1,
+       GPIO0_B5_GPIOB5         = 0,
+       GPIO0_B5_CLK_27M,
+
+       GPIO0_B2_SHIFT          = 4,
+       GPIO0_B2_MASK           = 1,
+       GPIO0_B2_GPIOB2         = 0,
+       GPIO0_B2_TSADC_INT,
+};
+
+/* PMU_GPIO0_C_IOMUX */
+enum {
+       GPIO0_C1_SHIFT          = 2,
+       GPIO0_C1_MASK           = 3,
+       GPIO0_C1_GPIOC1         = 0,
+       GPIO0_C1_TEST_CLKOUT,
+       GPIO0_C1_CLKT1_27M,
+
+       GPIO0_C0_SHIFT          = 0,
+       GPIO0_C0_MASK           = 1,
+       GPIO0_C0_GPIOC0         = 0,
+       GPIO0_C0_I2C0PMU_SCL,
+};
+
+#endif
diff --git a/arch/arm/include/asm/arch-rockchip/sdram.h b/arch/arm/include/asm/arch-rockchip/sdram.h
new file mode 100644 (file)
index 0000000..d3de42d
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ *
+ * Copyright 2014 Rockchip Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _ASM_ARCH_RK3288_SDRAM_H__
+#define _ASM_ARCH_RK3288_SDRAM_H__
+
+enum {
+       DDR3 = 3,
+       LPDDR3 = 6,
+       UNUSED = 0xFF,
+};
+
+struct rk3288_sdram_channel {
+       u8 rank;
+       u8 col;
+       u8 bk;
+       u8 bw;
+       u8 dbw;
+       u8 row_3_4;
+       u8 cs0_row;
+       u8 cs1_row;
+};
+
+struct rk3288_sdram_pctl_timing {
+       u32 togcnt1u;
+       u32 tinit;
+       u32 trsth;
+       u32 togcnt100n;
+       u32 trefi;
+       u32 tmrd;
+       u32 trfc;
+       u32 trp;
+       u32 trtw;
+       u32 tal;
+       u32 tcl;
+       u32 tcwl;
+       u32 tras;
+       u32 trc;
+       u32 trcd;
+       u32 trrd;
+       u32 trtp;
+       u32 twr;
+       u32 twtr;
+       u32 texsr;
+       u32 txp;
+       u32 txpdll;
+       u32 tzqcs;
+       u32 tzqcsi;
+       u32 tdqs;
+       u32 tcksre;
+       u32 tcksrx;
+       u32 tcke;
+       u32 tmod;
+       u32 trstl;
+       u32 tzqcl;
+       u32 tmrr;
+       u32 tckesr;
+       u32 tdpd;
+};
+check_member(rk3288_sdram_pctl_timing, tdpd, 0x144 - 0xc0);
+
+struct rk3288_sdram_phy_timing {
+       u32 dtpr0;
+       u32 dtpr1;
+       u32 dtpr2;
+       u32 mr[4];
+};
+
+struct rk3288_base_params {
+       u32 noc_timing;
+       u32 noc_activate;
+       u32 ddrconfig;
+       u32 ddr_freq;
+       u32 dramtype;
+       u32 stride;
+       u32 odt;
+};
+
+struct rk3288_sdram_params {
+       struct rk3288_sdram_channel ch[2];
+       struct rk3288_sdram_pctl_timing pctl_timing;
+       struct rk3288_sdram_phy_timing phy_timing;
+       struct rk3288_base_params base;
+       int num_channels;
+};
+
+#endif
index b55026ecdff6424d8927f9dc6fdb5be65b07ae12..6f2e19ed6198ef132f1d8b3437f25354eeb85856 100644 (file)
@@ -253,5 +253,6 @@ struct misc_regs {
 #define SOC_SPEAR320           203
 
 extern int get_socrev(void);
+int fsmc_nand_switch_ecc(uint32_t eccstrength);
 
 #endif
diff --git a/arch/arm/include/asm/arch-sunxi/tzpc.h b/arch/arm/include/asm/arch-sunxi/tzpc.h
new file mode 100644 (file)
index 0000000..ba4d43b
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * (C) Copyright 2015 Chen-Yu Tsai <wens@csie.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SUNXI_TZPC_H
+#define _SUNXI_TZPC_H
+
+#ifndef __ASSEMBLY__
+struct sunxi_tzpc {
+       u32 r0size;             /* 0x00 Size of secure RAM region */
+       u32 decport0_status;    /* 0x04 Status of decode protection port 0 */
+       u32 decport0_set;       /* 0x08 Set decode protection port 0 */
+       u32 decport0_clear;     /* 0x0c Clear decode protection port 0 */
+};
+#endif
+
+#define SUNXI_TZPC_DECPORT0_RTC        (1 << 1)
+
+void tzpc_init(void);
+
+#endif /* _SUNXI_TZPC_H */
index 6ffb4683959e92d206fe9f4600d496595a3d7330..3a87f0b9566a227a0e0da920aa2e77f55b13d5e6 100644 (file)
@@ -364,8 +364,6 @@ struct dc_ctlr {
        struct dc_winbuf_reg winbuf;    /* WINBUF A/B/C 0x800 ~ 0x80d */
 };
 
-#define BIT(pos)       (1U << pos)
-
 /* DC_CMD_DISPLAY_COMMAND 0x032 */
 #define CTRL_MODE_SHIFT                5
 #define CTRL_MODE_MASK         (0x3 << CTRL_MODE_SHIFT)
index 04fa0be64ca346510958adeac33c7af21d59d1ab..0c928d40e7ebe6e35a2a51f3745dd923fbe3e4b4 100644 (file)
@@ -65,6 +65,7 @@
 /*
  * Section
  */
+#define PMD_SECT_NON_SHARE     (0 << 8)
 #define PMD_SECT_OUTER_SHARE   (2 << 8)
 #define PMD_SECT_INNER_SHARE   (3 << 8)
 #define PMD_SECT_AF            (1 << 10)
                                TCR_T0SZ(VA_BITS))
 
 #ifndef __ASSEMBLY__
+
 void set_pgtable_section(u64 *page_table, u64 index,
-                        u64 section, u64 memory_type);
+                        u64 section, u64 memory_type,
+                        u64 share);
+void set_pgtable_table(u64 *page_table, u64 index,
+                      u64 *table_addr);
+
 static inline void set_ttbr_tcr_mair(int el, u64 table, u64 tcr, u64 attr)
 {
        asm volatile("dsb sy");
index f097c81a921baf87600ef9b59d363a853e2df1bb..f2d4c3c5f99baa93b5e7e3a5832f8da9417bc4df 100644 (file)
@@ -8,6 +8,28 @@
 #define __FSL_SECURE_BOOT_H
 
 #ifdef CONFIG_SECURE_BOOT
+#define CONFIG_CMD_ESBC_VALIDATE
+#define CONFIG_FSL_SEC_MON
+#define CONFIG_SHA_PROG_HW_ACCEL
+#define CONFIG_DM
+#define CONFIG_RSA
+#define CONFIG_RSA_FREESCALE_EXP
+#ifndef CONFIG_FSL_CAAM
+#define CONFIG_FSL_CAAM
+#endif
+
+#define CONFIG_KEY_REVOCATION
+#ifndef CONFIG_SYS_RAMBOOT
+/* The key used for verification of next level images
+ * is picked up from an Extension Table which has
+ * been verified by the ISBC (Internal Secure boot Code)
+ * in boot ROM of the SoC.
+ * The feature is only applicable in case of NOR boot and is
+ * not applicable in case of RAMBOOT (NAND, SD, SPI).
+ */
+#define CONFIG_FSL_ISBC_KEY_EXT
+#endif
+
 #ifndef CONFIG_FIT_SIGNATURE
 
 #define CONFIG_EXTRA_ENV \
index de0205c115554a8015547a94745a8bf6fded0248..a8239f2f7a51c78ca8240d6883fca04b61c807d1 100644 (file)
@@ -9,6 +9,27 @@
 #define MAKE_CFGVAL(cfg1, cfg2, cfg3, cfg4) \
        ((cfg4) << 24) | ((cfg3) << 16) | ((cfg2) << 8) | (cfg1)
 
+enum boot_device {
+       WEIM_NOR_BOOT,
+       ONE_NAND_BOOT,
+       PATA_BOOT,
+       SATA_BOOT,
+       I2C_BOOT,
+       SPI_NOR_BOOT,
+       SD1_BOOT,
+       SD2_BOOT,
+       SD3_BOOT,
+       SD4_BOOT,
+       MMC1_BOOT,
+       MMC2_BOOT,
+       MMC3_BOOT,
+       MMC4_BOOT,
+       NAND_BOOT,
+       QSPI_BOOT,
+       UNKNOWN_BOOT,
+       BOOT_DEV_NUM = UNKNOWN_BOOT,
+};
+
 struct boot_mode {
        const char *name;
        unsigned cfg_val;
index 42098a3f49bcfbccc1f218848520808e15987a0c..1a80a962c7c79e721a312f492261c0f574b47306 100644 (file)
@@ -85,6 +85,36 @@ typedef u64 iomux_v3_cfg_t;
 
 #define NO_PAD_CTRL            (1 << 17)
 
+#ifdef CONFIG_MX7
+
+#define IOMUX_LPSR_SEL_INPUT_OFS 0x70000
+#define IOMUX_CONFIG_LPSR       0x8
+#define MUX_MODE_LPSR           ((iomux_v3_cfg_t)IOMUX_CONFIG_LPSR << \
+                               MUX_MODE_SHIFT)
+
+#define PAD_CTL_DSE_1P8V_140OHM   (0x0<<0)
+#define PAD_CTL_DSE_1P8V_35OHM    (0x1<<0)
+#define PAD_CTL_DSE_1P8V_70OHM    (0x2<<0)
+#define PAD_CTL_DSE_1P8V_23OHM    (0x3<<0)
+
+#define PAD_CTL_DSE_3P3V_196OHM   (0x0<<0)
+#define PAD_CTL_DSE_3P3V_49OHM    (0x1<<0)
+#define PAD_CTL_DSE_3P3V_98OHM    (0x2<<0)
+#define PAD_CTL_DSE_3P3V_32OHM    (0x3<<0)
+
+#define PAD_CTL_SRE_FAST     (0 << 2)
+#define PAD_CTL_SRE_SLOW     (0x1 << 2)
+
+#define PAD_CTL_HYS       (0x1 << 3)
+#define PAD_CTL_PUE       (0x1 << 4)
+
+#define PAD_CTL_PUS_PD100KOHM  ((0x0 << 5) | PAD_CTL_PUE)
+#define PAD_CTL_PUS_PU5KOHM    ((0x1 << 5) | PAD_CTL_PUE)
+#define PAD_CTL_PUS_PU47KOHM   ((0x2 << 5) | PAD_CTL_PUE)
+#define PAD_CTL_PUS_PU100KOHM  ((0x3 << 5) | PAD_CTL_PUE)
+
+#else
+
 #ifdef CONFIG_MX6
 
 #define PAD_CTL_HYS            (1 << 16)
@@ -173,6 +203,8 @@ typedef u64 iomux_v3_cfg_t;
 #define PAD_CTL_SRE_SLOW       (0 << 0)
 #define PAD_CTL_SRE_FAST       (1 << 0)
 
+#endif
+
 #define IOMUX_CONFIG_SION      0x10
 
 #define GPIO_PIN_MASK          0x1f
diff --git a/arch/arm/include/asm/imx-common/sys_proto.h b/arch/arm/include/asm/imx-common/sys_proto.h
new file mode 100644 (file)
index 0000000..5673fb4
--- /dev/null
@@ -0,0 +1,53 @@
+/*
+ * (C) Copyright 2009
+ * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _SYS_PROTO_H_
+#define _SYS_PROTO_H_
+
+#include <asm/imx-common/regs-common.h>
+#include <common.h>
+#include "../arch-imx/cpu.h"
+
+#define soc_rev() (get_cpu_rev() & 0xFF)
+#define is_soc_rev(rev) (soc_rev() == rev)
+
+/* returns MXC_CPU_ value */
+#define cpu_type(rev) (((rev) >> 12) & 0xff)
+#define soc_type(rev) (((rev) >> 12) & 0xf0)
+/* both macros return/take MXC_CPU_ constants */
+#define get_cpu_type() (cpu_type(get_cpu_rev()))
+#define get_soc_type() (soc_type(get_cpu_rev()))
+#define is_cpu_type(cpu) (get_cpu_type() == cpu)
+#define is_soc_type(soc) (get_soc_type() == soc)
+
+#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
+
+u32 get_nr_cpus(void);
+u32 get_cpu_rev(void);
+u32 get_cpu_speed_grade_hz(void);
+u32 get_cpu_temp_grade(int *minc, int *maxc);
+const char *get_imx_type(u32 imxtype);
+u32 imx_ddr_size(void);
+void sdelay(unsigned long);
+void set_chipselect_size(int const);
+
+void init_aips(void);
+void init_src(void);
+void imx_set_wdog_powerdown(bool enable);
+
+/*
+ * Initializes on-chip ethernet controllers.
+ * to override, implement board_eth_init()
+ */
+int fecmxc_initialize(bd_t *bis);
+u32 get_ahb_clk(void);
+u32 get_periph_clk(void);
+
+int mxs_reset_block(struct mxs_register_32 *reg);
+int mxs_wait_mask_set(struct mxs_register_32 *reg, u32 mask, u32 timeout);
+int mxs_wait_mask_clr(struct mxs_register_32 *reg, u32 mask, u32 timeout);
+#endif
diff --git a/arch/arm/include/asm/imx-common/syscounter.h b/arch/arm/include/asm/imx-common/syscounter.h
new file mode 100644 (file)
index 0000000..bdbe26c
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_ARCH_SYSTEM_COUNTER_H
+#define _ASM_ARCH_SYSTEM_COUNTER_H
+
+/* System Counter */
+struct sctr_regs {
+       u32 cntcr;
+       u32 cntsr;
+       u32 cntcv1;
+       u32 cntcv2;
+       u32 resv1[4];
+       u32 cntfid0;
+       u32 cntfid1;
+       u32 cntfid2;
+       u32 resv2[1001];
+       u32 counterid[1];
+};
+
+#define SC_CNTCR_ENABLE                (1 << 0)
+#define SC_CNTCR_HDBG          (1 << 1)
+#define SC_CNTCR_FREQ0         (1 << 8)
+#define SC_CNTCR_FREQ1         (1 << 9)
+
+#endif
index e72184bd948950d649822e6109d6dd55994aca6d..d51be0b1d2f840cc20663f07ab932f085d1f6bc9 100644 (file)
@@ -150,7 +150,6 @@ extern unsigned int __machine_arch_type;
 #define MACH_TYPE_INTELMOTE2           775
 #define MACH_TYPE_TRIZEPS4             776
 #define MACH_TYPE_PNX4008              782
-#define MACH_TYPE_CPUAT91              787
 #define MACH_TYPE_IQ81340SC            799
 #define MACH_TYPE_IQ81340MC            801
 #define MACH_TYPE_MICRO9               811
@@ -197,7 +196,6 @@ extern unsigned int __machine_arch_type;
 #define MACH_TYPE_SMDK2412             1009
 #define MACH_TYPE_SMDK2413             1022
 #define MACH_TYPE_AML_M5900            1024
-#define MACH_TYPE_BALLOON3             1029
 #define MACH_TYPE_ECBAT91              1072
 #define MACH_TYPE_ONEARM               1075
 #define MACH_TYPE_SMDK2443             1084
@@ -404,7 +402,6 @@ extern unsigned int __machine_arch_type;
 #define MACH_TYPE_IGEP0020             2344
 #define MACH_TYPE_NUC932EVB            2356
 #define MACH_TYPE_OPENRD_CLIENT        2361
-#define MACH_TYPE_U8500                2368
 #define MACH_TYPE_MX51_EFIKASB         2370
 #define MACH_TYPE_MARVELL_JASPER       2382
 #define MACH_TYPE_FLINT                2383
@@ -976,7 +973,6 @@ extern unsigned int __machine_arch_type;
 #define MACH_TYPE_RHINO                3360
 #define MACH_TYPE_ARMLEX4210           3361
 #define MACH_TYPE_SWARCOEXTMODEM       3362
-#define MACH_TYPE_SNOWBALL             3363
 #define MACH_TYPE_PCM049               3364
 #define MACH_TYPE_VIGOR                3365
 #define MACH_TYPE_OSLO_AMUNDSEN        3366
@@ -2768,18 +2764,6 @@ extern unsigned int __machine_arch_type;
 # define machine_is_pnx4008()  (0)
 #endif
 
-#ifdef CONFIG_MACH_CPUAT91
-# ifdef machine_arch_type
-#  undef machine_arch_type
-#  define machine_arch_type    __machine_arch_type
-# else
-#  define machine_arch_type    MACH_TYPE_CPUAT91
-# endif
-# define machine_is_cpuat91()  (machine_arch_type == MACH_TYPE_CPUAT91)
-#else
-# define machine_is_cpuat91()  (0)
-#endif
-
 #ifdef CONFIG_MACH_IQ81340SC
 # ifdef machine_arch_type
 #  undef machine_arch_type
@@ -3332,18 +3316,6 @@ extern unsigned int __machine_arch_type;
 # define machine_is_aml_m5900()        (0)
 #endif
 
-#ifdef CONFIG_MACH_BALLOON3
-# ifdef machine_arch_type
-#  undef machine_arch_type
-#  define machine_arch_type    __machine_arch_type
-# else
-#  define machine_arch_type    MACH_TYPE_BALLOON3
-# endif
-# define machine_is_balloon3() (machine_arch_type == MACH_TYPE_BALLOON3)
-#else
-# define machine_is_balloon3() (0)
-#endif
-
 #ifdef CONFIG_MACH_ECBAT91
 # ifdef machine_arch_type
 #  undef machine_arch_type
@@ -5048,30 +5020,6 @@ extern unsigned int __machine_arch_type;
 # define machine_is_omap_zoom2()       (0)
 #endif
 
-#ifdef CONFIG_MACH_CPUAT9260
-# ifdef machine_arch_type
-#  undef machine_arch_type
-#  define machine_arch_type    __machine_arch_type
-# else
-#  define machine_arch_type    MACH_TYPE_CPUAT9260
-# endif
-# define machine_is_cpuat9260()        (machine_arch_type == MACH_TYPE_CPUAT9260)
-#else
-# define machine_is_cpuat9260()        (0)
-#endif
-
-#ifdef CONFIG_MACH_EUKREA_CPUIMX27
-# ifdef machine_arch_type
-#  undef machine_arch_type
-#  define machine_arch_type    __machine_arch_type
-# else
-#  define machine_arch_type    MACH_TYPE_EUKREA_CPUIMX27
-# endif
-# define machine_is_eukrea_cpuimx27()  (machine_arch_type == MACH_TYPE_EUKREA_CPUIMX27)
-#else
-# define machine_is_eukrea_cpuimx27()  (0)
-#endif
-
 #ifdef CONFIG_MACH_ACS5K
 # ifdef machine_arch_type
 #  undef machine_arch_type
@@ -5804,18 +5752,6 @@ extern unsigned int __machine_arch_type;
 # define machine_is_openrd_client()    (0)
 #endif
 
-#ifdef CONFIG_MACH_U8500
-# ifdef machine_arch_type
-#  undef machine_arch_type
-#  define machine_arch_type    __machine_arch_type
-# else
-#  define machine_arch_type    MACH_TYPE_U8500
-# endif
-# define machine_is_u8500()    (machine_arch_type == MACH_TYPE_U8500)
-#else
-# define machine_is_u8500()    (0)
-#endif
-
 #ifdef CONFIG_MACH_MX51_EFIKASB
 # ifdef machine_arch_type
 #  undef machine_arch_type
@@ -12668,18 +12604,6 @@ extern unsigned int __machine_arch_type;
 # define machine_is_swarcoextmodem()   (0)
 #endif
 
-#ifdef CONFIG_MACH_SNOWBALL
-# ifdef machine_arch_type
-#  undef machine_arch_type
-#  define machine_arch_type    __machine_arch_type
-# else
-#  define machine_arch_type    MACH_TYPE_SNOWBALL
-# endif
-# define machine_is_snowball() (machine_arch_type == MACH_TYPE_SNOWBALL)
-#else
-# define machine_is_snowball() (0)
-#endif
-
 #ifdef CONFIG_MACH_PCM049
 # ifdef machine_arch_type
 #  undef machine_arch_type
index 31a5c8d77f52ad844ed4fc53becaead8c181261f..f7171035265eafb135f70ce21f1bd69dd8f1b961 100644 (file)
@@ -42,12 +42,15 @@ obj-y       += stack.o
 ifdef CONFIG_CPU_V7M
 obj-y  += interrupts_m.o
 else ifdef CONFIG_ARM64
+obj-y  += ccn504.o
 obj-y  += gic_64.o
 obj-y  += interrupts_64.o
 else
 obj-y  += interrupts.o
 endif
+ifndef CONFIG_RESET
 obj-y  += reset.o
+endif
 
 obj-y  += cache.o
 ifndef CONFIG_ARM64
diff --git a/arch/arm/lib/ccn504.S b/arch/arm/lib/ccn504.S
new file mode 100644 (file)
index 0000000..7570c7b
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * (C) Copyright 2015 Freescale Semiconductor
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * Extracted from gic_64.S
+ */
+
+#include <config.h>
+#include <linux/linkage.h>
+#include <asm/macro.h>
+
+/*************************************************************************
+ *
+ * void ccn504_add_masters_to_dvm(CCI_MN_BASE, CCI_MN_RNF_NODEID_LIST,
+ *                               CCI_MN_DVM_DOMAIN_CTL_SET);
+ *
+ * Add fully-coherent masters to DVM domain
+ *
+ *************************************************************************/
+ENTRY(ccn504_add_masters_to_dvm)
+       /*
+        * x0: CCI_MN_BASE
+        * x1: CCI_MN_RNF_NODEID_LIST
+        * x2: CCI_MN_DVM_DOMAIN_CTL_SET
+        */
+
+       /* Add fully-coherent masters to DVM domain */
+       ldr     x9, [x0, x1]
+       str     x9, [x0, x2]
+1:     ldr     x10, [x0, x2]
+       mvn     x11, x10
+       tst     x11, x10 /* Wait for domain addition to complete */
+       b.ne    1b
+
+       ret
+ENDPROC(ccn504_add_masters_to_dvm)
+
+/*************************************************************************
+ *
+ * void ccn504_set_qos(CCI_Sx_QOS_CONTROL_BASE, QoS Value);
+ *
+ * Initialize QoS settings for AR/AW override.
+ * Right now, this function sets the same QoS value for all RN-I ports
+ *
+ *************************************************************************/
+ENTRY(ccn504_set_qos)
+       /*
+        * x0: CCI_Sx_QOS_CONTROL_BASE
+        * x1: QoS Value
+        */
+
+       /* Set all RN-I ports to QoS value denoted by x1 */
+       ldr     x9, [x0]
+       mov     x10, x1
+       orr     x9, x9, x10
+       str     x9, [x0]
+
+       ret
+ENDPROC(ccn504_set_qos)
+
index f9f148d496332495e64b31435d7d5c5cc194a4aa..fdaf3287220662e1da8170adeeed48d83def8cf7 100644 (file)
@@ -8,14 +8,6 @@ config TARGET_AT91RM9200EK
        bool "Atmel AT91RM9200 evaluation kit"
        select CPU_ARM920T
 
-config TARGET_EB_CPUX9K2
-       bool "Support eb_cpux9k2"
-       select CPU_ARM920T
-
-config TARGET_CPUAT91
-       bool "Support cpuat91"
-       select CPU_ARM920T
-
 config TARGET_AT91SAM9260EK
        bool "Atmel at91sam9260 reference board"
        select CPU_ARM926EJS
@@ -51,10 +43,6 @@ config TARGET_PM9263
        bool "Ronetix pm9263 board"
        select CPU_ARM926EJS
 
-config TARGET_STAMP9G20
-       bool "Support stamp9g20"
-       select CPU_ARM926EJS
-
 config TARGET_AT91SAM9M10G45EK
        bool "Atmel AT91SAM9M10G45-EK board"
        select CPU_ARM926EJS
@@ -103,22 +91,10 @@ config TARGET_SAMA5D4EK
        select CPU_V7
        select SUPPORT_SPL
 
-config TARGET_VL_MA2SC
-       bool "Support vl_ma2sc"
-       select CPU_ARM926EJS
-
 config TARGET_MEESC
        bool "Support meesc"
        select CPU_ARM926EJS
 
-config TARGET_OTC570
-       bool "Support otc570"
-       select CPU_ARM926EJS
-
-config TARGET_CPU9260
-       bool "Support cpu9260"
-       select CPU_ARM926EJS
-
 config TARGET_CORVUS
        bool "Support corvus"
        select CPU_ARM926EJS
@@ -151,15 +127,10 @@ source "board/atmel/sama5d3_xplained/Kconfig"
 source "board/atmel/sama5d3xek/Kconfig"
 source "board/atmel/sama5d4_xplained/Kconfig"
 source "board/atmel/sama5d4ek/Kconfig"
-source "board/BuS/eb_cpux9k2/Kconfig"
-source "board/eukrea/cpuat91/Kconfig"
 source "board/bluewater/snapper9260/Kconfig"
-source "board/BuS/vl_ma2sc/Kconfig"
 source "board/calao/usb_a9263/Kconfig"
 source "board/egnite/ethernut5/Kconfig"
 source "board/esd/meesc/Kconfig"
-source "board/esd/otc570/Kconfig"
-source "board/eukrea/cpu9260/Kconfig"
 source "board/mini-box/picosam9g45/Kconfig"
 source "board/ronetix/pm9261/Kconfig"
 source "board/ronetix/pm9263/Kconfig"
@@ -167,6 +138,5 @@ source "board/ronetix/pm9g45/Kconfig"
 source "board/siemens/corvus/Kconfig"
 source "board/siemens/taurus/Kconfig"
 source "board/siemens/smartweb/Kconfig"
-source "board/taskit/stamp9g20/Kconfig"
 
 endif
index 681270ddd2e3c176e89b9ceff72772bad8086255..8079fabd6f3d3ffdd1eca2e332aa5d46874437fc 100644 (file)
@@ -4,9 +4,6 @@ choice
        prompt "DaVinci board select"
        optional
 
-config TARGET_ENBW_CMC
-       bool "EnBW CMC board"
-
 config TARGET_IPAM390
        bool "IPAM390 board"
        select SUPPORT_SPL
@@ -18,36 +15,12 @@ config TARGET_DA850EVM
        bool "DA850 EVM board"
        select SUPPORT_SPL
 
-config TARGET_OMAPL138_LCDK
-       bool "OMAPL138 LCDK"
-       select SUPPORT_SPL
-
-config TARGET_DAVINCI_DM355EVM
-       bool "DM355 EVM board"
-
-config TARGET_DAVINCI_DM355LEOPARD
-       bool "DM355 Leopard board"
-
-config TARGET_DAVINCI_DM365EVM
-       bool "DM365 EVM board"
-
-config TARGET_DAVINCI_DM6467EVM
-       bool "DM6467 EVM board"
-
-config TARGET_DAVINCI_DVEVM
-       bool "DVEVM board"
-
 config TARGET_EA20
        bool "EA20 board"
 
-config TARGET_DAVINCI_SCHMOOGIE
-       bool "Schmoogie board"
-
-config TARGET_DAVINCI_SFFSDR
-       bool "SFFSDR board"
-
-config TARGET_DAVINCI_SONATA
-       bool "Sonata board"
+config TARGET_OMAPL138_LCDK
+       bool "OMAPL138 LCDK"
+       select SUPPORT_SPL
 
 config TARGET_CALIMAIN
        bool "Calimain board"
@@ -57,18 +30,9 @@ endchoice
 config SYS_SOC
        default "davinci"
 
-source "board/enbw/enbw_cmc/Kconfig"
 source "board/Barix/ipam390/Kconfig"
 source "board/davinci/da8xxevm/Kconfig"
-source "board/davinci/dm355evm/Kconfig"
-source "board/davinci/dm355leopard/Kconfig"
-source "board/davinci/dm365evm/Kconfig"
-source "board/davinci/dm6467evm/Kconfig"
-source "board/davinci/dvevm/Kconfig"
 source "board/davinci/ea20/Kconfig"
-source "board/davinci/schmoogie/Kconfig"
-source "board/davinci/sffsdr/Kconfig"
-source "board/davinci/sonata/Kconfig"
 source "board/omicron/calimain/Kconfig"
 
 endif
index ff6114775728cfd5f2a066765de73186c27bed0b..74c3d5d936c2a7c83cc643239120d9ce010ce684 100644 (file)
@@ -28,8 +28,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #define PLLC_PLLDIV8   0x170
 #define PLLC_PLLDIV9   0x174
 
-#define BIT(x)         (1 << (x))
-
 /* SOC-specific pll info */
 #ifdef CONFIG_SOC_DM355
 #define ARM_PLLDIV     PLLC_PLLDIV1
index 8ad371f43d27c18752419d8ffce86846d4c2b51b..f8d61d6ef1f2f82f20527ad5976e4786c94e1e73 100644 (file)
@@ -11,8 +11,6 @@
 
 #include <asm/arch/hardware.h>
 
-#define BIT(x)                 (1 << (x))
-
 /* PLL Control Registers */
 struct pllctl_regs {
        u32     ctl;            /* 00 */
index 53f28ec8daf1712e37497ba55f3b6141bc917da7..f98a24eb5738cdd7cd76e27239ccadfbe370e0ec 100644 (file)
@@ -24,8 +24,6 @@ typedef volatile unsigned int   *dv_reg_p;
 
 #endif
 
-#define                BIT(x)  (1 << (x))
-
 #define KS2_DDRPHY_PIR_OFFSET           0x04
 #define KS2_DDRPHY_PGCR0_OFFSET         0x08
 #define KS2_DDRPHY_PGCR1_OFFSET         0x0C
index 1261885dad775b680a2795336b31d83cf8e29297..c053602a5097f4e623f2f7a679e0c8d9319ac1c1 100644 (file)
@@ -4,15 +4,6 @@ choice
        prompt "Marvell Kirkwood board select"
        optional
 
-config TARGET_OPENRD
-       bool "Marvell OpenRD Board"
-
-config TARGET_MV88F6281GTW_GE
-       bool "MV88f6281GTW_GE Board"
-
-config TARGET_RD6281A
-       bool "RD6281A Board"
-
 config TARGET_DREAMPLUG
        bool "DreamPlug Board"
 
@@ -34,9 +25,6 @@ config TARGET_DNS325
 config TARGET_ICONNECT
        bool "iconnect Board"
 
-config TARGET_TK71
-       bool "TK71 Board"
-
 config TARGET_KM_KIRKWOOD
        bool "KM_KIRKWOOD Board"
 
@@ -66,9 +54,6 @@ endchoice
 config SYS_SOC
        default "kirkwood"
 
-source "board/Marvell/openrd/Kconfig"
-source "board/Marvell/mv88f6281gtw_ge/Kconfig"
-source "board/Marvell/rd6281a/Kconfig"
 source "board/Marvell/dreamplug/Kconfig"
 source "board/Marvell/guruplug/Kconfig"
 source "board/Marvell/sheevaplug/Kconfig"
@@ -76,7 +61,6 @@ source "board/buffalo/lsxl/Kconfig"
 source "board/cloudengines/pogo_e02/Kconfig"
 source "board/d-link/dns325/Kconfig"
 source "board/iomega/iconnect/Kconfig"
-source "board/karo/tk71/Kconfig"
 source "board/keymile/km_arm/Kconfig"
 source "board/LaCie/net2big_v2/Kconfig"
 source "board/LaCie/netspace_v2/Kconfig"
index a8a6b27d802b7c4e4dc9caa512e49b9daaf72c87..02c21bcdeddde02389003048975b97e268804f52 100644 (file)
@@ -11,8 +11,6 @@
 #ifndef _MVEBU_SOC_H
 #define _MVEBU_SOC_H
 
-#define BIT(x)                 (1 << (x))
-
 #define SOC_MV78460_ID         0x7846
 #define SOC_88F6810_ID         0x6810
 #define SOC_88F6820_ID         0x6820
diff --git a/arch/arm/mach-nomadik/Kconfig b/arch/arm/mach-nomadik/Kconfig
deleted file mode 100644 (file)
index ba72a41..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-if ARCH_NOMADIK
-
-choice
-       prompt "Nomadik board select"
-       optional
-
-config NOMADIK_NHK8815
-       bool "ST 8815 Nomadik Hardware Kit"
-
-endchoice
-
-config SYS_SOC
-       default "nomadik"
-
-source "board/st/nhk8815/Kconfig"
-
-endif
diff --git a/arch/arm/mach-nomadik/Makefile b/arch/arm/mach-nomadik/Makefile
deleted file mode 100644 (file)
index cdf1345..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = timer.o gpio.o
-obj-y  += reset.o
diff --git a/arch/arm/mach-nomadik/gpio.c b/arch/arm/mach-nomadik/gpio.c
deleted file mode 100644 (file)
index eff5b2b..0000000
+++ /dev/null
@@ -1,83 +0,0 @@
-/*
- * (C) Copyright 2009 Alessandro Rubini
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/gpio.h>
-
-static unsigned long gpio_base[4] = {
-       NOMADIK_GPIO0_BASE,
-       NOMADIK_GPIO1_BASE,
-       NOMADIK_GPIO2_BASE,
-       NOMADIK_GPIO3_BASE
-};
-
-enum gpio_registers {
-       GPIO_DAT =      0x00,           /* data register */
-       GPIO_DATS =     0x04,           /* data set */
-       GPIO_DATC =     0x08,           /* data clear */
-       GPIO_PDIS =     0x0c,           /* pull disable */
-       GPIO_DIR =      0x10,           /* direction */
-       GPIO_DIRS =     0x14,           /* direction set */
-       GPIO_DIRC =     0x18,           /* direction clear */
-       GPIO_AFSLA =    0x20,           /* alternate function select A */
-       GPIO_AFSLB =    0x24,           /* alternate function select B */
-};
-
-static inline unsigned long gpio_to_base(int gpio)
-{
-       return gpio_base[gpio / 32];
-}
-
-static inline u32 gpio_to_bit(int gpio)
-{
-       return 1 << (gpio & 0x1f);
-}
-
-void nmk_gpio_af(int gpio, int alternate_function)
-{
-       unsigned long base = gpio_to_base(gpio);
-       u32 bit = gpio_to_bit(gpio);
-       u32 afunc, bfunc;
-
-       /* alternate function is 0..3, with one bit per register */
-       afunc = readl(base + GPIO_AFSLA) & ~bit;
-       bfunc = readl(base + GPIO_AFSLB) & ~bit;
-       if (alternate_function & 1) afunc |= bit;
-       if (alternate_function & 2) bfunc |= bit;
-       writel(afunc, base + GPIO_AFSLA);
-       writel(bfunc, base + GPIO_AFSLB);
-}
-
-void nmk_gpio_dir(int gpio, int dir)
-{
-       unsigned long base = gpio_to_base(gpio);
-       u32 bit = gpio_to_bit(gpio);
-
-       if (dir)
-               writel(bit, base + GPIO_DIRS);
-       else
-               writel(bit, base + GPIO_DIRC);
-}
-
-void nmk_gpio_set(int gpio, int val)
-{
-       unsigned long base = gpio_to_base(gpio);
-       u32 bit = gpio_to_bit(gpio);
-
-       if (val)
-               writel(bit, base + GPIO_DATS);
-       else
-               writel(bit, base + GPIO_DATC);
-}
-
-int nmk_gpio_get(int gpio)
-{
-       unsigned long base = gpio_to_base(gpio);
-       u32 bit = gpio_to_bit(gpio);
-
-       return readl(base + GPIO_DAT) & bit;
-}
diff --git a/arch/arm/mach-nomadik/include/mach/gpio.h b/arch/arm/mach-nomadik/include/mach/gpio.h
deleted file mode 100644 (file)
index 311758a..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * (C) Copyright 2009 Alessandro Rubini
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#ifndef __NMK_GPIO_H__
-#define __NMK_GPIO_H__
-
-/*
- * These functions are called from the soft-i2c driver, but
- * are also used by board files to set output bits.
- */
-
-enum nmk_af { /* alternate function settings */
-       GPIO_GPIO = 0,
-       GPIO_ALT_A,
-       GPIO_ALT_B,
-       GPIO_ALT_C
-};
-
-extern void nmk_gpio_af(int gpio, int alternate_function);
-extern void nmk_gpio_dir(int gpio, int dir);
-extern void nmk_gpio_set(int gpio, int val);
-extern int nmk_gpio_get(int gpio);
-
-#endif /* __NMK_GPIO_H__ */
diff --git a/arch/arm/mach-nomadik/include/mach/mtu.h b/arch/arm/mach-nomadik/include/mach/mtu.h
deleted file mode 100644 (file)
index f89f242..0000000
+++ /dev/null
@@ -1,50 +0,0 @@
-/*
- * (C) Copyright 2009 Alessandro Rubini
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __ASM_ARCH_MTU_H
-#define __ASM_ARCH_MTU_H
-
-/*
- * The MTU device hosts four different counters, with 4 set of
- * registers. These are register names.
- */
-
-#define MTU_IMSC       0x00    /* Interrupt mask set/clear */
-#define MTU_RIS                0x04    /* Raw interrupt status */
-#define MTU_MIS                0x08    /* Masked interrupt status */
-#define MTU_ICR                0x0C    /* Interrupt clear register */
-
-/* per-timer registers take 0..3 as argument */
-#define MTU_LR(x)      (0x10 + 0x10 * (x) + 0x00)      /* Load value */
-#define MTU_VAL(x)     (0x10 + 0x10 * (x) + 0x04)      /* Current value */
-#define MTU_CR(x)      (0x10 + 0x10 * (x) + 0x08)      /* Control reg */
-#define MTU_BGLR(x)    (0x10 + 0x10 * (x) + 0x0c)      /* At next overflow */
-
-/* bits for the control register */
-#define MTU_CRn_ENA            0x80
-#define MTU_CRn_PERIODIC       0x40    /* if 0 = free-running */
-#define MTU_CRn_PRESCALE_MASK  0x0c
-#define MTU_CRn_PRESCALE_1             0x00
-#define MTU_CRn_PRESCALE_16            0x04
-#define MTU_CRn_PRESCALE_256           0x08
-#define MTU_CRn_32BITS         0x02
-#define MTU_CRn_ONESHOT                0x01    /* if 0 = wraps reloading from BGLR*/
-
-/* Other registers are usual amba/primecell registers, currently not used */
-#define MTU_ITCR       0xff0
-#define MTU_ITOP       0xff4
-
-#define MTU_PERIPH_ID0 0xfe0
-#define MTU_PERIPH_ID1 0xfe4
-#define MTU_PERIPH_ID2 0xfe8
-#define MTU_PERIPH_ID3 0xfeC
-
-#define MTU_PCELL0     0xff0
-#define MTU_PCELL1     0xff4
-#define MTU_PCELL2     0xff8
-#define MTU_PCELL3     0xffC
-
-#endif /* __ASM_ARCH_MTU_H */
diff --git a/arch/arm/mach-nomadik/reset.S b/arch/arm/mach-nomadik/reset.S
deleted file mode 100644 (file)
index ec95472..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#include <config.h>
-/*
- * Processor reset for Nomadik
- */
-
-       .align 5
-.globl reset_cpu
-reset_cpu:
-       ldr     r0, =NOMADIK_SRC_BASE   /* System and Reset Controller */
-       ldr     r1, =0x1
-       str     r1, [r0, #0x18]
-
-_loop_forever:
-       b       _loop_forever
diff --git a/arch/arm/mach-nomadik/timer.c b/arch/arm/mach-nomadik/timer.c
deleted file mode 100644 (file)
index 775d0b7..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * (C) Copyright 2009 Alessandro Rubini
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/mtu.h>
-
-/*
- * The timer is a decrementer, we'll left it free running at 2.4MHz.
- * We have 2.4 ticks per microsecond and an overflow in almost 30min
- */
-#define TIMER_CLOCK            (24 * 100 * 1000)
-#define COUNT_TO_USEC(x)       ((x) * 5 / 12)  /* overflows at 6min */
-#define USEC_TO_COUNT(x)       ((x) * 12 / 5)  /* overflows at 6min */
-#define TICKS_PER_HZ           (TIMER_CLOCK / CONFIG_SYS_HZ)
-#define TICKS_TO_HZ(x)         ((x) / TICKS_PER_HZ)
-
-/* macro to read the decrementing 32 bit timer as an increasing count */
-#define READ_TIMER() (0 - readl(CONFIG_SYS_TIMERBASE + MTU_VAL(0)))
-
-/* Configure a free-running, auto-wrap counter with no prescaler */
-int timer_init(void)
-{
-       ulong val;
-
-       writel(MTU_CRn_ENA | MTU_CRn_PRESCALE_1 | MTU_CRn_32BITS,
-              CONFIG_SYS_TIMERBASE + MTU_CR(0));
-
-       /* Reset the timer */
-       writel(0, CONFIG_SYS_TIMERBASE + MTU_LR(0));
-       /*
-        * The load-register isn't really immediate: it changes on clock
-        * edges, so we must wait for our newly-written value to appear.
-        * Since we might miss reading 0, wait for any change in value.
-        */
-       val = READ_TIMER();
-       while (READ_TIMER() == val)
-               ;
-
-       return 0;
-}
-
-/* Return how many HZ passed since "base" */
-ulong get_timer(ulong base)
-{
-       return  TICKS_TO_HZ(READ_TIMER()) - base;
-}
-
-/* Delay x useconds */
-void __udelay(unsigned long usec)
-{
-       ulong ini, end;
-
-       ini = READ_TIMER();
-       end = ini + USEC_TO_COUNT(usec);
-       while ((signed)(end - READ_TIMER()) > 0)
-               ;
-}
-
-unsigned long long get_ticks(void)
-{
-       return get_timer(0);
-}
-
-ulong get_tbclk(void)
-{
-       return CONFIG_SYS_HZ;
-}
diff --git a/arch/arm/mach-rockchip/Kconfig b/arch/arm/mach-rockchip/Kconfig
new file mode 100644 (file)
index 0000000..ab50f4e
--- /dev/null
@@ -0,0 +1,41 @@
+if ARCH_ROCKCHIP
+
+config ROCKCHIP_RK3288
+       bool "Support Rockchip RK3288"
+       help
+         The Rockchip RK3288 is a ARM-based SoC with a quad-core Cortex-A17
+         including NEON and GPU, 1MB L2 cache, Mali-T7 graphics, two
+         video interfaces supporting HDMI and eDP, several DDR3 options
+         and video codec support. Peripherals include Gigabit Ethernet,
+         USB2 host and OTG, SDIO, I2S, UART,s, SPI, I2C and PWMs.
+
+config SYS_MALLOC_F
+       default y
+
+config SYS_MALLOC_F_LEN
+       default 0x800
+
+config SPL_DM
+       default y
+
+config DM_SERIAL
+       default y
+
+config DM_SPI
+       default y
+
+config DM_SPI_FLASH
+       default y
+
+config DM_I2C
+       default y
+
+config DM_GPIO
+       default y
+
+config ROCKCHIP_SERIAL
+       default y
+
+source "arch/arm/mach-rockchip/rk3288/Kconfig"
+
+endif
diff --git a/arch/arm/mach-rockchip/Makefile b/arch/arm/mach-rockchip/Makefile
new file mode 100644 (file)
index 0000000..5a4e383
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# Copyright (c) 2014 Google, Inc
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+ifdef CONFIG_SPL_BUILD
+obj-y += board-spl.o
+else
+obj-y += board.o
+endif
+obj-y += common.o
+obj-$(CONFIG_ROCKCHIP_RK3288) += rk3288/
diff --git a/arch/arm/mach-rockchip/board-spl.c b/arch/arm/mach-rockchip/board-spl.c
new file mode 100644 (file)
index 0000000..a241d96
--- /dev/null
@@ -0,0 +1,287 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <debug_uart.h>
+#include <dm.h>
+#include <fdtdec.h>
+#include <led.h>
+#include <malloc.h>
+#include <ram.h>
+#include <spl.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/periph.h>
+#include <asm/arch/sdram.h>
+#include <dm/pinctrl.h>
+#include <dm/root.h>
+#include <dm/test.h>
+#include <dm/util.h>
+#include <power/regulator.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+u32 spl_boot_device(void)
+{
+       const void *blob = gd->fdt_blob;
+       struct udevice *dev;
+       const char *bootdev;
+       int node;
+       int ret;
+
+       bootdev = fdtdec_get_config_string(blob, "u-boot,boot0");
+       debug("Boot device %s\n", bootdev);
+       if (!bootdev)
+               goto fallback;
+
+       node = fdt_path_offset(blob, bootdev);
+       if (node < 0) {
+               debug("node=%d\n", node);
+               goto fallback;
+       }
+       ret = device_get_global_by_of_offset(node, &dev);
+       if (ret) {
+               debug("device at node %s/%d not found: %d\n", bootdev, node,
+                     ret);
+               goto fallback;
+       }
+       debug("Found device %s\n", dev->name);
+       switch (device_get_uclass_id(dev)) {
+       case UCLASS_SPI_FLASH:
+               return BOOT_DEVICE_SPI;
+       case UCLASS_MMC:
+               return BOOT_DEVICE_MMC1;
+       default:
+               debug("Booting from device uclass '%s' not supported\n",
+                     dev_get_uclass_name(dev));
+       }
+
+fallback:
+       return BOOT_DEVICE_MMC1;
+}
+
+u32 spl_boot_mode(void)
+{
+       return MMCSD_MODE_RAW;
+}
+
+/* read L2 control register (L2CTLR) */
+static inline uint32_t read_l2ctlr(void)
+{
+       uint32_t val = 0;
+
+       asm volatile ("mrc p15, 1, %0, c9, c0, 2" : "=r" (val));
+
+       return val;
+}
+
+/* write L2 control register (L2CTLR) */
+static inline void write_l2ctlr(uint32_t val)
+{
+       /*
+        * Note: L2CTLR can only be written when the L2 memory system
+        * is idle, ie before the MMU is enabled.
+        */
+       asm volatile("mcr p15, 1, %0, c9, c0, 2" : : "r" (val) : "memory");
+       isb();
+}
+
+static void configure_l2ctlr(void)
+{
+       uint32_t l2ctlr;
+
+       l2ctlr = read_l2ctlr();
+       l2ctlr &= 0xfffc0000; /* clear bit0~bit17 */
+
+       /*
+       * Data RAM write latency: 2 cycles
+       * Data RAM read latency: 2 cycles
+       * Data RAM setup latency: 1 cycle
+       * Tag RAM write latency: 1 cycle
+       * Tag RAM read latency: 1 cycle
+       * Tag RAM setup latency: 1 cycle
+       */
+       l2ctlr |= (1 << 3 | 1 << 0);
+       write_l2ctlr(l2ctlr);
+}
+
+struct rk3288_timer {
+       u32 timer_load_count0;
+       u32 timer_load_count1;
+       u32 timer_curr_value0;
+       u32 timer_curr_value1;
+       u32 timer_ctrl_reg;
+       u32 timer_int_status;
+};
+
+void init_timer(void)
+{
+       struct rk3288_timer * const timer7_ptr = (void *)TIMER7_BASE;
+
+       writel(0xffffffff, &timer7_ptr->timer_load_count0);
+       writel(0xffffffff, &timer7_ptr->timer_load_count1);
+       writel(1, &timer7_ptr->timer_ctrl_reg);
+}
+
+static int configure_emmc(struct udevice *pinctrl)
+{
+       struct gpio_desc desc;
+       int ret;
+
+       pinctrl_request_noflags(pinctrl, PERIPH_ID_EMMC);
+
+       /*
+        * TODO(sjg@chromium.org): Pick this up from device tree or perhaps
+        * use the EMMC_PWREN setting.
+        */
+       ret = dm_gpio_lookup_name("D9", &desc);
+       if (ret) {
+               debug("gpio ret=%d\n", ret);
+               return ret;
+       }
+       ret = dm_gpio_request(&desc, "emmc_pwren");
+       if (ret) {
+               debug("gpio_request ret=%d\n", ret);
+               return ret;
+       }
+       ret = dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
+       if (ret) {
+               debug("gpio dir ret=%d\n", ret);
+               return ret;
+       }
+       ret = dm_gpio_set_value(&desc, 1);
+       if (ret) {
+               debug("gpio value ret=%d\n", ret);
+               return ret;
+       }
+
+       return 0;
+}
+
+void board_init_f(ulong dummy)
+{
+       struct udevice *pinctrl;
+       struct udevice *dev;
+       int ret;
+
+       /* Example code showing how to enable the debug UART on RK3288 */
+#ifdef EARLY_UART
+#include <asm/arch/grf_rk3288.h>
+       /* Enable early UART on the RK3288 */
+#define GRF_BASE       0xff770000
+       struct rk3288_grf * const grf = (void *)GRF_BASE;
+
+       rk_clrsetreg(&grf->gpio7ch_iomux, GPIO7C7_MASK << GPIO7C7_SHIFT |
+                    GPIO7C6_MASK << GPIO7C6_SHIFT,
+                    GPIO7C7_UART2DBG_SOUT << GPIO7C7_SHIFT |
+                    GPIO7C6_UART2DBG_SIN << GPIO7C6_SHIFT);
+       /*
+        * Debug UART can be used from here if required:
+        *
+        * debug_uart_init();
+        * printch('a');
+        * printhex8(0x1234);
+        * printascii("string");
+        */
+       debug_uart_init();
+#endif
+
+       ret = spl_init();
+       if (ret) {
+               debug("spl_init() failed: %d\n", ret);
+               hang();
+       }
+
+       init_timer();
+       configure_l2ctlr();
+
+       ret = uclass_get_device(UCLASS_CLK, 0, &dev);
+       if (ret) {
+               debug("CLK init failed: %d\n", ret);
+               return;
+       }
+
+       ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
+       if (ret) {
+               debug("Pinctrl init failed: %d\n", ret);
+               return;
+       }
+
+       ret = uclass_get_device(UCLASS_RAM, 0, &dev);
+       if (ret) {
+               debug("DRAM init failed: %d\n", ret);
+               return;
+       }
+}
+
+static int setup_led(void)
+{
+#ifdef CONFIG_SPL_LED
+       struct udevice *dev;
+       char *led_name;
+       int ret;
+
+       led_name = fdtdec_get_config_string(gd->fdt_blob, "u-boot,boot-led");
+       if (!led_name)
+               return 0;
+       ret = led_get_by_label(led_name, &dev);
+       if (ret) {
+               debug("%s: get=%d\n", __func__, ret);
+               return ret;
+       }
+       ret = led_set_on(dev, 1);
+       if (ret)
+               return ret;
+#endif
+
+       return 0;
+}
+
+void spl_board_init(void)
+{
+       struct udevice *pinctrl;
+       int ret;
+
+       ret = setup_led();
+
+       if (ret) {
+               debug("LED ret=%d\n", ret);
+               hang();
+       }
+
+       ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
+       if (ret) {
+               debug("%s: Cannot find pinctrl device\n", __func__);
+               goto err;
+       }
+       ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_SDCARD);
+       if (ret) {
+               debug("%s: Failed to set up SD card\n", __func__);
+               goto err;
+       }
+       ret = configure_emmc(pinctrl);
+       if (ret) {
+               debug("%s: Failed to set up eMMC\n", __func__);
+               goto err;
+       }
+
+       /* Enable debug UART */
+       ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_UART_DBG);
+       if (ret) {
+               debug("%s: Failed to set up console UART\n", __func__);
+               goto err;
+       }
+
+       preloader_console_init();
+       return;
+err:
+       printf("spl_board_init: Error %d\n", ret);
+
+       /* No way to report error here */
+       hang();
+}
diff --git a/arch/arm/mach-rockchip/board.c b/arch/arm/mach-rockchip/board.c
new file mode 100644 (file)
index 0000000..688bc0f
--- /dev/null
@@ -0,0 +1,46 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <ram.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int board_init(void)
+{
+       return 0;
+}
+
+int dram_init(void)
+{
+       struct ram_info ram;
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_get_device(UCLASS_RAM, 0, &dev);
+       if (ret) {
+               debug("DRAM init failed: %d\n", ret);
+               return ret;
+       }
+       ret = ram_get_info(dev, &ram);
+       if (ret) {
+               debug("Cannot get DRAM size: %d\n", ret);
+               return ret;
+       }
+       debug("SDRAM base=%lx, size=%x\n", ram.base, ram.size);
+       gd->ram_size = ram.size;
+
+       return 0;
+}
+
+#ifndef CONFIG_SYS_DCACHE_OFF
+void enable_caches(void)
+{
+       /* Enable D-cache. I-cache is already enabled in start.S */
+       dcache_enable();
+}
+#endif
diff --git a/arch/arm/mach-rockchip/common.c b/arch/arm/mach-rockchip/common.c
new file mode 100644 (file)
index 0000000..fc7ac72
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <linux/err.h>
+
+void *rockchip_get_cru(void)
+{
+       struct udevice *dev;
+       fdt_addr_t addr;
+       int ret;
+
+       ret = uclass_get_device(UCLASS_CLK, 0, &dev);
+       if (ret)
+               return ERR_PTR(ret);
+
+       addr = dev_get_addr(dev);
+       if (addr == FDT_ADDR_T_NONE)
+               return ERR_PTR(-EINVAL);
+
+       return (void *)addr;
+}
diff --git a/arch/arm/mach-rockchip/rk3288/Kconfig b/arch/arm/mach-rockchip/rk3288/Kconfig
new file mode 100644 (file)
index 0000000..4d0f1b5
--- /dev/null
@@ -0,0 +1,26 @@
+if ROCKCHIP_RK3288
+
+config TARGET_FIREFLY_RK3288
+       bool "Firefly-RK3288"
+       help
+         Firefly is a RK3288-based development board with 2 USB ports,
+         HDMI, VGA, micro-SD card, audio, WiFi  and Gigabit Ethernet, It
+         also includes on-board eMMC and 1GB of SDRAM. Expansion connectors
+         provide access to display pins, I2C, SPI, UART and GPIOs.
+
+config TARGET_CHROMEBOOK_JERRY
+       bool "Google/Rockchip Veyron-Jerry Chromebook"
+       help
+         Jerry is a RK3288-based clamshell device with 2 USB 3.0 ports,
+         HDMI, an 11.9 inch EDP display, micro-SD card, touchpad and
+         WiFi. It includes a Chrome OS EC (Cortex-M3) to provide access to
+         the keyboard and battery functions.
+
+config SYS_SOC
+       default "rockchip"
+
+source "board/google/chromebook_jerry/Kconfig"
+
+source "board/firefly/firefly-rk3288/Kconfig"
+
+endif
diff --git a/arch/arm/mach-rockchip/rk3288/Makefile b/arch/arm/mach-rockchip/rk3288/Makefile
new file mode 100644 (file)
index 0000000..6f62375
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# Copyright (c) 2015 Google, Inc
+#
+# SPDX-License-Identifier:      GPL-2.0+
+#
+
+obj-y += reset_rk3288.o
+obj-y += sdram_rk3288.o
+obj-y += syscon_rk3288.o
diff --git a/arch/arm/mach-rockchip/rk3288/reset_rk3288.c b/arch/arm/mach-rockchip/rk3288/reset_rk3288.c
new file mode 100644 (file)
index 0000000..7affd11
--- /dev/null
@@ -0,0 +1,47 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <reset.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/cru_rk3288.h>
+#include <asm/arch/hardware.h>
+#include <linux/err.h>
+
+int rk3288_reset_request(struct udevice *dev, enum reset_t type)
+{
+       struct rk3288_cru *cru = rockchip_get_cru();
+
+       if (IS_ERR(cru))
+               return PTR_ERR(cru);
+       switch (type) {
+       case RESET_WARM:
+               writel(RK_CLRBITS(0xffff), &cru->cru_mode_con);
+               writel(0xeca8, &cru->cru_glb_srst_snd_value);
+               break;
+       case RESET_COLD:
+               writel(RK_CLRBITS(0xffff), &cru->cru_mode_con);
+               writel(0xfdb9, &cru->cru_glb_srst_fst_value);
+               break;
+       default:
+               return -EPROTONOSUPPORT;
+       }
+
+       return -EINPROGRESS;
+}
+
+static struct reset_ops rk3288_reset = {
+       .request        = rk3288_reset_request,
+};
+
+U_BOOT_DRIVER(reset_rk3288) = {
+       .name   = "rk3288_reset",
+       .id     = UCLASS_RESET,
+       .ops    = &rk3288_reset,
+};
diff --git a/arch/arm/mach-rockchip/rk3288/sdram_rk3288.c b/arch/arm/mach-rockchip/rk3288/sdram_rk3288.c
new file mode 100644 (file)
index 0000000..09017cc
--- /dev/null
@@ -0,0 +1,878 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ * Copyright 2014 Rockchip Inc.
+ *
+ * SPDX-License-Identifier:     GPL-2.0
+ *
+ * Adapted from coreboot.
+ */
+
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <errno.h>
+#include <ram.h>
+#include <regmap.h>
+#include <syscon.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/cru_rk3288.h>
+#include <asm/arch/ddr_rk3288.h>
+#include <asm/arch/grf_rk3288.h>
+#include <asm/arch/pmu_rk3288.h>
+#include <asm/arch/sdram.h>
+#include <linux/err.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct chan_info {
+       struct rk3288_ddr_pctl *pctl;
+       struct rk3288_ddr_publ *publ;
+       struct rk3288_msch *msch;
+};
+
+struct dram_info {
+       struct chan_info chan[2];
+       struct ram_info info;
+       struct udevice *ddr_clk;
+       struct rk3288_cru *cru;
+       struct rk3288_grf *grf;
+       struct rk3288_sgrf *sgrf;
+       struct rk3288_pmu *pmu;
+};
+
+#ifdef CONFIG_SPL_BUILD
+static void copy_to_reg(u32 *dest, const u32 *src, u32 n)
+{
+       int i;
+
+       for (i = 0; i < n / sizeof(u32); i++) {
+               writel(*src, dest);
+               src++;
+               dest++;
+       }
+}
+
+static void ddr_reset(struct rk3288_cru *cru, u32 ch, u32 ctl, u32 phy)
+{
+       u32 phy_ctl_srstn_shift = 4 + 5 * ch;
+       u32 ctl_psrstn_shift = 3 + 5 * ch;
+       u32 ctl_srstn_shift = 2 + 5 * ch;
+       u32 phy_psrstn_shift = 1 + 5 * ch;
+       u32 phy_srstn_shift = 5 * ch;
+
+       rk_clrsetreg(&cru->cru_softrst_con[10],
+                    1 << phy_ctl_srstn_shift | 1 << ctl_psrstn_shift |
+                    1 << ctl_srstn_shift | 1 << phy_psrstn_shift |
+                    1 << phy_srstn_shift,
+                    phy << phy_ctl_srstn_shift | ctl << ctl_psrstn_shift |
+                    ctl << ctl_srstn_shift | phy << phy_psrstn_shift |
+                    phy << phy_srstn_shift);
+}
+
+static void ddr_phy_ctl_reset(struct rk3288_cru *cru, u32 ch, u32 n)
+{
+       u32 phy_ctl_srstn_shift = 4 + 5 * ch;
+
+       rk_clrsetreg(&cru->cru_softrst_con[10],
+                    1 << phy_ctl_srstn_shift, n << phy_ctl_srstn_shift);
+}
+
+static void phy_pctrl_reset(struct rk3288_cru *cru,
+                           struct rk3288_ddr_publ *publ,
+                           u32 channel)
+{
+       int i;
+
+       ddr_reset(cru, channel, 1, 1);
+       udelay(1);
+       clrbits_le32(&publ->acdllcr, ACDLLCR_DLLSRST);
+       for (i = 0; i < 4; i++)
+               clrbits_le32(&publ->datx8[i].dxdllcr, DXDLLCR_DLLSRST);
+
+       udelay(10);
+       setbits_le32(&publ->acdllcr, ACDLLCR_DLLSRST);
+       for (i = 0; i < 4; i++)
+               setbits_le32(&publ->datx8[i].dxdllcr, DXDLLCR_DLLSRST);
+
+       udelay(10);
+       ddr_reset(cru, channel, 1, 0);
+       udelay(10);
+       ddr_reset(cru, channel, 0, 0);
+       udelay(10);
+}
+
+static void phy_dll_bypass_set(struct rk3288_ddr_publ *publ,
+       u32 freq)
+{
+       int i;
+       if (freq <= 250000000) {
+               if (freq <= 150000000)
+                       clrbits_le32(&publ->dllgcr, SBIAS_BYPASS);
+               else
+                       setbits_le32(&publ->dllgcr, SBIAS_BYPASS);
+               setbits_le32(&publ->acdllcr, ACDLLCR_DLLDIS);
+               for (i = 0; i < 4; i++)
+                       setbits_le32(&publ->datx8[i].dxdllcr,
+                                    DXDLLCR_DLLDIS);
+
+               setbits_le32(&publ->pir, PIR_DLLBYP);
+       } else {
+               clrbits_le32(&publ->dllgcr, SBIAS_BYPASS);
+               clrbits_le32(&publ->acdllcr, ACDLLCR_DLLDIS);
+               for (i = 0; i < 4; i++) {
+                       clrbits_le32(&publ->datx8[i].dxdllcr,
+                                    DXDLLCR_DLLDIS);
+               }
+
+               clrbits_le32(&publ->pir, PIR_DLLBYP);
+       }
+}
+
+static void dfi_cfg(struct rk3288_ddr_pctl *pctl, u32 dramtype)
+{
+       writel(DFI_INIT_START, &pctl->dfistcfg0);
+       writel(DFI_DRAM_CLK_SR_EN | DFI_DRAM_CLK_DPD_EN,
+              &pctl->dfistcfg1);
+       writel(DFI_PARITY_INTR_EN | DFI_PARITY_EN, &pctl->dfistcfg2);
+       writel(7 << TLP_RESP_TIME_SHIFT | LP_SR_EN | LP_PD_EN,
+              &pctl->dfilpcfg0);
+
+       writel(2 << TCTRL_DELAY_TIME_SHIFT, &pctl->dfitctrldelay);
+       writel(1 << TPHY_WRDATA_TIME_SHIFT, &pctl->dfitphywrdata);
+       writel(0xf << TPHY_RDLAT_TIME_SHIFT, &pctl->dfitphyrdlat);
+       writel(2 << TDRAM_CLK_DIS_TIME_SHIFT, &pctl->dfitdramclkdis);
+       writel(2 << TDRAM_CLK_EN_TIME_SHIFT, &pctl->dfitdramclken);
+       writel(1, &pctl->dfitphyupdtype0);
+
+       /* cs0 and cs1 write odt enable */
+       writel((RANK0_ODT_WRITE_SEL | RANK1_ODT_WRITE_SEL),
+              &pctl->dfiodtcfg);
+       /* odt write length */
+       writel(7 << ODT_LEN_BL8_W_SHIFT, &pctl->dfiodtcfg1);
+       /* phyupd and ctrlupd disabled */
+       writel(0, &pctl->dfiupdcfg);
+}
+
+static void ddr_set_enable(struct rk3288_grf *grf, uint channel, bool enable)
+{
+       uint val = 0;
+
+       if (enable) {
+               val = 1 << (channel ? DDR1_16BIT_EN_SHIFT :
+                               DDR0_16BIT_EN_SHIFT);
+       }
+       rk_clrsetreg(&grf->soc_con0,
+                    1 << (channel ? DDR1_16BIT_EN_SHIFT : DDR0_16BIT_EN_SHIFT),
+                    val);
+}
+
+static void ddr_set_ddr3_mode(struct rk3288_grf *grf, uint channel,
+                             bool ddr3_mode)
+{
+       uint mask, val;
+
+       mask = 1 << (channel ? MSCH1_MAINDDR3_SHIFT : MSCH0_MAINDDR3_SHIFT);
+       val = ddr3_mode << (channel ? MSCH1_MAINDDR3_SHIFT :
+                                       MSCH0_MAINDDR3_SHIFT);
+       rk_clrsetreg(&grf->soc_con0, mask, val);
+}
+
+static void ddr_set_en_bst_odt(struct rk3288_grf *grf, uint channel,
+                              bool enable, bool enable_bst, bool enable_odt)
+{
+       uint mask;
+       bool disable_bst = !enable_bst;
+
+       mask = channel ?
+               (1 << LPDDR3_EN1_SHIFT | 1 << UPCTL1_BST_DIABLE_SHIFT |
+                       1 << UPCTL1_LPDDR3_ODT_EN_SHIFT) :
+               (1 << LPDDR3_EN0_SHIFT | 1 << UPCTL0_BST_DIABLE_SHIFT |
+                       1 << UPCTL0_LPDDR3_ODT_EN_SHIFT);
+       rk_clrsetreg(&grf->soc_con2, mask,
+                    enable << (channel ? LPDDR3_EN1_SHIFT : LPDDR3_EN0_SHIFT) |
+                    disable_bst << (channel ? UPCTL1_BST_DIABLE_SHIFT :
+                               UPCTL0_BST_DIABLE_SHIFT) |
+                    enable_odt << (channel ? UPCTL1_LPDDR3_ODT_EN_SHIFT :
+                               UPCTL0_LPDDR3_ODT_EN_SHIFT));
+}
+
+static void pctl_cfg(u32 channel, struct rk3288_ddr_pctl *pctl,
+                    const struct rk3288_sdram_params *sdram_params,
+                    struct rk3288_grf *grf)
+{
+       unsigned int burstlen;
+
+       burstlen = (sdram_params->base.noc_timing >> 18) & 0x7;
+       copy_to_reg(&pctl->togcnt1u, &sdram_params->pctl_timing.togcnt1u,
+                   sizeof(sdram_params->pctl_timing));
+       switch (sdram_params->base.dramtype) {
+       case LPDDR3:
+               writel(sdram_params->pctl_timing.tcl - 1,
+                      &pctl->dfitrddataen);
+               writel(sdram_params->pctl_timing.tcwl,
+                      &pctl->dfitphywrlat);
+               burstlen >>= 1;
+               writel(LPDDR2_S4 | 0 << MDDR_LPDDR2_CLK_STOP_IDLE_SHIFT |
+                      LPDDR2_EN | burstlen << BURSTLENGTH_SHIFT |
+                      (6 - 4) << TFAW_SHIFT | PD_EXIT_FAST |
+                      1 << PD_TYPE_SHIFT | 0 << PD_IDLE_SHIFT,
+                      &pctl->mcfg);
+               ddr_set_ddr3_mode(grf, channel, false);
+               ddr_set_enable(grf, channel, true);
+               ddr_set_en_bst_odt(grf, channel, true, false,
+                                  sdram_params->base.odt);
+               break;
+       case DDR3:
+               if (sdram_params->phy_timing.mr[1] & DDR3_DLL_DISABLE) {
+                       writel(sdram_params->pctl_timing.tcl - 3,
+                              &pctl->dfitrddataen);
+               } else {
+                       writel(sdram_params->pctl_timing.tcl - 2,
+                              &pctl->dfitrddataen);
+               }
+               writel(sdram_params->pctl_timing.tcwl - 1,
+                      &pctl->dfitphywrlat);
+               writel(0 << MDDR_LPDDR2_CLK_STOP_IDLE_SHIFT | DDR3_EN |
+                      DDR2_DDR3_BL_8 | (6 - 4) << TFAW_SHIFT | PD_EXIT_SLOW |
+                      1 << PD_TYPE_SHIFT | 0 << PD_IDLE_SHIFT,
+                      &pctl->mcfg);
+               ddr_set_ddr3_mode(grf, channel, true);
+               ddr_set_enable(grf, channel, true);
+
+               ddr_set_en_bst_odt(grf, channel, false, true, false);
+               break;
+       }
+
+       setbits_le32(&pctl->scfg, 1);
+}
+
+static void phy_cfg(const struct chan_info *chan, u32 channel,
+                   const struct rk3288_sdram_params *sdram_params)
+{
+       struct rk3288_ddr_publ *publ = chan->publ;
+       struct rk3288_msch *msch = chan->msch;
+       uint ddr_freq_mhz = sdram_params->base.ddr_freq / 1000000;
+       u32 dinit2, tmp;
+       int i;
+
+       dinit2 = DIV_ROUND_UP(ddr_freq_mhz * 200000, 1000);
+       /* DDR PHY Timing */
+       copy_to_reg(&publ->dtpr[0], &sdram_params->phy_timing.dtpr0,
+                   sizeof(sdram_params->phy_timing));
+       writel(sdram_params->base.noc_timing, &msch->ddrtiming);
+       writel(0x3f, &msch->readlatency);
+       writel(sdram_params->base.noc_activate, &msch->activate);
+       writel(2 << BUSWRTORD_SHIFT | 2 << BUSRDTOWR_SHIFT |
+              1 << BUSRDTORD_SHIFT, &msch->devtodev);
+       writel(DIV_ROUND_UP(ddr_freq_mhz * 5120, 1000) << PRT_DLLLOCK_SHIFT |
+              DIV_ROUND_UP(ddr_freq_mhz * 50, 1000) << PRT_DLLSRST_SHIFT |
+              8 << PRT_ITMSRST_SHIFT, &publ->ptr[0]);
+       writel(DIV_ROUND_UP(ddr_freq_mhz * 500000, 1000) << PRT_DINIT0_SHIFT |
+              DIV_ROUND_UP(ddr_freq_mhz * 400, 1000) << PRT_DINIT1_SHIFT,
+              &publ->ptr[1]);
+       writel(min(dinit2, 0x1ffffU) << PRT_DINIT2_SHIFT |
+              DIV_ROUND_UP(ddr_freq_mhz * 1000, 1000) << PRT_DINIT3_SHIFT,
+              &publ->ptr[2]);
+
+       switch (sdram_params->base.dramtype) {
+       case LPDDR3:
+               clrsetbits_le32(&publ->pgcr, 0x1F,
+                               0 << PGCR_DFTLMT_SHIFT |
+                               0 << PGCR_DFTCMP_SHIFT |
+                               1 << PGCR_DQSCFG_SHIFT |
+                               0 << PGCR_ITMDMD_SHIFT);
+               /* DDRMODE select LPDDR3 */
+               clrsetbits_le32(&publ->dcr, DDRMD_MASK << DDRMD_SHIFT,
+                               DDRMD_LPDDR2_LPDDR3 << DDRMD_SHIFT);
+               clrsetbits_le32(&publ->dxccr,
+                               DQSNRES_MASK << DQSNRES_SHIFT |
+                               DQSRES_MASK << DQSRES_SHIFT,
+                               4 << DQSRES_SHIFT | 0xc << DQSNRES_SHIFT);
+               tmp = readl(&publ->dtpr[1]);
+               tmp = ((tmp >> TDQSCKMAX_SHIFT) & TDQSCKMAX_MASK) -
+                       ((tmp >> TDQSCK_SHIFT) & TDQSCK_MASK);
+               clrsetbits_le32(&publ->dsgcr,
+                               DQSGE_MASK << DQSGE_SHIFT |
+                               DQSGX_MASK << DQSGX_SHIFT,
+                               tmp << DQSGE_SHIFT | tmp << DQSGX_SHIFT);
+               break;
+       case DDR3:
+               clrbits_le32(&publ->pgcr, 0x1f);
+               clrsetbits_le32(&publ->dcr, DDRMD_MASK << DDRMD_SHIFT,
+                               DDRMD_DDR3 << DDRMD_SHIFT);
+               break;
+       }
+       if (sdram_params->base.odt) {
+               /*dynamic RTT enable */
+               for (i = 0; i < 4; i++)
+                       setbits_le32(&publ->datx8[i].dxgcr, DQSRTT | DQRTT);
+       } else {
+               /*dynamic RTT disable */
+               for (i = 0; i < 4; i++)
+                       clrbits_le32(&publ->datx8[i].dxgcr, DQSRTT | DQRTT);
+       }
+}
+
+static void phy_init(struct rk3288_ddr_publ *publ)
+{
+       setbits_le32(&publ->pir, PIR_INIT | PIR_DLLSRST
+               | PIR_DLLLOCK | PIR_ZCAL | PIR_ITMSRST | PIR_CLRSR);
+       udelay(1);
+       while ((readl(&publ->pgsr) &
+               (PGSR_IDONE | PGSR_DLDONE | PGSR_ZCDONE)) !=
+               (PGSR_IDONE | PGSR_DLDONE | PGSR_ZCDONE))
+               ;
+}
+
+static void send_command(struct rk3288_ddr_pctl *pctl, u32 rank,
+                        u32 cmd, u32 arg)
+{
+       writel((START_CMD | (rank << 20) | arg | cmd), &pctl->mcmd);
+       udelay(1);
+       while (readl(&pctl->mcmd) & START_CMD)
+               ;
+}
+
+static inline void send_command_op(struct rk3288_ddr_pctl *pctl,
+                                  u32 rank, u32 cmd, u32 ma, u32 op)
+{
+       send_command(pctl, rank, cmd, (ma & LPDDR2_MA_MASK) << LPDDR2_MA_SHIFT |
+                    (op & LPDDR2_OP_MASK) << LPDDR2_OP_SHIFT);
+}
+
+static void memory_init(struct rk3288_ddr_publ *publ,
+                       u32 dramtype)
+{
+       setbits_le32(&publ->pir,
+                    (PIR_INIT | PIR_DRAMINIT | PIR_LOCKBYP
+                     | PIR_ZCALBYP | PIR_CLRSR | PIR_ICPC
+                     | (dramtype == DDR3 ? PIR_DRAMRST : 0)));
+       udelay(1);
+       while ((readl(&publ->pgsr) & (PGSR_IDONE | PGSR_DLDONE))
+               != (PGSR_IDONE | PGSR_DLDONE))
+               ;
+}
+
+static void move_to_config_state(struct rk3288_ddr_publ *publ,
+                                struct rk3288_ddr_pctl *pctl)
+{
+       unsigned int state;
+
+       while (1) {
+               state = readl(&pctl->stat) & PCTL_STAT_MSK;
+
+               switch (state) {
+               case LOW_POWER:
+                       writel(WAKEUP_STATE, &pctl->sctl);
+                       while ((readl(&pctl->stat) & PCTL_STAT_MSK)
+                               != ACCESS)
+                               ;
+                       /* wait DLL lock */
+                       while ((readl(&publ->pgsr) & PGSR_DLDONE)
+                               != PGSR_DLDONE)
+                               ;
+                       /* if at low power state,need wakeup first,
+                        * and then enter the config
+                        * so here no break.
+                        */
+               case ACCESS:
+                       /* no break */
+               case INIT_MEM:
+                       writel(CFG_STATE, &pctl->sctl);
+                       while ((readl(&pctl->stat) & PCTL_STAT_MSK) != CONFIG)
+                               ;
+                       break;
+               case CONFIG:
+                       return;
+               default:
+                       break;
+               }
+       }
+}
+
+static void set_bandwidth_ratio(const struct chan_info *chan, u32 channel,
+                               u32 n, struct rk3288_grf *grf)
+{
+       struct rk3288_ddr_pctl *pctl = chan->pctl;
+       struct rk3288_ddr_publ *publ = chan->publ;
+       struct rk3288_msch *msch = chan->msch;
+
+       if (n == 1) {
+               setbits_le32(&pctl->ppcfg, 1);
+               writel(RK_SETBITS(1 << (8 + channel)), &grf->soc_con0);
+               setbits_le32(&msch->ddrtiming, 1 << 31);
+               /* Data Byte disable*/
+               clrbits_le32(&publ->datx8[2].dxgcr, 1);
+               clrbits_le32(&publ->datx8[3].dxgcr, 1);
+               /*disable DLL */
+               setbits_le32(&publ->datx8[2].dxdllcr, DXDLLCR_DLLDIS);
+               setbits_le32(&publ->datx8[3].dxdllcr, DXDLLCR_DLLDIS);
+       } else {
+               clrbits_le32(&pctl->ppcfg, 1);
+               writel(RK_CLRBITS(1 << (8 + channel)), &grf->soc_con0);
+               clrbits_le32(&msch->ddrtiming, 1 << 31);
+               /* Data Byte enable*/
+               setbits_le32(&publ->datx8[2].dxgcr, 1);
+               setbits_le32(&publ->datx8[3].dxgcr, 1);
+
+               /*enable DLL */
+               clrbits_le32(&publ->datx8[2].dxdllcr, DXDLLCR_DLLDIS);
+               clrbits_le32(&publ->datx8[3].dxdllcr, DXDLLCR_DLLDIS);
+               /* reset DLL */
+               clrbits_le32(&publ->datx8[2].dxdllcr, DXDLLCR_DLLSRST);
+               clrbits_le32(&publ->datx8[3].dxdllcr, DXDLLCR_DLLSRST);
+               udelay(10);
+               setbits_le32(&publ->datx8[2].dxdllcr, DXDLLCR_DLLSRST);
+               setbits_le32(&publ->datx8[3].dxdllcr, DXDLLCR_DLLSRST);
+       }
+       setbits_le32(&pctl->dfistcfg0, 1 << 2);
+}
+
+static int data_training(const struct chan_info *chan, u32 channel,
+                        const struct rk3288_sdram_params *sdram_params)
+{
+       unsigned int j;
+       int ret = 0;
+       u32 rank;
+       int i;
+       u32 step[2] = { PIR_QSTRN, PIR_RVTRN };
+       struct rk3288_ddr_publ *publ = chan->publ;
+       struct rk3288_ddr_pctl *pctl = chan->pctl;
+
+       /* disable auto refresh */
+       writel(0, &pctl->trefi);
+
+       if (sdram_params->base.dramtype != LPDDR3)
+               setbits_le32(&publ->pgcr, 1 << PGCR_DQSCFG_SHIFT);
+       rank = sdram_params->ch[channel].rank | 1;
+       for (j = 0; j < ARRAY_SIZE(step); j++) {
+               /*
+                * trigger QSTRN and RVTRN
+                * clear DTDONE status
+                */
+               setbits_le32(&publ->pir, PIR_CLRSR);
+
+               /* trigger DTT */
+               setbits_le32(&publ->pir,
+                            PIR_INIT | step[j] | PIR_LOCKBYP | PIR_ZCALBYP |
+                            PIR_CLRSR);
+               udelay(1);
+               /* wait echo byte DTDONE */
+               while ((readl(&publ->datx8[0].dxgsr[0]) & rank)
+                       != rank)
+                       ;
+               while ((readl(&publ->datx8[1].dxgsr[0]) & rank)
+                       != rank)
+                       ;
+               if (!(readl(&pctl->ppcfg) & 1)) {
+                       while ((readl(&publ->datx8[2].dxgsr[0])
+                               & rank) != rank)
+                               ;
+                       while ((readl(&publ->datx8[3].dxgsr[0])
+                               & rank) != rank)
+                               ;
+               }
+               if (readl(&publ->pgsr) &
+                   (PGSR_DTERR | PGSR_RVERR | PGSR_RVEIRR)) {
+                       ret = -1;
+                       break;
+               }
+       }
+       /* send some auto refresh to complement the lost while DTT */
+       for (i = 0; i < (rank > 1 ? 8 : 4); i++)
+               send_command(pctl, rank, REF_CMD, 0);
+
+       if (sdram_params->base.dramtype != LPDDR3)
+               clrbits_le32(&publ->pgcr, 1 << PGCR_DQSCFG_SHIFT);
+
+       /* resume auto refresh */
+       writel(sdram_params->pctl_timing.trefi, &pctl->trefi);
+
+       return ret;
+}
+
+static void move_to_access_state(const struct chan_info *chan)
+{
+       struct rk3288_ddr_publ *publ = chan->publ;
+       struct rk3288_ddr_pctl *pctl = chan->pctl;
+       unsigned int state;
+
+       while (1) {
+               state = readl(&pctl->stat) & PCTL_STAT_MSK;
+
+               switch (state) {
+               case LOW_POWER:
+                       if (((readl(&pctl->stat) >> LP_TRIG_SHIFT) &
+                                       LP_TRIG_MASK) == 1)
+                               return;
+
+                       writel(WAKEUP_STATE, &pctl->sctl);
+                       while ((readl(&pctl->stat) & PCTL_STAT_MSK) != ACCESS)
+                               ;
+                       /* wait DLL lock */
+                       while ((readl(&publ->pgsr) & PGSR_DLDONE)
+                               != PGSR_DLDONE)
+                               ;
+                       break;
+               case INIT_MEM:
+                       writel(CFG_STATE, &pctl->sctl);
+                       while ((readl(&pctl->stat) & PCTL_STAT_MSK) != CONFIG)
+                               ;
+               case CONFIG:
+                       writel(GO_STATE, &pctl->sctl);
+                       while ((readl(&pctl->stat) & PCTL_STAT_MSK) == CONFIG)
+                               ;
+                       break;
+               case ACCESS:
+                       return;
+               default:
+                       break;
+               }
+       }
+}
+
+static void dram_cfg_rbc(const struct chan_info *chan, u32 chnum,
+                        const struct rk3288_sdram_params *sdram_params)
+{
+       struct rk3288_ddr_publ *publ = chan->publ;
+
+       if (sdram_params->ch[chnum].bk == 3)
+               clrsetbits_le32(&publ->dcr, PDQ_MASK << PDQ_SHIFT,
+                               1 << PDQ_SHIFT);
+       else
+               clrbits_le32(&publ->dcr, PDQ_MASK << PDQ_SHIFT);
+
+       writel(sdram_params->base.ddrconfig, &chan->msch->ddrconf);
+}
+
+static void dram_all_config(const struct dram_info *dram,
+                           const struct rk3288_sdram_params *sdram_params)
+{
+       unsigned int chan;
+       u32 sys_reg = 0;
+
+       sys_reg |= sdram_params->base.dramtype << SYS_REG_DDRTYPE_SHIFT;
+       sys_reg |= (sdram_params->num_channels - 1) << SYS_REG_NUM_CH_SHIFT;
+       for (chan = 0; chan < sdram_params->num_channels; chan++) {
+               const struct rk3288_sdram_channel *info =
+                       &sdram_params->ch[chan];
+
+               sys_reg |= info->row_3_4 << SYS_REG_ROW_3_4_SHIFT(chan);
+               sys_reg |= chan << SYS_REG_CHINFO_SHIFT(chan);
+               sys_reg |= (info->rank - 1) << SYS_REG_RANK_SHIFT(chan);
+               sys_reg |= (info->col - 9) << SYS_REG_COL_SHIFT(chan);
+               sys_reg |= info->bk == 3 ? 1 << SYS_REG_BK_SHIFT(chan) : 0;
+               sys_reg |= (info->cs0_row - 13) << SYS_REG_CS0_ROW_SHIFT(chan);
+               sys_reg |= (info->cs1_row - 13) << SYS_REG_CS1_ROW_SHIFT(chan);
+               sys_reg |= info->bw << SYS_REG_BW_SHIFT(chan);
+               sys_reg |= info->dbw << SYS_REG_DBW_SHIFT(chan);
+
+               dram_cfg_rbc(&dram->chan[chan], chan, sdram_params);
+       }
+       writel(sys_reg, &dram->pmu->sys_reg[2]);
+       writel(RK_CLRSETBITS(0x1F, sdram_params->base.stride),
+              &dram->sgrf->soc_con2);
+}
+
+static int sdram_init(const struct dram_info *dram,
+                     const struct rk3288_sdram_params *sdram_params)
+{
+       int channel;
+       int zqcr;
+       int ret;
+
+       debug("%s start\n", __func__);
+       if ((sdram_params->base.dramtype == DDR3 &&
+            sdram_params->base.ddr_freq > 800000000) ||
+           (sdram_params->base.dramtype == LPDDR3 &&
+            sdram_params->base.ddr_freq > 533000000)) {
+               debug("SDRAM frequency is too high!");
+               return -E2BIG;
+       }
+
+       debug("ddr clk %s\n", dram->ddr_clk->name);
+       ret = clk_set_rate(dram->ddr_clk, sdram_params->base.ddr_freq);
+       debug("ret=%d\n", ret);
+       if (ret) {
+               debug("Could not set DDR clock\n");
+               return ret;
+       }
+
+       for (channel = 0; channel < 2; channel++) {
+               const struct chan_info *chan = &dram->chan[channel];
+               struct rk3288_ddr_pctl *pctl = chan->pctl;
+               struct rk3288_ddr_publ *publ = chan->publ;
+
+               phy_pctrl_reset(dram->cru, publ, channel);
+               phy_dll_bypass_set(publ, sdram_params->base.ddr_freq);
+
+               if (channel >= sdram_params->num_channels)
+                       continue;
+
+               dfi_cfg(pctl, sdram_params->base.dramtype);
+
+               pctl_cfg(channel, pctl, sdram_params, dram->grf);
+
+               phy_cfg(chan, channel, sdram_params);
+
+               phy_init(publ);
+
+               writel(POWER_UP_START, &pctl->powctl);
+               while (!(readl(&pctl->powstat) & POWER_UP_DONE))
+                       ;
+
+               memory_init(publ, sdram_params->base.dramtype);
+               move_to_config_state(publ, pctl);
+
+               if (sdram_params->base.dramtype == LPDDR3) {
+                       send_command(pctl, 3, DESELECT_CMD, 0);
+                       udelay(1);
+                       send_command(pctl, 3, PREA_CMD, 0);
+                       udelay(1);
+                       send_command_op(pctl, 3, MRS_CMD, 63, 0xfc);
+                       udelay(1);
+                       send_command_op(pctl, 3, MRS_CMD, 1,
+                                       sdram_params->phy_timing.mr[1]);
+                       udelay(1);
+                       send_command_op(pctl, 3, MRS_CMD, 2,
+                                       sdram_params->phy_timing.mr[2]);
+                       udelay(1);
+                       send_command_op(pctl, 3, MRS_CMD, 3,
+                                       sdram_params->phy_timing.mr[3]);
+                       udelay(1);
+               }
+
+               set_bandwidth_ratio(chan, channel,
+                                   sdram_params->ch[channel].bw, dram->grf);
+               /*
+                * set cs
+                * CS0, n=1
+                * CS1, n=2
+                * CS0 & CS1, n = 3
+                */
+               clrsetbits_le32(&publ->pgcr, 0xF << 18,
+                               (sdram_params->ch[channel].rank | 1) << 18);
+               /* DS=40ohm,ODT=155ohm */
+               zqcr = 1 << ZDEN_SHIFT | 2 << PU_ONDIE_SHIFT |
+                       2 << PD_ONDIE_SHIFT | 0x19 << PU_OUTPUT_SHIFT |
+                       0x19 << PD_OUTPUT_SHIFT;
+               writel(zqcr, &publ->zq1cr[0]);
+               writel(zqcr, &publ->zq0cr[0]);
+
+               if (sdram_params->base.dramtype == LPDDR3) {
+                       /* LPDDR2/LPDDR3 need to wait DAI complete, max 10us */
+                       udelay(10);
+                       send_command_op(pctl,
+                                       sdram_params->ch[channel].rank | 1,
+                                       MRS_CMD, 11,
+                                       sdram_params->base.odt ? 3 : 0);
+                       if (channel == 0) {
+                               writel(0, &pctl->mrrcfg0);
+                               send_command_op(pctl, 1, MRR_CMD, 8, 0);
+                               /* S8 */
+                               if ((readl(&pctl->mrrstat0) & 0x3) != 3) {
+                                       debug("failed!");
+                                       return -EREMOTEIO;
+                               }
+                       }
+               }
+
+               if (-1 == data_training(chan, channel, sdram_params)) {
+                       if (sdram_params->base.dramtype == LPDDR3) {
+                               ddr_phy_ctl_reset(dram->cru, channel, 1);
+                               udelay(10);
+                               ddr_phy_ctl_reset(dram->cru, channel, 0);
+                               udelay(10);
+                       }
+                       debug("failed!");
+                       return -EIO;
+               }
+
+               if (sdram_params->base.dramtype == LPDDR3) {
+                       u32 i;
+                       writel(0, &pctl->mrrcfg0);
+                       for (i = 0; i < 17; i++)
+                               send_command_op(pctl, 1, MRR_CMD, i, 0);
+               }
+               move_to_access_state(chan);
+       }
+       dram_all_config(dram, sdram_params);
+       debug("%s done\n", __func__);
+
+       return 0;
+}
+#endif
+
+size_t sdram_size_mb(struct rk3288_pmu *pmu)
+{
+       u32 rank, col, bk, cs0_row, cs1_row, bw, row_3_4;
+       size_t chipsize_mb = 0;
+       size_t size_mb = 0;
+       u32 ch;
+       u32 sys_reg = readl(&pmu->sys_reg[2]);
+       u32 chans;
+
+       chans = 1 + ((sys_reg >> SYS_REG_NUM_CH_SHIFT) & SYS_REG_NUM_CH_MASK);
+
+       for (ch = 0; ch < chans; ch++) {
+               rank = 1 + (sys_reg >> SYS_REG_RANK_SHIFT(ch) &
+                       SYS_REG_RANK_MASK);
+               col = 9 + (sys_reg >> SYS_REG_COL_SHIFT(ch) & SYS_REG_COL_MASK);
+               bk = sys_reg & (1 << SYS_REG_BK_SHIFT(ch)) ? 3 : 0;
+               cs0_row = 13 + (sys_reg >> SYS_REG_CS0_ROW_SHIFT(ch) &
+                               SYS_REG_CS0_ROW_MASK);
+               cs1_row = 13 + (sys_reg >> SYS_REG_CS1_ROW_SHIFT(ch) &
+                               SYS_REG_CS1_ROW_MASK);
+               bw = (sys_reg >> SYS_REG_BW_SHIFT(ch)) &
+                       SYS_REG_BW_MASK;
+               row_3_4 = sys_reg >> SYS_REG_ROW_3_4_SHIFT(ch) &
+                       SYS_REG_ROW_3_4_MASK;
+
+               chipsize_mb = (1 << (cs0_row + col + bk + bw - 20));
+
+               if (rank > 1)
+                       chipsize_mb += chipsize_mb >>
+                               (cs0_row - cs1_row);
+               if (row_3_4)
+                       chipsize_mb = chipsize_mb * 3 / 4;
+               size_mb += chipsize_mb;
+       }
+
+       /*
+       * we use the 0x00000000~0xfeffffff space since 0xff000000~0xffffffff
+       * is SoC register space (i.e. reserved)
+       */
+       size_mb = min(size_mb, 0xff000000 >> 20);
+
+       return size_mb;
+}
+
+#ifdef CONFIG_SPL_BUILD
+static int setup_sdram(struct udevice *dev)
+{
+       struct dram_info *priv = dev_get_priv(dev);
+       struct rk3288_sdram_params params;
+       const void *blob = gd->fdt_blob;
+       int node = dev->of_offset;
+       int i, ret;
+
+       params.num_channels = fdtdec_get_int(blob, node,
+                                            "rockchip,num-channels", 1);
+       for (i = 0; i < params.num_channels; i++) {
+               ret = fdtdec_get_byte_array(blob, node,
+                                           "rockchip,sdram-channel",
+                                           (u8 *)&params.ch[i],
+                                           sizeof(params.ch[i]));
+               if (ret) {
+                       debug("%s: Cannot read rockchip,sdram-channel\n",
+                             __func__);
+                       return -EINVAL;
+               }
+       }
+       ret = fdtdec_get_int_array(blob, node, "rockchip,pctl-timing",
+                                  (u32 *)&params.pctl_timing,
+                                  sizeof(params.pctl_timing) / sizeof(u32));
+       if (ret) {
+               debug("%s: Cannot read rockchip,pctl-timing\n", __func__);
+               return -EINVAL;
+       }
+       ret = fdtdec_get_int_array(blob, node, "rockchip,phy-timing",
+                                  (u32 *)&params.phy_timing,
+                                  sizeof(params.phy_timing) / sizeof(u32));
+       if (ret) {
+               debug("%s: Cannot read rockchip,phy-timing\n", __func__);
+               return -EINVAL;
+       }
+       ret = fdtdec_get_int_array(blob, node, "rockchip,sdram-params",
+                                  (u32 *)&params.base,
+                                  sizeof(params.base) / sizeof(u32));
+       if (ret) {
+               debug("%s: Cannot read rockchip,sdram-params\n", __func__);
+               return -EINVAL;
+       }
+
+       return sdram_init(priv, &params);
+}
+#endif
+
+static int rk3288_dmc_probe(struct udevice *dev)
+{
+       struct dram_info *priv = dev_get_priv(dev);
+       struct regmap *map;
+       int ret;
+
+       map = syscon_get_regmap_by_driver_data(ROCKCHIP_SYSCON_NOC);
+       if (IS_ERR(map))
+               return PTR_ERR(map);
+       priv->chan[0].msch = regmap_get_range(map, 0);
+       priv->chan[1].msch = (struct rk3288_msch *)
+                       (regmap_get_range(map, 0) + 0x80);
+
+       map = syscon_get_regmap_by_driver_data(ROCKCHIP_SYSCON_GRF);
+       if (IS_ERR(map))
+               return PTR_ERR(map);
+       priv->grf = regmap_get_range(map, 0);
+
+       map = syscon_get_regmap_by_driver_data(ROCKCHIP_SYSCON_SGRF);
+       if (IS_ERR(map))
+               return PTR_ERR(map);
+       priv->sgrf = regmap_get_range(map, 0);
+
+       map = syscon_get_regmap_by_driver_data(ROCKCHIP_SYSCON_PMU);
+       if (IS_ERR(map))
+               return PTR_ERR(map);
+       priv->pmu = regmap_get_range(map, 0);
+
+       ret = regmap_init_mem(dev, &map);
+       if (ret)
+               return ret;
+       priv->chan[0].pctl = regmap_get_range(map, 0);
+       priv->chan[0].publ = regmap_get_range(map, 1);
+       priv->chan[1].pctl = regmap_get_range(map, 2);
+       priv->chan[1].publ = regmap_get_range(map, 3);
+
+       ret = uclass_get_device(UCLASS_CLK, CLK_DDR, &priv->ddr_clk);
+       if (ret)
+               return ret;
+
+       priv->cru = rockchip_get_cru();
+       if (IS_ERR(priv->cru))
+               return PTR_ERR(priv->cru);
+#ifdef CONFIG_SPL_BUILD
+       ret = setup_sdram(dev);
+       if (ret)
+               return ret;
+#endif
+       priv->info.base = 0;
+       priv->info.size = sdram_size_mb(priv->pmu) << 20;
+
+       return 0;
+}
+
+static int rk3288_dmc_get_info(struct udevice *dev, struct ram_info *info)
+{
+       struct dram_info *priv = dev_get_priv(dev);
+
+       *info = priv->info;
+
+       return 0;
+}
+
+static struct ram_ops rk3288_dmc_ops = {
+       .get_info = rk3288_dmc_get_info,
+};
+
+static const struct udevice_id rk3288_dmc_ids[] = {
+       { .compatible = "rockchip,rk3288-dmc" },
+       { }
+};
+
+U_BOOT_DRIVER(dmc_rk3288) = {
+       .name = "rk3288_dmc",
+       .id = UCLASS_RAM,
+       .of_match = rk3288_dmc_ids,
+       .ops = &rk3288_dmc_ops,
+       .probe = rk3288_dmc_probe,
+       .priv_auto_alloc_size = sizeof(struct dram_info),
+};
diff --git a/arch/arm/mach-rockchip/rk3288/syscon_rk3288.c b/arch/arm/mach-rockchip/rk3288/syscon_rk3288.c
new file mode 100644 (file)
index 0000000..c9f7c4e
--- /dev/null
@@ -0,0 +1,25 @@
+/*
+ * Copyright (C) 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <syscon.h>
+#include <asm/arch/clock.h>
+
+static const struct udevice_id rk3288_syscon_ids[] = {
+       { .compatible = "rockchip,rk3288-noc", .data = ROCKCHIP_SYSCON_NOC },
+       { .compatible = "rockchip,rk3288-grf", .data = ROCKCHIP_SYSCON_GRF },
+       { .compatible = "rockchip,rk3288-sgrf", .data = ROCKCHIP_SYSCON_SGRF },
+       { .compatible = "rockchip,rk3288-pmu", .data = ROCKCHIP_SYSCON_PMU },
+       { }
+};
+
+U_BOOT_DRIVER(syscon_rk3288) = {
+       .name = "rk3288_syscon",
+       .id = UCLASS_SYSCON,
+       .of_match = rk3288_syscon_ids,
+};
index 690e3628aac0e335f2f0073d6455f3b10311a6fc..089280a91d35cbf40a335fc9aaf14361af84dd41 100644 (file)
@@ -18,15 +18,33 @@ config TARGET_SOCFPGA_CYCLONE5_SOCDK
        bool "Altera SOCFPGA SoCDK (Cyclone V)"
        select TARGET_SOCFPGA_CYCLONE5
 
+config TARGET_SOCFPGA_DENX_MCVEVK
+       bool "DENX MCVEVK (Cyclone V)"
+       select TARGET_SOCFPGA_CYCLONE5
+
+config TARGET_SOCFPGA_TERASIC_DE0_NANO
+       bool "Terasic DE0-Nano-Atlas (Cyclone V)"
+       select TARGET_SOCFPGA_CYCLONE5
+
+config TARGET_SOCFPGA_TERASIC_SOCKIT
+       bool "Terasic SoCkit (Cyclone V)"
+       select TARGET_SOCFPGA_CYCLONE5
+
 endchoice
 
 config SYS_BOARD
        default "arria5-socdk" if TARGET_SOCFPGA_ARRIA5_SOCDK
        default "cyclone5-socdk" if TARGET_SOCFPGA_CYCLONE5_SOCDK
+       default "de0-nano-soc" if TARGET_SOCFPGA_TERASIC_DE0_NANO
+       default "mcvevk" if TARGET_SOCFPGA_DENX_MCVEVK
+       default "sockit" if TARGET_SOCFPGA_TERASIC_SOCKIT
 
 config SYS_VENDOR
        default "altera" if TARGET_SOCFPGA_ARRIA5_SOCDK
        default "altera" if TARGET_SOCFPGA_CYCLONE5_SOCDK
+       default "denx" if TARGET_SOCFPGA_DENX_MCVEVK
+       default "terasic" if TARGET_SOCFPGA_TERASIC_DE0_NANO
+       default "terasic" if TARGET_SOCFPGA_TERASIC_SOCKIT
 
 config SYS_SOC
        default "socfpga"
@@ -34,5 +52,8 @@ config SYS_SOC
 config SYS_CONFIG_NAME
        default "socfpga_arria5" if TARGET_SOCFPGA_ARRIA5_SOCDK
        default "socfpga_cyclone5" if TARGET_SOCFPGA_CYCLONE5_SOCDK
+       default "socfpga_de0_nano_soc" if TARGET_SOCFPGA_TERASIC_DE0_NANO
+       default "socfpga_mcvevk" if TARGET_SOCFPGA_DENX_MCVEVK
+       default "socfpga_sockit" if TARGET_SOCFPGA_TERASIC_SOCKIT
 
 endif
index 945eb646ce851d1009c237fe16fbfb8c35014be6..e8ba90104762d7d38cc917c15a04bc165c89d2de 100644 (file)
@@ -7,6 +7,6 @@
 #ifndef        _SOCFPGA_DWMMC_H_
 #define        _SOCFPGA_DWMMC_H_
 
-extern int socfpga_dwmmc_init(u32 regbase, int bus_width, int index);
+int socfpga_dwmmc_init(const void *blob);
 
 #endif /* _SOCFPGA_SDMMC_H_ */
index 6128d54b188ec2e867fb08e36def7ca507ccddc1..0940cc5a4ff3f684e8b7882d53f496c8955a73a3 100644 (file)
@@ -125,14 +125,7 @@ int cpu_eth_init(bd_t *bis)
  */
 int cpu_mmc_init(bd_t *bis)
 {
-/*
- * FIXME: Temporarily define CONFIG_HPS_SDMMC_BUSWIDTH to prevent breakage
- *        due to missing patches in u-boot/master . The upcoming patch will
- *        switch this to OF probing, so this whole block will go away.
- */
-#define CONFIG_HPS_SDMMC_BUSWIDTH      8
-       return socfpga_dwmmc_init(SOCFPGA_SDMMC_ADDRESS,
-                                 CONFIG_HPS_SDMMC_BUSWIDTH, 0);
+       return socfpga_dwmmc_init(gd->fdt_blob);
 }
 #endif
 
index 1186358a71a3259715173ad95ac4fb74a656db70..b6beaa2f220439a1f5d1c66a1780d2087a4c5f2a 100644 (file)
@@ -7,13 +7,16 @@
 
 #include <common.h>
 #include <asm/io.h>
-#include <asm/arch/reset_manager.h>
 #include <asm/arch/fpga_manager.h>
+#include <asm/arch/reset_manager.h>
+#include <asm/arch/system_manager.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 static const struct socfpga_reset_manager *reset_manager_base =
                (void *)SOCFPGA_RSTMGR_ADDRESS;
+static struct socfpga_system_manager *sysmgr_regs =
+       (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
 
 /* Assert or de-assert SoCFPGA reset manager reset. */
 void socfpga_per_reset(u32 reset, int set)
@@ -97,6 +100,9 @@ void socfpga_bridges_reset(int enable)
                /* brdmodrst */
                writel(0xffffffff, &reset_manager_base->brg_mod_reset);
        } else {
+               writel(0, &sysmgr_regs->iswgrp_handoff[0]);
+               writel(l3mask, &sysmgr_regs->iswgrp_handoff[1]);
+
                /* Check signal from FPGA. */
                if (!fpgamgr_test_fpga_ready()) {
                        /* FPGA not ready, do nothing. */
index 13ec24bc169ef2ffb32fe4affa58985756dee5c6..775a82780f7fb9b2aac63d859f829ca08f2c125f 100644 (file)
@@ -180,6 +180,4 @@ void board_init_f(ulong dummy)
 
        /* Configure simple malloc base pointer into RAM. */
        gd->malloc_base = CONFIG_SYS_TEXT_BASE + (1024 * 1024);
-
-       board_init_r(NULL, 0);
 }
diff --git a/arch/arm/mach-versatile/Kconfig b/arch/arm/mach-versatile/Kconfig
deleted file mode 100644 (file)
index d2e76f4..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if ARCH_VERSATILE
-
-config SYS_BOARD
-       default "versatile"
-
-config SYS_VENDOR
-       default "armltd"
-
-config SYS_SOC
-       default "versatile"
-
-config SYS_CONFIG_NAME
-       default "versatile"
-
-endif
index 9e1e7da2037a85dd0c000a974163eb9a48a1e665..0789c497368db44d9b3fc588cde872c8b51540ef 100644 (file)
@@ -71,6 +71,4 @@
 /* GPIO upper 16 bit mask */
 #define ZYNQ_GPIO_UPPER_MASK 0xFFFF0000
 
-#define BIT(x) (1<<x)
-
 #endif /* _ZYNQ_GPIO_H */
index 5275447cf6c657d806acf180d6552c541296cda6..d81bfd2a50de6a5ad0ab665afd99a2164a957352 100644 (file)
@@ -8,15 +8,11 @@ choice
        prompt "Target select"
        optional
 
-config TARGET_CMI_MPC5XX
-       bool "Support cmi_mpc5xx"
-
 config TARGET_PATI
        bool "Support PATI"
 
 endchoice
 
-source "board/cmi/Kconfig"
 source "board/mpl/pati/Kconfig"
 
 endmenu
index 3e8d0b1badd3bebc6e4c620b64d1feb37d0bea32..ae0823af656fc96dcc7d423abad66e891b526f5b 100644 (file)
@@ -137,12 +137,6 @@ config TARGET_CONTROLCENTERD
 config TARGET_KMP204X
        bool "Support kmp204x"
 
-config TARGET_STXGP3
-       bool "Support stxgp3"
-
-config TARGET_STXSSA
-       bool "Support stxssa"
-
 config TARGET_XPEDITE520X
        bool "Support xpedite520x"
 
@@ -191,8 +185,6 @@ source "board/gdsys/p1022/Kconfig"
 source "board/keymile/kmp204x/Kconfig"
 source "board/sbc8548/Kconfig"
 source "board/socrates/Kconfig"
-source "board/stx/stxgp3/Kconfig"
-source "board/stx/stxssa/Kconfig"
 source "board/xes/xpedite520x/Kconfig"
 source "board/xes/xpedite537x/Kconfig"
 source "board/xes/xpedite550x/Kconfig"
index fd7f5fa7e135c165db7146f0fcc46dffc107704a..85eba0b22db42c0885b027bc2b8a464f3e57fd7f 100644 (file)
@@ -74,7 +74,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 88),
        SET_FMAN_RX_1G_LIODN(1, 1, 89),
        SET_FMAN_RX_1G_LIODN(1, 2, 90),
index 7a2d4be42cec34495b814b4fafcc8ea397151913..7a4465fefc5b60750d22ed9f1d80784adbec18bf 100644 (file)
@@ -57,6 +57,23 @@ static void set_liodn(struct liodn_id_table *tbl, int size)
        }
 }
 
+#ifdef CONFIG_SYS_DPAA_FMAN
+static void set_fman_liodn(struct fman_liodn_id_table *tbl, int size)
+{
+       int i;
+
+       for (i = 0; i < size; i++) {
+               u32 liodn;
+               if (tbl[i].num_ids == 2)
+                       liodn = (tbl[i].id[0] << 16) | tbl[i].id[1];
+               else
+                       liodn = tbl[i].id[0];
+
+               out_be32((volatile u32 *)(tbl[i].reg_offset), liodn);
+       }
+}
+#endif
+
 static void setup_sec_liodn_base(void)
 {
        ccsr_sec_t *sec = (void *)CONFIG_SYS_FSL_SEC_ADDR;
@@ -76,7 +93,7 @@ static void setup_sec_liodn_base(void)
 
 #ifdef CONFIG_SYS_DPAA_FMAN
 static void setup_fman_liodn_base(enum fsl_dpaa_dev dev,
-                                 struct liodn_id_table *tbl, int size)
+                                 struct fman_liodn_id_table *tbl, int size)
 {
        int i;
        ccsr_fman_t *fm;
@@ -180,12 +197,12 @@ void set_liodns(void)
 
        /* setup FMAN block(s) liodn bases & offsets if we have one */
 #ifdef CONFIG_SYS_DPAA_FMAN
-       set_liodn(fman1_liodn_tbl, fman1_liodn_tbl_sz);
+       set_fman_liodn(fman1_liodn_tbl, fman1_liodn_tbl_sz);
        setup_fman_liodn_base(FSL_HW_PORTAL_FMAN1, fman1_liodn_tbl,
                                fman1_liodn_tbl_sz);
 
 #if (CONFIG_SYS_NUM_FMAN == 2)
-       set_liodn(fman2_liodn_tbl, fman2_liodn_tbl_sz);
+       set_fman_liodn(fman2_liodn_tbl, fman2_liodn_tbl_sz);
        setup_fman_liodn_base(FSL_HW_PORTAL_FMAN2, fman2_liodn_tbl,
                                fman2_liodn_tbl_sz);
 #endif
@@ -315,6 +332,43 @@ static void fdt_fixup_liodn_tbl(void *blob, struct liodn_id_table *tbl, int sz)
        }
 }
 
+#ifdef CONFIG_SYS_DPAA_FMAN
+static void fdt_fixup_liodn_tbl_fman(void *blob,
+                                    struct fman_liodn_id_table *tbl,
+                                    int sz)
+{
+       int i;
+
+       for (i = 0; i < sz; i++) {
+               int off;
+
+               if (tbl[i].compat == NULL)
+                       continue;
+
+               /* Try the new compatible first.
+                * If the node is missing, try the old.
+                */
+               off = fdt_node_offset_by_compat_reg(blob,
+                               tbl[i].compat[0], tbl[i].compat_offset);
+               if (off < 0)
+                       off = fdt_node_offset_by_compat_reg(blob,
+                                       tbl[i].compat[1], tbl[i].compat_offset);
+
+               if (off >= 0) {
+                       off = fdt_setprop(blob, off, "fsl,liodn",
+                               &tbl[i].id[0],
+                               sizeof(u32) * tbl[i].num_ids);
+                       if (off > 0)
+                               printf("WARNING unable to set fsl,liodn for FMan Port: %s\n",
+                                      fdt_strerror(off));
+               } else {
+                       debug("WARNING: could not set fsl,liodn for FMan Portport: %s.\n",
+                             fdt_strerror(off));
+               }
+       }
+}
+#endif
+
 void fdt_fixup_liodn(void *blob)
 {
 #ifdef CONFIG_SYS_SRIO
@@ -323,9 +377,9 @@ void fdt_fixup_liodn(void *blob)
 
        fdt_fixup_liodn_tbl(blob, liodn_tbl, liodn_tbl_sz);
 #ifdef CONFIG_SYS_DPAA_FMAN
-       fdt_fixup_liodn_tbl(blob, fman1_liodn_tbl, fman1_liodn_tbl_sz);
+       fdt_fixup_liodn_tbl_fman(blob, fman1_liodn_tbl, fman1_liodn_tbl_sz);
 #if (CONFIG_SYS_NUM_FMAN == 2)
-       fdt_fixup_liodn_tbl(blob, fman2_liodn_tbl, fman2_liodn_tbl_sz);
+       fdt_fixup_liodn_tbl_fman(blob, fman2_liodn_tbl, fman2_liodn_tbl_sz);
 #endif
 #endif
        fdt_fixup_liodn_tbl(blob, sec_liodn_tbl, sec_liodn_tbl_sz);
index 6e3cdddaed8c4e290c359cc6751932435b774edd..8b6d27452eb17171ad1843074853808617c70e14 100644 (file)
@@ -61,7 +61,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 10),
        SET_FMAN_RX_1G_LIODN(1, 1, 11),
        SET_FMAN_RX_1G_LIODN(1, 2, 12),
index 2b57703b2e57190561ff9c0441ce6192e183e526..ff8216bf52f48ad748da502ca2abe230766f047d 100644 (file)
@@ -62,7 +62,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 10),
        SET_FMAN_RX_1G_LIODN(1, 1, 11),
        SET_FMAN_RX_1G_LIODN(1, 2, 12),
index 94a51439a0fcc42b97daff5cefbdc12a2b3ed62a..174eb04d7a0d8c74da1a266f79b139696e11ecb2 100644 (file)
@@ -54,7 +54,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 11),
        SET_FMAN_RX_1G_LIODN(1, 1, 12),
        SET_FMAN_RX_1G_LIODN(1, 2, 13),
@@ -64,7 +64,7 @@ struct liodn_id_table fman1_liodn_tbl[] = {
 int fman1_liodn_tbl_sz = ARRAY_SIZE(fman1_liodn_tbl);
 
 #if (CONFIG_SYS_NUM_FMAN == 2)
-struct liodn_id_table fman2_liodn_tbl[] = {
+struct fman_liodn_id_table fman2_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(2, 0, 16),
        SET_FMAN_RX_1G_LIODN(2, 1, 17),
        SET_FMAN_RX_1G_LIODN(2, 2, 18),
index 0f292cf5a8e56d87c27ee2b89343a151d1da1b8e..99e3e91e45ada083b1b2ac94b707ec70436267f1 100644 (file)
@@ -62,7 +62,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 10),
        SET_FMAN_RX_1G_LIODN(1, 1, 11),
        SET_FMAN_RX_1G_LIODN(1, 2, 12),
index 98a568fb1017b51d5cde4f7a9516e588a7d6e2ad..1c99f9ffe357e7e909726d2898ad71b73c7494a2 100644 (file)
@@ -48,7 +48,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 11),
        SET_FMAN_RX_1G_LIODN(1, 1, 12),
        SET_FMAN_RX_1G_LIODN(1, 2, 13),
@@ -59,7 +59,7 @@ struct liodn_id_table fman1_liodn_tbl[] = {
 int fman1_liodn_tbl_sz = ARRAY_SIZE(fman1_liodn_tbl);
 
 #if (CONFIG_SYS_NUM_FMAN == 2)
-struct liodn_id_table fman2_liodn_tbl[] = {
+struct fman_liodn_id_table fman2_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(2, 0, 17),
        SET_FMAN_RX_1G_LIODN(2, 1, 18),
        SET_FMAN_RX_1G_LIODN(2, 2, 19),
index a70fb711c7bbbe579af1a148c4a43004e68cd710..d867e2a767a4f5b91c5e70211d13dd943c136957 100644 (file)
@@ -1116,7 +1116,11 @@ switch_as:
        li      r0,0
 1:
        dcbz    r0,r3
-       dcbtls  0,r0,r3
+#ifdef CONFIG_E6500    /* Lock/unlock L2 cache instead of L1 */
+       dcbtls  2, r0, r3
+#else
+       dcbtls  0, r0, r3
+#endif
        addi    r3,r3,CONFIG_SYS_CACHELINE_SIZE
        bdnz    1b
 
@@ -1727,7 +1731,11 @@ unlock_ram_in_cache:
        slwi    r4,r4,(10 - 1 - L1_CACHE_SHIFT)
        mtctr   r4
 1:     dcbi    r0,r3
+#ifdef CONFIG_E6500    /* lock/unlock L2 cache instead of L1 */
+       dcblc   2, r0, r3
+#else
        dcblc   r0,r3
+#endif
        addi    r3,r3,CONFIG_SYS_CACHELINE_SIZE
        bdnz    1b
        sync
index 8a1092ea655cf0bfd7a8780e723b56a04a70cdca..8f95e335d8240ceda6ca054b194d3ead155dfc73 100644 (file)
@@ -50,7 +50,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_10G_TYPE2_LIODN(1, 0, 88),
        SET_FMAN_RX_1G_LIODN(1, 1, 89),
        SET_FMAN_RX_1G_LIODN(1, 2, 90),
index 80917224b95eeee49126c9d58d006094aac8ddad..b98c7bcd61720e111f967ff976b24bf39451d288 100644 (file)
@@ -55,7 +55,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 88),
        SET_FMAN_RX_1G_LIODN(1, 1, 89),
        SET_FMAN_RX_1G_LIODN(1, 2, 90),
index eda7f59da0fa1c9c1bf738aa2506ebe28f2d59b3..868f2d5ca17221cd5e7f81fad48d7abe5960e013 100644 (file)
@@ -83,7 +83,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 88),
        SET_FMAN_RX_1G_LIODN(1, 1, 89),
        SET_FMAN_RX_1G_LIODN(1, 2, 90),
index 470b0800bf3b80d743192536e13e919d4fcc2043..14ada9e690a3748ff22da08f698c0adea664790b 100644 (file)
@@ -112,7 +112,7 @@ struct liodn_id_table liodn_tbl[] = {
 int liodn_tbl_sz = ARRAY_SIZE(liodn_tbl);
 
 #ifdef CONFIG_SYS_DPAA_FMAN
-struct liodn_id_table fman1_liodn_tbl[] = {
+struct fman_liodn_id_table fman1_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(1, 0, 88),
        SET_FMAN_RX_1G_LIODN(1, 1, 89),
        SET_FMAN_RX_1G_LIODN(1, 2, 90),
@@ -124,7 +124,7 @@ struct liodn_id_table fman1_liodn_tbl[] = {
 };
 int fman1_liodn_tbl_sz = ARRAY_SIZE(fman1_liodn_tbl);
 #if (CONFIG_SYS_NUM_FMAN == 2)
-struct liodn_id_table fman2_liodn_tbl[] = {
+struct fman_liodn_id_table fman2_liodn_tbl[] = {
        SET_FMAN_RX_1G_LIODN(2, 0, 88),
        SET_FMAN_RX_1G_LIODN(2, 1, 89),
        SET_FMAN_RX_1G_LIODN(2, 2, 90),
index 10b86e058ae38dcec3a4e55900d18a77a2bd61c3..23ecc895fbcd7b93072e413acd0051d33192a5fc 100644 (file)
@@ -8,28 +8,9 @@ choice
        prompt "Target select"
        optional
 
-config TARGET_CSB272
-       bool "Support csb272"
-
-config TARGET_CSB472
-       bool "Support csb472"
-
-config TARGET_LWMON5
-       bool "Support lwmon5"
-       select SUPPORT_SPL
-
-config TARGET_PCS440EP
-       bool "Support pcs440ep"
-
-config TARGET_SBC405
-       bool "Support sbc405"
-
 config TARGET_T3CORP
        bool "Support t3corp"
 
-config TARGET_ZEUS
-       bool "Support zeus"
-
 config TARGET_ACADIA
        bool "Support acadia"
 
@@ -140,12 +121,6 @@ config TARGET_MIP405
 config TARGET_PIP405
        bool "Support PIP405"
 
-config TARGET_ALPR
-       bool "Support alpr"
-
-config TARGET_P3P440
-       bool "Support p3p440"
-
 config TARGET_XPEDITE1000
        bool "Support xpedite1000"
 
@@ -179,8 +154,6 @@ source "board/amcc/yosemite/Kconfig"
 source "board/amcc/yucca/Kconfig"
 source "board/avnet/fx12mm/Kconfig"
 source "board/avnet/v5fx30teval/Kconfig"
-source "board/csb272/Kconfig"
-source "board/csb472/Kconfig"
 source "board/esd/cpci2dp/Kconfig"
 source "board/esd/cpci405/Kconfig"
 source "board/esd/plu405/Kconfig"
@@ -192,19 +165,13 @@ source "board/gdsys/405ex/Kconfig"
 source "board/gdsys/dlvision/Kconfig"
 source "board/gdsys/gdppc440etx/Kconfig"
 source "board/gdsys/intip/Kconfig"
-source "board/lwmon5/Kconfig"
 source "board/mosaixtech/icon/Kconfig"
 source "board/mpl/mip405/Kconfig"
 source "board/mpl/pip405/Kconfig"
-source "board/pcs440ep/Kconfig"
-source "board/prodrive/alpr/Kconfig"
-source "board/prodrive/p3p440/Kconfig"
-source "board/sbc405/Kconfig"
 source "board/t3corp/Kconfig"
 source "board/xes/xpedite1000/Kconfig"
 source "board/xilinx/ml507/Kconfig"
 source "board/xilinx/ppc405-generic/Kconfig"
 source "board/xilinx/ppc440-generic/Kconfig"
-source "board/zeus/Kconfig"
 
 endmenu
index 7a0f0d25d14daf0745d7f978343a540a36a862a1..77d4040727226a670504de157c7c6e20813c68b4 100644 (file)
@@ -1805,21 +1805,6 @@ ppc405ep_init:
        bne     _pci_66mhz
 #endif /* CONFIG_TAIHU */
 
-#if defined(CONFIG_ZEUS)
-       mfdcr   r4, CPC0_BOOT
-       andi.   r5, r4, CPC0_BOOT_SEP@l
-       bne     strap_1                 /* serial eeprom present */
-       lis     r3,0x0000
-       addi    r3,r3,0x3030
-       lis     r4,0x8042
-       addi    r4,r4,0x223e
-       b       1f
-strap_1:
-       mfdcr   r3, CPC0_PLLMR0
-       mfdcr   r4, CPC0_PLLMR1
-       b       1f
-#endif
-
        addis   r3,0,PLLMR0_DEFAULT@h   /* PLLMR0 default value */
        ori     r3,r3,PLLMR0_DEFAULT@l  /* */
        addis   r4,0,PLLMR1_DEFAULT@h   /* PLLMR1 default value */
index 6206bee5d337b2766a3692032240b0129b5c5506..8c91e722f4784e84478652067e70e88100c431f1 100644 (file)
@@ -44,6 +44,18 @@ struct liodn_id_table {
        unsigned long reg_offset;
 };
 
+struct fman_liodn_id_table {
+       /* Freescale FMan Device Tree binding was updated for FMan.
+        * We need to support both new and old compatibles in order not to
+        * break backward compatibility.
+        */
+       const char *compat[2];
+       u32 id[2];
+       u8 num_ids;
+       phys_addr_t compat_offset;
+       unsigned long reg_offset;
+};
+
 extern u32 get_ppid_liodn(int ppid_tbl_idx, int ppid);
 extern void set_liodns(void);
 extern void fdt_fixup_liodn(void *blob);
@@ -54,6 +66,14 @@ extern void fdt_fixup_liodn(void *blob);
 #define SET_LIODN_BASE_2(idA, idB) \
        { .id = { idA, idB }, .num_ids = 2 }
 
+#define SET_FMAN_LIODN_ENTRY(name1, name2, idA, off, compatoff)\
+       { .compat[0] = name1, \
+         .compat[1] = name2, \
+         .id = { idA }, .num_ids = 1, \
+         .reg_offset = off + CONFIG_SYS_CCSRBAR, \
+         .compat_offset = compatoff + CONFIG_SYS_CCSRBAR_PHYS, \
+       }
+
 #define SET_LIODN_ENTRY_1(name, idA, off, compatoff) \
        { .compat = name, \
          .id = { idA }, .num_ids = 1, \
@@ -133,24 +153,37 @@ extern void fdt_fixup_liodn(void *blob);
        CONFIG_SYS_FSL_FM##fmNum##_OFFSET + \
        offsetof(struct ccsr_fman, fm_bmi_common.fmbm_ppid[portID - 1])
 
+#ifdef CONFIG_SYS_FMAN_V3
 /* enetNum is 0, 1, 2... so we + 8 for 1g to get to HW Port ID */
 #define SET_FMAN_RX_1G_LIODN(fmNum, enetNum, liodn) \
-       SET_LIODN_ENTRY_1("fsl,fman-port-1g-rx", liodn, \
-               FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 8), \
-               CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_1G_OFFSET) \
+       SET_FMAN_LIODN_ENTRY("fsl,fman-v3-port-rx", "fsl,fman-port-1g-rx", \
+               liodn, FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 8), \
+               CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_1G_OFFSET)
 
 /* enetNum is 0, 1, 2... so we + 16 for 10g to get to HW Port ID */
 #define SET_FMAN_RX_10G_LIODN(fmNum, enetNum, liodn) \
-       SET_LIODN_ENTRY_1("fsl,fman-port-10g-rx", liodn, \
-               FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 16), \
-               CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_10G_OFFSET) \
+       SET_FMAN_LIODN_ENTRY("fsl,fman-v3-port-rx", "fsl,fman-port-10g-rx", \
+               liodn, FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 16), \
+               CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_10G_OFFSET)
 
 /* enetNum is 0, 1, 2... so we + 8 for type-2 10g to get to HW Port ID */
 #define SET_FMAN_RX_10G_TYPE2_LIODN(fmNum, enetNum, liodn) \
-       SET_LIODN_ENTRY_1("fsl,fman-port-10g-rx", liodn, \
-               FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 8), \
-               CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_1G_OFFSET) \
+       SET_FMAN_LIODN_ENTRY("fsl,fman-v3-port-rx", "fsl,fman-port-10g-rx", \
+               liodn, FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 8), \
+               CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_1G_OFFSET)
+#else
+/* enetNum is 0, 1, 2... so we + 8 for 1g to get to HW Port ID */
+#define SET_FMAN_RX_1G_LIODN(fmNum, enetNum, liodn) \
+       SET_FMAN_LIODN_ENTRY("fsl,fman-v2-port-rx", "fsl,fman-port-1g-rx", \
+               liodn, FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 8), \
+               CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_1G_OFFSET)
 
+/* enetNum is 0, 1, 2... so we + 16 for 10g to get to HW Port ID */
+#define SET_FMAN_RX_10G_LIODN(fmNum, enetNum, liodn) \
+       SET_FMAN_LIODN_ENTRY("fsl,fman-v2-port-rx", "fsl,fman-port-10g-rx", \
+               liodn, FM_PPID_RX_PORT_OFFSET(fmNum, enetNum + 16), \
+               CONFIG_SYS_FSL_FM##fmNum##_RX##enetNum##_10G_OFFSET)
+#endif
 /*
  * handle both old and new versioned SEC properties:
  * "fsl,secX.Y" became "fsl,sec-vX.Y" during development
@@ -199,7 +232,7 @@ extern void fdt_fixup_liodn(void *blob);
 
 extern struct liodn_id_table liodn_tbl[], liodn_bases[], sec_liodn_tbl[];
 extern struct liodn_id_table raide_liodn_tbl[];
-extern struct liodn_id_table fman1_liodn_tbl[], fman2_liodn_tbl[];
+extern struct fman_liodn_id_table fman1_liodn_tbl[], fman2_liodn_tbl[];
 #ifdef CONFIG_SYS_SRIO
 extern struct srio_liodn_id_table srio_liodn_tbl[];
 extern int srio_liodn_tbl_sz;
index d57bb556927decb412a3ea271482997e012e0e1b..87415b123f4a325efdddd4c15b5c71a46d115846 100644 (file)
        #define CONFIG_FSL_TRUST_ARCH_v1
 #endif
 
-#if defined(CONFIG_FSL_CORENET)
+#if defined(CONFIG_FSL_CORENET) && !defined(CONFIG_SYS_RAMBOOT)
 /* The key used for verification of next level images
  * is picked up from an Extension Table which has
  * been verified by the ISBC (Internal Secure boot Code)
- * in boot ROM of the SoC
+ * in boot ROM of the SoC.
+ * The feature is only applicable in case of NOR boot and is
+ * not applicable in case of RAMBOOT (NAND, SD, SPI).
  */
 #define CONFIG_FSL_ISBC_KEY_EXT
 #endif
index 4090975bf5e79224b837bb5321d2bfe371e23805..2527ef88deb4c85f59d104ca56e4daa2ab2f576a 100644 (file)
@@ -106,12 +106,6 @@ struct arch_global_data {
 #ifdef CONFIG_SYS_FPGA_COUNT
        unsigned fpga_state[CONFIG_SYS_FPGA_COUNT];
 #endif
-#if defined(CONFIG_WD_MAX_RATE)
-       unsigned long long wdt_last;    /* trace watch-dog triggering rate */
-#endif
-#if defined(CONFIG_LWMON5)
-       unsigned long kbd_status;
-#endif
 };
 
 #include <asm-generic/global_data.h>
index 89275271413095e2d4d6242ee523e4206070ac8c..65b9125f5fcc753f87f85cf964c9b8f013986307 100644 (file)
@@ -92,6 +92,8 @@
                reg = <0 0>;
                compatible = "sandbox,i2c";
                clock-frequency = <400000>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_i2c0>;
                eeprom@2c {
                        reg = <0x2c>;
                        compatible = "i2c-eeprom";
                };
        };
 
+       pinctrl {
+               compatible = "sandbox,pinctrl";
+
+               pinctrl_i2c0: i2c0 {
+                       groups = "i2c";
+                       function = "i2c";
+                       bias-pull-up;
+               };
+
+               pinctrl_serial0: uart0 {
+                       groups = "serial_a";
+                       function = "serial";
+               };
+       };
+
        spi@0 {
                #address-cells = <1>;
                #size-cells = <0>;
                sides = <4>;
        };
 
+       tpm {
+               compatible = "google,sandbox-tpm";
+       };
+
        triangle {
                compatible = "demo-shape";
                colour = "cyan";
        uart0: serial {
                compatible = "sandbox,serial";
                sandbox,text-colour = "cyan";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pinctrl_serial0>;
        };
 
        usb@0 {
index c948df8c864bc3fae1fa6b30fd5f9658fb2064bf..f5217fb87778614f783483ef7b0ee774b64ca2c3 100644 (file)
@@ -9,6 +9,7 @@
        aliases {
                console = &uart0;
                eth0 = "/eth@10002000";
+               eth3 = &eth_3;
                eth5 = &eth_5;
                i2c0 = "/i2c@0";
                pci0 = &pci;
                fake-host-hwaddr = <0x00 0x00 0x66 0x44 0x22 0x11>;
        };
 
+       eth_3: sbe5 {
+               compatible = "sandbox,eth";
+               reg = <0x10005000 0x1000>;
+               fake-host-hwaddr = <0x00 0x00 0x66 0x44 0x22 0x33>;
+       };
+
        eth@10004000 {
                compatible = "sandbox,eth";
                reg = <0x10004000 0x1000>;
index 0e9f15fef68a7eec36421645e2af511280cd05fb..845f86a1766c15afd9da5c0630978dcd3930b40d 100644 (file)
@@ -8,7 +8,6 @@
 
 #include <common.h>
 #include <fdtdec.h>
-#include <netdev.h>
 #include <asm/io.h>
 #include <asm/msr.h>
 #include <asm/mtrr.h>
@@ -48,11 +47,6 @@ int last_stage_init(void)
        return 0;
 }
 
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
-
 void board_final_cleanup(void)
 {
        /*
index e87b4248e69b56fb8e97323f6ebe5c4b104b6631..8f1d018fb60841d700939a42d5f46298be443fa9 100644 (file)
@@ -6,4 +6,3 @@
 
 obj-y += car.o dram.o msg_port.o quark.o
 obj-y += mrc.o mrc_util.o hte.o smc.o
-obj-$(CONFIG_PCI) += pci.o
index 31713e321f2cf6c02e8b80f2458c38491d642fed..cf828f21c0104f9acf8fbb6cdbe3c11c54c23bde 100644 (file)
@@ -5,34 +5,34 @@
  */
 
 #include <common.h>
-#include <pci.h>
 #include <asm/arch/device.h>
 #include <asm/arch/msg_port.h>
+#include <asm/arch/quark.h>
 
 void msg_port_setup(int op, int port, int reg)
 {
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_REG,
-                              (((op) << 24) | ((port) << 16) |
-                              (((reg) << 8) & 0xff00) | MSG_BYTE_ENABLE));
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_REG,
+                                  (((op) << 24) | ((port) << 16) |
+                                  (((reg) << 8) & 0xff00) | MSG_BYTE_ENABLE));
 }
 
 u32 msg_port_read(u8 port, u32 reg)
 {
        u32 value;
 
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
-                              reg & 0xffffff00);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
+                                  reg & 0xffffff00);
        msg_port_setup(MSG_OP_READ, port, reg);
-       pci_read_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, &value);
+       qrk_pci_read_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, &value);
 
        return value;
 }
 
 void msg_port_write(u8 port, u32 reg, u32 value)
 {
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, value);
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
-                              reg & 0xffffff00);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, value);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
+                                  reg & 0xffffff00);
        msg_port_setup(MSG_OP_WRITE, port, reg);
 }
 
@@ -40,19 +40,19 @@ u32 msg_port_alt_read(u8 port, u32 reg)
 {
        u32 value;
 
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
-                              reg & 0xffffff00);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
+                                  reg & 0xffffff00);
        msg_port_setup(MSG_OP_ALT_READ, port, reg);
-       pci_read_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, &value);
+       qrk_pci_read_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, &value);
 
        return value;
 }
 
 void msg_port_alt_write(u8 port, u32 reg, u32 value)
 {
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, value);
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
-                              reg & 0xffffff00);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, value);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
+                                  reg & 0xffffff00);
        msg_port_setup(MSG_OP_ALT_WRITE, port, reg);
 }
 
@@ -60,18 +60,18 @@ u32 msg_port_io_read(u8 port, u32 reg)
 {
        u32 value;
 
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
-                              reg & 0xffffff00);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
+                                  reg & 0xffffff00);
        msg_port_setup(MSG_OP_IO_READ, port, reg);
-       pci_read_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, &value);
+       qrk_pci_read_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, &value);
 
        return value;
 }
 
 void msg_port_io_write(u8 port, u32 reg, u32 value)
 {
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, value);
-       pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
-                              reg & 0xffffff00);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_DATA_REG, value);
+       qrk_pci_write_config_dword(QUARK_HOST_BRIDGE, MSG_CTRL_EXT_REG,
+                                  reg & 0xffffff00);
        msg_port_setup(MSG_OP_IO_WRITE, port, reg);
 }
diff --git a/arch/x86/cpu/quark/pci.c b/arch/x86/cpu/quark/pci.c
deleted file mode 100644 (file)
index 354e15a..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2015, Bin Meng <bmeng.cn@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <pci.h>
-#include <asm/pci.h>
-#include <asm/arch/device.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void board_pci_setup_hose(struct pci_controller *hose)
-{
-       hose->first_busno = 0;
-       hose->last_busno = 0;
-
-       /* PCI memory space */
-       pci_set_region(hose->regions + 0,
-                      CONFIG_PCI_MEM_BUS,
-                      CONFIG_PCI_MEM_PHYS,
-                      CONFIG_PCI_MEM_SIZE,
-                      PCI_REGION_MEM);
-
-       /* PCI IO space */
-       pci_set_region(hose->regions + 1,
-                      CONFIG_PCI_IO_BUS,
-                      CONFIG_PCI_IO_PHYS,
-                      CONFIG_PCI_IO_SIZE,
-                      PCI_REGION_IO);
-
-       pci_set_region(hose->regions + 2,
-                      CONFIG_PCI_PREF_BUS,
-                      CONFIG_PCI_PREF_PHYS,
-                      CONFIG_PCI_PREF_SIZE,
-                      PCI_REGION_PREFETCH);
-
-       pci_set_region(hose->regions + 3,
-                      0,
-                      0,
-                      gd->ram_size,
-                      PCI_REGION_MEM | PCI_REGION_SYS_MEMORY);
-
-       hose->region_count = 4;
-}
-
-int board_pci_post_scan(struct pci_controller *hose)
-{
-       return 0;
-}
-
-int pci_skip_dev(struct pci_controller *hose, pci_dev_t dev)
-{
-       /*
-        * TODO:
-        *
-        * For some unknown reason, the PCI enumeration process hangs
-        * when it scans to the PCIe root port 0 (D23:F0) & 1 (D23:F1).
-        *
-        * For now we just skip these two devices, and this needs to
-        * be revisited later.
-        */
-       if (dev == QUARK_HOST_BRIDGE ||
-           dev == QUARK_PCIE0 || dev == QUARK_PCIE1) {
-               return 1;
-       }
-
-       return 0;
-}
index 12ac3761d2565ec5e4ffb3435ec56d81ecb14410..637c370e818acfd68a571c126273d2dbc16b4e78 100644 (file)
@@ -31,32 +31,32 @@ static void unprotect_spi_flash(void)
 {
        u32 bc;
 
-       bc = x86_pci_read_config32(QUARK_LEGACY_BRIDGE, 0xd8);
+       qrk_pci_read_config_dword(QUARK_LEGACY_BRIDGE, 0xd8, &bc);
        bc |= 0x1;      /* unprotect the flash */
-       x86_pci_write_config32(QUARK_LEGACY_BRIDGE, 0xd8, bc);
+       qrk_pci_write_config_dword(QUARK_LEGACY_BRIDGE, 0xd8, bc);
 }
 
 static void quark_setup_bars(void)
 {
        /* GPIO - D31:F0:R44h */
-       pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_GBA,
-                              CONFIG_GPIO_BASE | IO_BAR_EN);
+       qrk_pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_GBA,
+                                  CONFIG_GPIO_BASE | IO_BAR_EN);
 
        /* ACPI PM1 Block - D31:F0:R48h */
-       pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_PM1BLK,
-                              CONFIG_ACPI_PM1_BASE | IO_BAR_EN);
+       qrk_pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_PM1BLK,
+                                  CONFIG_ACPI_PM1_BASE | IO_BAR_EN);
 
        /* GPE0 - D31:F0:R4Ch */
-       pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_GPE0BLK,
-                              CONFIG_ACPI_GPE0_BASE | IO_BAR_EN);
+       qrk_pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_GPE0BLK,
+                                  CONFIG_ACPI_GPE0_BASE | IO_BAR_EN);
 
        /* WDT - D31:F0:R84h */
-       pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_WDTBA,
-                              CONFIG_WDT_BASE | IO_BAR_EN);
+       qrk_pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_WDTBA,
+                                  CONFIG_WDT_BASE | IO_BAR_EN);
 
        /* RCBA - D31:F0:RF0h */
-       pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_RCBA,
-                              CONFIG_RCBA_BASE | MEM_BAR_EN);
+       qrk_pci_write_config_dword(QUARK_LEGACY_BRIDGE, LB_RCBA,
+                                  CONFIG_RCBA_BASE | MEM_BAR_EN);
 
        /* ACPI P Block - Msg Port 04:R70h */
        msg_port_write(MSG_PORT_RMU, PBLK_BA,
@@ -73,6 +73,96 @@ static void quark_setup_bars(void)
                       CONFIG_PCIE_ECAM_BASE | MEM_BAR_EN);
 }
 
+static void quark_pcie_early_init(void)
+{
+       u32 pcie_cfg;
+
+       /*
+        * Step1: Assert PCIe signal PERST#
+        *
+        * The CPU interface to the PERST# signal is platform dependent.
+        * Call the board-specific codes to perform this task.
+        */
+       board_assert_perst();
+
+       /* Step2: PHY common lane reset */
+       pcie_cfg = msg_port_alt_read(MSG_PORT_SOC_UNIT, PCIE_CFG);
+       pcie_cfg |= PCIE_PHY_LANE_RST;
+       msg_port_alt_write(MSG_PORT_SOC_UNIT, PCIE_CFG, pcie_cfg);
+       /* wait 1 ms for PHY common lane reset */
+       mdelay(1);
+
+       /* Step3: PHY sideband interface reset and controller main reset */
+       pcie_cfg = msg_port_alt_read(MSG_PORT_SOC_UNIT, PCIE_CFG);
+       pcie_cfg |= (PCIE_PHY_SB_RST | PCIE_CTLR_MAIN_RST);
+       msg_port_alt_write(MSG_PORT_SOC_UNIT, PCIE_CFG, pcie_cfg);
+       /* wait 80ms for PLL to lock */
+       mdelay(80);
+
+       /* Step4: Controller sideband interface reset */
+       pcie_cfg = msg_port_alt_read(MSG_PORT_SOC_UNIT, PCIE_CFG);
+       pcie_cfg |= PCIE_CTLR_SB_RST;
+       msg_port_alt_write(MSG_PORT_SOC_UNIT, PCIE_CFG, pcie_cfg);
+       /* wait 20ms for controller sideband interface reset */
+       mdelay(20);
+
+       /* Step5: De-assert PERST# */
+       board_deassert_perst();
+
+       /* Step6: Controller primary interface reset */
+       pcie_cfg = msg_port_alt_read(MSG_PORT_SOC_UNIT, PCIE_CFG);
+       pcie_cfg |= PCIE_CTLR_PRI_RST;
+       msg_port_alt_write(MSG_PORT_SOC_UNIT, PCIE_CFG, pcie_cfg);
+
+       /* Mixer Load Lane 0 */
+       pcie_cfg = msg_port_io_read(MSG_PORT_PCIE_AFE, PCIE_RXPICTRL0_L0);
+       pcie_cfg &= ~((1 << 6) | (1 << 7));
+       msg_port_io_write(MSG_PORT_PCIE_AFE, PCIE_RXPICTRL0_L0, pcie_cfg);
+
+       /* Mixer Load Lane 1 */
+       pcie_cfg = msg_port_io_read(MSG_PORT_PCIE_AFE, PCIE_RXPICTRL0_L1);
+       pcie_cfg &= ~((1 << 6) | (1 << 7));
+       msg_port_io_write(MSG_PORT_PCIE_AFE, PCIE_RXPICTRL0_L1, pcie_cfg);
+}
+
+static void quark_usb_early_init(void)
+{
+       u32 usb;
+
+       /* The sequence below comes from Quark firmware writer guide */
+
+       usb = msg_port_alt_read(MSG_PORT_USB_AFE, USB2_GLOBAL_PORT);
+       usb &= ~(1 << 1);
+       usb |= ((1 << 6) | (1 << 7));
+       msg_port_alt_write(MSG_PORT_USB_AFE, USB2_GLOBAL_PORT, usb);
+
+       usb = msg_port_alt_read(MSG_PORT_USB_AFE, USB2_COMPBG);
+       usb &= ~((1 << 8) | (1 << 9));
+       usb |= ((1 << 7) | (1 << 10));
+       msg_port_alt_write(MSG_PORT_USB_AFE, USB2_COMPBG, usb);
+
+       usb = msg_port_alt_read(MSG_PORT_USB_AFE, USB2_PLL2);
+       usb |= (1 << 29);
+       msg_port_alt_write(MSG_PORT_USB_AFE, USB2_PLL2, usb);
+
+       usb = msg_port_alt_read(MSG_PORT_USB_AFE, USB2_PLL1);
+       usb |= (1 << 1);
+       msg_port_alt_write(MSG_PORT_USB_AFE, USB2_PLL1, usb);
+
+       usb = msg_port_alt_read(MSG_PORT_USB_AFE, USB2_PLL1);
+       usb &= ~((1 << 3) | (1 << 4) | (1 << 5));
+       usb |= (1 << 6);
+       msg_port_alt_write(MSG_PORT_USB_AFE, USB2_PLL1, usb);
+
+       usb = msg_port_alt_read(MSG_PORT_USB_AFE, USB2_PLL2);
+       usb &= ~(1 << 29);
+       msg_port_alt_write(MSG_PORT_USB_AFE, USB2_PLL2, usb);
+
+       usb = msg_port_alt_read(MSG_PORT_USB_AFE, USB2_PLL2);
+       usb |= (1 << 24);
+       msg_port_alt_write(MSG_PORT_USB_AFE, USB2_PLL2, usb);
+}
+
 static void quark_enable_legacy_seg(void)
 {
        u32 hmisc2;
@@ -84,7 +174,6 @@ static void quark_enable_legacy_seg(void)
 
 int arch_cpu_init(void)
 {
-       struct pci_controller *hose;
        int ret;
 
        post_code(POST_CPU_INIT);
@@ -96,16 +185,26 @@ int arch_cpu_init(void)
        if (ret)
                return ret;
 
-       ret = pci_early_init_hose(&hose);
-       if (ret)
-               return ret;
-
        /*
         * Quark SoC has some non-standard BARs (excluding PCI standard BARs)
         * which need be initialized with suggested values
         */
        quark_setup_bars();
 
+       /*
+        * Initialize PCIe controller
+        *
+        * Quark SoC holds the PCIe controller in reset following a power on.
+        * U-Boot needs to release the PCIe controller from reset. The PCIe
+        * controller (D23:F0/F1) will not be visible in PCI configuration
+        * space and any access to its PCI configuration registers will cause
+        * system hang while it is held in reset.
+        */
+       quark_pcie_early_init();
+
+       /* Initialize USB2 PHY */
+       quark_usb_early_init();
+
        /* Turn on legacy segments (A/B/E/F) decode to system RAM */
        quark_enable_legacy_seg();
 
@@ -137,10 +236,10 @@ int cpu_eth_init(bd_t *bis)
        u32 base;
        int ret0, ret1;
 
-       pci_read_config_dword(QUARK_EMAC0, PCI_BASE_ADDRESS_0, &base);
+       qrk_pci_read_config_dword(QUARK_EMAC0, PCI_BASE_ADDRESS_0, &base);
        ret0 = designware_initialize(base, PHY_INTERFACE_MODE_RMII);
 
-       pci_read_config_dword(QUARK_EMAC1, PCI_BASE_ADDRESS_0, &base);
+       qrk_pci_read_config_dword(QUARK_EMAC1, PCI_BASE_ADDRESS_0, &base);
        ret1 = designware_initialize(base, PHY_INTERFACE_MODE_RMII);
 
        if (ret0 < 0 && ret1 < 0)
@@ -154,7 +253,7 @@ void cpu_irq_init(void)
        struct quark_rcba *rcba;
        u32 base;
 
-       base = x86_pci_read_config32(QUARK_LEGACY_BRIDGE, LB_RCBA);
+       qrk_pci_read_config_dword(QUARK_LEGACY_BRIDGE, LB_RCBA, &base);
        base &= ~MEM_BAR_EN;
        rcba = (struct quark_rcba *)base;
 
index ad390bf11721a3b161c3b55a1c517ddf1e55eb5b..4291141dfee898a642394f65b51c911825371259 100644 (file)
                };
        };
 
+       tpm {
+               reg = <0xfed40000 0x5000>;
+               compatible = "infineon,slb9635lpc";
+       };
+
        microcode {
                update@0 {
 #include "microcode/m12306a9_0000001b.dtsi"
index 84eae3ab6513ac0990ebab28255936d24ff684c0..c60ab710d2fdef390c049a406131ab17e49d7054 100644 (file)
                stdout-path = "/serial";
        };
 
+       pci {
+               compatible = "pci-x86";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               u-boot,dm-pre-reloc;
+               ranges = <0x02000000 0x0 0xe0000000 0xe0000000 0 0x10000000
+                       0x42000000 0x0 0xd0000000 0xd0000000 0 0x10000000
+                       0x01000000 0x0 0x1000 0x1000 0 0xf000>;
+       };
+
        spi {
                #address-cells = <1>;
                #size-cells = <0>;
@@ -62,4 +72,9 @@
                };
        };
 
+       tpm {
+               reg = <0xfed40000 0x5000>;
+               compatible = "infineon,slb9635lpc";
+       };
+
 };
index d77ff8ad5558c30e06de3fb69866ee68859567b0..f119bf7f42c9e7d1f156dbb2f4e1790c195b1319 100644 (file)
        pci {
                #address-cells = <3>;
                #size-cells = <2>;
-               compatible = "intel,pci";
-               device_type = "pci";
+               compatible = "pci-x86";
+               u-boot,dm-pre-reloc;
+               ranges = <0x02000000 0x0 0x90000000 0x90000000 0 0x20000000
+                         0x42000000 0x0 0xb0000000 0xb0000000 0 0x20000000
+                         0x01000000 0x0 0x2000 0x2000 0 0xe000>;
 
                pciuart0: uart@14,5 {
                        compatible = "pci8086,0936.00",
@@ -63,6 +66,7 @@
                                        "pciclass,070002",
                                        "pciclass,0700",
                                        "x86-uart";
+                       u-boot,dm-pre-reloc;
                        reg = <0x0000a500 0x0 0x0 0x0 0x0
                               0x0200a510 0x0 0x0 0x0 0x0>;
                        reg-shift = <2>;
index c9979280b625a9ebe3ff5c7236a332dc352c0b10..5d81976998d36a0013ecbc4f7fec86bd0e71e55f 100644 (file)
@@ -12,6 +12,8 @@
 #define MSG_PORT_HOST_BRIDGE   0x03
 #define MSG_PORT_RMU           0x04
 #define MSG_PORT_MEM_MGR       0x05
+#define MSG_PORT_USB_AFE       0x14
+#define MSG_PORT_PCIE_AFE      0x16
 #define MSG_PORT_SOC_UNIT      0x31
 
 /* Port 0x00: Memory Arbiter Message Port Registers */
 #define ESRAM_BLK_CTRL         0x82
 #define ESRAM_BLOCK_MODE       0x10000000
 
+/* Port 0x14: USB2 AFE Unit Port Registers */
+
+#define USB2_GLOBAL_PORT       0x4001
+#define USB2_PLL1              0x7f02
+#define USB2_PLL2              0x7f03
+#define USB2_COMPBG            0x7f04
+
+/* Port 0x16: PCIe AFE Unit Port Registers */
+
+#define PCIE_RXPICTRL0_L0      0x2080
+#define PCIE_RXPICTRL0_L1      0x2180
+
+/* Port 0x31: SoC Unit Port Registers */
+
+/* PCIe Controller Config */
+#define PCIE_CFG               0x36
+#define PCIE_CTLR_PRI_RST      0x00010000
+#define PCIE_PHY_SB_RST                0x00020000
+#define PCIE_CTLR_SB_RST       0x00040000
+#define PCIE_PHY_LANE_RST      0x00090000
+#define PCIE_CTLR_MAIN_RST     0x00100000
+
 /* DRAM */
 #define DRAM_BASE              0x00000000
 #define DRAM_MAX_SIZE          0x80000000
@@ -89,6 +113,67 @@ struct quark_rcba {
        u16     d20d21_ir;
 };
 
+#include <asm/io.h>
+#include <asm/pci.h>
+
+/**
+ * qrk_pci_read_config_dword() - Read a configuration value
+ *
+ * @dev:       PCI device address: bus, device and function
+ * @offset:    Dword offset within the device's configuration space
+ * @valuep:    Place to put the returned value
+ *
+ * Note: This routine is inlined to provide better performance on Quark
+ */
+static inline void qrk_pci_read_config_dword(pci_dev_t dev, int offset,
+                                            u32 *valuep)
+{
+       outl(dev | offset | PCI_CFG_EN, PCI_REG_ADDR);
+       *valuep = inl(PCI_REG_DATA);
+}
+
+/**
+ * qrk_pci_write_config_dword() - Write a PCI configuration value
+ *
+ * @dev:       PCI device address: bus, device and function
+ * @offset:    Dword offset within the device's configuration space
+ * @value:     Value to write
+ *
+ * Note: This routine is inlined to provide better performance on Quark
+ */
+static inline void qrk_pci_write_config_dword(pci_dev_t dev, int offset,
+                                             u32 value)
+{
+       outl(dev | offset | PCI_CFG_EN, PCI_REG_ADDR);
+       outl(value, PCI_REG_DATA);
+}
+
+/**
+ * board_assert_perst() - Assert the PERST# pin
+ *
+ * The CPU interface to the PERST# signal on Quark is platform dependent.
+ * Board-specific codes need supply this routine to assert PCIe slot reset.
+ *
+ * The tricky part in this routine is that any APIs that may trigger PCI
+ * enumeration process are strictly forbidden, as any access to PCIe root
+ * port's configuration registers will cause system hang while it is held
+ * in reset.
+ */
+void board_assert_perst(void);
+
+/**
+ * board_deassert_perst() - De-assert the PERST# pin
+ *
+ * The CPU interface to the PERST# signal on Quark is platform dependent.
+ * Board-specific codes need supply this routine to de-assert PCIe slot reset.
+ *
+ * The tricky part in this routine is that any APIs that may trigger PCI
+ * enumeration process are strictly forbidden, as any access to PCIe root
+ * port's configuration registers will cause system hang while it is held
+ * in reset.
+ */
+void board_deassert_perst(void);
+
 #endif /* __ASSEMBLY__ */
 
 #endif /* _QUARK_H_ */
index 640aca4cdec12eca25905b8334ba319a7d9f6577..039ec207c26db2cd647e1063583ba992c6dc618d 100644 (file)
@@ -283,16 +283,6 @@ int board_late_init(void)
        }
        /* setup vxworks bootline */
        char *vxworksbootline = (char *)VXWORKS_BOOTLINE;
-
-       /* setup default IP, in case if there is nothing in environment */
-       if (!getenv("ipaddr")) {
-               setenv("ipaddr", "192.168.60.1");
-               setenv("netmask", "255.255.255.0");
-               setenv("serverip", "192.168.60.254");
-               setenv("gatewayip", "192.168.60.254");
-               puts("net: had no IP! made default setup.\n");
-       }
-
        sprintf(vxworksbootline,
                "%s h=%s e=%s:%s g=%s %s o=0x%08x;0x%08x;0x%08x;0x%08x",
                DEFAULT_BOOTLINE,
diff --git a/board/BuS/eb_cpux9k2/Kconfig b/board/BuS/eb_cpux9k2/Kconfig
deleted file mode 100644 (file)
index e2a787a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_EB_CPUX9K2
-
-config SYS_BOARD
-       default "eb_cpux9k2"
-
-config SYS_VENDOR
-       default "BuS"
-
-config SYS_CONFIG_NAME
-       default "eb_cpux9k2"
-
-endif
diff --git a/board/BuS/eb_cpux9k2/MAINTAINERS b/board/BuS/eb_cpux9k2/MAINTAINERS
deleted file mode 100644 (file)
index 81c4349..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-EB_CPUX9K2 BOARD
-M:     Jens Scharsig <esw@bus-elektronik.de>
-S:     Maintained
-F:     board/BuS/eb_cpux9k2/
-F:     include/configs/eb_cpux9k2.h
-F:     configs/eb_cpux9k2_defconfig
-F:     configs/eb_cpux9k2_ram_defconfig
diff --git a/board/BuS/eb_cpux9k2/Makefile b/board/BuS/eb_cpux9k2/Makefile
deleted file mode 100644 (file)
index b2ec389..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := cpux9k2.o
diff --git a/board/BuS/eb_cpux9k2/cpux9k2.c b/board/BuS/eb_cpux9k2/cpux9k2.c
deleted file mode 100644 (file)
index 3880a06..0000000
+++ /dev/null
@@ -1,373 +0,0 @@
-/*
- * (C) Copyright 2008-2009
- * BuS Elektronik GmbH & Co. KG <www.bus-elektronik.de>
- * Jens Scharsig <esw@bus-elektronik.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <exports.h>
-#include <net.h>
-#include <netdev.h>
-#include <nand.h>
-
-#include <asm/io.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/at91_pio.h>
-#include <asm/arch/at91_pmc.h>
-#include <asm/arch/at91_mc.h>
-#include <asm/arch/at91_common.h>
-
-#ifdef CONFIG_STATUS_LED
-#include <status_led.h>
-#endif
-
-#ifdef CONFIG_VIDEO
-#include <bus_vcxk.h>
-
-extern unsigned long display_width;
-extern unsigned long display_height;
-#endif
-
-#ifdef CONFIG_CMD_NAND
-void cpux9k2_nand_hw_init(void);
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-
-       /* Correct IRDA resistor problem / Set PA23_TXD in Output */
-       writel(ATMEL_PMX_AA_TXD2, &pio->pioa.oer);
-
-       gd->bd->bi_arch_number = MACH_TYPE_EB_CPUX9K2;
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
-
-#ifdef CONFIG_STATUS_LED
-       status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
-#endif
-#ifdef CONFIG_CMD_NAND
-       cpux9k2_nand_hw_init();
-#endif
-       return 0;
-}
-
-int board_early_init_f(void)
-{
-       at91_seriald_hw_init();
-       return 0;
-}
-
-#ifdef CONFIG_MISC_INIT_R
-
-int misc_init_r(void)
-{
-       uchar   mac[8];
-       uchar   tm;
-       uchar   midx;
-       uchar   macn6, macn7;
-
-       if (getenv("ethaddr") == NULL) {
-               if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0x00,
-                               CONFIG_SYS_I2C_EEPROM_ADDR_LEN,
-                               (uchar *) &mac, sizeof(mac)) != 0) {
-                       puts("Error reading MAC from EEPROM\n");
-               } else {
-                       tm = 0;
-                       macn6 = 0;
-                       macn7 = 0xFF;
-                       for (midx = 0; midx < 6; midx++) {
-                               if ((mac[midx] != 0) && (mac[midx] != 0xFF))
-                                       tm++;
-                               macn6 += mac[midx];
-                               macn7 ^= mac[midx];
-                       }
-                       if ((macn6 != mac[6]) || (macn7 != mac[7]))
-                               tm = 0;
-                       if (tm)
-                               eth_setenv_enetaddr("ethaddr", mac);
-                        else
-                               puts("Error: invalid MAC at EEPROM\n");
-               }
-       }
-       gd->jt->do_reset = do_reset;
-
-#ifdef CONFIG_STATUS_LED
-       status_led_set(STATUS_LED_BOOT, STATUS_LED_BLINKING);
-#endif
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_RESET_PHY_R
-void reset_phy(void)
-{
-       udelay(10000);
-       eth_init();
-}
-#endif
-
-/*
- * DRAM initialisations
- */
-
-int dram_init(void)
-{
-       gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
-                       CONFIG_SYS_SDRAM_SIZE);
-       return 0;
-}
-
-/*
- * Ethernet initialisations
- */
-
-#ifdef CONFIG_DRIVER_AT91EMAC
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-       rc = at91emac_register(bis, (u32) ATMEL_BASE_EMAC);
-       return rc;
-}
-#endif
-
-/*
- * Disk On Chip (NAND) Millenium initialization.
- * The NAND lives in the CS2* space
- */
-#if defined(CONFIG_CMD_NAND)
-
-#define        MASK_ALE        (1 << 22)       /* our ALE is AD22 */
-#define        MASK_CLE        (1 << 21)       /* our CLE is AD21 */
-
-void cpux9k2_nand_hw_init(void)
-{
-       unsigned long csr;
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-       at91_mc_t *mc = (at91_mc_t *) ATMEL_BASE_MC;
-
-       /* Setup Smart Media, fitst enable the address range of CS3 */
-       writel(readl(&mc->ebi.csa) | AT91_EBI_CSA_CS3A, &mc->ebi.csa);
-
-       /* RWH = 1 | RWS = 0 | TDF = 1 | NWS = 3 */
-       csr =   AT91_SMC_CSR_RWHOLD(1) | AT91_SMC_CSR_TDF(1) |
-               AT91_SMC_CSR_NWS(3) |
-               AT91_SMC_CSR_ACSS_STANDARD | AT91_SMC_CSR_DBW_8 |
-               AT91_SMC_CSR_WSEN;
-       writel(csr, &mc->smc.csr[3]);
-
-       writel(ATMEL_PMX_CA_SMOE | ATMEL_PMX_CA_SMWE, &pio->pioc.asr);
-       writel(ATMEL_PMX_CA_BFCK | ATMEL_PMX_CA_SMOE | ATMEL_PMX_CA_SMWE,
-               &pio->pioc.pdr);
-
-       /* Configure PC2 as input (signal Nand READY ) */
-       writel(ATMEL_PMX_CA_BFAVD, &pio->pioc.per);
-       writel(ATMEL_PMX_CA_BFAVD, &pio->pioc.odr); /* disable output */
-       writel(ATMEL_PMX_CA_BFCK, &pio->pioc.codr);
-
-       /* PIOC clock enabling */
-       writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
-}
-
-static void board_nand_hwcontrol(struct mtd_info *mtd,
-       int cmd, unsigned int ctrl)
-{
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       struct nand_chip *this = mtd->priv;
-       ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
-
-       if (ctrl & NAND_CTRL_CHANGE) {
-               IO_ADDR_W &= ~(MASK_ALE | MASK_CLE);
-
-               if (ctrl & NAND_CLE)
-                       IO_ADDR_W |= MASK_CLE;
-               if (ctrl & NAND_ALE)
-                       IO_ADDR_W |= MASK_ALE;
-
-               if ((ctrl & NAND_NCE))
-                       writel(1, &pio->pioc.codr);
-               else
-                       writel(1, &pio->pioc.sodr);
-
-               this->IO_ADDR_W = (void *) IO_ADDR_W;
-       }
-       if (cmd != NAND_CMD_NONE)
-               writeb(cmd, this->IO_ADDR_W);
-}
-
-static int board_nand_dev_ready(struct mtd_info *mtd)
-{
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       return ((readl(&pio->pioc.pdsr) & (1 << 2)) != 0);
-}
-
-int board_nand_init(struct nand_chip *nand)
-{
-       cpux9k2_nand_hw_init();
-       nand->ecc.mode = NAND_ECC_SOFT;
-       nand->cmd_ctrl = board_nand_hwcontrol;
-       nand->dev_ready = board_nand_dev_ready;
-       nand->chip_delay = 20;
-       return 0;
-}
-
-#endif
-
-#if defined(CONFIG_VIDEO)
-/*
- * drv_video_init
- * FUNCTION: initialize VCxK device
- */
-
-int drv_video_init(void)
-{
-#ifdef CONFIG_SPLASH_SCREEN
-       unsigned long splash;
-#endif
-       char *s;
-       unsigned long csr;
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-       at91_mc_t *mc = (at91_mc_t *) ATMEL_BASE_MC;
-
-       printf("Init Video as ");
-       s = getenv("displaywidth");
-       if (s != NULL)
-               display_width = simple_strtoul(s, NULL, 10);
-       else
-               display_width = 256;
-       s = getenv("displayheight");
-       if (s != NULL)
-               display_height = simple_strtoul(s, NULL, 10);
-       else
-               display_height = 256;
-       printf("%ld x %ld pixel matrix\n", display_width, display_height);
-
-       /* RWH = 2 | RWS =2  | TDF = 4 | NWS = 0x6 */
-       csr =   AT91_SMC_CSR_RWHOLD(2) | AT91_SMC_CSR_RWSETUP(2) |
-               AT91_SMC_CSR_TDF(4) | AT91_SMC_CSR_NWS(6) |
-               AT91_SMC_CSR_ACSS_STANDARD | AT91_SMC_CSR_DBW_16 |
-               AT91_SMC_CSR_BAT_16 | AT91_SMC_CSR_WSEN;
-       writel(csr, &mc->smc.csr[2]);
-       writel(1 << ATMEL_ID_PIOB, &pmc->pcer);
-
-       vcxk_init(display_width, display_height);
-#ifdef CONFIG_SPLASH_SCREEN
-       s = getenv("splashimage");
-       if (s != NULL) {
-               splash = simple_strtoul(s, NULL, 16);
-               printf("use splashimage: %lx\n", splash);
-               video_display_bitmap(splash, 0, 0);
-       }
-#endif
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_SYS_I2C_SOFT
-
-void i2c_init_board(void)
-{
-       u32 pin;
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-
-       writel(1 << ATMEL_ID_PIOA, &pmc->pcer);
-       pin = ATMEL_PMX_AA_TWD | ATMEL_PMX_AA_TWCK;
-       writel(pin, &pio->pioa.idr);
-       writel(pin, &pio->pioa.pudr);
-       writel(pin, &pio->pioa.per);
-       writel(pin, &pio->pioa.oer);
-       writel(pin, &pio->pioa.sodr);
-}
-
-#endif
-
-/*--------------------------------------------------------------------------*/
-
-#ifdef CONFIG_STATUS_LED
-
-void __led_toggle(led_id_t mask)
-{
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-
-       if (readl(&pio->piod.odsr) & mask)
-               writel(mask, &pio->piod.codr);
-       else
-               writel(mask, &pio->piod.codr);
-}
-
-void __led_init(led_id_t mask, int state)
-{
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-
-       writel(1 << ATMEL_ID_PIOD, &pmc->pcer); /* Enable PIOB clock */
-       /* Disable peripherals on LEDs */
-       writel(STATUS_LED_BIT | STATUS_LED_BIT1, &pio->piod.per);
-       /* Enable pins as outputs */
-       writel(STATUS_LED_BIT | STATUS_LED_BIT1, &pio->piod.oer);
-       /* Turn all LEDs OFF */
-       writel(STATUS_LED_BIT | STATUS_LED_BIT1, &pio->piod.sodr);
-
-       __led_set(mask, state);
-}
-
-void __led_set(led_id_t mask, int state)
-{
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       if (state == STATUS_LED_ON)
-               writel(mask, &pio->piod.codr);
-       else
-               writel(mask, &pio->piod.sodr);
-}
-
-#endif
-
-/*---------------------------------------------------------------------------*/
-
-int do_brightness(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int rcode = 0;
-       ulong side;
-       ulong bright;
-
-       switch (argc) {
-       case 3:
-               side = simple_strtoul(argv[1], NULL, 10);
-               bright = simple_strtoul(argv[2], NULL, 10);
-               if ((side >= 0) && (side <= 3) &&
-                               (bright >= 0) && (bright <= 1000)) {
-                       vcxk_setbrightness(side, bright);
-                       rcode = 0;
-               } else {
-                       printf("parameters out of range\n");
-                       printf("Usage:\n%s\n", cmdtp->usage);
-                       rcode = 1;
-               }
-               break;
-       default:
-               printf("Usage:\n%s\n", cmdtp->usage);
-               rcode = 1;
-               break;
-       }
-       return rcode;
-}
-
-/*---------------------------------------------------------------------------*/
-
-U_BOOT_CMD(
-       bright, 3,      0,      do_brightness,
-       "bright  - sets the display brightness\n",
-       " <side> <0..1000>\n        side: 0/3=both; 1=first; 2=second\n"
-);
-
-/* EOF cpu9k2.c */
diff --git a/board/BuS/vl_ma2sc/Kconfig b/board/BuS/vl_ma2sc/Kconfig
deleted file mode 100644 (file)
index 848177f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_VL_MA2SC
-
-config SYS_BOARD
-       default "vl_ma2sc"
-
-config SYS_VENDOR
-       default "BuS"
-
-config SYS_CONFIG_NAME
-       default "vl_ma2sc"
-
-endif
diff --git a/board/BuS/vl_ma2sc/MAINTAINERS b/board/BuS/vl_ma2sc/MAINTAINERS
deleted file mode 100644 (file)
index b70104d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-VL_MA2SC BOARD
-M:     Jens Scharsig <esw@bus-elektronik.de>
-S:     Maintained
-F:     board/BuS/vl_ma2sc/
-F:     include/configs/vl_ma2sc.h
-F:     configs/vl_ma2sc_defconfig
-F:     configs/vl_ma2sc_ram_defconfig
diff --git a/board/BuS/vl_ma2sc/Makefile b/board/BuS/vl_ma2sc/Makefile
deleted file mode 100644 (file)
index d4b24ac..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# (C) Copyright 2003-2008
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2009-2012
-# Jens Scharsig  <esw@bus-elekronik.de>
-# BuS Elektronik GmbH & Co. KG
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y += vl_ma2sc.o
diff --git a/board/BuS/vl_ma2sc/vl_ma2sc.c b/board/BuS/vl_ma2sc/vl_ma2sc.c
deleted file mode 100644 (file)
index e4e1a85..0000000
+++ /dev/null
@@ -1,519 +0,0 @@
-/*
- * (C) Copyright 2009-2012
- * Jens Scharsig  <esw@bus-elekronik.de>
- * BuS Elektronik GmbH & Co. KG
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <common.h>
-#include <linux/sizes.h>
-#include <asm/io.h>
-#include <asm/gpio.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/clk.h>
-#include <asm/arch/at91_matrix.h>
-#include <asm/arch/at91sam9_smc.h>
-#include <asm/arch/at91_pmc.h>
-#include <asm/arch/at91_pio.h>
-#include <asm/arch/at91sam9263.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/at91_common.h>
-#include <lcd.h>
-#include <i2c.h>
-#include <atmel_lcdc.h>
-#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB)
-#include <net.h>
-#endif
-#include <netdev.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_CMD_NAND
-static void vl_ma2sc_nand_hw_init(void)
-{
-       unsigned long csa;
-       at91_smc_t      *smc    = (at91_smc_t *) ATMEL_BASE_SMC0;
-       at91_matrix_t   *matrix = (at91_matrix_t *) ATMEL_BASE_MATRIX;
-       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       at91_set_pio_output(AT91_PIO_PORTA, 13, 1);     /* CAN_TX -> H */
-       at91_set_pio_output(AT91_PIO_PORTA, 12, 1);     /* CAN_STB -> H */
-       at91_set_pio_output(AT91_PIO_PORTA, 11, 1);     /* CAN_EN -> H */
-
-       /* Enable CS3 */
-       csa = readl(&matrix->csa[0]) | AT91_MATRIX_CSA_EBI_CS3A;
-       writel(csa, &matrix->csa[0]);
-
-       /* Configure SMC CS3 for NAND/SmartMedia */
-       writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
-               AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
-               &smc->cs[3].setup);
-
-       writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(3) |
-               AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(3),
-               &smc->cs[3].pulse);
-
-       writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
-               &smc->cs[3].cycle);
-       writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
-               AT91_SMC_MODE_DBW_8 |
-               AT91_SMC_MODE_TDF_CYCLE(2),
-               &smc->cs[3].mode);
-       writel((1 << ATMEL_ID_PIOB) | (1 << ATMEL_ID_PIOCDE),
-               &pmc->pcer);
-
-       /* Configure RDY/BSY */
-#ifdef CONFIG_SYS_NAND_READY_PIN
-       gpio_direction_input(CONFIG_SYS_NAND_READY_PIN);
-#endif
-       /* Enable NandFlash */
-       gpio_direction_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
-}
-#endif
-
-#ifdef CONFIG_MACB
-static void vl_ma2sc_macb_hw_init(void)
-{
-       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       /* Enable clock */
-       writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
-
-       at91_phy_reset();
-
-       at91_macb_hw_init();
-}
-#endif
-
-#ifdef CONFIG_LCD
-vidinfo_t panel_info = {
-       .vl_col =               320,
-       .vl_row =               240,
-       .vl_clk =               6500000,
-       .vl_sync =              ATMEL_LCDC_INVDVAL_INVERTED |
-                               ATMEL_LCDC_INVLINE_INVERTED |
-                               ATMEL_LCDC_INVVD_INVERTED   |
-                               ATMEL_LCDC_INVFRAME_INVERTED,
-       .vl_bpix =              (ATMEL_LCDC_PIXELSIZE_8 >> 5),
-       .vl_tft =               1,
-       .vl_hsync_len =         5,      /* Horiz Sync Pulse Width */
-       .vl_left_margin =       68,     /* horiz back porch */
-       .vl_right_margin =      20,     /* horiz front porch */
-       .vl_vsync_len =         2,      /* vert Sync Pulse Width */
-       .vl_upper_margin =      18,     /* vert back porch */
-       .vl_lower_margin =      4,      /* vert front porch */
-       .mmio =                 ATMEL_BASE_LCDC,
-};
-
-void lcd_enable(void)
-{
-}
-
-void lcd_disable(void)
-{
-}
-
-static void vl_ma2sc_lcd_hw_init(void)
-{
-       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       at91_set_a_periph(AT91_PIO_PORTC, 0, 0);        /* LCDVSYNC */
-       at91_set_a_periph(AT91_PIO_PORTC, 1, 0);        /* LCDHSYNC */
-       at91_set_a_periph(AT91_PIO_PORTC, 2, 0);        /* LCDDOTCK */
-       at91_set_a_periph(AT91_PIO_PORTC, 3, 0);        /* LCDDEN */
-       at91_set_b_periph(AT91_PIO_PORTB, 9, 0);        /* LCDCC */
-
-       at91_set_a_periph(AT91_PIO_PORTC, 4, 0);        /* LCDD0 */
-       at91_set_a_periph(AT91_PIO_PORTC, 5, 0);        /* LCDD1 */
-       at91_set_a_periph(AT91_PIO_PORTC, 6, 0);        /* LCDD2 */
-       at91_set_a_periph(AT91_PIO_PORTC, 7, 0);        /* LCDD3 */
-       at91_set_a_periph(AT91_PIO_PORTC, 8, 0);        /* LCDD4 */
-       at91_set_a_periph(AT91_PIO_PORTC, 9, 0);        /* LCDD5 */
-       at91_set_a_periph(AT91_PIO_PORTC, 10, 0);       /* LCDD6 */
-       at91_set_a_periph(AT91_PIO_PORTC, 11, 0);       /* LCDD7 */
-
-       at91_set_a_periph(AT91_PIO_PORTC, 13, 0);       /* LCDD9 */
-       at91_set_a_periph(AT91_PIO_PORTC, 14, 0);       /* LCDD10 */
-       at91_set_a_periph(AT91_PIO_PORTC, 15, 0);       /* LCDD11 */
-       at91_set_a_periph(AT91_PIO_PORTC, 16, 0);       /* LCDD12 */
-       at91_set_b_periph(AT91_PIO_PORTC, 12, 0);       /* LCDD13 */
-       at91_set_a_periph(AT91_PIO_PORTC, 18, 0);       /* LCDD14 */
-       at91_set_a_periph(AT91_PIO_PORTC, 19, 0);       /* LCDD15 */
-
-       at91_set_a_periph(AT91_PIO_PORTC, 20, 0);       /* LCDD26 */
-       at91_set_a_periph(AT91_PIO_PORTC, 21, 0);       /* LCDD17 */
-       at91_set_a_periph(AT91_PIO_PORTC, 22, 0);       /* LCDD18 */
-       at91_set_a_periph(AT91_PIO_PORTC, 23, 0);       /* LCDD19 */
-       at91_set_a_periph(AT91_PIO_PORTC, 24, 0);       /* LCDD20 */
-       at91_set_b_periph(AT91_PIO_PORTC, 17, 0);       /* LCDD21 */
-       at91_set_a_periph(AT91_PIO_PORTC, 26, 0);       /* LCDD22 */
-       at91_set_a_periph(AT91_PIO_PORTC, 27, 0);       /* LCDD23 */
-
-       at91_set_pio_output(AT91_PIO_PORTE, 0, 0);      /* LCD QXH */
-
-       at91_set_pio_output(AT91_PIO_PORTE, 2, 0);      /* LCD SHUT */
-       at91_set_pio_output(AT91_PIO_PORTE, 3, 1);      /* LCD TopBottom */
-       at91_set_pio_output(AT91_PIO_PORTE, 4, 0);      /* LCD REV */
-       at91_set_pio_output(AT91_PIO_PORTE, 5, 1);      /* LCD RightLeft */
-       at91_set_pio_output(AT91_PIO_PORTE, 6, 0);      /* LCD Color Mode CM */
-       at91_set_pio_output(AT91_PIO_PORTE, 7, 0);      /* LCD BGR */
-
-       at91_set_pio_output(AT91_PIO_PORTB, 9, 0);      /* LCD CC */
-
-       writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
-       gd->fb_base = ATMEL_BASE_SRAM0;
-}
-#endif /* Config LCD */
-
-#ifdef CONFIG_BOARD_EARLY_INIT_F
-int board_early_init_f(void)
-{
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
-       /* Enable clocks for all PIOs */
-       writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
-               (1 << ATMEL_ID_PIOCDE),
-               &pmc->pcer);
-
-       at91_seriald_hw_init();
-
-       return 0;
-}
-#endif
-
-int board_init(void)
-{
-       at91_smc_t      *smc    = (at91_smc_t *) ATMEL_BASE_SMC0;
-       at91_pio_t      *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       u32             pin;
-
-       pin = 0x1F000001;
-       writel(pin, &pio->pioa.idr);
-       writel(pin, &pio->pioa.pudr);
-       writel(pin, &pio->pioa.per);
-       writel(pin, &pio->pioa.oer);
-       writel(pin, &pio->pioa.sodr);
-       writel((1 << 25), &pio->pioa.codr);
-
-       pin = 0x1F000100;
-       writel(pin, &pio->piob.idr);
-       writel(pin, &pio->piob.pudr);
-       writel(pin, &pio->piob.per);
-       writel(pin, &pio->piob.oer);
-       writel(pin, &pio->piob.codr);
-       writel((1 << 24), &pio->piob.sodr);
-
-       pin = 0x40000000;                       /* Pullup DRxD enbable */
-       writel(pin, &pio->pioc.puer);
-
-       pin = 0x0000000F;                       /* HWversion als Input */
-       writel(pin, &pio->piod.idr);
-       writel(pin, &pio->piod.puer);
-       writel(pin, &pio->piod.per);
-       writel(pin, &pio->piod.odr);
-       writel(pin, &pio->piod.owdr);
-
-       gd->bd->bi_arch_number = MACH_TYPE_VL_MA2SC;
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
-
-       writel(CONFIG_SYS_SMC0_MODE0_VAL, &smc->cs[0].setup);
-       writel(CONFIG_SYS_SMC0_CYCLE0_VAL, &smc->cs[0].cycle);
-       writel(CONFIG_SYS_SMC0_PULSE0_VAL, &smc->cs[0].pulse);
-       writel(CONFIG_SYS_SMC0_SETUP0_VAL, &smc->cs[0].setup);
-
-#ifdef CONFIG_CMD_NAND
-       vl_ma2sc_nand_hw_init();
-#endif
-#ifdef CONFIG_MACB
-       vl_ma2sc_macb_hw_init();
-#endif
-#ifdef CONFIG_USB_OHCI_NEW
-       at91_uhp_hw_init();
-#endif
-#ifdef CONFIG_LCD
-       vl_ma2sc_lcd_hw_init();
-#endif
-       return 0;
-}
-
-#ifdef CONFIG_MISC_INIT_R
-int misc_init_r(void)
-{
-       uchar   buffer[8];
-       at91_pio_t      *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       u32             pin;
-
-       buffer[0] = 0x04;
-       buffer[1] = 0x00;
-       if (i2c_write(0x68, 0x0E, 1, buffer, 2) != 0)
-               puts("error reseting rtc clock\n\0");
-
-       /* read hardware version */
-
-       pin = (readl(&pio->piod.pdsr) & 0x0F) + 0x44;
-       printf("Board: revision %c\n", pin);
-       buffer[0] = pin;
-       buffer[1] = 0;
-       setenv("revision", (char *) buffer);
-
-       pin = 0x40000000;                       /* Pullup DRxD enbable */
-       writel(pin, &pio->pioc.puer);
-       return 0;
-}
-#endif
-
-int dram_init(void)
-{
-       gd->ram_size = get_ram_size((long *) CONFIG_SYS_SDRAM_BASE,
-                       CONFIG_SYS_SDRAM_SIZE);
-       return 0;
-}
-
-#ifdef CONFIG_RESET_PHY_R
-void reset_phy(void)
-{
-#ifdef CONFIG_MACB
-       /*
-        * Initialize ethernet HW addr prior to starting Linux,
-        * needed for nfsroot
-        */
-       eth_init();
-#endif
-}
-#endif
-
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_MACB
-       rc = macb_eth_initialize(0, (void *) ATMEL_BASE_EMAC, 0x01);
-#endif
-       return rc;
-}
-
-#ifdef CONFIG_SYS_I2C_SOFT
-void i2c_init_board(void)
-{
-       u32 pin;
-
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       u8 sda = (1<<4);
-       u8 scl = (1<<5);
-
-       writel(1 << ATMEL_ID_PIOB, &pmc->pcer);
-       pin = sda | scl;
-       writel(pin, &pio->piob.idr);    /* Disable Interupt */
-       writel(pin, &pio->piob.pudr);
-       writel(pin, &pio->piob.per);
-       writel(pin, &pio->piob.oer);
-       writel(pin, &pio->piob.sodr);
-}
-#endif
-
-void watchdog_reset(void)
-{
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       u32     pin = 0x1;      /* PA0 */
-
-       if ((readl(&pio->pioa.odsr) & pin) > 0)
-               writel(pin, &pio->pioa.codr);
-       else
-               writel(pin, &pio->pioa.sodr);
-}
-
-void enable_caches(void)
-{
-#ifndef CONFIG_SYS_DCACHE_OFF
-       dcache_enable();
-#endif
-}
-
-/*---------------------------------------------------------------------------*/
-
-int do_ledtest(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int rcode = 1;
-       int row;
-       int col;
-       u32 pinz;
-       u32 pins;
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-
-       at91_set_pio_output(AT91_PIO_PORTB, 8, 0);      /* LCD DIM */
-
-       pins = 0x1F000000;
-       writel(pins, &pio->pioa.idr);
-       writel(pins, &pio->pioa.pudr);
-       writel(pins, &pio->pioa.per);
-       writel(pins, &pio->pioa.oer);
-       writel(pins, &pio->pioa.sodr);
-
-       pinz = 0x1F000000;
-       writel(pinz, &pio->piob.idr);
-       writel(pinz, &pio->piob.pudr);
-       writel(pinz, &pio->piob.per);
-       writel(pinz, &pio->piob.oer);
-       writel(pinz, &pio->piob.sodr);
-
-       for (row = 0; row < 5; row++) {
-               for (col = 0; col < 5; col++) {
-                       writel((0x01000000 << col), &pio->piob.sodr);
-                       writel((0x01000000 << row), &pio->pioa.codr);
-                       printf("LED Test %d x %d\n", row, col);
-                       udelay(1000000);
-                       writel(pinz, &pio->piob.codr);
-                       writel(pins, &pio->pioa.sodr);
-               }
-       }
-       return rcode;
-}
-
-void poweroff(void)
-{
-       watchdog_reset();
-       at91_set_pio_output(AT91_PIO_PORTA, 13, 1);     /* CAN_TX -> H */
-       udelay(100);
-       at91_set_pio_output(AT91_PIO_PORTA, 12, 0);     /* CAN_STB -> L */
-       udelay(100);
-       at91_set_pio_output(AT91_PIO_PORTA, 11, 0);     /* CAN_EN -> L */
-       udelay(100);
-       while (1)
-               watchdog_reset();
-}
-
-int do_poweroff(cmd_tbl_t *cmdtp, int flag, int argc,  char * const argv[])
-{
-       int rcode = 1;
-       poweroff();
-       return rcode;
-}
-
-int do_beep(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int i;
-       u32 freq;
-       u32 durate;
-       int rcode = 1;
-
-       freq = 1000;
-       durate = 2;
-       switch (argc) {
-       case 3:
-               durate = simple_strtoul(argv[2], NULL, 10);
-       case 2:
-               freq = simple_strtoul(argv[1], NULL, 10);
-       case 1:
-               break;
-       default:
-               cmd_usage(cmdtp);
-               rcode = 1;
-               break;
-       }
-       durate = durate * freq;
-       freq = 500000 / freq;
-       for (i = 0; i < durate; i++) {
-               at91_set_pio_output(AT91_PIO_PORTB, 29, 1);     /* Sound On*/
-               udelay(freq);
-               at91_set_pio_output(AT91_PIO_PORTB, 29, 0);     /* Sound Off*/
-               udelay(freq);
-       }
-       at91_set_pio_output(AT91_PIO_PORTB, 29, 0);     /* Sound Off*/
-       return rcode;
-}
-
-int do_keytest(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int rcode = 1;
-       int row;
-       u32 col;
-       u32 pinz;
-       u32 pins;
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       writel((1 << ATMEL_ID_PIOA), &pmc->pcer);
-
-       pins = 0x001F0000;
-       writel(pins, &pio->pioa.idr);
-       writel(pins, &pio->pioa.pudr);
-       writel(pins, &pio->pioa.per);
-       writel(pins, &pio->pioa.odr);
-
-       pinz = 0x000F0000;
-       writel(pinz, &pio->piob.idr);
-       writel(pinz, &pio->piob.pudr);
-       writel(pinz, &pio->piob.per);
-       writel(pinz, &pio->piob.oer);
-       writel(pinz, &pio->piob.codr);
-
-       while (1) {
-               col = 0;
-               for (row = 0; row < 4; row++) {
-                       writel((0x00010000 << row), &pio->piob.sodr);
-                       udelay(10000);
-                       col <<= 4;
-                       col |= ((readl(&pio->pioa.pdsr) >> 16) & 0xF) ^ 0xF ;
-                       writel(pinz, &pio->piob.codr);
-               }
-               printf("Matix: ");
-               for (row = 0; row < 16; row++) {
-                       printf("%1.1d", col & 1);
-                       col >>= 1;
-               }
-               printf(" SP %d\r ",
-                       1 ^ (1 & (readl(&pio->piob.pdsr) >> 20)));
-               if ((1 & (readl(&pio->pioa.pdsr) >> 1)) == 0) {
-                       /* SHUTDOWN */
-                       row = 0;
-                       while (row < 1000) {
-                               if ((1 & (readl(&pio->pioa.pdsr) >> 1)) == 0)
-                                       row++;
-                               udelay(100);
-                       }
-                       udelay(100000);
-                       row = 0;
-                       while (row < 1000) {
-                               if ((1 & (readl(&pio->pioa.pdsr) >> 1)) > 0) {
-                                       row++;
-                                       udelay(1000);
-                               }
-                       }
-                       poweroff();
-                       while (1)
-                               ;
-               }
-       }
-       return rcode;
-}
-
-/*****************************************************************************/
-
-U_BOOT_CMD(
-       ledtest,        1,      0,      do_ledtest,
-       "test ledmatrix",
-       "\n"
-       );
-
-U_BOOT_CMD(
-       keytest,        1,      0,      do_keytest,
-       "test keymatix and special keys, poweroff on pressing ON key",
-       "\n"
-       );
-
-U_BOOT_CMD(
-       poweroff,       1,      0,      do_poweroff,
-       "power off",
-       "\n"
-       );
-
-U_BOOT_CMD(
-       beep,   3,      0,      do_beep,
-       "[freq [duration]]",
-       "freq frequence of beep\nduration duration of beep\n"
-       );
-
-/*****************************************************************************/
diff --git a/board/Marvell/mv88f6281gtw_ge/Kconfig b/board/Marvell/mv88f6281gtw_ge/Kconfig
deleted file mode 100644 (file)
index 00d7d1c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_MV88F6281GTW_GE
-
-config SYS_BOARD
-       default "mv88f6281gtw_ge"
-
-config SYS_VENDOR
-       default "Marvell"
-
-config SYS_CONFIG_NAME
-       default "mv88f6281gtw_ge"
-
-endif
diff --git a/board/Marvell/mv88f6281gtw_ge/MAINTAINERS b/board/Marvell/mv88f6281gtw_ge/MAINTAINERS
deleted file mode 100644 (file)
index 9c26ca7..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-MV88F6281GTW_GE BOARD
-M:     Prafulla Wadaskar <prafulla@marvell.com>
-S:     Maintained
-F:     board/Marvell/mv88f6281gtw_ge/
-F:     include/configs/mv88f6281gtw_ge.h
-F:     configs/mv88f6281gtw_ge_defconfig
diff --git a/board/Marvell/mv88f6281gtw_ge/Makefile b/board/Marvell/mv88f6281gtw_ge/Makefile
deleted file mode 100644 (file)
index e83bbf7..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2009
-# Marvell Semiconductor <www.marvell.com>
-# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := mv88f6281gtw_ge.o
diff --git a/board/Marvell/mv88f6281gtw_ge/kwbimage.cfg b/board/Marvell/mv88f6281gtw_ge/kwbimage.cfg
deleted file mode 100644 (file)
index 9fa87ac..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-#
-# (C) Copyright 2009
-# Marvell Semiconductor <www.marvell.com>
-# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-# Refer doc/README.kwbimage for more details about how-to configure
-# and create kirkwood boot image
-#
-
-# Boot Media configurations
-BOOT_FROM      spi     # Boot from SPI flash
-
-# SOC registers configuration using bootrom header extension
-# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
-
-# Configure RGMII-0 interface pad voltage to 1.8V
-DATA 0xFFD100e0 0x1b1b1b9b
-
-#Dram initalization for SINGLE x16 CL=5 @ 400MHz
-DATA 0xFFD01400 0x43000a00     # DDR Configuration register
-# bit13-0:  0xa00 (2560 DDR2 clks refresh rate)
-# bit23-14: zero
-# bit24: 1= enable exit self refresh mode on DDR access
-# bit25: 1 required
-# bit29-26: zero
-# bit31-30: 01
-
-DATA 0xFFD01404 0x38543000     # DDR Controller Control Low
-# bit 4:    0=addr/cmd in smame cycle
-# bit 5:    0=clk is driven during self refresh, we don't care for APX
-# bit 6:    0=use recommended falling edge of clk for addr/cmd
-# bit14:    0=input buffer always powered up
-# bit18:    1=cpu lock transaction enabled
-# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled bit31=0
-# bit27-24: 8= CL+3, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
-# bit30-28: 3 required
-# bit31:    0=no additional STARTBURST delay
-
-DATA 0xFFD01408 0x2202433D     # DDR Timing (Low) (active cycles value +1)
-# bit3-0:   TRAS lsbs
-# bit7-4:   TRCD
-# bit11- 8: TRP
-# bit15-12: TWR
-# bit19-16: TWTR
-# bit20:    TRAS msb
-# bit23-21: 0x0
-# bit27-24: TRRD
-# bit31-28: TRTP
-
-DATA 0xFFD0140C 0x0000002A     #  DDR Timing (High)
-# bit6-0:   TRFC
-# bit8-7:   TR2R
-# bit10-9:  TR2W
-# bit12-11: TW2W
-# bit31-13: zero required
-
-DATA 0xFFD01410 0x0000000D     #  DDR Address Control
-# bit1-0:   01, Cs0width=x16
-# bit3-2:   11, Cs0size=1Gb
-# bit5-4:   00, Cs2width=nonexistent
-# bit7-6:   00, Cs1size =nonexistent
-# bit9-8:   00, Cs2width=nonexistent
-# bit11-10: 00, Cs2size =nonexistent
-# bit13-12: 00, Cs3width=nonexistent
-# bit15-14: 00, Cs3size =nonexistent
-# bit16:    0,  Cs0AddrSel
-# bit17:    0,  Cs1AddrSel
-# bit18:    0,  Cs2AddrSel
-# bit19:    0,  Cs3AddrSel
-# bit31-20: 0 required
-
-DATA 0xFFD01414 0x00000000     #  DDR Open Pages Control
-# bit0:    0,  OpenPage enabled
-# bit31-1: 0 required
-
-DATA 0xFFD01418 0x00000000     #  DDR Operation
-# bit3-0:   0x0, DDR cmd
-# bit31-4:  0 required
-
-DATA 0xFFD0141C 0x00000C52     #  DDR Mode
-# bit2-0:   2, BurstLen=2 required
-# bit3:     0, BurstType=0 required
-# bit6-4:   4, CL=5
-# bit7:     0, TestMode=0 normal
-# bit8:     0, DLL reset=0 normal
-# bit11-9:  6, auto-precharge write recovery ????????????
-# bit12:    0, PD must be zero
-# bit31-13: 0 required
-
-DATA 0xFFD01420 0x00000046     #  DDR Extended Mode
-# bit0:    0,  DDR DLL enabled
-# bit1:    1,  DDR drive strenght reduced
-# bit2:    1,  DDR ODT control lsd enabled
-# bit5-3:  000, required
-# bit6:    1,  DDR ODT control msb, enabled
-# bit9-7:  000, required
-# bit10:   0,  differential DQS enabled
-# bit11:   0, required
-# bit12:   0, DDR output buffer enabled
-# bit31-13: 0 required
-
-DATA 0xFFD01424 0x0000F1FF     #  DDR Controller Control High
-# bit2-0:  111, required
-# bit3  :  1  , MBUS Burst Chop disabled
-# bit6-4:  111, required
-# bit7  :  1  , D2P Latency enabled
-# bit8  :  1  , add writepath sample stage, must be 1 for DDR freq >= 300MHz
-# bit9  :  0  , no half clock cycle addition to dataout
-# bit10 :  0  , 1/4 clock cycle skew enabled for addr/ctl signals
-# bit11 :  0  , 1/4 clock cycle skew disabled for write mesh
-# bit15-12: 1111 required
-# bit31-16: 0    required
-
-DATA 0xFFD01428 0x00085520     # DDR2 ODT Read Timing (default values)
-DATA 0xFFD0147C 0x00008552     # DDR2 ODT Write Timing (default values)
-
-DATA 0xFFD01500 0x00000000     # CS[0]n Base address to 0x0
-DATA 0xFFD01504 0x07FFFFF1     # CS[0]n Size
-# bit0:    1,  Window enabled
-# bit1:    0,  Write Protect disabled
-# bit3-2:  00, CS0 hit selected
-# bit23-4: ones, required
-# bit31-24: 0x07, Size (i.e. 128MB)
-
-DATA 0xFFD0150C 0x00000000     # CS[1]n Size, window disabled
-DATA 0xFFD01514 0x00000000     # CS[2]n Size, window disabled
-DATA 0xFFD0151C 0x00000000     # CS[3]n Size, window disabled
-
-DATA 0xFFD01494 0x00010001     #  DDR ODT Control (Low)
-# bit3-0:  1, ODT0Rd, MODT[0] asserted during read from DRAM CS0
-# bit19-16:1, ODT0Wr, MODT[0] asserted during write to DRAM CS0
-
-DATA 0xFFD01498 0x00000000     #  DDR ODT Control (High)
-# bit1-0:  00, ODT0 controlled by ODT Control (low) register above
-# bit3-2:  01, ODT1 active NEVER!
-# bit31-4: zero, required
-
-DATA 0xFFD0149C 0x0000E811     # CPU ODT Control
-# bit3-0:  1, ODT0Rd, Internal ODT asserted during read from DRAM bank0
-# bit7-4:  1, ODT0Wr, Internal ODT asserted during write to DRAM bank0
-# bit11-10:1, DQ_ODTSel. ODT select turned on
-
-DATA 0xFFD01480 0x00000001     # DDR Initialization Control
-#bit0=1, enable DDR init upon this register write
-
-# End of Header extension
-DATA 0x0 0x0
diff --git a/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c b/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.c
deleted file mode 100644 (file)
index ef08ad8..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Maintainer : Prafulla Wadaskar <prafulla@marvell.com>
- *
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/soc.h>
-#include <asm/arch/mpp.h>
-#include "mv88f6281gtw_ge.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_early_init_f(void)
-{
-       /*
-        * default gpio configuration
-        * There are maximum 64 gpios controlled through 2 sets of registers
-        * the  below configuration configures mainly initial LED status
-        */
-       mvebu_config_gpio(MV88F6281GTW_GE_OE_VAL_LOW,
-                         MV88F6281GTW_GE_OE_VAL_HIGH,
-                         MV88F6281GTW_GE_OE_LOW, MV88F6281GTW_GE_OE_HIGH);
-
-       /* Multi-Purpose Pins Functionality configuration */
-       static const u32 kwmpp_config[] = {
-               MPP0_SPI_SCn,
-               MPP1_SPI_MOSI,
-               MPP2_SPI_SCK,
-               MPP3_SPI_MISO,
-               MPP4_GPIO,
-               MPP5_GPO,
-               MPP6_SYSRST_OUTn,
-               MPP7_SPI_SCn,
-               MPP8_TW_SDA,
-               MPP9_TW_SCK,
-               MPP10_UART0_TXD,
-               MPP11_UART0_RXD,
-               MPP12_GPO,
-               MPP13_GPIO,
-               MPP14_GPIO,
-               MPP15_GPIO,
-               MPP16_GPIO,
-               MPP17_GPIO,
-               MPP18_GPO,
-               MPP19_GPO,
-               MPP20_GPIO,
-               MPP21_GPIO,
-               MPP22_GPIO,
-               MPP23_GPIO,
-               MPP24_GPIO,
-               MPP25_GPIO,
-               MPP26_GPIO,
-               MPP27_GPIO,
-               MPP28_GPIO,
-               MPP29_GPIO,
-               MPP30_GPIO,
-               MPP31_GPIO,
-               MPP32_GPIO,
-               MPP33_GPIO,
-               MPP34_GPIO,
-               MPP35_GPIO,
-               MPP36_GPIO,
-               MPP37_GPIO,
-               MPP38_GPIO,
-               MPP39_GPIO,
-               MPP40_GPIO,
-               MPP41_GPIO,
-               MPP42_GPIO,
-               MPP43_GPIO,
-               MPP44_GPIO,
-               MPP45_GPIO,
-               MPP46_GPIO,
-               MPP47_GPIO,
-               MPP48_GPIO,
-               MPP49_GPIO,
-               0
-       };
-       kirkwood_mpp_conf(kwmpp_config, NULL);
-       return 0;
-}
-
-int board_init(void)
-{
-       /*
-        * arch number of board
-        */
-       gd->bd->bi_arch_number = MACH_TYPE_MV88F6281GTW_GE;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
-
-       return 0;
-}
-
-#ifdef CONFIG_MV88E61XX_SWITCH
-void reset_phy(void)
-{
-       /* configure and initialize switch */
-       struct mv88e61xx_config swcfg = {
-               .name = "egiga0",
-               .vlancfg = MV88E61XX_VLANCFG_ROUTER,
-               .rgmii_delay = MV88E61XX_RGMII_DELAY_EN,
-               .led_init = MV88E61XX_LED_INIT_EN,
-               .mdip = MV88E61XX_MDIP_REVERSE,
-               .portstate = MV88E61XX_PORTSTT_FORWARDING,
-               .cpuport = (1 << 5),
-               .ports_enabled = 0x3f
-       };
-
-       mv88e61xx_switch_initialize(&swcfg);
-}
-#endif /* CONFIG_MV88E61XX_SWITCH */
diff --git a/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.h b/board/Marvell/mv88f6281gtw_ge/mv88f6281gtw_ge.h
deleted file mode 100644 (file)
index 447e227..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MV88F6281GTW_GE_H
-#define __MV88F6281GTW_GE_H
-
-#define MV88F6281GTW_GE_OE_LOW         (~((1 << 7) | (1 << 12) \
-                                         |(1 << 20) | (1 << 21)))      /*enable GLED,RLED */
-#define MV88F6281GTW_GE_OE_HIGH                (~((1 << 4)|(1 << 6)|(1 << 7)|(1 << 12) \
-                                         |(1 << 13)|(1 << 16)|(1 << 17)))
-#define MV88F6281GTW_GE_OE_VAL_LOW     (1 << 20)       /*make GLED on */
-#define MV88F6281GTW_GE_OE_VAL_HIGH    ((1 << 6)|(1 << 13)|(1 << 16)|(1 << 17))
-
-
-#endif /* __MV88F6281GTW_GE_H */
diff --git a/board/Marvell/openrd/Kconfig b/board/Marvell/openrd/Kconfig
deleted file mode 100644 (file)
index 124b66d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_OPENRD
-
-config SYS_BOARD
-       default "openrd"
-
-config SYS_VENDOR
-       default "Marvell"
-
-config SYS_CONFIG_NAME
-       default "openrd"
-
-endif
diff --git a/board/Marvell/openrd/MAINTAINERS b/board/Marvell/openrd/MAINTAINERS
deleted file mode 100644 (file)
index 7a189ab..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-OPENRD BOARD
-M:     Prafulla Wadaskar <prafulla@marvell.com>
-S:     Maintained
-F:     board/Marvell/openrd/
-F:     include/configs/openrd.h
-F:     configs/openrd_base_defconfig
-
-OPENRD_CLIENT BOARD
-#M:    -
-S:     Maintained
-F:     configs/openrd_client_defconfig
-F:     configs/openrd_ultimate_defconfig
diff --git a/board/Marvell/openrd/Makefile b/board/Marvell/openrd/Makefile
deleted file mode 100644 (file)
index 8f95b79..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# (C) Copyright 2009
-# Net Insight <www.netinsight.net>
-# Written-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
-#
-# Based on sheevaplug:
-# (C) Copyright 2009
-# Marvell Semiconductor <www.marvell.com>
-# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := openrd.o
diff --git a/board/Marvell/openrd/kwbimage.cfg b/board/Marvell/openrd/kwbimage.cfg
deleted file mode 100644 (file)
index 8e59937..0000000
+++ /dev/null
@@ -1,152 +0,0 @@
-#
-# (C) Copyright 2009
-# Marvell Semiconductor <www.marvell.com>
-# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-# Refer doc/README.kwbimage for more details about how-to configure
-# and create kirkwood boot image
-#
-
-# Boot Media configurations
-BOOT_FROM      nand
-NAND_ECC_MODE  default
-NAND_PAGE_SIZE 0x0800
-
-# SOC registers configuration using bootrom header extension
-# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
-
-# Configure RGMII-0 interface pad voltage to 1.8V
-DATA 0xFFD100e0 0x1b1b1b9b
-
-#Dram initalization for SINGLE x16 CL=5 @ 400MHz
-DATA 0xFFD01400 0x43000c30     # DDR Configuration register
-# bit13-0:  0xc30 (3120 DDR2 clks refresh rate)
-# bit23-14: zero
-# bit24: 1= enable exit self refresh mode on DDR access
-# bit25: 1 required
-# bit29-26: zero
-# bit31-30: 01
-
-DATA 0xFFD01404 0x37543000     # DDR Controller Control Low
-# bit 4:    0=addr/cmd in smame cycle
-# bit 5:    0=clk is driven during self refresh, we don't care for APX
-# bit 6:    0=use recommended falling edge of clk for addr/cmd
-# bit14:    0=input buffer always powered up
-# bit18:    1=cpu lock transaction enabled
-# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled bit31=0
-# bit27-24: 7= CL+2, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
-# bit30-28: 3 required
-# bit31:    0=no additional STARTBURST delay
-
-DATA 0xFFD01408 0x22125451     # DDR Timing (Low) (active cycles value +1)
-# bit3-0:   TRAS lsbs
-# bit7-4:   TRCD
-# bit11- 8: TRP
-# bit15-12: TWR
-# bit19-16: TWTR
-# bit20:    TRAS msb
-# bit23-21: 0x0
-# bit27-24: TRRD
-# bit31-28: TRTP
-
-DATA 0xFFD0140C 0x00000a33     #  DDR Timing (High)
-# bit6-0:   TRFC
-# bit8-7:   TR2R
-# bit10-9:  TR2W
-# bit12-11: TW2W
-# bit31-13: zero required
-
-DATA 0xFFD01410 0x000000cc     #  DDR Address Control
-# bit1-0:   00, Cs0width=x8
-# bit3-2:   11, Cs0size=1Gb
-# bit5-4:   00, Cs1width=x8
-# bit7-6:   11, Cs1size=1Gb
-# bit9-8:   00, Cs2width=nonexistent
-# bit11-10: 00, Cs2size =nonexistent
-# bit13-12: 00, Cs3width=nonexistent
-# bit15-14: 00, Cs3size =nonexistent
-# bit16:    0,  Cs0AddrSel
-# bit17:    0,  Cs1AddrSel
-# bit18:    0,  Cs2AddrSel
-# bit19:    0,  Cs3AddrSel
-# bit31-20: 0 required
-
-DATA 0xFFD01414 0x00000000     #  DDR Open Pages Control
-# bit0:    0,  OpenPage enabled
-# bit31-1: 0 required
-
-DATA 0xFFD01418 0x00000000     #  DDR Operation
-# bit3-0:   0x0, DDR cmd
-# bit31-4:  0 required
-
-DATA 0xFFD0141C 0x00000C52     #  DDR Mode
-# bit2-0:   2, BurstLen=2 required
-# bit3:     0, BurstType=0 required
-# bit6-4:   4, CL=5
-# bit7:     0, TestMode=0 normal
-# bit8:     0, DLL reset=0 normal
-# bit11-9:  6, auto-precharge write recovery ????????????
-# bit12:    0, PD must be zero
-# bit31-13: 0 required
-
-DATA 0xFFD01420 0x00000042     #  DDR Extended Mode
-# bit0:    0,  DDR DLL enabled
-# bit1:    1,  DDR drive strength reduced
-# bit2:    0,  DDR ODT control lsd (disabled)
-# bit5-3:  000, required
-# bit6:    1,  DDR ODT control msb, (disabled)
-# bit9-7:  000, required
-# bit10:   0,  differential DQS enabled
-# bit11:   0, required
-# bit12:   0, DDR output buffer enabled
-# bit31-13: 0 required
-
-DATA 0xFFD01424 0x0000F17F     #  DDR Controller Control High
-# bit2-0:  111, required
-# bit3  :  1  , MBUS Burst Chop disabled
-# bit6-4:  111, required
-# bit7  :  0
-# bit8  :  1  , add writepath sample stage, must be 1 for DDR freq >= 300MHz
-# bit9  :  0  , no half clock cycle addition to dataout
-# bit10 :  0  , 1/4 clock cycle skew enabled for addr/ctl signals
-# bit11 :  0  , 1/4 clock cycle skew disabled for write mesh
-# bit15-12: 1111 required
-# bit31-16: 0    required
-
-DATA 0xFFD01428 0x00085520     # DDR2 ODT Read Timing (default values)
-DATA 0xFFD0147C 0x00008552     # DDR2 ODT Write Timing (default values)
-
-DATA 0xFFD01500 0x00000000     # CS[0]n Base address to 0x0
-DATA 0xFFD01504 0x0FFFFFF1     # CS[0]n Size
-# bit0:    1,  Window enabled
-# bit1:    0,  Write Protect disabled
-# bit3-2:  00, CS0 hit selected
-# bit23-4: ones, required
-# bit31-24: 0x0F, Size (i.e. 256MB)
-
-DATA 0xFFD01508 0x10000000     # CS[1]n Base address to 256Mb
-DATA 0xFFD0150C 0x0FFFFFF5     # CS[1]n Size 256Mb Window enabled for CS1
-
-DATA 0xFFD01514 0x00000000     # CS[2]n Size, window disabled
-DATA 0xFFD0151C 0x00000000     # CS[3]n Size, window disabled
-
-DATA 0xFFD01494 0x00120012     #  DDR ODT Control (Low)
-# bit3-0:   0010, (read) M_ODT[0] is asserted during read from DRAM CS1
-# bit7-4:   0001, (read) M_ODT[1] is asserted during read from DRAM CS0
-# bit19-16: 0010, (write) M_ODT[0] is asserted during write to DRAM CS1.
-# bit23-20: 0001, (write) M_ODT[1] is asserted during write to DRAM CS0.
-DATA 0xFFD01498 0x00000000     #  DDR ODT Control (High)
-
-DATA 0xFFD0149C 0x0000E40f     # CPU ODT Control
-# bit3-0:    1111, internal ODT is asserted during read from DRAM bank 0-3
-# bit11-10:    01, M_DQ, M_DM, and M_DQS I/O buffer ODT Select: 150 ohm
-# bit13-12:    10, M_STARTBURST_IN I/O buffer ODT Select: 75 ohm
-# bit14:        1, M_STARTBURST_IN ODT: Enabled
-# bit15:        1, DDR IO ODT Unit: Use ODT block
-DATA 0xFFD01480 0x00000001     # DDR Initialization Control
-#bit0=1, enable DDR init upon this register write
-
-# End of Header extension
-DATA 0x0 0x0
diff --git a/board/Marvell/openrd/openrd.c b/board/Marvell/openrd/openrd.c
deleted file mode 100644 (file)
index 55cf525..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * (C) Copyright 2009
- * Net Insight <www.netinsight.net>
- * Written-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
- *
- * Based on sheevaplug.c:
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <miiphy.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/soc.h>
-#include <asm/arch/mpp.h>
-#include "openrd.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_early_init_f(void)
-{
-       /*
-        * default gpio configuration
-        * There are maximum 64 gpios controlled through 2 sets of registers
-        * the  below configuration configures mainly initial LED status
-        */
-       mvebu_config_gpio(OPENRD_OE_VAL_LOW,
-                         OPENRD_OE_VAL_HIGH,
-                         OPENRD_OE_LOW, OPENRD_OE_HIGH);
-
-       /* Multi-Purpose Pins Functionality configuration */
-       static const u32 kwmpp_config[] = {
-               MPP0_NF_IO2,
-               MPP1_NF_IO3,
-               MPP2_NF_IO4,
-               MPP3_NF_IO5,
-               MPP4_NF_IO6,
-               MPP5_NF_IO7,
-               MPP6_SYSRST_OUTn,
-               MPP7_GPO,
-               MPP8_TW_SDA,
-               MPP9_TW_SCK,
-               MPP10_UART0_TXD,
-               MPP11_UART0_RXD,
-               MPP12_SD_CLK,
-               MPP13_SD_CMD, /* Alt UART1_TXD */
-               MPP14_SD_D0,  /* Alt UART1_RXD */
-               MPP15_SD_D1,
-               MPP16_SD_D2,
-               MPP17_SD_D3,
-               MPP18_NF_IO0,
-               MPP19_NF_IO1,
-               MPP20_GE1_0,
-               MPP21_GE1_1,
-               MPP22_GE1_2,
-               MPP23_GE1_3,
-               MPP24_GE1_4,
-               MPP25_GE1_5,
-               MPP26_GE1_6,
-               MPP27_GE1_7,
-               MPP28_GPIO,
-               MPP29_TSMP9,
-               MPP30_GE1_10,
-               MPP31_GE1_11,
-               MPP32_GE1_12,
-               MPP33_GE1_13,
-               MPP34_GPIO,   /* UART1 / SD sel */
-               MPP35_TDM_CH0_TX_QL,
-               MPP36_TDM_SPI_CS1,
-               MPP37_TDM_CH2_TX_QL,
-               MPP38_TDM_CH2_RX_QL,
-               MPP39_AUDIO_I2SBCLK,
-               MPP40_AUDIO_I2SDO,
-               MPP41_AUDIO_I2SLRC,
-               MPP42_AUDIO_I2SMCLK,
-               MPP43_AUDIO_I2SDI,
-               MPP44_AUDIO_EXTCLK,
-               MPP45_TDM_PCLK,
-               MPP46_TDM_FS,
-               MPP47_TDM_DRX,
-               MPP48_TDM_DTX,
-               MPP49_TDM_CH0_RX_QL,
-               0
-       };
-
-       kirkwood_mpp_conf(kwmpp_config, NULL);
-       return 0;
-}
-
-int board_init(void)
-{
-       /*
-        * arch number of board
-        */
-#if defined(CONFIG_BOARD_IS_OPENRD_BASE)
-       gd->bd->bi_arch_number = MACH_TYPE_OPENRD_BASE;
-#elif defined(CONFIG_BOARD_IS_OPENRD_CLIENT)
-       gd->bd->bi_arch_number = MACH_TYPE_OPENRD_CLIENT;
-#elif defined(CONFIG_BOARD_IS_OPENRD_ULTIMATE)
-       gd->bd->bi_arch_number = MACH_TYPE_OPENRD_ULTIMATE;
-#endif
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
-       return 0;
-}
-
-#ifdef CONFIG_RESET_PHY_R
-/* Configure and enable MV88E1116/88E1121 PHY */
-void mv_phy_init(char *name)
-{
-       u16 reg;
-       u16 devadr;
-
-       if (miiphy_set_current_dev(name))
-               return;
-
-       /* command to read PHY dev address */
-       if (miiphy_read(name, 0xEE, 0xEE, (u16 *) &devadr)) {
-               printf("Err..%s could not read PHY dev address\n",
-                       __FUNCTION__);
-               return;
-       }
-
-       /*
-        * Enable RGMII delay on Tx and Rx for CPU port
-        * Ref: sec 4.7.2 of chip datasheet
-        */
-       miiphy_write(name, devadr, MV88E1116_PGADR_REG, 2);
-       miiphy_read(name, devadr, MV88E1116_MAC_CTRL_REG, &reg);
-       reg |= (MV88E1116_RGMII_RXTM_CTRL | MV88E1116_RGMII_TXTM_CTRL);
-       miiphy_write(name, devadr, MV88E1116_MAC_CTRL_REG, reg);
-       miiphy_write(name, devadr, MV88E1116_PGADR_REG, 0);
-
-       /* reset the phy */
-       miiphy_reset(name, devadr);
-
-       printf(PHY_NO" Initialized on %s\n", name);
-}
-
-void reset_phy(void)
-{
-       mv_phy_init("egiga0");
-
-#ifdef CONFIG_BOARD_IS_OPENRD_CLIENT
-       /* Kirkwood ethernet driver is written with the assumption that in case
-        * of multiple PHYs, their addresses are consecutive. But unfortunately
-        * in case of OpenRD-Client, PHY addresses are not consecutive.*/
-       miiphy_write("egiga1", 0xEE, 0xEE, 24);
-#endif
-
-#if defined(CONFIG_BOARD_IS_OPENRD_CLIENT) || \
-       defined(CONFIG_BOARD_IS_OPENRD_ULTIMATE)
-       /* configure and initialize both PHY's */
-       mv_phy_init("egiga1");
-#endif
-}
-#endif /* CONFIG_RESET_PHY_R */
diff --git a/board/Marvell/openrd/openrd.h b/board/Marvell/openrd/openrd.h
deleted file mode 100644 (file)
index 56dfeea..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- * (C) Copyright 2009
- * Net Insight <www.netinsight.net>
- * Written-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
- *
- * Based on sheevaplug.h:
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __OPENRD_BASE_H
-#define __OPENRD_BASE_H
-
-#define OPENRD_OE_LOW          (~(1<<28))        /* RS232 / RS485 */
-#define OPENRD_OE_HIGH         (~(1<<2))         /* SD / UART1 */
-#define OPENRD_OE_VAL_LOW              (0)       /* Sel RS232 */
-#define OPENRD_OE_VAL_HIGH             (1 << 2)  /* Sel SD */
-
-/* PHY related */
-#define MV88E1116_LED_FCTRL_REG                10
-#define MV88E1116_CPRSP_CR3_REG                21
-#define MV88E1116_MAC_CTRL_REG         21
-#define MV88E1116_PGADR_REG            22
-#define MV88E1116_RGMII_TXTM_CTRL      (1 << 4)
-#define MV88E1116_RGMII_RXTM_CTRL      (1 << 5)
-
-#endif /* __OPENRD_BASE_H */
diff --git a/board/Marvell/rd6281a/Kconfig b/board/Marvell/rd6281a/Kconfig
deleted file mode 100644 (file)
index 025ee26..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_RD6281A
-
-config SYS_BOARD
-       default "rd6281a"
-
-config SYS_VENDOR
-       default "Marvell"
-
-config SYS_CONFIG_NAME
-       default "rd6281a"
-
-endif
diff --git a/board/Marvell/rd6281a/MAINTAINERS b/board/Marvell/rd6281a/MAINTAINERS
deleted file mode 100644 (file)
index d4ad592..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-RD6281A BOARD
-M:     Prafulla Wadaskar <prafulla@marvell.com>
-S:     Maintained
-F:     board/Marvell/rd6281a/
-F:     include/configs/rd6281a.h
-F:     configs/rd6281a_defconfig
diff --git a/board/Marvell/rd6281a/Makefile b/board/Marvell/rd6281a/Makefile
deleted file mode 100644 (file)
index cb77370..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2009
-# Marvell Semiconductor <www.marvell.com>
-# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := rd6281a.o
diff --git a/board/Marvell/rd6281a/kwbimage.cfg b/board/Marvell/rd6281a/kwbimage.cfg
deleted file mode 100644 (file)
index f969d92..0000000
+++ /dev/null
@@ -1,151 +0,0 @@
-#
-# (C) Copyright 2009
-# Marvell Semiconductor <www.marvell.com>
-# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-# Refer doc/README.kwbimage for more details about how-to configure
-# and create kirkwood boot image
-#
-
-# Boot Media configurations
-BOOT_FROM      nand
-NAND_ECC_MODE  default
-NAND_PAGE_SIZE 0x0800
-
-# SOC registers configuration using bootrom header extension
-# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
-
-# Configure RGMII-0 interface pad voltage to 1.8V
-DATA 0xFFD100e0 0x1b1b1b9b
-
-#Dram initalization for SINGLE x16 CL=5 @ 400MHz
-DATA 0xFFD01400 0x43000c30     # DDR Configuration register
-# bit13-0:  0xc30 (3120 DDR2 clks refresh rate)
-# bit23-14: zero
-# bit24: 1= enable exit self refresh mode on DDR access
-# bit25: 1 required
-# bit29-26: zero
-# bit31-30: 01
-
-DATA 0xFFD01404 0x37543000     # DDR Controller Control Low
-# bit 4:    0=addr/cmd in smame cycle
-# bit 5:    0=clk is driven during self refresh, we don't care for APX
-# bit 6:    0=use recommended falling edge of clk for addr/cmd
-# bit14:    0=input buffer always powered up
-# bit18:    1=cpu lock transaction enabled
-# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled bit31=0
-# bit27-24: 7= CL+2, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
-# bit30-28: 3 required
-# bit31:    0=no additional STARTBURST delay
-
-DATA 0xFFD01408 0x22125451     # DDR Timing (Low) (active cycles value +1)
-# bit3-0:   TRAS lsbs
-# bit7-4:   TRCD
-# bit11- 8: TRP
-# bit15-12: TWR
-# bit19-16: TWTR
-# bit20:    TRAS msb
-# bit23-21: 0x0
-# bit27-24: TRRD
-# bit31-28: TRTP
-
-DATA 0xFFD0140C 0x00000a33     #  DDR Timing (High)
-# bit6-0:   TRFC
-# bit8-7:   TR2R
-# bit10-9:  TR2W
-# bit12-11: TW2W
-# bit31-13: zero required
-
-DATA 0xFFD01410 0x00000099     #  DDR Address Control
-# bit1-0:   00, Cs0width=x8
-# bit3-2:   11, Cs0size=1Gb
-# bit5-4:   00, Cs1width=x8
-# bit7-6:   11, Cs1size=1Gb
-# bit9-8:   00, Cs2width=nonexistent
-# bit11-10: 00, Cs2size =nonexistent
-# bit13-12: 00, Cs3width=nonexistent
-# bit15-14: 00, Cs3size =nonexistent
-# bit16:    0,  Cs0AddrSel
-# bit17:    0,  Cs1AddrSel
-# bit18:    0,  Cs2AddrSel
-# bit19:    0,  Cs3AddrSel
-# bit31-20: 0 required
-
-DATA 0xFFD01414 0x00000000     #  DDR Open Pages Control
-# bit0:    0,  OpenPage enabled
-# bit31-1: 0 required
-
-DATA 0xFFD01418 0x00000000     #  DDR Operation
-# bit3-0:   0x0, DDR cmd
-# bit31-4:  0 required
-
-DATA 0xFFD0141C 0x00000C52     #  DDR Mode
-# bit2-0:   2, BurstLen=2 required
-# bit3:     0, BurstType=0 required
-# bit6-4:   4, CL=5
-# bit7:     0, TestMode=0 normal
-# bit8:     0, DLL reset=0 normal
-# bit11-9:  6, auto-precharge write recovery ????????????
-# bit12:    0, PD must be zero
-# bit31-13: 0 required
-
-DATA 0xFFD01420 0x00000004     #  DDR Extended Mode
-# bit0:    0,  DDR DLL enabled
-# bit1:    0,  DDR drive strenght normal
-# bit2:    1,  DDR ODT control lsd (disabled)
-# bit5-3:  000, required
-# bit6:    0,  DDR ODT control msb, (disabled)
-# bit9-7:  000, required
-# bit10:   0,  differential DQS enabled
-# bit11:   0, required
-# bit12:   0, DDR output buffer enabled
-# bit31-13: 0 required
-
-DATA 0xFFD01424 0x0000F17F     #  DDR Controller Control High
-# bit2-0:  111, required
-# bit3  :  1  , MBUS Burst Chop disabled
-# bit6-4:  111, required
-# bit7  :  0
-# bit8  :  1  , add writepath sample stage, must be 1 for DDR freq >= 300MHz
-# bit9  :  0  , no half clock cycle addition to dataout
-# bit10 :  0  , 1/4 clock cycle skew enabled for addr/ctl signals
-# bit11 :  0  , 1/4 clock cycle skew disabled for write mesh
-# bit15-12: 1111 required
-# bit31-16: 0    required
-
-DATA 0xFFD01428 0x00085520     # DDR2 ODT Read Timing (default values)
-DATA 0xFFD0147C 0x00008552     # DDR2 ODT Write Timing (default values)
-
-DATA 0xFFD01500 0x00000000     # CS[0]n Base address to 0x0
-DATA 0xFFD01504 0x0FFFFFF1     # CS[0]n Size
-# bit0:    1,  Window enabled
-# bit1:    0,  Write Protect disabled
-# bit3-2:  00, CS0 hit selected
-# bit23-4: ones, required
-# bit31-24: 0x0F, Size (i.e. 256MB)
-
-DATA 0xFFD01508 0x10000000     # CS[1]n Base address to 256Mb
-DATA 0xFFD0150C 0x0FFFFFF5     # CS[1]n Size 256Mb Window enabled for CS1
-
-DATA 0xFFD01514 0x00000000     # CS[2]n Size, window disabled
-DATA 0xFFD0151C 0x00000000     # CS[3]n Size, window disabled
-
-DATA 0xFFD01494 0x00120012     #  DDR ODT Control (Low)
-# bit3-0:  2, ODT0Rd, MODT[0] asserted during read from DRAM CS1
-# bit7-4:  1, ODT0Rd, MODT[0] asserted during read from DRAM CS0
-# bit19-16:2, ODT0Wr, MODT[0] asserted during write to DRAM CS1
-# bit23-20:1, ODT0Wr, MODT[0] asserted during write to DRAM CS0
-
-DATA 0xFFD01498 0x00000000     #  DDR ODT Control (High)
-# bit1-0:  00, ODT0 controlled by ODT Control (low) register above
-# bit3-2:  01, ODT1 active NEVER!
-# bit31-4: zero, required
-
-DATA 0xFFD0149C 0x0000E40F     # CPU ODT Control
-DATA 0xFFD01480 0x00000001     # DDR Initialization Control
-#bit0=1, enable DDR init upon this register write
-
-# End of Header extension
-DATA 0x0 0x0
diff --git a/board/Marvell/rd6281a/rd6281a.c b/board/Marvell/rd6281a/rd6281a.c
deleted file mode 100644 (file)
index b0020c9..0000000
+++ /dev/null
@@ -1,157 +0,0 @@
-/*
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <miiphy.h>
-#include <netdev.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/soc.h>
-#include <asm/arch/mpp.h>
-#include "rd6281a.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_early_init_f(void)
-{
-       /*
-        * default gpio configuration
-        * There are maximum 64 gpios controlled through 2 sets of registers
-        * the  below configuration configures mainly initial LED status
-        */
-       mvebu_config_gpio(RD6281A_OE_VAL_LOW,
-                         RD6281A_OE_VAL_HIGH,
-                         RD6281A_OE_LOW, RD6281A_OE_HIGH);
-
-       /* Multi-Purpose Pins Functionality configuration */
-       static const u32 kwmpp_config[] = {
-               MPP0_NF_IO2,
-               MPP1_NF_IO3,
-               MPP2_NF_IO4,
-               MPP3_NF_IO5,
-               MPP4_NF_IO6,
-               MPP5_NF_IO7,
-               MPP6_SYSRST_OUTn,
-               MPP7_GPO,
-               MPP8_TW_SDA,
-               MPP9_TW_SCK,
-               MPP10_UART0_TXD,
-               MPP11_UART0_RXD,
-               MPP12_SD_CLK,
-               MPP13_SD_CMD,
-               MPP14_SD_D0,
-               MPP15_SD_D1,
-               MPP16_SD_D2,
-               MPP17_SD_D3,
-               MPP18_NF_IO0,
-               MPP19_NF_IO1,
-               MPP20_GE1_0,
-               MPP21_GE1_1,
-               MPP22_GE1_2,
-               MPP23_GE1_3,
-               MPP24_GE1_4,
-               MPP25_GE1_5,
-               MPP26_GE1_6,
-               MPP27_GE1_7,
-               MPP28_GPIO,
-               MPP29_GPIO,
-               MPP30_GE1_10,
-               MPP31_GE1_11,
-               MPP32_GE1_12,
-               MPP33_GE1_13,
-               MPP34_GE1_14,
-               MPP35_GPIO,
-               MPP36_AUDIO_SPDIFI,
-               MPP37_AUDIO_SPDIFO,
-               MPP38_GPIO,
-               MPP39_TDM_SPI_CS0,
-               MPP40_TDM_SPI_SCK,
-               MPP41_TDM_SPI_MISO,
-               MPP42_TDM_SPI_MOSI,
-               MPP43_TDM_CODEC_INTn,
-               MPP44_GPIO,
-               MPP45_TDM_PCLK,
-               MPP46_TDM_FS,
-               MPP47_TDM_DRX,
-               MPP48_TDM_DTX,
-               MPP49_GPIO,
-               0
-       };
-       kirkwood_mpp_conf(kwmpp_config, NULL);
-       return 0;
-}
-
-int board_init(void)
-{
-       /*
-        * arch number of board
-        */
-       gd->bd->bi_arch_number = MACH_TYPE_RD88F6281;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
-
-       return 0;
-}
-
-void mv_phy_88e1116_init(char *name)
-{
-       u16 reg;
-       u16 devadr;
-
-       if (miiphy_set_current_dev(name))
-               return;
-
-       /* command to read PHY dev address */
-       if (miiphy_read(name, 0xEE, 0xEE, (u16 *) &devadr)) {
-               printf("Err..%s could not read PHY dev address\n",
-                       __FUNCTION__);
-               return;
-       }
-
-       /*
-        * Enable RGMII delay on Tx and Rx for CPU port
-        * Ref: sec 4.7.2 of chip datasheet
-        */
-       miiphy_write(name, devadr, MV88E1116_PGADR_REG, 2);
-       miiphy_read(name, devadr, MV88E1116_MAC_CTRL_REG, &reg);
-       reg |= (MV88E1116_RGMII_RXTM_CTRL | MV88E1116_RGMII_TXTM_CTRL);
-       miiphy_write(name, devadr, MV88E1116_MAC_CTRL_REG, reg);
-       miiphy_write(name, devadr, MV88E1116_PGADR_REG, 0);
-
-       /* reset the phy */
-       if (miiphy_read (name, devadr, MII_BMCR, &reg) != 0) {
-               printf("Err..(%s) PHY status read failed\n", __FUNCTION__);
-               return;
-       }
-       if (miiphy_write (name, devadr, MII_BMCR, reg | 0x8000) != 0) {
-               printf("Err..(%s) PHY reset failed\n", __FUNCTION__);
-               return;
-       }
-
-       printf("88E1116 Initialized on %s\n", name);
-}
-
-/* Configure and enable Switch and PHY */
-void reset_phy(void)
-{
-       /* configure and initialize switch */
-       struct mv88e61xx_config swcfg = {
-               .name = "egiga0",
-               .vlancfg = MV88E61XX_VLANCFG_ROUTER,
-               .rgmii_delay = MV88E61XX_RGMII_DELAY_EN,
-               .led_init = MV88E61XX_LED_INIT_EN,
-               .portstate = MV88E61XX_PORTSTT_FORWARDING,
-               .cpuport = (1 << 5),
-               .ports_enabled = 0x3f,
-       };
-
-       mv88e61xx_switch_initialize(&swcfg);
-
-       /* configure and initialize PHY */
-       mv_phy_88e1116_init("egiga1");
-}
diff --git a/board/Marvell/rd6281a/rd6281a.h b/board/Marvell/rd6281a/rd6281a.h
deleted file mode 100644 (file)
index 5e1f6a8..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __RD6281A_H
-#define __RD6281A_H
-
-#define RD6281A_OE_LOW                 (~(1 << 7))
-#define RD6281A_OE_HIGH                        (~(1 << 2 | 1 << 12))
-#define RD6281A_OE_VAL_LOW             (0)
-#define RD6281A_OE_VAL_HIGH            (1 << 12)
-
-/* PHY related */
-#define MV88E1116_LED_FCTRL_REG                10
-#define MV88E1116_CPRSP_CR3_REG                21
-#define MV88E1116_MAC_CTRL_REG         21
-#define MV88E1116_PGADR_REG            22
-#define MV88E1116_RGMII_TXTM_CTRL      (1 << 4)
-#define MV88E1116_RGMII_RXTM_CTRL      (1 << 5)
-
-#endif /* __RD6281A_H */
index 500b665cb95a6feae18656ec30275c5b14cd7de5..e416c9ac0df0943687abdb9c11612ac815364502 100644 (file)
@@ -3,9 +3,6 @@ if TARGET_ARISTAINETOS
 config SYS_BOARD
        default "aristainetos"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "aristainetos"
 
@@ -16,10 +13,17 @@ if TARGET_ARISTAINETOS2
 config SYS_BOARD
        default "aristainetos"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "aristainetos2"
 
 endif
+
+if TARGET_ARISTAINETOS2B
+
+config SYS_BOARD
+       default "aristainetos"
+
+config SYS_CONFIG_NAME
+       default "aristainetos2b"
+
+endif
index d6a761430d9a6a68ecf0e4d9482ca248ecd268c8..b8fed2e3fdccaccd02b8f098688929cd30de1e2d 100644 (file)
@@ -185,7 +185,7 @@ int board_eth_init(bd_t *bis)
        /* clear gpr1[14], gpr1[18:17] to select anatop clock */
        clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC_MASK, 0);
 
-       ret = enable_fec_anatop_clock(ENET_50MHZ);
+       ret = enable_fec_anatop_clock(0, ENET_50MHZ);
        if (ret)
                return ret;
 
index 7a440310437ad9d77e2bc334e755c67c1db0736d..49dbd2e4972a1e18a22d7a840775126698aec0c8 100644 (file)
 #define USDHC2_PAD_CTRL (PAD_CTL_SPEED_LOW |                   \
        PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST)
 
-#define ECSPI1_CS0             IMX_GPIO_NR(4, 9)   /* 4.3 display controller */
-#define ECSPI4_CS0             IMX_GPIO_NR(3, 29)
+#if (CONFIG_SYS_BOARD_VERSION == 2)
+       /* 4.3 display controller */
+       #define ECSPI1_CS0              IMX_GPIO_NR(4, 9)
+       #define ECSPI4_CS0              IMX_GPIO_NR(3, 29)
+#elif (CONFIG_SYS_BOARD_VERSION == 3)
+       #define ECSPI1_CS0              IMX_GPIO_NR(2, 30)   /* NOR flash */
+       /* 4.3 display controller */
+       #define ECSPI1_CS1              IMX_GPIO_NR(4, 10)
+#endif
+
 #define SOFT_RESET_GPIO                IMX_GPIO_NR(7, 13)
 #define SD2_DRIVER_ENABLE      IMX_GPIO_NR(7, 8)
 
@@ -103,7 +111,11 @@ iomux_v3_cfg_t const gpio_pads[] = {
        /* LED yellow */
        MX6_PAD_NANDF_CS3__GPIO6_IO16 | MUX_PAD_CTRL(NO_PAD_CTRL),
        /* LED red */
+#if (CONFIG_SYS_BOARD_VERSION == 2)
        MX6_PAD_EIM_EB0__GPIO2_IO28 | MUX_PAD_CTRL(NO_PAD_CTRL),
+#elif (CONFIG_SYS_BOARD_VERSION == 3)
+       MX6_PAD_EIM_WAIT__GPIO5_IO00 | MUX_PAD_CTRL(NO_PAD_CTRL),
+#endif
        /* LED green */
        MX6_PAD_EIM_A24__GPIO5_IO04 | MUX_PAD_CTRL(NO_PAD_CTRL),
        /* LED blue */
@@ -170,7 +182,12 @@ static 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),
+#if (CONFIG_SYS_BOARD_VERSION == 2)
        MX6_PAD_KEY_ROW1__GPIO4_IO09 | MUX_PAD_CTRL(SPI_PAD_CTRL),
+#elif (CONFIG_SYS_BOARD_VERSION == 3)
+       MX6_PAD_EIM_EB2__GPIO2_IO30  | MUX_PAD_CTRL(SPI_PAD_CTRL),
+       MX6_PAD_KEY_COL2__GPIO4_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
+#endif
 };
 
 static void setup_iomux_enet(void)
@@ -178,6 +195,7 @@ static void setup_iomux_enet(void)
        imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
 }
 
+#if (CONFIG_SYS_BOARD_VERSION == 2)
 iomux_v3_cfg_t const ecspi4_pads[] = {
        MX6_PAD_EIM_D21__ECSPI4_SCLK | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_EIM_D22__ECSPI4_MISO | MUX_PAD_CTRL(NO_PAD_CTRL),
@@ -185,13 +203,13 @@ iomux_v3_cfg_t const ecspi4_pads[] = {
        MX6_PAD_EIM_A25__GPIO5_IO02  | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_EIM_D29__GPIO3_IO29  | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
+#endif
 
 static iomux_v3_cfg_t const display_pads[] = {
        MX6_PAD_DI0_DISP_CLK__IPU1_DI0_DISP_CLK | MUX_PAD_CTRL(DISP_PAD_CTRL),
        MX6_PAD_DI0_PIN15__IPU1_DI0_PIN15,
        MX6_PAD_DI0_PIN2__IPU1_DI0_PIN02,
        MX6_PAD_DI0_PIN3__IPU1_DI0_PIN03,
-       MX6_PAD_DI0_PIN4__GPIO4_IO20,
        MX6_PAD_DISP0_DAT0__IPU1_DISP0_DATA00,
        MX6_PAD_DISP0_DAT1__IPU1_DISP0_DATA01,
        MX6_PAD_DISP0_DAT2__IPU1_DISP0_DATA02,
@@ -221,11 +239,17 @@ static iomux_v3_cfg_t const display_pads[] = {
 int board_spi_cs_gpio(unsigned bus, unsigned cs)
 {
        if (bus == CONFIG_SF_DEFAULT_BUS && cs == CONFIG_SF_DEFAULT_CS)
+#if (CONFIG_SYS_BOARD_VERSION == 2)
                return IMX_GPIO_NR(5, 2);
 
        if (bus == 0 && cs == 0)
                return IMX_GPIO_NR(4, 9);
+#elif (CONFIG_SYS_BOARD_VERSION == 3)
+               return ECSPI1_CS0;
 
+       if (bus == 0 && cs == 1)
+               return ECSPI1_CS1;
+#endif
        return -1;
 }
 
@@ -234,15 +258,22 @@ static void setup_spi(void)
        int i;
 
        imx_iomux_v3_setup_multiple_pads(ecspi1_pads, ARRAY_SIZE(ecspi1_pads));
+
+#if (CONFIG_SYS_BOARD_VERSION == 2)
        imx_iomux_v3_setup_multiple_pads(ecspi4_pads, ARRAY_SIZE(ecspi4_pads));
+#endif
+
        for (i = 0; i < 4; i++)
                enable_spi_clk(true, i);
 
        gpio_direction_output(ECSPI1_CS0, 1);
+#if (CONFIG_SYS_BOARD_VERSION == 2)
        gpio_direction_output(ECSPI4_CS1, 0);
-
        /* set cs0 to high (second device on spi bus #4) */
        gpio_direction_output(ECSPI4_CS0, 1);
+#elif (CONFIG_SYS_BOARD_VERSION == 3)
+       gpio_direction_output(ECSPI1_CS1, 1);
+#endif
 }
 
 static void setup_iomux_uart(void)
@@ -573,6 +604,7 @@ static void setup_board_gpio(void)
        gpio_direction_output(IMX_GPIO_NR(1, 25), 0);
 
        /* switch off Status LEDs */
+#if (CONFIG_SYS_BOARD_VERSION == 2)
        gpio_request(IMX_GPIO_NR(6, 16), "LED yellow"); /* 176 */
        gpio_direction_output(IMX_GPIO_NR(6, 16), 1);
        gpio_request(IMX_GPIO_NR(2, 28), "LED red"); /* 60 */
@@ -581,11 +613,21 @@ static void setup_board_gpio(void)
        gpio_direction_output(IMX_GPIO_NR(5, 4), 1);
        gpio_request(IMX_GPIO_NR(2, 29), "LED blue"); /* 61 */
        gpio_direction_output(IMX_GPIO_NR(2, 29), 1);
+#elif (CONFIG_SYS_BOARD_VERSION == 3)
+       gpio_request(IMX_GPIO_NR(6, 16), "LED yellow"); /* 176 */
+       gpio_direction_output(IMX_GPIO_NR(6, 16), 0);
+       gpio_request(IMX_GPIO_NR(5, 0), "LED red"); /* 128 */
+       gpio_direction_output(IMX_GPIO_NR(5, 0), 0);
+       gpio_request(IMX_GPIO_NR(5, 4), "LED green"); /* 132 */
+       gpio_direction_output(IMX_GPIO_NR(5, 4), 0);
+       gpio_request(IMX_GPIO_NR(2, 29), "LED blue"); /* 61 */
+       gpio_direction_output(IMX_GPIO_NR(2, 29), 0);
+#endif
 }
 
 static void setup_board_spi(void)
 {
-       /* enable spi bus #2 SS drivers */
+       /* enable spi bus #2 SS drivers (and spi bus #4 SS1 for rev2b) */
        gpio_direction_output(IMX_GPIO_NR(6, 6), 1);
 }
 
@@ -620,8 +662,9 @@ int board_late_init(void)
        /* if we have the lg panel, we can initialze it now */
        if (panel)
                if (!strcmp(panel, displays[1].mode.name))
-                       lg4573_spi_startup(0, 0, 10000000, SPI_MODE_0);
+                       lg4573_spi_startup(CONFIG_LG4573_BUS,
+                                          CONFIG_LG4573_CS,
+                                          10000000, SPI_MODE_0);
 
        return 0;
 }
-
index 0c39ee6cf1f43859d80aa77393a635a43297344a..e95ec81760f2082c91bdf4ad6409416ff24c8f4c 100644 (file)
@@ -60,7 +60,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #if (CONFIG_SYS_BOARD_VERSION == 1)
 #include "./aristainetos-v1.c"
-#elif (CONFIG_SYS_BOARD_VERSION == 2)
+#elif ((CONFIG_SYS_BOARD_VERSION == 2) || (CONFIG_SYS_BOARD_VERSION == 3))
 #include "./aristainetos-v2.c"
 #endif
 
@@ -163,18 +163,18 @@ struct display_info_t const displays[] = {
                        .refresh        = 60,
                        .xres           = 800,
                        .yres           = 480,
-                       .pixclock       = 33246,
+                       .pixclock       = 30066,
                        .left_margin    = 88,
                        .right_margin   = 88,
-                       .upper_margin   = 10,
-                       .lower_margin   = 10,
+                       .upper_margin   = 20,
+                       .lower_margin   = 20,
                        .hsync_len      = 80,
-                       .vsync_len      = 25,
-                       .sync           = 0,
+                       .vsync_len      = 5,
+                       .sync           = FB_SYNC_EXT,
                        .vmode          = FB_VMODE_NONINTERLACED
                }
        }
-#if (CONFIG_SYS_BOARD_VERSION == 2)
+#if ((CONFIG_SYS_BOARD_VERSION == 2) || (CONFIG_SYS_BOARD_VERSION == 3))
        , {
                .bus    = -1,
                .addr   = 0,
@@ -183,7 +183,7 @@ struct display_info_t const displays[] = {
                .enable = enable_spi_display,
                .mode   = {
                        .name           = "lg4573",
-                       .refresh        = 60,
+                       .refresh        = 57,
                        .xres           = 480,
                        .yres           = 800,
                        .pixclock       = 37037,
@@ -214,9 +214,6 @@ iomux_v3_cfg_t nfc_pads[] = {
        MX6_PAD_NANDF_WP_B__NAND_WP_B   | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_NANDF_RB0__NAND_READY_B | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_NANDF_CS0__NAND_CE0_B           | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_NANDF_CS1__NAND_CE1_B           | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_NANDF_CS2__NAND_CE2_B           | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_NANDF_CS3__NAND_CE3_B           | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_SD4_CMD__NAND_RE_B              | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_SD4_CLK__NAND_WE_B              | MUX_PAD_CTRL(NO_PAD_CTRL),
        MX6_PAD_NANDF_D0__NAND_DATA00           | MUX_PAD_CTRL(NO_PAD_CTRL),
diff --git a/board/armltd/versatile/MAINTAINERS b/board/armltd/versatile/MAINTAINERS
deleted file mode 100644 (file)
index a56dd99..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-VERSATILE BOARD
-#M:    -
-S:     Maintained
-F:     board/armltd/versatile/
-F:     include/configs/versatile.h
-F:     configs/versatileab_defconfig
-F:     configs/versatilepb_defconfig
-F:     configs/versatileqemu_defconfig
diff --git a/board/armltd/versatile/Makefile b/board/armltd/versatile/Makefile
deleted file mode 100644 (file)
index a09a0ae..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := versatile.o
-obj-y  += lowlevel_init.o
diff --git a/board/armltd/versatile/lowlevel_init.S b/board/armltd/versatile/lowlevel_init.S
deleted file mode 100644 (file)
index 539ba41..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Board specific setup info
- *
- * (C) Copyright 2003, ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-
-/* Set up the platform, once the cpu has been initialized */
-.globl lowlevel_init
-lowlevel_init:
-
-       /* All done by Versatile's boot monitor! */
-       mov pc, lr
diff --git a/board/armltd/versatile/versatile.c b/board/armltd/versatile/versatile.c
deleted file mode 100644 (file)
index 4e2d342..0000000
+++ /dev/null
@@ -1,99 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2002
- * David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
- *
- * (C) Copyright 2003
- * Texas Instruments, <www.ti.com>
- * Kshitij Gupta <Kshitij@ti.com>
- *
- * (C) Copyright 2004
- * ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if defined(CONFIG_SHOW_BOOT_PROGRESS)
-void show_boot_progress(int progress)
-{
-    printf("Boot reached stage %d\n", progress);
-}
-#endif
-
-#define COMP_MODE_ENABLE ((unsigned int)0x0000EAEF)
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_early_init_f (void)
-{
-       /*
-        * set clock frequency:
-        *      VERSATILE_REFCLK is 32KHz
-        *      VERSATILE_TIMCLK is 1MHz
-        */
-       *(volatile unsigned int *)(VERSATILE_SCTL_BASE) |=
-         ((VERSATILE_TIMCLK << VERSATILE_TIMER1_EnSel) | (VERSATILE_TIMCLK << VERSATILE_TIMER2_EnSel) |
-          (VERSATILE_TIMCLK << VERSATILE_TIMER3_EnSel) | (VERSATILE_TIMCLK << VERSATILE_TIMER4_EnSel));
-
-       return 0;
-}
-
-int board_init (void)
-{
-       /* arch number of Versatile Board */
-#ifdef CONFIG_ARCH_VERSATILE_AB
-       gd->bd->bi_arch_number = MACH_TYPE_VERSATILE_AB;
-#else
-       gd->bd->bi_arch_number = MACH_TYPE_VERSATILE_PB;
-#endif
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0x00000100;
-
-       gd->flags = 0;
-
-       icache_enable ();
-
-       return 0;
-}
-
-
-int misc_init_r (void)
-{
-       setenv("verify", "n");
-       return (0);
-}
-
-/******************************
- Routine:
- Description:
-******************************/
-int dram_init (void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
-                               PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-#ifdef CONFIG_CMD_NET
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_SMC91111
-       rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
-#endif
-       return rc;
-}
-#endif
index 7f8a6a1abc3a444caaeb2e8c047a0329e7dd26e9..4ccb60a97fed9cd8f6ae2d8052a7c075ac509ef7 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "bachmann"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "ot1200"
 
index 2237b7aa1fa188bc606d07f18912acda0b7a7cbf..eeced7943ed4ffada3b1a2e429e56f80799bfef4 100644 (file)
@@ -305,13 +305,13 @@ int board_eth_init(bd_t *bis)
 
        bus = fec_get_miibus(base, -1);
        if (!bus)
-               return 0;
+               return -EINVAL;
 
        /* scan phy 0 and 5 */
        phydev = phy_find_by_mask(bus, 0x21, PHY_INTERFACE_MODE_RGMII);
        if (!phydev) {
-               free(bus);
-               return 0;
+               ret = -EINVAL;
+               goto free_bus;
        }
 
        /* depending on the phy address we can detect our board version */
@@ -322,12 +322,16 @@ int board_eth_init(bd_t *bis)
 
        printf("using phy at %d\n", phydev->addr);
        ret = fec_probe(bis, -1, base, bus, phydev);
-       if (ret) {
-               printf("FEC MXC: %s:failed\n", __func__);
-               free(phydev);
-               free(bus);
-       }
+       if (ret)
+               goto free_phydev;
+
        return 0;
+
+free_phydev:
+       free(phydev);
+free_bus:
+       free(bus);
+       return ret;
 }
 
 int board_init(void)
diff --git a/board/balloon3/Kconfig b/board/balloon3/Kconfig
deleted file mode 100644 (file)
index 53b7a9a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_BALLOON3
-
-config SYS_BOARD
-       default "balloon3"
-
-config SYS_CONFIG_NAME
-       default "balloon3"
-
-endif
diff --git a/board/balloon3/MAINTAINERS b/board/balloon3/MAINTAINERS
deleted file mode 100644 (file)
index df9a5bb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-BALLOON3 BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
-F:     board/balloon3/
-F:     include/configs/balloon3.h
-F:     configs/balloon3_defconfig
diff --git a/board/balloon3/Makefile b/board/balloon3/Makefile
deleted file mode 100644 (file)
index d7fb5e0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Balloon3 Support
-#
-# Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := balloon3.o
diff --git a/board/balloon3/balloon3.c b/board/balloon3/balloon3.c
deleted file mode 100644 (file)
index 458d90c..0000000
+++ /dev/null
@@ -1,221 +0,0 @@
-/*
- * Balloon3 Support
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/pxa.h>
-#include <serial.h>
-#include <asm/io.h>
-#include <spartan3.h>
-#include <command.h>
-#include <usb.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void balloon3_init_fpga(void);
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* arch number of balloon3 */
-       gd->bd->bi_arch_number = MACH_TYPE_BALLOON3;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       /* Init the FPGA */
-       balloon3_init_fpga();
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
-       gd->bd->bi_dram[2].start = PHYS_SDRAM_3;
-
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-       gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-       gd->bd->bi_dram[2].size = PHYS_SDRAM_3_SIZE;
-}
-
-#ifdef CONFIG_CMD_USB
-int board_usb_init(int index, enum usb_init_type init)
-{
-       writel((readl(UHCHR) | UHCHR_PCPL | UHCHR_PSPL) &
-               ~(UHCHR_SSEP0 | UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE),
-               UHCHR);
-
-       writel(readl(UHCHR) | UHCHR_FSBIR, UHCHR);
-
-       while (readl(UHCHR) & UHCHR_FSBIR)
-               ;
-
-       writel(readl(UHCHR) & ~UHCHR_SSE, UHCHR);
-       writel((UHCHIE_UPRIE | UHCHIE_RWIE), UHCHIE);
-
-       /* Clear any OTG Pin Hold */
-       if (readl(PSSR) & PSSR_OTGPH)
-               writel(readl(PSSR) | PSSR_OTGPH, PSSR);
-
-       writel(readl(UHCRHDA) & ~(0x200), UHCRHDA);
-       writel(readl(UHCRHDA) | 0x100, UHCRHDA);
-
-       /* Set port power control mask bits, only 3 ports. */
-       writel(readl(UHCRHDB) | (0x7<<17), UHCRHDB);
-
-       /* enable port 2 */
-       writel(readl(UP2OCR) | UP2OCR_HXOE | UP2OCR_HXS |
-               UP2OCR_DMPDE | UP2OCR_DPPDE, UP2OCR);
-
-       return 0;
-}
-
-int board_usb_cleanup(int index, enum usb_init_type init)
-{
-       return 0;
-}
-
-void usb_board_stop(void)
-{
-       writel(readl(UHCHR) | UHCHR_FHR, UHCHR);
-       udelay(11);
-       writel(readl(UHCHR) & ~UHCHR_FHR, UHCHR);
-
-       writel(readl(UHCCOMS) | 1, UHCCOMS);
-       udelay(10);
-
-       writel(readl(CKEN) & ~CKEN10_USBHOST, CKEN);
-
-       return;
-}
-#endif
-
-#if defined(CONFIG_FPGA)
-/* Toggle GPIO103 and GPIO104 --  PROGB and RDnWR */
-int fpga_pgm_fn(int nassert, int nflush, int cookie)
-{
-       if (nassert)
-               writel(0x80, GPCR3);
-       else
-               writel(0x80, GPSR3);
-       if (nflush)
-               writel(0x100, GPCR3);
-       else
-               writel(0x100, GPSR3);
-       return nassert;
-}
-
-/* Check GPIO83 -- INITB */
-int fpga_init_fn(int cookie)
-{
-       return !(readl(GPLR2) & 0x80000);
-}
-
-/* Check GPIO84 -- BUSY */
-int fpga_busy_fn(int cookie)
-{
-       return !(readl(GPLR2) & 0x100000);
-}
-
-/* Check GPIO111 -- DONE */
-int fpga_done_fn(int cookie)
-{
-       return readl(GPLR3) & 0x8000;
-}
-
-/* Configure GPIO104 as GPIO and deassert it */
-int fpga_pre_config_fn(int cookie)
-{
-       writel(readl(GAFR3_L) & ~0x30000, GAFR3_L);
-       writel(0x100, GPCR3);
-       return 0;
-}
-
-/* Configure GPIO104 as nSKTSEL */
-int fpga_post_config_fn(int cookie)
-{
-       writel(readl(GAFR3_L) | 0x10000, GAFR3_L);
-       return 0;
-}
-
-/* Toggle RDnWR */
-int fpga_wr_fn(int nassert_write, int flush, int cookie)
-{
-       udelay(1000);
-
-       if (nassert_write)
-               writel(0x100, GPCR3);
-       else
-               writel(0x100, GPSR3);
-
-       return nassert_write;
-}
-
-/* Write program to the FPGA */
-int fpga_wdata_fn(uchar data, int flush, int cookie)
-{
-       writeb(data, 0x10f00000);
-       return 0;
-}
-
-/* Toggle Clock pin -- NO-OP */
-int fpga_clk_fn(int assert_clk, int flush, int cookie)
-{
-       return assert_clk;
-}
-
-/* Toggle ChipSelect pin -- NO-OP */
-int fpga_cs_fn(int assert_clk, int flush, int cookie)
-{
-       return assert_clk;
-}
-
-xilinx_spartan3_slave_parallel_fns balloon3_fpga_fns = {
-       fpga_pre_config_fn,
-       fpga_pgm_fn,
-       fpga_init_fn,
-       NULL,   /* err */
-       fpga_done_fn,
-       fpga_clk_fn,
-       fpga_cs_fn,
-       fpga_wr_fn,
-       NULL,   /* rdata */
-       fpga_wdata_fn,
-       fpga_busy_fn,
-       NULL,   /* abort */
-       fpga_post_config_fn,
-};
-
-xilinx_desc fpga = XILINX_XC3S1000_DESC(slave_parallel,
-                       (void *)&balloon3_fpga_fns, 0);
-
-/* Initialize the FPGA */
-void balloon3_init_fpga(void)
-{
-       fpga_init();
-       fpga_add(fpga_xilinx, &fpga);
-}
-#else
-void balloon3_init_fpga(void) {}
-#endif /* CONFIG_FPGA */
index 8bbad24c0de0c38b9daee173d87393b0b03f5f93..cc0648cd73b32b7e20b293de216a51a7cc997912 100644 (file)
@@ -6,9 +6,6 @@ config SYS_CPU
 config SYS_VENDOR
        default "barco"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_BOARD
        default "platinum"
 
@@ -25,9 +22,6 @@ config SYS_CPU
 config SYS_VENDOR
        default "barco"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_BOARD
        default "platinum"
 
index b2eab766c5872fb74989412a6a9d8abad4bcac44..0384a26e925b5b83565c552ecbb6c342d32cba95 100644 (file)
@@ -148,7 +148,7 @@ int platinum_setup_enet(void)
        /* set GPIO_16 as ENET_REF_CLK_OUT */
        setbits_le32(&iomux->gpr[1], IOMUXC_GPR1_ENET_CLK_SEL_MASK);
 
-       return enable_fec_anatop_clock(ENET_50MHZ);
+       return enable_fec_anatop_clock(0, ENET_50MHZ);
 }
 
 int platinum_setup_i2c(void)
index f421c2108c90a69570313ce23e479bdd6e59d906..098542fbd210dc3f9e4039eda1e8dfe402025656 100644 (file)
@@ -137,6 +137,7 @@ static void spl_dram_init(int width)
                .bi_on = 1,     /* Bank interleaving enabled */
                .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
                .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
+               .ddr_type = DDR_TYPE_DDR3,
        };
 
        mx6sdl_dram_iocfg(width, &mx6sdl_ddr_ioregs, &mx6sdl_grp_ioregs);
index 26fe26ba2b91327f03664511d034676c049efb3f..a3a42551b0540c23a6ede0d3e21fd25518683b46 100644 (file)
@@ -140,6 +140,7 @@ static void spl_dram_init(int width)
                .bi_on = 1,     /* Bank interleaving enabled */
                .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
                .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
+               .ddr_type = DDR_TYPE_DDR3,
        };
 
        mx6dq_dram_iocfg(width, &mx6dq_ddr_ioregs, &mx6dq_grp_ioregs);
index b6f7c855b513d9cda9f7db12a3aa01f027b65fac..21bc36e004f0f2d69370b890c909ec51a2bf5d4b 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "barco"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "titanium"
 
index 03b0f6f2783f42d554c486811484b27a0eeccd91..f4db56d49601c933ddec48605468f67a35231cb8 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "boundary"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "nitrogen6x"
 
index cb06c036910b6e4256ab9c036c2b7a4935c49c83..1602d650e3c112bf2c5d43c60afaf48524090ced 100644 (file)
@@ -1,5 +1,5 @@
 NITROGEN6X BOARD
-M:     Eric Nelson <eric.nelson@boundarydevices.com>
+M:     Troy Kisky <troy.kisky@boundarydevices.com>
 S:     Maintained
 F:     board/boundary/nitrogen6x/
 F:     include/configs/nitrogen6x.h
index d46b8db232c98a655123a67f5252fae254468586..104d71fa5262d996efeb92aa94992046531ee3e7 100644 (file)
@@ -387,20 +387,17 @@ int board_eth_init(bd_t *bis)
 #ifdef CONFIG_FEC_MXC
        bus = fec_get_miibus(base, -1);
        if (!bus)
-               return 0;
+               return -EINVAL;
        /* scan phy 4,5,6,7 */
        phydev = phy_find_by_mask(bus, (0xf << 4), PHY_INTERFACE_MODE_RGMII);
        if (!phydev) {
-               free(bus);
-               return 0;
+               ret = -EINVAL;
+               goto free_bus;
        }
        printf("using phy at %d\n", phydev->addr);
        ret  = fec_probe(bis, -1, base, bus, phydev);
-       if (ret) {
-               printf("FEC MXC: %s:failed\n", __func__);
-               free(phydev);
-               free(bus);
-       }
+       if (ret)
+               goto free_phydev;
 #endif
 
 #ifdef CONFIG_CI_UDC
@@ -408,6 +405,12 @@ int board_eth_init(bd_t *bis)
        usb_eth_initialize(bis);
 #endif
        return 0;
+
+free_phydev:
+       free(phydev);
+free_bus:
+       free(bus);
+       return ret;
 }
 
 static void setup_buttons(void)
diff --git a/board/cmi/Kconfig b/board/cmi/Kconfig
deleted file mode 100644 (file)
index 6efe6b1..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_CMI_MPC5XX
-
-config SYS_BOARD
-       default "cmi"
-
-config SYS_CONFIG_NAME
-       default "cmi_mpc5xx"
-
-endif
diff --git a/board/cmi/MAINTAINERS b/board/cmi/MAINTAINERS
deleted file mode 100644 (file)
index 60701bf..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CMI BOARD
-#M:    -
-S:     Maintained
-F:     board/cmi/
-F:     include/configs/cmi_mpc5xx.h
-F:     configs/cmi_mpc5xx_defconfig
diff --git a/board/cmi/Makefile b/board/cmi/Makefile
deleted file mode 100644 (file)
index cd3bb0d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := flash.o cmi.o
diff --git a/board/cmi/README b/board/cmi/README
deleted file mode 100644 (file)
index 0edd50a..0000000
+++ /dev/null
@@ -1,84 +0,0 @@
-
-Summary:
-========
-
-This file contains information about the cmi board configuration.
-Please see cmi_mpc5xx_config for further details. The cmi board is
-a customer specific board but should work with small modifications
-on every board which has a MPC5xx and either a 28F128J3A,
-28F320J3A or 28F640J3A Intel flash mounted.
-
-Board Discription:
-==================
-
-* Motorola MPC555
-* RS232 connection
-* Intel flash 28F640J3A
-* Micron SRAM 1M
-* Altera PLD
-
-Bootstrap:
-==========
-
-In contrast to the usual boot sequence used in U-Boot, on the
-cmi board we don't boot from the external flash directly.
-Because of we use a 16-bit flash and don't sample a RCW
-from the data bus to set the startup buswidth to 16-bit.
-Unfortunatly the default width, sampled from the default RCW
-is 32-bit. For this reason we burn the proper RCW into the
-internal flash shadow location and boot after power-on or
-reset from the internal flash and then branch to 0x02000100
-where the U-Boot reset vector handler is located.
-
-Memory Map:
-===========
-
-Memory Map after relocation:
-
-    0x0000 0000                CONFIG_SYS_SDRAM_BASE
-         :
-    0x000F 9FFF
-         :
-         :
-    0x0100 0000                CONFIG_SYS_IMMR (Internal memory map base adress)
-         :
-    0x0130 7FFF
-         :
-         :
-    0x0200 0000                CONFIG_SYS_FLASH_BASE
-         :
-    0x027C FFFF
-         :
-         :
-    0x0300 0000                PLD_BASE
-
-Flash Partition:
-
-    0x0200 0000                Block 0 and 1 contain U-Boot except
-         :             environment
-         :
-    0x0201 FFFF
-    0x0202 0000                Block 2 contains environment (.ppcenv)
-         :
-    0x0202 FFFF
-
-See README file for futher information about U-Boot relocation
-and partitioning.
-
-Tested Features:
-================
-
-* U-Boot commands: go, loads, loadb, all memory features, printenv,
-  setenv, saveenv, protect, erase, fli, bdi, mtest, reset, version,
-  coninfo, help (see configuration file for available commands)
-
-* Blinking led to indicate boot process
-
-Added or Changed Files:
-=======================
-
-u-boot-0.2.0/board/cmi/*
-u-boot-0.2.0/include/configs/cmi_mpc5xx.h
-
-Regards,
-Martin
diff --git a/board/cmi/cmi.c b/board/cmi/cmi.c
deleted file mode 100644 (file)
index 37028c3..0000000
+++ /dev/null
@@ -1,57 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Winistoerfer, martinwinistoerfer@gmx.ch.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * File:               cmi.c
- *
- * Discription:                For generic board specific functions
- *
- */
-
-
-#include <common.h>
-#include <mpc5xx.h>
-
-#define SRAM_SIZE      1024000L        /* 1M RAM available*/
-
-#if defined(__APPLE__)
-/* Leading underscore on symbols */
-#  define SYM_CHAR "_"
-#else /* No leading character on symbols */
-#  define SYM_CHAR
-#endif
-
-/*
- * Macros to generate global absolutes.
- */
-#define GEN_SYMNAME(str) SYM_CHAR #str
-#define GEN_VALUE(str) #str
-#define GEN_ABS(name, value) \
-               asm (".globl " GEN_SYMNAME(name)); \
-               asm (GEN_SYMNAME(name) " = " GEN_VALUE(value))
-
-/*
- * Check the board
- */
-int checkboard(void)
-{
-    puts ("Board: ### No HW ID - assuming CMI board\n");
-    return (0);
-}
-
-/*
- * Get RAM size.
- */
-phys_size_t initdram(int board_type)
-{
-       return (SRAM_SIZE);             /* We currently have a static size adapted for cmi board. */
-}
-
-/*
- * Absolute environment address for linker file.
- */
-GEN_ABS(env_start, CONFIG_ENV_OFFSET + CONFIG_SYS_FLASH_BASE);
diff --git a/board/cmi/flash.c b/board/cmi/flash.c
deleted file mode 100644 (file)
index d9986f9..0000000
+++ /dev/null
@@ -1,501 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Winistoerfer, martinwinistoerfer@gmx.ch.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * File:               flash.c
- *
- * Discription:                This Driver is for 28F320J3A, 28F640J3A and
- *                     28F128J3A Intel flashs working in 16 Bit mode.
- *                     They are single bank flashs.
- *
- *                     Most of this code is taken from existing u-boot
- *                     source code.
- */
-
-
-#include <common.h>
-#include <mpc5xx.h>
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-#define        FLASH_ID_MASK                   0xFFFF
-#define FLASH_BLOCK_SIZE               0x00010000
-#define FLASH_CMD_READ_ID              0x0090
-#define FLASH_CMD_RESET                        0x00ff
-#define FLASH_CMD_BLOCK_ERASE          0x0020
-#define FLASH_CMD_ERASE_CONFIRM                0x00D0
-#define FLASH_CMD_CLEAR_STATUS         0x0050
-#define FLASH_CMD_SUSPEND_ERASE                0x00B0
-#define FLASH_CMD_WRITE                        0x0040
-#define FLASH_CMD_PROTECT              0x0060
-#define FLASH_CMD_PROTECT_SET          0x0001
-#define FLASH_CMD_PROTECT_CLEAR                0x00D0
-#define FLASH_STATUS_DONE              0x0080
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-/*
- * Local function prototypes
- */
-static ulong   flash_get_size          (vu_short *addr, flash_info_t *info);
-static int     write_short             (flash_info_t *info, ulong dest, ushort data);
-static void    flash_get_offsets       (ulong base, flash_info_t *info);
-
-/*
- * Initialize flash
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size_b0;
-       int i;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-#if 1
-       debug ("\n## Get flash bank 1 size @ 0x%08x\n",FLASH_BASE0_PRELIM);
-#endif
-       size_b0 = flash_get_size((vu_short *)FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0: "
-                       "ID 0x%lx, Size = 0x%08lx = %ld MB\n",
-                       flash_info[0].flash_id,
-                       size_b0, size_b0<<20);
-       }
-
-       flash_get_offsets (FLASH_BASE0_PRELIM, &flash_info[0]);
-
-       flash_info[0].size = size_b0;
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-#endif
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-
-       return size_b0;
-}
-
-/*
- * Compute start adress of each sector (block)
- */
-
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:
-           for (i = 0; i < info->sector_count; i++) {
-               info->start[i] = base + i * FLASH_BLOCK_SIZE;
-           }
-           return;
-
-       default:
-           printf ("Don't know sector offsets for flash type 0x%lx\n",
-               info->flash_id);
-           return;
-       }
-}
-
-/*
- * Print flash information
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("Fujitsu ");            break;
-       case FLASH_MAN_SST:     printf ("SST ");                break;
-       case FLASH_MAN_STM:     printf ("STM ");                break;
-       case FLASH_MAN_INTEL:   printf ("Intel ");              break;
-       case FLASH_MAN_MT:      printf ("MT ");                 break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F320J3A:   printf ("28F320J3A (32Mbit) 16-Bit\n");
-                               break;
-       case FLASH_28F640J3A:   printf ("28F640J3A (64Mbit) 16-Bit\n");
-                               break;
-       case FLASH_28F128J3A:   printf ("28F128J3A (128Mbit) 16-Bit\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       if (info->size >= (1 << 20)) {
-               i = 20;
-       } else {
-               i = 10;
-       }
-       printf ("  Size: %ld %cB in %d Sectors\n",
-               info->size >> i,
-               (i == 20) ? 'M' : 'k',
-               info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-       return;
-}
-
-/*
- * Get size of flash in bytes.
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_short *addr, flash_info_t *info)
-{
-       vu_short value;
-
-       /* Read Manufacturer ID */
-       addr[0] = FLASH_CMD_READ_ID;
-       value = addr[0];
-
-       switch (value) {
-       case (AMD_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case (FUJ_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case (SST_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_SST;
-               break;
-       case (STM_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       case (INTEL_MANUFACT & FLASH_ID_MASK):
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               addr[0] = FLASH_CMD_RESET;      /* restore read mode */
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[1];                        /* device ID            */
-
-       switch (value) {
-       case (INTEL_ID_28F320J3A  & FLASH_ID_MASK):
-               info->flash_id += FLASH_28F320J3A;
-               info->sector_count = 32;
-               info->size = 0x00400000;
-               break;                          /* =>  32 MBit          */
-
-       case (INTEL_ID_28F640J3A & FLASH_ID_MASK):
-               info->flash_id += FLASH_28F640J3A;
-               info->sector_count = 64;
-               info->size = 0x00800000;
-               break;                          /* => 64 MBit           */
-
-       case (INTEL_ID_28F128J3A & FLASH_ID_MASK):
-               info->flash_id += FLASH_28F128J3A;
-               info->sector_count = 128;
-               info->size = 0x01000000;
-               break;                          /* => 128 MBit          */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               addr[0] = FLASH_CMD_RESET;      /* restore read mode */
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) {
-               printf ("** ERROR: sector count %d > max (%d) **\n",
-                       info->sector_count, CONFIG_SYS_MAX_FLASH_SECT);
-               info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       }
-
-       addr[0] = FLASH_CMD_RESET;              /* restore read mode */
-
-       return (info->size);
-}
-
-
-/*
- * Erase unprotected sectors
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL) {
-               printf ("Can erase only Intel flash types - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       start = get_timer (0);
-       last  = start;
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_short *addr = (vu_short *)(info->start[sect]);
-                       unsigned long status;
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-#ifdef DEBUG
-                       printf("Erase sector %d at start addr 0x%08X", sect, (unsigned int)info->start[sect]);
-#endif
-
-                       *addr = FLASH_CMD_CLEAR_STATUS;
-                       *addr = FLASH_CMD_BLOCK_ERASE;
-                       *addr = FLASH_CMD_ERASE_CONFIRM;
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-
-                       while (((status = *addr) & FLASH_STATUS_DONE) != FLASH_STATUS_DONE) {
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf("Flash erase timeout at address %lx\n", info->start[sect]);
-                                       *addr = FLASH_CMD_SUSPEND_ERASE;
-                                       *addr = FLASH_CMD_RESET;
-                                       return 1;
-                               }
-
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-                       *addr = FLASH_CMD_RESET;
-               }
-       }
-       printf (" done\n");
-       return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp;
-       ushort data;
-       int i, rc;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-
-       wp = (addr & ~1);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start byte
-        */
-
-       if (addr - wp) {
-               data = 0;
-               data = (data << 8) | *src++;
-               --cnt;
-               if ((rc = write_short(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 2;
-       }
-
-       /*
-        * handle word aligned part
-        */
-
-       while (cnt >= 2) {
-               data = 0;
-               for (i=0; i<2; ++i) {
-                       data = (data << 8) | *src++;
-               }
-
-               if ((rc = write_short(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 2;
-               cnt -= 2;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-
-       data = 0;
-       for (i=0, cp=wp; i<2 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<2; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_short(info, wp, data));
-
-}
-
-/*
- * Write 16 bit (short) to flash
- */
-
-static int write_short (flash_info_t *info, ulong dest, ushort data)
-{
-       vu_short *addr = (vu_short*)(info->start[0]);
-       ulong start;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_short *)dest) & data) != data) {
-               return (2);
-       }
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       if (!(info->flash_id & FLASH_VENDMASK)) {
-               return 4;
-       }
-       *addr = FLASH_CMD_ERASE_CONFIRM;
-       *addr = FLASH_CMD_WRITE;
-
-       *((vu_short *)dest) = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag) {
-               enable_interrupts();
-       }
-
-       /* data polling for D7 */
-       start = get_timer (0);
-
-       /* wait for error or finish */
-       while(!(addr[0] & FLASH_STATUS_DONE)){
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       addr[0] = FLASH_CMD_RESET;
-                       return (1);
-               }
-       }
-
-       *addr = FLASH_CMD_RESET;
-       return (0);
-}
-
-/*
- * Protects a flash sector
- */
-
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
-       vu_short *addr = (vu_short*)(info->start[sector]);
-       ulong start;
-
-       *addr = FLASH_CMD_CLEAR_STATUS;
-       *addr = FLASH_CMD_PROTECT;
-
-       if(prot) {
-               *addr = FLASH_CMD_PROTECT_SET;
-       } else {
-               *addr = FLASH_CMD_PROTECT_CLEAR;
-       }
-
-       /* wait for error or finish */
-       start = get_timer (0);
-       while(!(addr[0] & FLASH_STATUS_DONE)){
-               if (get_timer(start) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf("Flash protect timeout at address %lx\n",  info->start[sector]);
-                       addr[0] = FLASH_CMD_RESET;
-                       return (1);
-               }
-       }
-       /* Set software protect flag */
-       info->protect[sector] = prot;
-       *addr = FLASH_CMD_RESET;
-       return (0);
-}
diff --git a/board/comelit/dig297/Kconfig b/board/comelit/dig297/Kconfig
deleted file mode 100644 (file)
index 6dccaff..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DIG297
-
-config SYS_BOARD
-       default "dig297"
-
-config SYS_VENDOR
-       default "comelit"
-
-config SYS_CONFIG_NAME
-       default "dig297"
-
-endif
diff --git a/board/comelit/dig297/MAINTAINERS b/board/comelit/dig297/MAINTAINERS
deleted file mode 100644 (file)
index 318374e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-DIG297 BOARD
-M:     Luca Ceresoli <luca.ceresoli@comelit.it>
-S:     Maintained
-F:     board/comelit/dig297/
-F:     include/configs/dig297.h
-F:     configs/dig297_defconfig
diff --git a/board/comelit/dig297/Makefile b/board/comelit/dig297/Makefile
deleted file mode 100644 (file)
index 1c85b63..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := dig297.o
diff --git a/board/comelit/dig297/dig297.c b/board/comelit/dig297/dig297.c
deleted file mode 100644 (file)
index 9d4c41b..0000000
+++ /dev/null
@@ -1,182 +0,0 @@
-/*
- * (C) Copyright 2011 Comelit Group SpA
- * Luca Ceresoli <luca.ceresoli@comelit.it>
- *
- * Based on board/ti/beagle/beagle.c:
- * (C) Copyright 2004-2008
- * Texas Instruments, <www.ti.com>
- *
- * Author :
- *     Sunil Kumar <sunilsaini05@gmail.com>
- *     Shashi Ranjan <shashiranjanmca05@gmail.com>
- *
- * Derived from Beagle Board and 3430 SDP code by
- *     Richard Woodruff <r-woodruff2@ti.com>
- *     Syed Mohammed Khasim <khasim@ti.com>
- *
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <netdev.h>
-#include <twl4030.h>
-#include <asm/io.h>
-#include <asm/arch/mmc_host_def.h>
-#include <asm/arch/omap3-regs.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/mem.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/gpio.h>
-#include <asm/mach-types.h>
-#include "dig297.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_CMD_NET
-static void setup_net_chip(void);
-
-#define NET_LAN9221_RESET_GPIO 12
-
-/* GPMC CS 5 connected to an SMSC LAN9220 ethernet controller */
-#define NET_LAN9220_GPMC_CONFIG1       (DEVICESIZE_16BIT)
-#define NET_LAN9220_GPMC_CONFIG2       (CSWROFFTIME(8) | \
-                                        CSRDOFFTIME(7) | \
-                                        ADVONTIME(1))
-#define NET_LAN9220_GPMC_CONFIG3       (ADVWROFFTIME(2) | \
-                                        ADVRDOFFTIME(2) | \
-                                        ADVONTIME(1))
-#define NET_LAN9220_GPMC_CONFIG4       (WEOFFTIME(8) | \
-                                        WEONTIME(1) |  \
-                                        OEOFFTIME(7)|  \
-                                        OEONTIME(1))
-#define NET_LAN9220_GPMC_CONFIG5       (PAGEBURSTACCESSTIME(0) | \
-                                        RDACCESSTIME(6)        | \
-                                        WRCYCLETIME(0x1D)      | \
-                                        RDCYCLETIME(0x1D))
-#define NET_LAN9220_GPMC_CONFIG6       ((1 << 31)          | \
-                                        WRACCESSTIME(0x1D) | \
-                                        WRDATAONADMUXBUS(3))
-
-static const u32 gpmc_lan_config[] = {
-       NET_LAN9220_GPMC_CONFIG1,
-       NET_LAN9220_GPMC_CONFIG2,
-       NET_LAN9220_GPMC_CONFIG3,
-       NET_LAN9220_GPMC_CONFIG4,
-       NET_LAN9220_GPMC_CONFIG5,
-       NET_LAN9220_GPMC_CONFIG6,
-       /* CONFIG7: computed by enable_gpmc_cs_config() */
-};
-#endif /* CONFIG_CMD_NET */
-
-/*
- * Routine: board_init
- * Description: Early hardware init.
- */
-int board_init(void)
-{
-       gpmc_init();            /* in SRAM or SDRAM, finish GPMC */
-       /* boot param addr */
-       gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
-
-       return 0;
-}
-
-/*
- * Routine: misc_init_r
- * Description: Configure board specific parts
- */
-int misc_init_r(void)
-{
-       struct gpio *gpio1_base = (struct gpio *)OMAP34XX_GPIO1_BASE;
-       struct gpio *gpio5_base = (struct gpio *)OMAP34XX_GPIO5_BASE;
-
-       twl4030_power_init();
-       twl4030_led_init(TWL4030_LED_LEDEN_LEDAON | TWL4030_LED_LEDEN_LEDBON);
-
-       /*
-        * GPIO list
-        * - 159 OUT (GPIO5+31): reset for remote camera interface connector.
-        * - 19  OUT (GPIO1+19): integrated speaker amplifier (1=on, 0=shdn).
-        * - 20  OUT (GPIO1+20): handset amplifier (1=on, 0=shdn).
-        */
-
-       /* Configure GPIOs to output */
-       writel(~(GPIO19 | GPIO20), &gpio1_base->oe);
-       writel(~(GPIO31), &gpio5_base->oe);
-
-       /* Set GPIO values */
-       writel((GPIO19 | GPIO20), &gpio1_base->setdataout);
-       writel(0, &gpio5_base->setdataout);
-
-#if defined(CONFIG_CMD_NET)
-       setup_net_chip();
-#endif
-
-       dieid_num_r();
-
-       return 0;
-}
-
-/*
- * Routine: set_muxconf_regs
- * Description: Setting up the configuration Mux registers specific to the
- *             hardware. Many pins need to be moved from protect to primary
- *             mode.
- */
-void set_muxconf_regs(void)
-{
-       MUX_DIG297();
-}
-
-#ifdef CONFIG_GENERIC_MMC
-int board_mmc_init(bd_t *bis)
-{
-       return omap_mmc_init(0, 0, 0, -1, -1);
-}
-
-void board_mmc_power_init(void)
-{
-       twl4030_power_mmc_init(0);
-}
-#endif
-
-#ifdef CONFIG_CMD_NET
-/*
- * Routine: setup_net_chip
- * Description: Setting up the configuration GPMC registers specific to the
- *           Ethernet hardware.
- */
-static void setup_net_chip(void)
-{
-       struct ctrl *ctrl_base = (struct ctrl *)OMAP34XX_CTRL_BASE;
-
-       /* Configure GPMC registers */
-       enable_gpmc_cs_config(gpmc_lan_config, &gpmc_cfg->cs[5],
-                             CONFIG_SMC911X_BASE, GPMC_SIZE_16M);
-
-       /* Enable off mode for NWE in PADCONF_GPMC_NWE register */
-       writew(readw(&ctrl_base->gpmc_nwe) | 0x0E00, &ctrl_base->gpmc_nwe);
-       /* Enable off mode for NOE in PADCONF_GPMC_NADV_ALE register */
-       writew(readw(&ctrl_base->gpmc_noe) | 0x0E00, &ctrl_base->gpmc_noe);
-       /* Enable off mode for ALE in PADCONF_GPMC_NADV_ALE register */
-       writew(readw(&ctrl_base->gpmc_nadv_ale) | 0x0E00,
-              &ctrl_base->gpmc_nadv_ale);
-
-       /* Make GPIO 12 as output pin and send a magic pulse through it */
-       if (!gpio_request(NET_LAN9221_RESET_GPIO, "")) {
-               gpio_direction_output(NET_LAN9221_RESET_GPIO, 0);
-               gpio_set_value(NET_LAN9221_RESET_GPIO, 1);
-               udelay(1);
-               gpio_set_value(NET_LAN9221_RESET_GPIO, 0);
-               udelay(31000);  /* Should be >= 30ms according to datasheet */
-               gpio_set_value(NET_LAN9221_RESET_GPIO, 1);
-       }
-}
-#endif /* CONFIG_CMD_NET */
-
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-       rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
-       return rc;
-}
diff --git a/board/comelit/dig297/dig297.h b/board/comelit/dig297/dig297.h
deleted file mode 100644 (file)
index 8edfc09..0000000
+++ /dev/null
@@ -1,367 +0,0 @@
-/*
- * (C) Copyright 2011 Comelit Group SpA
- * Luca Ceresoli <luca.ceresoli@comelit.it>
- *
- * Based on board/ti/beagle/beagle.h:
- * (C) Copyright 2008
- * Dirk Behme <dirk.behme@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#ifndef _DIG297_H_
-#define _DIG297_H_
-
-const omap3_sysinfo sysinfo = {
-       DDR_STACKED,
-       "OMAP3 DIG297 board",
-       "NAND",
-};
-
-/*
- * IEN  - Input Enable
- * IDIS - Input Disable
- * PTD  - Pull type Down
- * PTU  - Pull type Up
- * DIS  - Pull type selection is inactive
- * EN   - Pull type selection is active
- * M0   - Mode 0
- * The commented string gives the final mux configuration for that pin
- */
-#define MUX_DIG297() \
-/*SDRC*/\
-       MUX_VAL(CP(SDRC_D0),        (IEN  | PTD | DIS | M0)) /*SDRC_D0*/\
-       MUX_VAL(CP(SDRC_D1),        (IEN  | PTD | DIS | M0)) /*SDRC_D1*/\
-       MUX_VAL(CP(SDRC_D2),        (IEN  | PTD | DIS | M0)) /*SDRC_D2*/\
-       MUX_VAL(CP(SDRC_D3),        (IEN  | PTD | DIS | M0)) /*SDRC_D3*/\
-       MUX_VAL(CP(SDRC_D4),        (IEN  | PTD | DIS | M0)) /*SDRC_D4*/\
-       MUX_VAL(CP(SDRC_D5),        (IEN  | PTD | DIS | M0)) /*SDRC_D5*/\
-       MUX_VAL(CP(SDRC_D6),        (IEN  | PTD | DIS | M0)) /*SDRC_D6*/\
-       MUX_VAL(CP(SDRC_D7),        (IEN  | PTD | DIS | M0)) /*SDRC_D7*/\
-       MUX_VAL(CP(SDRC_D8),        (IEN  | PTD | DIS | M0)) /*SDRC_D8*/\
-       MUX_VAL(CP(SDRC_D9),        (IEN  | PTD | DIS | M0)) /*SDRC_D9*/\
-       MUX_VAL(CP(SDRC_D10),       (IEN  | PTD | DIS | M0)) /*SDRC_D10*/\
-       MUX_VAL(CP(SDRC_D11),       (IEN  | PTD | DIS | M0)) /*SDRC_D11*/\
-       MUX_VAL(CP(SDRC_D12),       (IEN  | PTD | DIS | M0)) /*SDRC_D12*/\
-       MUX_VAL(CP(SDRC_D13),       (IEN  | PTD | DIS | M0)) /*SDRC_D13*/\
-       MUX_VAL(CP(SDRC_D14),       (IEN  | PTD | DIS | M0)) /*SDRC_D14*/\
-       MUX_VAL(CP(SDRC_D15),       (IEN  | PTD | DIS | M0)) /*SDRC_D15*/\
-       MUX_VAL(CP(SDRC_D16),       (IEN  | PTD | DIS | M0)) /*SDRC_D16*/\
-       MUX_VAL(CP(SDRC_D17),       (IEN  | PTD | DIS | M0)) /*SDRC_D17*/\
-       MUX_VAL(CP(SDRC_D18),       (IEN  | PTD | DIS | M0)) /*SDRC_D18*/\
-       MUX_VAL(CP(SDRC_D19),       (IEN  | PTD | DIS | M0)) /*SDRC_D19*/\
-       MUX_VAL(CP(SDRC_D20),       (IEN  | PTD | DIS | M0)) /*SDRC_D20*/\
-       MUX_VAL(CP(SDRC_D21),       (IEN  | PTD | DIS | M0)) /*SDRC_D21*/\
-       MUX_VAL(CP(SDRC_D22),       (IEN  | PTD | DIS | M0)) /*SDRC_D22*/\
-       MUX_VAL(CP(SDRC_D23),       (IEN  | PTD | DIS | M0)) /*SDRC_D23*/\
-       MUX_VAL(CP(SDRC_D24),       (IEN  | PTD | DIS | M0)) /*SDRC_D24*/\
-       MUX_VAL(CP(SDRC_D25),       (IEN  | PTD | DIS | M0)) /*SDRC_D25*/\
-       MUX_VAL(CP(SDRC_D26),       (IEN  | PTD | DIS | M0)) /*SDRC_D26*/\
-       MUX_VAL(CP(SDRC_D27),       (IEN  | PTD | DIS | M0)) /*SDRC_D27*/\
-       MUX_VAL(CP(SDRC_D28),       (IEN  | PTD | DIS | M0)) /*SDRC_D28*/\
-       MUX_VAL(CP(SDRC_D29),       (IEN  | PTD | DIS | M0)) /*SDRC_D29*/\
-       MUX_VAL(CP(SDRC_D30),       (IEN  | PTD | DIS | M0)) /*SDRC_D30*/\
-       MUX_VAL(CP(SDRC_D31),       (IEN  | PTD | DIS | M0)) /*SDRC_D31*/\
-       MUX_VAL(CP(SDRC_CLK),       (IEN  | PTD | DIS | M0)) /*SDRC_CLK*/\
-       MUX_VAL(CP(SDRC_DQS0),      (IEN  | PTD | DIS | M0)) /*SDRC_DQS0*/\
-       MUX_VAL(CP(SDRC_DQS1),      (IEN  | PTD | DIS | M0)) /*SDRC_DQS1*/\
-       MUX_VAL(CP(SDRC_DQS2),      (IEN  | PTD | DIS | M0)) /*SDRC_DQS2*/\
-       MUX_VAL(CP(SDRC_DQS3),      (IEN  | PTD | DIS | M0)) /*SDRC_DQS3*/\
-       MUX_VAL(CP(SDRC_CKE0),      (IDIS | PTU | EN  | M0)) /*sdrc_cke0*/\
-       MUX_VAL(CP(SDRC_CKE1),      (IDIS | PTU | DIS | M0)) /*sdrc_cke1: NC*/\
-/*GPMC*/\
-       MUX_VAL(CP(GPMC_A1),        (IDIS | PTU | EN  | M0)) /*GPMC_A1*/\
-       MUX_VAL(CP(GPMC_A2),        (IDIS | PTU | EN  | M0)) /*GPMC_A2*/\
-       MUX_VAL(CP(GPMC_A3),        (IDIS | PTU | EN  | M0)) /*GPMC_A3*/\
-       MUX_VAL(CP(GPMC_A4),        (IDIS | PTU | EN  | M0)) /*GPMC_A4*/\
-       MUX_VAL(CP(GPMC_A5),        (IDIS | PTU | EN  | M0)) /*GPMC_A5*/\
-       MUX_VAL(CP(GPMC_A6),        (IDIS | PTU | EN  | M0)) /*GPMC_A6*/\
-       MUX_VAL(CP(GPMC_A7),        (IDIS | PTU | EN  | M0)) /*GPMC_A7*/\
-       MUX_VAL(CP(GPMC_A8),        (IDIS | PTU | EN  | M0)) /*GPMC_A8*/\
-       MUX_VAL(CP(GPMC_A9),        (IDIS | PTU | EN  | M0)) /*GPMC_A9*/\
-       MUX_VAL(CP(GPMC_A10),       (IDIS | PTU | EN  | M0)) /*GPMC_A10*/\
-       MUX_VAL(CP(GPMC_D0),        (IEN  | PTU | EN  | M0)) /*GPMC_D0*/\
-       MUX_VAL(CP(GPMC_D1),        (IEN  | PTU | EN  | M0)) /*GPMC_D1*/\
-       MUX_VAL(CP(GPMC_D2),        (IEN  | PTU | EN  | M0)) /*GPMC_D2*/\
-       MUX_VAL(CP(GPMC_D3),        (IEN  | PTU | EN  | M0)) /*GPMC_D3*/\
-       MUX_VAL(CP(GPMC_D4),        (IEN  | PTU | EN  | M0)) /*GPMC_D4*/\
-       MUX_VAL(CP(GPMC_D5),        (IEN  | PTU | EN  | M0)) /*GPMC_D5*/\
-       MUX_VAL(CP(GPMC_D6),        (IEN  | PTU | EN  | M0)) /*GPMC_D6*/\
-       MUX_VAL(CP(GPMC_D7),        (IEN  | PTU | EN  | M0)) /*GPMC_D7*/\
-       MUX_VAL(CP(GPMC_D8),        (IEN  | PTU | EN  | M0)) /*GPMC_D8*/\
-       MUX_VAL(CP(GPMC_D9),        (IEN  | PTU | EN  | M0)) /*GPMC_D9*/\
-       MUX_VAL(CP(GPMC_D10),       (IEN  | PTU | EN  | M0)) /*GPMC_D10*/\
-       MUX_VAL(CP(GPMC_D11),       (IEN  | PTU | EN  | M0)) /*GPMC_D11*/\
-       MUX_VAL(CP(GPMC_D12),       (IEN  | PTU | EN  | M0)) /*GPMC_D12*/\
-       MUX_VAL(CP(GPMC_D13),       (IEN  | PTU | EN  | M0)) /*GPMC_D13*/\
-       MUX_VAL(CP(GPMC_D14),       (IEN  | PTU | EN  | M0)) /*GPMC_D14*/\
-       MUX_VAL(CP(GPMC_D15),       (IEN  | PTU | EN  | M0)) /*GPMC_D15*/\
-       MUX_VAL(CP(GPMC_NCS0),      (IDIS | PTU | EN  | M0)) /*NAND*/\
-       /* GPMC_nCS1/2: not available on CUS package*/\
-       MUX_VAL(CP(GPMC_NCS3),      (IDIS | PTU | DIS | M0)) /*GPMC_nCS3*/\
-       MUX_VAL(CP(GPMC_NCS4),      (IDIS | PTU | DIS | M0)) /*GPMC_nCS4*/\
-       MUX_VAL(CP(GPMC_NCS5),      (IDIS | PTU | EN  | M0)) /*GPMC_nCS5*/\
-       MUX_VAL(CP(GPMC_NCS6),      (IEN  | PTD | DIS | M1)) /*SYS_nDMA_REQ2*/\
-       MUX_VAL(CP(GPMC_NCS7),      (IEN  | PTU | EN  | M1)) /*SYS_nDMA_REQ3*/\
-       MUX_VAL(CP(GPMC_NBE1),      (IDIS | PTD | DIS | M0)) /*GPMC_nBE1: NC*/\
-       /* GPMC_WAIT2: not available on CUS package*/\
-       MUX_VAL(CP(GPMC_WAIT3),     (IDIS | PTU | DIS | M0)) /*GPMC_WAIT3: NC*/\
-       /* GPMC_CLK: NC (only asyncronous peripherals are connected) */\
-       MUX_VAL(CP(GPMC_CLK),       (IDIS | PTD | DIS | M0)) \
-       MUX_VAL(CP(GPMC_NADV_ALE),  (IDIS | PTD | DIS | M0)) /*GPMC_nADV_ALE*/\
-       MUX_VAL(CP(GPMC_NOE),       (IDIS | PTD | DIS | M0)) /*GPMC_nOE*/\
-       MUX_VAL(CP(GPMC_NWE),       (IDIS | PTD | DIS | M0)) /*GPMC_nWE*/\
-       MUX_VAL(CP(GPMC_NBE0_CLE),  (IDIS | PTD | DIS | M0)) /*GPMC_nBE0_CLE*/\
-       MUX_VAL(CP(GPMC_NWP),       (IEN  | PTD | DIS | M0)) /*GPMC_nWP*/\
-       MUX_VAL(CP(GPMC_WAIT0),     (IEN  | PTU | EN  | M0)) /*GPMC_WAIT0*/\
-       /* GPMC_WAIT1: not available on CUS package*/\
-/*DSS*/\
-       MUX_VAL(CP(DSS_PCLK),       (IDIS | PTD | DIS | M0)) /*DSS_PCLK*/\
-       MUX_VAL(CP(DSS_HSYNC),      (IDIS | PTD | DIS | M0)) /*DSS_HSYNC*/\
-       MUX_VAL(CP(DSS_VSYNC),      (IDIS | PTD | DIS | M0)) /*DSS_VSYNC*/\
-       /* DSS_ACBIAS: AC BIAS: connected to TFT, not to be driven */\
-       MUX_VAL(CP(DSS_ACBIAS),     (IDIS | PTU | EN  | M7))\
-       MUX_VAL(CP(DSS_DATA0),      (IDIS | PTD | DIS | M0)) /*DSS_DATA0*/\
-       MUX_VAL(CP(DSS_DATA1),      (IDIS | PTD | DIS | M0)) /*DSS_DATA1*/\
-       MUX_VAL(CP(DSS_DATA2),      (IDIS | PTD | DIS | M0)) /*DSS_DATA2*/\
-       MUX_VAL(CP(DSS_DATA3),      (IDIS | PTD | DIS | M0)) /*DSS_DATA3*/\
-       MUX_VAL(CP(DSS_DATA4),      (IDIS | PTD | DIS | M0)) /*DSS_DATA4*/\
-       MUX_VAL(CP(DSS_DATA5),      (IDIS | PTD | DIS | M0)) /*DSS_DATA5*/\
-       MUX_VAL(CP(DSS_DATA6),      (IDIS | PTD | DIS | M0)) /*DSS_DATA6*/\
-       MUX_VAL(CP(DSS_DATA7),      (IDIS | PTD | DIS | M0)) /*DSS_DATA7*/\
-       MUX_VAL(CP(DSS_DATA8),      (IDIS | PTD | DIS | M0)) /*DSS_DATA8*/\
-       MUX_VAL(CP(DSS_DATA9),      (IDIS | PTD | DIS | M0)) /*DSS_DATA9*/\
-       MUX_VAL(CP(DSS_DATA10),     (IDIS | PTD | DIS | M0)) /*DSS_DATA10*/\
-       MUX_VAL(CP(DSS_DATA11),     (IDIS | PTD | DIS | M0)) /*DSS_DATA11*/\
-       MUX_VAL(CP(DSS_DATA12),     (IDIS | PTD | DIS | M0)) /*DSS_DATA12*/\
-       MUX_VAL(CP(DSS_DATA13),     (IDIS | PTD | DIS | M0)) /*DSS_DATA13*/\
-       MUX_VAL(CP(DSS_DATA14),     (IDIS | PTD | DIS | M0)) /*DSS_DATA14*/\
-       MUX_VAL(CP(DSS_DATA15),     (IDIS | PTD | DIS | M0)) /*DSS_DATA15*/\
-       MUX_VAL(CP(DSS_DATA16),     (IDIS | PTD | DIS | M0)) /*DSS_DATA16*/\
-       MUX_VAL(CP(DSS_DATA17),     (IDIS | PTD | DIS | M0)) /*DSS_DATA17*/\
-       MUX_VAL(CP(DSS_DATA18),     (IDIS | PTD | DIS | M0)) /*DSS_DATA18*/\
-       MUX_VAL(CP(DSS_DATA19),     (IDIS | PTD | DIS | M0)) /*DSS_DATA19*/\
-       MUX_VAL(CP(DSS_DATA20),     (IDIS | PTD | DIS | M0)) /*DSS_DATA20*/\
-       MUX_VAL(CP(DSS_DATA21),     (IDIS | PTD | DIS | M0)) /*DSS_DATA21*/\
-       MUX_VAL(CP(DSS_DATA22),     (IDIS | PTD | DIS | M0)) /*DSS_DATA22*/\
-       MUX_VAL(CP(DSS_DATA23),     (IDIS | PTD | DIS | M0)) /*DSS_DATA23*/\
-/*CAMERA*/\
-       MUX_VAL(CP(CAM_HS),         (IEN  | PTU | EN  | M0)) /*CAM_HS */\
-       MUX_VAL(CP(CAM_VS),         (IEN  | PTU | EN  | M0)) /*CAM_VS */\
-       MUX_VAL(CP(CAM_XCLKA),      (IDIS | PTD | DIS | M0)) /*CAM_XCLKA*/\
-       MUX_VAL(CP(CAM_PCLK),       (IEN  | PTU | EN  | M0)) /*CAM_PCLK*/\
-       MUX_VAL(CP(CAM_FLD),        (IDIS | PTD | DIS | M4)) /*GPIO_98*/\
-       MUX_VAL(CP(CAM_D0),         (IEN  | PTD | DIS | M0)) /*CAM_D0*/\
-       MUX_VAL(CP(CAM_D1),         (IEN  | PTD | DIS | M0)) /*CAM_D1*/\
-       MUX_VAL(CP(CAM_D2),         (IEN  | PTD | DIS | M0)) /*CAM_D2*/\
-       MUX_VAL(CP(CAM_D3),         (IEN  | PTD | DIS | M0)) /*CAM_D3*/\
-       MUX_VAL(CP(CAM_D4),         (IEN  | PTD | DIS | M0)) /*CAM_D4*/\
-       MUX_VAL(CP(CAM_D5),         (IEN  | PTD | DIS | M0)) /*CAM_D5*/\
-       MUX_VAL(CP(CAM_D6),         (IEN  | PTD | DIS | M0)) /*CAM_D6*/\
-       MUX_VAL(CP(CAM_D7),         (IEN  | PTD | DIS | M0)) /*CAM_D7*/\
-       MUX_VAL(CP(CAM_D8),         (IEN  | PTD | DIS | M0)) /*CAM_D8*/\
-       MUX_VAL(CP(CAM_D9),         (IEN  | PTD | DIS | M0)) /*CAM_D9*/\
-       MUX_VAL(CP(CAM_D10),        (IEN  | PTD | DIS | M0)) /*CAM_D10*/\
-       MUX_VAL(CP(CAM_D11),        (IEN  | PTD | DIS | M0)) /*CAM_D11*/\
-       MUX_VAL(CP(CAM_XCLKB),      (IDIS | PTD | DIS | M0)) /*CAM_XCLKB*/\
-       MUX_VAL(CP(CAM_WEN),        (IEN  | PTD | DIS | M4)) /*GPIO_167*/\
-       MUX_VAL(CP(CAM_STROBE),     (IDIS | PTD | DIS | M0)) /*CAM_STROBE*/\
-       MUX_VAL(CP(CSI2_DX0),       (IEN  | PTD | DIS | M0)) /*CSI2_DX0*/\
-       MUX_VAL(CP(CSI2_DY0),       (IEN  | PTD | DIS | M0)) /*CSI2_DY0*/\
-       MUX_VAL(CP(CSI2_DX1),       (IEN  | PTD | DIS | M0)) /*CSI2_DX1*/\
-       MUX_VAL(CP(CSI2_DY1),       (IEN  | PTD | DIS | M0)) /*CSI2_DY1*/\
-/*Audio Interface */\
-       MUX_VAL(CP(MCBSP2_FSX),     (IEN  | PTD | DIS | M0)) /*McBSP2_FSX*/\
-       MUX_VAL(CP(MCBSP2_CLKX),    (IEN  | PTD | DIS | M0)) /*McBSP2_CLKX*/\
-       MUX_VAL(CP(MCBSP2_DR),      (IEN  | PTD | DIS | M0)) /*McBSP2_DR*/\
-       MUX_VAL(CP(MCBSP2_DX),      (IDIS | PTD | DIS | M0)) /*McBSP2_DX*/\
-/*Expansion card */\
-       MUX_VAL(CP(MMC1_CLK),       (IDIS | PTU | EN  | M0)) /*MMC1_CLK*/\
-       MUX_VAL(CP(MMC1_CMD),       (IEN  | PTU | EN  | M0)) /*MMC1_CMD*/\
-       MUX_VAL(CP(MMC1_DAT0),      (IEN  | PTU | EN  | M0)) /*MMC1_DAT0*/\
-       MUX_VAL(CP(MMC1_DAT1),      (IEN  | PTU | EN  | M0)) /*MMC1_DAT1*/\
-       MUX_VAL(CP(MMC1_DAT2),      (IEN  | PTU | EN  | M0)) /*MMC1_DAT2*/\
-       MUX_VAL(CP(MMC1_DAT3),      (IEN  | PTU | EN  | M0)) /*MMC1_DAT3*/\
-       MUX_VAL(CP(MMC1_DAT4),      (IEN  | PTU | EN  | M0)) /*MMC1_DAT4*/\
-       MUX_VAL(CP(MMC1_DAT5),      (IEN  | PTU | EN  | M0)) /*MMC1_DAT5*/\
-       MUX_VAL(CP(MMC1_DAT6),      (IEN  | PTU | EN  | M0)) /*MMC1_DAT6*/\
-       MUX_VAL(CP(MMC1_DAT7),      (IEN  | PTU | EN  | M0)) /*MMC1_DAT7*/\
-/*Wireless LAN */\
-       MUX_VAL(CP(MMC2_CLK),       (IEN  | PTU | EN  | M4)) /*GPIO_130*/\
-       MUX_VAL(CP(MMC2_CMD),       (IEN  | PTU | EN  | M4)) /*GPIO_131*/\
-       MUX_VAL(CP(MMC2_DAT0),      (IEN  | PTU | EN  | M4)) /*GPIO_132*/\
-       MUX_VAL(CP(MMC2_DAT1),      (IEN  | PTU | EN  | M4)) /*GPIO_133*/\
-       MUX_VAL(CP(MMC2_DAT2),      (IEN  | PTU | EN  | M4)) /*GPIO_134*/\
-       MUX_VAL(CP(MMC2_DAT3),      (IEN  | PTU | EN  | M4)) /*GPIO_135*/\
-       MUX_VAL(CP(MMC2_DAT4),      (IEN  | PTU | EN  | M4)) /*GPIO_136*/\
-       MUX_VAL(CP(MMC2_DAT5),      (IEN  | PTU | EN  | M4)) /*GPIO_137*/\
-       MUX_VAL(CP(MMC2_DAT6),      (IEN  | PTU | EN  | M4)) /*GPIO_138*/\
-       MUX_VAL(CP(MMC2_DAT7),      (IEN  | PTU | EN  | M4)) /*GPIO_139*/\
-/*Bluetooth*/\
-       MUX_VAL(CP(MCBSP3_DX),      (IEN  | PTD | DIS | M1)) /*UART2_CTS*/\
-       MUX_VAL(CP(MCBSP3_DR),      (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
-       MUX_VAL(CP(MCBSP3_CLKX),    (IDIS | PTD | DIS | M1)) /*UART2_TX*/\
-       MUX_VAL(CP(MCBSP3_FSX),     (IEN  | PTD | DIS | M1)) /*UART2_RX*/\
-       MUX_VAL(CP(UART2_CTS),      (IEN  | PTD | DIS | M4)) /*GPIO_144*/\
-       MUX_VAL(CP(UART2_RTS),      (IEN  | PTD | DIS | M4)) /*GPIO_145*/\
-       MUX_VAL(CP(UART2_TX),       (IEN  | PTD | DIS | M4)) /*GPIO_146*/\
-       MUX_VAL(CP(UART2_RX),       (IEN  | PTD | DIS | M4)) /*GPIO_147*/\
-/*Modem Interface */\
-       MUX_VAL(CP(UART1_TX),       (IDIS | PTD | DIS | M0)) /*UART1_TX*/\
-       MUX_VAL(CP(UART1_RTS),      (IDIS | PTD | DIS | M4)) /*GPIO_149*/ \
-       MUX_VAL(CP(UART1_CTS),      (IDIS | PTD | DIS | M4)) /*GPIO_150*/ \
-       MUX_VAL(CP(UART1_RX),       (IEN  | PTD | DIS | M0)) /*UART1_RX*/\
-       MUX_VAL(CP(MCBSP4_CLKX),    (IEN  | PTD | DIS | M1)) /*SSI1_DAT_RX*/\
-       MUX_VAL(CP(MCBSP4_DR),      (IEN  | PTD | DIS | M1)) /*SSI1_FLAG_RX*/\
-       MUX_VAL(CP(MCBSP4_DX),      (IEN  | PTD | DIS | M1)) /*SSI1_RDY_RX*/\
-       MUX_VAL(CP(MCBSP4_FSX),     (IEN  | PTD | DIS | M1)) /*SSI1_WAKE*/\
-       MUX_VAL(CP(MCBSP_CLKS),     (IEN  | PTU | DIS | M0)) /*McBSP_CLKS*/\
-/*Serial Interface*/\
-       MUX_VAL(CP(UART3_CTS_RCTX), (IEN  | PTD | EN  | M0)) /*UART3_CTS_RCTX*/\
-       MUX_VAL(CP(UART3_RX_IRRX),  (IEN  | PTD | DIS | M0)) /*UART3_RX_IRRX*/\
-       MUX_VAL(CP(UART3_TX_IRTX),  (IDIS | PTD | DIS | M0)) /*UART3_TX_IRTX*/\
-       MUX_VAL(CP(HSUSB0_CLK),     (IEN  | PTD | DIS | M0)) /*HSUSB0_CLK*/\
-       MUX_VAL(CP(HSUSB0_STP),     (IDIS | PTU | EN  | M0)) /*HSUSB0_STP*/\
-       MUX_VAL(CP(HSUSB0_DIR),     (IEN  | PTD | DIS | M0)) /*HSUSB0_DIR*/\
-       MUX_VAL(CP(HSUSB0_NXT),     (IEN  | PTD | DIS | M0)) /*HSUSB0_NXT*/\
-       MUX_VAL(CP(HSUSB0_DATA0),   (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA0*/\
-       MUX_VAL(CP(HSUSB0_DATA1),   (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA1*/\
-       MUX_VAL(CP(HSUSB0_DATA2),   (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA2*/\
-       MUX_VAL(CP(HSUSB0_DATA3),   (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA3*/\
-       MUX_VAL(CP(HSUSB0_DATA4),   (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA4*/\
-       MUX_VAL(CP(HSUSB0_DATA5),   (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA5*/\
-       MUX_VAL(CP(HSUSB0_DATA6),   (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA6*/\
-       MUX_VAL(CP(HSUSB0_DATA7),   (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
-       MUX_VAL(CP(I2C1_SCL),       (IEN  | PTU | EN  | M0)) /*I2C1_SCL*/\
-       MUX_VAL(CP(I2C1_SDA),       (IEN  | PTU | EN  | M0)) /*I2C1_SDA*/\
-       MUX_VAL(CP(I2C2_SCL),       (IEN  | PTU | EN  | M4)) /*GPIO_168*/\
-       MUX_VAL(CP(I2C2_SDA),       (IEN  | PTU | EN  | M4)) /*GPIO_183*/\
-       MUX_VAL(CP(I2C3_SCL),       (IEN  | PTU | EN  | M0)) /*I2C3_SCL*/\
-       MUX_VAL(CP(I2C3_SDA),       (IEN  | PTU | EN  | M0)) /*I2C3_SDA*/\
-       MUX_VAL(CP(I2C4_SCL),       (IEN  | PTU | EN  | M0)) /*I2C4_SCL*/\
-       MUX_VAL(CP(I2C4_SDA),       (IEN  | PTU | EN  | M0)) /*I2C4_SDA*/\
-/* USB EHCI (port 2) */\
-       MUX_VAL(CP(ETK_D14_ES2),    (IEN  | PTU | DIS | M3)) /*HSUSB2_DATA0*/\
-       MUX_VAL(CP(ETK_D15_ES2),    (IEN  | PTU | DIS | M3)) /*HSUSB2_DATA1*/\
-/* MCSPI1: to TOUCH controller TSC2046 (ADS7846 compatible).*/\
-       /*
-        * McSPI1_CLK.
-        * IEN needed fot the McSPI to "receive" the clock and be able to
-        * sample SOMI. See http://e2e.ti.com/support/arm174_microprocessors/
-        * omap_applications_processors/f/42/p/29444/102394.aspx#102394
-        */\
-       MUX_VAL(CP(MCSPI1_CLK),     (IEN  | PTD | EN  | M0))\
-       MUX_VAL(CP(MCSPI1_SIMO),    (IDIS | PTD | EN  | M0)) /*McSPI1_SIMO*/\
-       MUX_VAL(CP(MCSPI1_SOMI),    (IEN  | PTD | EN  | M0)) /*McSPI1_SOMI*/\
-       MUX_VAL(CP(MCSPI1_CS0),     (IDIS | PTU | EN  | M0)) /*McSPI1_CS0*/\
-/* MCSPI2: to HIMAX TFT controller.*/\
-       MUX_VAL(CP(MCSPI2_CLK),     (IDIS | PTD | EN  | M0)) /*MCSPI2_CLK*/\
-       MUX_VAL(CP(MCSPI2_SIMO),    (IDIS | PTD | EN  | M0)) /*MCSPI3_SIMO*/\
-       /* MCSPI3_SOMI: NC because HIMAX in monodirectional (no SOMI line) */\
-       MUX_VAL(CP(MCSPI2_SOMI),    (IDIS | PTU | DIS | M7))\
-       MUX_VAL(CP(MCSPI2_CS0),     (IDIS | PTU | EN  | M0)) /*MCSPI3_CS0*/\
-       MUX_VAL(CP(MCSPI2_CS1),     (IDIS | PTU | DIS | M7)) /*Safe mode: NC*/\
-/* GPIO */\
-       MUX_VAL(CP(SYS_BOOT5),      (IEN  | PTD | DIS | M4)) /*GPIO_7*/\
-       MUX_VAL(CP(ETK_CLK_ES2),    (IDIS | PTU | EN  | M4)) /*GPIO_12*/\
-       MUX_VAL(CP(ETK_CTL_ES2),    (IEN  | PTU | EN  | M4)) /*GPIO_13*/\
-       MUX_VAL(CP(ETK_D0_ES2),     (IEN  | PTU | DIS | M4)) /*GPIO_14*/\
-       MUX_VAL(CP(ETK_D1_ES2),     (IDIS | PTD | EN  | M4)) /*GPIO_15*/\
-       MUX_VAL(CP(ETK_D2_ES2),     (IDIS | PTD | EN  | M4)) /*GPIO_16*/\
-       MUX_VAL(CP(ETK_D3_ES2),     (IEN  | PTU | DIS | M4)) /*GPIO_17*/\
-       MUX_VAL(CP(ETK_D4_ES2),     (IDIS | PTD | EN  | M4)) /*GPIO_18*/\
-       MUX_VAL(CP(ETK_D5_ES2),     (IDIS | PTD | EN  | M4)) /*GPIO_19*/\
-       MUX_VAL(CP(ETK_D6_ES2),     (IDIS | PTD | EN  | M4)) /*GPIO_20*/\
-       MUX_VAL(CP(ETK_D7_ES2),     (IDIS | PTD | EN  | M4)) /*GPIO_21*/\
-       MUX_VAL(CP(ETK_D9_ES2),     (IEN  | PTU | DIS | M4)) /*GPIO_23*/\
-       MUX_VAL(CP(ETK_D10_ES2),    (IDIS | PTD | EN  | M4)) /*GPIO_24*/\
-       MUX_VAL(CP(ETK_D11_ES2),    (IDIS | PTD | EN  | M4)) /*GPIO_25*/\
-       MUX_VAL(CP(ETK_D12_ES2),    (IDIS | PTD | EN  | M4)) /*GPIO_26*/\
-       MUX_VAL(CP(ETK_D13_ES2),    (IDIS | PTD | EN  | M4)) /*GPIO_27*/\
-       MUX_VAL(CP(MCBSP1_CLKR),    (IEN  | PTD | DIS | M4)) /*GPIO_156*/\
-       MUX_VAL(CP(MCBSP1_FSR),     (IEN  | PTU | EN  | M4)) /*GPIO_157*/\
-       MUX_VAL(CP(MCBSP1_DX),      (IEN  | PTD | DIS | M4)) /*GPIO_158*/\
-       MUX_VAL(CP(MCBSP1_DR),      (IDIS | PTD | DIS | M4)) /*GPIO_159*/\
-       MUX_VAL(CP(MCBSP1_FSX),     (IEN  | PTD | DIS | M4)) /*GPIO_161*/\
-       MUX_VAL(CP(MCBSP1_CLKX),    (IEN  | PTD | DIS | M4)) /*GPIO_162*/\
-       MUX_VAL(CP(UART3_RTS_SD),   (IDIS | PTD | EN  | M4)) /*GPIO_164*/\
-       MUX_VAL(CP(HDQ_SIO),        (IDIS | PTU | DIS | M4)) /*GPIO_170*/\
-       MUX_VAL(CP(MCSPI1_CS3),     (IEN  | PTU | EN  | M4)) /*GPIO_177*/\
-/*Control and debug */\
-       MUX_VAL(CP(SYS_32K),        (IEN  | PTD | DIS | M0)) /*SYS_32K*/\
-       MUX_VAL(CP(SYS_CLKREQ),     (IEN  | PTD | DIS | M0)) /*SYS_CLKREQ*/\
-       MUX_VAL(CP(SYS_NIRQ),       (IEN  | PTU | EN  | M0)) /*SYS_nIRQ*/\
-       MUX_VAL(CP(SYS_BOOT0),      (IEN  | PTD | DIS | M4)) /*GPIO_2*/\
-       MUX_VAL(CP(SYS_BOOT1),      (IEN  | PTD | DIS | M4)) /*GPIO_3*/\
-       MUX_VAL(CP(SYS_BOOT2),      (IEN  | PTD | DIS | M4)) /*GPIO_4*/\
-       MUX_VAL(CP(SYS_BOOT3),      (IEN  | PTD | DIS | M4)) /*GPIO_5*/\
-       MUX_VAL(CP(SYS_BOOT4),      (IEN  | PTD | DIS | M4)) /*GPIO_6*/\
-       MUX_VAL(CP(SYS_BOOT6),      (IDIS | PTD | DIS | M4)) /*GPIO_8*/ \
-       MUX_VAL(CP(SYS_OFF_MODE),   (IEN  | PTD | DIS | M0)) /*SYS_OFF_MODE*/\
-       MUX_VAL(CP(SYS_CLKOUT1),    (IEN  | PTD | DIS | M0)) /*SYS_CLKOUT1*/\
-       MUX_VAL(CP(SYS_CLKOUT2),    (IEN  | PTU | EN  | M4)) /*GPIO_186*/\
-       MUX_VAL(CP(ETK_D8_ES2),     (IEN  | PTU | DIS | M3)) /*HSUSB1_DIR*/\
-       MUX_VAL(CP(D2D_MCAD1),      (IEN  | PTD | EN  | M0)) /*d2d_mcad1*/\
-       MUX_VAL(CP(D2D_MCAD2),      (IEN  | PTD | EN  | M0)) /*d2d_mcad2*/\
-       MUX_VAL(CP(D2D_MCAD3),      (IEN  | PTD | EN  | M0)) /*d2d_mcad3*/\
-       MUX_VAL(CP(D2D_MCAD4),      (IEN  | PTD | EN  | M0)) /*d2d_mcad4*/\
-       MUX_VAL(CP(D2D_MCAD5),      (IEN  | PTD | EN  | M0)) /*d2d_mcad5*/\
-       MUX_VAL(CP(D2D_MCAD6),      (IEN  | PTD | EN  | M0)) /*d2d_mcad6*/\
-       MUX_VAL(CP(D2D_MCAD7),      (IEN  | PTD | EN  | M0)) /*d2d_mcad7*/\
-       MUX_VAL(CP(D2D_MCAD8),      (IEN  | PTD | EN  | M0)) /*d2d_mcad8*/\
-       MUX_VAL(CP(D2D_MCAD9),      (IEN  | PTD | EN  | M0)) /*d2d_mcad9*/\
-       MUX_VAL(CP(D2D_MCAD10),     (IEN  | PTD | EN  | M0)) /*d2d_mcad10*/\
-       MUX_VAL(CP(D2D_MCAD11),     (IEN  | PTD | EN  | M0)) /*d2d_mcad11*/\
-       MUX_VAL(CP(D2D_MCAD12),     (IEN  | PTD | EN  | M0)) /*d2d_mcad12*/\
-       MUX_VAL(CP(D2D_MCAD13),     (IEN  | PTD | EN  | M0)) /*d2d_mcad13*/\
-       MUX_VAL(CP(D2D_MCAD14),     (IEN  | PTD | EN  | M0)) /*d2d_mcad14*/\
-       MUX_VAL(CP(D2D_MCAD15),     (IEN  | PTD | EN  | M0)) /*d2d_mcad15*/\
-       MUX_VAL(CP(D2D_MCAD16),     (IEN  | PTD | EN  | M0)) /*d2d_mcad16*/\
-       MUX_VAL(CP(D2D_MCAD17),     (IEN  | PTD | EN  | M0)) /*d2d_mcad17*/\
-       MUX_VAL(CP(D2D_MCAD18),     (IEN  | PTD | EN  | M0)) /*d2d_mcad18*/\
-       MUX_VAL(CP(D2D_MCAD19),     (IEN  | PTD | EN  | M0)) /*d2d_mcad19*/\
-       MUX_VAL(CP(D2D_MCAD20),     (IEN  | PTD | EN  | M0)) /*d2d_mcad20*/\
-       MUX_VAL(CP(D2D_MCAD21),     (IEN  | PTD | EN  | M0)) /*d2d_mcad21*/\
-       MUX_VAL(CP(D2D_MCAD22),     (IEN  | PTD | EN  | M0)) /*d2d_mcad22*/\
-       MUX_VAL(CP(D2D_MCAD23),     (IEN  | PTD | EN  | M0)) /*d2d_mcad23*/\
-       MUX_VAL(CP(D2D_MCAD24),     (IEN  | PTD | EN  | M0)) /*d2d_mcad24*/\
-       MUX_VAL(CP(D2D_MCAD25),     (IEN  | PTD | EN  | M0)) /*d2d_mcad25*/\
-       MUX_VAL(CP(D2D_MCAD26),     (IEN  | PTD | EN  | M0)) /*d2d_mcad26*/\
-       MUX_VAL(CP(D2D_MCAD27),     (IEN  | PTD | EN  | M0)) /*d2d_mcad27*/\
-       MUX_VAL(CP(D2D_MCAD28),     (IEN  | PTD | EN  | M0)) /*d2d_mcad28*/\
-       MUX_VAL(CP(D2D_MCAD29),     (IEN  | PTD | EN  | M0)) /*d2d_mcad29*/\
-       MUX_VAL(CP(D2D_MCAD30),     (IEN  | PTD | EN  | M0)) /*d2d_mcad30*/\
-       MUX_VAL(CP(D2D_MCAD31),     (IEN  | PTD | EN  | M0)) /*d2d_mcad31*/\
-       MUX_VAL(CP(D2D_MCAD32),     (IEN  | PTD | EN  | M0)) /*d2d_mcad32*/\
-       MUX_VAL(CP(D2D_MCAD33),     (IEN  | PTD | EN  | M0)) /*d2d_mcad33*/\
-       MUX_VAL(CP(D2D_MCAD34),     (IEN  | PTD | EN  | M0)) /*d2d_mcad34*/\
-       MUX_VAL(CP(D2D_MCAD35),     (IEN  | PTD | EN  | M0)) /*d2d_mcad35*/\
-       MUX_VAL(CP(D2D_MCAD36),     (IEN  | PTD | EN  | M0)) /*d2d_mcad36*/\
-       MUX_VAL(CP(D2D_CLK26MI),    (IEN  | PTD | DIS | M0)) /*d2d_clk26mi*/\
-       MUX_VAL(CP(D2D_NRESPWRON),  (IEN  | PTD | EN  | M0)) /*d2d_nrespwron*/\
-       MUX_VAL(CP(D2D_NRESWARM),   (IEN  | PTU | EN  | M0)) /*d2d_nreswarm */\
-       MUX_VAL(CP(D2D_ARM9NIRQ),   (IEN  | PTD | DIS | M0)) /*d2d_arm9nirq */\
-       MUX_VAL(CP(D2D_UMA2P6FIQ),  (IEN  | PTD | DIS | M0)) /*d2d_uma2p6fiq*/\
-       MUX_VAL(CP(D2D_SPINT),      (IEN  | PTD | EN  | M0)) /*d2d_spint*/\
-       MUX_VAL(CP(D2D_FRINT),      (IEN  | PTD | EN  | M0)) /*d2d_frint*/\
-       MUX_VAL(CP(D2D_DMAREQ0),    (IEN  | PTD | DIS | M0)) /*d2d_dmareq0*/\
-       MUX_VAL(CP(D2D_DMAREQ1),    (IEN  | PTD | DIS | M0)) /*d2d_dmareq1*/\
-       MUX_VAL(CP(D2D_DMAREQ2),    (IEN  | PTD | DIS | M0)) /*d2d_dmareq2*/\
-       MUX_VAL(CP(D2D_DMAREQ3),    (IEN  | PTD | DIS | M0)) /*d2d_dmareq3*/\
-       MUX_VAL(CP(D2D_N3GTRST),    (IEN  | PTD | DIS | M0)) /*d2d_n3gtrst*/\
-       MUX_VAL(CP(D2D_N3GTDI),     (IEN  | PTD | DIS | M0)) /*d2d_n3gtdi*/\
-       MUX_VAL(CP(D2D_N3GTDO),     (IEN  | PTD | DIS | M0)) /*d2d_n3gtdo*/\
-       MUX_VAL(CP(D2D_N3GTMS),     (IEN  | PTD | DIS | M0)) /*d2d_n3gtms*/\
-       MUX_VAL(CP(D2D_N3GTCK),     (IEN  | PTD | DIS | M0)) /*d2d_n3gtck*/\
-       MUX_VAL(CP(D2D_N3GRTCK),    (IEN  | PTD | DIS | M0)) /*d2d_n3grtck*/\
-       MUX_VAL(CP(D2D_MSTDBY),     (IEN  | PTU | EN  | M0)) /*d2d_mstdby*/\
-       MUX_VAL(CP(D2D_SWAKEUP),    (IEN  | PTD | EN  | M0)) /*d2d_swakeup*/\
-       MUX_VAL(CP(D2D_IDLEREQ),    (IEN  | PTD | DIS | M0)) /*d2d_idlereq*/\
-       MUX_VAL(CP(D2D_IDLEACK),    (IEN  | PTU | EN  | M0)) /*d2d_idleack*/\
-       MUX_VAL(CP(D2D_MWRITE),     (IEN  | PTD | DIS | M0)) /*d2d_mwrite*/\
-       MUX_VAL(CP(D2D_SWRITE),     (IEN  | PTD | DIS | M0)) /*d2d_swrite*/\
-       MUX_VAL(CP(D2D_MREAD),      (IEN  | PTD | DIS | M0)) /*d2d_mread*/\
-       MUX_VAL(CP(D2D_SREAD),      (IEN  | PTD | DIS | M0)) /*d2d_sread*/\
-       MUX_VAL(CP(D2D_MBUSFLAG),   (IEN  | PTD | DIS | M0)) /*d2d_mbusflag*/\
-       MUX_VAL(CP(D2D_SBUSFLAG),   (IEN  | PTD | DIS | M0)) /*d2d_sbusflag */
-
-#endif
index 508c21f58b13d0f03552855d27cc68fa680a89f2..59070c5f75c2a2f9fe8ceaee96f836a1afdebee5 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "compulab"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "cm_fx6"
 
index e85c8aba45c781f6235817f52abc0884baf19ae4..01871e100af33486294fb487c798eee2e3b0da17 100644 (file)
@@ -14,6 +14,7 @@
 #include <miiphy.h>
 #include <netdev.h>
 #include <errno.h>
+#include <usb.h>
 #include <fdt_support.h>
 #include <sata.h>
 #include <splash.h>
@@ -330,6 +331,11 @@ static int cm_fx6_setup_usb_otg(void)
        return gpio_direction_output(SB_FX6_USB_OTG_PWR, 0);
 }
 
+int board_usb_phy_mode(int port)
+{
+       return USB_INIT_HOST;
+}
+
 int board_ehci_hcd_init(int port)
 {
        int ret;
@@ -555,9 +561,14 @@ int cm_fx6_setup_ecspi(void) { return 0; }
 #endif
 
 #ifdef CONFIG_OF_BOARD_SETUP
+#define USDHC3_PATH    "/soc/aips-bus@02100000/usdhc@02198000/"
 int ft_board_setup(void *blob, bd_t *bd)
 {
+       u32 baseboard_rev;
+       int nodeoffset;
        uint8_t enetaddr[6];
+       char baseboard_name[16];
+       int err;
 
        /* MAC addr */
        if (eth_getenv_enetaddr("ethaddr", enetaddr)) {
@@ -571,6 +582,21 @@ int ft_board_setup(void *blob, bd_t *bd)
                                     enetaddr, 6, 1);
        }
 
+       baseboard_rev = cl_eeprom_get_board_rev(0);
+       err = cl_eeprom_get_product_name((uchar *)baseboard_name, 0);
+       if (err || baseboard_rev == 0)
+               return 0; /* Assume not an early revision SB-FX6m baseboard */
+
+       if (!strncmp("SB-FX6m", baseboard_name, 7) && baseboard_rev <= 120) {
+               fdt_shrink_to_minimum(blob); /* Make room for new properties */
+               nodeoffset = fdt_path_offset(blob, USDHC3_PATH);
+               fdt_delprop(blob, nodeoffset, "cd-gpios");
+               fdt_find_and_setprop(blob, USDHC3_PATH, "non-removable",
+                                    NULL, 0, 1);
+               fdt_find_and_setprop(blob, USDHC3_PATH, "keep-power-in-suspend",
+                                    NULL, 0, 1);
+       }
+
        return 0;
 }
 #endif
@@ -620,6 +646,13 @@ int checkboard(void)
        return 0;
 }
 
+int misc_init_r(void)
+{
+       cl_print_pcb_info();
+
+       return 0;
+}
+
 void dram_init_banksize(void)
 {
        gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
@@ -676,7 +709,7 @@ int dram_init(void)
 
 u32 get_board_rev(void)
 {
-       return cl_eeprom_get_board_rev();
+       return cl_eeprom_get_board_rev(CONFIG_SYS_I2C_EEPROM_BUS);
 }
 
 static struct mxc_serial_platdata cm_fx6_mxc_serial_plat = {
index 374edbcffc6a990462cc69bc29505eb59ef45df9..8f17b97fa3f712c25305ea1b1d36207332db5aa2 100644 (file)
@@ -104,7 +104,7 @@ int board_init(void)
  */
 u32 get_board_rev(void)
 {
-       return cl_eeprom_get_board_rev();
+       return cl_eeprom_get_board_rev(CONFIG_SYS_I2C_EEPROM_BUS);
 };
 
 int misc_init_r(void)
index 88ce2cc2e642b92fbaa4b38cc5f33418595b934f..f31f19e7b82545236f01976693446e0b7bce2547 100644 (file)
@@ -121,12 +121,12 @@ void set_muxconf_regs(void)
        MUX_VAL(CP(UART2_RX),           (IEN  | PTD | EN  | M4)); /*GPIO_147*/
 
        /* MMC1 */
-       MUX_VAL(CP(MMC1_CLK),           (IDIS | PTU | EN  | M0));
-       MUX_VAL(CP(MMC1_CMD),           (IEN  | PTU | EN  | M0));
-       MUX_VAL(CP(MMC1_DAT0),          (IEN  | PTU | EN  | M0));
-       MUX_VAL(CP(MMC1_DAT1),          (IEN  | PTU | EN  | M0));
-       MUX_VAL(CP(MMC1_DAT2),          (IEN  | PTU | EN  | M0));
-       MUX_VAL(CP(MMC1_DAT3),          (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(MMC1_CLK),           (IEN  | PTU | EN  | M0));
+       MUX_VAL(CP(MMC1_CMD),           (IEN  | PTU | DIS  | M0));
+       MUX_VAL(CP(MMC1_DAT0),          (IEN  | PTU | DIS  | M0));
+       MUX_VAL(CP(MMC1_DAT1),          (IEN  | PTU | DIS  | M0));
+       MUX_VAL(CP(MMC1_DAT2),          (IEN  | PTU | DIS  | M0));
+       MUX_VAL(CP(MMC1_DAT3),          (IEN  | PTU | DIS  | M0));
 
        /* DSS */
        MUX_VAL(CP(DSS_PCLK),           (IDIS | PTD | DIS | M0));
index 77bcea44b41cf5a5c653f1ffa2621c37ed5ea1ec..630446820cc5fc3bbff02f1194f0c5eb671da5ec 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <common.h>
 #include <i2c.h>
+#include "eeprom.h"
 
 #ifndef CONFIG_SYS_I2C_EEPROM_ADDR
 # define CONFIG_SYS_I2C_EEPROM_ADDR    0x50
@@ -25,6 +26,8 @@
 #define BOARD_REV_OFFSET               0
 #define BOARD_REV_OFFSET_LEGACY                6
 #define BOARD_REV_SIZE                 2
+#define PRODUCT_NAME_OFFSET            128
+#define PRODUCT_NAME_SIZE              16
 #define MAC_ADDR_OFFSET                        4
 #define MAC_ADDR_OFFSET_LEGACY         0
 
@@ -105,9 +108,11 @@ void get_board_serial(struct tag_serialnr *serialnr)
 int cl_eeprom_read_mac_addr(uchar *buf, uint eeprom_bus)
 {
        uint offset;
+       int err;
 
-       if (cl_eeprom_setup(eeprom_bus))
-               return 0;
+       err = cl_eeprom_setup(eeprom_bus);
+       if (err)
+               return err;
 
        offset = (cl_eeprom_layout != LAYOUT_LEGACY) ?
                        MAC_ADDR_OFFSET : MAC_ADDR_OFFSET_LEGACY;
@@ -121,7 +126,7 @@ static u32 board_rev;
  * Routine: cl_eeprom_get_board_rev
  * Description: read system revision from eeprom
  */
-u32 cl_eeprom_get_board_rev(void)
+u32 cl_eeprom_get_board_rev(uint eeprom_bus)
 {
        char str[5]; /* Legacy representation can contain at most 4 digits */
        uint offset = BOARD_REV_OFFSET_LEGACY;
@@ -129,7 +134,7 @@ u32 cl_eeprom_get_board_rev(void)
        if (board_rev)
                return board_rev;
 
-       if (cl_eeprom_setup(CONFIG_SYS_I2C_EEPROM_BUS))
+       if (cl_eeprom_setup(eeprom_bus))
                return 0;
 
        if (cl_eeprom_layout != LAYOUT_LEGACY)
@@ -149,3 +154,30 @@ u32 cl_eeprom_get_board_rev(void)
 
        return board_rev;
 };
+
+/*
+ * Routine: cl_eeprom_get_board_rev
+ * Description: read system revision from eeprom
+ *
+ * @buf: buffer to store the product name
+ * @eeprom_bus: i2c bus num of the eeprom
+ *
+ * @return: 0 on success, < 0 on failure
+ */
+int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus)
+{
+       int err;
+
+       if (buf == NULL)
+               return -EINVAL;
+
+       err = cl_eeprom_setup(eeprom_bus);
+       if (err)
+               return err;
+
+       err = cl_eeprom_read(PRODUCT_NAME_OFFSET, buf, PRODUCT_NAME_SIZE);
+       if (!err) /* Protect ourselves from invalid data (unterminated str) */
+               buf[PRODUCT_NAME_SIZE - 1] = '\0';
+
+       return err;
+}
index 50c6b0226fc0ee2a39102f40e92e7288c823ca87..c0b4739ea2351362276458fe85147e713eea1f73 100644 (file)
@@ -9,19 +9,25 @@
 
 #ifndef _EEPROM_
 #define _EEPROM_
+#include <errno.h>
 
 #ifdef CONFIG_SYS_I2C
 int cl_eeprom_read_mac_addr(uchar *buf, uint eeprom_bus);
-u32 cl_eeprom_get_board_rev(void);
+u32 cl_eeprom_get_board_rev(uint eeprom_bus);
+int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus);
 #else
 static inline int cl_eeprom_read_mac_addr(uchar *buf, uint eeprom_bus)
 {
        return 1;
 }
-static inline u32 cl_eeprom_get_board_rev(void)
+static inline u32 cl_eeprom_get_board_rev(uint eeprom_bus)
 {
        return 0;
 }
+static inline int cl_eeprom_get_product_name(uchar *buf, uint eeprom_bus)
+{
+       return -ENOSYS;
+}
 #endif
 
 #endif
index 0a837bde0e7ee084ebe2b0020159731c79d5304f..773551baa952ff9993e56ba776002a5dec58135a 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "congatec"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "cgtqmx6eval"
 
index 7de6460ca0b22be616c120ec59eed9a57be20623..574891e5ec6df3965c57f1890f46e214f10eb177 100644 (file)
 #include <power/pfuze100_pmic.h>
 #include <linux/fb.h>
 #include <ipu_pixfmt.h>
+#include <malloc.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <micrel.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -43,6 +47,11 @@ DECLARE_GLOBAL_DATA_PTR;
 
 #define MX6Q_QMX6_PFUZE_MUX            IMX_GPIO_NR(6, 9)
 
+
+#define ENET_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |            \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED   |             \
+       PAD_CTL_DSE_40ohm   | PAD_CTL_HYS)
+
 int dram_init(void)
 {
        gd->ram_size = get_ram_size((void *)PHYS_SDRAM, PHYS_SDRAM_SIZE);
@@ -98,6 +107,51 @@ static iomux_v3_cfg_t const usb_otg_pads[] = {
        MX6_PAD_GPIO_1__USB_OTG_ID | MUX_PAD_CTRL(NO_PAD_CTRL),
 };
 
+static iomux_v3_cfg_t enet_pads_ksz9031[] = {
+       MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TXC__RGMII_TXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD0__RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD1__RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD2__RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD3__RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RXC__GPIO6_IO30 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_RGMII_RD0__GPIO6_IO25 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_RGMII_RD1__GPIO6_IO27 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_RGMII_RD2__GPIO6_IO28 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_RGMII_RD3__GPIO6_IO29 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       MX6_PAD_RGMII_RX_CTL__GPIO6_IO24 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t enet_pads_final_ksz9031[] = {
+       MX6_PAD_RGMII_RXC__RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD0__RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD1__RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD2__RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD3__RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t enet_pads_ar8035[] = {
+       MX6_PAD_ENET_MDIO__ENET_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET_MDC__ENET_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TXC__RGMII_TXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD0__RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD1__RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD2__RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TD3__RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET_REF_CLK__ENET_TX_CLK | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RXC__RGMII_RXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD0__RGMII_RD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD1__RGMII_RD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD2__RGMII_RD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RD3__RGMII_RD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
+};
+
 #define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
 struct i2c_pads_info i2c_pad_info1 = {
        .scl = {
@@ -169,6 +223,159 @@ int power_init_board(void)
 
        return 0;
 }
+
+int board_eth_init(bd_t *bis)
+{
+       struct phy_device *phydev;
+       struct mii_dev *bus;
+       unsigned short id1, id2;
+       int ret;
+
+       iomux_v3_cfg_t enet_reset = MX6_PAD_EIM_D23__GPIO3_IO23 |
+                                   MUX_PAD_CTRL(NO_PAD_CTRL);
+
+       /* check whether KSZ9031 or AR8035 has to be configured */
+       imx_iomux_v3_setup_multiple_pads(enet_pads_ar8035,
+                                        ARRAY_SIZE(enet_pads_ar8035));
+       imx_iomux_v3_setup_pad(enet_reset);
+
+       /* phy reset */
+       gpio_direction_output(IMX_GPIO_NR(3, 23), 0);
+       udelay(2000);
+       gpio_set_value(IMX_GPIO_NR(3, 23), 1);
+       udelay(500);
+
+       bus = fec_get_miibus(IMX_FEC_BASE, -1);
+       if (!bus)
+               return -EINVAL;
+       phydev = phy_find_by_mask(bus, (0xf << 4), PHY_INTERFACE_MODE_RGMII);
+       if (!phydev) {
+               printf("Error: phy device not found.\n");
+               ret = -ENODEV;
+               goto free_bus;
+       }
+
+       /* get the PHY id */
+       id1 = phy_read(phydev, MDIO_DEVAD_NONE, 2);
+       id2 = phy_read(phydev, MDIO_DEVAD_NONE, 3);
+
+       if ((id1 == 0x22) && ((id2 & 0xFFF0) == 0x1620)) {
+               /* re-configure for Micrel KSZ9031 */
+               printf("configure Micrel KSZ9031 Ethernet Phy at address %d\n",
+                      phydev->addr);
+
+               /* phy reset: gpio3-23 */
+               gpio_set_value(IMX_GPIO_NR(3, 23), 0);
+               gpio_set_value(IMX_GPIO_NR(6, 30), (phydev->addr >> 2));
+               gpio_set_value(IMX_GPIO_NR(6, 25), 1);
+               gpio_set_value(IMX_GPIO_NR(6, 27), 1);
+               gpio_set_value(IMX_GPIO_NR(6, 28), 1);
+               gpio_set_value(IMX_GPIO_NR(6, 29), 1);
+               imx_iomux_v3_setup_multiple_pads(enet_pads_ksz9031,
+                                                ARRAY_SIZE(enet_pads_ksz9031));
+               gpio_set_value(IMX_GPIO_NR(6, 24), 1);
+               udelay(500);
+               gpio_set_value(IMX_GPIO_NR(3, 23), 1);
+               imx_iomux_v3_setup_multiple_pads(enet_pads_final_ksz9031,
+                                                ARRAY_SIZE(enet_pads_final_ksz9031));
+       } else if ((id1 == 0x004d) && (id2 == 0xd072)) {
+               /* configure Atheros AR8035 - actually nothing to do */
+               printf("configure Atheros AR8035 Ethernet Phy at address %d\n",
+                      phydev->addr);
+       } else {
+               printf("Unknown Ethernet-Phy: 0x%04x 0x%04x\n", id1, id2);
+               ret = -EINVAL;
+               goto free_phydev;
+       }
+
+       ret = fec_probe(bis, -1, IMX_FEC_BASE, bus, phydev);
+       if (ret)
+               goto free_phydev;
+
+       return 0;
+
+free_phydev:
+       free(phydev);
+free_bus:
+       free(bus);
+       return ret;
+}
+
+int mx6_rgmii_rework(struct phy_device *phydev)
+{
+       unsigned short id1, id2;
+       unsigned short val;
+
+       /* check whether KSZ9031 or AR8035 has to be configured */
+       id1 = phy_read(phydev, MDIO_DEVAD_NONE, 2);
+       id2 = phy_read(phydev, MDIO_DEVAD_NONE, 3);
+
+       if ((id1 == 0x22) && ((id2 & 0xFFF0) == 0x1620)) {
+               /* finalize phy configuration for Micrel KSZ9031 */
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, 2);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 4);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, MII_KSZ9031_MOD_DATA_POST_INC_W | 0x2);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 0x0000);
+
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, 2);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 5);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, MII_KSZ9031_MOD_DATA_POST_INC_W | 0x2);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, MII_KSZ9031_MOD_REG);
+
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, 2);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 6);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, MII_KSZ9031_MOD_DATA_POST_INC_W | 0x2);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 0xFFFF);
+
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, 2);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 8);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, MII_KSZ9031_MOD_DATA_POST_INC_W | 0x2);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 0x3FFF);
+
+               /* fix KSZ9031 link up issue */
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, 0x0);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 0x4);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, MII_KSZ9031_MOD_DATA_NO_POST_INC);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 0x6);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, MII_KSZ9031_MOD_REG);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 0x3);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, MII_KSZ9031_MOD_DATA_NO_POST_INC);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, 0x1A80);
+       }
+
+       if ((id1 == 0x004d) && (id2 == 0xd072)) {
+               /* enable AR8035 ouput a 125MHz clk from CLK_25M */
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, 0x7);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, MII_KSZ9031_MOD_DATA_POST_INC_RW | 0x16);
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_CONTROL, MII_KSZ9031_MOD_DATA_NO_POST_INC | 0x7);
+               val = phy_read(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA);
+               val &= 0xfe63;
+               val |= 0x18;
+               phy_write(phydev, MDIO_DEVAD_NONE, MMD_ACCESS_REG_DATA, val);
+
+               /* introduce tx clock delay */
+               phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0x5);
+               val = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e);
+               val |= 0x0100;
+               phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, val);
+
+               /* disable hibernation */
+               phy_write(phydev, MDIO_DEVAD_NONE, 0x1d, 0xb);
+               val = phy_read(phydev, MDIO_DEVAD_NONE, 0x1e);
+               phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x3c40);
+       }
+       return 0;
+}
+
+int board_phy_config(struct phy_device *phydev)
+{
+       mx6_rgmii_rework(phydev);
+
+       if (phydev->drv->config)
+               phydev->drv->config(phydev);
+
+       return 0;
+}
  
 static void setup_iomux_uart(void)
 {
diff --git a/board/csb272/Kconfig b/board/csb272/Kconfig
deleted file mode 100644 (file)
index eed04f0..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_CSB272
-
-config SYS_BOARD
-       default "csb272"
-
-config SYS_CONFIG_NAME
-       default "csb272"
-
-endif
diff --git a/board/csb272/MAINTAINERS b/board/csb272/MAINTAINERS
deleted file mode 100644 (file)
index 4bc95ea..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CSB272 BOARD
-M:     Tolunay Orkun <torkun@nextio.com>
-S:     Maintained
-F:     board/csb272/
-F:     include/configs/csb272.h
-F:     configs/csb272_defconfig
diff --git a/board/csb272/Makefile b/board/csb272/Makefile
deleted file mode 100644 (file)
index 36ec9b6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = csb272.o
-obj-y  += init.o
diff --git a/board/csb272/csb272.c b/board/csb272/csb272.c
deleted file mode 100644 (file)
index dc2c950..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * (C) Copyright 2004
- * Tolunay Orkun, Nextio Inc., torkun@nextio.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <i2c.h>
-#include <miiphy.h>
-#include <asm/ppc4xx-emac.h>
-
-void sdram_init(void);
-
-/*
- * Configuration data for AMIS FS6377-01 Programmable 3-PLL Clock Generator
- *
- * CLKA output => Epson LCD Controller
- * CLKB output => Not Connected
- * CLKC output => Ethernet
- * CLKD output => UART external clock
- *
- * Note: these values are obtained from device after init by micromonitor
-*/
-uchar pll_fs6377_regs[16] = {
-       0x28, 0xef, 0x53, 0x03, 0x4b, 0x80, 0x32, 0x80,
-       0x94, 0x32, 0x80, 0xd4, 0x56, 0xf6, 0xf6, 0xe0 };
-
-/*
- * pll_init: Initialize AMIS IC FS6377-01 PLL
- *
- * PLL supplies Epson LCD Clock, Ethernet Clock and UART external clock
- *
- */
-int pll_init(void)
-{
-       i2c_set_bus_num(0);
-
-       return  i2c_write(CONFIG_SYS_I2C_PLL_ADDR, 0, 1,
-               (uchar *) pll_fs6377_regs, sizeof(pll_fs6377_regs));
-}
-
-/*
- * board_early_init_f: do early board initialization
- *
- */
-int board_early_init_f(void)
-{
-       /* initialize PLL so UART, LCD, Ethernet clocked at correctly */
-       (void) get_clocks();
-       pll_init();
-
-   /*-------------------------------------------------------------------------+
-   | Interrupt controller setup for the Walnut board.
-   | Note: IRQ 0-15  405GP internally generated; active high; level sensitive
-   |       IRQ 16    405GP internally generated; active low; level sensitive
-   |       IRQ 17-24 RESERVED
-   |       IRQ 25 (EXT IRQ 0) FPGA; active high; level sensitive
-   |       IRQ 26 (EXT IRQ 1) SMI; active high; level sensitive
-   |       IRQ 27 (EXT IRQ 2) Not Used
-   |       IRQ 28 (EXT IRQ 3) PCI SLOT 3; active low; level sensitive
-   |       IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
-   |       IRQ 30 (EXT IRQ 5) PCI SLOT 1; active low; level sensitive
-   |       IRQ 31 (EXT IRQ 6) PCI SLOT 0; active low; level sensitive
-   | Note for Walnut board:
-   |       An interrupt taken for the FPGA (IRQ 25) indicates that either
-   |       the Mouse, Keyboard, IRDA, or External Expansion caused the
-   |       interrupt. The FPGA must be read to determine which device
-   |       caused the interrupt. The default setting of the FPGA clears
-   |
-   +-------------------------------------------------------------------------*/
-
-       mtdcr (UIC0SR, 0xFFFFFFFF);   /* clear all ints */
-       mtdcr (UIC0ER, 0x00000000);   /* disable all ints */
-       mtdcr (UIC0CR, 0x00000000);   /* set all to be non-critical */
-       mtdcr (UIC0PR, 0xFFFFFF83);   /* set int polarities */
-       mtdcr (UIC0TR, 0x10000000);   /* set int trigger levels */
-       mtdcr (UIC0VCR, 0x00000001);  /* set vect base=0,INT0 highest priority */
-       mtdcr (UIC0SR, 0xFFFFFFFF);   /* clear all ints */
-
-       mtebc (EBC0_CFG, 0xa8400000);   /* EBC always driven */
-
-       return 0; /* success */
-}
-
-/*
- * checkboard: identify/verify the board we are running
- *
- * Remark: we just assume it is correct board here!
- *
- */
-int checkboard(void)
-{
-       printf("BOARD: Cogent CSB272\n");
-
-       return 0; /* success */
-}
-
-/*
- * initram: Determine the size of mounted DRAM
- *
- * Size is determined by reading SDRAM configuration registers as
- * configured by initialization code
- *
- */
-phys_size_t initdram (int board_type)
-{
-       ulong tot_size;
-       ulong bank_size;
-       ulong tmp;
-
-       /*
-        * ToDo: Move the asm init routine sdram_init() to this C file,
-        * or even better use some common ppc4xx code available
-        * in arch/powerpc/cpu/ppc4xx
-        */
-       sdram_init();
-
-       tot_size = 0;
-
-       mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
-       tmp = mfdcr (SDRAM0_CFGDATA);
-       if (tmp & 0x00000001) {
-               bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
-               tot_size += bank_size;
-       }
-
-       mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
-       tmp = mfdcr (SDRAM0_CFGDATA);
-       if (tmp & 0x00000001) {
-               bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
-               tot_size += bank_size;
-       }
-
-       mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
-       tmp = mfdcr (SDRAM0_CFGDATA);
-       if (tmp & 0x00000001) {
-               bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
-               tot_size += bank_size;
-       }
-
-       mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
-       tmp = mfdcr (SDRAM0_CFGDATA);
-       if (tmp & 0x00000001) {
-               bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
-               tot_size += bank_size;
-       }
-
-       return tot_size;
-}
-
-/*
- * last_stage_init: final configurations (such as PHY etc)
- *
- */
-int last_stage_init(void)
-{
-       /* initialize the PHY */
-       miiphy_reset("ppc_4xx_eth0", CONFIG_PHY_ADDR);
-
-       /* AUTO neg */
-       miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, MII_BMCR,
-                       BMCR_ANENABLE | BMCR_ANRESTART);
-
-       /* LEDs     */
-       miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, MII_NWAYTEST, 0x0d08);
-
-
-       return 0; /* success */
-}
diff --git a/board/csb272/init.S b/board/csb272/init.S
deleted file mode 100644 (file)
index bf1d986..0000000
+++ /dev/null
@@ -1,196 +0,0 @@
-/*
- * SPDX-License-Identifier:    GPL-2.0 IBM-pibs
- */
-#include <config.h>
-#include <asm/ppc4xx.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-#define LI32(reg,val) \
-       addis   reg,0,val@h;\
-       ori     reg,reg,val@l
-
-#define WDCR_EBC(reg,val) \
-       addi    r4,0,reg;\
-       mtdcr   EBC0_CFGADDR,r4;\
-       addis   r4,0,val@h;\
-       ori     r4,r4,val@l;\
-       mtdcr   EBC0_CFGDATA,r4
-
-#define WDCR_SDRAM(reg,val) \
-       addi    r4,0,reg;\
-       mtdcr   SDRAM0_CFGADDR,r4;\
-       addis   r4,0,val@h;\
-       ori     r4,r4,val@l;\
-       mtdcr   SDRAM0_CFGDATA,r4
-
-/******************************************************************************
- * Function:   ext_bus_cntlr_init
- *
- * Description:        Configures EBC Controller and a few basic chip selects.
- *
- *             CS0 is setup to get the Boot Flash out of the addresss range
- *             so that we may setup a stack.  CS7 is setup so that we can
- *             access and reset the hardware watchdog.
- *
- *             IMPORTANT: For pass1 this code must run from
- *             cache since you can not reliably change a peripheral banks
- *             timing register (pbxap) while running code from that bank.
- *             For ex., since we are running from ROM on bank 0, we can NOT
- *             execute the code that modifies bank 0 timings from ROM, so
- *             we run it from cache.
- *
- * Notes:      Does NOT use the stack.
- *****************************************************************************/
-       .section ".text"
-       .align  2
-       .globl  ext_bus_cntlr_init
-       .type   ext_bus_cntlr_init, @function
-ext_bus_cntlr_init:
-       mflr    r0
-       /********************************************************************
-        * Prefetch entire ext_bus_cntrl_init function into the icache.
-        * This is necessary because we are going to change the same CS we
-        * are executing from.  Otherwise a CPU lockup may occur.
-        *******************************************************************/
-       bl      ..getAddr
-..getAddr:
-       mflr    r3                      /* get address of ..getAddr */
-
-       /* Calculate number of cache lines for this function */
-       addi    r4, 0, (((.Lfe0 - ..getAddr) / CONFIG_SYS_CACHELINE_SIZE) + 2)
-       mtctr   r4
-..ebcloop:
-       icbt    r0, r3                  /* prefetch cache line for addr in r3*/
-       addi    r3, r3, CONFIG_SYS_CACHELINE_SIZE /* move to next cache line */
-       bdnz    ..ebcloop               /* continue for $CTR cache lines */
-
-       /********************************************************************
-        * Delay to ensure all accesses to ROM are complete before changing
-        * bank 0 timings. 200usec should be enough.
-        * 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles.
-        *******************************************************************/
-       addis   r3, 0, 0x0
-       ori     r3, r3, 0xA000          /* wait 200us from reset */
-       mtctr   r3
-..spinlp:
-       bdnz    ..spinlp                /* spin loop */
-
-       /********************************************************************
-        * SETUP CPC0_CR0
-        *******************************************************************/
-       LI32(r4, 0x007000c0)
-       mtdcr   CPC0_CR0, r4
-
-       /********************************************************************
-        * Setup CPC0_CR1: Change PCIINT signal to PerWE
-        *******************************************************************/
-       mfdcr   r4, CPC0_CR1
-       ori     r4, r4, 0x4000
-       mtdcr   CPC0_CR1, r4
-
-       /********************************************************************
-        * Setup External Bus Controller (EBC).
-        *******************************************************************/
-       WDCR_EBC(EBC0_CFG, 0xd84c0000)
-       /********************************************************************
-        * Memory Bank 0 (Intel 28F128J3 Flash) initialization
-        *******************************************************************/
-       /*WDCR_EBC(PB1AP, 0x02869200)*/
-       WDCR_EBC(PB1AP, 0x07869200)
-       WDCR_EBC(PB0CR, 0xfe0bc000)
-       /********************************************************************
-        * Memory Bank 1 (Holtek HT6542B PS/2) initialization
-        *******************************************************************/
-       WDCR_EBC(PB1AP, 0x1f869200)
-       WDCR_EBC(PB1CR, 0xf0818000)
-       /********************************************************************
-        * Memory Bank 2 (Epson S1D13506) initialization
-        *******************************************************************/
-       WDCR_EBC(PB2AP, 0x05860300)
-       WDCR_EBC(PB2CR, 0xf045a000)
-       /********************************************************************
-        * Memory Bank 3 (Philips SJA1000 CAN Controllers) initialization
-        *******************************************************************/
-       WDCR_EBC(PB3AP, 0x0387d200)
-       WDCR_EBC(PB3CR, 0xf021c000)
-       /********************************************************************
-        * Memory Bank 4-7 (Unused) initialization
-        *******************************************************************/
-       WDCR_EBC(PB4AP, 0)
-       WDCR_EBC(PB4CR, 0)
-       WDCR_EBC(PB5AP, 0)
-       WDCR_EBC(PB5CR, 0)
-       WDCR_EBC(PB6AP, 0)
-       WDCR_EBC(PB6CR, 0)
-       WDCR_EBC(PB7AP, 0)
-       WDCR_EBC(PB7CR, 0)
-
-       /* We are all done */
-       mtlr    r0                      /* Restore link register */
-       blr                             /* Return to calling function */
-.Lfe0: .size   ext_bus_cntlr_init,.Lfe0-ext_bus_cntlr_init
-/* end ext_bus_cntlr_init() */
-
-/******************************************************************************
- * Function:   sdram_init
- *
- * Description:        Configures SDRAM memory banks.
- *
- * Notes:      Does NOT use the stack.
- *****************************************************************************/
-       .section ".text"
-       .align  2
-       .globl  sdram_init
-       .type   sdram_init, @function
-sdram_init:
-
-       /*
-        * Disable memory controller to allow
-        * values to be changed.
-        */
-       WDCR_SDRAM(SDRAM0_CFG, 0x00000000)
-
-       /*
-        * Configure Memory Banks
-        */
-       WDCR_SDRAM(SDRAM0_B0CR, 0x00084001)
-       WDCR_SDRAM(SDRAM0_B1CR, 0x00000000)
-       WDCR_SDRAM(SDRAM0_B2CR, 0x00000000)
-       WDCR_SDRAM(SDRAM0_B3CR, 0x00000000)
-
-       /*
-        * Set up SDTR1 (SDRAM Timing Register)
-        */
-       WDCR_SDRAM(SDRAM0_TR, 0x00854009)
-
-       /*
-        * Set RTR (Refresh Timing Register)
-        */
-       WDCR_SDRAM(SDRAM0_RTR,   0x10000000)
-       /* WDCR_SDRAM(SDRAM0_RTR,   0x05f00000) */
-
-       /********************************************************************
-        * Delay to ensure 200usec have elapsed since reset. Assume worst
-        * case that the core is running 200Mhz:
-        *        200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles
-        *******************************************************************/
-       addis   r3, 0, 0x0000
-       ori     r3, r3, 0xA000          /* Wait >200us from reset */
-       mtctr   r3
-..spinlp2:
-       bdnz    ..spinlp2               /* spin loop */
-
-       /********************************************************************
-        * Set memory controller options reg, MCOPT1.
-        *******************************************************************/
-       WDCR_SDRAM(SDRAM0_CFG,0x80800000)
-
-..sdri_done:
-       blr                             /* Return to calling function */
-.Lfe1: .size   sdram_init,.Lfe1-sdram_init
-/* end sdram_init() */
diff --git a/board/csb472/Kconfig b/board/csb472/Kconfig
deleted file mode 100644 (file)
index 53b1e7a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_CSB472
-
-config SYS_BOARD
-       default "csb472"
-
-config SYS_CONFIG_NAME
-       default "csb472"
-
-endif
diff --git a/board/csb472/MAINTAINERS b/board/csb472/MAINTAINERS
deleted file mode 100644 (file)
index 25041ed..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CSB472 BOARD
-M:     Tolunay Orkun <torkun@nextio.com>
-S:     Maintained
-F:     board/csb472/
-F:     include/configs/csb472.h
-F:     configs/csb472_defconfig
diff --git a/board/csb472/Makefile b/board/csb472/Makefile
deleted file mode 100644 (file)
index 5f7e8b5..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = csb472.o
-obj-y  += init.o
diff --git a/board/csb472/csb472.c b/board/csb472/csb472.c
deleted file mode 100644 (file)
index b1de18c..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * (C) Copyright 2004
- * Tolunay Orkun, Nextio Inc., torkun@nextio.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <i2c.h>
-#include <miiphy.h>
-#include <asm/ppc4xx-emac.h>
-
-void sdram_init(void);
-
-/*
- * board_early_init_f: do early board initialization
- *
- */
-int board_early_init_f(void)
-{
-   /*-------------------------------------------------------------------------+
-   | Interrupt controller setup for the Walnut board.
-   | Note: IRQ 0-15  405GP internally generated; active high; level sensitive
-   |       IRQ 16    405GP internally generated; active low; level sensitive
-   |       IRQ 17-24 RESERVED
-   |       IRQ 25 (EXT IRQ 0) FPGA; active high; level sensitive
-   |       IRQ 26 (EXT IRQ 1) SMI; active high; level sensitive
-   |       IRQ 27 (EXT IRQ 2) Not Used
-   |       IRQ 28 (EXT IRQ 3) PCI SLOT 3; active low; level sensitive
-   |       IRQ 29 (EXT IRQ 4) PCI SLOT 2; active low; level sensitive
-   |       IRQ 30 (EXT IRQ 5) PCI SLOT 1; active low; level sensitive
-   |       IRQ 31 (EXT IRQ 6) PCI SLOT 0; active low; level sensitive
-   | Note for Walnut board:
-   |       An interrupt taken for the FPGA (IRQ 25) indicates that either
-   |       the Mouse, Keyboard, IRDA, or External Expansion caused the
-   |       interrupt. The FPGA must be read to determine which device
-   |       caused the interrupt. The default setting of the FPGA clears
-   |
-   +-------------------------------------------------------------------------*/
-
-       mtdcr (UIC0SR, 0xFFFFFFFF);   /* clear all ints */
-       mtdcr (UIC0ER, 0x00000000);   /* disable all ints */
-       mtdcr (UIC0CR, 0x00000000);   /* set all to be non-critical */
-       mtdcr (UIC0PR, 0xFFFFFF83);   /* set int polarities */
-       mtdcr (UIC0TR, 0x10000000);   /* set int trigger levels */
-       mtdcr (UIC0VCR, 0x00000001);  /* set vect base=0,INT0 highest priority */
-       mtdcr (UIC0SR, 0xFFFFFFFF);   /* clear all ints */
-
-       mtebc (EBC0_CFG, 0xa8400000);   /* EBC always driven */
-
-       return 0; /* success */
-}
-
-/*
- * checkboard: identify/verify the board we are running
- *
- * Remark: we just assume it is correct board here!
- *
- */
-int checkboard(void)
-{
-       printf("BOARD: Cogent CSB472\n");
-
-       return 0; /* success */
-}
-
-/*
- * initram: Determine the size of mounted DRAM
- *
- * Size is determined by reading SDRAM configuration registers as
- * configured by initialization code
- *
- */
-phys_size_t initdram (int board_type)
-{
-       ulong tot_size;
-       ulong bank_size;
-       ulong tmp;
-
-       /*
-        * ToDo: Move the asm init routine sdram_init() to this C file,
-        * or even better use some common ppc4xx code available
-        * in arch/powerpc/cpu/ppc4xx
-        */
-       sdram_init();
-
-       tot_size = 0;
-
-       mtdcr (SDRAM0_CFGADDR, SDRAM0_B0CR);
-       tmp = mfdcr (SDRAM0_CFGDATA);
-       if (tmp & 0x00000001) {
-               bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
-               tot_size += bank_size;
-       }
-
-       mtdcr (SDRAM0_CFGADDR, SDRAM0_B1CR);
-       tmp = mfdcr (SDRAM0_CFGDATA);
-       if (tmp & 0x00000001) {
-               bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
-               tot_size += bank_size;
-       }
-
-       mtdcr (SDRAM0_CFGADDR, SDRAM0_B2CR);
-       tmp = mfdcr (SDRAM0_CFGDATA);
-       if (tmp & 0x00000001) {
-               bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
-               tot_size += bank_size;
-       }
-
-       mtdcr (SDRAM0_CFGADDR, SDRAM0_B3CR);
-       tmp = mfdcr (SDRAM0_CFGDATA);
-       if (tmp & 0x00000001) {
-               bank_size = 0x00400000 << ((tmp >> 17) & 0x7);
-               tot_size += bank_size;
-       }
-
-       return tot_size;
-}
-
-/*
- * last_stage_init: final configurations (such as PHY etc)
- *
- */
-int last_stage_init(void)
-{
-       /* initialize the PHY */
-       miiphy_reset("ppc_4xx_eth0", CONFIG_PHY_ADDR);
-
-       /* AUTO neg */
-       miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, MII_BMCR,
-                       BMCR_ANENABLE | BMCR_ANRESTART);
-
-       /* LEDs     */
-       miiphy_write("ppc_4xx_eth0", CONFIG_PHY_ADDR, MII_NWAYTEST, 0x0d08);
-
-       return 0; /* success */
-}
diff --git a/board/csb472/init.S b/board/csb472/init.S
deleted file mode 100644 (file)
index 7383a70..0000000
+++ /dev/null
@@ -1,192 +0,0 @@
-/*
- * SPDX-License-Identifier:    GPL-2.0 IBM-pibs
- */
-#include <config.h>
-#include <asm/ppc4xx.h>
-
-#include <ppc_asm.tmpl>
-#include <ppc_defs.h>
-
-#include <asm/cache.h>
-#include <asm/mmu.h>
-
-#define LI32(reg,val) \
-       addis   reg,0,val@h;\
-       ori     reg,reg,val@l
-
-#define WDCR_EBC(reg,val) \
-       addi    r4,0,reg;\
-       mtdcr   EBC0_CFGADDR,r4;\
-       addis   r4,0,val@h;\
-       ori     r4,r4,val@l;\
-       mtdcr   EBC0_CFGDATA,r4
-
-#define WDCR_SDRAM(reg,val) \
-       addi    r4,0,reg;\
-       mtdcr   SDRAM0_CFGADDR,r4;\
-       addis   r4,0,val@h;\
-       ori     r4,r4,val@l;\
-       mtdcr   SDRAM0_CFGDATA,r4
-
-/******************************************************************************
- * Function:   ext_bus_cntlr_init
- *
- * Description:        Configures EBC Controller and a few basic chip selects.
- *
- *             CS0 is setup to get the Boot Flash out of the addresss range
- *             so that we may setup a stack.  CS7 is setup so that we can
- *             access and reset the hardware watchdog.
- *
- *             IMPORTANT: For pass1 this code must run from
- *             cache since you can not reliably change a peripheral banks
- *             timing register (pbxap) while running code from that bank.
- *             For ex., since we are running from ROM on bank 0, we can NOT
- *             execute the code that modifies bank 0 timings from ROM, so
- *             we run it from cache.
- *
- * Notes:      Does NOT use the stack.
- *****************************************************************************/
-       .section ".text"
-       .align  2
-       .globl  ext_bus_cntlr_init
-       .type   ext_bus_cntlr_init, @function
-ext_bus_cntlr_init:
-       mflr    r0
-       /********************************************************************
-        * Prefetch entire ext_bus_cntrl_init function into the icache.
-        * This is necessary because we are going to change the same CS we
-        * are executing from.  Otherwise a CPU lockup may occur.
-        *******************************************************************/
-       bl      ..getAddr
-..getAddr:
-       mflr    r3                      /* get address of ..getAddr */
-
-       /* Calculate number of cache lines for this function */
-       addi    r4, 0, (((.Lfe0 - ..getAddr) / CONFIG_SYS_CACHELINE_SIZE) + 2)
-       mtctr   r4
-..ebcloop:
-       icbt    r0, r3                  /* prefetch cache line for addr in r3*/
-       addi    r3, r3, CONFIG_SYS_CACHELINE_SIZE /* move to next cache line */
-       bdnz    ..ebcloop               /* continue for $CTR cache lines */
-
-       /********************************************************************
-        * Delay to ensure all accesses to ROM are complete before changing
-        * bank 0 timings. 200usec should be enough.
-        * 200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles.
-        *******************************************************************/
-       addis   r3, 0, 0x0
-       ori     r3, r3, 0xA000          /* wait 200us from reset */
-       mtctr   r3
-..spinlp:
-       bdnz    ..spinlp                /* spin loop */
-
-       /********************************************************************
-        * SETUP CPC0_CR0
-        *******************************************************************/
-       LI32(r4, 0x00c01030)
-       mtdcr   CPC0_CR0, r4
-
-       /********************************************************************
-        * Setup CPC0_CR1: Change PCIINT signal to PerWE
-        *******************************************************************/
-       mfdcr   r4, CPC0_CR1
-       ori     r4, r4, 0x4000
-       mtdcr   CPC0_CR1, r4
-
-       /********************************************************************
-        * Setup External Bus Controller (EBC).
-        *******************************************************************/
-       WDCR_EBC(EBC0_CFG, 0xd84c0000)
-       /********************************************************************
-        * Memory Bank 0 (Intel 28F640J3 Flash) initialization
-        *******************************************************************/
-       /*WDCR_EBC(PB1AP, 0x03055200)*/
-       /*WDCR_EBC(PB1AP, 0x04055200)*/
-       WDCR_EBC(PB1AP, 0x08055200)
-       WDCR_EBC(PB0CR, 0xff87a000)
-       /********************************************************************
-        * Memory Bank 3 (Xilinx XC95144 CPLD) initialization
-        *******************************************************************/
-       /*WDCR_EBC(PB3AP, 0x07869200)*/
-       WDCR_EBC(PB3AP, 0x04055200)
-       WDCR_EBC(PB3CR, 0xf081c000)
-       /********************************************************************
-        * Memory Bank 1,2,4-7 (Unused) initialization
-        *******************************************************************/
-       WDCR_EBC(PB1AP, 0)
-       WDCR_EBC(PB1CR, 0)
-       WDCR_EBC(PB2AP, 0)
-       WDCR_EBC(PB2CR, 0)
-       WDCR_EBC(PB4AP, 0)
-       WDCR_EBC(PB4CR, 0)
-       WDCR_EBC(PB5AP, 0)
-       WDCR_EBC(PB5CR, 0)
-       WDCR_EBC(PB6AP, 0)
-       WDCR_EBC(PB6CR, 0)
-       WDCR_EBC(PB7AP, 0)
-       WDCR_EBC(PB7CR, 0)
-
-       /* We are all done */
-       mtlr    r0                      /* Restore link register */
-       blr                             /* Return to calling function */
-.Lfe0: .size   ext_bus_cntlr_init,.Lfe0-ext_bus_cntlr_init
-/* end ext_bus_cntlr_init() */
-
-/******************************************************************************
- * Function:   sdram_init
- *
- * Description:        Configures SDRAM memory banks.
- *
- * Notes:      Does NOT use the stack.
- *****************************************************************************/
-       .section ".text"
-       .align  2
-       .globl  sdram_init
-       .type   sdram_init, @function
-sdram_init:
-
-       /*
-        * Disable memory controller to allow
-        * values to be changed.
-        */
-       WDCR_SDRAM(SDRAM0_CFG, 0x00000000)
-
-       /*
-        * Configure Memory Banks
-        */
-       WDCR_SDRAM(SDRAM0_B0CR, 0x00062001)
-       WDCR_SDRAM(SDRAM0_B1CR, 0x00000000)
-       WDCR_SDRAM(SDRAM0_B2CR, 0x00000000)
-       WDCR_SDRAM(SDRAM0_B3CR, 0x00000000)
-
-       /*
-        * Set up SDTR1 (SDRAM Timing Register)
-        */
-       WDCR_SDRAM(SDRAM0_TR, 0x00854009)
-
-       /*
-        * Set RTR (Refresh Timing Register)
-        */
-       WDCR_SDRAM(SDRAM0_RTR,   0x10000000)
-       /* WDCR_SDRAM(SDRAM0_RTR,   0x05f00000) */
-
-       /********************************************************************
-        * Delay to ensure 200usec have elapsed since reset. Assume worst
-        * case that the core is running 200Mhz:
-        *        200,000,000 (cycles/sec) X .000200 (sec) = 0x9C40 cycles
-        *******************************************************************/
-       addis   r3, 0, 0x0000
-       ori     r3, r3, 0xA000          /* Wait >200us from reset */
-       mtctr   r3
-..spinlp2:
-       bdnz    ..spinlp2               /* spin loop */
-
-       /********************************************************************
-        * Set memory controller options reg, MCOPT1.
-        *******************************************************************/
-       WDCR_SDRAM(SDRAM0_CFG,0x80800000)
-
-..sdri_done:
-       blr                             /* Return to calling function */
-.Lfe1: .size   sdram_init,.Lfe1-sdram_init
-/* end sdram_init() */
diff --git a/board/davedenx/qong/Kconfig b/board/davedenx/qong/Kconfig
deleted file mode 100644 (file)
index 76cf343..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_QONG
-
-config SYS_BOARD
-       default "qong"
-
-config SYS_VENDOR
-       default "davedenx"
-
-config SYS_SOC
-       default "mx31"
-
-config SYS_CONFIG_NAME
-       default "qong"
-
-endif
diff --git a/board/davedenx/qong/MAINTAINERS b/board/davedenx/qong/MAINTAINERS
deleted file mode 100644 (file)
index a275b5b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-QONG BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/davedenx/qong/
-F:     include/configs/qong.h
-F:     configs/qong_defconfig
diff --git a/board/davedenx/qong/Makefile b/board/davedenx/qong/Makefile
deleted file mode 100644 (file)
index 48c443d..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2009
-# Ilya Yanok, Emcraft Systems Ltd, <yanok@emcraft.com>
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := qong.o fpga.o
-obj-y  += lowlevel_init.o
diff --git a/board/davedenx/qong/fpga.c b/board/davedenx/qong/fpga.c
deleted file mode 100644 (file)
index 2eaad1e..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * (C) Copyright 2010
- * Stefano Babic, DENX Software Engineering, sbabic@denx.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/gpio.h>
-#include <fpga.h>
-#include <lattice.h>
-#include "qong_fpga.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if defined(CONFIG_FPGA)
-
-static void qong_jtag_init(void)
-{
-       return;
-}
-
-static void qong_fpga_jtag_set_tdi(int value)
-{
-       gpio_set_value(QONG_FPGA_TDI_PIN, value);
-}
-
-static void qong_fpga_jtag_set_tms(int value)
-{
-       gpio_set_value(QONG_FPGA_TMS_PIN, value);
-}
-
-static void qong_fpga_jtag_set_tck(int value)
-{
-       gpio_set_value(QONG_FPGA_TCK_PIN, value);
-}
-
-static int qong_fpga_jtag_get_tdo(void)
-{
-       return gpio_get_value(QONG_FPGA_TDO_PIN);
-}
-
-lattice_board_specific_func qong_fpga_fns = {
-       qong_jtag_init,
-       qong_fpga_jtag_set_tdi,
-       qong_fpga_jtag_set_tms,
-       qong_fpga_jtag_set_tck,
-       qong_fpga_jtag_get_tdo
-};
-
-Lattice_desc qong_fpga[CONFIG_FPGA_COUNT] = {
-       {
-               Lattice_XP2,
-               lattice_jtag_mode,
-               356519,
-               (void *) &qong_fpga_fns,
-               NULL,
-               0,
-               "lfxp2_5e_ftbga256"
-       },
-};
-
-int qong_fpga_init(void)
-{
-       int i;
-
-       fpga_init();
-
-       for (i = 0; i < CONFIG_FPGA_COUNT; i++) {
-               fpga_add(fpga_lattice, &qong_fpga[i]);
-       }
-       return 0;
-}
-
-#endif
diff --git a/board/davedenx/qong/lowlevel_init.S b/board/davedenx/qong/lowlevel_init.S
deleted file mode 100644 (file)
index 8887023..0000000
+++ /dev/null
@@ -1,223 +0,0 @@
-/*
- * Copyright (C) 2009, Emcraft Systems, Ilya Yanok <yanok@emcraft.com>
- *
- * Based on board/freescale/mx31ads/lowlevel_init.S
- * by Guennadi Liakhovetski.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm/arch/imx-regs.h>
-
-.macro REG reg, val
-       ldr r2, =\reg
-       ldr r3, =\val
-       str r3, [r2]
-.endm
-
-.macro REG8 reg, val
-       ldr r2, =\reg
-       ldr r3, =\val
-       strb r3, [r2]
-.endm
-
-.macro DELAY loops
-       ldr r2, =\loops
-1:
-       subs    r2, r2, #1
-       nop
-       bcs 1b
-.endm
-
-.macro SETUP_RAM cfg, ctl
-       /* B8xxxxxx - NAND, 8xxxxxxx - CSD0 RAM */
-       REG     0xB8001010, 0x00000004
-       ldr r3, =\cfg
-       ldr r2, =WEIM_ESDCFG0
-       str r3, [r2]
-       REG     0xB8001000, 0x92100000
-       REG     0x80000f00, 0x12344321
-       REG     0xB8001000, 0xa2100000
-       REG     0x80000000, 0x12344321
-       REG     0x80000000, 0x12344321
-       REG     0xB8001000, 0xb2100000
-       REG8    0x80000033, 0xda
-       REG8    0x81000000, 0xff
-       ldr r3, =\ctl
-       ldr r2, =WEIM_ESDCTL0
-       str r3, [r2]
-       REG     0x80000000, 0xDEADBEEF
-       REG     0xB8001010, 0x0000000c
-
-.endm
-/* RedBoot: To support 133MHz DDR */
-.macro init_drive_strength
-       /*
-        * Disable maximum drive strength SDRAM/DDR lines by clearing DSE1 bits
-        * in SW_PAD_CTL registers
-        */
-
-       /* SDCLK */
-       ldr r1, =IOMUXC_SW_PAD_CTL(0x2b)
-       ldr r0, [r1, #0x6C]
-       bic r0, r0, #(1 << 12)
-       str r0, [r1, #0x6C]
-
-       /* CAS */
-       ldr r0, [r1, #0x70]
-       bic r0, r0, #(1 << 22)
-       str r0, [r1, #0x70]
-
-       /* RAS */
-       ldr r0, [r1, #0x74]
-       bic r0, r0, #(1 << 2)
-       str r0, [r1, #0x74]
-
-       /* CS2 (CSD0) */
-       ldr r0, [r1, #0x7C]
-       bic r0, r0, #(1 << 22)
-       str r0, [r1, #0x7C]
-
-       /* DQM3 */
-       ldr r0, [r1, #0x84]
-       bic r0, r0, #(1 << 22)
-       str r0, [r1, #0x84]
-
-       /* DQM2, DQM1, DQM0, SD31-SD0, A25-A0, MA10 (0x288..0x2DC) */
-       ldr r2, =22     /* (0x2E0 - 0x288) / 4 = 22 */
-pad_loop:
-       ldr r0, [r1, #0x88]
-       bic r0, r0, #(1 << 22)
-       bic r0, r0, #(1 << 12)
-       bic r0, r0, #(1 << 2)
-       str r0, [r1, #0x88]
-       add r1, r1, #4
-       subs r2, r2, #0x1
-       bne pad_loop
-.endm /* init_drive_strength */
-
-.globl lowlevel_init
-lowlevel_init:
-
-       init_drive_strength
-
-       /* Image Processing Unit: */
-       /* Too early to switch display on? */
-       /* Switch on Display Interface */
-       REG     IPU_CONF, IPU_CONF_DI_EN
-       /* Clock Control Module: */
-       REG     CCM_CCMR, 0x074B0BF5            /* Use CKIH, MCU PLL off */
-
-       DELAY 0x40000
-
-       REG     CCM_CCMR, 0x074B0BF5 | CCMR_MPE                 /* MCU PLL on */
-       /* Switch to MCU PLL */
-       REG     CCM_CCMR, (0x074B0BF5 | CCMR_MPE) & ~CCMR_MDS
-
-       /* 399-133-66.5 */
-       ldr     r0, =CCM_BASE
-       ldr     r1, =0xFF871650
-       /* PDR0 */
-       str     r1, [r0, #0x4]
-       ldr     r1, MPCTL_PARAM_399
-       /* MPCTL */
-       str     r1, [r0, #0x10]
-
-       /* Set UPLL=240MHz, USB=60MHz */
-       ldr     r1, =0x49FCFE7F
-       /* PDR1 */
-       str     r1, [r0, #0x8]
-       ldr     r1, UPCTL_PARAM_240
-       /* UPCTL */
-       str     r1, [r0, #0x14]
-       /* default CLKO to 1/8 of the ARM core */
-       mov     r1, #0x00000208
-       /* COSR */
-       str     r1, [r0, #0x1c]
-
-       /* Default: 1, 4, 12, 1 */
-       REG     CCM_SPCTL, PLL_PD(1) | PLL_MFD(4) | PLL_MFI(12) | PLL_MFN(1)
-
-check_ddr_module:
-/* Set stackpointer in internal RAM to call get_ram_size */
-       ldr     sp, =(IRAM_BASE_ADDR + IRAM_SIZE - 16)
-       stmfd   sp!, {r0-r11, ip, lr}
-       mov     ip, lr          /* save link reg across call */
-
-       ldr     r0,=0x08000000
-       SETUP_RAM       ESDCFG0_256MB, ESDCTL0_256MB
-       ldr     r0,=0x80000000
-       ldr     r1,=0x10000000
-       bl      get_ram_size
-       ldr     r1,=0x10000000
-       cmp     r0,r1
-       beq     restore_regs
-       SETUP_RAM       ESDCFG0_128MB, ESDCTL0_128MB
-       ldr     r0,=0x80000000
-       ldr     r1,=0x08000000
-       bl      get_ram_size
-       ldr     r1,=0x08000000
-       cmp     r0,r1
-       beq     restore_regs
-
-restore_regs:
-       ldmfd   sp!, {r0-r11, ip, lr}
-       mov     lr, ip          /* restore link reg */
-
-       mov     pc, lr
-
-
-MPCTL_PARAM_399:
-       .word (((1 - 1) << 26) + ((52 - 1) << 16) + (7 << 10) + (35 << 0))
-UPCTL_PARAM_240:
-       .word (((2 - 1) << 26) + ((13 - 1) << 16) + (9 << 10) + (3  << 0))
-
-       .equ    ESDCFG0_128MB, \
-               (0 << 21) + /* tXP */ \
-               (1 << 20) + /* tWTR */ \
-               (2 << 18) + /* tRP */ \
-               (1 << 16) + /* tMRD */ \
-               (0 << 15) + /* tWR */ \
-               (5 << 12) + /* tRAS */ \
-               (1 << 10) + /* tRRD */ \
-               (3 << 8) + /* tCAS */ \
-               (2 << 4) + /* tRCD */ \
-               (0x0F << 0) /* tRC */
-
-       .equ    ESDCTL0_128MB, \
-               (1 << 31)  +    /* enable */ \
-               (0 << 28)  +    /* mode */ \
-               (0 << 27)  +    /* supervisor protect */ \
-               (2 << 24)  +    /* 13 rows */ \
-               (2 << 20)  +    /* 10 cols */ \
-               (2 << 16)  +    /* 32 bit */ \
-               (3 << 13)  +    /* 7.81us (64ms/8192) */ \
-               (0 << 10)  +    /* power down timer */ \
-               (0 << 8)  +     /* full page */ \
-               (1 << 7)  +     /* burst length */ \
-               (0 << 0)        /* precharge timer */
-
-       .equ    ESDCFG0_256MB, \
-               (3 << 21)  +    /* tXP */ \
-               (0 << 20)  +    /* tWTR */ \
-               (2 << 18)  +    /* tRP */ \
-               (1 << 16)  +    /* tMRD */ \
-               (0 << 15)  +    /* tWR */ \
-               (5 << 12)  +    /* tRAS */ \
-               (1 << 10)  +    /* tRRD */ \
-               (3 << 8)   +    /* tCAS */ \
-               (2 << 4)   +    /* tRCD */ \
-               (7 << 0)        /* tRC */
-
-       .equ    ESDCTL0_256MB, \
-               (1 << 31)  + \
-               (0 << 28)  + \
-               (0 << 27)  + \
-               (3 << 24)  + /* 14 rows */ \
-               (2 << 20)  + /* 10 cols */ \
-               (2 << 16)  + \
-               (4 << 13)  + /* 3.91us (64ms/16384) */ \
-               (0 << 10)  + \
-               (0 << 8)   + \
-               (1 << 7)   + \
-               (0 << 0)
diff --git a/board/davedenx/qong/qong.c b/board/davedenx/qong/qong.c
deleted file mode 100644 (file)
index ad1694b..0000000
+++ /dev/null
@@ -1,259 +0,0 @@
-/*
- *
- * (c) 2009 Emcraft Systems, Ilya Yanok <yanok@emcraft.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/io.h>
-#include <nand.h>
-#include <power/pmic.h>
-#include <fsl_pmic.h>
-#include <asm/gpio.h>
-#include "qong_fpga.h"
-#include <watchdog.h>
-#include <errno.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int dram_init(void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
-                               PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-static void qong_fpga_reset(void)
-{
-       gpio_set_value(QONG_FPGA_RST_PIN, 0);
-       udelay(30);
-       gpio_set_value(QONG_FPGA_RST_PIN, 1);
-
-       udelay(300);
-}
-
-int board_early_init_f(void)
-{
-#ifdef CONFIG_QONG_FPGA
-       /* CS1: FPGA/Network Controller/GPIO, 16-bit, no DTACK */
-       static const struct mxc_weimcs cs1 = {
-               /*    sp wp bcd bcs psz pme sync dol cnc wsc ew wws edc */
-               CSCR_U(0, 0,  0,  0,  0,  0,   0,  0,  0, 10, 0,  0,  1),
-               /*   oea oen ebwa ebwn csa ebc dsz csn psr cre wrap csen */
-               CSCR_L(2,  0,   0,   4,  0,  0,  5,  0,  0,  0,   0,   1),
-               /*  ebra ebrn rwa rwn mum lah lbn lba dww dct wwu age cnc2 fce*/
-               CSCR_A(0,   4,  0,  2,  0,  0,  3,  0,  0,  0,  0,  0,   0,  0)
-       };
-
-       mxc_setup_weimcs(1, &cs1);
-
-       /* setup pins for FPGA */
-       mx31_gpio_mux(IOMUX_MODE(0x76, MUX_CTL_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(0x7e, MUX_CTL_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(0x91, MUX_CTL_OUT_FUNC | MUX_CTL_IN_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(0x92, MUX_CTL_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(0x93, MUX_CTL_GPIO));
-
-       /* FPGA reset  Pin */
-       /* rstn = 0 */
-       gpio_direction_output(QONG_FPGA_RST_PIN, 0);
-
-       /* set interrupt pin as input */
-       gpio_direction_input(QONG_FPGA_IRQ_PIN);
-
-       /* FPGA JTAG Interface */
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SFS6, MUX_CTL_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SCK6, MUX_CTL_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_CAPTURE, MUX_CTL_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_COMPARE, MUX_CTL_GPIO));
-       gpio_direction_output(QONG_FPGA_TCK_PIN, 0);
-       gpio_direction_output(QONG_FPGA_TMS_PIN, 0);
-       gpio_direction_output(QONG_FPGA_TDI_PIN, 0);
-       gpio_direction_input(QONG_FPGA_TDO_PIN);
-#endif
-
-       /* setup pins for UART1 */
-       mx31_gpio_mux(MUX_RXD1__UART1_RXD_MUX);
-       mx31_gpio_mux(MUX_TXD1__UART1_TXD_MUX);
-       mx31_gpio_mux(MUX_RTS1__UART1_RTS_B);
-       mx31_gpio_mux(MUX_CTS1__UART1_CTS_B);
-
-       /* setup pins for SPI (pmic) */
-       mx31_gpio_mux(MUX_CSPI2_SS0__CSPI2_SS0_B);
-       mx31_gpio_mux(MUX_CSPI2_MOSI__CSPI2_MOSI);
-       mx31_gpio_mux(MUX_CSPI2_MISO__CSPI2_MISO);
-       mx31_gpio_mux(MUX_CSPI2_SCLK__CSPI2_CLK);
-       mx31_gpio_mux(MUX_CSPI2_SPI_RDY__CSPI2_DATAREADY_B);
-
-       /* Setup pins for USB2 Host */
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_USBH2_CLK, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_USBH2_DIR, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_USBH2_NXT, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_USBH2_STP, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_USBH2_DATA0, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_USBH2_DATA1, MUX_CTL_FUNC));
-
-#define H2_PAD_CFG (PAD_CTL_DRV_MAX | PAD_CTL_SRE_FAST | PAD_CTL_HYS_CMOS | \
-                       PAD_CTL_ODE_CMOS | PAD_CTL_100K_PU)
-
-       mx31_set_pad(MX31_PIN_USBH2_CLK, H2_PAD_CFG);
-       mx31_set_pad(MX31_PIN_USBH2_DIR, H2_PAD_CFG);
-       mx31_set_pad(MX31_PIN_USBH2_NXT, H2_PAD_CFG);
-       mx31_set_pad(MX31_PIN_USBH2_STP, H2_PAD_CFG);
-       mx31_set_pad(MX31_PIN_USBH2_DATA0, H2_PAD_CFG); /* USBH2_DATA0 */
-       mx31_set_pad(MX31_PIN_USBH2_DATA1, H2_PAD_CFG); /* USBH2_DATA1 */
-       mx31_set_pad(MX31_PIN_SRXD6, H2_PAD_CFG);       /* USBH2_DATA2 */
-       mx31_set_pad(MX31_PIN_STXD6, H2_PAD_CFG);       /* USBH2_DATA3 */
-       mx31_set_pad(MX31_PIN_SFS3, H2_PAD_CFG);        /* USBH2_DATA4 */
-       mx31_set_pad(MX31_PIN_SCK3, H2_PAD_CFG);        /* USBH2_DATA5 */
-       mx31_set_pad(MX31_PIN_SRXD3, H2_PAD_CFG);       /* USBH2_DATA6 */
-       mx31_set_pad(MX31_PIN_STXD3, H2_PAD_CFG);       /* USBH2_DATA7 */
-
-       mx31_set_gpr(MUX_PGP_UH2, 1);
-
-       return 0;
-
-}
-
-int board_init(void)
-{
-       /* Chip selects */
-       /* CS0: Nor Flash #0 - it must be init'ed when executing from DDR */
-       /* Assumptions: HCLK = 133 MHz, tACC = 130ns */
-       static const struct mxc_weimcs cs0 = {
-               /*     sp wp bcd bcs psz pme sync dol cnc wsc ew wws edc */
-               CSCR_U(0, 0,  0,  0,  0,  0,   0,  0,  3, 21, 0,  0,  6),
-               /*   oea oen ebwa ebwn csa ebc dsz csn psr cre wrap csen */
-               CSCR_L(0,  1,   3,   3,  1,  1,  5,  1,  0,  0,   0,  1),
-               /*  ebra ebrn rwa rwn mum lah lbn lba dww dct wwu age cnc2 fce*/
-               CSCR_A(0,   1,  2,  2,  0,  0,  2,  0,  0,  0,  0,  0,   0,  0)
-       };
-
-       mxc_setup_weimcs(0, &cs0);
-
-       /* board id for linux */
-       gd->bd->bi_arch_number = MACH_TYPE_QONG;
-       gd->bd->bi_boot_params = (0x80000100);  /* adress of boot parameters */
-
-       qong_fpga_init();
-
-       return 0;
-}
-
-int board_late_init(void)
-{
-       u32 val;
-       struct pmic *p;
-       int ret;
-
-       ret = pmic_init(I2C_PMIC);
-       if (ret)
-               return ret;
-
-       p = pmic_get("FSL_PMIC");
-       if (!p)
-               return -ENODEV;
-       /* Enable RTC battery */
-       pmic_reg_read(p, REG_POWER_CTL0, &val);
-       pmic_reg_write(p, REG_POWER_CTL0, val | COINCHEN);
-       pmic_reg_write(p, REG_INT_STATUS1, RTCRSTI);
-
-#ifdef CONFIG_HW_WATCHDOG
-       hw_watchdog_init();
-#endif
-
-       return 0;
-}
-
-int checkboard(void)
-{
-       printf("Board: DAVE/DENX Qong\n");
-       return 0;
-}
-
-int misc_init_r(void)
-{
-#ifdef CONFIG_QONG_FPGA
-       u32 tmp;
-
-       tmp = *(volatile u32*)QONG_FPGA_CTRL_VERSION;
-       printf("FPGA:  ");
-       printf("version register = %u.%u.%u\n",
-               (tmp & 0xF000) >> 12, (tmp & 0x0F00) >> 8, tmp & 0x00FF);
-#endif
-       return 0;
-}
-
-int board_eth_init(bd_t *bis)
-{
-#if defined(CONFIG_QONG_FPGA) && defined(CONFIG_DNET)
-       return dnet_eth_initialize(0, (void *)CONFIG_DNET_BASE, -1);
-#else
-       return 0;
-#endif
-}
-
-#if defined(CONFIG_QONG_FPGA) && defined(CONFIG_NAND_PLAT)
-static void board_nand_setup(void)
-{
-       /* CS3: NAND 8-bit */
-       static const struct mxc_weimcs cs3 = {
-               /*    sp wp bcd bcs psz pme sync dol cnc wsc ew wws edc */
-               CSCR_U(0, 0,  0,  0,  0,  0,   0,  0,  1, 15, 0,  0,  0),
-               /*   oea oen ebwa ebwn csa ebc dsz csn psr cre wrap csen */
-               CSCR_L(2,  0,   0,   1,  3,  1,  3,  3,  0,  0,   0,   1),
-               /*  ebra ebrn rwa rwn mum lah lbn lba dww dct wwu age cnc2 fce*/
-               CSCR_A(0,   0,  0,  2,  0,  0,  2,  0,  0,  0,  0,  0,  0,   0)
-       };
-
-       mxc_setup_weimcs(3, &cs3);
-
-       mx31_set_gpr(MUX_SDCTL_CSD1_SEL, 1);
-
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_NFC_WP, MUX_CTL_IN_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_NFC_CE, MUX_CTL_IN_GPIO));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_NFC_RB, MUX_CTL_IN_GPIO));
-
-       /* Make sure to reset the fpga else you cannot access NAND */
-       qong_fpga_reset();
-
-       /* Enable NAND flash */
-       gpio_set_value(15, 1);
-       gpio_set_value(14, 1);
-       gpio_direction_output(15, 0);
-       gpio_direction_input(16);
-       gpio_direction_input(14);
-
-}
-
-int qong_nand_rdy(void *chip)
-{
-       udelay(1);
-       return gpio_get_value(16);
-}
-
-void qong_nand_select_chip(struct mtd_info *mtd, int chip)
-{
-       if (chip >= 0)
-               gpio_set_value(15, 0);
-       else
-               gpio_set_value(15, 1);
-
-}
-
-void qong_nand_plat_init(void *chip)
-{
-       struct nand_chip *nand = (struct nand_chip *)chip;
-       nand->chip_delay = 20;
-       nand->select_chip = qong_nand_select_chip;
-       nand->options &= ~NAND_BUSWIDTH_16;
-       board_nand_setup();
-}
-
-#endif
diff --git a/board/davedenx/qong/qong_fpga.h b/board/davedenx/qong/qong_fpga.h
deleted file mode 100644 (file)
index 2a619f7..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- *
- * (c) 2009 Emcraft Systems, Ilya Yanok <yanok@emcraft.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef QONG_FPGA_H
-#define QONG_FPGA_H
-
-#define QONG_FPGA_CTRL_BASE            CONFIG_FPGA_BASE
-#define QONG_FPGA_CTRL_VERSION         (QONG_FPGA_CTRL_BASE + 0x00000000)
-#define QONG_FPGA_PERIPH_SIZE          (1 << 24)
-
-#define        QONG_FPGA_TCK_PIN               26
-#define        QONG_FPGA_TMS_PIN               25
-#define        QONG_FPGA_TDI_PIN               8
-#define        QONG_FPGA_TDO_PIN               7
-#define        QONG_FPGA_RST_PIN               48
-#define        QONG_FPGA_IRQ_PIN               40
-
-int qong_fpga_init(void);
-#endif /* QONG_FPGA_H */
diff --git a/board/davinci/dm355evm/Kconfig b/board/davinci/dm355evm/Kconfig
deleted file mode 100644 (file)
index ec2c276..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DAVINCI_DM355EVM
-
-config SYS_BOARD
-       default "dm355evm"
-
-config SYS_VENDOR
-       default "davinci"
-
-config SYS_CONFIG_NAME
-       default "davinci_dm355evm"
-
-endif
diff --git a/board/davinci/dm355evm/MAINTAINERS b/board/davinci/dm355evm/MAINTAINERS
deleted file mode 100644 (file)
index c017e09..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-DM355EVM BOARD
-#M:    Sandeep Paulraj <s-paulraj@ti.com>
-S:     Orphan (since 2014-08)
-F:     board/davinci/dm355evm/
-F:     include/configs/davinci_dm355evm.h
-F:     configs/davinci_dm355evm_defconfig
diff --git a/board/davinci/dm355evm/Makefile b/board/davinci/dm355evm/Makefile
deleted file mode 100644 (file)
index bcb7e6f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := dm355evm.o
diff --git a/board/davinci/dm355evm/config.mk b/board/davinci/dm355evm/config.mk
deleted file mode 100644 (file)
index 9a06300..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Spectrum Digital DM355 EVM board
-#      dm355evm board has 1 bank of 128 MB DDR RAM
-#      Physical Address: 8000'0000 to 8800'0000
-#
-# Linux Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-#
-
-#Provide at least 16MB spacing between us and the Linux Kernel image
-CONFIG_SYS_TEXT_BASE = 0x81080000
diff --git a/board/davinci/dm355evm/dm355evm.c b/board/davinci/dm355evm/dm355evm.c
deleted file mode 100644 (file)
index e5a958f..0000000
+++ /dev/null
@@ -1,144 +0,0 @@
-/*
- * Copyright (C) 2009 David Brownell
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <nand.h>
-#include <asm/io.h>
-#include <asm/arch/hardware.h>
-#include <asm/ti-common/davinci_nand.h>
-#include <asm/arch/davinci_misc.h>
-#include <net.h>
-#include <netdev.h>
-#ifdef CONFIG_DAVINCI_MMC
-#include <mmc.h>
-#include <asm/arch/sdmmc_defs.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * With the DM355 EVM, u-boot is *always* a third stage loader,
- * unless a JTAG debugger handles the first two stages:
- *
- *   - 1st stage is ROM Boot Loader (RBL), which searches for a
- *     second stage loader in one of three places based on SW7:
- *     NAND (with MMC/SD fallback), MMC/SD, or UART.
- *
- *   - 2nd stage is User Boot Loader (UBL), using at most 30KB
- *     of on-chip SRAM, responsible for lowlevel init, and for
- *     loading the third stage loader into DRAM.
- *
- *   - 3rd stage, that's us!
- */
-
-int board_init(void)
-{
-       gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_DM355_EVM;
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-
-       /* We expect the UBL to have handled "lowlevel init", which
-        * involves setting up at least:
-        *  - clocks
-        *      + PLL1 (for ARM and peripherals) and PLL2 (for DDR)
-        *      + clock divisors for those PLLs
-        *      + LPSC_DDR module enabled
-        *      + LPSC_TIMER0 module (still) enabled
-        *  - EMIF
-        *      + DDR init and timings
-        *      + AEMIF timings (for NAND and DM9000)
-        *  - pinmux
-        *
-        * Some of that is repeated here, mostly as a precaution.
-        */
-
-       /* AEMIF:  Some "address" lines are available as GPIOs.  A3..A13
-        * could be too if we used A12 as a GPIO during NAND chipselect
-        * (and Linux did too), letting us control the LED on A7/GPIO61.
-        */
-       REG(PINMUX2) = 0x0c08;
-
-       /* UART0 may still be in SyncReset if we didn't boot from UART */
-       davinci_enable_uart0();
-
-       /* EDMA may be in SyncReset too; turn it on, Linux won't (yet) */
-       lpsc_on(DAVINCI_LPSC_TPCC);
-       lpsc_on(DAVINCI_LPSC_TPTC0);
-       lpsc_on(DAVINCI_LPSC_TPTC1);
-
-       return 0;
-}
-
-#ifdef CONFIG_DRIVER_DM9000
-int board_eth_init(bd_t *bis)
-{
-       return dm9000_initialize(bis);
-}
-#endif
-
-#ifdef CONFIG_NAND_DAVINCI
-
-static void nand_dm355evm_select_chip(struct mtd_info *mtd, int chip)
-{
-       struct nand_chip        *this = mtd->priv;
-       unsigned long           wbase = (unsigned long) this->IO_ADDR_W;
-       unsigned long           rbase = (unsigned long) this->IO_ADDR_R;
-
-       if (chip == 1) {
-               __set_bit(14, &wbase);
-               __set_bit(14, &rbase);
-       } else {
-               __clear_bit(14, &wbase);
-               __clear_bit(14, &rbase);
-       }
-       this->IO_ADDR_W = (void *)wbase;
-       this->IO_ADDR_R = (void *)rbase;
-}
-
-int board_nand_init(struct nand_chip *nand)
-{
-       davinci_nand_init(nand);
-       nand->select_chip = nand_dm355evm_select_chip;
-       return 0;
-}
-
-#endif
-
-#ifdef CONFIG_DAVINCI_MMC
-static struct davinci_mmc mmc_sd0 = {
-       .reg_base       = (struct davinci_mmc_regs *)DAVINCI_MMC_SD0_BASE,
-       .input_clk      = 108000000,
-       .host_caps      = MMC_MODE_4BIT,
-       .voltages       = MMC_VDD_32_33 | MMC_VDD_33_34,
-       .version        = MMC_CTLR_VERSION_1,
-};
-
-#ifdef CONFIG_DAVINCI_MMC_SD1
-static struct davinci_mmc mmc_sd1 = {
-       .reg_base       = (struct davinci_mmc_regs *)DAVINCI_MMC_SD1_BASE,
-       .input_clk      = 108000000,
-       .host_caps      = MMC_MODE_4BIT,
-       .voltages       = MMC_VDD_32_33 | MMC_VDD_33_34,
-       .version        = MMC_CTLR_VERSION_1,
-};
-#endif
-
-int board_mmc_init(bd_t *bis)
-{
-       int err;
-
-       /* Add slot-0 to mmc subsystem */
-       err = davinci_mmc_init(bis, &mmc_sd0);
-       if (err)
-               return err;
-
-#ifdef CONFIG_DAVINCI_MMC_SD1
-       /* Add slot-1 to mmc subsystem */
-       err = davinci_mmc_init(bis, &mmc_sd1);
-#endif
-
-       return err;
-}
-#endif
diff --git a/board/davinci/dm355leopard/Kconfig b/board/davinci/dm355leopard/Kconfig
deleted file mode 100644 (file)
index ab4230a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DAVINCI_DM355LEOPARD
-
-config SYS_BOARD
-       default "dm355leopard"
-
-config SYS_VENDOR
-       default "davinci"
-
-config SYS_CONFIG_NAME
-       default "davinci_dm355leopard"
-
-endif
diff --git a/board/davinci/dm355leopard/MAINTAINERS b/board/davinci/dm355leopard/MAINTAINERS
deleted file mode 100644 (file)
index ed04d43..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-DM355LEOPARD BOARD
-#M:    Sandeep Paulraj <s-paulraj@ti.com>
-S:     Orphan (since 2014-08)
-F:     board/davinci/dm355leopard/
-F:     include/configs/davinci_dm355leopard.h
-F:     configs/davinci_dm355leopard_defconfig
diff --git a/board/davinci/dm355leopard/Makefile b/board/davinci/dm355leopard/Makefile
deleted file mode 100644 (file)
index 7035429..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := dm355leopard.o
diff --git a/board/davinci/dm355leopard/config.mk b/board/davinci/dm355leopard/config.mk
deleted file mode 100644 (file)
index 28ff3f3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-# Linux Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-#
-
-#Provide at least 16MB spacing between us and the Linux Kernel image
-CONFIG_SYS_TEXT_BASE = 0x81080000
diff --git a/board/davinci/dm355leopard/dm355leopard.c b/board/davinci/dm355leopard/dm355leopard.c
deleted file mode 100644 (file)
index 53902f9..0000000
+++ /dev/null
@@ -1,86 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Incorporated
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <nand.h>
-#include <asm/io.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/gpio.h>
-#include <asm/ti-common/davinci_nand.h>
-#include <asm/arch/davinci_misc.h>
-#include <net.h>
-#include <netdev.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init(void)
-{
-       struct davinci_gpio *gpio01_base =
-                       (struct davinci_gpio *)DAVINCI_GPIO_BANK01;
-       struct davinci_gpio *gpio23_base =
-                       (struct davinci_gpio *)DAVINCI_GPIO_BANK23;
-       struct davinci_gpio *gpio67_base =
-                       (struct davinci_gpio *)DAVINCI_GPIO_BANK67;
-
-       gd->bd->bi_arch_number = MACH_TYPE_DM355_LEOPARD;
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-
-       /* GIO 9 & 10 are used for IO */
-       writel((readl(PINMUX3) & 0XF8FFFFFF), PINMUX3);
-
-       /* Interrupt set GIO 9 */
-       writel((readl(DAVINCI_GPIO_BINTEN) | 0x1), DAVINCI_GPIO_BINTEN);
-
-       /* set GIO 9 input */
-       writel((readl(&gpio01_base->dir) | (1 << 9)), &gpio01_base->dir);
-
-       /* Both edge trigger GIO 9 */
-       writel((readl(&gpio01_base->set_rising) | (1 << 9)),
-                                               &gpio01_base->set_rising);
-       writel((readl(&gpio01_base->dir) & ~(1 << 5)), &gpio01_base->dir);
-
-       /* output low */
-       writel((readl(&gpio01_base->set_data) & ~(1 << 5)),
-                                               &gpio01_base->set_data);
-
-       /* set GIO 10 output */
-       writel((readl(&gpio01_base->dir) & ~(1 << 10)), &gpio01_base->dir);
-
-       /* output high */
-       writel((readl(&gpio01_base->set_data) | (1 << 10)),
-                                               &gpio01_base->set_data);
-
-       /* set GIO 32 output */
-       writel((readl(&gpio23_base->dir) & ~(1 << 0)), &gpio23_base->dir);
-
-       /* output High */
-       writel((readl(&gpio23_base->set_data) | (1 << 0)),
-                                               &gpio23_base->set_data);
-
-       /* Enable UART1 MUX Lines */
-       writel((readl(PINMUX0) & ~3), PINMUX0);
-       writel((readl(&gpio67_base->dir) & ~(1 << 6)), &gpio67_base->dir);
-       writel((readl(&gpio67_base->set_data) | (1 << 6)),
-                                               &gpio67_base->set_data);
-
-       return 0;
-}
-
-#ifdef CONFIG_DRIVER_DM9000
-int board_eth_init(bd_t *bis)
-{
-       return dm9000_initialize(bis);
-}
-#endif
-
-#ifdef CONFIG_NAND_DAVINCI
-int board_nand_init(struct nand_chip *nand)
-{
-       davinci_nand_init(nand);
-
-       return 0;
-}
-#endif
diff --git a/board/davinci/dm365evm/Kconfig b/board/davinci/dm365evm/Kconfig
deleted file mode 100644 (file)
index 724c7b6..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DAVINCI_DM365EVM
-
-config SYS_BOARD
-       default "dm365evm"
-
-config SYS_VENDOR
-       default "davinci"
-
-config SYS_CONFIG_NAME
-       default "davinci_dm365evm"
-
-endif
diff --git a/board/davinci/dm365evm/MAINTAINERS b/board/davinci/dm365evm/MAINTAINERS
deleted file mode 100644 (file)
index 97c3ed3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-DM365EVM BOARD
-#M:    Sandeep Paulraj <s-paulraj@ti.com>
-S:     Orphan (since 2014-08)
-F:     board/davinci/dm365evm/
-F:     include/configs/davinci_dm365evm.h
-F:     configs/davinci_dm365evm_defconfig
diff --git a/board/davinci/dm365evm/Makefile b/board/davinci/dm365evm/Makefile
deleted file mode 100644 (file)
index d35d81c..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := dm365evm.o
diff --git a/board/davinci/dm365evm/config.mk b/board/davinci/dm365evm/config.mk
deleted file mode 100644 (file)
index 7b1e900..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# Spectrum Digital DM365 EVM board
-#      DM365 EVM board has 1 bank of 128 MB DDR RAM
-#      Physical Address: 8000'0000 to 8800'0000
-#
-# Linux Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-#
-
-#Provide at least 16MB spacing between us and the Linux Kernel image
-CONFIG_SYS_TEXT_BASE = 0x81080000
diff --git a/board/davinci/dm365evm/dm365evm.c b/board/davinci/dm365evm/dm365evm.c
deleted file mode 100644 (file)
index 24bec56..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Incorporated
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <nand.h>
-#include <asm/io.h>
-#include <asm/arch/hardware.h>
-#include <asm/ti-common/davinci_nand.h>
-#include <asm/arch/gpio.h>
-#include <netdev.h>
-#include <asm/arch/davinci_misc.h>
-#ifdef CONFIG_DAVINCI_MMC
-#include <mmc.h>
-#include <asm/arch/sdmmc_defs.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init(void)
-{
-       gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_DM365_EVM;
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-
-       return 0;
-}
-
-#ifdef CONFIG_DRIVER_TI_EMAC
-int board_eth_init(bd_t *bis)
-{
-       uint8_t eeprom_enetaddr[6];
-       int i;
-       struct davinci_gpio *gpio1_base =
-                       (struct davinci_gpio *)DAVINCI_GPIO_BANK01;
-
-       /* Configure PINMUX 3 to enable EMAC pins */
-       writel((readl(PINMUX3) | 0x1affff), PINMUX3);
-
-       /* Configure GPIO20 as output */
-       writel((readl(&gpio1_base->dir) & ~(1 << 20)), &gpio1_base->dir);
-
-       /* Toggle GPIO 20 */
-       for (i = 0; i < 20; i++) {
-               /* GPIO 20 low */
-               writel((readl(&gpio1_base->out_data) & ~(1 << 20)),
-                                               &gpio1_base->out_data);
-
-               udelay(1000);
-
-               /* GPIO 20 high */
-               writel((readl(&gpio1_base->out_data) | (1 << 20)),
-                                               &gpio1_base->out_data);
-       }
-
-       /* Configure I2C pins so that EEPROM can be read */
-       writel((readl(PINMUX3) | 0x01400000), PINMUX3);
-
-       /* Read Ethernet MAC address from EEPROM */
-       if (dvevm_read_mac_address(eeprom_enetaddr))
-               davinci_sync_env_enetaddr(eeprom_enetaddr);
-
-       davinci_emac_initialize();
-
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_NAND_DAVINCI
-static void nand_dm365evm_select_chip(struct mtd_info *mtd, int chip)
-{
-       struct nand_chip        *this = mtd->priv;
-       unsigned long           wbase = (unsigned long) this->IO_ADDR_W;
-       unsigned long           rbase = (unsigned long) this->IO_ADDR_R;
-
-       if (chip == 1) {
-               __set_bit(14, &wbase);
-               __set_bit(14, &rbase);
-       } else {
-               __clear_bit(14, &wbase);
-               __clear_bit(14, &rbase);
-       }
-       this->IO_ADDR_W = (void *)wbase;
-       this->IO_ADDR_R = (void *)rbase;
-}
-
-int board_nand_init(struct nand_chip *nand)
-{
-       davinci_nand_init(nand);
-       nand->select_chip = nand_dm365evm_select_chip;
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_DAVINCI_MMC
-static struct davinci_mmc mmc_sd0 = {
-       .reg_base       = (struct davinci_mmc_regs *)DAVINCI_MMC_SD0_BASE,
-       .input_clk      = 121500000,
-       .host_caps      = MMC_MODE_4BIT,
-       .voltages       = MMC_VDD_32_33 | MMC_VDD_33_34,
-       .version        = MMC_CTLR_VERSION_2,
-};
-
-#ifdef CONFIG_DAVINCI_MMC_SD1
-static struct davinci_mmc mmc_sd1 = {
-       .reg_base       = (struct davinci_mmc_regs *)DAVINCI_MMC_SD1_BASE,
-       .input_clk      = 121500000,
-       .host_caps      = MMC_MODE_4BIT,
-       .voltages       = MMC_VDD_32_33 | MMC_VDD_33_34,
-       .version        = MMC_CTLR_VERSION_2,
-};
-#endif
-
-int board_mmc_init(bd_t *bis)
-{
-       int err;
-
-       /* Add slot-0 to mmc subsystem */
-       err = davinci_mmc_init(bis, &mmc_sd0);
-       if (err)
-               return err;
-
-#ifdef CONFIG_DAVINCI_MMC_SD1
-#define PUPDCTL1               0x01c4007c
-       /* PINMUX(4)-DAT0-3/CMD;  PINMUX(0)-CLK */
-       writel((readl(PINMUX4) | 0x55400000), PINMUX4);
-       writel((readl(PINMUX0) | 0x00010000), PINMUX0);
-
-       /* Configure MMC/SD pins as pullup */
-       writel((readl(PUPDCTL1) & ~0x07c0), PUPDCTL1);
-
-       /* Add slot-1 to mmc subsystem */
-       err = davinci_mmc_init(bis, &mmc_sd1);
-#endif
-
-       return err;
-}
-#endif
diff --git a/board/davinci/dm6467evm/Kconfig b/board/davinci/dm6467evm/Kconfig
deleted file mode 100644 (file)
index 56d2ab4..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DAVINCI_DM6467EVM
-
-config SYS_BOARD
-       default "dm6467evm"
-
-config SYS_VENDOR
-       default "davinci"
-
-config SYS_CONFIG_NAME
-       default "davinci_dm6467evm"
-
-endif
diff --git a/board/davinci/dm6467evm/MAINTAINERS b/board/davinci/dm6467evm/MAINTAINERS
deleted file mode 100644 (file)
index 8ca53c4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-DM6467EVM BOARD
-#M:    Sandeep Paulraj <s-paulraj@ti.com>
-S:     Orphan (since 2014-08)
-F:     board/davinci/dm6467evm/
-F:     include/configs/davinci_dm6467evm.h
-F:     configs/davinci_dm6467evm_defconfig
-F:     configs/davinci_dm6467Tevm_defconfig
diff --git a/board/davinci/dm6467evm/Makefile b/board/davinci/dm6467evm/Makefile
deleted file mode 100644 (file)
index acbbdd5..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := dm6467evm.o
diff --git a/board/davinci/dm6467evm/config.mk b/board/davinci/dm6467evm/config.mk
deleted file mode 100644 (file)
index 3751043..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-#Provide at least 16MB spacing between us and the Linux Kernel image
-CONFIG_SYS_TEXT_BASE = 0x81080000
diff --git a/board/davinci/dm6467evm/dm6467evm.c b/board/davinci/dm6467evm/dm6467evm.c
deleted file mode 100644 (file)
index e51cc9e..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Incorporated
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <asm/io.h>
-#include <nand.h>
-#include <asm/arch/hardware.h>
-#include <asm/ti-common/davinci_nand.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define REV_DM6467EVM          0
-#define REV_DM6467TEVM         1
-/*
- * get_board_rev() - setup to pass kernel board revision information
- * Returns:
- * bit[0-3]    System clock frequency
- * 0000b       - 27 MHz
- * 0001b       - 33 MHz
- */
-u32 get_board_rev(void)
-{
-
-#ifdef CONFIG_DAVINCI_DM6467TEVM
-       return REV_DM6467TEVM;
-#else
-       return REV_DM6467EVM;
-#endif
-
-}
-
-int board_init(void)
-{
-       gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_DM6467_EVM;
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-
-       lpsc_on(DAVINCI_DM646X_LPSC_TIMER0);
-       lpsc_on(DAVINCI_DM646X_LPSC_UART0);
-       lpsc_on(DAVINCI_DM646X_LPSC_I2C);
-       lpsc_on(DAVINCI_DM646X_LPSC_EMAC);
-
-       /* Enable GIO3.3V cells used for EMAC */
-       REG(VDD3P3V_PWDN) = 0x80000c0;
-
-       /* Select UART function on UART0 */
-       REG(PINMUX0) &= ~(0x0000003f << 18);
-       REG(PINMUX1) &= ~(0x00000003);
-
-       return 0;
-}
-
-#if defined(CONFIG_DRIVER_TI_EMAC)
-
-int board_eth_init(bd_t *bis)
-{
-       if (!davinci_emac_initialize()) {
-               printf("Error: Ethernet init failed!\n");
-               return -1;
-       }
-
-       return 0;
-}
-#endif /* CONFIG_DRIVER_TI_EMAC */
-
-#ifdef CONFIG_NAND_DAVINCI
-int board_nand_init(struct nand_chip *nand)
-{
-       davinci_nand_init(nand);
-
-       return 0;
-}
-#endif
diff --git a/board/davinci/dvevm/Kconfig b/board/davinci/dvevm/Kconfig
deleted file mode 100644 (file)
index 3f0ef82..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DAVINCI_DVEVM
-
-config SYS_BOARD
-       default "dvevm"
-
-config SYS_VENDOR
-       default "davinci"
-
-config SYS_CONFIG_NAME
-       default "davinci_dvevm"
-
-endif
diff --git a/board/davinci/dvevm/MAINTAINERS b/board/davinci/dvevm/MAINTAINERS
deleted file mode 100644 (file)
index a718b90..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-DVEVM BOARD
-#M:    -
-S:     Maintained
-F:     board/davinci/dvevm/
-F:     include/configs/davinci_dvevm.h
-F:     configs/davinci_dvevm_defconfig
diff --git a/board/davinci/dvevm/Makefile b/board/davinci/dvevm/Makefile
deleted file mode 100644 (file)
index 7ade325..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := dvevm.o
-obj-y  += board_init.o
diff --git a/board/davinci/dvevm/board_init.S b/board/davinci/dvevm/board_init.S
deleted file mode 100644 (file)
index ded0590..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Board-specific low level initialization code. Called at the very end
- * of arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S. Just returns if there is no
- * initialization required.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-
-.globl dv_board_init
-dv_board_init:
-
-       mov     pc, lr
diff --git a/board/davinci/dvevm/config.mk b/board/davinci/dvevm/config.mk
deleted file mode 100644 (file)
index ed80707..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# (C) Copyright 2003
-# Texas Instruments, <www.ti.com>
-# Swaminathan <swami.iyer@ti.com>
-#
-# Davinci EVM board (ARM925EJS) cpu
-# see http://www.ti.com/ for more information on Texas Instruments
-#
-# Davinci EVM has 1 bank of 256 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 9000'0000
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# Visioneering Corp. Sonata board (ARM926EJS) cpu
-#
-# Sonata board has 1 bank of 128 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 8800'0000
-#
-# Razorstream, LLC. SCHMOOGIE board (ARM926EJS) cpu
-#
-# Schmoogie board has 1 bank of 128 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 8800'0000
-#
-# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-#
-# we load ourself to 8108 '0000
-#
-#
-
-#Provide at least 16MB spacing between us and the Linux Kernel image
-CONFIG_SYS_TEXT_BASE = 0x81080000
diff --git a/board/davinci/dvevm/dvevm.c b/board/davinci/dvevm/dvevm.c
deleted file mode 100644 (file)
index c34bde4..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Parts are shamelessly stolen from various TI sources, original copyright
- * follows:
- * -----------------------------------------------------------------
- *
- * Copyright (C) 2004 Texas Instruments.
- *
- * ----------------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- * ----------------------------------------------------------------------------
- */
-
-#include <common.h>
-#include <i2c.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/davinci_misc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init(void)
-{
-       /* arch number of the board */
-       gd->bd->bi_arch_number = MACH_TYPE_DAVINCI_EVM;
-
-       /* address of boot parameters */
-       gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
-
-       /* Configure AEMIF pins (although this should be configured at boot time
-        * with pull-up/pull-down resistors) */
-       REG(PINMUX0) = 0x00000c1f;
-
-       davinci_errata_workarounds();
-
-       /* Power on required peripherals */
-       lpsc_on(DAVINCI_LPSC_GPIO);
-       lpsc_on(DAVINCI_LPSC_USB);
-
-#if !defined(CONFIG_SYS_USE_DSPLINK)
-       /* Powerup the DSP */
-       dsp_on();
-#endif /* CONFIG_SYS_USE_DSPLINK */
-
-       davinci_enable_uart0();
-       davinci_enable_emac();
-       davinci_enable_i2c();
-
-       lpsc_on(DAVINCI_LPSC_TIMER1);
-       timer_init();
-
-       return(0);
-}
-
-int misc_init_r(void)
-{
-       uint8_t video_mode;
-       uint8_t eeprom_enetaddr[6];
-
-       /* Read Ethernet MAC address from EEPROM if available. */
-       if (dvevm_read_mac_address(eeprom_enetaddr))
-               davinci_sync_env_enetaddr(eeprom_enetaddr);
-
-       i2c_read(0x39, 0x00, 1, &video_mode, 1);
-
-       setenv("videostd", ((video_mode & 0x80) ? "pal" : "ntsc"));
-
-       return(0);
-}
-
-#ifdef CONFIG_USB_DAVINCI
-
-/* IO Expander I2C address and USB VBUS enable mask */
-#define IOEXP_I2C_ADDR 0x3A
-#define IOEXP_VBUSEN_MASK 1
-
-/*
- * This function enables USB VBUS by writting to IO expander using I2C.
- * Note that the I2C is already initialized at this stage. This
- * function is used by davinci specific USB wrapper code.
- */
-void enable_vbus(void)
-{
-       uchar data;  /* IO Expander data to enable VBUS */
-
-       /* Write to IO expander to enable VBUS */
-       i2c_read(IOEXP_I2C_ADDR, 0, 0, &data, 1);
-       data &= ~IOEXP_VBUSEN_MASK;
-       i2c_write(IOEXP_I2C_ADDR, 0, 0, &data, 1);
-}
-#endif
diff --git a/board/davinci/schmoogie/Kconfig b/board/davinci/schmoogie/Kconfig
deleted file mode 100644 (file)
index 3581075..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DAVINCI_SCHMOOGIE
-
-config SYS_BOARD
-       default "schmoogie"
-
-config SYS_VENDOR
-       default "davinci"
-
-config SYS_CONFIG_NAME
-       default "davinci_schmoogie"
-
-endif
diff --git a/board/davinci/schmoogie/MAINTAINERS b/board/davinci/schmoogie/MAINTAINERS
deleted file mode 100644 (file)
index 808e7fc..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SCHMOOGIE BOARD
-#M:    -
-S:     Maintained
-F:     board/davinci/schmoogie/
-F:     include/configs/davinci_schmoogie.h
-F:     configs/davinci_schmoogie_defconfig
diff --git a/board/davinci/schmoogie/Makefile b/board/davinci/schmoogie/Makefile
deleted file mode 100644 (file)
index e170d55..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := schmoogie.o
-obj-y  += board_init.o
diff --git a/board/davinci/schmoogie/board_init.S b/board/davinci/schmoogie/board_init.S
deleted file mode 100644 (file)
index ded0590..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Board-specific low level initialization code. Called at the very end
- * of arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S. Just returns if there is no
- * initialization required.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-
-.globl dv_board_init
-dv_board_init:
-
-       mov     pc, lr
diff --git a/board/davinci/schmoogie/config.mk b/board/davinci/schmoogie/config.mk
deleted file mode 100644 (file)
index ed80707..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# (C) Copyright 2003
-# Texas Instruments, <www.ti.com>
-# Swaminathan <swami.iyer@ti.com>
-#
-# Davinci EVM board (ARM925EJS) cpu
-# see http://www.ti.com/ for more information on Texas Instruments
-#
-# Davinci EVM has 1 bank of 256 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 9000'0000
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# Visioneering Corp. Sonata board (ARM926EJS) cpu
-#
-# Sonata board has 1 bank of 128 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 8800'0000
-#
-# Razorstream, LLC. SCHMOOGIE board (ARM926EJS) cpu
-#
-# Schmoogie board has 1 bank of 128 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 8800'0000
-#
-# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-#
-# we load ourself to 8108 '0000
-#
-#
-
-#Provide at least 16MB spacing between us and the Linux Kernel image
-CONFIG_SYS_TEXT_BASE = 0x81080000
diff --git a/board/davinci/schmoogie/schmoogie.c b/board/davinci/schmoogie/schmoogie.c
deleted file mode 100644 (file)
index 741afc4..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Parts are shamelessly stolen from various TI sources, original copyright
- * follows:
- * -----------------------------------------------------------------
- *
- * Copyright (C) 2004 Texas Instruments.
- *
- * ----------------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- * ----------------------------------------------------------------------------
- */
-
-#include <common.h>
-#include <i2c.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/davinci_misc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init(void)
-{
-       /* address of boot parameters */
-       gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
-
-       /* Configure AEMIF pins (although this should be configured at boot time
-        * with pull-up/pull-down resistors) */
-       REG(PINMUX0) = 0x00000c1f;
-
-       davinci_errata_workarounds();
-
-       /* Power on required peripherals */
-       lpsc_on(DAVINCI_LPSC_GPIO);
-
-#if !defined(CONFIG_SYS_USE_DSPLINK)
-       /* Powerup the DSP */
-       dsp_on();
-#endif /* CONFIG_SYS_USE_DSPLINK */
-
-       davinci_enable_uart0();
-       davinci_enable_emac();
-       davinci_enable_i2c();
-
-       lpsc_on(DAVINCI_LPSC_TIMER1);
-       timer_init();
-
-       return(0);
-}
-
-int misc_init_r(void)
-{
-       u_int8_t        tmp[20], buf[10];
-       int             i = 0;
-
-       /* Set serial number from UID chip */
-       const u_int8_t  crc_tbl[256] = {
-                       0x00, 0x5e, 0xbc, 0xe2, 0x61, 0x3f, 0xdd, 0x83,
-                       0xc2, 0x9c, 0x7e, 0x20, 0xa3, 0xfd, 0x1f, 0x41,
-                       0x9d, 0xc3, 0x21, 0x7f, 0xfc, 0xa2, 0x40, 0x1e,
-                       0x5f, 0x01, 0xe3, 0xbd, 0x3e, 0x60, 0x82, 0xdc,
-                       0x23, 0x7d, 0x9f, 0xc1, 0x42, 0x1c, 0xfe, 0xa0,
-                       0xe1, 0xbf, 0x5d, 0x03, 0x80, 0xde, 0x3c, 0x62,
-                       0xbe, 0xe0, 0x02, 0x5c, 0xdf, 0x81, 0x63, 0x3d,
-                       0x7c, 0x22, 0xc0, 0x9e, 0x1d, 0x43, 0xa1, 0xff,
-                       0x46, 0x18, 0xfa, 0xa4, 0x27, 0x79, 0x9b, 0xc5,
-                       0x84, 0xda, 0x38, 0x66, 0xe5, 0xbb, 0x59, 0x07,
-                       0xdb, 0x85, 0x67, 0x39, 0xba, 0xe4, 0x06, 0x58,
-                       0x19, 0x47, 0xa5, 0xfb, 0x78, 0x26, 0xc4, 0x9a,
-                       0x65, 0x3b, 0xd9, 0x87, 0x04, 0x5a, 0xb8, 0xe6,
-                       0xa7, 0xf9, 0x1b, 0x45, 0xc6, 0x98, 0x7a, 0x24,
-                       0xf8, 0xa6, 0x44, 0x1a, 0x99, 0xc7, 0x25, 0x7b,
-                       0x3a, 0x64, 0x86, 0xd8, 0x5b, 0x05, 0xe7, 0xb9,
-                       0x8c, 0xd2, 0x30, 0x6e, 0xed, 0xb3, 0x51, 0x0f,
-                       0x4e, 0x10, 0xf2, 0xac, 0x2f, 0x71, 0x93, 0xcd,
-                       0x11, 0x4f, 0xad, 0xf3, 0x70, 0x2e, 0xcc, 0x92,
-                       0xd3, 0x8d, 0x6f, 0x31, 0xb2, 0xec, 0x0e, 0x50,
-                       0xaf, 0xf1, 0x13, 0x4d, 0xce, 0x90, 0x72, 0x2c,
-                       0x6d, 0x33, 0xd1, 0x8f, 0x0c, 0x52, 0xb0, 0xee,
-                       0x32, 0x6c, 0x8e, 0xd0, 0x53, 0x0d, 0xef, 0xb1,
-                       0xf0, 0xae, 0x4c, 0x12, 0x91, 0xcf, 0x2d, 0x73,
-                       0xca, 0x94, 0x76, 0x28, 0xab, 0xf5, 0x17, 0x49,
-                       0x08, 0x56, 0xb4, 0xea, 0x69, 0x37, 0xd5, 0x8b,
-                       0x57, 0x09, 0xeb, 0xb5, 0x36, 0x68, 0x8a, 0xd4,
-                       0x95, 0xcb, 0x29, 0x77, 0xf4, 0xaa, 0x48, 0x16,
-                       0xe9, 0xb7, 0x55, 0x0b, 0x88, 0xd6, 0x34, 0x6a,
-                       0x2b, 0x75, 0x97, 0xc9, 0x4a, 0x14, 0xf6, 0xa8,
-                       0x74, 0x2a, 0xc8, 0x96, 0x15, 0x4b, 0xa9, 0xf7,
-                       0xb6, 0xe8, 0x0a, 0x54, 0xd7, 0x89, 0x6b, 0x35
-               };
-
-       /* Set serial number from UID chip */
-       if (i2c_read(CONFIG_SYS_UID_ADDR, 0, 1, buf, 8)) {
-               printf("\nUID @ 0x%02x read FAILED!!!\n", CONFIG_SYS_UID_ADDR);
-               setenv("serial#", "FAILED");
-       } else {
-               if (buf[0] != 0x70) {
-                       /* Device Family Code */
-                       printf("\nUID @ 0x%02x read FAILED!!!\n", CONFIG_SYS_UID_ADDR);
-                       setenv("serial#", "FAILED");
-               }
-       }
-       /* Now check CRC */
-       tmp[0] = 0;
-       for (i = 0; i < 8; i++)
-               tmp[0] = crc_tbl[tmp[0] ^ buf[i]];
-
-       if (tmp[0] != 0) {
-               printf("\nUID @ 0x%02x - BAD CRC!!!\n", CONFIG_SYS_UID_ADDR);
-               setenv("serial#", "FAILED");
-       } else {
-               /* CRC OK, set "serial" env variable */
-               sprintf((char *)&tmp[0], "%02x%02x%02x%02x%02x%02x",
-                       buf[6], buf[5], buf[4], buf[3], buf[2], buf[1]);
-               setenv("serial#", (char *)&tmp[0]);
-       }
-
-       return(0);
-}
diff --git a/board/davinci/sffsdr/Kconfig b/board/davinci/sffsdr/Kconfig
deleted file mode 100644 (file)
index dc48f31..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DAVINCI_SFFSDR
-
-config SYS_BOARD
-       default "sffsdr"
-
-config SYS_VENDOR
-       default "davinci"
-
-config SYS_CONFIG_NAME
-       default "davinci_sffsdr"
-
-endif
diff --git a/board/davinci/sffsdr/MAINTAINERS b/board/davinci/sffsdr/MAINTAINERS
deleted file mode 100644 (file)
index 5c7e132..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SFFSDR BOARD
-#M:    -
-S:     Maintained
-F:     board/davinci/sffsdr/
-F:     include/configs/davinci_sffsdr.h
-F:     configs/davinci_sffsdr_defconfig
diff --git a/board/davinci/sffsdr/Makefile b/board/davinci/sffsdr/Makefile
deleted file mode 100644 (file)
index 4ab30a4..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := sffsdr.o
-obj-y  += board_init.o
diff --git a/board/davinci/sffsdr/board_init.S b/board/davinci/sffsdr/board_init.S
deleted file mode 100644 (file)
index ded0590..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Board-specific low level initialization code. Called at the very end
- * of arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S. Just returns if there is no
- * initialization required.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-
-.globl dv_board_init
-dv_board_init:
-
-       mov     pc, lr
diff --git a/board/davinci/sffsdr/config.mk b/board/davinci/sffsdr/config.mk
deleted file mode 100644 (file)
index 4fe9007..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# Copyright (C) 2008 Lyrtech <www.lyrtech.com>
-# Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
-#
-# Lyrtech SFF SDR board (ARM926EJS) cpu
-#
-# SFF SDR board has 1 bank of 128 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 87FF'FFFF
-#
-# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-#
-# Integrity kernel is expected to be at 8000'0000, entry 8000'00D0,
-# up to 81FF'FFFF (uses up to 32 MB of memory for text, heap, etc).
-#
-# we load ourself to 8400'0000 to provide at least 32MB spacing
-# between us and the Integrity kernel image
-CONFIG_SYS_TEXT_BASE = 0x84000000
diff --git a/board/davinci/sffsdr/sffsdr.c b/board/davinci/sffsdr/sffsdr.c
deleted file mode 100644 (file)
index f6ab91e..0000000
+++ /dev/null
@@ -1,132 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Copyright (C) 2008 Lyrtech <www.lyrtech.com>
- * Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
- *
- * Parts are shamelessly stolen from various TI sources, original copyright
- * follows:
- *
- * Copyright (C) 2004 Texas Instruments.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <i2c.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/davinci_misc.h>
-
-#define DAVINCI_A3CR     (0x01E00014)  /* EMIF-A CS3 config register. */
-#define DAVINCI_A3CR_VAL (0x3FFFFFFD)  /* EMIF-A CS3 value for FPGA. */
-
-#define INTEGRITY_SYSCFG_OFFSET    0x7E8
-#define INTEGRITY_CHECKWORD_OFFSET 0x7F8
-#define INTEGRITY_CHECKWORD_VALUE  0x10ADBEEF
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init(void)
-{
-       /* arch number of the board */
-       gd->bd->bi_arch_number = MACH_TYPE_SFFSDR;
-
-       /* address of boot parameters */
-       gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
-
-       davinci_errata_workarounds();
-
-       /* Power on required peripherals */
-       lpsc_on(DAVINCI_LPSC_GPIO);
-
-#if !defined(CONFIG_SYS_USE_DSPLINK)
-       /* Powerup the DSP */
-       dsp_on();
-#endif /* CONFIG_SYS_USE_DSPLINK */
-
-       davinci_enable_uart0();
-       davinci_enable_emac();
-       davinci_enable_i2c();
-
-       lpsc_on(DAVINCI_LPSC_TIMER1);
-       timer_init();
-
-       return(0);
-}
-
-/* Read ethernet MAC address from Integrity data structure inside EEPROM.
- * Returns 1 if found, 0 otherwise.
- */
-static int sffsdr_read_mac_address(uint8_t *buf)
-{
-       u_int32_t value, mac[2], address;
-
-       /* Read Integrity data structure checkword. */
-       if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, INTEGRITY_CHECKWORD_OFFSET,
-                    CONFIG_SYS_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
-               goto err;
-       if (value != INTEGRITY_CHECKWORD_VALUE)
-               return 0;
-
-       /* Read SYSCFG structure offset. */
-       if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, INTEGRITY_SYSCFG_OFFSET,
-                    CONFIG_SYS_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
-               goto err;
-       address = 0x800 + (int) value; /* Address of SYSCFG structure. */
-
-       /* Read NET CONFIG structure offset. */
-       if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, address,
-                    CONFIG_SYS_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
-               goto err;
-       address = 0x800 + (int) value; /* Address of NET CONFIG structure. */
-       address += 12; /* Address of NET INTERFACE CONFIG structure. */
-
-       /* Read NET INTERFACE CONFIG 2 structure offset. */
-       if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, address,
-                    CONFIG_SYS_I2C_EEPROM_ADDR_LEN, (uint8_t *) &value, 4))
-               goto err;
-       address = 0x800 + 16 + (int) value;     /* Address of NET INTERFACE
-                                                * CONFIG 2 structure. */
-
-       /* Read MAC address. */
-       if (i2c_read(CONFIG_SYS_I2C_EEPROM_ADDR, address,
-                    CONFIG_SYS_I2C_EEPROM_ADDR_LEN, (uint8_t *) &mac[0], 8))
-               goto err;
-
-       buf[0] = mac[0] >> 24;
-       buf[1] = mac[0] >> 16;
-       buf[2] = mac[0] >> 8;
-       buf[3] = mac[0];
-       buf[4] = mac[1] >> 24;
-       buf[5] = mac[1] >> 16;
-
-       return 1; /* Found */
-
-err:
-       printf("Read from EEPROM @ 0x%02x failed\n", CONFIG_SYS_I2C_EEPROM_ADDR);
-       return 0;
-}
-
-/* Platform dependent initialisation. */
-int misc_init_r(void)
-{
-       uint8_t i2cbuf;
-       uint8_t eeprom_enetaddr[6];
-
-       /* EMIF-A CS3 configuration for FPGA. */
-       REG(DAVINCI_A3CR) = DAVINCI_A3CR_VAL;
-
-       /* Configure I2C switch (PCA9543) to enable channel 0. */
-       i2cbuf = CONFIG_SYS_I2C_PCA9543_ENABLE_CH0;
-       if (i2c_write(CONFIG_SYS_I2C_PCA9543_ADDR, 0,
-                     CONFIG_SYS_I2C_PCA9543_ADDR_LEN, &i2cbuf, 1)) {
-               printf("Write to MUX @ 0x%02x failed\n", CONFIG_SYS_I2C_PCA9543_ADDR);
-               return 1;
-       }
-
-       /* Read Ethernet MAC address from EEPROM if available. */
-       if (sffsdr_read_mac_address(eeprom_enetaddr))
-               davinci_sync_env_enetaddr(eeprom_enetaddr);
-
-       return(0);
-}
diff --git a/board/davinci/sonata/Kconfig b/board/davinci/sonata/Kconfig
deleted file mode 100644 (file)
index 4440d95..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_DAVINCI_SONATA
-
-config SYS_BOARD
-       default "sonata"
-
-config SYS_VENDOR
-       default "davinci"
-
-config SYS_CONFIG_NAME
-       default "davinci_sonata"
-
-endif
diff --git a/board/davinci/sonata/MAINTAINERS b/board/davinci/sonata/MAINTAINERS
deleted file mode 100644 (file)
index 40659e5..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SONATA BOARD
-#M:    -
-S:     Maintained
-F:     board/davinci/sonata/
-F:     include/configs/davinci_sonata.h
-F:     configs/davinci_sonata_defconfig
diff --git a/board/davinci/sonata/Makefile b/board/davinci/sonata/Makefile
deleted file mode 100644 (file)
index 92e1a18..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := sonata.o
-obj-y  += board_init.o
diff --git a/board/davinci/sonata/board_init.S b/board/davinci/sonata/board_init.S
deleted file mode 100644 (file)
index 0a47ad5..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Board-specific low level initialization code. Called at the very end
- * of arch/arm/cpu/arm926ejs/davinci/lowlevel_init.S. Just returns if there is no
- * initialization required.
- *
- * For _OLDER_ Sonata boards sets up GPIO4 to control NAND WP line. Newer
- * Sonata boards, AFAIK, don't use this so it's just return by default. Ask
- * Visioneering if they reinvented the wheel once again to make sure :)
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-
-.globl dv_board_init
-dv_board_init:
-#ifdef SONATA_BOARD_GPIOWP
-       /* Set PINMUX0 to enable GPIO4 */
-       ldr     r0, _PINMUX0
-       ldr     r1, GPIO4_EN_MASK
-       ldr     r2, [r0]
-       and     r2, r2, r1
-       str     r2, [r0]
-
-       /* Enable GPIO LPSC module */
-       ldr     r0, PTSTAT
-
-gpio_ptstat_loop1:
-       ldr     r2, [r0]
-       tst     r2, $0x00000001
-       bne     gpio_ptstat_loop1
-
-       ldr     r1, MDCTL_GPIO
-       ldr     r2, [r1]
-       and     r2, r2, $0xfffffff8
-       orr     r2, r2, $0x00000003
-       str     r2, [r1]
-
-       orr     r2, r2, $0x00000200
-       str     r2, [r1]
-
-       ldr     r1, PTCMD
-       mov     r2, $0x00000001
-       str     r2, [r1]
-
-gpio_ptstat_loop2:
-       ldr     r2, [r0]
-       tst     r2, $0x00000001
-       bne     gpio_ptstat_loop2
-
-       ldr     r0, MDSTAT_GPIO
-gpio_mdstat_loop:
-       ldr     r2, [r0]
-       and     r2, r2, $0x0000001f
-       teq     r2, $0x00000003
-       bne     gpio_mdstat_loop
-
-       /* GPIO4 -> output */
-       ldr     r0, GPIO_DIR01
-       mov     r1, $0x10
-       ldr     r2, [r0]
-       bic     r2, r2, r0
-       str     r2, [r0]
-
-       /* Set it to 0 (Write Protect) */
-       ldr     r0, GPIO_CLR_DATA01
-       str     r1, [r0]
-#endif
-
-       mov     pc, lr
-
-#ifdef SONATA_BOARD_GPIOWP
-.ltorg
-
-GPIO4_EN_MASK:
-       .word   0xf77fffff
-MDCTL_GPIO:
-       .word   0x01c41a68
-MDSTAT_GPIO:
-       .word   0x01c41868
-GPIO_DIR01:
-       .word   0x01c67010
-GPIO_CLR_DATA01:
-       .word   0x01c6701c
-#endif
diff --git a/board/davinci/sonata/config.mk b/board/davinci/sonata/config.mk
deleted file mode 100644 (file)
index ed80707..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#
-# (C) Copyright 2002
-# Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
-# David Mueller, ELSOFT AG, <d.mueller@elsoft.ch>
-#
-# (C) Copyright 2003
-# Texas Instruments, <www.ti.com>
-# Swaminathan <swami.iyer@ti.com>
-#
-# Davinci EVM board (ARM925EJS) cpu
-# see http://www.ti.com/ for more information on Texas Instruments
-#
-# Davinci EVM has 1 bank of 256 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 9000'0000
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# Visioneering Corp. Sonata board (ARM926EJS) cpu
-#
-# Sonata board has 1 bank of 128 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 8800'0000
-#
-# Razorstream, LLC. SCHMOOGIE board (ARM926EJS) cpu
-#
-# Schmoogie board has 1 bank of 128 MB DDR RAM
-# Physical Address:
-# 8000'0000 to 8800'0000
-#
-# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-#
-# we load ourself to 8108 '0000
-#
-#
-
-#Provide at least 16MB spacing between us and the Linux Kernel image
-CONFIG_SYS_TEXT_BASE = 0x81080000
diff --git a/board/davinci/sonata/sonata.c b/board/davinci/sonata/sonata.c
deleted file mode 100644 (file)
index f5c3258..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Parts are shamelessly stolen from various TI sources, original copyright
- * follows:
- * -----------------------------------------------------------------
- *
- * Copyright (C) 2004 Texas Instruments.
- *
- * ----------------------------------------------------------------------------
- * SPDX-License-Identifier:    GPL-2.0+
- * ----------------------------------------------------------------------------
- */
-
-#include <common.h>
-#include <nand.h>
-#include <asm/ti-common/davinci_nand.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/davinci_misc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init(void)
-{
-       /* address of boot parameters */
-       gd->bd->bi_boot_params = LINUX_BOOT_PARAM_ADDR;
-
-       /* Configure AEMIF pins (although this should be configured at boot time
-        * with pull-up/pull-down resistors) */
-       REG(PINMUX0) = 0x00000c1f;
-
-       davinci_errata_workarounds();
-
-       /* Power on required peripherals */
-       lpsc_on(DAVINCI_LPSC_GPIO);
-
-#if !defined(CONFIG_SYS_USE_DSPLINK)
-       /* Powerup the DSP */
-       dsp_on();
-#endif /* CONFIG_SYS_USE_DSPLINK */
-
-       davinci_enable_uart0();
-       davinci_enable_emac();
-       davinci_enable_i2c();
-
-       lpsc_on(DAVINCI_LPSC_TIMER1);
-       timer_init();
-
-       return(0);
-}
-
-int misc_init_r(void)
-{
-       uint8_t eeprom_enetaddr[6];
-
-       /* Read Ethernet MAC address from EEPROM if available. */
-       if (dvevm_read_mac_address(eeprom_enetaddr))
-               davinci_sync_env_enetaddr(eeprom_enetaddr);
-
-       return(0);
-}
-
-#ifdef CONFIG_NAND_DAVINCI
-
-/* Set WP on deselect, write enable on select */
-static void nand_sonata_select_chip(struct mtd_info *mtd, int chip)
-{
-#define GPIO_SET_DATA01        0x01c67018
-#define GPIO_CLR_DATA01        0x01c6701c
-#define GPIO_NAND_WP   (1 << 4)
-#ifdef SONATA_BOARD_GPIOWP
-       if (chip < 0) {
-               REG(GPIO_CLR_DATA01) |= GPIO_NAND_WP;
-       } else {
-               REG(GPIO_SET_DATA01) |= GPIO_NAND_WP;
-       }
-#endif
-}
-
-int board_nand_init(struct nand_chip *nand)
-{
-       davinci_nand_init(nand);
-       nand->select_chip = nand_sonata_select_chip;
-       return 0;
-}
-
-#endif /* CONFIG_NAND_DAVINCI */
diff --git a/board/denx/mcvevk/MAINTAINERS b/board/denx/mcvevk/MAINTAINERS
new file mode 100644 (file)
index 0000000..6787727
--- /dev/null
@@ -0,0 +1,5 @@
+SOCKIT BOARD
+M:     Marek Vasut <marex@denx.de>
+S:     Maintained
+F:     include/configs/socfpga_mcvevk.h
+F:     configs/socfpga_mcvevk_defconfig
diff --git a/board/denx/mcvevk/Makefile b/board/denx/mcvevk/Makefile
new file mode 100644 (file)
index 0000000..86f9b78
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# (C) Copyright 2001-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+# (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := socfpga.o
diff --git a/board/denx/mcvevk/qts/iocsr_config.h b/board/denx/mcvevk/qts/iocsr_config.h
new file mode 100644 (file)
index 0000000..3021830
--- /dev/null
@@ -0,0 +1,660 @@
+/*
+ * Altera SoCFPGA IOCSR configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_IOCSR_CONFIG_H__
+#define __SOCFPGA_IOCSR_CONFIG_H__
+
+#define CONFIG_HPS_IOCSR_SCANCHAIN0_LENGTH     764
+#define CONFIG_HPS_IOCSR_SCANCHAIN1_LENGTH     1719
+#define CONFIG_HPS_IOCSR_SCANCHAIN2_LENGTH     955
+#define CONFIG_HPS_IOCSR_SCANCHAIN3_LENGTH     16766
+
+const unsigned long iocsr_scan_chain0_table[] = {
+       0x00000000,
+       0x00000000,
+       0x0FF00000,
+       0xC0000000,
+       0x0000003F,
+       0x00008000,
+       0x00000000,
+       0x18060000,
+       0x00000060,
+       0x00000000,
+       0x00000000,
+       0x00004000,
+       0x0C0300C0,
+       0x00000000,
+       0x0C000000,
+       0x0000C030,
+       0x0000C030,
+       0x00002000,
+       0x06018060,
+       0x06018000,
+       0x06000018,
+       0x00006018,
+       0x01806018,
+       0x00001000,
+};
+
+const unsigned long iocsr_scan_chain1_table[] = {
+       0x000C0300,
+       0x300C0000,
+       0x300000C0,
+       0x000000C0,
+       0x000300C0,
+       0x00008000,
+       0x00060180,
+       0x18060000,
+       0x18000000,
+       0x00000060,
+       0x00018060,
+       0x00004000,
+       0x000300C0,
+       0x0C030000,
+       0x0C000000,
+       0x00000030,
+       0x0000C030,
+       0x00002000,
+       0x00018060,
+       0x06018000,
+       0x01FE0000,
+       0xF8000000,
+       0x00000007,
+       0x00001000,
+       0x0300C030,
+       0x00000000,
+       0x03000000,
+       0x0000000C,
+       0x00000000,
+       0x00000800,
+       0x00006018,
+       0x01806000,
+       0x00000000,
+       0x00000000,
+       0x00001806,
+       0x00000400,
+       0x0000300C,
+       0x00C03000,
+       0x00C00000,
+       0x00000003,
+       0x00000C03,
+       0x00000200,
+       0x00001806,
+       0x00601800,
+       0x80600000,
+       0x80000001,
+       0x00000601,
+       0x00000100,
+       0x00001000,
+       0x00300C00,
+       0xC0300000,
+       0xC0000000,
+       0x00000300,
+       0x00000080,
+};
+
+const unsigned long iocsr_scan_chain2_table[] = {
+       0x300C0300,
+       0x00000000,
+       0x0FF00000,
+       0x00000000,
+       0x0C0300C0,
+       0x00008000,
+       0x00060180,
+       0x00000000,
+       0x18000000,
+       0x00018060,
+       0x06018060,
+       0x00004000,
+       0x200300C0,
+       0x0C030000,
+       0x0C000000,
+       0x00000030,
+       0x0000C030,
+       0x00002000,
+       0x00018060,
+       0x00000000,
+       0x06000000,
+       0x00010018,
+       0x01806018,
+       0x00001000,
+       0x0000C030,
+       0x00000000,
+       0x03000000,
+       0x0000000C,
+       0x00C0300C,
+       0x00000800,
+};
+
+const unsigned long iocsr_scan_chain3_table[] = {
+       0x0C420D80,
+       0x0C3000FF,
+       0x0A804001,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0x0A800000,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0x20430000,
+       0x0C003001,
+       0x00C00481,
+       0x00000000,
+       0x00000021,
+       0x82000004,
+       0x05400000,
+       0x03C80000,
+       0x04010000,
+       0x00080000,
+       0x05400000,
+       0x03C80000,
+       0x05400000,
+       0x03C80000,
+       0x90218000,
+       0x86001800,
+       0x00600240,
+       0x80090218,
+       0x00000001,
+       0x40000002,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x4810C000,
+       0x43000C00,
+       0x00300120,
+       0xC004810C,
+       0x12043000,
+       0x20000300,
+       0x00040000,
+       0x50670000,
+       0x00000010,
+       0x24590000,
+       0x00001000,
+       0xA0000034,
+       0x0D000001,
+       0xC0680A28,
+       0x45034030,
+       0x12481A01,
+       0x80A280D0,
+       0x34030C06,
+       0x01A01450,
+       0x280D0000,
+       0x30C0680A,
+       0x02490340,
+       0xD000001A,
+       0x0680A280,
+       0x10040000,
+       0x00200000,
+       0x10040000,
+       0x00200000,
+       0x15000000,
+       0x0F200000,
+       0x15000000,
+       0x0F200000,
+       0x01FE0000,
+       0x18000000,
+       0x01800902,
+       0x00240860,
+       0x007F8006,
+       0x00000000,
+       0x0A800001,
+       0x07900000,
+       0x0A800000,
+       0x07900000,
+       0x0A800000,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0x20430000,
+       0x0C003001,
+       0x00C00481,
+       0x00000FF0,
+       0x4810C000,
+       0x80000C00,
+       0x05400000,
+       0x02480000,
+       0x04000000,
+       0x00080000,
+       0x05400000,
+       0x03C80000,
+       0x05400000,
+       0x03C80000,
+       0x90218000,
+       0x86001800,
+       0x00600240,
+       0x80090218,
+       0x24086001,
+       0x40000600,
+       0x02A00040,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x4810C000,
+       0x43000C00,
+       0x00300120,
+       0xC004810C,
+       0x12043000,
+       0x20000300,
+       0x00040000,
+       0x50670000,
+       0x00000010,
+       0x24590000,
+       0x00001000,
+       0xA0000034,
+       0x0D000001,
+       0xC0680A28,
+       0x49034030,
+       0x12481A02,
+       0x80A280D0,
+       0x34030C06,
+       0x01A00040,
+       0x280D0002,
+       0x30C0680A,
+       0x02490340,
+       0xD00A281A,
+       0x0680A280,
+       0x10040000,
+       0x00200000,
+       0x10040000,
+       0x00200000,
+       0x15000000,
+       0x0F200000,
+       0x15000000,
+       0x0F200000,
+       0x01FE0000,
+       0x18000000,
+       0x01800902,
+       0x00240860,
+       0x007F8006,
+       0x00000000,
+       0x99300001,
+       0x34343400,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A890,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x01000000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x0002A000,
+       0x0001E400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0x2043090C,
+       0x00003001,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA24,
+       0x2A835000,
+       0x0070EA00,
+       0x00010040,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00002000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x18864000,
+       0x49247A06,
+       0x9A28A3D7,
+       0xF511451E,
+       0x0356E388,
+       0x821A0000,
+       0x0000D000,
+       0x05140680,
+       0xD749247A,
+       0x1E9A28A3,
+       0x88F51145,
+       0x00034EE3,
+       0x00080000,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x00000000,
+       0x00000010,
+       0x0080C000,
+       0x41000000,
+       0x00003FC2,
+       0x00820000,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A890,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040000,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00800000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x00020080,
+       0x00000400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0x0000090C,
+       0x00000010,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA24,
+       0x2A835000,
+       0x0070EA00,
+       0x00015000,
+       0x0000F200,
+       0x00000000,
+       0x00000482,
+       0x86120800,
+       0x00600240,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x18864000,
+       0x49247A06,
+       0xEBCF23D7,
+       0xF611451E,
+       0x034E9248,
+       0x821A038E,
+       0x0000D000,
+       0x00000680,
+       0xD749247A,
+       0x1E9BCF23,
+       0x88F61145,
+       0x00034EE3,
+       0x00080000,
+       0x00001000,
+       0x00080000,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x00000000,
+       0x00000010,
+       0x0080C000,
+       0x41000000,
+       0x00000002,
+       0x00820004,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A890,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040000,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00800000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x0002A000,
+       0x0001E400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0x2043090C,
+       0x00003001,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00010000,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00200000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x18864000,
+       0x49247A06,
+       0x9A28A3D7,
+       0xF431451E,
+       0x034E9248,
+       0x821A0000,
+       0x0000D000,
+       0x00000680,
+       0xD749247A,
+       0x1E9A28A3,
+       0x88F61145,
+       0x000356E3,
+       0x00080000,
+       0x00001000,
+       0x00080000,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x00000000,
+       0x00000010,
+       0x0080C000,
+       0x41000000,
+       0x00000002,
+       0x00820004,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040000,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00800000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x00020000,
+       0x00000400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0x0000090C,
+       0x00001000,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00010040,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00400000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F1690D,
+       0x1A041414,
+       0x00D00000,
+       0x08864000,
+       0x49247A02,
+       0xEBCF23DB,
+       0xF431451E,
+       0x0356E388,
+       0x821A0000,
+       0x0000D000,
+       0x00000680,
+       0xD749247A,
+       0x1EEBCF23,
+       0x88F43E79,
+       0x000356A2,
+       0x00080000,
+       0x00001000,
+       0x00080000,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x00000000,
+       0x00000010,
+       0x0080C000,
+       0x41000000,
+       0x00000002,
+       0x00820004,
+       0x00489800,
+       0x801A1A1A,
+       0x00000200,
+       0x80000004,
+       0x00000200,
+       0x80000004,
+       0x00000200,
+       0x00000004,
+       0x00000200,
+       0x00000004,
+       0x00040000,
+       0x10000000,
+       0x00000000,
+       0x00004000,
+       0x00010000,
+       0x40002080,
+       0x00000100,
+       0x40000002,
+       0x00000100,
+       0x00000002,
+       0x00000100,
+       0x40000002,
+       0x00000100,
+       0x00000002,
+       0x00020000,
+       0x00000000,
+       0x00000008,
+       0x00000020,
+       0x00008000,
+       0x20001040,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x00000001,
+       0x00010000,
+       0x04000000,
+       0x00FF0000,
+       0x00000000,
+       0x00004000,
+       0x00000800,
+       0xC0000001,
+       0x00041419,
+       0x40000000,
+       0x04000816,
+       0x000D0000,
+       0x00006800,
+       0x00000340,
+       0xD000001A,
+       0x06800000,
+       0x00340000,
+       0x0001A000,
+       0x00000D00,
+       0x40000068,
+       0x1A000003,
+       0x00D00000,
+       0x00068000,
+       0x00003400,
+       0x000001A0,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x80000008,
+       0x0000007F,
+       0x20000000,
+       0x00000000,
+       0xE0000080,
+       0x0000001F,
+       0x00004000,
+};
+
+
+#endif /* __SOCFPGA_IOCSR_CONFIG_H__ */
diff --git a/board/denx/mcvevk/qts/pinmux_config.h b/board/denx/mcvevk/qts/pinmux_config.h
new file mode 100644 (file)
index 0000000..ea2f7ab
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * Altera SoCFPGA PinMux configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_PINMUX_CONFIG_H__
+#define __SOCFPGA_PINMUX_CONFIG_H__
+
+const u8 sys_mgr_init_table[] = {
+       3, /* EMACIO0 */
+       3, /* EMACIO1 */
+       3, /* EMACIO2 */
+       3, /* EMACIO3 */
+       3, /* EMACIO4 */
+       3, /* EMACIO5 */
+       3, /* EMACIO6 */
+       3, /* EMACIO7 */
+       3, /* EMACIO8 */
+       3, /* EMACIO9 */
+       3, /* EMACIO10 */
+       3, /* EMACIO11 */
+       3, /* EMACIO12 */
+       3, /* EMACIO13 */
+       0, /* EMACIO14 */
+       0, /* EMACIO15 */
+       0, /* EMACIO16 */
+       0, /* EMACIO17 */
+       0, /* EMACIO18 */
+       0, /* EMACIO19 */
+       3, /* FLASHIO0 */
+       0, /* FLASHIO1 */
+       3, /* FLASHIO2 */
+       3, /* FLASHIO3 */
+       3, /* FLASHIO4 */
+       3, /* FLASHIO5 */
+       3, /* FLASHIO6 */
+       3, /* FLASHIO7 */
+       0, /* FLASHIO8 */
+       3, /* FLASHIO9 */
+       3, /* FLASHIO10 */
+       3, /* FLASHIO11 */
+       0, /* GENERALIO0 */
+       1, /* GENERALIO1 */
+       1, /* GENERALIO2 */
+       0, /* GENERALIO3 */
+       0, /* GENERALIO4 */
+       1, /* GENERALIO5 */
+       1, /* GENERALIO6 */
+       1, /* GENERALIO7 */
+       1, /* GENERALIO8 */
+       0, /* GENERALIO9 */
+       0, /* GENERALIO10 */
+       0, /* GENERALIO11 */
+       0, /* GENERALIO12 */
+       2, /* GENERALIO13 */
+       2, /* GENERALIO14 */
+       1, /* GENERALIO15 */
+       1, /* GENERALIO16 */
+       1, /* GENERALIO17 */
+       1, /* GENERALIO18 */
+       0, /* GENERALIO19 */
+       0, /* GENERALIO20 */
+       0, /* GENERALIO21 */
+       0, /* GENERALIO22 */
+       0, /* GENERALIO23 */
+       0, /* GENERALIO24 */
+       0, /* GENERALIO25 */
+       0, /* GENERALIO26 */
+       0, /* GENERALIO27 */
+       0, /* GENERALIO28 */
+       0, /* GENERALIO29 */
+       0, /* GENERALIO30 */
+       0, /* GENERALIO31 */
+       0, /* MIXED1IO0 */
+       1, /* MIXED1IO1 */
+       1, /* MIXED1IO2 */
+       1, /* MIXED1IO3 */
+       1, /* MIXED1IO4 */
+       0, /* MIXED1IO5 */
+       0, /* MIXED1IO6 */
+       0, /* MIXED1IO7 */
+       1, /* MIXED1IO8 */
+       1, /* MIXED1IO9 */
+       1, /* MIXED1IO10 */
+       1, /* MIXED1IO11 */
+       0, /* MIXED1IO12 */
+       0, /* MIXED1IO13 */
+       0, /* MIXED1IO14 */
+       1, /* MIXED1IO15 */
+       1, /* MIXED1IO16 */
+       1, /* MIXED1IO17 */
+       1, /* MIXED1IO18 */
+       0, /* MIXED1IO19 */
+       0, /* MIXED1IO20 */
+       0, /* MIXED1IO21 */
+       0, /* MIXED2IO0 */
+       0, /* MIXED2IO1 */
+       0, /* MIXED2IO2 */
+       0, /* MIXED2IO3 */
+       0, /* MIXED2IO4 */
+       0, /* MIXED2IO5 */
+       0, /* MIXED2IO6 */
+       0, /* MIXED2IO7 */
+       0, /* GPLINMUX48 */
+       0, /* GPLINMUX49 */
+       0, /* GPLINMUX50 */
+       0, /* GPLINMUX51 */
+       0, /* GPLINMUX52 */
+       0, /* GPLINMUX53 */
+       0, /* GPLINMUX54 */
+       0, /* GPLINMUX55 */
+       0, /* GPLINMUX56 */
+       0, /* GPLINMUX57 */
+       0, /* GPLINMUX58 */
+       0, /* GPLINMUX59 */
+       0, /* GPLINMUX60 */
+       0, /* GPLINMUX61 */
+       0, /* GPLINMUX62 */
+       0, /* GPLINMUX63 */
+       0, /* GPLINMUX64 */
+       0, /* GPLINMUX65 */
+       0, /* GPLINMUX66 */
+       0, /* GPLINMUX67 */
+       0, /* GPLINMUX68 */
+       0, /* GPLINMUX69 */
+       0, /* GPLINMUX70 */
+       1, /* GPLMUX0 */
+       1, /* GPLMUX1 */
+       1, /* GPLMUX2 */
+       1, /* GPLMUX3 */
+       1, /* GPLMUX4 */
+       1, /* GPLMUX5 */
+       1, /* GPLMUX6 */
+       1, /* GPLMUX7 */
+       1, /* GPLMUX8 */
+       1, /* GPLMUX9 */
+       1, /* GPLMUX10 */
+       1, /* GPLMUX11 */
+       1, /* GPLMUX12 */
+       1, /* GPLMUX13 */
+       1, /* GPLMUX14 */
+       1, /* GPLMUX15 */
+       1, /* GPLMUX16 */
+       1, /* GPLMUX17 */
+       1, /* GPLMUX18 */
+       1, /* GPLMUX19 */
+       1, /* GPLMUX20 */
+       1, /* GPLMUX21 */
+       1, /* GPLMUX22 */
+       1, /* GPLMUX23 */
+       1, /* GPLMUX24 */
+       1, /* GPLMUX25 */
+       1, /* GPLMUX26 */
+       1, /* GPLMUX27 */
+       1, /* GPLMUX28 */
+       1, /* GPLMUX29 */
+       1, /* GPLMUX30 */
+       1, /* GPLMUX31 */
+       1, /* GPLMUX32 */
+       1, /* GPLMUX33 */
+       1, /* GPLMUX34 */
+       1, /* GPLMUX35 */
+       1, /* GPLMUX36 */
+       1, /* GPLMUX37 */
+       1, /* GPLMUX38 */
+       1, /* GPLMUX39 */
+       1, /* GPLMUX40 */
+       1, /* GPLMUX41 */
+       1, /* GPLMUX42 */
+       1, /* GPLMUX43 */
+       1, /* GPLMUX44 */
+       1, /* GPLMUX45 */
+       1, /* GPLMUX46 */
+       1, /* GPLMUX47 */
+       1, /* GPLMUX48 */
+       1, /* GPLMUX49 */
+       1, /* GPLMUX50 */
+       1, /* GPLMUX51 */
+       1, /* GPLMUX52 */
+       1, /* GPLMUX53 */
+       1, /* GPLMUX54 */
+       1, /* GPLMUX55 */
+       1, /* GPLMUX56 */
+       1, /* GPLMUX57 */
+       1, /* GPLMUX58 */
+       1, /* GPLMUX59 */
+       1, /* GPLMUX60 */
+       1, /* GPLMUX61 */
+       1, /* GPLMUX62 */
+       1, /* GPLMUX63 */
+       1, /* GPLMUX64 */
+       1, /* GPLMUX65 */
+       1, /* GPLMUX66 */
+       1, /* GPLMUX67 */
+       1, /* GPLMUX68 */
+       1, /* GPLMUX69 */
+       1, /* GPLMUX70 */
+       0, /* NANDUSEFPGA */
+       0, /* UART0USEFPGA */
+       0, /* RGMII1USEFPGA */
+       0, /* SPIS0USEFPGA */
+       0, /* CAN0USEFPGA */
+       0, /* I2C0USEFPGA */
+       0, /* SDMMCUSEFPGA */
+       0, /* QSPIUSEFPGA */
+       0, /* SPIS1USEFPGA */
+       0, /* RGMII0USEFPGA */
+       1, /* UART1USEFPGA */
+       0, /* CAN1USEFPGA */
+       0, /* USB1USEFPGA */
+       0, /* I2C3USEFPGA */
+       0, /* I2C2USEFPGA */
+       0, /* I2C1USEFPGA */
+       0, /* SPIM1USEFPGA */
+       0, /* USB0USEFPGA */
+       0 /* SPIM0USEFPGA */
+};
+#endif /* __SOCFPGA_PINMUX_CONFIG_H__ */
diff --git a/board/denx/mcvevk/qts/pll_config.h b/board/denx/mcvevk/qts/pll_config.h
new file mode 100644 (file)
index 0000000..b718b39
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Altera SoCFPGA Clock and PLL configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_PLL_CONFIG_H__
+#define __SOCFPGA_PLL_CONFIG_H__
+
+#define CONFIG_HPS_DBCTRL_STAYOSC1 1
+
+#define CONFIG_HPS_MAINPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_MAINPLLGRP_VCO_NUMER 63
+#define CONFIG_HPS_MAINPLLGRP_MPUCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_MAINCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_DBGATCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_MAINQSPICLK_CNT 511
+#define CONFIG_HPS_MAINPLLGRP_MAINNANDSDMMCCLK_CNT 511
+#define CONFIG_HPS_MAINPLLGRP_CFGS2FUSER0CLK_CNT 15
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L3MPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L3SPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L4MPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L4SPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_DBGDIV_DBGATCLK 0
+#define CONFIG_HPS_MAINPLLGRP_DBGDIV_DBGCLK 1
+#define CONFIG_HPS_MAINPLLGRP_TRACEDIV_TRACECLK 0
+#define CONFIG_HPS_MAINPLLGRP_L4SRC_L4MP 1
+#define CONFIG_HPS_MAINPLLGRP_L4SRC_L4SP 1
+
+#define CONFIG_HPS_PERPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_PERPLLGRP_VCO_NUMER 39
+#define CONFIG_HPS_PERPLLGRP_VCO_PSRC 0
+#define CONFIG_HPS_PERPLLGRP_EMAC0CLK_CNT 3
+#define CONFIG_HPS_PERPLLGRP_EMAC1CLK_CNT 511
+#define CONFIG_HPS_PERPLLGRP_PERQSPICLK_CNT 511
+#define CONFIG_HPS_PERPLLGRP_PERNANDSDMMCCLK_CNT 4
+#define CONFIG_HPS_PERPLLGRP_PERBASECLK_CNT 4
+#define CONFIG_HPS_PERPLLGRP_S2FUSER1CLK_CNT 511
+#define CONFIG_HPS_PERPLLGRP_DIV_USBCLK 0
+#define CONFIG_HPS_PERPLLGRP_DIV_SPIMCLK 0
+#define CONFIG_HPS_PERPLLGRP_DIV_CAN0CLK 1
+#define CONFIG_HPS_PERPLLGRP_DIV_CAN1CLK 1
+#define CONFIG_HPS_PERPLLGRP_GPIODIV_GPIODBCLK 6249
+#define CONFIG_HPS_PERPLLGRP_SRC_SDMMC 2
+#define CONFIG_HPS_PERPLLGRP_SRC_NAND 2
+#define CONFIG_HPS_PERPLLGRP_SRC_QSPI 1
+
+#define CONFIG_HPS_SDRPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_SDRPLLGRP_VCO_NUMER 31
+#define CONFIG_HPS_SDRPLLGRP_VCO_SSRC 0
+#define CONFIG_HPS_SDRPLLGRP_DDRDQSCLK_CNT 1
+#define CONFIG_HPS_SDRPLLGRP_DDRDQSCLK_PHASE 0
+#define CONFIG_HPS_SDRPLLGRP_DDR2XDQSCLK_CNT 0
+#define CONFIG_HPS_SDRPLLGRP_DDR2XDQSCLK_PHASE 0
+#define CONFIG_HPS_SDRPLLGRP_DDRDQCLK_CNT 1
+#define CONFIG_HPS_SDRPLLGRP_DDRDQCLK_PHASE 4
+#define CONFIG_HPS_SDRPLLGRP_S2FUSER2CLK_CNT 5
+#define CONFIG_HPS_SDRPLLGRP_S2FUSER2CLK_PHASE 0
+
+#define CONFIG_HPS_CLK_OSC1_HZ 25000000
+#define CONFIG_HPS_CLK_OSC2_HZ 25000000
+#define CONFIG_HPS_CLK_F2S_SDR_REF_HZ 0
+#define CONFIG_HPS_CLK_F2S_PER_REF_HZ 0
+#define CONFIG_HPS_CLK_MAINVCO_HZ 1600000000
+#define CONFIG_HPS_CLK_PERVCO_HZ 1000000000
+#define CONFIG_HPS_CLK_SDRVCO_HZ 800000000
+#define CONFIG_HPS_CLK_EMAC0_HZ 250000000
+#define CONFIG_HPS_CLK_EMAC1_HZ 1953125
+#define CONFIG_HPS_CLK_USBCLK_HZ 200000000
+#define CONFIG_HPS_CLK_NAND_HZ 50000000
+#define CONFIG_HPS_CLK_SDMMC_HZ 200000000
+#define CONFIG_HPS_CLK_QSPI_HZ 3125000
+#define CONFIG_HPS_CLK_SPIM_HZ 200000000
+#define CONFIG_HPS_CLK_CAN0_HZ 100000000
+#define CONFIG_HPS_CLK_CAN1_HZ 100000000
+#define CONFIG_HPS_CLK_GPIODB_HZ 32000
+#define CONFIG_HPS_CLK_L4_MP_HZ 100000000
+#define CONFIG_HPS_CLK_L4_SP_HZ 100000000
+
+#define CONFIG_HPS_ALTERAGRP_MPUCLK 1
+#define CONFIG_HPS_ALTERAGRP_MAINCLK 3
+#define CONFIG_HPS_ALTERAGRP_DBGATCLK 3
+
+
+#endif /* __SOCFPGA_PLL_CONFIG_H__ */
diff --git a/board/denx/mcvevk/qts/sdram_config.h b/board/denx/mcvevk/qts/sdram_config.h
new file mode 100644 (file)
index 0000000..30c4d7d
--- /dev/null
@@ -0,0 +1,341 @@
+/*
+ * Altera SoCFPGA SDRAM configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_SDRAM_CONFIG_H__
+#define __SOCFPGA_SDRAM_CONFIG_H__
+
+/* SDRAM configuration */
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTRDWR_CPORTRDWR             0x5A56A
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTRMAP_CPORTRMAP             0xB00088
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTWIDTH_CPORTWIDTH           0x44555
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTWMAP_CPORTWMAP             0x2C011000
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ADDRORDER               0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_DQSTRKEN                        0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCCORREN               0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCEN                   0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMBL                   8
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMTYPE                 2
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_NODMPINS                        0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_REORDEREN               1
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_STARVELIMIT             10
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLWIDTH_CTRLWIDTH             2
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_BANKBITS              3
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_COLBITS               10
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_CSBITS                        1
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_ROWBITS               15
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMDEVWIDTH_DEVWIDTH           8
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMIFWIDTH_IFWIDTH             32
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMINTR_INTREN                 0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMODT_READ                    0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMODT_WRITE                   1
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_AL                  0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TCL                 6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TCWL                        6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TFAW                        16
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TRFC                        140
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TRRD                        5
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TRCD             6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TREFI            1560
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TRP              6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TWR              6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TWTR             4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TCCD                        4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TMRD                        4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRAS                        14
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRC                 20
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRTP                        5
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING4_PWRDOWNEXIT         3
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING4_SELFRFSHEXIT                512
+#define CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_INCSYNC                 0
+#define CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_SYNCMODE                        0
+#define CONFIG_HPS_SDR_CTRLCFG_FPGAPORTRST                     0x0
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWREQ_SELFRFSHMASK           3
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWRTIMING_AUTOPDCYCLES       0
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWRTIMING_CLKDISABLECYCLES   8
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_0_THRESHOLD1_31_0      0x20820820
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD1_59_32     0x8208208
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD2_3_0       0
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_2_THRESHOLD2_35_4      0x41041041
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_3_THRESHOLD2_59_36     0x410410
+#define CONFIG_HPS_SDR_CTRLCFG_MPPRIORITY_USERPRIORITY         0x3FFD1088
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0        0x01010101
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32       0x01010101
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64       0x0101
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_0_STATICWEIGHT_31_0   0x21084210
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_STATICWEIGHT_49_32  0x1EF84
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_SUMOFWEIGHT_13_0    0x2020
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_2_SUMOFWEIGHT_45_14   0x0
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_3_SUMOFWEIGHT_63_46   0xF800
+#define CONFIG_HPS_SDR_CTRLCFG_PHYCTRL_PHYCTRL_0               0x200
+#define CONFIG_HPS_SDR_CTRLCFG_PORTCFG_AUTOPCHEN               0
+#define CONFIG_HPS_SDR_CTRLCFG_RFIFOCMAP_RFIFOCMAP             0x760210
+#define CONFIG_HPS_SDR_CTRLCFG_STATICCFG_MEMBL                 2
+#define CONFIG_HPS_SDR_CTRLCFG_STATICCFG_USEECCASDATA          0
+#define CONFIG_HPS_SDR_CTRLCFG_WFIFOCMAP_WFIFOCMAP             0x980543
+
+/* Sequencer auto configuration */
+#define RW_MGR_ACTIVATE_0_AND_1        0x0D
+#define RW_MGR_ACTIVATE_0_AND_1_WAIT1  0x0E
+#define RW_MGR_ACTIVATE_0_AND_1_WAIT2  0x10
+#define RW_MGR_ACTIVATE_1      0x0F
+#define RW_MGR_CLEAR_DQS_ENABLE        0x49
+#define RW_MGR_GUARANTEED_READ 0x4C
+#define RW_MGR_GUARANTEED_READ_CONT    0x54
+#define RW_MGR_GUARANTEED_WRITE        0x18
+#define RW_MGR_GUARANTEED_WRITE_WAIT0  0x1B
+#define RW_MGR_GUARANTEED_WRITE_WAIT1  0x1F
+#define RW_MGR_GUARANTEED_WRITE_WAIT2  0x19
+#define RW_MGR_GUARANTEED_WRITE_WAIT3  0x1D
+#define RW_MGR_IDLE    0x00
+#define RW_MGR_IDLE_LOOP1      0x7B
+#define RW_MGR_IDLE_LOOP2      0x7A
+#define RW_MGR_INIT_RESET_0_CKE_0      0x6F
+#define RW_MGR_INIT_RESET_1_CKE_0      0x74
+#define RW_MGR_LFSR_WR_RD_BANK_0       0x22
+#define RW_MGR_LFSR_WR_RD_BANK_0_DATA  0x25
+#define RW_MGR_LFSR_WR_RD_BANK_0_DQS   0x24
+#define RW_MGR_LFSR_WR_RD_BANK_0_NOP   0x23
+#define RW_MGR_LFSR_WR_RD_BANK_0_WAIT  0x32
+#define RW_MGR_LFSR_WR_RD_BANK_0_WL_1  0x21
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0    0x36
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_DATA       0x39
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_DQS        0x38
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_NOP        0x37
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_WAIT       0x46
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_WL_1       0x35
+#define RW_MGR_MRS0_DLL_RESET  0x02
+#define RW_MGR_MRS0_DLL_RESET_MIRR     0x08
+#define RW_MGR_MRS0_USER       0x07
+#define RW_MGR_MRS0_USER_MIRR  0x0C
+#define RW_MGR_MRS1    0x03
+#define RW_MGR_MRS1_MIRR       0x09
+#define RW_MGR_MRS2    0x04
+#define RW_MGR_MRS2_MIRR       0x0A
+#define RW_MGR_MRS3    0x05
+#define RW_MGR_MRS3_MIRR       0x0B
+#define RW_MGR_PRECHARGE_ALL   0x12
+#define RW_MGR_READ_B2B        0x59
+#define RW_MGR_READ_B2B_WAIT1  0x61
+#define RW_MGR_READ_B2B_WAIT2  0x6B
+#define RW_MGR_REFRESH_ALL     0x14
+#define RW_MGR_RETURN  0x01
+#define RW_MGR_SGLE_READ       0x7D
+#define RW_MGR_ZQCL    0x06
+
+/* Sequencer defines configuration */
+#define AFI_RATE_RATIO 1
+#define CALIB_LFIFO_OFFSET     7
+#define CALIB_VFIFO_OFFSET     5
+#define ENABLE_SUPER_QUICK_CALIBRATION 0
+#define IO_DELAY_PER_DCHAIN_TAP        25
+#define IO_DELAY_PER_DQS_EN_DCHAIN_TAP 25
+#define IO_DELAY_PER_OPA_TAP   312
+#define IO_DLL_CHAIN_LENGTH    8
+#define IO_DQDQS_OUT_PHASE_MAX 0
+#define IO_DQS_EN_DELAY_MAX    31
+#define IO_DQS_EN_DELAY_OFFSET 0
+#define IO_DQS_EN_PHASE_MAX    7
+#define IO_DQS_IN_DELAY_MAX    31
+#define IO_DQS_IN_RESERVE      4
+#define IO_DQS_OUT_RESERVE     4
+#define IO_IO_IN_DELAY_MAX     31
+#define IO_IO_OUT1_DELAY_MAX   31
+#define IO_IO_OUT2_DELAY_MAX   0
+#define IO_SHIFT_DQS_EN_WHEN_SHIFT_DQS 0
+#define MAX_LATENCY_COUNT_WIDTH        5
+#define READ_VALID_FIFO_SIZE   16
+#define REG_FILE_INIT_SEQ_SIGNATURE    0x55550496
+#define RW_MGR_MEM_ADDRESS_MIRRORING   0
+#define RW_MGR_MEM_DATA_MASK_WIDTH     4
+#define RW_MGR_MEM_DATA_WIDTH  32
+#define RW_MGR_MEM_DQ_PER_READ_DQS     8
+#define RW_MGR_MEM_DQ_PER_WRITE_DQS    8
+#define RW_MGR_MEM_IF_READ_DQS_WIDTH   4
+#define RW_MGR_MEM_IF_WRITE_DQS_WIDTH  4
+#define RW_MGR_MEM_NUMBER_OF_CS_PER_DIMM       1
+#define RW_MGR_MEM_NUMBER_OF_RANKS     1
+#define RW_MGR_MEM_VIRTUAL_GROUPS_PER_READ_DQS 1
+#define RW_MGR_MEM_VIRTUAL_GROUPS_PER_WRITE_DQS        1
+#define RW_MGR_TRUE_MEM_DATA_MASK_WIDTH        4
+#define TINIT_CNTR0_VAL        99
+#define TINIT_CNTR1_VAL        32
+#define TINIT_CNTR2_VAL        32
+#define TRESET_CNTR0_VAL       99
+#define TRESET_CNTR1_VAL       99
+#define TRESET_CNTR2_VAL       10
+
+/* Sequencer ac_rom_init configuration */
+const u32 ac_rom_init[] = {
+       0x20700000,
+       0x20780000,
+       0x10080421,
+       0x10080520,
+       0x10090044,
+       0x100a0008,
+       0x100b0000,
+       0x10380400,
+       0x10080441,
+       0x100804c0,
+       0x100a0024,
+       0x10090010,
+       0x100b0000,
+       0x30780000,
+       0x38780000,
+       0x30780000,
+       0x10680000,
+       0x106b0000,
+       0x10280400,
+       0x10480000,
+       0x1c980000,
+       0x1c9b0000,
+       0x1c980008,
+       0x1c9b0008,
+       0x38f80000,
+       0x3cf80000,
+       0x38780000,
+       0x18180000,
+       0x18980000,
+       0x13580000,
+       0x135b0000,
+       0x13580008,
+       0x135b0008,
+       0x33780000,
+       0x10580008,
+       0x10780000
+};
+
+/* Sequencer inst_rom_init configuration */
+const u32 inst_rom_init[] = {
+       0x80000,
+       0x80680,
+       0x8180,
+       0x8200,
+       0x8280,
+       0x8300,
+       0x8380,
+       0x8100,
+       0x8480,
+       0x8500,
+       0x8580,
+       0x8600,
+       0x8400,
+       0x800,
+       0x8680,
+       0x880,
+       0xa680,
+       0x80680,
+       0x900,
+       0x80680,
+       0x980,
+       0xa680,
+       0x8680,
+       0x80680,
+       0xb68,
+       0xcce8,
+       0xae8,
+       0x8ce8,
+       0xb88,
+       0xec88,
+       0xa08,
+       0xac88,
+       0x80680,
+       0xce00,
+       0xcd80,
+       0xe700,
+       0xc00,
+       0x20ce0,
+       0x20ce0,
+       0x20ce0,
+       0x20ce0,
+       0xd00,
+       0x680,
+       0x680,
+       0x680,
+       0x680,
+       0x60e80,
+       0x61080,
+       0x61080,
+       0x61080,
+       0xa680,
+       0x8680,
+       0x80680,
+       0xce00,
+       0xcd80,
+       0xe700,
+       0xc00,
+       0x30ce0,
+       0x30ce0,
+       0x30ce0,
+       0x30ce0,
+       0xd00,
+       0x680,
+       0x680,
+       0x680,
+       0x680,
+       0x70e80,
+       0x71080,
+       0x71080,
+       0x71080,
+       0xa680,
+       0x8680,
+       0x80680,
+       0x1158,
+       0x6d8,
+       0x80680,
+       0x1168,
+       0x7e8,
+       0x7e8,
+       0x87e8,
+       0x40fe8,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0x1168,
+       0x7e8,
+       0x7e8,
+       0xa7e8,
+       0x80680,
+       0x40e88,
+       0x41088,
+       0x41088,
+       0x41088,
+       0x40f68,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0xa680,
+       0x40fe8,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0x41008,
+       0x41088,
+       0x41088,
+       0x41088,
+       0x1100,
+       0xc680,
+       0x8680,
+       0xe680,
+       0x80680,
+       0x0,
+       0x8000,
+       0xa000,
+       0xc000,
+       0x80000,
+       0x80,
+       0x8080,
+       0xa080,
+       0xc080,
+       0x80080,
+       0x9180,
+       0x8680,
+       0xa680,
+       0x80680,
+       0x40f08,
+       0x80680
+};
+
+#endif /* __SOCFPGA_SDRAM_CONFIG_H__ */
diff --git a/board/denx/mcvevk/socfpga.c b/board/denx/mcvevk/socfpga.c
new file mode 100644 (file)
index 0000000..1a23a7d
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * Copyright (C) 2015 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/reset_manager.h>
+#include <asm/io.h>
+
+#include <usb.h>
+#include <usb/s3c_udc.h>
+#include <usb_mass_storage.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void s_init(void) {}
+
+/*
+ * Miscellaneous platform dependent initialisations
+ */
+int board_init(void)
+{
+       /* Address of boot parameters for ATAG (if ATAG is used) */
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+       return 0;
+}
+
+#ifdef CONFIG_USB_GADGET
+struct s3c_plat_otg_data socfpga_otg_data = {
+       .regs_otg       = CONFIG_USB_DWC2_REG_ADDR,
+       .usb_gusbcfg    = 0x1417,
+};
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+       return s3c_udc_probe(&socfpga_otg_data);
+}
+
+int g_dnl_board_usb_cable_connected(void)
+{
+       return 1;
+}
+#endif
index 53a39d31dd10bb215857ac059df034535dd7b4e4..24d01f226648bc9cde768064221724e2a8e42409 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "embest"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "embestmx6boards"
 
diff --git a/board/enbw/enbw_cmc/Kconfig b/board/enbw/enbw_cmc/Kconfig
deleted file mode 100644 (file)
index 796736d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_ENBW_CMC
-
-config SYS_BOARD
-       default "enbw_cmc"
-
-config SYS_VENDOR
-       default "enbw"
-
-config SYS_CONFIG_NAME
-       default "enbw_cmc"
-
-endif
diff --git a/board/enbw/enbw_cmc/MAINTAINERS b/board/enbw/enbw_cmc/MAINTAINERS
deleted file mode 100644 (file)
index f7c9920..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ENBW_CMC BOARD
-M:     Heiko Schocher <hs@denx.de>
-S:     Maintained
-F:     board/enbw/enbw_cmc/
-F:     include/configs/enbw_cmc.h
-F:     configs/enbw_cmc_defconfig
diff --git a/board/enbw/enbw_cmc/Makefile b/board/enbw/enbw_cmc/Makefile
deleted file mode 100644 (file)
index 054d6e7..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y   := enbw_cmc.o
diff --git a/board/enbw/enbw_cmc/enbw_cmc.c b/board/enbw/enbw_cmc/enbw_cmc.c
deleted file mode 100644 (file)
index 53b8362..0000000
+++ /dev/null
@@ -1,893 +0,0 @@
-/*
- * (C) Copyright 2011
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
- *
- * Based on da830evm.c. Original Copyrights follow:
- *
- * Copyright (C) 2009 Nick Thompson, GE Fanuc, Ltd. <nick.thompson@gefanuc.com>
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <environment.h>
-#include <hwconfig.h>
-#include <i2c.h>
-#include <malloc.h>
-#include <miiphy.h>
-#include <mmc.h>
-#include <net.h>
-#include <netdev.h>
-#include <spi.h>
-#include <linux/ctype.h>
-#include <asm/gpio.h>
-#include <asm/io.h>
-#include <asm/arch/da850_lowlevel.h>
-#include <asm/arch/davinci_misc.h>
-#include <asm/ti-common/davinci_nand.h>
-#include <asm/arch/emac_defs.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/pinmux_defs.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/sdmmc_defs.h>
-#include <asm/arch/timer_defs.h>
-#include <asm/davinci_rtc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-const struct lpsc_resource lpsc[] = {
-       { DAVINCI_LPSC_AEMIF },
-       { DAVINCI_LPSC_SPI1 },
-       { DAVINCI_LPSC_ARM_RAM_ROM },
-       { DAVINCI_LPSC_UART0 },
-       { DAVINCI_LPSC_EMAC },
-       { DAVINCI_LPSC_UART0 },
-       { DAVINCI_LPSC_GPIO },
-       { DAVINCI_LPSC_DDR_EMIF },
-       { DAVINCI_LPSC_UART1 },
-       { DAVINCI_LPSC_UART2 },
-       { DAVINCI_LPSC_MMC_SD1 },
-       { DAVINCI_LPSC_USB20 },
-       { DAVINCI_LPSC_USB11 },
-};
-
-const int lpsc_size = ARRAY_SIZE(lpsc);
-
-static const struct pinmux_config enbw_pins[] = {
-       { pinmux(0), 8, 0 },
-       { pinmux(0), 8, 1 },
-       { pinmux(0), 8, 2 },
-       { pinmux(0), 8, 3 },
-       { pinmux(0), 8, 4 },
-       { pinmux(0), 8, 5 },
-       { pinmux(1), 4, 0 },
-       { pinmux(1), 8, 1 },
-       { pinmux(1), 8, 2 },
-       { pinmux(1), 8, 3 },
-       { pinmux(1), 8, 4 },
-       { pinmux(1), 8, 5 },
-       { pinmux(1), 8, 6 },
-       { pinmux(1), 4, 7 },
-       { pinmux(2), 8, 0 },
-       { pinmux(5), 1, 0 },
-       { pinmux(5), 1, 3 },
-       { pinmux(5), 1, 7 },
-       { pinmux(5), 1, 5 },
-       { pinmux(5), 1, 4 },
-       { pinmux(5), 1, 3 },
-       { pinmux(5), 1, 2 },
-       { pinmux(5), 1, 1 },
-       { pinmux(5), 1, 0 },
-       { pinmux(6), 8, 0 },
-       { pinmux(6), 8, 1 },
-       { pinmux(6), 8, 2 },
-       { pinmux(6), 8, 3 },
-       { pinmux(6), 8, 4 },
-       { pinmux(6), 8, 5 },
-       { pinmux(6), 1, 7 },
-       { pinmux(7), 8, 2 },
-       { pinmux(7), 1, 3 },
-       { pinmux(7), 8, 6 },
-       { pinmux(7), 1, 7 },
-       { pinmux(13), 8, 2 },
-       { pinmux(13), 8, 3 },
-       { pinmux(13), 8, 4 },
-       { pinmux(13), 8, 5 },
-       { pinmux(13), 8, 6 },
-       { pinmux(13), 8, 7 },
-       { pinmux(14), 8, 0 },
-       { pinmux(14), 8, 1 },
-       { pinmux(16), 8, 1 },
-       { pinmux(16), 8, 2 },
-       { pinmux(16), 8, 3 },
-       { pinmux(16), 8, 4 },
-       { pinmux(16), 8, 5 },
-       { pinmux(16), 8, 6 },
-       { pinmux(16), 8, 7 },
-       { pinmux(17), 1, 0 },
-       { pinmux(17), 1, 1 },
-       { pinmux(17), 1, 2 },
-       { pinmux(17), 8, 3 },
-       { pinmux(17), 8, 4 },
-       { pinmux(17), 8, 5 },
-       { pinmux(17), 8, 6 },
-       { pinmux(17), 8, 7 },
-       { pinmux(18), 8, 0 },
-       { pinmux(18), 8, 1 },
-       { pinmux(18), 2, 2 },
-       { pinmux(18), 2, 3 },
-       { pinmux(18), 2, 4 },
-       { pinmux(18), 8, 6 },
-       { pinmux(18), 8, 7 },
-       { pinmux(19), 8, 0 },
-       { pinmux(19), 2, 1 },
-       { pinmux(19), 2, 2 },
-       { pinmux(19), 2, 3 },
-       { pinmux(19), 2, 4 },
-       { pinmux(19), 8, 5 },
-       { pinmux(19), 8, 6 },
-};
-
-const struct pinmux_resource pinmuxes[] = {
-       PINMUX_ITEM(emac_pins_mii),
-       PINMUX_ITEM(emac_pins_mdio),
-       PINMUX_ITEM(i2c0_pins),
-       PINMUX_ITEM(emifa_pins_cs2),
-       PINMUX_ITEM(emifa_pins_cs3),
-       PINMUX_ITEM(emifa_pins_cs4),
-       PINMUX_ITEM(emifa_pins_nand),
-       PINMUX_ITEM(emifa_pins_nor),
-       PINMUX_ITEM(spi1_pins_base),
-       PINMUX_ITEM(spi1_pins_scs0),
-       PINMUX_ITEM(uart1_pins_txrx),
-       PINMUX_ITEM(uart2_pins_txrx),
-       PINMUX_ITEM(uart2_pins_rtscts),
-       PINMUX_ITEM(enbw_pins),
-};
-
-const int pinmuxes_size = ARRAY_SIZE(pinmuxes);
-
-struct gpio_config {
-       char name[GPIO_NAME_SIZE];
-       unsigned char bank;
-       unsigned char gpio;
-       unsigned char out;
-       unsigned char value;
-};
-
-static const struct gpio_config enbw_gpio_config_hut[] = {
-       { "RS485 enable",       8, 11, 1, 0 },
-       { "RS485 iso",          8, 10, 1, 1 },
-       { "W2HUT RS485 Rx ena", 8,  9, 1, 0 },
-       { "W2HUT RS485 iso",    8,  8, 1, 1 },
-};
-
-static const struct gpio_config enbw_gpio_config_w[] = {
-       { "RS485 enable",       8, 11, 1, 0 },
-       { "RS485 iso",          8, 10, 1, 0 },
-       { "W2HUT RS485 Rx ena", 8,  9, 1, 0 },
-       { "W2HUT RS485 iso",    8,  8, 1, 0 },
-};
-
-static const struct gpio_config enbw_gpio_config[] = {
-       { "LAN reset",          7, 15, 1, 1 },
-       { "ena 11V PLC",        7, 14, 1, 0 },
-       { "ena 1.5V PLC",       7, 13, 1, 0 },
-       { "disable VBUS",       7, 12, 1, 1 },
-       { "PLC reset",          6, 13, 1, 0 },
-       { "LCM RS",             6, 12, 1, 0 },
-       { "LCM R/W",            6, 11, 1, 0 },
-       { "PLC pairing",        6, 10, 1, 1 },
-       { "PLC MDIO CLK",       6,  9, 1, 0 },
-       { "HK218",              6,  8, 1, 0 },
-       { "HK218 Rx",           6,  1, 1, 1 },
-       { "TPM reset",          6,  0, 1, 0 },
-       { "Board-Type",         3,  9, 0, 0 },
-       { "HW-ID0",             2,  7, 0, 0 },
-       { "HW-ID1",             2,  6, 0, 0 },
-       { "HW-ID2",             2,  3, 0, 0 },
-       { "PV-IF RxD ena",      0, 15, 1, 1 },
-       { "LED1",               1, 15, 1, 1 },
-       { "LED2",               0,  1, 1, 1 },
-       { "LED3",               0,  2, 1, 1 },
-       { "LED4",               0,  3, 1, 1 },
-       { "LED5",               0,  4, 1, 1 },
-       { "LED6",               0,  5, 1, 0 },
-       { "LED7",               0,  6, 1, 0 },
-       { "LED8",               0, 14, 1, 0 },
-       { "USER1",              0, 12, 0, 0 },
-       { "USER2",              0, 13, 0, 0 },
-};
-
-#define PHY_POWER      0x0800
-
-static void enbw_cmc_switch(int port, int on)
-{
-       const char      *devname;
-       unsigned char phyaddr = 3;
-       unsigned char   reg = 0;
-       unsigned short  data;
-
-       if (port == 1)
-               phyaddr = 2;
-
-       devname = miiphy_get_current_dev();
-       if (!devname) {
-               printf("Error: no mii device\n");
-               return;
-       }
-       if (miiphy_read(devname, phyaddr, reg, &data) != 0) {
-               printf("Error reading from the PHY addr=%02x reg=%02x\n",
-                       phyaddr, reg);
-               return;
-       }
-
-       if (on)
-               data &= ~PHY_POWER;
-       else
-               data |= PHY_POWER;
-
-       if (miiphy_write(devname, phyaddr, reg, data) != 0) {
-               printf("Error writing to the PHY addr=%02x reg=%02x\n",
-                       phyaddr, reg);
-               return;
-       }
-}
-
-static int enbw_cmc_init_gpio(const struct gpio_config *conf, int sz)
-{
-       int i, ret;
-
-       for (i = 0; i < sz; i++) {
-               int gpio = conf[i].bank * 16 +
-                       conf[i].gpio;
-
-               ret = gpio_request(gpio, conf[i].name);
-               if (ret) {
-                       printf("%s: Could not get %s gpio\n", __func__,
-                               conf[i].name);
-                       return ret;
-               }
-
-               if (conf[i].out)
-                       gpio_direction_output(gpio,
-                               conf[i].value);
-               else
-                       gpio_direction_input(gpio);
-       }
-
-       return 0;
-}
-
-int board_init(void)
-{
-       int board_type, hw_id;
-
-#ifndef CONFIG_USE_IRQ
-       irq_init();
-#endif
-       /* address of boot parameters, not used as booting with DTT */
-       gd->bd->bi_boot_params = 0;
-
-       enbw_cmc_init_gpio(enbw_gpio_config, ARRAY_SIZE(enbw_gpio_config));
-
-       /* detect HW version */
-       board_type = gpio_get_value(CONFIG_ENBW_CMC_BOARD_TYPE);
-       hw_id = gpio_get_value(CONFIG_ENBW_CMC_HW_ID_BIT0) +
-               (gpio_get_value(CONFIG_ENBW_CMC_HW_ID_BIT1) << 1) +
-               (gpio_get_value(CONFIG_ENBW_CMC_HW_ID_BIT2) << 2);
-       printf("BOARD: CMC-%s hw id: %d\n", (board_type ? "w2" : "hut"),
-               hw_id);
-       if (board_type)
-               enbw_cmc_init_gpio(enbw_gpio_config_w,
-                       ARRAY_SIZE(enbw_gpio_config_w));
-       else
-               enbw_cmc_init_gpio(enbw_gpio_config_hut,
-                       ARRAY_SIZE(enbw_gpio_config_hut));
-
-       /* setup the SUSPSRC for ARM to control emulation suspend */
-       clrbits_le32(&davinci_syscfg_regs->suspsrc,
-               (DAVINCI_SYSCFG_SUSPSRC_EMAC | DAVINCI_SYSCFG_SUSPSRC_I2C |
-               DAVINCI_SYSCFG_SUSPSRC_SPI1 | DAVINCI_SYSCFG_SUSPSRC_TIMER0 |
-               DAVINCI_SYSCFG_SUSPSRC_UART2));
-
-       return 0;
-}
-
-#ifdef CONFIG_DRIVER_TI_EMAC
-
-#define KSZ_CMD_READ   0x03
-#define KSZ_CMD_WRITE  0x02
-#define KSZ_ID         0x95
-
-static int enbw_cmc_switch_read(struct spi_slave *spi, u8 reg, u8 *val)
-{
-       unsigned long flags = SPI_XFER_BEGIN;
-       int ret;
-       int cmd_len;
-       u8 cmd[2];
-
-       cmd[0] = KSZ_CMD_READ;
-       cmd[1] = reg;
-       cmd_len = 2;
-
-       ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
-       if (ret) {
-               debug("Failed to send command (%zu bytes): %d\n",
-                               cmd_len, ret);
-               return -EINVAL;
-       }
-       flags |= SPI_XFER_END;
-       *val = 0;
-       cmd_len = 1;
-       ret = spi_xfer(spi, cmd_len * 8, NULL, val, flags);
-       if (ret) {
-               debug("Failed to read (%zu bytes): %d\n",
-                               cmd_len, ret);
-               return -EINVAL;
-       }
-
-       return 0;
-}
-
-static int enbw_cmc_switch_read_ident(struct spi_slave *spi)
-{
-       int ret;
-       u8 val;
-
-       ret = enbw_cmc_switch_read(spi, 0, &val);
-       if (ret) {
-               debug("Failed to read\n");
-               return -EINVAL;
-       }
-
-       if (val != KSZ_ID)
-               return -EINVAL;
-
-       return 0;
-}
-
-static int enbw_cmc_switch_write(struct spi_slave *spi, unsigned long reg,
-               unsigned long val)
-{
-       unsigned long flags = SPI_XFER_BEGIN;
-       int ret;
-       int cmd_len;
-       u8 cmd[3];
-
-       cmd[0] = KSZ_CMD_WRITE;
-       cmd[1] = reg;
-       cmd[2] = val;
-       cmd_len = 3;
-       flags |= SPI_XFER_END;
-
-       ret = spi_xfer(spi, cmd_len * 8, cmd, NULL, flags);
-       if (ret) {
-               debug("Failed to send command (%zu bytes): %d\n",
-                               cmd_len, ret);
-               return -EINVAL;
-       }
-
-       udelay(1000);
-       ret = enbw_cmc_switch_read(spi, reg, &cmd[0]);
-       if (ret) {
-               debug("Failed to read\n");
-               return -EINVAL;
-       }
-       if (val != cmd[0])
-               debug("warning: reg: %lx va: %x soll: %lx\n",
-                       reg, cmd[0], val);
-
-       return 0;
-}
-
-static int enbw_cmc_eof(unsigned char *ptr)
-{
-       if (*ptr == 0xff)
-               return 1;
-
-       return 0;
-}
-
-static char *enbw_cmc_getnewline(char *ptr)
-{
-       while (*ptr != 0x0a) {
-               ptr++;
-               if (enbw_cmc_eof((unsigned char *)ptr))
-                       return NULL;
-       }
-
-       ptr++;
-       return ptr;
-}
-
-static char *enbw_cmc_getvalue(char *ptr, int *value)
-{
-       int     end = 0;
-
-       *value = -EINVAL;
-
-       if (!isxdigit(*ptr))
-               end = 1;
-
-       while (end) {
-               if ((*ptr == '#') || (*ptr == ';')) {
-                       ptr = enbw_cmc_getnewline(ptr);
-                       return ptr;
-               }
-               if (ptr != NULL) {
-                       if (isxdigit(*ptr)) {
-                               end = 0;
-                       } else if (*ptr == 0x0a) {
-                               ptr++;
-                               return ptr;
-                       } else {
-                               ptr++;
-                               if (enbw_cmc_eof((unsigned char *)ptr))
-                                       return NULL;
-                       }
-               } else {
-                       return NULL;
-               }
-       }
-       *value = (int)simple_strtoul((const char *)ptr, &ptr, 16);
-       ptr++;
-       return ptr;
-}
-
-static struct spi_slave *enbw_cmc_init_spi(void)
-{
-       struct spi_slave *spi;
-       int ret;
-
-       spi = spi_setup_slave(0, 0, 1000000, 0);
-       if (!spi) {
-               printf("Failed to set up slave\n");
-               return NULL;
-       }
-
-       ret = spi_claim_bus(spi);
-       if (ret) {
-               debug("Failed to claim SPI bus: %d\n", ret);
-               goto err_claim_bus;
-       }
-
-       ret = enbw_cmc_switch_read_ident(spi);
-       if (ret)
-               goto err_read;
-
-       return spi;
-err_read:
-       spi_release_bus(spi);
-err_claim_bus:
-       spi_free_slave(spi);
-       return NULL;
-}
-
-static int enbw_cmc_config_switch(unsigned long addr)
-{
-       struct spi_slave *spi;
-       char *ptr = (char *)addr;
-       int value, reg;
-       int ret = 0;
-
-       debug("configure switch with file on addr: 0x%lx\n", addr);
-
-       spi = enbw_cmc_init_spi();
-       if (!spi)
-               return -EINVAL;
-
-       while (ptr != NULL) {
-               ptr = enbw_cmc_getvalue(ptr, &reg);
-               if (ptr != NULL) {
-                       ptr = enbw_cmc_getvalue(ptr, &value);
-                       if ((ptr != NULL) && (value >= 0))
-                               if (enbw_cmc_switch_write(spi, reg, value)) {
-                                       /* error writing to switch */
-                                       ptr = NULL;
-                                       ret = -EINVAL;
-                               }
-               }
-       }
-
-       spi_release_bus(spi);
-       spi_free_slave(spi);
-       return ret;
-}
-
-static int do_switch(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
-{
-       unsigned long addr;
-
-       if (argc < 2)
-               return cmd_usage(cmdtp);
-
-       addr = simple_strtoul(argv[1], NULL, 16);
-       enbw_cmc_config_switch(addr);
-
-       return 0;
-}
-
-U_BOOT_CMD(switch, 3, 1, do_switch,
-       "switch addr",
-       "[addr]"
-);
-
-/*
- * Initializes on-board ethernet controllers.
- */
-int board_eth_init(bd_t *bis)
-{
-       struct spi_slave *spi;
-       const char *s;
-       size_t len = 0;
-       int config = 1;
-
-       davinci_emac_mii_mode_sel(0);
-
-       /* send a config file to the switch */
-       s = hwconfig_subarg("switch", "config", &len);
-       if (len) {
-               unsigned long addr = simple_strtoul(s, NULL, 16);
-
-               config = enbw_cmc_config_switch(addr);
-       }
-
-       if (config) {
-               /*
-                * no valid config file -> do we have some args in
-                * hwconfig ?
-                */
-               if ((hwconfig_subarg("switch", "lan", &len)) ||
-                   (hwconfig_subarg("switch", "lmn", &len))) {
-                       /* If so start switch */
-                       spi = enbw_cmc_init_spi();
-                       if (spi) {
-                               if (enbw_cmc_switch_write(spi, 1, 0))
-                                       config = 0;
-                               udelay(10000);
-                               if (enbw_cmc_switch_write(spi, 1, 1))
-                                       config = 0;
-                               spi_release_bus(spi);
-                               spi_free_slave(spi);
-                       }
-               } else {
-                       config = 0;
-               }
-       }
-       if (!davinci_emac_initialize()) {
-               printf("Error: Ethernet init failed!\n");
-               return -1;
-       }
-
-       if (config) {
-               if (hwconfig_subarg_cmp("switch", "lan", "on"))
-                       /* Switch port lan on */
-                       enbw_cmc_switch(1, 1);
-               else
-                       enbw_cmc_switch(1, 0);
-
-               if (hwconfig_subarg_cmp("switch", "lmn", "on"))
-                       /* Switch port pwl on */
-                       enbw_cmc_switch(2, 1);
-               else
-                       enbw_cmc_switch(2, 0);
-       }
-
-       return 0;
-}
-#endif /* CONFIG_DRIVER_TI_EMAC */
-
-#ifdef CONFIG_PREBOOT
-static uchar kbd_magic_prefix[]                = "key_magic_";
-static uchar kbd_command_prefix[]      = "key_cmd_";
-
-struct kbd_data_t {
-       char s1;
-};
-
-struct kbd_data_t *get_keys(struct kbd_data_t *kbd_data)
-{
-       /* read SW1 + SW2 */
-       kbd_data->s1 = gpio_get_value(12) +
-               (gpio_get_value(13) << 1);
-       return kbd_data;
-}
-
-static int compare_magic(const struct kbd_data_t *kbd_data, char *str)
-{
-       char s1 = str[0];
-
-       if (s1 >= '0' && s1 <= '9')
-               s1 -= '0';
-       else if (s1 >= 'a' && s1 <= 'f')
-               s1 = s1 - 'a' + 10;
-       else if (s1 >= 'A' && s1 <= 'F')
-               s1 = s1 - 'A' + 10;
-       else
-               return -1;
-
-       if (s1 != kbd_data->s1)
-               return -1;
-
-       return 0;
-}
-
-static char *key_match(const struct kbd_data_t *kbd_data)
-{
-       char magic[sizeof(kbd_magic_prefix) + 1];
-       char *suffix;
-       char *kbd_magic_keys;
-
-       /*
-        * The following string defines the characters that can be appended
-        * to "key_magic" to form the names of environment variables that
-        * hold "magic" key codes, i. e. such key codes that can cause
-        * pre-boot actions. If the string is empty (""), then only
-        * "key_magic" is checked (old behaviour); the string "125" causes
-        * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
-        */
-       kbd_magic_keys = getenv("magic_keys");
-       if (kbd_magic_keys == NULL)
-               kbd_magic_keys = "";
-
-       /*
-        * loop over all magic keys;
-        * use '\0' suffix in case of empty string
-        */
-       for (suffix = kbd_magic_keys; *suffix ||
-               suffix == kbd_magic_keys; ++suffix) {
-               sprintf(magic, "%s%c", kbd_magic_prefix, *suffix);
-
-               if (compare_magic(kbd_data, getenv(magic)) == 0) {
-                       char cmd_name[sizeof(kbd_command_prefix) + 1];
-                       char *cmd;
-
-                       sprintf(cmd_name, "%s%c", kbd_command_prefix, *suffix);
-                       cmd = getenv(cmd_name);
-
-                       return cmd;
-               }
-       }
-
-       return NULL;
-}
-#endif /* CONFIG_PREBOOT */
-
-int misc_init_r(void)
-{
-       char *s, buf[32];
-#ifdef CONFIG_PREBOOT
-       struct kbd_data_t kbd_data;
-       /* Decode keys */
-       char *str = strdup(key_match(get_keys(&kbd_data)));
-       /* Set or delete definition */
-       setenv("preboot", str);
-       free(str);
-#endif /* CONFIG_PREBOOT */
-
-       /* count all restarts, and save this in an environment var */
-       s = getenv("restartcount");
-
-       if (s)
-               sprintf(buf, "%ld", simple_strtoul(s, NULL, 10) + 1);
-       else
-               strcpy(buf, "1");
-
-       setenv("restartcount", buf);
-       saveenv();
-
-#ifdef CONFIG_HW_WATCHDOG
-       davinci_hw_watchdog_enable();
-#endif
-
-       return 0;
-}
-
-struct cmc_led {
-       char name[20];
-       unsigned char bank;
-       unsigned char gpio;
-};
-
-struct cmc_led led_table[] = {
-       {"led1", 1, 15},
-       {"led2", 0, 1},
-       {"led3", 0, 2},
-       {"led4", 0, 3},
-       {"led5", 0, 4},
-       {"led6", 0, 5},
-       {"led7", 0, 6},
-       {"led8", 0, 14},
-};
-
-static int cmc_get_led_state(struct cmc_led *led)
-{
-       int value;
-       int gpio = led->bank * 16 + led->gpio;
-
-       value = gpio_get_value(gpio);
-
-       return value;
-}
-
-static int cmc_set_led_state(struct cmc_led *led, int state)
-{
-       int gpio = led->bank * 16 + led->gpio;
-
-       gpio_set_value(gpio, state);
-       return 0;
-}
-
-static int do_led(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
-{
-       struct cmc_led *led;
-       int found = 0;
-       int i = 0;
-       int only_print = 0;
-       int len = ARRAY_SIZE(led_table);
-
-       if (argc < 2)
-               return cmd_usage(cmdtp);
-
-       if (argc < 3)
-               only_print = 1;
-
-       led = led_table;
-       while ((!found) && (i < len)) {
-               if (strcmp(argv[1], led->name) == 0) {
-                       found = 1;
-               } else {
-                       led++;
-                       i++;
-               }
-       }
-       if (!found)
-               return cmd_usage(cmdtp);
-
-       if (only_print) {
-               if (cmc_get_led_state(led))
-                       printf("on\n");
-               else
-                       printf("off\n");
-
-               return 0;
-       }
-       if (strcmp(argv[2], "on") == 0)
-               cmc_set_led_state(led, 1);
-       else
-               cmc_set_led_state(led, 0);
-
-       return 0;
-}
-
-U_BOOT_CMD(led, 3, 1, do_led,
-       "switch on/off board led",
-       "[name] [on/off]"
-);
-
-#ifdef CONFIG_HW_WATCHDOG
-void hw_watchdog_reset(void)
-{
-       davinci_hw_watchdog_reset();
-}
-#endif
-
-#if defined(CONFIG_POST)
-void arch_memory_failure_handle(void)
-{
-       struct davinci_gpio *gpio = davinci_gpio_bank01;
-       int state = 1;
-
-       /*
-        * if memor< failure blink with the LED 1,2 and 3
-        * as we running from flash, we cannot use the gpio
-        * api here, so access the gpio pin direct through
-        * the gpio register.
-        */
-       while (1) {
-               if (state) {
-                       clrbits_le32(&gpio->out_data, 0x80000006);
-                       state = 0;
-               } else {
-                       setbits_le32(&gpio->out_data, 0x80000006);
-                       state = 1;
-               }
-               udelay(500);
-       }
-}
-#endif
-
-ulong post_word_load(void)
-{
-       struct davinci_rtc *reg =
-               (struct davinci_rtc *)CONFIG_SYS_POST_WORD_ADDR;
-
-       return in_be32(&reg->scratch2);
-}
-
-void post_word_store(ulong value)
-{
-       struct davinci_rtc *reg =
-               (struct davinci_rtc *)CONFIG_SYS_POST_WORD_ADDR;
-
-       /*
-        * write RTC kick register to enable write
-        * for RTC Scratch registers. Cratch0 and 1 are
-        * used for bootcount values.
-        */
-       writel(RTC_KICK0R_WE, &reg->kick0r);
-       writel(RTC_KICK1R_WE, &reg->kick1r);
-       out_be32(&reg->scratch2, value);
-}
-
-void board_gpio_init(void)
-{
-       struct davinci_gpio *gpio = davinci_gpio_bank01;
-
-       /*
-        * set LED (gpio Interface not usable here)
-        * set LED pins to output and state 0
-        */
-       clrbits_le32(&gpio->dir, 0x8000407e);
-       clrbits_le32(&gpio->out_data, 0x8000407e);
-       /* set LED 1 - 5 to state on */
-       setbits_le32(&gpio->out_data, 0x8000001e);
-
-       /*
-        * set some gpio pins to low, this is needed early,
-        * so we have no gpio Interface here
-        * gpios:
-        * 8[8]  Mode PV select  low
-        * 8[9]  Debug Rx Enable low
-        * 8[10] Mode Select PV  low
-        * 8[11] Counter Interface RS485 Rx-Enable low
-        */
-       gpio = davinci_gpio_bank8;
-       clrbits_le32(&gpio->dir, 0x00000f00);
-       clrbits_le32(&gpio->out_data, 0x0f00);
-}
-
-int board_late_init(void)
-{
-       cmc_set_led_state(&led_table[4], 0);
-
-       return 0;
-}
-
-void show_boot_progress(int val)
-{
-       switch (val) {
-       case 1:
-               cmc_set_led_state(&led_table[4], 1);
-               break;
-       case 4:
-               cmc_set_led_state(&led_table[4], 0);
-               break;
-       case 15:
-               cmc_set_led_state(&led_table[4], 1);
-               break;
-       }
-}
-
-#ifdef CONFIG_DAVINCI_MMC
-static struct davinci_mmc mmc_sd1 = {
-       .reg_base       = (struct davinci_mmc_regs *)DAVINCI_MMC_SD1_BASE,
-       .input_clk      = 228000000,
-       .host_caps      = MMC_MODE_4BIT,
-       .voltages       = MMC_VDD_32_33 | MMC_VDD_33_34,
-       .version        = MMC_CTLR_VERSION_2,
-};
-
-int board_mmc_init(bd_t *bis)
-{
-       mmc_sd1.input_clk = clk_get(DAVINCI_MMC_CLKID);
-       /* Add slot-0 to mmc subsystem */
-       return davinci_mmc_init(bis, &mmc_sd1);
-}
-#endif
diff --git a/board/esd/otc570/Kconfig b/board/esd/otc570/Kconfig
deleted file mode 100644 (file)
index 4966f5f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_OTC570
-
-config SYS_BOARD
-       default "otc570"
-
-config SYS_VENDOR
-       default "esd"
-
-config SYS_CONFIG_NAME
-       default "otc570"
-
-endif
diff --git a/board/esd/otc570/MAINTAINERS b/board/esd/otc570/MAINTAINERS
deleted file mode 100644 (file)
index a7e165d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-OTC570 BOARD
-M:     Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
-S:     Maintained
-F:     board/esd/otc570/
-F:     include/configs/otc570.h
-F:     configs/otc570_defconfig
-F:     configs/otc570_dataflash_defconfig
diff --git a/board/esd/otc570/Makefile b/board/esd/otc570/Makefile
deleted file mode 100644 (file)
index 740bb0a..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# (C) Copyright 2003-2008
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2008
-# Stelian Pop <stelian@popies.net>
-# Lead Tech Design <www.leadtechdesign.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y                          += otc570.o
-obj-$(CONFIG_HAS_DATAFLASH)    += partition.o
diff --git a/board/esd/otc570/otc570.c b/board/esd/otc570/otc570.c
deleted file mode 100644 (file)
index 4751d0a..0000000
+++ /dev/null
@@ -1,372 +0,0 @@
-/*
- * (C) Copyright 2010-2011
- * Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
- * esd electronic system design gmbh <www.esd.eu>
- *
- * (C) Copyright 2007-2008
- * Stelian Pop <stelian@popies.net>
- * Lead Tech Design <www.leadtechdesign.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/gpio.h>
-#include <asm/arch/at91sam9_smc.h>
-#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
-#include <asm/arch/at91_rstc.h>
-#include <asm/arch/at91_matrix.h>
-#include <asm/arch/at91_pio.h>
-#include <asm/arch/clk.h>
-#include <netdev.h>
-#ifdef CONFIG_LCD
-# include <atmel_lcdc.h>
-# include <lcd.h>
-# ifdef CONFIG_LCD_INFO
-#  include <nand.h>
-#  include <version.h>
-# endif
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-static int hw_rev = -1;        /* hardware revision */
-
-int get_hw_rev(void)
-{
-       if (hw_rev >= 0)
-               return hw_rev;
-
-       hw_rev = at91_get_pio_value(AT91_PIO_PORTB, 19);
-       hw_rev |= at91_get_pio_value(AT91_PIO_PORTB, 20) << 1;
-       hw_rev |= at91_get_pio_value(AT91_PIO_PORTB, 21) << 2;
-       hw_rev |= at91_get_pio_value(AT91_PIO_PORTB, 22) << 3;
-
-       if (hw_rev == 15)
-               hw_rev = 0;
-
-       return hw_rev;
-}
-
-#ifdef CONFIG_CMD_NAND
-static void otc570_nand_hw_init(void)
-{
-       unsigned long csa;
-       at91_smc_t      *smc    = (at91_smc_t *) ATMEL_BASE_SMC0;
-       at91_matrix_t   *matrix = (at91_matrix_t *) ATMEL_BASE_MATRIX;
-
-       /* Enable CS3 */
-       csa = readl(&matrix->csa[0]) | AT91_MATRIX_CSA_EBI_CS3A;
-       writel(csa, &matrix->csa[0]);
-
-       /* Configure SMC CS3 for NAND/SmartMedia */
-       writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(1) |
-               AT91_SMC_SETUP_NRD(2) | AT91_SMC_SETUP_NCS_RD(2),
-               &smc->cs[3].setup);
-
-       writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(3) |
-               AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(3),
-               &smc->cs[3].pulse);
-
-       writel(AT91_SMC_CYCLE_NWE(6) | AT91_SMC_CYCLE_NRD(6),
-               &smc->cs[3].cycle);
-       writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
-               AT91_SMC_MODE_EXNW_DISABLE |
-               AT91_SMC_MODE_DBW_8 |
-               AT91_SMC_MODE_TDF_CYCLE(12),
-               &smc->cs[3].mode);
-
-       /* Configure RDY/BSY */
-       gpio_direction_input(CONFIG_SYS_NAND_READY_PIN);
-
-       /* Enable NandFlash */
-       gpio_direction_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
-}
-#endif /* CONFIG_CMD_NAND */
-
-#ifdef CONFIG_MACB
-static void otc570_macb_hw_init(void)
-{
-       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
-       /* Enable clock */
-       writel(1 << ATMEL_ID_EMAC, &pmc->pcer);
-       at91_macb_hw_init();
-}
-#endif
-
-/*
- * Static memory controller initialization to enable Beckhoff ET1100 EtherCAT
- * controller debugging
- * The ET1100 is located at physical address 0x70000000
- * Its process memory is located at physical address 0x70001000
- */
-static void otc570_ethercat_hw_init(void)
-{
-       at91_smc_t      *smc1   = (at91_smc_t *) ATMEL_BASE_SMC1;
-
-       /* Configure SMC EBI1_CS0 for EtherCAT */
-       writel(AT91_SMC_SETUP_NWE(0) | AT91_SMC_SETUP_NCS_WR(0) |
-               AT91_SMC_SETUP_NRD(0) | AT91_SMC_SETUP_NCS_RD(0),
-               &smc1->cs[0].setup);
-       writel(AT91_SMC_PULSE_NWE(4) | AT91_SMC_PULSE_NCS_WR(9) |
-               AT91_SMC_PULSE_NRD(5) | AT91_SMC_PULSE_NCS_RD(9),
-               &smc1->cs[0].pulse);
-       writel(AT91_SMC_CYCLE_NWE(10) | AT91_SMC_CYCLE_NRD(6),
-               &smc1->cs[0].cycle);
-       /*
-        * Configure behavior at external wait signal, byte-select mode, 16 bit
-        * data bus width, none data float wait states and TDF optimization
-        */
-       writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_EXNW_READY |
-               AT91_SMC_MODE_DBW_16 | AT91_SMC_MODE_TDF_CYCLE(0) |
-               AT91_SMC_MODE_TDF, &smc1->cs[0].mode);
-
-       /* Configure RDY/BSY */
-       at91_set_b_periph(AT91_PIO_PORTE, 20, 0);       /* EBI1_NWAIT */
-}
-
-#ifdef CONFIG_LCD
-/* Number of columns and rows, pixel clock in Hz and hsync/vsync polarity */
-vidinfo_t panel_info = {
-       .vl_col =               640,
-       .vl_row =               480,
-       .vl_clk =               25175000,
-       .vl_sync =              ATMEL_LCDC_INVLINE_INVERTED |
-                               ATMEL_LCDC_INVFRAME_INVERTED,
-
-       .vl_bpix =              LCD_BPP,/* Bits per pixel, 0 = 1bit, 3 = 8bit */
-       .vl_tft =               1,      /* 0 = passive, 1 = TFT */
-       .vl_vsync_len =         1,      /* Length of vertical sync in NOL */
-       .vl_upper_margin =      35,     /* Idle lines at the frame start */
-       .vl_lower_margin =      5,      /* Idle lines at the end of the frame */
-       .vl_hsync_len =         5,      /* Width of the LCDHSYNC pulse */
-       .vl_left_margin =       112,    /* Idle cycles at the line beginning */
-       .vl_right_margin =      1,      /* Idle cycles at the end of the line */
-
-       .mmio =                 ATMEL_BASE_LCDC,
-};
-
-void lcd_enable(void)
-{
-       at91_set_pio_value(AT91_PIO_PORTA, 30, 0); /* power up */
-}
-
-void lcd_disable(void)
-{
-       at91_set_pio_value(AT91_PIO_PORTA, 30, 1); /* power down */
-}
-
-static void otc570_lcd_hw_init(void)
-{
-       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       at91_set_a_periph(AT91_PIO_PORTC, 0, 0);        /* LCDVSYNC */
-       at91_set_a_periph(AT91_PIO_PORTC, 1, 0);        /* LCDHSYNC */
-       at91_set_a_periph(AT91_PIO_PORTC, 2, 0);        /* LCDDOTCK */
-       at91_set_a_periph(AT91_PIO_PORTC, 3, 0);        /* LCDDEN */
-       at91_set_b_periph(AT91_PIO_PORTB, 9, 0);        /* LCDCC */
-       at91_set_a_periph(AT91_PIO_PORTC, 6, 0);        /* LCDD2 */
-       at91_set_a_periph(AT91_PIO_PORTC, 7, 0);        /* LCDD3 */
-       at91_set_a_periph(AT91_PIO_PORTC, 8, 0);        /* LCDD4 */
-       at91_set_a_periph(AT91_PIO_PORTC, 9, 0);        /* LCDD5 */
-       at91_set_a_periph(AT91_PIO_PORTC, 10, 0);       /* LCDD6 */
-       at91_set_a_periph(AT91_PIO_PORTC, 11, 0);       /* LCDD7 */
-       at91_set_a_periph(AT91_PIO_PORTC, 14, 0);       /* LCDD10 */
-       at91_set_a_periph(AT91_PIO_PORTC, 15, 0);       /* LCDD11 */
-       at91_set_a_periph(AT91_PIO_PORTC, 16, 0);       /* LCDD12 */
-       at91_set_b_periph(AT91_PIO_PORTC, 12, 0);       /* LCDD13 */
-       at91_set_a_periph(AT91_PIO_PORTC, 18, 0);       /* LCDD14 */
-       at91_set_a_periph(AT91_PIO_PORTC, 19, 0);       /* LCDD15 */
-       at91_set_a_periph(AT91_PIO_PORTC, 22, 0);       /* LCDD18 */
-       at91_set_a_periph(AT91_PIO_PORTC, 23, 0);       /* LCDD19 */
-       at91_set_a_periph(AT91_PIO_PORTC, 24, 0);       /* LCDD20 */
-       at91_set_b_periph(AT91_PIO_PORTC, 17, 0);       /* LCDD21 */
-       at91_set_a_periph(AT91_PIO_PORTC, 26, 0);       /* LCDD22 */
-       at91_set_a_periph(AT91_PIO_PORTC, 27, 0);       /* LCDD23 */
-       at91_set_pio_output(AT91_PIO_PORTA, 30, 1);     /* PCI */
-
-       writel(1 << ATMEL_ID_LCDC, &pmc->pcer);
-}
-
-#ifdef CONFIG_LCD_INFO
-void lcd_show_board_info(void)
-{
-       ulong dram_size, nand_size;
-       int i;
-       char temp[32];
-
-       dram_size = 0;
-       for (i = 0; i < CONFIG_NR_DRAM_BANKS; i++)
-               dram_size += gd->bd->bi_dram[i].size;
-       nand_size = 0;
-       for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-               nand_size += nand_info[i].size;
-
-       lcd_printf("\n%s\n", U_BOOT_VERSION);
-       lcd_printf("CPU at %s MHz\n", strmhz(temp, get_cpu_clk_rate()));
-       lcd_printf("  %ld MB SDRAM, %ld MB NAND\n",
-               dram_size >> 20,
-               nand_size >> 20 );
-       lcd_printf("  Board            : esd ARM9 HMI Panel - OTC570\n");
-       lcd_printf("  Hardware-revision: 1.%d\n", get_hw_rev());
-       lcd_printf("  Mach-type        : %lu\n", gd->bd->bi_arch_number);
-}
-#endif /* CONFIG_LCD_INFO */
-#endif /* CONFIG_LCD */
-
-int dram_init(void)
-{
-       gd->ram_size = get_ram_size(
-               (void *)CONFIG_SYS_SDRAM_BASE,
-               CONFIG_SYS_SDRAM_SIZE);
-       return 0;
-}
-
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_MACB
-       rc = macb_eth_initialize(0, (void *)ATMEL_BASE_EMAC, 0x00);
-#endif
-       return rc;
-}
-
-int checkboard(void)
-{
-       char str[32];
-
-       puts("Board            : esd ARM9 HMI Panel - OTC570");
-       if (getenv_f("serial#", str, sizeof(str)) > 0) {
-               puts(", serial# ");
-               puts(str);
-       }
-       printf("\n");
-       printf("Hardware-revision: 1.%d\n", get_hw_rev());
-       printf("Mach-type        : %lu\n", gd->bd->bi_arch_number);
-       return 0;
-}
-
-#ifdef CONFIG_SERIAL_TAG
-void get_board_serial(struct tag_serialnr *serialnr)
-{
-       char *str;
-
-       char *serial = getenv("serial#");
-       if (serial) {
-               str = strchr(serial, '_');
-               if (str && (strlen(str) >= 4)) {
-                       serialnr->high = (*(str + 1) << 8) | *(str + 2);
-                       serialnr->low = simple_strtoul(str + 3, NULL, 16);
-               }
-       } else {
-               serialnr->high = 0;
-               serialnr->low = 0;
-       }
-}
-#endif
-
-#ifdef CONFIG_REVISION_TAG
-u32 get_board_rev(void)
-{
-       return hw_rev | 0x100;
-}
-#endif
-
-#ifdef CONFIG_MISC_INIT_R
-int misc_init_r(void)
-{
-       char            str[64];
-       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       at91_set_pio_output(AT91_PIO_PORTA, 29, 1);
-       at91_set_a_periph(AT91_PIO_PORTA, 26, 1);       /* TXD0 */
-       at91_set_a_periph(AT91_PIO_PORTA, 27, 0);       /* RXD0 */
-       writel(1 << ATMEL_ID_USART0, &pmc->pcer);
-       /* Set USART_MODE = 1 (RS485) */
-       writel(1, 0xFFF8C004);
-
-       printf("USART0: ");
-
-       if (getenv_f("usart0", str, sizeof(str)) == -1) {
-               printf("No entry - assuming 1-wire\n");
-               /* CTS pin, works as mode select pin (0 = 1-wire; 1 = RS485) */
-               at91_set_pio_output(AT91_PIO_PORTA, 29, 0);
-       } else {
-               if (strcmp(str, "1-wire") == 0) {
-                       printf("%s\n", str);
-                       at91_set_pio_output(AT91_PIO_PORTA, 29, 0);
-               } else if (strcmp(str, "rs485") == 0) {
-                       printf("%s\n", str);
-                       at91_set_pio_output(AT91_PIO_PORTA, 29, 1);
-               } else {
-                       printf("Wrong entry - assuming 1-wire ");
-                       printf("(valid values are '1-wire' or 'rs485')\n");
-                       at91_set_pio_output(AT91_PIO_PORTA, 29, 0);
-               }
-       }
-#ifdef CONFIG_LCD
-       printf("Display memory address: 0x%08lX\n", gd->fb_base);
-#endif
-
-       return 0;
-}
-#endif /* CONFIG_MISC_INIT_R */
-
-int board_early_init_f(void)
-{
-       at91_pmc_t      *pmc    = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       /* enable all clocks */
-       writel((1 << ATMEL_ID_PIOA) |
-               (1 << ATMEL_ID_PIOB) |
-               (1 << ATMEL_ID_PIOCDE) |
-               (1 << ATMEL_ID_TWI) |
-               (1 << ATMEL_ID_SPI0) |
-#ifdef CONFIG_LCD
-               (1 << ATMEL_ID_LCDC) |
-#endif
-               (1 << ATMEL_ID_UHP),
-               &pmc->pcer);
-
-       at91_seriald_hw_init();
-
-       /* arch number of OTC570-Board */
-       gd->bd->bi_arch_number = MACH_TYPE_OTC570;
-
-       return 0;
-}
-
-int board_init(void)
-{
-       /* initialize ET1100 Controller */
-       otc570_ethercat_hw_init();
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
-
-#ifdef CONFIG_CMD_NAND
-       otc570_nand_hw_init();
-#endif
-#ifdef CONFIG_HAS_DATAFLASH
-       at91_spi0_hw_init(1 << 0);
-#endif
-#ifdef CONFIG_MACB
-       otc570_macb_hw_init();
-#endif
-#ifdef CONFIG_AT91_CAN
-       at91_can_hw_init();
-#endif
-#ifdef CONFIG_USB_OHCI_NEW
-       at91_uhp_hw_init();
-#endif
-#ifdef CONFIG_LCD
-       otc570_lcd_hw_init();
-#endif
-       return 0;
-}
diff --git a/board/esd/otc570/partition.c b/board/esd/otc570/partition.c
deleted file mode 100644 (file)
index b6afafc..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * (C) Copyright 2008
- * Ulf Samuelsson <ulf@atmel.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <config.h>
-#include <asm/hardware.h>
-#include <dataflash.h>
-
-AT91S_DATAFLASH_INFO dataflash_info[CONFIG_SYS_MAX_DATAFLASH_BANKS];
-
-struct dataflash_addr cs[CONFIG_SYS_MAX_DATAFLASH_BANKS] = {
-       {CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0, 0},       /* Logical adress, CS */
-};
-
-/* define the area offsets */
-dataflash_protect_t area_list[NB_DATAFLASH_AREA] = {
-       {0x00000000, 0x000041FF, FLAG_PROTECT_SET,   0, "Bootstrap"},
-       {0x00004200, 0x000083FF, FLAG_PROTECT_CLEAR, 0, "Environment"},
-       {0x00008400, 0x00041FFF, FLAG_PROTECT_SET,   0, "U-Boot"},
-};
diff --git a/board/esg/ima3-mx53/Kconfig b/board/esg/ima3-mx53/Kconfig
deleted file mode 100644 (file)
index d73238f..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_IMA3_MX53
-
-config SYS_BOARD
-       default "ima3-mx53"
-
-config SYS_VENDOR
-       default "esg"
-
-config SYS_SOC
-       default "mx5"
-
-config SYS_CONFIG_NAME
-       default "ima3-mx53"
-
-endif
diff --git a/board/esg/ima3-mx53/MAINTAINERS b/board/esg/ima3-mx53/MAINTAINERS
deleted file mode 100644 (file)
index 96de081..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-IMA3-MX53 BOARD
-#M:    -
-S:     Maintained
-F:     board/esg/ima3-mx53/
-F:     include/configs/ima3-mx53.h
-F:     configs/ima3-mx53_defconfig
diff --git a/board/esg/ima3-mx53/Makefile b/board/esg/ima3-mx53/Makefile
deleted file mode 100644 (file)
index afb8925..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright (C) 2012, Stefano Babic <sbabic@denx.de>
-#
-# Based on ti/evm/Makefile
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := ima3-mx53.o
diff --git a/board/esg/ima3-mx53/ima3-mx53.c b/board/esg/ima3-mx53/ima3-mx53.c
deleted file mode 100644 (file)
index df758ee..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * (C) Copyright 2012, Stefano Babic <sbabic@denx.de>
- *
- * (C) Copyright 2010 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/crm_regs.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/iomux-mx53.h>
-#include <asm/errno.h>
-#include <netdev.h>
-#include <mmc.h>
-#include <fsl_esdhc.h>
-#include <asm/gpio.h>
-
-/* NOR flash configuration */
-#define IMA3_MX53_CS0GCR1      (CSEN | DSZ(2))
-#define IMA3_MX53_CS0GCR2      0
-#define IMA3_MX53_CS0RCR1      (RCSN(2) | OEN(1) | RWSC(15))
-#define IMA3_MX53_CS0RCR2      0
-#define IMA3_MX53_CS0WCR1      (WBED1 | WCSN(2) | WEN(1) | WWSC(15))
-#define IMA3_MX53_CS0WCR2      0
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static void weim_nor_settings(void)
-{
-       struct weim *weim_regs = (struct weim *)WEIM_BASE_ADDR;
-
-       writel(IMA3_MX53_CS0GCR1, &weim_regs->cs0gcr1);
-       writel(IMA3_MX53_CS0GCR2, &weim_regs->cs0gcr2);
-       writel(IMA3_MX53_CS0RCR1, &weim_regs->cs0rcr1);
-       writel(IMA3_MX53_CS0RCR2, &weim_regs->cs0rcr2);
-       writel(IMA3_MX53_CS0WCR1, &weim_regs->cs0wcr1);
-       writel(IMA3_MX53_CS0WCR2, &weim_regs->cs0wcr2);
-       writel(0x0, &weim_regs->wcr);
-
-       set_chipselect_size(CS0_128);
-}
-
-int dram_init(void)
-{
-       gd->ram_size = get_ram_size((void *) CONFIG_SYS_SDRAM_BASE,
-                       PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-#define UART_PAD_CTRL  (PAD_CTL_HYS | PAD_CTL_DSE_HIGH | \
-                        PAD_CTL_PUS_100K_UP | PAD_CTL_ODE)
-
-static void setup_iomux_uart(void)
-{
-       static const iomux_v3_cfg_t uart_pads[] = {
-               NEW_PAD_CTRL(MX53_PAD_CSI0_DAT13__UART4_RXD_MUX, UART_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_CSI0_DAT12__UART4_TXD_MUX, UART_PAD_CTRL),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
-}
-
-static void setup_iomux_fec(void)
-{
-       static const iomux_v3_cfg_t fec_pads[] = {
-               NEW_PAD_CTRL(MX53_PAD_FEC_MDIO__FEC_MDIO, PAD_CTL_HYS |
-                       PAD_CTL_DSE_HIGH | PAD_CTL_PUS_22K_UP | PAD_CTL_ODE),
-               NEW_PAD_CTRL(MX53_PAD_FEC_MDC__FEC_MDC, PAD_CTL_DSE_HIGH),
-               NEW_PAD_CTRL(MX53_PAD_KEY_COL0__FEC_RDATA_3,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_KEY_COL2__FEC_RDATA_2,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_FEC_RXD1__FEC_RDATA_1,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_FEC_RXD0__FEC_RDATA_0,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_GPIO_19__FEC_TDATA_3, PAD_CTL_DSE_HIGH),
-               NEW_PAD_CTRL(MX53_PAD_KEY_ROW2__FEC_TDATA_2, PAD_CTL_DSE_HIGH),
-               NEW_PAD_CTRL(MX53_PAD_FEC_TXD1__FEC_TDATA_1, PAD_CTL_DSE_HIGH),
-               NEW_PAD_CTRL(MX53_PAD_FEC_TXD0__FEC_TDATA_0, PAD_CTL_DSE_HIGH),
-               NEW_PAD_CTRL(MX53_PAD_FEC_TX_EN__FEC_TX_EN, PAD_CTL_DSE_HIGH),
-               NEW_PAD_CTRL(MX53_PAD_FEC_REF_CLK__FEC_TX_CLK,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_FEC_RX_ER__FEC_RX_ER,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_FEC_CRS_DV__FEC_RX_DV,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_KEY_COL3__FEC_CRS,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_KEY_ROW1__FEC_COL,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX53_PAD_KEY_COL1__FEC_RX_CLK,
-                               PAD_CTL_HYS | PAD_CTL_PKE),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(fec_pads, ARRAY_SIZE(fec_pads));
-}
-
-#ifdef CONFIG_FSL_ESDHC
-struct fsl_esdhc_cfg esdhc_cfg = { MMC_SDHC1_BASE_ADDR };
-
-int board_mmc_getcd(struct mmc *mmc)
-{
-       int ret;
-
-       ret = !gpio_get_value(IMX_GPIO_NR(1, 1));
-
-       return ret;
-}
-
-#define SD_CMD_PAD_CTRL                (PAD_CTL_HYS | PAD_CTL_DSE_HIGH | \
-                                PAD_CTL_PUS_100K_UP)
-#define SD_PAD_CTRL            (PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | \
-                                PAD_CTL_DSE_HIGH)
-#define SD_CD_PAD_CTRL         (PAD_CTL_DSE_HIGH | PAD_CTL_HYS | PAD_CTL_PKE)
-
-int board_mmc_init(bd_t *bis)
-{
-       static const iomux_v3_cfg_t sd1_pads[] = {
-               NEW_PAD_CTRL(MX53_PAD_SD1_CMD__ESDHC1_CMD, SD_CMD_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_SD1_CLK__ESDHC1_CLK, SD_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_SD1_DATA0__ESDHC1_DAT0, SD_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_SD1_DATA1__ESDHC1_DAT1, SD_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_SD1_DATA2__ESDHC1_DAT2, SD_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_SD1_DATA3__ESDHC1_DAT3, SD_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_GPIO_1__GPIO1_1, SD_CD_PAD_CTRL),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(sd1_pads, ARRAY_SIZE(sd1_pads));
-       gpio_direction_input(IMX_GPIO_NR(1, 1));
-
-       esdhc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-       return fsl_esdhc_initialize(bis, &esdhc_cfg);
-}
-#endif
-
-#define SPI_PAD_CTRL   (PAD_CTL_HYS | PAD_CTL_DSE_HIGH | PAD_CTL_PUS_47K_UP)
-
-static void setup_iomux_spi(void)
-{
-       static const iomux_v3_cfg_t spi_pads[] = {
-               NEW_PAD_CTRL(MX53_PAD_CSI0_DAT8__ECSPI2_SCLK, SPI_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_CSI0_DAT9__ECSPI2_MOSI, SPI_PAD_CTRL),
-               NEW_PAD_CTRL(MX53_PAD_CSI0_DAT10__ECSPI2_MISO, SPI_PAD_CTRL),
-               /* SSEL 0 */
-               NEW_PAD_CTRL(MX53_PAD_CSI0_DAT11__GPIO5_29, SPI_PAD_CTRL),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(spi_pads, ARRAY_SIZE(spi_pads));
-       gpio_direction_output(IMX_GPIO_NR(5, 29), 1);
-}
-
-int board_early_init_f(void)
-{
-       /* configure I/O pads */
-       setup_iomux_uart();
-       setup_iomux_fec();
-
-       weim_nor_settings();
-
-       /* configure spi */
-       setup_iomux_spi();
-
-       return 0;
-}
-
-int board_init(void)
-{
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-
-       mxc_set_sata_internal_clock();
-
-       return 0;
-}
-
-#if defined(CONFIG_RESET_PHY_R)
-#include <miiphy.h>
-
-void reset_phy(void)
-{
-       unsigned short reg;
-
-       /* reset the phy */
-       miiphy_reset("FEC", CONFIG_PHY_ADDR);
-
-       /* set hard link to 100Mbit, full-duplex */
-       miiphy_read("FEC", CONFIG_PHY_ADDR, MII_BMCR, &reg);
-       reg &= ~BMCR_ANENABLE;
-       reg |= (BMCR_SPEED100 | BMCR_FULLDPLX);
-       miiphy_write("FEC", CONFIG_PHY_ADDR, MII_BMCR, reg);
-
-       miiphy_read("FEC", CONFIG_PHY_ADDR, 0x16, &reg);
-       reg |= (1 << 5);
-       miiphy_write("FEC", CONFIG_PHY_ADDR, 0x16, reg);
-}
-#endif
-
-int checkboard(void)
-{
-       puts("Board: IMA3_MX53\n");
-
-       return 0;
-}
diff --git a/board/esg/ima3-mx53/imximage.cfg b/board/esg/ima3-mx53/imximage.cfg
deleted file mode 100644 (file)
index 324a90e..0000000
+++ /dev/null
@@ -1,104 +0,0 @@
-/*
- * (C) Copyright 2012
- * Stefano Babic DENX Software Engineering sbabic@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
- * Refer doc/README.imximage for more details about how-to configure
- * and create imximage boot image
- *
- * The syntax is taken as close as possible with the kwbimage
- */
-
-/* image version */
-IMAGE_VERSION 2
-
-/*
- * Boot Device : one of
- * spi, sd (the board has no nand neither onenand)
- */
-BOOT_FROM      nor
-
-/*
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *     Addr-type register length (1,2 or 4 bytes)
- *     Address   absolute address of the register
- *     value     value to be stored in the register
- */
-/* IOMUX for RAM only */
-DATA 4 0x53fa8554 0x300020
-DATA 4 0x53fa8560 0x300020
-DATA 4 0x53fa8594 0x300020
-DATA 4 0x53fa8584 0x300020
-DATA 4 0x53fa8558 0x300040
-DATA 4 0x53fa8568 0x300040
-DATA 4 0x53fa8590 0x300040
-DATA 4 0x53fa857c 0x300040
-DATA 4 0x53fa8564 0x300040
-DATA 4 0x53fa8580 0x300040
-DATA 4 0x53fa8570 0x300220
-DATA 4 0x53fa8578 0x300220
-DATA 4 0x53fa872c 0x300000
-DATA 4 0x53fa8728 0x300000
-DATA 4 0x53fa871c 0x300000
-DATA 4 0x53fa8718 0x300000
-DATA 4 0x53fa8574 0x300020
-DATA 4 0x53fa8588 0x300020
-DATA 4 0x53fa855c 0x0
-DATA 4 0x53fa858c 0x0
-DATA 4 0x53fa856c 0x300040
-DATA 4 0x53fa86f0 0x300000
-DATA 4 0x53fa8720 0x300000
-DATA 4 0x53fa86fc 0x0
-DATA 4 0x53fa86f4 0x0
-DATA 4 0x53fa8714 0x0
-DATA 4 0x53fa8724 0x4000000
-
-/* DDR RAM */
-DATA 4 0x63fd9088 0x40404040
-DATA 4 0x63fd9090 0x40404040
-DATA 4 0x63fd907C 0x01420143
-DATA 4 0x63fd9080 0x01450146
-DATA 4 0x63fd9018 0x00111740
-DATA 4 0x63fd9000 0x84190000
-
-/* esdcfgX */
-DATA 4 0x63fd900C 0x9f5152e3
-DATA 4 0x63fd9010 0xb68e8a63
-DATA 4 0x63fd9014 0x01ff00db
-
-/* Read/Write command delay */
-DATA 4 0x63fd902c 0x000026d2
-
-/* Out of reset delays */
-DATA 4 0x63fd9030 0x00ff0e21
-
-/* ESDCTL ODT timing control */
-DATA 4 0x63fd9008 0x12273030
-
-/* ESDCTL power down control */
-DATA 4 0x63fd9004 0x0002002d
-
-/* Set registers in DDR memory chips */
-DATA 4 0x63fd901c 0x00008032
-DATA 4 0x63fd901c 0x00008033
-DATA 4 0x63fd901c 0x00028031
-DATA 4 0x63fd901c 0x052080b0
-DATA 4 0x63fd901c 0x04008040
-
-/* ESDCTL refresh control */
-DATA 4 0x63fd9020 0x00005800
-
-/* PHY ZQ HW control */
-DATA 4 0x63fd9040 0x05380003
-
-/* PHY ODT control */
-DATA 4 0x63fd9058 0x00022222
-
-/* start DDR3 */
-DATA 4 0x63fd901c 0x00000000
diff --git a/board/eukrea/cpu9260/Kconfig b/board/eukrea/cpu9260/Kconfig
deleted file mode 100644 (file)
index 90d2124..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_CPU9260
-
-config SYS_BOARD
-       default "cpu9260"
-
-config SYS_VENDOR
-       default "eukrea"
-
-config SYS_CONFIG_NAME
-       default "cpu9260"
-
-endif
diff --git a/board/eukrea/cpu9260/MAINTAINERS b/board/eukrea/cpu9260/MAINTAINERS
deleted file mode 100644 (file)
index fb5aee8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-CPU9260 BOARD
-M:     Eric Benard <eric@eukrea.com>
-S:     Maintained
-F:     board/eukrea/cpu9260/
-F:     include/configs/cpu9260.h
-F:     configs/cpu9260_defconfig
-F:     configs/cpu9260_128M_defconfig
-F:     configs/cpu9260_nand_defconfig
-F:     configs/cpu9260_nand_128M_defconfig
-F:     configs/cpu9G20_defconfig
-F:     configs/cpu9G20_128M_defconfig
-F:     configs/cpu9G20_nand_defconfig
-F:     configs/cpu9G20_nand_128M_defconfig
diff --git a/board/eukrea/cpu9260/Makefile b/board/eukrea/cpu9260/Makefile
deleted file mode 100644 (file)
index e34792a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# (C) Copyright 2003-2008
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2008
-# Stelian Pop <stelian@popies.net
-# Lead Tech Design <www.leadtechdesign.com>
-# Ilko Iliev <www.ronetix.at>
-#
-# (C) Copyright 2009
-# Eric Benard <eric@eukrea.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y += cpu9260.o
-obj-y += led.o
diff --git a/board/eukrea/cpu9260/cpu9260.c b/board/eukrea/cpu9260/cpu9260.c
deleted file mode 100644 (file)
index 01ecccb..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-/*
- * (C) Copyright 2007-2008
- * Stelian Pop <stelian@popies.net>
- * Lead Tech Design <www.leadtechdesign.com>
- * Ilko Iliev <www.ronetix.at>
- *
- * (C) Copyright 2009-2011
- * Eric Benard <eric@eukrea.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/gpio.h>
-#include <asm/arch/at91sam9260.h>
-#include <asm/arch/at91sam9_smc.h>
-#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_matrix.h>
-#include <asm/arch/at91_pmc.h>
-#include <asm/arch/at91_pio.h>
-#include <asm/arch/clk.h>
-#include <asm/arch/hardware.h>
-#if defined(CONFIG_RESET_PHY_R) && defined(CONFIG_MACB)
-#include <net.h>
-#endif
-#include <netdev.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-#ifdef CONFIG_CMD_NAND
-static void cpu9260_nand_hw_init(void)
-{
-       unsigned long csa;
-       at91_smc_t *smc = (at91_smc_t *) ATMEL_BASE_SMC;
-       at91_matrix_t *matrix = (at91_matrix_t *) ATMEL_BASE_MATRIX;
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       /* Enable CS3 */
-       csa = readl(&matrix->csa) | AT91_MATRIX_CSA_EBI_CS3A;
-       writel(csa, &matrix->csa);
-
-       /* Configure SMC CS3 for NAND/SmartMedia */
-#if defined(CONFIG_CPU9G20)
-       writel(AT91_SMC_SETUP_NWE(2) | AT91_SMC_SETUP_NCS_WR(0) |
-               AT91_SMC_SETUP_NRD(2) | AT91_SMC_SETUP_NCS_RD(0),
-               &smc->cs[3].setup);
-       writel(AT91_SMC_PULSE_NWE(4) | AT91_SMC_PULSE_NCS_WR(4) |
-               AT91_SMC_PULSE_NRD(4) | AT91_SMC_PULSE_NCS_RD(4),
-               &smc->cs[3].pulse);
-       writel(AT91_SMC_CYCLE_NWE(7) | AT91_SMC_CYCLE_NRD(7),
-               &smc->cs[3].cycle);
-       writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
-               AT91_SMC_MODE_EXNW_DISABLE |
-               AT91_SMC_MODE_DBW_8 |
-               AT91_SMC_MODE_TDF_CYCLE(3),
-               &smc->cs[3].mode);
-#elif defined(CONFIG_CPU9260)
-       writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
-               AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
-               &smc->cs[3].setup);
-       writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(3) |
-               AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(3),
-               &smc->cs[3].pulse);
-       writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
-               &smc->cs[3].cycle);
-       writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
-               AT91_SMC_MODE_EXNW_DISABLE |
-               AT91_SMC_MODE_DBW_8 |
-               AT91_SMC_MODE_TDF_CYCLE(2),
-               &smc->cs[3].mode);
-#endif
-
-       writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
-
-       /* Configure RDY/BSY */
-       gpio_direction_input(CONFIG_SYS_NAND_READY_PIN);
-
-       /* Enable NandFlash */
-       gpio_direction_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
-}
-#endif
-
-#ifdef CONFIG_MACB
-static void cpu9260_macb_hw_init(void)
-{
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       /* Enable clock */
-       writel(1 << ATMEL_ID_EMAC0, &pmc->pcer);
-
-       at91_set_pio_pullup(AT91_PIO_PORTA, 17, 1);
-
-       at91_phy_reset();
-
-       at91_macb_hw_init();
-}
-#endif
-
-int board_early_init_f(void)
-{
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       writel((1 << ATMEL_ID_PIOA) |
-               (1 << ATMEL_ID_PIOB) |
-               (1 << ATMEL_ID_PIOC),
-               &pmc->pcer);
-
-       at91_seriald_hw_init();
-
-       return 0;
-}
-
-
-int board_init(void)
-{
-       /* arch number of the board */
-#if defined(CONFIG_CPU9G20)
-       gd->bd->bi_arch_number = MACH_TYPE_CPUAT9G20;
-#elif defined(CONFIG_CPU9260)
-       gd->bd->bi_arch_number = MACH_TYPE_CPUAT9260;
-#endif
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
-
-#ifdef CONFIG_CMD_NAND
-       cpu9260_nand_hw_init();
-#endif
-#ifdef CONFIG_MACB
-       cpu9260_macb_hw_init();
-#endif
-#if defined(CONFIG_STATUS_LED) && defined(STATUS_LED_BOOT)
-       status_led_set(STATUS_LED_BOOT, STATUS_LED_ON);
-#endif
-       return 0;
-}
-
-int dram_init(void)
-{
-       gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
-                       CONFIG_SYS_SDRAM_SIZE);
-       return 0;
-}
-
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_MACB
-       rc = macb_eth_initialize(0, (void *)ATMEL_BASE_EMAC0, 0);
-#endif
-       return rc;
-}
diff --git a/board/eukrea/cpu9260/led.c b/board/eukrea/cpu9260/led.c
deleted file mode 100644 (file)
index 0cfe0a6..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * Copyright (c) 2009 Wind River Systems, Inc.
- * Tom Rix <Tom.Rix@windriver.com>
- * (C) Copyright 2009
- * Eric Benard <eric@eukrea.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <status_led.h>
-#include <asm/arch/at91sam9260.h>
-#include <asm/arch/at91_pmc.h>
-#include <asm/arch/gpio.h>
-#include <asm/io.h>
-
-static unsigned int saved_state[4] = {STATUS_LED_OFF, STATUS_LED_OFF,
-               STATUS_LED_OFF, STATUS_LED_OFF};
-
-void coloured_LED_init(void)
-{
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-
-       /* Enable clock */
-       writel(1 << ATMEL_ID_PIOC, &pmc->pcer);
-
-       at91_set_pio_output(CONFIG_RED_LED, 1);
-       at91_set_pio_output(CONFIG_GREEN_LED, 1);
-       at91_set_pio_output(CONFIG_YELLOW_LED, 1);
-       at91_set_pio_output(CONFIG_BLUE_LED, 1);
-
-       at91_set_pio_value(CONFIG_RED_LED, 1);
-       at91_set_pio_value(CONFIG_GREEN_LED, 1);
-       at91_set_pio_value(CONFIG_YELLOW_LED, 1);
-       at91_set_pio_value(CONFIG_BLUE_LED, 1);
-}
-
-void red_led_off(void)
-{
-       at91_set_pio_value(CONFIG_RED_LED, 1);
-       saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
-}
-
-void green_led_off(void)
-{
-       at91_set_pio_value(CONFIG_GREEN_LED, 1);
-       saved_state[STATUS_LED_GREEN] = STATUS_LED_OFF;
-}
-
-void yellow_led_off(void)
-{
-       at91_set_pio_value(CONFIG_YELLOW_LED, 1);
-       saved_state[STATUS_LED_YELLOW] = STATUS_LED_OFF;
-}
-
-void blue_led_off(void)
-{
-       at91_set_pio_value(CONFIG_BLUE_LED, 1);
-       saved_state[STATUS_LED_BLUE] = STATUS_LED_OFF;
-}
-
-void red_led_on(void)
-{
-       at91_set_pio_value(CONFIG_RED_LED, 0);
-       saved_state[STATUS_LED_RED] = STATUS_LED_ON;
-}
-
-void green_led_on(void)
-{
-       at91_set_pio_value(CONFIG_GREEN_LED, 0);
-       saved_state[STATUS_LED_GREEN] = STATUS_LED_ON;
-}
-
-void yellow_led_on(void)
-{
-       at91_set_pio_value(CONFIG_YELLOW_LED, 0);
-       saved_state[STATUS_LED_YELLOW] = STATUS_LED_ON;
-}
-
-void blue_led_on(void)
-{
-       at91_set_pio_value(CONFIG_BLUE_LED, 0);
-       saved_state[STATUS_LED_BLUE] = STATUS_LED_ON;
-}
-
-void __led_init(led_id_t mask, int state)
-{
-       __led_set(mask, state);
-}
-
-void __led_toggle(led_id_t mask)
-{
-       if (STATUS_LED_BLUE == mask) {
-               if (STATUS_LED_ON == saved_state[STATUS_LED_BLUE])
-                       blue_led_off();
-               else
-                       blue_led_on();
-       } else if (STATUS_LED_RED == mask) {
-               if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
-                       red_led_off();
-               else
-                       red_led_on();
-       } else if (STATUS_LED_GREEN == mask) {
-               if (STATUS_LED_ON == saved_state[STATUS_LED_GREEN])
-                       green_led_off();
-               else
-                       green_led_on();
-       } else if (STATUS_LED_YELLOW == mask) {
-               if (STATUS_LED_ON == saved_state[STATUS_LED_YELLOW])
-                       yellow_led_off();
-               else
-                       yellow_led_on();
-       }
-}
-
-void __led_set(led_id_t mask, int state)
-{
-       if (STATUS_LED_BLUE == mask) {
-               if (STATUS_LED_ON == state)
-                       blue_led_on();
-               else
-                       blue_led_off();
-       } else if (STATUS_LED_RED == mask) {
-               if (STATUS_LED_ON == state)
-                       red_led_on();
-               else
-                       red_led_off();
-       } else if (STATUS_LED_GREEN == mask) {
-               if (STATUS_LED_ON == state)
-                       green_led_on();
-               else
-                       green_led_off();
-       } else if (STATUS_LED_YELLOW == mask) {
-               if (STATUS_LED_ON == state)
-                       yellow_led_on();
-               else
-                       yellow_led_off();
-       }
-}
diff --git a/board/eukrea/cpuat91/Kconfig b/board/eukrea/cpuat91/Kconfig
deleted file mode 100644 (file)
index 27b005c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_CPUAT91
-
-config SYS_BOARD
-       default "cpuat91"
-
-config SYS_VENDOR
-       default "eukrea"
-
-config SYS_CONFIG_NAME
-       default "cpuat91"
-
-endif
diff --git a/board/eukrea/cpuat91/MAINTAINERS b/board/eukrea/cpuat91/MAINTAINERS
deleted file mode 100644 (file)
index 1f6bc79..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CPUAT91 BOARD
-M:     Eric Benard <eric@eukrea.com>
-S:     Maintained
-F:     board/eukrea/cpuat91/
-F:     include/configs/cpuat91.h
-F:     configs/cpuat91_defconfig
-F:     configs/cpuat91_ram_defconfig
diff --git a/board/eukrea/cpuat91/Makefile b/board/eukrea/cpuat91/Makefile
deleted file mode 100644 (file)
index 59b80c2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2003-2006
-# Wolfgang Denk, DENX Software Engineering, wd at denx.de. <http://lists.denx.de/mailman/listinfo/u-boot>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := cpuat91.o
diff --git a/board/eukrea/cpuat91/cpuat91.c b/board/eukrea/cpuat91/cpuat91.c
deleted file mode 100644 (file)
index ec0ce0b..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * (C) Copyright 2006-2010 Eukrea Electromatique <www.eukrea.com>
- * Eric Benard <eric@eukrea.com>
- * based on at91rm9200dk.c which is :
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-
-#include <asm/io.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/at91_pio.h>
-#include <asm/arch/at91_pmc.h>
-#include <asm/arch/at91_common.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
-       /* arch number of CPUAT91-Board */
-       gd->bd->bi_arch_number = MACH_TYPE_CPUAT91;
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
-
-       return 0;
-}
-
-int board_early_init_f(void)
-{
-       at91_seriald_hw_init();
-       return 0;
-}
-
-
-int dram_init(void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((long *)CONFIG_SYS_SDRAM_BASE,
-                       CONFIG_SYS_SDRAM_SIZE);
-       return 0;
-}
-
-#ifdef CONFIG_DRIVER_AT91EMAC
-int board_eth_init(bd_t *bis)
-{
-       return at91emac_register(bis, (u32) ATMEL_BASE_EMAC);
-}
-#endif
-
-#ifdef CONFIG_SYS_I2C_SOFT
-void i2c_init_board(void)
-{
-       u32 pin;
-       at91_pmc_t *pmc = (at91_pmc_t *) ATMEL_BASE_PMC;
-       at91_pio_t *pio = (at91_pio_t *) ATMEL_BASE_PIO;
-
-       writel(1 << AT91_ID_PIOA, &pmc->pcer);
-       pin = AT91_PMX_AA_TWD | AT91_PMX_AA_TWCK;
-       writel(pin, &pio->pioa.idr);
-       writel(pin, &pio->pioa.pudr);
-       writel(pin, &pio->pioa.per);
-       writel(pin, &pio->pioa.oer);
-       writel(pin, &pio->pioa.sodr);
-}
-#endif
diff --git a/board/firefly/firefly-rk3288/Kconfig b/board/firefly/firefly-rk3288/Kconfig
new file mode 100644 (file)
index 0000000..1c2bca8
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_FIREFLY_RK3288
+
+config SYS_BOARD
+       default "firefly-rk3288"
+
+config SYS_VENDOR
+       default "firefly"
+
+config SYS_CONFIG_NAME
+       default "firefly-rk3288"
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+       def_bool y
+
+endif
diff --git a/board/firefly/firefly-rk3288/MAINTAINERS b/board/firefly/firefly-rk3288/MAINTAINERS
new file mode 100644 (file)
index 0000000..42db0bd
--- /dev/null
@@ -0,0 +1,6 @@
+FIREFLY
+M:     Simon Glass <sjg@chromium.org>
+S:     Maintained
+F:     board/firefly/firefly-rk3288
+F:     include/configs/firefly-rk3288.h
+F:     configs/firefly-rk3288_defconfig
diff --git a/board/firefly/firefly-rk3288/Makefile b/board/firefly/firefly-rk3288/Makefile
new file mode 100644 (file)
index 0000000..6716845
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# (C) Copyright 2015 Google, Inc
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  += firefly-rk3288.o
diff --git a/board/firefly/firefly-rk3288/firefly-rk3288.c b/board/firefly/firefly-rk3288/firefly-rk3288.c
new file mode 100644 (file)
index 0000000..5119e95
--- /dev/null
@@ -0,0 +1,7 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
index d6ef6ba10d635e289d92280d90d5519ad1a97dff..655fc644fe90e036578cd37b3e177df6050392af 100644 (file)
 #include <asm/arch/clock.h>
 #include <asm/arch/fsl_serdes.h>
 #include <asm/arch/ls102xa_stream_id.h>
+#include <asm/arch/ls102xa_devdis.h>
 #include <hwconfig.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <fsl_ifc.h>
 #include <fsl_sec.h>
 #include <spl.h>
+#include <fsl_devdis.h>
 
 #include "../common/sleep.h"
 #include "../common/qixis.h"
@@ -280,7 +282,8 @@ int board_early_init_f(void)
        unsigned int major;
 
 #ifdef CONFIG_TSEC_ENET
-       out_be32(&scfg->etsecdmamcr, SCFG_ETSECDMAMCR_LE_BD_FR);
+       /* clear BD & FR bits for BE BD's and frame data */
+       clrbits_be32(&scfg->etsecdmamcr, SCFG_ETSECDMAMCR_LE_BD_FR);
 #endif
 
 #ifdef CONFIG_FSL_IFC
@@ -530,6 +533,9 @@ int misc_init_r(void)
        else if (hwconfig("sdhc"))
                config_board_mux(MUX_TYPE_SDHC);
 
+#ifdef CONFIG_FSL_DEVICE_DISABLE
+       device_disable(devdis_tbl, ARRAY_SIZE(devdis_tbl));
+#endif
 #ifdef CONFIG_FSL_CAAM
        return sec_init();
 #endif
index b7458a9e9950902c93ff16f0d80daa244f04baf8..228dbf81bb25eba2c2758f39836ee61778d38467 100644 (file)
@@ -12,6 +12,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/fsl_serdes.h>
 #include <asm/arch/ls102xa_stream_id.h>
+#include <asm/arch/ls102xa_devdis.h>
 #include <hwconfig.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
@@ -21,6 +22,7 @@
 #include <fsl_mdio.h>
 #include <tsec.h>
 #include <fsl_sec.h>
+#include <fsl_devdis.h>
 #include <spl.h>
 #include "../common/sleep.h"
 #ifdef CONFIG_U_QE
@@ -481,7 +483,8 @@ int board_early_init_f(void)
        unsigned int major;
 
 #ifdef CONFIG_TSEC_ENET
-       out_be32(&scfg->etsecdmamcr, SCFG_ETSECDMAMCR_LE_BD_FR);
+       /* clear BD & FR bits for BE BD's and frame data */
+       clrbits_be32(&scfg->etsecdmamcr, SCFG_ETSECDMAMCR_LE_BD_FR);
        out_be32(&scfg->etsecmcr, SCFG_ETSECCMCR_GE2_CLK125);
 #endif
 
@@ -651,6 +654,9 @@ int board_init(void)
 #if defined(CONFIG_MISC_INIT_R)
 int misc_init_r(void)
 {
+#ifdef CONFIG_FSL_DEVICE_DISABLE
+       device_disable(devdis_tbl, ARRAY_SIZE(devdis_tbl));
+#endif
 #ifndef CONFIG_QSPI_BOOT
        config_board_mux();
 #endif
index 572c4b8446553859bd176b82883a134161a3b8a4..90b4e4715d7a6d9d2201b7488ccd5e0e24621d9c 100644 (file)
@@ -4,6 +4,5 @@ S:      Maintained
 F:     board/freescale/ls2085a/
 F:     include/configs/ls2085a_emu.h
 F:     configs/ls2085a_emu_defconfig
-F:     configs/ls2085a_emu_D4_defconfig
 F:     include/configs/ls2085a_simu.h
 F:     configs/ls2085a_simu_defconfig
index 11b2e79945f7c3db40b38a5bf3574932b37285d4..e4a6f69bfcfe49fedabc82ac5038a89c873647f7 100644 (file)
@@ -146,3 +146,84 @@ below:
    earlycon=uart8250,mmio,0x21c0600,115200 default_hugepagesz=2m hugepagesz=2m
    hugepages=16 mem=2048M'
 
+
+X-QSGMII-16PORT riser card
+----------------------------
+The X-QSGMII-16PORT is a 4xQSGMII/8xSGMII riser card with eighth SerDes
+interfaces implemented in PCIe form factor board.
+It supports followings
+ - Card can operate with up to 4 QSGMII lane simultaneously
+ - Card can operate with up to 8 SGMII lane simultaneously
+
+Supported card configuration
+       - CSEL  : ON ON ON ON
+       - MSEL1 : ON ON ON ON OFF OFF OFF OFF
+       - MSEL2 : OFF OFF OFF OFF ON ON ON ON
+
+To enable this card: modify hwconfig to add "xqsgmii" variable.
+
+Supported PHY addresses during SGMII:
+#define XQSGMII_CARD_PHY1_PORT0_ADDR 0x0
+#define XQSGMII_CARD_PHY1_PORT2_ADDR 0x2
+#define XQSGMII_CARD_PHY2_PORT0_ADDR 0x4
+#define XQSGMII_CARD_PHY2_PORT2_ADDR 0x6
+#define XQSGMII_CARD_PHY3_PORT0_ADDR 0x8
+#define XQSGMII_CARD_PHY3_PORT2_ADDR 0xa
+#define XQSGMII_CARD_PHY4_PORT0_ADDR 0xc
+#define XQSGMII_CARD_PHY4_PORT2_ADDR 0xe
+
+Mapping DPMACx to PHY during QSGMII
+DPMAC1 -> PHY1-P0
+DPMAC2 -> PHY2-P0
+DPMAC3 -> PHY3-P0
+DPMAC4 -> PHY4-P0
+DPMAC5 -> PHY3-P2
+DPMAC6 -> PHY1-P2
+DPMAC7 -> PHY4-P1
+DPMAC8 -> PHY2-P2
+DPMAC9 -> PHY1-P0
+DPMAC10 -> PHY2-P0
+DPMAC11 -> PHY3-P0
+DPMAC12 -> PHY4-P0
+DPMAC13 -> PHY3-P2
+DPMAC14 -> PHY1-P2
+DPMAC15 -> PHY4-P1
+DPMAC16 -> PHY2-P2
+
+
+Supported PHY address during QSGMII
+#define XQSGMII_CARD_PHY1_PORT0_ADDR 0x0
+#define XQSGMII_CARD_PHY1_PORT1_ADDR 0x1
+#define XQSGMII_CARD_PHY1_PORT2_ADDR 0x2
+#define XQSGMII_CARD_PHY1_PORT3_ADDR 0x3
+#define XQSGMII_CARD_PHY2_PORT0_ADDR 0x4
+#define XQSGMII_CARD_PHY2_PORT1_ADDR 0x5
+#define XQSGMII_CARD_PHY2_PORT2_ADDR 0x6
+#define XQSGMII_CARD_PHY2_PORT3_ADDR 0x7
+#define XQSGMII_CARD_PHY3_PORT0_ADDR 0x8
+#define XQSGMII_CARD_PHY3_PORT1_ADDR 0x9
+#define XQSGMII_CARD_PHY3_PORT2_ADDR 0xa
+#define XQSGMII_CARD_PHY3_PORT3_ADDR 0xb
+#define XQSGMII_CARD_PHY4_PORT0_ADDR 0xc
+#define XQSGMII_CARD_PHY4_PORT1_ADDR 0xd
+#define XQSGMII_CARD_PHY4_PORT2_ADDR 0xe
+#define XQSGMII_CARD_PHY4_PORT3_ADDR 0xf
+
+Mapping DPMACx to PHY during QSGMII
+DPMAC1 -> PHY1-P3
+DPMAC2 -> PHY1-P2
+DPMAC3 -> PHY1-P1
+DPMAC4 -> PHY1-P0
+DPMAC5 -> PHY2-P3
+DPMAC6 -> PHY2-P2
+DPMAC7 -> PHY2-P1
+DPMAC8 -> PHY2-P0
+DPMAC9 -> PHY3-P0
+DPMAC10 -> PHY3-P1
+DPMAC11 -> PHY3-P2
+DPMAC12 -> PHY3-P3
+DPMAC13 -> PHY4-P0
+DPMAC14 -> PHY4-P1
+DPMAC15 -> PHY4-P2
+DPMAC16 -> PHY4-P3
+
index 1f8a31ff003bc0d3db0f2d4a9f73544eabe6df3b..007b433d811d294b63d91e4fa53a0b606778448a 100644 (file)
@@ -9,9 +9,12 @@
 #include <asm/io.h>
 #include <asm/arch/fsl_serdes.h>
 #include <asm/arch-fsl-lsch3/immap_lsch3.h>
+#include <hwconfig.h>
 #include <fsl_mdio.h>
 #include <malloc.h>
 #include <fm_eth.h>
+#include <i2c.h>
+#include <miiphy.h>
 #include <fsl-mc/ldpaa_wriop.h>
 
 #include "../common/qixis.h"
   * maps to something other than a board slot.
   */
 
+static u8 lane_to_slot_fsm1[] = {
+       0, 0, 0, 0, 0, 0, 0, 0
+};
+
 static u8 lane_to_slot_fsm2[] = {
        0, 0, 0, 0, 0, 0, 0, 0
 };
@@ -37,7 +44,19 @@ static u8 lane_to_slot_fsm2[] = {
 /* On the Vitesse VSC8234XHG SGMII riser card there are 4 SGMII PHYs
  * housed.
  */
-static int riser_phy_addr[] = {
+
+static int xqsgii_riser_phy_addr[] = {
+       XQSGMII_CARD_PHY1_PORT0_ADDR,
+       XQSGMII_CARD_PHY2_PORT0_ADDR,
+       XQSGMII_CARD_PHY3_PORT0_ADDR,
+       XQSGMII_CARD_PHY4_PORT0_ADDR,
+       XQSGMII_CARD_PHY3_PORT2_ADDR,
+       XQSGMII_CARD_PHY1_PORT2_ADDR,
+       XQSGMII_CARD_PHY4_PORT2_ADDR,
+       XQSGMII_CARD_PHY2_PORT2_ADDR,
+};
+
+static int sgmii_riser_phy_addr[] = {
        SGMII_CARD_PORT1_PHY_ADDR,
        SGMII_CARD_PORT2_PHY_ADDR,
        SGMII_CARD_PORT3_PHY_ADDR,
@@ -70,6 +89,236 @@ struct ls2085a_qds_mdio {
        struct mii_dev *realbus;
 };
 
+static void sgmii_configure_repeater(int serdes_port)
+{
+       struct mii_dev *bus;
+       uint8_t a = 0xf;
+       int i, j, ret;
+       int dpmac_id = 0, dpmac, mii_bus = 0;
+       unsigned short value;
+       char dev[2][20] = {"LS2085A_QDS_MDIO0", "LS2085A_QDS_MDIO3"};
+       uint8_t i2c_addr[] = {0x58, 0x59, 0x5a, 0x5b, 0x5c, 0x5d, 0x5f, 0x60};
+
+       uint8_t ch_a_eq[] = {0x1, 0x2, 0x3, 0x7};
+       uint8_t ch_a_ctl2[] = {0x81, 0x82, 0x83, 0x84};
+       uint8_t ch_b_eq[] = {0x1, 0x2, 0x3, 0x7};
+       uint8_t ch_b_ctl2[] = {0x81, 0x82, 0x83, 0x84};
+
+       int *riser_phy_addr = &xqsgii_riser_phy_addr[0];
+
+       /* Set I2c to Slot 1 */
+       i2c_write(0x77, 0, 0, &a, 1);
+
+       for (dpmac = 0; dpmac < 8; dpmac++) {
+               /* Check the PHY status */
+               switch (serdes_port) {
+               case 1:
+                       mii_bus = 0;
+                       dpmac_id = dpmac + 1;
+                       break;
+               case 2:
+                       mii_bus = 1;
+                       dpmac_id = dpmac + 9;
+                       a = 0xb;
+                       i2c_write(0x76, 0, 0, &a, 1);
+                       break;
+               }
+
+               ret = miiphy_set_current_dev(dev[mii_bus]);
+               if (ret > 0)
+                       goto error;
+
+               bus = mdio_get_current_dev();
+               debug("Reading from bus %s\n", bus->name);
+
+               ret = miiphy_write(dev[mii_bus], riser_phy_addr[dpmac], 0x1f,
+                                  3);
+               if (ret > 0)
+                       goto error;
+
+               mdelay(10);
+               ret = miiphy_read(dev[mii_bus], riser_phy_addr[dpmac], 0x11,
+                                 &value);
+               if (ret > 0)
+                       goto error;
+
+               mdelay(10);
+
+               if ((value & 0xfff) == 0x40f) {
+                       printf("DPMAC %d:PHY is ..... Configured\n", dpmac_id);
+                       continue;
+               }
+
+               for (i = 0; i < 4; i++) {
+                       for (j = 0; j < 4; j++) {
+                               a = 0x18;
+                               i2c_write(i2c_addr[dpmac], 6, 1, &a, 1);
+                               a = 0x38;
+                               i2c_write(i2c_addr[dpmac], 4, 1, &a, 1);
+                               a = 0x4;
+                               i2c_write(i2c_addr[dpmac], 8, 1, &a, 1);
+
+                               i2c_write(i2c_addr[dpmac], 0xf, 1,
+                                         &ch_a_eq[i], 1);
+                               i2c_write(i2c_addr[dpmac], 0x11, 1,
+                                         &ch_a_ctl2[j], 1);
+
+                               i2c_write(i2c_addr[dpmac], 0x16, 1,
+                                         &ch_b_eq[i], 1);
+                               i2c_write(i2c_addr[dpmac], 0x18, 1,
+                                         &ch_b_ctl2[j], 1);
+
+                               a = 0x14;
+                               i2c_write(i2c_addr[dpmac], 0x23, 1, &a, 1);
+                               a = 0xb5;
+                               i2c_write(i2c_addr[dpmac], 0x2d, 1, &a, 1);
+                               a = 0x20;
+                               i2c_write(i2c_addr[dpmac], 4, 1, &a, 1);
+                               mdelay(100);
+                               ret = miiphy_read(dev[mii_bus],
+                                                 riser_phy_addr[dpmac],
+                                                 0x11, &value);
+                               if (ret > 0)
+                                       goto error;
+
+                               mdelay(1);
+                               ret = miiphy_read(dev[mii_bus],
+                                                 riser_phy_addr[dpmac],
+                                                 0x11, &value);
+                               if (ret > 0)
+                                       goto error;
+                               mdelay(10);
+
+                               if ((value & 0xfff) == 0x40f) {
+                                       printf("DPMAC %d :PHY is configured ",
+                                              dpmac_id);
+                                       printf("after setting repeater 0x%x\n",
+                                              value);
+                                       i = 5;
+                                       j = 5;
+                               } else
+                                       printf("DPMAC %d :PHY is failed to ",
+                                              dpmac_id);
+                                       printf("configure the repeater 0x%x\n",
+                                              value);
+                               }
+               }
+       }
+error:
+       if (ret)
+               printf("DPMAC %d ..... FAILED to configure PHY\n", dpmac_id);
+       return;
+}
+
+static void qsgmii_configure_repeater(int dpmac)
+{
+       uint8_t a = 0xf;
+       int i, j;
+       int i2c_phy_addr = 0;
+       int phy_addr = 0;
+       int i2c_addr[] = {0x58, 0x59, 0x5a, 0x5b};
+
+       uint8_t ch_a_eq[] = {0x1, 0x2, 0x3, 0x7};
+       uint8_t ch_a_ctl2[] = {0x81, 0x82, 0x83, 0x84};
+       uint8_t ch_b_eq[] = {0x1, 0x2, 0x3, 0x7};
+       uint8_t ch_b_ctl2[] = {0x81, 0x82, 0x83, 0x84};
+
+       const char *dev = "LS2085A_QDS_MDIO0";
+       int ret = 0;
+       unsigned short value;
+
+       /* Set I2c to Slot 1 */
+       i2c_write(0x77, 0, 0, &a, 1);
+
+       switch (dpmac) {
+       case 1:
+       case 2:
+       case 3:
+       case 4:
+               i2c_phy_addr = i2c_addr[0];
+               phy_addr = 0;
+               break;
+
+       case 5:
+       case 6:
+       case 7:
+       case 8:
+               i2c_phy_addr = i2c_addr[1];
+               phy_addr = 4;
+               break;
+
+       case 9:
+       case 10:
+       case 11:
+       case 12:
+               i2c_phy_addr = i2c_addr[2];
+               phy_addr = 8;
+               break;
+
+       case 13:
+       case 14:
+       case 15:
+       case 16:
+               i2c_phy_addr = i2c_addr[3];
+               phy_addr = 0xc;
+               break;
+       }
+
+       /* Check the PHY status */
+       ret = miiphy_set_current_dev(dev);
+       ret = miiphy_write(dev, phy_addr, 0x1f, 3);
+       mdelay(10);
+       ret = miiphy_read(dev, phy_addr, 0x11, &value);
+       mdelay(10);
+       ret = miiphy_read(dev, phy_addr, 0x11, &value);
+       mdelay(10);
+       if ((value & 0xf) == 0xf) {
+               printf("DPMAC %d :PHY is ..... Configured\n", dpmac);
+               return;
+       }
+
+       for (i = 0; i < 4; i++) {
+               for (j = 0; j < 4; j++) {
+                       a = 0x18;
+                       i2c_write(i2c_phy_addr, 6, 1, &a, 1);
+                       a = 0x38;
+                       i2c_write(i2c_phy_addr, 4, 1, &a, 1);
+                       a = 0x4;
+                       i2c_write(i2c_phy_addr, 8, 1, &a, 1);
+
+                       i2c_write(i2c_phy_addr, 0xf, 1, &ch_a_eq[i], 1);
+                       i2c_write(i2c_phy_addr, 0x11, 1, &ch_a_ctl2[j], 1);
+
+                       i2c_write(i2c_phy_addr, 0x16, 1, &ch_b_eq[i], 1);
+                       i2c_write(i2c_phy_addr, 0x18, 1, &ch_b_ctl2[j], 1);
+
+                       a = 0x14;
+                       i2c_write(i2c_phy_addr, 0x23, 1, &a, 1);
+                       a = 0xb5;
+                       i2c_write(i2c_phy_addr, 0x2d, 1, &a, 1);
+                       a = 0x20;
+                       i2c_write(i2c_phy_addr, 4, 1, &a, 1);
+                       mdelay(100);
+                       ret = miiphy_read(dev, phy_addr, 0x11, &value);
+                       if (ret > 0)
+                               goto error;
+                       mdelay(1);
+                       ret = miiphy_read(dev, phy_addr, 0x11, &value);
+                       if (ret > 0)
+                               goto error;
+                       mdelay(10);
+                       if ((value & 0xf) == 0xf) {
+                               printf("DPMAC %d :PHY is ..... Configured\n",
+                                      dpmac);
+                               return;
+                       }
+               }
+       }
+error:
+       printf("DPMAC %d :PHY ..... FAILED to configure PHY\n", dpmac);
+       return;
+}
+
 static const char *ls2085a_qds_mdio_name_for_muxval(u8 muxval)
 {
        return mdio_names[muxval];
@@ -195,14 +444,38 @@ static void initialize_dpmac_to_slot(void)
                                FSL_CHASSIS3_RCWSR28_SRDS2_PRTCL_MASK)
                >> FSL_CHASSIS3_RCWSR28_SRDS2_PRTCL_SHIFT;
 
+       char *env_hwconfig;
+       env_hwconfig = getenv("hwconfig");
 
        switch (serdes1_prtcl) {
+       case 0x07:
+       case 0x09:
+       case 0x33:
+               printf("qds: WRIOP: Supported SerDes1 Protocol 0x%02x\n",
+                      serdes1_prtcl);
+               lane_to_slot_fsm1[0] = EMI1_SLOT1;
+               lane_to_slot_fsm1[1] = EMI1_SLOT1;
+               lane_to_slot_fsm1[2] = EMI1_SLOT1;
+               lane_to_slot_fsm1[3] = EMI1_SLOT1;
+               if (hwconfig_f("xqsgmii", env_hwconfig)) {
+                       lane_to_slot_fsm1[4] = EMI1_SLOT1;
+                       lane_to_slot_fsm1[5] = EMI1_SLOT1;
+                       lane_to_slot_fsm1[6] = EMI1_SLOT1;
+                       lane_to_slot_fsm1[7] = EMI1_SLOT1;
+               } else {
+                       lane_to_slot_fsm1[4] = EMI1_SLOT2;
+                       lane_to_slot_fsm1[5] = EMI1_SLOT2;
+                       lane_to_slot_fsm1[6] = EMI1_SLOT2;
+                       lane_to_slot_fsm1[7] = EMI1_SLOT2;
+               }
+               break;
+
        case 0x2A:
-               printf("qds: WRIOP: Supported SerDes Protocol 0x%02x\n",
+               printf("qds: WRIOP: Supported SerDes1 Protocol 0x%02x\n",
                       serdes1_prtcl);
                break;
        default:
-               printf("qds: WRIOP: Unsupported SerDes Protocol 0x%02x\n",
+               printf("qds: WRIOP: Unsupported SerDes1 Protocol 0x%02x\n",
                       serdes1_prtcl);
                break;
        }
@@ -210,21 +483,30 @@ static void initialize_dpmac_to_slot(void)
        switch (serdes2_prtcl) {
        case 0x07:
        case 0x08:
+       case 0x09:
        case 0x49:
-               printf("qds: WRIOP: Supported SerDes Protocol 0x%02x\n",
+               printf("qds: WRIOP: Supported SerDes2 Protocol 0x%02x\n",
                       serdes2_prtcl);
                lane_to_slot_fsm2[0] = EMI1_SLOT4;
                lane_to_slot_fsm2[1] = EMI1_SLOT4;
                lane_to_slot_fsm2[2] = EMI1_SLOT4;
                lane_to_slot_fsm2[3] = EMI1_SLOT4;
-               /* No MDIO physical connection */
-               lane_to_slot_fsm2[4] = EMI1_SLOT6;
-               lane_to_slot_fsm2[5] = EMI1_SLOT6;
-               lane_to_slot_fsm2[6] = EMI1_SLOT6;
-               lane_to_slot_fsm2[7] = EMI1_SLOT6;
+
+               if (hwconfig_f("xqsgmii", env_hwconfig)) {
+                       lane_to_slot_fsm2[4] = EMI1_SLOT4;
+                       lane_to_slot_fsm2[5] = EMI1_SLOT4;
+                       lane_to_slot_fsm2[6] = EMI1_SLOT4;
+                       lane_to_slot_fsm2[7] = EMI1_SLOT4;
+               } else {
+                       /* No MDIO physical connection */
+                       lane_to_slot_fsm2[4] = EMI1_SLOT6;
+                       lane_to_slot_fsm2[5] = EMI1_SLOT6;
+                       lane_to_slot_fsm2[6] = EMI1_SLOT6;
+                       lane_to_slot_fsm2[7] = EMI1_SLOT6;
+               }
                break;
        default:
-               printf("qds: WRIOP: Unsupported SerDes Protocol 0x%02x\n",
+               printf("qds: WRIOP: Unsupported SerDes2 Protocol 0x%02x\n",
                       serdes2_prtcl);
                break;
        }
@@ -242,9 +524,69 @@ void ls2085a_handle_phy_interface_sgmii(int dpmac_id)
                                FSL_CHASSIS3_RCWSR28_SRDS2_PRTCL_MASK)
                >> FSL_CHASSIS3_RCWSR28_SRDS2_PRTCL_SHIFT;
 
+       int *riser_phy_addr;
+       char *env_hwconfig = getenv("hwconfig");
+
+       if (hwconfig_f("xqsgmii", env_hwconfig))
+               riser_phy_addr = &xqsgii_riser_phy_addr[0];
+       else
+               riser_phy_addr = &sgmii_riser_phy_addr[0];
+
+       if (dpmac_id > WRIOP1_DPMAC9)
+               goto serdes2;
+
        switch (serdes1_prtcl) {
+       case 0x07:
+
+               lane = serdes_get_first_lane(FSL_SRDS_1, SGMII1 + dpmac_id);
+               slot = lane_to_slot_fsm1[lane];
+
+               switch (++slot) {
+               case 1:
+                       /* Slot housing a SGMII riser card? */
+                       wriop_set_phy_address(dpmac_id,
+                                             riser_phy_addr[dpmac_id - 1]);
+                       dpmac_info[dpmac_id].board_mux = EMI1_SLOT1;
+                       bus = mii_dev_for_muxval(EMI1_SLOT1);
+                       wriop_set_mdio(dpmac_id, bus);
+                       dpmac_info[dpmac_id].phydev = phy_connect(
+                                               dpmac_info[dpmac_id].bus,
+                                               dpmac_info[dpmac_id].phy_addr,
+                                               NULL,
+                                               dpmac_info[dpmac_id].enet_if);
+                       phy_config(dpmac_info[dpmac_id].phydev);
+                       break;
+               case 2:
+                       /* Slot housing a SGMII riser card? */
+                       wriop_set_phy_address(dpmac_id,
+                                             riser_phy_addr[dpmac_id - 1]);
+                       dpmac_info[dpmac_id].board_mux = EMI1_SLOT2;
+                       bus = mii_dev_for_muxval(EMI1_SLOT2);
+                       wriop_set_mdio(dpmac_id, bus);
+                       dpmac_info[dpmac_id].phydev = phy_connect(
+                                               dpmac_info[dpmac_id].bus,
+                                               dpmac_info[dpmac_id].phy_addr,
+                                               NULL,
+                                               dpmac_info[dpmac_id].enet_if);
+                       phy_config(dpmac_info[dpmac_id].phydev);
+                       break;
+               case 3:
+                       break;
+               case 4:
+                       break;
+               case 5:
+                       break;
+               case 6:
+                       break;
+               }
+       break;
+       default:
+               printf("qds: WRIOP: Unsupported SerDes1 Protocol 0x%02x\n",
+                      serdes1_prtcl);
+       break;
        }
 
+serdes2:
        switch (serdes2_prtcl) {
        case 0x07:
        case 0x08:
@@ -285,11 +627,86 @@ void ls2085a_handle_phy_interface_sgmii(int dpmac_id)
        }
        break;
        default:
-               printf("qds: WRIOP: Unsupported SerDes Protocol 0x%02x\n",
+               printf("qds: WRIOP: Unsupported SerDes2 Protocol 0x%02x\n",
                       serdes2_prtcl);
        break;
        }
 }
+
+void ls2085a_handle_phy_interface_qsgmii(int dpmac_id)
+{
+       int lane = 0, slot;
+       struct mii_dev *bus;
+       struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;
+       int serdes1_prtcl = (in_le32(&gur->rcwsr[28]) &
+                               FSL_CHASSIS3_RCWSR28_SRDS1_PRTCL_MASK)
+               >> FSL_CHASSIS3_RCWSR28_SRDS1_PRTCL_SHIFT;
+
+       switch (serdes1_prtcl) {
+       case 0x33:
+               switch (dpmac_id) {
+               case 1:
+               case 2:
+               case 3:
+               case 4:
+                       lane = serdes_get_first_lane(FSL_SRDS_1, QSGMII_A);
+               break;
+               case 5:
+               case 6:
+               case 7:
+               case 8:
+                       lane = serdes_get_first_lane(FSL_SRDS_1, QSGMII_B);
+               break;
+               case 9:
+               case 10:
+               case 11:
+               case 12:
+                       lane = serdes_get_first_lane(FSL_SRDS_1, QSGMII_C);
+               break;
+               case 13:
+               case 14:
+               case 15:
+               case 16:
+                       lane = serdes_get_first_lane(FSL_SRDS_1, QSGMII_D);
+               break;
+       }
+
+               slot = lane_to_slot_fsm1[lane];
+
+               switch (++slot) {
+               case 1:
+                       /* Slot housing a QSGMII riser card? */
+                       wriop_set_phy_address(dpmac_id, dpmac_id - 1);
+                       dpmac_info[dpmac_id].board_mux = EMI1_SLOT1;
+                       bus = mii_dev_for_muxval(EMI1_SLOT1);
+                       wriop_set_mdio(dpmac_id, bus);
+                       dpmac_info[dpmac_id].phydev = phy_connect(
+                                               dpmac_info[dpmac_id].bus,
+                                               dpmac_info[dpmac_id].phy_addr,
+                                               NULL,
+                                               dpmac_info[dpmac_id].enet_if);
+
+                       phy_config(dpmac_info[dpmac_id].phydev);
+                       break;
+               case 3:
+                       break;
+               case 4:
+                       break;
+               case 5:
+               break;
+               case 6:
+                       break;
+       }
+       break;
+       default:
+               printf("qds: WRIOP: Unsupported SerDes Protocol 0x%02x\n",
+                      serdes1_prtcl);
+       break;
+       }
+
+       qsgmii_configure_repeater(dpmac_id);
+}
+
 void ls2085a_handle_phy_interface_xsgmii(int i)
 {
        struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;
@@ -324,9 +741,20 @@ int board_eth_init(bd_t *bis)
 {
        int error;
 #ifdef CONFIG_FSL_MC_ENET
+       struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;
+       int serdes1_prtcl = (in_le32(&gur->rcwsr[28]) &
+                               FSL_CHASSIS3_RCWSR28_SRDS1_PRTCL_MASK)
+               >> FSL_CHASSIS3_RCWSR28_SRDS1_PRTCL_SHIFT;
+       int serdes2_prtcl = (in_le32(&gur->rcwsr[28]) &
+                               FSL_CHASSIS3_RCWSR28_SRDS2_PRTCL_MASK)
+               >> FSL_CHASSIS3_RCWSR28_SRDS2_PRTCL_SHIFT;
+
        struct memac_mdio_info *memac_mdio0_info;
        struct memac_mdio_info *memac_mdio1_info;
        unsigned int i;
+       char *env_hwconfig;
+
+       env_hwconfig = getenv("hwconfig");
 
        initialize_dpmac_to_slot();
 
@@ -363,6 +791,7 @@ int board_eth_init(bd_t *bis)
        for (i = WRIOP1_DPMAC1; i < NUM_WRIOP_PORTS; i++) {
                switch (wriop_get_enet_if(i)) {
                case PHY_INTERFACE_MODE_QSGMII:
+                       ls2085a_handle_phy_interface_qsgmii(i);
                        break;
                case PHY_INTERFACE_MODE_SGMII:
                        ls2085a_handle_phy_interface_sgmii(i);
@@ -372,11 +801,26 @@ int board_eth_init(bd_t *bis)
                        break;
                default:
                        break;
+
+               if (i == 16)
+                       i = NUM_WRIOP_PORTS;
                }
        }
 
        error = cpu_eth_init(bis);
+
+       if (hwconfig_f("xqsgmii", env_hwconfig)) {
+               if (serdes1_prtcl == 0x7)
+                       sgmii_configure_repeater(1);
+               if (serdes2_prtcl == 0x7 || serdes2_prtcl == 0x8 ||
+                   serdes2_prtcl == 0x49)
+                       sgmii_configure_repeater(2);
+       }
 #endif
        error = pci_eth_init(bis);
        return error;
 }
+
+#ifdef CONFIG_FSL_MC_ENET
+
+#endif
index 08906a6255fcaa706de7a6bdd9ca547683dcb6d8..2315bdb1304623a16833ca760788253d3fdcbe96 100644 (file)
@@ -16,6 +16,7 @@
 #include <fsl-mc/fsl_mc.h>
 #include <environment.h>
 #include <i2c.h>
+#include <rtc.h>
 #include <asm/arch-fsl-lsch3/soc.h>
 #include <hwconfig.h>
 
@@ -209,6 +210,7 @@ int board_init(void)
        gd->env_addr = (ulong)&default_environment[0];
 #endif
        select_i2c_ch_pca9547(I2C_MUX_CH_DEFAULT);
+       rtc_enable_32khz_output();
 
        return 0;
 }
index 4af33af18527d71f6fba5bf88502fe45dba2181e..8ab8b460f92a41790ebbf731ec2344265d035fe2 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "freescale"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "mx6qarm2"
 
index cc2a140c52e9e8f1b03065b2e111fee0f0877043..e579c0f6f88b343f69e7b94239e0d0811c23e1b6 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "freescale"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "mx6qsabreauto"
 
index 98602f889ec67fdfd1678851b546ebd983f849f9..7c0e90ad0bc0f866b1c32fde76866e385523ee24 100644 (file)
@@ -361,7 +361,7 @@ static void setup_fec(void)
                 * select ENET MAC0 TX clock from PLL
                 */
                imx_iomux_set_gpr_register(5, 9, 1, 1);
-               enable_fec_anatop_clock(ENET_125MHZ);
+               enable_fec_anatop_clock(0, ENET_125MHZ);
        }
 
        setup_iomux_enet();
index fa6ddb22921c1ff23c20e4d355b2522de57b7ad9..e87dea0d7a2026d8552397bfaf76e0d6d02a08aa 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "freescale"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "mx6sabresd"
 
index eb8a8b38266a7fa685f15066eb234d1a630386c1..564416700857203a62fe5fc2e0c3146cbe8507f8 100644 (file)
@@ -824,6 +824,7 @@ static void spl_dram_init(void)
                .bi_on = 1,     /* Bank interleaving enabled */
                .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
                .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
+               .ddr_type = DDR_TYPE_DDR3,
        };
 
        mx6dq_dram_iocfg(64, &mx6_ddr_ioregs, &mx6_grp_ioregs);
index d32da900a39f496a4d0973a248f2e959a2ebb3ef..18482b551e5baff2d8b0f5812df3236ee124180a 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "freescale"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "mx6slevk"
 
index 7c18c90bce9eb96275fab8ae6cd30fc2fcfd6593..6ba604e707532b01556ae72c2aa541d603c042f9 100644 (file)
@@ -8,7 +8,9 @@
 
 #include <asm/arch/clock.h>
 #include <asm/arch/iomux.h>
+#include <asm/arch/crm_regs.h>
 #include <asm/arch/imx-regs.h>
+#include <asm/arch/mx6-ddr.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
@@ -190,6 +192,7 @@ int board_mmc_getcd(struct mmc *mmc)
 
 int board_mmc_init(bd_t *bis)
 {
+#ifndef CONFIG_SPL_BUILD
        int i, ret;
 
        /*
@@ -234,6 +237,44 @@ int board_mmc_init(bd_t *bis)
        }
 
        return 0;
+#else
+       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
+       u32 val;
+       u32 port;
+
+       val = readl(&src_regs->sbmr1);
+
+       /* Boot from USDHC */
+       port = (val >> 11) & 0x3;
+       switch (port) {
+       case 0:
+               imx_iomux_v3_setup_multiple_pads(usdhc1_pads,
+                                                ARRAY_SIZE(usdhc1_pads));
+               gpio_direction_input(USDHC1_CD_GPIO);
+               usdhc_cfg[0].esdhc_base = USDHC1_BASE_ADDR;
+               usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+               break;
+       case 1:
+               imx_iomux_v3_setup_multiple_pads(usdhc2_pads,
+                                                ARRAY_SIZE(usdhc2_pads));
+               gpio_direction_input(USDHC2_CD_GPIO);
+               usdhc_cfg[0].esdhc_base = USDHC2_BASE_ADDR;
+               usdhc_cfg[0].max_bus_width = 4;
+               usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+               break;
+       case 2:
+               imx_iomux_v3_setup_multiple_pads(usdhc3_pads,
+                                                ARRAY_SIZE(usdhc3_pads));
+               gpio_direction_input(USDHC3_CD_GPIO);
+               usdhc_cfg[0].esdhc_base = USDHC3_BASE_ADDR;
+               usdhc_cfg[0].max_bus_width = 4;
+               usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+               break;
+       }
+
+       gd->arch.sdhc_clk = usdhc_cfg[0].sdhc_clk;
+       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+#endif
 }
 
 #ifdef CONFIG_SYS_I2C_MXC
@@ -279,7 +320,7 @@ static int setup_fec(void)
        /* clear gpr1[14], gpr1[18:17] to select anatop clock */
        clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC_MASK, 0);
 
-       return enable_fec_anatop_clock(ENET_50MHZ);
+       return enable_fec_anatop_clock(0, ENET_50MHZ);
 }
 #endif
 
@@ -361,3 +402,126 @@ int checkboard(void)
 
        return 0;
 }
+
+#ifdef CONFIG_SPL_BUILD
+#include <spl.h>
+#include <libfdt.h>
+
+const struct mx6sl_iomux_ddr_regs mx6_ddr_ioregs = {
+       .dram_sdqs0 = 0x00003030,
+       .dram_sdqs1 = 0x00003030,
+       .dram_sdqs2 = 0x00003030,
+       .dram_sdqs3 = 0x00003030,
+       .dram_dqm0 = 0x00000030,
+       .dram_dqm1 = 0x00000030,
+       .dram_dqm2 = 0x00000030,
+       .dram_dqm3 = 0x00000030,
+       .dram_cas  = 0x00000030,
+       .dram_ras  = 0x00000030,
+       .dram_sdclk_0 = 0x00000028,
+       .dram_reset = 0x00000030,
+       .dram_sdba2 = 0x00000000,
+       .dram_odt0 = 0x00000008,
+       .dram_odt1 = 0x00000008,
+};
+
+const struct mx6sl_iomux_grp_regs mx6_grp_ioregs = {
+       .grp_b0ds = 0x00000030,
+       .grp_b1ds = 0x00000030,
+       .grp_b2ds = 0x00000030,
+       .grp_b3ds = 0x00000030,
+       .grp_addds = 0x00000030,
+       .grp_ctlds = 0x00000030,
+       .grp_ddrmode_ctl = 0x00020000,
+       .grp_ddrpke = 0x00000000,
+       .grp_ddrmode = 0x00020000,
+       .grp_ddr_type = 0x00080000,
+};
+
+const struct mx6_mmdc_calibration mx6_mmcd_calib = {
+       .p0_mpdgctrl0 =  0x20000000,
+       .p0_mpdgctrl1 =  0x00000000,
+       .p0_mprddlctl =  0x4241444a,
+       .p0_mpwrdlctl =  0x3030312b,
+       .mpzqlp2ctl = 0x1b4700c7,
+};
+
+static struct mx6_lpddr2_cfg mem_ddr = {
+       .mem_speed = 800,
+       .density = 4,
+       .width = 32,
+       .banks = 8,
+       .rowaddr = 14,
+       .coladdr = 10,
+       .trcd_lp = 2000,
+       .trppb_lp = 2000,
+       .trpab_lp = 2250,
+       .trasmin = 4200,
+};
+
+static void ccgr_init(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       writel(0xFFFFFFFF, &ccm->CCGR0);
+       writel(0xFFFFFFFF, &ccm->CCGR1);
+       writel(0xFFFFFFFF, &ccm->CCGR2);
+       writel(0xFFFFFFFF, &ccm->CCGR3);
+       writel(0xFFFFFFFF, &ccm->CCGR4);
+       writel(0xFFFFFFFF, &ccm->CCGR5);
+       writel(0xFFFFFFFF, &ccm->CCGR6);
+
+       writel(0x00260324, &ccm->cbcmr);
+}
+
+static void spl_dram_init(void)
+{
+       struct mx6_ddr_sysinfo sysinfo = {
+               .dsize = mem_ddr.width / 32,
+               .cs_density = 20,
+               .ncs = 2,
+               .cs1_mirror = 0,
+               .walat = 0,
+               .ralat = 2,
+               .mif3_mode = 3,
+               .bi_on = 1,
+               .rtt_wr = 0,        /* LPDDR2 does not need rtt_wr rtt_nom */
+               .rtt_nom = 0,
+               .sde_to_rst = 0,    /* LPDDR2 does not need this field */
+               .rst_to_cke = 0x10, /* JEDEC value for LPDDR2: 200us */
+               .ddr_type = DDR_TYPE_LPDDR2,
+       };
+       mx6sl_dram_iocfg(32, &mx6_ddr_ioregs, &mx6_grp_ioregs);
+       mx6_dram_cfg(&sysinfo, &mx6_mmcd_calib, &mem_ddr);
+}
+
+void board_init_f(ulong dummy)
+{
+       /* setup AIPS and disable watchdog */
+       arch_cpu_init();
+
+       ccgr_init();
+
+       /* iomux and setup of i2c */
+       board_early_init_f();
+
+       /* setup GP timer */
+       timer_init();
+
+       /* UART clocks enabled and gd valid - init serial console */
+       preloader_console_init();
+
+       /* DDR initialization */
+       spl_dram_init();
+
+       /* Clear the BSS. */
+       memset(__bss_start, 0, __bss_end - __bss_start);
+
+       /* load/boot image from boot device */
+       board_init_r(NULL, 0);
+}
+
+void reset_cpu(ulong addr)
+{
+}
+#endif
index 940983e932ce3078645ec520ba255ffef3e26f1f..fcfac0aae4e7bc780a29874242b1952453669300 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "freescale"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "mx6sxsabresd"
 
index d58a79a6b8dff1a4c4b9463f33cfb54bf48b8636..b9af7e7b959b20c9250e581301cd0988541a3b24 100644 (file)
@@ -170,7 +170,7 @@ static int setup_fec(void)
        reg |= BM_ANADIG_PLL_ENET_REF_25M_ENABLE;
        writel(reg, &anatop->pll_enet);
 
-       return enable_fec_anatop_clock(ENET_125MHZ);
+       return enable_fec_anatop_clock(0, ENET_125MHZ);
 }
 
 int board_eth_init(bd_t *bis)
@@ -566,6 +566,7 @@ static void spl_dram_init(void)
                .bi_on = 1,             /* Bank interleaving enabled */
                .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
                .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
+               .ddr_type = DDR_TYPE_DDR3,
        };
 
        mx6sx_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs);
index 393aca629bc1e2914b5685ae5464c5c61ed4bb6d..8210cd3cb88a45d0e6f59ab49c5273c500fa54a3 100644 (file)
@@ -1,4 +1,4 @@
-if TARGET_MX6UL_14X14_EVK
+if TARGET_MX6UL_14X14_EVK || TARGET_MX6UL_9X9_EVK
 
 config SYS_BOARD
        default "mx6ul_14x14_evk"
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "freescale"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "mx6ul_14x14_evk"
 
diff --git a/board/freescale/mx6ul_14x14_evk/README b/board/freescale/mx6ul_14x14_evk/README
new file mode 100644 (file)
index 0000000..d48c7ba
--- /dev/null
@@ -0,0 +1,32 @@
+How to use U-boot on Freescale MX6UL 14x14 EVK
+-----------------------------------------------
+
+- Build U-boot for MX6UL 14x14 EVK:
+
+$ make mrproper
+$ make mx6ul_14x14_evk_defconfig
+$ make
+
+This will generate the SPL image called SPL and the u-boot.img.
+
+- Flash the SPL image into the micro SD card:
+
+sudo dd if=SPL of=/dev/mmcblk0 bs=1k seek=1; sync
+
+- Flash the u-boot.img image into the micro SD card:
+
+sudo dd if=u-boot.img of=/dev/mmcblk0 bs=1k seek=69; sync
+
+- Jumper settings:
+
+SW601: 0 0 1 0
+Sw602: 1 0
+
+where 0 means bottom position and 1 means top position (from the
+switch label numbers reference).
+
+- Connect the USB cable between the EVK and the PC for the console.
+(The USB console connector is the one close the push buttons)
+
+- Insert the micro SD card in the board, power it up and U-boot messages should
+come up.
index 8f712cb058a1a68237f289e27b8ef2483bcbf597..612fb788340e9a3967da562a15d73d3f774aeb5e 100644 (file)
 #include <common.h>
 #include <fsl_esdhc.h>
 #include <i2c.h>
+#include <miiphy.h>
 #include <linux/sizes.h>
 #include <mmc.h>
+#include <netdev.h>
+#include <power/pmic.h>
+#include <power/pfuze3000_pmic.h>
+#include "../common/pfuze.h"
 #include <usb.h>
 #include <usb/ehci-fsl.h>
 
@@ -43,6 +48,18 @@ DECLARE_GLOBAL_DATA_PTR;
        PAD_CTL_DSE_40ohm | PAD_CTL_HYS |                       \
        PAD_CTL_ODE)
 
+#define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP | PAD_CTL_PUE |     \
+       PAD_CTL_SPEED_HIGH   |                                  \
+       PAD_CTL_DSE_48ohm   | PAD_CTL_SRE_FAST)
+
+#define MDIO_PAD_CTRL  (PAD_CTL_PUS_100K_UP | PAD_CTL_PUE |     \
+       PAD_CTL_DSE_48ohm   | PAD_CTL_SRE_FAST | PAD_CTL_ODE)
+
+#define ENET_CLK_PAD_CTRL  (PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST)
+
+#define ENET_RX_PAD_CTRL  (PAD_CTL_PKE | PAD_CTL_PUE |          \
+       PAD_CTL_SPEED_HIGH   | PAD_CTL_SRE_FAST)
+
 #define IOX_SDI IMX_GPIO_NR(5, 10)
 #define IOX_STCP IMX_GPIO_NR(5, 7)
 #define IOX_SHCP IMX_GPIO_NR(5, 11)
@@ -196,11 +213,56 @@ struct i2c_pads_info i2c_pad_info1 = {
                .gp = IMX_GPIO_NR(1, 29),
        },
 };
+
+#ifdef CONFIG_POWER
+#define I2C_PMIC       0
+int power_init_board(void)
+{
+       if (is_mx6ul_9x9_evk()) {
+               struct pmic *pfuze;
+               int ret;
+               unsigned int reg, rev_id;
+
+               ret = power_pfuze3000_init(I2C_PMIC);
+               if (ret)
+                       return ret;
+
+               pfuze = pmic_get("PFUZE3000");
+               ret = pmic_probe(pfuze);
+               if (ret)
+                       return ret;
+
+               pmic_reg_read(pfuze, PFUZE3000_DEVICEID, &reg);
+               pmic_reg_read(pfuze, PFUZE3000_REVID, &rev_id);
+               printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n",
+                      reg, rev_id);
+
+               /* disable Low Power Mode during standby mode */
+               pmic_reg_read(pfuze, PFUZE3000_LDOGCTL, &reg);
+               reg |= 0x1;
+               pmic_reg_write(pfuze, PFUZE3000_LDOGCTL, reg);
+
+               /* SW1B step ramp up time from 2us to 4us/25mV */
+               reg = 0x40;
+               pmic_reg_write(pfuze, PFUZE3000_SW1BCONF, reg);
+
+               /* SW1B mode to APS/PFM */
+               reg = 0xc;
+               pmic_reg_write(pfuze, PFUZE3000_SW1BMODE, reg);
+
+               /* SW1B standby voltage set to 0.975V */
+               reg = 0xb;
+               pmic_reg_write(pfuze, PFUZE3000_SW1BSTBY, reg);
+       }
+
+       return 0;
+}
+#endif
 #endif
 
 int dram_init(void)
 {
-       gd->ram_size = PHYS_SDRAM_SIZE;
+       gd->ram_size = imx_ddr_size();
 
        return 0;
 }
@@ -457,6 +519,98 @@ int board_ehci_hcd_init(int port)
 }
 #endif
 
+#ifdef CONFIG_FEC_MXC
+/*
+ * pin conflicts for fec1 and fec2, GPIO1_IO06 and GPIO1_IO07 can only
+ * be used for ENET1 or ENET2, cannot be used for both.
+ */
+static iomux_v3_cfg_t const fec1_pads[] = {
+       MX6_PAD_GPIO1_IO06__ENET1_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),
+       MX6_PAD_GPIO1_IO07__ENET1_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET1_TX_DATA0__ENET1_TDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET1_TX_DATA1__ENET1_TDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET1_TX_EN__ENET1_TX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET1_TX_CLK__ENET1_REF_CLK1 | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
+       MX6_PAD_ENET1_RX_DATA0__ENET1_RDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET1_RX_DATA1__ENET1_RDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET1_RX_ER__ENET1_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET1_RX_EN__ENET1_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const fec2_pads[] = {
+       MX6_PAD_GPIO1_IO06__ENET2_MDIO | MUX_PAD_CTRL(MDIO_PAD_CTRL),
+       MX6_PAD_GPIO1_IO07__ENET2_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+
+       MX6_PAD_ENET2_TX_DATA0__ENET2_TDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET2_TX_DATA1__ENET2_TDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET2_TX_CLK__ENET2_REF_CLK2 | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
+       MX6_PAD_ENET2_TX_EN__ENET2_TX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),
+
+       MX6_PAD_ENET2_RX_DATA0__ENET2_RDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET2_RX_DATA1__ENET2_RDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET2_RX_EN__ENET2_RX_EN | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX6_PAD_ENET2_RX_ER__ENET2_RX_ER | MUX_PAD_CTRL(ENET_PAD_CTRL),
+};
+
+static void setup_iomux_fec(int fec_id)
+{
+       if (fec_id == 0)
+               imx_iomux_v3_setup_multiple_pads(fec1_pads,
+                                                ARRAY_SIZE(fec1_pads));
+       else
+               imx_iomux_v3_setup_multiple_pads(fec2_pads,
+                                                ARRAY_SIZE(fec2_pads));
+}
+
+int board_eth_init(bd_t *bis)
+{
+       setup_iomux_fec(CONFIG_FEC_ENET_DEV);
+
+       return fecmxc_initialize_multi(bis, CONFIG_FEC_ENET_DEV,
+                                      CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE);
+}
+
+static int setup_fec(int fec_id)
+{
+       struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       int ret;
+
+       if (fec_id == 0) {
+               /*
+                * Use 50M anatop loopback REF_CLK1 for ENET1,
+                * clear gpr1[13], set gpr1[17].
+                */
+               clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC1_MASK,
+                               IOMUX_GPR1_FEC1_CLOCK_MUX1_SEL_MASK);
+       } else {
+               /*
+                * Use 50M anatop loopback REF_CLK2 for ENET2,
+                * clear gpr1[14], set gpr1[18].
+                */
+               clrsetbits_le32(&iomuxc_regs->gpr[1], IOMUX_GPR1_FEC2_MASK,
+                               IOMUX_GPR1_FEC2_CLOCK_MUX1_SEL_MASK);
+       }
+
+       ret = enable_fec_anatop_clock(fec_id, ENET_50MHZ);
+       if (ret)
+               return ret;
+
+       enable_enet_clk(1);
+
+       return 0;
+}
+
+int board_phy_config(struct phy_device *phydev)
+{
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x8190);
+
+       if (phydev->drv->config)
+               phydev->drv->config(phydev);
+
+       return 0;
+}
+#endif
+
 int board_early_init_f(void)
 {
        setup_iomux_uart();
@@ -477,6 +631,10 @@ int board_init(void)
        setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
 #endif
 
+#ifdef CONFIG_FEC_MXC
+       setup_fec(CONFIG_FEC_ENET_DEV);
+#endif
+
 #ifdef CONFIG_USB_EHCI_MX6
        setup_usb();
 #endif
@@ -504,6 +662,15 @@ int board_late_init(void)
        add_board_boot_modes(board_boot_modes);
 #endif
 
+#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+       setenv("board_name", "EVK");
+
+       if (is_mx6ul_9x9_evk())
+               setenv("board_rev", "9X9");
+       else
+               setenv("board_rev", "14X14");
+#endif
+
        return 0;
 }
 
@@ -514,7 +681,10 @@ u32 get_board_rev(void)
 
 int checkboard(void)
 {
-       puts("Board: MX6UL 14x14 EVK\n");
+       if (is_mx6ul_9x9_evk())
+               puts("Board: MX6UL 9x9 EVK\n");
+       else
+               puts("Board: MX6UL 14x14 EVK\n");
 
        return 0;
 }
@@ -524,7 +694,76 @@ int checkboard(void)
 #include <spl.h>
 #include <asm/arch/mx6-ddr.h>
 
-const struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
+
+static struct mx6ul_iomux_grp_regs mx6_grp_ioregs = {
+       .grp_addds = 0x00000030,
+       .grp_ddrmode_ctl = 0x00020000,
+       .grp_b0ds = 0x00000030,
+       .grp_ctlds = 0x00000030,
+       .grp_b1ds = 0x00000030,
+       .grp_ddrpke = 0x00000000,
+       .grp_ddrmode = 0x00020000,
+#ifdef CONFIG_TARGET_MX6UL_9X9_EVK
+       .grp_ddr_type = 0x00080000,
+#else
+       .grp_ddr_type = 0x000c0000,
+#endif
+};
+
+#ifdef CONFIG_TARGET_MX6UL_9X9_EVK
+static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
+       .dram_dqm0 = 0x00000030,
+       .dram_dqm1 = 0x00000030,
+       .dram_ras = 0x00000030,
+       .dram_cas = 0x00000030,
+       .dram_odt0 = 0x00000000,
+       .dram_odt1 = 0x00000000,
+       .dram_sdba2 = 0x00000000,
+       .dram_sdclk_0 = 0x00000030,
+       .dram_sdqs0 = 0x00003030,
+       .dram_sdqs1 = 0x00003030,
+       .dram_reset = 0x00000030,
+};
+
+static struct mx6_mmdc_calibration mx6_mmcd_calib = {
+       .p0_mpwldectrl0 = 0x00000000,
+       .p0_mpdgctrl0 = 0x20000000,
+       .p0_mprddlctl = 0x4040484f,
+       .p0_mpwrdlctl = 0x40405247,
+       .mpzqlp2ctl = 0x1b4700c7,
+};
+
+static struct mx6_lpddr2_cfg mem_ddr = {
+       .mem_speed = 800,
+       .density = 2,
+       .width = 16,
+       .banks = 4,
+       .rowaddr = 14,
+       .coladdr = 10,
+       .trcd_lp = 1500,
+       .trppb_lp = 1500,
+       .trpab_lp = 2000,
+       .trasmin = 4250,
+};
+
+struct mx6_ddr_sysinfo ddr_sysinfo = {
+       .dsize = 0,
+       .cs_density = 18,
+       .ncs = 1,
+       .cs1_mirror = 0,
+       .walat = 0,
+       .ralat = 5,
+       .mif3_mode = 3,
+       .bi_on = 1,
+       .rtt_wr = 0,        /* LPDDR2 does not need rtt_wr rtt_nom */
+       .rtt_nom = 0,
+       .sde_to_rst = 0,    /* LPDDR2 does not need this field */
+       .rst_to_cke = 0x10, /* JEDEC value for LPDDR2: 200us */
+       .ddr_type = DDR_TYPE_LPDDR2,
+};
+
+#else
+static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
        .dram_dqm0 = 0x00000030,
        .dram_dqm1 = 0x00000030,
        .dram_ras = 0x00000030,
@@ -538,24 +777,29 @@ const struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
        .dram_reset = 0x00000030,
 };
 
-const struct mx6ul_iomux_grp_regs mx6_grp_ioregs = {
-       .grp_addds = 0x00000030,
-       .grp_ddrmode_ctl = 0x00020000,
-       .grp_b0ds = 0x00000030,
-       .grp_ctlds = 0x00000030,
-       .grp_b1ds = 0x00000030,
-       .grp_ddrpke = 0x00000000,
-       .grp_ddrmode = 0x00020000,
-       .grp_ddr_type = 0x000c0000,
-};
-
-const struct mx6_mmdc_calibration mx6_mmcd_calib = {
+static struct mx6_mmdc_calibration mx6_mmcd_calib = {
        .p0_mpwldectrl0 = 0x00070007,
        .p0_mpdgctrl0 = 0x41490145,
        .p0_mprddlctl = 0x40404546,
        .p0_mpwrdlctl = 0x4040524D,
 };
 
+struct mx6_ddr_sysinfo ddr_sysinfo = {
+       .dsize = 0,
+       .cs_density = 20,
+       .ncs = 1,
+       .cs1_mirror = 0,
+       .rtt_wr = 2,
+       .rtt_nom = 1,           /* RTT_Nom = RZQ/2 */
+       .walat = 1,             /* Write additional latency */
+       .ralat = 5,             /* Read additional latency */
+       .mif3_mode = 3,         /* Command prediction working mode */
+       .bi_on = 1,             /* Bank interleaving enabled */
+       .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
+       .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
+       .ddr_type = DDR_TYPE_DDR3,
+};
+
 static struct mx6_ddr3_cfg mem_ddr = {
        .mem_speed = 800,
        .density = 4,
@@ -568,6 +812,7 @@ static struct mx6_ddr3_cfg mem_ddr = {
        .trcmin = 4875,
        .trasmin = 3500,
 };
+#endif
 
 static void ccgr_init(void)
 {
@@ -585,23 +830,8 @@ static void ccgr_init(void)
 
 static void spl_dram_init(void)
 {
-       struct mx6_ddr_sysinfo sysinfo = {
-               .dsize = 0,
-               .cs_density = 20,
-               .ncs = 1,
-               .cs1_mirror = 0,
-               .rtt_wr = 2,
-               .rtt_nom = 1,           /* RTT_Nom = RZQ/2 */
-               .walat = 1,             /* Write additional latency */
-               .ralat = 5,             /* Read additional latency */
-               .mif3_mode = 3,         /* Command prediction working mode */
-               .bi_on = 1,             /* Bank interleaving enabled */
-               .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
-               .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
-       };
-
        mx6ul_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs);
-       mx6_dram_cfg(&sysinfo, &mx6_mmcd_calib, &mem_ddr);
+       mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr);
 }
 
 void board_init_f(ulong dummy)
diff --git a/board/freescale/mx7dsabresd/Kconfig b/board/freescale/mx7dsabresd/Kconfig
new file mode 100644 (file)
index 0000000..d7c6ae4
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_MX7DSABRESD
+
+config SYS_BOARD
+       default "mx7dsabresd"
+
+config SYS_VENDOR
+       default "freescale"
+
+config SYS_SOC
+       default "mx7"
+
+config SYS_CONFIG_NAME
+       default "mx7dsabresd"
+
+endif
diff --git a/board/freescale/mx7dsabresd/MAINTAINERS b/board/freescale/mx7dsabresd/MAINTAINERS
new file mode 100644 (file)
index 0000000..3910ee4
--- /dev/null
@@ -0,0 +1,6 @@
+MX7DSABRESD BOARD
+M:     Adrian Alonso <aalonso@freescale.com>
+S:     Maintained
+F:     board/freescale/mx7dsabresd
+F:     include/configs/mx7dsabresd.h
+F:     configs/mx7dsabresd_defconfig
diff --git a/board/freescale/mx7dsabresd/Makefile b/board/freescale/mx7dsabresd/Makefile
new file mode 100644 (file)
index 0000000..14336ab
--- /dev/null
@@ -0,0 +1,6 @@
+# (C) Copyright 2015 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := mx7dsabresd.o
diff --git a/board/freescale/mx7dsabresd/imximage.cfg b/board/freescale/mx7dsabresd/imximage.cfg
new file mode 100644 (file)
index 0000000..91b70ee
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * Refer docs/README.imxmage for more details about how-to configure
+ * and create imximage boot image
+ *
+ * The syntax is taken as close as possible with the kwbimage
+ */
+
+#define __ASSEMBLY__
+#include <config.h>
+
+/* image version */
+
+IMAGE_VERSION 2
+
+/*
+ * Boot Device : sd
+ */
+
+BOOT_FROM      sd
+
+/*
+ * Device Configuration Data (DCD)
+ *
+ * Each entry must have the format:
+ * Addr-type           Address        Value
+ *
+ * where:
+ *     Addr-type register length (1,2 or 4 bytes)
+ *     Address   absolute address of the register
+ *     value     value to be stored in the register
+ */
+
+DATA 4 0x30340004 0x4F400005
+
+DATA 4 0x30391000 0x00000002
+DATA 4 0x307a0000 0x01040001
+DATA 4 0x307a01a0 0x80400003
+DATA 4 0x307a01a4 0x00100020
+DATA 4 0x307a01a8 0x80100004
+DATA 4 0x307a0064 0x00400046
+DATA 4 0x307a0490 0x00000001
+DATA 4 0x307a00d0 0x00020083
+DATA 4 0x307a00d4 0x00690000
+DATA 4 0x307a00dc 0x09300004
+DATA 4 0x307a00e0 0x04080000
+DATA 4 0x307a00e4 0x00100004
+DATA 4 0x307a00f4 0x0000033f
+DATA 4 0x307a0100 0x09081109
+DATA 4 0x307a0104 0x0007020d
+DATA 4 0x307a0108 0x03040407
+DATA 4 0x307a010c 0x00002006
+DATA 4 0x307a0110 0x04020205
+DATA 4 0x307a0114 0x03030202
+DATA 4 0x307a0120 0x00000803
+DATA 4 0x307a0180 0x00800020
+DATA 4 0x307a0184 0x02000100
+DATA 4 0x307a0190 0x02098204
+DATA 4 0x307a0194 0x00030303
+DATA 4 0x307a0200 0x00000016
+DATA 4 0x307a0204 0x00171717
+DATA 4 0x307a0214 0x04040404
+DATA 4 0x307a0218 0x0f040404
+DATA 4 0x307a0240 0x06000604
+DATA 4 0x307a0244 0x00000001
+DATA 4 0x30391000 0x00000000
+DATA 4 0x30790000 0x17420f40
+DATA 4 0x30790004 0x10210100
+DATA 4 0x30790010 0x00060807
+DATA 4 0x307900b0 0x1010007e
+DATA 4 0x3079009c 0x00000d6e
+DATA 4 0x30790020 0x08080808
+DATA 4 0x30790030 0x08080808
+DATA 4 0x30790050 0x01000010
+DATA 4 0x30790050 0x00000010
+
+DATA 4 0x307900c0 0x0e407304
+DATA 4 0x307900c0 0x0e447304
+DATA 4 0x307900c0 0x0e447306
+
+CHECK_BITS_SET 4 0x307900c4 0x1
+
+DATA 4 0x307900c0 0x0e447304
+DATA 4 0x307900c0 0x0e407304
+
+DATA 4 0x30384130 0x00000000
+DATA 4 0x30340020 0x00000178
+DATA 4 0x30384130 0x00000002
+DATA 4 0x30790018 0x0000000f
+
+CHECK_BITS_SET 4 0x307a0004 0x1
diff --git a/board/freescale/mx7dsabresd/mx7dsabresd.c b/board/freescale/mx7dsabresd/mx7dsabresd.c
new file mode 100644 (file)
index 0000000..d163bee
--- /dev/null
@@ -0,0 +1,555 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/arch/clock.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/mx7-pins.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/gpio.h>
+#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/boot_mode.h>
+#include <asm/io.h>
+#include <linux/sizes.h>
+#include <common.h>
+#include <fsl_esdhc.h>
+#include <mmc.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <power/pmic.h>
+#include <power/pfuze3000_pmic.h>
+#include "../common/pfuze.h"
+#include <i2c.h>
+#include <asm/imx-common/mxc_i2c.h>
+#include <asm/arch/crm_regs.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define UART_PAD_CTRL  (PAD_CTL_DSE_3P3V_49OHM | \
+       PAD_CTL_PUS_PU100KOHM | PAD_CTL_HYS)
+
+#define USDHC_PAD_CTRL (PAD_CTL_DSE_3P3V_32OHM | PAD_CTL_SRE_SLOW | \
+       PAD_CTL_HYS | PAD_CTL_PUE | PAD_CTL_PUS_PU47KOHM)
+
+#define ENET_PAD_CTRL  (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM)
+#define ENET_PAD_CTRL_MII  (PAD_CTL_DSE_3P3V_32OHM)
+
+#define ENET_RX_PAD_CTRL  (PAD_CTL_PUS_PU100KOHM | PAD_CTL_DSE_3P3V_49OHM)
+
+#define I2C_PAD_CTRL    (PAD_CTL_DSE_3P3V_32OHM | PAD_CTL_SRE_SLOW | \
+       PAD_CTL_HYS | PAD_CTL_PUE | PAD_CTL_PUS_PU100KOHM)
+
+#ifdef CONFIG_SYS_I2C_MXC
+#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
+/* I2C1 for PMIC */
+struct i2c_pads_info i2c_pad_info1 = {
+       .scl = {
+               .i2c_mode = MX7D_PAD_I2C1_SCL__I2C1_SCL | PC,
+               .gpio_mode = MX7D_PAD_I2C1_SCL__GPIO4_IO8 | PC,
+               .gp = IMX_GPIO_NR(4, 8),
+       },
+       .sda = {
+               .i2c_mode = MX7D_PAD_I2C1_SDA__I2C1_SDA | PC,
+               .gpio_mode = MX7D_PAD_I2C1_SDA__GPIO4_IO9 | PC,
+               .gp = IMX_GPIO_NR(4, 9),
+       },
+};
+#endif
+
+int dram_init(void)
+{
+       gd->ram_size = PHYS_SDRAM_SIZE;
+
+       return 0;
+}
+
+static iomux_v3_cfg_t const wdog_pads[] = {
+       MX7D_PAD_GPIO1_IO00__WDOG1_WDOG_B | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const uart1_pads[] = {
+       MX7D_PAD_UART1_TX_DATA__UART1_DCE_TX | MUX_PAD_CTRL(UART_PAD_CTRL),
+       MX7D_PAD_UART1_RX_DATA__UART1_DCE_RX | MUX_PAD_CTRL(UART_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const usdhc1_pads[] = {
+       MX7D_PAD_SD1_CLK__SD1_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD1_CMD__SD1_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD1_DATA0__SD1_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD1_DATA1__SD1_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD1_DATA2__SD1_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD1_DATA3__SD1_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+
+       MX7D_PAD_SD1_CD_B__GPIO5_IO0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD1_RESET_B__GPIO5_IO2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
+static iomux_v3_cfg_t const usdhc3_emmc_pads[] = {
+       MX7D_PAD_SD3_CLK__SD3_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_CMD__SD3_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_DATA0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_DATA1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_DATA2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_DATA3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_DATA4__SD3_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_DATA5__SD3_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_DATA6__SD3_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_DATA7__SD3_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX7D_PAD_SD3_STROBE__SD3_STROBE  | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+
+       MX7D_PAD_SD3_RESET_B__GPIO6_IO11 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
+#define IOX_SDI IMX_GPIO_NR(1, 9)
+#define IOX_STCP IMX_GPIO_NR(1, 12)
+#define IOX_SHCP IMX_GPIO_NR(1, 13)
+
+static iomux_v3_cfg_t const iox_pads[] = {
+       /* IOX_SDI */
+       MX7D_PAD_GPIO1_IO09__GPIO1_IO9  | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* IOX_STCP */
+       MX7D_PAD_GPIO1_IO12__GPIO1_IO12 | MUX_PAD_CTRL(NO_PAD_CTRL),
+       /* IOX_SHCP */
+       MX7D_PAD_GPIO1_IO13__GPIO1_IO13 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+/*
+ * PCIE_DIS_B --> Q0
+ * PCIE_RST_B --> Q1
+ * HDMI_RST_B --> Q2
+ * PERI_RST_B --> Q3
+ * SENSOR_RST_B --> Q4
+ * ENET_RST_B --> Q5
+ * PERI_3V3_EN --> Q6
+ * LCD_PWR_EN --> Q7
+ */
+enum qn {
+       PCIE_DIS_B,
+       PCIE_RST_B,
+       HDMI_RST_B,
+       PERI_RST_B,
+       SENSOR_RST_B,
+       ENET_RST_B,
+       PERI_3V3_EN,
+       LCD_PWR_EN,
+};
+
+enum qn_func {
+       qn_reset,
+       qn_enable,
+       qn_disable,
+};
+
+enum qn_level {
+       qn_low = 0,
+       qn_high = 1,
+};
+
+static enum qn_level seq[3][2] = {
+       {0, 1}, {1, 1}, {0, 0}
+};
+
+static enum qn_func qn_output[8] = {
+       qn_disable, qn_reset, qn_reset, qn_reset, qn_reset, qn_reset, qn_enable,
+       qn_enable
+};
+
+void iox74lv_init(void)
+{
+       int i;
+
+       for (i = 7; i >= 0; i--) {
+               gpio_direction_output(IOX_SHCP, 0);
+               gpio_direction_output(IOX_SDI, seq[qn_output[i]][0]);
+               udelay(500);
+               gpio_direction_output(IOX_SHCP, 1);
+               udelay(500);
+       }
+
+       gpio_direction_output(IOX_STCP, 0);
+       udelay(500);
+       /*
+         * shift register will be output to pins
+         */
+       gpio_direction_output(IOX_STCP, 1);
+
+       for (i = 7; i >= 0; i--) {
+               gpio_direction_output(IOX_SHCP, 0);
+               gpio_direction_output(IOX_SDI, seq[qn_output[i]][1]);
+               udelay(500);
+               gpio_direction_output(IOX_SHCP, 1);
+               udelay(500);
+       }
+       gpio_direction_output(IOX_STCP, 0);
+       udelay(500);
+       /*
+         * shift register will be output to pins
+         */
+       gpio_direction_output(IOX_STCP, 1);
+};
+
+void iox74lv_set(int index)
+{
+       int i;
+       for (i = 7; i >= 0; i--) {
+               gpio_direction_output(IOX_SHCP, 0);
+
+               if (i == index)
+                       gpio_direction_output(IOX_SDI, seq[qn_output[i]][0]);
+               else
+                       gpio_direction_output(IOX_SDI, seq[qn_output[i]][1]);
+               udelay(500);
+               gpio_direction_output(IOX_SHCP, 1);
+               udelay(500);
+       }
+
+       gpio_direction_output(IOX_STCP, 0);
+       udelay(500);
+       /*
+         * shift register will be output to pins
+         */
+       gpio_direction_output(IOX_STCP, 1);
+
+       for (i = 7; i >= 0; i--) {
+               gpio_direction_output(IOX_SHCP, 0);
+               gpio_direction_output(IOX_SDI, seq[qn_output[i]][1]);
+               udelay(500);
+               gpio_direction_output(IOX_SHCP, 1);
+               udelay(500);
+       }
+
+       gpio_direction_output(IOX_STCP, 0);
+       udelay(500);
+       /*
+         * shift register will be output to pins
+         */
+       gpio_direction_output(IOX_STCP, 1);
+};
+
+#ifdef CONFIG_FEC_MXC
+static iomux_v3_cfg_t const fec1_pads[] = {
+       MX7D_PAD_ENET1_RGMII_RX_CTL__ENET1_RGMII_RX_CTL | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_RD0__ENET1_RGMII_RD0 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_RD1__ENET1_RGMII_RD1 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_RD2__ENET1_RGMII_RD2 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_RD3__ENET1_RGMII_RD3 | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_RXC__ENET1_RGMII_RXC | MUX_PAD_CTRL(ENET_RX_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_TX_CTL__ENET1_RGMII_TX_CTL | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_TD0__ENET1_RGMII_TD0 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_TD1__ENET1_RGMII_TD1 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_TD2__ENET1_RGMII_TD2 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_TD3__ENET1_RGMII_TD3 | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX7D_PAD_ENET1_RGMII_TXC__ENET1_RGMII_TXC | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       MX7D_PAD_GPIO1_IO10__ENET1_MDIO | MUX_PAD_CTRL(ENET_PAD_CTRL_MII),
+       MX7D_PAD_GPIO1_IO11__ENET1_MDC | MUX_PAD_CTRL(ENET_PAD_CTRL_MII),
+};
+
+static void setup_iomux_fec(void)
+{
+       imx_iomux_v3_setup_multiple_pads(fec1_pads, ARRAY_SIZE(fec1_pads));
+}
+#endif
+
+static void setup_iomux_uart(void)
+{
+       imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
+}
+
+#ifdef CONFIG_FSL_ESDHC
+
+#define USDHC1_CD_GPIO IMX_GPIO_NR(5, 0)
+#define USDHC1_PWR_GPIO        IMX_GPIO_NR(5, 2)
+#define USDHC3_PWR_GPIO IMX_GPIO_NR(6, 11)
+
+static struct fsl_esdhc_cfg usdhc_cfg[3] = {
+       {USDHC1_BASE_ADDR, 0, 4},
+       {USDHC3_BASE_ADDR},
+};
+
+static int mmc_get_env_devno(void)
+{
+       struct bootrom_sw_info **p =
+               (struct bootrom_sw_info **)ROM_SW_INFO_ADDR;
+
+       u8 boot_type = (*p)->boot_dev_type;
+       u8 dev_no = (*p)->boot_dev_instance;
+
+       /* If not boot from sd/mmc, use default value */
+       if ((boot_type != BOOT_TYPE_SD) && (boot_type != BOOT_TYPE_MMC))
+               return CONFIG_SYS_MMC_ENV_DEV;
+
+       if (dev_no == 2)
+               dev_no--;
+
+       return dev_no;
+}
+
+static int mmc_map_to_kernel_blk(int dev_no)
+{
+       if (dev_no == 1)
+               dev_no++;
+
+       return dev_no;
+}
+
+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 USDHC1_BASE_ADDR:
+               ret = !gpio_get_value(USDHC1_CD_GPIO);
+               break;
+       case USDHC3_BASE_ADDR:
+               ret = 1; /* Assume uSDHC3 emmc is always present */
+               break;
+       }
+
+       return ret;
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       int i, ret;
+       /*
+        * According to the board_mmc_init() the following map is done:
+        * (U-boot device node)    (Physical Port)
+        * mmc0                    USDHC1
+        * mmc2                    USDHC3 (eMMC)
+        */
+       for (i = 0; i < CONFIG_SYS_FSL_USDHC_NUM; i++) {
+               switch (i) {
+               case 0:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc1_pads, ARRAY_SIZE(usdhc1_pads));
+                       gpio_request(USDHC1_CD_GPIO, "usdhc1_cd");
+                       gpio_direction_input(USDHC1_CD_GPIO);
+                       gpio_request(USDHC1_PWR_GPIO, "usdhc1_pwr");
+                       gpio_direction_output(USDHC1_PWR_GPIO, 0);
+                       udelay(500);
+                       gpio_direction_output(USDHC1_PWR_GPIO, 1);
+                       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+                       break;
+               case 1:
+                       imx_iomux_v3_setup_multiple_pads(
+                               usdhc3_emmc_pads, ARRAY_SIZE(usdhc3_emmc_pads));
+                       gpio_request(USDHC3_PWR_GPIO, "usdhc3_pwr");
+                       gpio_direction_output(USDHC3_PWR_GPIO, 0);
+                       udelay(500);
+                       gpio_direction_output(USDHC3_PWR_GPIO, 1);
+                       usdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+                       break;
+               default:
+                       printf("Warning: you configured more USDHC controllers"
+                               "(%d) than supported by the board\n", i + 1);
+                       return -EINVAL;
+                       }
+
+                       ret = fsl_esdhc_initialize(bis, &usdhc_cfg[i]);
+                       if (ret)
+                               return ret;
+       }
+
+       return 0;
+}
+
+static int check_mmc_autodetect(void)
+{
+       char *autodetect_str = getenv("mmcautodetect");
+
+       if ((autodetect_str != NULL) &&
+               (strcmp(autodetect_str, "yes") == 0)) {
+               return 1;
+       }
+
+       return 0;
+}
+
+static void mmc_late_init(void)
+{
+       char cmd[32];
+       char mmcblk[32];
+       u32 dev_no = mmc_get_env_devno();
+
+       if (!check_mmc_autodetect())
+               return;
+
+       setenv_ulong("mmcdev", dev_no);
+
+       /* Set mmcblk env */
+       sprintf(mmcblk, "/dev/mmcblk%dp2 rootwait rw",
+               mmc_map_to_kernel_blk(dev_no));
+       setenv("mmcroot", mmcblk);
+
+       sprintf(cmd, "mmc dev %d", dev_no);
+       run_command(cmd, 0);
+}
+
+#endif
+
+#ifdef CONFIG_FEC_MXC
+int board_eth_init(bd_t *bis)
+{
+       int ret;
+
+       setup_iomux_fec();
+
+       ret = fecmxc_initialize_multi(bis, 0,
+               CONFIG_FEC_MXC_PHYADDR, IMX_FEC_BASE);
+       if (ret)
+               printf("FEC1 MXC: %s:failed\n", __func__);
+
+       return ret;
+}
+
+static int setup_fec(void)
+{
+       struct iomuxc_gpr_base_regs *const iomuxc_gpr_regs
+               = (struct iomuxc_gpr_base_regs *) IOMUXC_GPR_BASE_ADDR;
+
+       /* Use 125M anatop REF_CLK1 for ENET1, clear gpr1[13], gpr1[17]*/
+       clrsetbits_le32(&iomuxc_gpr_regs->gpr[1],
+               (IOMUXC_GPR_GPR1_GPR_ENET1_TX_CLK_SEL_MASK |
+                IOMUXC_GPR_GPR1_GPR_ENET1_CLK_DIR_MASK), 0);
+
+       return set_clk_enet(ENET_125MHz);
+}
+
+
+int board_phy_config(struct phy_device *phydev)
+{
+       /* enable rgmii rxc skew and phy mode select to RGMII copper */
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x21);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x7ea8);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1e, 0x2f);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0x1f, 0x71b7);
+
+       if (phydev->drv->config)
+               phydev->drv->config(phydev);
+       return 0;
+}
+#endif
+
+int board_early_init_f(void)
+{
+       setup_iomux_uart();
+
+       setup_i2c(0, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+       imx_iomux_v3_setup_multiple_pads(iox_pads, ARRAY_SIZE(iox_pads));
+
+       iox74lv_init();
+
+#ifdef CONFIG_FEC_MXC
+       setup_fec();
+#endif
+
+       return 0;
+}
+
+#ifdef CONFIG_CMD_BMODE
+static const struct boot_mode board_boot_modes[] = {
+       /* 4 bit bus width */
+       {"sd1", MAKE_CFGVAL(0x10, 0x10, 0x00, 0x00)},
+       {"emmc", MAKE_CFGVAL(0x10, 0x2a, 0x00, 0x00)},
+       {NULL,   0},
+};
+#endif
+
+#ifdef CONFIG_POWER
+#define I2C_PMIC       0
+int power_init_board(void)
+{
+       struct pmic *p;
+       int ret;
+       unsigned int reg, rev_id;
+
+       ret = power_pfuze3000_init(I2C_PMIC);
+       if (ret)
+               return ret;
+
+       p = pmic_get("PFUZE3000");
+       ret = pmic_probe(p);
+       if (ret)
+               return ret;
+
+       pmic_reg_read(p, PFUZE3000_DEVICEID, &reg);
+       pmic_reg_read(p, PFUZE3000_REVID, &rev_id);
+       printf("PMIC: PFUZE3000 DEV_ID=0x%x REV_ID=0x%x\n", reg, rev_id);
+
+       /* disable Low Power Mode during standby mode */
+       pmic_reg_read(p, PFUZE3000_LDOGCTL, &reg);
+       reg |= 0x1;
+       pmic_reg_write(p, PFUZE3000_LDOGCTL, reg);
+
+       return 0;
+}
+#endif
+
+int board_late_init(void)
+{
+#ifdef CONFIG_CMD_BMODE
+       add_board_boot_modes(board_boot_modes);
+#endif
+
+#ifdef CONFIG_ENV_IS_IN_MMC
+       mmc_late_init();
+#endif
+
+       imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads));
+
+       set_wdog_reset((struct wdog_regs *)WDOG1_BASE_ADDR);
+
+       return 0;
+}
+
+u32 get_board_rev(void)
+{
+       return get_cpu_rev();
+}
+
+int checkboard(void)
+{
+       puts("Board: i.MX7D SABRESD\n");
+
+       return 0;
+}
+
+#ifdef CONFIG_USB_EHCI_MX7
+iomux_v3_cfg_t const usb_otg1_pads[] = {
+       MX7D_PAD_GPIO1_IO05__USB_OTG1_PWR | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+iomux_v3_cfg_t const usb_otg2_pads[] = {
+       MX7D_PAD_UART3_CTS_B__USB_OTG2_PWR | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+int board_ehci_hcd_init(int port)
+{
+       switch (port) {
+       case 0:
+               imx_iomux_v3_setup_multiple_pads(usb_otg1_pads,
+                                                ARRAY_SIZE(usb_otg1_pads));
+               break;
+       case 1:
+               imx_iomux_v3_setup_multiple_pads(usb_otg2_pads,
+                                                ARRAY_SIZE(usb_otg2_pads));
+               break;
+       default:
+               printf("MXC USB port %d not yet supported\n", port);
+               return -EINVAL;
+       }
+       return 0;
+}
+#endif
index 1ffccc4fd34f4b6fe0ac0f6e1658bfddaa06d25b..23480e2d71a90948e7fb83a87ad98e637e16d3ea 100644 (file)
@@ -7,6 +7,6 @@ F:      configs/T1024QDS_defconfig
 F:     configs/T1024QDS_NAND_defconfig
 F:     configs/T1024QDS_SDCARD_defconfig
 F:     configs/T1024QDS_SPIFLASH_defconfig
-F:     configs/T1024QDS_D4_defconfig
+F:     configs/T1024QDS_DDR4_defconfig
 F:     configs/T1024QDS_SECURE_BOOT_defconfig
-F:     configs/T1024QDS_D4_SECURE_BOOT_defconfig
+F:     configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
index 1d11a2eed7f4636af3b0f1ed429c1898d389d6bd..f8f72826b16f6f3302abdc981bce821b8f7a08a8 100644 (file)
@@ -1,8 +1,8 @@
 #PBL preamble and RCW header for T1023RDB
 aa55aa55 010e0100
 #SerDes Protocol: 0x77
-#Core/DDR: 1400Mhz/1600MT/s with single source clock
-0810000e 00000000 00000000 00000000
+#Default Core=1200MHz, DDR=1600MT/s with single source clock
+0810000c 00000000 00000000 00000000
 3b800003 00000012 e8104000 21000000
 00000000 00000000 00000000 00022800
 00000130 04020200 00000000 00000006
index 83f6b3ce3adbd4d98074baee2696739efccbe0c3..640538ff61ce50ab7524aab27fb2383837957fbb 100644 (file)
@@ -4,7 +4,7 @@ S:      Maintained
 F:     board/freescale/t1040qds/
 F:     include/configs/T1040QDS.h
 F:     configs/T1040QDS_defconfig
-F:     configs/T1040QDS_D4_defconfig
+F:     configs/T1040QDS_DDR4_defconfig
 
 T1040QDS_SECURE_BOOT BOARD
 M:     Aneesh Bansal <aneesh.bansal@freescale.com>
index c233e90c658902c08594273ffb413a89cda68447..ccce98e2ed6b07c1416e106eb04e20d94d03be10 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "gateworks"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "gw_ventana"
 
index d4418e554c4aac209a37126d4e6b73b009ea6c0c..d28eb14f87e53c90ed9c426b13de03022083a85a 100644 (file)
@@ -365,6 +365,7 @@ static void spl_dram_init(int width, int size_mb, int board_model)
                .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
                .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
                .pd_fast_exit = 1, /* enable precharge power-down fast exit */
+               .ddr_type = DDR_TYPE_DDR3,
        };
 
        /*
diff --git a/board/genesi/mx51_efikamx/Kconfig b/board/genesi/mx51_efikamx/Kconfig
deleted file mode 100644 (file)
index 355702a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_MX51_EFIKAMX
-
-config SYS_BOARD
-       default "mx51_efikamx"
-
-config SYS_VENDOR
-       default "genesi"
-
-config SYS_SOC
-       default "mx5"
-
-config SYS_CONFIG_NAME
-       default "mx51_efikamx"
-
-endif
diff --git a/board/genesi/mx51_efikamx/MAINTAINERS b/board/genesi/mx51_efikamx/MAINTAINERS
deleted file mode 100644 (file)
index f1398c4..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-MX51_EFIKAMX BOARD
-#M:    -
-S:     Maintained
-F:     board/genesi/mx51_efikamx/
-F:     include/configs/mx51_efikamx.h
-F:     configs/mx51_efikamx_defconfig
-F:     configs/mx51_efikasb_defconfig
diff --git a/board/genesi/mx51_efikamx/Makefile b/board/genesi/mx51_efikamx/Makefile
deleted file mode 100644 (file)
index 87f5f9e..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Copyright (C) 2010, Marek Vasut <marek.vasut@gmail.com>
-#
-# BASED ON: imx51evk
-#
-# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
-#
-# (C) Copyright 2009 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := efikamx.o efikamx-usb.o
diff --git a/board/genesi/mx51_efikamx/efikamx-usb.c b/board/genesi/mx51_efikamx/efikamx-usb.c
deleted file mode 100644 (file)
index 9dfd249..0000000
+++ /dev/null
@@ -1,230 +0,0 @@
-/*
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <usb.h>
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/iomux-mx51.h>
-#include <asm/gpio.h>
-#include <usb/ehci-fsl.h>
-#include <usb/ulpi.h>
-#include <errno.h>
-
-#include "../../../drivers/usb/host/ehci.h"
-
-/*
- * Configure the USB H1 and USB H2 IOMUX
- */
-void setup_iomux_usb(void)
-{
-       static const iomux_v3_cfg_t usb_h1_pads[] = {
-               MX51_PAD_USBH1_CLK__USBH1_CLK,
-               MX51_PAD_USBH1_DIR__USBH1_DIR,
-               MX51_PAD_USBH1_STP__USBH1_STP,
-               MX51_PAD_USBH1_NXT__USBH1_NXT,
-               MX51_PAD_USBH1_DATA0__USBH1_DATA0,
-               MX51_PAD_USBH1_DATA1__USBH1_DATA1,
-               MX51_PAD_USBH1_DATA2__USBH1_DATA2,
-               MX51_PAD_USBH1_DATA3__USBH1_DATA3,
-               MX51_PAD_USBH1_DATA4__USBH1_DATA4,
-               MX51_PAD_USBH1_DATA5__USBH1_DATA5,
-               MX51_PAD_USBH1_DATA6__USBH1_DATA6,
-               MX51_PAD_USBH1_DATA7__USBH1_DATA7,
-       };
-
-       static const iomux_v3_cfg_t usb_pads[] = {
-               MX51_PAD_EIM_D27__GPIO2_9, /* USB PHY reset */
-               MX51_PAD_GPIO1_5__GPIO1_5, /* USB HUB reset */
-               NEW_PAD_CTRL(MX51_PAD_EIM_A22__GPIO2_16, 0), /* WIFI /EN */
-               NEW_PAD_CTRL(MX51_PAD_EIM_A16__GPIO2_10, 0), /* WIFI RESET */
-               NEW_PAD_CTRL(MX51_PAD_EIM_A17__GPIO2_11, 0), /* BT /EN */
-       };
-
-       imx_iomux_v3_setup_multiple_pads(usb_h1_pads, ARRAY_SIZE(usb_h1_pads));
-
-       if (machine_is_efikasb()) {
-               static const iomux_v3_cfg_t usb_h2_pads[] = {
-                       MX51_PAD_EIM_A24__USBH2_CLK,
-                       MX51_PAD_EIM_A25__USBH2_DIR,
-                       MX51_PAD_EIM_A26__USBH2_STP,
-                       MX51_PAD_EIM_A27__USBH2_NXT,
-                       MX51_PAD_EIM_D16__USBH2_DATA0,
-                       MX51_PAD_EIM_D17__USBH2_DATA1,
-                       MX51_PAD_EIM_D18__USBH2_DATA2,
-                       MX51_PAD_EIM_D19__USBH2_DATA3,
-                       MX51_PAD_EIM_D20__USBH2_DATA4,
-                       MX51_PAD_EIM_D21__USBH2_DATA5,
-                       MX51_PAD_EIM_D22__USBH2_DATA6,
-                       MX51_PAD_EIM_D23__USBH2_DATA7,
-               };
-
-               imx_iomux_v3_setup_multiple_pads(usb_h2_pads,
-                                                ARRAY_SIZE(usb_h2_pads));
-       }
-
-       imx_iomux_v3_setup_multiple_pads(usb_pads, ARRAY_SIZE(usb_pads));
-}
-
-/*
- * Enable devices connected to USB BUSes
- */
-static void efika_usb_enable_devices(void)
-{
-       /* Enable Bluetooth */
-       gpio_direction_output(IMX_GPIO_NR(2, 11), 0);
-       udelay(10000);
-       gpio_set_value(IMX_GPIO_NR(2, 11), 1);
-
-       /* Enable WiFi */
-       gpio_direction_output(IMX_GPIO_NR(2, 16), 1);
-       udelay(10000);
-
-       /* Reset the WiFi chip */
-       gpio_direction_output(IMX_GPIO_NR(2, 10), 0);
-       udelay(10000);
-       gpio_set_value(IMX_GPIO_NR(2, 10), 1);
-}
-
-/*
- * Reset USB HUB (or HUBs on EfikaSB)
- */
-static void efika_usb_hub_reset(void)
-{
-       /* HUB reset */
-       gpio_direction_output(IMX_GPIO_NR(1, 5), 1);
-       udelay(1000);
-       gpio_set_value(IMX_GPIO_NR(1, 5), 0);
-       udelay(1000);
-       gpio_set_value(IMX_GPIO_NR(1, 5), 1);
-}
-
-/*
- * Reset USB PHY (or PHYs on EfikaSB)
- */
-static void efika_usb_phy_reset(void)
-{
-       /* SMSC 3317 PHY reset */
-       gpio_direction_output(IMX_GPIO_NR(2, 9), 0);
-       udelay(1000);
-       gpio_set_value(IMX_GPIO_NR(2, 9), 1);
-}
-
-static void efika_ehci_init(struct usb_ehci *ehci, uint32_t stp_gpio,
-                               iomux_v3_cfg_t stp_pad_gpio,
-                               iomux_v3_cfg_t stp_pad_usb)
-{
-       int ret;
-       struct ulpi_regs *ulpi = (struct ulpi_regs *)0;
-       struct ulpi_viewport ulpi_vp;
-
-       imx_iomux_v3_setup_pad(stp_pad_gpio);
-       gpio_direction_output(stp_gpio, 0);
-       udelay(1000);
-       gpio_set_value(stp_gpio, 1);
-       udelay(1000);
-
-       imx_iomux_v3_setup_pad(stp_pad_usb);
-       udelay(10000);
-
-       ulpi_vp.viewport_addr = (u32)&ehci->ulpi_viewpoint;
-       ulpi_vp.port_num = 0;
-
-       ret = ulpi_init(&ulpi_vp);
-       if (ret) {
-               printf("Efika USB ULPI initialization failed\n");
-               return;
-       }
-
-       /* 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);
-
-       /*
-        * Set VBusChrg
-        *
-        * NOTE: This violates USB specification, but otherwise, USB on Efika
-        * doesn't work.
-        */
-       ulpi_write(&ulpi_vp, &ulpi->otg_ctrl_set, ULPI_OTG_CHRGVBUS);
-}
-
-int board_ehci_hcd_init(int port)
-{
-       /* Init iMX51 EHCI */
-       efika_usb_phy_reset();
-       efika_usb_hub_reset();
-       efika_usb_enable_devices();
-
-       return 0;
-}
-
-/* This overrides a weak function */
-void mx5_ehci_powerup_fixup(struct ehci_ctrl *ctrl, uint32_t *status_reg,
-                          uint32_t *reg)
-{
-       uint32_t port = OTG_BASE_ADDR + (0x200 * CONFIG_MXC_USB_PORT);
-       struct usb_ehci *ehci = (struct usb_ehci *)port;
-       struct ulpi_regs *ulpi = (struct ulpi_regs *)0;
-       struct ulpi_viewport ulpi_vp;
-
-       ulpi_vp.viewport_addr = (u32)&ehci->ulpi_viewpoint;
-       ulpi_vp.port_num = 0;
-
-       ulpi_write(&ulpi_vp, &ulpi->otg_ctrl_set, ULPI_OTG_CHRGVBUS);
-
-       mdelay(50);
-
-       /* terminate the reset */
-       *reg = ehci_readl(status_reg);
-       *reg |= EHCI_PS_PE;
-}
-
-void board_ehci_hcd_postinit(struct usb_ehci *ehci, int port)
-{
-       uint32_t tmp;
-
-       if (port == 0) {
-               /* Adjust UTMI PHY frequency to 24MHz */
-               tmp = readl(OTG_BASE_ADDR + 0x80c);
-               tmp = (tmp & ~0x3) | 0x01;
-               writel(tmp, OTG_BASE_ADDR + 0x80c);
-       } else if (port == 1) {
-               efika_ehci_init(ehci, IMX_GPIO_NR(1, 27),
-                               MX51_PAD_USBH1_STP__GPIO1_27,
-                               MX51_PAD_USBH1_STP__USBH1_STP);
-       } else if ((port == 2) && machine_is_efikasb()) {
-               efika_ehci_init(ehci, IMX_GPIO_NR(2, 20),
-                               MX51_PAD_EIM_A26__GPIO2_20,
-                               MX51_PAD_EIM_A26__USBH2_STP);
-       }
-
-       if (port)
-               mdelay(10);
-}
-
-/*
- * Ethernet on the Smarttop is on the USB bus. Rather than give an error about
- * "CPU Net Initialization Failed", just pass this test since no other settings
- * are required. Smartbook doesn't have built-in Ethernet but we will let it
- * pass anyway considering someone may have plugged in a USB stick and all
- * they need to do is run "usb start".
- */
-int board_eth_init(bd_t *bis)
-{
-       return 0;
-}
diff --git a/board/genesi/mx51_efikamx/efikamx.c b/board/genesi/mx51_efikamx/efikamx.c
deleted file mode 100644 (file)
index 6ba55cd..0000000
+++ /dev/null
@@ -1,509 +0,0 @@
-/*
- * Copyright (C) 2009 Freescale Semiconductor, Inc.
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- * Copyright (C) 2009-2012 Genesi USA, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/iomux-mx51.h>
-#include <asm/gpio.h>
-#include <asm/errno.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/crm_regs.h>
-#include <asm/arch/clock.h>
-#include <asm/imx-common/spi.h>
-#include <i2c.h>
-#include <mmc.h>
-#include <fsl_esdhc.h>
-#include <power/pmic.h>
-#include <fsl_pmic.h>
-#include <mc13892.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Compile-time error checking
- */
-#ifndef        CONFIG_MXC_SPI
-#error "CONFIG_MXC_SPI not set, this is essential for board's operation!"
-#endif
-
-/*
- * Board revisions
- *
- * Note that we get these revisions here for convenience, but we only set
- * up for the production model Smarttop (1.3) and Smartbook (2.0).
- *
- */
-#define        EFIKAMX_BOARD_REV_11    0x1
-#define        EFIKAMX_BOARD_REV_12    0x2
-#define        EFIKAMX_BOARD_REV_13    0x3
-#define        EFIKAMX_BOARD_REV_14    0x4
-
-#define        EFIKASB_BOARD_REV_13    0x1
-#define        EFIKASB_BOARD_REV_20    0x2
-
-/*
- * Board identification
- */
-static u32 get_mx_rev(void)
-{
-       u32 rev = 0;
-       /*
-        * Retrieve board ID:
-        *
-        *  gpio: 16 17 11
-        *  ==============
-        *      r1.1:  1+ 1  1
-        *      r1.2:  1  1  0
-        *      r1.3:  1  0  1
-        *      r1.4:  1  0  0
-        *
-        * + note: r1.1 does not strap this pin properly so it needs to
-        *         be hacked or ignored.
-        */
-
-       /* set to 1 in order to get correct value on board rev 1.1 */
-       gpio_direction_output(IMX_GPIO_NR(3, 16), 1);
-       gpio_direction_input(IMX_GPIO_NR(3, 11));
-       gpio_direction_input(IMX_GPIO_NR(3, 16));
-       gpio_direction_input(IMX_GPIO_NR(3, 17));
-
-       rev |= (!!gpio_get_value(IMX_GPIO_NR(3, 16))) << 0;
-       rev |= (!!gpio_get_value(IMX_GPIO_NR(3, 17))) << 1;
-       rev |= (!!gpio_get_value(IMX_GPIO_NR(3, 11))) << 2;
-
-       return (~rev & 0x7) + 1;
-}
-
-static iomux_v3_cfg_t const efikasb_revision_pads[] = {
-       MX51_PAD_EIM_CS3__GPIO2_28,
-       MX51_PAD_EIM_CS4__GPIO2_29,
-};
-
-static inline u32 get_sb_rev(void)
-{
-       u32 rev = 0;
-
-       imx_iomux_v3_setup_multiple_pads(efikasb_revision_pads,
-                               ARRAY_SIZE(efikasb_revision_pads));
-       gpio_direction_input(IMX_GPIO_NR(2, 28));
-       gpio_direction_input(IMX_GPIO_NR(2, 29));
-
-       rev |= (!!gpio_get_value(IMX_GPIO_NR(2, 28))) << 0;
-       rev |= (!!gpio_get_value(IMX_GPIO_NR(2, 29))) << 1;
-
-       return rev;
-}
-
-inline uint32_t get_efikamx_rev(void)
-{
-       if (machine_is_efikamx())
-               return get_mx_rev();
-       else if (machine_is_efikasb())
-               return get_sb_rev();
-}
-
-u32 get_board_rev(void)
-{
-       return get_cpu_rev() | (get_efikamx_rev() << 8);
-}
-
-/*
- * DRAM initialization
- */
-int dram_init(void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
-                                               PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-/*
- * UART configuration
- */
-static iomux_v3_cfg_t const efikamx_uart_pads[] = {
-       MX51_PAD_UART1_RXD__UART1_RXD,
-       MX51_PAD_UART1_TXD__UART1_TXD,
-       MX51_PAD_UART1_RTS__UART1_RTS,
-       MX51_PAD_UART1_CTS__UART1_CTS,
-};
-
-/*
- * SPI configuration
- */
-static iomux_v3_cfg_t const efikamx_spi_pads[] = {
-       MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI,
-       MX51_PAD_CSPI1_MISO__ECSPI1_MISO,
-       MX51_PAD_CSPI1_SCLK__ECSPI1_SCLK,
-       MX51_PAD_CSPI1_SS0__GPIO4_24,
-       MX51_PAD_CSPI1_SS1__GPIO4_25,
-       MX51_PAD_GPIO1_6__GPIO1_6,
-};
-
-#define EFIKAMX_SPI_SS0                IMX_GPIO_NR(4, 24)
-#define EFIKAMX_SPI_SS1                IMX_GPIO_NR(4, 25)
-#define EFIKAMX_PMIC_IRQ       IMX_GPIO_NR(1, 6)
-
-/*
- * PMIC configuration
- */
-#ifdef CONFIG_MXC_SPI
-int board_spi_cs_gpio(unsigned bus, unsigned cs)
-{
-       return (bus == 0 && cs == 1) ? 121 : -1;
-}
-
-static void power_init(void)
-{
-       unsigned int val;
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)MXC_CCM_BASE;
-       struct pmic *p;
-       int ret;
-
-       ret = pmic_init(CONFIG_FSL_PMIC_BUS);
-       if (ret)
-               return;
-
-       p = pmic_get("FSL_PMIC");
-       if (!p)
-               return;
-
-       /* Write needed to Power Gate 2 register */
-       pmic_reg_read(p, REG_POWER_MISC, &val);
-       val &= ~PWGT2SPIEN;
-       pmic_reg_write(p, REG_POWER_MISC, val);
-
-       /* Externally powered */
-       pmic_reg_read(p, REG_CHARGE, &val);
-       val |= ICHRG0 | ICHRG1 | ICHRG2 | ICHRG3 | CHGAUTOB;
-       pmic_reg_write(p, REG_CHARGE, val);
-
-       /* power up the system first */
-       pmic_reg_write(p, REG_POWER_MISC, PWUP);
-
-       /* Set core voltage to 1.1V */
-       pmic_reg_read(p, REG_SW_0, &val);
-       val = (val & ~SWx_VOLT_MASK) | SWx_1_100V;
-       pmic_reg_write(p, REG_SW_0, val);
-
-       /* Setup VCC (SW2) to 1.25 */
-       pmic_reg_read(p, REG_SW_1, &val);
-       val = (val & ~SWx_VOLT_MASK) | SWx_1_250V;
-       pmic_reg_write(p, REG_SW_1, val);
-
-       /* Setup 1V2_DIG1 (SW3) to 1.25 */
-       pmic_reg_read(p, REG_SW_2, &val);
-       val = (val & ~SWx_VOLT_MASK) | SWx_1_250V;
-       pmic_reg_write(p, REG_SW_2, val);
-       udelay(50);
-
-       /* Raise the core frequency to 800MHz */
-       writel(0x0, &mxc_ccm->cacrr);
-
-       /* Set switchers in Auto in NORMAL mode & STANDBY mode */
-       /* Setup the switcher mode for SW1 & SW2*/
-       pmic_reg_read(p, REG_SW_4, &val);
-       val = (val & ~((SWMODE_MASK << SWMODE1_SHIFT) |
-               (SWMODE_MASK << SWMODE2_SHIFT)));
-       val |= (SWMODE_AUTO_AUTO << SWMODE1_SHIFT) |
-               (SWMODE_AUTO_AUTO << SWMODE2_SHIFT);
-       pmic_reg_write(p, REG_SW_4, val);
-
-       /* Setup the switcher mode for SW3 & SW4 */
-       pmic_reg_read(p, REG_SW_5, &val);
-       val = (val & ~((SWMODE_MASK << SWMODE3_SHIFT) |
-               (SWMODE_MASK << SWMODE4_SHIFT)));
-       val |= (SWMODE_AUTO_AUTO << SWMODE3_SHIFT) |
-               (SWMODE_AUTO_AUTO << SWMODE4_SHIFT);
-       pmic_reg_write(p, REG_SW_5, val);
-
-       /* Set VDIG to 1.8V, VGEN3 to 1.8V, VCAM to 2.6V */
-       pmic_reg_read(p, REG_SETTING_0, &val);
-       val &= ~(VCAM_MASK | VGEN3_MASK | VDIG_MASK);
-       val |= VDIG_1_8 | VGEN3_1_8 | VCAM_2_6;
-       pmic_reg_write(p, REG_SETTING_0, val);
-
-       /* Set VVIDEO to 2.775V, VAUDIO to 3V, VSD to 3.15V */
-       pmic_reg_read(p, REG_SETTING_1, &val);
-       val &= ~(VVIDEO_MASK | VSD_MASK | VAUDIO_MASK);
-       val |= VSD_3_15 | VAUDIO_3_0 | VVIDEO_2_775 | VGEN1_1_2 | VGEN2_3_15;
-       pmic_reg_write(p, REG_SETTING_1, val);
-
-       /* Enable VGEN1, VGEN2, VDIG, VPLL */
-       pmic_reg_read(p, REG_MODE_0, &val);
-       val |= VGEN1EN | VDIGEN | VGEN2EN | VPLLEN;
-       pmic_reg_write(p, REG_MODE_0, val);
-
-       /* Configure VGEN3 and VCAM regulators to use external PNP */
-       val = VGEN3CONFIG | VCAMCONFIG;
-       pmic_reg_write(p, REG_MODE_1, val);
-       udelay(200);
-
-       /* Enable VGEN3, VCAM, VAUDIO, VVIDEO, VSD regulators */
-       val = VGEN3EN | VGEN3CONFIG | VCAMEN | VCAMCONFIG |
-               VVIDEOEN | VAUDIOEN | VSDEN;
-       pmic_reg_write(p, REG_MODE_1, val);
-
-       pmic_reg_read(p, REG_POWER_CTL2, &val);
-       val |= WDIRESET;
-       pmic_reg_write(p, REG_POWER_CTL2, val);
-
-       udelay(2500);
-}
-#else
-static inline void power_init(void) { }
-#endif
-
-/*
- * MMC configuration
- */
-#ifdef CONFIG_FSL_ESDHC
-
-struct fsl_esdhc_cfg esdhc_cfg[2] = {
-       {MMC_SDHC1_BASE_ADDR},
-       {MMC_SDHC2_BASE_ADDR},
-};
-
-static iomux_v3_cfg_t const efikamx_sdhc1_pads[] = {
-       MX51_PAD_SD1_CMD__SD1_CMD,
-       MX51_PAD_SD1_CLK__SD1_CLK,
-       MX51_PAD_SD1_DATA0__SD1_DATA0,
-       MX51_PAD_SD1_DATA1__SD1_DATA1,
-       MX51_PAD_SD1_DATA2__SD1_DATA2,
-       MX51_PAD_SD1_DATA3__SD1_DATA3,
-       MX51_PAD_GPIO1_1__SD1_WP,
-};
-
-#define EFIKAMX_SDHC1_WP       IMX_GPIO_NR(1, 1)
-
-static iomux_v3_cfg_t const efikamx_sdhc1_cd_pads[] = {
-       MX51_PAD_GPIO1_0__SD1_CD,
-       NEW_PAD_CTRL(MX51_PAD_EIM_CS2__GPIO2_27, MX51_ESDHC_PAD_CTRL),
-};
-
-#define EFIKAMX_SDHC1_CD       IMX_GPIO_NR(1, 0)
-#define EFIKASB_SDHC1_CD       IMX_GPIO_NR(2, 27)
-
-static iomux_v3_cfg_t const efikasb_sdhc2_pads[] = {
-       MX51_PAD_SD2_CMD__SD2_CMD,
-       MX51_PAD_SD2_CLK__SD2_CLK,
-       MX51_PAD_SD2_DATA0__SD2_DATA0,
-       MX51_PAD_SD2_DATA1__SD2_DATA1,
-       MX51_PAD_SD2_DATA2__SD2_DATA2,
-       MX51_PAD_SD2_DATA3__SD2_DATA3,
-       MX51_PAD_GPIO1_7__SD2_WP,
-       MX51_PAD_GPIO1_8__SD2_CD,
-};
-
-#define EFIKASB_SDHC2_CD       IMX_GPIO_NR(1, 8)
-#define EFIKASB_SDHC2_WP       IMX_GPIO_NR(1, 7)
-
-static inline uint32_t efikamx_mmc_getcd(u32 base)
-{
-       if (base == MMC_SDHC1_BASE_ADDR)
-               if (machine_is_efikamx())
-                       return EFIKAMX_SDHC1_CD;
-               else
-                       return EFIKASB_SDHC1_CD;
-       else
-               return EFIKASB_SDHC2_CD;
-}
-
-int board_mmc_getcd(struct mmc *mmc)
-{
-       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
-       uint32_t cd = efikamx_mmc_getcd(cfg->esdhc_base);
-       int ret = !gpio_get_value(cd);
-
-       return ret;
-}
-
-int board_mmc_init(bd_t *bis)
-{
-       int ret;
-
-       /*
-        * All Efika MX boards use eSDHC1 with a common write-protect GPIO
-        */
-       imx_iomux_v3_setup_multiple_pads(efikamx_sdhc1_pads,
-                                       ARRAY_SIZE(efikamx_sdhc1_pads));
-       gpio_direction_input(EFIKAMX_SDHC1_WP);
-
-       /*
-        * Smartbook and Smarttop differ on the location of eSDHC1
-        * carrier-detect GPIO
-        */
-       if (machine_is_efikamx()) {
-               imx_iomux_v3_setup_pad(efikamx_sdhc1_cd_pads[0]);
-               gpio_direction_input(EFIKAMX_SDHC1_CD);
-       } else if (machine_is_efikasb()) {
-               imx_iomux_v3_setup_pad(efikamx_sdhc1_cd_pads[1]);
-               gpio_direction_input(EFIKASB_SDHC1_CD);
-       }
-
-       esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-       esdhc_cfg[1].sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
-
-       ret = fsl_esdhc_initialize(bis, &esdhc_cfg[0]);
-
-       if (machine_is_efikasb()) {
-
-               imx_iomux_v3_setup_multiple_pads(efikasb_sdhc2_pads,
-                                               ARRAY_SIZE(efikasb_sdhc2_pads));
-               gpio_direction_input(EFIKASB_SDHC2_CD);
-               gpio_direction_input(EFIKASB_SDHC2_WP);
-               if (!ret)
-                       ret = fsl_esdhc_initialize(bis, &esdhc_cfg[1]);
-       }
-
-       return ret;
-}
-#endif
-
-/*
- * PATA
- */
-static iomux_v3_cfg_t const efikamx_pata_pads[] = {
-       MX51_PAD_NANDF_WE_B__PATA_DIOW,
-       MX51_PAD_NANDF_RE_B__PATA_DIOR,
-       MX51_PAD_NANDF_ALE__PATA_BUFFER_EN,
-       MX51_PAD_NANDF_CLE__PATA_RESET_B,
-       MX51_PAD_NANDF_WP_B__PATA_DMACK,
-       MX51_PAD_NANDF_RB0__PATA_DMARQ,
-       MX51_PAD_NANDF_RB1__PATA_IORDY,
-       MX51_PAD_GPIO_NAND__PATA_INTRQ,
-       MX51_PAD_NANDF_CS2__PATA_CS_0,
-       MX51_PAD_NANDF_CS3__PATA_CS_1,
-       MX51_PAD_NANDF_CS4__PATA_DA_0,
-       MX51_PAD_NANDF_CS5__PATA_DA_1,
-       MX51_PAD_NANDF_CS6__PATA_DA_2,
-       MX51_PAD_NANDF_D15__PATA_DATA15,
-       MX51_PAD_NANDF_D14__PATA_DATA14,
-       MX51_PAD_NANDF_D13__PATA_DATA13,
-       MX51_PAD_NANDF_D12__PATA_DATA12,
-       MX51_PAD_NANDF_D11__PATA_DATA11,
-       MX51_PAD_NANDF_D10__PATA_DATA10,
-       MX51_PAD_NANDF_D9__PATA_DATA9,
-       MX51_PAD_NANDF_D8__PATA_DATA8,
-       MX51_PAD_NANDF_D7__PATA_DATA7,
-       MX51_PAD_NANDF_D6__PATA_DATA6,
-       MX51_PAD_NANDF_D5__PATA_DATA5,
-       MX51_PAD_NANDF_D4__PATA_DATA4,
-       MX51_PAD_NANDF_D3__PATA_DATA3,
-       MX51_PAD_NANDF_D2__PATA_DATA2,
-       MX51_PAD_NANDF_D1__PATA_DATA1,
-       MX51_PAD_NANDF_D0__PATA_DATA0,
-};
-
-/*
- * EHCI USB
- */
-#ifdef CONFIG_CMD_USB
-extern void setup_iomux_usb(void);
-#else
-static inline void setup_iomux_usb(void) { }
-#endif
-
-/*
- * LED configuration
- *
- * Smarttop LED pad config is done in the DCD
- *
- */
-#define EFIKAMX_LED_BLUE       IMX_GPIO_NR(3, 13)
-#define EFIKAMX_LED_GREEN      IMX_GPIO_NR(3, 14)
-#define EFIKAMX_LED_RED                IMX_GPIO_NR(3, 15)
-
-static iomux_v3_cfg_t const efikasb_led_pads[] = {
-       MX51_PAD_GPIO1_3__GPIO1_3,
-       MX51_PAD_EIM_CS0__GPIO2_25,
-};
-
-#define EFIKASB_CAPSLOCK_LED   IMX_GPIO_NR(2, 25)
-#define EFIKASB_MESSAGE_LED    IMX_GPIO_NR(1, 3) /* Note: active low */
-
-/*
- * Board initialization
- */
-int board_early_init_f(void)
-{
-       if (machine_is_efikasb()) {
-               imx_iomux_v3_setup_multiple_pads(efikasb_led_pads,
-                                               ARRAY_SIZE(efikasb_led_pads));
-               gpio_direction_output(EFIKASB_CAPSLOCK_LED, 0);
-               gpio_direction_output(EFIKASB_MESSAGE_LED, 1);
-       } else if (machine_is_efikamx()) {
-               /*
-                * Set up GPIO directions for LEDs.
-                * IOMUX has been done in the DCD already.
-                * Turn the red LED on for pre-relocation code.
-                */
-               gpio_direction_output(EFIKAMX_LED_BLUE, 0);
-               gpio_direction_output(EFIKAMX_LED_GREEN, 0);
-               gpio_direction_output(EFIKAMX_LED_RED, 1);
-       }
-
-       /*
-        * Both these pad configurations for UART and SPI are kind of redundant
-        * since they are the Power-On Defaults for the i.MX51. But, it seems we
-        * should make absolutely sure that they are set up correctly.
-        */
-       imx_iomux_v3_setup_multiple_pads(efikamx_uart_pads,
-                                       ARRAY_SIZE(efikamx_uart_pads));
-       imx_iomux_v3_setup_multiple_pads(efikamx_spi_pads,
-                                       ARRAY_SIZE(efikamx_spi_pads));
-
-       /* not technically required for U-Boot operation but do it anyway. */
-       gpio_direction_input(EFIKAMX_PMIC_IRQ);
-       /* Deselect both CS for now, otherwise NOR doesn't probe properly. */
-       gpio_direction_output(EFIKAMX_SPI_SS0, 0);
-       gpio_direction_output(EFIKAMX_SPI_SS1, 1);
-
-       return 0;
-}
-
-int board_init(void)
-{
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-
-       return 0;
-}
-
-int board_late_init(void)
-{
-       if (machine_is_efikamx()) {
-               /*
-                * Set up Blue LED for "In U-Boot" status.
-                * We're all relocated and ready to U-Boot!
-                */
-               gpio_set_value(EFIKAMX_LED_RED, 0);
-               gpio_set_value(EFIKAMX_LED_GREEN, 0);
-               gpio_set_value(EFIKAMX_LED_BLUE, 1);
-       }
-
-       power_init();
-
-       imx_iomux_v3_setup_multiple_pads(efikamx_pata_pads,
-                                       ARRAY_SIZE(efikamx_pata_pads));
-       setup_iomux_usb();
-
-       return 0;
-}
-
-int checkboard(void)
-{
-       u32 rev = get_efikamx_rev();
-
-       printf("Board: Genesi Efika MX ");
-       if (machine_is_efikamx())
-               printf("Smarttop (1.%i)\n", rev & 0xf);
-       else if (machine_is_efikasb())
-               printf("Smartbook\n");
-
-       return 0;
-}
diff --git a/board/genesi/mx51_efikamx/imximage_mx.cfg b/board/genesi/mx51_efikamx/imximage_mx.cfg
deleted file mode 100644 (file)
index e2911eb..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2009 Pegatron Corporation
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- * Copyright (C) 2009-2012 Genesi USA, Inc.
- *
- * BASED ON: imx51evk
- *
- * (C) Copyright 2009
- * Stefano Babic DENX Software Engineering sbabic@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
- * Refer doc/README.imximage for more details about how-to configure
- * and create imximage boot image
- *
- * The syntax is taken as close as possible with the kwbimage
- */
-
-/*
- * Boot Device : one of
- * spi, sd (the board has no nand neither onenand)
- */
-BOOT_FROM      spi
-
-/*
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *     Addr-type register length (1,2 or 4 bytes)
- *     Address   absolute address of the register
- *     value     value to be stored in the register
- */
-/*
- * Essential GPIO settings to be done as early as possible
- * PCBIDn pad settings are all the defaults except #2 which needs HVE off
- */
-DATA 4 0x73fa8134 0x3                  # PCBID0 ALT3 GPIO 3_16
-DATA 4 0x73fa8130 0x3                  # PCBID1 ALT3 GPIO 3_17
-DATA 4 0x73fa8128 0x3                  # PCBID2 ALT3 GPIO 3_11
-DATA 4 0x73fa8504 0xe4                 # PCBID2 PAD ~HVE
-DATA 4 0x73fa8198 0x3                  # LED0 ALT3 GPIO 3_13
-DATA 4 0x73fa81c4 0x3                  # LED1 ALT3 GPIO 3_14
-DATA 4 0x73fa81c8 0x3                  # LED2 ALT3 GPIO 3_15
-
-/* DDR bus IOMUX PAD settings */
-DATA 4 0x73fa850c 0x20c5               # SDODT1
-DATA 4 0x73fa8510 0x20c5               # SDODT0
-DATA 4 0x73fa84ac 0xc5                 # SDWE
-DATA 4 0x73fa84b0 0xc5                 # SDCKE0
-DATA 4 0x73fa84b4 0xc5                 # SDCKE1
-DATA 4 0x73fa84cc 0xc5                 # DRAM_CS0
-DATA 4 0x73fa84d0 0xc5                 # DRAM_CS1
-DATA 4 0x73fa882c 0x2                  # DRAM_B4
-DATA 4 0x73fa88a4 0x2                  # DRAM_B0
-DATA 4 0x73fa88ac 0x2                  # DRAM_B1
-DATA 4 0x73fa88b8 0x2                  # DRAM_B2
-DATA 4 0x73fa84d4 0xc5                 # DRAM_DQM0
-DATA 4 0x73fa84d8 0xc5                 # DRAM_DQM1
-DATA 4 0x73fa84dc 0xc5                 # DRAM_DQM2
-DATA 4 0x73fa84e0 0xc5                 # DRAM_DQM3
-
-/*
- * Setting DDR for micron
- * 13 Rows, 10 Cols, 32 bit, SREF=4 Micron Model
- * CAS=3 BL=4
- */
-/* ESDCTL_ESDCTL0 */
-DATA 4 0x83fd9000 0x82a20000
-/* ESDCTL_ESDCTL1 */
-DATA 4 0x83fd9008 0x82a20000
-/* ESDCTL_ESDMISC */
-DATA 4 0x83fd9010 0xcaaaf6d0
-/* ESDCTL_ESDCFG0 */
-DATA 4 0x83fd9004 0x3f3574aa
-/* ESDCTL_ESDCFG1 */
-DATA 4 0x83fd900c 0x3f3574aa
-
-/* Init DRAM on CS0 */
-/* ESDCTL_ESDSCR */
-DATA 4 0x83fd9014 0x04008008
-DATA 4 0x83fd9014 0x0000801a
-DATA 4 0x83fd9014 0x0000801b
-DATA 4 0x83fd9014 0x00448019
-DATA 4 0x83fd9014 0x07328018
-DATA 4 0x83fd9014 0x04008008
-DATA 4 0x83fd9014 0x00008010
-DATA 4 0x83fd9014 0x00008010
-DATA 4 0x83fd9014 0x06328018
-DATA 4 0x83fd9014 0x03808019
-DATA 4 0x83fd9014 0x00408019
-DATA 4 0x83fd9014 0x00008000
-
-/* Init DRAM on CS1 */
-DATA 4 0x83fd9014 0x0400800c
-DATA 4 0x83fd9014 0x0000801e
-DATA 4 0x83fd9014 0x0000801f
-DATA 4 0x83fd9014 0x0000801d
-DATA 4 0x83fd9014 0x0732801c
-DATA 4 0x83fd9014 0x0400800c
-DATA 4 0x83fd9014 0x00008014
-DATA 4 0x83fd9014 0x00008014
-DATA 4 0x83fd9014 0x0632801c
-DATA 4 0x83fd9014 0x0380801d
-DATA 4 0x83fd9014 0x0040801d
-DATA 4 0x83fd9014 0x00008004
-
-/* Write to CTL0 */
-DATA 4 0x83fd9000 0xb2a20000
-/* Write to CTL1 */
-DATA 4 0x83fd9008 0xb2a20000
-/* ESDMISC */
-DATA 4 0x83fd9010 0x000ad6d0
-/* ESDCTL_ESDCDLYGD */
-DATA 4 0x83fd9034 0x90000000
-DATA 4 0x83fd9014 0x00000000
diff --git a/board/genesi/mx51_efikamx/imximage_sb.cfg b/board/genesi/mx51_efikamx/imximage_sb.cfg
deleted file mode 100644 (file)
index a67d41b..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2009 Pegatron Corporation
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- * Copyright (C) 2009-2012 Genesi USA, Inc.
- *
- * BASED ON: imx51evk
- *
- * (C) Copyright 2009
- * Stefano Babic DENX Software Engineering sbabic@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Boot Device : one of
- * spi, sd (the board has no nand neither onenand)
- */
-BOOT_FROM      spi
-
-/*
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *     Addr-type register length (1,2 or 4 bytes)
- *     Address   absolute address of the register
- *     value     value to be stored in the register
-*/
-/* DDR bus IOMUX PAD settings */
-DATA 4 0x73fa88a0 0x200                # GRP_INMODE1
-DATA 4 0x73fa850c 0x20c5       # SDODT1
-DATA 4 0x73fa8510 0x20c5       # SDODT0
-DATA 4 0x73fa8848 0x4          # DDR_A1
-DATA 4 0x73fa84b8 0xe7         # DRAM_SDCLK
-DATA 4 0x73fa84bc 0x45         # DRAM_SDQS0
-DATA 4 0x73fa84c0 0x45         # DRAM_SDQS1
-DATA 4 0x73fa84c4 0x45         # DRAM_SDQS2
-DATA 4 0x73fa84c8 0x45         # DRAM_SDQS3
-DATA 4 0x73fa8820 0x0          # DDRPKS
-DATA 4 0x73fa84ac 0xe5         # SDWE
-DATA 4 0x73fa84b0 0xe5         # SDCKE0
-DATA 4 0x73fa84b4 0xe5         # SDCKE1
-DATA 4 0x73fa84cc 0xe5         # DRAM_CS0
-DATA 4 0x73fa84d0 0xe4         # DRAM_CS1
-
-/*
- * Setting DDR for micron
- * 13 Rows, 10 Cols, 32 bit, SREF=4 Micron Model
- * CAS=3 BL=4
- */
-/* ESDCTL_ESDCTL0 */
-DATA 4 0x83fd9000 0x82a20000
-/* ESDCTL_ESDCTL1 */
-DATA 4 0x83fd9008 0x82a20000
-/* ESDCTL_ESDMISC */
-DATA 4 0x83fd9010 0xcaaaf6d0
-/* ESDCTL_ESDCFG0 */
-DATA 4 0x83fd9004 0x333574aa
-/* ESDCTL_ESDCFG1 */
-DATA 4 0x83fd900c 0x333574aa
-
-/* Init DRAM on CS0 */
-/* ESDCTL_ESDSCR */
-DATA 4 0x83fd9014 0x04008008
-DATA 4 0x83fd9014 0x0000801a
-DATA 4 0x83fd9014 0x0000801b
-DATA 4 0x83fd9014 0x00448019
-DATA 4 0x83fd9014 0x07328018
-DATA 4 0x83fd9014 0x04008008
-DATA 4 0x83fd9014 0x00008010
-DATA 4 0x83fd9014 0x00008010
-DATA 4 0x83fd9014 0x06328018
-DATA 4 0x83fd9014 0x03808019
-DATA 4 0x83fd9014 0x00408019
-DATA 4 0x83fd9014 0x00008000
-
-/* Init DRAM on CS1 */
-DATA 4 0x83fd9014 0x0400800c
-DATA 4 0x83fd9014 0x0000801e
-DATA 4 0x83fd9014 0x0000801f
-DATA 4 0x83fd9014 0x0000801d
-DATA 4 0x83fd9014 0x0732801c
-DATA 4 0x83fd9014 0x0400800c
-DATA 4 0x83fd9014 0x00008014
-DATA 4 0x83fd9014 0x00008014
-DATA 4 0x83fd9014 0x0632801c
-DATA 4 0x83fd9014 0x0380801d
-DATA 4 0x83fd9014 0x0042801d
-DATA 4 0x83fd9014 0x00008004
-
-/* Write to CTL0 */
-DATA 4 0x83fd9000 0xb2a20000
-/* Write to CTL1 */
-DATA 4 0x83fd9008 0xb2a20000
-/* ESDMISC */
-DATA 4 0x83fd9010 0xcaaaf6d0
-/* ESDCTL_ESDCDLYGD */
-DATA 4 0x83fd9034 0x90000000
-DATA 4 0x83fd9014 0x00000000
diff --git a/board/google/chromebook_jerry/Kconfig b/board/google/chromebook_jerry/Kconfig
new file mode 100644 (file)
index 0000000..3640513
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_CHROMEBOOK_JERRY
+
+config SYS_BOARD
+       default "chromebook_jerry"
+
+config SYS_VENDOR
+       default "google"
+
+config SYS_CONFIG_NAME
+       default "chromebook_jerry"
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+       def_bool y
+
+endif
diff --git a/board/google/chromebook_jerry/MAINTAINERS b/board/google/chromebook_jerry/MAINTAINERS
new file mode 100644 (file)
index 0000000..b01b6cd
--- /dev/null
@@ -0,0 +1,6 @@
+CHROMEBOOK JERRY BOARD
+M:     Simon Glass <sjg@chromium.org>
+S:     Maintained
+F:     board/google/chromebook_jerry/
+F:     include/configs/chromebook_jerry.h
+F:     configs/chromebook_jerry_defconfig
diff --git a/board/google/chromebook_jerry/Makefile b/board/google/chromebook_jerry/Makefile
new file mode 100644 (file)
index 0000000..d29a063
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# (C) Copyright 2015 Google, Inc
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  += jerry.o
diff --git a/board/google/chromebook_jerry/jerry.c b/board/google/chromebook_jerry/jerry.c
new file mode 100644 (file)
index 0000000..5119e95
--- /dev/null
@@ -0,0 +1,7 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
index b38bc14ff662f6e6d8c28cae0488d544d5b2a366..2de2799fbb1f9145223f6761562916645f7f50e3 100644 (file)
@@ -4,4 +4,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y += early_init.o
+obj-$(CONFIG_X86) += early_init.o
index 66ae4b6906b54568242ee1cdb34d758689c12b07..01f8e67be1456325358ded26ed1757be12cbb33c 100644 (file)
@@ -59,3 +59,15 @@ int dram_init(void)
        gd->ram_size = CONFIG_SYS_SDRAM_SIZE;
        return 0;
 }
+
+#ifdef CONFIG_USB_GADGET_PXA2XX
+int board_usb_init(int index, enum usb_init_type init)
+{
+       return 0;
+}
+
+int board_usb_cleanup(int index, enum usb_init_type init)
+{
+       return 0;
+}
+#endif
diff --git a/board/hale/tt01/Kconfig b/board/hale/tt01/Kconfig
deleted file mode 100644 (file)
index af9828a..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_TT01
-
-config SYS_BOARD
-       default "tt01"
-
-config SYS_VENDOR
-       default "hale"
-
-config SYS_SOC
-       default "mx31"
-
-config SYS_CONFIG_NAME
-       default "tt01"
-
-endif
diff --git a/board/hale/tt01/MAINTAINERS b/board/hale/tt01/MAINTAINERS
deleted file mode 100644 (file)
index 2f582be..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-TT01 BOARD
-M:     Helmut Raiger <helmut.raiger@hale.at>
-S:     Maintained
-F:     board/hale/tt01/
-F:     include/configs/tt01.h
-F:     configs/tt01_defconfig
diff --git a/board/hale/tt01/Makefile b/board/hale/tt01/Makefile
deleted file mode 100644 (file)
index e06a040..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# (C) Copyright 2009 HALE electronic <helmut.raiger@hale.at>
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := tt01.o
-obj-y  += lowlevel_init.o
diff --git a/board/hale/tt01/lowlevel_init.S b/board/hale/tt01/lowlevel_init.S
deleted file mode 100644 (file)
index 54132a1..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * (C) Copyright 2009 Magnus Lilja <lilja.magnus@gmail.com>
- * (C) Copyright 2011 Helmut Raiger <helmut.raiger@hale.at>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <config.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/macro.h>
-
-.globl lowlevel_init
-lowlevel_init:
-       /* Also setup the Peripheral Port Remap register inside the core */
-       ldr     r0, =ARM_PPMRR      /* start from AIPS 2GB region */
-       mcr     p15, 0, r0, c15, c2, 4
-       mov     pc, lr
diff --git a/board/hale/tt01/tt01.c b/board/hale/tt01/tt01.c
deleted file mode 100644 (file)
index 011aed0..0000000
+++ /dev/null
@@ -1,243 +0,0 @@
-/*
- * (C) Copyright 2011 HALE electronic <helmut.raiger@hale.at>
- * (C) Copyright 2009 Magnus Lilja <lilja.magnus@gmail.com>
- * (c) 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <command.h>
-#include <power/pmic.h>
-#include <fsl_pmic.h>
-#include <mc13783.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/io.h>
-#include <errno.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define BOARD_STRING   "Board: HALE TT-01"
-
-/* Clock configuration */
-#define CCM_CCMR_SETUP         0x074B0BF5
-
-static void board_setup_clocks(void)
-{
-       struct clock_control_regs *ccm = (struct clock_control_regs *) CCM_BASE;
-       volatile int wait = 0x10000;
-
-       writel(CCM_CCMR_SETUP, &ccm->ccmr);
-       while (wait--)
-               ;
-
-       writel(CCM_CCMR_SETUP | CCMR_MPE, &ccm->ccmr);
-       writel((CCM_CCMR_SETUP | CCMR_MPE) & ~CCMR_MDS, &ccm->ccmr);
-
-       /* Set up clock to 532MHz */
-       writel(PDR0_CSI_PODF(0x3f) | PDR0_CSI_PRDF(7) | PDR0_PER_PODF(7) |
-                       PDR0_HSP_PODF(3) | PDR0_NFC_PODF(5) |
-                       PDR0_IPG_PODF(1) | PDR0_MAX_PODF(3) |
-                       PDR0_MCU_PODF(0), &ccm->pdr0);
-       writel(PLL_PD(0) | PLL_MFD(51) | PLL_MFI(10) | PLL_MFN(12),
-                       &ccm->mpctl);
-       writel(PLL_PD(1) | PLL_MFD(4) | PLL_MFI(12) | PLL_MFN(1),
-                       &ccm->spctl);
-}
-
-/* DRAM configuration */
-
-#define ESDMISC_MDDR_SETUP     0x00000004
-#define ESDMISC_MDDR_RESET_DL  0x0000000c
-/*
- * decoding magic 0x6ac73a = 0b 0110 1010   1100 0111   0011 1010 below:
- *   tXP = 11, tWTR = 0, tRP = 10, tMRD = 10
- *   tWR = 1, tRAS = 100, tRRD = 01, tCAS = 11
- *   tRCD = 011, tRC = 010
- *  note: all but tWTR (1), tRC (111) are reset defaults,
- *     the same values work in the jtag configuration
- *
- *  Bluetechnix setup has 0x75e73a (for 128MB) =
- *                     0b 0111 0101   1110 0111   0011 1010
- *   tXP = 11, tWTR = 1, tRP = 01, tMRD = 01
- *   tWR = 1, tRAS = 110, tRRD = 01, tCAS = 11
- *   tRCD = 011, tRC = 010
- */
-#define ESDCFG0_MDDR_SETUP     0x006ac73a
-#define ESDCTL_ROW_COL         (ESDCTL_SDE | ESDCTL_ROW(2) | ESDCTL_COL(2))
-#define ESDCTL_SETTINGS                (ESDCTL_ROW_COL | ESDCTL_SREFR(3) | \
-                                ESDCTL_DSIZ(2) | ESDCTL_BL(1))
-#define ESDCTL_PRECHARGE       (ESDCTL_ROW_COL | ESDCTL_CMD_PRECHARGE)
-#define ESDCTL_AUTOREFRESH     (ESDCTL_ROW_COL | ESDCTL_CMD_AUTOREFRESH)
-#define ESDCTL_LOADMODEREG     (ESDCTL_ROW_COL | ESDCTL_CMD_LOADMODEREG)
-#define ESDCTL_RW              ESDCTL_SETTINGS
-
-static void board_setup_sdram(void)
-{
-       u32 *pad;
-       struct esdc_regs *esdc = (struct esdc_regs *)ESDCTL_BASE_ADDR;
-
-       /*
-        * setup pad control for the controller pins
-        * no loopback, no pull, no keeper, no open drain,
-        * standard input, standard drive, slow slew rate
-        */
-       for (pad = (u32 *) IOMUXC_SW_PAD_CTL_SDCKE1_SDCLK_SDCLK_B;
-                       pad <= (u32 *) IOMUXC_SW_PAD_CTL_VPG0_VPG1_A0; pad++)
-               *pad = 0;
-
-       /* set up MX31 DDR Memory Controller */
-       writel(ESDMISC_MDDR_SETUP, &esdc->misc);
-       writel(ESDCFG0_MDDR_SETUP, &esdc->cfg0);
-
-       /* perform DDR init sequence for CSD0 */
-       writel(ESDCTL_PRECHARGE, &esdc->ctl0);
-       writel(0x12344321, CSD0_BASE+0x0f00);
-       writel(ESDCTL_AUTOREFRESH, &esdc->ctl0);
-       writel(0x12344321, CSD0_BASE);
-       writel(0x12344321, CSD0_BASE);
-       writel(ESDCTL_LOADMODEREG, &esdc->ctl0);
-       writeb(0xda, CSD0_BASE+0x33);
-       writeb(0xff, CSD0_BASE+0x1000000);
-       writel(ESDCTL_RW, &esdc->ctl0);
-       writel(0xDEADBEEF, CSD0_BASE);
-       writel(ESDMISC_MDDR_RESET_DL, &esdc->misc);
-}
-
-static void tt01_spi3_hw_init(void)
-{
-       /* CSPI3 */
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_CSPI3_MISO, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_CSPI3_MOSI, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_CSPI3_SCLK, MUX_CTL_FUNC));
-       /* CSPI3, SS0 = Atlas */
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_CSPI2_SS0, MUX_CTL_ALT1));
-
-       /* start CSPI3 clock (3 = always on except if PLL off) */
-       setbits_le32(CCM_CGR0, 3 << 16);
-}
-
-int dram_init(void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((long *) CONFIG_SYS_SDRAM_BASE,
-                       PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-int board_early_init_f(void)
-{
-       /* CS4: FPGA incl. network controller */
-       struct mxc_weimcs cs4 = {
-               /*    sp wp bcd bcs psz pme sync dol cnc wsc ew wws edc */
-               CSCR_U(0, 0,  0,  0,  0,  0,   0,  0,  3, 28, 1,  7,  6),
-               /*   oea oen ebwa ebwn csa ebc dsz csn psr cre wrap csen */
-               CSCR_L(4,  4,   4,  10,  4,  0,  5,  4,  0,  0,   0,   1),
-               /*  ebra ebrn rwa rwn mum lah lbn lba dww dct wwu age cnc2 fce*/
-               CSCR_A(4,   4,  4,  4,  0,  1,  4,  3,  0,  0,  0,  0,  1,   0)
-       };
-
-       /* this seems essential, won't start without, but why? */
-       writel(IPU_CONF_DI_EN, (u32 *) IPU_CONF);
-
-       board_setup_clocks();
-       board_setup_sdram();
-       mxc_setup_weimcs(4, &cs4);
-
-       /* Setup UART2 and SPI3 pins */
-       mx31_uart2_hw_init();
-       tt01_spi3_hw_init();
-
-       return 0;
-}
-
-int board_init(void)
-{
-       /* address of boot parameters */
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-       return 0;
-}
-
-int board_late_init(void)
-{
-#ifdef CONFIG_HW_WATCHDOG
-       hw_watchdog_init();
-#endif
-
-       return 0;
-}
-
-int checkboard(void)
-{
-       puts(BOARD_STRING "\n");
-       return 0;
-}
-
-#ifdef CONFIG_MXC_MMC
-int board_mmc_init(bd_t *bis)
-{
-       u32 val;
-       struct pmic *p;
-       int ret;
-
-       /*
-       * this is the first driver to use the pmic, so call
-       * pmic_init() here. board_late_init() is too late for
-       * the MMC driver.
-       */
-
-       ret = pmic_init(I2C_PMIC);
-       if (ret)
-               return ret;
-
-       p = pmic_get("FSL_PMIC");
-       if (!p)
-               return -ENODEV;
-
-       /* configure pins for SDHC1 only */
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_CLK, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_CMD, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA0, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA1, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA2, MUX_CTL_FUNC));
-       mx31_gpio_mux(IOMUX_MODE(MUX_CTL_SD1_DATA3, MUX_CTL_FUNC));
-
-       /* turn on power V_MMC1 */
-       if (pmic_reg_read(p, REG_MODE_1, &val) < 0)
-               pmic_reg_write(p, REG_MODE_1, val | VMMC1EN);
-
-       return mxc_mmc_init(bis);
-}
-#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_CONSOLE_EXTRA_INFO
-void video_get_info_str(int line_number, char *info)
-{
-       u32 srev = get_cpu_rev();
-
-       switch (line_number) {
-       case 2:
-               sprintf(info, " CPU  : Freescale i.MX31 rev %d.%d%s at %d MHz",
-                       (srev & 0xF0) >> 4, (srev & 0x0F),
-                       ((srev & 0x8000) ? " unknown" : ""),
-               mxc_get_clock(MXC_ARM_CLK) / 1000000);
-               break;
-       case 3:
-               strcpy(info, " " BOARD_STRING);
-               break;
-       default:
-               info[0] = 0;
-       }
-}
-#endif
diff --git a/board/icpdas/lp8x4x/Kconfig b/board/icpdas/lp8x4x/Kconfig
deleted file mode 100644 (file)
index 3e87c40..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_LP8X4X
-
-config SYS_BOARD
-       default "lp8x4x"
-
-config SYS_VENDOR
-       default "icpdas"
-
-config SYS_CONFIG_NAME
-       default "lp8x4x"
-
-endif
diff --git a/board/icpdas/lp8x4x/MAINTAINERS b/board/icpdas/lp8x4x/MAINTAINERS
deleted file mode 100644 (file)
index 90a82e3..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-LP8X4X BOARD
-M:     Sergey Yanovich <ynvich@gmail.com>
-S:     Maintained
-F:     board/icpdas/lp8x4x/
-F:     include/configs/lp8x4x.h
-F:     configs/lp8x4x_defconfig
diff --git a/board/icpdas/lp8x4x/Makefile b/board/icpdas/lp8x4x/Makefile
deleted file mode 100644 (file)
index 88e0606..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# ICPDAS LP-8x4x Support
-#
-# Copyright (C) 2013 Sergey Yanovich <ynvich@gmail.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := lp8x4x.o
diff --git a/board/icpdas/lp8x4x/lp8x4x.c b/board/icpdas/lp8x4x/lp8x4x.c
deleted file mode 100644 (file)
index a136dc4..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * ICP DAS LP-8x4x Support
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- * adapted from Voipac PXA270 Support by
- * Copyright (C) 2013 Sergey Yanovich <ynvich@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/regs-mmc.h>
-#include <asm/arch/pxa.h>
-#include <netdev.h>
-#include <serial.h>
-#include <asm/io.h>
-#include <usb.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-int board_init(void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* memory and cpu-speed are setup before relocation */
-       /* so we do _nothing_ here */
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1, PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-}
-
-#ifdef CONFIG_CMD_MMC
-int board_mmc_init(bd_t *bis)
-{
-       pxa_mmc_register(0);
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_CMD_USB
-int board_usb_init(int index, enum usb_init_type init)
-{
-       if (index !=0 || init != USB_INIT_HOST)
-               return -1;
-
-       writel(readl(CKEN) | CKEN10_USBHOST, CKEN);
-
-       writel(readl(UHCHR) | UHCHR_FHR, UHCHR);
-       udelay(11);
-       writel(readl(UHCHR) & ~UHCHR_FHR, UHCHR);
-
-       writel(readl(UHCHR) | UHCHR_FSBIR, UHCHR);
-
-       while (readl(UHCHR) & UHCHR_FSBIR)
-               continue; /* required by checkpath.pl */
-
-       writel(readl(UHCHR) & ~UHCHR_SSEP0, UHCHR);
-       writel(readl(UHCRHDA) & ~(0x1000), UHCRHDA);
-       writel(readl(UHCRHDA) | 0x800, UHCRHDA);
-
-       writel(readl(UHCHR) & ~UHCHR_SSE, UHCHR);
-       writel((UHCHIE_UPRIE | UHCHIE_RWIE), UHCHIE);
-
-       /* Clear any OTG Pin Hold */
-       if (readl(PSSR) & PSSR_OTGPH)
-               writel(readl(PSSR) | PSSR_OTGPH, PSSR);
-
-       writel(readl(UHCRHDA) & ~(0x200), UHCRHDA);
-       writel(readl(UHCRHDA) | 0x100, UHCRHDA);
-
-       /* Set port power control mask bits, only 3 ports. */
-       writel(readl(UHCRHDB) | (0x7<<17), UHCRHDB);
-
-       return 0;
-}
-
-int usb_board_stop(void)
-{
-       writel(readl(UHCHR) | UHCHR_FHR, UHCHR);
-       udelay(11);
-       writel(readl(UHCHR) & ~UHCHR_FHR, UHCHR);
-
-       writel(readl(UHCCOMS) | 1, UHCCOMS);
-       udelay(10);
-
-       writel(readl(UHCHR) | UHCHR_SSEP0 | UHCHR_SSE, UHCHR);
-
-       writel(readl(CKEN) & ~CKEN10_USBHOST, CKEN);
-
-       return 0;
-}
-
-int board_usb_cleanup(int index, enum usb_init_type init)
-{
-       if (index !=0 || init != USB_INIT_HOST)
-               return -1;
-
-       return usb_board_stop();
-}
-#endif
-
-#ifdef CONFIG_DRIVER_DM9000
-int board_eth_init(bd_t *bis)
-{
-       return dm9000_initialize(bis);
-}
-#endif
index 78447965b9287a459f40c59784a996c1dc37f644..ccbe860b147ad4bbec98fa7ce2d8f281e509b55f 100644 (file)
@@ -6,14 +6,8 @@
 
 #include <common.h>
 #include <asm/gpio.h>
-#include <netdev.h>
 
 void setup_pch_gpios(u16 gpiobase, const struct pch_gpio_map *gpio)
 {
        return;
 }
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
index d6de9fabc03ca07377774c6b30e5558ce9cbd750..3a79e69112101d5b72fba749992f75150fe17501 100644 (file)
@@ -7,7 +7,6 @@
 #include <common.h>
 #include <asm/ibmpc.h>
 #include <asm/pnp_def.h>
-#include <netdev.h>
 #include <smsc_lpc47m.h>
 
 int board_early_init_f(void)
@@ -24,8 +23,3 @@ void setup_pch_gpios(u16 gpiobase, const struct pch_gpio_map *gpio)
 {
        return;
 }
-
-int board_eth_init(bd_t *bis)
-{
-       return pci_eth_init(bis);
-}
index 746ab277cb35c67645b8d454ce79a86afcc5e4fa..c1087acb690a0b1bfe7cedae51e723f19c242b6c 100644 (file)
@@ -5,12 +5,68 @@
  */
 
 #include <common.h>
+#include <asm/io.h>
+#include <asm/arch/device.h>
+#include <asm/arch/gpio.h>
+#include <asm/arch/quark.h>
 
 int board_early_init_f(void)
 {
        return 0;
 }
 
+/*
+ * Intel Galileo gen2 board uses GPIO Resume Well bank pin0 as the PERST# pin.
+ *
+ * We cannot use any public GPIO APIs in <asm-generic/gpio.h> to control this
+ * pin, as these APIs will eventually call into gpio_ich6_ofdata_to_platdata()
+ * in the Intel ICH6 GPIO driver where it calls PCI configuration space access
+ * APIs which will trigger PCI enumeration process.
+ *
+ * Check <asm/arch-quark/quark.h> for more details.
+ */
+void board_assert_perst(void)
+{
+       u32 base, port, val;
+
+       /* retrieve the GPIO IO base */
+       qrk_pci_read_config_dword(QUARK_LEGACY_BRIDGE, PCI_CFG_GPIOBASE, &base);
+       base = (base & 0xffff) & ~0x7f;
+
+       /* enable the pin */
+       port = base + 0x20;
+       val = inl(port);
+       val |= (1 << 0);
+       outl(val, port);
+
+       /* configure the pin as output */
+       port = base + 0x24;
+       val = inl(port);
+       val &= ~(1 << 0);
+       outl(val, port);
+
+       /* pull it down (assert) */
+       port = base + 0x28;
+       val = inl(port);
+       val &= ~(1 << 0);
+       outl(val, port);
+}
+
+void board_deassert_perst(void)
+{
+       u32 base, port, val;
+
+       /* retrieve the GPIO IO base */
+       qrk_pci_read_config_dword(QUARK_LEGACY_BRIDGE, PCI_CFG_GPIOBASE, &base);
+       base = (base & 0xffff) & ~0x7f;
+
+       /* pull it up (de-assert) */
+       port = base + 0x28;
+       val = inl(port);
+       val |= (1 << 0);
+       outl(val, port);
+}
+
 void setup_pch_gpios(u16 gpiobase, const struct pch_gpio_map *gpio)
 {
        return;
index d162d7792e4ff457597d602b888c6ece1b6bc3b3..bd8a1f2eb4be1a949905c79dd1fa18762b0f2877 100644 (file)
@@ -1,5 +1,5 @@
 IGEP0033 BOARD
-M:     Enric Balletbo i Serra <eballetbo@iseebcn.com>
+M:     Enric Balletbo i Serra <eballetbo@gmail.com>
 S:     Maintained
 F:     board/isee/igep0033/
 F:     include/configs/am335x_igep0033.h
index 3fc2c6cb9a017df54174067476b464230f06506e..d355c468825f7e84b581a21d3b670c7478b69731 100644 (file)
@@ -1,5 +1,5 @@
 IGEP00X0 BOARD
-M:     Enric Balletbo i Serra <eballetbo@iseebcn.com>
+M:     Enric Balletbo i Serra <eballetbo@gmail.com>
 S:     Maintained
 F:     board/isee/igep00x0/
 F:     include/configs/omap3_igep00x0.h
index 693fce741a0791b3329794b17dbe8da4839c47f1..6eb191c5e032403df649151e2041ad7b3e8743fb 100644 (file)
@@ -153,10 +153,10 @@ void set_fdt(void)
 {
        switch (gd->bd->bi_arch_number) {
        case MACH_TYPE_IGEP0020:
-               setenv("dtbfile", "omap3-igep0020.dtb");
+               setenv("fdtfile", "omap3-igep0020.dtb");
                break;
        case MACH_TYPE_IGEP0030:
-               setenv("dtbfile", "omap3-igep0030.dtb");
+               setenv("fdtfile", "omap3-igep0030.dtb");
                break;
        }
 }
diff --git a/board/jornada/Kconfig b/board/jornada/Kconfig
deleted file mode 100644 (file)
index 195bc26..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_JORNADA
-
-config SYS_BOARD
-       default "jornada"
-
-config SYS_CONFIG_NAME
-       default "jornada"
-
-endif
diff --git a/board/jornada/MAINTAINERS b/board/jornada/MAINTAINERS
deleted file mode 100644 (file)
index c77d745..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-JORNADA BOARD
-M:     Kristoffer Ericson <kristoffer.ericson@gmail.com>
-S:     Maintained
-F:     board/jornada/
-F:     include/configs/jornada.h
-F:     configs/jornada_defconfig
diff --git a/board/jornada/Makefile b/board/jornada/Makefile
deleted file mode 100644 (file)
index 6a6fbf3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# 2004 (c) MontaVista Software, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := jornada.o
-obj-y  += setup.o
diff --git a/board/jornada/jornada.c b/board/jornada/jornada.c
deleted file mode 100644 (file)
index ff6dbf0..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * 2004 (c) MontaVista Software, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <SA-1100.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* ------------------------------------------------------------------------- */
-
-int board_init(void)
-{
-       gd->bd->bi_arch_number = MACH_TYPE_JORNADA720;
-       gd->bd->bi_boot_params = 0xc0000100;
-
-
-       /*
-        * Turn on flashing.
-        * Would be nice to have some protection but
-        * that would have to be implemented in the
-        * flash init function, which isnt possible yet.
-        */
-       PPSR |= (1 << 7);
-       PPDR |= (1 << 7);
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-       gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
-       gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-
-       return (0);
-}
diff --git a/board/jornada/setup.S b/board/jornada/setup.S
deleted file mode 100644 (file)
index da9f006..0000000
+++ /dev/null
@@ -1,194 +0,0 @@
-/*
- * Memory Setup stuff - taken from blob memsetup.S
- *
- * Copyright (C) 1999 2000 2001 Erik Mouw (J.A.K.Mouw@its.tudelft.nl) and
- *                    Jan-Derk Bakker (J.D.Bakker@its.tudelft.nl)
- * 2004 (c) MontaVista Software, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include "config.h"
-#include "version.h"
-
-
-/*-----------------------------------------------------------------------
- * Board defines:
- */
-
-#define MDCNFG         0x00
-#define MDCAS00                0x04
-#define MDCAS01                0x08
-#define MDCAS02                0x0C
-#define MSC0           0x10
-#define MSC1           0x14
-#define MECR           0x18
-#define MDREFR         0x1C
-#define MDCAS20                0x20
-#define MDCAS21                0x24
-#define MDCAS22                0x28
-#define MSC2           0x2C
-#define SMCNFG         0x30
-
-#define GPDR   0x04
-#define GPSR   0x08
-#define GPCR   0x0C
-#define GAFR   0x1C
-
-#define PPDR   0x00
-#define PPSR   0x04
-#define PPAR   0x08
-
-#define MDREFR_TRASR(n_) (n_ & (0x0000000f))
-#define MDREFR_DRI(n_)   ((n_ & (0x00000fff)) << 4)
-#define MDREFR_K0DB2 (1 << 18)
-#define MDREFR_K1DB2 (1 << 22)
-#define MDREFR_K2DB2 (1 << 26)
-
-#define MDREFR_K0RUN (1 << 17)
-#define MDREFR_K1RUN (1 << 21)
-#define MDREFR_K2RUN (1 << 25)
-
-#define MDREFR_SLFRSH (1 << 31)
-#define MDREFR_E1PIN  (1 << 20)
-
-#define PSSR    0x04
-#define PSSR_DH 0x00000008
-#define POSR    0x08
-#define RCSR    0x04
-
-/*-----------------------------------------------------------------------
- * Setup parameters for the board:
- */
-MEM_BASE:      .long   0xa0000000
-MEM_START:     .long   0xc0000000
-PWR_BASE:      .word   0x90020000
-RST_BASE:      .long   0x90030000
-PPC_BASE:      .long   0x90060000
-GPIO_BASE:     .long   0x90040000
-IC_BASE:       .word   0x90050000
-
-cpuspeed:      .word   0xa0
-/* calculated from old blob bootloader */
-mdcnfg:        .long   0x00037267      /* mdcnfg  0x00037267 */
-mdcas00:       .long   0x5555557f      /* mdcas00 0x5555557f */
-mdcas01:       .long   0x55555555      /* mdcas01 0x55555555 */
-mdcas02:       .long   0x55555555      /* mdcas02 0x55555555 */
-msc0:  .long   0xfff04f78              /* msc0    0xfff04f78 */
-msc1:  .long   0xfff8fff0              /* msc1    0xfff8fff0 */
-mecr:  .long   0x98c698c6      /* mecr    0x98c698c6 */
-mdrefr:        .long   0x067600c7      /* mdrefr  0x04340327 */
-mdcas20:       .long   0xd1284142      /* mdcas20 0xd1284142 */
-mdcas21:       .long   0x72249529      /* mdcas21 0x72249529 */
-mdcas22:       .long   0x78414351      /* mdcas22 0x78414351 */
-msc2:  .long   0x201d2959              /* msc2    0x201d2959 */
-smcnfg:        .long   0x00000000      /* smcnfg  0x00000000 */
-
-pin_set_out:   .long   0x37ff70
-pin_set_dir:   .long   0x11480
-
-gpdr_set:      .long   0x0B3A0900
-gpsr_set:      .long   0x02100800
-gpcr_set:      .long   0x092A0100
-gafr_set:      .long   0x08600000
-
-.globl lowlevel_init
-lowlevel_init:
-
-
-       /* this is required for flashing */
-       ldr     r0, PPC_BASE
-       ldr     r1, pin_set_out
-       str     r1, [r0, #PPSR]
-       ldr     r1, pin_set_dir
-       str     r1, [r0, #PPDR]
-
-       /* Setting up the memory and stuff */
-       /***********************************/
-
-       ldr     r0, MEM_BASE
-
-       ldr     r1, mdcnfg
-       str     r1, [r0, #MDCNFG]
-       ldr     r1, mdcas00
-       str     r1, [r0, #MDCAS00]
-       ldr     r1, mdcas01
-       str     r1, [r0, #MDCAS01]
-       ldr     r1, mdcas02
-       str     r1, [r0, #MDCAS02]
-       ldr     r1, mdcas20
-       str     r1, [r0, #MDCAS20]
-       ldr     r1, mdcas21
-       str     r1, [r0, #MDCAS21]
-       ldr     r1, mdcas22
-       str     r1, [r0, #MDCAS22]
-
-       /* clear kxDB2 */
-       ldr     r2, [r0, #MDREFR]
-       bic     r2, r2, #MDREFR_K0DB2
-       bic     r2, r2, #MDREFR_K1DB2
-       bic     r2, r2, #MDREFR_K2DB2
-       str     r2, [r0, #MDREFR]
-
-       ldr     r2, [r0, #MDREFR]
-       orr r2, r2, #MDREFR_TRASR(7)
-
-       mov r4, #0x2000
-       spin:   subs    r4, r4, #1
-       bne     spin
-
-       ldr     r1, PWR_BASE
-       mov     r2, #PSSR_DH
-       str     r2, [r1, #PSSR]
-
-       ldr     r2, [r0, #MDREFR]
-       bic     r2, r2, #MDREFR_K0DB2
-       bic     r2, r2, #MDREFR_K1DB2
-       bic     r2, r2, #MDREFR_K2DB2
-       str     r2, [r0, #MDREFR]
-
-       ldr     r2, [r0, #MDREFR]
-       orr     r2, r2, #MDREFR_TRASR(7)
-       orr     r2, r2, #MDREFR_DRI(12)
-       orr     r2, r2, #MDREFR_K0DB2
-       orr     r2, r2, #MDREFR_K1DB2
-       orr     r2, r2, #MDREFR_K2DB2
-       str     r2, [r0, #MDREFR]
-
-       ldr     r2, [r0, #MDREFR]
-       orr     r2, r2, #MDREFR_K0RUN
-       orr     r2, r2, #MDREFR_K1RUN
-       orr     r2, r2, #MDREFR_K2RUN
-       str     r2, [r0, #MDREFR]
-
-       ldr     r2, [r0, #MDREFR]
-       bic     r2, r2, #MDREFR_SLFRSH
-       str     r2, [r0, #MDREFR]
-
-       ldr     r2, [r0, #MDREFR]
-       orr     r2, r2, #MDREFR_E1PIN
-       str     r2, [r0, #MDREFR]
-
-       ldr     r2, MEM_START
-.rept  8
-       ldr     r3, [r2]
-.endr
-
-       ldr     r2, [r0, #MDCNFG]
-       orr     r2, r2, #0x00000003
-       orr     r2, r2, #0x00030000
-       str     r2, [r0, #MDCNFG]
-
-       ldr     r1, msc0
-       str     r1, [r0, #MSC0]
-       ldr     r1, msc1
-       str     r1, [r0, #MSC1]
-       ldr     r1, msc2
-       str     r1, [r0, #MSC2]
-       ldr     r1, smcnfg
-       str     r1, [r0, #SMCNFG]
-       ldr     r1, mecr
-       str     r1, [r0, #MECR]
-
-       mov     pc, lr
diff --git a/board/karo/tk71/Kconfig b/board/karo/tk71/Kconfig
deleted file mode 100644 (file)
index 7b3d548..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_TK71
-
-config SYS_BOARD
-       default "tk71"
-
-config SYS_VENDOR
-       default "karo"
-
-config SYS_CONFIG_NAME
-       default "tk71"
-
-endif
diff --git a/board/karo/tk71/MAINTAINERS b/board/karo/tk71/MAINTAINERS
deleted file mode 100644 (file)
index ac85d6b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-TK71 BOARD
-#M:    -
-S:     Maintained
-F:     board/karo/tk71/
-F:     include/configs/tk71.h
-F:     configs/tk71_defconfig
diff --git a/board/karo/tk71/Makefile b/board/karo/tk71/Makefile
deleted file mode 100644 (file)
index 0e0df77..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright (C) 2012 Marek Vasut <marex@denx.de>
-# on behalf of DENX Software Engineering GmbH
-#
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := tk71.o
diff --git a/board/karo/tk71/kwbimage.cfg b/board/karo/tk71/kwbimage.cfg
deleted file mode 100644 (file)
index a32e27c..0000000
+++ /dev/null
@@ -1,158 +0,0 @@
-#
-# (C) Copyright 2009
-# Marvell Semiconductor <www.marvell.com>
-# Written-by: Prafulla Wadaskar <prafulla@marvell.com>
-#
-# adopted to TK71 by
-# Nils Faerber <nils.faerber@kernelconcepts.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-# Refer doc/README.kwbimage for more details about how-to configure
-# and create kirkwood boot image
-#
-
-# Boot Media configurations
-BOOT_FROM      nand
-NAND_ECC_MODE  default
-NAND_PAGE_SIZE 0x0800
-
-# SOC registers configuration using bootrom header extension
-# Maximum KWBIMAGE_MAX_CONFIG configurations allowed
-
-# Configure RGMII-0 interface pad voltage to 1.8V
-DATA 0xFFD100e0 0x1b1b1b9b
-
-#Dram initalization for SINGLE x16 CL=5 @ 400MHz
-DATA 0xFFD01400 0x43000c30     # DDR Configuration register
-# bit13-0:  0xc30 (3120 DDR2 clks refresh rate)
-# bit23-14: zero
-# bit24: 1= enable exit self refresh mode on DDR access
-# bit25: 1 required
-# bit29-26: zero
-# bit31-30: 01
-
-DATA 0xFFD01404 0x36543000     # DDR Controller Control Low
-# bit 4:    0=addr/cmd in smame cycle
-# bit 5:    0=clk is driven during self refresh, we don't care for APX
-# bit 6:    0=use recommended falling edge of clk for addr/cmd
-# bit14:    0=input buffer always powered up
-# bit18:    1=cpu lock transaction enabled
-# bit23-20: 5=recommended value for CL=5 and STARTBURST_DEL disabled bit31=0
-# bit27-24: 7= CL+2, STARTBURST sample stages, for freqs 400MHz, unbuffered DIMM
-# bit30-28: 3 required
-# bit31:    0=no additional STARTBURST delay
-
-DATA 0xFFD01408 0x1101355b     # DDR Timing (Low) (active cycles value +1)
-# bit3-0:   TRAS lsbs
-# bit7-4:   TRCD
-# bit11- 8: TRP
-# bit15-12: TWR
-# bit19-16: TWTR
-# bit20:    TRAS msb
-# bit23-21: 0x0
-# bit27-24: TRRD
-# bit31-28: TRTP
-
-DATA 0xFFD0140C 0x00000034     #  DDR Timing (High)
-# bit6-0:   TRFC
-# bit8-7:   TR2R
-# bit10-9:  TR2W
-# bit12-11: TW2W
-# bit31-13: zero required
-
-DATA 0xFFD01410 0x00000000     #  DDR Address Control
-# bit1-0:   01, Cs0width=x16
-# bit3-2:   10, Cs0size=512Mb
-# bit5-4:   01, Cs1width=x16
-# bit7-6:   10, Cs1size=512Mb
-# bit9-8:   00, Cs2width=nonexistent
-# bit11-10: 00, Cs2size =nonexistent
-# bit13-12: 00, Cs3width=nonexistent
-# bit15-14: 00, Cs3size =nonexistent
-# bit16:    0,  Cs0AddrSel
-# bit17:    0,  Cs1AddrSel
-# bit18:    0,  Cs2AddrSel
-# bit19:    0,  Cs3AddrSel
-# bit31-20: 0 required
-
-DATA 0xFFD01414 0x00000000     #  DDR Open Pages Control
-# bit0:    0,  OpenPage enabled
-# bit31-1: 0 required
-
-DATA 0xFFD01418 0x00000000     #  DDR Operation
-# bit3-0:   0x0, DDR cmd
-# bit31-4:  0 required
-
-DATA 0xFFD0141C 0x00000652     #  DDR Mode
-# bit2-0:   2, BurstLen=2 required
-# bit3:     0, BurstType=0 required
-# bit6-4:   4, CL=5
-# bit7:     0, TestMode=0 normal
-# bit8:     0, DLL reset=0 normal
-# bit11-9:  6, auto-precharge write recovery ????????????
-# bit12:    0, PD must be zero
-# bit31-13: 0 required
-
-DATA 0xFFD01420 0x00000042     #  DDR Extended Mode
-# bit0:    0,  DDR DLL enabled
-# bit1:    0,  DDR drive strenght normal
-# bit2:    0,  DDR ODT control lsd (disabled)
-# bit5-3:  000, required
-# bit6:    1,  DDR ODT control msb, (disabled)
-# bit9-7:  000, required
-# bit10:   0,  differential DQS enabled
-# bit11:   0, required
-# bit12:   0, DDR output buffer enabled
-# bit31-13: 0 required
-
-DATA 0xFFD01424 0x0000F17F     #  DDR Controller Control High
-# bit2-0:  111, required
-# bit3  :  1  , MBUS Burst Chop disabled
-# bit6-4:  111, required
-# bit7  :  0
-# bit8  :  1  , add writepath sample stage, must be 1 for DDR freq >= 300MHz
-# bit9  :  0  , no half clock cycle addition to dataout
-# bit10 :  0  , 1/4 clock cycle skew enabled for addr/ctl signals
-# bit11 :  0  , 1/4 clock cycle skew disabled for write mesh
-# bit15-12: 1111 required
-# bit31-16: 0    required
-
-DATA 0xFFD01428 0x00085520     # DDR2 ODT Read Timing (default values)
-DATA 0xFFD0147C 0x00008552     # DDR2 ODT Write Timing (default values)
-
-DATA 0xFFD01500 0x00000000     # CS[0]n Base address to 0x0
-DATA 0xFFD01504 0x1FFFFFF1     # CS[0]n Size
-# bit0:    1,  Window enabled
-# bit1:    0,  Write Protect disabled
-# bit3-2:  00, CS0 hit selected
-# bit23-4: ones, required
-# bit31-24: 0x0F, Size (i.e. 256MB)
-
-DATA 0xFFD01508 0x00000000     # CS[1]n Base address to 256Mb
-DATA 0xFFD0150C 0x00000000     # CS[1]n Size 256Mb Window enabled for CS1
-
-DATA 0xFFD01514 0x00000000     # CS[2]n Size, window disabled
-DATA 0xFFD0151C 0x00000000     # CS[3]n Size, window disabled
-
-DATA 0xFFD01494 0x00110000     #  DDR ODT Control (Low)
-# bit3-0:   0010, (read) M_ODT[0] is asserted during read from DRAM CS1
-# bit7-4:   0001, (read) M_ODT[1] is asserted during read from DRAM CS0
-# bit19-16: 0010, (write) M_ODT[0] is asserted during write to DRAM CS1.
-# bit23-20: 0001, (write) M_ODT[1] is asserted during write to DRAM CS0.
-DATA 0xFFD01498 0x00000000     #  DDR ODT Control (High)
-# bit1-0:  00, ODT0 controlled by ODT Control (low) register above
-# bit3-2:  01, ODT1 active NEVER!
-# bit31-4: zero, required
-
-DATA 0xFFD0149C 0x0000F80F     # CPU ODT Control
-# bit3-0:    1111, internal ODT is asserted during read from DRAM bank 0-3
-# bit11-10:    01, M_DQ, M_DM, and M_DQS I/O buffer ODT Select: 150 ohm
-# bit13-12:    10, M_STARTBURST_IN I/O buffer ODT Select: 75 ohm
-# bit14:        1, M_STARTBURST_IN ODT: Enabled
-# bit15:        1, DDR IO ODT Unit: Use ODT block
-DATA 0xFFD01480 0x00000001     # DDR Initialization Control
-#bit0=1, enable DDR init upon this register write
-
-# End of Header extension
-DATA 0x0 0x0
diff --git a/board/karo/tk71/tk71.c b/board/karo/tk71/tk71.c
deleted file mode 100644 (file)
index 35546d2..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2012 Marek Vasut <marex@denx.de>
- * on behalf of DENX Software Engineering GmbH
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <miiphy.h>
-#include <asm/arch/cpu.h>
-#include <asm/arch/soc.h>
-#include <asm/arch/mpp.h>
-#include <asm/io.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define TK71_OE_LOW                    (~0)
-#define TK71_OE_HIGH                   (~0)
-#define TK71_OE_VAL_LOW                        (0)
-#define TK71_OE_VAL_HIGH               (0)
-
-int board_early_init_f(void)
-{
-       /*
-        * default gpio configuration
-        * There are maximum 64 gpios controlled through 2 sets of registers
-        * the  below configuration configures mainly initial LED status
-        */
-       mvebu_config_gpio(TK71_OE_VAL_LOW,
-                         TK71_OE_VAL_HIGH,
-                         TK71_OE_LOW, TK71_OE_HIGH);
-
-       /* Multi-Purpose Pins Functionality configuration */
-       static const u32 kwmpp_config[] = {
-               MPP0_NF_IO2,
-               MPP1_NF_IO3,
-               MPP2_NF_IO4,
-               MPP3_NF_IO5,
-               MPP4_NF_IO6,
-               MPP5_NF_IO7,
-               MPP6_SYSRST_OUTn,
-               MPP7_GPO,
-               MPP8_TW_SDA,
-               MPP9_TW_SCK,
-               MPP10_UART0_TXD,
-               MPP11_UART0_RXD,
-               MPP12_SD_CLK,
-               MPP13_SD_CMD,
-               MPP14_SD_D0,
-               MPP15_SD_D1,
-               MPP16_SD_D2,
-               MPP17_SD_D3,
-               MPP18_NF_IO0,
-               MPP19_NF_IO1,
-               MPP20_GE1_0,
-               MPP21_GE1_1,
-               MPP22_GE1_2,
-               MPP23_GE1_3,
-               MPP24_GE1_4,
-               MPP25_GE1_5,
-               MPP26_GE1_6,
-               MPP27_GE1_7,
-               MPP28_GPIO,
-               MPP29_GPIO,
-               MPP30_GE1_10,
-               MPP31_GE1_11,
-               MPP32_GE1_12,
-               MPP33_GE1_13,
-               MPP34_GPIO,
-               MPP35_GPIO,
-               MPP36_GPIO,
-               MPP37_GPIO,
-               MPP38_GPIO,
-               MPP39_GPIO,
-               MPP40_GPIO,
-               MPP41_GPIO,
-               MPP42_GPIO,
-               MPP43_GPIO,
-               MPP44_GPIO,
-               MPP45_GPIO,
-               MPP46_GPIO,
-               MPP47_GPIO,
-               MPP48_GPIO,
-               MPP49_GPIO,
-               0
-       };
-       kirkwood_mpp_conf(kwmpp_config, NULL);
-
-       return 0;
-}
-
-int board_init(void)
-{
-       /*
-        * arch number of board
-        */
-       gd->bd->bi_arch_number = CONFIG_MACH_TYPE;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
-
-       return 0;
-}
-
-#ifdef CONFIG_CMD_NET
-
-#define MV88E1116_MAC_CTRL2_REG                21
-#define MV88E1116_PGADR_REG            22
-#define MV88E1116_RGMII_TXTM_CTRL      (1 << 4)
-#define MV88E1116_RGMII_RXTM_CTRL      (1 << 5)
-
-static void mv_phy_88e1118_init(char *name)
-{
-       u16 reg;
-       u16 devadr;
-
-       if (miiphy_set_current_dev(name))
-               return;
-
-       /* command to read PHY dev address */
-       if (miiphy_read(name, 0xEE, 0xEE, (u16 *) &devadr)) {
-               printf("Err..%s could not read PHY dev address\n",
-                       __func__);
-               return;
-       }
-
-       /*
-        * Enable RGMII delay on Tx and Rx for CPU port
-        * Ref: sec 4.7.2 of chip datasheet
-        */
-       miiphy_write(name, devadr, MV88E1116_PGADR_REG, 2);
-       miiphy_read(name, devadr, MV88E1116_MAC_CTRL2_REG, &reg);
-       reg |= (MV88E1116_RGMII_RXTM_CTRL | MV88E1116_RGMII_TXTM_CTRL);
-       miiphy_write(name, devadr, MV88E1116_MAC_CTRL2_REG, reg);
-       miiphy_write(name, devadr, MV88E1116_PGADR_REG, 0);
-
-       /* reset the phy */
-       miiphy_reset(name, devadr);
-
-       printf("88E1118 Initialized on %s\n", name);
-}
-
-/* Configure and enable Switch and PHY */
-void reset_phy(void)
-{
-       /* configure and initialize PHY */
-       mv_phy_88e1118_init("egiga0");
-
-}
-#endif
diff --git a/board/karo/tx25/Kconfig b/board/karo/tx25/Kconfig
deleted file mode 100644 (file)
index 42746c1..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_TX25
-
-config SYS_BOARD
-       default "tx25"
-
-config SYS_VENDOR
-       default "karo"
-
-config SYS_SOC
-       default "mx25"
-
-config SYS_CONFIG_NAME
-       default "tx25"
-
-endif
diff --git a/board/karo/tx25/MAINTAINERS b/board/karo/tx25/MAINTAINERS
deleted file mode 100644 (file)
index 2defe34..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-TX25 BOARD
-M:     John Rigby <jcrigby@gmail.com>
-S:     Maintained
-F:     board/karo/tx25/
-F:     include/configs/tx25.h
-F:     configs/tx25_defconfig
diff --git a/board/karo/tx25/Makefile b/board/karo/tx25/Makefile
deleted file mode 100644 (file)
index add5dd3..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2009 DENX Software Engineering
-# Author: John Rigby <jcrigby@gmail.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-ifdef CONFIG_SPL_BUILD
-obj-y  += lowlevel_init.o
-endif
-obj-y  += tx25.o
diff --git a/board/karo/tx25/lowlevel_init.S b/board/karo/tx25/lowlevel_init.S
deleted file mode 100644 (file)
index 11b80b4..0000000
+++ /dev/null
@@ -1,98 +0,0 @@
-/*
- * (C) Copyright 2009 DENX Software Engineering
- * Author: John Rigby <jrigby@gmail.com>
- *
- * Based on U-Boot and RedBoot sources for several different i.mx
- * platforms.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm/macro.h>
-#include <asm/arch/macro.h>
-
-.macro init_clocks
-       /*
-        * clocks
-        *
-        * first enable CLKO debug output
-        * 0x40000000 enables the debug CLKO signal
-        * 0x05000000 sets CLKO divider to 6
-        * 0x00600000 makes CLKO parent clk the USB clk
-        */
-       write32 0x53f80064, 0x45600000
-
-       /* CCTL: ARM = 399 MHz, AHB = 133 MHz */
-       write32 0x53f80008, 0x20034000
-
-       /*
-        * PCDR2: NFC = 33.25 MHz
-        * This is required for the NAND Flash of this board, which is a Samsung
-        * K9F1G08U0B with 25-ns R/W cycle times, in order to make it work with
-        * the NFC driver in symmetric (i.e. one-cycle) mode.
-        */
-       write32 0x53f80020, 0x01010103
-
-       /*
-        * enable all implemented clocks in all three
-        * clock control registers
-        */
-       write32 0x53f8000c, 0x1fffffff
-       write32 0x53f80010, 0xffffffff
-       write32 0x53f80014, 0xfdfff
-.endm
-
-.macro init_ddrtype
-       /*
-        * ddr_type is 3.3v SDRAM
-        */
-       write32 0x43fac454, 0x800
-.endm
-
-/*
- * sdram controller init
- */
-.macro init_sdram_bank bankaddr, ctl, cfg
-       ldr     r0, =0xb8001000
-       ldr     r2, =\bankaddr
-       /*
-        * reset SDRAM controller
-        * then wait for initialization to complete
-        */
-       ldr     r1, =(1 << 1)
-       str     r1, [r0, #0x10]
-1:     ldr     r3, [r0, #0x10]
-       tst     r3, #(1 << 31)
-       beq     1b
-
-       ldr     r1, =0x95728
-       str     r1, [r0, #\cfg]         /* config */
-
-       ldr     r1, =0x92116480         /* control | precharge */
-       str     r1, [r0, #\ctl]         /* write command to controller */
-       str     r1, [r2, #0x400]        /* command encoded in address */
-
-       ldr     r1, =0xa2116480         /* auto refresh */
-       str     r1, [r0, #\ctl]
-       ldrb    r3, [r2]                /* read dram twice to auto refresh */
-       ldrb    r3, [r2]
-
-       ldr     r1, =0xb2116480         /* control | load mode */
-       str     r1, [r0, #\ctl]         /* write command to controller */
-       strb    r1, [r2, #0x33]         /* command encoded in address */
-
-       ldr     r1, =0x82116480         /* control  | normal (0)*/
-       str     r1, [r0, #\ctl]         /* write command to controller */
-.endm
-
-.globl lowlevel_init
-lowlevel_init:
-       init_aips
-       init_max
-       init_m3if
-       init_clocks
-
-       init_sdram_bank 0x80000000, 0x0, 0x4
-
-       init_sdram_bank 0x90000000, 0x8, 0xc
-       mov     pc, lr
diff --git a/board/karo/tx25/tx25.c b/board/karo/tx25/tx25.c
deleted file mode 100644 (file)
index 4d1a0ec..0000000
+++ /dev/null
@@ -1,210 +0,0 @@
-/*
- * (C) Copyright 2009 DENX Software Engineering
- * Author: John Rigby <jrigby@gmail.com>
- *
- * Based on imx27lite.c:
- *   Copyright (C) 2008,2009 Eric Jarrige <jorasse@users.sourceforge.net>
- *   Copyright (C) 2009 Ilya Yanok <yanok@emcraft.com>
- * And:
- *   RedBoot tx25_misc.c Copyright (C) 2009 Red Hat
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/iomux-mx25.h>
-#include <asm/gpio.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_SPL_BUILD
-void board_init_f(ulong bootflag)
-{
-       /*
-        * copy ourselves from where we are running to where we were
-        * linked at. Use ulong pointers as all addresses involved
-        * are 4-byte-aligned.
-        */
-       ulong *start_ptr, *end_ptr, *link_ptr, *run_ptr, *dst;
-       asm volatile ("ldr %0, =_start" : "=r"(start_ptr));
-       asm volatile ("ldr %0, =_end" : "=r"(end_ptr));
-       asm volatile ("ldr %0, =board_init_f" : "=r"(link_ptr));
-       asm volatile ("adr %0, board_init_f" : "=r"(run_ptr));
-       for (dst = start_ptr; dst < end_ptr; dst++)
-               *dst = *(dst+(run_ptr-link_ptr));
-       /*
-        * branch to nand_boot's link-time address.
-        */
-       asm volatile("ldr pc, =nand_boot");
-}
-#endif
-
-#ifdef CONFIG_FEC_MXC
-/*
- * FIXME: need to revisit this
- * The original code enabled PUE and 100-k pull-down without PKE, so the right
- * value here is likely:
- *     0 for no pull
- * or:
- *     PAD_CTL_PUS_100K_DOWN for 100-k pull-down
- */
-#define FEC_OUT_PAD_CTRL       0
-
-#define GPIO_FEC_RESET_B       IMX_GPIO_NR(4, 7)
-#define GPIO_FEC_ENABLE_B      IMX_GPIO_NR(4, 9)
-
-void tx25_fec_init(void)
-{
-       static const iomux_v3_cfg_t fec_pads[] = {
-               MX25_PAD_FEC_TX_CLK__FEC_TX_CLK,
-               MX25_PAD_FEC_RX_DV__FEC_RX_DV,
-               MX25_PAD_FEC_RDATA0__FEC_RDATA0,
-               NEW_PAD_CTRL(MX25_PAD_FEC_TDATA0__FEC_TDATA0, FEC_OUT_PAD_CTRL),
-               NEW_PAD_CTRL(MX25_PAD_FEC_TX_EN__FEC_TX_EN, FEC_OUT_PAD_CTRL),
-               NEW_PAD_CTRL(MX25_PAD_FEC_MDC__FEC_MDC, FEC_OUT_PAD_CTRL),
-               MX25_PAD_FEC_MDIO__FEC_MDIO,
-               MX25_PAD_FEC_RDATA1__FEC_RDATA1,
-               NEW_PAD_CTRL(MX25_PAD_FEC_TDATA1__FEC_TDATA1, FEC_OUT_PAD_CTRL),
-
-               NEW_PAD_CTRL(MX25_PAD_D13__GPIO_4_7, 0), /* FEC_RESET_B */
-               NEW_PAD_CTRL(MX25_PAD_D11__GPIO_4_9, 0), /* FEC_ENABLE_B */
-       };
-
-       static const iomux_v3_cfg_t fec_cfg_pads[] = {
-               MX25_PAD_FEC_RDATA0__GPIO_3_10,
-               MX25_PAD_FEC_RDATA1__GPIO_3_11,
-               MX25_PAD_FEC_RX_DV__GPIO_3_12,
-       };
-
-       debug("tx25_fec_init\n");
-       imx_iomux_v3_setup_multiple_pads(fec_pads, ARRAY_SIZE(fec_pads));
-
-       /* drop PHY power and assert reset (low) */
-       gpio_direction_output(GPIO_FEC_RESET_B, 0);
-       gpio_direction_output(GPIO_FEC_ENABLE_B, 0);
-
-       mdelay(5);
-
-       debug("resetting phy\n");
-
-       /* turn on PHY power leaving reset asserted */
-       gpio_set_value(GPIO_FEC_ENABLE_B, 1);
-
-       mdelay(10);
-
-       /*
-        * Setup some strapping pins that are latched by the PHY
-        * as reset goes high.
-        *
-        * Set PHY mode to 111
-        *  mode0 comes from FEC_RDATA0 which is GPIO 3_10 in mux mode 5
-        *  mode1 comes from FEC_RDATA1 which is GPIO 3_11 in mux mode 5
-        *  mode2 is tied high so nothing to do
-        *
-        * Turn on RMII mode
-        *  RMII mode is selected by FEC_RX_DV which is GPIO 3_12 in mux mode
-        */
-       /*
-        * set each mux mode to gpio mode
-        */
-       imx_iomux_v3_setup_multiple_pads(fec_cfg_pads,
-                                               ARRAY_SIZE(fec_cfg_pads));
-
-       /*
-        * set each to 1 and make each an output
-        */
-       gpio_direction_output(IMX_GPIO_NR(3, 10), 1);
-       gpio_direction_output(IMX_GPIO_NR(3, 11), 1);
-       gpio_direction_output(IMX_GPIO_NR(3, 12), 1);
-
-       mdelay(22);             /* this value came from RedBoot */
-
-       /*
-        * deassert PHY reset
-        */
-       gpio_set_value(GPIO_FEC_RESET_B, 1);
-
-       mdelay(5);
-
-       /*
-        * set FEC pins back
-        */
-       imx_iomux_v3_setup_multiple_pads(fec_pads, ARRAY_SIZE(fec_pads));
-}
-#else
-#define tx25_fec_init()
-#endif
-
-#ifdef CONFIG_MXC_UART
-/*
- * Set up input pins with hysteresis and 100-k pull-ups
- */
-#define UART1_IN_PAD_CTRL      (PAD_CTL_HYS | PAD_CTL_PUS_100K_UP)
-/*
- * FIXME: need to revisit this
- * The original code enabled PUE and 100-k pull-down without PKE, so the right
- * value here is likely:
- *     0 for no pull
- * or:
- *     PAD_CTL_PUS_100K_DOWN for 100-k pull-down
- */
-#define UART1_OUT_PAD_CTRL     0
-
-static void tx25_uart1_init(void)
-{
-       static const iomux_v3_cfg_t uart1_pads[] = {
-               NEW_PAD_CTRL(MX25_PAD_UART1_RXD__UART1_RXD, UART1_IN_PAD_CTRL),
-               NEW_PAD_CTRL(MX25_PAD_UART1_TXD__UART1_TXD, UART1_OUT_PAD_CTRL),
-               NEW_PAD_CTRL(MX25_PAD_UART1_RTS__UART1_RTS, UART1_OUT_PAD_CTRL),
-               NEW_PAD_CTRL(MX25_PAD_UART1_CTS__UART1_CTS, UART1_IN_PAD_CTRL),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(uart1_pads, ARRAY_SIZE(uart1_pads));
-}
-#else
-#define tx25_uart1_init()
-#endif
-
-int board_init()
-{
-       tx25_uart1_init();
-
-       /* board id for linux */
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-       return 0;
-}
-
-int board_late_init(void)
-{
-       tx25_fec_init();
-       return 0;
-}
-
-int dram_init(void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((void *)PHYS_SDRAM_1,
-                               PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = get_ram_size((void *)PHYS_SDRAM_1,
-                       PHYS_SDRAM_1_SIZE);
-#if CONFIG_NR_DRAM_BANKS > 1
-       gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
-       gd->bd->bi_dram[1].size = get_ram_size((void *)PHYS_SDRAM_2,
-                       PHYS_SDRAM_2_SIZE);
-#else
-
-#endif
-}
-
-int checkboard(void)
-{
-       printf("KARO TX25\n");
-       return 0;
-}
index 94f1754a47b0462b8d2b246235924678d913bbb5..c5cbaabe6a7532e301b7e6c70775be1e6e80ee45 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "kosagi"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "novena"
 
diff --git a/board/logicpd/imx27lite/Kconfig b/board/logicpd/imx27lite/Kconfig
deleted file mode 100644 (file)
index c7de2e3..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-if TARGET_IMX27LITE
-
-config SYS_BOARD
-       default "imx27lite"
-
-config SYS_VENDOR
-       default "logicpd"
-
-config SYS_SOC
-       default "mx27"
-
-config SYS_CONFIG_NAME
-       default "imx27lite"
-
-endif
-
-if TARGET_MAGNESIUM
-
-config SYS_BOARD
-       default "imx27lite"
-
-config SYS_VENDOR
-       default "logicpd"
-
-config SYS_SOC
-       default "mx27"
-
-config SYS_CONFIG_NAME
-       default "magnesium"
-
-endif
diff --git a/board/logicpd/imx27lite/MAINTAINERS b/board/logicpd/imx27lite/MAINTAINERS
deleted file mode 100644 (file)
index a7b22ac..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-IMX27LITE BOARD
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-F:     board/logicpd/imx27lite/
-F:     include/configs/imx27lite.h
-F:     configs/imx27lite_defconfig
-
-MAGNESIUM BOARD
-M:     Heiko Schocher <hs@denx.de>
-S:     Maintained
-F:     include/configs/magnesium.h
-F:     configs/magnesium_defconfig
diff --git a/board/logicpd/imx27lite/Makefile b/board/logicpd/imx27lite/Makefile
deleted file mode 100644 (file)
index 50a3da6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2004
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := imx27lite.o
-obj-y  += lowlevel_init.o
diff --git a/board/logicpd/imx27lite/imx27lite.c b/board/logicpd/imx27lite/imx27lite.c
deleted file mode 100644 (file)
index 07b07a0..0000000
+++ /dev/null
@@ -1,77 +0,0 @@
-/*
- * Copyright (C) 2007 Sascha Hauer, Pengutronix
- * Copyright (C) 2008,2009 Eric Jarrige <jorasse@users.sourceforge.net>
- * Copyright (C) 2009 Ilya Yanok <yanok@emcraft.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/gpio.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init(void)
-{
-#if defined(CONFIG_SYS_NAND_LARGEPAGE)
-       struct system_control_regs *sc_regs =
-               (struct system_control_regs *)IMX_SYSTEM_CTL_BASE;
-#endif
-
-       gd->bd->bi_arch_number = MACH_TYPE_IMX27LITE;
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-
-#ifdef CONFIG_MXC_UART
-       mx27_uart1_init_pins();
-#endif
-#ifdef CONFIG_FEC_MXC
-       mx27_fec_init_pins();
-       imx_gpio_mode((GPIO_PORTC | GPIO_OUT | GPIO_PUEN | GPIO_GPIO | 31));
-       gpio_set_value(GPIO_PORTC | 31, 1);
-#endif
-#ifdef CONFIG_MXC_MMC
-#if defined(CONFIG_MAGNESIUM)
-       mx27_sd1_init_pins();
-#else
-       mx27_sd2_init_pins();
-#endif
-#endif
-
-#if defined(CONFIG_SYS_NAND_LARGEPAGE)
-       /*
-        * set in FMCR NF_FMS Bit(5) to 1
-        * (NAND Flash with 2 Kbyte page size)
-        */
-       writel(readl(&sc_regs->fmcr) | (1 << 5), &sc_regs->fmcr);
-#endif
-       return 0;
-}
-
-int dram_init(void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
-                               PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
-       gd->bd->bi_dram[0].size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
-                       PHYS_SDRAM_1_SIZE);
-#if CONFIG_NR_DRAM_BANKS > 1
-       gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
-       gd->bd->bi_dram[1].size = get_ram_size((void *)PHYS_SDRAM_2,
-                       PHYS_SDRAM_2_SIZE);
-#endif
-}
-
-int checkboard(void)
-{
-       puts("Board: ");
-       puts(CONFIG_BOARDNAME);
-       return 0;
-}
diff --git a/board/logicpd/imx27lite/lowlevel_init.S b/board/logicpd/imx27lite/lowlevel_init.S
deleted file mode 100644 (file)
index 9cb702f..0000000
+++ /dev/null
@@ -1,156 +0,0 @@
-/*
- * For clock initialization, see chapter 3 of the "MCIMX27 Multimedia
- * Applications Processor Reference Manual, Rev. 0.2".
- *
- * (C) Copyright 2008 Eric Jarrige <eric.jarrige@armadeus.org>
- * (C) Copyright 2009 Ilya Yanok <yanok@emcraft.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <config.h>
-#include <asm/macro.h>
-#include <asm/arch/imx-regs.h>
-#include <generated/asm-offsets.h>
-
-SOC_ESDCTL_BASE_W:     .word   IMX_ESD_BASE
-SOC_SI_ID_REG_W:       .word   IMX_SYSTEM_CTL_BASE
-SDRAM_ESDCFG_T1_W:     .word   SDRAM_ESDCFG_REGISTER_VAL(0)
-SDRAM_ESDCFG_T2_W:     .word   SDRAM_ESDCFG_REGISTER_VAL(3)
-SDRAM_PRECHARGE_CMD_W: .word   (ESDCTL_SDE | ESDCTL_SMODE_PRECHARGE | \
-                                ESDCTL_ROW13 | ESDCTL_COL10)
-SDRAM_AUTOREF_CMD_W:   .word   (ESDCTL_SDE | ESDCTL_SMODE_AUTO_REF | \
-                                ESDCTL_ROW13 | ESDCTL_COL10)
-SDRAM_LOADMODE_CMD_W:  .word   (ESDCTL_SDE | ESDCTL_SMODE_LOAD_MODE | \
-                                ESDCTL_ROW13 | ESDCTL_COL10)
-SDRAM_NORMAL_CMD_W:    .word   SDRAM_ESDCTL_REGISTER_VAL
-
-.macro init_aipi
-       /*
-        * setup AIPI1 and AIPI2
-        */
-       write32 AIPI1_PSR0, AIPI1_PSR0_VAL
-       write32 AIPI1_PSR1, AIPI1_PSR1_VAL
-       write32 AIPI2_PSR0, AIPI2_PSR0_VAL
-       write32 AIPI2_PSR1, AIPI2_PSR1_VAL
-
-.endm /* init_aipi */
-
-.macro init_clock
-       ldr r0, =CSCR
-       /* disable MPLL/SPLL first */
-       ldr r1, [r0]
-       bic r1, r1, #(CSCR_MPEN|CSCR_SPEN)
-       str r1, [r0]
-
-       write32 MPCTL0, MPCTL0_VAL
-       write32 SPCTL0, SPCTL0_VAL
-
-       write32 CSCR, CSCR_VAL | CSCR_MPLL_RESTART | CSCR_SPLL_RESTART
-
-       /*
-        * add some delay here
-        */
-       wait_timer 0x1000
-
-       /* peripheral clock divider */
-       write32 PCDR0, PCDR0_VAL
-       write32 PCDR1, PCDR1_VAL
-
-       /* Configure PCCR0 and PCCR1 */
-       write32 PCCR0, PCCR0_VAL
-       write32 PCCR1, PCCR1_VAL
-
-.endm /* init_clock */
-
-.macro sdram_init
-       ldr r0, SOC_ESDCTL_BASE_W
-       mov r2, #PHYS_SDRAM_1
-
-       /* Do initial reset */
-       mov r1, #ESDMISC_MDDR_DL_RST
-       str r1, [r0, #ESDMISC_ROF]
-
-       /* Hold for more than 200ns */
-       wait_timer 0x10000
-
-       /* Activate LPDDR iface */
-       mov r1, #ESDMISC_MDDREN
-       str r1, [r0, #ESDMISC_ROF]
-
-       /* Check The chip version TO1 or TO2 */
-       ldr r1, SOC_SI_ID_REG_W
-       ldr r1, [r1]
-       ands r1, r1, #0xF0000000
-       /* add Latency on CAS only for TO2 */
-       ldreq r1, SDRAM_ESDCFG_T2_W
-       ldrne r1, SDRAM_ESDCFG_T1_W
-       str r1, [r0, #ESDCFG0_ROF]
-
-       /* Run initialization sequence */
-       ldr r1, SDRAM_PRECHARGE_CMD_W
-       str r1, [r0, #ESDCTL0_ROF]
-       ldr r1, [r2, #SDRAM_ALL_VAL]
-
-       ldr r1, SDRAM_AUTOREF_CMD_W
-       str r1, [r0, #ESDCTL0_ROF]
-       ldr r1, [r2, #SDRAM_ALL_VAL]
-       ldr r1, [r2, #SDRAM_ALL_VAL]
-
-       ldr r1, SDRAM_LOADMODE_CMD_W
-       str r1, [r0, #ESDCTL0_ROF]
-       ldrb r1, [r2, #SDRAM_MODE_REGISTER_VAL]
-       add r3, r2, #SDRAM_EXT_MODE_REGISTER_VAL
-       ldrb r1, [r3]
-
-       ldr r1, SDRAM_NORMAL_CMD_W
-       str r1, [r0, #ESDCTL0_ROF]
-
-#if (CONFIG_NR_DRAM_BANKS > 1)
-       /* 2nd sdram */
-       mov r2, #PHYS_SDRAM_2
-
-       /* Check The chip version TO1 or TO2 */
-       ldr r1, SOC_SI_ID_REG_W
-       ldr r1, [r1]
-       ands r1, r1, #0xF0000000
-       /* add Latency on CAS only for TO2 */
-       ldreq r1, SDRAM_ESDCFG_T2_W
-       ldrne r1, SDRAM_ESDCFG_T1_W
-       str r1, [r0, #ESDCFG1_ROF]
-
-       /* Run initialization sequence */
-       ldr r1, SDRAM_PRECHARGE_CMD_W
-       str r1, [r0, #ESDCTL1_ROF]
-       ldr r1, [r2, #SDRAM_ALL_VAL]
-
-       ldr r1, SDRAM_AUTOREF_CMD_W
-       str r1, [r0, #ESDCTL1_ROF]
-       ldr r1, [r2, #SDRAM_ALL_VAL]
-       ldr r1, [r2, #SDRAM_ALL_VAL]
-
-       ldr r1, SDRAM_LOADMODE_CMD_W
-       str r1, [r0, #ESDCTL1_ROF]
-       ldrb r1, [r2, #SDRAM_MODE_REGISTER_VAL]
-       add r3, r2, #SDRAM_EXT_MODE_REGISTER_VAL
-       ldrb r1, [r3]
-
-       ldr r1, SDRAM_NORMAL_CMD_W
-       str r1, [r0, #ESDCTL1_ROF]
-#endif  /* CONFIG_NR_DRAM_BANKS > 1 */
-
-.endm /* sdram_init */
-
-.globl lowlevel_init
-lowlevel_init:
-
-       mov     r10, lr
-
-       init_aipi
-
-       init_clock
-
-       sdram_init
-
-       mov     pc,r10
diff --git a/board/logicpd/imx31_litekit/Kconfig b/board/logicpd/imx31_litekit/Kconfig
deleted file mode 100644 (file)
index d90f854..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_IMX31_LITEKIT
-
-config SYS_BOARD
-       default "imx31_litekit"
-
-config SYS_VENDOR
-       default "logicpd"
-
-config SYS_SOC
-       default "mx31"
-
-config SYS_CONFIG_NAME
-       default "imx31_litekit"
-
-endif
diff --git a/board/logicpd/imx31_litekit/MAINTAINERS b/board/logicpd/imx31_litekit/MAINTAINERS
deleted file mode 100644 (file)
index 8e3608e..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-IMX31_LITEKIT BOARD
-#M:    -
-S:     Maintained
-F:     board/logicpd/imx31_litekit/
-F:     include/configs/imx31_litekit.h
-F:     configs/imx31_litekit_defconfig
diff --git a/board/logicpd/imx31_litekit/Makefile b/board/logicpd/imx31_litekit/Makefile
deleted file mode 100644 (file)
index 3fd71c8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := imx31_litekit.o
-obj-y  += lowlevel_init.o
diff --git a/board/logicpd/imx31_litekit/imx31_litekit.c b/board/logicpd/imx31_litekit/imx31_litekit.c
deleted file mode 100644 (file)
index 386e106..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- *
- * (c) 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <common.h>
-#include <netdev.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/sys_proto.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int dram_init(void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((void *)PHYS_SDRAM_1,
-                               PHYS_SDRAM_1_SIZE);
-       return 0;
-}
-
-int board_early_init_f(void)
-{
-       /* CS0: Nor Flash */
-       static const struct mxc_weimcs cs0 = {
-               /*    sp wp bcd bcs psz pme sync dol cnc wsc ew wws edc */
-               CSCR_U(0, 0,  0,  0,  0,  0,   0,  0,  3, 15, 0,  0,  3),
-               /*    oea oen ebwa ebwn csa ebc dsz csn psr cre wrap csen */
-               CSCR_L(10,  0,   3,   3,  0,  1,  5,  0,  0,  0,   0,   1),
-               /*  ebra ebrn rwa rwn mum lah lbn lba dww dct wwu age cnc2 fce*/
-               CSCR_A(0,   0,  2,  2,  0,  0,  2,  0,  0,  0,  0,  0,   0,  0)
-       };
-
-       /* CS4: Network Controller */
-       static const struct mxc_weimcs cs4 = {
-               /*    sp wp bcd bcs psz pme sync dol cnc wsc ew wws edc */
-               CSCR_U(0, 0,  0,  0,  0,  0,   0,  0,  3, 28, 1,  7,  6),
-               /*   oea oen ebwa ebwn csa ebc dsz csn psr cre wrap csen */
-               CSCR_L(4,  4,   4,  10,  4,  0,  5,  4,  0,  0,   0,   1),
-               /*  ebra ebrn rwa rwn mum lah lbn lba dww dct wwu age cnc2 fce*/
-               CSCR_A(4,   4,  4,  4,  0,  1,  4,  3,  0,  0,  0,  0,   1,  0)
-       };
-
-       mxc_setup_weimcs(0, &cs0);
-       mxc_setup_weimcs(4, &cs4);
-
-       /* setup pins for UART1 */
-       mx31_gpio_mux(MUX_RXD1__UART1_RXD_MUX);
-       mx31_gpio_mux(MUX_TXD1__UART1_TXD_MUX);
-       mx31_gpio_mux(MUX_RTS1__UART1_RTS_B);
-       mx31_gpio_mux(MUX_CTS1__UART1_CTS_B);
-
-       /* SPI2 */
-       mx31_gpio_mux(MUX_CSPI2_SS2__CSPI2_SS2_B);
-       mx31_gpio_mux(MUX_CSPI2_SCLK__CSPI2_CLK);
-       mx31_gpio_mux(MUX_CSPI2_SPI_RDY__CSPI2_DATAREADY_B);
-       mx31_gpio_mux(MUX_CSPI2_MOSI__CSPI2_MOSI);
-       mx31_gpio_mux(MUX_CSPI2_MISO__CSPI2_MISO);
-       mx31_gpio_mux(MUX_CSPI2_SS0__CSPI2_SS0_B);
-       mx31_gpio_mux(MUX_CSPI2_SS1__CSPI2_SS1_B);
-
-       /* start SPI2 clock */
-       __REG(CCM_CGR2) = __REG(CCM_CGR2) | (3 << 4);
-
-       return 0;
-}
-
-int board_init(void)
-{
-       gd->bd->bi_boot_params = (0x80000100);  /* adress of boot parameters */
-
-       return 0;
-}
-
-int checkboard(void)
-{
-       printf("Board: i.MX31 Litekit\n");
-       return 0;
-}
-
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_SMC911X
-       rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
-#endif
-       return rc;
-}
diff --git a/board/logicpd/imx31_litekit/lowlevel_init.S b/board/logicpd/imx31_litekit/lowlevel_init.S
deleted file mode 100644 (file)
index 7c456bc..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- *
- * (c) 2007 Pengutronix, Sascha Hauer <s.hauer@pengutronix.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm/arch/imx-regs.h>
-
-.macro REG reg, val
-       ldr r2, =\reg
-       ldr r3, =\val
-       str r3, [r2]
-.endm
-
-.macro REG8 reg, val
-       ldr r2, =\reg
-       ldr r3, =\val
-       strb r3, [r2]
-.endm
-
-.macro DELAY loops
-       ldr r2, =\loops
-1:
-       subs    r2, r2, #1
-       nop
-       bcs 1b
-.endm
-
-.globl lowlevel_init
-lowlevel_init:
-
-       REG     IPU_CONF, IPU_CONF_DI_EN
-       REG     CCM_CCMR, 0x074B0BF5
-
-       DELAY 0x40000
-
-       REG     CCM_CCMR, 0x074B0BF5 | CCMR_MPE
-       REG     CCM_CCMR, (0x074B0BF5 | CCMR_MPE) & ~CCMR_MDS
-
-       REG     CCM_PDR0, PDR0_CSI_PODF(0x3f) | PDR0_CSI_PRDF(7) | PDR0_PER_PODF(7) | PDR0_HSP_PODF(2) | PDR0_NFC_PODF(6) | PDR0_IPG_PODF(1) | PDR0_MAX_PODF(2) | PDR0_MCU_PODF(0)
-
-       REG     CCM_MPCTL, PLL_PD(0) | PLL_MFD(0x33) | PLL_MFI(7) | PLL_MFN(0x23)
-       REG     CCM_SPCTL, PLL_PD(1) | PLL_MFD(4) | PLL_MFI(12) | PLL_MFN(1)
-
-       REG     0x43FAC26C, 0 /* SDCLK */
-       REG     0x43FAC270, 0 /* CAS */
-       REG     0x43FAC274, 0 /* RAS */
-       REG     0x43FAC27C, 0x1000 /* CS2 (CSD0) */
-       REG     0x43FAC284, 0 /* DQM3 */
-       REG     0x43FAC288, 0 /* DQM2, DQM1, DQM0, SD31-SD0, A25-A0, MA10 (0x288..0x2DC) */
-       REG     0x43FAC28C, 0
-       REG     0x43FAC290, 0
-       REG     0x43FAC294, 0
-       REG     0x43FAC298, 0
-       REG     0x43FAC29C, 0
-       REG     0x43FAC2A0, 0
-       REG     0x43FAC2A4, 0
-       REG     0x43FAC2A8, 0
-       REG     0x43FAC2AC, 0
-       REG     0x43FAC2B0, 0
-       REG     0x43FAC2B4, 0
-       REG     0x43FAC2B8, 0
-       REG     0x43FAC2BC, 0
-       REG     0x43FAC2C0, 0
-       REG     0x43FAC2C4, 0
-       REG     0x43FAC2C8, 0
-       REG     0x43FAC2CC, 0
-       REG     0x43FAC2D0, 0
-       REG     0x43FAC2D4, 0
-       REG     0x43FAC2D8, 0
-       REG     0x43FAC2DC, 0
-       REG     0xB8001010, 0x00000004
-       REG     0xB8001004, 0x006ac73a
-       REG     0xB8001000, 0x92100000
-       REG     0x80000f00, 0x12344321
-       REG     0xB8001000, 0xa2100000
-       REG     0x80000000, 0x12344321
-       REG     0x80000000, 0x12344321
-       REG     0xB8001000, 0xb2100000
-       REG8    0x80000033, 0xda
-       REG8    0x81000000, 0xff
-       REG     0xB8001000, 0x82226080
-       REG     0x80000000, 0xDEADBEEF
-       REG     0xB8001010, 0x0000000c
-
-       mov     pc, lr
index 609edf1e5c9a9386edcc9eb7b132a0e6fd600c42..babb0dc0fe49962b025dfb47661028a94fa61b2e 100644 (file)
@@ -12,6 +12,8 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <common.h>
+#include <dm.h>
+#include <ns16550.h>
 #include <netdev.h>
 #include <flash.h>
 #include <nand.h>
@@ -33,6 +35,18 @@ DECLARE_GLOBAL_DATA_PTR;
  * machine IDs; row it selected based on CPU column is slected based
  * on hsusb0_data5 pin having a pulldown resistor
  */
+
+static const struct ns16550_platdata omap3logic_serial = {
+       OMAP34XX_UART1,
+       2,
+       V_NS16550_CLK
+};
+
+U_BOOT_DEVICE(omap3logic_uart) = {
+       "serial_omap",
+       &omap3logic_serial
+};
+
 static struct board_id {
        char *name;
        int machine_id;
diff --git a/board/lwmon5/Kconfig b/board/lwmon5/Kconfig
deleted file mode 100644 (file)
index 90566d8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_LWMON5
-
-config SYS_BOARD
-       default "lwmon5"
-
-config SYS_CONFIG_NAME
-       default "lwmon5"
-
-endif
diff --git a/board/lwmon5/MAINTAINERS b/board/lwmon5/MAINTAINERS
deleted file mode 100644 (file)
index 7402ab6..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-LWMON5 BOARD
-M:     Stefan Roese <sr@denx.de>
-S:     Maintained
-F:     board/lwmon5/
-F:     include/configs/lwmon5.h
-F:     configs/lcd4_lwmon5_defconfig
-F:     configs/lwmon5_defconfig
diff --git a/board/lwmon5/Makefile b/board/lwmon5/Makefile
deleted file mode 100644 (file)
index 02478ca..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = lwmon5.o kbd.o sdram.o
-extra-y        += init.o
diff --git a/board/lwmon5/config.mk b/board/lwmon5/config.mk
deleted file mode 100644 (file)
index d0348e8..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-#
-# (C) Copyright 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-# lwmon5 (440EPx)
-#
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/lwmon5/init.S b/board/lwmon5/init.S
deleted file mode 100644 (file)
index e5207c2..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * (C) Copyright 2007
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- *  Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm-offsets.h>
-#include <ppc_asm.tmpl>
-#include <config.h>
-#include <asm/mmu.h>
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- *  Pointer to the table is returned in r1
- *
- *************************************************************************/
-       .section .bootpg,"ax"
-       .globl tlbtab
-
-tlbtab:
-       tlbtab_start
-
-       /*
-        * BOOT_CS (FLASH) must be first. Before relocation SA_I can be off to use the
-        * speed up boot process. It is patched after relocation to enable SA_I
-        */
-       tlbentry(CONFIG_SYS_BOOT_BASE_ADDR, SZ_256M, CONFIG_SYS_BOOT_BASE_ADDR, 1, AC_RWX | SA_G)
-
-       /*
-        * TLB entries for SDRAM are not needed on this platform.
-        * They are dynamically generated in the SPD DDR(2) detection
-        * routine.
-        */
-
-#ifdef CONFIG_SYS_INIT_RAM_DCACHE
-       /* TLB-entry for init-ram in dcache (SA_I must be turned off!) */
-       tlbentry(CONFIG_SYS_INIT_RAM_ADDR, SZ_4K, CONFIG_SYS_INIT_RAM_ADDR, 0, AC_RWX | SA_G)
-#endif
-
-       /* TLB-entry for PCI Memory */
-       tlbentry(CONFIG_SYS_PCI_MEMBASE, SZ_256M, CONFIG_SYS_PCI_MEMBASE, 1, AC_RW | SA_IG)
-       tlbentry(CONFIG_SYS_PCI_MEMBASE1, SZ_256M, CONFIG_SYS_PCI_MEMBASE1, 1, AC_RW | SA_IG)
-       tlbentry(CONFIG_SYS_PCI_MEMBASE2, SZ_256M, CONFIG_SYS_PCI_MEMBASE2, 1, AC_RW | SA_IG)
-       tlbentry(CONFIG_SYS_PCI_MEMBASE3, SZ_256M, CONFIG_SYS_PCI_MEMBASE3, 1, AC_RW | SA_IG)
-
-       /* TLB-entry for the FPGA Chip select 2 */
-       tlbentry(CONFIG_SYS_FPGA_BASE_0, SZ_1M, CONFIG_SYS_FPGA_BASE_0, 1, AC_RWX | SA_I|SA_G)
-
-       /* TLB-entry for the FPGA Chip select 3 */
-       tlbentry(CONFIG_SYS_FPGA_BASE_1, SZ_1M, CONFIG_SYS_FPGA_BASE_1, 1,AC_RWX | SA_I|SA_G)
-
-       /* TLB-entry for the LIME Controller */
-       tlbentry(CONFIG_SYS_LIME_BASE_0, SZ_16M, CONFIG_SYS_LIME_BASE_0, 1, AC_RWX | SA_I|SA_G)
-       tlbentry(CONFIG_SYS_LIME_BASE_1, SZ_16M, CONFIG_SYS_LIME_BASE_1, 1, AC_RWX | SA_I|SA_G)
-       tlbentry(CONFIG_SYS_LIME_BASE_2, SZ_16M, CONFIG_SYS_LIME_BASE_2, 1, AC_RWX | SA_I|SA_G)
-       tlbentry(CONFIG_SYS_LIME_BASE_3, SZ_16M, CONFIG_SYS_LIME_BASE_3, 1, AC_RWX | SA_I|SA_G)
-
-       /* TLB-entry for Internal Registers & OCM */
-       tlbentry(0xe0000000, SZ_16M, 0xe0000000, 0,  AC_RWX | SA_I)
-
-       /*TLB-entry PCI registers*/
-       tlbentry(0xEEC00000, SZ_1K, 0xEEC00000, 1,  AC_RWX | SA_IG)
-
-       /* TLB-entry for peripherals */
-       tlbentry(0xEF000000, SZ_16M, 0xEF000000, 1, AC_RWX | SA_IG)
-
-       tlbtab_end
diff --git a/board/lwmon5/kbd.c b/board/lwmon5/kbd.c
deleted file mode 100644 (file)
index 97962da..0000000
+++ /dev/null
@@ -1,490 +0,0 @@
-/*
- * (C) Copyright 2007
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2001, 2002
- * DENX Software Engineering
- * Wolfgang Denk, wd@denx.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* define DEBUG for debugging output (obviously ;-)) */
-#if 0
-#define DEBUG
-#endif
-
-#include <common.h>
-#include <i2c.h>
-#include <command.h>
-#include <post.h>
-#include <serial.h>
-#include <malloc.h>
-
-#include <linux/types.h>
-#include <linux/string.h>      /* for strdup */
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static void kbd_init (void);
-static int compare_magic (uchar *kbd_data, uchar *str);
-
-/*--------------------- Local macros and constants --------------------*/
-#define        _NOT_USED_      0xFFFFFFFF
-
-/*------------------------- dspic io expander -----------------------*/
-#define DSPIC_PON_STATUS_REG   0x80A
-#define DSPIC_PON_INV_STATUS_REG 0x80C
-#define DSPIC_PON_KEY_REG      0x810
-/*------------------------- Keyboard controller -----------------------*/
-/* command codes */
-#define        KEYBD_CMD_READ_KEYS     0x01
-#define KEYBD_CMD_READ_VERSION 0x02
-#define KEYBD_CMD_READ_STATUS  0x03
-#define KEYBD_CMD_RESET_ERRORS 0x10
-
-/* status codes */
-#define KEYBD_STATUS_MASK      0x3F
-#define        KEYBD_STATUS_H_RESET    0x20
-#define KEYBD_STATUS_BROWNOUT  0x10
-#define KEYBD_STATUS_WD_RESET  0x08
-#define KEYBD_STATUS_OVERLOAD  0x04
-#define KEYBD_STATUS_ILLEGAL_WR        0x02
-#define KEYBD_STATUS_ILLEGAL_RD        0x01
-
-/* Number of bytes returned from Keyboard Controller */
-#define KEYBD_VERSIONLEN       2       /* version information */
-
-/*
- * This is different from the "old" lwmon dsPIC kbd controller
- * implementation. Now the controller still answers with 9 bytes,
- * but the last 3 bytes are always "0x06 0x07 0x08". So we just
- * set the length to compare to 6 instead of 9.
- */
-#define        KEYBD_DATALEN           6       /* normal key scan data */
-
-/* maximum number of "magic" key codes that can be assigned */
-
-static uchar kbd_addr = CONFIG_SYS_I2C_KEYBD_ADDR;
-static uchar dspic_addr = CONFIG_SYS_I2C_DSPIC_IO_ADDR;
-
-static uchar *key_match (uchar *);
-
-#define        KEYBD_SET_DEBUGMODE     '#'     /* Magic key to enable debug output */
-
-/***********************************************************************
-F* Function:     int board_postclk_init (void) P*A*Z*
- *
-P* Parameters:   none
-P*
-P* Returnvalue:  int
-P*                - 0 is always returned.
- *
-Z* Intention:    This function is the board_postclk_init() method implementation
-Z*               for the lwmon board.
- *
- ***********************************************************************/
-int board_postclk_init (void)
-{
-       kbd_init();
-
-       return (0);
-}
-
-static void kbd_init (void)
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       uchar tmp_data[KEYBD_DATALEN];
-       uchar val, errcd;
-       int i;
-
-       i2c_set_bus_num(0);
-
-       gd->arch.kbd_status = 0;
-
-       /* Forced by PIC. Delays <= 175us loose */
-       udelay(1000);
-
-       /* Read initial keyboard error code */
-       val = KEYBD_CMD_READ_STATUS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, &errcd, 1);
-       /* clear unused bits */
-       errcd &= KEYBD_STATUS_MASK;
-       /* clear "irrelevant" bits. Recommended by Martin Rajek, LWN */
-       errcd &= ~(KEYBD_STATUS_H_RESET|KEYBD_STATUS_BROWNOUT);
-       if (errcd) {
-               gd->arch.kbd_status |= errcd << 8;
-       }
-       /* Reset error code and verify */
-       val = KEYBD_CMD_RESET_ERRORS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       udelay(1000);   /* delay NEEDED by keyboard PIC !!! */
-
-       val = KEYBD_CMD_READ_STATUS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, &val, 1);
-
-       val &= KEYBD_STATUS_MASK;       /* clear unused bits */
-       if (val) {                      /* permanent error, report it */
-               gd->arch.kbd_status |= val;
-               return;
-       }
-
-       /*
-        * Read current keyboard state.
-        *
-        * After the error reset it may take some time before the
-        * keyboard PIC picks up a valid keyboard scan - the total
-        * scan time is approx. 1.6 ms (information by Martin Rajek,
-        * 28 Sep 2002). We read a couple of times for the keyboard
-        * to stabilize, using a big enough delay.
-        * 10 times should be enough. If the data is still changing,
-        * we use what we get :-(
-        */
-
-       memset (tmp_data, 0xFF, KEYBD_DATALEN); /* impossible value */
-       for (i=0; i<10; ++i) {
-               val = KEYBD_CMD_READ_KEYS;
-               i2c_write (kbd_addr, 0, 0, &val, 1);
-               i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-               if (memcmp(kbd_data, tmp_data, KEYBD_DATALEN) == 0) {
-                       /* consistent state, done */
-                       break;
-               }
-               /* remeber last state, delay, and retry */
-               memcpy (tmp_data, kbd_data, KEYBD_DATALEN);
-               udelay (5000);
-       }
-}
-
-
-/* Read a register from the dsPIC. */
-int _dspic_read(ushort reg, ushort *data)
-{
-       uchar buf[sizeof(*data)];
-       int rval;
-
-       if (i2c_read(dspic_addr, reg, 2, buf, 2))
-               return -1;
-
-       rval = i2c_read(dspic_addr, reg, sizeof(reg), buf, sizeof(*data));
-       *data = (buf[0] << 8) | buf[1];
-
-       return rval;
-}
-
-
-/***********************************************************************
-F* Function:     int misc_init_r (void) P*A*Z*
- *
-P* Parameters:   none
-P*
-P* Returnvalue:  int
-P*                - 0 is always returned, even in the case of a keyboard
-P*                    error.
- *
-Z* Intention:    This function is the misc_init_r() method implementation
-Z*               for the lwmon board.
-Z*               The keyboard controller is initialized and the result
-Z*               of a read copied to the environment variable "keybd".
-Z*               If KEYBD_SET_DEBUGMODE is defined, a check is made for
-Z*               this key, and if found display to the LCD will be enabled.
-Z*               The keys in "keybd" are checked against the magic
-Z*               keycommands defined in the environment.
-Z*               See also key_match().
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int misc_init_r_kbd (void)
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       char keybd_env[2 * KEYBD_DATALEN + 1];
-       uchar kbd_init_status = gd->arch.kbd_status >> 8;
-       uchar kbd_status = gd->arch.kbd_status;
-       uchar val;
-       ushort data, inv_data;
-       char *str;
-       int i;
-
-       if (kbd_init_status) {
-               printf ("KEYBD: Error %02X\n", kbd_init_status);
-       }
-       if (kbd_status) {               /* permanent error, report it */
-               printf ("*** Keyboard error code %02X ***\n", kbd_status);
-               sprintf (keybd_env, "%02X", kbd_status);
-               setenv ("keybd", keybd_env);
-               return 0;
-       }
-
-       /*
-        * Now we know that we have a working  keyboard,  so  disable
-        * all output to the LCD except when a key press is detected.
-        */
-
-       if ((console_assign (stdout, "serial") < 0) ||
-               (console_assign (stderr, "serial") < 0)) {
-               printf ("Can't assign serial port as output device\n");
-       }
-
-       /* Read Version */
-       val = KEYBD_CMD_READ_VERSION;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_VERSIONLEN);
-       printf ("KEYBD: Version %d.%d\n", kbd_data[0], kbd_data[1]);
-
-       /* Read current keyboard state */
-       val = KEYBD_CMD_READ_KEYS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-       /* read out start key from bse01 received via can */
-       _dspic_read(DSPIC_PON_STATUS_REG, &data);
-       /* check highbyte from status register */
-       if (data > 0xFF) {
-               _dspic_read(DSPIC_PON_INV_STATUS_REG, &inv_data);
-
-               /* check inverse data */
-               if ((data+inv_data) == 0xFFFF) {
-                       /* don't overwrite local key */
-                       if (kbd_data[1] == 0) {
-                               /* read key value */
-                               _dspic_read(DSPIC_PON_KEY_REG, &data);
-                               str = (char *)&data;
-                               /* swap bytes */
-                               kbd_data[1] = str[1];
-                               kbd_data[2] = str[0];
-                               printf("CAN received startkey: 0x%X\n", data);
-                       }
-               }
-       }
-
-       for (i = 0; i < KEYBD_DATALEN; ++i) {
-               sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
-       }
-
-       setenv ("keybd", keybd_env);
-
-       str = strdup ((char *)key_match (kbd_data));    /* decode keys */
-#ifdef KEYBD_SET_DEBUGMODE
-       if (kbd_data[0] == KEYBD_SET_DEBUGMODE) {       /* set debug mode */
-               if ((console_assign (stdout, "lcd") < 0) ||
-                       (console_assign (stderr, "lcd") < 0)) {
-                       printf ("Can't assign LCD display as output device\n");
-               }
-       }
-#endif /* KEYBD_SET_DEBUGMODE */
-#ifdef CONFIG_PREBOOT  /* automatically configure "preboot" command on key match */
-       setenv ("preboot", str);        /* set or delete definition */
-#endif /* CONFIG_PREBOOT */
-       if (str != NULL) {
-               free (str);
-       }
-       return (0);
-}
-
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[] = "key_magic";
-static uchar kbd_command_prefix[] = "key_cmd";
-
-static int compare_magic (uchar *kbd_data, uchar *str)
-{
-       uchar compare[KEYBD_DATALEN-1];
-       char *nxt;
-       int i;
-
-       /* Don't include modifier byte */
-       memcpy (compare, kbd_data+1, KEYBD_DATALEN-1);
-
-       for (; str != NULL; str = (*nxt) ? (uchar *)(nxt+1) : (uchar *)nxt) {
-               uchar c;
-               int k;
-
-               c = (uchar) simple_strtoul ((char *)str, (char **) (&nxt), 16);
-
-               if (str == (uchar *)nxt) {      /* invalid character */
-                       break;
-               }
-
-               /*
-                * Check if this key matches the input.
-                * Set matches to zero, so they match only once
-                * and we can find duplicates or extra keys
-                */
-               for (k = 0; k < sizeof(compare); ++k) {
-                       if (compare[k] == '\0') /* only non-zero entries */
-                               continue;
-                       if (c == compare[k]) {  /* found matching key */
-                               compare[k] = '\0';
-                               break;
-                       }
-               }
-               if (k == sizeof(compare)) {
-                       return -1;              /* unmatched key */
-               }
-       }
-
-       /*
-        * A full match leaves no keys in the `compare' array,
-        */
-       for (i = 0; i < sizeof(compare); ++i) {
-               if (compare[i])
-               {
-                       return -1;
-               }
-       }
-
-       return 0;
-}
-
-/***********************************************************************
-F* Function:     static uchar *key_match (uchar *kbd_data) P*A*Z*
- *
-P* Parameters:   uchar *kbd_data
-P*                - The keys to match against our magic definitions
-P*
-P* Returnvalue:  uchar *
-P*                - != NULL: Pointer to the corresponding command(s)
-P*                     NULL: No magic is about to happen
- *
-Z* Intention:    Check if pressed key(s) match magic sequence,
-Z*               and return the command string associated with that key(s).
-Z*
-Z*               If no key press was decoded, NULL is returned.
-Z*
-Z*               Note: the first character of the argument will be
-Z*                     overwritten with the "magic charcter code" of the
-Z*                     decoded key(s), or '\0'.
-Z*
-Z*               Note: the string points to static environment data
-Z*                     and must be saved before you call any function that
-Z*                     modifies the environment.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-static uchar *key_match (uchar *kbd_data)
-{
-       char magic[sizeof (kbd_magic_prefix) + 1];
-       uchar *suffix;
-       char *kbd_magic_keys;
-
-       /*
-        * The following string defines the characters that can pe appended
-        * to "key_magic" to form the names of environment variables that
-        * hold "magic" key codes, i. e. such key codes that can cause
-        * pre-boot actions. If the string is empty (""), then only
-        * "key_magic" is checked (old behaviour); the string "125" causes
-        * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
-        */
-       if ((kbd_magic_keys = getenv ("magic_keys")) == NULL)
-               kbd_magic_keys = "";
-
-       /* loop over all magic keys;
-        * use '\0' suffix in case of empty string
-        */
-       for (suffix=(uchar *)kbd_magic_keys; *suffix || suffix==(uchar *)kbd_magic_keys; ++suffix) {
-               sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
-               debug ("### Check magic \"%s\"\n", magic);
-               if (compare_magic(kbd_data, (uchar *)getenv(magic)) == 0) {
-                       char cmd_name[sizeof (kbd_command_prefix) + 1];
-                       char *cmd;
-
-                       sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
-
-                       cmd = getenv (cmd_name);
-                       debug ("### Set PREBOOT to $(%s): \"%s\"\n",
-                                       cmd_name, cmd ? cmd : "<<NULL>>");
-                       *kbd_data = *suffix;
-                       return ((uchar *)cmd);
-               }
-       }
-       debug ("### Delete PREBOOT\n");
-       *kbd_data = '\0';
-       return (NULL);
-}
-#endif /* CONFIG_PREBOOT */
-
-/***********************************************************************
-F* Function:     int do_kbd (cmd_tbl_t *cmdtp, int flag,
-F*                           int argc, char * const argv[]) P*A*Z*
- *
-P* Parameters:   cmd_tbl_t *cmdtp
-P*                - Pointer to our command table entry
-P*               int flag
-P*                - If the CMD_FLAG_REPEAT bit is set, then this call is
-P*                  a repetition
-P*               int argc
-P*                - Argument count
-P*               char * const argv[]
-P*                - Array of the actual arguments
-P*
-P* Returnvalue:  int
-P*                - 0 is always returned.
- *
-Z* Intention:    Implement the "kbd" command.
-Z*               The keyboard status is read.  The result is printed on
-Z*               the console and written into the "keybd" environment
-Z*               variable.
- *
-D* Design:       wd@denx.de
-C* Coding:       wd@denx.de
-V* Verification: dzu@denx.de
- ***********************************************************************/
-int do_kbd (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       char keybd_env[2 * KEYBD_DATALEN + 1];
-       uchar val;
-       int i;
-
-#if 0 /* Done in kbd_init */
-       i2c_init (CONFIG_SYS_I2C_SPEED, CONFIG_SYS_I2C_SLAVE);
-#endif
-
-       /* Read keys */
-       val = KEYBD_CMD_READ_KEYS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-       puts ("Keys:");
-       for (i = 0; i < KEYBD_DATALEN; ++i) {
-               sprintf (keybd_env + i + i, "%02X", kbd_data[i]);
-               printf (" %02x", kbd_data[i]);
-       }
-       putc ('\n');
-       setenv ("keybd", keybd_env);
-       return 0;
-}
-
-U_BOOT_CMD(
-       kbd,    1,      1,      do_kbd,
-       "read keyboard status",
-       ""
-);
-
-/*----------------------------- Utilities -----------------------------*/
-
-#ifdef CONFIG_POST
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
-       uchar kbd_data[KEYBD_DATALEN];
-       uchar val;
-
-       /* Read keys */
-       val = KEYBD_CMD_READ_KEYS;
-       i2c_write (kbd_addr, 0, 0, &val, 1);
-       i2c_read (kbd_addr, 0, 0, kbd_data, KEYBD_DATALEN);
-
-       return (compare_magic(kbd_data, (uchar *)CONFIG_POST_KEY_MAGIC) == 0);
-}
-#endif
diff --git a/board/lwmon5/lwmon5.c b/board/lwmon5/lwmon5.c
deleted file mode 100644 (file)
index e9aa0b7..0000000
+++ /dev/null
@@ -1,558 +0,0 @@
-/*
- * (C) Copyright 2007-2013
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <asm/ppc440.h>
-#include <asm/processor.h>
-#include <asm/ppc4xx-gpio.h>
-#include <asm/io.h>
-#include <post.h>
-#include <flash.h>
-#include <mtd/cfi_flash.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static phys_addr_t lwmon5_cfi_flash_bank_addr[2] = CONFIG_SYS_FLASH_BANKS_LIST;
-
-ulong flash_get_size(ulong base, int banknum);
-int misc_init_r_kbd(void);
-
-int board_early_init_f(void)
-{
-       u32 sdr0_pfc1, sdr0_pfc2;
-       u32 reg;
-
-       /* PLB Write pipelining disabled. Denali Core workaround */
-       mtdcr(PLB4A0_ACR, 0xDE000000);
-       mtdcr(PLB4A1_ACR, 0xDE000000);
-
-       /*--------------------------------------------------------------------
-        * Setup the interrupt controller polarities, triggers, etc.
-        *-------------------------------------------------------------------*/
-       mtdcr(UIC0SR, 0xffffffff);  /* clear all. if write with 1 then the status is cleared  */
-       mtdcr(UIC0ER, 0x00000000);  /* disable all */
-       mtdcr(UIC0CR, 0x00000000);  /* we have not critical interrupts at the moment */
-       mtdcr(UIC0PR, 0xFFBFF1EF);  /* Adjustment of the polarity */
-       mtdcr(UIC0TR, 0x00000900);  /* per ref-board manual */
-       mtdcr(UIC0VR, 0x00000000);  /* int31 highest, base=0x000 is within DDRAM */
-       mtdcr(UIC0SR, 0xffffffff);  /* clear all */
-
-       mtdcr(UIC1SR, 0xffffffff);  /* clear all */
-       mtdcr(UIC1ER, 0x00000000);  /* disable all */
-       mtdcr(UIC1CR, 0x00000000);  /* all non-critical */
-       mtdcr(UIC1PR, 0xFFFFC6A5);  /* Adjustment of the polarity */
-       mtdcr(UIC1TR, 0x60000040);  /* per ref-board manual */
-       mtdcr(UIC1VR, 0x00000000);  /* int31 highest, base=0x000 is within DDRAM */
-       mtdcr(UIC1SR, 0xffffffff);  /* clear all */
-
-       mtdcr(UIC2SR, 0xffffffff);  /* clear all */
-       mtdcr(UIC2ER, 0x00000000);  /* disable all */
-       mtdcr(UIC2CR, 0x00000000);  /* all non-critical */
-       mtdcr(UIC2PR, 0x27C00000);  /* Adjustment of the polarity */
-       mtdcr(UIC2TR, 0x3C000000);  /* per ref-board manual */
-       mtdcr(UIC2VR, 0x00000000);  /* int31 highest, base=0x000 is within DDRAM */
-       mtdcr(UIC2SR, 0xffffffff);  /* clear all */
-
-       /* Trace Pins are disabled. SDR0_PFC0 Register */
-       mtsdr(SDR0_PFC0, 0x0);
-
-       /* select Ethernet pins */
-       mfsdr(SDR0_PFC1, sdr0_pfc1);
-       /* SMII via ZMII */
-       sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_SELECT_MASK) |
-               SDR0_PFC1_SELECT_CONFIG_6;
-       mfsdr(SDR0_PFC2, sdr0_pfc2);
-       sdr0_pfc2 = (sdr0_pfc2 & ~SDR0_PFC2_SELECT_MASK) |
-               SDR0_PFC2_SELECT_CONFIG_6;
-
-       /* enable SPI (SCP) */
-       sdr0_pfc1 = (sdr0_pfc1 & ~SDR0_PFC1_SIS_MASK) | SDR0_PFC1_SIS_SCP_SEL;
-
-       mtsdr(SDR0_PFC2, sdr0_pfc2);
-       mtsdr(SDR0_PFC1, sdr0_pfc1);
-
-       mtsdr(SDR0_PFC4, 0x80000000);
-
-       /* PCI arbiter disabled */
-       /* PCI Host Configuration disbaled */
-       mfsdr(SDR0_PCI0, reg);
-       reg = 0;
-       mtsdr(SDR0_PCI0, 0x00000000 | reg);
-
-       gpio_write_bit(CONFIG_SYS_GPIO_FLASH_WP, 1);
-
-#if CONFIG_POST & CONFIG_SYS_POST_BSPEC1
-       /* enable the LSB transmitter */
-       gpio_write_bit(CONFIG_SYS_GPIO_LSB_ENABLE, 1);
-       /* enable the CAN transmitter */
-       gpio_write_bit(CONFIG_SYS_GPIO_CAN_ENABLE, 1);
-
-       reg = 0; /* reuse as counter */
-       out_be32((void *)CONFIG_SYS_DSPIC_TEST_ADDR,
-               in_be32((void *)CONFIG_SYS_DSPIC_TEST_ADDR)
-                       & ~CONFIG_SYS_DSPIC_TEST_MASK);
-       while (gpio_read_in_bit(CONFIG_SYS_GPIO_DSPIC_READY) && reg++ < 1000) {
-               udelay(1000);
-       }
-       if (gpio_read_in_bit(CONFIG_SYS_GPIO_DSPIC_READY)) {
-               /* set "boot error" flag */
-               out_be32((void *)CONFIG_SYS_DSPIC_TEST_ADDR,
-                       in_be32((void *)CONFIG_SYS_DSPIC_TEST_ADDR) |
-                       CONFIG_SYS_DSPIC_TEST_MASK);
-       }
-#endif
-
-       /*
-        * Reset PHY's:
-        * The PHY's need a 2nd reset pulse, since the MDIO address is latched
-        * upon reset, and with the first reset upon powerup, the addresses are
-        * not latched reliable, since the IRQ line is multiplexed with an
-        * MDIO address. A 2nd reset at this time will make sure, that the
-        * correct address is latched.
-        */
-       gpio_write_bit(CONFIG_SYS_GPIO_PHY0_RST, 1);
-       gpio_write_bit(CONFIG_SYS_GPIO_PHY1_RST, 1);
-       udelay(1000);
-       gpio_write_bit(CONFIG_SYS_GPIO_PHY0_RST, 0);
-       gpio_write_bit(CONFIG_SYS_GPIO_PHY1_RST, 0);
-       udelay(1000);
-       gpio_write_bit(CONFIG_SYS_GPIO_PHY0_RST, 1);
-       gpio_write_bit(CONFIG_SYS_GPIO_PHY1_RST, 1);
-
-       return 0;
-}
-
-/*
- * Override weak default with board specific version
- */
-phys_addr_t cfi_flash_bank_addr(int bank)
-{
-       return lwmon5_cfi_flash_bank_addr[bank];
-}
-
-/*
- * Override the weak default mapping function with a board specific one
- */
-u32 flash_get_bank_size(int cs, int idx)
-{
-       return flash_info[idx].size;
-}
-
-int board_early_init_r(void)
-{
-       u32 val0, val1;
-
-       /*
-        * lwmon5 is manufactured in 2 different board versions:
-        * The lwmon5a board has 64MiB NOR flash instead of the
-        * 128MiB of the original lwmon5. Unfortunately the CFI driver
-        * will report 2 banks of 64MiB even for the smaller flash
-        * chip, since the bank is mirrored. To fix this, we bring
-        * one bank into CFI query mode and read its response. This
-        * enables us to detect the real number of flash devices/
-        * banks which will be used later on by the common CFI driver.
-        */
-
-       /* Put bank 0 into CFI command mode and read */
-       out_be32((void *)CONFIG_SYS_FLASH0, 0x00980098);
-       val0 = in_be32((void *)CONFIG_SYS_FLASH0 + FLASH_OFFSET_CFI_RESP);
-       val1 = in_be32((void *)CONFIG_SYS_FLASH1 + FLASH_OFFSET_CFI_RESP);
-
-       /* Reset flash again out of query mode */
-       out_be32((void *)CONFIG_SYS_FLASH0, 0x00f000f0);
-
-       /* When not identical, we have 2 different flash devices/banks */
-       if (val0 != val1)
-               return 0;
-
-       /*
-        * Now we're sure that we're running on a LWMON5a board with
-        * only 64MiB NOR flash in one bank:
-        *
-        * Set flash base address and bank count for CFI driver probing.
-        */
-       cfi_flash_num_flash_banks = 1;
-       lwmon5_cfi_flash_bank_addr[0] = CONFIG_SYS_FLASH0;
-
-       return 0;
-}
-
-int misc_init_r(void)
-{
-       u32 pbcr;
-       int size_val = 0;
-       u32 reg;
-#ifndef CONFIG_LCD4_LWMON5
-       unsigned long usb2d0cr = 0;
-       unsigned long usb2phy0cr, usb2h0cr = 0;
-       unsigned long sdr0_pfc1, sdr0_srst;
-#endif
-
-       /*
-        * FLASH stuff...
-        */
-
-       /* Re-do sizing to get full correct info */
-
-       /* adjust flash start and offset */
-       gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
-       gd->bd->bi_flashoffset = 0;
-
-       mfebc(PB0CR, pbcr);
-       size_val = ffs(gd->bd->bi_flashsize) - 21;
-       pbcr = (pbcr & 0x0001ffff) | gd->bd->bi_flashstart | (size_val << 17);
-       mtebc(PB0CR, pbcr);
-
-       /*
-        * Re-check to get correct base address
-        */
-       flash_get_size(gd->bd->bi_flashstart, 0);
-
-       /* Monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET, -CONFIG_SYS_MONITOR_LEN, 0xffffffff,
-                     &flash_info[cfi_flash_num_flash_banks - 1]);
-
-       /* Env protection ON by default */
-       flash_protect(FLAG_PROTECT_SET, CONFIG_ENV_ADDR_REDUND,
-                     CONFIG_ENV_ADDR_REDUND + 2 * CONFIG_ENV_SECT_SIZE - 1,
-                     &flash_info[cfi_flash_num_flash_banks - 1]);
-
-#ifndef CONFIG_LCD4_LWMON5
-       /*
-        * USB suff...
-        */
-
-       /* Reset USB */
-       /* Reset of USB2PHY0 must be active at least 10 us  */
-       mtsdr(SDR0_SRST0, SDR0_SRST0_USB2H | SDR0_SRST0_USB2D);
-       udelay(2000);
-
-       mtsdr(SDR0_SRST1, SDR0_SRST1_USB20PHY | SDR0_SRST1_USB2HUTMI |
-             SDR0_SRST1_USB2HPHY | SDR0_SRST1_OPBA2 |
-             SDR0_SRST1_PLB42OPB1 | SDR0_SRST1_OPB2PLB40);
-       udelay(2000);
-
-       /* Errata CHIP_6 */
-
-       /* 1. Set internal PHY configuration */
-       /* SDR Setting */
-       mfsdr(SDR0_PFC1, sdr0_pfc1);
-       mfsdr(SDR0_USB0, usb2d0cr);
-       mfsdr(SDR0_USB2PHY0CR, usb2phy0cr);
-       mfsdr(SDR0_USB2H0CR, usb2h0cr);
-
-       usb2phy0cr = usb2phy0cr & ~SDR0_USB2PHY0CR_XOCLK_MASK;
-       usb2phy0cr = usb2phy0cr |  SDR0_USB2PHY0CR_XOCLK_EXTERNAL;      /*0*/
-       usb2phy0cr = usb2phy0cr & ~SDR0_USB2PHY0CR_WDINT_MASK;
-       usb2phy0cr = usb2phy0cr |  SDR0_USB2PHY0CR_WDINT_16BIT_30MHZ;   /*1*/
-       usb2phy0cr = usb2phy0cr & ~SDR0_USB2PHY0CR_DVBUS_MASK;
-       usb2phy0cr = usb2phy0cr |  SDR0_USB2PHY0CR_DVBUS_PUREN;         /*1*/
-       usb2phy0cr = usb2phy0cr & ~SDR0_USB2PHY0CR_DWNSTR_MASK;
-       usb2phy0cr = usb2phy0cr |  SDR0_USB2PHY0CR_DWNSTR_HOST;         /*1*/
-       usb2phy0cr = usb2phy0cr & ~SDR0_USB2PHY0CR_UTMICN_MASK;
-       usb2phy0cr = usb2phy0cr |  SDR0_USB2PHY0CR_UTMICN_HOST;         /*1*/
-
-       /*
-        * An 8-bit/60MHz interface is the only possible alternative
-        * when connecting the Device to the PHY
-        */
-       usb2h0cr   = usb2h0cr & ~SDR0_USB2H0CR_WDINT_MASK;
-       usb2h0cr   = usb2h0cr |  SDR0_USB2H0CR_WDINT_16BIT_30MHZ;       /*1*/
-
-       mtsdr(SDR0_PFC1, sdr0_pfc1);
-       mtsdr(SDR0_USB0, usb2d0cr);
-       mtsdr(SDR0_USB2PHY0CR, usb2phy0cr);
-       mtsdr(SDR0_USB2H0CR, usb2h0cr);
-
-       /* 2. De-assert internal PHY reset */
-       mfsdr(SDR0_SRST1, sdr0_srst);
-       sdr0_srst = sdr0_srst & ~SDR0_SRST1_USB20PHY;
-       mtsdr(SDR0_SRST1, sdr0_srst);
-
-       /* 3. Wait for more than 1 ms */
-       udelay(2000);
-
-       /* 4. De-assert USB 2.0 Host main reset */
-       mfsdr(SDR0_SRST0, sdr0_srst);
-       sdr0_srst = sdr0_srst &~ SDR0_SRST0_USB2H;
-       mtsdr(SDR0_SRST0, sdr0_srst);
-       udelay(1000);
-
-       /* 5. De-assert reset of OPB2 cores */
-       mfsdr(SDR0_SRST1, sdr0_srst);
-       sdr0_srst = sdr0_srst &~ SDR0_SRST1_PLB42OPB1;
-       sdr0_srst = sdr0_srst &~ SDR0_SRST1_OPB2PLB40;
-       sdr0_srst = sdr0_srst &~ SDR0_SRST1_OPBA2;
-       mtsdr(SDR0_SRST1, sdr0_srst);
-       udelay(1000);
-
-       /* 6. Set EHCI Configure FLAG */
-
-       /* 7. Reassert internal PHY reset: */
-       mtsdr(SDR0_SRST1, SDR0_SRST1_USB20PHY);
-       udelay(1000);
-#endif
-
-       /*
-        * Clear resets
-        */
-       mtsdr(SDR0_SRST1, 0x00000000);
-       mtsdr(SDR0_SRST0, 0x00000000);
-
-#ifndef CONFIG_LCD4_LWMON5
-       printf("USB:   Host(int phy) Device(ext phy)\n");
-#endif
-
-       /*
-        * Clear PLB4A0_ACR[WRP]
-        * This fix will make the MAL burst disabling patch for the Linux
-        * EMAC driver obsolete.
-        */
-       reg = mfdcr(PLB4A0_ACR) & ~PLB4Ax_ACR_WRP_MASK;
-       mtdcr(PLB4A0_ACR, reg);
-
-#ifndef CONFIG_LCD4_LWMON5
-       /*
-        * Init matrix keyboard
-        */
-       misc_init_r_kbd();
-#endif
-
-       return 0;
-}
-
-int checkboard(void)
-{
-       char buf[64];
-       int i = getenv_f("serial#", buf, sizeof(buf));
-
-       printf("Board: %s", __stringify(CONFIG_HOSTNAME));
-
-       if (i > 0) {
-               puts(", serial# ");
-               puts(buf);
-       }
-       putc('\n');
-
-       return (0);
-}
-
-void hw_watchdog_reset(void)
-{
-       int val;
-#if defined(CONFIG_WD_MAX_RATE)
-       unsigned long long ct = get_ticks();
-
-       /*
-        * Don't allow watch-dog triggering more frequently than
-        * the predefined value CONFIG_WD_MAX_RATE [ticks].
-        */
-       if (ct >= gd->arch.wdt_last) {
-               if ((ct - gd->arch.wdt_last) < CONFIG_WD_MAX_RATE)
-                       return;
-       } else {
-               /* Time base counter had been reset */
-               if (((unsigned long long)(-1) - gd->arch.wdt_last + ct) <
-                   CONFIG_WD_MAX_RATE)
-                       return;
-       }
-       gd->arch.wdt_last = get_ticks();
-#endif
-
-       /*
-        * Toggle watchdog output
-        */
-       val = gpio_read_out_bit(CONFIG_SYS_GPIO_WATCHDOG) == 0 ? 1 : 0;
-       gpio_write_bit(CONFIG_SYS_GPIO_WATCHDOG, val);
-}
-
-int do_eeprom_wp(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       if (argc < 2)
-               return cmd_usage(cmdtp);
-
-       if ((strcmp(argv[1], "on") == 0))
-               gpio_write_bit(CONFIG_SYS_GPIO_EEPROM_EXT_WP, 1);
-       else if ((strcmp(argv[1], "off") == 0))
-               gpio_write_bit(CONFIG_SYS_GPIO_EEPROM_EXT_WP, 0);
-       else
-               return cmd_usage(cmdtp);
-
-       return 0;
-}
-
-U_BOOT_CMD(
-       eepromwp,       2,      0,      do_eeprom_wp,
-       "eeprom write protect off/on",
-       "<on|off> - enable (on) or disable (off) I2C EEPROM write protect"
-);
-
-#if defined(CONFIG_VIDEO)
-#include <video_fb.h>
-#include <mb862xx.h>
-
-extern GraphicDevice mb862xx;
-
-static const gdc_regs init_regs [] = {
-       { 0x0100, 0x00000f00 },
-       { 0x0020, 0x801401df },
-       { 0x0024, 0x00000000 },
-       { 0x0028, 0x00000000 },
-       { 0x002c, 0x00000000 },
-       { 0x0110, 0x00000000 },
-       { 0x0114, 0x00000000 },
-       { 0x0118, 0x01df0280 },
-       { 0x0004, 0x031f0000 },
-       { 0x0008, 0x027f027f },
-       { 0x000c, 0x015f028f },
-       { 0x0010, 0x020c0000 },
-       { 0x0014, 0x01df01ea },
-       { 0x0018, 0x00000000 },
-       { 0x001c, 0x01e00280 },
-       { 0x0100, 0x80010f00 },
-       { 0x0, 0x0 }
-};
-
-const gdc_regs *board_get_regs(void)
-{
-       return init_regs;
-}
-
-/* Returns Lime base address */
-unsigned int board_video_init(void)
-{
-       /*
-        * Reset Lime controller
-        */
-       gpio_write_bit(CONFIG_SYS_GPIO_LIME_S, 1);
-       udelay(500);
-       gpio_write_bit(CONFIG_SYS_GPIO_LIME_RST, 1);
-
-       mb862xx.winSizeX = 640;
-       mb862xx.winSizeY = 480;
-       mb862xx.gdfBytesPP = 2;
-       mb862xx.gdfIndex = GDF_15BIT_555RGB;
-
-       return CONFIG_SYS_LIME_BASE_0;
-}
-
-#define DEFAULT_BRIGHTNESS     0x64
-
-static void board_backlight_brightness(int brightness)
-{
-       if (brightness > 0) {
-               /* pwm duty, lamp on */
-               out_be32((void *)(CONFIG_SYS_FPGA_BASE_0 + 0x00000024), brightness);
-               out_be32((void *)(CONFIG_SYS_FPGA_BASE_0 + 0x00000020), 0x701);
-       } else {
-               /* lamp off */
-               out_be32((void *)(CONFIG_SYS_FPGA_BASE_0 + 0x00000024), 0x00);
-               out_be32((void *)(CONFIG_SYS_FPGA_BASE_0 + 0x00000020), 0x00);
-       }
-}
-
-void board_backlight_switch(int flag)
-{
-       char * param;
-       int rc;
-
-       if (flag) {
-               param = getenv("brightness");
-               rc = param ? simple_strtol(param, NULL, 10) : -1;
-               if (rc < 0)
-                       rc = DEFAULT_BRIGHTNESS;
-       } else {
-               rc = 0;
-       }
-       board_backlight_brightness(rc);
-}
-
-#if defined(CONFIG_CONSOLE_EXTRA_INFO)
-/*
- * Return text to be printed besides the logo.
- */
-void video_get_info_str(int line_number, char *info)
-{
-       if (line_number == 1)
-               strcpy(info, " Board: Lwmon5 (Liebherr Elektronik GmbH)");
-       else
-               info [0] = '\0';
-}
-#endif /* CONFIG_CONSOLE_EXTRA_INFO */
-#endif /* CONFIG_VIDEO */
-
-void board_reset(void)
-{
-       gpio_write_bit(CONFIG_SYS_GPIO_BOARD_RESET, 1);
-}
-
-#ifdef CONFIG_SPL_OS_BOOT
-/*
- * lwmon5 specific implementation of spl_start_uboot()
- *
- * RETURN
- * 0 if booting into OS is selected (default)
- * 1 if booting into U-Boot is selected
- */
-int spl_start_uboot(void)
-{
-       char s[8];
-
-       env_init();
-       getenv_f("boot_os", s, sizeof(s));
-       if ((s != NULL) && (strcmp(s, "yes") == 0))
-               return 0;
-
-       return 1;
-}
-
-/*
- * This function is called from the SPL U-Boot version for
- * early init stuff, that needs to be done for OS (e.g. Linux)
- * booting. Doing it later in the real U-Boot would not work
- * in case that the SPL U-Boot boots Linux directly.
- */
-void spl_board_init(void)
-{
-       const gdc_regs *regs = board_get_regs();
-
-       /*
-        * Setup PFC registers, mainly for ethernet support
-        * later on in Linux
-        */
-       board_early_init_f();
-
-       /* enable the LSB transmitter */
-       gpio_write_bit(CONFIG_SYS_GPIO_LSB_ENABLE, 1);
-
-       /*
-        * Clear resets
-        */
-       mtsdr(SDR0_SRST1, 0x00000000);
-       mtsdr(SDR0_SRST0, 0x00000000);
-
-       /*
-        * Reset Lime controller
-        */
-       gpio_write_bit(CONFIG_SYS_GPIO_LIME_S, 1);
-       udelay(500);
-       gpio_write_bit(CONFIG_SYS_GPIO_LIME_RST, 1);
-
-       out_be32((void *)CONFIG_SYS_LIME_SDRAM_CLOCK, CONFIG_SYS_MB862xx_CCF);
-       udelay(300);
-       out_be32((void *)CONFIG_SYS_LIME_MMR, CONFIG_SYS_MB862xx_MMR);
-
-       while (regs->index) {
-               out_be32((void *)(CONFIG_SYS_LIME_BASE_0 + GC_DISP_BASE) +
-                        regs->index, regs->value);
-               regs++;
-       }
-
-       board_backlight_brightness(DEFAULT_BRIGHTNESS);
-}
-#endif
diff --git a/board/lwmon5/sdram.c b/board/lwmon5/sdram.c
deleted file mode 100644 (file)
index 5dfbb0b..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * (C) Copyright 2006
- * Sylvie Gohl,                    AMCC/IBM, gohl.sylvie@fr.ibm.com
- * Jacqueline Pira-Ferriol, AMCC/IBM, jpira-ferriol@fr.ibm.com
- * Thierry Roman,          AMCC/IBM, thierry_roman@fr.ibm.com
- * Alain Saurel,           AMCC/IBM, alain.saurel@fr.ibm.com
- * Robert Snyder,          AMCC/IBM, rob.snyder@fr.ibm.com
- *
- * (C) Copyright 2007-2013
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* define DEBUG for debugging output (obviously ;-)) */
-#if 0
-#define DEBUG
-#endif
-
-#include <common.h>
-#include <asm/processor.h>
-#include <asm/mmu.h>
-#include <asm/io.h>
-#include <asm/cache.h>
-#include <asm/ppc440.h>
-#include <watchdog.h>
-
-/*
- * This DDR2 setup code can dynamically setup the TLB entries for the DDR2 memory
- * region. Right now the cache should still be disabled in U-Boot because of the
- * EMAC driver, that need it's buffer descriptor to be located in non cached
- * memory.
- *
- * If at some time this restriction doesn't apply anymore, just define
- * CONFIG_4xx_DCACHE in the board config file and this code should setup
- * everything correctly.
- */
-#ifdef CONFIG_4xx_DCACHE
-#define MY_TLB_WORD2_I_ENABLE  0                       /* enable caching on SDRAM */
-#else
-#define MY_TLB_WORD2_I_ENABLE  TLB_WORD2_I_ENABLE      /* disable caching on SDRAM */
-#endif
-
-/*-----------------------------------------------------------------------------+
- * Prototypes
- *-----------------------------------------------------------------------------*/
-extern int denali_wait_for_dlllock(void);
-extern void denali_core_search_data_eye(void);
-extern void dcbz_area(u32 start_address, u32 num_bytes);
-
-static u32 is_ecc_enabled(void)
-{
-       u32 val;
-
-       mfsdram(DDR0_22, val);
-       val &= DDR0_22_CTRL_RAW_MASK;
-       if (val)
-               return 1;
-       else
-               return 0;
-}
-
-void board_add_ram_info(int use_default)
-{
-       PPC4xx_SYS_INFO board_cfg;
-       u32 val;
-
-       if (is_ecc_enabled())
-               puts(" (ECC");
-       else
-               puts(" (ECC not");
-
-       get_sys_info(&board_cfg);
-       printf(" enabled, %ld MHz", (board_cfg.freqPLB * 2) / 1000000);
-
-       mfsdram(DDR0_03, val);
-       val = DDR0_03_CASLAT_DECODE(val);
-       printf(", CL%d)", val);
-}
-
-#ifdef CONFIG_DDR_ECC
-static void wait_ddr_idle(void)
-{
-       /*
-        * Controller idle status cannot be determined for Denali
-        * DDR2 code. Just return here.
-        */
-}
-
-static void program_ecc(u32 start_address,
-                       u32 num_bytes,
-                       u32 tlb_word2_i_value)
-{
-       u32 val;
-       u32 current_addr = start_address;
-       u32 size;
-       int bytes_remaining;
-
-       sync();
-       wait_ddr_idle();
-
-       /*
-        * Because of 440EPx errata CHIP 11, we don't touch the last 256
-        * bytes of SDRAM.
-        */
-       bytes_remaining = num_bytes - CONFIG_SYS_MEM_TOP_HIDE;
-
-       /*
-        * We have to write the ECC bytes by zeroing and flushing in smaller
-        * steps, since the whole 256MByte takes too long for the external
-        * watchdog.
-        */
-       while (bytes_remaining > 0) {
-               size = min((64 << 20), bytes_remaining);
-
-               /* Write zero's to SDRAM */
-               dcbz_area(current_addr, size);
-
-               /* Write modified dcache lines back to memory */
-               clean_dcache_range(current_addr, current_addr + size);
-
-               current_addr += 64 << 20;
-               bytes_remaining -= 64 << 20;
-               WATCHDOG_RESET();
-       }
-
-       sync();
-       wait_ddr_idle();
-
-       /* Clear error status */
-       mfsdram(DDR0_00, val);
-       mtsdram(DDR0_00, val | DDR0_00_INT_ACK_ALL);
-
-       /* Set 'int_mask' parameter to functionnal value */
-       mfsdram(DDR0_01, val);
-       mtsdram(DDR0_01, ((val &~ DDR0_01_INT_MASK_MASK) | DDR0_01_INT_MASK_ALL_OFF));
-
-       sync();
-       wait_ddr_idle();
-}
-#endif
-
-/*************************************************************************
- *
- * initdram -- 440EPx's DDR controller is a DENALI Core
- *
- ************************************************************************/
-phys_size_t initdram (int board_type)
-{
-#if defined(CONFIG_SPL_BUILD) || !defined(CONFIG_LCD4_LWMON5)
-       /* CL=4 */
-       mtsdram(DDR0_02, 0x00000000);
-
-       mtsdram(DDR0_00, 0x0000190A);
-       mtsdram(DDR0_01, 0x01000000);
-       mtsdram(DDR0_03, 0x02040803); /* A suitable burst length was taken. CAS is right for our board */
-
-       mtsdram(DDR0_04, 0x0B030300);
-       mtsdram(DDR0_05, 0x02020308);
-       mtsdram(DDR0_06, 0x0003C812);
-       mtsdram(DDR0_07, 0x00090100);
-       mtsdram(DDR0_08, 0x03c80001);
-       mtsdram(DDR0_09, 0x00011D5F);
-       mtsdram(DDR0_10, 0x00000100);
-       mtsdram(DDR0_11, 0x000CC800);
-       mtsdram(DDR0_12, 0x00000003);
-       mtsdram(DDR0_14, 0x00000000);
-       mtsdram(DDR0_17, 0x1e000000);
-       mtsdram(DDR0_18, 0x1e1e1e1e);
-       mtsdram(DDR0_19, 0x1e1e1e1e);
-       mtsdram(DDR0_20, 0x0B0B0B0B);
-       mtsdram(DDR0_21, 0x0B0B0B0B);
-#ifdef CONFIG_DDR_ECC
-       mtsdram(DDR0_22, 0x00267F0B | DDR0_22_CTRL_RAW_ECC_ENABLE); /* enable ECC       */
-#else
-       mtsdram(DDR0_22, 0x00267F0B);
-#endif
-
-       mtsdram(DDR0_23, 0x01000000);
-       mtsdram(DDR0_24, 0x01010001);
-
-       mtsdram(DDR0_26, 0x2D93028A);
-       mtsdram(DDR0_27, 0x0784682B);
-
-       mtsdram(DDR0_28, 0x00000080);
-       mtsdram(DDR0_31, 0x00000000);
-       mtsdram(DDR0_42, 0x01000008);
-
-       mtsdram(DDR0_43, 0x050A0200);
-       mtsdram(DDR0_44, 0x00000005);
-       mtsdram(DDR0_02, 0x00000001); /* Activate the denali core */
-
-       denali_wait_for_dlllock();
-
-#if defined(CONFIG_DDR_DATA_EYE)
-       /* -----------------------------------------------------------+
-        * Perform data eye search if requested.
-        * ----------------------------------------------------------*/
-       program_tlb(0, CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MBYTES_SDRAM << 20,
-                   TLB_WORD2_I_ENABLE);
-       denali_core_search_data_eye();
-       remove_tlb(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MBYTES_SDRAM << 20);
-#endif
-
-       /*
-        * Program tlb entries for this size (dynamic)
-        */
-       program_tlb(0, CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MBYTES_SDRAM << 20,
-                   MY_TLB_WORD2_I_ENABLE);
-
-#if defined(CONFIG_DDR_ECC)
-#if defined(CONFIG_4xx_DCACHE)
-       /*
-        * If ECC is enabled, initialize the parity bits.
-        */
-       program_ecc(0, CONFIG_SYS_MBYTES_SDRAM << 20, 0);
-#else /* CONFIG_4xx_DCACHE */
-       /*
-        * Setup 2nd TLB with same physical address but different virtual address
-        * with cache enabled. This is done for fast ECC generation.
-        */
-       program_tlb(0, CONFIG_SYS_DDR_CACHED_ADDR, CONFIG_SYS_MBYTES_SDRAM << 20, 0);
-
-       /*
-        * If ECC is enabled, initialize the parity bits.
-        */
-       program_ecc(CONFIG_SYS_DDR_CACHED_ADDR, CONFIG_SYS_MBYTES_SDRAM << 20, 0);
-
-       /*
-        * Now after initialization (auto-calibration and ECC generation)
-        * remove the TLB entries with caches enabled and program again with
-        * desired cache functionality
-        */
-       remove_tlb(CONFIG_SYS_DDR_CACHED_ADDR, CONFIG_SYS_MBYTES_SDRAM << 20);
-#endif /* CONFIG_4xx_DCACHE */
-#endif /* CONFIG_DDR_ECC */
-
-       /*
-        * Clear possible errors resulting from data-eye-search.
-        * If not done, then we could get an interrupt later on when
-        * exceptions are enabled.
-        */
-       set_mcsr(get_mcsr());
-#endif /* CONFIG_SPL_BUILD */
-
-       return (CONFIG_SYS_MBYTES_SDRAM << 20);
-}
diff --git a/board/matrix_vision/mvblx/Kconfig b/board/matrix_vision/mvblx/Kconfig
deleted file mode 100644 (file)
index adbc20a..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_OMAP3_MVBLX
-
-config SYS_BOARD
-       default "mvblx"
-
-config SYS_VENDOR
-       default "matrix_vision"
-
-config SYS_CONFIG_NAME
-       default "omap3_mvblx"
-
-endif
diff --git a/board/matrix_vision/mvblx/MAINTAINERS b/board/matrix_vision/mvblx/MAINTAINERS
deleted file mode 100644 (file)
index 2f9a153..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-MVBLX BOARD
-M:     Michael Jones <michael.jones@matrix-vision.de>
-S:     Maintained
-F:     board/matrix_vision/mvblx/
-F:     include/configs/omap3_mvblx.h
-F:     configs/omap3_mvblx_defconfig
diff --git a/board/matrix_vision/mvblx/Makefile b/board/matrix_vision/mvblx/Makefile
deleted file mode 100644 (file)
index c056eba..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y += mvblx.o fpga.o
-obj-$(CONFIG_ID_EEPROM) += sys_eeprom.o
-
-ccflags-y += -Werror
diff --git a/board/matrix_vision/mvblx/config.mk b/board/matrix_vision/mvblx/config.mk
deleted file mode 100644 (file)
index de13072..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# (C) Copyright 2006
-# Texas Instruments, <www.ti.com>
-#
-# Beagle Board uses OMAP3 (ARM-CortexA8) cpu
-# see http://www.ti.com/ for more information on Texas Instruments
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-# Physical Address:
-# 8000'0000 (bank0)
-# A000/0000 (bank1)
-# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-
-# For use with external or internal boots.
-CONFIG_SYS_TEXT_BASE = 0x80008000
diff --git a/board/matrix_vision/mvblx/fpga.c b/board/matrix_vision/mvblx/fpga.c
deleted file mode 100644 (file)
index 7f9b245..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * (C) Copyright 2002
- * Rich Ireland, Enterasys Networks, rireland@enterasys.com.
- * Keith Outwater, keith_outwater@mvis.com.
- *
- * (C) Copyright 2011
- * Andre Schwarz, Matrix Vision GmbH, andre.schwarz@matrix-vision.de
- * Michael Jones, Matrix Vision GmbH, michael.jones@matrix-vision.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <ACEX1K.h>
-#include <command.h>
-#include <asm/gpio.h>
-#include <linux/byteorder/generic.h>
-#include "fpga.h"
-
-#ifdef FPGA_DEBUG
-#define fpga_debug(fmt, args...)      printf("%s: "fmt, __func__, ##args)
-#else
-#define fpga_debug(fmt, args...)
-#endif
-
-Altera_CYC2_Passive_Serial_fns altera_fns = {
-       fpga_null_fn,   /* Altera_pre_fn */
-       fpga_config_fn,
-       fpga_status_fn,
-       fpga_done_fn,
-       fpga_wr_fn,
-       fpga_null_fn,
-       fpga_null_fn,
-};
-
-Altera_desc cyclone2 = {
-       Altera_CYC2,
-       fast_passive_parallel,
-       Altera_EP3C5_SIZE,
-       (void *) &altera_fns,
-       NULL,
-       0
-};
-
-#define GPIO_RESET             43
-#define GPIO_DCLK              65
-#define GPIO_nSTATUS   157
-#define GPIO_CONF_DONE 158
-#define GPIO_nCONFIG   159
-#define GPIO_DATA0             54
-#define GPIO_DATA1             55
-#define GPIO_DATA2             56
-#define GPIO_DATA3             57
-#define GPIO_DATA4             58
-#define GPIO_DATA5             60
-#define GPIO_DATA6             61
-#define GPIO_DATA7             62
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* return FPGA_SUCCESS on success, else FPGA_FAIL
- */
-int mvblx_init_fpga(void)
-{
-       fpga_debug("Initializing FPGA interface\n");
-       fpga_init();
-       fpga_add(fpga_altera, &cyclone2);
-
-       if (gpio_request(GPIO_DCLK, "dclk") ||
-                       gpio_request(GPIO_nSTATUS, "nStatus") ||
-#ifndef CONFIG_SYS_FPGA_DONT_USE_CONF_DONE
-                       gpio_request(GPIO_CONF_DONE, "conf_done") ||
-#endif
-                       gpio_request(GPIO_nCONFIG, "nConfig") ||
-                       gpio_request(GPIO_DATA0, "data0") ||
-                       gpio_request(GPIO_DATA1, "data1") ||
-                       gpio_request(GPIO_DATA2, "data2") ||
-                       gpio_request(GPIO_DATA3, "data3") ||
-                       gpio_request(GPIO_DATA4, "data4") ||
-                       gpio_request(GPIO_DATA5, "data5") ||
-                       gpio_request(GPIO_DATA6, "data6") ||
-                       gpio_request(GPIO_DATA7, "data7")) {
-               printf("%s: error requesting GPIOs.", __func__);
-               return FPGA_FAIL;
-       }
-
-       /* set up outputs */
-       gpio_direction_output(GPIO_DCLK,  0);
-       gpio_direction_output(GPIO_nCONFIG, 0);
-       gpio_direction_output(GPIO_DATA0, 0);
-       gpio_direction_output(GPIO_DATA1, 0);
-       gpio_direction_output(GPIO_DATA2, 0);
-       gpio_direction_output(GPIO_DATA3, 0);
-       gpio_direction_output(GPIO_DATA4, 0);
-       gpio_direction_output(GPIO_DATA5, 0);
-       gpio_direction_output(GPIO_DATA6, 0);
-       gpio_direction_output(GPIO_DATA7, 0);
-
-       /* NB omap_free_gpio() resets to an input, so we can't
-        * free ie. nCONFIG, or else the FPGA would reset
-        * Q: presumably gpio_free() has the same effect?
-        */
-
-       /* set up inputs */
-       gpio_direction_input(GPIO_nSTATUS);
-#ifndef CONFIG_SYS_FPGA_DONT_USE_CONF_DONE
-       gpio_direction_input(GPIO_CONF_DONE);
-#endif
-
-       fpga_config_fn(0, 1, 0);
-       udelay(60);
-
-       return FPGA_SUCCESS;
-}
-
-int fpga_null_fn(int cookie)
-{
-       return 0;
-}
-
-int fpga_config_fn(int assert, int flush, int cookie)
-{
-       fpga_debug("SET config : %s=%d\n", assert ? "low" : "high", assert);
-       if (flush) {
-               gpio_set_value(GPIO_nCONFIG, !assert);
-               udelay(1);
-               gpio_set_value(GPIO_nCONFIG, assert);
-       }
-
-       return assert;
-}
-
-int fpga_done_fn(int cookie)
-{
-       int result = 0;
-
-       /* since revA of BLX, we will not get this signal. */
-       udelay(10);
-#ifdef CONFIG_SYS_FPGA_DONT_USE_CONF_DONE
-       fpga_debug("not waiting for CONF_DONE.");
-       result = 1;
-#else
-       fpga_debug("CONF_DONE check ... ");
-       if (gpio_get_value(GPIO_CONF_DONE))  {
-               fpga_debug("high\n");
-               result = 1;
-       } else
-               fpga_debug("low\n");
-       gpio_free(GPIO_CONF_DONE);
-#endif
-
-       return result;
-}
-
-int fpga_status_fn(int cookie)
-{
-       int result = 0;
-       fpga_debug("STATUS check ... ");
-
-       result = gpio_get_value(GPIO_nSTATUS);
-
-       if (result < 0)
-               fpga_debug("error\n");
-       else if (result > 0)
-               fpga_debug("high\n");
-       else
-               fpga_debug("low\n");
-
-       return result;
-}
-
-static inline int _write_fpga(u8 byte)
-{
-       gpio_set_value(GPIO_DATA0, byte & 0x01);
-       gpio_set_value(GPIO_DATA1, (byte >> 1) & 0x01);
-       gpio_set_value(GPIO_DATA2, (byte >> 2) & 0x01);
-       gpio_set_value(GPIO_DATA3, (byte >> 3) & 0x01);
-       gpio_set_value(GPIO_DATA4, (byte >> 4) & 0x01);
-       gpio_set_value(GPIO_DATA5, (byte >> 5) & 0x01);
-       gpio_set_value(GPIO_DATA6, (byte >> 6) & 0x01);
-       gpio_set_value(GPIO_DATA7, (byte >> 7) & 0x01);
-
-       /* clock */
-       gpio_set_value(GPIO_DCLK, 1);
-       udelay(1);
-       gpio_set_value(GPIO_DCLK, 0);
-       udelay(1);
-
-       return 0;
-}
-
-int fpga_wr_fn(const void *buf, size_t len, int flush, int cookie)
-{
-       unsigned char *data = (unsigned char *) buf;
-       int i;
-       int headerlen = len - cyclone2.size;
-
-       if (headerlen < 0)
-               return FPGA_FAIL;
-       else if (headerlen == sizeof(uint32_t)) {
-               const unsigned int fpgavers_len = 11; /* '0x' + 8 hex digits + \0 */
-               char fpgavers_str[fpgavers_len];
-               snprintf(fpgavers_str, fpgavers_len, "0x%08x",
-                               be32_to_cpup((uint32_t*)data));
-               setenv("fpgavers", fpgavers_str);
-       }
-
-       fpga_debug("fpga_wr: buf %p / size %d\n", buf, len);
-       for (i = headerlen; i < len; i++)
-               _write_fpga(data[i]);
-       fpga_debug("-%s\n", __func__);
-
-       return FPGA_SUCCESS;
-}
diff --git a/board/matrix_vision/mvblx/fpga.h b/board/matrix_vision/mvblx/fpga.h
deleted file mode 100644 (file)
index 411b039..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-/*
- * (C) Copyright 2002
- * Rich Ireland, Enterasys Networks, rireland@enterasys.com.
- * Keith Outwater, keith_outwater@mvis.com.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-extern int mvblx_init_fpga(void);
-
-extern int fpga_status_fn(int cookie);
-extern int fpga_config_fn(int assert, int flush, int cookie);
-extern int fpga_done_fn(int cookie);
-extern int fpga_wr_fn(const void *buf, size_t len, int flush, int cookie);
-extern int fpga_null_fn(int cookie);
diff --git a/board/matrix_vision/mvblx/mvblx.c b/board/matrix_vision/mvblx/mvblx.c
deleted file mode 100644 (file)
index c9d615b..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * MATRIX VISION GmbH mvBlueLYNX-X
- *
- * Derived from Beagle and Overo
- *
- * (C) Copyright 2004-2008
- * Texas Instruments, <www.ti.com>
- *
- * Author :
- *     Sunil Kumar <sunilsaini05@gmail.com>
- *     Shashi Ranjan <shashiranjanmca05@gmail.com>
- *
- * Derived from Beagle Board and 3430 SDP code by
- *     Richard Woodruff <r-woodruff2@ti.com>
- *     Syed Mohammed Khasim <khasim@ti.com>
- *
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <netdev.h>
-#include <twl4030.h>
-#include <asm/io.h>
-#include <asm/arch/mem.h>
-#include <asm/arch/mmc_host_def.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/gpio.h>
-#include <asm/mach-types.h>
-#include "mvblx.h"
-#include "fpga.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if defined(CONFIG_CMD_NET)
-static void setup_net_chip(void);
-#endif /* CONFIG_CMD_NET */
-
-/*
- * Routine: board_init
- * Description: Early hardware init.
- */
-int board_init(void)
-{
-       gpmc_init();    /* in SRAM or SDRAM, finish GPMC */
-       /* boot param addr */
-       gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
-
-       return 0;
-}
-
-/*
- * Routine: misc_init_r
- * Description: Configure board specific parts
- */
-int misc_init_r(void)
-{
-       printf("mvBlueLYNX-X\n");
-       if (get_cpu_family() == CPU_OMAP36XX)
-               setenv("mpurate", "1000");
-       else
-               setenv("mpurate", "600");
-
-       twl4030_power_init();
-
-#if defined(CONFIG_CMD_NET)
-       setup_net_chip();
-#endif /* CONFIG_CMD_NET */
-
-       mvblx_init_fpga();
-
-       mac_read_from_eeprom();
-
-       dieid_num_r();
-
-       return 0;
-}
-
-/*
- * Routine: set_muxconf_regs
- * Description: Setting up the configuration Mux registers specific to the
- *             hardware. Many pins need to be moved from protect to primary
- *             mode.
- */
-void set_muxconf_regs(void)
-{
-       MUX_MVBLX();
-}
-
-#ifdef CONFIG_GENERIC_MMC
-int board_mmc_init(bd_t *bis)
-{
-       omap_mmc_init(0, 0, 0, -1, -1);
-       omap_mmc_init(1, 0, 0, -1, -1);
-       return 0;
-}
-
-void board_mmc_power_init(void)
-{
-       twl4030_power_mmc_init(0);
-       twl4030_power_mmc_init(1);
-}
-#endif
-
-#if defined(CONFIG_CMD_NET)
-/*
- * Routine: setup_net_chip
- * Description: Setting up the configuration GPMC registers specific to the
- *             Ethernet hardware.
- */
-static void setup_net_chip(void)
-{
-       struct gpio *gpio5_base = (struct gpio *)OMAP34XX_GPIO5_BASE;
-       struct ctrl *ctrl_base = (struct ctrl *)OMAP34XX_CTRL_BASE;
-
-       /* Configure GPMC registers */
-       writel(NET_GPMC_CONFIG1, &gpmc_cfg->cs[0].config1);
-       writel(NET_GPMC_CONFIG2, &gpmc_cfg->cs[0].config2);
-       writel(NET_GPMC_CONFIG3, &gpmc_cfg->cs[0].config3);
-       writel(NET_GPMC_CONFIG4, &gpmc_cfg->cs[0].config4);
-       writel(NET_GPMC_CONFIG5, &gpmc_cfg->cs[0].config5);
-       writel(NET_GPMC_CONFIG6, &gpmc_cfg->cs[0].config6);
-       writel(NET_GPMC_CONFIG7, &gpmc_cfg->cs[0].config7);
-
-       /* Enable off mode for NWE in PADCONF_GPMC_NWE register */
-       writew(readw(&ctrl_base->gpmc_nwe) | 0x0E00, &ctrl_base->gpmc_nwe);
-       /* Enable off mode for NOE in PADCONF_GPMC_NADV_ALE register */
-       writew(readw(&ctrl_base->gpmc_noe) | 0x0E00, &ctrl_base->gpmc_noe);
-       /* Enable off mode for ALE in PADCONF_GPMC_NADV_ALE register */
-       writew(readw(&ctrl_base->gpmc_nadv_ale) | 0x0E00,
-               &ctrl_base->gpmc_nadv_ale);
-
-       /* Make GPIO 139 as output pin */
-       writel(readl(&gpio5_base->oe) & ~(GPIO11), &gpio5_base->oe);
-
-       /* Now send a pulse on the GPIO pin */
-       writel(GPIO11, &gpio5_base->setdataout);
-       udelay(1);
-       writel(GPIO11, &gpio5_base->cleardataout);
-       udelay(1);
-       writel(GPIO11, &gpio5_base->setdataout);
-}
-
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_SMC911X
-       rc = smc911x_initialize(0, CONFIG_SMC911X_BASE);
-#endif
-       return rc;
-}
-
-int overwrite_console(void)
-{
-       /* return true if console should be overwritten */
-       return 0;
-}
-
-#endif /* CONFIG_CMD_NET */
diff --git a/board/matrix_vision/mvblx/mvblx.h b/board/matrix_vision/mvblx/mvblx.h
deleted file mode 100644 (file)
index 6c1c752..0000000
+++ /dev/null
@@ -1,346 +0,0 @@
-/*
- * (C) Copyright 2008
- * Dirk Behme <dirk.behme@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#ifndef _MVBLX_H_
-#define _MVBLX_H_
-
-#include <asm/arch/sys_proto.h>
-
-const omap3_sysinfo sysinfo = {
-       DDR_DISCRETE,
-       "OMAP3 mvBlueLYNX-X camera",
-       "no NAND",
-};
-
-/*
- * IEN  - Input Enable
- * IDIS - Input Disable
- * PTD  - Pull type Down
- * PTU  - Pull type Up
- * DIS  - Pull type selection is inactive
- * EN   - Pull type selection is active
- * M0   - Mode 0
- * The commented string gives the final mux configuration for that pin
- */
-#define MUX_MVBLX() \
- /*SDRC*/\
-       MUX_VAL(CP(SDRC_D0),            (IEN  | PTD | DIS | M0)) /*SDRC_D0*/\
-       MUX_VAL(CP(SDRC_D1),            (IEN  | PTD | DIS | M0)) /*SDRC_D1*/\
-       MUX_VAL(CP(SDRC_D2),            (IEN  | PTD | DIS | M0)) /*SDRC_D2*/\
-       MUX_VAL(CP(SDRC_D3),            (IEN  | PTD | DIS | M0)) /*SDRC_D3*/\
-       MUX_VAL(CP(SDRC_D4),            (IEN  | PTD | DIS | M0)) /*SDRC_D4*/\
-       MUX_VAL(CP(SDRC_D5),            (IEN  | PTD | DIS | M0)) /*SDRC_D5*/\
-       MUX_VAL(CP(SDRC_D6),            (IEN  | PTD | DIS | M0)) /*SDRC_D6*/\
-       MUX_VAL(CP(SDRC_D7),            (IEN  | PTD | DIS | M0)) /*SDRC_D7*/\
-       MUX_VAL(CP(SDRC_D8),            (IEN  | PTD | DIS | M0)) /*SDRC_D8*/\
-       MUX_VAL(CP(SDRC_D9),            (IEN  | PTD | DIS | M0)) /*SDRC_D9*/\
-       MUX_VAL(CP(SDRC_D10),           (IEN  | PTD | DIS | M0)) /*SDRC_D10*/\
-       MUX_VAL(CP(SDRC_D11),           (IEN  | PTD | DIS | M0)) /*SDRC_D11*/\
-       MUX_VAL(CP(SDRC_D12),           (IEN  | PTD | DIS | M0)) /*SDRC_D12*/\
-       MUX_VAL(CP(SDRC_D13),           (IEN  | PTD | DIS | M0)) /*SDRC_D13*/\
-       MUX_VAL(CP(SDRC_D14),           (IEN  | PTD | DIS | M0)) /*SDRC_D14*/\
-       MUX_VAL(CP(SDRC_D15),           (IEN  | PTD | DIS | M0)) /*SDRC_D15*/\
-       MUX_VAL(CP(SDRC_D16),           (IEN  | PTD | DIS | M0)) /*SDRC_D16*/\
-       MUX_VAL(CP(SDRC_D17),           (IEN  | PTD | DIS | M0)) /*SDRC_D17*/\
-       MUX_VAL(CP(SDRC_D18),           (IEN  | PTD | DIS | M0)) /*SDRC_D18*/\
-       MUX_VAL(CP(SDRC_D19),           (IEN  | PTD | DIS | M0)) /*SDRC_D19*/\
-       MUX_VAL(CP(SDRC_D20),           (IEN  | PTD | DIS | M0)) /*SDRC_D20*/\
-       MUX_VAL(CP(SDRC_D21),           (IEN  | PTD | DIS | M0)) /*SDRC_D21*/\
-       MUX_VAL(CP(SDRC_D22),           (IEN  | PTD | DIS | M0)) /*SDRC_D22*/\
-       MUX_VAL(CP(SDRC_D23),           (IEN  | PTD | DIS | M0)) /*SDRC_D23*/\
-       MUX_VAL(CP(SDRC_D24),           (IEN  | PTD | DIS | M0)) /*SDRC_D24*/\
-       MUX_VAL(CP(SDRC_D25),           (IEN  | PTD | DIS | M0)) /*SDRC_D25*/\
-       MUX_VAL(CP(SDRC_D26),           (IEN  | PTD | DIS | M0)) /*SDRC_D26*/\
-       MUX_VAL(CP(SDRC_D27),           (IEN  | PTD | DIS | M0)) /*SDRC_D27*/\
-       MUX_VAL(CP(SDRC_D28),           (IEN  | PTD | DIS | M0)) /*SDRC_D28*/\
-       MUX_VAL(CP(SDRC_D29),           (IEN  | PTD | DIS | M0)) /*SDRC_D29*/\
-       MUX_VAL(CP(SDRC_D30),           (IEN  | PTD | DIS | M0)) /*SDRC_D30*/\
-       MUX_VAL(CP(SDRC_D31),           (IEN  | PTD | DIS | M0)) /*SDRC_D31*/\
-       MUX_VAL(CP(SDRC_CLK),           (IEN  | PTD | DIS | M0)) /*SDRC_CLK*/\
-       MUX_VAL(CP(SDRC_DQS0),          (IEN  | PTD | DIS | M0)) /*SDRC_DQS0*/\
-       MUX_VAL(CP(SDRC_DQS1),          (IEN  | PTD | DIS | M0)) /*SDRC_DQS1*/\
-       MUX_VAL(CP(SDRC_DQS2),          (IEN  | PTD | DIS | M0)) /*SDRC_DQS2*/\
-       MUX_VAL(CP(SDRC_DQS3),          (IEN  | PTD | DIS | M0)) /*SDRC_DQS3*/\
- /*GPMC*/\
-       MUX_VAL(CP(GPMC_A1),            (IDIS | PTU | EN  | M0)) /*GPMC_A1*/\
-       MUX_VAL(CP(GPMC_A2),            (IDIS | PTU | EN  | M0)) /*GPMC_A2*/\
-       MUX_VAL(CP(GPMC_A3),            (IDIS | PTU | EN  | M0)) /*GPMC_A3*/\
-       MUX_VAL(CP(GPMC_A4),            (IDIS | PTU | EN  | M0)) /*GPMC_A4*/\
-       MUX_VAL(CP(GPMC_A5),            (IDIS | PTU | EN  | M0)) /*GPMC_A5*/\
-       MUX_VAL(CP(GPMC_A6),            (IDIS | PTU | EN  | M0)) /*GPMC_A6*/\
-       MUX_VAL(CP(GPMC_A7),            (IDIS | PTU | EN  | M0)) /*GPMC_A7*/\
-       MUX_VAL(CP(GPMC_A8),            (IDIS | PTU | EN  | M4)) /*GPIO_41*/\
-       MUX_VAL(CP(GPMC_A9),            (IDIS | PTU | EN  | M4)) /*GPIO_42*/\
-       MUX_VAL(CP(GPMC_A10),           (IDIS | PTU | EN  | M4)) /*GPIO_43*/\
-       MUX_VAL(CP(GPMC_D0),            (IEN  | PTU | EN  | M0)) /*GPMC_D0*/\
-       MUX_VAL(CP(GPMC_D1),            (IEN  | PTU | EN  | M0)) /*GPMC_D1*/\
-       MUX_VAL(CP(GPMC_D2),            (IEN  | PTU | EN  | M0)) /*GPMC_D2*/\
-       MUX_VAL(CP(GPMC_D3),            (IEN  | PTU | EN  | M0)) /*GPMC_D3*/\
-       MUX_VAL(CP(GPMC_D4),            (IEN  | PTU | EN  | M0)) /*GPMC_D4*/\
-       MUX_VAL(CP(GPMC_D5),            (IEN  | PTU | EN  | M0)) /*GPMC_D5*/\
-       MUX_VAL(CP(GPMC_D6),            (IEN  | PTU | EN  | M0)) /*GPMC_D6*/\
-       MUX_VAL(CP(GPMC_D7),            (IEN  | PTU | EN  | M0)) /*GPMC_D7*/\
-       MUX_VAL(CP(GPMC_D8),            (IEN  | PTU | EN  | M0)) /*GPMC_D8*/\
-       MUX_VAL(CP(GPMC_D9),            (IEN  | PTU | EN  | M0)) /*GPMC_D9*/\
-       MUX_VAL(CP(GPMC_D10),           (IEN  | PTU | EN  | M0)) /*GPMC_D10*/\
-       MUX_VAL(CP(GPMC_D11),           (IEN  | PTU | EN  | M0)) /*GPMC_D11*/\
-       MUX_VAL(CP(GPMC_D12),           (IEN  | PTU | EN  | M0)) /*GPMC_D12*/\
-       MUX_VAL(CP(GPMC_D13),           (IEN  | PTU | EN  | M0)) /*GPMC_D13*/\
-       MUX_VAL(CP(GPMC_D14),           (IEN  | PTU | EN  | M0)) /*GPMC_D14*/\
-       MUX_VAL(CP(GPMC_D15),           (IEN  | PTU | EN  | M0)) /*GPMC_D15*/\
-       MUX_VAL(CP(GPMC_NCS0),          (IDIS | PTU | EN  | M0)) /*GPMC_nCS0*/\
-       MUX_VAL(CP(GPMC_NCS1),          (IDIS | PTU | EN  | M0)) /*GPMC_nCS1*/\
-       MUX_VAL(CP(GPMC_NCS2),          (IDIS | PTU | EN  | M0)) /*GPMC_nCS2*/\
-       MUX_VAL(CP(GPMC_NCS3),          (IEN  | PTU | EN  | M4)) /*GPIO54*/\
-       MUX_VAL(CP(GPMC_NCS4),          (IEN  | PTU | EN  | M4)) /*GPIO55*/\
-       MUX_VAL(CP(GPMC_NCS5),          (IEN  | PTU | EN  | M4)) /*GPIO56*/\
-       MUX_VAL(CP(GPMC_NCS6),          (IEN  | PTU | EN  | M4)) /*GPIO57*/\
-       MUX_VAL(CP(GPMC_NCS7),          (IEN  | PTU | EN  | M4)) /*GPIO58*/\
-       MUX_VAL(CP(GPMC_CLK),           (IDIS | PTU | EN | M0)) /*GPMC_CLK*/\
-       MUX_VAL(CP(GPMC_NADV_ALE),      (IDIS | PTD | DIS | M0)) /*GPMC_nADV_ALE*/\
-       MUX_VAL(CP(GPMC_NOE),           (IDIS | PTD | DIS | M0)) /*GPMC_nOE*/\
-       MUX_VAL(CP(GPMC_NWE),           (IDIS | PTD | DIS | M0)) /*GPMC_nWE*/\
-       MUX_VAL(CP(GPMC_NBE0_CLE),      (IEN  | PTU | EN  | M4)) /*GPIO60*/\
-       MUX_VAL(CP(GPMC_NBE1),          (IEN  | PTU | EN  | M4)) /*GPIO61*/\
-       MUX_VAL(CP(GPMC_NWP),           (IEN  | PTU | EN  | M4)) /*GPIO62*/\
-       MUX_VAL(CP(GPMC_WAIT0),         (IEN  | PTU | EN  | M0)) /*GPMC_WAIT0*/\
-       MUX_VAL(CP(GPMC_WAIT3),         (IDIS  | PTU | EN  | M4)) /*GPIO65*/\
- /*DSS*/\
-       MUX_VAL(CP(DSS_PCLK),           (IDIS | PTD | DIS | M0)) /*DSS_PCLK*/\
-       MUX_VAL(CP(DSS_HSYNC),          (IDIS | PTD | DIS | M0)) /*DSS_HSYNC*/\
-       MUX_VAL(CP(DSS_VSYNC),          (IDIS | PTD | DIS | M0)) /*DSS_VSYNC*/\
-       MUX_VAL(CP(DSS_ACBIAS),         (IDIS | PTD | DIS | M0)) /*DSS_ACBIAS*/\
-       MUX_VAL(CP(DSS_DATA0),          (IDIS | PTD | DIS | M4)) /*not_used*/\
-       MUX_VAL(CP(DSS_DATA1),          (IDIS | PTD | DIS | M4)) /*not_used*/\
-       MUX_VAL(CP(DSS_DATA2),          (IDIS | PTD | DIS | M4)) /*not_used*/\
-       MUX_VAL(CP(DSS_DATA3),          (IDIS | PTD | DIS | M4)) /*not_used*/\
-       MUX_VAL(CP(DSS_DATA4),          (IDIS | PTD | DIS | M4)) /*not_used*/\
-       MUX_VAL(CP(DSS_DATA5),          (IDIS | PTD | DIS | M4)) /*not_used*/\
-       MUX_VAL(CP(DSS_DATA6),          (IDIS | PTD | DIS | M0)) /*DSS_DATA6*/\
-       MUX_VAL(CP(DSS_DATA7),          (IDIS | PTD | DIS | M0)) /*DSS_DATA7*/\
-       MUX_VAL(CP(DSS_DATA8),          (IDIS | PTD | DIS | M0)) /*DSS_DATA8*/\
-       MUX_VAL(CP(DSS_DATA9),          (IDIS | PTD | DIS | M0)) /*DSS_DATA9*/\
-       MUX_VAL(CP(DSS_DATA10),         (IDIS | PTD | DIS | M0)) /*DSS_DATA10*/\
-       MUX_VAL(CP(DSS_DATA11),         (IDIS | PTD | DIS | M0)) /*DSS_DATA11*/\
-       MUX_VAL(CP(DSS_DATA12),         (IDIS | PTD | DIS | M0)) /*DSS_DATA12*/\
-       MUX_VAL(CP(DSS_DATA13),         (IDIS | PTD | DIS | M0)) /*DSS_DATA13*/\
-       MUX_VAL(CP(DSS_DATA14),         (IDIS | PTD | DIS | M0)) /*DSS_DATA14*/\
-       MUX_VAL(CP(DSS_DATA15),         (IDIS | PTD | DIS | M0)) /*DSS_DATA15*/\
-       MUX_VAL(CP(DSS_DATA16),         (IDIS | PTD | DIS | M0)) /*DSS_DATA16*/\
-       MUX_VAL(CP(DSS_DATA17),         (IDIS | PTD | DIS | M0)) /*DSS_DATA17*/\
-       MUX_VAL(CP(DSS_DATA18),         (IDIS | PTD | DIS | M3)) /*DSS_DATA0*/\
-       MUX_VAL(CP(DSS_DATA19),         (IDIS | PTD | DIS | M3)) /*DSS_DATA1*/\
-       MUX_VAL(CP(DSS_DATA20),         (IDIS | PTD | DIS | M3)) /*DSS_DATA2*/\
-       MUX_VAL(CP(DSS_DATA21),         (IDIS | PTD | DIS | M3)) /*DSS_DATA3*/\
-       MUX_VAL(CP(DSS_DATA22),         (IDIS | PTD | DIS | M3)) /*DSS_DATA4*/\
-       MUX_VAL(CP(DSS_DATA23),         (IDIS | PTD | DIS | M3)) /*DSS_DATA5*/\
- /*CAMERA*/\
-       MUX_VAL(CP(CAM_HS),             (IEN  | PTU | EN  | M0)) /*CAM_HS */\
-       MUX_VAL(CP(CAM_VS),             (IEN  | PTU | EN  | M0)) /*CAM_VS */\
-       MUX_VAL(CP(CAM_XCLKA),          (IDIS | PTD | DIS | M0)) /*CAM_XCLKA*/\
-       MUX_VAL(CP(CAM_PCLK),           (IEN  | PTU | EN  | M0)) /*CAM_PCLK*/\
-       MUX_VAL(CP(CAM_FLD),            (IDIS | PTD | DIS | M4)) /*GPIO_98*/\
-       MUX_VAL(CP(CAM_D0),             (IEN  | PTD | DIS | M0)) /*CAM_D0*/\
-       MUX_VAL(CP(CAM_D1),             (IEN  | PTD | DIS | M0)) /*CAM_D1*/\
-       MUX_VAL(CP(CAM_D2),             (IEN  | PTD | DIS | M0)) /*CAM_D2*/\
-       MUX_VAL(CP(CAM_D3),             (IEN  | PTD | DIS | M0)) /*CAM_D3*/\
-       MUX_VAL(CP(CAM_D4),             (IEN  | PTD | DIS | M0)) /*CAM_D4*/\
-       MUX_VAL(CP(CAM_D5),             (IEN  | PTD | DIS | M0)) /*CAM_D5*/\
-       MUX_VAL(CP(CAM_D6),             (IEN  | PTD | DIS | M0)) /*CAM_D6*/\
-       MUX_VAL(CP(CAM_D7),             (IEN  | PTD | DIS | M0)) /*CAM_D7*/\
-       MUX_VAL(CP(CAM_D8),             (IEN  | PTD | DIS | M0)) /*CAM_D8*/\
-       MUX_VAL(CP(CAM_D9),             (IEN  | PTD | DIS | M0)) /*CAM_D9*/\
-       MUX_VAL(CP(CAM_D10),            (IEN  | PTD | DIS | M0)) /*CAM_D10*/\
-       MUX_VAL(CP(CAM_D11),            (IEN  | PTD | DIS | M0)) /*CAM_D11*/\
-       MUX_VAL(CP(CAM_XCLKB),          (IDIS | PTD | DIS | M0)) /*CAM_XCLKB*/\
-       MUX_VAL(CP(CAM_WEN),            (IEN  | PTD | DIS | M4)) /*GPIO_167*/\
-       MUX_VAL(CP(CAM_STROBE),         (IDIS | PTD | DIS | M0)) /*CAM_STROBE*/\
-       MUX_VAL(CP(CSI2_DX0),           (IEN  | PTD | DIS | M0)) /*CSI2_DX0*/\
-       MUX_VAL(CP(CSI2_DY0),           (IEN  | PTD | DIS | M0)) /*CSI2_DY0*/\
-       MUX_VAL(CP(CSI2_DX1),           (IEN  | PTD | DIS | M0)) /*CSI2_DX1*/\
-       MUX_VAL(CP(CSI2_DY1),           (IEN  | PTD | DIS | M0)) /*CSI2_DY1*/\
- /*Audio Interface */\
-       MUX_VAL(CP(MCBSP2_FSX),         (IEN  | PTD | DIS | M0)) /*McBSP2_FSX*/\
-       MUX_VAL(CP(MCBSP2_CLKX),        (IEN  | PTD | DIS | M0)) /*McBSP2_CLKX*/\
-       MUX_VAL(CP(MCBSP2_DR),          (IEN  | PTD | DIS | M0)) /*McBSP2_DR*/\
-       MUX_VAL(CP(MCBSP2_DX),          (IDIS | PTD | DIS | M0)) /*McBSP2_DX*/\
- /*Expansion card 1*/\
-       MUX_VAL(CP(MMC1_CLK),           (IDIS | PTU | EN  | M0)) /*MMC1_CLK*/\
-       MUX_VAL(CP(MMC1_CMD),           (IEN  | PTU | EN  | M0)) /*MMC1_CMD*/\
-       MUX_VAL(CP(MMC1_DAT0),          (IEN  | PTU | EN  | M0)) /*MMC1_DAT0*/\
-       MUX_VAL(CP(MMC1_DAT1),          (IEN  | PTU | EN  | M0)) /*MMC1_DAT1*/\
-       MUX_VAL(CP(MMC1_DAT2),          (IEN  | PTU | EN  | M0)) /*MMC1_DAT2*/\
-       MUX_VAL(CP(MMC1_DAT3),          (IEN  | PTU | EN  | M0)) /*MMC1_DAT3*/\
-       MUX_VAL(CP(MMC1_DAT4),          (IDIS  | PTU | DIS  | M4)) /*GPIO_?*/\
-       MUX_VAL(CP(MMC1_DAT5),          (IDIS  | PTU | DIS  | M4)) /*GPIO_?*/\
-       MUX_VAL(CP(MMC1_DAT6),          (IDIS  | PTU | DIS  | M4)) /*GPIO_?*/\
-       MUX_VAL(CP(MMC1_DAT7),          (IEN  | PTU | DIS  | M7)) /*GPIO_129 disabled*/\
- /*Expansion card 2 */\
-       MUX_VAL(CP(MMC2_CLK),           (IEN  | PTU | DIS  | M0)) /*MMC2_CLK*/\
-       MUX_VAL(CP(MMC2_CMD),           (IEN  | PTU | DIS  | M0)) /*MMC2_CMD*/\
-       MUX_VAL(CP(MMC2_DAT0),          (IEN  | PTU | DIS  | M0)) /*MMC2_DAT0*/\
-       MUX_VAL(CP(MMC2_DAT1),          (IEN  | PTU | DIS  | M0)) /*MMC2_DAT1*/\
-       MUX_VAL(CP(MMC2_DAT2),          (IEN  | PTU | DIS  | M0)) /*MMC2_DAT2*/\
-       MUX_VAL(CP(MMC2_DAT3),          (IEN  | PTU | DIS  | M0)) /*MMC2_DAT3*/\
-       MUX_VAL(CP(MMC2_DAT4),          (IDIS  | PTU | DIS  | M4)) /*GPIO_136*/\
-       MUX_VAL(CP(MMC2_DAT5),          (IEN  | PTU | EN  | M4)) /*GPIO_137*/\
-       MUX_VAL(CP(MMC2_DAT6),          (IDIS  | PTU | DIS  | M4)) /*GPIO_138*/\
-       MUX_VAL(CP(MMC2_DAT7),          (IEN  | PTU | EN  | M4)) /*GPIO_139*/\
- /*Bluetooth*/\
-       MUX_VAL(CP(MCBSP3_DX),          (IDIS | PTD | DIS | M1)) /*UART2_CTS*/\
-       MUX_VAL(CP(MCBSP3_DR),          (IDIS | PTD | DIS | M1)) /*UART2_RTS*/\
-       MUX_VAL(CP(MCBSP3_CLKX),        (IDIS | PTD | DIS | M1)) /*UART2_TX*/\
-       MUX_VAL(CP(MCBSP3_FSX),         (IDIS | PTD | DIS | M1)) /*UART2_RX*/\
- /*Modem Interface */\
-       MUX_VAL(CP(UART1_TX),           (IDIS | PTD | DIS | M0)) /*UART1_TX*/\
-       MUX_VAL(CP(UART1_RTS),          (IDIS | PTD | DIS | M4)) /*GPIO_149*/ \
-       MUX_VAL(CP(UART1_CTS),          (IEN | PTU | EN | M4)) /*GPIO_150*/ \
-       MUX_VAL(CP(UART1_RX),           (IEN  | PTD | DIS | M0)) /*UART1_RX*/\
-       MUX_VAL(CP(MCBSP1_CLKR),        (IDIS | PTD | DIS | M4)) /*GPIO_156*/\
-       MUX_VAL(CP(MCBSP1_FSR),         (IEN | PTU | EN  | M4)) /*GPIO_157*/\
-       MUX_VAL(CP(MCBSP1_DX),          (IEN | PTU | DIS | M4)) /*GPIO_158 1-wire */\
-       MUX_VAL(CP(MCBSP1_DR),          (IDIS | PTD | DIS | M4)) /*GPIO_159*/\
-       MUX_VAL(CP(MCBSP_CLKS),         (IEN  | PTU | DIS | M0)) /*McBSP_CLKS*/\
-       MUX_VAL(CP(MCBSP1_FSX),         (IDIS | PTD | DIS | M4)) /*GPIO_161*/\
-       MUX_VAL(CP(MCBSP1_CLKX),        (IDIS | PTD | DIS | M4)) /*GPIO_162*/\
- /*Serial Interface*/\
-       MUX_VAL(CP(UART3_CTS_RCTX),     (IEN  | PTD | EN  | M0)) /*UART3_CTS_RCTX*/\
-       MUX_VAL(CP(UART3_RTS_SD),       (IDIS | PTD | DIS | M0)) /*UART3_RTS_SD */\
-       MUX_VAL(CP(UART3_RX_IRRX),      (IEN  | PTD | DIS | M0)) /*UART3_RX_IRRX*/\
-       MUX_VAL(CP(UART3_TX_IRTX),      (IDIS | PTD | DIS | M0)) /*UART3_TX_IRTX*/\
-       MUX_VAL(CP(HSUSB0_CLK),         (IEN  | PTD | DIS | M0)) /*HSUSB0_CLK*/\
-       MUX_VAL(CP(HSUSB0_STP),         (IDIS | PTU | EN  | M0)) /*HSUSB0_STP*/\
-       MUX_VAL(CP(HSUSB0_DIR),         (IEN  | PTD | DIS | M0)) /*HSUSB0_DIR*/\
-       MUX_VAL(CP(HSUSB0_NXT),         (IEN  | PTD | DIS | M0)) /*HSUSB0_NXT*/\
-       MUX_VAL(CP(HSUSB0_DATA0),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA0*/\
-       MUX_VAL(CP(HSUSB0_DATA1),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA1*/\
-       MUX_VAL(CP(HSUSB0_DATA2),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA2*/\
-       MUX_VAL(CP(HSUSB0_DATA3),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA3*/\
-       MUX_VAL(CP(HSUSB0_DATA4),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA4*/\
-       MUX_VAL(CP(HSUSB0_DATA5),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA5*/\
-       MUX_VAL(CP(HSUSB0_DATA6),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA6*/\
-       MUX_VAL(CP(HSUSB0_DATA7),       (IEN  | PTD | DIS | M0)) /*HSUSB0_DATA7*/\
-       MUX_VAL(CP(I2C1_SCL),           (IEN  | PTU | EN  | M0)) /*I2C1_SCL*/\
-       MUX_VAL(CP(I2C1_SDA),           (IEN  | PTU | EN  | M0)) /*I2C1_SDA*/\
-       MUX_VAL(CP(I2C2_SCL),           (IEN  | PTU | EN  | M0)) /*I2C2_SCL*/\
-       MUX_VAL(CP(I2C2_SDA),           (IEN  | PTU | EN  | M0)) /*I2C2_SDA*/\
-       MUX_VAL(CP(I2C3_SCL),           (IEN  | PTU | EN  | M0)) /*I2C3_SCL*/\
-       MUX_VAL(CP(I2C3_SDA),           (IEN  | PTU | EN  | M0)) /*I2C3_SDA*/\
-       MUX_VAL(CP(I2C4_SCL),           (IEN  | PTU | EN  | M0)) /*I2C4_SCL*/\
-       MUX_VAL(CP(I2C4_SDA),           (IEN  | PTU | EN  | M0)) /*I2C4_SDA*/\
-       MUX_VAL(CP(HDQ_SIO),            (IDIS | PTU | EN  | M4)) /*GPIO_170*/\
-       MUX_VAL(CP(MCSPI1_CLK),         (IDIS  | PTU | DIS  | M4)) /*GPIO_171*/\
-       MUX_VAL(CP(MCSPI1_SIMO),        (IDIS  | PTU | DIS  | M4)) /*GPIO_172*/\
-       MUX_VAL(CP(MCSPI1_SOMI),        (IDIS  | PTU | DIS  | M4)) /*GPIO_173*/\
-       MUX_VAL(CP(MCSPI1_CS0),         (IDIS  | PTD | DIS  | M4)) /*GPIO_174*/\
-       MUX_VAL(CP(MCSPI1_CS3),         (IDIS  | PTU | DIS | M4)) /*GPIO_177*/\
- /* USB EHCI (port 2) not used */\
-       MUX_VAL(CP(MCSPI2_CLK),         (IEN  | PTD | DIS | M0)) /*McSPI2_CLK*/\
-       MUX_VAL(CP(MCSPI2_SIMO),        (IEN  | PTD | DIS | M0)) /*McSPI2_SIMO*/\
-       MUX_VAL(CP(MCSPI2_SOMI),        (IEN  | PTD | DIS | M0)) /*McSPI2_SOMI*/\
-       MUX_VAL(CP(MCSPI2_CS0),         (IEN  | PTD | EN  | M0)) /*McSPI2_CS0*/\
-       MUX_VAL(CP(MCSPI2_CS1),         (IEN  | PTD | EN  | M0)) /*McSPI2_CS1*/\
- /*Control and debug */\
-       MUX_VAL(CP(SYS_32K),            (IEN  | PTD | DIS | M0)) /*SYS_32K*/\
-       MUX_VAL(CP(SYS_CLKREQ),         (IEN  | PTD | DIS | M0)) /*SYS_CLKREQ*/\
-       MUX_VAL(CP(SYS_NIRQ),           (IEN  | PTU | EN  | M0)) /*SYS_nIRQ*/\
-       MUX_VAL(CP(SYS_BOOT0),          (IDIS | PTD | DIS | M3)) /*DSS_DATA18*/\
-       MUX_VAL(CP(SYS_BOOT1),          (IDIS | PTD | DIS | M3)) /*DSS_DATA19*/\
-       MUX_VAL(CP(SYS_BOOT2),          (IEN  | PTD | DIS | M0)) /*GPIO_4*/\
-       MUX_VAL(CP(SYS_BOOT3),          (IDIS | PTD | DIS | M3)) /*DSS_DATA20*/\
-       MUX_VAL(CP(SYS_BOOT4),          (IDIS | PTD | DIS | M3)) /*DSS_DATA21*/\
-       MUX_VAL(CP(SYS_BOOT5),          (IDIS | PTD | DIS | M3)) /*DSS_DATA22*/\
-       MUX_VAL(CP(SYS_BOOT6),          (IDIS | PTD | DIS | M3)) /*DSS_DATA23*/ \
-       MUX_VAL(CP(SYS_OFF_MODE),       (IEN  | PTD | DIS | M0)) /*SYS_OFF_MODE*/\
-       MUX_VAL(CP(SYS_CLKOUT1),        (IDIS  | PTD | DIS | M4)) /*GPIO_10*/\
-       MUX_VAL(CP(SYS_CLKOUT2),        (IEN  | PTD | DIS  | M0)) /*SYS_CLKOUT2*/\
- /* USB EHCI (port 1) */\
-       MUX_VAL(CP(ETK_CLK_ES2),        (IDIS | PTU | EN  | M3)) /*HSUSB1_STP*/\
-       MUX_VAL(CP(ETK_CTL_ES2),        (IDIS | PTU | DIS | M3)) /*HSUSB1_CLK*/\
-       MUX_VAL(CP(ETK_D0_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DATA0*/\
-       MUX_VAL(CP(ETK_D1_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DATA1*/\
-       MUX_VAL(CP(ETK_D2_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DATA2*/\
-       MUX_VAL(CP(ETK_D3_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DATA7*/\
-       MUX_VAL(CP(ETK_D4_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DATA4*/\
-       MUX_VAL(CP(ETK_D5_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DATA5*/\
-       MUX_VAL(CP(ETK_D6_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DATA6*/\
-       MUX_VAL(CP(ETK_D7_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DATA3*/\
-       MUX_VAL(CP(ETK_D8_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_DIR*/\
-       MUX_VAL(CP(ETK_D9_ES2),         (IEN  | PTU | DIS | M3)) /*HSUSB1_NXT*/\
-       MUX_VAL(CP(ETK_D10_ES2),        (IEN | PTU | EN | M4)) /*GPIO_24*/\
-       MUX_VAL(CP(ETK_D11_ES2),        (IDIS | PTU | DIS | M4)) /*GPIO_25*/\
-       MUX_VAL(CP(ETK_D12_ES2),        (IEN  | PTU | DIS | M4)) /*GPIO_26*/\
-       MUX_VAL(CP(ETK_D13_ES2),        (IEN  | PTU | DIS | M4)) /*GPIO_27*/\
-       MUX_VAL(CP(ETK_D14_ES2),        (IEN  | PTU | DIS | M4)) /*GPIO_28*/\
-       MUX_VAL(CP(ETK_D15_ES2),        (IEN  | PTU | DIS | M4)) /*GPIO_29*/\
- /*Die to Die */\
-       MUX_VAL(CP(D2D_MCAD1),          (IEN  | PTD | EN  | M0)) /*d2d_mcad1*/\
-       MUX_VAL(CP(D2D_MCAD2),          (IEN  | PTD | EN  | M0)) /*d2d_mcad2*/\
-       MUX_VAL(CP(D2D_MCAD3),          (IEN  | PTD | EN  | M0)) /*d2d_mcad3*/\
-       MUX_VAL(CP(D2D_MCAD4),          (IEN  | PTD | EN  | M0)) /*d2d_mcad4*/\
-       MUX_VAL(CP(D2D_MCAD5),          (IEN  | PTD | EN  | M0)) /*d2d_mcad5*/\
-       MUX_VAL(CP(D2D_MCAD6),          (IEN  | PTD | EN  | M0)) /*d2d_mcad6*/\
-       MUX_VAL(CP(D2D_MCAD7),          (IEN  | PTD | EN  | M0)) /*d2d_mcad7*/\
-       MUX_VAL(CP(D2D_MCAD8),          (IEN  | PTD | EN  | M0)) /*d2d_mcad8*/\
-       MUX_VAL(CP(D2D_MCAD9),          (IEN  | PTD | EN  | M0)) /*d2d_mcad9*/\
-       MUX_VAL(CP(D2D_MCAD10),         (IEN  | PTD | EN  | M0)) /*d2d_mcad10*/\
-       MUX_VAL(CP(D2D_MCAD11),         (IEN  | PTD | EN  | M0)) /*d2d_mcad11*/\
-       MUX_VAL(CP(D2D_MCAD12),         (IEN  | PTD | EN  | M0)) /*d2d_mcad12*/\
-       MUX_VAL(CP(D2D_MCAD13),         (IEN  | PTD | EN  | M0)) /*d2d_mcad13*/\
-       MUX_VAL(CP(D2D_MCAD14),         (IEN  | PTD | EN  | M0)) /*d2d_mcad14*/\
-       MUX_VAL(CP(D2D_MCAD15),         (IEN  | PTD | EN  | M0)) /*d2d_mcad15*/\
-       MUX_VAL(CP(D2D_MCAD16),         (IEN  | PTD | EN  | M0)) /*d2d_mcad16*/\
-       MUX_VAL(CP(D2D_MCAD17),         (IEN  | PTD | EN  | M0)) /*d2d_mcad17*/\
-       MUX_VAL(CP(D2D_MCAD18),         (IEN  | PTD | EN  | M0)) /*d2d_mcad18*/\
-       MUX_VAL(CP(D2D_MCAD19),         (IEN  | PTD | EN  | M0)) /*d2d_mcad19*/\
-       MUX_VAL(CP(D2D_MCAD20),         (IEN  | PTD | EN  | M0)) /*d2d_mcad20*/\
-       MUX_VAL(CP(D2D_MCAD21),         (IEN  | PTD | EN  | M0)) /*d2d_mcad21*/\
-       MUX_VAL(CP(D2D_MCAD22),         (IEN  | PTD | EN  | M0)) /*d2d_mcad22*/\
-       MUX_VAL(CP(D2D_MCAD23),         (IEN  | PTD | EN  | M0)) /*d2d_mcad23*/\
-       MUX_VAL(CP(D2D_MCAD24),         (IEN  | PTD | EN  | M0)) /*d2d_mcad24*/\
-       MUX_VAL(CP(D2D_MCAD25),         (IEN  | PTD | EN  | M0)) /*d2d_mcad25*/\
-       MUX_VAL(CP(D2D_MCAD26),         (IEN  | PTD | EN  | M0)) /*d2d_mcad26*/\
-       MUX_VAL(CP(D2D_MCAD27),         (IEN  | PTD | EN  | M0)) /*d2d_mcad27*/\
-       MUX_VAL(CP(D2D_MCAD28),         (IEN  | PTD | EN  | M0)) /*d2d_mcad28*/\
-       MUX_VAL(CP(D2D_MCAD29),         (IEN  | PTD | EN  | M0)) /*d2d_mcad29*/\
-       MUX_VAL(CP(D2D_MCAD30),         (IEN  | PTD | EN  | M0)) /*d2d_mcad30*/\
-       MUX_VAL(CP(D2D_MCAD31),         (IEN  | PTD | EN  | M0)) /*d2d_mcad31*/\
-       MUX_VAL(CP(D2D_MCAD32),         (IEN  | PTD | EN  | M0)) /*d2d_mcad32*/\
-       MUX_VAL(CP(D2D_MCAD33),         (IEN  | PTD | EN  | M0)) /*d2d_mcad33*/\
-       MUX_VAL(CP(D2D_MCAD34),         (IEN  | PTD | EN  | M0)) /*d2d_mcad34*/\
-       MUX_VAL(CP(D2D_MCAD35),         (IEN  | PTD | EN  | M0)) /*d2d_mcad35*/\
-       MUX_VAL(CP(D2D_MCAD36),         (IEN  | PTD | EN  | M0)) /*d2d_mcad36*/\
-       MUX_VAL(CP(D2D_CLK26MI),        (IEN  | PTD | DIS | M0)) /*d2d_clk26mi*/\
-       MUX_VAL(CP(D2D_NRESPWRON),      (IEN  | PTD | EN  | M0)) /*d2d_nrespwron*/\
-       MUX_VAL(CP(D2D_NRESWARM),       (IEN  | PTU | EN  | M0)) /*d2d_nreswarm */\
-       MUX_VAL(CP(D2D_ARM9NIRQ),       (IEN  | PTD | DIS | M0)) /*d2d_arm9nirq */\
-       MUX_VAL(CP(D2D_UMA2P6FIQ),      (IEN  | PTD | DIS | M0)) /*d2d_uma2p6fiq*/\
-       MUX_VAL(CP(D2D_SPINT),          (IEN  | PTD | EN  | M0)) /*d2d_spint*/\
-       MUX_VAL(CP(D2D_FRINT),          (IEN  | PTD | EN  | M0)) /*d2d_frint*/\
-       MUX_VAL(CP(D2D_DMAREQ0),        (IEN  | PTD | DIS | M0)) /*d2d_dmareq0*/\
-       MUX_VAL(CP(D2D_DMAREQ1),        (IEN  | PTD | DIS | M0)) /*d2d_dmareq1*/\
-       MUX_VAL(CP(D2D_DMAREQ2),        (IEN  | PTD | DIS | M0)) /*d2d_dmareq2*/\
-       MUX_VAL(CP(D2D_DMAREQ3),        (IEN  | PTD | DIS | M0)) /*d2d_dmareq3*/\
-       MUX_VAL(CP(D2D_N3GTRST),        (IEN  | PTD | DIS | M0)) /*d2d_n3gtrst*/\
-       MUX_VAL(CP(D2D_N3GTDI),         (IEN  | PTD | DIS | M0)) /*d2d_n3gtdi*/\
-       MUX_VAL(CP(D2D_N3GTDO),         (IEN  | PTD | DIS | M0)) /*d2d_n3gtdo*/\
-       MUX_VAL(CP(D2D_N3GTMS),         (IEN  | PTD | DIS | M0)) /*d2d_n3gtms*/\
-       MUX_VAL(CP(D2D_N3GTCK),         (IEN  | PTD | DIS | M0)) /*d2d_n3gtck*/\
-       MUX_VAL(CP(D2D_N3GRTCK),        (IEN  | PTD | DIS | M0)) /*d2d_n3grtck*/\
-       MUX_VAL(CP(D2D_MSTDBY),         (IEN  | PTU | EN  | M0)) /*d2d_mstdby*/\
-       MUX_VAL(CP(D2D_SWAKEUP),        (IEN  | PTD | EN  | M0)) /*d2d_swakeup*/\
-       MUX_VAL(CP(D2D_IDLEREQ),        (IEN  | PTD | DIS | M0)) /*d2d_idlereq*/\
-       MUX_VAL(CP(D2D_IDLEACK),        (IEN  | PTU | EN  | M0)) /*d2d_idleack*/\
-       MUX_VAL(CP(D2D_MWRITE),         (IEN  | PTD | DIS | M0)) /*d2d_mwrite*/\
-       MUX_VAL(CP(D2D_SWRITE),         (IEN  | PTD | DIS | M0)) /*d2d_swrite*/\
-       MUX_VAL(CP(D2D_MREAD),          (IEN  | PTD | DIS | M0)) /*d2d_mread*/\
-       MUX_VAL(CP(D2D_SREAD),          (IEN  | PTD | DIS | M0)) /*d2d_sread*/\
-       MUX_VAL(CP(D2D_MBUSFLAG),       (IEN  | PTD | DIS | M0)) /*d2d_mbusflag*/\
-       MUX_VAL(CP(D2D_SBUSFLAG),       (IEN  | PTD | DIS | M0)) /*d2d_sbusflag*/\
-       MUX_VAL(CP(SDRC_CKE0),          (IDIS | PTU | EN  | M0)) /*sdrc_cke0*/\
-       MUX_VAL(CP(SDRC_CKE1),          (IDIS | PTU | EN  | M0)) /*sdrc_cke1*/
-
-#endif
diff --git a/board/matrix_vision/mvblx/sys_eeprom.c b/board/matrix_vision/mvblx/sys_eeprom.c
deleted file mode 100644 (file)
index db42987..0000000
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * Copyright 2006, 2008-2009, 2011 Freescale Semiconductor
- * York Sun (yorksun@freescale.com)
- * Haiying Wang (haiying.wang@freescale.com)
- * Timur Tabi (timur@freescale.com)
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <i2c.h>
-
-/* #define DEBUG */
-
-/*
- * static eeprom: EEPROM layout
- */
-static struct __attribute__ ((__packed__)) eeprom {
-       u8 id[16];              /* 0x01 - 0x0F Type e.g. 100wG-5111 */
-       u8 sn[10];              /* 0x10 - 0x19 Serial Number */
-       u8 date[6];             /* 0x1A - 0x1F Build Date */
-       u8 mac[6];              /* 0x20 - 0x25 MAC address  */
-       u8 reserved[10];/* 0x26 - 0x2f reserved */
-       u32 crc;        /* x+1         CRC32 checksum */
-} e;
-
-/* Set to 1 if we've read EEPROM into memory */
-static int has_been_read;
-
-/**
- * show_eeprom - display the contents of the EEPROM
- */
-static void show_eeprom(void)
-{
-       unsigned int crc;
-       char safe_string[16];
-
-#ifdef DEBUG
-       int i;
-#endif
-       u8 *p;
-
-       /* ID */
-       strncpy(safe_string, (char *)e.id, sizeof(e.id));
-       safe_string[sizeof(e.id)-1] = 0;
-       printf("ID: mvBlueLYNX-X%s\n", safe_string);
-
-       /* Serial number */
-       strncpy(safe_string, (char *)e.sn, sizeof(e.sn));
-       safe_string[sizeof(e.sn)-1] = 0;
-       printf("SN: %s\n", safe_string);
-
-       /* Build date, BCD date values, as YYMMDDhhmmss */
-       printf("Build date: 20%02x/%02x/%02x %02x:%02x:%02x %s\n",
-               e.date[0], e.date[1], e.date[2],
-               e.date[3] & 0x7F, e.date[4], e.date[5],
-               e.date[3] & 0x80 ? "PM" : "");
-
-       /* Show MAC address  */
-       p = e.mac;
-       printf("Eth: %02x:%02x:%02x:%02x:%02x:%02x\n",
-               p[0], p[1], p[2], p[3], p[4], p[5]);
-
-       crc = crc32(0, (void *)&e, sizeof(e) - 4);
-
-       if (crc == be32_to_cpu(e.crc))
-               printf("CRC: %08x\n", be32_to_cpu(e.crc));
-       else
-               printf("CRC: %08x (should be %08x)\n", be32_to_cpu(e.crc), crc);
-
-#ifdef DEBUG
-       printf("EEPROM dump: (0x%x bytes)\n", sizeof(e));
-       for (i = 0; i < sizeof(e); i++) {
-               if ((i % 16) == 0)
-                       printf("%02X: ", i);
-               printf("%02X ", ((u8 *)&e)[i]);
-               if (((i % 16) == 15) || (i == sizeof(e) - 1))
-                       printf("\n");
-       }
-#endif
-}
-
-/**
- * read_eeprom - read the EEPROM into memory
- */
-static int read_eeprom(void)
-{
-       int ret;
-#ifdef CONFIG_SYS_EEPROM_BUS_NUM
-       unsigned int bus;
-#endif
-
-       if (has_been_read)
-               return 0;
-
-#ifdef CONFIG_SYS_EEPROM_BUS_NUM
-       bus = i2c_get_bus_num();
-       i2c_set_bus_num(CONFIG_SYS_EEPROM_BUS_NUM);
-#endif
-
-       ret = eeprom_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0,
-               (uchar *)&e, sizeof(e));
-
-#ifdef CONFIG_SYS_EEPROM_BUS_NUM
-       i2c_set_bus_num(bus);
-#endif
-
-#ifdef DEBUG
-       show_eeprom();
-#endif
-
-       has_been_read = (ret == 0) ? 1 : 0;
-
-       return ret;
-}
-
-/**
- *  update_crc - update the CRC
- *
- *  This function should be called after each update to the EEPROM structure,
- *  to make sure the CRC is always correct.
- */
-static void update_crc(void)
-{
-       u32 crc;
-
-       crc = crc32(0, (void *)&e, sizeof(e) - 4);
-       e.crc = cpu_to_be32(crc);
-}
-
-/**
- * prog_eeprom - write the EEPROM from memory
- */
-static int prog_eeprom(void)
-{
-       int ret = 0;
-#ifdef CONFIG_SYS_EEPROM_BUS_NUM
-       unsigned int bus;
-#endif
-
-       update_crc();
-
-#ifdef CONFIG_SYS_EEPROM_BUS_NUM
-       bus = i2c_get_bus_num();
-       i2c_set_bus_num(CONFIG_SYS_EEPROM_BUS_NUM);
-#endif
-
-       ret = eeprom_write(CONFIG_SYS_I2C_EEPROM_ADDR, 0,
-               (uchar *)&e, sizeof(e));
-
-       if (!ret) {
-               /* Verify the write by reading back the EEPROM and comparing */
-               struct eeprom e2;
-#ifdef DEBUG
-               printf("%s verifying...\n", __func__);
-#endif
-               ret = eeprom_read(CONFIG_SYS_I2C_EEPROM_ADDR, 0,
-                       (uchar *)&e2, sizeof(e2));
-
-               if (!ret && memcmp(&e, &e2, sizeof(e)))
-                       ret = -1;
-       }
-
-#ifdef CONFIG_SYS_EEPROM_BUS_NUM
-       i2c_set_bus_num(bus);
-#endif
-
-       if (ret) {
-               printf("Programming failed.\n");
-               has_been_read = 0;
-               return -1;
-       }
-
-       printf("Programming passed.\n");
-       return 0;
-}
-
-/**
- * h2i - converts hex character into a number
- *
- * This function takes a hexadecimal character (e.g. '7' or 'C') and returns
- * the integer equivalent.
- */
-static inline u8 h2i(char p)
-{
-       if ((p >= '0') && (p <= '9'))
-               return p - '0';
-
-       if ((p >= 'A') && (p <= 'F'))
-               return (p - 'A') + 10;
-
-       if ((p >= 'a') && (p <= 'f'))
-               return (p - 'a') + 10;
-
-       return 0;
-}
-
-/**
- * set_date - stores the build date into the EEPROM
- *
- * This function takes a pointer to a string in the format "YYMMDDhhmmss"
- * (2-digit year, 2-digit month, etc), converts it to a 6-byte BCD string,
- * and stores it in the build date field of the EEPROM local copy.
- */
-static void set_date(const char *string)
-{
-       unsigned int i;
-
-       if (strlen(string) != 12) {
-               printf("Usage: mac date YYMMDDhhmmss\n");
-               return;
-       }
-
-       for (i = 0; i < 6; i++)
-               e.date[i] = h2i(string[2 * i]) << 4 | h2i(string[2 * i + 1]);
-
-       update_crc();
-}
-
-/**
- * set_mac_address - stores a MAC address into the EEPROM
- *
- * This function takes a pointer to MAC address string
- * (i.e."XX:XX:XX:XX:XX:XX", where "XX" is a two-digit hex number) and
- * stores it in the MAC address field in the EEPROM local copy.
- */
-static void set_mac_address(const char *string)
-{
-       char *p = (char *) string;
-       unsigned int i;
-
-       for (i = 0; *p && (i < 6); i++) {
-               e.mac[i] = simple_strtoul(p, &p, 16);
-               if (*p == ':')
-                       p++;
-       }
-
-       update_crc();
-}
-
-int do_mac(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       char cmd;
-
-       if (argc == 1) {
-               show_eeprom();
-               return 0;
-       }
-
-       cmd = argv[1][0];
-
-       if (cmd == 'r') {
-#ifdef DEBUG
-               printf("%s read\n", __func__);
-#endif
-               read_eeprom();
-               return 0;
-       }
-
-       if (argc == 2) {
-               switch (cmd) {
-               case 's':       /* save */
-#ifdef DEBUG
-                       printf("%s save\n", __func__);
-#endif
-                       prog_eeprom();
-                       break;
-               default:
-                       return cmd_usage(cmdtp);
-               }
-
-               return 0;
-       }
-
-       /* We know we have at least one parameter  */
-
-       switch (cmd) {
-       case 'n':       /* serial number */
-#ifdef DEBUG
-               printf("%s serial number\n", __func__);
-#endif
-               memset(e.sn, 0, sizeof(e.sn));
-               strncpy((char *)e.sn, argv[2], sizeof(e.sn) - 1);
-               update_crc();
-               break;
-       case 'd':       /* date BCD format YYMMDDhhmmss */
-               set_date(argv[2]);
-               break;
-       case 'e':       /* errata */
-               printf("mac errata not implemented\n");
-               break;
-       case 'i':       /* id */
-               memset(e.id, 0, sizeof(e.id));
-               strncpy((char *)e.id, argv[2], sizeof(e.id) - 1);
-               update_crc();
-               break;
-       case 'p':       /* ports */
-               printf("mac ports not implemented (always 1 port)\n");
-               break;
-       case '0' ... '9':
-               /* we only have "mac 0" but any digit can be used here */
-               set_mac_address(argv[2]);
-               break;
-       case 'h':       /* help */
-       default:
-               return cmd_usage(cmdtp);
-       }
-
-       return 0;
-}
-
-static inline int is_portrait(void)
-{
-       int i;
-       unsigned int orient_index = 0; /* idx of char which determines orientation */
-
-       for (i = sizeof(e.id)/sizeof(*e.id) - 1; i>=0; i--) {
-               if (e.id[i] == '-') {
-                       orient_index = i+1;
-                       break;
-               }
-       }
-
-       return (orient_index &&
-                       (e.id[orient_index] >= '5') && (e.id[orient_index] <= '8'));
-}
-
-int mac_read_from_eeprom(void)
-{
-       u32 crc, crc_offset = offsetof(struct eeprom, crc);
-       u32 *crcp; /* Pointer to the CRC in the data read from the EEPROM */
-#define FILENAME_LANDSCAPE "mvBlueLynx_X.rbf"
-#define FILENAME_PORTRAIT "mvBlueLynx_X_sensor_cd.rbf"
-
-       if (read_eeprom()) {
-               printf("EEPROM Read failed.\n");
-               return -1;
-       }
-
-       crc = crc32(0, (void *)&e, crc_offset);
-       crcp = (void *)&e + crc_offset;
-       if (crc != be32_to_cpu(*crcp)) {
-               printf("EEPROM CRC mismatch (%08x != %08x)\n", crc,
-                       be32_to_cpu(e.crc));
-               return -1;
-       }
-
-       if (memcmp(&e.mac, "\0\0\0\0\0\0", 6) &&
-               memcmp(&e.mac, "\xFF\xFF\xFF\xFF\xFF\xFF", 6)) {
-               char ethaddr[18];
-
-               sprintf(ethaddr, "%02X:%02X:%02X:%02X:%02X:%02X",
-                       e.mac[0],
-                       e.mac[1],
-                       e.mac[2],
-                       e.mac[3],
-                       e.mac[4],
-                       e.mac[5]);
-               /* Only initialize environment variables that are blank
-                * (i.e. have not yet been set)
-                */
-               if (!getenv("ethaddr"))
-                       setenv("ethaddr", ethaddr);
-       }
-
-       if (memcmp(&e.sn, "\0\0\0\0\0\0\0\0\0\0", 10) &&
-               memcmp(&e.sn, "\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF\xFF", 10)) {
-               char serial_num[12];
-
-               strncpy(serial_num, (char *)e.sn, sizeof(e.sn) - 1);
-               /* Only initialize environment variables that are blank
-                * (i.e. have not yet been set)
-                */
-               if (!getenv("serial#"))
-                       setenv("serial#", serial_num);
-       }
-
-       /* decide which fpga file to load depending on orientation */
-       if (is_portrait())
-               setenv("fpgafilename", FILENAME_PORTRAIT);
-       else
-               setenv("fpgafilename", FILENAME_LANDSCAPE);
-
-       /* TODO should I calculate CRC here? */
-       return 0;
-}
-
-#ifdef CONFIG_SERIAL_TAG
-void get_board_serial(struct tag_serialnr *serialnr)
-{
-       char *serial = getenv("serial#");
-
-       if (serial && (strlen(serial) > 3)) {
-               /* use the numerical part of the serial number LXnnnnnn */
-               serialnr->high = 0;
-               serialnr->low = simple_strtoul(serial + 2, NULL, 10);
-       } else {
-               serialnr->high = 0;
-               serialnr->low = 0;
-       }
-}
-#endif
diff --git a/board/palmld/Kconfig b/board/palmld/Kconfig
deleted file mode 100644 (file)
index 3111295..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_PALMLD
-
-config SYS_BOARD
-       default "palmld"
-
-config SYS_CONFIG_NAME
-       default "palmld"
-
-endif
diff --git a/board/palmld/MAINTAINERS b/board/palmld/MAINTAINERS
deleted file mode 100644 (file)
index 7d21b7b..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PALMLD BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
-F:     board/palmld/
-F:     include/configs/palmld.h
-F:     configs/palmld_defconfig
diff --git a/board/palmld/Makefile b/board/palmld/Makefile
deleted file mode 100644 (file)
index ea93ca8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Palm LifeDrive Support
-#
-# Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := palmld.o
diff --git a/board/palmld/palmld.c b/board/palmld/palmld.c
deleted file mode 100644 (file)
index fee4dcd..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Palm LifeDrive Support
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <serial.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch/pxa.h>
-#include <asm/io.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* arch number of PalmLD */
-       gd->bd->bi_arch_number = MACH_TYPE_PALMLD;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       /* Set PWM for LCD */
-       writel(0x7, PWM_CTRL0);
-       writel(0x16c, PWM_PERVAL0);
-       writel(0x11a, PWM_PWDUTY0);
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-}
-
-ulong board_flash_get_legacy(ulong base, int banknum, flash_info_t *info)
-{
-       info->portwidth = FLASH_CFI_16BIT;
-       info->chipwidth = FLASH_CFI_BY16;
-       info->interface = FLASH_CFI_X16;
-       return 1;
-}
diff --git a/board/palmtc/Kconfig b/board/palmtc/Kconfig
deleted file mode 100644 (file)
index 3eb7198..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_PALMTC
-
-config SYS_BOARD
-       default "palmtc"
-
-config SYS_CONFIG_NAME
-       default "palmtc"
-
-endif
diff --git a/board/palmtc/MAINTAINERS b/board/palmtc/MAINTAINERS
deleted file mode 100644 (file)
index 57b6a22..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PALMTC BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
-F:     board/palmtc/
-F:     include/configs/palmtc.h
-F:     configs/palmtc_defconfig
diff --git a/board/palmtc/Makefile b/board/palmtc/Makefile
deleted file mode 100644 (file)
index b4a682d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Palm Tungsten|C Support
-#
-# Copyright (C) 2009-2010 Marek Vasut <marek.vasut@gmail.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := palmtc.o
diff --git a/board/palmtc/palmtc.c b/board/palmtc/palmtc.c
deleted file mode 100644 (file)
index a6207b4..0000000
+++ /dev/null
@@ -1,61 +0,0 @@
-/*
- * Palm Tungsten|C Support
- *
- * Copyright (C) 2009-2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <serial.h>
-#include <asm/io.h>
-#include <asm/arch/pxa.h>
-#include <asm/arch/regs-mmc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* Arch number of Palm Tungsten|C */
-       gd->bd->bi_arch_number = MACH_TYPE_PALMTC;
-
-       /* Adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       /* Set PWM for LCD */
-       writel(0x5f, PWM_CTRL1);
-       writel(0x3ff, PWM_PERVAL1);
-       writel(892, PWM_PWDUTY1);
-
-       return 0;
-}
-
-#ifdef CONFIG_CMD_MMC
-int board_mmc_init(bd_t *bis)
-{
-       pxa_mmc_register(0);
-       return 0;
-}
-#endif
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-}
diff --git a/board/palmtreo680/Kconfig b/board/palmtreo680/Kconfig
deleted file mode 100644 (file)
index b5fdb9a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_PALMTREO680
-
-config SYS_BOARD
-       default "palmtreo680"
-
-config SYS_CONFIG_NAME
-       default "palmtreo680"
-
-endif
diff --git a/board/palmtreo680/MAINTAINERS b/board/palmtreo680/MAINTAINERS
deleted file mode 100644 (file)
index b0ff9d0..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PALMTREO680 BOARD
-#M:    Mike Dunn <mikedunn@newsguy.com>
-S:     Orphan (since 2014-06)
-F:     board/palmtreo680/
-F:     include/configs/palmtreo680.h
-F:     configs/palmtreo680_defconfig
diff --git a/board/palmtreo680/Makefile b/board/palmtreo680/Makefile
deleted file mode 100644 (file)
index 4f79e4b..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Palm Treo680 Support
-#
-# Copyright (C) 2013 Mike Dunn <mikedunn@newsguy.com>
-#
-# This file is released under the terms of GPL v2 and any later version.
-# See the file COPYING in the root directory of the source tree for details.
-
-obj-y  := palmtreo680.o
diff --git a/board/palmtreo680/README b/board/palmtreo680/README
deleted file mode 100644 (file)
index c8799c6..0000000
+++ /dev/null
@@ -1,563 +0,0 @@
-
-README for the Palm Treo 680.
-
-Copyright (C) 2013 Mike Dunn <mikedunn@newsguy.com>
-
-You may reproduce the contents of this file entirely or in part, but please
-credit me by name if you do.  Thanks.
-
-
-Intro
-=====
-
-Yes, you can program u-boot onto the flash of your Palm Treo 680 so that u-boot
-(then Linux, Android, ...) runs at power-up.  This document describes how, and
-gives some implementation details on this port of u-boot and describes how the
-Treo 680 boots from reset.
-
-But first, I probably don't need to tell you that after doing this, your phone
-will no longer run PalmOS.  You *may* be able to later restore your phone to its
-original state by creating a backup image of the flash before writing u-boot
-(details below), but this is not heavily tested and should not be relied upon.
-There is also the possibility that something may go wrong during the process of
-programming u-boot, leaving you with a bricked phone.  If you follow these
-instructions carefully this chance will be minimized, but I do not recommend
-that you program u-boot onto a phone that you can not afford to lose, and
-certainly not one that contains important data that is not backed up elsewhere.
-I AM NOT RESPONSIBLE FOR THE LOSS OF YOUR PHONE.  DO THIS AT YOUR OWN RISK.
-Having said that, feel free to send me a note cursing me out if something does
-go wrong, but please tell me what happened exactly.  For that matter, I'd love
-to hear from you if you succeed.
-
-
-Details on the SPL
-==================
-
-The docg4 features a 2k region at the start of its address space that interfaces
-to the system bus like a NOR flash.  This allows the docg4 to function as a boot
-ROM.  The Treo 680 uses this feature.  The contents of this 2k region are
-write-protected and can not be reprogrammed.  Fortunately, the code it contains
-does what we need to do, at least partially.  After some essential hardware
-initialization (like the SDRAM controller), it runs an IPL (initial program
-loader) that copies 128K (no more, no less) from flash to a fixed address in
-SDRAM (0xa1700000) and jumps to it.  128K is too small for u-boot, so we use it
-to load a u-boot secondary program loader (SPL).  But since our SPL only
-occupies a little over 1k, we can economize on flash usage by having the IPL
-load a portion of u-boot proper as well.  We let the IPL load the first 128k of
-a concatenated spl + u-boot image, and because the SPL is placed before u-boot
-proper, the IPL jumps to the SPL, which copies the portion of u-boot that the
-IPL has already loaded to its correct SDRAM address, and then loads the
-remainder of u-boot and jumps to it.
-
-
-The docg4's "reliable mode"
-===========================
-
-This is a special mode of operation of the docg4's integrated controller whereby
-consecutive pairs of 2k regions are used in parallel (in some fashion) to store
-2k of data.  In other words, the normal capacity is halved, but the data
-integrity is improved.  In this mode, the data is read or written from pages in
-even-numbered 2k regions (regions starting at 0x000, 0x1000, 0x2000, ...).  The
-odd-numbered 2k regions (regions starting at 0x800, 0x1800, 0x2800, ...) are
-transparently used in parallel.  In reliable mode, the odd-numbered 2k regions
-are not meant to be read or written directly.
-
-Reliable mode is used by the IPL because there is not enough space in its 2k
-footprint to implement the BCH ecc algorithm.  Data that is read while reliable
-mode is enabled must have been written in reliable mode, or the read fails.
-However, data written in reliable mode can also be read in normal mode (just not
-as reliably), but only from the even-numbered 2k regions; the odd-numbered 2k
-regions appear to contain junk, and will generate ecc errors.  When the IPL and
-SPL read from flash, the odd-numbered 2k regions are explicitly skipped.  The
-same is true for the flash_u-boot utility when it writes the u-boot image in
-reliable mode.
-
-The docg4 Linux driver supports writing in reliable mode (it is enabled by the
-module parameter), but not reading.  However, the u-boot docg4_spl driver does
-read in reliable mode, in the same fashion as the IPL.
-
-
-Details on the IPL and its data format
-======================================
-
-Starting from block 5 and counting upward, the IPL will search for and load the
-first two blocks it finds that contain a magic number in the oob of the first
-page of the block.  The contents are loaded to SDRAM starting at address
-0xa1700000.  After two blocks have been loaded, it jumps to 0xa1700000.  The
-number of blocks loaded and the load address in SDRAM are hard-coded; only the
-flash offset of the blocks can vary at run-time (based on the presence of the
-magic number).
-
-In addition to using the docg4's reliable mode, the IPL expects each 512 byte
-page to be written redundantly in the subsequent page.  The hardware is capable
-of detecting bit errors (but not correcting them), and if a bit error is
-detected when a page is read, the page contents are discarded and the subsequent
-page is read.
-
-Reliable mode reduces the capacity of a block by half, and the redundant pages
-reduce it by half again.  As a result, the normal 256k capacity of a block is
-reduced to 64k for the purposes of the IPL/SPL.
-
-For the sake of simplicity and uniformity, the u-boot SPL mimics the operation
-of the IPL, and expects the image to be stored in the same format.
-
-
-Instructions on Programming u-boot to flash
-===========================================
-
-To program u-boot to your flash, you will need to boot the Linux kernel on your
-phone using a PalmOS bootloader such as cocoboot.  The details of building and
-running Linux on your Treo (cross-compiling, creating a root filesystem,
-configuring the kernel, etc) are beyond the scope of this document.  The
-remainder of this document describes in detail how to program u-boot to the
-flash using Linux running on the Treo.
-
-
-Hardware Prerequisites
-======================
-
-A Palm Treo 680:
-  (dugh)
-
-A Palm usb cable:
-  You'll need this to establish a usbtty console connection to u-boot from a
-  desktop PC.  Currently there is no support in u-boot for the pxa27x keypad
-  (coming soon), so a serial link must be used for the console.
-  These cables are still widely available if you don't already have one.
-
-A Linux desktop PC.
-  You may be able to use Windows for the u-boot console if you have a usb driver
-  that is compatible with the Linux usbserial driver, but for programming u-boot
-  to flash, you'll really want to use a Linux PC.
-
-
-Treo-side Software Prerequisites
-================================
-
-Linux bootloader for PalmOS:
-
-  Cocoboot is the only one I'm aware of.  If you don't already have this, you
-  can download it from
-  https://download.enlightenment.org/misc/Illume/Treo-650/2008-11-13/sdcard-base.tar.gz
-  which is a compressed tar archive of the contents of an sd card containing
-  cocoboot.  Use mkdosfs to create a fat16 filesystem on the first primary
-  partition of the card, mount the partition, and extract the tar file to it.
-  You will probably need to edit the cocoboot.conf file to customize the
-  parameters passed to the kernel.
-
-
-Linux kernel:
-
-  The kernel on the Treo 680 is still a little rough around the edges, and the
-  official kernel frequently breaks on the Treo :(  A development kernel
-  specifically for the Treo 680 can be found on github:
-    http://github.com/mike-dunn/linux-treo680
-  The master branch of this tree has been tested on the Treo, and I recommend
-  using this kernel for programming u-boot.  As of this writing, there may be a
-  bug in the docg4 nand flash driver that sometimes causes block erasures to
-  fail.  This has been fixed in the above tree.
-
-  If you choose to use the official kernel, it must contain the docg4 driver that
-  includes the reliable_mode module parameter.  This was a later enhancement to
-  the driver, and was merged to the kernel as of v3.8.  Do not try to use an
-  earlier kernel that contains the docg4 driver without support for writing in
-  reliable mode.  If you try to program u-boot to flash with the docg4 driver
-  loaded without the reliable_mode parameter enabled, you *will* brick your
-  phone!
-
-  For the purpose of programming u-boot to flash, the following options must be
-  enabled in the Treo kernel's .config:
-
-     CONFIG_MTD=y
-     CONFIG_MTD_CMDLINE_PARTS=y
-     CONFIG_MTD_CHAR=y
-     CONFIG_MTD_NAND_DOCG4=m
-
-  Note that the docg4 nand driver is configured as a module, because we will
-  want to load and unload it with reliable_mode enabled or disabled as needed.
-
-  You will also need to specify mtd partitions on the kernel command line.  In
-  the instructions that follow, we will assume that the flash blocks to which
-  u-boot will be programmed are defined by the second partition on the device.
-  The u-boot config file (include/configs/palmtreo680.h) places the u-boot image
-  at the start of block 6 (offset 0x180000), which is the first writable
-  (non-protected) block on the flash (this is also where the PalmOS SPL starts).
-  The u-boot image occupies four blocks, so to create the u-boot partition, pass
-  this command line to the kernel:
-    mtdparts=Msys_Diskonchip_G4:1536k(protected_part)ro,1024k(bootloader_part),-(filesys_part)
-  This will create three partitions:
-    protected_part: the first six blocks, which are read-only
-    bootloader_part: the next four blocks, for the u-boot image
-    filesys_part: the remainder of the device
-  The mtdchar kernel device driver will use device nodes /dev/mtd0, /dev/mtd1,
-  and /dev/mtd2 for these partitions, respectively.  Ensure that your root file
-  system at least has /dev/mtd1 if you are not running udev or mdev.
-
-Userspace Utilities:
-
-  In addition to everything necessary to provide a useful userspace environment
-  (busybox is indispensable, of course), you will need the mtd-utils package on
-  your root filesystem.  I use version 1.5.0 of mtd-utils, and I suggest you use
-  this version as well, or at leat a version very close to this one, as
-  mtd-utils has tended to be fluid.
-
-  Note that busybox includes a version of mtd-utils.  These are deficient and
-  should not be used.  When you run one of these utilities (nanddump, etc),
-  ensure you are invoking the separate executable from mtd-utils, and not the
-  one built into busybox.  I recommend that you configure busybox with its
-  mtd-utils disabled to avoid any possibility of confusion.
-
-  You will also need to cross-compile the userspace Linux utility in
-  tools/palmtreo680/flash_u-boot.c, which we will run on the Treo to perform the
-  actual write of the u-boot image to flash.  This utility links against libmtd
-  from the mtd-utils package.
-
-
-Desktop PC-side Software Prerequisites
-======================================
-
-Terminal emulator application:
-  minicom, kermit, etc.
-
-Linux kernel:
-  Compiled with CONFIG_USB_SERIAL enabled.  Build this as a module.
-
-
-Recommended (Not directly related to u-boot)
-============================================
-
-Working directly on the Treo's tiny screen and keypad is difficult and
-error-prone.  I recommend that you log into the Linux kernel running on your
-Treo from your desktop PC using ethernet over usb.  The desktop's kernel must be
-configured with CONFIG_USB_USBNET, CONFIG_USB_NET_CDCETHER, and
-CONFIG_USB_NET_CDC_SUBSET.  The Treo's kernel will need CONFIG_USB_ETH, and its
-init script will need to start an ssh daemon like dropbear.  Note that the usb0
-network interface will not appear on the desktop PC until the Treo kernel's usb
-ethernet gadget driver has initialized.  You must wait for this to occur (watch
-the PC's kernel log) before you can assign usb0 an ip address and log in to the
-Treo.  If you also build the Treo's kernel with CONFIG_IP_PNP enabled, you can
-pass its ip address on the kernel command line, and obviate the need to
-initialize the network interface in your init script.
-
-Having the Palm usb cable connected to the host has the added benefit of keeping
-power supplied to your Treo, reducing the drain on the battery.  If something
-goes wrong while you're programming u-boot to the flash, you will have lots of
-time to correct it before the battery dies.
-
-I have encountered a situation where the kernel is sometimes unable to mount a
-root filesystem on the mmc card due to the mmc controller not initializing in
-time, (and CONFIG_MMC_UNSAFE_RESUME doesn't seem to help) so I recommend that
-you build a minimal root filesystem into the kernel using the kernel's initramfs
-feature (CONFIG_BLK_DEV_INITRD).  If you want your root filesystem on the mmc
-card, your init script can mount and switch_root to the mmc card after a short
-sleep.  But keep in mind that in this case you won't be able to use an mmc card
-to transfer files between your desktop and the Treo once Linux is running.
-Another option for transfering files is to mount an nfs filesystem exported by
-the desktop PC.  For greatest convenience, you can export the root filesystem
-itself from your desktop PC and switch_root to it in your init script.  This
-will work if your initramfs init script contains a loop that waits for you to
-initialize the usb0 network interface on the desktop PC; e.g., loop while a ping
-to the desktop PC returns an error.  After the loop exits, do the nfs mount and
-call switch_root.  (You can not use the kernel nfsroot feature because the
-network will not be up when the kernel expects it to be; i.e., not until you
-configure the usb0 interface on the desktop.)  Use the nfs 'nolock' option when
-mounting to avoid the need to run a portmapper like rpcbind.
-
-
-Preliminaries
-=============
-
-Once Linux is running on your Treo, you may want to perform a few sanity checks
-before programming u-boot.  These checks will verify my assumptions regarding
-all the Treo 680s out there, and also ensure that the flash and mtd-utils are
-working correctly.  If you are impatient and reckless, you may skip this
-section, but see disclaimer at the top of this file!
-
-Load the docg4 driver:
-
-  $ modprobe docg4 ignore_badblocks=1 reliable_mode=1
-
-We tell the driver to use the docg4's "reliable mode" when writing because this
-is the format required by the IPL, which runs from power-up and loads the first
-portion of u-boot.  We must ignore bad blocks because linux mtd uses out-of-band
-(oob) bytes to mark bad blocks, which will cause the blocks written by PalmOS to
-be misidentified as "bad" by libmtd.
-
-Check the kernel log to ensure that all's well:
-
-  $ dmesg | tail
-             <... snip ...>
-  docg4 docg4: NAND device: 128MiB Diskonchip G4 detected
-  3 cmdlinepart partitions found on MTD device Msys_Diskonchip_G4
-  Creating 3 MTD partitions on "Msys_Diskonchip_G4":
-  0x000000000000-0x000000180000 : "protected_part"
-  0x000000180000-0x000000280000 : "bootloader_part"
-  0x000000280000-0x000008000000 : "filesys_part"
-
-Ensure that the partition boundaries are as shown.  (If no partitions are shown,
-did you remember to pass them to the kernel on the command line?)  We will write
-u-boot to bootloader_part, which starts at offset 0x180000 (block 6) and spans 4
-256k blocks.  This partition is accessed through the device node /dev/mtd1.
-
-The docg4 contains a read-only table that identifies blocks that were marked as
-bad at the factory.  This table is in the page at offset 0x2000, which is within
-the partition protected_part (/dev/mtd0).  There is a slight chance that one or
-more of the four blocks that we will use for u-boot is listed in the table, so
-use nanddump to inspect the table to see if this is the case:
-
-  $ nanddump -p -l 512 -s 0x2000 -o /dev/mtd0
-  ECC failed: 0
-  ECC corrected: 0
-  Number of bad blocks: 0
-  Number of bbt blocks: 0
-  Block size 262144, page size 512, OOB size 16
-  Dumping data starting at 0x00002000 and ending at 0x00002200...
-  0x00002000: ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff ff
-             <... snip ...>
-
-The format of the table is simple: one bit per block, with block numbers
-increasing from left to right, starting with block 0 as the most significant bit
-of the first byte.  A bit will be clear if the corresponding block is bad.  We
-want to use blocks 6 throgh 9, so both of the two least significant bits of the
-first byte must be set, as must the two most significant bits of the second
-byte.  If this is not true in your case (you are very unlucky), you should use
-the first contiguous set of four good blocks after block 6, and adjust the
-partition boundaries accordingly.  You will also have to change the value of
-CONFIG_SYS_NAND_U_BOOT_OFFS in include/configs/palmtreo680.h and recompile
-u-boot.  Because the two blocks loaded by the IPL do not have to be contiguous,
-but our SPL expects them to be, you will need to erase any good blocks that are
-at an offset prior to CONFIG_SYS_NAND_U_BOOT_OFFS, so that the IPL does not find
-the magic number in oob and load it.  Once you have done all this, the
-instructions in this file still apply, except that the instructions below for
-restoring the original PalmOS block contents may need to be modified.
-
-Next, use nanddump to verify that the PalmOS SPL is where we expect it to be.
-The SPL can be identified by a magic number in the oob bytes of the first page
-of each of the two blocks containing the SPL image.  Pages are 512 bytes in
-size, so to dump the first page, plus the oob:
-
-  $ nanddump -p -l 512 -s 0 -o /dev/mtd1
-  ECC failed: 0
-  ECC corrected: 0
-  Number of bad blocks: 0
-  Number of bbt blocks: 0
-  Block size 262144, page size 512, OOB size 16
-  Dumping data starting at 0x00000000 and ending at 0x00000200...
-  0x00000000: 0a 00 00 ea 00 00 00 00 00 00 00 00 00 00 00 00
-             <... snip ...>
-  0x000001f0: 13 4c 21 60 13 4d 2a 69 13 4b 29 69 89 1a 99 42
-    OOB Data: 42 49 50 4f 30 30 30 10 3a e2 00 92 be a0 11 ff
-
-Verify that the first seven bytes of oob data match those in the above line.
-(This is ASCII "BIPO000".)
-
-Do the same for the next block:
-  $ nanddump -p -l 512 -s 0x40000 -o /dev/mtd1
-
-The first seven oob bytes in last line should read:
-
-    OOB Data: 42 49 50 4f 30 30 31 81 db 8e 8f 46 07 9b 59 ff
-
-(This is ASCII "BIPO001".)
-
-For additional assurance, verify that the next block does *not* contain SPL
-data.
-
-  $ nanddump -p -l 512 -s 0x80000 -o /dev/mtd1
-
-It doesn't matter what the oob contains, as long as the first four bytes are
-*not* ASCII "BIPO".  PalmOS should only be using two blocks for the SPL
-(although we will need four for u-boot).
-
-If you want, you can back up the contents of bootloader_part to a file.  You may
-be able to restore it later, if desired (see "Restoring PalmOS" below).
-
-  $ nanddump -l 0x100000 -s 0 -o -f bootloader_part.orig /dev/mtd1
-
-nanddump will spew voluminous warnings about uncorrectable ecc errors.  This is
-a consequence of reading pages that were written in reliable mode, and is
-expected (these should all occur on pages in odd-numbered 2k regions; i.e.,
-0x800, 0xa00, 0xc00, 0xe00, 0x1800, 0x1a00, ...).  The size of the file
-bootloader_part.orig should be 1081344, which is 2048 pages, each of size 512
-plus 16 oob bytes.  If you are using initramfs for the root filesystem, don't
-forget to copy the file to permanent storage, such as an mmc card.
-
-If all of the above went well, you can now program u-boot.
-
-
-Programming u-boot
-==================
-
-Our u-boot includes a small SPL that must be prepended to u-boot proper.  From
-the base u-boot source directory on your desktop PC:
-
-  $ cat spl/u-boot-spl.bin u-boot.bin > u-boot-concat.bin
-
-cd to the tools/palmtreo680/ directory, and cross-compile flash_u-boot.c for the
-Treo:
-
-  $(CC) -o flash_u-boot $(CFLAGS) $(INCLUDEPATH) $(LIBPATH) flash_u-boot.c -lmtd
-
-Substitute variable values from your cross-compilation environment as
-appropriate.  Note that it links to libmtd from mtd-utils, and this must be
-included in $(LIBPATH) and $(INCLUDEPATH).
-
-Transfer u-boot-concat.bin and the compiled flash_u-boot utility to the Treo's
-root filesystem.  On the Treo, cd to the directory where these files were
-placed.
-
-Load the docg4 driver if you have not already done so.
-
-  $ modprobe docg4 ignore_badblocks=1 reliable_mode=1
-
-Erase the blocks to which we will write u-boot:
-
-  $ flash_erase /dev/mtd1 0x00 4
-
-If no errors are reported, write u-boot to the flash:
-
-  $ ./flash_u-boot u-boot-concat.bin /dev/mtd1
-
-You can use nanddump (see above) to verify that the data was written.  This
-time, "BIPO" should be seen in the first four oob bytes of the first page of all
-four blocks in /dev/mtd1; i.e., at offsets 0x00000, 0x40000, 0x80000, 0xc0000.
-
-Shutdown linux, remove and re-insert the battery, hold your breath...
-
-
-Enjoying u-boot
-===============
-
-After you insert the battery, the u-boot splash screen should appear on the lcd
-after a few seconds.  With the usb cable connecting the Treo to your PC, in the
-kernel log of your PC you should see
-
-  <6>usb 3-1: New USB device found, idVendor=0525, idProduct=a4a6
-  <6>usb 3-1: New USB device strings: Mfr=1, Product=2, SerialNumber=3
-  <6>usb 3-1: Product: U-Boot 2013.01-00167-gd62ef56-dirty
-  <6>usb 3-1: Manufacturer: Das U-Boot
-
-Load the usbserial module on your desktop PC:
-
-  $ modprobe usbserial vendor=0x0525 product=0xa4a6
-
-and run your favorite terminal emulation utility (minicom, kermit, etc) with the
-serial device set to /dev/ttyUSB0 (assuming this is your only usb serial
-device).  You should be at the u-boot console (type 'help').
-
-There is not much that is unique about using u-boot on the palm treo 680.
-Kernels can be loaded from mmc, flash, and from the desktop PC via kermit.  You
-can expand the size of the second partition on the flash to contain a kernel, or
-else put the kernel(s) in their own partition.
-
-Nand commands work as expected, with the excepton that blocks not written by the
-linux mtd subsystem may be misidentified by the u-boot docg4 driver as "bad" if
-they contain data in the oob bytes.  This will be the case for the blocks
-containing the u-boot image, for example.  To work around this, use 'nand scrub'
-instead of 'nand erase' to erase these blocks, and 'nand read.raw' to read them
-to memory.  (It would be useful if u-boot's nand commands provided a way to
-explicitly ignore "bad" blocks, because read.raw does not perform ecc.)  The
-'nand dump' command will read these "bad" blocks, however.
-
-Currently u-boot itself can only be programmed to flash from Linux; there is no
-support for reliable mode in u-boot's docg4 flash driver.  This should be
-corrected soon.
-
-
-Customizing
-===========
-
-If you change u-boot's configuration significantly (adding or removing
-features), you may have to adjust the value of CONFIG_SYS_NAND_U_BOOT_SIZE.
-This is the size of the concatenated spl + u-boot image, and tells the SPL how
-many flash blocks it needs to load.  It will be rounded up to the next 64k
-boundary (the spl flash block capacity), so it does not have to be exact, but
-you must ensure that it is not less than the actual image size.  If it is larger
-than the image, blocks may be needlessly loaded, but if too small, u-boot may
-only be partially loaded, resulting in a boot failure (bricked phone), so better
-to be too large.  The flash_u-boot utility will work with any size image and
-write the required number of blocks, provided that the partition is large
-enough.
-
-As the first writable block on the device, block 6 seems to make the most sense
-as the flash offset for writing u-boot (and this is where PalmOS places its
-SPL).  But you can place it elsewhere if you like.  If you do, you need to
-adjust CONFIG_SYS_NAND_U_BOOT_OFFS accordingly, and you must ensure that blocks
-preceeding the ones containing u-boot do *not* have the magic number in oob (the
-IPL looks for this).  In other words, make sure that any blocks that previously
-contained the u-boot image or PalmOS SPL are erased (and optionally written with
-something else) so that the IPL does not load it.  Also make sure that the new
-u-boot starting offset is at the start of a flash partition (check the kernel
-log after loading the docg4 driver), and pass the corresponding mtd device file
-to the flash_u-boot utility.
-
-The u-boot built-in default environment is used because a writable environment
-in flash did not seem worth the cost of a 256k flash block.  But adding this
-should be straightforward.
-
-
-Restoring PalmOS
-================
-
-If you backed up the contents of bootloader_part flash partition earlier, you
-should be able to restore it with the shell script shown below.  The first two
-blocks of data contain the PalmOS SPL and were written in reliable mode, whereas
-the next two blocks were written in normal mode, so the script has to load and
-unload the docg4 driver.  Make sure that the mtd-utils nandwrite and flash_erase
-are in your path (and are not those from busybox).  Also double-check that the
-backup image file bootloader_part.orig is exactly 1081344 bytes in length.  If
-not, it was not backed up correctly.  Run the script as:
-
-  ./restore_bootpart bootloader_part.orig /dev/mtd1
-
-The script will take a minute or so to run.  When it finishes, you may want to
-verify with nanddump that the data looks correct before you cycle power, because
-if the backup or restore failed, your phone will be bricked.  Note that as a
-consequence of reliable mode, the odd-numbered 2k regions in the first two
-blocks will not exactly match the contents of the backup file, (so unfortunately
-we can't simply dump the flash contents to a file and do a binary diff with the
-original back-up image to verify that it was restored correctly).  Also,
-nanddump will report uncorrectable ecc errors when it reads those regions.
-
-#!/bin/sh
-
-if [ $# -ne 2 ]; then
-    echo "usage: $0: <image file> <mtd device node>"
-    exit 1
-fi
-
-# reliable mode used for the first two blocks
-modprobe -r docg4
-modprobe docg4 ignore_badblocks=1 reliable_mode=1 || exit 1
-
-# erase all four blocks
-flash_erase $2 0 4
-
-# Program the first two blocks in reliable mode.
-# 2k (4 pages) is written at a time, skipping alternate 2k regions
-# Note that "2k" is 2112 bytes, including 64 oob bytes
-file_ofs=0
-flash_ofs=0
-page=0
-while [ $page -ne 1024 ]; do
-    dd if=$1 bs=2112 skip=$file_ofs count=1 | nandwrite -o -n -s $flash_ofs $2 - || exit 1
-    file_ofs=$((file_ofs+2))
-    flash_ofs=$((flash_ofs+0x1000))
-    page=$((page+8))
-done;
-
-# normal mode used for the next two blocks
-modprobe -r docg4
-modprobe docg4 ignore_badblocks=1 || exit 1
-dd if=$1 bs=1 skip=$file_ofs count=540672 | nandwrite -o -n -s 0x80000 $2 - || exit 1
-modprobe -r docg4
-
-TODO
-====
-
-  - Keypad support.
-  - Interactive boot menu using keypad and lcd.
-  - Add reliable mode support to the u-boot docg4 driver.
-  - U-boot command that will write a new image to the bootloader partition in
-    flash.
-  - Linux FTD support.
diff --git a/board/palmtreo680/palmtreo680.c b/board/palmtreo680/palmtreo680.c
deleted file mode 100644 (file)
index f4f6e1f..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * Palm Treo 680 Support
- *
- * Copyright (C) 2013 Mike Dunn <mikedunn@newsguy.com>
- *
- * This file is released under the terms of GPL v2 and any later version.
- * See the file COPYING in the root directory of the source tree for details.
- *
- */
-
-#include <common.h>
-#include <command.h>
-#include <serial.h>
-#include <nand.h>
-#include <malloc.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch-pxa/pxa.h>
-#include <asm/arch-pxa/regs-mmc.h>
-#include <asm/io.h>
-#include <asm/global_data.h>
-#include <u-boot/crc.h>
-#include <linux/mtd/docg4.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static struct nand_chip docg4_nand_chip;
-
-int board_init(void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       gd->bd->bi_arch_number = CONFIG_MACH_TYPE;
-       gd->bd->bi_boot_params = CONFIG_SYS_DRAM_BASE + 0x100;
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       /* IPL initializes SDRAM (we're already running from it) */
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-#ifdef CONFIG_LCD
-void lcd_enable(void)
-{
-       /*
-        * Undo the L_BIAS / gpio77 pin configuration performed by the pxa lcd
-        * driver code.  We need it as an output gpio.
-        */
-       writel((readl(GAFR2_L) & ~(0xc << 24)), GAFR2_L);
-
-       /* power-up and enable the lcd */
-       writel(0x00400000, GPSR(86)); /* enable; drive high */
-       writel(0x00002000, GPSR(77)); /* power; drive high */
-       writel(0x02000000, GPCR(25)); /* enable_n; drive low */
-
-       /* turn on LCD backlight and configure PWM for reasonable brightness */
-       writel(0x00, PWM_CTRL0);
-       writel(0x1b1, PWM_PERVAL0);
-       writel(0xfd, PWM_PWDUTY0);
-       writel(0x00000040, GPSR(38)); /*  backlight power on */
-}
-#endif
-
-#ifdef CONFIG_MMC
-int board_mmc_init(bd_t *bis)
-{
-       writel(1 << 10, GPSR(42)); /* power on */
-       return pxa_mmc_register(0);
-}
-#endif
-
-void board_nand_init(void)
-{
-       /* we have one 128M diskonchip G4  */
-
-       struct mtd_info *mtd = &nand_info[0];
-       struct nand_chip *nand = &docg4_nand_chip;
-       if (docg4_nand_init(mtd, nand, 0))
-               hang();
-}
-
-#ifdef CONFIG_SPL_BUILD
-void nand_boot(void)
-{
-       __attribute__((noreturn)) void (*uboot)(void);
-
-       extern const void *_start, *_end;   /* boundaries of spl in memory */
-
-       /* size of spl; ipl loads this, and then a portion of u-boot */
-       const size_t spl_image_size = ((size_t)&_end - (size_t)&_start);
-
-       /* the flash offset of the blocks that are loaded by the spl */
-       const uint32_t spl_load_offset = CONFIG_SYS_NAND_U_BOOT_OFFS +
-               DOCG4_IPL_LOAD_BLOCK_COUNT * DOCG4_BLOCK_SIZE;
-
-       /* total number of bytes loaded by IPL */
-       const size_t ipl_load_size =
-               DOCG4_IPL_LOAD_BLOCK_COUNT * DOCG4_BLOCK_CAPACITY_SPL;
-
-       /* number of bytes of u-boot proper that was loaded by the IPL */
-       const size_t ipl_uboot_load_size = ipl_load_size - spl_image_size;
-
-       /* number of remaining bytes of u-boot that the SPL must load */
-       const size_t spl_load_size =
-               CONFIG_SYS_NAND_U_BOOT_SIZE - ipl_load_size;
-
-       /* memory address where we resume loading u-boot */
-       void *const load_addr =
-               (void *)(CONFIG_SYS_NAND_U_BOOT_DST + ipl_uboot_load_size);
-
-       /*
-        * Copy the portion of u-boot already read from flash by the IPL to its
-        * correct load address.
-        */
-       memcpy((void *)CONFIG_SYS_NAND_U_BOOT_DST, &_end, ipl_uboot_load_size);
-
-       /*
-        * Resume loading u-boot where the IPL left off.
-        */
-       nand_spl_load_image(spl_load_offset, spl_load_size, load_addr);
-
-#ifdef CONFIG_NAND_ENV_DST
-       nand_spl_load_image(CONFIG_ENV_OFFSET, CONFIG_ENV_SIZE,
-                           (void *)CONFIG_NAND_ENV_DST);
-
-#ifdef CONFIG_ENV_OFFSET_REDUND
-       nand_spl_load_image(CONFIG_ENV_OFFSET_REDUND, CONFIG_ENV_SIZE,
-                           (void *)CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE);
-#endif
-#endif
-       /*
-        * Jump to U-Boot image
-        */
-       uboot = (void *)CONFIG_SYS_NAND_U_BOOT_START;
-       (*uboot)();
-}
-
-void board_init_f(ulong bootflag)
-{
-       nand_boot();
-}
-
-#endif  /* CONFIG_SPL_BUILD */
diff --git a/board/pcs440ep/Kconfig b/board/pcs440ep/Kconfig
deleted file mode 100644 (file)
index 5b280f6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_PCS440EP
-
-config SYS_BOARD
-       default "pcs440ep"
-
-config SYS_CONFIG_NAME
-       default "pcs440ep"
-
-endif
diff --git a/board/pcs440ep/MAINTAINERS b/board/pcs440ep/MAINTAINERS
deleted file mode 100644 (file)
index 6eccc85..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PCS440EP BOARD
-M:     Stefan Roese <sr@denx.de>
-S:     Maintained
-F:     board/pcs440ep/
-F:     include/configs/pcs440ep.h
-F:     configs/pcs440ep_defconfig
diff --git a/board/pcs440ep/Makefile b/board/pcs440ep/Makefile
deleted file mode 100644 (file)
index 4fc24d6..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = pcs440ep.o flash.o
-extra-y        += init.o
diff --git a/board/pcs440ep/config.mk b/board/pcs440ep/config.mk
deleted file mode 100644 (file)
index b90d5d0..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-#
-# PCS440EP board
-#
-
-# Check the U-Boot Image with a SHA1 checksum
-ALL-y += u-boot.sha1
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/pcs440ep/flash.c b/board/pcs440ep/flash.c
deleted file mode 100644 (file)
index 8c5e94f..0000000
+++ /dev/null
@@ -1,607 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-#ifndef CONFIG_SYS_FLASH_READ0
-#define CONFIG_SYS_FLASH_READ0         0x0000  /* 0 is standard                        */
-#define CONFIG_SYS_FLASH_READ1         0x0001  /* 1 is standard                        */
-#define CONFIG_SYS_FLASH_READ2         0x0002  /* 2 is standard                        */
-#endif
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-/*
- * Functions
- */
-static int write_word(flash_info_t *info, ulong dest, ulong data);
-static ulong flash_get_size(vu_long *addr, flash_info_t *info);
-
-unsigned long flash_init(void)
-{
-       unsigned long size_b0, size_b1;
-       int i;
-       unsigned long base_b0, base_b1;
-
-       /* Init: no FLASHes known */
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       base_b0 = FLASH_BASE0_PRELIM;
-       size_b0 = flash_get_size ((vu_long *) base_b0, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                               size_b0, size_b0 << 20);
-       }
-
-       base_b1 = FLASH_BASE1_PRELIM;
-       size_b1 = flash_get_size ((vu_long *) base_b1, &flash_info[1]);
-
-       return (size_b0 + size_b1);
-}
-
-void flash_print_info(flash_info_t *info)
-{
-       int i;
-       int k;
-       int size;
-       int erased;
-       volatile unsigned long *flash;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_AMD:     printf ("AMD ");                break;
-       case FLASH_MAN_FUJ:     printf ("FUJITSU ");            break;
-       case FLASH_MAN_SST:     printf ("SST ");                break;
-       case FLASH_MAN_STM:     printf ("ST Micro");            break;
-       case FLASH_MAN_EXCEL:   printf ("Excel Semiconductor "); break;
-       case FLASH_MAN_MX:      printf ("MXIC "); break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_AM400B:      printf ("AM29LV400B (4 Mbit, bottom boot sect)\n");
-               break;
-       case FLASH_AM400T:      printf ("AM29LV400T (4 Mbit, top boot sector)\n");
-               break;
-       case FLASH_AM040:       printf ("AM29LV040B (4 Mbit, uniform sector size)\n");
-               break;
-       case FLASH_AM800B:      printf ("AM29LV800B (8 Mbit, bottom boot sect)\n");
-               break;
-       case FLASH_AM800T:      printf ("AM29LV800T (8 Mbit, top boot sector)\n");
-               break;
-       case FLASH_AM160B:      printf ("AM29LV160B (16 Mbit, bottom boot sect)\n");
-               break;
-       case FLASH_AM160T:      printf ("AM29LV160T (16 Mbit, top boot sector)\n");
-               break;
-       case FLASH_AM320T:      printf ("AM29LV320T (32 M, top sector)\n");
-               break;
-       case FLASH_AM320B:      printf ("AM29LV320B (32 M, bottom sector)\n");
-               break;
-       case FLASH_AMDL322T:    printf ("AM29DL322T (32 M, top sector)\n");
-               break;
-       case FLASH_AMDL322B:    printf ("AM29DL322B (32 M, bottom sector)\n");
-               break;
-       case FLASH_AMDL323T:    printf ("AM29DL323T (32 M, top sector)\n");
-               break;
-       case FLASH_AMDL323B:    printf ("AM29DL323B (32 M, bottom sector)\n");
-               break;
-       case FLASH_SST020:      printf ("SST39LF/VF020 (2 Mbit, uniform sector size)\n");
-               break;
-       case FLASH_SST040:      printf ("SST39LF/VF040 (4 Mbit, uniform sector size)\n");
-               break;
-       case STM_ID_M29W040B:   printf ("ST Micro M29W040B (4 Mbit, uniform sector size)\n");
-               break;
-       default:                printf ("Unknown Chip Type\n");
-               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-#ifdef CONFIG_SYS_FLASH_EMPTY_INFO
-               /*
-                * Check if whole sector is erased
-                */
-               if (i != (info->sector_count-1))
-                       size = info->start[i+1] - info->start[i];
-               else
-                       size = info->start[0] + info->size - info->start[i];
-               erased = 1;
-               flash = (volatile unsigned long *)info->start[i];
-               size = size >> 2;       /* divide by 4 for longword access */
-               for (k=0; k<size; k++) {
-                       if (*flash++ != 0xffffffff) {
-                               erased = 0;
-                               break;
-                       }
-               }
-
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               /* print empty and read-only info */
-               printf (" %08lX%s%s",
-                       info->start[i],
-                       erased ? " E" : "  ",
-                       info->protect[i] ? "RO " : "   ");
-#else
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     ");
-#endif
-
-       }
-       printf ("\n");
-       return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size(vu_long *addr, flash_info_t *info)
-{
-       short i;
-       short n;
-       volatile CONFIG_SYS_FLASH_WORD_SIZE value;
-       ulong base = (ulong)addr;
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr2 = (volatile CONFIG_SYS_FLASH_WORD_SIZE *)addr;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr2[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-       addr2[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-       addr2[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00900090;
-
-       value = addr2[CONFIG_SYS_FLASH_READ0];
-
-       switch (value) {
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_MANUFACT:
-               info->flash_id = FLASH_MAN_AMD;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)FUJ_MANUFACT:
-               info->flash_id = FLASH_MAN_FUJ;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)SST_MANUFACT:
-               info->flash_id = FLASH_MAN_SST;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)STM_MANUFACT:
-               info->flash_id = FLASH_MAN_STM;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)EXCEL_MANUFACT:
-               info->flash_id = FLASH_MAN_EXCEL;
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)MX_MANUFACT:
-               info->flash_id = FLASH_MAN_MX;
-               break;
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr2[CONFIG_SYS_FLASH_READ1];          /* device ID    */
-
-       switch (value) {
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV400T:
-               info->flash_id += FLASH_AM400T;
-               info->sector_count = 11;
-               info->size = 0x00080000;
-               break;                          /* => 0.5 MB    */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV400B:
-               info->flash_id += FLASH_AM400B;
-               info->sector_count = 11;
-               info->size = 0x00080000;
-               break;                          /* => 0.5 MB    */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV040B:
-               info->flash_id += FLASH_AM040;
-               info->sector_count = 8;
-               info->size = 0x0080000;         /* => 0.5 MB    */
-               break;
-       case (CONFIG_SYS_FLASH_WORD_SIZE)STM_ID_M29W040B:
-               info->flash_id += FLASH_AM040;
-               info->sector_count = 8;
-               info->size = 0x0080000; /* => 0,5 MB */
-               break;
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV800T:
-               info->flash_id += FLASH_AM800T;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV800B:
-               info->flash_id += FLASH_AM800B;
-               info->sector_count = 19;
-               info->size = 0x00100000;
-               break;                          /* => 1 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV160T:
-               info->flash_id += FLASH_AM160T;
-               info->sector_count = 35;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV160B:
-               info->flash_id += FLASH_AM160B;
-               info->sector_count = 35;
-               info->size = 0x00200000;
-               break;                          /* => 2 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV320T:
-               info->flash_id += FLASH_AM320T;
-               info->sector_count = 71;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_LV320B:
-               info->flash_id += FLASH_AM320B;
-               info->sector_count = 71;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_DL322T:
-               info->flash_id += FLASH_AMDL322T;
-               info->sector_count = 71;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_DL322B:
-               info->flash_id += FLASH_AMDL322B;
-               info->sector_count = 71;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_DL323T:
-               info->flash_id += FLASH_AMDL323T;
-               info->sector_count = 71;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)AMD_ID_DL323B:
-               info->flash_id += FLASH_AMDL323B;
-               info->sector_count = 71;
-               info->size = 0x00400000;
-               break;                          /* => 4 MB      */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)SST_ID_xF020:
-               info->flash_id += FLASH_SST020;
-               info->sector_count = 64;
-               info->size = 0x00040000;
-               break;                          /* => 256 kB    */
-
-       case (CONFIG_SYS_FLASH_WORD_SIZE)SST_ID_xF040:
-               info->flash_id += FLASH_SST040;
-               info->sector_count = 128;
-               info->size = 0x00080000;
-               break;                          /* => 512 kB    */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       /* set up sector start address table */
-       if (((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) ||
-           ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM640U)) {
-               for (i = 0; i < info->sector_count; i++)
-                       info->start[i] = base + (i * 0x00001000);
-       } else if ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM040) {
-               for (i = 0; i < info->sector_count; i++)
-                       info->start[i] = base + (i * 0x00010000);
-       } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322B) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323B) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320B) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324B)) {
-               /* set sector offsets for bottom boot block type        */
-               for (i=0; i<8; ++i) {           /*  8 x 8k boot sectors */
-                       info->start[i] = base;
-                       base += 8 << 10;
-               }
-               while (i < info->sector_count) {        /* 64k regular sectors  */
-                       info->start[i] = base;
-                       base += 64 << 10;
-                       ++i;
-               }
-       } else if (((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL322T) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL323T) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AM320T) ||
-                  ((info->flash_id & FLASH_TYPEMASK) == FLASH_AMDL324T)) {
-               /* set sector offsets for top boot block type           */
-               base += info->size;
-               i = info->sector_count;
-               for (n=0; n<8; ++n) {           /*  8 x 8k boot sectors */
-                       base -= 8 << 10;
-                       --i;
-                       info->start[i] = base;
-               }
-               while (i > 0) {                 /* 64k regular sectors  */
-                       base -= 64 << 10;
-                       --i;
-                       info->start[i] = base;
-               }
-       } else {
-               if (info->flash_id & FLASH_BTYPE) {
-                       /* set sector offsets for bottom boot block type        */
-                       info->start[0] = base + 0x00000000;
-                       info->start[1] = base + 0x00004000;
-                       info->start[2] = base + 0x00006000;
-                       info->start[3] = base + 0x00008000;
-                       for (i = 4; i < info->sector_count; i++) {
-                               info->start[i] = base + (i * 0x00010000) - 0x00030000;
-                       }
-               } else {
-                       /* set sector offsets for top boot block type           */
-                       i = info->sector_count - 1;
-                       info->start[i--] = base + info->size - 0x00004000;
-                       info->start[i--] = base + info->size - 0x00006000;
-                       info->start[i--] = base + info->size - 0x00008000;
-                       for (; i >= 0; i--) {
-                               info->start[i] = base + i * 0x00010000;
-                       }
-               }
-       }
-
-       /* check for protected sectors */
-       for (i = 0; i < info->sector_count; i++) {
-               /* read sector protection at sector address, (A7 .. A0) = 0x02 */
-               /* D0 = 1 if protected */
-               addr2 = (volatile CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[i]);
-               if ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_AMD)
-                       info->protect[i] = 0;
-               else
-                       info->protect[i] = addr2[CONFIG_SYS_FLASH_READ2] & 1;
-       }
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr2 = (CONFIG_SYS_FLASH_WORD_SIZE *)info->start[0];
-               *addr2 = (CONFIG_SYS_FLASH_WORD_SIZE)0x00F000F0;        /* reset bank */
-       }
-
-       return (info->size);
-}
-
-
-int flash_erase(flash_info_t *info, int s_first, int s_last)
-{
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr = (CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[0]);
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr2;
-       int flag, prot, sect, l_sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN)
-                       printf ("- missing\n");
-               else
-                       printf ("- no sectors to erase\n");
-               return 1;
-       }
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("Can't erase unknown flash type - aborted\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect)
-               if (info->protect[sect])
-                       prot++;
-
-       if (prot)
-               printf ("- Warning: %d protected sectors will not be erased!\n", prot);
-       else
-               printf ("\n");
-
-       l_sect = -1;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       addr2 = (CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[sect]);
-                       if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_SST) {
-                               addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-                               addr[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-                               addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080;
-                               addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-                               addr[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-                               addr2[0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00300030;  /* sector erase */
-
-                               /* re-enable interrupts if necessary */
-                               if (flag) {
-                                       enable_interrupts();
-                                       flag = 0;
-                               }
-
-                               /* data polling for D7 */
-                               start = get_timer (0);
-                               while ((addr2[0] & (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) !=
-                                      (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) {
-                                       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT)
-                                               return (1);
-                               }
-                       } else {
-                               if (sect == s_first) {
-                                       addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-                                       addr[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-                                       addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080;
-                                       addr[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-                                       addr[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-                               }
-                               addr2[0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00300030;  /* sector erase */
-                       }
-                       l_sect = sect;
-               }
-       }
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* wait at least 80us - let's wait 1 ms */
-       udelay (1000);
-
-       /*
-        * We wait for the last triggered sector
-        */
-       if (l_sect < 0)
-               goto DONE;
-
-       start = get_timer (0);
-       last  = start;
-       addr = (CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[l_sect]);
-       while ((addr[0] & (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) != (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) {
-               if ((now = get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout\n");
-                       return 1;
-               }
-               /* show that we're waiting */
-               if ((now - last) > 1000) {      /* every second */
-                       putc ('.');
-                       last = now;
-               }
-       }
-
-DONE:
-       /* reset to read mode */
-       addr = (CONFIG_SYS_FLASH_WORD_SIZE *)info->start[0];
-       addr[0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00F000F0;       /* reset bank */
-
-       printf (" done\n");
-       return 0;
-}
-
-/*
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff(flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i)
-                       data = (data << 8) | *src++;
-               if ((rc = write_word(info, wp, data)) != 0)
-                       return (rc);
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0)
-               return (0);
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp)
-               data = (data << 8) | (*(uchar *)cp);
-
-       return (write_word(info, wp, data));
-}
-
-/*
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word(flash_info_t *info, ulong dest, ulong data)
-{
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *addr2 = (CONFIG_SYS_FLASH_WORD_SIZE *)(info->start[0]);
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *dest2 = (CONFIG_SYS_FLASH_WORD_SIZE *)dest;
-       volatile CONFIG_SYS_FLASH_WORD_SIZE *data2 = (CONFIG_SYS_FLASH_WORD_SIZE *)&data;
-       ulong start;
-       int flag;
-       int i;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*((vu_long *)dest) & data) != data)
-               return (2);
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       for (i=0; i<4/sizeof(CONFIG_SYS_FLASH_WORD_SIZE); i++) {
-               addr2[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00AA00AA;
-               addr2[CONFIG_SYS_FLASH_ADDR1] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00550055;
-               addr2[CONFIG_SYS_FLASH_ADDR0] = (CONFIG_SYS_FLASH_WORD_SIZE)0x00A000A0;
-
-               dest2[i] = data2[i];
-
-               /* re-enable interrupts if necessary */
-               if (flag)
-                       enable_interrupts();
-
-               /* data polling for D7 */
-               start = get_timer (0);
-               while ((dest2[i] & (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080) !=
-                      (data2[i] & (CONFIG_SYS_FLASH_WORD_SIZE)0x00800080)) {
-                       if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT)
-                               return (1);
-               }
-       }
-
-       return (0);
-}
diff --git a/board/pcs440ep/init.S b/board/pcs440ep/init.S
deleted file mode 100644 (file)
index c0e83de..0000000
+++ /dev/null
@@ -1,56 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm-offsets.h>
-#include <ppc_asm.tmpl>
-#include <asm/mmu.h>
-#include <config.h>
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- *  Pointer to the table is returned in r1
- *
- *************************************************************************/
-
-    .section .bootpg,"ax"
-    .globl tlbtab
-
-tlbtab:
-       tlbtab_start
-
-       /*
-        * BOOT_CS (FLASH) must be first. Before relocation SA_I can be off to use the
-        * speed up boot process. It is patched after relocation to enable SA_I
-        */
-       tlbentry( CONFIG_SYS_BOOT_BASE_ADDR, SZ_256M, CONFIG_SYS_BOOT_BASE_ADDR, 0, AC_RWX | SA_G/*|SA_I*/)
-
-       /* TLB-entry for init-ram in dcache (SA_I must be turned off!) */
-       tlbentry( CONFIG_SYS_INIT_RAM_ADDR, SZ_64K, CONFIG_SYS_INIT_RAM_ADDR, 0, AC_RWX | SA_G )
-
-       /*
-        * TLB entries for SDRAM are not needed on this platform.
-        * They are dynamically generated in the SPD DDR detection
-        * routine.
-        */
-
-       tlbentry( CONFIG_SYS_PCI_BASE, SZ_256M, CONFIG_SYS_PCI_BASE, 0, AC_RW | SA_IG )
-
-       /* PCI */
-       tlbentry( CONFIG_SYS_PCI_MEMBASE, SZ_256M, CONFIG_SYS_PCI_MEMBASE, 0, AC_RW | SA_IG )
-       tlbentry( CONFIG_SYS_PCI_MEMBASE1, SZ_256M, CONFIG_SYS_PCI_MEMBASE1, 0, AC_RW | SA_IG )
-       tlbentry( CONFIG_SYS_PCI_MEMBASE2, SZ_256M, CONFIG_SYS_PCI_MEMBASE2, 0, AC_RW | SA_IG )
-       tlbentry( CONFIG_SYS_PCI_MEMBASE3, SZ_256M, CONFIG_SYS_PCI_MEMBASE3, 0, AC_RW | SA_IG )
-
-       /* USB 2.0 Device */
-       tlbentry( CONFIG_SYS_USB_DEVICE, SZ_1K, 0x50000000, 0, AC_RW | SA_IG )
-
-       tlbtab_end
diff --git a/board/pcs440ep/pcs440ep.c b/board/pcs440ep/pcs440ep.c
deleted file mode 100644 (file)
index 267c001..0000000
+++ /dev/null
@@ -1,755 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/ppc4xx.h>
-#include <malloc.h>
-#include <command.h>
-#include <crc.h>
-#include <asm/processor.h>
-#include <spd_sdram.h>
-#include <status_led.h>
-#include <u-boot/sha1.h>
-#include <asm/io.h>
-#include <net.h>
-#include <ata.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips    */
-
-unsigned char  sha1_checksum[SHA1_SUM_LEN];
-
-/* swap 4 Bits (Bit0 = Bit3, Bit1 = Bit2, Bit2 = Bit1 and Bit3 = Bit0) */
-unsigned char swapbits[16] = {0x0, 0x8, 0x4, 0xc, 0x2, 0xa, 0x6, 0xe,
-                             0x1, 0x9, 0x5, 0xd, 0x3, 0xb, 0x7, 0xf};
-
-static void set_leds (int val)
-{
-       out32(GPIO0_OR, (in32 (GPIO0_OR) & ~0x78000000) | (val << 27));
-}
-
-#define GET_LEDS ((in32 (GPIO0_OR) & 0x78000000) >> 27)
-
-void __led_init (led_id_t mask, int state)
-{
-       int     val = GET_LEDS;
-
-       if (state == STATUS_LED_ON)
-               val |= mask;
-       else
-               val &= ~mask;
-       set_leds (val);
-}
-
-void __led_set (led_id_t mask, int state)
-{
-       int     val = GET_LEDS;
-
-       if (state == STATUS_LED_ON)
-               val |= mask;
-       else if (state == STATUS_LED_OFF)
-               val &= ~mask;
-       set_leds (val);
-}
-
-void __led_toggle (led_id_t mask)
-{
-       int     val = GET_LEDS;
-
-       val ^= mask;
-       set_leds (val);
-}
-
-static void status_led_blink (void)
-{
-       int     i;
-       int     val = GET_LEDS;
-
-       /* set all LED which are on, to state BLINKING */
-       for (i = 0; i < 4; i++) {
-               if (val & 0x01) status_led_set (3 - i, STATUS_LED_BLINKING);
-               else status_led_set (3 - i, STATUS_LED_OFF);
-               val = val >> 1;
-       }
-}
-
-#if defined(CONFIG_SHOW_BOOT_PROGRESS)
-void show_boot_progress (int val)
-{
-       /* find all valid Codes for val in README */
-       if (val == -BOOTSTAGE_ID_NEED_RESET)
-               return;
-       if (val < 0) {
-               /* smthing goes wrong */
-               status_led_blink ();
-               return;
-       }
-       switch (val) {
-       case BOOTSTAGE_ID_CHECK_MAGIC:
-               /* validating Image */
-               status_led_set(0, STATUS_LED_OFF);
-               status_led_set(1, STATUS_LED_ON);
-               status_led_set(2, STATUS_LED_ON);
-               break;
-       case BOOTSTAGE_ID_RUN_OS:
-               status_led_set(0, STATUS_LED_ON);
-               status_led_set(1, STATUS_LED_ON);
-               status_led_set(2, STATUS_LED_ON);
-               break;
-#if 0
-       case BOOTSTAGE_ID_NET_ETH_START:
-               /* starting Ethernet configuration */
-               status_led_set(0, STATUS_LED_OFF);
-               status_led_set(1, STATUS_LED_OFF);
-               status_led_set(2, STATUS_LED_ON);
-               break;
-#endif
-       case BOOTSTAGE_ID_NET_START:
-               /* loading Image */
-               status_led_set(0, STATUS_LED_ON);
-               status_led_set(1, STATUS_LED_OFF);
-               status_led_set(2, STATUS_LED_ON);
-               break;
-       }
-}
-#endif
-
-int board_early_init_f(void)
-{
-       register uint reg;
-
-       set_leds(0);                    /* display boot info counter */
-
-       /*--------------------------------------------------------------------
-        * Setup the external bus controller/chip selects
-        *-------------------------------------------------------------------*/
-       mtdcr(EBC0_CFGADDR, EBC0_CFG);
-       reg = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGDATA, reg | 0x04000000);  /* Set ATC */
-
-       /*--------------------------------------------------------------------
-        * GPIO's are alreay setup in arch/powerpc/cpu/ppc4xx/cpu_init.c
-        * via define from board config file.
-        *-------------------------------------------------------------------*/
-
-       /*--------------------------------------------------------------------
-        * Setup the interrupt controller polarities, triggers, etc.
-        *-------------------------------------------------------------------*/
-       mtdcr(UIC0SR, 0xffffffff);      /* clear all */
-       mtdcr(UIC0ER, 0x00000000);      /* disable all */
-       mtdcr(UIC0CR, 0x00000001);      /* UIC1 crit is critical */
-       mtdcr(UIC0PR, 0xfffffe1f);      /* per ref-board manual */
-       mtdcr(UIC0TR, 0x01c00000);      /* per ref-board manual */
-       mtdcr(UIC0VR, 0x00000001);      /* int31 highest, base=0x000 */
-       mtdcr(UIC0SR, 0xffffffff);      /* clear all */
-
-       mtdcr(UIC1SR, 0xffffffff);      /* clear all */
-       mtdcr(UIC1ER, 0x00000000);      /* disable all */
-       mtdcr(UIC1CR, 0x00000000);      /* all non-critical */
-       mtdcr(UIC1PR, 0xffffe0ff);      /* per ref-board manual */
-       mtdcr(UIC1TR, 0x00ffc000);      /* per ref-board manual */
-       mtdcr(UIC1VR, 0x00000001);      /* int31 highest, base=0x000 */
-       mtdcr(UIC1SR, 0xffffffff);      /* clear all */
-
-       /*--------------------------------------------------------------------
-        * Setup other serial configuration
-        *-------------------------------------------------------------------*/
-       mfsdr(SDR0_PCI0, reg);
-       mtsdr(SDR0_PCI0, 0x80000000 | reg);     /* PCI arbiter enabled */
-       mtsdr(SDR0_PFC0, 0x00000000);   /* Pin function: enable GPIO49-63 */
-       mtsdr(SDR0_PFC1, 0x00048000);   /* Pin function: UART0 has 4 pins, select IRQ5 */
-
-       return 0;
-}
-
-#define EEPROM_LEN     256
-static void load_ethaddr(void)
-{
-       int     ok_ethaddr, ok_eth1addr;
-       int     ret;
-       uchar   buf[EEPROM_LEN];
-       char    *use_eeprom;
-       u16     checksumcrc16 = 0;
-
-       /* If the env is sane, then nothing for us to do */
-       ok_ethaddr = eth_getenv_enetaddr("ethaddr", buf);
-       ok_eth1addr = eth_getenv_enetaddr("eth1addr", buf);
-       if (ok_ethaddr && ok_eth1addr)
-               return;
-
-       /* read the MACs from EEprom */
-       status_led_set (0, STATUS_LED_ON);
-       status_led_set (1, STATUS_LED_ON);
-       ret = eeprom_read (CONFIG_SYS_I2C_EEPROM_ADDR, 0, buf, EEPROM_LEN);
-       if (ret == 0) {
-               checksumcrc16 = cyg_crc16 (buf, EEPROM_LEN - 2);
-               /* check, if the EEprom is programmed:
-                * - The Prefix(Byte 0,1,2) is equal to "ATR"
-                * - The checksum, stored in the last 2 Bytes, is correct
-                */
-               if ((strncmp ((char *)buf,"ATR",3) != 0) ||
-                   ((checksumcrc16 >> 8) != buf[EEPROM_LEN - 2]) ||
-                   ((checksumcrc16 & 0xff) != buf[EEPROM_LEN - 1])) {
-                       /* EEprom is not programmed */
-                       printf("%s: EEPROM Checksum not OK\n", __FUNCTION__);
-               } else {
-                       /* get the MACs */
-                       if (!ok_ethaddr)
-                               eth_setenv_enetaddr("ethaddr", &buf[3]);
-                       if (!ok_eth1addr)
-                               eth_setenv_enetaddr("eth1addr", &buf[9]);
-                       return;
-               }
-       }
-
-       /* some error reading the EEprom */
-       if ((use_eeprom = getenv ("use_eeprom_ethaddr")) == NULL) {
-               /* dont use bootcmd */
-               setenv("bootdelay", "-1");
-               return;
-       }
-       /* == default ? use standard */
-       if (strncmp (use_eeprom, "default", 7) == 0) {
-               return;
-       }
-       /* Env doesnt exist -> hang */
-       status_led_blink ();
-       /* here we do this "handy" because we have no interrupts
-          at this time */
-       puts ("### EEPROM ERROR ### Please RESET the board ###\n");
-       for (;;) {
-               __led_toggle (12);
-               udelay (100000);
-       }
-       return;
-}
-
-#ifdef CONFIG_PREBOOT
-
-static uchar kbd_magic_prefix[]                = "key_magic";
-static uchar kbd_command_prefix[]      = "key_cmd";
-
-struct kbd_data_t {
-       char s1;
-       char s2;
-};
-
-struct kbd_data_t* get_keys (struct kbd_data_t *kbd_data)
-{
-       char *val;
-       unsigned long tmp;
-
-       /* use the DIPs for some bootoptions */
-       val = getenv (ENV_NAME_DIP);
-       tmp = simple_strtoul (val, NULL, 16);
-
-       kbd_data->s2 = (tmp & 0x0f);
-       kbd_data->s1 = (tmp & 0xf0) >> 4;
-       return kbd_data;
-}
-
-static int compare_magic (const struct kbd_data_t *kbd_data, char *str)
-{
-       char s1 = str[0];
-
-       if (s1 >= '0' && s1 <= '9')
-               s1 -= '0';
-       else if (s1 >= 'a' && s1 <= 'f')
-               s1 = s1 - 'a' + 10;
-       else if (s1 >= 'A' && s1 <= 'F')
-               s1 = s1 - 'A' + 10;
-       else
-               return -1;
-
-       if (s1 != kbd_data->s1) return -1;
-
-       s1 = str[1];
-       if (s1 >= '0' && s1 <= '9')
-               s1 -= '0';
-       else if (s1 >= 'a' && s1 <= 'f')
-               s1 = s1 - 'a' + 10;
-       else if (s1 >= 'A' && s1 <= 'F')
-               s1 = s1 - 'A' + 10;
-       else
-               return -1;
-
-       if (s1 != kbd_data->s2) return -1;
-       return 0;
-}
-
-static char *key_match (const struct kbd_data_t *kbd_data)
-{
-       char magic[sizeof (kbd_magic_prefix) + 1];
-       char *suffix;
-       char *kbd_magic_keys;
-
-       /*
-        * The following string defines the characters that can be appended
-        * to "key_magic" to form the names of environment variables that
-        * hold "magic" key codes, i. e. such key codes that can cause
-        * pre-boot actions. If the string is empty (""), then only
-        * "key_magic" is checked (old behaviour); the string "125" causes
-        * checks for "key_magic1", "key_magic2" and "key_magic5", etc.
-        */
-       if ((kbd_magic_keys = getenv ("magic_keys")) == NULL)
-               kbd_magic_keys = "";
-
-       /* loop over all magic keys;
-        * use '\0' suffix in case of empty string
-        */
-       for (suffix = kbd_magic_keys; *suffix ||
-                    suffix == kbd_magic_keys; ++suffix) {
-               sprintf (magic, "%s%c", kbd_magic_prefix, *suffix);
-               if (compare_magic (kbd_data, getenv (magic)) == 0) {
-                       char cmd_name[sizeof (kbd_command_prefix) + 1];
-                       char *cmd;
-
-                       sprintf (cmd_name, "%s%c", kbd_command_prefix, *suffix);
-                       cmd = getenv (cmd_name);
-
-                       return (cmd);
-               }
-       }
-       return (NULL);
-}
-
-#endif /* CONFIG_PREBOOT */
-
-static int pcs440ep_readinputs (void)
-{
-       int     i;
-       char    value[20];
-
-       /* read the inputs and set the Envvars */
-       /* Revision Level Bit 26 - 29 */
-       i = ((in32 (GPIO0_IR) & 0x0000003c) >> 2);
-       i = swapbits[i];
-       sprintf (value, "%02x", i);
-       setenv (ENV_NAME_REVLEV, value);
-       /* Solder Switch Bit 30 - 33 */
-       i = (in32 (GPIO0_IR) & 0x00000003) << 2;
-       i += (in32 (GPIO1_IR) & 0xc0000000) >> 30;
-       i = swapbits[i];
-       sprintf (value, "%02x", i);
-       setenv (ENV_NAME_SOLDER, value);
-       /* DIP Switch Bit 49 - 56 */
-       i = ((in32 (GPIO1_IR) & 0x00007f80) >> 7);
-       i = (swapbits[i & 0x0f] << 4) + swapbits[(i & 0xf0) >> 4];
-       sprintf (value, "%02x", i);
-       setenv (ENV_NAME_DIP, value);
-       return 0;
-}
-
-
-#if defined(CONFIG_SHA1_CHECK_UB_IMG)
-/*************************************************************************
- * calculate a SHA1 sum for the U-Boot image in Flash.
- *
- ************************************************************************/
-static int pcs440ep_sha1 (int docheck)
-{
-       unsigned char *data;
-       unsigned char *ptroff;
-       unsigned char output[20];
-       unsigned char org[20];
-       int     i, len = CONFIG_SHA1_LEN;
-
-       memcpy ((char *)CONFIG_SYS_LOAD_ADDR, (char *)CONFIG_SHA1_START, len);
-       data = (unsigned char *)CONFIG_SYS_LOAD_ADDR;
-       ptroff = &data[len + SHA1_SUM_POS];
-
-       for (i = 0; i < SHA1_SUM_LEN; i++) {
-               org[i] = ptroff[i];
-               ptroff[i] = 0;
-       }
-
-       sha1_csum ((unsigned char *) data, len, (unsigned char *)output);
-
-       if (docheck == 2) {
-               for (i = 0; i < 20 ; i++) {
-                       printf("%02X ", output[i]);
-               }
-               printf("\n");
-       }
-       if (docheck == 1) {
-               for (i = 0; i < 20 ; i++) {
-                       if (org[i] != output[i]) return 1;
-               }
-       }
-       return 0;
-}
-
-/*************************************************************************
- * do some checks after the SHA1 checksum from the U-Boot Image was
- * calculated.
- *
- ************************************************************************/
-static void pcs440ep_checksha1 (void)
-{
-       int     ret;
-       char    *cs_test;
-
-       status_led_set (0, STATUS_LED_OFF);
-       status_led_set (1, STATUS_LED_OFF);
-       status_led_set (2, STATUS_LED_ON);
-       ret = pcs440ep_sha1 (1);
-       if (ret == 0) return;
-
-       if ((cs_test = getenv ("cs_test")) == NULL) {
-               /* Env doesnt exist -> hang */
-               status_led_blink ();
-               /* here we do this "handy" because we have no interrupts
-                  at this time */
-               puts ("### SHA1 ERROR ### Please RESET the board ###\n");
-               for (;;) {
-                       __led_toggle (2);
-                       udelay (100000);
-               }
-       }
-
-       if (strncmp (cs_test, "off", 3) == 0) {
-               printf ("SHA1 U-Boot sum NOT ok!\n");
-               setenv ("bootdelay", "-1");
-       }
-}
-#else
-static __inline__ void pcs440ep_checksha1 (void) { do {} while (0);}
-#endif
-
-int misc_init_r (void)
-{
-       uint pbcr;
-       int size_val = 0;
-
-       load_ethaddr();
-
-       /* Re-do sizing to get full correct info */
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       pbcr = mfdcr(EBC0_CFGDATA);
-       switch (gd->bd->bi_flashsize) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       case 32 << 20:
-               size_val = 5;
-               break;
-       case 64 << 20:
-               size_val = 6;
-               break;
-       case 128 << 20:
-               size_val = 7;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | gd->bd->bi_flashstart | (size_val << 17);
-       mtdcr(EBC0_CFGADDR, PB0CR);
-       mtdcr(EBC0_CFGDATA, pbcr);
-
-       /* adjust flash start and offset */
-       gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
-       gd->bd->bi_flashoffset = 0;
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[1]);
-
-       /* Env protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           CONFIG_ENV_ADDR_REDUND,
-                           CONFIG_ENV_ADDR_REDUND + 2*CONFIG_ENV_SECT_SIZE - 1,
-                           &flash_info[1]);
-
-       pcs440ep_readinputs ();
-       pcs440ep_checksha1 ();
-#ifdef CONFIG_PREBOOT
-       {
-               struct kbd_data_t kbd_data;
-               /* Decode keys */
-               char *str = strdup (key_match (get_keys (&kbd_data)));
-               /* Set or delete definition */
-               setenv ("preboot", str);
-               free (str);
-       }
-#endif /* CONFIG_PREBOOT */
-       return 0;
-}
-
-int checkboard(void)
-{
-       char buf[64];
-       int i = getenv_f("serial#", buf, sizeof(buf));
-
-       printf("Board: PCS440EP");
-       if (i > 0) {
-               puts(", serial# ");
-               puts(buf);
-       }
-       putc('\n');
-
-       return (0);
-}
-
-void spd_ddr_init_hang (void)
-{
-       status_led_set (0, STATUS_LED_OFF);
-       status_led_set (1, STATUS_LED_ON);
-       /* we cannot use hang() because we are still running from
-          Flash, and so the status_led driver is not initialized */
-       puts ("### SDRAM ERROR ### Please RESET the board ###\n");
-       for (;;) {
-               __led_toggle (4);
-               udelay (100000);
-       }
-}
-
-phys_size_t initdram (int board_type)
-{
-       long dram_size = 0;
-
-       status_led_set (0, STATUS_LED_ON);
-       status_led_set (1, STATUS_LED_OFF);
-       dram_size = spd_sdram();
-       status_led_set (0, STATUS_LED_OFF);
-       status_led_set (1, STATUS_LED_ON);
-       if (dram_size == 0) {
-               hang();
-       }
-
-       return dram_size;
-}
-
-/*************************************************************************
- *  hw_watchdog_reset
- *
- *     This routine is called to reset (keep alive) the watchdog timer
- *
- ************************************************************************/
-#if defined(CONFIG_HW_WATCHDOG)
-void hw_watchdog_reset(void)
-{
-
-}
-#endif
-
-/*************************************************************************
- * "led" Commando for the U-Boot shell
- *
- ************************************************************************/
-int do_led (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int     rcode = 0, i;
-       ulong   pattern = 0;
-
-       pattern = simple_strtoul (argv[1], NULL, 16);
-       if (pattern > 0x400) {
-               int     val = GET_LEDS;
-               printf ("led: %x\n", val);
-               return rcode;
-       }
-       if (pattern > 0x200) {
-               status_led_blink ();
-               hang ();
-               return rcode;
-       }
-       if (pattern > 0x100) {
-               status_led_blink ();
-               return rcode;
-       }
-       pattern &= 0x0f;
-       for (i = 0; i < 4; i++) {
-               if (pattern & 0x01) status_led_set (i, STATUS_LED_ON);
-               else status_led_set (i, STATUS_LED_OFF);
-               pattern = pattern >> 1;
-       }
-       return rcode;
-}
-
-U_BOOT_CMD(
-       led,    2,      1,      do_led,
-       "set the DIAG-LED",
-       "[bitmask] 0x01 = DIAG 1 on\n"
-       "              0x02 = DIAG 2 on\n"
-       "              0x04 = DIAG 3 on\n"
-       "              0x08 = DIAG 4 on\n"
-       "              > 0x100 set the LED, who are on, to state blinking"
-);
-
-#if defined(CONFIG_SHA1_CHECK_UB_IMG)
-/*************************************************************************
- * "sha1" Commando for the U-Boot shell
- *
- ************************************************************************/
-int do_sha1 (cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int     rcode = -1;
-
-       if (argc < 2) {
-usage:
-               return cmd_usage(cmdtp);
-       }
-
-       if (argc >= 3) {
-               unsigned char *data;
-               unsigned char output[20];
-               int     len;
-               int     i;
-
-               data = (unsigned char *)simple_strtoul (argv[1], NULL, 16);
-               len = simple_strtoul (argv[2], NULL, 16);
-               sha1_csum (data, len, (unsigned char *)output);
-               printf ("U-Boot sum:\n");
-               for (i = 0; i < 20 ; i++) {
-                       printf ("%02X ", output[i]);
-               }
-               printf ("\n");
-               if (argc == 4) {
-                       data = (unsigned char *)simple_strtoul (argv[3], NULL, 16);
-                       memcpy (data, output, 20);
-               }
-               return 0;
-       }
-       if (argc == 2) {
-               char *ptr = argv[1];
-               if (*ptr != '-') goto usage;
-               ptr++;
-               if ((*ptr == 'c') || (*ptr == 'C')) {
-                       rcode = pcs440ep_sha1 (1);
-                       printf ("SHA1 U-Boot sum %sok!\n", (rcode != 0) ? "not " : "");
-               } else if ((*ptr == 'p') || (*ptr == 'P')) {
-                       rcode = pcs440ep_sha1 (2);
-               } else {
-                       rcode = pcs440ep_sha1 (0);
-               }
-               return rcode;
-       }
-       return rcode;
-}
-
-U_BOOT_CMD(
-       sha1,   4,      1,      do_sha1,
-       "calculate the SHA1 Sum",
-       "address len [addr]  calculate the SHA1 sum [save at addr]\n"
-       "     -p calculate the SHA1 sum from the U-Boot image in flash and print\n"
-       "     -c check the U-Boot image in flash"
-);
-#endif
-
-#if defined (CONFIG_CMD_IDE)
-/* These addresses need to be shifted one place to the left
- * ( bus per_addr 20 -30 is connectsd on CF bus A10-A0)
- * These values are shifted
- */
-void inline ide_outb(int dev, int port, unsigned char val)
-{
-       debug ("ide_outb (dev= %d, port= 0x%x, val= 0x%02x) : @ 0x%08lx\n",
-               dev, port, val, (ATA_CURR_BASE(dev)+port));
-
-       out_be16((u16 *)(ATA_CURR_BASE(dev)+(port << 1)), val);
-}
-unsigned char inline ide_inb(int dev, int port)
-{
-       uchar val;
-       val = in_be16((u16 *)(ATA_CURR_BASE(dev)+(port << 1)));
-       debug ("ide_inb (dev= %d, port= 0x%x) : @ 0x%08lx -> 0x%02x\n",
-               dev, port, (ATA_CURR_BASE(dev)+port), val);
-       return (val);
-}
-#endif
-
-#ifdef CONFIG_IDE_PREINIT
-int ide_preinit (void)
-{
-       /* Set True IDE Mode */
-       out32 (GPIO0_OR, (in32 (GPIO0_OR) | 0x00100000));
-       out32 (GPIO0_OR, (in32 (GPIO0_OR) | 0x00200000));
-       out32 (GPIO1_OR, (in32 (GPIO1_OR) & ~0x00008040));
-       udelay (100000);
-       return 0;
-}
-#endif
-
-#if defined (CONFIG_CMD_IDE) && defined (CONFIG_IDE_RESET)
-void ide_set_reset (int idereset)
-{
-       debug ("ide_reset(%d)\n", idereset);
-       if (idereset == 0) {
-               out32 (GPIO0_OR, (in32 (GPIO0_OR) | 0x00200000));
-       } else {
-               out32 (GPIO0_OR, (in32 (GPIO0_OR) & ~0x00200000));
-       }
-       udelay (10000);
-}
-#endif /* defined (CONFIG_CMD_IDE) && defined (CONFIG_IDE_RESET) */
-
-
-/* this is motly the same as it should, causing a little code duplication */
-#if defined(CONFIG_CMD_IDE)
-#define EIEIO          __asm__ volatile ("eieio")
-
-void ide_input_swap_data(int dev, ulong *sect_buf, int words)
-{
-       volatile ushort *pbuf =
-               (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
-       ushort *dbuf = (ushort *) sect_buf;
-
-       debug("in input swap data base for read is %lx\n",
-               (unsigned long) pbuf);
-
-       while (words--) {
-               *dbuf++ = *pbuf;
-               *dbuf++ = *pbuf;
-       }
-}
-
-void ide_output_data(int dev, const ulong *sect_buf, int words)
-{
-       ushort *dbuf;
-       volatile ushort *pbuf;
-
-       pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
-       dbuf = (ushort *) sect_buf;
-       while (words--) {
-               EIEIO;
-               *pbuf = ld_le16(dbuf++);
-               EIEIO;
-               *pbuf = ld_le16(dbuf++);
-       }
-}
-
-void ide_input_data(int dev, ulong *sect_buf, int words)
-{
-       ushort *dbuf;
-       volatile ushort *pbuf;
-
-       pbuf = (ushort *) (ATA_CURR_BASE(dev) + ATA_DATA_REG);
-       dbuf = (ushort *) sect_buf;
-
-       debug("in input data base for read is %lx\n", (unsigned long) pbuf);
-
-       while (words--) {
-               EIEIO;
-               *dbuf++ = ld_le16(pbuf);
-               EIEIO;
-               *dbuf++ = ld_le16(pbuf);
-       }
-}
-
-#endif
diff --git a/board/prodrive/alpr/Kconfig b/board/prodrive/alpr/Kconfig
deleted file mode 100644 (file)
index 543b455..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_ALPR
-
-config SYS_BOARD
-       default "alpr"
-
-config SYS_VENDOR
-       default "prodrive"
-
-config SYS_CONFIG_NAME
-       default "alpr"
-
-endif
diff --git a/board/prodrive/alpr/MAINTAINERS b/board/prodrive/alpr/MAINTAINERS
deleted file mode 100644 (file)
index 31baabb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ALPR BOARD
-M:     Stefan Roese <sr@denx.de>
-S:     Maintained
-F:     board/prodrive/alpr/
-F:     include/configs/alpr.h
-F:     configs/alpr_defconfig
diff --git a/board/prodrive/alpr/Makefile b/board/prodrive/alpr/Makefile
deleted file mode 100644 (file)
index 812d041..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = alpr.o fpga.o nand.o
-extra-y        += init.o
diff --git a/board/prodrive/alpr/alpr.c b/board/prodrive/alpr/alpr.c
deleted file mode 100644 (file)
index 31c1ab5..0000000
+++ /dev/null
@@ -1,215 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <common.h>
-#include <libfdt.h>
-#include <fdt_support.h>
-#include <spd_sdram.h>
-#include <asm/ppc4xx-emac.h>
-#include <miiphy.h>
-#include <asm/processor.h>
-#include <asm/4xx_pci.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-extern int alpr_fpga_init(void);
-
-int board_early_init_f (void)
-{
-       /*-------------------------------------------------------------------------
-        * Initialize EBC CONFIG
-        *-------------------------------------------------------------------------*/
-       mtebc(EBC0_CFG, EBC_CFG_LE_UNLOCK |
-             EBC_CFG_PTD_DISABLE | EBC_CFG_RTC_64PERCLK |
-             EBC_CFG_ATC_PREVIOUS | EBC_CFG_DTC_PREVIOUS |
-             EBC_CFG_CTC_PREVIOUS | EBC_CFG_EMC_NONDEFAULT |
-             EBC_CFG_PME_DISABLE | EBC_CFG_PR_32);
-
-       /*--------------------------------------------------------------------
-        * Setup the interrupt controller polarities, triggers, etc.
-        *-------------------------------------------------------------------*/
-       /*
-        * Because of the interrupt handling rework to handle 440GX interrupts
-        * with the common code, we needed to change names of the UIC registers.
-        * Here the new relationship:
-        *
-        * U-Boot name  440GX name
-        * -----------------------
-        * UIC0         UICB0
-        * UIC1         UIC0
-        * UIC2         UIC1
-        * UIC3         UIC2
-        */
-       mtdcr (UIC1SR, 0xffffffff);     /* clear all */
-       mtdcr (UIC1ER, 0x00000000);     /* disable all */
-       mtdcr (UIC1CR, 0x00000009);     /* SMI & UIC1 crit are critical */
-       mtdcr (UIC1PR, 0xfffffe03);     /* per manual */
-       mtdcr (UIC1TR, 0x01c00000);     /* per manual */
-       mtdcr (UIC1VR, 0x00000001);     /* int31 highest, base=0x000 */
-       mtdcr (UIC1SR, 0xffffffff);     /* clear all */
-
-       mtdcr (UIC2SR, 0xffffffff);     /* clear all */
-       mtdcr (UIC2ER, 0x00000000);     /* disable all */
-       mtdcr (UIC2CR, 0x00000000);     /* all non-critical */
-       mtdcr (UIC2PR, 0xffffe0ff);     /* per ref-board manual */
-       mtdcr (UIC2TR, 0x00ffc000);     /* per ref-board manual */
-       mtdcr (UIC2VR, 0x00000001);     /* int31 highest, base=0x000 */
-       mtdcr (UIC2SR, 0xffffffff);     /* clear all */
-
-       mtdcr (UIC3SR, 0xffffffff);     /* clear all */
-       mtdcr (UIC3ER, 0x00000000);     /* disable all */
-       mtdcr (UIC3CR, 0x00000000);     /* all non-critical */
-       mtdcr (UIC3PR, 0xffffffff);     /* per ref-board manual */
-       mtdcr (UIC3TR, 0x00ff8c0f);     /* per ref-board manual */
-       mtdcr (UIC3VR, 0x00000001);     /* int31 highest, base=0x000 */
-       mtdcr (UIC3SR, 0xffffffff);     /* clear all */
-
-       mtdcr (UIC0SR, 0xfc000000); /* clear all */
-       mtdcr (UIC0ER, 0x00000000); /* disable all */
-       mtdcr (UIC0CR, 0x00000000); /* all non-critical */
-       mtdcr (UIC0PR, 0xfc000000); /* */
-       mtdcr (UIC0TR, 0x00000000); /* */
-       mtdcr (UIC0VR, 0x00000001); /* */
-
-       /* Setup shutdown/SSD empty interrupt as inputs */
-       out32(GPIO0_TCR, in32(GPIO0_TCR) & ~(CONFIG_SYS_GPIO_SHUTDOWN | CONFIG_SYS_GPIO_SSD_EMPTY));
-       out32(GPIO0_ODR, in32(GPIO0_ODR) & ~(CONFIG_SYS_GPIO_SHUTDOWN | CONFIG_SYS_GPIO_SSD_EMPTY));
-
-       /* Setup GPIO/IRQ multiplexing */
-       mtsdr(SDR0_PFC0, 0x01a33e00);
-
-       return 0;
-}
-
-int last_stage_init(void)
-{
-       unsigned short reg;
-
-       /*
-        * Configure LED's of both Marvell 88E1111 PHY's
-        *
-        * This has to be done after the 4xx ethernet driver is loaded,
-        * so "last_stage_init()" is the right place.
-        */
-       miiphy_read("ppc_4xx_eth2", CONFIG_PHY2_ADDR, 0x18, &reg);
-       reg |= 0x0001;
-       miiphy_write("ppc_4xx_eth2", CONFIG_PHY2_ADDR, 0x18, reg);
-       miiphy_read("ppc_4xx_eth3", CONFIG_PHY3_ADDR, 0x18, &reg);
-       reg |= 0x0001;
-       miiphy_write("ppc_4xx_eth3", CONFIG_PHY3_ADDR, 0x18, reg);
-
-       return 0;
-}
-
-static int board_rev(void)
-{
-       /* Setup as input */
-       out32(GPIO0_TCR, in32(GPIO0_TCR) & ~(CONFIG_SYS_GPIO_REV0 | CONFIG_SYS_GPIO_REV1));
-       out32(GPIO0_ODR, in32(GPIO0_ODR) & ~(CONFIG_SYS_GPIO_REV0 | CONFIG_SYS_GPIO_REV1));
-
-       return (in32(GPIO0_IR) >> 16) & 0x3;
-}
-
-int checkboard (void)
-{
-       char buf[64];
-       int i = getenv_f("serial#", buf, sizeof(buf));
-
-       printf ("Board: ALPR");
-       if (i > 0) {
-               puts(", serial# ");
-               puts(buf);
-       }
-       printf(" (Rev. %d)\n", board_rev());
-
-       return (0);
-}
-
-#if defined(CONFIG_PCI)
-/*
- * Override weak pci_pre_init()
- */
-int pci_pre_init(struct pci_controller *hose)
-{
-       if (__pci_pre_init(hose) == 0)
-               return 0;
-
-       /* FPGA Init */
-       alpr_fpga_init();
-
-       return 1;
-}
-
-/*************************************************************************
- * Override weak is_pci_host()
- *
- *     This routine is called to determine if a pci scan should be
- *     performed. With various hardware environments (especially cPCI and
- *     PPMC) it's insufficient to depend on the state of the arbiter enable
- *     bit in the strap register, or generic host/adapter assumptions.
- *
- *     Rather than hard-code a bad assumption in the general 440 code, the
- *     440 pci code requires the board to decide at runtime.
- *
- *     Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-static void wait_for_pci_ready(void)
-{
-       /*
-        * Configure EREADY as input
-        */
-       out32(GPIO0_TCR, in32(GPIO0_TCR) & ~CONFIG_SYS_GPIO_EREADY);
-       udelay(1000);
-
-       for (;;) {
-               if (in32(GPIO0_IR) & CONFIG_SYS_GPIO_EREADY)
-                       return;
-       }
-
-}
-
-int is_pci_host(struct pci_controller *hose)
-{
-       wait_for_pci_ready();
-       return 1;               /* return 1 for host controller */
-}
-#endif /* defined(CONFIG_PCI) */
-
-/*************************************************************************
- *  pci_master_init
- *
- ************************************************************************/
-#if defined(CONFIG_PCI) && defined(CONFIG_SYS_PCI_MASTER_INIT)
-void pci_master_init(struct pci_controller *hose)
-{
-       /*--------------------------------------------------------------------------+
-         | PowerPC440 PCI Master configuration.
-         | Map PLB/processor addresses to PCI memory space.
-         |   PLB address 0xA0000000-0xCFFFFFFF ==> PCI address 0x80000000-0xCFFFFFFF
-         |   Use byte reversed out routines to handle endianess.
-         | Make this region non-prefetchable.
-         +--------------------------------------------------------------------------*/
-       out32r( PCIL0_POM0SA, 0 ); /* disable */
-       out32r( PCIL0_POM1SA, 0 ); /* disable */
-       out32r( PCIL0_POM2SA, 0 ); /* disable */
-
-       out32r(PCIL0_POM0LAL, CONFIG_SYS_PCI_MEMBASE);  /* PMM0 Local Address */
-       out32r(PCIL0_POM0LAH, 0x00000003);      /* PMM0 Local Address */
-       out32r(PCIL0_POM0PCIAL, CONFIG_SYS_PCI_MEMBASE);        /* PMM0 PCI Low Address */
-       out32r(PCIL0_POM0PCIAH, 0x00000000);    /* PMM0 PCI High Address */
-       out32r(PCIL0_POM0SA, ~(0x10000000 - 1) | 1);    /* 256MB + enable region */
-
-       out32r(PCIL0_POM1LAL, CONFIG_SYS_PCI_MEMBASE2); /* PMM0 Local Address */
-       out32r(PCIL0_POM1LAH, 0x00000003);      /* PMM0 Local Address */
-       out32r(PCIL0_POM1PCIAL, CONFIG_SYS_PCI_MEMBASE2);       /* PMM0 PCI Low Address */
-       out32r(PCIL0_POM1PCIAH, 0x00000000);    /* PMM0 PCI High Address */
-       out32r(PCIL0_POM1SA, ~(0x10000000 - 1) | 1);    /* 256MB + enable region */
-}
-#endif                         /* defined(CONFIG_PCI) && defined(CONFIG_SYS_PCI_MASTER_INIT) */
diff --git a/board/prodrive/alpr/config.mk b/board/prodrive/alpr/config.mk
deleted file mode 100644 (file)
index 0ccb2e6..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# (C) Copyright 2004
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/prodrive/alpr/fpga.c b/board/prodrive/alpr/fpga.c
deleted file mode 100644 (file)
index 3133f94..0000000
+++ /dev/null
@@ -1,239 +0,0 @@
-/*
- * (C) Copyright 2006
- * Heiko Schocher, DENX Software Engineering, hs@denx.de
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * Altera FPGA configuration support for the ALPR computer from prodrive
- */
-
-#include <common.h>
-#include <altera.h>
-#include <ACEX1K.h>
-#include <command.h>
-#include <asm/processor.h>
-#include <asm/ppc440.h>
-#include "fpga.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#if defined(CONFIG_FPGA)
-
-#ifdef FPGA_DEBUG
-#define        PRINTF(fmt, args...)    printf(fmt , ##args)
-#else
-#define        PRINTF(fmt, args...)
-#endif
-
-static unsigned long regval;
-
-#define SET_GPIO_REG_0(reg, bit) do {                          \
-               regval = in32(reg);                             \
-               regval &= ~(0x80000000 >> bit);                 \
-               out32(reg, regval);                             \
-       } while (0)
-
-#define SET_GPIO_REG_1(reg, bit) do {                          \
-               regval = in32(reg);                             \
-               regval |= (0x80000000 >> bit);                  \
-               out32(reg, regval);                             \
-       } while (0)
-
-#define        SET_GPIO_0(bit)         SET_GPIO_REG_0(GPIO0_OR, bit)
-#define        SET_GPIO_1(bit)         SET_GPIO_REG_1(GPIO0_OR, bit)
-
-#define FPGA_PRG               (0x80000000 >> CONFIG_SYS_GPIO_PROG_EN)
-#define FPGA_CONFIG            (0x80000000 >> CONFIG_SYS_GPIO_CONFIG)
-#define FPGA_DATA              (0x80000000 >> CONFIG_SYS_GPIO_DATA)
-#define FPGA_CLK               (0x80000000 >> CONFIG_SYS_GPIO_CLK)
-#define OLD_VAL                        (FPGA_PRG | FPGA_CONFIG)
-
-#define SET_FPGA(data)         out32(GPIO0_OR, data)
-
-#define FPGA_WRITE_1 do {                                                          \
-       SET_FPGA(OLD_VAL | 0        | FPGA_DATA);       /* set data to 1 */ \
-       SET_FPGA(OLD_VAL | FPGA_CLK | FPGA_DATA);       /* set data to 1 */ \
-} while (0)
-
-#define FPGA_WRITE_0 do {                                                          \
-       SET_FPGA(OLD_VAL | 0        | 0);               /* set data to 0 */ \
-       SET_FPGA(OLD_VAL | FPGA_CLK | 0);               /* set data to 1 */ \
-} while (0)
-
-/* Plattforminitializations */
-/* Here we have to set the FPGA Chain */
-/* PROGRAM_PROG_EN     = HIGH */
-/* PROGRAM_SEL_DPR     = LOW */
-int fpga_pre_fn(int cookie)
-{
-       /* Enable the FPGA Chain */
-       SET_GPIO_REG_1(GPIO0_TCR, CONFIG_SYS_GPIO_PROG_EN);
-       SET_GPIO_REG_0(GPIO0_ODR, CONFIG_SYS_GPIO_PROG_EN);
-       SET_GPIO_1(CONFIG_SYS_GPIO_PROG_EN);
-       SET_GPIO_REG_1(GPIO0_TCR, CONFIG_SYS_GPIO_SEL_DPR);
-       SET_GPIO_REG_0(GPIO0_ODR, CONFIG_SYS_GPIO_SEL_DPR);
-       SET_GPIO_0((CONFIG_SYS_GPIO_SEL_DPR));
-
-       /* initialize the GPIO Pins */
-       /* output */
-       SET_GPIO_0(CONFIG_SYS_GPIO_CLK);
-       SET_GPIO_REG_1(GPIO0_TCR, CONFIG_SYS_GPIO_CLK);
-       SET_GPIO_REG_0(GPIO0_ODR, CONFIG_SYS_GPIO_CLK);
-
-       /* output */
-       SET_GPIO_0(CONFIG_SYS_GPIO_DATA);
-       SET_GPIO_REG_1(GPIO0_TCR, CONFIG_SYS_GPIO_DATA);
-       SET_GPIO_REG_0(GPIO0_ODR, CONFIG_SYS_GPIO_DATA);
-
-       /* First we set STATUS to 0 then as an input */
-       SET_GPIO_REG_1(GPIO0_TCR, CONFIG_SYS_GPIO_STATUS);
-       SET_GPIO_REG_0(GPIO0_ODR, CONFIG_SYS_GPIO_STATUS);
-       SET_GPIO_0(CONFIG_SYS_GPIO_STATUS);
-       SET_GPIO_REG_0(GPIO0_TCR, CONFIG_SYS_GPIO_STATUS);
-       SET_GPIO_REG_0(GPIO0_ODR, CONFIG_SYS_GPIO_STATUS);
-
-       /* output */
-       SET_GPIO_REG_1(GPIO0_TCR, CONFIG_SYS_GPIO_CONFIG);
-       SET_GPIO_REG_0(GPIO0_ODR, CONFIG_SYS_GPIO_CONFIG);
-       SET_GPIO_0(CONFIG_SYS_GPIO_CONFIG);
-
-       /* input */
-       SET_GPIO_0(CONFIG_SYS_GPIO_CON_DON);
-       SET_GPIO_REG_0(GPIO0_TCR, CONFIG_SYS_GPIO_CON_DON);
-       SET_GPIO_REG_0(GPIO0_ODR, CONFIG_SYS_GPIO_CON_DON);
-
-       /* CONFIG = 0 STATUS = 0 -> FPGA in reset state */
-       SET_GPIO_0(CONFIG_SYS_GPIO_CONFIG);
-       return FPGA_SUCCESS;
-}
-
-/* Set the state of CONFIG Pin */
-int fpga_config_fn(int assert_config, int flush, int cookie)
-{
-       if (assert_config)
-               SET_GPIO_1(CONFIG_SYS_GPIO_CONFIG);
-       else
-               SET_GPIO_0(CONFIG_SYS_GPIO_CONFIG);
-
-       return FPGA_SUCCESS;
-}
-
-/* Returns the state of STATUS Pin */
-int fpga_status_fn(int cookie)
-{
-       unsigned long   reg;
-
-       reg = in32(GPIO0_IR);
-       if (reg & (0x80000000 >> CONFIG_SYS_GPIO_STATUS)) {
-               PRINTF("STATUS = HIGH\n");
-               return FPGA_FAIL;
-       }
-       PRINTF("STATUS = LOW\n");
-       return FPGA_SUCCESS;
-}
-
-/* Returns the state of CONF_DONE Pin */
-int fpga_done_fn(int cookie)
-{
-       unsigned long   reg;
-       reg = in32(GPIO0_IR);
-       if (reg & (0x80000000 >> CONFIG_SYS_GPIO_CON_DON)) {
-               PRINTF("CONF_DON = HIGH\n");
-               return FPGA_FAIL;
-       }
-       PRINTF("CONF_DON = LOW\n");
-       return FPGA_SUCCESS;
-}
-
-/* writes the complete buffer to the FPGA
-   writing the complete buffer in one function is much faster,
-   then calling it for every bit */
-int fpga_write_fn(const void *buf, size_t len, int flush, int cookie)
-{
-       size_t bytecount = 0;
-       unsigned char *data = (unsigned char *) buf;
-       unsigned char val = 0;
-       int             i;
-       int len_40 = len / 40;
-
-       while (bytecount < len) {
-               val = data[bytecount++];
-               i = 8;
-               do {
-                       if (val & 0x01)
-                               FPGA_WRITE_1;
-                       else
-                               FPGA_WRITE_0;
-
-                       val >>= 1;
-                       i--;
-               } while (i > 0);
-
-#ifdef CONFIG_SYS_FPGA_PROG_FEEDBACK
-               if (bytecount % len_40 == 0) {
-                       putc('.');              /* let them know we are alive */
-#ifdef CONFIG_SYS_FPGA_CHECK_CTRLC
-                       if (ctrlc())
-                               return FPGA_FAIL;
-#endif
-               }
-#endif
-       }
-       return FPGA_SUCCESS;
-}
-
-/* called, when programming is aborted */
-int fpga_abort_fn(int cookie)
-{
-       SET_GPIO_1((CONFIG_SYS_GPIO_SEL_DPR));
-       return FPGA_SUCCESS;
-}
-
-/* called, when programming was succesful */
-int fpga_post_fn(int cookie)
-{
-       return fpga_abort_fn(cookie);
-}
-
-/* Note that these are pointers to code that is in Flash.  They will be
- * relocated at runtime.
- */
-Altera_CYC2_Passive_Serial_fns fpga_fns = {
-       fpga_pre_fn,
-       fpga_config_fn,
-       fpga_status_fn,
-       fpga_done_fn,
-       fpga_write_fn,
-       fpga_abort_fn,
-       fpga_post_fn
-};
-
-Altera_desc fpga[CONFIG_FPGA_COUNT] = {
-       {Altera_CYC2,
-        passive_serial,
-        Altera_EP2C35_SIZE,
-        (void *) &fpga_fns,
-        NULL,
-        0}
-};
-
-/*
- * Initialize the fpga.  Return 1 on success, 0 on failure.
- */
-int alpr_fpga_init(void)
-{
-       int i;
-
-       PRINTF("%s:%d: Initialize FPGA interface\n", __func__, __LINE__);
-       fpga_init();
-
-       for (i = 0; i < CONFIG_FPGA_COUNT; i++) {
-               PRINTF("%s:%d: Adding fpga %d\n", __func__, __LINE__, i);
-               fpga_add(fpga_altera, &fpga[i]);
-       }
-       return 1;
-}
-
-#endif
diff --git a/board/prodrive/alpr/init.S b/board/prodrive/alpr/init.S
deleted file mode 100644 (file)
index 7ff7a59..0000000
+++ /dev/null
@@ -1,53 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm-offsets.h>
-#include <ppc_asm.tmpl>
-#include <asm/mmu.h>
-#include <config.h>
-#include <asm/ppc4xx.h>
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- *  Pointer to the table is returned in r1
- *
- *************************************************************************/
-
-       .section .bootpg,"ax"
-       .globl tlbtab
-
-tlbtab:
-       tlbtab_start
-       tlbentry(0xff000000, SZ_16M, 0xff000000, 1, AC_RWX | SA_IG )
-       tlbentry(CONFIG_SYS_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_RW | SA_IG)
-       tlbentry(CONFIG_SYS_ISRAM_BASE, SZ_4K, 0x80000000, 0, AC_RWX)
-       tlbentry(CONFIG_SYS_ISRAM_BASE + 0x1000, SZ_4K, 0x80001000, 0, AC_RWX)
-#ifdef CONFIG_4xx_DCACHE
-       tlbentry(CONFIG_SYS_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_RWX | SA_G)
-#else
-       tlbentry(CONFIG_SYS_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_RWX | SA_IG)
-#endif
-
-#ifdef CONFIG_SYS_INIT_RAM_DCACHE
-       /* TLB-entry for init-ram in dcache (SA_I must be turned off!) */
-       tlbentry(CONFIG_SYS_INIT_RAM_ADDR, SZ_64K, CONFIG_SYS_INIT_RAM_ADDR, 0, AC_RWX | SA_G)
-#endif
-       tlbentry(CONFIG_SYS_PCI_BASE, SZ_256M, 0x00000000, 2, AC_RW | SA_IG)
-
-       /* PCI */
-       tlbentry(CONFIG_SYS_PCI_MEMBASE, SZ_256M, CONFIG_SYS_PCI_MEMBASE, 3, AC_RW | SA_IG)
-       tlbentry(CONFIG_SYS_PCI_MEMBASE1, SZ_256M, CONFIG_SYS_PCI_MEMBASE1, 3, AC_RW | SA_IG)
-       tlbentry(CONFIG_SYS_PCI_MEMBASE2, SZ_256M, CONFIG_SYS_PCI_MEMBASE2, 3, AC_RW | SA_IG)
-
-       /* NAND */
-       tlbentry(CONFIG_SYS_NAND_BASE, SZ_4K, CONFIG_SYS_NAND_BASE, 1, AC_RWX | SA_IG)
-       tlbtab_end
diff --git a/board/prodrive/alpr/nand.c b/board/prodrive/alpr/nand.c
deleted file mode 100644 (file)
index ca40cea..0000000
+++ /dev/null
@@ -1,124 +0,0 @@
-/*
- * (C) Copyright 2006
- * Heiko Schocher, DENX Software Engineering, hs@denx.de
- *
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-
-#if defined(CONFIG_CMD_NAND)
-
-#include <asm/processor.h>
-#include <nand.h>
-
-struct alpr_ndfc_regs {
-       u8 cmd[4];
-       u8 addr_wait;
-       u8 term;
-       u8 dummy;
-       u8 dummy2;
-       u8 data;
-};
-
-static u8 hwctl;
-static struct alpr_ndfc_regs *alpr_ndfc = NULL;
-
-#define readb(addr)    (u8)(*(volatile u8 *)(addr))
-#define writeb(d,addr) *(volatile u8 *)(addr) = ((u8)(d))
-
-/*
- * The ALPR has a NAND Flash Controller (NDFC) that handles all accesses to
- * the NAND devices.  The NDFC has command, address and data registers that
- * when accessed will set up the NAND flash pins appropriately.  We'll use the
- * hwcontrol function to save the configuration in a global variable.
- * We can then use this information in the read and write functions to
- * determine which NDFC register to access.
- *
- * There are 2 NAND devices on the board, a Hynix HY27US08561A (1 GByte).
- */
-static void alpr_nand_hwcontrol(struct mtd_info *mtd, int cmd, unsigned int ctrl)
-{
-       struct nand_chip *this = mtd->priv;
-
-       if (ctrl & NAND_CTRL_CHANGE) {
-               if ( ctrl & NAND_CLE )
-                       hwctl |= 0x1;
-               else
-                       hwctl &= ~0x1;
-               if ( ctrl & NAND_ALE )
-                       hwctl |= 0x2;
-               else
-                       hwctl &= ~0x2;
-               if ( (ctrl & NAND_NCE) != NAND_NCE)
-                       writeb(0x00, &(alpr_ndfc->term));
-       }
-       if (cmd != NAND_CMD_NONE)
-               writeb(cmd, this->IO_ADDR_W);
-}
-
-static u_char alpr_nand_read_byte(struct mtd_info *mtd)
-{
-       return readb(&(alpr_ndfc->data));
-}
-
-static void alpr_nand_write_buf(struct mtd_info *mtd, const u_char *buf, int len)
-{
-       struct nand_chip *nand = mtd->priv;
-       int i;
-
-       for (i = 0; i < len; i++) {
-               if (hwctl & 0x1)
-                        /*
-                         * IO_ADDR_W used as CMD[i] reg to support multiple NAND
-                         * chips.
-                         */
-                       writeb(buf[i], nand->IO_ADDR_W);
-               else if (hwctl & 0x2)
-                       writeb(buf[i], &(alpr_ndfc->addr_wait));
-               else
-                       writeb(buf[i], &(alpr_ndfc->data));
-       }
-}
-
-static void alpr_nand_read_buf(struct mtd_info *mtd, u_char *buf, int len)
-{
-       int i;
-
-       for (i = 0; i < len; i++) {
-               buf[i] = readb(&(alpr_ndfc->data));
-       }
-}
-
-static int alpr_nand_dev_ready(struct mtd_info *mtd)
-{
-       /*
-        * Blocking read to wait for NAND to be ready
-        */
-       (void)readb(&(alpr_ndfc->addr_wait));
-
-       /*
-        * Return always true
-        */
-       return 1;
-}
-
-int board_nand_init(struct nand_chip *nand)
-{
-       alpr_ndfc = (struct alpr_ndfc_regs *)CONFIG_SYS_NAND_BASE;
-
-       nand->ecc.mode = NAND_ECC_SOFT;
-
-       /* Reference hardware control function */
-       nand->cmd_ctrl  = alpr_nand_hwcontrol;
-       nand->read_byte  = alpr_nand_read_byte;
-       nand->write_buf  = alpr_nand_write_buf;
-       nand->read_buf   = alpr_nand_read_buf;
-       nand->dev_ready  = alpr_nand_dev_ready;
-
-       return 0;
-}
-#endif
diff --git a/board/prodrive/p3p440/Kconfig b/board/prodrive/p3p440/Kconfig
deleted file mode 100644 (file)
index cf53aac..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_P3P440
-
-config SYS_BOARD
-       default "p3p440"
-
-config SYS_VENDOR
-       default "prodrive"
-
-config SYS_CONFIG_NAME
-       default "p3p440"
-
-endif
diff --git a/board/prodrive/p3p440/MAINTAINERS b/board/prodrive/p3p440/MAINTAINERS
deleted file mode 100644 (file)
index 68fd1a9..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-P3P440 BOARD
-M:     Stefan Roese <sr@denx.de>
-S:     Maintained
-F:     board/prodrive/p3p440/
-F:     include/configs/p3p440.h
-F:     configs/p3p440_defconfig
diff --git a/board/prodrive/p3p440/Makefile b/board/prodrive/p3p440/Makefile
deleted file mode 100644 (file)
index d62f75d..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2002-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = p3p440.o
-extra-y        += init.o
diff --git a/board/prodrive/p3p440/config.mk b/board/prodrive/p3p440/config.mk
deleted file mode 100644 (file)
index f18b097..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-#
-# (C) Copyright 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-PLATFORM_CPPFLAGS += -DCONFIG_440=1
-
-ifeq ($(debug),1)
-PLATFORM_CPPFLAGS += -DDEBUG
-endif
-
-ifeq ($(dbcr),1)
-PLATFORM_CPPFLAGS += -DCONFIG_SYS_INIT_DBCR=0x8cff0000
-endif
diff --git a/board/prodrive/p3p440/init.S b/board/prodrive/p3p440/init.S
deleted file mode 100644 (file)
index 35b1afa..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <ppc_asm.tmpl>
-#include <asm/mmu.h>
-#include <config.h>
-#include <asm/ppc4xx.h>
-
-/**************************************************************************
- * TLB TABLE
- *
- * This table is used by the cpu boot code to setup the initial tlb
- * entries. Rather than make broad assumptions in the cpu source tree,
- * this table lets each board set things up however they like.
- *
- *  Pointer to the table is returned in r1
- *
- *************************************************************************/
-
-    .section .bootpg,"ax"
-    .globl tlbtab
-
-tlbtab:
-    tlbtab_start
-    tlbentry( 0xf0000000, SZ_256M, 0xf0000000, 1, AC_RWX | SA_IG)
-    tlbentry( CONFIG_SYS_PERIPHERAL_BASE, SZ_256M, 0x40000000, 1, AC_RW | SA_IG)
-    tlbentry( CONFIG_SYS_ISRAM_BASE, SZ_4K, 0x80000000, 0, AC_RWX )
-    tlbentry( CONFIG_SYS_ISRAM_BASE + 0x1000, SZ_4K, 0x80001000, 0, AC_RWX )
-    tlbentry( CONFIG_SYS_SDRAM_BASE, SZ_256M, 0x00000000, 0, AC_RWX | SA_IG )
-    tlbentry( CONFIG_SYS_PCI_BASE, SZ_256M, 0x00000000, 2, AC_RW | SA_IG )
-    tlbentry( CONFIG_SYS_PCI_MEMBASE, SZ_256M, 0x00000000, 3, AC_RW | SA_IG )
-    tlbtab_end
diff --git a/board/prodrive/p3p440/p3p440.c b/board/prodrive/p3p440/p3p440.c
deleted file mode 100644 (file)
index 929e8eb..0000000
+++ /dev/null
@@ -1,177 +0,0 @@
-/*
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * Copyright (C) 2002 Scott McNutt <smcnutt@artesyncp.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-
-#include "p3p440.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-void set_led(int color)
-{
-       switch (color) {
-       case LED_OFF:
-               out32(GPIO0_OR,  in32(GPIO0_OR) & ~CONFIG_SYS_LED_GREEN & ~CONFIG_SYS_LED_RED);
-               break;
-
-       case LED_GREEN:
-               out32(GPIO0_OR,  (in32(GPIO0_OR) | CONFIG_SYS_LED_GREEN) & ~CONFIG_SYS_LED_RED);
-               break;
-
-       case LED_RED:
-               out32(GPIO0_OR,  (in32(GPIO0_OR) | CONFIG_SYS_LED_RED) & ~CONFIG_SYS_LED_GREEN);
-               break;
-
-       case LED_ORANGE:
-               out32(GPIO0_OR,  in32(GPIO0_OR) | CONFIG_SYS_LED_GREEN | CONFIG_SYS_LED_RED);
-               break;
-       }
-}
-
-static int is_monarch(void)
-{
-       out32(GPIO0_OR,  in32(GPIO0_OR) & ~CONFIG_SYS_GPIO_RDY);
-       udelay(1000);
-
-       if (in32(GPIO0_IR) & CONFIG_SYS_MONARCH_IO)
-               return 0;
-       else
-               return 1;
-}
-
-static void wait_for_pci_ready(void)
-{
-       /*
-        * Configure EREADY_IO as input
-        */
-       out32(GPIO0_TCR, in32(GPIO0_TCR) & ~CONFIG_SYS_EREADY_IO);
-       udelay(1000);
-
-       for (;;) {
-               if (in32(GPIO0_IR) & CONFIG_SYS_EREADY_IO)
-                       return;
-       }
-
-}
-
-int board_early_init_f(void)
-{
-       uint reg;
-
-       /*--------------------------------------------------------------------
-        * Setup the external bus controller/chip selects
-        *-------------------------------------------------------------------*/
-       mtdcr(EBC0_CFGADDR, EBC0_CFG);
-       reg = mfdcr(EBC0_CFGDATA);
-       mtdcr(EBC0_CFGDATA, reg | 0x04000000);  /* Set ATC */
-
-       /*--------------------------------------------------------------------
-        * Setup pin multiplexing (GPIO/IRQ...)
-        *-------------------------------------------------------------------*/
-       mtdcr(CPC0_GPIO, 0x03F01F80);
-
-       out32(GPIO0_ODR, 0x00000000);   /* no open drain pins      */
-       out32(GPIO0_TCR, CONFIG_SYS_GPIO_RDY | CONFIG_SYS_EREADY_IO | CONFIG_SYS_LED_RED | CONFIG_SYS_LED_GREEN);
-       out32(GPIO0_OR,  CONFIG_SYS_GPIO_RDY);
-
-       /*--------------------------------------------------------------------
-        * Setup the interrupt controller polarities, triggers, etc.
-        *-------------------------------------------------------------------*/
-       mtdcr(UIC0SR, 0xffffffff);      /* clear all */
-       mtdcr(UIC0ER, 0x00000000);      /* disable all */
-       mtdcr(UIC0CR, 0x00000001);      /* UIC1 crit is critical */
-       mtdcr(UIC0PR, 0xfffffe13);      /* per ref-board manual */
-       mtdcr(UIC0TR, 0x01c00008);      /* per ref-board manual */
-       mtdcr(UIC0VR, 0x00000001);      /* int31 highest, base=0x000 */
-       mtdcr(UIC0SR, 0xffffffff);      /* clear all */
-
-       mtdcr(UIC1SR, 0xffffffff);      /* clear all */
-       mtdcr(UIC1ER, 0x00000000);      /* disable all */
-       mtdcr(UIC1CR, 0x00000000);      /* all non-critical */
-       mtdcr(UIC1PR, 0xffffe0ff);      /* per ref-board manual */
-       mtdcr(UIC1TR, 0x00ffc000);      /* per ref-board manual */
-       mtdcr(UIC1VR, 0x00000001);      /* int31 highest, base=0x000 */
-       mtdcr(UIC1SR, 0xffffffff);      /* clear all */
-
-       return 0;
-}
-
-int checkboard(void)
-{
-       char buf[64];
-       int i = getenv_f("serial#", buf, sizeof(buf));
-
-       printf("Board: P3P440");
-       if (i > 0) {
-               puts(", serial# ");
-               puts(buf);
-       }
-
-       if (is_monarch()) {
-               puts(", Monarch");
-       } else {
-               puts(", None-Monarch");
-       }
-
-       putc('\n');
-
-       return (0);
-}
-
-int misc_init_r (void)
-{
-       /*
-        * Adjust flash start and offset to detected values
-        */
-       gd->bd->bi_flashstart = 0 - gd->bd->bi_flashsize;
-       gd->bd->bi_flashoffset = 0;
-
-       /*
-        * Check if only one FLASH bank is available
-        */
-       if (gd->bd->bi_flashsize != CONFIG_SYS_MAX_FLASH_BANKS * (0 - CONFIG_SYS_FLASH0)) {
-               mtebc(PB1CR, 0);                        /* disable cs */
-               mtebc(PB1AP, 0);
-               mtebc(PB2CR, 0);                        /* disable cs */
-               mtebc(PB2AP, 0);
-               mtebc(PB3CR, 0);                        /* disable cs */
-               mtebc(PB3AP, 0);
-       }
-
-       return 0;
-}
-
-/*************************************************************************
- * Override weak is_pci_host()
- *
- *     This routine is called to determine if a pci scan should be
- *     performed. With various hardware environments (especially cPCI and
- *     PPMC) it's insufficient to depend on the state of the arbiter enable
- *     bit in the strap register, or generic host/adapter assumptions.
- *
- *     Rather than hard-code a bad assumption in the general 440 code, the
- *     440 pci code requires the board to decide at runtime.
- *
- *     Return 0 for adapter mode, non-zero for host (monarch) mode.
- *
- *
- ************************************************************************/
-#if defined(CONFIG_PCI)
-int is_pci_host(struct pci_controller *hose)
-{
-       if (is_monarch()) {
-               wait_for_pci_ready();
-               return 1;               /* return 1 for host controller */
-       } else {
-               return 0;               /* return 0 for adapter controller */
-       }
-}
-#endif                         /* defined(CONFIG_PCI) */
diff --git a/board/prodrive/p3p440/p3p440.h b/board/prodrive/p3p440/p3p440.h
deleted file mode 100644 (file)
index a164f95..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * (C) Copyright 2005
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __P3P440_H__
-#define __P3P440_H__
-
-#define CONFIG_SYS_GPIO_RDY    (0x80000000 >> 11)
-#define CONFIG_SYS_MONARCH_IO  (0x80000000 >> 18)
-#define CONFIG_SYS_EREADY_IO   (0x80000000 >> 20)
-#define CONFIG_SYS_LED_GREEN   (0x80000000 >> 21)
-#define CONFIG_SYS_LED_RED     (0x80000000 >> 22)
-
-#define LED_OFF                1
-#define LED_GREEN      2
-#define LED_RED                3
-#define LED_ORANGE     4
-
-long int fixed_sdram(void);
-
-#endif /* __P3P440_H__ */
diff --git a/board/pxa255_idp/Kconfig b/board/pxa255_idp/Kconfig
deleted file mode 100644 (file)
index 5448311..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_PXA255_IDP
-
-config SYS_BOARD
-       default "pxa255_idp"
-
-config SYS_CONFIG_NAME
-       default "pxa255_idp"
-
-endif
diff --git a/board/pxa255_idp/MAINTAINERS b/board/pxa255_idp/MAINTAINERS
deleted file mode 100644 (file)
index 24d7236..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-PXA255_IDP BOARD
-M:     Cliff Brake <cliff.brake@gmail.com>
-S:     Maintained
-F:     board/pxa255_idp/
-F:     include/configs/pxa255_idp.h
-F:     configs/pxa255_idp_defconfig
diff --git a/board/pxa255_idp/Makefile b/board/pxa255_idp/Makefile
deleted file mode 100644 (file)
index 59d6967..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := pxa_idp.o
diff --git a/board/pxa255_idp/README b/board/pxa255_idp/README
deleted file mode 100644 (file)
index 0cc2f2a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-Tested:
-
-- MMC
-- Ethernet
-- BL console (on serial port connector J5)
-- flash support
-
-Todo:
-
-- display support
-- PCMCIA support
diff --git a/board/pxa255_idp/idp_notes.txt b/board/pxa255_idp/idp_notes.txt
deleted file mode 100644 (file)
index 4746748..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-Notes on the Vibren PXA255 IDP.
-
-Chip select usage:
-
-CS0 - flash
-CS1 - alt flash (Mdoc or main flash)
-CS2 - high speed expansion bus
-CS3 - Media Q, low speed exp bus
-CS4 - low speed exp bus
-CS5 - low speed exp bus
-  - IDE: offset 0x03000000 (abs: 0x17000000)
-  - Eth: offset 0x03400000 (abs: 0x17400000)
-  - core voltage latch: offset 0x03800000 (abs: 0x17800000)
-  - CPLD: offset 0x03C00000 (abs: 0x17C00000)
-
-PCMCIA Power control
-
-MAX1602EE w/ code pulled high (Cirrus code)
-vx = 5v
-vy = 3v
-
-                       Bit pattern
-                       PWR 3,2,1,0
-vcc         vpp        A1VCC  A0VCC   A1VPP   A0VPP
-=====================================================
-0           0            0      0       0       0      0x0
-3 (vy)      0            1      0       1       1      0xB
-3 (vy)      3 (vy)       1      0       0       1      0x9
-3 (vy)      12(12in)     1      0       1       0      0xA
-5 (vx)      0            0      1       1       1      0x7
-5 (vx)      5 (vx)       0      1       0       1      0x5
-5 (vx       12(12in)     0      1       1       0      0x6
-
-Display power sequencing:
-
-- VDD applied
-- within 1sec, activate scanning signals
-- wait at least 50mS - scanning signals must be active before activating DISP
-
-Signal mapping:
-Schematic            LV8V31 signal name
-=========================================
-LCD_ENAVLCD            DISP
-LCD_PWR                        Applies VDD to board
-
-Both of the above signals are controlled by the CPLD
diff --git a/board/pxa255_idp/pxa_idp.c b/board/pxa255_idp/pxa_idp.c
deleted file mode 100644 (file)
index 197ff3e..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * (C) Copyright 2004
- * BEC Systems <http://bec-systems.com>
- * Cliff Brake <cliff.brake@gmail.com>
- * Support for Accelent/Vibren PXA255 IDP
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <command.h>
-#include <asm/io.h>
-#include <asm/arch/pxa.h>
-#include <asm/arch/regs-mmc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* arch number of Lubbock-Board */
-       gd->bd->bi_arch_number = MACH_TYPE_PXA_IDP;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       /* turn on serial ports */
-       *(volatile unsigned int *)(PXA_CS5_PHYS + 0x03C0002c) = 0x13;
-
-       /* set PWM for LCD */
-       /* a value that works is 60Hz, 77% duty cycle */
-       writel(readl(CKEN) | CKEN0_PWM0, CKEN);
-       writel(0x3f, PWM_CTRL0);
-       writel(0x3ff, PWM_PERVAL0);
-       writel(792, PWM_PWDUTY0);
-
-       /* clear reset to AC97 codec */
-       writel(readl(CKEN) | CKEN2_AC97, CKEN);
-       writel(GCR_COLD_RST, GCR);
-
-       /* enable LCD backlight */
-       /* *(volatile unsigned int *)(PXA_CS5_PHYS + 0x03C00030) = 0x7; */
-
-       /* test display */
-       /* lcd_puts("This is a test\nTest #2\n"); */
-
-       return 0;
-}
-
-#ifdef CONFIG_CMD_MMC
-int board_mmc_init(bd_t *bis)
-{
-       pxa_mmc_register(0);
-       return 0;
-}
-#endif
-
-int board_late_init(void)
-{
-       setenv("stdout", "serial");
-       setenv("stderr", "serial");
-       return 0;
-}
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-}
-
-#ifdef DEBUG_BLINKC_ENABLE
-
-void delay_c(void)
-{
-       /* reset OSCR to 0 */
-       writel(0, OSCR);
-       while (readl(OSCR) > 0x10000)
-               ;
-
-       while (readl(OSCR) < 0xd4000)
-               ;
-}
-
-void blink_c(void)
-{
-       int led_bit = (1<<10);
-
-       writel(led_bit, GPDR0);
-       writel(led_bit, GPCR0);
-       delay_c();
-       writel(led_bit, GPSR0);
-       delay_c();
-       writel(led_bit, GPCR0);
-}
-
-int do_idpcmd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       printf("IDPCMD started\n");
-       return 0;
-}
-
-U_BOOT_CMD(idpcmd, CONFIG_SYS_MAXARGS, 0, do_idpcmd,
-          "custom IDP command",
-          "no args at this time"
-);
-
-#endif
-
-#ifdef CONFIG_CMD_NET
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_SMC91111
-       rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
-#endif
-       return rc;
-}
-#endif
diff --git a/board/pxa255_idp/pxa_reg_calcs.out b/board/pxa255_idp/pxa_reg_calcs.out
deleted file mode 100644 (file)
index 39295fb..0000000
+++ /dev/null
@@ -1,119 +0,0 @@
-gafr0_l: 0x80001005
-gafr0_u: 0xa5128012
-gafr1_l: 0x699a9558
-gafr1_u: 0xaaa5aa6a
-gafr2_l: 0xaaaaaaaa
-gafr2_u: 0x2
-gpcr0: 0x1800400
-gpcr1: 0x0
-gpcr2: 0x0
-gpdr0: 0xc1818440
-gpdr1: 0xfcffab82
-gpdr2: 0x1ffff
-gpsr0: 0x8000
-gpsr1: 0x3f0002
-gpsr2: 0x1c000
-
-
-#define CONFIG_SYS_GAFR0_L_VAL 0x80001005
-#define CONFIG_SYS_GAFR0_U_VAL 0xa5128012
-#define CONFIG_SYS_GAFR1_L_VAL 0x699a9558
-#define CONFIG_SYS_GAFR1_U_VAL 0xaaa5aa6a
-#define CONFIG_SYS_GAFR2_L_VAL 0xaaaaaaaa
-#define CONFIG_SYS_GAFR2_U_VAL 0x2
-#define CONFIG_SYS_GPCR0_VAL   0x1800400
-#define CONFIG_SYS_GPCR1_VAL   0x0
-#define CONFIG_SYS_GPCR2_VAL   0x0
-#define CONFIG_SYS_GPDR0_VAL   0xc1818440
-#define CONFIG_SYS_GPDR1_VAL   0xfcffab82
-#define CONFIG_SYS_GPDR2_VAL   0x1ffff
-#define CONFIG_SYS_GPSR0_VAL   0x8000
-#define CONFIG_SYS_GPSR1_VAL   0x3f0002
-#define CONFIG_SYS_GPSR2_VAL   0x1c000
-
-
-GPIO: 0, dir=0, set=0, clr=0, alt=none, desc=USER_RESET#
-GPIO: 1, dir=0, set=0, clr=0, alt=gpio reset, desc=USER_RESET#
-GPIO: 2, dir=0, set=0, clr=0, alt=gpio, desc=BAT_DATA
-GPIO: 3, dir=0, set=0, clr=0, alt=gpio, desc=MQ_IRQ#
-GPIO: 4, dir=0, set=0, clr=0, alt=gpio, desc=IRQ_ETH
-GPIO: 5, dir=0, set=0, clr=0, alt=gpio, desc=IRQ_TOUCH#
-GPIO: 6, dir=1, set=0, clr=0, alt=MMC clk, desc=MMC_CLK
-GPIO: 7, dir=0, set=0, clr=0, alt=gpio, desc=PCC_S0_CD#
-GPIO: 8, dir=0, set=0, clr=0, alt=gpio, desc=PCC_S1_CD#
-GPIO: 9, dir=0, set=0, clr=0, alt=gpio, desc=MMC_CD#
-GPIO: 10, dir=1, set=0, clr=1, alt=gpio, desc=GPIO_10/RTC_CLK/debug LED
-GPIO: 11, dir=0, set=0, clr=0, alt=gpio, desc=3M6_CLK
-GPIO: 12, dir=0, set=0, clr=0, alt=gpio, desc=GPIO_12/32K_CLK
-GPIO: 13, dir=0, set=0, clr=0, alt=gpio, desc=MBGNT
-GPIO: 14, dir=0, set=0, clr=0, alt=gpio, desc=MBREQ
-GPIO: 15, dir=1, set=1, clr=0, alt=nCS_1, desc=CS1#
-GPIO: 16, dir=1, set=0, clr=0, alt=PWM0, desc=PWM0
-GPIO: 17, dir=0, set=0, clr=0, alt=gpio, desc=IRQ_AXB
-GPIO: 18, dir=0, set=0, clr=0, alt=RDY, desc=RDY
-GPIO: 19, dir=0, set=0, clr=0, alt=gpio, desc=XB_DREQ1, PCC_SO_IRQ_O#
-GPIO: 20, dir=0, set=0, clr=0, alt=gpio, desc=XB_DREQ0
-GPIO: 21, dir=0, set=0, clr=0, alt=gpio, desc=IRQ_IDE, PFI
-GPIO: 22, dir=0, set=0, clr=0, alt=gpio, desc=Consumer IR, PCC_S1_IRQ_O#
-GPIO: 23, dir=1, set=0, clr=1, alt=SSP SCLK, desc=SSP_SCLK
-GPIO: 24, dir=1, set=0, clr=1, alt=SSP SFRM, desc=SSP_SFRM
-GPIO: 25, dir=0, set=0, clr=0, alt=gpio, desc=SSP_TXD
-GPIO: 26, dir=0, set=0, clr=0, alt=SSP RXD, desc=SSP_RXD
-GPIO: 27, dir=0, set=0, clr=0, alt=gpio, desc=SSP_EXTCLK
-GPIO: 28, dir=0, set=0, clr=0, alt=AC97 bitclk in, I2S bitclock out, desc=AC_BITCLK
-GPIO: 29, dir=0, set=0, clr=0, alt=AC97 SDATA_IN0, desc=AUD_SDIN0
-GPIO: 30, dir=1, set=0, clr=0, alt=AC97 SDATA_OUT, desc=AC_SDOUT
-GPIO: 31, dir=1, set=0, clr=0, alt=AC97 SYNC, desc=AC_SYNC
-GPIO: 32, dir=0, set=0, clr=0, alt=gpio, desc=AUD_SDIN1
-GPIO: 33, dir=1, set=1, clr=0, alt=nCS_5, desc=CS5#
-GPIO: 34, dir=0, set=0, clr=0, alt=FF RXD, desc=FF_RXD
-GPIO: 35, dir=0, set=0, clr=0, alt=FF CTS, desc=FF_CTS
-GPIO: 36, dir=0, set=0, clr=0, alt=FF DCD, desc=FF_DCD
-GPIO: 37, dir=0, set=0, clr=0, alt=FF DSR, desc=FF_DSR
-GPIO: 38, dir=0, set=0, clr=0, alt=FF RI, desc=FF_RI
-GPIO: 39, dir=1, set=0, clr=0, alt=FF TXD, desc=FF_TXD
-GPIO: 40, dir=1, set=0, clr=0, alt=FF DTR, desc=FF_DTR
-GPIO: 41, dir=1, set=0, clr=0, alt=FF RTS, desc=FF_RTS
-GPIO: 42, dir=0, set=0, clr=0, alt=BT RXD, desc=BT_RXD
-GPIO: 43, dir=1, set=0, clr=0, alt=BT TXD, desc=BT_TXD
-GPIO: 44, dir=0, set=0, clr=0, alt=BT CTS, desc=BT_CTS
-GPIO: 45, dir=1, set=0, clr=0, alt=BT RTS, desc=BT_RTS
-GPIO: 46, dir=0, set=0, clr=0, alt=STD RXD, desc=IR_RXD
-GPIO: 47, dir=1, set=0, clr=0, alt=STD TXD, desc=IR_TXD
-GPIO: 48, dir=1, set=1, clr=0, alt=nPOE, desc=PCC_OE#
-GPIO: 49, dir=1, set=1, clr=0, alt=nPWE, desc=PCC_WE#
-GPIO: 50, dir=1, set=1, clr=0, alt=nPIOR, desc=PCC_IOR#
-GPIO: 51, dir=1, set=1, clr=0, alt=nPIOW, desc=PCC_IOW#
-GPIO: 52, dir=1, set=1, clr=0, alt=nPCE[1], desc=PCC_CE1#
-GPIO: 53, dir=1, set=1, clr=0, alt=nPCE[2], desc=PCC_CE2#
-GPIO: 54, dir=1, set=0, clr=0, alt=nPSKSEL, desc=PCC_SCKSEL
-GPIO: 55, dir=1, set=0, clr=0, alt=nPREG, desc=PCC_REG#
-GPIO: 56, dir=0, set=0, clr=0, alt=nPWAIT, desc=PCC_WAIT#
-GPIO: 57, dir=0, set=0, clr=0, alt=nIOIS16, desc=PCC_IOIS16#
-GPIO: 58, dir=1, set=0, clr=0, alt=LDD[0], desc=LDD0
-GPIO: 59, dir=1, set=0, clr=0, alt=LDD[1], desc=LDD1
-GPIO: 60, dir=1, set=0, clr=0, alt=LDD[2], desc=LDD2
-GPIO: 61, dir=1, set=0, clr=0, alt=LDD[3], desc=LDD3
-GPIO: 62, dir=1, set=0, clr=0, alt=LDD[4], desc=LDD4
-GPIO: 63, dir=1, set=0, clr=0, alt=LDD[5], desc=LDD5
-GPIO: 64, dir=1, set=0, clr=0, alt=LDD[6], desc=LDD6
-GPIO: 65, dir=1, set=0, clr=0, alt=LDD[7], desc=LDD7
-GPIO: 66, dir=1, set=0, clr=0, alt=LDD[8], desc=LDD8
-GPIO: 67, dir=1, set=0, clr=0, alt=LDD[9], desc=LDD9
-GPIO: 68, dir=1, set=0, clr=0, alt=LDD[10], desc=LDD10
-GPIO: 69, dir=1, set=0, clr=0, alt=LDD[11], desc=LDD11
-GPIO: 70, dir=1, set=0, clr=0, alt=LDD[12], desc=LDD12
-GPIO: 71, dir=1, set=0, clr=0, alt=LDD[13], desc=LDD13
-GPIO: 72, dir=1, set=0, clr=0, alt=LDD[14], desc=LDD14
-GPIO: 73, dir=1, set=0, clr=0, alt=LDD[15], desc=LDD15
-GPIO: 74, dir=1, set=0, clr=0, alt=LCD_FCLK, desc=FCLK
-GPIO: 75, dir=1, set=0, clr=0, alt=LCD_LCLK, desc=LCLK
-GPIO: 76, dir=1, set=0, clr=0, alt=LCD_PCLK, desc=PCLK
-GPIO: 77, dir=1, set=0, clr=0, alt=LCD_ACBIAS, desc=ACBIAS
-GPIO: 78, dir=1, set=1, clr=0, alt=nCS_2, desc=CS2#
-GPIO: 79, dir=1, set=1, clr=0, alt=nCS_3, desc=CS3#
-GPIO: 80, dir=1, set=1, clr=0, alt=nCS_4, desc=CS4#
-GPIO: 81, dir=0, set=0, clr=0, alt=gpio, desc=
-GPIO: 82, dir=0, set=0, clr=0, alt=gpio, desc=
-GPIO: 83, dir=0, set=0, clr=0, alt=gpio, desc=
-GPIO: 84, dir=0, set=0, clr=0, alt=gpio, desc=
diff --git a/board/pxa255_idp/pxa_reg_calcs.py b/board/pxa255_idp/pxa_reg_calcs.py
deleted file mode 100644 (file)
index 4a721d1..0000000
+++ /dev/null
@@ -1,298 +0,0 @@
-#!/usr/bin/python
-
-# (C) Copyright 2004
-# BEC Systems <http://bec-systems.com>
-# Cliff Brake <cliff.brake@gmail.com>
-
-# SPDX-License-Identifier:     GPL-2.0+
-
-# calculations for PXA255 registers
-
-class gpio:
-       dir = '0'
-       set = '0'
-       clr = '0'
-       alt = '0'
-       desc = ''
-
-       def __init__(self, dir=0, set=0, clr=0, alt=0, desc=''):
-               self.dir = dir
-               self.set = set
-               self.clr = clr
-               self.alt = alt
-               self.desc = desc
-               
-
-# the following is a dictionary of all GPIOs in the system
-# the key is the GPIO number
-
-
-pxa255_alt_func = {
-       0: ['gpio', 'none', 'none', 'none'],
-       1: ['gpio', 'gpio reset', 'none', 'none'],
-       2: ['gpio', 'none', 'none', 'none'],
-       3: ['gpio', 'none', 'none', 'none'],
-       4: ['gpio', 'none', 'none', 'none'],
-       5: ['gpio', 'none', 'none', 'none'],
-       6: ['gpio', 'MMC clk', 'none', 'none'],
-       7: ['gpio', '48MHz clock', 'none', 'none'],
-       8: ['gpio', 'MMC CS0', 'none', 'none'],
-       9: ['gpio', 'MMC CS1', 'none', 'none'],
-       10: ['gpio', 'RTC Clock', 'none', 'none'],
-       11: ['gpio', '3.6MHz', 'none', 'none'],
-       12: ['gpio', '32KHz', 'none', 'none'],
-       13: ['gpio', 'none', 'MBGNT', 'none'],
-       14: ['gpio', 'MBREQ', 'none', 'none'],
-       15: ['gpio', 'none', 'nCS_1', 'none'],
-       16: ['gpio', 'none', 'PWM0', 'none'],
-       17: ['gpio', 'none', 'PWM1', 'none'],
-       18: ['gpio', 'RDY', 'none', 'none'],
-       19: ['gpio', 'DREQ[1]', 'none', 'none'],
-       20: ['gpio', 'DREQ[0]', 'none', 'none'],
-       21: ['gpio', 'none', 'none', 'none'],
-       22: ['gpio', 'none', 'none', 'none'],
-       23: ['gpio', 'none', 'SSP SCLK', 'none'],
-       24: ['gpio', 'none', 'SSP SFRM', 'none'],
-       25: ['gpio', 'none', 'SSP TXD', 'none'],
-       26: ['gpio', 'SSP RXD', 'none', 'none'],
-       27: ['gpio', 'SSP EXTCLK', 'none', 'none'],
-       28: ['gpio', 'AC97 bitclk in, I2S bitclock out', 'I2S bitclock in', 'none'],
-       29: ['gpio', 'AC97 SDATA_IN0', 'I2S SDATA_IN', 'none'],
-       30: ['gpio', 'I2S SDATA_OUT', 'AC97 SDATA_OUT', 'none'],
-       31: ['gpio', 'I2S SYNC', 'AC97 SYNC', 'none'],
-       32: ['gpio', 'AC97 SDATA_IN1', 'I2S SYSCLK', 'none'],
-       33: ['gpio', 'none', 'nCS_5', 'none'],
-       34: ['gpio', 'FF RXD', 'MMC CS0', 'none'],
-       35: ['gpio', 'FF CTS', 'none', 'none'],
-       36: ['gpio', 'FF DCD', 'none', 'none'],
-       37: ['gpio', 'FF DSR', 'none', 'none'],
-       38: ['gpio', 'FF RI', 'none', 'none'],
-       39: ['gpio', 'MMC CS1', 'FF TXD', 'none'],
-       40: ['gpio', 'none', 'FF DTR', 'none'],
-       41: ['gpio', 'none', 'FF RTS', 'none'],
-       42: ['gpio', 'BT RXD', 'none', 'HW RXD'],
-       43: ['gpio', 'none', 'BT TXD', 'HW TXD'],
-       44: ['gpio', 'BT CTS', 'none', 'HW CTS'],
-       45: ['gpio', 'none', 'BT RTS', 'HW RTS'],
-       46: ['gpio', 'ICP_RXD', 'STD RXD', 'none'],
-       47: ['gpio', 'STD TXD', 'ICP_TXD', 'none'],
-       48: ['gpio', 'HW TXD', 'nPOE', 'none'],
-       49: ['gpio', 'HW RXD', 'nPWE', 'none'],
-       50: ['gpio', 'HW CTS', 'nPIOR', 'none'],
-       51: ['gpio', 'nPIOW', 'HW RTS', 'none'],
-       52: ['gpio', 'none', 'nPCE[1]', 'none'],
-       53: ['gpio', 'MMC CLK', 'nPCE[2]', 'none'],
-       54: ['gpio', 'MMC CLK', 'nPSKSEL', 'none'],
-       55: ['gpio', 'none', 'nPREG', 'none'],
-       56: ['gpio', 'nPWAIT', 'none', 'none'],
-       57: ['gpio', 'nIOIS16', 'none', 'none'],
-       58: ['gpio', 'none', 'LDD[0]', 'none'],
-       59: ['gpio', 'none', 'LDD[1]', 'none'],
-       60: ['gpio', 'none', 'LDD[2]', 'none'],
-       61: ['gpio', 'none', 'LDD[3]', 'none'],
-       62: ['gpio', 'none', 'LDD[4]', 'none'],
-       63: ['gpio', 'none', 'LDD[5]', 'none'],
-       64: ['gpio', 'none', 'LDD[6]', 'none'],
-       65: ['gpio', 'none', 'LDD[7]', 'none'],
-       66: ['gpio', 'MBREQ', 'LDD[8]', 'none'],
-       67: ['gpio', 'MMC CS0', 'LDD[9]', 'none'],
-       68: ['gpio', 'MMC CS1', 'LDD[10]', 'none'],
-       69: ['gpio', 'MMC CLK', 'LDD[11]', 'none'],
-       70: ['gpio', 'RTC CLK', 'LDD[12]', 'none'],
-       71: ['gpio', '3.6 MHz', 'LDD[13]', 'none'],
-       72: ['gpio', '32 KHz', 'LDD[14]', 'none'],
-       73: ['gpio', 'MBGNT', 'LDD[15]', 'none'],
-       74: ['gpio', 'none', 'LCD_FCLK', 'none'],
-       75: ['gpio', 'none', 'LCD_LCLK', 'none'],
-       76: ['gpio', 'none', 'LCD_PCLK', 'none'],
-       77: ['gpio', 'none', 'LCD_ACBIAS', 'none'],
-       78: ['gpio', 'none', 'nCS_2', 'none'],
-       79: ['gpio', 'none', 'nCS_3', 'none'],
-       80: ['gpio', 'none', 'nCS_4', 'none'],
-       81: ['gpio', 'NSSPSCLK', 'none', 'none'],
-       82: ['gpio', 'NSSPSFRM', 'none', 'none'],
-       83: ['gpio', 'NSSPTXD', 'NSSPRXD', 'none'],
-       84: ['gpio', 'NSSPTXD', 'NSSPRXD', 'none'],
-}
-
-
-#def __init__(self, dir=0, set=0, clr=0, alt=0, desc=''):
-
-gpio_list = []
-
-for i in range(0,85):
-       gpio_list.append(gpio())
-
-#chip select GPIOs
-gpio_list[18] = gpio(0, 0, 0, 1, 'RDY')
-gpio_list[33] = gpio(1, 1, 0, 2, 'CS5#')
-gpio_list[80] = gpio(1, 1, 0, 2, 'CS4#')
-gpio_list[79] = gpio(1, 1, 0, 2, 'CS3#')
-gpio_list[78] = gpio(1, 1, 0, 2, 'CS2#')
-gpio_list[15] = gpio(1, 1, 0, 2, 'CS1#')
-gpio_list[22] = gpio(0, 0, 0, 0, 'Consumer IR, PCC_S1_IRQ_O#')
-gpio_list[21] = gpio(0, 0, 0, 0, 'IRQ_IDE, PFI')
-gpio_list[19] = gpio(0, 0, 0, 0, 'XB_DREQ1, PCC_SO_IRQ_O#')
-gpio_list[20] = gpio(0, 0, 0, 0, 'XB_DREQ0')
-gpio_list[20] = gpio(0, 0, 0, 0, 'XB_DREQ0')
-gpio_list[17] = gpio(0, 0, 0, 0, 'IRQ_AXB')
-gpio_list[16] = gpio(1, 0, 0, 2, 'PWM0')
-
-# PCMCIA stuff
-gpio_list[57] = gpio(0, 0, 0, 1, 'PCC_IOIS16#')
-gpio_list[56] = gpio(0, 0, 0, 1, 'PCC_WAIT#')
-gpio_list[55] = gpio(1, 0, 0, 2, 'PCC_REG#')
-gpio_list[54] = gpio(1, 0, 0, 2, 'PCC_SCKSEL')
-gpio_list[53] = gpio(1, 1, 0, 2, 'PCC_CE2#')
-gpio_list[52] = gpio(1, 1, 0, 2, 'PCC_CE1#')
-gpio_list[51] = gpio(1, 1, 0, 1, 'PCC_IOW#')
-gpio_list[50] = gpio(1, 1, 0, 2, 'PCC_IOR#')
-gpio_list[49] = gpio(1, 1, 0, 2, 'PCC_WE#')
-gpio_list[48] = gpio(1, 1, 0, 2, 'PCC_OE#')
-
-# SSP port
-gpio_list[26] = gpio(0, 0, 0, 1, 'SSP_RXD')
-gpio_list[25] = gpio(0, 0, 0, 0, 'SSP_TXD')
-gpio_list[24] = gpio(1, 0, 1, 2, 'SSP_SFRM')
-gpio_list[23] = gpio(1, 0, 1, 2, 'SSP_SCLK')
-gpio_list[27] = gpio(0, 0, 0, 0, 'SSP_EXTCLK')
-
-# audio codec
-gpio_list[32] = gpio(0, 0, 0, 0, 'AUD_SDIN1')
-gpio_list[31] = gpio(1, 0, 0, 2, 'AC_SYNC')
-gpio_list[30] = gpio(1, 0, 0, 2, 'AC_SDOUT')
-gpio_list[29] = gpio(0, 0, 0, 1, 'AUD_SDIN0')
-gpio_list[28] = gpio(0, 0, 0, 1, 'AC_BITCLK')
-
-# serial ports
-gpio_list[39] = gpio(1, 0, 0, 2, 'FF_TXD')
-gpio_list[34] = gpio(0, 0, 0, 1, 'FF_RXD')
-gpio_list[41] = gpio(1, 0, 0, 2, 'FF_RTS')
-gpio_list[35] = gpio(0, 0, 0, 1, 'FF_CTS')
-gpio_list[40] = gpio(1, 0, 0, 2, 'FF_DTR')
-gpio_list[37] = gpio(0, 0, 0, 1, 'FF_DSR')
-gpio_list[38] = gpio(0, 0, 0, 1, 'FF_RI')
-gpio_list[36] = gpio(0, 0, 0, 1, 'FF_DCD')
-
-gpio_list[43] = gpio(1, 0, 0, 2, 'BT_TXD')
-gpio_list[42] = gpio(0, 0, 0, 1, 'BT_RXD')
-gpio_list[45] = gpio(1, 0, 0, 2, 'BT_RTS')
-gpio_list[44] = gpio(0, 0, 0, 1, 'BT_CTS')
-
-gpio_list[47] = gpio(1, 0, 0, 1, 'IR_TXD')
-gpio_list[46] = gpio(0, 0, 0, 2, 'IR_RXD')
-
-# misc GPIO signals
-gpio_list[14] = gpio(0, 0, 0, 0, 'MBREQ')
-gpio_list[13] = gpio(0, 0, 0, 0, 'MBGNT')
-gpio_list[12] = gpio(0, 0, 0, 0, 'GPIO_12/32K_CLK')
-gpio_list[11] = gpio(0, 0, 0, 0, '3M6_CLK')
-gpio_list[10] = gpio(1, 0, 1, 0, 'GPIO_10/RTC_CLK/debug LED')
-gpio_list[9] = gpio(0, 0, 0, 0, 'MMC_CD#')
-gpio_list[8] = gpio(0, 0, 0, 0, 'PCC_S1_CD#')
-gpio_list[7] = gpio(0, 0, 0, 0, 'PCC_S0_CD#')
-gpio_list[6] = gpio(1, 0, 0, 1, 'MMC_CLK')
-gpio_list[5] = gpio(0, 0, 0, 0, 'IRQ_TOUCH#')
-gpio_list[4] = gpio(0, 0, 0, 0, 'IRQ_ETH')
-gpio_list[3] = gpio(0, 0, 0, 0, 'MQ_IRQ#')
-gpio_list[2] = gpio(0, 0, 0, 0, 'BAT_DATA')
-gpio_list[1] = gpio(0, 0, 0, 1, 'USER_RESET#')
-gpio_list[0] = gpio(0, 0, 0, 1, 'USER_RESET#')
-
-# LCD GPIOs
-gpio_list[58] = gpio(1, 0, 0, 2, 'LDD0')
-gpio_list[59] = gpio(1, 0, 0, 2, 'LDD1')
-gpio_list[60] = gpio(1, 0, 0, 2, 'LDD2')
-gpio_list[61] = gpio(1, 0, 0, 2, 'LDD3')
-gpio_list[62] = gpio(1, 0, 0, 2, 'LDD4')
-gpio_list[63] = gpio(1, 0, 0, 2, 'LDD5')
-gpio_list[64] = gpio(1, 0, 0, 2, 'LDD6')
-gpio_list[65] = gpio(1, 0, 0, 2, 'LDD7')
-gpio_list[66] = gpio(1, 0, 0, 2, 'LDD8')
-gpio_list[67] = gpio(1, 0, 0, 2, 'LDD9')
-gpio_list[68] = gpio(1, 0, 0, 2, 'LDD10')
-gpio_list[69] = gpio(1, 0, 0, 2, 'LDD11')
-gpio_list[70] = gpio(1, 0, 0, 2, 'LDD12')
-gpio_list[71] = gpio(1, 0, 0, 2, 'LDD13')
-gpio_list[72] = gpio(1, 0, 0, 2, 'LDD14')
-gpio_list[73] = gpio(1, 0, 0, 2, 'LDD15')
-gpio_list[74] = gpio(1, 0, 0, 2, 'FCLK')
-gpio_list[75] = gpio(1, 0, 0, 2, 'LCLK')
-gpio_list[76] = gpio(1, 0, 0, 2, 'PCLK')
-gpio_list[77] = gpio(1, 0, 0, 2, 'ACBIAS')
-
-# calculate registers
-pxa_regs = {
-       'gpdr0':0, 'gpdr1':0, 'gpdr2':0,
-       'gpsr0':0, 'gpsr1':0, 'gpsr2':0,
-       'gpcr0':0, 'gpcr1':0, 'gpcr2':0,
-       'gafr0_l':0, 'gafr0_u':0,
-       'gafr1_l':0, 'gafr1_u':0,
-       'gafr2_l':0, 'gafr2_u':0,
-}
-
-# U-boot define names
-uboot_reg_names = {
-       'gpdr0':'CONFIG_SYS_GPDR0_VAL', 'gpdr1':'CONFIG_SYS_GPDR1_VAL', 'gpdr2':'CONFIG_SYS_GPDR2_VAL',
-       'gpsr0':'CONFIG_SYS_GPSR0_VAL', 'gpsr1':'CONFIG_SYS_GPSR1_VAL', 'gpsr2':'CONFIG_SYS_GPSR2_VAL',
-       'gpcr0':'CONFIG_SYS_GPCR0_VAL', 'gpcr1':'CONFIG_SYS_GPCR1_VAL', 'gpcr2':'CONFIG_SYS_GPCR2_VAL',
-       'gafr0_l':'CONFIG_SYS_GAFR0_L_VAL', 'gafr0_u':'CONFIG_SYS_GAFR0_U_VAL',
-       'gafr1_l':'CONFIG_SYS_GAFR1_L_VAL', 'gafr1_u':'CONFIG_SYS_GAFR1_U_VAL',
-       'gafr2_l':'CONFIG_SYS_GAFR2_L_VAL', 'gafr2_u':'CONFIG_SYS_GAFR2_U_VAL',
-}
-
-# bit mappings
-
-bit_mappings = [
-
-{ 'gpio':(0,32),  'shift':1, 'regs':{'dir':'gpdr0', 'set':'gpsr0', 'clr':'gpcr0'} },
-{ 'gpio':(32,64), 'shift':1, 'regs':{'dir':'gpdr1', 'set':'gpsr1', 'clr':'gpcr1'} },
-{ 'gpio':(64,85), 'shift':1, 'regs':{'dir':'gpdr2', 'set':'gpsr2', 'clr':'gpcr2'} },
-{ 'gpio':(0,16),  'shift':2, 'regs':{'alt':'gafr0_l'} },
-{ 'gpio':(16,32), 'shift':2, 'regs':{'alt':'gafr0_u'} },
-{ 'gpio':(32,48), 'shift':2, 'regs':{'alt':'gafr1_l'} },
-{ 'gpio':(48,64), 'shift':2, 'regs':{'alt':'gafr1_u'} },
-{ 'gpio':(64,80), 'shift':2, 'regs':{'alt':'gafr2_l'} },
-{ 'gpio':(80,85), 'shift':2, 'regs':{'alt':'gafr2_u'} },
-
-]
-
-def stuff_bits(bit_mapping, gpio_list):
-       gpios = range( bit_mapping['gpio'][0], bit_mapping['gpio'][1])
-
-       for gpio in gpios:
-               for reg in bit_mapping['regs'].keys():
-                       value = eval( 'gpio_list[gpio].%s' % (reg) )
-                       if ( value ):
-                               # we have a high bit
-                               bit_shift = (gpio - bit_mapping['gpio'][0]) * bit_mapping['shift']
-                               bit = value << (bit_shift)
-                               pxa_regs[bit_mapping['regs'][reg]] |= bit
-
-for i in bit_mappings:
-       stuff_bits(i, gpio_list)
-
-# now print out all regs
-registers = pxa_regs.keys()
-registers.sort()
-for reg in registers:
-       print '%s: 0x%x' % (reg, pxa_regs[reg])
-
-# print define to past right into U-Boot source code
-
-print 
-print 
-
-for reg in registers:
-       print '#define %s       0x%x' % (uboot_reg_names[reg], pxa_regs[reg])
-
-# print all GPIOS
-print
-print
-
-for i in range(len(gpio_list)):
-       gpio_i = gpio_list[i]
-       alt_func_desc = pxa255_alt_func[i][gpio_i.alt]
-       print 'GPIO: %i, dir=%i, set=%i, clr=%i, alt=%s, desc=%s' % (i, gpio_i.dir, gpio_i.set, gpio_i.clr, alt_func_desc, gpio_i.desc)
-
-
index d21750e2a0434d262a139681f805adc511abe847..6d7be11518ebf7131faac6f71386417b3ee7fcaa 100644 (file)
@@ -10,6 +10,7 @@
 #include <fdt_support.h>
 #include <fdt_simplefb.h>
 #include <lcd.h>
+#include <memalign.h>
 #include <mmc.h>
 #include <asm/gpio.h>
 #include <asm/arch/mbox.h>
index 7d1b88a9b8a17d5094d01831d268418a35814960..4250f722da7bd5160bb5a74e112d201b9a101f5a 100644 (file)
@@ -121,11 +121,12 @@ int exynos_power_init(void)
                return ret;
 
        /*
-        * This would normally be 1.3V, but since we are running slowly 1V
+        * This would normally be 1.3V, but since we are running slowly 1.1V
         * is enough. For spring it helps reduce CPU temperature and avoid
-        * hangs with the case open.
+        * hangs with the case open. 1.1V is minimum voltage borderline for
+        * chained bootloaders.
         */
-       ret = exynos_set_regulator("vdd_arm", 1000000);
+       ret = exynos_set_regulator("vdd_arm", 1100000);
        if (ret)
                return ret;
        ret = exynos_set_regulator("vdd_int", 1012500);
index f0d69d4a48f0472e705f964b2a4522b31e879c95..e0e2c48632cf37907170f1888786a2f21361c5a1 100644 (file)
@@ -12,6 +12,7 @@
 #include <errno.h>
 #include <version.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <linux/sizes.h>
 #include <asm/arch/cpu.h>
 #include <asm/gpio.h>
diff --git a/board/sbc405/Kconfig b/board/sbc405/Kconfig
deleted file mode 100644 (file)
index 4e7e843..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_SBC405
-
-config SYS_BOARD
-       default "sbc405"
-
-config SYS_CONFIG_NAME
-       default "sbc405"
-
-endif
diff --git a/board/sbc405/MAINTAINERS b/board/sbc405/MAINTAINERS
deleted file mode 100644 (file)
index 2abad25..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SBC405 BOARD
-#M:    -
-S:     Maintained
-F:     board/sbc405/
-F:     include/configs/sbc405.h
-F:     configs/sbc405_defconfig
diff --git a/board/sbc405/Makefile b/board/sbc405/Makefile
deleted file mode 100644 (file)
index 3f2b0e2..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = sbc405.o strataflash.o
diff --git a/board/sbc405/sbc405.c b/board/sbc405/sbc405.c
deleted file mode 100644 (file)
index cafc844..0000000
+++ /dev/null
@@ -1,91 +0,0 @@
-/*
- * (C) Copyright 2001
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-#include <command.h>
-#include <malloc.h>
-#include <spd_sdram.h>
-
-
-int board_early_init_f (void)
-{
-       /*
-        * IRQ 0-15  405GP internally generated; active high; level sensitive
-        * IRQ 16    405GP internally generated; active low; level sensitive
-        * IRQ 17-24 RESERVED
-        * IRQ 25 (EXT IRQ 0) CAN0; active low; level sensitive
-        * IRQ 26 (EXT IRQ 1) SER0 ; active low; level sensitive
-        * IRQ 27 (EXT IRQ 2) SER1; active low; level sensitive
-        * IRQ 28 (EXT IRQ 3) FPGA 0; active low; level sensitive
-        * IRQ 29 (EXT IRQ 4) FPGA 1; active low; level sensitive
-        * IRQ 30 (EXT IRQ 5) PCI INTA; active low; level sensitive
-        * IRQ 31 (EXT IRQ 6) COMPACT FLASH; active high; level sensitive
-        */
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);       /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);       /* set all to be non-critical*/
-       mtdcr(UIC0PR, 0xFFFFFF81);       /* set int polarities */
-       mtdcr(UIC0TR, 0x10000000);       /* set int trigger levels */
-       mtdcr(UIC0VCR, 0x00000001);      /* set vect base=0,INT0 highest priority*/
-       mtdcr(UIC0SR, 0xFFFFFFFF);       /* clear all ints */
-
-       /*
-        * EBC Configuration Register: set ready timeout to 512 ebc-clks -> ca. 15 us
-        */
-       mtebc (EBC0_CFG, 0xa8400000);
-
-       return 0;
-}
-
-
-/* ------------------------------------------------------------------------- */
-
-int misc_init_f (void)
-{
-       return 0;  /* dummy implementation */
-}
-
-
-int misc_init_r (void)
-{
-       return (0);
-}
-
-
-/*
- * Check Board Identity:
- */
-
-int checkboard (void)
-{
-       char str[64];
-       int i = getenv_f("serial#", str, sizeof(str));
-
-       puts ("Board: ");
-
-       if (i == -1) {
-               puts ("### No HW ID - assuming sbc405");
-       } else {
-               puts(str);
-       }
-
-       putc ('\n');
-
-       return 0;
-}
-
-/* ------------------------------------------------------------------------- */
-
-int testdram (void)
-{
-       /* TODO: XXX XXX XXX */
-       printf ("test: 64 MB - ok\n");
-
-       return (0);
-}
-
-/* ------------------------------------------------------------------------- */
diff --git a/board/sbc405/strataflash.c b/board/sbc405/strataflash.c
deleted file mode 100644 (file)
index 7ddc97c..0000000
+++ /dev/null
@@ -1,774 +0,0 @@
-/*
- * (C) Copyright 2002
- * Brad Kemp, Seranoa Networks, Brad.Kemp@seranoa.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/processor.h>
-
-#undef  DEBUG_FLASH
-/*
- * This file implements a Common Flash Interface (CFI) driver for ppcboot.
- * The width of the port and the width of the chips are determined at initialization.
- * These widths are used to calculate the address for access CFI data structures.
- * It has been tested on an Intel Strataflash implementation.
- *
- * References
- * JEDEC Standard JESD68 - Common Flash Interface (CFI)
- * JEDEC Standard JEP137-A Common Flash Interface (CFI) ID Codes
- * Intel Application Note 646 Common Flash Interface (CFI) and Command Sets
- * Intel 290667-008 3 Volt Intel StrataFlash Memory datasheet
- *
- * TODO
- * Use Primary Extended Query table (PRI) and Alternate Algorithm Query Table (ALT) to determine if protection is available
- * Add support for other command sets Use the PRI and ALT to determine command set
- * Verify erase and program timeouts.
- */
-
-#define FLASH_CMD_CFI                  0x98
-#define FLASH_CMD_READ_ID              0x90
-#define FLASH_CMD_RESET                        0xff
-#define FLASH_CMD_BLOCK_ERASE          0x20
-#define FLASH_CMD_ERASE_CONFIRM                0xD0
-#define FLASH_CMD_WRITE                        0x40
-#define FLASH_CMD_PROTECT              0x60
-#define FLASH_CMD_PROTECT_SET          0x01
-#define FLASH_CMD_PROTECT_CLEAR                0xD0
-#define FLASH_CMD_CLEAR_STATUS         0x50
-#define FLASH_CMD_WRITE_TO_BUFFER       0xE8
-#define FLASH_CMD_WRITE_BUFFER_CONFIRM  0xD0
-
-#define FLASH_STATUS_DONE              0x80
-#define FLASH_STATUS_ESS               0x40
-#define FLASH_STATUS_ECLBS             0x20
-#define FLASH_STATUS_PSLBS             0x10
-#define FLASH_STATUS_VPENS             0x08
-#define FLASH_STATUS_PSS               0x04
-#define FLASH_STATUS_DPS               0x02
-#define FLASH_STATUS_R                 0x01
-#define FLASH_STATUS_PROTECT           0x01
-
-#define FLASH_OFFSET_CFI               0x55
-#define FLASH_OFFSET_CFI_RESP          0x10
-#define FLASH_OFFSET_WTOUT             0x1F
-#define FLASH_OFFSET_WBTOUT             0x20
-#define FLASH_OFFSET_ETOUT             0x21
-#define FLASH_OFFSET_CETOUT             0x22
-#define FLASH_OFFSET_WMAX_TOUT         0x23
-#define FLASH_OFFSET_WBMAX_TOUT         0x24
-#define FLASH_OFFSET_EMAX_TOUT         0x25
-#define FLASH_OFFSET_CEMAX_TOUT         0x26
-#define FLASH_OFFSET_SIZE              0x27
-#define FLASH_OFFSET_INTERFACE          0x28
-#define FLASH_OFFSET_BUFFER_SIZE        0x2A
-#define FLASH_OFFSET_NUM_ERASE_REGIONS 0x2C
-#define FLASH_OFFSET_ERASE_REGIONS     0x2D
-#define FLASH_OFFSET_PROTECT           0x02
-#define FLASH_OFFSET_USER_PROTECTION    0x85
-#define FLASH_OFFSET_INTEL_PROTECTION   0x81
-
-
-#define FLASH_MAN_CFI                  0x01000000
-
-
-typedef union {
-       unsigned char c;
-       unsigned short w;
-       unsigned long l;
-} cfiword_t;
-
-typedef union {
-       unsigned char * cp;
-       unsigned short *wp;
-       unsigned long *lp;
-} cfiptr_t;
-
-#define NUM_ERASE_REGIONS 4
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-
-
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c);
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf);
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd);
-static int flash_detect_cfi(flash_info_t * info);
-static ulong flash_get_size (ulong base, int banknum);
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword);
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt);
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len);
-#endif
-/*-----------------------------------------------------------------------
- * create an address based on the offset and the port width
- */
-inline uchar * flash_make_addr(flash_info_t * info, int sect, int offset)
-{
-       return ((uchar *)(info->start[sect] + (offset * info->portwidth)));
-}
-/*-----------------------------------------------------------------------
- * read a character at a port width address
- */
-inline uchar flash_read_uchar(flash_info_t * info, uchar offset)
-{
-       uchar *cp;
-       cp = flash_make_addr(info, 0, offset);
-       return (cp[info->portwidth - 1]);
-}
-
-/*-----------------------------------------------------------------------
- * read a short word by swapping for ppc format.
- */
-ushort flash_read_ushort(flash_info_t * info, int sect,  uchar offset)
-{
-    uchar * addr;
-
-    addr = flash_make_addr(info, sect, offset);
-    return ((addr[(2*info->portwidth) - 1] << 8) | addr[info->portwidth - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- * read a long word by picking the least significant byte of each maiximum
- * port size word. Swap for ppc format.
- */
-ulong flash_read_long(flash_info_t * info, int sect,  uchar offset)
-{
-    uchar * addr;
-
-    addr = flash_make_addr(info, sect, offset);
-    return ( (addr[(2*info->portwidth) - 1] << 24 ) | (addr[(info->portwidth) -1] << 16) |
-           (addr[(4*info->portwidth) - 1] << 8) | addr[(3*info->portwidth) - 1]);
-
-}
-
-/*-----------------------------------------------------------------------
- */
-unsigned long flash_init (void)
-{
-       unsigned long size;
-       int i;
-       unsigned long  address;
-
-
-       /* The flash is positioned back to back, with the demultiplexing of the chip
-        * based on the A24 address line.
-        *
-        */
-
-       address = CONFIG_SYS_FLASH_BASE;
-       size = 0;
-
-       /* Init: no FLASHes known */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-               size += flash_info[i].size = flash_get_size(address, i);
-               address += CONFIG_SYS_FLASH_INCREMENT;
-               if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-                       printf ("## Unknown FLASH on Bank %d - Size = 0x%08lx = %ld MB\n",i,
-                               flash_info[0].size, flash_info[i].size<<20);
-               }
-       }
-
-#if 0 /* test-only */
-       /* Monitor protection ON by default */
-#if (CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE)
-       for(i=0; flash_info[0].start[i] < CONFIG_SYS_MONITOR_BASE+CONFIG_SYS_MONITOR_LEN-1; i++)
-               (void)flash_real_protect(&flash_info[0], i, 1);
-#endif
-#else
-       /* monitor protection ON by default */
-       flash_protect (FLAG_PROTECT_SET,
-                      - CONFIG_SYS_MONITOR_LEN,
-                      - 1, &flash_info[1]);
-#endif
-
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int rcode = 0;
-       int prot;
-       int sect;
-
-       if( info->flash_id != FLASH_MAN_CFI) {
-               printf ("Can't erase unknown flash type - aborted\n");
-               return 1;
-       }
-       if ((s_first < 0) || (s_first > s_last)) {
-               printf ("- no sectors to erase\n");
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       flash_write_cmd(info, sect, 0, FLASH_CMD_CLEAR_STATUS);
-                       flash_write_cmd(info, sect, 0, FLASH_CMD_BLOCK_ERASE);
-                       flash_write_cmd(info, sect, 0, FLASH_CMD_ERASE_CONFIRM);
-
-                       if(flash_full_status_check(info, sect, info->erase_blk_tout, "erase")) {
-                               rcode = 1;
-                       } else
-                               printf(".");
-               }
-       }
-       printf (" done\n");
-       return rcode;
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id != FLASH_MAN_CFI) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       printf("CFI conformant FLASH (%d x %d)",
-              (info->portwidth  << 3 ), (info->chipwidth  << 3 ));
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-       printf(" Erase timeout %ld ms, write timeout %ld ms, buffer write timeout %ld ms, buffer size %d\n",
-              info->erase_blk_tout, info->write_tout, info->buffer_write_tout, info->buffer_size);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-#ifdef CONFIG_SYS_FLASH_EMPTY_INFO
-               int k;
-               int size;
-               int erased;
-               volatile unsigned long *flash;
-
-               /*
-                * Check if whole sector is erased
-                */
-               if (i != (info->sector_count-1))
-                 size = info->start[i+1] - info->start[i];
-               else
-                 size = info->start[0] + info->size - info->start[i];
-               erased = 1;
-               flash = (volatile unsigned long *)info->start[i];
-               size = size >> 2;        /* divide by 4 for longword access */
-               for (k=0; k<size; k++)
-                 {
-                   if (*flash++ != 0xffffffff)
-                     {
-                       erased = 0;
-                       break;
-                     }
-                 }
-
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               /* print empty and read-only info */
-               printf (" %08lX%s%s",
-                       info->start[i],
-                       erased ? " E" : "  ",
-                       info->protect[i] ? "RO " : "   ");
-#else
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     ");
-#endif
-       }
-       printf ("\n");
-       return;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong wp;
-       ulong cp;
-       int aln;
-       cfiword_t cword;
-       int i, rc;
-
-       /* get lower aligned address */
-       wp = (addr & ~(info->portwidth - 1));
-
-       /* handle unaligned start */
-       if((aln = addr - wp) != 0) {
-               cword.l = 0;
-               cp = wp;
-               for(i=0;i<aln; ++i, ++cp)
-                       flash_add_byte(info, &cword, (*(uchar *)cp));
-
-               for(; (i< info->portwidth) && (cnt > 0) ; i++) {
-                       flash_add_byte(info, &cword, *src++);
-                       cnt--;
-                       cp++;
-               }
-               for(; (cnt == 0) && (i < info->portwidth); ++i, ++cp)
-                       flash_add_byte(info, &cword, (*(uchar *)cp));
-               if((rc = flash_write_cfiword(info, wp, cword)) != 0)
-                       return rc;
-               wp = cp;
-       }
-
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-       while(cnt >= info->portwidth) {
-               i = info->buffer_size > cnt? cnt: info->buffer_size;
-               if((rc = flash_write_cfibuffer(info, wp, src,i)) != ERR_OK)
-                       return rc;
-               wp += i;
-               src += i;
-               cnt -=i;
-       }
-#else
-       /* handle the aligned part */
-       while(cnt >= info->portwidth) {
-               cword.l = 0;
-               for(i = 0; i < info->portwidth; i++) {
-                       flash_add_byte(info, &cword, *src++);
-               }
-               if((rc = flash_write_cfiword(info, wp, cword)) != 0)
-                       return rc;
-               wp += info->portwidth;
-               cnt -= info->portwidth;
-       }
-#endif /* CONFIG_SYS_FLASH_USE_BUFFER_WRITE */
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       cword.l = 0;
-       for (i=0, cp=wp; (i<info->portwidth) && (cnt>0); ++i, ++cp) {
-               flash_add_byte(info, &cword, *src++);
-               --cnt;
-       }
-       for (; i<info->portwidth; ++i, ++cp) {
-               flash_add_byte(info, & cword, (*(uchar *)cp));
-       }
-
-       return flash_write_cfiword(info, wp, cword);
-}
-
-/*-----------------------------------------------------------------------
- */
-int flash_real_protect(flash_info_t *info, long sector, int prot)
-{
-       int retcode = 0;
-
-       flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
-       flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT);
-       if(prot)
-               flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_SET);
-       else
-               flash_write_cmd(info, sector, 0, FLASH_CMD_PROTECT_CLEAR);
-
-       if((retcode = flash_full_status_check(info, sector, info->erase_blk_tout,
-                                        prot?"protect":"unprotect")) == 0) {
-
-               info->protect[sector] = prot;
-               /* Intel's unprotect unprotects all locking */
-               if(prot == 0) {
-                       int i;
-                       for(i = 0 ; i<info->sector_count; i++) {
-                               if(info->protect[i])
-                                       flash_real_protect(info, i, 1);
-                       }
-               }
-       }
-
-       return retcode;
-}
-/*-----------------------------------------------------------------------
- *  wait for XSR.7 to be set. Time out with an error if it does not.
- *  This routine does not set the flash to read-array mode.
- */
-static int flash_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
-       ulong start;
-
-       /* Wait for command completion */
-       start = get_timer (0);
-       while(!flash_isset(info, sector, 0, FLASH_STATUS_DONE)) {
-               if (get_timer(start) > info->erase_blk_tout) {
-                       printf("Flash %s timeout at address %lx\n", prompt, info->start[sector]);
-                       flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
-                       return ERR_TIMOUT;
-               }
-       }
-       return ERR_OK;
-}
-/*-----------------------------------------------------------------------
- * Wait for XSR.7 to be set, if it times out print an error, otherwise do a full status check.
- * This routine sets the flash to read-array mode.
- */
-static int flash_full_status_check(flash_info_t * info, ulong sector, ulong tout, char * prompt)
-{
-       int retcode;
-       retcode = flash_status_check(info, sector, tout, prompt);
-       if((retcode == ERR_OK) && !flash_isequal(info,sector, 0, FLASH_STATUS_DONE)) {
-               retcode = ERR_INVAL;
-               printf("Flash %s error at address %lx\n", prompt,info->start[sector]);
-               if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS | FLASH_STATUS_PSLBS)){
-                       printf("Command Sequence Error.\n");
-               } else if(flash_isset(info, sector, 0, FLASH_STATUS_ECLBS)){
-                       printf("Block Erase Error.\n");
-                       retcode = ERR_NOT_ERASED;
-               } else if (flash_isset(info, sector, 0, FLASH_STATUS_PSLBS)) {
-                       printf("Locking Error\n");
-               }
-               if(flash_isset(info, sector, 0, FLASH_STATUS_DPS)){
-                       printf("Block locked.\n");
-                       retcode = ERR_PROTECTED;
-               }
-               if(flash_isset(info, sector, 0, FLASH_STATUS_VPENS))
-                       printf("Vpp Low Error.\n");
-       }
-       flash_write_cmd(info, sector, 0, FLASH_CMD_RESET);
-       return retcode;
-}
-/*-----------------------------------------------------------------------
- */
-static void flash_add_byte(flash_info_t *info, cfiword_t * cword, uchar c)
-{
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               cword->c = c;
-               break;
-       case FLASH_CFI_16BIT:
-               cword->w = (cword->w << 8) | c;
-               break;
-       case FLASH_CFI_32BIT:
-               cword->l = (cword->l << 8) | c;
-       }
-}
-
-
-/*-----------------------------------------------------------------------
- * make a proper sized command based on the port and chip widths
- */
-static void flash_make_cmd(flash_info_t * info, uchar cmd, void * cmdbuf)
-{
-       int i;
-       uchar *cp = (uchar *)cmdbuf;
-       for(i=0; i< info->portwidth; i++)
-               *cp++ = ((i+1) % info->chipwidth) ? '\0':cmd;
-}
-
-/*
- * Write a proper sized command to the correct address
- */
-static void flash_write_cmd(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-
-       volatile cfiptr_t addr;
-       cfiword_t cword;
-       addr.cp = flash_make_addr(info, sect, offset);
-       flash_make_cmd(info, cmd, &cword);
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               *addr.cp = cword.c;
-               break;
-       case FLASH_CFI_16BIT:
-               *addr.wp = cword.w;
-               break;
-       case FLASH_CFI_32BIT:
-               *addr.lp = cword.l;
-               break;
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-static int flash_isequal(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-       cfiptr_t cptr;
-       cfiword_t cword;
-       int retval;
-       cptr.cp = flash_make_addr(info, sect, offset);
-       flash_make_cmd(info, cmd, &cword);
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               retval = (cptr.cp[0] == cword.c);
-               break;
-       case FLASH_CFI_16BIT:
-               retval = (cptr.wp[0] == cword.w);
-               break;
-       case FLASH_CFI_32BIT:
-               retval = (cptr.lp[0] == cword.l);
-               break;
-       default:
-               retval = 0;
-               break;
-       }
-       return retval;
-}
-/*-----------------------------------------------------------------------
- */
-static int flash_isset(flash_info_t * info, int sect, uchar offset, uchar cmd)
-{
-       cfiptr_t cptr;
-       cfiword_t cword;
-       int retval;
-       cptr.cp = flash_make_addr(info, sect, offset);
-       flash_make_cmd(info, cmd, &cword);
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               retval = ((cptr.cp[0] & cword.c) == cword.c);
-               break;
-       case FLASH_CFI_16BIT:
-               retval = ((cptr.wp[0] & cword.w) == cword.w);
-               break;
-       case FLASH_CFI_32BIT:
-               retval = ((cptr.lp[0] & cword.l) == cword.l);
-               break;
-       default:
-               retval = 0;
-               break;
-       }
-       return retval;
-}
-
-/*-----------------------------------------------------------------------
- * detect if flash is compatible with the Common Flash Interface (CFI)
- * http://www.jedec.org/download/search/jesd68.pdf
- *
-*/
-static int flash_detect_cfi(flash_info_t * info)
-{
-
-       for(info->portwidth=FLASH_CFI_8BIT; info->portwidth <= FLASH_CFI_32BIT;
-           info->portwidth <<= 1) {
-               for(info->chipwidth =FLASH_CFI_BY8;
-                   info->chipwidth <= info->portwidth;
-                   info->chipwidth <<= 1) {
-                       flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
-                       flash_write_cmd(info, 0, FLASH_OFFSET_CFI, FLASH_CMD_CFI);
-                       if(flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP,'Q') &&
-                          flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 1, 'R') &&
-                          flash_isequal(info, 0, FLASH_OFFSET_CFI_RESP + 2, 'Y'))
-                               return 1;
-               }
-       }
-       return 0;
-}
-/*
- * The following code cannot be run from FLASH!
- *
- */
-static ulong flash_get_size (ulong base, int banknum)
-{
-       flash_info_t * info = &flash_info[banknum];
-       int i, j;
-       int sect_cnt;
-       unsigned long sector;
-       unsigned long tmp;
-       int size_ratio;
-       uchar num_erase_regions;
-       int  erase_region_size;
-       int  erase_region_count;
-
-       info->start[0] = base;
-
-       if(flash_detect_cfi(info)){
-#ifdef DEBUG_FLASH
-               printf("portwidth=%d chipwidth=%d\n", info->portwidth, info->chipwidth); /* test-only */
-#endif
-               size_ratio = info->portwidth / info->chipwidth;
-               num_erase_regions = flash_read_uchar(info, FLASH_OFFSET_NUM_ERASE_REGIONS);
-#ifdef DEBUG_FLASH
-               printf("found %d erase regions\n", num_erase_regions);
-#endif
-               sect_cnt = 0;
-               sector = base;
-               for(i = 0 ; i < num_erase_regions; i++) {
-                       if(i > NUM_ERASE_REGIONS) {
-                               printf("%d erase regions found, only %d used\n",
-                                      num_erase_regions, NUM_ERASE_REGIONS);
-                               break;
-                       }
-                       tmp = flash_read_long(info, 0, FLASH_OFFSET_ERASE_REGIONS);
-                       erase_region_size = (tmp & 0xffff)? ((tmp & 0xffff) * 256): 128;
-                       tmp >>= 16;
-                       erase_region_count = (tmp & 0xffff) +1;
-                       for(j = 0; j< erase_region_count; j++) {
-                               info->start[sect_cnt] = sector;
-                               sector += (erase_region_size * size_ratio);
-                               info->protect[sect_cnt] = flash_isset(info, sect_cnt, FLASH_OFFSET_PROTECT, FLASH_STATUS_PROTECT);
-                               sect_cnt++;
-                       }
-               }
-
-               info->sector_count = sect_cnt;
-               /* multiply the size by the number of chips */
-               info->size = (1 << flash_read_uchar(info, FLASH_OFFSET_SIZE)) * size_ratio;
-               info->buffer_size = (1 << flash_read_ushort(info, 0, FLASH_OFFSET_BUFFER_SIZE));
-               tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_ETOUT);
-               info->erase_blk_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_EMAX_TOUT)));
-               tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WBTOUT);
-               info->buffer_write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WBMAX_TOUT)));
-               tmp = 1 << flash_read_uchar(info, FLASH_OFFSET_WTOUT);
-               info->write_tout = (tmp * (1 << flash_read_uchar(info, FLASH_OFFSET_WMAX_TOUT)))/ 1000;
-               info->flash_id = FLASH_MAN_CFI;
-       }
-
-       flash_write_cmd(info, 0, 0, FLASH_CMD_RESET);
-       return(info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-static int flash_write_cfiword (flash_info_t *info, ulong dest, cfiword_t cword)
-{
-
-       cfiptr_t cptr;
-       int flag;
-
-       cptr.cp = (uchar *)dest;
-
-       /* Check if Flash is (sufficiently) erased */
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               flag = ((cptr.cp[0] & cword.c) == cword.c);
-               break;
-       case FLASH_CFI_16BIT:
-               flag = ((cptr.wp[0] & cword.w) == cword.w);
-               break;
-       case FLASH_CFI_32BIT:
-               flag = ((cptr.lp[0] & cword.l)  == cword.l);
-               break;
-       default:
-               return 2;
-       }
-       if(!flag)
-               return 2;
-
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       flash_write_cmd(info, 0, 0, FLASH_CMD_CLEAR_STATUS);
-       flash_write_cmd(info, 0, 0, FLASH_CMD_WRITE);
-
-       switch(info->portwidth) {
-       case FLASH_CFI_8BIT:
-               cptr.cp[0] = cword.c;
-               break;
-       case FLASH_CFI_16BIT:
-               cptr.wp[0] = cword.w;
-               break;
-       case FLASH_CFI_32BIT:
-               cptr.lp[0] = cword.l;
-               break;
-       }
-
-       /* re-enable interrupts if necessary */
-       if(flag)
-               enable_interrupts();
-
-       return flash_full_status_check(info, 0, info->write_tout, "write");
-}
-
-#ifdef CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-
-/* loop through the sectors from the highest address
- * when the passed address is greater or equal to the sector address
- * we have a match
- */
-static int find_sector(flash_info_t *info, ulong addr)
-{
-       int sector;
-       for(sector = info->sector_count - 1; sector >= 0; sector--) {
-               if(addr >= info->start[sector])
-                       break;
-       }
-       return sector;
-}
-
-static int flash_write_cfibuffer(flash_info_t * info, ulong dest, uchar * cp, int len)
-{
-
-       int sector;
-       int cnt;
-       int retcode;
-       volatile cfiptr_t src;
-       volatile cfiptr_t dst;
-
-       src.cp = cp;
-       dst.cp = (uchar *)dest;
-       sector = find_sector(info, dest);
-       flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
-       flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_TO_BUFFER);
-       if((retcode = flash_status_check(info, sector, info->buffer_write_tout,
-                                        "write to buffer")) == ERR_OK) {
-               switch(info->portwidth) {
-               case FLASH_CFI_8BIT:
-                       cnt = len;
-                       break;
-               case FLASH_CFI_16BIT:
-                       cnt = len >> 1;
-                       break;
-               case FLASH_CFI_32BIT:
-                       cnt = len >> 2;
-                       break;
-               default:
-                       return ERR_INVAL;
-                       break;
-               }
-               flash_write_cmd(info, sector, 0, (uchar)cnt-1);
-               while(cnt-- > 0) {
-                       switch(info->portwidth) {
-                       case FLASH_CFI_8BIT:
-                               *dst.cp++ = *src.cp++;
-                               break;
-                       case FLASH_CFI_16BIT:
-                               *dst.wp++ = *src.wp++;
-                               break;
-                       case FLASH_CFI_32BIT:
-                               *dst.lp++ = *src.lp++;
-                               break;
-                       default:
-                               return ERR_INVAL;
-                               break;
-                       }
-               }
-               flash_write_cmd(info, sector, 0, FLASH_CMD_WRITE_BUFFER_CONFIRM);
-               retcode = flash_full_status_check(info, sector, info->buffer_write_tout,
-                                            "buffer write");
-       }
-       flash_write_cmd(info, sector, 0, FLASH_CMD_CLEAR_STATUS);
-       return retcode;
-}
-#endif /* CONFIG_SYS_USE_FLASH_BUFFER_WRITE */
diff --git a/board/scb9328/Kconfig b/board/scb9328/Kconfig
deleted file mode 100644 (file)
index 68e99ea..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_SCB9328
-
-config SYS_BOARD
-       default "scb9328"
-
-config SYS_SOC
-       default "imx"
-
-config SYS_CONFIG_NAME
-       default "scb9328"
-
-endif
diff --git a/board/scb9328/MAINTAINERS b/board/scb9328/MAINTAINERS
deleted file mode 100644 (file)
index 0917266..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SCB9328 BOARD
-M:     Torsten Koschorrek <koschorrek@synertronixx.de>
-S:     Maintained
-F:     board/scb9328/
-F:     include/configs/scb9328.h
-F:     configs/scb9328_defconfig
diff --git a/board/scb9328/Makefile b/board/scb9328/Makefile
deleted file mode 100644 (file)
index 0b08f1a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := scb9328.o flash.o
-obj-y  += lowlevel_init.o
diff --git a/board/scb9328/flash.c b/board/scb9328/flash.c
deleted file mode 100644 (file)
index 73bfa00..0000000
+++ /dev/null
@@ -1,310 +0,0 @@
-/*
- * Copyright (C) 2003 ETC s.r.o.
- *
- * This code was inspired by Marius Groeger and Kyle Harris code
- * available in other board ports for U-Boot
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
- * Written by Peter Figuli <peposh@etc.sk>, 2003.
- */
-
-#include <common.h>
-#include "intel.h"
-
-
-/*
- * This code should handle CFI FLASH memory device. This code is very
- * minimalistic approach without many essential error handling code as well.
- * Because U-Boot actually is missing smart handling of FLASH device,
- * we just set flash_id to anything else to FLASH_UNKNOW, so common code
- * can call us without any restrictions.
- * TODO: Add CFI Query, to be able to determine FLASH device.
- * TODO: Add error handling code
- * NOTE: This code was tested with BUS_WIDTH 4 and ITERLEAVE 2 only, but
- *       hopefully may work with other configurations.
- */
-
-#if ( SCB9328_FLASH_BUS_WIDTH == 1 )
-#  define FLASH_BUS vu_char
-#  define FLASH_BUS_RET u_char
-#  if ( SCB9328_FLASH_INTERLEAVE == 1 )
-#    define FLASH_CMD( x ) x
-#  else
-#    error "With 8bit bus only one chip is allowed"
-#  endif
-
-
-#elif ( SCB9328_FLASH_BUS_WIDTH == 2 )
-#  define FLASH_BUS vu_short
-#  define FLASH_BUS_RET u_short
-#  if ( SCB9328_FLASH_INTERLEAVE == 1 )
-#    define FLASH_CMD( x ) x
-#  elif ( SCB9328_FLASH_INTERLEAVE == 2 )
-#    define FLASH_CMD( x ) (( x << 8 )| x )
-#  else
-#    error "With 16bit bus only 1 or 2 chip(s) are allowed"
-#  endif
-
-
-#elif ( SCB9328_FLASH_BUS_WIDTH == 4 )
-#  define FLASH_BUS vu_long
-#  define FLASH_BUS_RET u_long
-#  if ( SCB9328_FLASH_INTERLEAVE == 1 )
-#    define FLASH_CMD( x ) x
-#  elif ( SCB9328_FLASH_INTERLEAVE == 2 )
-#    define FLASH_CMD( x ) (( x << 16 )| x )
-#  elif ( SCB9328_FLASH_INTERLEAVE == 4 )
-#    define FLASH_CMD( x ) (( x << 24 )|( x << 16 ) ( x << 8 )| x )
-#  else
-#    error "With 32bit bus only 1,2 or 4 chip(s) are allowed"
-#  endif
-
-#else
-#  error "Flash bus width might be 1,2,4 for 8,16,32 bit configuration"
-#endif
-
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];
-
-static FLASH_BUS_RET flash_status_reg (void)
-{
-
-       FLASH_BUS *addr = (FLASH_BUS *) 0;
-
-       /* cppcheck-suppress nullPointer */
-       *addr = FLASH_CMD (CFI_INTEL_CMD_READ_STATUS_REGISTER);
-
-       /* cppcheck-suppress nullPointer */
-       return *addr;
-}
-
-static int flash_ready (ulong timeout)
-{
-       int ok = 1;
-       ulong start;
-
-       start = get_timer(0);
-       while ((flash_status_reg () & FLASH_CMD (CFI_INTEL_SR_READY)) !=
-                  FLASH_CMD (CFI_INTEL_SR_READY)) {
-               if (get_timer(start) > timeout && timeout != 0) {
-                       ok = 0;
-                       break;
-               }
-       }
-       return ok;
-}
-
-#if ( CONFIG_SYS_MAX_FLASH_BANKS != 1 )
-#  error "SCB9328 platform has only one flash bank!"
-#endif
-
-
-ulong flash_init (void)
-{
-       int i;
-       unsigned long address = SCB9328_FLASH_BASE;
-
-       flash_info[0].size = SCB9328_FLASH_BANK_SIZE;
-       flash_info[0].sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       flash_info[0].flash_id = INTEL_MANUFACT;
-       memset (flash_info[0].protect, 0, CONFIG_SYS_MAX_FLASH_SECT);
-
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_SECT; i++) {
-               flash_info[0].start[i] = address;
-#ifdef SCB9328_FLASH_UNLOCK
-               /* Some devices are hw locked after start. */
-               *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_LOCK_SETUP);
-               *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_UNLOCK_BLOCK);
-               flash_ready (0);
-               *((FLASH_BUS *) address) = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
-#endif
-               address += SCB9328_FLASH_SECT_SIZE;
-       }
-
-       flash_protect (FLAG_PROTECT_SET,
-                                  CONFIG_SYS_FLASH_BASE,
-                                  CONFIG_SYS_FLASH_BASE + monitor_flash_len - 1,
-                                  &flash_info[0]);
-
-       flash_protect (FLAG_PROTECT_SET,
-                                  CONFIG_ENV_ADDR,
-                                  CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0]);
-
-       return SCB9328_FLASH_BANK_SIZE;
-}
-
-void flash_print_info (flash_info_t * info)
-{
-       int i;
-
-       printf (" Intel vendor\n");
-       printf ("  Size: %ld MB in %d Sectors\n",
-                       info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; i++) {
-               if (!(i % 5)) {
-                       printf ("\n");
-               }
-
-               printf (" %08lX%s", info->start[i],
-                               info->protect[i] ? " (RO)" : "     ");
-       }
-       printf ("\n");
-}
-
-
-int flash_erase (flash_info_t * info, int s_first, int s_last)
-{
-       int flag, non_protected = 0, sector;
-       int rc = ERR_OK;
-
-       FLASH_BUS *address;
-
-       for (sector = s_first; sector <= s_last; sector++) {
-               if (!info->protect[sector]) {
-                       non_protected++;
-               }
-       }
-
-       if (!non_protected) {
-               return ERR_PROTECTED;
-       }
-
-       /*
-        * Disable interrupts which might cause a timeout
-        * here. Remember that our exception vectors are
-        * at address 0 in the flash, and we don't want a
-        * (ticker) exception to happen while the flash
-        * chip is in programming mode.
-        */
-       flag = disable_interrupts ();
-
-
-       /* Start erase on unprotected sectors */
-       for (sector = s_first; sector <= s_last && !ctrlc (); sector++) {
-               if (info->protect[sector]) {
-                       printf ("Protected sector %2d skipping...\n", sector);
-                       continue;
-               } else {
-                       printf ("Erasing sector %2d ... ", sector);
-               }
-
-               address = (FLASH_BUS *) (info->start[sector]);
-
-               *address = FLASH_CMD (CFI_INTEL_CMD_BLOCK_ERASE);
-               *address = FLASH_CMD (CFI_INTEL_CMD_CONFIRM);
-               if (flash_ready (CONFIG_SYS_FLASH_ERASE_TOUT)) {
-                       *address = FLASH_CMD (CFI_INTEL_CMD_CLEAR_STATUS_REGISTER);
-                       printf ("ok.\n");
-               } else {
-                       *address = FLASH_CMD (CFI_INTEL_CMD_SUSPEND);
-                       rc = ERR_TIMOUT;
-                       printf ("timeout! Aborting...\n");
-                       break;
-               }
-               *address = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
-       }
-       if (ctrlc ())
-               printf ("User Interrupt!\n");
-
-       /* allow flash to settle - wait 10 ms */
-       udelay_masked (10000);
-       if (flag) {
-               enable_interrupts ();
-       }
-
-       return rc;
-}
-
-static int write_data (flash_info_t * info, ulong dest, FLASH_BUS data)
-{
-       FLASH_BUS *address = (FLASH_BUS *) dest;
-       int rc = ERR_OK;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*address & data) != data) {
-               return ERR_NOT_ERASED;
-       }
-
-       /*
-        * Disable interrupts which might cause a timeout
-        * here. Remember that our exception vectors are
-        * at address 0 in the flash, and we don't want a
-        * (ticker) exception to happen while the flash
-        * chip is in programming mode.
-        */
-
-       flag = disable_interrupts ();
-
-       *address = FLASH_CMD (CFI_INTEL_CMD_CLEAR_STATUS_REGISTER);
-       *address = FLASH_CMD (CFI_INTEL_CMD_PROGRAM1);
-       *address = data;
-
-       if (!flash_ready (CONFIG_SYS_FLASH_WRITE_TOUT)) {
-               *address = FLASH_CMD (CFI_INTEL_CMD_SUSPEND);
-               rc = ERR_TIMOUT;
-               printf ("timeout! Aborting...\n");
-       }
-
-       *address = FLASH_CMD (CFI_INTEL_CMD_READ_ARRAY);
-       if (flag) {
-               enable_interrupts ();
-       }
-
-       return rc;
-}
-
-int write_buff (flash_info_t * info, uchar * src, ulong addr, ulong cnt)
-{
-       ulong read_addr, write_addr;
-       FLASH_BUS data;
-       int i, result = ERR_OK;
-
-
-       read_addr = addr & ~(sizeof (FLASH_BUS) - 1);
-       write_addr = read_addr;
-       if (read_addr != addr) {
-               data = 0;
-               for (i = 0; i < sizeof (FLASH_BUS); i++) {
-                       if (read_addr < addr || cnt == 0) {
-                               data |= *((uchar *) read_addr) << i * 8;
-                       } else {
-                               data |= (*src++) << i * 8;
-                               cnt--;
-                       }
-                       read_addr++;
-               }
-               if ((result = write_data (info, write_addr, data)) != ERR_OK) {
-                       return result;
-               }
-               write_addr += sizeof (FLASH_BUS);
-       }
-       for (; cnt >= sizeof (FLASH_BUS); cnt -= sizeof (FLASH_BUS)) {
-               if ((result = write_data (info, write_addr,
-                                                                 *((FLASH_BUS *) src))) != ERR_OK) {
-                       return result;
-               }
-               write_addr += sizeof (FLASH_BUS);
-               src += sizeof (FLASH_BUS);
-       }
-       if (cnt > 0) {
-               read_addr = write_addr;
-               data = 0;
-               for (i = 0; i < sizeof (FLASH_BUS); i++) {
-                       if (cnt > 0) {
-                               data |= (*src++) << i * 8;
-                               cnt--;
-                       } else {
-                               data |= *((uchar *) read_addr) << i * 8;
-                       }
-                       read_addr++;
-               }
-               if ((result = write_data (info, write_addr, data)) != 0) {
-                       return result;
-               }
-       }
-       return ERR_OK;
-}
diff --git a/board/scb9328/intel.h b/board/scb9328/intel.h
deleted file mode 100644 (file)
index 5596d27..0000000
+++ /dev/null
@@ -1,78 +0,0 @@
-/*
- * Copyright (C) 2002 ETC s.r.o.
- * All rights reserved.
- *
- * SPDX-License-Identifier:    BSD-3-Clause
- *
- * Written by Marcel Telka <marcel@telka.sk>, 2002.
- *
- * Documentation:
- * [1] Intel Corporation, "3 Volt Intel Strata Flash Memory 28F128J3A, 28F640J3A,
- *     28F320J3A (x8/x16)", April 2002, Order Number: 290667-011
- * [2] Intel Corporation, "3 Volt Synchronous Intel Strata Flash Memory 28F640K3, 28F640K18,
- *     28F128K3, 28F128K18, 28F256K3, 28F256K18 (x16)", June 2002, Order Number: 290737-005
- *
- * This file is taken from OpenWinCE project hosted by SourceForge.net
- *
- */
-
-#ifndef        FLASH_INTEL_H
-#define        FLASH_INTEL_H
-
-#include <common.h>
-
-/* Intel CFI commands - see Table 4. in [1] and Table 3. in [2] */
-
-#define        CFI_INTEL_CMD_READ_ARRAY                0xFF    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_READ_IDENTIFIER           0x90    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_READ_QUERY                0x98    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_READ_STATUS_REGISTER      0x70    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_CLEAR_STATUS_REGISTER     0x50    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_PROGRAM1                  0x40    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_PROGRAM2                  0x10    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_WRITE_TO_BUFFER           0xE8    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_CONFIRM                   0xD0    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_BLOCK_ERASE               0x20    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_SUSPEND                   0xB0    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_RESUME                    0xD0    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_LOCK_SETUP                0x60    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_LOCK_BLOCK                0x01    /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_UNLOCK_BLOCK              0xD0    /* 28FxxxJ3A - unlocks all blocks, 28FFxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_CMD_LOCK_DOWN_BLOCK           0x2F    /* 28FxxxK3, 28FxxxK18 */
-
-/* Intel CFI Status Register bits - see Table 6. in [1] and Table 7. in [2] */
-
-#define        CFI_INTEL_SR_READY                      1 << 7  /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_SR_ERASE_SUSPEND              1 << 6  /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_SR_ERASE_ERROR                1 << 5  /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_SR_PROGRAM_ERROR              1 << 4  /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_SR_VPEN_ERROR                 1 << 3  /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_SR_PROGRAM_SUSPEND            1 << 2  /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_SR_BLOCK_LOCKED               1 << 1  /* 28FxxxJ3A, 28FxxxK3, 28FxxxK18 */
-#define        CFI_INTEL_SR_BEFP                       1 << 0  /* 28FxxxK3, 28FxxxK18 */
-
-/* Intel flash device ID codes for 28FxxxJ3A - see Table 5. in [1] */
-
-#define        CFI_CHIP_INTEL_28F320J3A                0x0016
-#define        CFI_CHIPN_INTEL_28F320J3A               "28F320J3A"
-#define        CFI_CHIP_INTEL_28F640J3A                0x0017
-#define        CFI_CHIPN_INTEL_28F640J3A               "28F640J3A"
-#define        CFI_CHIP_INTEL_28F128J3A                0x0018
-#define        CFI_CHIPN_INTEL_28F128J3A               "28F128J3A"
-
-/* Intel flash device ID codes for 28FxxxK3 and 28FxxxK18 - see Table 8. in [2] */
-
-#define        CFI_CHIP_INTEL_28F640K3                 0x8801
-#define        CFI_CHIPN_INTEL_28F640K3                "28F640K3"
-#define        CFI_CHIP_INTEL_28F128K3                 0x8802
-#define        CFI_CHIPN_INTEL_28F128K3                "28F128K3"
-#define        CFI_CHIP_INTEL_28F256K3                 0x8803
-#define        CFI_CHIPN_INTEL_28F256K3                "28F256K3"
-#define        CFI_CHIP_INTEL_28F640K18                0x8805
-#define        CFI_CHIPN_INTEL_28F640K18               "28F640K18"
-#define        CFI_CHIP_INTEL_28F128K18                0x8806
-#define        CFI_CHIPN_INTEL_28F128K18               "28F128K18"
-#define        CFI_CHIP_INTEL_28F256K18                0x8807
-#define        CFI_CHIPN_INTEL_28F256K18               "28F256K18"
-
-#endif /* FLASH_INTEL_H */
diff --git a/board/scb9328/lowlevel_init.S b/board/scb9328/lowlevel_init.S
deleted file mode 100644 (file)
index d572724..0000000
+++ /dev/null
@@ -1,188 +0,0 @@
-/*
- * Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <asm/arch/imx-regs.h>
-
-.globl lowlevel_init
-lowlevel_init:
-
-       mov     r10, lr
-
-/* Change PERCLK1DIV to 14 ie 14+1 */
-       ldr             r0,     =PCDR
-       ldr             r1,     =CONFIG_SYS_PCDR_VAL
-       str             r1,   [r0]
-
-/* set MCU PLL Control Register 0 */
-
-       ldr             r0,     =MPCTL0
-       ldr             r1,     =CONFIG_SYS_MPCTL0_VAL
-       str             r1,   [r0]
-
-/* set mpll restart bit */
-       ldr             r0, =CSCR
-       ldr             r1, [r0]
-       orr             r1,r1,#(1<<21)
-       str             r1, [r0]
-
-       mov             r2,#0x10
-1:
-       mov             r3,#0x2000
-2:
-       subs    r3,r3,#1
-       bne             2b
-
-       subs    r2,r2,#1
-       bne             1b
-
-/* set System PLL Control Register 0 */
-
-       ldr             r0,     =SPCTL0
-       ldr             r1,     =CONFIG_SYS_SPCTL0_VAL
-       str             r1,   [r0]
-
-/* set spll restart bit */
-       ldr             r0, =CSCR
-       ldr             r1, [r0]
-       orr             r1,r1,#(1<<22)
-       str             r1, [r0]
-
-       mov             r2,#0x10
-1:
-       mov             r3,#0x2000
-2:
-       subs    r3,r3,#1
-       bne             2b
-
-       subs    r2,r2,#1
-       bne             1b
-
-       ldr             r0,   =CSCR
-       ldr             r1,   =CONFIG_SYS_CSCR_VAL
-       str             r1,   [r0]
-
-/* I have now read the ARM920 DataSheet back-to-Back, and have stumbled upon
- *this.....
- *
- * It would appear that from a Cold-Boot the ARM920T enters "FastBus" mode CP15
- * register 1, this stops it using the output of the PLL and thus runs at the
- * slow rate. Unless you place the Core into "Asynch" mode, the CPU will never
- * use the value set in the CM_OSC registers...regardless of what you set it
- * too!  Thus, although i thought i was running at 140MHz, i'm actually running
- * at 40!..
-
- * Slapping this into my bootloader does the trick...
-
- * MRC p15,0,r0,c1,c0,0    ; read core configuration register
- * ORR r0,r0,#0xC0000000   ; set asynchronous clocks and not fastbus mode
- * MCR p15,0,r0,c1,c0,0    ; write modified value to core configuration
- * register
- */
-       MRC p15,0,r0,c1,c0,0
-       ORR r0,r0,#0xC0000000
-       MCR p15,0,r0,c1,c0,0
-
-       ldr             r0,     =GPR(0)
-       ldr             r1,     =CONFIG_SYS_GPR_A_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =GIUS(0)
-       ldr             r1,     =CONFIG_SYS_GIUS_A_VAL
-       str             r1,   [r0]
-
-/* CS3 becomes CS3 by clearing reset default bit 1 in FMCR */
-
-       ldr             r0,     =FMCR
-       ldr             r1,     =CONFIG_SYS_FMCR_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS0U
-       ldr             r1,     =CONFIG_SYS_CS0U_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS0L
-       ldr             r1,     =CONFIG_SYS_CS0L_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS1U
-       ldr             r1,     =CONFIG_SYS_CS1U_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS1L
-       ldr             r1,     =CONFIG_SYS_CS1L_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS2U
-       ldr             r1,     =CONFIG_SYS_CS2U_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS2L
-       ldr             r1,     =CONFIG_SYS_CS2L_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS3U
-       ldr             r1,     =CONFIG_SYS_CS3U_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS3L
-       ldr             r1,     =CONFIG_SYS_CS3L_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS4U
-       ldr             r1,     =CONFIG_SYS_CS4U_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS4L
-       ldr             r1,     =CONFIG_SYS_CS4L_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS5U
-       ldr             r1,     =CONFIG_SYS_CS5U_VAL
-       str             r1,   [r0]
-
-       ldr             r0,     =CS5L
-       ldr             r1,     =CONFIG_SYS_CS5L_VAL
-       str             r1,   [r0]
-
-/* SDRAM Setup */
-
-       ldr             r0, =SDCTL0
-       ldr             r1, =PRECHARGE_CMD
-       str             r1,   [r0]
-
-       ldr             r0, =0x08200000
-       ldr             r1, =0x0 /* Issue Precharge all Command */
-       str             r1,   [r0]
-
-       ldr             r0, =SDCTL0
-       ldr             r1, =AUTOREFRESH_CMD
-       str             r1,   [r0]
-
-       ldr             r0, =0x08000000
-       ldr             r1, =0x0 /* Issue AutoRefresh Command */
-       str             r1,   [r0]
-       str             r1,   [r0]
-       str             r1,   [r0]
-       str             r1,   [r0]
-       str             r1,   [r0]
-       str             r1,   [r0]
-       str             r1,   [r0]
-       str             r1,   [r0]
-
-       ldr             r0, =SDCTL0
-       ldr             r1, =0xb10a8300
-       str             r1,   [r0]
-
-       ldr             r0, =0x08223000 /* CAS Latency 2 */
-       ldr             r1, =0x0   /* Issue Mode Register Command, Burst Length = 8 */
-       str             r1,   [r0]
-
-       ldr             r0, =SDCTL0
-       ldr             r1, =0x810a8200 /* Set to Normal Mode CAS 2 */
-       str             r1,   [r0]
-
-       mov     pc,r10
diff --git a/board/scb9328/scb9328.c b/board/scb9328/scb9328.c
deleted file mode 100644 (file)
index 3463f52..0000000
+++ /dev/null
@@ -1,54 +0,0 @@
-/*
- * Copyright (C) 2004 Sascha Hauer, Synertronixx GmbH
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int board_init (void)
-{
-       gd->bd->bi_arch_number = MACH_TYPE_SCB9328;
-       gd->bd->bi_boot_params = 0x08000100;
-
-       return 0;
-}
-
-int dram_init (void)
-{
-       /* dram_init must store complete ramsize in gd->ram_size */
-       gd->ram_size = get_ram_size((void *)SCB9328_SDRAM_1,
-                                   SCB9328_SDRAM_1_SIZE);
-
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = SCB9328_SDRAM_1;
-       gd->bd->bi_dram[0].size = SCB9328_SDRAM_1_SIZE;
-}
-
-/**
- * show_boot_progress: - indicate state of the boot process
- *
- * @param status: Status number - see README for details.
- *
- * The CSB226 does only have 3 LEDs, so we switch them on at the most
- * important states (1, 5, 15).
- */
-
-void show_boot_progress (int status)
-{
-       return;
-}
-
-#ifdef CONFIG_DRIVER_DM9000
-int board_eth_init(bd_t *bis)
-{
-       return dm9000_initialize(bis);
-}
-#endif
index 3294203b716b09fb146dbde65acb9daa59b95358..28985b8b08c5fd34009a2975ce6837b33cf16c1a 100644 (file)
 #include <netdev.h>
 #include <spi.h>
 
+#ifdef CONFIG_USB_GADGET_ATMEL_USBA
+#include <asm/arch/atmel_usba_udc.h>
+#endif
+
 DECLARE_GLOBAL_DATA_PTR;
 
 static void corvus_nand_hw_init(void)
@@ -73,7 +77,7 @@ static void corvus_nand_hw_init(void)
 #include <spl.h>
 #include <nand.h>
 
-void at91_spl_board_init(void)
+void spl_board_init(void)
 {
        /*
         * For on the sam9m10g45ek board, the chip wm9711 stay in the test
@@ -202,6 +206,19 @@ int board_early_init_f(void)
        return 0;
 }
 
+#ifdef CONFIG_USB_GADGET_ATMEL_USBA
+/* from ./arch/arm/mach-at91/armv7/sama5d3_devices.c */
+void at91_udp_hw_init(void)
+{
+       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
+
+       /* Enable UPLL clock */
+       writel(AT91_PMC_UPLLEN | AT91_PMC_BIASEN, &pmc->uckr);
+       /* Enable UDPHS clock */
+       at91_periph_clk_enable(ATMEL_ID_UDPHS);
+}
+#endif
+
 int board_init(void)
 {
        /* address of boot parameters */
@@ -221,6 +238,10 @@ int board_init(void)
 #endif
 #ifdef CONFIG_CMD_USB
        taurus_usb_hw_init();
+#endif
+#ifdef CONFIG_USB_GADGET_ATMEL_USBA
+       at91_udp_hw_init();
+       usba_udc_probe(&pdata);
 #endif
        return 0;
 }
index cf8a7f5b06186c28c82e869503be45e94ad659e2..2d424882a9c9b8404f767c90c6a751bfb091fd8e 100644 (file)
@@ -25,6 +25,7 @@
 #include <asm/arch/at91_pmc.h>
 #include <asm/arch/at91_spi.h>
 #include <spi.h>
+#include <asm/arch/clk.h>
 #include <asm/arch/gpio.h>
 #include <watchdog.h>
 #ifdef CONFIG_MACB
@@ -108,6 +109,29 @@ static void smartweb_macb_hw_init(void)
 }
 #endif /* CONFIG_MACB */
 
+#ifdef CONFIG_USB_GADGET_AT91
+#include <linux/usb/at91_udc.h>
+
+void at91_udp_hw_init(void)
+{
+       at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
+
+       /* Enable PLLB */
+       writel(get_pllb_init(), &pmc->pllbr);
+       while ((readl(&pmc->sr) & AT91_PMC_LOCKB) != AT91_PMC_LOCKB)
+               ;
+
+       /* Enable UDPCK clock, MCK is enabled in at91_clock_init() */
+       at91_periph_clk_enable(ATMEL_ID_UDP);
+
+       writel(AT91SAM926x_PMC_UDP, &pmc->scer);
+}
+
+struct at91_udc_data board_udc_data  = {
+       .baseaddr = ATMEL_BASE_UDP0,
+};
+#endif
+
 int board_early_init_f(void)
 {
        /* enable this here, as we have SPL without serial support */
@@ -134,6 +158,11 @@ int board_init(void)
        at91_set_gpio_output(AT91_PIN_PC10, 0);
        at91_set_gpio_output(AT91_PIN_PC11, 1);
 
+#ifdef CONFIG_USB_GADGET_AT91
+       at91_udp_hw_init();
+       at91_udc_probe(&board_udc_data);
+#endif
+
        return 0;
 }
 
index 013dac2e2fb131baa83ae883c1eb514c26f55ef1..72c5e6083d53fec4cee1cd53da5cd6642131ffda 100644 (file)
@@ -12,6 +12,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#include <command.h>
 #include <common.h>
 #include <asm/io.h>
 #include <asm/arch/at91sam9260_matrix.h>
@@ -79,25 +80,57 @@ void matrix_init(void)
                        &mat->scfg[3]);
 }
 
-void at91_spl_board_init(void)
+#if defined(CONFIG_BOARD_AXM)
+static int at91_is_recovery(void)
+{
+       if ((at91_get_gpio_value(AT91_PIN_PA26) == 0) &&
+           (at91_get_gpio_value(AT91_PIN_PA27) == 0))
+               return 1;
+
+       return 0;
+}
+#elif defined(CONFIG_BOARD_TAURUS)
+static int at91_is_recovery(void)
+{
+       if (at91_get_gpio_value(AT91_PIN_PA31) == 0)
+               return 1;
+
+       return 0;
+}
+#endif
+
+void spl_board_init(void)
 {
        taurus_nand_hw_init();
        at91_spi0_hw_init(TAURUS_SPI_MASK);
 
+#if defined(CONFIG_BOARD_AXM)
+       /* Configure LED PINs */
+       at91_set_gpio_output(AT91_PIN_PA6, 0);
+       at91_set_gpio_output(AT91_PIN_PA8, 0);
+       at91_set_gpio_output(AT91_PIN_PA9, 0);
+       at91_set_gpio_output(AT91_PIN_PA10, 0);
+       at91_set_gpio_output(AT91_PIN_PA11, 0);
+       at91_set_gpio_output(AT91_PIN_PA12, 0);
+
        /* Configure recovery button PINs */
+       at91_set_gpio_input(AT91_PIN_PA26, 1);
+       at91_set_gpio_input(AT91_PIN_PA27, 1);
+#elif defined(CONFIG_BOARD_TAURUS)
        at91_set_gpio_input(AT91_PIN_PA31, 1);
+#endif
 
-       /* check if button is pressed */
-       if (at91_get_gpio_value(AT91_PIN_PA31) == 0) {
+       /* check for recovery mode */
+       if (at91_is_recovery() == 1) {
                struct spi_flash *flash;
 
-               debug("Recovery button pressed\n");
+               puts("Recovery button pressed\n");
                nand_init();
                spl_nand_erase_one(0, 0);
                flash = spi_flash_probe(CONFIG_SF_DEFAULT_BUS,
                                        0,
                                        CONFIG_SF_DEFAULT_SPEED,
-                                       SPI_MODE_3);
+                                       CONFIG_SF_DEFAULT_MODE);
                if (!flash) {
                        puts("no flash\n");
                } else {
@@ -108,35 +141,72 @@ void at91_spl_board_init(void)
        }
 }
 
-void mem_init(void)
+#define SDRAM_BASE_CONF        (AT91_SDRAMC_NR_13 | AT91_SDRAMC_CAS_3 \
+                        |AT91_SDRAMC_NB_4 | AT91_SDRAMC_DBW_32 \
+                        | AT91_SDRAMC_TWR_VAL(3) | AT91_SDRAMC_TRC_VAL(9) \
+                        | AT91_SDRAMC_TRP_VAL(3) | AT91_SDRAMC_TRCD_VAL(3) \
+                        | AT91_SDRAMC_TRAS_VAL(6) | AT91_SDRAMC_TXSR_VAL(10))
+
+void sdramc_configure(unsigned int mask)
 {
        struct at91_matrix *ma = (struct at91_matrix *)ATMEL_BASE_MATRIX;
        struct sdramc_reg setting;
 
        at91_sdram_hw_init();
-       setting.cr = (AT91_SDRAMC_NC_9 |
-                     AT91_SDRAMC_NR_13 |
-                     AT91_SDRAMC_CAS_3 |
-                     AT91_SDRAMC_NB_4 |
-                     AT91_SDRAMC_DBW_32 |
-                     AT91_SDRAMC_TWR_VAL(3) |
-                     AT91_SDRAMC_TRC_VAL(9) |
-                     AT91_SDRAMC_TRP_VAL(3) |
-                     AT91_SDRAMC_TRCD_VAL(3) |
-                     AT91_SDRAMC_TRAS_VAL(6) |
-                     AT91_SDRAMC_TXSR_VAL(10));
+       setting.cr = SDRAM_BASE_CONF | mask;
        setting.mdr = AT91_SDRAMC_MD_SDRAM;
        setting.tr = (CONFIG_SYS_MASTER_CLOCK * 7) / 1000000;
 
-
        writel(readl(&ma->ebicsa) | AT91_MATRIX_CS1A_SDRAMC |
                AT91_MATRIX_VDDIOMSEL_3_3V | AT91_MATRIX_EBI_IOSR_SEL,
                &ma->ebicsa);
+
        sdramc_initialize(ATMEL_BASE_CS1, &setting);
 }
+
+void mem_init(void)
+{
+       unsigned int ram_size = 0;
+
+       /* Configure SDRAM for 128MB */
+       sdramc_configure(AT91_SDRAMC_NC_10);
+
+       /* Do memtest for 128MB */
+       ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
+                               CONFIG_SYS_SDRAM_SIZE);
+
+       /*
+        * If 32MB or 16MB should be supported check also for
+        * expected mirroring at A16 and A17
+        * To find mirror addresses depends how the collumns are connected
+        * at RAM (internaly or externaly)
+        * If the collumns are not in inverted order the mirror size effect
+        * behaves like normal SRAM with A0,A1,A2,etc. connected incremantal
+        */
+
+       /* Mirrors at A15 on ATMEL G20 SDRAM Controller with 64MB*/
+       if (ram_size == 0x800) {
+               printf("\n\r 64MB");
+               sdramc_configure(AT91_SDRAMC_NC_9);
+       } else {
+               /* Size already initialized */
+               printf("\n\r 128MB");
+       }
+}
 #endif
 
 #ifdef CONFIG_MACB
+static void siemens_phy_reset(void)
+{
+       /*
+        * we need to reset PHY for 200us
+        * because of bug in ATMEL G20 CPU (undefined initial state of GPIO)
+        */
+       if ((readl(AT91_ASM_RSTC_SR) & AT91_RSTC_RSTTYP) ==
+           AT91_RSTC_RSTTYP_GENERAL)
+               at91_set_gpio_value(AT91_PIN_PA25, 0); /* reset eth switch */
+}
+
 static void taurus_macb_hw_init(void)
 {
        /* Enable EMAC clock */
@@ -160,6 +230,8 @@ static void taurus_macb_hw_init(void)
        at91_set_pio_pullup(AT91_PIO_PORTA, 26, 0);
        at91_set_pio_pullup(AT91_PIO_PORTA, 28, 0);
 
+       siemens_phy_reset();
+
        at91_phy_reset();
 
        at91_set_gpio_input(AT91_PIN_PA25, 1);   /* ERST tri-state */
@@ -213,6 +285,29 @@ void spi_cs_deactivate(struct spi_slave *slave)
        at91_set_gpio_value(TAURUS_SPI_CS_PIN, 1);
 }
 
+#ifdef CONFIG_USB_GADGET_AT91
+#include <linux/usb/at91_udc.h>
+
+void at91_udp_hw_init(void)
+{
+       at91_pmc_t *pmc = (at91_pmc_t *)ATMEL_BASE_PMC;
+
+       /* Enable PLLB */
+       writel(get_pllb_init(), &pmc->pllbr);
+       while ((readl(&pmc->sr) & AT91_PMC_LOCKB) != AT91_PMC_LOCKB)
+               ;
+
+       /* Enable UDPCK clock, MCK is enabled in at91_clock_init() */
+       at91_periph_clk_enable(ATMEL_ID_UDP);
+
+       writel(AT91SAM926x_PMC_UDP, &pmc->scer);
+}
+
+struct at91_udc_data board_udc_data  = {
+       .baseaddr = ATMEL_BASE_UDP0,
+};
+#endif
+
 int board_init(void)
 {
        /* adress of boot parameters */
@@ -225,6 +320,10 @@ int board_init(void)
        taurus_macb_hw_init();
 #endif
        at91_spi0_hw_init(TAURUS_SPI_MASK);
+#ifdef CONFIG_USB_GADGET_AT91
+       at91_udp_hw_init();
+       at91_udc_probe(&board_udc_data);
+#endif
 
        return 0;
 }
@@ -244,3 +343,97 @@ int board_eth_init(bd_t *bis)
 #endif
        return rc;
 }
+
+#if !defined(CONFIG_SPL_BUILD)
+#if defined(CONFIG_BOARD_AXM)
+/*
+ * Booting the Fallback Image.
+ *
+ *  The function is used to provide and
+ *  boot the image with the fallback
+ *  parameters, incase if the faulty image
+ *  in upgraded over the base firmware.
+ *
+ */
+static int upgrade_failure_fallback(void)
+{
+       char *partitionset_active = NULL;
+       char *rootfs = NULL;
+       char *rootfs_fallback = NULL;
+       char *kern_off;
+       char *kern_off_fb;
+       char *kern_size;
+       char *kern_size_fb;
+
+       partitionset_active = getenv("partitionset_active");
+       if (partitionset_active) {
+               if (partitionset_active[0] == 'A')
+                       setenv("partitionset_active", "B");
+               else
+                       setenv("partitionset_active", "A");
+       } else {
+               printf("partitionset_active missing.\n");
+               return -ENOENT;
+       }
+
+       rootfs = getenv("rootfs");
+       rootfs_fallback = getenv("rootfs_fallback");
+       setenv("rootfs", rootfs_fallback);
+       setenv("rootfs_fallback", rootfs);
+
+       kern_size = getenv("kernel_size");
+       kern_size_fb = getenv("kernel_size_fallback");
+       setenv("kernel_size", kern_size_fb);
+       setenv("kernel_size_fallback", kern_size);
+
+       kern_off = getenv("kernel_Off");
+       kern_off_fb = getenv("kernel_Off_fallback");
+       setenv("kernel_Off", kern_off_fb);
+       setenv("kernel_Off_fallback", kern_off);
+
+       setenv("bootargs", '\0');
+       setenv("upgrade_available", '\0');
+       setenv("boot_retries", '\0');
+       saveenv();
+
+       return 0;
+}
+
+static int do_upgrade_available(cmd_tbl_t *cmdtp, int flag, int argc,
+                       char * const argv[])
+{
+       unsigned long upgrade_available = 0;
+       unsigned long boot_retry = 0;
+       char boot_buf[10];
+
+       upgrade_available = simple_strtoul(getenv("upgrade_available"), NULL,
+                                          10);
+       if (upgrade_available) {
+               boot_retry = simple_strtoul(getenv("boot_retries"), NULL, 10);
+               boot_retry++;
+               sprintf(boot_buf, "%lx", boot_retry);
+               setenv("boot_retries", boot_buf);
+               saveenv();
+
+               /*
+                * Here the boot_retries count is checked, and if the
+                * count becomes greater than 2 switch back to the
+                * fallback, and reset the board.
+                */
+
+               if (boot_retry > 2) {
+                       if (upgrade_failure_fallback() == 0)
+                               do_reset(NULL, 0, 0, NULL);
+                       return -1;
+               }
+       }
+       return 0;
+}
+
+U_BOOT_CMD(
+       upgrade_available,      1,      1,      do_upgrade_available,
+       "check Siemens update",
+       "no parameters"
+);
+#endif
+#endif
index 31d88b2dd49012bb0d87afe167ddd41bcd51cd7c..741c1754f819113d2fceb9b852f89dd326cce013 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "solidrun"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "mx6cuboxi"
 
index 9b1ecf0457d49d3cdeac07102a8ba3256282cdc8..fc37f1eef06da5147e5403d4272d220836c9cfbc 100644 (file)
@@ -164,7 +164,7 @@ int board_eth_init(bd_t *bis)
        struct mii_dev *bus;
        struct phy_device *phydev;
 
-       int ret = enable_fec_anatop_clock(ENET_25MHZ);
+       int ret = enable_fec_anatop_clock(0, ENET_25MHZ);
        if (ret)
                return ret;
 
@@ -615,6 +615,7 @@ static void spl_dram_init(int width)
                .bi_on = 1,     /* Bank interleaving enabled */
                .sde_to_rst = 0x10,     /* 14 cycles, 200us (JEDEC default) */
                .rst_to_cke = 0x23,     /* 33 cycles, 500us (JEDEC default) */
+               .ddr_type = DDR_TYPE_DDR3,
        };
 
        if (is_cpu_type(MXC_CPU_MX6D) || is_cpu_type(MXC_CPU_MX6Q))
diff --git a/board/st-ericsson/snowball/Kconfig b/board/st-ericsson/snowball/Kconfig
deleted file mode 100644 (file)
index 0b3a0cc..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_SNOWBALL
-
-config SYS_BOARD
-       default "snowball"
-
-config SYS_VENDOR
-       default "st-ericsson"
-
-config SYS_SOC
-       default "u8500"
-
-config SYS_CONFIG_NAME
-       default "snowball"
-
-endif
diff --git a/board/st-ericsson/snowball/MAINTAINERS b/board/st-ericsson/snowball/MAINTAINERS
deleted file mode 100644 (file)
index 132fc52..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SNOWBALL BOARD
-M:     Mathieu Poirier <mathieu.poirier@linaro.org>
-S:     Maintained
-F:     board/st-ericsson/snowball/
-F:     include/configs/snowball.h
-F:     configs/snowball_defconfig
diff --git a/board/st-ericsson/snowball/Makefile b/board/st-ericsson/snowball/Makefile
deleted file mode 100644 (file)
index f0605e2..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright (C) ST-Ericsson SA 2009
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-ccflags-y += -D__RELEASE -D__STN_8500
-
-obj-y  := snowball.o
diff --git a/board/st-ericsson/snowball/db8500_pins.h b/board/st-ericsson/snowball/db8500_pins.h
deleted file mode 100644 (file)
index e339cb8..0000000
+++ /dev/null
@@ -1,745 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2010
- * Code ported from Nomadik GPIO driver in ST-Ericsson Linux kernel code.
- * The purpose is that GPIO config found in kernel should work by simply
- * copy-paste it to U-boot.
- *
- * Ported to U-boot by:
- * Copyright (C) 2010 Joakim Axelsson <joakim.axelsson AT stericsson.com>
- **
- * License terms: GNU General Public License, version 2
- * Author: Rabin Vincent <rabin.vincent@stericsson.com>
- */
-
-#ifndef __DB8500_PINS_H
-#define __DB8500_PINS_H
-
-#include <asm/arch/db8500_pincfg.h>
-
-#define GPIO0_GPIO             PIN_CFG(0, GPIO)
-#define GPIO0_U0_CTSn          PIN_CFG(0, ALT_A)
-#define GPIO0_TRIG_OUT         PIN_CFG(0, ALT_B)
-#define GPIO0_IP_TDO           PIN_CFG(0, ALT_C)
-
-#define GPIO1_GPIO             PIN_CFG(1, GPIO)
-#define GPIO1_U0_RTSn          PIN_CFG(1, ALT_A)
-#define GPIO1_TRIG_IN          PIN_CFG(1, ALT_B)
-#define GPIO1_IP_TDI           PIN_CFG(1, ALT_C)
-
-#define GPIO2_GPIO             PIN_CFG(2, GPIO)
-#define GPIO2_U0_RXD           PIN_CFG(2, ALT_A)
-#define GPIO2_NONE             PIN_CFG(2, ALT_B)
-#define GPIO2_IP_TMS           PIN_CFG(2, ALT_C)
-
-#define GPIO3_GPIO             PIN_CFG(3, GPIO)
-#define GPIO3_U0_TXD           PIN_CFG(3, ALT_A)
-#define GPIO3_NONE             PIN_CFG(3, ALT_B)
-#define GPIO3_IP_TCK           PIN_CFG(3, ALT_C)
-
-#define GPIO4_GPIO             PIN_CFG(4, GPIO)
-#define GPIO4_U1_RXD           PIN_CFG(4, ALT_A)
-#define GPIO4_I2C4_SCL         PIN_CFG_PULL(4, ALT_B, UP)
-#define GPIO4_IP_TRSTn         PIN_CFG(4, ALT_C)
-
-#define GPIO5_GPIO             PIN_CFG(5, GPIO)
-#define GPIO5_U1_TXD           PIN_CFG(5, ALT_A)
-#define GPIO5_I2C4_SDA         PIN_CFG_PULL(5, ALT_B, UP)
-#define GPIO5_IP_GPIO6         PIN_CFG(5, ALT_C)
-
-#define GPIO6_GPIO             PIN_CFG(6, GPIO)
-#define GPIO6_U1_CTSn          PIN_CFG(6, ALT_A)
-#define GPIO6_I2C1_SCL         PIN_CFG_PULL(6, ALT_B, UP)
-#define GPIO6_IP_GPIO0         PIN_CFG(6, ALT_C)
-
-#define GPIO7_GPIO             PIN_CFG(7, GPIO)
-#define GPIO7_U1_RTSn          PIN_CFG(7, ALT_A)
-#define GPIO7_I2C1_SDA         PIN_CFG_PULL(7, ALT_B, UP)
-#define GPIO7_IP_GPIO1         PIN_CFG(7, ALT_C)
-
-#define GPIO8_GPIO             PIN_CFG(8, GPIO)
-#define GPIO8_IPI2C_SDA                PIN_CFG_PULL(8, ALT_A, UP)
-#define GPIO8_I2C2_SDA         PIN_CFG_PULL(8, ALT_B, UP)
-
-#define GPIO9_GPIO             PIN_CFG(9, GPIO)
-#define GPIO9_IPI2C_SCL                PIN_CFG_PULL(9, ALT_A, UP)
-#define GPIO9_I2C2_SCL         PIN_CFG_PULL(9, ALT_B, UP)
-
-#define GPIO10_GPIO            PIN_CFG(10, GPIO)
-#define GPIO10_IPI2C_SDA       PIN_CFG_PULL(10, ALT_A, UP)
-#define GPIO10_I2C2_SDA                PIN_CFG_PULL(10, ALT_B, UP)
-#define GPIO10_IP_GPIO3                PIN_CFG(10, ALT_C)
-
-#define GPIO11_GPIO            PIN_CFG(11, GPIO)
-#define GPIO11_IPI2C_SCL       PIN_CFG_PULL(11, ALT_A, UP)
-#define GPIO11_I2C2_SCL                PIN_CFG_PULL(11, ALT_B, UP)
-#define GPIO11_IP_GPIO2                PIN_CFG(11, ALT_C)
-
-#define GPIO12_GPIO            PIN_CFG(12, GPIO)
-#define GPIO12_MSP0_TXD                PIN_CFG(12, ALT_A)
-#define GPIO12_MSP0_RXD                PIN_CFG(12, ALT_B)
-
-#define GPIO13_GPIO            PIN_CFG(13, GPIO)
-#define GPIO13_MSP0_TFS                PIN_CFG(13, ALT_A)
-
-#define GPIO14_GPIO            PIN_CFG(14, GPIO)
-#define GPIO14_MSP0_TCK                PIN_CFG(14, ALT_A)
-
-#define GPIO15_GPIO            PIN_CFG(15, GPIO)
-#define GPIO15_MSP0_RXD                PIN_CFG(15, ALT_A)
-#define GPIO15_MSP0_TXD                PIN_CFG(15, ALT_B)
-
-#define GPIO16_GPIO            PIN_CFG(16, GPIO)
-#define GPIO16_MSP0_RFS                PIN_CFG(16, ALT_A)
-#define GPIO16_I2C1_SCL                PIN_CFG_PULL(16, ALT_B, UP)
-#define GPIO16_SLIM0_DAT       PIN_CFG(16, ALT_C)
-
-#define GPIO17_GPIO            PIN_CFG(17, GPIO)
-#define GPIO17_MSP0_RCK                PIN_CFG(17, ALT_A)
-#define GPIO17_I2C1_SDA                PIN_CFG_PULL(17, ALT_B, UP)
-#define GPIO17_SLIM0_CLK       PIN_CFG(17, ALT_C)
-
-#define GPIO18_GPIO            PIN_CFG(18, GPIO)
-#define GPIO18_MC0_CMDDIR      PIN_CFG(18, ALT_A)
-#define GPIO18_U2_RXD          PIN_CFG(18, ALT_B)
-#define GPIO18_MS_IEP          PIN_CFG(18, ALT_C)
-
-#define GPIO19_GPIO            PIN_CFG(19, GPIO)
-#define GPIO19_MC0_DAT0DIR     PIN_CFG(19, ALT_A)
-#define GPIO19_U2_TXD          PIN_CFG(19, ALT_B)
-#define GPIO19_MS_DAT0DIR      PIN_CFG(19, ALT_C)
-
-#define GPIO20_GPIO            PIN_CFG(20, GPIO)
-#define GPIO20_MC0_DAT2DIR     PIN_CFG(20, ALT_A)
-#define GPIO20_UARTMOD_TXD     PIN_CFG(20, ALT_B)
-#define GPIO20_IP_TRIGOUT      PIN_CFG(20, ALT_C)
-
-#define GPIO21_GPIO            PIN_CFG(21, GPIO)
-#define GPIO21_MC0_DAT31DIR    PIN_CFG(21, ALT_A)
-#define GPIO21_MSP0_SCK                PIN_CFG(21, ALT_B)
-#define GPIO21_MS_DAT31DIR     PIN_CFG(21, ALT_C)
-
-#define GPIO22_GPIO            PIN_CFG(22, GPIO)
-#define GPIO22_MC0_FBCLK       PIN_CFG(22, ALT_A)
-#define GPIO22_UARTMOD_RXD     PIN_CFG(22, ALT_B)
-#define GPIO22_MS_FBCLK                PIN_CFG(22, ALT_C)
-
-#define GPIO23_GPIO            PIN_CFG(23, GPIO)
-#define GPIO23_MC0_CLK         PIN_CFG(23, ALT_A)
-#define GPIO23_STMMOD_CLK      PIN_CFG(23, ALT_B)
-#define GPIO23_MS_CLK          PIN_CFG(23, ALT_C)
-
-#define GPIO24_GPIO            PIN_CFG(24, GPIO)
-#define GPIO24_MC0_CMD         PIN_CFG(24, ALT_A)
-#define GPIO24_UARTMOD_RXD     PIN_CFG(24, ALT_B)
-#define GPIO24_MS_BS           PIN_CFG(24, ALT_C)
-
-#define GPIO25_GPIO            PIN_CFG(25, GPIO)
-#define GPIO25_MC0_DAT0                PIN_CFG(25, ALT_A)
-#define GPIO25_STMMOD_DAT0     PIN_CFG(25, ALT_B)
-#define GPIO25_MS_DAT0         PIN_CFG(25, ALT_C)
-
-#define GPIO26_GPIO            PIN_CFG(26, GPIO)
-#define GPIO26_MC0_DAT1                PIN_CFG(26, ALT_A)
-#define GPIO26_STMMOD_DAT1     PIN_CFG(26, ALT_B)
-#define GPIO26_MS_DAT1         PIN_CFG(26, ALT_C)
-
-#define GPIO27_GPIO            PIN_CFG(27, GPIO)
-#define GPIO27_MC0_DAT2                PIN_CFG(27, ALT_A)
-#define GPIO27_STMMOD_DAT2     PIN_CFG(27, ALT_B)
-#define GPIO27_MS_DAT2         PIN_CFG(27, ALT_C)
-
-#define GPIO28_GPIO            PIN_CFG(28, GPIO)
-#define GPIO28_MC0_DAT3                PIN_CFG(28, ALT_A)
-#define GPIO28_STMMOD_DAT3     PIN_CFG(28, ALT_B)
-#define GPIO28_MS_DAT3         PIN_CFG(28, ALT_C)
-
-#define GPIO29_GPIO            PIN_CFG(29, GPIO)
-#define GPIO29_MC0_DAT4                PIN_CFG(29, ALT_A)
-#define GPIO29_SPI3_CLK                PIN_CFG(29, ALT_B)
-#define GPIO29_U2_RXD          PIN_CFG(29, ALT_C)
-
-#define GPIO30_GPIO            PIN_CFG(30, GPIO)
-#define GPIO30_MC0_DAT5                PIN_CFG(30, ALT_A)
-#define GPIO30_SPI3_RXD                PIN_CFG(30, ALT_B)
-#define GPIO30_U2_TXD          PIN_CFG(30, ALT_C)
-
-#define GPIO31_GPIO            PIN_CFG(31, GPIO)
-#define GPIO31_MC0_DAT6                PIN_CFG(31, ALT_A)
-#define GPIO31_SPI3_FRM                PIN_CFG(31, ALT_B)
-#define GPIO31_U2_CTSn         PIN_CFG(31, ALT_C)
-
-#define GPIO32_GPIO            PIN_CFG(32, GPIO)
-#define GPIO32_MC0_DAT7                PIN_CFG(32, ALT_A)
-#define GPIO32_SPI3_TXD                PIN_CFG(32, ALT_B)
-#define GPIO32_U2_RTSn         PIN_CFG(32, ALT_C)
-
-#define GPIO33_GPIO            PIN_CFG(33, GPIO)
-#define GPIO33_MSP1_TXD                PIN_CFG(33, ALT_A)
-#define GPIO33_MSP1_RXD                PIN_CFG(33, ALT_B)
-#define GPIO33_U0_DTRn         PIN_CFG(33, ALT_C)
-
-#define GPIO34_GPIO            PIN_CFG(34, GPIO)
-#define GPIO34_MSP1_TFS                PIN_CFG(34, ALT_A)
-#define GPIO34_NONE            PIN_CFG(34, ALT_B)
-#define GPIO34_U0_DCDn         PIN_CFG(34, ALT_C)
-
-#define GPIO35_GPIO            PIN_CFG(35, GPIO)
-#define GPIO35_MSP1_TCK                PIN_CFG(35, ALT_A)
-#define GPIO35_NONE            PIN_CFG(35, ALT_B)
-#define GPIO35_U0_DSRn         PIN_CFG(35, ALT_C)
-
-#define GPIO36_GPIO            PIN_CFG(36, GPIO)
-#define GPIO36_MSP1_RXD                PIN_CFG(36, ALT_A)
-#define GPIO36_MSP1_TXD                PIN_CFG(36, ALT_B)
-#define GPIO36_U0_RIn          PIN_CFG(36, ALT_C)
-
-#define GPIO64_GPIO            PIN_CFG(64, GPIO)
-#define GPIO64_LCDB_DE         PIN_CFG(64, ALT_A)
-#define GPIO64_KP_O1           PIN_CFG(64, ALT_B)
-#define GPIO64_IP_GPIO4                PIN_CFG(64, ALT_C)
-
-#define GPIO65_GPIO            PIN_CFG(65, GPIO)
-#define GPIO65_LCDB_HSO                PIN_CFG(65, ALT_A)
-#define GPIO65_KP_O0           PIN_CFG(65, ALT_B)
-#define GPIO65_IP_GPIO5                PIN_CFG(65, ALT_C)
-
-#define GPIO66_GPIO            PIN_CFG(66, GPIO)
-#define GPIO66_LCDB_VSO                PIN_CFG(66, ALT_A)
-#define GPIO66_KP_I1           PIN_CFG(66, ALT_B)
-#define GPIO66_IP_GPIO6                PIN_CFG(66, ALT_C)
-
-#define GPIO67_GPIO            PIN_CFG(67, GPIO)
-#define GPIO67_LCDB_CLK                PIN_CFG(67, ALT_A)
-#define GPIO67_KP_I0           PIN_CFG(67, ALT_B)
-#define GPIO67_IP_GPIO7                PIN_CFG(67, ALT_C)
-
-#define GPIO68_GPIO            PIN_CFG(68, GPIO)
-#define GPIO68_LCD_VSI0                PIN_CFG(68, ALT_A)
-#define GPIO68_KP_O7           PIN_CFG(68, ALT_B)
-#define GPIO68_SM_CLE          PIN_CFG(68, ALT_C)
-
-#define GPIO69_GPIO            PIN_CFG(69, GPIO)
-#define GPIO69_LCD_VSI1                PIN_CFG(69, ALT_A)
-#define GPIO69_KP_I7           PIN_CFG(69, ALT_B)
-#define GPIO69_SM_ALE          PIN_CFG(69, ALT_C)
-
-#define GPIO70_GPIO            PIN_CFG(70, GPIO)
-#define GPIO70_LCD_D0          PIN_CFG(70, ALT_A)
-#define GPIO70_KP_O5           PIN_CFG(70, ALT_B)
-#define GPIO70_STMAPE_CLK      PIN_CFG(70, ALT_C)
-
-#define GPIO71_GPIO            PIN_CFG(71, GPIO)
-#define GPIO71_LCD_D1          PIN_CFG(71, ALT_A)
-#define GPIO71_KP_O4           PIN_CFG(71, ALT_B)
-#define GPIO71_STMAPE_DAT3     PIN_CFG(71, ALT_C)
-
-#define GPIO72_GPIO            PIN_CFG(72, GPIO)
-#define GPIO72_LCD_D2          PIN_CFG(72, ALT_A)
-#define GPIO72_KP_O3           PIN_CFG(72, ALT_B)
-#define GPIO72_STMAPE_DAT2     PIN_CFG(72, ALT_C)
-
-#define GPIO73_GPIO            PIN_CFG(73, GPIO)
-#define GPIO73_LCD_D3          PIN_CFG(73, ALT_A)
-#define GPIO73_KP_O2           PIN_CFG(73, ALT_B)
-#define GPIO73_STMAPE_DAT1     PIN_CFG(73, ALT_C)
-
-#define GPIO74_GPIO            PIN_CFG(74, GPIO)
-#define GPIO74_LCD_D4          PIN_CFG(74, ALT_A)
-#define GPIO74_KP_I5           PIN_CFG(74, ALT_B)
-#define GPIO74_STMAPE_DAT0     PIN_CFG(74, ALT_C)
-
-#define GPIO75_GPIO            PIN_CFG(75, GPIO)
-#define GPIO75_LCD_D5          PIN_CFG(75, ALT_A)
-#define GPIO75_KP_I4           PIN_CFG(75, ALT_B)
-#define GPIO75_U2_RXD          PIN_CFG(75, ALT_C)
-
-#define GPIO76_GPIO            PIN_CFG(76, GPIO)
-#define GPIO76_LCD_D6          PIN_CFG(76, ALT_A)
-#define GPIO76_KP_I3           PIN_CFG(76, ALT_B)
-#define GPIO76_U2_TXD          PIN_CFG(76, ALT_C)
-
-#define GPIO77_GPIO            PIN_CFG(77, GPIO)
-#define GPIO77_LCD_D7          PIN_CFG(77, ALT_A)
-#define GPIO77_KP_I2           PIN_CFG(77, ALT_B)
-#define GPIO77_NONE            PIN_CFG(77, ALT_C)
-
-#define GPIO78_GPIO            PIN_CFG(78, GPIO)
-#define GPIO78_LCD_D8          PIN_CFG(78, ALT_A)
-#define GPIO78_KP_O6           PIN_CFG(78, ALT_B)
-#define GPIO78_IP_GPIO2                PIN_CFG(78, ALT_C)
-
-#define GPIO79_GPIO            PIN_CFG(79, GPIO)
-#define GPIO79_LCD_D9          PIN_CFG(79, ALT_A)
-#define GPIO79_KP_I6           PIN_CFG(79, ALT_B)
-#define GPIO79_IP_GPIO3                PIN_CFG(79, ALT_C)
-
-#define GPIO80_GPIO            PIN_CFG(80, GPIO)
-#define GPIO80_LCD_D10         PIN_CFG(80, ALT_A)
-#define GPIO80_KP_SKA0         PIN_CFG(80, ALT_B)
-#define GPIO80_IP_GPIO4                PIN_CFG(80, ALT_C)
-
-#define GPIO81_GPIO            PIN_CFG(81, GPIO)
-#define GPIO81_LCD_D11         PIN_CFG(81, ALT_A)
-#define GPIO81_KP_SKB0         PIN_CFG(81, ALT_B)
-#define GPIO81_IP_GPIO5                PIN_CFG(81, ALT_C)
-
-#define GPIO82_GPIO            PIN_CFG(82, GPIO)
-#define GPIO82_LCD_D12         PIN_CFG(82, ALT_A)
-#define GPIO82_KP_O5           PIN_CFG(82, ALT_B)
-
-#define GPIO83_GPIO            PIN_CFG(83, GPIO)
-#define GPIO83_LCD_D13         PIN_CFG(83, ALT_A)
-#define GPIO83_KP_O4           PIN_CFG(83, ALT_B)
-
-#define GPIO84_GPIO            PIN_CFG_PULL(84, GPIO, UP)
-#define GPIO84_LCD_D14         PIN_CFG(84, ALT_A)
-#define GPIO84_KP_I5           PIN_CFG(84, ALT_B)
-
-#define GPIO85_GPIO            PIN_CFG(85, GPIO)
-#define GPIO85_LCD_D15         PIN_CFG(85, ALT_A)
-#define GPIO85_KP_I4           PIN_CFG(85, ALT_B)
-
-#define GPIO86_GPIO            PIN_CFG(86, GPIO)
-#define GPIO86_LCD_D16         PIN_CFG(86, ALT_A)
-#define GPIO86_SM_ADQ0         PIN_CFG(86, ALT_B)
-#define GPIO86_MC5_DAT0                PIN_CFG(86, ALT_C)
-
-#define GPIO87_GPIO            PIN_CFG(87, GPIO)
-#define GPIO87_LCD_D17         PIN_CFG(87, ALT_A)
-#define GPIO87_SM_ADQ1         PIN_CFG(87, ALT_B)
-#define GPIO87_MC5_DAT1                PIN_CFG(87, ALT_C)
-
-#define GPIO88_GPIO            PIN_CFG(88, GPIO)
-#define GPIO88_LCD_D18         PIN_CFG(88, ALT_A)
-#define GPIO88_SM_ADQ2         PIN_CFG(88, ALT_B)
-#define GPIO88_MC5_DAT2                PIN_CFG(88, ALT_C)
-
-#define GPIO89_GPIO            PIN_CFG(89, GPIO)
-#define GPIO89_LCD_D19         PIN_CFG(89, ALT_A)
-#define GPIO89_SM_ADQ3         PIN_CFG(89, ALT_B)
-#define GPIO89_MC5_DAT3                PIN_CFG(89, ALT_C)
-
-#define GPIO90_GPIO            PIN_CFG(90, GPIO)
-#define GPIO90_LCD_D20         PIN_CFG(90, ALT_A)
-#define GPIO90_SM_ADQ4         PIN_CFG(90, ALT_B)
-#define GPIO90_MC5_CMD         PIN_CFG(90, ALT_C)
-
-#define GPIO91_GPIO            PIN_CFG(91, GPIO)
-#define GPIO91_LCD_D21         PIN_CFG(91, ALT_A)
-#define GPIO91_SM_ADQ5         PIN_CFG(91, ALT_B)
-#define GPIO91_MC5_FBCLK       PIN_CFG(91, ALT_C)
-
-#define GPIO92_GPIO            PIN_CFG(92, GPIO)
-#define GPIO92_LCD_D22         PIN_CFG(92, ALT_A)
-#define GPIO92_SM_ADQ6         PIN_CFG(92, ALT_B)
-#define GPIO92_MC5_CLK         PIN_CFG(92, ALT_C)
-
-#define GPIO93_GPIO            PIN_CFG(93, GPIO)
-#define GPIO93_LCD_D23         PIN_CFG(93, ALT_A)
-#define GPIO93_SM_ADQ7         PIN_CFG(93, ALT_B)
-#define GPIO93_MC5_DAT4                PIN_CFG(93, ALT_C)
-
-#define GPIO94_GPIO            PIN_CFG(94, GPIO)
-#define GPIO94_KP_O7           PIN_CFG(94, ALT_A)
-#define GPIO94_SM_ADVn         PIN_CFG(94, ALT_B)
-#define GPIO94_MC5_DAT5                PIN_CFG(94, ALT_C)
-
-#define GPIO95_GPIO            PIN_CFG(95, GPIO)
-#define GPIO95_KP_I7           PIN_CFG(95, ALT_A)
-#define GPIO95_SM_CS0n         PIN_CFG(95, ALT_B)
-#define GPIO95_SM_PS0n         PIN_CFG(95, ALT_C)
-
-#define GPIO96_GPIO            PIN_CFG(96, GPIO)
-#define GPIO96_KP_O6           PIN_CFG(96, ALT_A)
-#define GPIO96_SM_OEn          PIN_CFG(96, ALT_B)
-#define GPIO96_MC5_DAT6                PIN_CFG(96, ALT_C)
-
-#define GPIO97_GPIO            PIN_CFG(97, GPIO)
-#define GPIO97_KP_I6           PIN_CFG(97, ALT_A)
-#define GPIO97_SM_WEn          PIN_CFG(97, ALT_B)
-#define GPIO97_MC5_DAT7                PIN_CFG(97, ALT_C)
-
-#define GPIO128_GPIO           PIN_CFG(128, GPIO)
-#define GPIO128_MC2_CLK                PIN_CFG(128, ALT_A)
-#define GPIO128_SM_CKO         PIN_CFG(128, ALT_B)
-
-#define GPIO129_GPIO           PIN_CFG(129, GPIO)
-#define GPIO129_MC2_CMD                PIN_CFG(129, ALT_A)
-#define GPIO129_SM_WAIT0n      PIN_CFG(129, ALT_B)
-
-#define GPIO130_GPIO           PIN_CFG(130, GPIO)
-#define GPIO130_MC2_FBCLK      PIN_CFG(130, ALT_A)
-#define GPIO130_SM_FBCLK       PIN_CFG(130, ALT_B)
-#define GPIO130_MC2_RSTN       PIN_CFG(130, ALT_C)
-
-#define GPIO131_GPIO           PIN_CFG(131, GPIO)
-#define GPIO131_MC2_DAT0       PIN_CFG(131, ALT_A)
-#define GPIO131_SM_ADQ8                PIN_CFG(131, ALT_B)
-
-#define GPIO132_GPIO           PIN_CFG(132, GPIO)
-#define GPIO132_MC2_DAT1       PIN_CFG(132, ALT_A)
-#define GPIO132_SM_ADQ9                PIN_CFG(132, ALT_B)
-
-#define GPIO133_GPIO           PIN_CFG(133, GPIO)
-#define GPIO133_MC2_DAT2       PIN_CFG(133, ALT_A)
-#define GPIO133_SM_ADQ10       PIN_CFG(133, ALT_B)
-
-#define GPIO134_GPIO           PIN_CFG(134, GPIO)
-#define GPIO134_MC2_DAT3       PIN_CFG(134, ALT_A)
-#define GPIO134_SM_ADQ11       PIN_CFG(134, ALT_B)
-
-#define GPIO135_GPIO           PIN_CFG(135, GPIO)
-#define GPIO135_MC2_DAT4       PIN_CFG(135, ALT_A)
-#define GPIO135_SM_ADQ12       PIN_CFG(135, ALT_B)
-
-#define GPIO136_GPIO           PIN_CFG(136, GPIO)
-#define GPIO136_MC2_DAT5       PIN_CFG(136, ALT_A)
-#define GPIO136_SM_ADQ13       PIN_CFG(136, ALT_B)
-
-#define GPIO137_GPIO           PIN_CFG(137, GPIO)
-#define GPIO137_MC2_DAT6       PIN_CFG(137, ALT_A)
-#define GPIO137_SM_ADQ14       PIN_CFG(137, ALT_B)
-
-#define GPIO138_GPIO           PIN_CFG(138, GPIO)
-#define GPIO138_MC2_DAT7       PIN_CFG(138, ALT_A)
-#define GPIO138_SM_ADQ15       PIN_CFG(138, ALT_B)
-
-#define GPIO139_GPIO           PIN_CFG(139, GPIO)
-#define GPIO139_SSP1_RXD       PIN_CFG(139, ALT_A)
-#define GPIO139_SM_WAIT1n      PIN_CFG(139, ALT_B)
-#define GPIO139_KP_O8          PIN_CFG(139, ALT_C)
-
-#define GPIO140_GPIO           PIN_CFG(140, GPIO)
-#define GPIO140_SSP1_TXD       PIN_CFG(140, ALT_A)
-#define GPIO140_IP_GPIO7       PIN_CFG(140, ALT_B)
-#define GPIO140_KP_SKA1                PIN_CFG(140, ALT_C)
-
-#define GPIO141_GPIO           PIN_CFG(141, GPIO)
-#define GPIO141_SSP1_CLK       PIN_CFG(141, ALT_A)
-#define GPIO141_IP_GPIO2       PIN_CFG(141, ALT_B)
-#define GPIO141_KP_O9          PIN_CFG(141, ALT_C)
-
-#define GPIO142_GPIO           PIN_CFG(142, GPIO)
-#define GPIO142_SSP1_FRM       PIN_CFG(142, ALT_A)
-#define GPIO142_IP_GPIO3       PIN_CFG(142, ALT_B)
-#define GPIO142_KP_SKB1                PIN_CFG(142, ALT_C)
-
-#define GPIO143_GPIO           PIN_CFG(143, GPIO)
-#define GPIO143_SSP0_CLK       PIN_CFG(143, ALT_A)
-
-#define GPIO144_GPIO           PIN_CFG(144, GPIO)
-#define GPIO144_SSP0_FRM       PIN_CFG(144, ALT_A)
-
-#define GPIO145_GPIO           PIN_CFG(145, GPIO)
-#define GPIO145_SSP0_RXD       PIN_CFG(145, ALT_A)
-
-#define GPIO146_GPIO           PIN_CFG(146, GPIO)
-#define GPIO146_SSP0_TXD       PIN_CFG(146, ALT_A)
-
-#define GPIO147_GPIO           PIN_CFG(147, GPIO)
-#define GPIO147_I2C0_SCL       PIN_CFG_PULL(147, ALT_A, UP)
-
-#define GPIO148_GPIO           PIN_CFG(148, GPIO)
-#define GPIO148_I2C0_SDA       PIN_CFG_PULL(148, ALT_A, UP)
-
-#define GPIO149_GPIO           PIN_CFG(149, GPIO)
-#define GPIO149_IP_GPIO0       PIN_CFG(149, ALT_A)
-#define GPIO149_SM_CS1n                PIN_CFG(149, ALT_B)
-#define GPIO149_SM_PS1n                PIN_CFG(149, ALT_C)
-
-#define GPIO150_GPIO           PIN_CFG(150, GPIO)
-#define GPIO150_IP_GPIO1       PIN_CFG(150, ALT_A)
-#define GPIO150_LCDA_CLK       PIN_CFG(150, ALT_B)
-
-#define GPIO151_GPIO           PIN_CFG(151, GPIO)
-#define GPIO151_KP_SKA0                PIN_CFG(151, ALT_A)
-#define GPIO151_LCD_VSI0       PIN_CFG(151, ALT_B)
-#define GPIO151_KP_O8          PIN_CFG(151, ALT_C)
-
-#define GPIO152_GPIO           PIN_CFG(152, GPIO)
-#define GPIO152_KP_SKB0                PIN_CFG(152, ALT_A)
-#define GPIO152_LCD_VSI1       PIN_CFG(152, ALT_B)
-#define GPIO152_KP_O9          PIN_CFG(152, ALT_C)
-
-#define GPIO153_GPIO           PIN_CFG(153, GPIO)
-#define GPIO153_KP_I7          PIN_CFG_PULL(153, ALT_A, DOWN)
-#define GPIO153_LCD_D24                PIN_CFG(153, ALT_B)
-#define GPIO153_U2_RXD         PIN_CFG(153, ALT_C)
-
-#define GPIO154_GPIO           PIN_CFG(154, GPIO)
-#define GPIO154_KP_I6          PIN_CFG_PULL(154, ALT_A, DOWN)
-#define GPIO154_LCD_D25                PIN_CFG(154, ALT_B)
-#define GPIO154_U2_TXD         PIN_CFG(154, ALT_C)
-
-#define GPIO155_GPIO           PIN_CFG(155, GPIO)
-#define GPIO155_KP_I5          PIN_CFG_PULL(155, ALT_A, DOWN)
-#define GPIO155_LCD_D26                PIN_CFG(155, ALT_B)
-#define GPIO155_STMAPE_CLK     PIN_CFG(155, ALT_C)
-
-#define GPIO156_GPIO           PIN_CFG(156, GPIO)
-#define GPIO156_KP_I4          PIN_CFG_PULL(156, ALT_A, DOWN)
-#define GPIO156_LCD_D27                PIN_CFG(156, ALT_B)
-#define GPIO156_STMAPE_DAT3    PIN_CFG(156, ALT_C)
-
-#define GPIO157_GPIO           PIN_CFG(157, GPIO)
-#define GPIO157_KP_O7          PIN_CFG_PULL(157, ALT_A, UP)
-#define GPIO157_LCD_D28                PIN_CFG(157, ALT_B)
-#define GPIO157_STMAPE_DAT2    PIN_CFG(157, ALT_C)
-
-#define GPIO158_GPIO           PIN_CFG(158, GPIO)
-#define GPIO158_KP_O6          PIN_CFG_PULL(158, ALT_A, UP)
-#define GPIO158_LCD_D29                PIN_CFG(158, ALT_B)
-#define GPIO158_STMAPE_DAT1    PIN_CFG(158, ALT_C)
-
-#define GPIO159_GPIO           PIN_CFG(159, GPIO)
-#define GPIO159_KP_O5          PIN_CFG_PULL(159, ALT_A, UP)
-#define GPIO159_LCD_D30                PIN_CFG(159, ALT_B)
-#define GPIO159_STMAPE_DAT0    PIN_CFG(159, ALT_C)
-
-#define GPIO160_GPIO           PIN_CFG(160, GPIO)
-#define GPIO160_KP_O4          PIN_CFG_PULL(160, ALT_A, UP)
-#define GPIO160_LCD_D31                PIN_CFG(160, ALT_B)
-#define GPIO160_NONE           PIN_CFG(160, ALT_C)
-
-#define GPIO161_GPIO           PIN_CFG(161, GPIO)
-#define GPIO161_KP_I3          PIN_CFG_PULL(161, ALT_A, DOWN)
-#define GPIO161_LCD_D32                PIN_CFG(161, ALT_B)
-#define GPIO161_UARTMOD_RXD    PIN_CFG(161, ALT_C)
-
-#define GPIO162_GPIO           PIN_CFG(162, GPIO)
-#define GPIO162_KP_I2          PIN_CFG_PULL(162, ALT_A, DOWN)
-#define GPIO162_LCD_D33                PIN_CFG(162, ALT_B)
-#define GPIO162_UARTMOD_TXD    PIN_CFG(162, ALT_C)
-
-#define GPIO163_GPIO           PIN_CFG(163, GPIO)
-#define GPIO163_KP_I1          PIN_CFG_PULL(163, ALT_A, DOWN)
-#define GPIO163_LCD_D34                PIN_CFG(163, ALT_B)
-#define GPIO163_STMMOD_CLK     PIN_CFG(163, ALT_C)
-
-#define GPIO164_GPIO           PIN_CFG(164, GPIO)
-#define GPIO164_KP_I0          PIN_CFG_PULL(164, ALT_A, UP)
-#define GPIO164_LCD_D35                PIN_CFG(164, ALT_B)
-#define GPIO164_STMMOD_DAT3    PIN_CFG(164, ALT_C)
-
-#define GPIO165_GPIO           PIN_CFG(165, GPIO)
-#define GPIO165_KP_O3          PIN_CFG_PULL(165, ALT_A, UP)
-#define GPIO165_LCD_D36                PIN_CFG(165, ALT_B)
-#define GPIO165_STMMOD_DAT2    PIN_CFG(165, ALT_C)
-
-#define GPIO166_GPIO           PIN_CFG(166, GPIO)
-#define GPIO166_KP_O2          PIN_CFG_PULL(166, ALT_A, UP)
-#define GPIO166_LCD_D37                PIN_CFG(166, ALT_B)
-#define GPIO166_STMMOD_DAT1    PIN_CFG(166, ALT_C)
-
-#define GPIO167_GPIO           PIN_CFG(167, GPIO)
-#define GPIO167_KP_O1          PIN_CFG_PULL(167, ALT_A, UP)
-#define GPIO167_LCD_D38                PIN_CFG(167, ALT_B)
-#define GPIO167_STMMOD_DAT0    PIN_CFG(167, ALT_C)
-
-#define GPIO168_GPIO           PIN_CFG(168, GPIO)
-#define GPIO168_KP_O0          PIN_CFG_PULL(168, ALT_A, UP)
-#define GPIO168_LCD_D39                PIN_CFG(168, ALT_B)
-#define GPIO168_NONE           PIN_CFG(168, ALT_C)
-
-#define GPIO169_GPIO           PIN_CFG(169, GPIO)
-#define GPIO169_RF_PURn                PIN_CFG(169, ALT_A)
-#define GPIO169_LCDA_DE                PIN_CFG(169, ALT_B)
-#define GPIO169_USBSIM_PDC     PIN_CFG(169, ALT_C)
-
-#define GPIO170_GPIO           PIN_CFG(170, GPIO)
-#define GPIO170_MODEM_STATE    PIN_CFG(170, ALT_A)
-#define GPIO170_LCDA_VSO       PIN_CFG(170, ALT_B)
-#define GPIO170_KP_SKA1                PIN_CFG(170, ALT_C)
-
-#define GPIO171_GPIO           PIN_CFG(171, GPIO)
-#define GPIO171_MODEM_PWREN    PIN_CFG(171, ALT_A)
-#define GPIO171_LCDA_HSO       PIN_CFG(171, ALT_B)
-#define GPIO171_KP_SKB1                PIN_CFG(171, ALT_C)
-
-#define GPIO192_GPIO           PIN_CFG(192, GPIO)
-#define GPIO192_MSP2_SCK       PIN_CFG(192, ALT_A)
-
-#define GPIO193_GPIO           PIN_CFG(193, GPIO)
-#define GPIO193_MSP2_TXD       PIN_CFG(193, ALT_A)
-
-#define GPIO194_GPIO           PIN_CFG(194, GPIO)
-#define GPIO194_MSP2_TCK       PIN_CFG(194, ALT_A)
-
-#define GPIO195_GPIO           PIN_CFG(195, GPIO)
-#define GPIO195_MSP2_TFS       PIN_CFG(195, ALT_A)
-
-#define GPIO196_GPIO           PIN_CFG(196, GPIO)
-#define GPIO196_MSP2_RXD       PIN_CFG(196, ALT_A)
-
-#define GPIO197_GPIO           PIN_CFG(197, GPIO)
-#define GPIO197_MC4_DAT3       PIN_CFG(197, ALT_A)
-
-#define GPIO198_GPIO           PIN_CFG(198, GPIO)
-#define GPIO198_MC4_DAT2       PIN_CFG(198, ALT_A)
-
-#define GPIO199_GPIO           PIN_CFG(199, GPIO)
-#define GPIO199_MC4_DAT1       PIN_CFG(199, ALT_A)
-
-#define GPIO200_GPIO           PIN_CFG(200, GPIO)
-#define GPIO200_MC4_DAT0       PIN_CFG(200, ALT_A)
-
-#define GPIO201_GPIO           PIN_CFG(201, GPIO)
-#define GPIO201_MC4_CMD                PIN_CFG(201, ALT_A)
-
-#define GPIO202_GPIO           PIN_CFG(202, GPIO)
-#define GPIO202_MC4_FBCLK      PIN_CFG(202, ALT_A)
-#define GPIO202_PWL            PIN_CFG(202, ALT_B)
-#define GPIO202_MC4_RSTN       PIN_CFG(202, ALT_C)
-
-#define GPIO203_GPIO           PIN_CFG(203, GPIO)
-#define GPIO203_MC4_CLK                PIN_CFG(203, ALT_A)
-
-#define GPIO204_GPIO           PIN_CFG(204, GPIO)
-#define GPIO204_MC4_DAT7       PIN_CFG(204, ALT_A)
-
-#define GPIO205_GPIO           PIN_CFG(205, GPIO)
-#define GPIO205_MC4_DAT6       PIN_CFG(205, ALT_A)
-
-#define GPIO206_GPIO           PIN_CFG(206, GPIO)
-#define GPIO206_MC4_DAT5       PIN_CFG(206, ALT_A)
-
-#define GPIO207_GPIO           PIN_CFG(207, GPIO)
-#define GPIO207_MC4_DAT4       PIN_CFG(207, ALT_A)
-
-#define GPIO208_GPIO           PIN_CFG(208, GPIO)
-#define GPIO208_MC1_CLK                PIN_CFG(208, ALT_A)
-
-#define GPIO209_GPIO           PIN_CFG(209, GPIO)
-#define GPIO209_MC1_FBCLK      PIN_CFG(209, ALT_A)
-#define GPIO209_SPI1_CLK       PIN_CFG(209, ALT_B)
-
-#define GPIO210_GPIO           PIN_CFG(210, GPIO)
-#define GPIO210_MC1_CMD                PIN_CFG(210, ALT_A)
-
-#define GPIO211_GPIO           PIN_CFG(211, GPIO)
-#define GPIO211_MC1_DAT0       PIN_CFG(211, ALT_A)
-
-#define GPIO212_GPIO           PIN_CFG(212, GPIO)
-#define GPIO212_MC1_DAT1       PIN_CFG(212, ALT_A)
-#define GPIO212_SPI1_FRM       PIN_CFG(212, ALT_B)
-
-#define GPIO213_GPIO           PIN_CFG(213, GPIO)
-#define GPIO213_MC1_DAT2       PIN_CFG(213, ALT_A)
-#define GPIO213_SPI1_TXD       PIN_CFG(213, ALT_B)
-
-#define GPIO214_GPIO           PIN_CFG(214, GPIO)
-#define GPIO214_MC1_DAT3       PIN_CFG(214, ALT_A)
-#define GPIO214_SPI1_RXD       PIN_CFG(214, ALT_B)
-
-#define GPIO215_GPIO           PIN_CFG(215, GPIO)
-#define GPIO215_MC1_CMDDIR     PIN_CFG(215, ALT_A)
-#define GPIO215_MC3_DAT2DIR    PIN_CFG(215, ALT_B)
-#define GPIO215_CLKOUT1                PIN_CFG(215, ALT_C)
-
-#define GPIO216_GPIO           PIN_CFG(216, GPIO)
-#define GPIO216_MC1_DAT2DIR    PIN_CFG(216, ALT_A)
-#define GPIO216_MC3_CMDDIR     PIN_CFG(216, ALT_B)
-#define GPIO216_I2C3_SDA       PIN_CFG_PULL(216, ALT_C, UP)
-
-#define GPIO217_GPIO           PIN_CFG(217, GPIO)
-#define GPIO217_MC1_DAT0DIR    PIN_CFG(217, ALT_A)
-#define GPIO217_MC3_DAT31DIR   PIN_CFG(217, ALT_B)
-#define GPIO217_CLKOUT2                PIN_CFG(217, ALT_C)
-
-#define GPIO218_GPIO           PIN_CFG(218, GPIO)
-#define GPIO218_MC1_DAT31DIR   PIN_CFG(218, ALT_A)
-#define GPIO218_MC3_DAT0DIR    PIN_CFG(218, ALT_B)
-#define GPIO218_I2C3_SCL       PIN_CFG_PULL(218, ALT_C, UP)
-
-#define GPIO219_GPIO           PIN_CFG(219, GPIO)
-#define GPIO219_HSIR_FLA0      PIN_CFG(219, ALT_A)
-#define GPIO219_MC3_CLK                PIN_CFG(219, ALT_B)
-
-#define GPIO220_GPIO           PIN_CFG(220, GPIO)
-#define GPIO220_HSIR_DAT0      PIN_CFG(220, ALT_A)
-#define GPIO220_MC3_FBCLK      PIN_CFG(220, ALT_B)
-#define GPIO220_SPI0_CLK       PIN_CFG(220, ALT_C)
-
-#define GPIO221_GPIO           PIN_CFG(221, GPIO)
-#define GPIO221_HSIR_RDY0      PIN_CFG(221, ALT_A)
-#define GPIO221_MC3_CMD                PIN_CFG(221, ALT_B)
-
-#define GPIO222_GPIO           PIN_CFG(222, GPIO)
-#define GPIO222_HSIT_FLA0      PIN_CFG(222, ALT_A)
-#define GPIO222_MC3_DAT0       PIN_CFG(222, ALT_B)
-
-#define GPIO223_GPIO           PIN_CFG(223, GPIO)
-#define GPIO223_HSIT_DAT0      PIN_CFG(223, ALT_A)
-#define GPIO223_MC3_DAT1       PIN_CFG(223, ALT_B)
-#define GPIO223_SPI0_FRM       PIN_CFG(223, ALT_C)
-
-#define GPIO224_GPIO           PIN_CFG(224, GPIO)
-#define GPIO224_HSIT_RDY0      PIN_CFG(224, ALT_A)
-#define GPIO224_MC3_DAT2       PIN_CFG(224, ALT_B)
-#define GPIO224_SPI0_TXD       PIN_CFG(224, ALT_C)
-
-#define GPIO225_GPIO           PIN_CFG(225, GPIO)
-#define GPIO225_HSIT_CAWAKE0   PIN_CFG(225, ALT_A)
-#define GPIO225_MC3_DAT3       PIN_CFG(225, ALT_B)
-#define GPIO225_SPI0_RXD       PIN_CFG(225, ALT_C)
-
-#define GPIO226_GPIO           PIN_CFG(226, GPIO)
-#define GPIO226_HSIT_ACWAKE0   PIN_CFG(226, ALT_A)
-#define GPIO226_PWL            PIN_CFG(226, ALT_B)
-#define GPIO226_USBSIM_PDC     PIN_CFG(226, ALT_C)
-
-#define GPIO227_GPIO           PIN_CFG(227, GPIO)
-#define GPIO227_CLKOUT1                PIN_CFG(227, ALT_A)
-
-#define GPIO228_GPIO           PIN_CFG(228, GPIO)
-#define GPIO228_CLKOUT2                PIN_CFG(228, ALT_A)
-
-#define GPIO229_GPIO           PIN_CFG(229, GPIO)
-#define GPIO229_CLKOUT1                PIN_CFG(229, ALT_A)
-#define GPIO229_PWL            PIN_CFG(229, ALT_B)
-#define GPIO229_I2C3_SDA       PIN_CFG_PULL(229, ALT_C, UP)
-
-#define GPIO230_GPIO           PIN_CFG(230, GPIO)
-#define GPIO230_CLKOUT2                PIN_CFG(230, ALT_A)
-#define GPIO230_PWL            PIN_CFG(230, ALT_B)
-#define GPIO230_I2C3_SCL       PIN_CFG_PULL(230, ALT_C, UP)
-
-#define GPIO256_GPIO           PIN_CFG(256, GPIO)
-#define GPIO256_USB_NXT                PIN_CFG(256, ALT_A)
-
-#define GPIO257_GPIO           PIN_CFG(257, GPIO)
-#define GPIO257_USB_STP                PIN_CFG(257, ALT_A)
-
-#define GPIO258_GPIO           PIN_CFG(258, GPIO)
-#define GPIO258_USB_XCLK       PIN_CFG(258, ALT_A)
-#define GPIO258_NONE           PIN_CFG(258, ALT_B)
-#define GPIO258_DDR_TRIG       PIN_CFG(258, ALT_C)
-
-#define GPIO259_GPIO           PIN_CFG(259, GPIO)
-#define GPIO259_USB_DIR                PIN_CFG(259, ALT_A)
-
-#define GPIO260_GPIO           PIN_CFG(260, GPIO)
-#define GPIO260_USB_DAT7       PIN_CFG(260, ALT_A)
-
-#define GPIO261_GPIO           PIN_CFG(261, GPIO)
-#define GPIO261_USB_DAT6       PIN_CFG(261, ALT_A)
-
-#define GPIO262_GPIO           PIN_CFG(262, GPIO)
-#define GPIO262_USB_DAT5       PIN_CFG(262, ALT_A)
-
-#define GPIO263_GPIO           PIN_CFG(263, GPIO)
-#define GPIO263_USB_DAT4       PIN_CFG(263, ALT_A)
-
-#define GPIO264_GPIO           PIN_CFG(264, GPIO)
-#define GPIO264_USB_DAT3       PIN_CFG(264, ALT_A)
-
-#define GPIO265_GPIO           PIN_CFG(265, GPIO)
-#define GPIO265_USB_DAT2       PIN_CFG(265, ALT_A)
-
-#define GPIO266_GPIO           PIN_CFG(266, GPIO)
-#define GPIO266_USB_DAT1       PIN_CFG(266, ALT_A)
-
-#define GPIO267_GPIO           PIN_CFG(267, GPIO)
-#define GPIO267_USB_DAT0       PIN_CFG(267, ALT_A)
-
-#endif
diff --git a/board/st-ericsson/snowball/snowball.c b/board/st-ericsson/snowball/snowball.c
deleted file mode 100644 (file)
index c3061e2..0000000
+++ /dev/null
@@ -1,340 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2009
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <common.h>
-#include <malloc.h>
-#include <i2c.h>
-#include <mmc.h>
-#include <asm/types.h>
-#include <asm/io.h>
-#include <asm/errno.h>
-#include <asm/arch/db8500_pincfg.h>
-#include <asm/arch/prcmu.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/sys_proto.h>
-
-#ifdef CONFIG_MMC
-#include "../../../drivers/mmc/arm_pl180_mmci.h"
-#endif
-#include "db8500_pins.h"
-
-/*
- * Get a global data pointer
- */
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Memory controller register
- */
-#define DMC_BASE_ADDR                  0x80156000
-#define DMC_CTL_97                     (DMC_BASE_ADDR + 0x184)
-
-/*
- * GPIO pin config common for MOP500/HREF boards
- */
-unsigned long gpio_cfg_common[] = {
-       /* I2C */
-       GPIO147_I2C0_SCL,
-       GPIO148_I2C0_SDA,
-       GPIO16_I2C1_SCL,
-       GPIO17_I2C1_SDA,
-       GPIO10_I2C2_SDA,
-       GPIO11_I2C2_SCL,
-       GPIO229_I2C3_SDA,
-       GPIO230_I2C3_SCL,
-
-       /* SSP0, to AB8500 */
-       GPIO143_SSP0_CLK,
-       GPIO144_SSP0_FRM,
-       GPIO145_SSP0_RXD | PIN_PULL_DOWN,
-       GPIO146_SSP0_TXD,
-
-       /* MMC0 (MicroSD card) */
-       GPIO18_MC0_CMDDIR       | PIN_OUTPUT_HIGH,
-       GPIO19_MC0_DAT0DIR      | PIN_OUTPUT_HIGH,
-       GPIO20_MC0_DAT2DIR      | PIN_OUTPUT_HIGH,
-       GPIO21_MC0_DAT31DIR     | PIN_OUTPUT_HIGH,
-       GPIO22_MC0_FBCLK        | PIN_INPUT_NOPULL,
-       GPIO23_MC0_CLK          | PIN_OUTPUT_LOW,
-       GPIO24_MC0_CMD          | PIN_INPUT_PULLUP,
-       GPIO25_MC0_DAT0         | PIN_INPUT_PULLUP,
-       GPIO26_MC0_DAT1         | PIN_INPUT_PULLUP,
-       GPIO27_MC0_DAT2         | PIN_INPUT_PULLUP,
-       GPIO28_MC0_DAT3         | PIN_INPUT_PULLUP,
-
-       /* MMC4 (On-board eMMC) */
-       GPIO197_MC4_DAT3        | PIN_INPUT_PULLUP,
-       GPIO198_MC4_DAT2        | PIN_INPUT_PULLUP,
-       GPIO199_MC4_DAT1        | PIN_INPUT_PULLUP,
-       GPIO200_MC4_DAT0        | PIN_INPUT_PULLUP,
-       GPIO201_MC4_CMD         | PIN_INPUT_PULLUP,
-       GPIO202_MC4_FBCLK       | PIN_INPUT_NOPULL,
-       GPIO203_MC4_CLK         | PIN_OUTPUT_LOW,
-       GPIO204_MC4_DAT7        | PIN_INPUT_PULLUP,
-       GPIO205_MC4_DAT6        | PIN_INPUT_PULLUP,
-       GPIO206_MC4_DAT5        | PIN_INPUT_PULLUP,
-       GPIO207_MC4_DAT4        | PIN_INPUT_PULLUP,
-
-       /* UART2, console */
-       GPIO29_U2_RXD   | PIN_INPUT_PULLUP,
-       GPIO30_U2_TXD   | PIN_OUTPUT_HIGH,
-       GPIO31_U2_CTSn  | PIN_INPUT_PULLUP,
-       GPIO32_U2_RTSn  | PIN_OUTPUT_HIGH,
-
-       /*
-        * USB, pin 256-267 USB, Is probably already setup correctly from
-        * BootROM/boot stages, but we don't trust that and set it up anyway
-        */
-       GPIO256_USB_NXT,
-       GPIO257_USB_STP,
-       GPIO258_USB_XCLK,
-       GPIO259_USB_DIR,
-       GPIO260_USB_DAT7,
-       GPIO261_USB_DAT6,
-       GPIO262_USB_DAT5,
-       GPIO263_USB_DAT4,
-       GPIO264_USB_DAT3,
-       GPIO265_USB_DAT2,
-       GPIO266_USB_DAT1,
-       GPIO267_USB_DAT0,
-};
-
-unsigned long gpio_cfg_snowball[] = {
-       /* MMC0 (MicroSD card) */
-       GPIO217_GPIO    | PIN_OUTPUT_HIGH,      /* MMC_EN */
-       GPIO218_GPIO    | PIN_INPUT_NOPULL,     /* MMC_CD */
-       GPIO228_GPIO    | PIN_OUTPUT_HIGH,      /* SD_SEL */
-
-       /* eMMC */
-       GPIO167_GPIO    | PIN_OUTPUT_HIGH,      /* RSTn_MLC */
-
-       /* LAN */
-       GPIO131_SM_ADQ8,
-       GPIO132_SM_ADQ9,
-       GPIO133_SM_ADQ10,
-       GPIO134_SM_ADQ11,
-       GPIO135_SM_ADQ12,
-       GPIO136_SM_ADQ13,
-       GPIO137_SM_ADQ14,
-       GPIO138_SM_ADQ15,
-
-       /* RSTn_LAN */
-       GPIO141_GPIO    | PIN_OUTPUT_HIGH,
-};
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_init(void)
-{
-       /*
-        * Setup board (bd) and board-info (bi).
-        * bi_arch_number: Unique id for this board. It will passed in r1 to
-        *    Linux startup code and is the machine_id.
-        * bi_boot_params: Where this board expects params.
-        */
-       gd->bd->bi_arch_number = MACH_TYPE_SNOWBALL;
-       gd->bd->bi_boot_params = 0x00000100;
-
-       /* Configure GPIO pins needed by U-boot */
-       db8500_gpio_config_pins(gpio_cfg_common, ARRAY_SIZE(gpio_cfg_common));
-
-       db8500_gpio_config_pins(gpio_cfg_snowball,
-                                               ARRAY_SIZE(gpio_cfg_snowball));
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
-       gd->ram_size = gd->bd->bi_dram[0].size =
-               get_ram_size(CONFIG_SYS_SDRAM_BASE, CONFIG_SYS_MAX_RAM_SIZE);
-
-       return 0;
-}
-
-static int raise_ab8500_gpio16(void)
-{
-       int ret;
-
-       /* selection */
-       ret = ab8500_read(AB8500_MISC, AB8500_GPIO_SEL2_REG);
-       if (ret < 0)
-               goto out;
-
-       ret |= 0x80;
-       ret = ab8500_write(AB8500_MISC, AB8500_GPIO_SEL2_REG, ret);
-       if (ret < 0)
-               goto out;
-
-       /* direction */
-       ret = ab8500_read(AB8500_MISC, AB8500_GPIO_DIR2_REG);
-       if (ret < 0)
-               goto out;
-
-       ret |= 0x80;
-       ret = ab8500_write(AB8500_MISC, AB8500_GPIO_DIR2_REG, ret);
-       if (ret < 0)
-               goto out;
-
-       /* out */
-       ret = ab8500_read(AB8500_MISC, AB8500_GPIO_OUT2_REG);
-       if (ret < 0)
-               goto out;
-
-       ret |= 0x80;
-       ret = ab8500_write(AB8500_MISC, AB8500_GPIO_OUT2_REG, ret);
-
-out:
-       return ret;
-}
-
-static int raise_ab8500_gpio26(void)
-{
-       int ret;
-
-       /* selection */
-       ret = ab8500_read(AB8500_MISC, AB8500_GPIO_DIR4_REG);
-       if (ret < 0)
-               goto out;
-
-       ret |= 0x2;
-       ret = ab8500_write(AB8500_MISC, AB8500_GPIO_DIR4_REG, ret);
-       if (ret < 0)
-               goto out;
-
-       /* out */
-       ret = ab8500_read(AB8500_MISC, AB8500_GPIO_OUT4_REG);
-       if (ret < 0)
-               goto out;
-
-       ret |= 0x2;
-       ret = ab8500_write(AB8500_MISC, AB8500_GPIO_OUT4_REG, ret);
-
-out:
-       return ret;
-}
-
-int board_late_init(void)
-{
-       /* enable 3V3 for LAN controller */
-       if (raise_ab8500_gpio26() >= 0) {
-               /* Turn on FSMC device */
-               writel(0x1, 0x8000f000);
-               writel(0x1, 0x8000f008);
-
-               /* setup FSMC for LAN controler */
-               writel(0x305b, 0x80000000);
-
-               /* run at the highest possible speed */
-               writel(0x01010210, 0x80000004);
-       } else
-               printf("error: can't raise GPIO26\n");
-
-       /* enable 3v6 for GBF chip */
-       if ((raise_ab8500_gpio16() < 0))
-               printf("error: cant' raise GPIO16\n");
-
-       /* empty UART RX FIFO */
-       while (tstc())
-               (void) getc();
-
-       return 0;
-}
-
-#ifdef CONFIG_MMC
-/*
- * emmc_host_init - initialize the emmc controller.
- * Configure GPIO settings, set initial clock and power for emmc slot.
- * Initialize mmc struct and register with mmc framework.
- */
-static int emmc_host_init(void)
-{
-       struct pl180_mmc_host *host;
-
-       host = malloc(sizeof(struct pl180_mmc_host));
-       if (!host)
-               return -ENOMEM;
-       memset(host, 0, sizeof(*host));
-
-       host->base = (struct sdi_registers *)CFG_EMMC_BASE;
-       host->pwr_init = SDI_PWR_OPD | SDI_PWR_PWRCTRL_ON;
-       host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V2 |
-                                SDI_CLKCR_CLKEN | SDI_CLKCR_HWFC_EN;
-       strcpy(host->name, "EMMC");
-       host->caps = MMC_MODE_8BIT | MMC_MODE_HS | MMC_MODE_HS_52MHz;
-       host->voltages = VOLTAGE_WINDOW_MMC;
-       host->clock_min = ARM_MCLK / (2 + SDI_CLKCR_CLKDIV_INIT_V2);
-       host->clock_max = ARM_MCLK / 2;
-       host->clock_in = ARM_MCLK;
-       host->version2 = 1;
-
-       return arm_pl180_mmci_init(host);
-}
-
-/*
- * mmc_host_init - initialize the external mmc controller.
- * Configure GPIO settings, set initial clock and power for mmc slot.
- * Initialize mmc struct and register with mmc framework.
- */
-static int mmc_host_init(void)
-{
-       struct pl180_mmc_host *host;
-       u32 sdi_u32;
-
-       host = malloc(sizeof(struct pl180_mmc_host));
-       if (!host)
-               return -ENOMEM;
-       memset(host, 0, sizeof(*host));
-
-       host->base = (struct sdi_registers *)CFG_MMC_BASE;
-       sdi_u32 = 0xBF;
-       writel(sdi_u32, &host->base->power);
-       host->pwr_init = 0xBF;
-       host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V2 |
-                                SDI_CLKCR_CLKEN | SDI_CLKCR_HWFC_EN;
-       strcpy(host->name, "MMC");
-       host->caps = MMC_MODE_8BIT;
-       host->b_max = 0;
-       host->voltages = VOLTAGE_WINDOW_SD;
-       host->clock_min = ARM_MCLK / (2 + SDI_CLKCR_CLKDIV_INIT_V2);
-       host->clock_max = ARM_MCLK / 2;
-       host->clock_in = ARM_MCLK;
-       host->version2 = 1;
-
-       return arm_pl180_mmci_init(host);
-}
-
-/*
- * board_mmc_init - initialize all the mmc/sd host controllers.
- * Called by generic mmc framework.
- */
-int board_mmc_init(bd_t *bis)
-{
-       int error;
-
-       (void) bis;
-
-       error = emmc_host_init();
-       if (error) {
-               printf("emmc_host_init() %d\n", error);
-               return -1;
-       }
-
-       u8500_mmc_power_init();
-
-       error = mmc_host_init();
-       if (error) {
-               printf("mmc_host_init() %d\n", error);
-               return -1;
-       }
-
-       return 0;
-}
-#endif /* CONFIG_MMC */
diff --git a/board/st-ericsson/u8500/Kconfig b/board/st-ericsson/u8500/Kconfig
deleted file mode 100644 (file)
index 909f30d..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_U8500_HREF
-
-config SYS_BOARD
-       default "u8500"
-
-config SYS_VENDOR
-       default "st-ericsson"
-
-config SYS_SOC
-       default "u8500"
-
-config SYS_CONFIG_NAME
-       default "u8500_href"
-
-endif
diff --git a/board/st-ericsson/u8500/MAINTAINERS b/board/st-ericsson/u8500/MAINTAINERS
deleted file mode 100644 (file)
index e2581eb..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-U8500 BOARD
-#M:    -
-S:     Maintained
-F:     board/st-ericsson/u8500/
-F:     include/configs/u8500_href.h
-F:     configs/u8500_href_defconfig
diff --git a/board/st-ericsson/u8500/Makefile b/board/st-ericsson/u8500/Makefile
deleted file mode 100644 (file)
index d6c4280..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright (C) ST-Ericsson SA 2009
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-ccflags-y += -D__RELEASE -D__STN_8500
-
-obj-y  := u8500_href.o gpio.o
diff --git a/board/st-ericsson/u8500/gpio.c b/board/st-ericsson/u8500/gpio.c
deleted file mode 100644 (file)
index 2ddc7af..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2009
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/gpio.h>
-
-static struct gpio_register *addr_gpio_register[] = {
-       (void *)U8500_GPIO_0_BASE,
-       (void *)U8500_GPIO_1_BASE,
-       (void *)U8500_GPIO_2_BASE,
-       (void *)U8500_GPIO_3_BASE,
-       (void *)U8500_GPIO_4_BASE,
-       (void *)U8500_GPIO_5_BASE,
-       (void *)U8500_GPIO_6_BASE,
-       (void *)U8500_GPIO_7_BASE,
-       (void *)U8500_GPIO_8_BASE,
-};
-
-struct gpio_altfun_data altfun_table[] = {
-       {
-               .altfun = GPIO_ALT_I2C_0,
-               .start = 147,
-               .end = 148,
-               .cont = 0,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_I2C_1,
-               .start = 16,
-               .end = 17,
-               .cont = 0,
-               .type = GPIO_ALTF_B,
-       },
-       {
-               .altfun = GPIO_ALT_I2C_2,
-               .start = 10,
-               .end = 11,
-               .cont = 0,
-               .type = GPIO_ALTF_B,
-       },
-       {
-               .altfun = GPIO_ALT_I2C_3,
-               .start = 229,
-               .end = 230,
-               .cont = 0,
-               .type = GPIO_ALTF_C,
-       },
-       {
-               .altfun = GPIO_ALT_UART_0_MODEM,
-               .start = 0,
-               .end = 3,
-               .cont = 1,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_UART_0_MODEM,
-               .start = 33,
-               .end = 36,
-               .cont = 0,
-               .type = GPIO_ALTF_C,
-       },
-       {
-               .altfun = GPIO_ALT_UART_1,
-               .start = 4,
-               .end = 7,
-               .cont = 0,
-               .type =
-                       GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_UART_2,
-               .start = 18,
-               .end = 19,
-               .cont = 1,
-               .type = GPIO_ALTF_B,
-       },
-       {
-               .altfun = GPIO_ALT_UART_2,
-               .start = 29,
-               .end = 32,
-               .cont = 0,
-               .type = GPIO_ALTF_C,
-       },
-       {
-               .altfun = GPIO_ALT_MSP_0,
-               .start = 12,
-               .end = 17,
-               .cont = 1,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_MSP_0,
-               .start = 21,
-               .end = 21,
-               .cont = 0,
-               .type = GPIO_ALTF_B,
-       },
-       {
-               .altfun = GPIO_ALT_MSP_1,
-               .start = 33,
-               .end = 36,
-               .cont = 0,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_MSP_2,
-               .start = 192,
-               .end = 196,
-               .cont = 0,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_LCD_PANEL,
-               .start = 64,
-               .end = 93,
-               .cont = 1,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_LCD_PANEL,
-               .start = 150,
-               .end = 171,
-               .cont = 0,
-               .type = GPIO_ALTF_B,
-       },
-       {
-               .altfun = GPIO_ALT_SD_CARD0,
-               .start = 18,
-               .end = 28,
-               .cont = 0,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_MM_CARD0,
-               .start = 18,
-               .end = 32,
-               .cont = 0,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_USB_OTG,
-               .start = 256,
-               .end = 267,
-               .cont = 0,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_EMMC,
-               .start = 197,
-               .end = 207,
-               .cont = 0,
-               .type = GPIO_ALTF_A,
-       },
-       {
-               .altfun = GPIO_ALT_POP_EMMC,
-               .start = 128,
-               .end = 138,
-               .cont = 0,
-               .type = GPIO_ALTF_A,
-       },
-};
-
-/*
- * Static Function declarations
- */
-enum gpio_error gpio_setpinconfig(int pin_id, struct gpio_config *config)
-{
-       struct gpio_register *p_gpio_register =
-           addr_gpio_register[GPIO_BLOCK(pin_id)];
-       u32 mask = 1UL << (pin_id % GPIO_PINS_PER_BLOCK);
-       enum gpio_error error = GPIO_OK;
-       u32 temp_reg;
-
-       switch (config->mode) {
-       case GPIO_ALTF_A:
-               temp_reg = readl(&p_gpio_register->gpio_afsa);
-               temp_reg |= mask;
-               writel(temp_reg, &p_gpio_register->gpio_afsa);
-               temp_reg = readl(&p_gpio_register->gpio_afsb);
-               temp_reg &= ~mask;
-               writel(temp_reg, &p_gpio_register->gpio_afsb);
-               break;
-       case GPIO_ALTF_B:
-               temp_reg = readl(&p_gpio_register->gpio_afsa);
-               temp_reg &= ~mask;
-               writel(temp_reg, &p_gpio_register->gpio_afsa);
-               temp_reg = readl(&p_gpio_register->gpio_afsb);
-               temp_reg |= mask;
-               writel(temp_reg, &p_gpio_register->gpio_afsb);
-               break;
-       case GPIO_ALTF_C:
-               temp_reg = readl(&p_gpio_register->gpio_afsa);
-               temp_reg |= mask;
-               writel(temp_reg, &p_gpio_register->gpio_afsa);
-               temp_reg = readl(&p_gpio_register->gpio_afsb);
-               temp_reg |= mask;
-               writel(temp_reg, &p_gpio_register->gpio_afsb);
-               break;
-       case GPIO_MODE_SOFTWARE:
-               temp_reg = readl(&p_gpio_register->gpio_afsa);
-               temp_reg &= ~mask;
-               writel(temp_reg, &p_gpio_register->gpio_afsa);
-               temp_reg = readl(&p_gpio_register->gpio_afsb);
-               temp_reg &= ~mask;
-               writel(temp_reg, &p_gpio_register->gpio_afsb);
-
-               switch (config->direction) {
-               case GPIO_DIR_INPUT:
-                       writel(mask, &p_gpio_register->gpio_dirc);
-                       break;
-               case GPIO_DIR_OUTPUT:
-                       writel(mask, &p_gpio_register->gpio_dirs);
-                       break;
-               case GPIO_DIR_LEAVE_UNCHANGED:
-                       break;
-               default:
-                       return GPIO_INVALID_PARAMETER;
-               }
-
-               break;
-       case GPIO_MODE_LEAVE_UNCHANGED:
-               break;
-       default:
-               return GPIO_INVALID_PARAMETER;
-       }
-       return error;
-}
-
-enum gpio_error gpio_resetgpiopin(int pin_id, char *dev_name)
-{
-       struct gpio_register *p_gpio_register =
-           addr_gpio_register[GPIO_BLOCK(pin_id)];
-       u32 mask = 1UL << (pin_id % GPIO_PINS_PER_BLOCK);
-       enum gpio_error error = GPIO_OK;
-       u32 temp_reg;
-
-       temp_reg = readl(&p_gpio_register->gpio_afsa);
-       temp_reg &= ~mask;
-       writel(temp_reg, &p_gpio_register->gpio_afsa);
-       temp_reg = readl(&p_gpio_register->gpio_afsb);
-       temp_reg &= ~mask;
-       writel(temp_reg, &p_gpio_register->gpio_afsb);
-       writel(mask, &p_gpio_register->gpio_dirc);
-
-       return error;
-}
-
-struct gpio_config altfun_pinconfig;
-enum gpio_error gpio_altfunction(enum gpio_alt_function alt_func,
-                           int which_altfunc, char *dev_name)
-{
-       int i, j, start, end;
-       enum gpio_error error = -1;
-
-       for (i = 0; i < ARRAY_SIZE(altfun_table); i++) {
-               if (altfun_table[i].altfun != alt_func)
-                       continue;
-
-               start = altfun_table[i].start;
-               end = altfun_table[i].end;
-               for (j = start; j <= end; j++) {
-                       if (which_altfunc == GPIO_ALTF_FIND)
-                               altfun_pinconfig.mode = altfun_table[i].type;
-                       else
-                               altfun_pinconfig.mode = which_altfunc;
-                       altfun_pinconfig.direction = GPIO_DIR_OUTPUT;
-                       altfun_pinconfig.dev_name = dev_name;
-
-                       if (which_altfunc != GPIO_ALTF_DISABLE)
-                               error = gpio_setpinconfig(j, &altfun_pinconfig);
-                       else
-                               error = gpio_resetgpiopin(j, dev_name);
-                       if (!error)
-                               continue;
-                       printf("GPIO %d configuration failure (nmdk_error:%d)",
-                               j, error);
-                       error = GPIO_INVALID_PARAMETER;
-                       return error;
-               }
-
-               if (!altfun_table[i].cont)
-                       break;
-       }
-       return error;
-}
-
-int gpio_writepin(int pin_id, enum gpio_data value, char *dev_name)
-{
-       struct gpio_register *p_gpio_register =
-           addr_gpio_register[GPIO_BLOCK(pin_id)];
-       u32 mask = 1UL << (pin_id % GPIO_PINS_PER_BLOCK);
-
-       switch (value) {
-       case GPIO_DATA_HIGH:
-               writel(mask, &p_gpio_register->gpio_dats);
-               break;
-       case GPIO_DATA_LOW:
-               writel(mask, &p_gpio_register->gpio_datc);
-               break;
-       default:
-               printf("Invalid value passed in %s", __FUNCTION__);
-               return GPIO_INVALID_PARAMETER;
-       }
-       return GPIO_OK;
-}
-
-int gpio_readpin(int pin_id, enum gpio_data *rv)
-{
-       struct gpio_register *p_gpio_register =
-           addr_gpio_register[GPIO_BLOCK(pin_id)];
-       u32 mask = 1UL << (pin_id % GPIO_PINS_PER_BLOCK);
-
-       if ((readl(&p_gpio_register->gpio_dat) & mask) != 0)
-               *rv = GPIO_DATA_HIGH;
-       else
-               *rv = GPIO_DATA_LOW;
-       return GPIO_OK;
-}
-
-int gpio_altfuncenable(enum gpio_alt_function altfunc, char *dev_name)
-{
-       return (int)gpio_altfunction(altfunc, GPIO_ALTF_FIND, dev_name);
-}
-
-int gpio_altfuncdisable(enum gpio_alt_function altfunc, char *dev_name)
-{
-       return (int)gpio_altfunction(altfunc, GPIO_ALTF_DISABLE, dev_name);
-}
diff --git a/board/st-ericsson/u8500/u8500_href.c b/board/st-ericsson/u8500/u8500_href.c
deleted file mode 100644 (file)
index 9df499b..0000000
+++ /dev/null
@@ -1,477 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2009
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <common.h>
-#include <malloc.h>
-#include <i2c.h>
-#include <asm/types.h>
-#include <asm/io.h>
-#include <asm/errno.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/prcmu.h>
-#ifdef CONFIG_MMC
-#include "../../../drivers/mmc/arm_pl180_mmci.h"
-#endif
-
-#define NOMADIK_PER4_BASE      (0x80150000)
-#define NOMADIK_BACKUPRAM0_BASE (NOMADIK_PER4_BASE + 0x00000)
-#define NOMADIK_BACKUPRAM1_BASE (NOMADIK_PER4_BASE + 0x01000)
-
-/* Power, Reset, Clock Management Unit */
-/*
- * SVA: Smart Video Accelerator
- * SIA: Smart Imaging Accelerator
- * SGA: Smart Graphic accelerator
- * B2R2: Graphic blitter
- */
-#define PRCM_ARMCLKFIX_MGT_REG         (PRCMU_BASE + 0x000)
-#define PRCM_ACLK_MGT_REG              (PRCMU_BASE + 0x004)
-#define PRCM_SVAMMDSPCLK_MGT_REG       (PRCMU_BASE + 0x008)
-#define PRCM_SIAMMDSPCLK_MGT_REG       (PRCMU_BASE + 0x00C)
-#define PRCM_SAAMMDSPCLK_MGT_REG       (PRCMU_BASE + 0x010)
-#define PRCM_SGACLK_MGT_REG            (PRCMU_BASE + 0x014)
-#define PRCM_UARTCLK_MGT_REG           (PRCMU_BASE + 0x018)
-#define PRCM_MSPCLK_MGT_REG            (PRCMU_BASE + 0x01C)
-#define PRCM_I2CCLK_MGT_REG            (PRCMU_BASE + 0x020)
-#define PRCM_SDMMCCLK_MGT_REG          (PRCMU_BASE + 0x024)
-#define PRCM_SLIMCLK_MGT_REG           (PRCMU_BASE + 0x028)
-#define PRCM_PER1CLK_MGT_REG           (PRCMU_BASE + 0x02C)
-#define PRCM_PER2CLK_MGT_REG           (PRCMU_BASE + 0x030)
-#define PRCM_PER3CLK_MGT_REG           (PRCMU_BASE + 0x034)
-#define PRCM_PER5CLK_MGT_REG           (PRCMU_BASE + 0x038)
-#define PRCM_PER6CLK_MGT_REG           (PRCMU_BASE + 0x03C)
-#define PRCM_PER7CLK_MGT_REG           (PRCMU_BASE + 0x040)
-#define PRCM_DMACLK_MGT_REG            (PRCMU_BASE + 0x074)
-#define PRCM_B2R2CLK_MGT_REG           (PRCMU_BASE + 0x078)
-
-#define PRCM_PLLSOC0_FREQ_REG          (PRCMU_BASE + 0x080)
-#define PRCM_PLLSOC1_FREQ_REG          (PRCMU_BASE + 0x084)
-#define PRCM_PLLARM_FREQ_REG           (PRCMU_BASE + 0x088)
-#define PRCM_PLLDDR_FREQ_REG           (PRCMU_BASE + 0x08C)
-#define PRCM_ARM_CHGCLKREQ_REG         (PRCMU_BASE + 0x114)
-
-#define PRCM_TCR                       (PRCMU_BASE + 0x1C8)
-
-/*
- * Memory controller register
- */
-#define DMC_BASE_ADDR                  0x80156000
-#define DMC_CTL_97                     (DMC_BASE_ADDR + 0x184)
-
-int board_id;  /* set in board_late_init() */
-
-/* PLLs for clock management registers */
-enum {
-       GATED = 0,
-       PLLSOC0,        /* pllsw = 001, ffs() = 1 */
-       PLLSOC1,        /* pllsw = 010, ffs() = 2 */
-       PLLDDR,         /* pllsw = 100, ffs() = 3 */
-       PLLARM,
-};
-
-static struct pll_freq_regs {
-       int idx;        /* index fror pll_name and pll_khz arrays */
-       uint32_t addr;
-} pll_freq_regs[] = {
-       {PLLSOC0, PRCM_PLLSOC0_FREQ_REG},
-       {PLLSOC1, PRCM_PLLSOC1_FREQ_REG},
-       {PLLDDR, PRCM_PLLDDR_FREQ_REG},
-       {PLLARM, PRCM_PLLARM_FREQ_REG},
-       {0, 0},
-};
-
-static const char *pll_name[5] = {"GATED", "SOC0", "SOC1", "DDR", "ARM"};
-static uint32_t pll_khz[5];    /* use ffs(pllsw(reg)) as index for 0..3 */
-
-static struct clk_mgt_regs {
-       uint32_t addr;
-       uint32_t val;
-       const char *descr;
-} clk_mgt_regs[] = {
-       /* register content taken from bootrom settings */
-       {PRCM_ARMCLKFIX_MGT_REG, 0x0120, "ARMCLKFIX"}, /* ena, SOC0/0, ??? */
-       {PRCM_ACLK_MGT_REG, 0x0125, "ACLK"},    /* ena, SOC0/5, 160 MHz */
-       {PRCM_SVAMMDSPCLK_MGT_REG, 0x1122, "SVA"}, /* ena, SOC0/2, 400 MHz */
-       {PRCM_SIAMMDSPCLK_MGT_REG, 0x0022, "SIA"}, /* dis, SOC0/2, 400 MHz */
-       {PRCM_SAAMMDSPCLK_MGT_REG, 0x0822, "SAA"}, /* dis, SOC0/4, 200 MHz */
-       {PRCM_SGACLK_MGT_REG, 0x0024, "SGA"},   /* dis, SOC0/4, 200 MHz */
-       {PRCM_UARTCLK_MGT_REG, 0x0300, "UART"}, /* ena, GATED, CLK38 */
-       {PRCM_MSPCLK_MGT_REG, 0x0200, "MSP"},   /* dis, GATED, CLK38 */
-       {PRCM_I2CCLK_MGT_REG, 0x0130, "I2C"},   /* ena, SOC0/16, 50 MHz */
-       {PRCM_SDMMCCLK_MGT_REG, 0x0130, "SDMMC"}, /* ena, SOC0/16, 50 MHz */
-       {PRCM_PER1CLK_MGT_REG, 0x126, "PER1"},  /* ena, SOC0/6, 133 MHz */
-       {PRCM_PER2CLK_MGT_REG, 0x126, "PER2"},  /* ena, SOC0/6, 133 MHz */
-       {PRCM_PER3CLK_MGT_REG, 0x126, "PER3"},  /* ena, SOC0/6, 133 MHz */
-       {PRCM_PER5CLK_MGT_REG, 0x126, "PER5"},  /* ena, SOC0/6, 133 MHz */
-       {PRCM_PER6CLK_MGT_REG, 0x126, "PER6"},  /* ena, SOC0/6, 133 MHz */
-       {PRCM_PER7CLK_MGT_REG, 0x128, "PER7"},  /* ena, SOC0/8, 100 MHz */
-       {PRCM_DMACLK_MGT_REG, 0x125, "DMA"},    /* ena, SOC0/5, 160 MHz */
-       {PRCM_B2R2CLK_MGT_REG, 0x025, "B2R2"},  /* dis, SOC0/5, 160 MHz */
-       {0, 0, NULL},
-};
-
-static void init_regs(void);
-
-DECLARE_GLOBAL_DATA_PTR;
-#if defined(CONFIG_SHOW_BOOT_PROGRESS)
-void show_boot_progress(int progress)
-{
-       printf("Boot reached stage %d\n", progress);
-}
-#endif
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-
-int board_early_init_f(void)
-{
-       init_regs();
-       return 0;
-}
-
-int board_init(void)
-{
-       uint32_t unused_cols_rows;
-       unsigned int nrows;
-       unsigned int ncols;
-
-       gd->bd->bi_arch_number = 0x1A4;
-       gd->bd->bi_boot_params = 0x00000100;
-       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE;
-
-       /*
-        * Assumption: 2 CS active, both CS have same layout.
-        *             15 rows max, 11 cols max (controller spec).
-        *             memory chip has 8 banks, I/O width 32 bit.
-        * The correct way would be to read MR#8: I/O width and density,
-        * but this requires locking against the PRCMU firmware.
-        * Simplified approach:
-        * Read number of unused rows and columns from mem controller.
-        * size = nCS x 2^(rows+cols) x nbanks x buswidth_bytes
-        */
-       unused_cols_rows = readl(DMC_CTL_97);
-       nrows = 15 - (unused_cols_rows & 0x07);
-       ncols = 11 - ((unused_cols_rows & 0x0700) >> 8);
-       gd->bd->bi_dram[0].size = 2 * (1 << (nrows + ncols)) * 8 * 4;
-
-       icache_enable();
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       gd->ram_size = PHYS_SDRAM_SIZE_1;
-
-       return 0;
-}
-
-unsigned int addr_vall_arr[] = {
-       0x8011F000, 0x0000FFFF, /* Clocks for HSI TODO: Enable reqd only */
-       0x8011F008, 0x00001CFF, /* Clocks for HSI TODO: Enable reqd only */
-       0x8000F000, 0x00007FFF, /* Clocks for I2C TODO: Enable reqd only */
-       0x8000F008, 0x00007FFF, /* Clocks for I2C TODO: Enable reqd only */
-       0x80157020, 0x00000150, /* I2C 48MHz clock */
-       0x8012F000, 0x00007FFF, /* Clocks for SD TODO: Enable reqd only */
-       0x8012F008, 0x00007FFF, /* Clocks for SD TODO: Enable reqd only */
-       0xA03DF000, 0x0000000D, /* Clock for MTU Timers */
-       0x8011E00C, 0x00000000, /* GPIO ALT FUNC for EMMC */
-       0x8011E004, 0x0000FFE0, /* GPIO ALT FUNC for EMMC */
-       0x8011E020, 0x0000FFE0, /* GPIO ALT FUNC for EMMC */
-       0x8011E024, 0x00000000, /* GPIO ALT FUNC for EMMC */
-       0x8012E000, 0x20000000, /* GPIO ALT FUNC for UART */
-       0x8012E00C, 0x00000000, /* GPIO ALT FUNC for SD */
-       0x8012E004, 0x0FFC0000, /* GPIO ALT FUNC for SD */
-       0x8012E020, 0x60000000, /* GPIO ALT FUNC for SD */
-       0x8012E024, 0x60000000, /* GPIO ALT FUNC for SD */
-       0x801571E4, 0x0000000C, /* PRCMU settings for B2R2,
-                                  PRCM_APE_RESETN_SET_REG */
-       0x80157024, 0x00000130, /* PRCMU settings for EMMC/SD */
-       0xA03FF000, 0x00000003, /* USB */
-       0xA03FF008, 0x00000001, /* USB */
-       0xA03FE00C, 0x00000000, /* USB */
-       0xA03FE020, 0x00000FFF, /* USB */
-       0xA03FE024, 0x00000000  /* USB */
-};
-
-#ifdef CONFIG_BOARD_LATE_INIT
-/*
- * called after all initialisation were done, but before the generic
- * mmc_initialize().
- */
-int board_late_init(void)
-{
-       uchar byte;
-
-       /*
-        * Determine and set board_id environment variable
-        * 0: mop500, 1: href500
-        * Above boards have different GPIO expander chips which we can
-        * distinguish by the chip id.
-        *
-        * The board_id environment variable is needed for the Linux bootargs.
-        */
-       (void) i2c_set_bus_num(0);
-       (void) i2c_read(CONFIG_SYS_I2C_GPIOE_ADDR, 0x80, 1, &byte, 1);
-       if (byte == 0x01) {
-               board_id = 0;
-               setenv("board_id", "0");
-       } else {
-               board_id = 1;
-               setenv("board_id", "1");
-       }
-#ifdef CONFIG_MMC
-       u8500_mmc_power_init();
-
-       /*
-        * config extended GPIO pins for level shifter and
-        * SDMMC_ENABLE
-        */
-       if (board_id == 0) {
-               /* MOP500 */
-               byte = 0x0c;
-               (void) i2c_write(CONFIG_SYS_I2C_GPIOE_ADDR, 0x89, 1, &byte, 1);
-               (void) i2c_write(CONFIG_SYS_I2C_GPIOE_ADDR, 0x83, 1, &byte, 1);
-       } else {
-               /* HREF */
-               /* set the direction of GPIO KPY9 and KPY10 */
-               byte = 0x06;
-               (void) i2c_write(CONFIG_SYS_I2C_GPIOE_ADDR, 0xC8, 1, &byte, 1);
-               /* must be a multibyte access */
-               (void) i2c_write(CONFIG_SYS_I2C_GPIOE_ADDR, 0xC4, 1,
-                                               (uchar []) {0x06, 0x06}, 2);
-       }
-#endif /* CONFIG_MMC */
-       /*
-        * Create a memargs variable which points uses either the memargs256 or
-        * memargs512 environment variable, depending on the memory size.
-        * memargs is used to build the bootargs, memargs256 and memargs512 are
-        * stored in the environment.
-        */
-       if (gd->bd->bi_dram[0].size == 0x10000000) {
-               setenv("memargs", "setenv bootargs ${bootargs} ${memargs256}");
-               setenv("mem", "256M");
-       } else {
-               setenv("memargs", "setenv bootargs ${bootargs} ${memargs512}");
-               setenv("mem", "512M");
-       }
-
-       return 0;
-}
-#endif /* CONFIG_BOARD_LATE_INIT */
-
-static void early_gpio_setup(struct gpio_register *gpio_reg, u32 bits)
-{
-       writel(readl(&gpio_reg->gpio_dats) | bits, &gpio_reg->gpio_dats);
-       writel(readl(&gpio_reg->gpio_pdis) & ~bits, &gpio_reg->gpio_pdis);
-}
-
-static void init_regs(void)
-{
-       /* FIXME Remove magic register array settings for ED also */
-       struct prcmu *prcmu = (struct prcmu *) U8500_PRCMU_BASE;
-
-       /* Enable timers */
-       writel(1 << 17, &prcmu->tcr);
-
-       u8500_prcmu_enable(&prcmu->per1clk_mgt);
-       u8500_prcmu_enable(&prcmu->per2clk_mgt);
-       u8500_prcmu_enable(&prcmu->per3clk_mgt);
-       u8500_prcmu_enable(&prcmu->per5clk_mgt);
-       u8500_prcmu_enable(&prcmu->per6clk_mgt);
-       u8500_prcmu_enable(&prcmu->per7clk_mgt);
-
-       u8500_prcmu_enable(&prcmu->uartclk_mgt);
-       u8500_prcmu_enable(&prcmu->i2cclk_mgt);
-
-       u8500_prcmu_enable(&prcmu->sdmmcclk_mgt);
-
-       u8500_clock_enable(1, 9, -1);   /* GPIO0 */
-
-       u8500_clock_enable(2, 11, -1);  /* GPIO1 */
-
-       u8500_clock_enable(3, 8, -1);   /* GPIO2 */
-       u8500_clock_enable(5, 1, -1);   /* GPIO3 */
-
-       u8500_clock_enable(3, 6, 6);    /* UART2 */
-
-       gpio_altfuncenable(GPIO_ALT_I2C_0, "I2C0");
-       u8500_clock_enable(3, 3, 3);    /* I2C0 */
-
-       early_gpio_setup((struct gpio_register *)U8500_GPIO_0_BASE, 0x60000000);
-       gpio_altfuncenable(GPIO_ALT_UART_2, "UART2");
-
-       early_gpio_setup((struct gpio_register *)U8500_GPIO_6_BASE, 0x0000ffe0);
-       gpio_altfuncenable(GPIO_ALT_EMMC, "EMMC");
-
-       early_gpio_setup((struct gpio_register *)U8500_GPIO_0_BASE, 0x0000ffe0);
-       gpio_altfuncenable(GPIO_ALT_SD_CARD0, "SDCARD");
-
-       u8500_clock_enable(1, 5, 5);    /* SDI0 */
-       u8500_clock_enable(2, 4, 2);    /* SDI4 */
-
-       u8500_clock_enable(6, 7, -1);   /* MTU0 */
-       u8500_clock_enable(3, 4, 4);    /* SDI2 */
-
-       early_gpio_setup((struct gpio_register *)U8500_GPIO_4_BASE, 0x000007ff);
-       gpio_altfuncenable(GPIO_ALT_POP_EMMC, "EMMC");
-
-       /*
-        * Enabling clocks for all devices which are AMBA devices in the
-        * kernel.  Otherwise they will not get probe()'d because the
-        * peripheral ID register will not be powered.
-        */
-
-       /* XXX: some of these differ between ED/V1 */
-
-       u8500_clock_enable(1, 1, 1);    /* UART1 */
-       u8500_clock_enable(1, 0, 0);    /* UART0 */
-
-       u8500_clock_enable(3, 2, 2);    /* SSP1 */
-       u8500_clock_enable(3, 1, 1);    /* SSP0 */
-
-       u8500_clock_enable(2, 8, -1);   /* SPI0 */
-       u8500_clock_enable(2, 5, 3);    /* MSP2 */
-}
-
-#ifdef CONFIG_MMC
-static int u8500_mmci_board_init(void)
-{
-       enum gpio_error error;
-       struct gpio_register *gpio_base_address;
-
-       gpio_base_address = (void *)(U8500_GPIO_0_BASE);
-       gpio_base_address->gpio_dats |= 0xFFC0000;
-       gpio_base_address->gpio_pdis &= ~0xFFC0000;
-
-       /* save the GPIO0 AFSELA register */
-       error = gpio_altfuncenable(GPIO_ALT_SD_CARD0, "MMC");
-       if (error != GPIO_OK) {
-               printf("u8500_mmci_board_init() gpio_altfuncenable failed\n");
-               return -ENODEV;
-       }
-       return 0;
-}
-
-int board_mmc_init(bd_t *bd)
-{
-       struct pl180_mmc_host *host;
-
-       if (u8500_mmci_board_init())
-               return -ENODEV;
-
-       host = malloc(sizeof(struct pl180_mmc_host));
-       if (!host)
-               return -ENOMEM;
-       memset(host, 0, sizeof(*host));
-
-       strcpy(host->name, "MMC");
-       host->base = (struct sdi_registers *)CONFIG_ARM_PL180_MMCI_BASE;
-       host->pwr_init = INIT_PWR;
-       host->clkdiv_init = SDI_CLKCR_CLKDIV_INIT_V1 | SDI_CLKCR_CLKEN;
-       host->voltages = VOLTAGE_WINDOW_MMC;
-       host->caps = 0;
-       host->clock_in = ARM_MCLK;
-       host->clock_min = ARM_MCLK / (2 * (SDI_CLKCR_CLKDIV_INIT_V1 + 1));
-       host->clock_max = CONFIG_ARM_PL180_MMCI_CLOCK_FREQ;
-
-       return arm_pl180_mmci_init(host);
-}
-#endif
-
-
-/*
- * get_pll_freq_khz - return PLL frequency in kHz
- */
-static uint32_t get_pll_freq_khz(uint32_t inclk_khz, uint32_t freq_reg)
-{
-       uint32_t idf, ldf, odf, seldiv, phi;
-
-       /*
-        * PLLOUTCLK = PHI = (INCLK*LDF)/(2*ODF*IDF) if SELDIV2=0
-        * PLLOUTCLK = PHI = (INCLK*LDF)/(4*ODF*IDF) if SELDIV2=1
-        * where:
-        * IDF=R(2:0) (when R=000, IDF=1d)
-        * LDF = 2*D(7:0) (D must be greater than or equal to 6)
-        * ODF = N(5:0) (when N=000000, 0DF=1d)
-        */
-
-       idf = (freq_reg & 0x70000) >> 16;
-       ldf = (freq_reg & 0xff) * 2;
-       odf = (freq_reg & 0x3f00) >> 8;
-       seldiv = (freq_reg & 0x01000000) >> 24;
-       phi = (inclk_khz * ldf) / (2 * odf * idf);
-       if (seldiv)
-               phi = phi/2;
-
-       return phi;
-}
-
-int do_clkinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       uint32_t inclk_khz;
-       uint32_t reg, phi;
-       uint32_t clk_khz;
-       unsigned int clk_sel;
-       struct clk_mgt_regs *clks = clk_mgt_regs;
-       struct pll_freq_regs *plls = pll_freq_regs;
-
-       /*
-        * Go through list of PLLs.
-        * Initialise pll out frequency array (pll_khz) and print frequency.
-        */
-       inclk_khz = 38400;      /* 38.4 MHz */
-       while (plls->addr) {
-               reg = readl(plls->addr);
-               phi = get_pll_freq_khz(inclk_khz, reg);
-               pll_khz[plls->idx] = phi;
-               printf("%s PLL out frequency: %d.%d Mhz\n",
-                               pll_name[plls->idx], phi/1000, phi % 1000);
-               plls++;
-       }
-
-       /* check ARM clock source */
-       reg = readl(PRCM_ARM_CHGCLKREQ_REG);
-       printf("A9 running on %s\n",
-               (reg & 1) ?  "external clock" : "ARM PLL");
-
-       /* go through list of clk_mgt_reg */
-       printf("\n%19s %9s %7s %9s enabled\n",
-                       "name(addr)", "value", "PLL", "CLK[MHz]");
-       while (clks->addr) {
-               reg = readl(clks->addr);
-
-               /* convert bit position into array index */
-               clk_sel = ffs((reg >> 5) & 0x7);        /* PLLSW[2:0] */
-
-               if (reg & 0x200)
-                       clk_khz = 38400;        /* CLK38 is set */
-               else if ((reg & 0x1f) == 0)
-                       /* ARMCLKFIX_MGT is 0x120, e.g. div = 0 ! */
-                       clk_khz = 0;
-               else
-                       clk_khz = pll_khz[clk_sel] / (reg & 0x1f);
-
-               printf("%9s(%08x): %08x, %6s, %4d.%03d, %s\n",
-                       clks->descr, clks->addr, reg, pll_name[clk_sel],
-                       clk_khz / 1000, clk_khz % 1000,
-                       (reg & 0x100) ? "ena" : "dis");
-               clks++;
-       }
-
-       return 0;
-}
-
-U_BOOT_CMD(
-       clkinfo,        1,      1,      do_clkinfo,
-       "print clock info",
-       ""
-);
diff --git a/board/st/nhk8815/Kconfig b/board/st/nhk8815/Kconfig
deleted file mode 100644 (file)
index 94547dc..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if NOMADIK_NHK8815
-
-config SYS_BOARD
-       default "nhk8815"
-
-config SYS_VENDOR
-       default "st"
-
-config SYS_CONFIG_NAME
-       default "nhk8815"
-
-endif
diff --git a/board/st/nhk8815/MAINTAINERS b/board/st/nhk8815/MAINTAINERS
deleted file mode 100644 (file)
index 72c3a8d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-NHK8815 BOARD
-M:     Nomadik Linux Team <STN_WMM_nomadik_linux@list.st.com>
-M:     Alessandro Rubini <rubini@unipv.it>
-S:     Maintained
-F:     board/st/nhk8815/
-F:     include/configs/nhk8815.h
-F:     configs/nhk8815_defconfig
-F:     configs/nhk8815_onenand_defconfig
diff --git a/board/st/nhk8815/Makefile b/board/st/nhk8815/Makefile
deleted file mode 100644 (file)
index dd56944..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# (C) Copyright 2000-2004
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2004
-# ARM Ltd.
-# Philippe Robin, <philippe.robin@arm.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := nhk8815.o
diff --git a/board/st/nhk8815/README.nhk8815 b/board/st/nhk8815/README.nhk8815
deleted file mode 100644 (file)
index 9008e39..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-
-The Nomadik 8815 CPU has a "secure" boot mode where no external access
-(not even JTAG) is allowed.  The "remap" bits in the evaluation board
-are configured in order to boot from the internal ROM memory (in
-secure mode).
-
-The boot process as defined by the manufacturer executes external code
-(loaded from NAND or OneNAND) that that disables such "security" in
-order to run u-boot and later the kernel without constraints. Such
-code is a proprietary initial boot loader, called "X-Loader" (in case
-anyone wonders, it has no relations with other loaders with the same
-name and there is no GPL code inside the ST X-Loader).
-
-SDRAM configuration, PLL setup and initial loading from NAND is
-implemented in the X-Loader, so U-Boot is already running in SDRAM
-when control is handed over to it.
-
-The Makefile offers two different configurations to be used if you
-boot from Nand or OneNand.
-
-    make nhk8815_config
-    make nhk8815_onenand_config
-
-Both support OneNand and Nand. Since U-Boot, running in RAM, can't know
-where it was loaded from, the configurations differ in where the filesystem
-is looked for by default.
-
-
-On www.st.com/nomadik and on www.stnwireless.com there are documents,
-summary data and white papers on Nomadik. The full datasheet for
-STn8815 is not currently available on line but under specific request
-to the local ST sales offices.
diff --git a/board/st/nhk8815/nhk8815.c b/board/st/nhk8815/nhk8815.c
deleted file mode 100644 (file)
index 94d0f76..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * (C) Copyright 2005
- * STMicrolelctronics, <www.st.com>
- *
- * (C) Copyright 2004
- * ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <asm/io.h>
-#include <asm/arch/gpio.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_SHOW_BOOT_PROGRESS
-void show_boot_progress(int progress)
-{
-       printf("%i\n", progress);
-}
-#endif
-
-/*
- * Miscellaneous platform dependent initialisations
- */
-int board_init(void)
-{
-       gd->bd->bi_arch_number = MACH_TYPE_NOMADIK;
-       gd->bd->bi_boot_params = 0x00000100;
-       writel(0xC37800F0, NOMADIK_GPIO1_BASE + 0x20);
-       writel(0x00000000, NOMADIK_GPIO1_BASE + 0x24);
-       writel(0x00000000, NOMADIK_GPIO1_BASE + 0x28);
-       writel(readl(NOMADIK_SRC_BASE) | 0x8000, NOMADIK_SRC_BASE);
-
-       /* Set up SMCS1 for Ethernet: sram-like, enabled, timing values */
-       writel(0x0000305b, REG_FSMC_BCR1);
-       writel(0x00033f33, REG_FSMC_BTR1);
-
-       /* Set up SMCS0 for OneNand: sram-like once again */
-       writel(0x000030db, NOMADIK_FSMC_BASE + 0x00); /* FSMC_BCR0 */
-       writel(0x02100551, NOMADIK_FSMC_BASE + 0x04); /* FSMC_BTR0 */
-
-       icache_enable();
-       return 0;
-}
-
-int board_late_init(void)
-{
-       /* Set the two I2C gpio lines to be gpio high */
-       nmk_gpio_set(__SCL, 1); nmk_gpio_set(__SDA, 1);
-       nmk_gpio_dir(__SCL, 1); nmk_gpio_dir(__SDA, 1);
-       nmk_gpio_af(__SCL, GPIO_GPIO); nmk_gpio_af(__SDA, GPIO_GPIO);
-
-       /* Reset the I2C port expander, on GPIO77 */
-       nmk_gpio_af(77, GPIO_GPIO);
-       nmk_gpio_dir(77, 1);
-       nmk_gpio_set(77, 0);
-       udelay(10);
-       nmk_gpio_set(77, 1);
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       gd->ram_size = get_ram_size(CONFIG_SYS_SDRAM_BASE,
-                                   CONFIG_SYS_SDRAM_SIZE);
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
-       gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
-       gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-}
-
-#ifdef CONFIG_CMD_NET
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_SMC91111
-       rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
-#endif
-       return rc;
-}
-#endif
diff --git a/board/stx/stxgp3/Kconfig b/board/stx/stxgp3/Kconfig
deleted file mode 100644 (file)
index 910b31b..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_STXGP3
-
-config SYS_BOARD
-       default "stxgp3"
-
-config SYS_VENDOR
-       default "stx"
-
-config SYS_CONFIG_NAME
-       default "stxgp3"
-
-endif
diff --git a/board/stx/stxgp3/MAINTAINERS b/board/stx/stxgp3/MAINTAINERS
deleted file mode 100644 (file)
index bd5743c..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-STXGP3 BOARD
-#M:    Dan Malek <dan@embeddedalley.com>
-S:     Orphan (since 2014-06)
-F:     board/stx/stxgp3/
-F:     include/configs/stxgp3.h
-F:     configs/stxgp3_defconfig
diff --git a/board/stx/stxgp3/Makefile b/board/stx/stxgp3/Makefile
deleted file mode 100644 (file)
index 78e2d6c..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# (C) Copyright 2001-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  += stxgp3.o
-obj-y  += law.o
-obj-y  += tlb.o
-obj-y  += flash.o
-obj-$(CONFIG_SYS_FSL_DDR1) += ddr.o
diff --git a/board/stx/stxgp3/ddr.c b/board/stx/stxgp3/ddr.c
deleted file mode 100644 (file)
index 41d4cfe..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Copyright 2008 Freescale Semiconductor, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * Version 2 as published by the Free Software Foundation.
- */
-
-#include <common.h>
-
-#include <fsl_ddr_sdram.h>
-#include <fsl_ddr_dimm_params.h>
-
-void fsl_ddr_board_options(memctl_options_t *popts,
-                               dimm_params_t *pdimm,
-                               unsigned int ctrl_num)
-{
-       /*
-        * Factors to consider for CPO:
-        *      - frequency
-        *      - ddr1 vs. ddr2
-        */
-       popts->cpo_override = 0;
-
-       /*
-        * Factors to consider for write data delay:
-        *      - number of DIMMs
-        *
-        * 1 = 1/4 clock delay
-        * 2 = 1/2 clock delay
-        * 3 = 3/4 clock delay
-        * 4 = 1   clock delay
-        * 5 = 5/4 clock delay
-        * 6 = 3/2 clock delay
-        */
-       popts->write_data_delay = 3;
-
-       /* 2T timing enable */
-       popts->twot_en = 1;
-
-       /*
-        * Factors to consider for half-strength driver enable:
-        *      - number of DIMMs installed
-        */
-       popts->half_strength_driver_enable = 0;
-}
diff --git a/board/stx/stxgp3/flash.c b/board/stx/stxgp3/flash.c
deleted file mode 100644 (file)
index 61066a4..0000000
+++ /dev/null
@@ -1,499 +0,0 @@
-/*
- * (C) Copyright 2003, Dan Malek, Embedded Edge, LLC.  <dan@embeddededge.com>
- * Copied from ADS85xx.
- * Updated to support the Silicon Tx GP3 8560.  We should only find
- * two Intel 28F640 parts in 16-bit mode (i.e. 32-bit wide flash),
- * but I left other code here in case people order custom boards.
- *
- * (C) Copyright 2003 Motorola Inc.
- *  Xianghua Xiao,(X.Xiao@motorola.com)
- *
- * (C) Copyright 2000, 2001
- *  Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * (C) Copyright 2001, Stuart Hughes, Lineo Inc, stuarth@lineo.com
- * Add support the Sharp chips on the mpc8260ads.
- * I started with board/ip860/flash.c and made changes I found in
- * the MTD project by David Schleef.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-
-#if !defined(CONFIG_SYS_NO_FLASH)
-
-flash_info_t   flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips */
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-# ifndef  CONFIG_ENV_ADDR
-#  define CONFIG_ENV_ADDR      (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
-# endif
-# ifndef  CONFIG_ENV_SIZE
-#  define CONFIG_ENV_SIZE      CONFIG_ENV_SECT_SIZE
-# endif
-# ifndef  CONFIG_ENV_SECT_SIZE
-#  define CONFIG_ENV_SECT_SIZE  CONFIG_ENV_SIZE
-# endif
-#endif
-
-#undef DEBUG
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (vu_long *addr, flash_info_t *info);
-static int write_word (flash_info_t *info, ulong dest, ulong data);
-static int clear_block_lock_bit(vu_long * addr);
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       unsigned long size;
-       int i;
-
-       /* Init: enable write,
-        * or we cannot even write flash commands
-        */
-       for (i=0; i<CONFIG_SYS_MAX_FLASH_BANKS; ++i) {
-               flash_info[i].flash_id = FLASH_UNKNOWN;
-
-               /* set the default sector offset */
-       }
-
-       /* Static FLASH Bank configuration here - FIXME XXX */
-
-       size = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       if (flash_info[0].flash_id == FLASH_UNKNOWN) {
-               printf ("## Unknown FLASH on Bank 0 - Size = 0x%08lx = %ld MB\n",
-                       size, size<<20);
-       }
-
-       /* Re-do sizing to get full correct info */
-       size = flash_get_size((vu_long *)CONFIG_SYS_FLASH_BASE, &flash_info[0]);
-
-       flash_info[0].size = size;
-
-#if CONFIG_SYS_MONITOR_BASE >= CONFIG_SYS_FLASH_BASE
-       /* monitor protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_SYS_MONITOR_BASE,
-                     CONFIG_SYS_MONITOR_BASE+monitor_flash_len-1,
-                     &flash_info[0]);
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-       /* ENV protection ON by default */
-       flash_protect(FLAG_PROTECT_SET,
-                     CONFIG_ENV_ADDR,
-                     CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE-1,
-                     &flash_info[0]);
-#endif
-#endif
-       return (size);
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info  (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:   printf ("Intel ");              break;
-       case FLASH_MAN_SHARP:   printf ("Sharp ");              break;
-       default:                printf ("Unknown Vendor ");     break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F640C3T:   printf ("28F640C3T (64 Mbit x 2, 128 x 128k)\n");
-                               break;
-       default:                printf ("Unknown Chip Type\n");
-                               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-               info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i=0; i<info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     "
-               );
-       }
-       printf ("\n");
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-
-static ulong flash_get_size (vu_long *addr, flash_info_t *info)
-{
-       short i;
-       ulong value;
-       ulong base = (ulong)addr;
-       ulong sector_offset;
-
-#ifdef DEBUG
-       printf("Check flash at 0x%08x\n",(uint)addr);
-#endif
-       /* Write "Intelligent Identifier" command: read Manufacturer ID */
-       *addr = 0x90909090;
-       udelay(20);
-       asm("sync");
-
-       value = addr[0] & 0x00FF00FF;
-
-#ifdef DEBUG
-       printf("manufacturer=0x%x\n",(uint)value);
-#endif
-       switch (value) {
-       case MT_MANUFACT:       /* SHARP, MT or => Intel */
-       case INTEL_ALT_MANU:
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-       default:
-               printf("unknown manufacturer: %x\n", (unsigned int)value);
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               return (0);                     /* no or unknown flash  */
-       }
-
-       value = addr[1];             /* device ID            */
-
-#ifdef DEBUG
-       printf("deviceID=0x%x\n",(uint)value);
-#endif
-       switch (value) {
-
-       case (INTEL_ID_28F640C3T):
-               info->flash_id += FLASH_28F640C3T;
-               info->sector_count = 135;
-               info->size = 0x01000000;
-               sector_offset = 0x20000;
-               break;                          /* => 2x8 MB            */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               return (0);                     /* => no or unknown flash */
-
-       }
-
-       /* set up sector start address table
-        * The first 127 blocks are large, the last 8 are small.
-        */
-       for (i = 0; i < 127; i++) {
-               info->start[i] = base;
-               base += sector_offset;
-               /* Sectors are locked upon reset */
-               info->protect[i] = 0;
-       }
-       for (i = 127; i < 135; i++) {
-               info->start[i] = base;
-               base += 0x4000;
-               /* Sectors are locked upon reset */
-               info->protect[i] = 0;
-       }
-
-
-       /*
-        * Prevent writes to uninitialized FLASH.
-        */
-       if (info->flash_id != FLASH_UNKNOWN) {
-               addr = (vu_long *)info->start[0];
-               *addr = 0xFFFFFF;       /* reset bank to read array mode */
-               asm("sync");
-       }
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int    flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int flag, prot, sect;
-       ulong start, now, last;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       if (    ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_INTEL)
-            && ((info->flash_id & FLASH_VENDMASK) != FLASH_MAN_SHARP) ) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect=s_first; sect<=s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-#ifdef DEBUG
-       printf("\nFlash Erase:\n");
-#endif
-       /* Make Sure Block Lock Bit is not set. */
-       if(clear_block_lock_bit((vu_long *)(info->start[s_first]))){
-               return 1;
-       }
-
-       /* Start erase on unprotected sectors */
-#if defined(DEBUG)
-       printf("Begin to erase now,s_first=0x%x s_last=0x%x...\n",s_first,s_last);
-#endif
-       for (sect = s_first; sect<=s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       vu_long *addr = (vu_long *)(info->start[sect]);
-                       asm("sync");
-
-                       last = start = get_timer (0);
-
-                       /* Disable interrupts which might cause a timeout here */
-                       flag = disable_interrupts();
-
-                       /* Reset Array */
-                       *addr = 0xffffffff;
-                       asm("sync");
-                       /* Clear Status Register */
-                       *addr = 0x50505050;
-                       asm("sync");
-                       /* Single Block Erase Command */
-                       *addr = 0x20202020;
-                       asm("sync");
-                       /* Confirm */
-                       *addr = 0xD0D0D0D0;
-                       asm("sync");
-
-                       if((info->flash_id & FLASH_TYPEMASK) != FLASH_LH28F016SCT) {
-                           /* Resume Command, as per errata update */
-                           *addr = 0xD0D0D0D0;
-                           asm("sync");
-                       }
-
-                       /* re-enable interrupts if necessary */
-                       if (flag)
-                               enable_interrupts();
-
-                       /* wait at least 80us - let's wait 1 ms */
-                       udelay (1000);
-                       while ((*addr & 0x00800080) != 0x00800080) {
-                               if(*addr & 0x00200020){
-                                       printf("Error in Block Erase - Lock Bit may be set!\n");
-                                       printf("Status Register = 0x%X\n", (uint)*addr);
-                                       *addr = 0xFFFFFFFF;     /* reset bank */
-                                       asm("sync");
-                                       return 1;
-                               }
-                               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = 0xFFFFFFFF;     /* reset bank */
-                                       asm("sync");
-                                       return 1;
-                               }
-                               /* show that we're waiting */
-                               if ((now - last) > 1000) {      /* every second */
-                                       putc ('.');
-                                       last = now;
-                               }
-                       }
-
-                       /* reset to read mode */
-                       *addr = 0xFFFFFFFF;
-                       asm("sync");
-               }
-       }
-
-       printf ("flash erase done\n");
-       return 0;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp, data;
-       int i, l, rc;
-
-       wp = (addr & ~3);       /* get lower word aligned address */
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i=0, cp=wp; i<l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-               for (; i<4 && cnt>0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt==0 && i<4; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *)cp);
-               }
-
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp += 4;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       while (cnt >= 4) {
-               data = 0;
-               for (i=0; i<4; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_word(info, wp, data)) != 0) {
-                       return (rc);
-               }
-               wp  += 4;
-               cnt -= 4;
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i=0, cp=wp; i<4 && cnt>0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i<4; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *)cp);
-       }
-
-       return (write_word(info, wp, data));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_word (flash_info_t *info, ulong dest, ulong data)
-{
-       vu_long *addr = (vu_long *)dest;
-       ulong start, csr;
-       int flag;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*addr & data) != data) {
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       flag = disable_interrupts();
-
-       /* Write Command */
-       *addr = 0x10101010;
-       asm("sync");
-
-       /* Write Data */
-       *addr = data;
-
-       /* re-enable interrupts if necessary */
-       if (flag)
-               enable_interrupts();
-
-       /* data polling for D7 */
-       start = get_timer (0);
-       flag  = 0;
-
-       while (((csr = *addr) & 0x00800080) != 0x00800080) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       flag = 1;
-                       break;
-               }
-       }
-       if (csr & 0x40404040) {
-               printf ("CSR indicates write error (%08lx) at %08lx\n", csr, (ulong)addr);
-               flag = 1;
-       }
-
-       /* Clear Status Registers Command */
-       *addr = 0x50505050;
-       asm("sync");
-       /* Reset to read array mode */
-       *addr = 0xFFFFFFFF;
-       asm("sync");
-
-       return (flag);
-}
-
-/*-----------------------------------------------------------------------
- * Clear Block Lock Bit, returns:
- * 0 - OK
- * 1 - Timeout
- */
-
-static int clear_block_lock_bit(vu_long  * addr)
-{
-       ulong start, now;
-
-       /* Reset Array */
-       *addr = 0xffffffff;
-       asm("sync");
-       /* Clear Status Register */
-       *addr = 0x50505050;
-       asm("sync");
-
-       *addr = 0x60606060;
-       asm("sync");
-       *addr = 0xd0d0d0d0;
-       asm("sync");
-
-       start = get_timer (0);
-       while((*addr & 0x00800080) != 0x00800080){
-               if ((now=get_timer(start)) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                       printf ("Timeout on clearing Block Lock Bit\n");
-                       *addr = 0xFFFFFFFF;     /* reset bank */
-                       asm("sync");
-                       return 1;
-               }
-       }
-       return 0;
-}
-
-#endif /* !CONFIG_SYS_NO_FLASH */
diff --git a/board/stx/stxgp3/law.c b/board/stx/stxgp3/law.c
deleted file mode 100644 (file)
index 611fa4b..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Copyright 2008 Freescale Semiconductor, Inc.
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/fsl_law.h>
-#include <asm/mmu.h>
-
-/*
- * LAW(Local Access Window) configuration:
- *
- * 0x0000_0000     0x7fff_ffff     DDR                     2G
- * 0x8000_0000     0x9fff_ffff     PCI1 MEM                512M
- * 0xc000_0000     0xdfff_ffff     RapidIO                 512M
- * 0xe000_0000     0xe000_ffff     CCSR                    1M
- * 0xe200_0000     0xe2ff_ffff     PCI1 IO                 16M
- * 0xf000_0000     0xf7ff_ffff     SDRAM                   128M
- * 0xfc00_0000     0xfc00_ffff     Config Latch            64K
- * 0xff00_0000     0xffff_ffff     FLASH (boot bank)       16M
- *
- * Notes:
- *    CCSRBAR and L2-as-SRAM don't need a configured Local Access Window.
- *    If flash is 8M at default position (last 8M), no LAW needed.
- */
-
-struct law_entry law_table[] = {
-#ifndef CONFIG_SPD_EEPROM
-       SET_LAW(CONFIG_SYS_DDR_SDRAM_BASE, LAW_SIZE_128M, LAW_TRGT_IF_DDR),
-#endif
-       SET_LAW(CONFIG_SYS_PCI1_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI),
-       /* This is not so much the SDRAM map as it is the whole localbus map. */
-       SET_LAW(CONFIG_SYS_LBC_SDRAM_BASE, LAW_SIZE_256M, LAW_TRGT_IF_LBC),
-       SET_LAW(CONFIG_SYS_PCI1_IO_PHYS, LAW_SIZE_16M, LAW_TRGT_IF_PCI),
-       SET_LAW(CONFIG_SYS_RIO_MEM_BASE, LAW_SIZE_512M, LAW_TRGT_IF_RIO),
-};
-
-int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/stx/stxgp3/stxgp3.c b/board/stx/stxgp3/stxgp3.c
deleted file mode 100644 (file)
index c80d525..0000000
+++ /dev/null
@@ -1,331 +0,0 @@
-/*
- * (C) Copyright 2003, Embedded Edge, LLC
- * Dan Malek, <dan@embeddededge.com>
- * Copied from ADS85xx.
- * Updates for Silicon Tx GP3 8560
- *
- * (C) Copyright 2003,Motorola Inc.
- * Xianghua Xiao, (X.Xiao@motorola.com)
- *
- * (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <common.h>
-#include <pci.h>
-#include <asm/processor.h>
-#include <asm/mmu.h>
-#include <asm/immap_85xx.h>
-#include <fsl_ddr_sdram.h>
-#include <ioports.h>
-#include <asm/io.h>
-#include <spd_sdram.h>
-#include <miiphy.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {   /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 TxENB */
-       /* PA30 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 TxClav   */
-       /* PA29 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 TxSOC  */
-       /* PA28 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 RxENB */
-       /* PA27 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 RxSOC */
-       /* PA26 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 RxClav */
-       /* PA25 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[0] */
-       /* PA24 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[1] */
-       /* PA23 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[2] */
-       /* PA22 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[3] */
-       /* PA21 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[4] */
-       /* PA20 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[5] */
-       /* PA19 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[6] */
-       /* PA18 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[7] */
-       /* PA17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[7] */
-       /* PA16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[6] */
-       /* PA15 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[5] */
-       /* PA14 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[4] */
-       /* PA13 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[3] */
-       /* PA12 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[2] */
-       /* PA11 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[1] */
-       /* PA10 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[0] */
-       /* PA9  */ {   0,   1,   1,   1,   0,   0   }, /* FCC1 L1TXD */
-       /* PA8  */ {   0,   1,   1,   0,   0,   0   }, /* FCC1 L1RXD */
-       /* PA7  */ {   0,   0,   0,   1,   0,   0   }, /* PA7 */
-       /* PA6  */ {   0,   1,   1,   1,   0,   0   }, /* TDM A1 L1RSYNC */
-       /* PA5  */ {   0,   0,   0,   1,   0,   0   }, /* PA5 */
-       /* PA4  */ {   0,   0,   0,   1,   0,   0   }, /* PA4 */
-       /* PA3  */ {   0,   0,   0,   1,   0,   0   }, /* PA3 */
-       /* PA2  */ {   0,   0,   0,   1,   0,   0   }, /* PA2 */
-       /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* FREERUN */
-       /* PA0  */ {   0,   0,   0,   1,   0,   0   }  /* PA0 */
-    },
-
-    /* Port B configuration */
-    {   /*            conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_DV */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 MII TX_EN */
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_ER */
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[3] */
-       /* PB17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RX_DIV */
-       /* PB16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RX_ERR */
-       /* PB15 */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TX_ERR */
-       /* PB14 */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TX_EN */
-       /* PB13 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:COL */
-       /* PB12 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:CRS */
-       /* PB11 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB10 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB9  */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB8  */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB7  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB6  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB5  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB4  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    },
-
-    /* Port C */
-    {   /*            conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   1,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   1,   0,   0   }, /* PC30 */
-       /* PC29 */ {   0,   1,   1,   0,   0,   0   }, /* SCC1 EN *CLSN */
-       /* PC28 */ {   0,   0,   0,   1,   0,   0   }, /* PC28 */
-       /* PC27 */ {   0,   0,   0,   1,   0,   0   }, /* UART Clock in */
-       /* PC26 */ {   0,   0,   0,   1,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   1,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   1,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   1,   0,   1,   0,   0   }, /* ATMTFCLK */
-       /* PC22 */ {   0,   1,   0,   0,   0,   0   }, /* ATMRFCLK */
-       /* PC21 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN RXCLK */
-       /* PC20 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN TXCLK */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_CLK CLK13 */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC Tx Clock (CLK14) */
-       /* PC17 */ {   0,   0,   0,   1,   0,   0   }, /* PC17 */
-       /* PC16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC Tx Clock (CLK16) */
-       /* PC15 */ {   0,   1,   0,   0,   0,   0   }, /* PC15 */
-       /* PC14 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN *CD */
-       /* PC13 */ {   0,   0,   0,   1,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   1,   0,   1,   0,   0   }, /* PC12 */
-       /* PC11 */ {   0,   0,   0,   1,   0,   0   }, /* LXT971 transmit control */
-       /* PC10 */ {   0,   0,   0,   1,   0,   0   }, /* FETHMDC */
-       /* PC9  */ {   0,   0,   0,   0,   0,   0   }, /* FETHMDIO */
-       /* PC8  */ {   0,   0,   0,   1,   0,   0   }, /* PC8 */
-       /* PC7  */ {   0,   0,   0,   1,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   1,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   1,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   1,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   1,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   1,   0,   1   }, /* ENET FDE */
-       /* PC1  */ {   0,   0,   0,   1,   0,   0   }, /* ENET DSQE */
-       /* PC0  */ {   0,   0,   0,   1,   0,   0   }, /* ENET LBK */
-    },
-
-    /* Port D */
-    {   /*            conf ppar psor pdir podr pdat */
-       /* PD31 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN RxD */
-       /* PD30 */ {   0,   1,   1,   1,   0,   0   }, /* SCC1 EN TxD */
-       /* PD29 */ {   0,   1,   0,   1,   0,   0   }, /* SCC1 EN TENA */
-       /* PD28 */ {   1,   1,   0,   0,   0,   0   }, /* SCC2 RxD */
-       /* PD27 */ {   1,   1,   0,   1,   0,   0   }, /* SCC2 TxD */
-       /* PD26 */ {   0,   0,   0,   1,   0,   0   }, /* PD26 */
-       /* PD25 */ {   0,   0,   0,   1,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   1,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   1,   0,   0   }, /* PD23 */
-       /* PD22 */ {   0,   0,   0,   1,   0,   0   }, /* PD22 */
-       /* PD21 */ {   0,   0,   0,   1,   0,   0   }, /* PD21 */
-       /* PD20 */ {   0,   0,   0,   1,   0,   0   }, /* PD20 */
-       /* PD19 */ {   0,   0,   0,   1,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   1,   0,   0   }, /* PD18 */
-       /* PD17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXPRTY */
-       /* PD16 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXPRTY */
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   0,   0   }, /* I2C CLK */
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   0,   1,   0,   1,   0,   0   }, /* SMC1 TXD */
-       /* PD8  */ {   0,   1,   0,   0,   0,   0   }, /* SMC1 RXD */
-       /* PD7  */ {   0,   0,   0,   1,   0,   1   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   1,   0,   1   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   1,   0,   1   }, /* PD5 */
-       /* PD4  */ {   0,   0,   0,   1,   0,   1   }, /* PD4 */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    }
-};
-
-static uint64_t        next_led_update;
-static uint            led_bit;
-
-int
-board_early_init_f(void)
-{
-#if defined(CONFIG_PCI)
-    volatile ccsr_pcix_t *pci = (void *)(CONFIG_SYS_MPC85xx_PCIX_ADDR);
-
-    pci->peer &= 0xfffffffdf; /* disable master abort */
-#endif
-       return 0;
-}
-
-void
-reset_phy(void)
-{
-       volatile uint *blatch;
-
-       blatch = (volatile uint *)CONFIG_SYS_LBC_LCLDEVS_BASE;
-
-       /* reset Giga bit Ethernet port if needed here */
-
-       *blatch &= ~0x000000c0;
-       udelay(100);
-       *blatch = 0x000000c1;   /* Light one led, too */
-       udelay(1000);
-
-#if 0  /* This is the port we really want to use for debugging. */
-       /* reset the CPM FEC port */
-#if (CONFIG_ETHER_INDEX == 2)
-       bcsr->bcsr2 &= ~FETH2_RST;
-       udelay(2);
-       bcsr->bcsr2 |=  FETH2_RST;
-       udelay(1000);
-#elif (CONFIG_ETHER_INDEX == 3)
-       bcsr->bcsr3 &= ~FETH3_RST;
-       udelay(2);
-       bcsr->bcsr3 |=  FETH3_RST;
-       udelay(1000);
-#endif
-#if defined(CONFIG_MII) && defined(CONFIG_ETHER_ON_FCC)
-       /* reset PHY */
-       miiphy_reset("FCC1", 0x0);
-
-       /* change PHY address to 0x02 */
-       bb_miiphy_write(NULL, 0, MII_MIPSCR, 0xf028);
-
-       bb_miiphy_write(NULL, 0x02, MII_BMCR,
-                       BMCR_ANENABLE | BMCR_ANRESTART);
-#endif /* CONFIG_MII */
-#endif
-}
-
-int
-checkboard(void)
-{
-       printf ("Board: Silicon Tx GPPP 8560 Board\n");
-       return (0);
-}
-
-/* Blinkin' LEDS for Robert.
-*/
-void
-show_activity(int flag)
-{
-       volatile uint *blatch;
-
-       if (next_led_update > get_ticks())
-               return;
-
-       blatch = (volatile uint *)CONFIG_SYS_LBC_LCLDEVS_BASE;
-
-       led_bit >>= 1;
-       if (led_bit == 0)
-               led_bit = 0x08;
-       *blatch = (0xc0 | led_bit);
-       eieio();
-       next_led_update += (get_tbclk() / 4);
-}
-
-
-#if defined(CONFIG_SYS_DRAM_TEST)
-int testdram (void)
-{
-       uint *pstart = (uint *) CONFIG_SYS_MEMTEST_START;
-       uint *pend = (uint *) CONFIG_SYS_MEMTEST_END;
-       uint *p;
-
-       printf("SDRAM test phase 1:\n");
-       for (p = pstart; p < pend; p++)
-               *p = 0xaaaaaaaa;
-
-       for (p = pstart; p < pend; p++) {
-               if (*p != 0xaaaaaaaa) {
-                       printf ("SDRAM test fails at: %08x\n", (uint) p);
-                       return 1;
-               }
-       }
-
-       printf("SDRAM test phase 2:\n");
-       for (p = pstart; p < pend; p++)
-               *p = 0x55555555;
-
-       for (p = pstart; p < pend; p++) {
-               if (*p != 0x55555555) {
-                       printf ("SDRAM test fails at: %08x\n", (uint) p);
-                       return 1;
-               }
-       }
-
-       printf("SDRAM test passed.\n");
-       return 0;
-}
-#endif
-
-#if defined(CONFIG_PCI)
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_stxgp3_config_table[] = {
-    { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-      PCI_IDSEL_NUMBER, PCI_ANY_ID,
-      pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                  PCI_ENET0_MEMADDR,
-                                  PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER
-      } },
-    { }
-};
-#endif
-
-
-static struct pci_controller hose = {
-#ifndef CONFIG_PCI_PNP
-       config_table: pci_stxgp3_config_table,
-#endif
-};
-
-#endif /* CONFIG_PCI */
-
-
-void
-pci_init_board(void)
-{
-#ifdef CONFIG_PCI
-       pci_mpc85xx_init(&hose);
-#endif /* CONFIG_PCI */
-}
diff --git a/board/stx/stxgp3/tlb.c b/board/stx/stxgp3/tlb.c
deleted file mode 100644 (file)
index 7c877b2..0000000
+++ /dev/null
@@ -1,114 +0,0 @@
-/*
- * Copyright 2008 Freescale Semiconductor, Inc.
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/mmu.h>
-
-struct fsl_e_tlb_entry tlb_table[] = {
-       /* TLB 0 - for temp stack in cache */
-       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 0, BOOKE_PAGESZ_4K, 0),
-       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 0, BOOKE_PAGESZ_4K, 0),
-       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 0, BOOKE_PAGESZ_4K, 0),
-       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 0, BOOKE_PAGESZ_4K, 0),
-
-       /*
-        * TLB 0:       16M     Non-cacheable, guarded
-        * 0xff000000   16M     FLASH
-        * Out of reset this entry is only 4K.
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 0, BOOKE_PAGESZ_16M, 1),
-
-       /*
-        * TLB 1:       256M    Non-cacheable, guarded
-        * 0x80000000   256M    PCI1 MEM First half
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS, CONFIG_SYS_PCI1_MEM_PHYS,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 1, BOOKE_PAGESZ_256M, 1),
-
-       /*
-        * TLB 2:       256M    Non-cacheable, guarded
-        * 0x90000000   256M    PCI1 MEM Second half
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 2, BOOKE_PAGESZ_256M, 1),
-
-       /*
-        * TLB 3:       256M    Non-cacheable, guarded
-        * 0xc0000000   256M    Rapid IO MEM First half
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_RIO_MEM_BASE, CONFIG_SYS_RIO_MEM_BASE,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 3, BOOKE_PAGESZ_256M, 1),
-
-       /*
-        * TLB 4:       256M    Non-cacheable, guarded
-        * 0xd0000000   256M    Rapid IO MEM Second half
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_RIO_MEM_BASE + 0x10000000, CONFIG_SYS_RIO_MEM_BASE + 0x10000000,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 4, BOOKE_PAGESZ_256M, 1),
-
-       /*
-        * TLB 5:       64M     Non-cacheable, guarded
-        * 0xe000_0000  1M      CCSRBAR
-        * 0xe200_0000  16M     PCI1 IO
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 5, BOOKE_PAGESZ_64M, 1),
-
-       /*
-        * TLB 6:       64M     Cacheable, non-guarded
-        * 0xf000_0000  64M     LBC SDRAM
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_LBC_SDRAM_BASE, CONFIG_SYS_LBC_SDRAM_BASE,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 6, BOOKE_PAGESZ_64M, 1),
-
-       /*
-        * TLB 7:       16K     Non-cacheable, guarded
-        * 0xfc000000   16K     Configuration Latch register
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_LBC_LCLDEVS_BASE, CONFIG_SYS_LBC_LCLDEVS_BASE,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 7, BOOKE_PAGESZ_16K, 1),
-
-#if !defined(CONFIG_SPD_EEPROM)
-       /*
-        * TLB 8, 9:    128M    DDR
-        * 0x00000000   64M     DDR System memory
-        * 0x04000000   64M     DDR System memory
-        * Without SPD EEPROM configured DDR, this must be setup manually.
-        * Make sure the TLB count at the top of this table is correct.
-        * Likely it needs to be increased by two for these entries.
-        */
-#error("Update the number of table entries in tlb1_entry")
-       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE, CONFIG_SYS_DDR_SDRAM_BASE,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 8, BOOKE_PAGESZ_64M, 1),
-
-       SET_TLB_ENTRY(1, CONFIG_SYS_DDR_SDRAM_BASE + 0x4000000, CONFIG_SYS_DDR_SDRAM_BASE + 0x4000000,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 9, BOOKE_PAGESZ_64M, 1),
-#endif
-};
-
-int num_tlb_entries = ARRAY_SIZE(tlb_table);
diff --git a/board/stx/stxssa/Kconfig b/board/stx/stxssa/Kconfig
deleted file mode 100644 (file)
index bd47b04..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_STXSSA
-
-config SYS_BOARD
-       default "stxssa"
-
-config SYS_VENDOR
-       default "stx"
-
-config SYS_CONFIG_NAME
-       default "stxssa"
-
-endif
diff --git a/board/stx/stxssa/MAINTAINERS b/board/stx/stxssa/MAINTAINERS
deleted file mode 100644 (file)
index b7cc89b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-STXSSA BOARD
-#M:    Dan Malek <dan@embeddedalley.com>
-S:     Orphan (since 2014-06)
-F:     board/stx/stxssa/
-F:     include/configs/stxssa.h
-F:     configs/stxssa_defconfig
-F:     configs/stxssa_4M_defconfig
diff --git a/board/stx/stxssa/Makefile b/board/stx/stxssa/Makefile
deleted file mode 100644 (file)
index b1d4b0a..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2001
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  += stxssa.o
-obj-y  += law.o
-obj-y  += tlb.o
-obj-$(CONFIG_SYS_FSL_DDR1) += ddr.o
diff --git a/board/stx/stxssa/ddr.c b/board/stx/stxssa/ddr.c
deleted file mode 100644 (file)
index 1ccd4c5..0000000
+++ /dev/null
@@ -1,47 +0,0 @@
-/*
- * Copyright 2008 Freescale Semiconductor, Inc.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License
- * Version 2 as published by the Free Software Foundation.
- */
-
-#include <common.h>
-#include <i2c.h>
-
-#include <fsl_ddr_sdram.h>
-#include <fsl_ddr_dimm_params.h>
-
-void fsl_ddr_board_options(memctl_options_t *popts,
-                               dimm_params_t *pdimm,
-                               unsigned int ctrl_num)
-{
-       /*
-        * Factors to consider for CPO:
-        *      - frequency
-        *      - ddr1 vs. ddr2
-        */
-       popts->cpo_override = 0;
-
-       /*
-        * Factors to consider for write data delay:
-        *      - number of DIMMs
-        *
-        * 1 = 1/4 clock delay
-        * 2 = 1/2 clock delay
-        * 3 = 3/4 clock delay
-        * 4 = 1   clock delay
-        * 5 = 5/4 clock delay
-        * 6 = 3/2 clock delay
-        */
-       popts->write_data_delay = 3;
-
-       /* 2T timing enable */
-       popts->twot_en = 1;
-
-       /*
-        * Factors to consider for half-strength driver enable:
-        *      - number of DIMMs installed
-        */
-       popts->half_strength_driver_enable = 0;
-}
diff --git a/board/stx/stxssa/law.c b/board/stx/stxssa/law.c
deleted file mode 100644 (file)
index 72373f5..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-/*
- * Copyright 2008 Freescale Semiconductor, Inc.
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/fsl_law.h>
-#include <asm/mmu.h>
-
-/*
- * LAW(Local Access Window) configuration:
- *
- * 0x0000_0000     0x7fff_ffff     DDR                     2G
- * 0x8000_0000     0x9fff_ffff     PCI1 MEM                512M
- * 0xa000_0000     0xbfff_ffff     PCI2 MEM                512M
- * 0xe000_0000     0xe000_ffff     CCSR                    1M
- * 0xe200_0000     0xe2ff_ffff     PCI1 IO                 16M
- * 0xe300_0000     0xe3ff_ffff     PCI2 IO                 16M
- * 0xf000_0000     0xfaff_ffff     Local bus               128M
- * 0xfb00_0000     0xfb00_ffff     Config Latch            64K
- * 0xfc00_0000     0xffff_ffff     FLASH (boot bank)       64M
- *
- * Notes:
- *    CCSRBAR and L2-as-SRAM don't need a configured Local Access Window.
- *    If flash is 8M at default position (last 8M), no LAW needed.
- */
-
-struct law_entry law_table[] = {
-#ifndef CONFIG_SPD_EEPROM
-       SET_LAW(CONFIG_SYS_DDR_SDRAM_BASE, LAW_SIZE_128M, LAW_TRGT_IF_DDR),
-#endif
-       SET_LAW(CONFIG_SYS_PCI1_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_1),
-       SET_LAW(CONFIG_SYS_PCI2_MEM_PHYS, LAW_SIZE_512M, LAW_TRGT_IF_PCI_2),
-       SET_LAW(CONFIG_SYS_PCI1_IO_PHYS, LAW_SIZE_16M, LAW_TRGT_IF_PCI_1),
-       SET_LAW(CONFIG_SYS_PCI2_IO_PHYS, LAW_SIZE_16M, LAW_TRGT_IF_PCI_2),
-       /* Map the whole localbus, including flash and reset latch. */
-       SET_LAW(CONFIG_SYS_LBC_OPTION_BASE, LAW_SIZE_256M, LAW_TRGT_IF_LBC),
-};
-
-int num_law_entries = ARRAY_SIZE(law_table);
diff --git a/board/stx/stxssa/stxssa.c b/board/stx/stxssa/stxssa.c
deleted file mode 100644 (file)
index 6e4eed8..0000000
+++ /dev/null
@@ -1,370 +0,0 @@
-/*
- * (C) Copyright 2005, Embedded Alley Solutions, Inc.
- * Dan Malek, <dan@embeddedalley.com>
- * Copied from STx GP3.
- * Updates for Silicon Tx GP3 SSA
- *
- * (C) Copyright 2003,Motorola Inc.
- * Xianghua Xiao, (X.Xiao@motorola.com)
- *
- * (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#include <common.h>
-#include <pci.h>
-#include <asm/processor.h>
-#include <asm/mmu.h>
-#include <asm/immap_85xx.h>
-#include <asm/fsl_pci.h>
-#include <fsl_ddr_sdram.h>
-#include <ioports.h>
-#include <asm/io.h>
-#include <spd_sdram.h>
-#include <miiphy.h>
-#include <netdev.h>
-
-/*
- * I/O Port configuration table
- *
- * if conf is 1, then that port pin will be configured at boot time
- * according to the five values podr/pdir/ppar/psor/pdat for that entry
- */
-
-const iop_conf_t iop_conf_tab[4][32] = {
-
-    /* Port A configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PA31 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 TxENB */
-       /* PA30 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 TxClav   */
-       /* PA29 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 TxSOC  */
-       /* PA28 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 RxENB */
-       /* PA27 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 RxSOC */
-       /* PA26 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 RxClav */
-       /* PA25 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[0] */
-       /* PA24 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[1] */
-       /* PA23 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[2] */
-       /* PA22 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[3] */
-       /* PA21 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[4] */
-       /* PA20 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[5] */
-       /* PA19 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[6] */
-       /* PA18 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXD[7] */
-       /* PA17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[7] */
-       /* PA16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[6] */
-       /* PA15 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[5] */
-       /* PA14 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[4] */
-       /* PA13 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[3] */
-       /* PA12 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[2] */
-       /* PA11 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[1] */
-       /* PA10 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXD[0] */
-       /* PA9  */ {   0,   1,   1,   1,   0,   0   }, /* FCC1 L1TXD */
-       /* PA8  */ {   0,   1,   1,   0,   0,   0   }, /* FCC1 L1RXD */
-       /* PA7  */ {   0,   0,   0,   1,   0,   0   }, /* PA7 */
-       /* PA6  */ {   0,   1,   1,   1,   0,   0   }, /* TDM A1 L1RSYNC */
-       /* PA5  */ {   0,   0,   0,   1,   0,   0   }, /* PA5 */
-       /* PA4  */ {   0,   0,   0,   1,   0,   0   }, /* PA4 */
-       /* PA3  */ {   0,   0,   0,   1,   0,   0   }, /* PA3 */
-       /* PA2  */ {   0,   0,   0,   1,   0,   0   }, /* PA2 */
-       /* PA1  */ {   1,   0,   0,   0,   0,   0   }, /* FREERUN */
-       /* PA0  */ {   0,   0,   0,   1,   0,   0   }  /* PA0 */
-    },
-
-    /* Port B configuration */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PB31 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TX_ER */
-       /* PB30 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_DV */
-       /* PB29 */ {   1,   1,   1,   1,   0,   0   }, /* FCC2 MII TX_EN */
-       /* PB28 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_ER */
-       /* PB27 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII COL */
-       /* PB26 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII CRS */
-       /* PB25 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[3] */
-       /* PB24 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[2] */
-       /* PB23 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[1] */
-       /* PB22 */ {   1,   1,   0,   1,   0,   0   }, /* FCC2 MII TxD[0] */
-       /* PB21 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[0] */
-       /* PB20 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[1] */
-       /* PB19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[2] */
-       /* PB18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RxD[3] */
-       /* PB17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RX_DIV */
-       /* PB16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RX_ERR */
-       /* PB15 */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TX_ERR */
-       /* PB14 */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TX_EN */
-       /* PB13 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:COL */
-       /* PB12 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:CRS */
-       /* PB11 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB10 */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB9  */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB8  */ {   0,   1,   0,   0,   0,   0   }, /* FCC3:RXD */
-       /* PB7  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB6  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB5  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB4  */ {   0,   1,   0,   1,   0,   0   }, /* FCC3:TXD */
-       /* PB3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PB0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    },
-
-    /* Port C */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PC31 */ {   0,   0,   0,   1,   0,   0   }, /* PC31 */
-       /* PC30 */ {   0,   0,   0,   1,   0,   0   }, /* PC30 */
-       /* PC29 */ {   0,   1,   1,   0,   0,   0   }, /* SCC1 EN *CLSN */
-       /* PC28 */ {   0,   0,   0,   1,   0,   0   }, /* PC28 */
-       /* PC27 */ {   0,   0,   0,   1,   0,   0   }, /* UART Clock in */
-       /* PC26 */ {   0,   0,   0,   1,   0,   0   }, /* PC26 */
-       /* PC25 */ {   0,   0,   0,   1,   0,   0   }, /* PC25 */
-       /* PC24 */ {   0,   0,   0,   1,   0,   0   }, /* PC24 */
-       /* PC23 */ {   0,   1,   0,   1,   0,   0   }, /* ATMTFCLK */
-       /* PC22 */ {   0,   1,   0,   0,   0,   0   }, /* ATMRFCLK */
-       /* PC21 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN RXCLK */
-       /* PC20 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN TXCLK */
-       /* PC19 */ {   1,   1,   0,   0,   0,   0   }, /* FCC2 MII RX_CLK CLK13 */
-       /* PC18 */ {   1,   1,   0,   0,   0,   0   }, /* FCC Tx Clock (CLK14) */
-       /* PC17 */ {   0,   0,   0,   1,   0,   0   }, /* PC17 */
-       /* PC16 */ {   0,   1,   0,   0,   0,   0   }, /* FCC Tx Clock (CLK16) */
-       /* PC15 */ {   0,   1,   0,   0,   0,   0   }, /* PC15 */
-       /* PC14 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN *CD */
-       /* PC13 */ {   0,   0,   0,   1,   0,   0   }, /* PC13 */
-       /* PC12 */ {   0,   1,   0,   1,   0,   0   }, /* PC12 */
-       /* PC11 */ {   0,   0,   0,   1,   0,   0   }, /* LXT971 transmit control */
-       /* PC10 */ {   0,   0,   0,   1,   0,   0   }, /* FETHMDC */
-       /* PC9  */ {   0,   0,   0,   0,   0,   0   }, /* FETHMDIO */
-       /* PC8  */ {   0,   0,   0,   1,   0,   0   }, /* PC8 */
-       /* PC7  */ {   0,   0,   0,   1,   0,   0   }, /* PC7 */
-       /* PC6  */ {   0,   0,   0,   1,   0,   0   }, /* PC6 */
-       /* PC5  */ {   0,   0,   0,   1,   0,   0   }, /* PC5 */
-       /* PC4  */ {   0,   0,   0,   1,   0,   0   }, /* PC4 */
-       /* PC3  */ {   0,   0,   0,   1,   0,   0   }, /* PC3 */
-       /* PC2  */ {   0,   0,   0,   1,   0,   1   }, /* ENET FDE */
-       /* PC1  */ {   0,   0,   0,   1,   0,   0   }, /* ENET DSQE */
-       /* PC0  */ {   0,   0,   0,   1,   0,   0   }, /* ENET LBK */
-    },
-
-    /* Port D */
-    {  /*            conf ppar psor pdir podr pdat */
-       /* PD31 */ {   0,   1,   0,   0,   0,   0   }, /* SCC1 EN RxD */
-       /* PD30 */ {   0,   1,   1,   1,   0,   0   }, /* SCC1 EN TxD */
-       /* PD29 */ {   0,   1,   0,   1,   0,   0   }, /* SCC1 EN TENA */
-       /* PD28 */ {   1,   1,   0,   0,   0,   0   }, /* SCC2 RxD */
-       /* PD27 */ {   1,   1,   0,   1,   0,   0   }, /* SCC2 TxD */
-       /* PD26 */ {   0,   0,   0,   1,   0,   0   }, /* PD26 */
-       /* PD25 */ {   0,   0,   0,   1,   0,   0   }, /* PD25 */
-       /* PD24 */ {   0,   0,   0,   1,   0,   0   }, /* PD24 */
-       /* PD23 */ {   0,   0,   0,   1,   0,   0   }, /* PD23 */
-       /* PD22 */ {   0,   0,   0,   1,   0,   0   }, /* PD22 */
-       /* PD21 */ {   0,   0,   0,   1,   0,   0   }, /* PD21 */
-       /* PD20 */ {   0,   0,   0,   1,   0,   0   }, /* PD20 */
-       /* PD19 */ {   0,   0,   0,   1,   0,   0   }, /* PD19 */
-       /* PD18 */ {   0,   0,   0,   1,   0,   0   }, /* PD18 */
-       /* PD17 */ {   0,   1,   0,   0,   0,   0   }, /* FCC1 ATMRXPRTY */
-       /* PD16 */ {   0,   1,   0,   1,   0,   0   }, /* FCC1 ATMTXPRTY */
-       /* PD15 */ {   1,   1,   1,   0,   1,   0   }, /* I2C SDA */
-       /* PD14 */ {   1,   1,   1,   0,   0,   0   }, /* I2C CLK */
-       /* PD13 */ {   0,   0,   0,   0,   0,   0   }, /* PD13 */
-       /* PD12 */ {   0,   0,   0,   0,   0,   0   }, /* PD12 */
-       /* PD11 */ {   0,   0,   0,   0,   0,   0   }, /* PD11 */
-       /* PD10 */ {   0,   0,   0,   0,   0,   0   }, /* PD10 */
-       /* PD9  */ {   0,   1,   0,   1,   0,   0   }, /* SMC1 TXD */
-       /* PD8  */ {   0,   1,   0,   0,   0,   0   }, /* SMC1 RXD */
-       /* PD7  */ {   0,   0,   0,   1,   0,   1   }, /* PD7 */
-       /* PD6  */ {   0,   0,   0,   1,   0,   1   }, /* PD6 */
-       /* PD5  */ {   0,   0,   0,   1,   0,   1   }, /* PD5 */
-       /* PD4  */ {   0,   0,   0,   1,   0,   1   }, /* PD4 */
-       /* PD3  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD2  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD1  */ {   0,   0,   0,   0,   0,   0   }, /* pin doesn't exist */
-       /* PD0  */ {   0,   0,   0,   0,   0,   0   }  /* pin doesn't exist */
-    }
-};
-
-static uint64_t        next_led_update;
-static uint            led_bit;
-
-void
-reset_phy(void)
-{
-       volatile uint *blatch;
-#if 0
-       int     i;
-#endif
-       blatch = (volatile uint *)CONFIG_SYS_LBC_CFGLATCH_BASE;
-
-       /* reset Giga bit Ethernet port if needed here */
-
-#if 1
-       *blatch &= ~0x000000c0;
-       udelay(100);
-#else
-       *blatch = 0;
-       asm("eieio");
-       for (i=0; i<1000; i++)
-               udelay(1000);
-#endif
-       *blatch = 0x000000c1;   /* Light one led, too */
-       udelay(1000);
-
-#if 0  /* This is the port we really want to use for debugging. */
-       /* reset the CPM FEC port */
-#if (CONFIG_ETHER_INDEX == 2)
-       bcsr->bcsr2 &= ~FETH2_RST;
-       udelay(2);
-       bcsr->bcsr2 |=  FETH2_RST;
-       udelay(1000);
-#elif (CONFIG_ETHER_INDEX == 3)
-       bcsr->bcsr3 &= ~FETH3_RST;
-       udelay(2);
-       bcsr->bcsr3 |=  FETH3_RST;
-       udelay(1000);
-#endif
-#if defined(CONFIG_MII) && defined(CONFIG_ETHER_ON_FCC)
-       /* reset PHY */
-       miiphy_reset("FCC1", 0x0);
-
-       /* change PHY address to 0x02 */
-       bb_miiphy_write(NULL, 0, MII_MIPSCR, 0xf028);
-
-       bb_miiphy_write(NULL, 0x02, MII_BMCR,
-                       BMCR_ANENABLE | BMCR_ANRESTART);
-#endif /* CONFIG_MII */
-#endif
-}
-
-#ifdef CONFIG_OF_BOARD_SETUP
-int ft_board_setup(void *blob, bd_t *bd)
-{
-       ft_cpu_setup (blob, bd);
-
-       return 0;
-}
-#endif /* CONFIG_OF_BOARD_SETUP */
-
-int
-board_early_init_f(void)
-{
-#if defined(CONFIG_PCI)
-       volatile ccsr_pcix_t *pci = (void *)(CONFIG_SYS_MPC85xx_PCIX_ADDR);
-
-       pci->peer &= 0xffffffdf; /* disable master abort */
-#endif
-
-       /* Why is the phy reset done _after_ the ethernet
-        * initialization in arch/powerpc/lib/board.c?
-        * Do it here so it's done before the TSECs are used.
-        */
-       reset_phy();
-
-       return 0;
-}
-
-int
-checkboard(void)
-{
-       printf ("Board: Silicon Tx GPPP SSA Board\n");
-       return (0);
-}
-
-/* Blinkin' LEDS for Robert.
-*/
-void
-show_activity(int flag)
-{
-       volatile uint *blatch;
-
-       if (next_led_update > get_ticks())
-               return;
-
-       blatch = (volatile uint *)CONFIG_SYS_LBC_CFGLATCH_BASE;
-
-       led_bit >>= 1;
-       if (led_bit == 0)
-               led_bit = 0x08;
-       *blatch = (0xc0 | led_bit);
-       eieio();
-       next_led_update += (get_tbclk() / 4);
-}
-
-#if defined(CONFIG_SYS_DRAM_TEST)
-int testdram (void)
-{
-       uint *pstart = (uint *) CONFIG_SYS_MEMTEST_START;
-       uint *pend = (uint *) CONFIG_SYS_MEMTEST_END;
-       uint *p;
-
-       printf("SDRAM test phase 1:\n");
-       for (p = pstart; p < pend; p++)
-               *p = 0xaaaaaaaa;
-
-       for (p = pstart; p < pend; p++) {
-               if (*p != 0xaaaaaaaa) {
-                       printf ("SDRAM test fails at: %08x\n", (uint) p);
-                       return 1;
-               }
-       }
-
-       printf("SDRAM test phase 2:\n");
-       for (p = pstart; p < pend; p++)
-               *p = 0x55555555;
-
-       for (p = pstart; p < pend; p++) {
-               if (*p != 0x55555555) {
-                       printf ("SDRAM test fails at: %08x\n", (uint) p);
-                       return 1;
-               }
-       }
-
-       printf("SDRAM test passed.\n");
-       return 0;
-}
-#endif
-
-#if defined(CONFIG_PCI)
-
-/*
- * Initialize PCI Devices, report devices found.
- */
-
-#ifndef CONFIG_PCI_PNP
-static struct pci_config_table pci_stxgp3_config_table[] = {
-    { PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID, PCI_ANY_ID,
-      PCI_IDSEL_NUMBER, PCI_ANY_ID,
-      pci_cfgfunc_config_device, { PCI_ENET0_IOADDR,
-                                  PCI_ENET0_MEMADDR,
-                                  PCI_COMMAND_MEMORY | PCI_COMMAND_MASTER
-      } },
-    { }
-};
-#endif
-
-
-static struct pci_controller hose[] = {
-#ifndef CONFIG_PCI_PNP
-       { config_table: pci_stxgp3_config_table,},
-#else
-       {},
-#endif
-#ifdef CONFIG_MPC85XX_PCI2
-       {},
-#endif
-};
-
-#endif /* CONFIG_PCI */
-
-
-void
-pci_init_board(void)
-{
-#ifdef CONFIG_PCI
-       extern void pci_mpc85xx_init(struct pci_controller *hose);
-
-       pci_mpc85xx_init(hose);
-#endif /* CONFIG_PCI */
-}
-
-int board_eth_init(bd_t *bis)
-{
-       cpu_eth_init(bis);      /* Initialize TSECs first */
-       return pci_eth_init(bis);
-}
diff --git a/board/stx/stxssa/tlb.c b/board/stx/stxssa/tlb.c
deleted file mode 100644 (file)
index 49c630c..0000000
+++ /dev/null
@@ -1,90 +0,0 @@
-/*
- * Copyright 2008 Freescale Semiconductor, Inc.
- *
- * (C) Copyright 2000
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/mmu.h>
-
-struct fsl_e_tlb_entry tlb_table[] = {
-       /* TLB 0 - for temp stack in cache */
-       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR, CONFIG_SYS_INIT_RAM_ADDR,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 0, BOOKE_PAGESZ_4K, 0),
-       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 4 * 1024,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 0, BOOKE_PAGESZ_4K, 0),
-       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 8 * 1024,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 0, BOOKE_PAGESZ_4K, 0),
-       SET_TLB_ENTRY(0, CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024 , CONFIG_SYS_INIT_RAM_ADDR + 12 * 1024,
-                     MAS3_SX|MAS3_SW|MAS3_SR, 0,
-                     0, 0, BOOKE_PAGESZ_4K, 0),
-
-       /*
-        * TLB 0:       64M     Non-cacheable, guarded
-        * 0xfc000000   6M4     FLASH
-        * Out of reset this entry is only 4K.
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_FLASH_BASE, CONFIG_SYS_FLASH_BASE,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 0, BOOKE_PAGESZ_64M, 1),
-
-       /*
-        * TLB 1:       256M    Non-cacheable, guarded
-        * 0x80000000   256M    PCI1 MEM First half
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS, CONFIG_SYS_PCI1_MEM_PHYS,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 1, BOOKE_PAGESZ_256M, 1),
-
-       /*
-        * TLB 2:       256M    Non-cacheable, guarded
-        * 0x90000000   256M    PCI1 MEM Second half
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000, CONFIG_SYS_PCI1_MEM_PHYS + 0x10000000,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 2, BOOKE_PAGESZ_256M, 1),
-
-       /*
-        * TLB 3:       256M    Non-cacheable, guarded
-        * 0xa0000000   256M    PCI2 MEM First half
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_PCI2_MEM_PHYS, CONFIG_SYS_PCI2_MEM_PHYS,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 3, BOOKE_PAGESZ_256M, 1),
-
-       /*
-        * TLB 4:       256M    Non-cacheable, guarded
-        * 0xb0000000   256M    PCI2 MEM Second half
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_PCI2_MEM_PHYS + 0x10000000, CONFIG_SYS_PCI2_MEM_PHYS + 0x10000000,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 4, BOOKE_PAGESZ_256M, 1),
-
-       /*
-        * TLB 5:       64M     Non-cacheable, guarded
-        * 0xe000_0000  1M      CCSRBAR
-        * 0xe200_0000  16M     PCI1 IO
-        * 0xe300_0000  16M     PCI2 IO
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_CCSRBAR, CONFIG_SYS_CCSRBAR_PHYS,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 5, BOOKE_PAGESZ_64M, 1),
-
-       /*
-        * TLB 6:       256M    Non-cacheable, guarded
-        * 0xf0000000           Local bus expansion option.
-        * 0xfb000000           Configuration Latch register (one word)
-        * 0xfc000000           Up to 64M flash
-        */
-       SET_TLB_ENTRY(1, CONFIG_SYS_LBC_OPTION_BASE, CONFIG_SYS_LBC_OPTION_BASE,
-                     MAS3_SX|MAS3_SW|MAS3_SR, MAS2_I|MAS2_G,
-                     0, 7, BOOKE_PAGESZ_256M, 1),
-};
-
-int num_tlb_entries = ARRAY_SIZE(tlb_table);
index fd6668fea2d040da27da3befff6c5bc84c1f4dc6..55906b5b76046b701997b6df50372ea636a94336 100644 (file)
@@ -425,6 +425,7 @@ config VIDEO_LCD_MODE
        LCD panel timing details string, leave empty if there is no LCD panel.
        This is in drivers/video/videomodes.c: video_get_params() format, e.g.
        x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:0,vmode:0
+       Also see: http://linux-sunxi.org/LCD
 
 config VIDEO_LCD_DCLK_PHASE
        int "LCD panel display clock phase"
index 1b44ce8e0933328ad9a09a24e45901b53f9af9c5..8f95867fa6489d436fc1726b83d889b3a9da3003 100644 (file)
@@ -8,24 +8,32 @@ F:    configs/ba10_tv_box_defconfig
 F:     configs/Chuwi_V7_CW0825_defconfig
 F:     configs/Cubieboard_defconfig
 F:     configs/Hyundai_A7HD_defconfig
+F:     configs/inet1_defconfig
+F:     configs/inet97fv2_defconfig
+F:     configs/inet9f_rev03_defconfig
 F:     configs/jesurun_q5_defconfig
 F:     configs/Mele_A1000_defconfig
-F:     configs/Mele_A1000G_quad_defconfig
 F:     configs/Mele_M3_defconfig
 F:     configs/Mini-X_defconfig
 F:     configs/mk802_defconfig
 F:     configs/mk802ii_defconfig
+F:     configs/pov_protab2_ips9_defconfig
 F:     include/configs/sun5i.h
 F:     configs/A10s-OLinuXino-M_defconfig
+F:     configs/A10s-OLinuXino-M_defconfig
+F:     configs/A10s-Wobo-i5_defconfig
 F:     configs/A13-OLinuXino_defconfig
 F:     configs/A13-OLinuXinoM_defconfig
 F:     configs/Auxtek-T003_defconfig
 F:     configs/Auxtek-T004_defconfig
+F:     configs/inet98v_rev2_defconfig
 F:     configs/mk802_a10s_defconfig
+F:     configs/q8_a13_tablet_defconfig
 F:     configs/r7-tv-dongle_defconfig
 F:     configs/UTOO_P66_defconfig
 F:     include/configs/sun6i.h
 F:     configs/CSQ_CS908_defconfig
+F:     configs/Mele_A1000G_quad_defconfig
 F:     configs/Mele_M9_defconfig
 F:     include/configs/sun7i.h
 F:     configs/A20-OLinuXino_MICRO_defconfig
@@ -40,11 +48,17 @@ F:  configs/qt840a_defconfig
 F:     configs/Wits_Pro_A20_DKT_defconfig
 F:     include/configs/sun8i.h
 F:     configs/ga10h_v1_1_defconfig
+F:     configs/gt90h_v4_defconfig
 F:     configs/Ippo_q8h_v1_2_defconfig
 F:     configs/Ippo_q8h_v1_2_a33_1024x600_defconfig
 F:     include/configs/sun9i.h
 F:     configs/Merrii_A80_Optimus_defconfig
 
+A20-OLIMEX-SOM-EVB BOARD
+M:     Marcus Cooper <codekipper@gmail.com>
+S:     Maintained
+F:     configs/A20-Olimex-SOM-EVB_defconfig
+
 A20-OLINUXINO-LIME BOARD
 M:     FUKAUMI Naoki <naobsd@gmail.com>
 S:     Maintained
index f85e825891bc0dbf8009d8f77c37281917f699a9..9c855f604d62908e9983523c40a25ff0fd449750 100644 (file)
@@ -31,6 +31,7 @@
 #include <asm/arch/usb_phy.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
+#include <nand.h>
 #include <net.h>
 
 #if defined CONFIG_VIDEO_LCD_PANEL_I2C && !(defined CONFIG_SPL_BUILD)
@@ -107,26 +108,44 @@ int dram_init(void)
        return 0;
 }
 
-#if defined(CONFIG_SPL_NAND_SUNXI) && defined(CONFIG_SPL_BUILD)
+#if defined(CONFIG_NAND_SUNXI) && defined(CONFIG_SPL_BUILD)
 static void nand_pinmux_setup(void)
 {
        unsigned int pin;
-       for (pin = SUNXI_GPC(0); pin <= SUNXI_GPC(6); pin++)
-               sunxi_gpio_set_cfgpin(pin, SUNXI_GPC_NAND);
 
-       for (pin = SUNXI_GPC(8); pin <= SUNXI_GPC(22); pin++)
+       for (pin = SUNXI_GPC(0); pin <= SUNXI_GPC(19); pin++)
                sunxi_gpio_set_cfgpin(pin, SUNXI_GPC_NAND);
 
+#if defined CONFIG_MACH_SUN4I || defined CONFIG_MACH_SUN7I
+       for (pin = SUNXI_GPC(20); pin <= SUNXI_GPC(22); pin++)
+               sunxi_gpio_set_cfgpin(pin, SUNXI_GPC_NAND);
+#endif
+       /* sun4i / sun7i do have a PC23, but it is not used for nand,
+        * only sun7i has a PC24 */
+#ifdef CONFIG_MACH_SUN7I
        sunxi_gpio_set_cfgpin(SUNXI_GPC(24), SUNXI_GPC_NAND);
+#endif
 }
 
 static void nand_clock_setup(void)
 {
        struct sunxi_ccm_reg *const ccm =
                (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
        setbits_le32(&ccm->ahb_gate0, (CLK_GATE_OPEN << AHB_GATE_OFFSET_NAND0));
+#ifdef CONFIG_MACH_SUN9I
+       setbits_le32(&ccm->ahb_gate1, (1 << AHB_GATE_OFFSET_DMA));
+#else
+       setbits_le32(&ccm->ahb_gate0, (1 << AHB_GATE_OFFSET_DMA));
+#endif
        setbits_le32(&ccm->nand0_clk_cfg, CCM_NAND_CTRL_ENABLE | AHB_DIV_1);
 }
+
+void board_nand_init(void)
+{
+       nand_pinmux_setup();
+       nand_clock_setup();
+}
 #endif
 
 #ifdef CONFIG_GENERIC_MMC
@@ -437,7 +456,7 @@ void sunxi_board_init(void)
 #ifdef CONFIG_AXP221_POWER
        power_failed = axp221_init();
        power_failed |= axp221_set_dcdc1(CONFIG_AXP221_DCDC1_VOLT);
-       power_failed |= axp221_set_dcdc2(1200); /* A31:VDD-GPU, A23:VDD-SYS */
+       power_failed |= axp221_set_dcdc2(CONFIG_AXP221_DCDC2_VOLT);
        power_failed |= axp221_set_dcdc3(1200); /* VDD-CPU */
 #ifdef CONFIG_MACH_SUN6I
        power_failed |= axp221_set_dcdc4(1200); /* A31:VDD-SYS */
@@ -453,11 +472,6 @@ void sunxi_board_init(void)
        power_failed |= axp221_set_eldo(3, CONFIG_AXP221_ELDO3_VOLT);
 #endif
 
-#ifdef CONFIG_SPL_NAND_SUNXI
-       nand_pinmux_setup();
-       nand_clock_setup();
-#endif
-
        printf("DRAM:");
        ramsize = sunxi_dram_init();
        printf(" %lu MiB\n", ramsize >> 20);
diff --git a/board/taskit/stamp9g20/Kconfig b/board/taskit/stamp9g20/Kconfig
deleted file mode 100644 (file)
index 1121dac..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_STAMP9G20
-
-config SYS_BOARD
-       default "stamp9g20"
-
-config SYS_VENDOR
-       default "taskit"
-
-config SYS_CONFIG_NAME
-       default "stamp9g20"
-
-endif
diff --git a/board/taskit/stamp9g20/MAINTAINERS b/board/taskit/stamp9g20/MAINTAINERS
deleted file mode 100644 (file)
index a91c196..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-STAMP9G20 BOARD
-M:     Markus Hubig <mhubig@imko.de>
-S:     Maintained
-F:     board/taskit/stamp9g20/
-F:     include/configs/stamp9g20.h
-F:     configs/portuxg20_defconfig
-F:     configs/stamp9g20_defconfig
diff --git a/board/taskit/stamp9g20/Makefile b/board/taskit/stamp9g20/Makefile
deleted file mode 100644 (file)
index d015e0f..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# (C) Copyright 2003-2008
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2008
-# Stelian Pop <stelian@popies.net>
-# Lead Tech Design <www.leadtechdesign.com>
-#
-# (C) Copyright 2012
-# Markus Hubig <mhubig@imko.de>
-# IMKO GmbH <www.imko.de>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  += stamp9g20.o
-obj-y  += led.o
diff --git a/board/taskit/stamp9g20/led.c b/board/taskit/stamp9g20/led.c
deleted file mode 100644 (file)
index c583125..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-/*
- * Copyright (c) 2009 Wind River Systems, Inc.
- * Tom Rix <Tom.Rix@windriver.com>
- * (C) Copyright 2009
- * Eric Benard <eric@eukrea.com>
- *
- * (C) Copyright 2012
- * Markus Hubig <mhubig@imko.de>
- * IMKO GmbH <www.imko.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/at91_pmc.h>
-#include <status_led.h>
-
-static unsigned int saved_state[3] = {STATUS_LED_OFF,
-       STATUS_LED_OFF, STATUS_LED_OFF};
-
-void coloured_LED_init(void)
-{
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
-       /* Enable the clock */
-       writel(ATMEL_ID_PIOC, &pmc->pcer);
-
-       at91_set_gpio_output(CONFIG_RED_LED, 1);
-       at91_set_gpio_output(CONFIG_GREEN_LED, 1);
-       at91_set_gpio_output(CONFIG_YELLOW_LED, 1);
-
-       at91_set_gpio_value(CONFIG_RED_LED, 0);
-       at91_set_gpio_value(CONFIG_GREEN_LED, 1);
-       at91_set_gpio_value(CONFIG_YELLOW_LED, 0);
-}
-
-void red_led_on(void)
-{
-       at91_set_gpio_value(CONFIG_RED_LED, 1);
-       saved_state[STATUS_LED_RED] = STATUS_LED_ON;
-}
-
-void red_led_off(void)
-{
-       at91_set_gpio_value(CONFIG_RED_LED, 0);
-       saved_state[STATUS_LED_RED] = STATUS_LED_OFF;
-}
-
-void green_led_on(void)
-{
-       at91_set_gpio_value(CONFIG_GREEN_LED, 1);
-       saved_state[STATUS_LED_GREEN] = STATUS_LED_ON;
-}
-
-void green_led_off(void)
-{
-       at91_set_gpio_value(CONFIG_GREEN_LED, 0);
-       saved_state[STATUS_LED_GREEN] = STATUS_LED_OFF;
-}
-
-void yellow_led_on(void)
-{
-       at91_set_gpio_value(CONFIG_YELLOW_LED, 1);
-       saved_state[STATUS_LED_YELLOW] = STATUS_LED_ON;
-}
-
-void yellow_led_off(void)
-{
-       at91_set_gpio_value(CONFIG_YELLOW_LED, 0);
-       saved_state[STATUS_LED_YELLOW] = STATUS_LED_OFF;
-}
-
-void __led_init(led_id_t mask, int state)
-{
-       __led_set(mask, state);
-}
-
-void __led_toggle(led_id_t mask)
-{
-       if (STATUS_LED_RED == mask) {
-               if (STATUS_LED_ON == saved_state[STATUS_LED_RED])
-                       red_led_off();
-               else
-                       red_led_on();
-
-       } else if (STATUS_LED_GREEN == mask) {
-               if (STATUS_LED_ON == saved_state[STATUS_LED_GREEN])
-                       green_led_off();
-               else
-                       green_led_on();
-
-       } else if (STATUS_LED_YELLOW == mask) {
-               if (STATUS_LED_ON == saved_state[STATUS_LED_YELLOW])
-                       yellow_led_off();
-               else
-                       yellow_led_on();
-       }
-}
-
-void __led_set(led_id_t mask, int state)
-{
-       if (STATUS_LED_RED == mask) {
-               if (STATUS_LED_ON == state)
-                       red_led_on();
-               else
-                       red_led_off();
-
-       } else if (STATUS_LED_GREEN == mask) {
-               if (STATUS_LED_ON == state)
-                       green_led_on();
-               else
-                       green_led_off();
-
-       } else if (STATUS_LED_YELLOW == mask) {
-               if (STATUS_LED_ON == state)
-                       yellow_led_on();
-               else
-                       yellow_led_off();
-       }
-}
diff --git a/board/taskit/stamp9g20/stamp9g20.c b/board/taskit/stamp9g20/stamp9g20.c
deleted file mode 100644 (file)
index 27cdf77..0000000
+++ /dev/null
@@ -1,159 +0,0 @@
-/*
- * (C) Copyright 2007-2008
- * Stelian Pop <stelian@popies.net>
- * Lead Tech Design <www.leadtechdesign.com>
- *
- * Achim Ehrlich <aehrlich@taskit.de>
- * taskit GmbH <www.taskit.de>
- *
- * (C) Copyright 2012-
- * Markus Hubig <mhubig@imko.de>
- * IMKO GmbH <www.imko.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/at91sam9260_matrix.h>
-#include <asm/arch/at91sam9_smc.h>
-#include <asm/arch/at91_common.h>
-#include <asm/arch/at91_pmc.h>
-#include <asm/arch/gpio.h>
-#include <watchdog.h>
-
-#ifdef CONFIG_MACB
-# include <net.h>
-# include <netdev.h>
-#endif
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static void stamp9G20_nand_hw_init(void)
-{
-       struct at91_smc *smc = (struct at91_smc *)ATMEL_BASE_SMC;
-       struct at91_matrix *matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
-       unsigned long csa;
-
-       /* Assign CS3 to NAND/SmartMedia Interface */
-       csa = readl(&matrix->ebicsa);
-       csa |= AT91_MATRIX_CS3A_SMC_SMARTMEDIA;
-       writel(csa, &matrix->ebicsa);
-
-       /* Configure SMC CS3 for NAND/SmartMedia */
-       writel(AT91_SMC_SETUP_NWE(1) | AT91_SMC_SETUP_NCS_WR(0) |
-               AT91_SMC_SETUP_NRD(1) | AT91_SMC_SETUP_NCS_RD(0),
-               &smc->cs[3].setup);
-       writel(AT91_SMC_PULSE_NWE(3) | AT91_SMC_PULSE_NCS_WR(3) |
-               AT91_SMC_PULSE_NRD(3) | AT91_SMC_PULSE_NCS_RD(3),
-               &smc->cs[3].pulse);
-       writel(AT91_SMC_CYCLE_NWE(5) | AT91_SMC_CYCLE_NRD(5),
-               &smc->cs[3].cycle);
-       writel(AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |
-               AT91_SMC_MODE_EXNW_DISABLE |
-               AT91_SMC_MODE_DBW_8 |
-               AT91_SMC_MODE_TDF_CYCLE(2),
-               &smc->cs[3].mode);
-
-       /* Configure RDY/BSY */
-       at91_set_gpio_input(CONFIG_SYS_NAND_READY_PIN, 1);
-
-       /* Enable NandFlash */
-       at91_set_gpio_output(CONFIG_SYS_NAND_ENABLE_PIN, 1);
-}
-
-#ifdef CONFIG_MACB
-static void stamp9G20_macb_hw_init(void)
-{
-       struct at91_port *pioa = (struct at91_port *)ATMEL_BASE_PIOA;
-
-       /* Enable the PHY Chip via PA26 on the Stamp 2 Adaptor */
-       at91_set_gpio_output(AT91_PIN_PA26, 0);
-
-       /*
-        * Disable pull-up on:
-        *      RXDV (PA17) => PHY normal mode (not Test mode)
-        *      ERX0 (PA14) => PHY ADDR0
-        *      ERX1 (PA15) => PHY ADDR1
-        *      ERX2 (PA25) => PHY ADDR2
-        *      ERX3 (PA26) => PHY ADDR3
-        *      ECRS (PA28) => PHY ADDR4  => PHYADDR = 0x0
-        *
-        * PHY has internal pull-down
-        */
-       writel(pin_to_mask(AT91_PIN_PA14) |
-               pin_to_mask(AT91_PIN_PA15) |
-               pin_to_mask(AT91_PIN_PA17) |
-               pin_to_mask(AT91_PIN_PA18) |
-               pin_to_mask(AT91_PIN_PA28),
-               &pioa->pudr);
-
-       at91_phy_reset();
-
-       /* Re-enable pull-up */
-       writel(pin_to_mask(AT91_PIN_PA14) |
-               pin_to_mask(AT91_PIN_PA15) |
-               pin_to_mask(AT91_PIN_PA17) |
-               pin_to_mask(AT91_PIN_PA18) |
-               pin_to_mask(AT91_PIN_PA28),
-               &pioa->puer);
-
-       /* Initialize EMAC=MACB hardware */
-       at91_macb_hw_init();
-}
-#endif /* CONFIG_MACB */
-
-int board_early_init_f(void)
-{
-       struct at91_pmc *pmc = (struct at91_pmc *)ATMEL_BASE_PMC;
-
-       /* Enable clocks for all PIOs */
-       writel((1 << ATMEL_ID_PIOA) | (1 << ATMEL_ID_PIOB) |
-               (1 << ATMEL_ID_PIOC), &pmc->pcer);
-
-       return 0;
-}
-
-int board_postclk_init(void)
-{
-       /*
-        * Initialize the serial interface here, because be need a running
-        * timer to set PC9 to high and wait for some time to enable the
-        * level converter of the RS232 interface on the PortuxG20 board.
-        */
-
-#ifdef CONFIG_PORTUXG20
-       at91_set_gpio_output(AT91_PIN_PC9, 1);
-       mdelay(1);
-#endif
-       at91_seriald_hw_init();
-
-       return 0;
-}
-
-int board_init(void)
-{
-       /* Adress of boot parameters */
-       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
-
-       stamp9G20_nand_hw_init();
-#ifdef CONFIG_MACB
-       stamp9G20_macb_hw_init();
-#endif
-       return 0;
-}
-
-int dram_init(void)
-{
-       gd->ram_size = get_ram_size(
-               (void *)CONFIG_SYS_SDRAM_BASE,
-               CONFIG_SYS_SDRAM_SIZE);
-       return 0;
-}
-
-#ifdef CONFIG_MACB
-int board_eth_init(bd_t *bis)
-{
-       return macb_eth_initialize(0, (void *)ATMEL_BASE_EMAC0, 0x00);
-}
-#endif /* CONFIG_MACB */
index 84b243e3528340799f4d26f4202df483a08c9f44..55c475c59aed940fded6c666ddca52b4b7c8f1a3 100644 (file)
@@ -6,10 +6,13 @@ config SYS_BOARD
 config SYS_VENDOR
        default "tbs"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "tbs2910"
 
+config MX6Q
+       default y
+
+config IMX_CONFIG
+       default "board/boundary/nitrogen6x/nitrogen6q2g.cfg"
+
 endif
diff --git a/board/tcl/sl50/Kconfig b/board/tcl/sl50/Kconfig
new file mode 100644 (file)
index 0000000..390a476
--- /dev/null
@@ -0,0 +1,31 @@
+if TARGET_AM335X_SL50
+
+config SYS_BOARD
+       default "sl50"
+
+config SYS_VENDOR
+       default "tcl"
+
+config SYS_SOC
+       default "am33xx"
+
+config SYS_CONFIG_NAME
+       default "am335x_sl50"
+
+config CONS_INDEX
+       int "UART used for console"
+       range 1 6
+       default 1
+       help
+         The AM335x SoC has a total of 6 UARTs (UART0 to UART5 as referenced
+         in documentation, etc) available to it.  Depending on your specific
+         board you may want something other than UART0 as for example the IDK
+         uses UART3 so enter 4 here.
+
+config DM_GPIO
+       default y
+
+config DM_SERIAL
+       default y
+
+endif
diff --git a/board/tcl/sl50/MAINTAINERS b/board/tcl/sl50/MAINTAINERS
new file mode 100644 (file)
index 0000000..29f1e3d
--- /dev/null
@@ -0,0 +1,6 @@
+SL50 BOARD
+M:     Enric Balletbo i Serra <enric.balletbo@collabora.com>
+S:     Maintained
+F:     board/tcl/sl50/
+F:     include/configs/am335x_sl50.h
+F:     configs/am335x_sl50_defconfig
diff --git a/board/tcl/sl50/Makefile b/board/tcl/sl50/Makefile
new file mode 100644 (file)
index 0000000..d4a548c
--- /dev/null
@@ -0,0 +1,13 @@
+#
+# Makefile
+#
+# Copyright (C) 2015 Toby Churchill Ltd - http://www.toby-churchill.com/
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+ifeq ($(CONFIG_SKIP_LOWLEVEL_INIT),)
+obj-y  := mux.o
+endif
+
+obj-y  += board.o
diff --git a/board/tcl/sl50/board.c b/board/tcl/sl50/board.c
new file mode 100644 (file)
index 0000000..e89ee35
--- /dev/null
@@ -0,0 +1,386 @@
+/*
+ * board.c
+ *
+ * Board functions for TCL SL50 board
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ *
+ * 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 <power/tps65910.h>
+#include <environment.h>
+#include <watchdog.h>
+#include <environment.h>
+#include "board.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static struct ctrl_dev *cdev = (struct ctrl_dev *)CTRL_DEVICE_BASE;
+
+#ifndef CONFIG_SKIP_LOWLEVEL_INIT
+
+static const struct ddr_data ddr3_sl50_data = {
+       .datardsratio0 = MT41K256M16HA125E_RD_DQS,
+       .datawdsratio0 = MT41K256M16HA125E_WR_DQS,
+       .datafwsratio0 = MT41K256M16HA125E_PHY_FIFO_WE,
+       .datawrsratio0 = MT41K256M16HA125E_PHY_WR_DATA,
+};
+
+static const struct cmd_control ddr3_sl50_cmd_ctrl_data = {
+       .cmd0csratio = MT41K256M16HA125E_RATIO,
+       .cmd0iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
+
+       .cmd1csratio = MT41K256M16HA125E_RATIO,
+       .cmd1iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
+
+       .cmd2csratio = MT41K256M16HA125E_RATIO,
+       .cmd2iclkout = MT41K256M16HA125E_INVERT_CLKOUT,
+};
+
+static struct emif_regs ddr3_sl50_emif_reg_data = {
+       .sdram_config = MT41K256M16HA125E_EMIF_SDCFG,
+       .ref_ctrl = MT41K256M16HA125E_EMIF_SDREF,
+       .sdram_tim1 = MT41K256M16HA125E_EMIF_TIM1,
+       .sdram_tim2 = MT41K256M16HA125E_EMIF_TIM2,
+       .sdram_tim3 = MT41K256M16HA125E_EMIF_TIM3,
+       .zq_config = MT41K256M16HA125E_ZQ_CFG,
+       .emif_ddr_phy_ctlr_1 = MT41K256M16HA125E_EMIF_READ_LATENCY,
+};
+
+#ifdef CONFIG_SPL_OS_BOOT
+int spl_start_uboot(void)
+{
+       /* break into full u-boot on 'c' */
+       if (serial_tstc() && serial_getc() == 'c')
+               return 1;
+
+#ifdef CONFIG_SPL_ENV_SUPPORT
+       env_init();
+       env_relocate_spec();
+       if (getenv_yesno("boot_os") != 1)
+               return 1;
+#endif
+
+       return 0;
+}
+#endif
+
+#define OSC    (V_OSCK/1000000)
+const struct dpll_params dpll_ddr_sl50 = {
+               400, OSC-1, 1, -1, -1, -1, -1};
+
+void am33xx_spl_board_init(void)
+{
+       int mpu_vdd;
+
+       /* Get the frequency */
+       dpll_mpu_opp100.m = am335x_get_efuse_mpu_max_freq(cdev);
+
+       /* BeagleBone PMIC Code */
+       int usb_cur_lim;
+
+       if (i2c_probe(TPS65217_CHIP_PM))
+               return;
+
+       /*
+        * Increase USB current limit to 1300mA or 1800mA and set
+        * the MPU voltage controller as needed.
+        */
+       if (dpll_mpu_opp100.m == MPUPLL_M_1000) {
+               usb_cur_lim = TPS65217_USB_INPUT_CUR_LIMIT_1800MA;
+               mpu_vdd = TPS65217_DCDC_VOLT_SEL_1325MV;
+       } else {
+               usb_cur_lim = TPS65217_USB_INPUT_CUR_LIMIT_1300MA;
+               mpu_vdd = TPS65217_DCDC_VOLT_SEL_1275MV;
+       }
+
+       if (tps65217_reg_write(TPS65217_PROT_LEVEL_NONE,
+                              TPS65217_POWER_PATH,
+                              usb_cur_lim,
+                              TPS65217_USB_INPUT_CUR_LIMIT_MASK))
+               puts("tps65217_reg_write failure\n");
+
+       /* Set DCDC3 (CORE) voltage to 1.125V */
+       if (tps65217_voltage_update(TPS65217_DEFDCDC3,
+                                   TPS65217_DCDC_VOLT_SEL_1125MV)) {
+               puts("tps65217_voltage_update failure\n");
+               return;
+       }
+
+       /* Set CORE Frequencies to OPP100 */
+       do_setup_dpll(&dpll_core_regs, &dpll_core_opp100);
+
+       /* Set DCDC2 (MPU) voltage */
+       if (tps65217_voltage_update(TPS65217_DEFDCDC2, mpu_vdd)) {
+               puts("tps65217_voltage_update failure\n");
+               return;
+       }
+
+       /*
+        * Set LDO3 to 1.8V and LDO4 to 3.3V
+        */
+       if (tps65217_reg_write(TPS65217_PROT_LEVEL_2,
+                              TPS65217_DEFLS1,
+                              TPS65217_LDO_VOLTAGE_OUT_1_8,
+                              TPS65217_LDO_MASK))
+               puts("tps65217_reg_write failure\n");
+
+       if (tps65217_reg_write(TPS65217_PROT_LEVEL_2,
+                              TPS65217_DEFLS2,
+                              TPS65217_LDO_VOLTAGE_OUT_3_3,
+                              TPS65217_LDO_MASK))
+               puts("tps65217_reg_write failure\n");
+
+       /* Set MPU Frequency to what we detected now that voltages are set */
+       do_setup_dpll(&dpll_mpu_regs, &dpll_mpu_opp100);
+}
+
+const struct dpll_params *get_dpll_ddr_params(void)
+{
+       enable_i2c0_pin_mux();
+       i2c_init(CONFIG_SYS_OMAP24_I2C_SPEED, CONFIG_SYS_OMAP24_I2C_SLAVE);
+
+       return &dpll_ddr_sl50;
+}
+
+void set_uart_mux_conf(void)
+{
+#if CONFIG_CONS_INDEX == 1
+       enable_uart0_pin_mux();
+#elif CONFIG_CONS_INDEX == 2
+       enable_uart1_pin_mux();
+#elif CONFIG_CONS_INDEX == 3
+       enable_uart2_pin_mux();
+#elif CONFIG_CONS_INDEX == 4
+       enable_uart3_pin_mux();
+#elif CONFIG_CONS_INDEX == 5
+       enable_uart4_pin_mux();
+#elif CONFIG_CONS_INDEX == 6
+       enable_uart5_pin_mux();
+#endif
+}
+
+void set_mux_conf_regs(void)
+{
+       enable_board_pin_mux();
+}
+
+const struct ctrl_ioregs ioregs_evmsk = {
+       .cm0ioctl               = MT41J128MJT125_IOCTRL_VALUE,
+       .cm1ioctl               = MT41J128MJT125_IOCTRL_VALUE,
+       .cm2ioctl               = MT41J128MJT125_IOCTRL_VALUE,
+       .dt0ioctl               = MT41J128MJT125_IOCTRL_VALUE,
+       .dt1ioctl               = MT41J128MJT125_IOCTRL_VALUE,
+};
+
+const struct ctrl_ioregs ioregs_bonelt = {
+       .cm0ioctl               = MT41K256M16HA125E_IOCTRL_VALUE,
+       .cm1ioctl               = MT41K256M16HA125E_IOCTRL_VALUE,
+       .cm2ioctl               = MT41K256M16HA125E_IOCTRL_VALUE,
+       .dt0ioctl               = MT41K256M16HA125E_IOCTRL_VALUE,
+       .dt1ioctl               = MT41K256M16HA125E_IOCTRL_VALUE,
+};
+
+const struct ctrl_ioregs ioregs_evm15 = {
+       .cm0ioctl               = MT41J512M8RH125_IOCTRL_VALUE,
+       .cm1ioctl               = MT41J512M8RH125_IOCTRL_VALUE,
+       .cm2ioctl               = MT41J512M8RH125_IOCTRL_VALUE,
+       .dt0ioctl               = MT41J512M8RH125_IOCTRL_VALUE,
+       .dt1ioctl               = MT41J512M8RH125_IOCTRL_VALUE,
+};
+
+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(400, &ioregs_bonelt,
+                  &ddr3_sl50_data,
+                  &ddr3_sl50_cmd_ctrl_data,
+                  &ddr3_sl50_emif_reg_data, 0);
+}
+#endif
+
+/*
+ * Basic board specific setup.  Pinmux has been handled already.
+ */
+int board_init(void)
+{
+#if defined(CONFIG_HW_WATCHDOG)
+       hw_watchdog_init();
+#endif
+
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+       return 0;
+}
+
+#ifdef CONFIG_BOARD_LATE_INIT
+int board_late_init(void)
+{
+       return 0;
+}
+#endif
+
+#if (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \
+       (defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD))
+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,
+       },
+       {
+               .slave_reg_ofs  = 0x308,
+               .sliver_reg_ofs = 0xdc0,
+               .phy_addr       = 1,
+       },
+};
+
+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,
+};
+#endif
+
+/*
+ * This function will:
+ * Read the eFuse for MAC addresses, and set ethaddr/eth1addr/usbnet_devaddr
+ * in the environment
+ * Perform fixups to the PHY present on certain boards.  We only need this
+ * function in:
+ * - SPL with either CPSW or USB ethernet support
+ * - Full U-Boot, with either CPSW or USB ethernet
+ * Build in only these cases to avoid warnings about unused variables
+ * when we build an SPL that has neither option but full U-Boot will.
+ */
+#if ((defined(CONFIG_SPL_ETH_SUPPORT) || defined(CONFIG_SPL_USBETH_SUPPORT)) \
+               && defined(CONFIG_SPL_BUILD)) || \
+       ((defined(CONFIG_DRIVER_TI_CPSW) || \
+         defined(CONFIG_USB_ETHER) && defined(CONFIG_MUSB_GADGET)) && \
+        !defined(CONFIG_SPL_BUILD))
+int board_eth_init(bd_t *bis)
+{
+       int rv, n = 0;
+       uint8_t mac_addr[6];
+       uint32_t mac_hi, mac_lo;
+
+       /* 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 (defined(CONFIG_DRIVER_TI_CPSW) && !defined(CONFIG_SPL_BUILD)) || \
+       (defined(CONFIG_SPL_ETH_SUPPORT) && defined(CONFIG_SPL_BUILD))
+       if (!getenv("ethaddr")) {
+               printf("<ethaddr> not set. Validating first E-fuse MAC\n");
+
+               if (is_valid_ethaddr(mac_addr))
+                       eth_setenv_enetaddr("ethaddr", mac_addr);
+       }
+
+#ifdef CONFIG_DRIVER_TI_CPSW
+
+       mac_lo = readl(&cdev->macid1l);
+       mac_hi = readl(&cdev->macid1h);
+       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 (!getenv("eth1addr")) {
+               if (is_valid_ethaddr(mac_addr))
+                       eth_setenv_enetaddr("eth1addr", mac_addr);
+       }
+
+
+       writel(MII_MODE_ENABLE, &cdev->miisel);
+       cpsw_slaves[0].phy_if = cpsw_slaves[1].phy_if =
+                               PHY_INTERFACE_MODE_MII;
+
+       rv = cpsw_register(&cpsw_data);
+       if (rv < 0)
+               printf("Error %d registering CPSW switch\n", rv);
+       else
+               n += rv;
+#endif
+
+       /*
+        *
+        * CPSW RGMII Internal Delay Mode is not supported in all PVT
+        * operating points.  So we must set the TX clock delay feature
+        * in the AR8051 PHY.  Since we only support a single ethernet
+        * device in U-Boot, we only do this for the first instance.
+        */
+#define AR8051_PHY_DEBUG_ADDR_REG      0x1d
+#define AR8051_PHY_DEBUG_DATA_REG      0x1e
+#define AR8051_DEBUG_RGMII_CLK_DLY_REG 0x5
+#define AR8051_RGMII_TX_CLK_DLY                0x100
+
+#endif
+#if defined(CONFIG_USB_ETHER) && \
+       (!defined(CONFIG_SPL_BUILD) || defined(CONFIG_SPL_USBETH_SUPPORT))
+       if (is_valid_ether_addr(mac_addr))
+               eth_setenv_enetaddr("usbnet_devaddr", mac_addr);
+
+       rv = usb_eth_initialize(bis);
+       if (rv < 0)
+               printf("Error %d registering USB_ETHER\n", rv);
+       else
+               n += rv;
+#endif
+       return n;
+}
+#endif
diff --git a/board/tcl/sl50/board.h b/board/tcl/sl50/board.h
new file mode 100644 (file)
index 0000000..ae2ef6b
--- /dev/null
@@ -0,0 +1,22 @@
+/*
+ * board.h
+ *
+ * TCL SL50 boards information header
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.com/
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _BOARD_H_
+#define _BOARD_H_
+
+void enable_uart0_pin_mux(void);
+void enable_uart1_pin_mux(void);
+void enable_uart2_pin_mux(void);
+void enable_uart3_pin_mux(void);
+void enable_uart4_pin_mux(void);
+void enable_uart5_pin_mux(void);
+void enable_i2c0_pin_mux(void);
+void enable_board_pin_mux(void);
+#endif
diff --git a/board/tcl/sl50/mux.c b/board/tcl/sl50/mux.c
new file mode 100644 (file)
index 0000000..e0d76ef
--- /dev/null
@@ -0,0 +1,154 @@
+/*
+ * mux.c
+ *
+ * Copyright (C) 2011, Texas Instruments, Incorporated - http://www.ti.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 uart1_pin_mux[] = {
+       {OFFSET(uart1_rxd), (MODE(0) | PULLUP_EN | RXACTIVE)},  /* UART1_RXD */
+       {OFFSET(uart1_txd), (MODE(0) | PULLUDEN)},              /* UART1_TXD */
+       {-1},
+};
+
+static struct module_pin_mux uart2_pin_mux[] = {
+       {OFFSET(spi0_sclk), (MODE(1) | PULLUP_EN | RXACTIVE)},  /* UART2_RXD */
+       {OFFSET(spi0_d0), (MODE(1) | PULLUDEN)},                /* UART2_TXD */
+       {-1},
+};
+
+static struct module_pin_mux uart3_pin_mux[] = {
+       {OFFSET(spi0_cs1), (MODE(1) | PULLUP_EN | RXACTIVE)},   /* UART3_RXD */
+       {OFFSET(ecap0_in_pwm0_out), (MODE(1) | PULLUDEN)},      /* UART3_TXD */
+       {-1},
+};
+
+static struct module_pin_mux uart4_pin_mux[] = {
+       {OFFSET(gpmc_wait0), (MODE(6) | PULLUP_EN | RXACTIVE)}, /* UART4_RXD */
+       {OFFSET(gpmc_wpn), (MODE(6) | PULLUDEN)},               /* UART4_TXD */
+       {-1},
+};
+
+static struct module_pin_mux uart5_pin_mux[] = {
+       {OFFSET(lcd_data9), (MODE(4) | PULLUP_EN | RXACTIVE)},  /* UART5_RXD */
+       {OFFSET(lcd_data8), (MODE(4) | PULLUDEN)},              /* UART5_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(mcasp0_aclkr), (MODE(4) | RXACTIVE)},           /* MMC0_WP */
+       {OFFSET(spi0_cs1), (MODE(5) | RXACTIVE | PULLUP_EN)},   /* MMC0_CD */
+       {-1},
+};
+
+static struct module_pin_mux mmc1_pin_mux[] = {
+       {OFFSET(gpmc_ad3), (MODE(1) | RXACTIVE | PULLUP_EN)},   /* MMC1_DAT3 */
+       {OFFSET(gpmc_ad2), (MODE(1) | RXACTIVE | PULLUP_EN)},   /* MMC1_DAT2 */
+       {OFFSET(gpmc_ad1), (MODE(1) | RXACTIVE | PULLUP_EN)},   /* MMC1_DAT1 */
+       {OFFSET(gpmc_ad0), (MODE(1) | RXACTIVE | PULLUP_EN)},   /* MMC1_DAT0 */
+       {OFFSET(gpmc_csn1), (MODE(2) | RXACTIVE | PULLUP_EN)},  /* MMC1_CLK */
+       {OFFSET(gpmc_csn2), (MODE(2) | RXACTIVE | PULLUP_EN)},  /* MMC1_CMD */
+       {OFFSET(gpmc_csn0), (MODE(7) | RXACTIVE | PULLUP_EN)},  /* MMC1_WP */
+       {OFFSET(gpmc_advn_ale), (MODE(7) | RXACTIVE | PULLUP_EN)},      /* MMC1_CD */
+       {-1},
+};
+
+static struct module_pin_mux i2c0_pin_mux[] = {
+       {OFFSET(i2c0_sda), (MODE(0) | RXACTIVE |
+                       PULLUDEN | SLEWCTRL)}, /* I2C_DATA */
+       {OFFSET(i2c0_scl), (MODE(0) | RXACTIVE |
+                       PULLUDEN | SLEWCTRL)}, /* I2C_SCLK */
+       {-1},
+};
+
+static struct module_pin_mux i2c1_pin_mux[] = {
+       {OFFSET(spi0_d1), (MODE(2) | RXACTIVE |
+                       PULLUDEN | SLEWCTRL)},  /* I2C_DATA */
+       {OFFSET(spi0_cs0), (MODE(2) | RXACTIVE |
+                       PULLUDEN | SLEWCTRL)},  /* I2C_SCLK */
+       {-1},
+};
+
+static struct module_pin_mux mii1_pin_mux[] = {
+       {OFFSET(mii1_rxerr), MODE(0) | RXACTIVE},       /* MII1_RXERR */
+       {OFFSET(mii1_txen), MODE(0)},                   /* MII1_TXEN */
+       {OFFSET(mii1_rxdv), MODE(0) | RXACTIVE},        /* MII1_RXDV */
+       {OFFSET(mii1_txd3), MODE(0)},                   /* MII1_TXD3 */
+       {OFFSET(mii1_txd2), MODE(0)},                   /* MII1_TXD2 */
+       {OFFSET(mii1_txd1), MODE(0)},                   /* MII1_TXD1 */
+       {OFFSET(mii1_txd0), MODE(0)},                   /* MII1_TXD0 */
+       {OFFSET(mii1_txclk), MODE(0) | RXACTIVE},       /* MII1_TXCLK */
+       {OFFSET(mii1_rxclk), MODE(0) | RXACTIVE},       /* MII1_RXCLK */
+       {OFFSET(mii1_rxd3), MODE(0) | RXACTIVE},        /* MII1_RXD3 */
+       {OFFSET(mii1_rxd2), MODE(0) | RXACTIVE},        /* MII1_RXD2 */
+       {OFFSET(mii1_rxd1), MODE(0) | RXACTIVE},        /* MII1_RXD1 */
+       {OFFSET(mii1_rxd0), MODE(0) | RXACTIVE},        /* MII1_RXD0 */
+       {OFFSET(mdio_data), MODE(0) | RXACTIVE | PULLUP_EN}, /* MDIO_DATA */
+       {OFFSET(mdio_clk), MODE(0) | PULLUP_EN},        /* MDIO_CLK */
+       {-1},
+};
+
+
+void enable_uart0_pin_mux(void)
+{
+       configure_module_pin_mux(uart0_pin_mux);
+}
+
+void enable_uart1_pin_mux(void)
+{
+       configure_module_pin_mux(uart1_pin_mux);
+}
+
+void enable_uart2_pin_mux(void)
+{
+       configure_module_pin_mux(uart2_pin_mux);
+}
+
+void enable_uart3_pin_mux(void)
+{
+       configure_module_pin_mux(uart3_pin_mux);
+}
+
+void enable_uart4_pin_mux(void)
+{
+       configure_module_pin_mux(uart4_pin_mux);
+}
+
+void enable_uart5_pin_mux(void)
+{
+       configure_module_pin_mux(uart5_pin_mux);
+}
+
+void enable_i2c0_pin_mux(void)
+{
+       configure_module_pin_mux(i2c0_pin_mux);
+}
+
+void enable_board_pin_mux(void)
+{
+       configure_module_pin_mux(i2c1_pin_mux);
+       configure_module_pin_mux(mii1_pin_mux);
+       configure_module_pin_mux(mmc0_pin_mux);
+       configure_module_pin_mux(mmc1_pin_mux);
+}
diff --git a/board/technologic/ts4800/Kconfig b/board/technologic/ts4800/Kconfig
new file mode 100644 (file)
index 0000000..a28d5e4
--- /dev/null
@@ -0,0 +1,15 @@
+if TARGET_TS4800
+
+config SYS_BOARD
+       default "ts4800"
+
+config SYS_VENDOR
+       default "technologic"
+
+config SYS_SOC
+       default "mx5"
+
+config SYS_CONFIG_NAME
+       default "ts4800"
+
+endif
diff --git a/board/technologic/ts4800/MAINTAINERS b/board/technologic/ts4800/MAINTAINERS
new file mode 100644 (file)
index 0000000..e013ee4
--- /dev/null
@@ -0,0 +1,6 @@
+TS4800 BOARD
+M:     Lucile Quirion <lucile.quirion@savoirfairelinux.com>
+S:     Maintained
+F:     board/ts/ts4800/
+F:     include/configs/ts4800.h
+F:     configs/ts4800_defconfig
diff --git a/board/technologic/ts4800/Makefile b/board/technologic/ts4800/Makefile
new file mode 100644 (file)
index 0000000..e9f1a37
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# (C) Copyright 2015 Savoir-faire Linux
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y                  += ts4800.o
diff --git a/board/technologic/ts4800/ts4800.c b/board/technologic/ts4800/ts4800.c
new file mode 100644 (file)
index 0000000..6ef15e1
--- /dev/null
@@ -0,0 +1,257 @@
+/*
+ * (C) Copyright 2015 Savoir-faire Linux Inc.
+ *
+ * Derived from MX51EVK code by
+ *   Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/gpio.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux-mx51.h>
+#include <asm/errno.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/arch/clock.h>
+#include <asm/imx-common/mx5_video.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <mc13892.h>
+
+#include <malloc.h>
+#include <netdev.h>
+#include <phy.h>
+#include "ts4800.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_FSL_ESDHC
+struct fsl_esdhc_cfg esdhc_cfg[2] = {
+       {MMC_SDHC1_BASE_ADDR},
+       {MMC_SDHC2_BASE_ADDR},
+};
+#endif
+
+int dram_init(void)
+{
+       /* dram_init must store complete ramsize in gd->ram_size */
+       gd->ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
+                               PHYS_SDRAM_1_SIZE);
+       return 0;
+}
+
+u32 get_board_rev(void)
+{
+       u32 rev = get_cpu_rev();
+       if (!gpio_get_value(IMX_GPIO_NR(1, 22)))
+               rev |= BOARD_REV_2_0 << BOARD_VER_OFFSET;
+       return rev;
+}
+
+#define UART_PAD_CTRL  (PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_DSE_HIGH)
+
+static void setup_iomux_uart(void)
+{
+       static const iomux_v3_cfg_t uart_pads[] = {
+               MX51_PAD_UART1_RXD__UART1_RXD,
+               MX51_PAD_UART1_TXD__UART1_TXD,
+               NEW_PAD_CTRL(MX51_PAD_UART1_RTS__UART1_RTS, UART_PAD_CTRL),
+               NEW_PAD_CTRL(MX51_PAD_UART1_CTS__UART1_CTS, UART_PAD_CTRL),
+       };
+
+       imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
+}
+
+static void setup_iomux_fec(void)
+{
+       static const iomux_v3_cfg_t fec_pads[] = {
+               NEW_PAD_CTRL(MX51_PAD_EIM_EB2__FEC_MDIO,
+                               PAD_CTL_HYS |
+                               PAD_CTL_PUS_22K_UP |
+                               PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
+               MX51_PAD_EIM_EB3__FEC_RDATA1,
+               NEW_PAD_CTRL(MX51_PAD_EIM_CS2__FEC_RDATA2, PAD_CTL_HYS),
+               MX51_PAD_EIM_CS3__FEC_RDATA3,
+               MX51_PAD_NANDF_CS2__FEC_TX_ER,
+               MX51_PAD_EIM_CS5__FEC_CRS,
+               MX51_PAD_EIM_CS4__FEC_RX_ER,
+               /* PAD used on TS4800 */
+               MX51_PAD_DI2_PIN2__FEC_MDC,
+               MX51_PAD_DISP2_DAT14__FEC_RDAT0,
+               MX51_PAD_DISP2_DAT10__FEC_COL,
+               MX51_PAD_DISP2_DAT11__FEC_RXCLK,
+               MX51_PAD_DISP2_DAT15__FEC_TDAT0,
+               MX51_PAD_DISP2_DAT6__FEC_TDAT1,
+               MX51_PAD_DISP2_DAT7__FEC_TDAT2,
+               MX51_PAD_DISP2_DAT8__FEC_TDAT3,
+               MX51_PAD_DISP2_DAT9__FEC_TX_EN,
+               MX51_PAD_DISP2_DAT13__FEC_TX_CLK,
+               MX51_PAD_DISP2_DAT12__FEC_RX_DV,
+       };
+
+       imx_iomux_v3_setup_multiple_pads(fec_pads, ARRAY_SIZE(fec_pads));
+}
+
+#ifdef CONFIG_FSL_ESDHC
+int board_mmc_getcd(struct mmc *mmc)
+{
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+       int ret;
+
+       imx_iomux_v3_setup_pad(NEW_PAD_CTRL(MX51_PAD_GPIO1_0__GPIO1_0,
+                                               NO_PAD_CTRL));
+       gpio_direction_input(IMX_GPIO_NR(1, 0));
+       imx_iomux_v3_setup_pad(NEW_PAD_CTRL(MX51_PAD_GPIO1_6__GPIO1_6,
+                                               NO_PAD_CTRL));
+       gpio_direction_input(IMX_GPIO_NR(1, 6));
+
+       if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR)
+               ret = !gpio_get_value(IMX_GPIO_NR(1, 0));
+       else
+               ret = !gpio_get_value(IMX_GPIO_NR(1, 6));
+
+       return ret;
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       static const iomux_v3_cfg_t sd1_pads[] = {
+               NEW_PAD_CTRL(MX51_PAD_SD1_CMD__SD1_CMD, PAD_CTL_DSE_MAX |
+                       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
+               NEW_PAD_CTRL(MX51_PAD_SD1_CLK__SD1_CLK, PAD_CTL_DSE_MAX |
+                       PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
+               NEW_PAD_CTRL(MX51_PAD_SD1_DATA0__SD1_DATA0, PAD_CTL_DSE_MAX |
+                       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
+               NEW_PAD_CTRL(MX51_PAD_SD1_DATA1__SD1_DATA1, PAD_CTL_DSE_MAX |
+                       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
+               NEW_PAD_CTRL(MX51_PAD_SD1_DATA2__SD1_DATA2, PAD_CTL_DSE_MAX |
+                       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
+               NEW_PAD_CTRL(MX51_PAD_SD1_DATA3__SD1_DATA3, PAD_CTL_DSE_MAX |
+                       PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_SRE_FAST),
+               NEW_PAD_CTRL(MX51_PAD_GPIO1_0__SD1_CD, PAD_CTL_HYS),
+               NEW_PAD_CTRL(MX51_PAD_GPIO1_1__SD1_WP, PAD_CTL_HYS),
+       };
+
+       esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+
+       imx_iomux_v3_setup_multiple_pads(sd1_pads, ARRAY_SIZE(sd1_pads));
+
+       return fsl_esdhc_initialize(bis, &esdhc_cfg[0]);
+}
+#endif
+
+int board_early_init_f(void)
+{
+       setup_iomux_uart();
+       setup_iomux_fec();
+
+       return 0;
+}
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
+
+       return 0;
+}
+
+/*
+ * Read the MAC address from FEC's registers PALR PAUR.
+ * User is supposed to configure these registers when MAC address is known
+ * from another source (fuse), but on TS4800, MAC address is not fused and
+ * the bootrom configure these registers on startup.
+ */
+static int fec_get_mac_from_register(uint32_t base_addr)
+{
+       unsigned char ethaddr[6];
+       u32 reg_mac[2];
+       int i;
+
+       reg_mac[0] = in_be32(base_addr + 0xE4);
+       reg_mac[1] = in_be32(base_addr + 0xE8);
+
+       for(i = 0; i < 6; i++)
+               ethaddr[i] = (reg_mac[i / 4] >> ((i % 4) * 8)) & 0xFF;
+
+       if (is_valid_ethaddr(ethaddr)) {
+               eth_setenv_enetaddr("ethaddr", ethaddr);
+               return 0;
+       }
+
+       return -1;
+}
+
+#define TS4800_GPIO_FEC_PHY_RES         IMX_GPIO_NR(2, 14)
+int board_eth_init(bd_t *bd)
+{
+       int dev_id = -1;
+       int phy_id = 0xFF;
+       uint32_t addr = IMX_FEC_BASE;
+
+       uint32_t base_mii;
+       struct mii_dev *bus = NULL;
+       struct phy_device *phydev = NULL;
+       int ret;
+
+       /* reset FEC phy */
+       imx_iomux_v3_setup_pad(MX51_PAD_EIM_A20__GPIO2_14);
+       gpio_direction_output(TS4800_GPIO_FEC_PHY_RES, 0);
+       mdelay(1);
+       gpio_set_value(TS4800_GPIO_FEC_PHY_RES, 1);
+       mdelay(1);
+
+       base_mii = addr;
+       debug("eth_init: fec_probe(bd, %i, %i) @ %08x\n", dev_id, phy_id, addr);
+       bus = fec_get_miibus(base_mii, dev_id);
+       if (!bus)
+               return -ENOMEM;
+
+       phydev = phy_find_by_mask(bus, phy_id, PHY_INTERFACE_MODE_MII);
+       if (!phydev) {
+               free(bus);
+               return -ENOMEM;
+       }
+
+       if (fec_get_mac_from_register(addr))
+               printf("eth_init: failed to get MAC address\n");
+
+       ret = fec_probe(bd, dev_id, addr, bus, phydev);
+       if (ret) {
+               free(phydev);
+               free(bus);
+       }
+
+       return ret;
+}
+
+/*
+ * Do not overwrite the console
+ * Use always serial for U-Boot console
+ */
+int overwrite_console(void)
+{
+       return 1;
+}
+
+int checkboard(void)
+{
+       puts("Board: TS4800\n");
+
+       return 0;
+}
+
+void hw_watchdog_reset(void)
+{
+       struct ts4800_wtd_regs *wtd = (struct ts4800_wtd_regs *) (TS4800_SYSCON_BASE + 0xE);
+       /* feed the watchdog for another 10s */
+       writew(0x2, &wtd->feed);
+}
+
+void hw_watchdog_init(void)
+{
+       return;
+}
diff --git a/board/technologic/ts4800/ts4800.h b/board/technologic/ts4800/ts4800.h
new file mode 100644 (file)
index 0000000..6856b05
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * (C) Copyright 2015 Savoir-faire Linux Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _TS4800_H
+#define _TS4800_H
+
+#define TS4800_SYSCON_BASE 0xb0010000
+
+struct ts4800_wtd_regs {
+       u16     feed;
+};
+
+#endif
diff --git a/board/terasic/de0-nano-soc/MAINTAINERS b/board/terasic/de0-nano-soc/MAINTAINERS
new file mode 100644 (file)
index 0000000..351c456
--- /dev/null
@@ -0,0 +1,5 @@
+SOCFPGA ATLAS BOARD
+M:     Dinh Nguyen <dinguyen@opensource.altera.com>
+S:     Maintained
+F:     include/configs/socfpga_de0_nano_soc.h
+F:     configs/socfpga_de0_nano_soc_defconfig
diff --git a/board/terasic/de0-nano-soc/Makefile b/board/terasic/de0-nano-soc/Makefile
new file mode 100644 (file)
index 0000000..86f9b78
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# (C) Copyright 2001-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+# (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := socfpga.o
diff --git a/board/terasic/de0-nano-soc/qts/iocsr_config.h b/board/terasic/de0-nano-soc/qts/iocsr_config.h
new file mode 100644 (file)
index 0000000..9b4d709
--- /dev/null
@@ -0,0 +1,658 @@
+/*
+ * Altera SoCFPGA IOCSR configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_IOCSR_CONFIG_H__
+#define __SOCFPGA_IOCSR_CONFIG_H__
+
+#define CONFIG_HPS_IOCSR_SCANCHAIN0_LENGTH     764
+#define CONFIG_HPS_IOCSR_SCANCHAIN1_LENGTH     1719
+#define CONFIG_HPS_IOCSR_SCANCHAIN2_LENGTH     955
+#define CONFIG_HPS_IOCSR_SCANCHAIN3_LENGTH     16766
+
+const unsigned long iocsr_scan_chain0_table[] = {
+       0x00000000,
+       0x00000000,
+       0x0FF00000,
+       0xC0000000,
+       0x0000003F,
+       0x00008000,
+       0x00020080,
+       0x18060000,
+       0x08000000,
+       0x00018020,
+       0x00000000,
+       0x00004000,
+       0x00010040,
+       0x04010000,
+       0x04000000,
+       0x00000010,
+       0x00004010,
+       0x00002000,
+       0x00020000,
+       0x02008000,
+       0x02000000,
+       0x00000008,
+       0x00002008,
+       0x00001000,
+};
+
+const unsigned long iocsr_scan_chain1_table[] = {
+       0x00100000,
+       0x10040000,
+       0x100000C0,
+       0x00000040,
+       0x00010040,
+       0x00008000,
+       0x00060180,
+       0x20000000,
+       0x00000000,
+       0x00000080,
+       0x00020000,
+       0x00004000,
+       0x00010040,
+       0x10000000,
+       0x04000000,
+       0x00000010,
+       0x00004010,
+       0x00002000,
+       0x00020000,
+       0x06018000,
+       0x01FE0000,
+       0xF8000000,
+       0x00000007,
+       0x00001000,
+       0x00010000,
+       0x04000000,
+       0x00000000,
+       0x00000010,
+       0x00004000,
+       0x00000800,
+       0x00000000,
+       0x00000000,
+       0x00000000,
+       0x00000008,
+       0x00002000,
+       0x00000400,
+       0x00000000,
+       0x00401000,
+       0x00000003,
+       0x00000000,
+       0x00000000,
+       0x00000200,
+       0x00600802,
+       0x00000000,
+       0x80200000,
+       0x80000600,
+       0x00000200,
+       0x00000100,
+       0x00300401,
+       0xC0100400,
+       0x40100000,
+       0x40000300,
+       0x000C0100,
+       0x00000080,
+};
+
+const unsigned long iocsr_scan_chain2_table[] = {
+       0x300C0300,
+       0x00000000,
+       0x0FF00000,
+       0x00000000,
+       0x0C0300C0,
+       0x00008000,
+       0x00080000,
+       0x18060000,
+       0x18000000,
+       0x00018060,
+       0x00020000,
+       0x00004000,
+       0x200300C0,
+       0x10000000,
+       0x00000000,
+       0x00000040,
+       0x00010000,
+       0x00002000,
+       0x10018060,
+       0x06018000,
+       0x06000000,
+       0x00010018,
+       0x00006018,
+       0x00001000,
+       0x00010000,
+       0x00000000,
+       0x03000000,
+       0x0000800C,
+       0x00C01004,
+       0x00000800,
+};
+
+const unsigned long iocsr_scan_chain3_table[] = {
+       0x0C420D80,
+       0x082000FF,
+       0x0A804001,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0x0A800000,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0xC8800000,
+       0x00003001,
+       0x00C00722,
+       0x00000000,
+       0x00000021,
+       0x82000004,
+       0x05400000,
+       0x03C80000,
+       0x04010000,
+       0x00080000,
+       0x05400000,
+       0x03C80000,
+       0x05400000,
+       0x03C80000,
+       0xE4400000,
+       0x00001800,
+       0x00600391,
+       0x800E4400,
+       0x00000001,
+       0x40000002,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x72200000,
+       0x80000C00,
+       0x003001C8,
+       0xC0072200,
+       0x1C880000,
+       0x20000300,
+       0x00040000,
+       0x50670000,
+       0x00000010,
+       0x24590000,
+       0x00001000,
+       0xA0000034,
+       0x0D000001,
+       0xC0680618,
+       0x4D034071,
+       0x1A681A03,
+       0x806180D0,
+       0x34071C06,
+       0x01A034D0,
+       0x380D0000,
+       0x0820680E,
+       0x034D0340,
+       0xD000001A,
+       0x0680E380,
+       0x10040000,
+       0x00200000,
+       0x10040000,
+       0x00200000,
+       0x15000000,
+       0x0F200000,
+       0x15000000,
+       0x0F200000,
+       0x01FE0000,
+       0x00000000,
+       0x01800E44,
+       0x00391000,
+       0x007F8006,
+       0x00000000,
+       0x0A800001,
+       0x07900000,
+       0x0A800000,
+       0x07900000,
+       0x0A800000,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0xC8800000,
+       0x00003001,
+       0x00C00722,
+       0x00000FF0,
+       0x72200000,
+       0x80000C00,
+       0x05400000,
+       0x02480000,
+       0x04000000,
+       0x00080000,
+       0x05400000,
+       0x03C80000,
+       0x05400000,
+       0x03C80000,
+       0x6A1C0000,
+       0x00001800,
+       0x00600391,
+       0x800E4400,
+       0x1A870001,
+       0x40000600,
+       0x02A00040,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x72200000,
+       0x80000C00,
+       0x003001C8,
+       0xC0072200,
+       0x1C880000,
+       0x20000300,
+       0x00040000,
+       0x50670000,
+       0x00000010,
+       0x24590000,
+       0x00001000,
+       0xA0000034,
+       0x0D000001,
+       0xC0680618,
+       0x4D034071,
+       0x1A681A03,
+       0x806180D0,
+       0x34071C06,
+       0x01A00040,
+       0x180D0002,
+       0x71C06806,
+       0x034D0340,
+       0xD01A681A,
+       0x06806180,
+       0x10040000,
+       0x00200000,
+       0x10040000,
+       0x00200000,
+       0x15000000,
+       0x0F200000,
+       0x15000000,
+       0x0F200000,
+       0x01FE0000,
+       0x00000000,
+       0x01800E44,
+       0x00391000,
+       0x007F8006,
+       0x00000000,
+       0x99300001,
+       0x34343400,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x01000000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x0002A000,
+       0x0001E400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0xC880090C,
+       0x00003001,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00010040,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00002000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x14864000,
+       0x59647A05,
+       0xD32CA3D6,
+       0xF551451E,
+       0x034CD348,
+       0x821A0000,
+       0x0000D000,
+       0x030C0680,
+       0xD659647A,
+       0x1ED32CA3,
+       0x48F55145,
+       0x00034CD3,
+       0x00080200,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x10000000,
+       0x00000000,
+       0x0080C000,
+       0x41000000,
+       0x00003FC2,
+       0x00820000,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00008000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x00020080,
+       0x00000400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0x0000090C,
+       0x00000010,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00015000,
+       0x0000F200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00600391,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x0C864000,
+       0x59647A03,
+       0x932CA3DE,
+       0xF651451E,
+       0x035CD348,
+       0x821A0041,
+       0x0000D000,
+       0x00000680,
+       0xDE59647A,
+       0x1ED32CA3,
+       0x48F55145,
+       0x00035492,
+       0x00080200,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x10000000,
+       0x00000000,
+       0x0080C000,
+       0x41000000,
+       0x04000002,
+       0x00820000,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00008000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x0002A000,
+       0x0001E400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0xC880090C,
+       0x00003001,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00010040,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00002000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x0C864000,
+       0x59647A03,
+       0xD32CA3DE,
+       0xF551451E,
+       0x035CB2C8,
+       0x821A0000,
+       0x0000D000,
+       0x00000680,
+       0xDE59647A,
+       0x1ED2AAA3,
+       0xC8F55965,
+       0x00035CB2,
+       0x00080200,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x10000000,
+       0x00000000,
+       0x0080C000,
+       0x41000000,
+       0x04000002,
+       0x00820000,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00008000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x00020080,
+       0x00000400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0x0000090C,
+       0x00000010,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00010040,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00400000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F1690D,
+       0x1A041414,
+       0x00D00000,
+       0x14864000,
+       0x59647A05,
+       0xD32CA3DE,
+       0xF551451E,
+       0x035CD348,
+       0x821A0000,
+       0x0000D000,
+       0x00000680,
+       0xDE59647A,
+       0x1ED32CA3,
+       0x48F55145,
+       0x00035CD3,
+       0x00080200,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x10000000,
+       0x00000000,
+       0x0080C000,
+       0x41000000,
+       0x04000002,
+       0x00820000,
+       0x00489800,
+       0x801A1A1A,
+       0x00000200,
+       0x80000004,
+       0x00000200,
+       0x80000004,
+       0x00000200,
+       0x80000004,
+       0x00000200,
+       0x00000004,
+       0x00040000,
+       0x10000000,
+       0x00000000,
+       0x00000040,
+       0x00010000,
+       0x40002000,
+       0x00000100,
+       0x40000002,
+       0x00000100,
+       0x40000002,
+       0x00000100,
+       0x40000002,
+       0x00000100,
+       0x00000002,
+       0x00020000,
+       0x08000000,
+       0x00000000,
+       0x00000020,
+       0x00008000,
+       0x20001000,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x00000001,
+       0x00010000,
+       0x04000000,
+       0x00FF0000,
+       0x00000000,
+       0x00004000,
+       0x00000800,
+       0xC0000001,
+       0x00041419,
+       0x40000000,
+       0x04000816,
+       0x000D0000,
+       0x00006800,
+       0x00000340,
+       0xD000001A,
+       0x06800000,
+       0x00340000,
+       0x0001A000,
+       0x00000D00,
+       0x40000068,
+       0x1A000003,
+       0x00D00000,
+       0x00068000,
+       0x00003400,
+       0x000001A0,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x80000008,
+       0x0000007F,
+       0x20000000,
+       0x00000000,
+       0xE0000080,
+       0x0000001F,
+       0x00004000,
+};
+#endif /* __SOCFPGA_IOCSR_CONFIG_H__ */
diff --git a/board/terasic/de0-nano-soc/qts/pinmux_config.h b/board/terasic/de0-nano-soc/qts/pinmux_config.h
new file mode 100644 (file)
index 0000000..3854110
--- /dev/null
@@ -0,0 +1,220 @@
+/*
+ * Altera SoCFPGA PinMux configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_PINMUX_CONFIG_H__
+#define __SOCFPGA_PINMUX_CONFIG_H__
+
+/* pin MUX configuration data */
+const u8 sys_mgr_init_table[] = {
+       0, /* EMACIO0 */
+       2, /* EMACIO1 */
+       2, /* EMACIO2 */
+       2, /* EMACIO3 */
+       2, /* EMACIO4 */
+       2, /* EMACIO5 */
+       2, /* EMACIO6 */
+       2, /* EMACIO7 */
+       2, /* EMACIO8 */
+       0, /* EMACIO9 */
+       2, /* EMACIO10 */
+       2, /* EMACIO11 */
+       2, /* EMACIO12 */
+       2, /* EMACIO13 */
+       0, /* EMACIO14 */
+       0, /* EMACIO15 */
+       0, /* EMACIO16 */
+       0, /* EMACIO17 */
+       0, /* EMACIO18 */
+       0, /* EMACIO19 */
+       3, /* FLASHIO0 */
+       0, /* FLASHIO1 */
+       3, /* FLASHIO2 */
+       3, /* FLASHIO3 */
+       0, /* FLASHIO4 */
+       0, /* FLASHIO5 */
+       0, /* FLASHIO6 */
+       0, /* FLASHIO7 */
+       0, /* FLASHIO8 */
+       3, /* FLASHIO9 */
+       3, /* FLASHIO10 */
+       3, /* FLASHIO11 */
+       0, /* GENERALIO0 */
+       1, /* GENERALIO1 */
+       1, /* GENERALIO2 */
+       1, /* GENERALIO3 */
+       1, /* GENERALIO4 */
+       0, /* GENERALIO5 */
+       0, /* GENERALIO6 */
+       1, /* GENERALIO7 */
+       1, /* GENERALIO8 */
+       0, /* GENERALIO9 */
+       0, /* GENERALIO10 */
+       0, /* GENERALIO11 */
+       0, /* GENERALIO12 */
+       0, /* GENERALIO13 */
+       0, /* GENERALIO14 */
+       1, /* GENERALIO15 */
+       1, /* GENERALIO16 */
+       1, /* GENERALIO17 */
+       1, /* GENERALIO18 */
+       0, /* GENERALIO19 */
+       0, /* GENERALIO20 */
+       0, /* GENERALIO21 */
+       0, /* GENERALIO22 */
+       0, /* GENERALIO23 */
+       0, /* GENERALIO24 */
+       0, /* GENERALIO25 */
+       0, /* GENERALIO26 */
+       0, /* GENERALIO27 */
+       0, /* GENERALIO28 */
+       0, /* GENERALIO29 */
+       0, /* GENERALIO30 */
+       0, /* GENERALIO31 */
+       2, /* MIXED1IO0 */
+       2, /* MIXED1IO1 */
+       2, /* MIXED1IO2 */
+       2, /* MIXED1IO3 */
+       2, /* MIXED1IO4 */
+       2, /* MIXED1IO5 */
+       2, /* MIXED1IO6 */
+       2, /* MIXED1IO7 */
+       2, /* MIXED1IO8 */
+       2, /* MIXED1IO9 */
+       2, /* MIXED1IO10 */
+       2, /* MIXED1IO11 */
+       2, /* MIXED1IO12 */
+       2, /* MIXED1IO13 */
+       0, /* MIXED1IO14 */
+       0, /* MIXED1IO15 */
+       0, /* MIXED1IO16 */
+       0, /* MIXED1IO17 */
+       0, /* MIXED1IO18 */
+       0, /* MIXED1IO19 */
+       0, /* MIXED1IO20 */
+       0, /* MIXED1IO21 */
+       0, /* MIXED2IO0 */
+       0, /* MIXED2IO1 */
+       0, /* MIXED2IO2 */
+       0, /* MIXED2IO3 */
+       0, /* MIXED2IO4 */
+       0, /* MIXED2IO5 */
+       0, /* MIXED2IO6 */
+       0, /* MIXED2IO7 */
+       0, /* GPLINMUX48 */
+       0, /* GPLINMUX49 */
+       0, /* GPLINMUX50 */
+       0, /* GPLINMUX51 */
+       0, /* GPLINMUX52 */
+       0, /* GPLINMUX53 */
+       0, /* GPLINMUX54 */
+       0, /* GPLINMUX55 */
+       0, /* GPLINMUX56 */
+       0, /* GPLINMUX57 */
+       0, /* GPLINMUX58 */
+       0, /* GPLINMUX59 */
+       0, /* GPLINMUX60 */
+       0, /* GPLINMUX61 */
+       0, /* GPLINMUX62 */
+       0, /* GPLINMUX63 */
+       0, /* GPLINMUX64 */
+       0, /* GPLINMUX65 */
+       0, /* GPLINMUX66 */
+       0, /* GPLINMUX67 */
+       0, /* GPLINMUX68 */
+       0, /* GPLINMUX69 */
+       0, /* GPLINMUX70 */
+       1, /* GPLMUX0 */
+       1, /* GPLMUX1 */
+       1, /* GPLMUX2 */
+       1, /* GPLMUX3 */
+       1, /* GPLMUX4 */
+       1, /* GPLMUX5 */
+       1, /* GPLMUX6 */
+       1, /* GPLMUX7 */
+       1, /* GPLMUX8 */
+       1, /* GPLMUX9 */
+       1, /* GPLMUX10 */
+       1, /* GPLMUX11 */
+       1, /* GPLMUX12 */
+       1, /* GPLMUX13 */
+       1, /* GPLMUX14 */
+       1, /* GPLMUX15 */
+       1, /* GPLMUX16 */
+       1, /* GPLMUX17 */
+       1, /* GPLMUX18 */
+       1, /* GPLMUX19 */
+       1, /* GPLMUX20 */
+       1, /* GPLMUX21 */
+       1, /* GPLMUX22 */
+       1, /* GPLMUX23 */
+       1, /* GPLMUX24 */
+       1, /* GPLMUX25 */
+       1, /* GPLMUX26 */
+       1, /* GPLMUX27 */
+       1, /* GPLMUX28 */
+       1, /* GPLMUX29 */
+       1, /* GPLMUX30 */
+       1, /* GPLMUX31 */
+       1, /* GPLMUX32 */
+       1, /* GPLMUX33 */
+       1, /* GPLMUX34 */
+       1, /* GPLMUX35 */
+       1, /* GPLMUX36 */
+       1, /* GPLMUX37 */
+       1, /* GPLMUX38 */
+       1, /* GPLMUX39 */
+       1, /* GPLMUX40 */
+       1, /* GPLMUX41 */
+       1, /* GPLMUX42 */
+       1, /* GPLMUX43 */
+       1, /* GPLMUX44 */
+       1, /* GPLMUX45 */
+       1, /* GPLMUX46 */
+       1, /* GPLMUX47 */
+       1, /* GPLMUX48 */
+       1, /* GPLMUX49 */
+       1, /* GPLMUX50 */
+       1, /* GPLMUX51 */
+       1, /* GPLMUX52 */
+       1, /* GPLMUX53 */
+       1, /* GPLMUX54 */
+       1, /* GPLMUX55 */
+       1, /* GPLMUX56 */
+       1, /* GPLMUX57 */
+       1, /* GPLMUX58 */
+       1, /* GPLMUX59 */
+       1, /* GPLMUX60 */
+       1, /* GPLMUX61 */
+       1, /* GPLMUX62 */
+       1, /* GPLMUX63 */
+       1, /* GPLMUX64 */
+       1, /* GPLMUX65 */
+       1, /* GPLMUX66 */
+       1, /* GPLMUX67 */
+       1, /* GPLMUX68 */
+       1, /* GPLMUX69 */
+       1, /* GPLMUX70 */
+       0, /* NANDUSEFPGA */
+       0, /* UART0USEFPGA */
+       0, /* RGMII1USEFPGA */
+       0, /* SPIS0USEFPGA */
+       0, /* CAN0USEFPGA */
+       0, /* I2C0USEFPGA */
+       0, /* SDMMCUSEFPGA */
+       0, /* QSPIUSEFPGA */
+       0, /* SPIS1USEFPGA */
+       0, /* RGMII0USEFPGA */
+       0, /* UART1USEFPGA */
+       0, /* CAN1USEFPGA */
+       0, /* USB1USEFPGA */
+       0, /* I2C3USEFPGA */
+       0, /* I2C2USEFPGA */
+       0, /* I2C1USEFPGA */
+       0, /* SPIM1USEFPGA */
+       0, /* USB0USEFPGA */
+       0 /* SPIM0USEFPGA */
+};
+#endif /* __SOCFPGA_PINMUX_CONFIG_H__ */
diff --git a/board/terasic/de0-nano-soc/qts/pll_config.h b/board/terasic/de0-nano-soc/qts/pll_config.h
new file mode 100644 (file)
index 0000000..6e5b998
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Altera SoCFPGA Clock and PLL configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef _PRELOADER_PLL_CONFIG_H_
+#define _PRELOADER_PLL_CONFIG_H_
+
+#define CONFIG_HPS_DBCTRL_STAYOSC1 1
+
+#define CONFIG_HPS_MAINPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_MAINPLLGRP_VCO_NUMER 73
+#define CONFIG_HPS_MAINPLLGRP_MPUCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_MAINCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_DBGATCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_MAINQSPICLK_CNT 511
+#define CONFIG_HPS_MAINPLLGRP_MAINNANDSDMMCCLK_CNT 511
+#define CONFIG_HPS_MAINPLLGRP_CFGS2FUSER0CLK_CNT 18
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L3MPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L3SPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L4MPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L4SPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_DBGDIV_DBGATCLK 0
+#define CONFIG_HPS_MAINPLLGRP_DBGDIV_DBGCLK 1
+#define CONFIG_HPS_MAINPLLGRP_TRACEDIV_TRACECLK 0
+#define CONFIG_HPS_MAINPLLGRP_L4SRC_L4MP 1
+#define CONFIG_HPS_MAINPLLGRP_L4SRC_L4SP 1
+
+#define CONFIG_HPS_PERPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_PERPLLGRP_VCO_NUMER 39
+#define CONFIG_HPS_PERPLLGRP_VCO_PSRC 0
+#define CONFIG_HPS_PERPLLGRP_EMAC0CLK_CNT 511
+#define CONFIG_HPS_PERPLLGRP_EMAC1CLK_CNT 3
+#define CONFIG_HPS_PERPLLGRP_PERQSPICLK_CNT 511
+#define CONFIG_HPS_PERPLLGRP_PERNANDSDMMCCLK_CNT 4
+#define CONFIG_HPS_PERPLLGRP_PERBASECLK_CNT 4
+#define CONFIG_HPS_PERPLLGRP_S2FUSER1CLK_CNT 19
+#define CONFIG_HPS_PERPLLGRP_DIV_USBCLK 0
+#define CONFIG_HPS_PERPLLGRP_DIV_SPIMCLK 0
+#define CONFIG_HPS_PERPLLGRP_DIV_CAN0CLK 4
+#define CONFIG_HPS_PERPLLGRP_DIV_CAN1CLK 4
+#define CONFIG_HPS_PERPLLGRP_GPIODIV_GPIODBCLK 6249
+#define CONFIG_HPS_PERPLLGRP_SRC_SDMMC 2
+#define CONFIG_HPS_PERPLLGRP_SRC_NAND 2
+#define CONFIG_HPS_PERPLLGRP_SRC_QSPI 1
+
+#define CONFIG_HPS_SDRPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_SDRPLLGRP_VCO_NUMER 31
+#define CONFIG_HPS_SDRPLLGRP_VCO_SSRC 0
+#define CONFIG_HPS_SDRPLLGRP_DDRDQSCLK_CNT 1
+#define CONFIG_HPS_SDRPLLGRP_DDRDQSCLK_PHASE 0
+#define CONFIG_HPS_SDRPLLGRP_DDR2XDQSCLK_CNT 0
+#define CONFIG_HPS_SDRPLLGRP_DDR2XDQSCLK_PHASE 0
+#define CONFIG_HPS_SDRPLLGRP_DDRDQCLK_CNT 1
+#define CONFIG_HPS_SDRPLLGRP_DDRDQCLK_PHASE 4
+#define CONFIG_HPS_SDRPLLGRP_S2FUSER2CLK_CNT 5
+#define CONFIG_HPS_SDRPLLGRP_S2FUSER2CLK_PHASE 0
+
+#define CONFIG_HPS_CLK_OSC1_HZ 25000000
+#define CONFIG_HPS_CLK_OSC2_HZ 25000000
+#define CONFIG_HPS_CLK_F2S_SDR_REF_HZ 0
+#define CONFIG_HPS_CLK_F2S_PER_REF_HZ 0
+#define CONFIG_HPS_CLK_MAINVCO_HZ 1850000000
+#define CONFIG_HPS_CLK_PERVCO_HZ 1000000000
+#define CONFIG_HPS_CLK_SDRVCO_HZ 800000000
+#define CONFIG_HPS_CLK_EMAC0_HZ 1953125
+#define CONFIG_HPS_CLK_EMAC1_HZ 250000000
+#define CONFIG_HPS_CLK_USBCLK_HZ 200000000
+#define CONFIG_HPS_CLK_NAND_HZ 50000000
+#define CONFIG_HPS_CLK_SDMMC_HZ 200000000
+#define CONFIG_HPS_CLK_QSPI_HZ 3613281
+#define CONFIG_HPS_CLK_SPIM_HZ 200000000
+#define CONFIG_HPS_CLK_CAN0_HZ 12500000
+#define CONFIG_HPS_CLK_CAN1_HZ 12500000
+#define CONFIG_HPS_CLK_GPIODB_HZ 32000
+#define CONFIG_HPS_CLK_L4_MP_HZ 100000000
+#define CONFIG_HPS_CLK_L4_SP_HZ 100000000
+
+#define CONFIG_HPS_ALTERAGRP_MPUCLK 1
+#define CONFIG_HPS_ALTERAGRP_MAINCLK 4
+#define CONFIG_HPS_ALTERAGRP_DBGATCLK 4
+
+#endif /* _PRELOADER_PLL_CONFIG_H_ */
+
diff --git a/board/terasic/de0-nano-soc/qts/sdram_config.h b/board/terasic/de0-nano-soc/qts/sdram_config.h
new file mode 100644 (file)
index 0000000..7084797
--- /dev/null
@@ -0,0 +1,342 @@
+/*
+ * Altera SoCFPGA SDRAM configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+#ifndef __SDRAM_CONFIG_H
+#define __SDRAM_CONFIG_H
+
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMTYPE                 2
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMBL                   8
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ADDRORDER               0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCEN                   0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCCORREN               0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_REORDEREN               1
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_STARVELIMIT             10
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_DQSTRKEN                        0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_NODMPINS                        0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TCWL                        7
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_AL                  0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TCL                 7
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TRRD                        3
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TFAW                        15
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TRFC                        120
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TREFI            3120
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TRCD             6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TRP              6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TWR              6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TWTR             4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRTP                        3
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRAS                        14
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRC                 20
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TMRD                        4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TCCD                        4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING4_SELFRFSHEXIT                512
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING4_PWRDOWNEXIT         3
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWRTIMING_AUTOPDCYCLES       0
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWRTIMING_CLKDISABLECYCLES   8
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_COLBITS               10
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_ROWBITS               15
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_BANKBITS              3
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_CSBITS                        1
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMIFWIDTH_IFWIDTH             32
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMDEVWIDTH_DEVWIDTH           8
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMINTR_INTREN                 0
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWREQ_SELFRFSHMASK           3
+#define CONFIG_HPS_SDR_CTRLCFG_STATICCFG_MEMBL                 2
+#define CONFIG_HPS_SDR_CTRLCFG_STATICCFG_USEECCASDATA          0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLWIDTH_CTRLWIDTH             2
+#define CONFIG_HPS_SDR_CTRLCFG_PORTCFG_AUTOPCHEN               0
+#define CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_SYNCMODE                        0
+#define CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_INCSYNC                 0
+#define CONFIG_HPS_SDR_CTRLCFG_MPPRIORITY_USERPRIORITY         0x3FFD1088
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_0_STATICWEIGHT_31_0   0x21084210
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_STATICWEIGHT_49_32  0x1EF84
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_SUMOFWEIGHT_13_0    0x2020
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_2_SUMOFWEIGHT_45_14   0x0
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_3_SUMOFWEIGHT_63_46   0xF800
+#define CONFIG_HPS_SDR_CTRLCFG_PHYCTRL_PHYCTRL_0               0x200
+
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTWIDTH_CPORTWIDTH           0x44555
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTWMAP_CPORTWMAP             0x2C011000
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTRMAP_CPORTRMAP             0xB00088
+#define CONFIG_HPS_SDR_CTRLCFG_RFIFOCMAP_RFIFOCMAP             0x760210
+#define CONFIG_HPS_SDR_CTRLCFG_WFIFOCMAP_WFIFOCMAP             0x980543
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTRDWR_CPORTRDWR             0x5A56A
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_0_THRESHOLD1_31_0      0x20820820
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD1_59_32     0x8208208
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD2_3_0       0
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_2_THRESHOLD2_35_4      0x41041041
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_3_THRESHOLD2_59_36     0x410410
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0        0x01010101
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32 0x01010101
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64 0x0101
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMODT_READ                    0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMODT_WRITE                   1
+#define CONFIG_HPS_SDR_CTRLCFG_FPGAPORTRST_READ_PORT_USED      0x1
+#define CONFIG_HPS_SDR_CTRLCFG_FPGAPORTRST_WRITE_PORT_USED     0x1
+#define CONFIG_HPS_SDR_CTRLCFG_FPGAPORTRST_COMMAND_PORT_USED   0x3
+#define CONFIG_HPS_SDR_CTRLCFG_FPGAPORTRST                     0x311
+
+/* Sequencer auto configuration */
+#define RW_MGR_ACTIVATE_0_AND_1 0x0D
+#define RW_MGR_ACTIVATE_0_AND_1_WAIT1   0x0E
+#define RW_MGR_ACTIVATE_0_AND_1_WAIT2   0x10
+#define RW_MGR_ACTIVATE_1       0x0F
+#define RW_MGR_CLEAR_DQS_ENABLE 0x49
+#define RW_MGR_GUARANTEED_READ  0x4C
+#define RW_MGR_GUARANTEED_READ_CONT     0x54
+#define RW_MGR_GUARANTEED_WRITE 0x18
+#define RW_MGR_GUARANTEED_WRITE_WAIT0   0x1B
+#define RW_MGR_GUARANTEED_WRITE_WAIT1   0x1F
+#define RW_MGR_GUARANTEED_WRITE_WAIT2   0x19
+#define RW_MGR_GUARANTEED_WRITE_WAIT3   0x1D
+#define RW_MGR_IDLE     0x00
+#define RW_MGR_IDLE_LOOP1       0x7B
+#define RW_MGR_IDLE_LOOP2       0x7A
+#define RW_MGR_INIT_RESET_0_CKE_0       0x6F
+#define RW_MGR_INIT_RESET_1_CKE_0       0x74
+#define RW_MGR_LFSR_WR_RD_BANK_0        0x22
+#define RW_MGR_LFSR_WR_RD_BANK_0_DATA   0x25
+#define RW_MGR_LFSR_WR_RD_BANK_0_DQS    0x24
+#define RW_MGR_LFSR_WR_RD_BANK_0_NOP    0x23
+#define RW_MGR_LFSR_WR_RD_BANK_0_WAIT   0x32
+#define RW_MGR_LFSR_WR_RD_BANK_0_WL_1   0x21
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0     0x36
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_DATA        0x39
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_DQS 0x38
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_NOP 0x37
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_WAIT        0x46
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_WL_1        0x35
+#define RW_MGR_MRS0_DLL_RESET   0x02
+#define RW_MGR_MRS0_DLL_RESET_MIRR      0x08
+#define RW_MGR_MRS0_USER        0x07
+#define RW_MGR_MRS0_USER_MIRR   0x0C
+#define RW_MGR_MRS1     0x03
+#define RW_MGR_MRS1_MIRR        0x09
+#define RW_MGR_MRS2     0x04
+#define RW_MGR_MRS2_MIRR        0x0A
+#define RW_MGR_MRS3     0x05
+#define RW_MGR_MRS3_MIRR        0x0B
+#define RW_MGR_PRECHARGE_ALL    0x12
+#define RW_MGR_READ_B2B 0x59
+#define RW_MGR_READ_B2B_WAIT1   0x61
+#define RW_MGR_READ_B2B_WAIT2   0x6B
+#define RW_MGR_REFRESH_ALL      0x14
+#define RW_MGR_RETURN   0x01
+#define RW_MGR_SGLE_READ        0x7D
+#define RW_MGR_ZQCL     0x06
+
+/* Sequencer defines configuration */
+#define AFI_RATE_RATIO  1
+#define CALIB_LFIFO_OFFSET      8
+#define CALIB_VFIFO_OFFSET      6
+#define ENABLE_SUPER_QUICK_CALIBRATION  0
+#define IO_DELAY_PER_DCHAIN_TAP 25
+#define IO_DELAY_PER_DQS_EN_DCHAIN_TAP  25
+#define IO_DELAY_PER_OPA_TAP    312
+#define IO_DLL_CHAIN_LENGTH     8
+#define IO_DQDQS_OUT_PHASE_MAX  0
+#define IO_DQS_EN_DELAY_MAX     31
+#define IO_DQS_EN_DELAY_OFFSET  0
+#define IO_DQS_EN_PHASE_MAX     7
+#define IO_DQS_IN_DELAY_MAX     31
+#define IO_DQS_IN_RESERVE       4
+#define IO_DQS_OUT_RESERVE      4
+#define IO_IO_IN_DELAY_MAX      31
+#define IO_IO_OUT1_DELAY_MAX    31
+#define IO_IO_OUT2_DELAY_MAX    0
+#define IO_SHIFT_DQS_EN_WHEN_SHIFT_DQS  0
+#define MAX_LATENCY_COUNT_WIDTH 5
+#define READ_VALID_FIFO_SIZE    16
+#define REG_FILE_INIT_SEQ_SIGNATURE     0x5555048d
+#define RW_MGR_MEM_ADDRESS_MIRRORING    0
+#define RW_MGR_MEM_DATA_MASK_WIDTH      4
+#define RW_MGR_MEM_DATA_WIDTH   32
+#define RW_MGR_MEM_DQ_PER_READ_DQS      8
+#define RW_MGR_MEM_DQ_PER_WRITE_DQS     8
+#define RW_MGR_MEM_IF_READ_DQS_WIDTH    4
+#define RW_MGR_MEM_IF_WRITE_DQS_WIDTH   4
+#define RW_MGR_MEM_NUMBER_OF_CS_PER_DIMM        1
+#define RW_MGR_MEM_NUMBER_OF_RANKS      1
+#define RW_MGR_MEM_VIRTUAL_GROUPS_PER_READ_DQS  1
+#define RW_MGR_MEM_VIRTUAL_GROUPS_PER_WRITE_DQS 1
+#define RW_MGR_TRUE_MEM_DATA_MASK_WIDTH 4
+#define TINIT_CNTR0_VAL 99
+#define TINIT_CNTR1_VAL 32
+#define TINIT_CNTR2_VAL 32
+#define TRESET_CNTR0_VAL        99
+#define TRESET_CNTR1_VAL        99
+#define TRESET_CNTR2_VAL        10
+
+/* Sequencer ac_rom_init configuration */
+const u32 ac_rom_init[] = {
+       0x20700000,
+       0x20780000,
+       0x10080431,
+       0x10080530,
+       0x10090044,
+       0x100a0010,
+       0x100b0000,
+       0x10380400,
+       0x10080449,
+       0x100804c8,
+       0x100a0024,
+       0x10090008,
+       0x100b0000,
+       0x30780000,
+       0x38780000,
+       0x30780000,
+       0x10680000,
+       0x106b0000,
+       0x10280400,
+       0x10480000,
+       0x1c980000,
+       0x1c9b0000,
+       0x1c980008,
+       0x1c9b0008,
+       0x38f80000,
+       0x3cf80000,
+       0x38780000,
+       0x18180000,
+       0x18980000,
+       0x13580000,
+       0x135b0000,
+       0x13580008,
+       0x135b0008,
+       0x33780000,
+       0x10580008,
+       0x10780000
+};
+
+/* Sequencer inst_rom_init configuration */
+const u32 inst_rom_init[] = {
+       0x80000,
+       0x80680,
+       0x8180,
+       0x8200,
+       0x8280,
+       0x8300,
+       0x8380,
+       0x8100,
+       0x8480,
+       0x8500,
+       0x8580,
+       0x8600,
+       0x8400,
+       0x800,
+       0x8680,
+       0x880,
+       0xa680,
+       0x80680,
+       0x900,
+       0x80680,
+       0x980,
+       0xa680,
+       0x8680,
+       0x80680,
+       0xb68,
+       0xcce8,
+       0xae8,
+       0x8ce8,
+       0xb88,
+       0xec88,
+       0xa08,
+       0xac88,
+       0x80680,
+       0xce00,
+       0xcd80,
+       0xe700,
+       0xc00,
+       0x20ce0,
+       0x20ce0,
+       0x20ce0,
+       0x20ce0,
+       0xd00,
+       0x680,
+       0x680,
+       0x680,
+       0x680,
+       0x60e80,
+       0x61080,
+       0x61080,
+       0x61080,
+       0xa680,
+       0x8680,
+       0x80680,
+       0xce00,
+       0xcd80,
+       0xe700,
+       0xc00,
+       0x30ce0,
+       0x30ce0,
+       0x30ce0,
+       0x30ce0,
+       0xd00,
+       0x680,
+       0x680,
+       0x680,
+       0x680,
+       0x70e80,
+       0x71080,
+       0x71080,
+       0x71080,
+       0xa680,
+       0x8680,
+       0x80680,
+       0x1158,
+       0x6d8,
+       0x80680,
+       0x1168,
+       0x7e8,
+       0x7e8,
+       0x87e8,
+       0x40fe8,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0x1168,
+       0x7e8,
+       0x7e8,
+       0xa7e8,
+       0x80680,
+       0x40e88,
+       0x41088,
+       0x41088,
+       0x41088,
+       0x40f68,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0xa680,
+       0x40fe8,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0x41008,
+       0x41088,
+       0x41088,
+       0x41088,
+       0x1100,
+       0xc680,
+       0x8680,
+       0xe680,
+       0x80680,
+       0x0,
+       0x8000,
+       0xa000,
+       0xc000,
+       0x80000,
+       0x80,
+       0x8080,
+       0xa080,
+       0xc080,
+       0x80080,
+       0x9180,
+       0x8680,
+       0xa680,
+       0x80680,
+       0x40f08,
+       0x80680
+};
+#endif /*#ifndef__SDRAM_CONFIG_H */
diff --git a/board/terasic/de0-nano-soc/socfpga.c b/board/terasic/de0-nano-soc/socfpga.c
new file mode 100644 (file)
index 0000000..85700b0
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ *  Copyright (C) 2012 Altera Corporation <www.altera.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+
+#include <micrel.h>
+#include <netdev.h>
+#include <phy.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void s_init(void) {}
+
+/*
+ * Miscellaneous platform dependent initialisations
+ */
+int board_init(void)
+{
+       /* Address of boot parameters for ATAG (if ATAG is used) */
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+       return 0;
+}
+
+/*
+ * PHY configuration
+ */
+#ifdef CONFIG_PHY_MICREL_KSZ9031
+int board_phy_config(struct phy_device *phydev)
+{
+       int ret;
+       /*
+        * These skew settings for the KSZ9021 ethernet phy is required for ethernet
+        * to work reliably on most flavors of cyclone5 boards.
+        */
+       ret = ksz9031_phy_extended_write(phydev, 0x2,
+                                        MII_KSZ9031_EXT_RGMII_CTRL_SIG_SKEW,
+                                        MII_KSZ9031_MOD_DATA_NO_POST_INC,
+                                        0x70);
+       if (ret)
+               return ret;
+
+       ret = ksz9031_phy_extended_write(phydev, 0x2,
+                                        MII_KSZ9031_EXT_RGMII_RX_DATA_SKEW,
+                                        MII_KSZ9031_MOD_DATA_NO_POST_INC,
+                                        0x7777);
+       if (ret)
+               return ret;
+
+       ret = ksz9031_phy_extended_write(phydev, 0x2,
+                                        MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW,
+                                        MII_KSZ9031_MOD_DATA_NO_POST_INC,
+                                        0);
+       if (ret)
+               return ret;
+
+       ret = ksz9031_phy_extended_write(phydev, 0x2,
+                                        MII_KSZ9031_EXT_RGMII_CLOCK_SKEW,
+                                        MII_KSZ9031_MOD_DATA_NO_POST_INC,
+                                        0x03FC);
+       if (ret)
+               return ret;
+
+       if (phydev->drv->config)
+               return phydev->drv->config(phydev);
+
+       return 0;
+}
+#endif
diff --git a/board/terasic/sockit/MAINTAINERS b/board/terasic/sockit/MAINTAINERS
new file mode 100644 (file)
index 0000000..792f184
--- /dev/null
@@ -0,0 +1,5 @@
+SOCKIT BOARD
+M:     Marek Vasut <marex@denx.de>
+S:     Maintained
+F:     include/configs/socfpga_sockit.h
+F:     configs/socfpga_sockit_defconfig
diff --git a/board/terasic/sockit/Makefile b/board/terasic/sockit/Makefile
new file mode 100644 (file)
index 0000000..86f9b78
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# (C) Copyright 2001-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+# (C) Copyright 2010, Thomas Chou <thomas@wytron.com.tw>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := socfpga.o
diff --git a/board/terasic/sockit/qts/iocsr_config.h b/board/terasic/sockit/qts/iocsr_config.h
new file mode 100644 (file)
index 0000000..83b1093
--- /dev/null
@@ -0,0 +1,660 @@
+/*
+ * Altera SoCFPGA IOCSR configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_IOCSR_CONFIG_H__
+#define __SOCFPGA_IOCSR_CONFIG_H__
+
+#define CONFIG_HPS_IOCSR_SCANCHAIN0_LENGTH     764
+#define CONFIG_HPS_IOCSR_SCANCHAIN1_LENGTH     1719
+#define CONFIG_HPS_IOCSR_SCANCHAIN2_LENGTH     955
+#define CONFIG_HPS_IOCSR_SCANCHAIN3_LENGTH     16766
+
+const unsigned long iocsr_scan_chain0_table[] = {
+       0x00000000,
+       0x00000000,
+       0x0FF00000,
+       0xC0000000,
+       0x0000003F,
+       0x00008000,
+       0x00060180,
+       0x18060000,
+       0x18000000,
+       0x00018060,
+       0x00000000,
+       0x00004000,
+       0x000300C0,
+       0x0C030000,
+       0x0C000000,
+       0x00000030,
+       0x0000C030,
+       0x00002000,
+       0x00018060,
+       0x06018000,
+       0x06000000,
+       0x00000018,
+       0x00006018,
+       0x00001000,
+};
+
+const unsigned long iocsr_scan_chain1_table[] = {
+       0x00100000,
+       0x300C0000,
+       0x300000C0,
+       0x000000C0,
+       0x000300C0,
+       0x00008000,
+       0x00080000,
+       0x20000000,
+       0x00000000,
+       0x00000080,
+       0x00020000,
+       0x00004000,
+       0x000300C0,
+       0x10000000,
+       0x0C000000,
+       0x00000030,
+       0x0000C030,
+       0x00002000,
+       0x06018060,
+       0x06018000,
+       0x01FE0000,
+       0xF8000000,
+       0x00000007,
+       0x00001000,
+       0x0000C030,
+       0x0300C000,
+       0x03000000,
+       0x0000300C,
+       0x0000300C,
+       0x00000800,
+       0x00000000,
+       0x00000000,
+       0x01800000,
+       0x00000006,
+       0x00002000,
+       0x00000400,
+       0x00000000,
+       0x00C03000,
+       0x00000003,
+       0x00000000,
+       0x00000000,
+       0x00000200,
+       0x00601806,
+       0x00000000,
+       0x80600000,
+       0x80000601,
+       0x00000601,
+       0x00000100,
+       0x00300C03,
+       0xC0300C00,
+       0xC0300000,
+       0xC0000300,
+       0x000C0300,
+       0x00000080,
+};
+
+const unsigned long iocsr_scan_chain2_table[] = {
+       0x300C0300,
+       0x00000000,
+       0x0FF00000,
+       0x00000000,
+       0x0C0300C0,
+       0x00008000,
+       0x18060180,
+       0x18060000,
+       0x18000000,
+       0x00018060,
+       0x00018060,
+       0x00004000,
+       0x000300C0,
+       0x0C030000,
+       0x00000030,
+       0x00000000,
+       0x0300C030,
+       0x00002000,
+       0x00018060,
+       0x06018000,
+       0x06000000,
+       0x00000018,
+       0x00006018,
+       0x00001000,
+       0x0000C030,
+       0x00000000,
+       0x03000000,
+       0x0000000C,
+       0x00C0300C,
+       0x00000800,
+};
+
+const unsigned long iocsr_scan_chain3_table[] = {
+       0x0C420D80,
+       0x082000FF,
+       0x0A804001,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0x0A800000,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0xC8800000,
+       0x00003001,
+       0x00C00722,
+       0x00000000,
+       0x00000021,
+       0x82000004,
+       0x05400000,
+       0x03C80000,
+       0x04010000,
+       0x00080000,
+       0x05400000,
+       0x03C80000,
+       0x05400000,
+       0x03C80000,
+       0xE4400000,
+       0x00001800,
+       0x00600391,
+       0x800E4400,
+       0x00000001,
+       0x40000002,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x72200000,
+       0x80000C00,
+       0x003001C8,
+       0xC0072200,
+       0x1C880000,
+       0x20000300,
+       0x00040000,
+       0x50670000,
+       0x00000010,
+       0x24590000,
+       0x00001000,
+       0xA0000034,
+       0x0D000001,
+       0x40680208,
+       0x41034051,
+       0x12481A00,
+       0x802080D0,
+       0x34051406,
+       0x01A02490,
+       0x080D0000,
+       0x51406802,
+       0x02490340,
+       0xD000001A,
+       0x0680A280,
+       0x10040000,
+       0x00200000,
+       0x10040000,
+       0x00200000,
+       0x15000000,
+       0x0F200000,
+       0x15000000,
+       0x0F200000,
+       0x01FE0000,
+       0x00000000,
+       0x01800E44,
+       0x00391000,
+       0x007F8006,
+       0x00000000,
+       0x0A800001,
+       0x07900000,
+       0x0A800000,
+       0x07900000,
+       0x0A800000,
+       0x07900000,
+       0x08020000,
+       0x00100000,
+       0xC8800000,
+       0x00003001,
+       0x00C00722,
+       0x00000FF0,
+       0x72200000,
+       0x80000C00,
+       0x05400000,
+       0x02480000,
+       0x04000000,
+       0x00080000,
+       0x05400000,
+       0x03C80000,
+       0x05400000,
+       0x03C80000,
+       0x6A1C0000,
+       0x00001800,
+       0x00600391,
+       0x800E4400,
+       0x1A870001,
+       0x40000600,
+       0x02A00040,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x02A00000,
+       0x01E40000,
+       0x72200000,
+       0x80000C00,
+       0x003001C8,
+       0xC0072200,
+       0x1C880000,
+       0x20000300,
+       0x00040000,
+       0x50670000,
+       0x00000010,
+       0x24590000,
+       0x00001000,
+       0xA0000034,
+       0x0D000001,
+       0x40680208,
+       0x49034051,
+       0x12481A02,
+       0x80A280D0,
+       0x34030C06,
+       0x01A00040,
+       0x280D0002,
+       0x5140680A,
+       0x02490340,
+       0xD012481A,
+       0x0680A280,
+       0x10040000,
+       0x00200000,
+       0x10040000,
+       0x00200000,
+       0x15000000,
+       0x0F200000,
+       0x15000000,
+       0x0F200000,
+       0x01FE0000,
+       0x00000000,
+       0x01800E44,
+       0x00391000,
+       0x007F8006,
+       0x00000000,
+       0x99300001,
+       0x34343400,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x01000000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x0002A000,
+       0x0001E400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0xC880090C,
+       0x00003001,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00010040,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00002000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x04864000,
+       0x59647A01,
+       0xD32CA3DE,
+       0xF551451E,
+       0x034CD348,
+       0x821A0000,
+       0x0000D000,
+       0x05140680,
+       0xD669A47A,
+       0x1ED32CA3,
+       0x48F55E79,
+       0x00034C92,
+       0x00080200,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x10000000,
+       0x00000000,
+       0x0080C000,
+       0x41000000,
+       0x00003FC2,
+       0x00820000,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00008000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x00020080,
+       0x00000400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0x0000090C,
+       0x00000010,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00015000,
+       0x0000F200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00600391,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x14864000,
+       0x59647A05,
+       0x9228A3DE,
+       0xF65E791E,
+       0x034CD348,
+       0x821A0186,
+       0x0000D000,
+       0x00000680,
+       0xD669A47A,
+       0x1E9228A3,
+       0x48F65E79,
+       0x00034CD3,
+       0x00080200,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x10000000,
+       0x00000000,
+       0x0080C000,
+       0x41000000,
+       0x04000002,
+       0x00820000,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00008000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x0002A000,
+       0x0001E400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0xC880090C,
+       0x00003001,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00010040,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00002000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F3690D,
+       0x1A041414,
+       0x00D00000,
+       0x0C864000,
+       0x79E47A03,
+       0xB2AAA3D1,
+       0xF551451E,
+       0x035CD348,
+       0x821A0000,
+       0x0000D000,
+       0x00000680,
+       0xD159647A,
+       0x1ED32CA3,
+       0x48F55145,
+       0x00035CD3,
+       0x00080200,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x10000000,
+       0x00000000,
+       0x0080C000,
+       0x41000000,
+       0x04000002,
+       0x00820000,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0xAA0D4000,
+       0x01C3A800,
+       0x00040100,
+       0x00000800,
+       0x00000000,
+       0x00001208,
+       0x00482000,
+       0x00008000,
+       0x00000000,
+       0x00410482,
+       0x0006A000,
+       0x0001B400,
+       0x00020000,
+       0x00000400,
+       0x00020080,
+       0x00000400,
+       0x5506A000,
+       0x00E1D400,
+       0x00000000,
+       0x0000090C,
+       0x00000010,
+       0x90400000,
+       0x00000000,
+       0x2020C243,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x2A835000,
+       0x0070EA00,
+       0x00010040,
+       0x00000200,
+       0x00000000,
+       0x00000482,
+       0x00120800,
+       0x00400000,
+       0x80000000,
+       0x00104120,
+       0x00000200,
+       0xAC0D5F80,
+       0xFFFFFFFF,
+       0x14F1690D,
+       0x1A041414,
+       0x00D00000,
+       0x04864000,
+       0x69A47A01,
+       0x9228A3D6,
+       0xF65E791E,
+       0x034C9248,
+       0x821A0000,
+       0x0000D000,
+       0x00000680,
+       0xDE59647A,
+       0x1ED32CA3,
+       0x48F55E79,
+       0x00034CD3,
+       0x00080200,
+       0x00001000,
+       0x00080200,
+       0x00001000,
+       0x000A8000,
+       0x00075000,
+       0x541A8000,
+       0x03875001,
+       0x10000000,
+       0x00000000,
+       0x0080C000,
+       0x41000000,
+       0x04000002,
+       0x00820000,
+       0x00489800,
+       0x801A1A1A,
+       0x00000200,
+       0x80000004,
+       0x00000200,
+       0x80000004,
+       0x00000200,
+       0x80000004,
+       0x00000200,
+       0x00000004,
+       0x00040000,
+       0x10000000,
+       0x00000000,
+       0x00000040,
+       0x00010000,
+       0x40002000,
+       0x00000100,
+       0x40000002,
+       0x00000100,
+       0x40000002,
+       0x00000100,
+       0x40000002,
+       0x00000100,
+       0x00000002,
+       0x00020000,
+       0x08000000,
+       0x00000000,
+       0x00000020,
+       0x00008000,
+       0x20001000,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x20000001,
+       0x00000080,
+       0x00000001,
+       0x00010000,
+       0x04000000,
+       0x00FF0000,
+       0x00000000,
+       0x00004000,
+       0x00000800,
+       0xC0000001,
+       0x00041419,
+       0x40000000,
+       0x04000816,
+       0x000D0000,
+       0x00006800,
+       0x00000340,
+       0xD000001A,
+       0x06800000,
+       0x00340000,
+       0x0001A000,
+       0x00000D00,
+       0x40000068,
+       0x1A000003,
+       0x00D00000,
+       0x00068000,
+       0x00003400,
+       0x000001A0,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x00000008,
+       0x00000401,
+       0x80000008,
+       0x0000007F,
+       0x20000000,
+       0x00000000,
+       0xE0000080,
+       0x0000001F,
+       0x00004000,
+};
+
+
+#endif /* __SOCFPGA_IOCSR_CONFIG_H__ */
diff --git a/board/terasic/sockit/qts/pinmux_config.h b/board/terasic/sockit/qts/pinmux_config.h
new file mode 100644 (file)
index 0000000..cddbbb2
--- /dev/null
@@ -0,0 +1,219 @@
+/*
+ * Altera SoCFPGA PinMux configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_PINMUX_CONFIG_H__
+#define __SOCFPGA_PINMUX_CONFIG_H__
+
+const u8 sys_mgr_init_table[] = {
+       0, /* EMACIO0 */
+       2, /* EMACIO1 */
+       2, /* EMACIO2 */
+       2, /* EMACIO3 */
+       2, /* EMACIO4 */
+       2, /* EMACIO5 */
+       2, /* EMACIO6 */
+       2, /* EMACIO7 */
+       2, /* EMACIO8 */
+       0, /* EMACIO9 */
+       2, /* EMACIO10 */
+       2, /* EMACIO11 */
+       2, /* EMACIO12 */
+       2, /* EMACIO13 */
+       0, /* EMACIO14 */
+       0, /* EMACIO15 */
+       0, /* EMACIO16 */
+       0, /* EMACIO17 */
+       0, /* EMACIO18 */
+       0, /* EMACIO19 */
+       3, /* FLASHIO0 */
+       0, /* FLASHIO1 */
+       3, /* FLASHIO2 */
+       3, /* FLASHIO3 */
+       0, /* FLASHIO4 */
+       0, /* FLASHIO5 */
+       0, /* FLASHIO6 */
+       0, /* FLASHIO7 */
+       0, /* FLASHIO8 */
+       3, /* FLASHIO9 */
+       3, /* FLASHIO10 */
+       3, /* FLASHIO11 */
+       0, /* GENERALIO0 */
+       1, /* GENERALIO1 */
+       1, /* GENERALIO2 */
+       1, /* GENERALIO3 */
+       1, /* GENERALIO4 */
+       0, /* GENERALIO5 */
+       0, /* GENERALIO6 */
+       0, /* GENERALIO7 */
+       0, /* GENERALIO8 */
+       3, /* GENERALIO9 */
+       3, /* GENERALIO10 */
+       3, /* GENERALIO11 */
+       3, /* GENERALIO12 */
+       0, /* GENERALIO13 */
+       0, /* GENERALIO14 */
+       1, /* GENERALIO15 */
+       1, /* GENERALIO16 */
+       1, /* GENERALIO17 */
+       1, /* GENERALIO18 */
+       0, /* GENERALIO19 */
+       0, /* GENERALIO20 */
+       0, /* GENERALIO21 */
+       0, /* GENERALIO22 */
+       0, /* GENERALIO23 */
+       0, /* GENERALIO24 */
+       0, /* GENERALIO25 */
+       0, /* GENERALIO26 */
+       0, /* GENERALIO27 */
+       0, /* GENERALIO28 */
+       0, /* GENERALIO29 */
+       0, /* GENERALIO30 */
+       0, /* GENERALIO31 */
+       2, /* MIXED1IO0 */
+       2, /* MIXED1IO1 */
+       2, /* MIXED1IO2 */
+       2, /* MIXED1IO3 */
+       2, /* MIXED1IO4 */
+       2, /* MIXED1IO5 */
+       2, /* MIXED1IO6 */
+       2, /* MIXED1IO7 */
+       2, /* MIXED1IO8 */
+       2, /* MIXED1IO9 */
+       2, /* MIXED1IO10 */
+       2, /* MIXED1IO11 */
+       2, /* MIXED1IO12 */
+       2, /* MIXED1IO13 */
+       0, /* MIXED1IO14 */
+       3, /* MIXED1IO15 */
+       3, /* MIXED1IO16 */
+       3, /* MIXED1IO17 */
+       3, /* MIXED1IO18 */
+       3, /* MIXED1IO19 */
+       3, /* MIXED1IO20 */
+       0, /* MIXED1IO21 */
+       0, /* MIXED2IO0 */
+       0, /* MIXED2IO1 */
+       0, /* MIXED2IO2 */
+       0, /* MIXED2IO3 */
+       0, /* MIXED2IO4 */
+       0, /* MIXED2IO5 */
+       0, /* MIXED2IO6 */
+       0, /* MIXED2IO7 */
+       0, /* GPLINMUX48 */
+       0, /* GPLINMUX49 */
+       0, /* GPLINMUX50 */
+       0, /* GPLINMUX51 */
+       0, /* GPLINMUX52 */
+       0, /* GPLINMUX53 */
+       0, /* GPLINMUX54 */
+       0, /* GPLINMUX55 */
+       0, /* GPLINMUX56 */
+       0, /* GPLINMUX57 */
+       0, /* GPLINMUX58 */
+       0, /* GPLINMUX59 */
+       0, /* GPLINMUX60 */
+       0, /* GPLINMUX61 */
+       0, /* GPLINMUX62 */
+       0, /* GPLINMUX63 */
+       0, /* GPLINMUX64 */
+       0, /* GPLINMUX65 */
+       0, /* GPLINMUX66 */
+       0, /* GPLINMUX67 */
+       0, /* GPLINMUX68 */
+       0, /* GPLINMUX69 */
+       0, /* GPLINMUX70 */
+       1, /* GPLMUX0 */
+       1, /* GPLMUX1 */
+       1, /* GPLMUX2 */
+       1, /* GPLMUX3 */
+       1, /* GPLMUX4 */
+       1, /* GPLMUX5 */
+       1, /* GPLMUX6 */
+       1, /* GPLMUX7 */
+       1, /* GPLMUX8 */
+       1, /* GPLMUX9 */
+       1, /* GPLMUX10 */
+       1, /* GPLMUX11 */
+       1, /* GPLMUX12 */
+       1, /* GPLMUX13 */
+       1, /* GPLMUX14 */
+       1, /* GPLMUX15 */
+       1, /* GPLMUX16 */
+       1, /* GPLMUX17 */
+       1, /* GPLMUX18 */
+       1, /* GPLMUX19 */
+       1, /* GPLMUX20 */
+       1, /* GPLMUX21 */
+       1, /* GPLMUX22 */
+       1, /* GPLMUX23 */
+       1, /* GPLMUX24 */
+       1, /* GPLMUX25 */
+       1, /* GPLMUX26 */
+       1, /* GPLMUX27 */
+       1, /* GPLMUX28 */
+       1, /* GPLMUX29 */
+       1, /* GPLMUX30 */
+       1, /* GPLMUX31 */
+       1, /* GPLMUX32 */
+       1, /* GPLMUX33 */
+       1, /* GPLMUX34 */
+       1, /* GPLMUX35 */
+       1, /* GPLMUX36 */
+       1, /* GPLMUX37 */
+       1, /* GPLMUX38 */
+       1, /* GPLMUX39 */
+       1, /* GPLMUX40 */
+       1, /* GPLMUX41 */
+       1, /* GPLMUX42 */
+       1, /* GPLMUX43 */
+       1, /* GPLMUX44 */
+       1, /* GPLMUX45 */
+       1, /* GPLMUX46 */
+       1, /* GPLMUX47 */
+       1, /* GPLMUX48 */
+       1, /* GPLMUX49 */
+       1, /* GPLMUX50 */
+       1, /* GPLMUX51 */
+       1, /* GPLMUX52 */
+       1, /* GPLMUX53 */
+       1, /* GPLMUX54 */
+       1, /* GPLMUX55 */
+       1, /* GPLMUX56 */
+       1, /* GPLMUX57 */
+       1, /* GPLMUX58 */
+       1, /* GPLMUX59 */
+       1, /* GPLMUX60 */
+       1, /* GPLMUX61 */
+       1, /* GPLMUX62 */
+       1, /* GPLMUX63 */
+       1, /* GPLMUX64 */
+       1, /* GPLMUX65 */
+       1, /* GPLMUX66 */
+       1, /* GPLMUX67 */
+       1, /* GPLMUX68 */
+       1, /* GPLMUX69 */
+       1, /* GPLMUX70 */
+       0, /* NANDUSEFPGA */
+       0, /* UART0USEFPGA */
+       0, /* RGMII1USEFPGA */
+       0, /* SPIS0USEFPGA */
+       0, /* CAN0USEFPGA */
+       0, /* I2C0USEFPGA */
+       0, /* SDMMCUSEFPGA */
+       0, /* QSPIUSEFPGA */
+       0, /* SPIS1USEFPGA */
+       0, /* RGMII0USEFPGA */
+       0, /* UART1USEFPGA */
+       0, /* CAN1USEFPGA */
+       0, /* USB1USEFPGA */
+       0, /* I2C3USEFPGA */
+       0, /* I2C2USEFPGA */
+       0, /* I2C1USEFPGA */
+       0, /* SPIM1USEFPGA */
+       0, /* USB0USEFPGA */
+       0 /* SPIM0USEFPGA */
+};
+#endif /* __SOCFPGA_PINMUX_CONFIG_H__ */
diff --git a/board/terasic/sockit/qts/pll_config.h b/board/terasic/sockit/qts/pll_config.h
new file mode 100644 (file)
index 0000000..0ecccbf
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ * Altera SoCFPGA Clock and PLL configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_PLL_CONFIG_H__
+#define __SOCFPGA_PLL_CONFIG_H__
+
+#define CONFIG_HPS_DBCTRL_STAYOSC1 1
+
+#define CONFIG_HPS_MAINPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_MAINPLLGRP_VCO_NUMER 73
+#define CONFIG_HPS_MAINPLLGRP_MPUCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_MAINCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_DBGATCLK_CNT 0
+#define CONFIG_HPS_MAINPLLGRP_MAINQSPICLK_CNT 4
+#define CONFIG_HPS_MAINPLLGRP_MAINNANDSDMMCCLK_CNT 511
+#define CONFIG_HPS_MAINPLLGRP_CFGS2FUSER0CLK_CNT 14
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L3MPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L3SPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L4MPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_MAINDIV_L4SPCLK 1
+#define CONFIG_HPS_MAINPLLGRP_DBGDIV_DBGATCLK 0
+#define CONFIG_HPS_MAINPLLGRP_DBGDIV_DBGCLK 1
+#define CONFIG_HPS_MAINPLLGRP_TRACEDIV_TRACECLK 0
+#define CONFIG_HPS_MAINPLLGRP_L4SRC_L4MP 1
+#define CONFIG_HPS_MAINPLLGRP_L4SRC_L4SP 1
+
+#define CONFIG_HPS_PERPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_PERPLLGRP_VCO_NUMER 39
+#define CONFIG_HPS_PERPLLGRP_VCO_PSRC 0
+#define CONFIG_HPS_PERPLLGRP_EMAC0CLK_CNT 511
+#define CONFIG_HPS_PERPLLGRP_EMAC1CLK_CNT 3
+#define CONFIG_HPS_PERPLLGRP_PERQSPICLK_CNT 511
+#define CONFIG_HPS_PERPLLGRP_PERNANDSDMMCCLK_CNT 4
+#define CONFIG_HPS_PERPLLGRP_PERBASECLK_CNT 4
+#define CONFIG_HPS_PERPLLGRP_S2FUSER1CLK_CNT 511
+#define CONFIG_HPS_PERPLLGRP_DIV_USBCLK 0
+#define CONFIG_HPS_PERPLLGRP_DIV_SPIMCLK 0
+#define CONFIG_HPS_PERPLLGRP_DIV_CAN0CLK 4
+#define CONFIG_HPS_PERPLLGRP_DIV_CAN1CLK 4
+#define CONFIG_HPS_PERPLLGRP_GPIODIV_GPIODBCLK 6249
+#define CONFIG_HPS_PERPLLGRP_SRC_SDMMC 2
+#define CONFIG_HPS_PERPLLGRP_SRC_NAND 2
+#define CONFIG_HPS_PERPLLGRP_SRC_QSPI 1
+
+#define CONFIG_HPS_SDRPLLGRP_VCO_DENOM 0
+#define CONFIG_HPS_SDRPLLGRP_VCO_NUMER 31
+#define CONFIG_HPS_SDRPLLGRP_VCO_SSRC 0
+#define CONFIG_HPS_SDRPLLGRP_DDRDQSCLK_CNT 1
+#define CONFIG_HPS_SDRPLLGRP_DDRDQSCLK_PHASE 0
+#define CONFIG_HPS_SDRPLLGRP_DDR2XDQSCLK_CNT 0
+#define CONFIG_HPS_SDRPLLGRP_DDR2XDQSCLK_PHASE 0
+#define CONFIG_HPS_SDRPLLGRP_DDRDQCLK_CNT 1
+#define CONFIG_HPS_SDRPLLGRP_DDRDQCLK_PHASE 4
+#define CONFIG_HPS_SDRPLLGRP_S2FUSER2CLK_CNT 5
+#define CONFIG_HPS_SDRPLLGRP_S2FUSER2CLK_PHASE 0
+
+#define CONFIG_HPS_CLK_OSC1_HZ 25000000
+#define CONFIG_HPS_CLK_OSC2_HZ 25000000
+#define CONFIG_HPS_CLK_F2S_SDR_REF_HZ 0
+#define CONFIG_HPS_CLK_F2S_PER_REF_HZ 0
+#define CONFIG_HPS_CLK_MAINVCO_HZ 1850000000
+#define CONFIG_HPS_CLK_PERVCO_HZ 1000000000
+#define CONFIG_HPS_CLK_SDRVCO_HZ 800000000
+#define CONFIG_HPS_CLK_EMAC0_HZ 1953125
+#define CONFIG_HPS_CLK_EMAC1_HZ 250000000
+#define CONFIG_HPS_CLK_USBCLK_HZ 200000000
+#define CONFIG_HPS_CLK_NAND_HZ 50000000
+#define CONFIG_HPS_CLK_SDMMC_HZ 200000000
+#define CONFIG_HPS_CLK_QSPI_HZ 370000000
+#define CONFIG_HPS_CLK_SPIM_HZ 200000000
+#define CONFIG_HPS_CLK_CAN0_HZ 12500000
+#define CONFIG_HPS_CLK_CAN1_HZ 12500000
+#define CONFIG_HPS_CLK_GPIODB_HZ 32000
+#define CONFIG_HPS_CLK_L4_MP_HZ 100000000
+#define CONFIG_HPS_CLK_L4_SP_HZ 100000000
+
+#define CONFIG_HPS_ALTERAGRP_MPUCLK 1
+#define CONFIG_HPS_ALTERAGRP_MAINCLK 4
+#define CONFIG_HPS_ALTERAGRP_DBGATCLK 4
+
+
+#endif /* __SOCFPGA_PLL_CONFIG_H__ */
diff --git a/board/terasic/sockit/qts/sdram_config.h b/board/terasic/sockit/qts/sdram_config.h
new file mode 100644 (file)
index 0000000..81c7d8e
--- /dev/null
@@ -0,0 +1,341 @@
+/*
+ * Altera SoCFPGA SDRAM configuration
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef __SOCFPGA_SDRAM_CONFIG_H__
+#define __SOCFPGA_SDRAM_CONFIG_H__
+
+/* SDRAM configuration */
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTRDWR_CPORTRDWR             0x5A56A
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTRMAP_CPORTRMAP             0xB00088
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTWIDTH_CPORTWIDTH           0x44555
+#define CONFIG_HPS_SDR_CTRLCFG_CPORTWMAP_CPORTWMAP             0x2C011000
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ADDRORDER               0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_DQSTRKEN                        0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCCORREN               0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_ECCEN                   0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMBL                   8
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_MEMTYPE                 2
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_NODMPINS                        0
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_REORDEREN               1
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLCFG_STARVELIMIT             10
+#define CONFIG_HPS_SDR_CTRLCFG_CTRLWIDTH_CTRLWIDTH             2
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_BANKBITS              3
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_COLBITS               10
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_CSBITS                        1
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMADDRW_ROWBITS               15
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMDEVWIDTH_DEVWIDTH           8
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMIFWIDTH_IFWIDTH             32
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMINTR_INTREN                 0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMODT_READ                    0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMODT_WRITE                   1
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_AL                  0
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TCL                 7
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TCWL                        6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TFAW                        12
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TRFC                        104
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING1_TRRD                        4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TRCD             6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TREFI            3120
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TRP              6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TWR              6
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING2_IF_TWTR             4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TCCD                        4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TMRD                        4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRAS                        14
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRC                 20
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING3_TRTP                        4
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING4_PWRDOWNEXIT         3
+#define CONFIG_HPS_SDR_CTRLCFG_DRAMTIMING4_SELFRFSHEXIT                512
+#define CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_INCSYNC                 0
+#define CONFIG_HPS_SDR_CTRLCFG_FIFOCFG_SYNCMODE                        0
+#define CONFIG_HPS_SDR_CTRLCFG_FPGAPORTRST                     0x1FF
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWREQ_SELFRFSHMASK           3
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWRTIMING_AUTOPDCYCLES       0
+#define CONFIG_HPS_SDR_CTRLCFG_LOWPWRTIMING_CLKDISABLECYCLES   8
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_0_THRESHOLD1_31_0      0x20820820
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD1_59_32     0x8208208
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_1_THRESHOLD2_3_0       0
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_2_THRESHOLD2_35_4      0x41041041
+#define CONFIG_HPS_SDR_CTRLCFG_MPPACING_3_THRESHOLD2_59_36     0x410410
+#define CONFIG_HPS_SDR_CTRLCFG_MPPRIORITY_USERPRIORITY         0x3FFD1088
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_0_THRESHOLDRSTCYCLES_31_0        0x01010101
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_1_THRESHOLDRSTCYCLES_63_32       0x01010101
+#define CONFIG_HPS_SDR_CTRLCFG_MPTHRESHOLDRST_2_THRESHOLDRSTCYCLES_79_64       0x0101
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_0_STATICWEIGHT_31_0   0x21084210
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_STATICWEIGHT_49_32  0x1EF84
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_1_SUMOFWEIGHT_13_0    0x2020
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_2_SUMOFWEIGHT_45_14   0x0
+#define CONFIG_HPS_SDR_CTRLCFG_MPWIEIGHT_3_SUMOFWEIGHT_63_46   0xF800
+#define CONFIG_HPS_SDR_CTRLCFG_PHYCTRL_PHYCTRL_0               0x200
+#define CONFIG_HPS_SDR_CTRLCFG_PORTCFG_AUTOPCHEN               0
+#define CONFIG_HPS_SDR_CTRLCFG_RFIFOCMAP_RFIFOCMAP             0x760210
+#define CONFIG_HPS_SDR_CTRLCFG_STATICCFG_MEMBL                 2
+#define CONFIG_HPS_SDR_CTRLCFG_STATICCFG_USEECCASDATA          0
+#define CONFIG_HPS_SDR_CTRLCFG_WFIFOCMAP_WFIFOCMAP             0x980543
+
+/* Sequencer auto configuration */
+#define RW_MGR_ACTIVATE_0_AND_1        0x0D
+#define RW_MGR_ACTIVATE_0_AND_1_WAIT1  0x0E
+#define RW_MGR_ACTIVATE_0_AND_1_WAIT2  0x10
+#define RW_MGR_ACTIVATE_1      0x0F
+#define RW_MGR_CLEAR_DQS_ENABLE        0x49
+#define RW_MGR_GUARANTEED_READ 0x4C
+#define RW_MGR_GUARANTEED_READ_CONT    0x54
+#define RW_MGR_GUARANTEED_WRITE        0x18
+#define RW_MGR_GUARANTEED_WRITE_WAIT0  0x1B
+#define RW_MGR_GUARANTEED_WRITE_WAIT1  0x1F
+#define RW_MGR_GUARANTEED_WRITE_WAIT2  0x19
+#define RW_MGR_GUARANTEED_WRITE_WAIT3  0x1D
+#define RW_MGR_IDLE    0x00
+#define RW_MGR_IDLE_LOOP1      0x7B
+#define RW_MGR_IDLE_LOOP2      0x7A
+#define RW_MGR_INIT_RESET_0_CKE_0      0x6F
+#define RW_MGR_INIT_RESET_1_CKE_0      0x74
+#define RW_MGR_LFSR_WR_RD_BANK_0       0x22
+#define RW_MGR_LFSR_WR_RD_BANK_0_DATA  0x25
+#define RW_MGR_LFSR_WR_RD_BANK_0_DQS   0x24
+#define RW_MGR_LFSR_WR_RD_BANK_0_NOP   0x23
+#define RW_MGR_LFSR_WR_RD_BANK_0_WAIT  0x32
+#define RW_MGR_LFSR_WR_RD_BANK_0_WL_1  0x21
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0    0x36
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_DATA       0x39
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_DQS        0x38
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_NOP        0x37
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_WAIT       0x46
+#define RW_MGR_LFSR_WR_RD_DM_BANK_0_WL_1       0x35
+#define RW_MGR_MRS0_DLL_RESET  0x02
+#define RW_MGR_MRS0_DLL_RESET_MIRR     0x08
+#define RW_MGR_MRS0_USER       0x07
+#define RW_MGR_MRS0_USER_MIRR  0x0C
+#define RW_MGR_MRS1    0x03
+#define RW_MGR_MRS1_MIRR       0x09
+#define RW_MGR_MRS2    0x04
+#define RW_MGR_MRS2_MIRR       0x0A
+#define RW_MGR_MRS3    0x05
+#define RW_MGR_MRS3_MIRR       0x0B
+#define RW_MGR_PRECHARGE_ALL   0x12
+#define RW_MGR_READ_B2B        0x59
+#define RW_MGR_READ_B2B_WAIT1  0x61
+#define RW_MGR_READ_B2B_WAIT2  0x6B
+#define RW_MGR_REFRESH_ALL     0x14
+#define RW_MGR_RETURN  0x01
+#define RW_MGR_SGLE_READ       0x7D
+#define RW_MGR_ZQCL    0x06
+
+/* Sequencer defines configuration */
+#define AFI_RATE_RATIO 1
+#define CALIB_LFIFO_OFFSET     8
+#define CALIB_VFIFO_OFFSET     6
+#define ENABLE_SUPER_QUICK_CALIBRATION 0
+#define IO_DELAY_PER_DCHAIN_TAP        25
+#define IO_DELAY_PER_DQS_EN_DCHAIN_TAP 25
+#define IO_DELAY_PER_OPA_TAP   312
+#define IO_DLL_CHAIN_LENGTH    8
+#define IO_DQDQS_OUT_PHASE_MAX 0
+#define IO_DQS_EN_DELAY_MAX    31
+#define IO_DQS_EN_DELAY_OFFSET 0
+#define IO_DQS_EN_PHASE_MAX    7
+#define IO_DQS_IN_DELAY_MAX    31
+#define IO_DQS_IN_RESERVE      4
+#define IO_DQS_OUT_RESERVE     4
+#define IO_IO_IN_DELAY_MAX     31
+#define IO_IO_OUT1_DELAY_MAX   31
+#define IO_IO_OUT2_DELAY_MAX   0
+#define IO_SHIFT_DQS_EN_WHEN_SHIFT_DQS 0
+#define MAX_LATENCY_COUNT_WIDTH        5
+#define READ_VALID_FIFO_SIZE   16
+#define REG_FILE_INIT_SEQ_SIGNATURE    0x5555048d
+#define RW_MGR_MEM_ADDRESS_MIRRORING   0
+#define RW_MGR_MEM_DATA_MASK_WIDTH     4
+#define RW_MGR_MEM_DATA_WIDTH  32
+#define RW_MGR_MEM_DQ_PER_READ_DQS     8
+#define RW_MGR_MEM_DQ_PER_WRITE_DQS    8
+#define RW_MGR_MEM_IF_READ_DQS_WIDTH   4
+#define RW_MGR_MEM_IF_WRITE_DQS_WIDTH  4
+#define RW_MGR_MEM_NUMBER_OF_CS_PER_DIMM       1
+#define RW_MGR_MEM_NUMBER_OF_RANKS     1
+#define RW_MGR_MEM_VIRTUAL_GROUPS_PER_READ_DQS 1
+#define RW_MGR_MEM_VIRTUAL_GROUPS_PER_WRITE_DQS        1
+#define RW_MGR_TRUE_MEM_DATA_MASK_WIDTH        4
+#define TINIT_CNTR0_VAL        99
+#define TINIT_CNTR1_VAL        32
+#define TINIT_CNTR2_VAL        32
+#define TRESET_CNTR0_VAL       99
+#define TRESET_CNTR1_VAL       99
+#define TRESET_CNTR2_VAL       10
+
+/* Sequencer ac_rom_init configuration */
+const u32 ac_rom_init[] = {
+       0x20700000,
+       0x20780000,
+       0x10080431,
+       0x10080530,
+       0x10090044,
+       0x100a0008,
+       0x100b0000,
+       0x10380400,
+       0x10080449,
+       0x100804c8,
+       0x100a0024,
+       0x10090010,
+       0x100b0000,
+       0x30780000,
+       0x38780000,
+       0x30780000,
+       0x10680000,
+       0x106b0000,
+       0x10280400,
+       0x10480000,
+       0x1c980000,
+       0x1c9b0000,
+       0x1c980008,
+       0x1c9b0008,
+       0x38f80000,
+       0x3cf80000,
+       0x38780000,
+       0x18180000,
+       0x18980000,
+       0x13580000,
+       0x135b0000,
+       0x13580008,
+       0x135b0008,
+       0x33780000,
+       0x10580008,
+       0x10780000
+};
+
+/* Sequencer inst_rom_init configuration */
+const u32 inst_rom_init[] = {
+       0x80000,
+       0x80680,
+       0x8180,
+       0x8200,
+       0x8280,
+       0x8300,
+       0x8380,
+       0x8100,
+       0x8480,
+       0x8500,
+       0x8580,
+       0x8600,
+       0x8400,
+       0x800,
+       0x8680,
+       0x880,
+       0xa680,
+       0x80680,
+       0x900,
+       0x80680,
+       0x980,
+       0xa680,
+       0x8680,
+       0x80680,
+       0xb68,
+       0xcce8,
+       0xae8,
+       0x8ce8,
+       0xb88,
+       0xec88,
+       0xa08,
+       0xac88,
+       0x80680,
+       0xce00,
+       0xcd80,
+       0xe700,
+       0xc00,
+       0x20ce0,
+       0x20ce0,
+       0x20ce0,
+       0x20ce0,
+       0xd00,
+       0x680,
+       0x680,
+       0x680,
+       0x680,
+       0x60e80,
+       0x61080,
+       0x61080,
+       0x61080,
+       0xa680,
+       0x8680,
+       0x80680,
+       0xce00,
+       0xcd80,
+       0xe700,
+       0xc00,
+       0x30ce0,
+       0x30ce0,
+       0x30ce0,
+       0x30ce0,
+       0xd00,
+       0x680,
+       0x680,
+       0x680,
+       0x680,
+       0x70e80,
+       0x71080,
+       0x71080,
+       0x71080,
+       0xa680,
+       0x8680,
+       0x80680,
+       0x1158,
+       0x6d8,
+       0x80680,
+       0x1168,
+       0x7e8,
+       0x7e8,
+       0x87e8,
+       0x40fe8,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0x1168,
+       0x7e8,
+       0x7e8,
+       0xa7e8,
+       0x80680,
+       0x40e88,
+       0x41088,
+       0x41088,
+       0x41088,
+       0x40f68,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0xa680,
+       0x40fe8,
+       0x410e8,
+       0x410e8,
+       0x410e8,
+       0x41008,
+       0x41088,
+       0x41088,
+       0x41088,
+       0x1100,
+       0xc680,
+       0x8680,
+       0xe680,
+       0x80680,
+       0x0,
+       0x8000,
+       0xa000,
+       0xc000,
+       0x80000,
+       0x80,
+       0x8080,
+       0xa080,
+       0xc080,
+       0x80080,
+       0x9180,
+       0x8680,
+       0xa680,
+       0x80680,
+       0x40f08,
+       0x80680
+};
+
+#endif /* __SOCFPGA_SDRAM_CONFIG_H__ */
diff --git a/board/terasic/sockit/socfpga.c b/board/terasic/sockit/socfpga.c
new file mode 100644 (file)
index 0000000..a1dbc49
--- /dev/null
@@ -0,0 +1,85 @@
+/*
+ *  Copyright (C) 2012 Altera Corporation <www.altera.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/reset_manager.h>
+#include <asm/io.h>
+
+#include <usb.h>
+#include <usb/s3c_udc.h>
+#include <usb_mass_storage.h>
+
+#include <micrel.h>
+#include <netdev.h>
+#include <phy.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+void s_init(void) {}
+
+/*
+ * Miscellaneous platform dependent initialisations
+ */
+int board_init(void)
+{
+       /* Address of boot parameters for ATAG (if ATAG is used) */
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+       return 0;
+}
+
+/*
+ * PHY configuration
+ */
+#ifdef CONFIG_PHY_MICREL_KSZ9021
+int board_phy_config(struct phy_device *phydev)
+{
+       int ret;
+       /*
+        * These skew settings for the KSZ9021 ethernet phy is required for ethernet
+        * to work reliably on most flavors of cyclone5 boards.
+        */
+       ret = ksz9021_phy_extended_write(phydev,
+                                        MII_KSZ9021_EXT_RGMII_RX_DATA_SKEW,
+                                        0x0);
+       if (ret)
+               return ret;
+
+       ret = ksz9021_phy_extended_write(phydev,
+                                        MII_KSZ9021_EXT_RGMII_TX_DATA_SKEW,
+                                        0x0);
+       if (ret)
+               return ret;
+
+       ret = ksz9021_phy_extended_write(phydev,
+                                        MII_KSZ9021_EXT_RGMII_CLOCK_SKEW,
+                                        0xf0f0);
+       if (ret)
+               return ret;
+
+       if (phydev->drv->config)
+               return phydev->drv->config(phydev);
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_USB_GADGET
+struct s3c_plat_otg_data socfpga_otg_data = {
+       .regs_otg       = CONFIG_USB_DWC2_REG_ADDR,
+       .usb_gusbcfg    = 0x1417,
+};
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+       return s3c_udc_probe(&socfpga_otg_data);
+}
+
+int g_dnl_board_usb_cable_connected(void)
+{
+       return 1;
+}
+#endif
diff --git a/board/ti/sdp3430/Kconfig b/board/ti/sdp3430/Kconfig
deleted file mode 100644 (file)
index 7e73d99..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_OMAP3_SDP3430
-
-config SYS_BOARD
-       default "sdp3430"
-
-config SYS_VENDOR
-       default "ti"
-
-config SYS_CONFIG_NAME
-       default "omap3_sdp3430"
-
-endif
diff --git a/board/ti/sdp3430/MAINTAINERS b/board/ti/sdp3430/MAINTAINERS
deleted file mode 100644 (file)
index 943c196..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-SDP3430 BOARD
-M:     Nishanth Menon <nm@ti.com>
-S:     Maintained
-F:     board/ti/sdp3430/
-F:     include/configs/omap3_sdp3430.h
-F:     configs/omap3_sdp3430_defconfig
diff --git a/board/ti/sdp3430/Makefile b/board/ti/sdp3430/Makefile
deleted file mode 100644 (file)
index 753f099..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000, 2001, 2002
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := sdp.o
diff --git a/board/ti/sdp3430/config.mk b/board/ti/sdp3430/config.mk
deleted file mode 100644 (file)
index e4d9be1..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-#
-# (C) Copyright 2006-2009
-# Texas Instruments Incorporated, <www.ti.com>
-#
-# OMAP 3430 SDP uses OMAP3 (ARM-CortexA8) cpu
-# see http://www.ti.com/ for more information on Texas Instruments
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-# Physical Address:
-# 8000'0000 (bank0)
-# A000/0000 (bank1)
-# Linux-Kernel is expected to be at 8000'8000, entry 8000'8000
-# (mem base + reserved)
-
-# For use with external or internal boots.
-CONFIG_SYS_TEXT_BASE = 0x80008000
diff --git a/board/ti/sdp3430/sdp.c b/board/ti/sdp3430/sdp.c
deleted file mode 100644 (file)
index 7171363..0000000
+++ /dev/null
@@ -1,203 +0,0 @@
-/*
- * (C) Copyright 2004-2009
- * Texas Instruments Incorporated, <www.ti.com>
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <netdev.h>
-#include <twl4030.h>
-#include <asm/io.h>
-#include <asm/arch/mmc_host_def.h>
-#include <asm/arch/mux.h>
-#include <asm/arch/mem.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/mach-types.h>
-#include "sdp.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-const omap3_sysinfo sysinfo = {
-       DDR_DISCRETE,
-       "OMAP3 SDP3430 board",
-#if defined(CONFIG_ENV_IS_IN_ONENAND)
-       "OneNAND",
-#elif defined(CONFIG_ENV_IS_IN_NAND)
-       "NAND",
-#else
-       "NOR",
-#endif
-};
-
-/* Timing definitions for GPMC controller for Sibley NOR */
-static const u32 gpmc_sdp_nor[] = {
-    SDP3430_NOR_GPMC_CONF1,
-    SDP3430_NOR_GPMC_CONF2,
-    SDP3430_NOR_GPMC_CONF3,
-    SDP3430_NOR_GPMC_CONF4,
-    SDP3430_NOR_GPMC_CONF5,
-    SDP3430_NOR_GPMC_CONF6,
-    /*CONF7- computed as params */
-};
-
-/*
- * Timing definitions for GPMC controller for Debug Board
- * Debug board contains access to ethernet and DIP Switch setting
- * information etc.
- */
-static const u32 gpmc_sdp_debug[] = {
-    SDP3430_DEBUG_GPMC_CONF1,
-    SDP3430_DEBUG_GPMC_CONF2,
-    SDP3430_DEBUG_GPMC_CONF3,
-    SDP3430_DEBUG_GPMC_CONF4,
-    SDP3430_DEBUG_GPMC_CONF5,
-    SDP3430_DEBUG_GPMC_CONF6,
-    /*CONF7- computed as params */
-};
-
-/* Timing defintions for GPMC OneNAND */
-static const u32 gpmc_sdp_onenand[] = {
-    SDP3430_ONENAND_GPMC_CONF1,
-    SDP3430_ONENAND_GPMC_CONF2,
-    SDP3430_ONENAND_GPMC_CONF3,
-    SDP3430_ONENAND_GPMC_CONF4,
-    SDP3430_ONENAND_GPMC_CONF5,
-    SDP3430_ONENAND_GPMC_CONF6,
-    /*CONF7- computed as params */
-};
-
-/* GPMC definitions for GPMC NAND */
-static const u32 gpmc_sdp_nand[] = {
-    SDP3430_NAND_GPMC_CONF1,
-    SDP3430_NAND_GPMC_CONF2,
-    SDP3430_NAND_GPMC_CONF3,
-    SDP3430_NAND_GPMC_CONF4,
-    SDP3430_NAND_GPMC_CONF5,
-    SDP3430_NAND_GPMC_CONF6,
-    /*CONF7- computed as params */
-};
-
-/* gpmc_cfg is initialized by gpmc_init and we use it here */
-extern struct gpmc *gpmc_cfg;
-
-/**
- * @brief board_init - gpmc and basic setup as phase1 of boot sequence
- *
- * @return 0
- */
-int board_init(void)
-{
-       gpmc_init(); /* in SRAM or SDRAM, finish GPMC */
-       /* TODO: Dynamically pop out CS mapping and program accordingly */
-       /* Configure devices for default ON ON ON settings */
-       enable_gpmc_cs_config(gpmc_sdp_nor, &gpmc_cfg->cs[0],
-                       CONFIG_SYS_FLASH_BASE, GPMC_SIZE_128M);
-       enable_gpmc_cs_config(gpmc_sdp_nand, &gpmc_cfg->cs[1], 0x28000000,
-                       GPMC_SIZE_16M);
-       enable_gpmc_cs_config(gpmc_sdp_onenand, &gpmc_cfg->cs[2], 0x20000000,
-                       GPMC_SIZE_16M);
-       enable_gpmc_cs_config(gpmc_sdp_debug, &gpmc_cfg->cs[3], DEBUG_BASE,
-                       GPMC_SIZE_16M);
-       /* board id for Linux */
-       gd->bd->bi_arch_number = MACH_TYPE_OMAP_3430SDP;
-       /* boot param addr */
-       gd->bd->bi_boot_params = (OMAP34XX_SDRC_CS0 + 0x100);
-
-       return 0;
-}
-
-#define LAN_RESET_REGISTER     (CONFIG_LAN91C96_BASE + 0x01c)
-#define ETH_CONTROL_REG                (CONFIG_LAN91C96_BASE + 0x30b)
-
-/**
- * @brief board_eth_init Take the Ethernet controller out of reset and wait
- * for the EEPROM load to complete.
- */
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_LAN91C96
-       int cnt = 20;
-
-       writew(0x0, LAN_RESET_REGISTER);
-       do {
-               writew(0x1, LAN_RESET_REGISTER);
-               udelay(100);
-               if (cnt == 0)
-                       goto reset_err_out;
-               --cnt;
-       } while (readw(LAN_RESET_REGISTER) != 0x1);
-
-       cnt = 20;
-
-       do {
-               writew(0x0, LAN_RESET_REGISTER);
-               udelay(100);
-               if (cnt == 0)
-                       goto reset_err_out;
-               --cnt;
-       } while (readw(LAN_RESET_REGISTER) != 0x0000);
-       udelay(1000);
-
-       writeb(readb(ETH_CONTROL_REG) & ~0x1, ETH_CONTROL_REG);
-       udelay(1000);
-       rc = lan91c96_initialize(0, CONFIG_LAN91C96_BASE);
-reset_err_out:
-
-#endif
-       return rc;
-}
-
-/**
- * @brief misc_init_r - Configure SDP board specific configurations
- * such as power configurations, ethernet initialization as phase2 of
- * boot sequence
- *
- * @return 0
- */
-int misc_init_r(void)
-{
-       /* Partial setup:
-        *   VAUX3 - 2.8V for DVI
-        *   VPLL1 - 1.8V
-        *   VDAC  - 1.8V
-        * and turns on LEDA/LEDB (not needed ... NOP?)
-        */
-       twl4030_power_init();
-
-       /* FIXME finish setup:
-        *   VAUX1 - 2.8V for mainboard I/O
-        *   VAUX2 - 2.8V for camera
-        *   VAUX4 - 1.8V for OMAP3 CSI
-        *   VMMC1 - 3.15V (init, variable) for MMC1
-        *   VMMC2 - 1.85V for MMC2
-        *   VSIM  - off (init, variable) for MMC1.DAT[3..7], SIM
-        *   VPLL2 - 1.8V
-        */
-
-       return 0;
-}
-
-/**
- * @brief set_muxconf_regs Setting up the configuration Mux registers
- * specific to the hardware. Many pins need to be moved from protect
- * to primary mode.
- */
-void set_muxconf_regs(void)
-{
-       /* platform specific muxes */
-       MUX_SDP3430();
-}
-
-#ifdef CONFIG_GENERIC_MMC
-int board_mmc_init(bd_t *bis)
-{
-       return omap_mmc_init(0, 0, 0, -1, -1);
-}
-
-void board_mmc_power_init(void)
-{
-       twl4030_power_mmc_init(0);
-}
-#endif
diff --git a/board/ti/sdp3430/sdp.h b/board/ti/sdp3430/sdp.h
deleted file mode 100644 (file)
index 0e63189..0000000
+++ /dev/null
@@ -1,401 +0,0 @@
-/*
- * (C) Copyright 2004-2009
- * Texas Instruments Incorporated
- * Richard Woodruff <r-woodruff2@ti.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#ifndef _BOARD_SDP_H_
-#define _BOARD_SDP_H_
-
-#define OFF_IN_PD      0
-#define OFF_OUT_PD     0
-
-/*
- * IEN - Input Enable
- * IDIS        - Input Disable
- * PTD - Pull type Down
- * PTU - Pull type Up
- * DIS - Pull type selection is inactive
- * EN  - Pull type selection is active
- * M0  - Mode 0
- * The commented string gives the final mux configuration for that pin
- */
-#define MUX_SDP3430()\
-       /*SDRC*/\
-       MUX_VAL(CP(SDRC_D0), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D1), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D2), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D3), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D4), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D5), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D6), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D7), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D8), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D9), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D10), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D11), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D12), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D13), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D14), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D15), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D16), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D17), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D18), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D19), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D20), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D21), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D22), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D23), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D24), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D25), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D26), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D27), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D28), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D29), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D30), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_D31), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_CLK), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_DQS0), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_DQS1), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_DQS2), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_DQS3), (IEN | PTD | DIS | M0))\
-       /*GPMC*/\
-       MUX_VAL(CP(GPMC_A1), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A2), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A3), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A4), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A5), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A6), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A7), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A8), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A9), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_A10), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D0), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D1), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D3), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D4), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D5), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D6), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D7), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D8), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D9), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D10), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D11), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D12), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D13), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D14), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_D15), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_NCS0), (OFF_OUT_PD | IDIS | PTU | EN | M0))\
-       MUX_VAL(CP(GPMC_NCS1), (OFF_OUT_PD | IDIS | PTU | EN | M0))\
-       MUX_VAL(CP(GPMC_NCS2), (OFF_OUT_PD | IDIS | PTU | EN | M0))\
-       MUX_VAL(CP(GPMC_NCS3), (OFF_OUT_PD | IDIS | PTU | EN | M0))\
-       MUX_VAL(CP(GPMC_NCS4), (OFF_IN_PD | IEN | PTU | EN | M4)) /*G55-F_DIS*/\
-       MUX_VAL(CP(GPMC_NCS5), (OFF_OUT_PD | IDIS | PTD | DIS | M4))/*G56T_EN*/\
-       MUX_VAL(CP(GPMC_NCS6), (OFF_IN_PD | IEN | PTD | DIS | M4))/*G57-AGPSP*/\
-       MUX_VAL(CP(GPMC_NCS7), (OFF_IN_PD | IEN | PTU | EN | M4))/*G58-WLNIQ*/\
-       MUX_VAL(CP(GPMC_CLK), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_NADV_ALE), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_NOE), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_NWE), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_NBE0_CLE), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_NBE1), (OFF_IN_PD | IEN | PTD | DIS | M4)) /*G61-BTST*/\
-       MUX_VAL(CP(GPMC_NWP), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(GPMC_WAIT0), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(GPMC_WAIT1), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(GPMC_WAIT2), (OFF_IN_PD | IEN | PTU | EN | M4)) /*GPIO_64*/\
-       MUX_VAL(CP(GPMC_WAIT3), (OFF_IN_PD | IEN | PTU | EN | M4)) /*GPIO_65*/\
-       /*DSS*/\
-       MUX_VAL(CP(DSS_PCLK), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_HSYNC), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_VSYNC), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_ACBIAS), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA0), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA1), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA2), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA3), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA4), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA5), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA6), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA7), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA8), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA9), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA10), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA11), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA12), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA13), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA14), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA15), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA16), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA17), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA18), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA19), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA20), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA21), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA22), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(DSS_DATA23), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       /*CAMERA*/\
-       MUX_VAL(CP(CAM_HS), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(CAM_VS), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(CAM_XCLKA), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_PCLK), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(CAM_FLD), (OFF_OUT_PD | IDIS | PTD | DIS | M4))/*G98-C_RST*/\
-       MUX_VAL(CP(CAM_D0), (OFF_IN_PD | IEN | PTD | DIS | M2)) /*CAM_D0 */\
-       MUX_VAL(CP(CAM_D1), (OFF_IN_PD | IEN | PTD | DIS | M2)) /*CAM_D1 */\
-       MUX_VAL(CP(CAM_D2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D3), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D4), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D5), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D6), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D7), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D8), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D9), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D10), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_D11), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_XCLKB), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(CAM_WEN), (OFF_IN_PD | IEN | PTD | DIS | M4)) /*GPIO_167*/\
-       MUX_VAL(CP(CAM_STROBE), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(CSI2_DX0), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CSI2_DY0), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CSI2_DX1), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(CSI2_DY1), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       /*Audio InterfACe */\
-       MUX_VAL(CP(MCBSP2_FSX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP2_CLKX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP2_DR), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP2_DX), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       /*Expansion Card */\
-       MUX_VAL(CP(MMC1_CLK), (OFF_OUT_PD | IDIS | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_CMD), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_DAT0), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_DAT1), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_DAT2), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_DAT3), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_DAT4), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_DAT5), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_DAT6), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC1_DAT7), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       /*Wireless LAN */\
-       MUX_VAL(CP(MMC2_CLK), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MMC2_CMD), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC2_DAT0), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC2_DAT1), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC2_DAT2), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC2_DAT3), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MMC2_DAT4), (OFF_OUT_PD | IDIS | PTD | DIS | M1))/*DRD0*/\
-       MUX_VAL(CP(MMC2_DAT5), (OFF_OUT_PD | IDIS | PTD | DIS | M1))/*DRD1*/\
-       MUX_VAL(CP(MMC2_DAT6), (OFF_OUT_PD | IDIS | PTD | DIS | M1))/*DCMD*/\
-       MUX_VAL(CP(MMC2_DAT7), (OFF_IN_PD | IEN | PTU | EN | M1))/*CLKIN*/\
-       /*Bluetooth*/\
-       MUX_VAL(CP(MCBSP3_DX), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP3_DR), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP3_CLKX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP3_FSX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(UART2_CTS), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(UART2_RTS), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(UART2_TX), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(UART2_RX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       /*Modem Interface */\
-       MUX_VAL(CP(UART1_TX), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(UART1_RTS), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(UART1_CTS), (OFF_IN_PD | IEN | PTU | DIS | M0))\
-       MUX_VAL(CP(UART1_RX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP4_CLKX), (OFF_IN_PD | IEN | PTD | DIS | M1))/*SSI1DRX*/\
-       MUX_VAL(CP(MCBSP4_DR), (OFF_IN_PD | IEN | PTD | DIS | M1))/*SSI1FLGRX*/\
-       MUX_VAL(CP(MCBSP4_DX), (OFF_IN_PD | IEN | PTD | DIS | M1))/*SSI1RDYRX*/\
-       MUX_VAL(CP(MCBSP4_FSX), (OFF_IN_PD | IEN | PTD | DIS | M1))/*SSI1WAKE*/\
-       MUX_VAL(CP(MCBSP1_CLKR), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP1_FSR), (OFF_OUT_PD | IDIS | PTU | EN | M4))/*G157BWP*/\
-       MUX_VAL(CP(MCBSP1_DX), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP1_DR), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP_CLKS), (OFF_IN_PD | IEN | PTU | DIS | M0))\
-       MUX_VAL(CP(MCBSP1_FSX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCBSP1_CLKX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       /*Serial Interface*/\
-       MUX_VAL(CP(UART3_CTS_RCTX), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(UART3_RTS_SD), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(UART3_RX_IRRX), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(UART3_TX_IRTX), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_CLK), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_STP), (OFF_OUT_PD | IDIS | PTU | EN | M0))\
-       MUX_VAL(CP(HSUSB0_DIR), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_NXT), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_DATA0), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_DATA1), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_DATA2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_DATA3), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_DATA4), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_DATA5), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_DATA6), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(HSUSB0_DATA7), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       /* NOTE db: removed off-mode from I2C 1/2/3 ... external pullups!! */\
-       MUX_VAL(CP(I2C1_SCL), (IEN | PTU | EN | M0))\
-       MUX_VAL(CP(I2C1_SDA), (IEN | PTU | EN | M0))\
-       MUX_VAL(CP(I2C2_SCL), (IEN | PTU | EN | M0))\
-       MUX_VAL(CP(I2C2_SDA), (IEN | PTU | EN | M0))\
-       MUX_VAL(CP(I2C3_SCL), (IEN | PTU | EN | M0))\
-       MUX_VAL(CP(I2C3_SDA), (IEN | PTU | EN | M0))\
-       MUX_VAL(CP(I2C4_SCL), (IEN | PTU | EN | M0))\
-       MUX_VAL(CP(I2C4_SDA), (IEN | PTU | EN | M0))\
-       MUX_VAL(CP(HDQ_SIO), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(MCSPI1_CLK), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCSPI1_SIMO), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCSPI1_SOMI), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCSPI1_CS0), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(MCSPI1_CS1), (OFF_OUT_PD | IDIS | PTD | EN | M0))\
-       MUX_VAL(CP(MCSPI1_CS2), (OFF_OUT_PD | IDIS | PTD | DIS | M4))/*G176*/\
-       MUX_VAL(CP(MCSPI1_CS3), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(MCSPI2_CLK), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCSPI2_SIMO), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCSPI2_SOMI), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(MCSPI2_CS0), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(MCSPI2_CS1), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       /*Control and debug */\
-       MUX_VAL(CP(SYS_32K), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SYS_CLKREQ), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SYS_NIRQ), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(SYS_BOOT0), (OFF_OUT_PD | IEN | PTD | DIS | M4))/*G2PENIRQ*/\
-       MUX_VAL(CP(SYS_BOOT1), (OFF_OUT_PD | IEN | PTD | DIS | M4))/*GPIO_3 */\
-       MUX_VAL(CP(SYS_BOOT2), (OFF_OUT_PD | IEN | PTD | DIS | M4))/*G4MMC1WP*/\
-       MUX_VAL(CP(SYS_BOOT3), (OFF_OUT_PD | IEN | PTD | DIS | M4))/*G5LCDENV*/\
-       MUX_VAL(CP(SYS_BOOT4), (OFF_OUT_PD | IEN | PTD | DIS | M4))/*G6LANINT*/\
-       MUX_VAL(CP(SYS_BOOT5), (OFF_OUT_PD | IEN | PTD | DIS | M4))/*G7MMC2WP*/\
-       MUX_VAL(CP(SYS_BOOT6), (OFF_OUT_PD | IDIS | PTD | DIS | M4))/*G8ENBKL*/\
-       MUX_VAL(CP(SYS_OFF_MODE), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SYS_CLKOUT1), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SYS_CLKOUT2), (OFF_IN_PD | IEN | PTU | EN | M4))/*GPIO_186*/\
-       MUX_VAL(CP(JTAG_NTRST), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(JTAG_TCK), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(JTAG_TMS), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(JTAG_TDI), (IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(JTAG_EMU0), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(JTAG_EMU1), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_CLK_ES2), (OFF_OUT_PD | IDIS | PTU | EN | M0))\
-       MUX_VAL(CP(ETK_CTL_ES2), (OFF_OUT_PD | IDIS | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D0_ES2), (OFF_IN_PD | IEN | PTD | DIS | M1))/*USB1TLD0*/\
-       MUX_VAL(CP(ETK_D1_ES2), (OFF_IN_PD | IEN | PTD | DIS | M1))/*SPI3_CS0*/\
-       MUX_VAL(CP(ETK_D2_ES2), (OFF_IN_PD | IEN | PTD | EN | M1))/*USB1TLD2*/\
-       MUX_VAL(CP(ETK_D3_ES2), (OFF_IN_PD | IEN | PTD | DIS | M1))/*USB1TLD7*/\
-       MUX_VAL(CP(ETK_D4_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D5_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D6_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D7_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D8_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D9_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D10_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D11_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D12_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D13_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D14_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(ETK_D15_ES2), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       /*Die to Die */\
-       MUX_VAL(CP(D2D_MCAD0), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD1), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD2), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD3), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD4), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD5), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD6), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD7), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD8), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD9), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD10), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD11), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD12), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD13), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD14), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD15), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD16), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD17), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD18), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD19), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD20), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD21), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD22), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD23), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD24), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD25), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD26), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD27), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD28), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD29), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD30), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD31), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD32), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD33), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD34), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD35), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_MCAD36), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_CLK26MI), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_NRESPWRON), (OFF_OUT_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_NRESWARM), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(D2D_ARM9NIRQ), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_UMA2P6FIQ), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_SPINT), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_FRINT), (OFF_IN_PD | IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_DMAREQ0), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_DMAREQ1), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_DMAREQ2), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_DMAREQ3), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_N3GTRST), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_N3GTDI), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_N3GTDO), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_N3GTMS), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_N3GTCK), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_N3GRTCK), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_MSTDBY), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(D2D_SWAKEUP), (IEN | PTD | EN | M0))\
-       MUX_VAL(CP(D2D_IDLEREQ), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_IDLEACK), (OFF_IN_PD | IEN | PTU | EN | M0))\
-       MUX_VAL(CP(D2D_MWRITE), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_SWRITE), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_MREAD), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_SREAD), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_MBUSFLAG), (OFF_IN_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(D2D_SBUSFLAG), (OFF_OUT_PD | IEN | PTD | DIS | M0))\
-       MUX_VAL(CP(SDRC_CKE0), (IDIS | PTU | EN | M0))\
-       MUX_VAL(CP(SDRC_CKE1), (IDIS | PTD | DIS | M7)) /*SDRC_CKE1 NOT USED*/
-
-/*
- * GPMC Timing definitions for SDP3430
- * at L3 = 166Mhz
- */
-
-/* Timing definitions for GPMC controller for Sibley NOR */
-#define SDP3430_NOR_GPMC_CONF1 0x00001200
-#define SDP3430_NOR_GPMC_CONF2 0x001F1F00
-#define SDP3430_NOR_GPMC_CONF3 0x00080802
-#define SDP3430_NOR_GPMC_CONF4 0x1C091C09
-#define SDP3430_NOR_GPMC_CONF5 0x01131F1F
-#define SDP3430_NOR_GPMC_CONF6 0x1F0F03C2
-
-/*
- * Timing definitions for GPMC controller for Debug Board
- * Debug board contains access to ethernet and DIP Switch setting
- * information etc.
- */
-#define SDP3430_DEBUG_GPMC_CONF1 0x00611200
-#define SDP3430_DEBUG_GPMC_CONF2 0x001F1F01
-#define SDP3430_DEBUG_GPMC_CONF3 0x00080803
-#define SDP3430_DEBUG_GPMC_CONF4 0x1D091D09
-#define SDP3430_DEBUG_GPMC_CONF5 0x041D1F1F
-#define SDP3430_DEBUG_GPMC_CONF6 0x1D0904C4
-
-/* Timing defintions for GPMC OneNAND */
-#define SDP3430_ONENAND_GPMC_CONF1 0x00001200
-#define SDP3430_ONENAND_GPMC_CONF2 0x000F0F01
-#define SDP3430_ONENAND_GPMC_CONF3 0x00030301
-#define SDP3430_ONENAND_GPMC_CONF4 0x0F040F04
-#define SDP3430_ONENAND_GPMC_CONF5 0x010F1010
-#define SDP3430_ONENAND_GPMC_CONF6 0x1F060000
-
-/* GPMC definitions for GPMC NAND */
-#define SDP3430_NAND_GPMC_CONF1 0x00000800
-#define SDP3430_NAND_GPMC_CONF2 0x00141400
-#define SDP3430_NAND_GPMC_CONF3 0x00141400
-#define SDP3430_NAND_GPMC_CONF4 0x0F010F01
-#define SDP3430_NAND_GPMC_CONF5 0x010C1414
-#define SDP3430_NAND_GPMC_CONF6 0x1F040A80
-
-#endif /* _BOARD_SDP_H_ */
index dbd87875b52f80500e60d801169f32b1a1afd284..5dafa3822a9532db8a63b9b00fd7510047ee0d86 100644 (file)
@@ -6,9 +6,6 @@ config SYS_BOARD
 config SYS_VENDOR
        default "tqc"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "tqma6"
 
index 29db838490e1f266b3bd1e11a0911cb375a6086e..8656782d869c7eaa9566edab8a8b103275dc5be7 100644 (file)
@@ -25,6 +25,7 @@
 #include <mmc.h>
 #include <power/pfuze100_pmic.h>
 #include <power/pmic.h>
+#include <spi_flash.h>
 
 #include "tqma6_bb.h"
 
index 6f4cffd95ecd3b3dbf1df181f9998f7936a5f570..e58b71402b5a26c85a3ae8dc05edf03b01a952c3 100644 (file)
@@ -309,24 +309,26 @@ int board_eth_init(bd_t *bis)
 
        bus = fec_get_miibus(base, -1);
        if (!bus)
-               return 0;
+               return -EINVAL;
        /* scan phy */
        phydev = phy_find_by_mask(bus, (0xf << CONFIG_FEC_MXC_PHYADDR),
                                        PHY_INTERFACE_MODE_RGMII);
 
        if (!phydev) {
-               free(bus);
-               puts("No phy found\n");
-               return 0;
+               ret = -EINVAL;
+               goto free_bus;
        }
        ret  = fec_probe(bis, -1, base, bus, phydev);
-       if (ret) {
-               puts("FEC MXC: probe failed\n");
-               free(phydev);
-               free(bus);
-       }
+       if (ret)
+               goto free_phydev;
 
        return 0;
+
+free_phydev:
+       free(phydev);
+free_bus:
+       free(bus);
+       return ret;
 }
 
 int tqma6_bb_board_early_init_f(void)
diff --git a/board/trizepsiv/Kconfig b/board/trizepsiv/Kconfig
deleted file mode 100644 (file)
index 56b2557..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_TRIZEPSIV
-
-config SYS_BOARD
-       default "trizepsiv"
-
-config SYS_CONFIG_NAME
-       default "trizepsiv"
-
-endif
diff --git a/board/trizepsiv/MAINTAINERS b/board/trizepsiv/MAINTAINERS
deleted file mode 100644 (file)
index ba48c2e..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-TRIZEPSIV BOARD
-M:     Stefano Babic <sbabic@denx.de>
-S:     Maintained
-F:     board/trizepsiv/
-F:     include/configs/trizepsiv.h
-F:     configs/polaris_defconfig
-F:     configs/trizepsiv_defconfig
diff --git a/board/trizepsiv/Makefile b/board/trizepsiv/Makefile
deleted file mode 100644 (file)
index c49686f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := conxs.o eeprom.o
diff --git a/board/trizepsiv/conxs.c b/board/trizepsiv/conxs.c
deleted file mode 100644 (file)
index 1ddf05d..0000000
+++ /dev/null
@@ -1,148 +0,0 @@
-/*
- * (C) Copyright 2007
- * Stefano Babic, DENX Gmbh, sbabic@denx.de
- *
- * (C) Copyright 2004
- * Robert Whaley, Applied Data Systems, Inc. rwhaley@applieddata.net
- *
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/pxa-regs.h>
-#include <asm/arch/pxa.h>
-#include <asm/arch/regs-mmc.h>
-#include <netdev.h>
-#include <asm/io.h>
-#include <usb.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define                RH_A_PSM        (1 << 8)        /* power switching mode */
-#define                RH_A_NPS        (1 << 9)        /* no power switching */
-
-extern struct serial_device serial_ffuart_device;
-extern struct serial_device serial_btuart_device;
-extern struct serial_device serial_stuart_device;
-
-#if CONFIG_MK_POLARIS
-#define BOOT_CONSOLE   "serial_stuart"
-#else
-#define BOOT_CONSOLE   "serial_ffuart"
-#endif
-/* ------------------------------------------------------------------------- */
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_usb_init(int index, enum usb_init_type init)
-{
-       writel((readl(UHCHR) | UHCHR_PCPL | UHCHR_PSPL) &
-               ~(UHCHR_SSEP0 | UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE),
-               UHCHR);
-
-       writel(readl(UHCHR) | UHCHR_FSBIR, UHCHR);
-
-       while (readl(UHCHR) & UHCHR_FSBIR)
-               ;
-
-       writel(readl(UHCHR) & ~UHCHR_SSE, UHCHR);
-       writel((UHCHIE_UPRIE | UHCHIE_RWIE), UHCHIE);
-
-       /* Clear any OTG Pin Hold */
-       if (readl(PSSR) & PSSR_OTGPH)
-               writel(readl(PSSR) | PSSR_OTGPH, PSSR);
-
-       writel(readl(UHCRHDA) & ~(RH_A_NPS), UHCRHDA);
-       writel(readl(UHCRHDA) | RH_A_PSM, UHCRHDA);
-
-       /* Set port power control mask bits, only 3 ports. */
-       writel(readl(UHCRHDB) | (0x7<<17), UHCRHDB);
-
-       return 0;
-}
-
-int board_usb_cleanup(int index, enum usb_init_type init)
-{
-       return 0;
-}
-
-void usb_board_stop(void)
-{
-       writel(readl(UHCHR) | UHCHR_FHR, UHCHR);
-       udelay(11);
-       writel(readl(UHCHR) & ~UHCHR_FHR, UHCHR);
-
-       writel(readl(UHCCOMS) | 1, UHCCOMS);
-       udelay(10);
-
-       writel(readl(CKEN) & ~CKEN10_USBHOST, CKEN);
-
-       return;
-}
-
-int board_init (void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* arch number of ConXS Board */
-       gd->bd->bi_arch_number = 776;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa000003c;
-
-       return 0;
-}
-
-int board_late_init(void)
-{
-       char *console=getenv("boot_console");
-
-       if ((console == NULL) || (strcmp(console,"serial_btuart") &&
-               strcmp(console,"serial_stuart") &&
-               strcmp(console,"serial_ffuart"))) {
-                       console = BOOT_CONSOLE;
-       }
-       setenv("stdout",console);
-       setenv("stdin", console);
-       setenv("stderr",console);
-       return 0;
-}
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-}
-
-#ifdef CONFIG_DRIVER_DM9000
-int board_eth_init(bd_t *bis)
-{
-       return dm9000_initialize(bis);
-}
-#endif
-
-#ifdef CONFIG_CMD_MMC
-int board_mmc_init(bd_t *bis)
-{
-       pxa_mmc_register(0);
-       return 0;
-}
-#endif
diff --git a/board/trizepsiv/eeprom.c b/board/trizepsiv/eeprom.c
deleted file mode 100644 (file)
index 1318edc..0000000
+++ /dev/null
@@ -1,62 +0,0 @@
-/*
- * (C) Copyright 2007
- * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <dm9000.h>
-
-static int do_read_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
-       unsigned int i;
-       u8 data[2];
-
-       for (i=0; i < 0x40; i++) {
-               if (!(i % 0x10))
-                       printf("\n%08x:", i);
-               dm9000_read_srom_word(i, data);
-               printf(" %02x%02x", data[1], data[0]);
-       }
-       printf ("\n");
-       return (0);
-}
-
-static int do_write_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
-       int offset,value;
-
-       if (argc < 4)
-               return cmd_usage(cmdtp);
-
-       offset=simple_strtoul(argv[2],NULL,16);
-       value=simple_strtoul(argv[3],NULL,16);
-       if (offset > 0x40) {
-               printf("Wrong offset : 0x%x\n",offset);
-               return cmd_usage(cmdtp);
-       }
-       dm9000_write_srom_word(offset, value);
-       return (0);
-}
-
-int do_dm9000_eeprom ( cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[]) {
-       if (argc < 2)
-               return cmd_usage(cmdtp);
-
-       if (strcmp (argv[1],"read") == 0)
-               return (do_read_dm9000_eeprom(cmdtp,flag,argc,argv));
-       else if (strcmp (argv[1],"write") == 0)
-               return (do_write_dm9000_eeprom(cmdtp,flag,argc,argv));
-       else
-               return cmd_usage(cmdtp);
-}
-
-U_BOOT_CMD(
-       dm9000ee,4,1,do_dm9000_eeprom,
-       "Read/Write eeprom connected to Ethernet Controller",
-       "\ndm9000ee write <word offset> <value> \n"
-       "\tdm9000ee read \n"
-       "\tword:\t\t00-02 : MAC Address\n"
-       "\t\t\t03-07 : DM9000 Configuration\n"
-       "\t\t\t08-63 : User data"
-);
diff --git a/board/ttcontrol/vision2/Kconfig b/board/ttcontrol/vision2/Kconfig
deleted file mode 100644 (file)
index cacd2c5..0000000
+++ /dev/null
@@ -1,15 +0,0 @@
-if TARGET_VISION2
-
-config SYS_BOARD
-       default "vision2"
-
-config SYS_VENDOR
-       default "ttcontrol"
-
-config SYS_SOC
-       default "mx5"
-
-config SYS_CONFIG_NAME
-       default "vision2"
-
-endif
diff --git a/board/ttcontrol/vision2/MAINTAINERS b/board/ttcontrol/vision2/MAINTAINERS
deleted file mode 100644 (file)
index cfc9903..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-VISION2 BOARD
-M:     Stefano Babic <sbabic@denx.de>
-S:     Maintained
-F:     board/ttcontrol/vision2/
-F:     include/configs/vision2.h
-F:     configs/vision2_defconfig
diff --git a/board/ttcontrol/vision2/Makefile b/board/ttcontrol/vision2/Makefile
deleted file mode 100644 (file)
index c3e1e87..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
-#
-# (C) Copyright 2009 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := vision2.o
diff --git a/board/ttcontrol/vision2/imximage_hynix.cfg b/board/ttcontrol/vision2/imximage_hynix.cfg
deleted file mode 100644 (file)
index c74973e..0000000
+++ /dev/null
@@ -1,212 +0,0 @@
-/*
- * (C) Copyright 2009
- * Stefano Babic DENX Software Engineering sbabic@denx.de.
- *
- * (C) Copyright 2010
- * Klaus Steinhammer TTECH Control Gmbh kst@tttech.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
- * Refer doc/README.imximage for more details about how-to configure
- * and create imximage boot image
- *
- * The syntax is taken as close as possible with the kwbimage
- */
-
-/*
- * Boot Device : one of
- * spi, nand, onenand, sd
- */
-BOOT_FROM      spi
-
-/*
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *     Addr-type register length (1,2 or 4 bytes)
- *     Address   absolute address of the register
- *     value     value to be stored in the register
- */
-
-/*
- * #######################
- * ### Disable WDOG ###
- * #######################
- */
-DATA 2 0x73f98000 0x30
-
-/*
- * #######################
- * ### SET DDR Clk     ###
- * #######################
- */
-/* CCM: CBMCR - ddr_clk_sel: axi_b (133MHz) */
-DATA 4 0x73FD4018 0x000024C0
-
-/* DOUBLE SPI CLK (13MHz->26 MHz Clock) */
-DATA 4 0x73FD4038 0x2010241
-
-/* IOMUXC_SW_PAD_CTL_PAD_CSPI1_MOSI HYS_ENABLE | DRV_MAX | SRE_FAST */
-DATA 4 0x73fa8600 0x00000107
-/* IOMUXC_SW_PAD_CTL_PAD_CSPI1_MISO HYS_ENABLE | DRV_MAX | SRE_FAST */
-DATA 4 0x73fa8604 0x00000107
-/* IOMUXC_SW_PAD_CTL_PAD_CSPI1_SS0 HYS_ENABLE | PKE_ENABLE | DRV_MAX | SRE_FAST */
-DATA 4 0x73fa8608 0x00000187
-/* IOMUXC_SW_PAD_CTL_PAD_CSPI1_SS1 HYS_ENABLE | PKE_ENABLE | DRV_MAX | SRE_FAST */
-DATA 4 0x73fa860c 0x00000187
-/* IOMUXC_SW_PAD_CTL_PAD_CSPI1_SCLK HYS_ENABLE | DRV_MAX | SRE_FAST */
-DATA 4 0x73fa8614 0x00000107
-/* IOMUXC_SW_PAD_CTL_PAD_DI1_PIN11 HYS_ENABLE | DRV_MAX | SRE_FAST (CSPI1_SS2) */
-DATA 4 0x73fa86a8 0x00000187
-
-/*
- * #######################
- * ### Settings IOMUXC ###
- * #######################
- */
-/*
- * DDR IOMUX configuration
- * Control, Data, Address pads are in their default state: HIGH DS, FAST SR.
- * IOMUXC_SW_PAD_CTL_PAD_DRAM_SDCLK MAX DS
- */
-DATA 4 0x73fa84b8 0x000000e7
-/* PVTC MAX (at GPC, PGR reg) */
-/* DATA 4 0x73FD8004 0x1fc00000 */
-
-/* DQM0 DS high slew rate slow */
-DATA 4 0x73fa84d4 0x000000e4
-/* DQM1 DS high slew rate slow */
-DATA 4 0x73fa84d8 0x000000e4
-/* DQM2 DS high slew rate slow */
-DATA 4 0x73fa84dc 0x000000e4
-/* DQM3 DS high slew rate slow */
-DATA 4 0x73fa84e0 0x000000e4
-
-/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS0 DS high & SLEW slow */
-DATA 4 0x73fa84bc 0x000000c4
-/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS1 DS high & SLEW slow */
-DATA 4 0x73fa84c0 0x000000c4
-/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS2 DS high & SLEW slow */
-DATA 4 0x73fa84c4 0x000000c4
-/* IOMUXC_SW_PAD_CTL_PAD_DRAM_SDQS3 DS high & SLEW slow */
-DATA 4 0x73fa84c8 0x000000c4
-
-/* DRAM_DATA B0 */
-DATA 4 0x73fa88a4 0x00000004
-/* DRAM_DATA B1 */
-DATA 4 0x73fa88ac 0x00000004
-/* DRAM_DATA B2 */
-DATA 4 0x73fa88b8 0x00000004
-/* DRAM_DATA B3 */
-DATA 4 0x73fa882c 0x00000004
-
-/* DRAM_DATA B0 slew rate */
-DATA 4 0x73fa8878 0x00000000
-/* DRAM_DATA B1 slew rate */
-DATA 4 0x73fa8880 0x00000000
-/* DRAM_DATA B2 slew rate */
-DATA 4 0x73fa888c 0x00000000
-/* DRAM_DATA B3 slew rate */
-DATA 4 0x73fa889c 0x00000000
-
-/*
- * #######################
- * ### Configure SDRAM ###
- * #######################
- */
-
-/* Configure CS0 */
-/* ####################### */
-
-/* ESDCTL0: Enable controller */
-DATA 4 0x83fd9000 0x83220000
-
-/* Init DRAM on CS0 */
-/* ESDSCR: Precharge command */
-DATA 4 0x83fd9014 0x04008008
-/* ESDSCR: Refresh command */
-DATA 4 0x83fd9014 0x00008010
-/* ESDSCR: Refresh command */
-DATA 4 0x83fd9014 0x00008010
-/* ESDSCR: LMR with CAS=3 and BL=3 (Burst Length = 8) */
-DATA 4 0x83fd9014 0x00338018
-/* ESDSCR: EMR with half Drive strength (= medium strength @ i.MX51) */
-DATA 4 0x83fd9014 0x0020801a
-/* ESDSCR */
-DATA 4 0x83fd9014 0x00008000
-
-/* ESDSCR: EMR with full Drive strength */
-/* DATA 4 0x83fd9014 0x0000801a */
-
-/* ESDCTL0: 14 ROW, 10 COL, 32Bit, SREF=8 */
-DATA 4 0x83fd9000 0xC3220000
-
-/*
- * ESDCFG0: tRFC:22clks, tXSR:28clks, tXP:2clks, tWTR:2clk, tRP:3clks, tMRD:2clks
- *          tRAS:8clks, tRRD:2clks, tWR:3clks, tRCD:3clks, tRC:11clks
- * DATA 4 0x83fd9004 0xC33574AA
- */
-/*
- * micron mDDR
- * ESDCFG0: tRFC:11clks, tXSR:19clks, tXP:1clks, tWTR:2clk, tRP:3clks, tMRD:2clks
- * tRAS:7clks, tRRD:2clks, tWR:3clks, tRCD:3clks, tRC:9clks
- * DATA 4 0x83FD9004 0x101564a8
- */
-/*
- * hynix mDDR
- * ESDCFG0: tRFC:17clks, tXSR:21clks, tXP:3clks, tWTR:1clk, tRP:3clks, tMRD:2clks
- * tRAS:7clks, tRRD:2clks, tWR:3clks, tRCD:3clks, tRC:9clks
- */
-DATA 4 0x83FD9004 0x704564a8
-
-/* ESDMISC: AP=10, Bank interleaving on, MIF3 en, RALAT=2 */
-DATA 4 0x83fd9010 0x000a1700
-
-/* Configure CS1 */
-/* ####################### */
-
-/* ESDCTL1: Enable controller */
-DATA 4 0x83fd9008 0x83220000
-
-/* Init DRAM on CS1 */
-/* ESDSCR: Precharge command */
-DATA 4 0x83fd9014 0x0400800c
-/* ESDSCR: Refresh command */
-DATA 4 0x83fd9014 0x00008014
-/* ESDSCR: Refresh command */
-DATA 4 0x83fd9014 0x00008014
-/* ESDSCR: LMR with CAS=3 and BL=3 (Burst Length = 8) */
-DATA 4 0x83fd9014 0x0033801c
-/* ESDSCR: EMR with half Drive strength (= medium strength @ i.MX51) */
-DATA 4 0x83fd9014 0x0020801e
-/* ESDSCR */
-DATA 4 0x83fd9014 0x00008004
-
-/* ESDCTL1: 14 ROW, 10 COL, 32Bit, SREF=8 */
-DATA 4 0x83fd9008 0xC3220000
-/*
- * ESDCFG1: tRFC:22clks, tXSR:28clks, tXP:2clks, tWTR:2clk, tRP:3clks, tMRD:2clks
- *          tRAS:8clks, tRRD:2clks, tWR:3clks, tRCD:3clks, tRC:11clks
- * DATA 4 0x83fd900c 0xC33574AA
- */
-/*
- * micron mDDR
- * ESDCFG1: tRFC:11clks, tXSR:19clks, tXP:1clks, tWTR:2clk, tRP:3clks, tMRD:2clks
- * tRAS:7clks, tRRD:2clks, tWR:3clks, tRCD:3clks, tRC:9clks
- * DATA 4 0x83FD900C 0x101564a8
- */
-/*
- * hynix mDDR
- * ESDCFG0: tRFC:17clks, tXSR:21clks, tXP:3clks, tWTR:1clk, tRP:3clks, tMRD:2clks
- * tRAS:7clks, tRRD:2clks, tWR:3clks, tRCD:3clks, tRC:9clks
- */
-DATA 4 0x83FD900C 0x704564a8
-
-/* ESDSCR (mDRAM configuration finished) */
-DATA 4 0x83FD9014 0x00000004
-
-/* ESDSCR - clear "configuration request" bit */
-DATA 4 0x83fd9014 0x00000000
diff --git a/board/ttcontrol/vision2/vision2.c b/board/ttcontrol/vision2/vision2.c
deleted file mode 100644 (file)
index 247991d..0000000
+++ /dev/null
@@ -1,572 +0,0 @@
-/*
- * (C) Copyright 2010
- * Stefano Babic, DENX Software Engineering, sbabic@denx.de.
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/crm_regs.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/iomux-mx51.h>
-#include <asm/gpio.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/imx-common/spi.h>
-#include <i2c.h>
-#include <mmc.h>
-#include <power/pmic.h>
-#include <fsl_esdhc.h>
-#include <fsl_pmic.h>
-#include <mc13892.h>
-#include <linux/fb.h>
-
-#include <ipu_pixfmt.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static struct fb_videomode const nec_nl6448bc26_09c = {
-       "NEC_NL6448BC26-09C",
-       60,     /* Refresh */
-       640,    /* xres */
-       480,    /* yres */
-       37650,  /* pixclock = 26.56Mhz */
-       48,     /* left margin */
-       16,     /* right margin */
-       31,     /* upper margin */
-       12,     /* lower margin */
-       96,     /* hsync-len */
-       2,      /* vsync-len */
-       0,      /* sync */
-       FB_VMODE_NONINTERLACED, /* vmode */
-       0,      /* flag */
-};
-
-#ifdef CONFIG_HW_WATCHDOG
-#include <watchdog.h>
-void hw_watchdog_reset(void)
-{
-       int val;
-
-       /* toggle watchdog trigger pin */
-       val = gpio_get_value(IMX_GPIO_NR(3, 2));
-       val = val ? 0 : 1;
-       gpio_set_value(IMX_GPIO_NR(3, 2), val);
-}
-#endif
-
-static void init_drive_strength(void)
-{
-       static const iomux_v3_cfg_t ddr_pads[] = {
-               NEW_PAD_CTRL(MX51_GRP_PKEDDR, 0),
-               NEW_PAD_CTRL(MX51_GRP_PKEADDR, PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX51_GRP_DDRAPKS, 0),
-               NEW_PAD_CTRL(MX51_GRP_DDRAPUS, PAD_CTL_PUS_100K_UP),
-               NEW_PAD_CTRL(MX51_GRP_DDR_SR_A1, PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_GRP_DDR_A0, PAD_CTL_DSE_HIGH),
-               NEW_PAD_CTRL(MX51_GRP_DDR_A1, PAD_CTL_DSE_HIGH),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_RAS__DRAM_RAS,
-                               PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_CAS__DRAM_CAS,
-                               PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_GRP_PKEDDR, PAD_CTL_PKE),
-               NEW_PAD_CTRL(MX51_GRP_DDRPKS, 0),
-               NEW_PAD_CTRL(MX51_GRP_HYSDDR0, 0),
-               NEW_PAD_CTRL(MX51_GRP_HYSDDR1, 0),
-               NEW_PAD_CTRL(MX51_GRP_HYSDDR2, 0),
-               NEW_PAD_CTRL(MX51_GRP_HYSDDR3, 0),
-               NEW_PAD_CTRL(MX51_GRP_DRAM_SR_B0, PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_GRP_DRAM_SR_B1, PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_GRP_DRAM_SR_B2, PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_GRP_DRAM_SR_B4, PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_GRP_DDRPUS, PAD_CTL_PUS_100K_UP),
-               NEW_PAD_CTRL(MX51_GRP_INMODE1, 0),
-               NEW_PAD_CTRL(MX51_GRP_DRAM_B0, PAD_CTL_DSE_MED),
-               NEW_PAD_CTRL(MX51_GRP_DRAM_B1, PAD_CTL_DSE_MED),
-               NEW_PAD_CTRL(MX51_GRP_DRAM_B2, PAD_CTL_DSE_MED),
-               NEW_PAD_CTRL(MX51_GRP_DRAM_B4, PAD_CTL_DSE_MED),
-
-               NEW_PAD_CTRL(MX51_PAD_DRAM_SDWE__DRAM_SDWE, MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_SDCKE0__DRAM_SDCKE0,
-                               MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_SDCKE1__DRAM_SDCKE1,
-                               MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_SDCLK__DRAM_SDCLK,
-                               MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_SDQS0__DRAM_SDQS0,
-                               MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_SDQS1__DRAM_SDQS1,
-                               MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_SDQS2__DRAM_SDQS2,
-                               MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_SDQS3__DRAM_SDQS3,
-                               MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_CS0__DRAM_CS0, MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_CS1__DRAM_CS1, MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_DQM0__DRAM_DQM0, MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_DQM1__DRAM_DQM1, MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_DQM2__DRAM_DQM2, MX51_GPIO_PAD_CTRL),
-               NEW_PAD_CTRL(MX51_PAD_DRAM_DQM3__DRAM_DQM3, MX51_GPIO_PAD_CTRL),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(ddr_pads, ARRAY_SIZE(ddr_pads));
-}
-
-int dram_init(void)
-{
-       gd->ram_size = get_ram_size((long *)PHYS_SDRAM_1,
-               PHYS_SDRAM_1_SIZE);
-
-       return 0;
-}
-
-static void setup_weim(void)
-{
-       struct weim  *pweim = (struct weim *)WEIM_BASE_ADDR;
-
-       pweim->cs0gcr1 = 0x004100b9;
-       pweim->cs0gcr2 = 0x00000001;
-       pweim->cs0rcr1 = 0x0a018000;
-       pweim->cs0rcr2 = 0;
-       pweim->cs0wcr1 = 0x0704a240;
-}
-
-static void setup_uart(void)
-{
-       static const iomux_v3_cfg_t uart_pads[] = {
-               MX51_PAD_EIM_D25__UART3_RXD, /* console RX */
-               MX51_PAD_EIM_D26__UART3_TXD, /* console TX */
-       };
-
-       imx_iomux_v3_setup_multiple_pads(uart_pads, ARRAY_SIZE(uart_pads));
-}
-
-#ifdef CONFIG_MXC_SPI
-int board_spi_cs_gpio(unsigned bus, unsigned cs)
-{
-       return (bus == 0 && cs == 1) ? 121 : -1;
-}
-
-void spi_io_init(void)
-{
-       static const iomux_v3_cfg_t spi_pads[] = {
-               NEW_PAD_CTRL(MX51_PAD_CSPI1_MOSI__ECSPI1_MOSI, PAD_CTL_HYS |
-                               PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_CSPI1_MISO__ECSPI1_MISO, PAD_CTL_HYS |
-                               PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_CSPI1_SS0__ECSPI1_SS0, PAD_CTL_HYS |
-                       PAD_CTL_PKE | PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_CSPI1_SS1__ECSPI1_SS1, PAD_CTL_HYS |
-                       PAD_CTL_PKE | PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_DI1_PIN11__ECSPI1_SS2, PAD_CTL_HYS |
-                       PAD_CTL_PKE | PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_CSPI1_SCLK__ECSPI1_SCLK, PAD_CTL_HYS |
-                               PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(spi_pads, ARRAY_SIZE(spi_pads));
-}
-
-static void reset_peripherals(int reset)
-{
-#ifdef CONFIG_VISION2_HW_1_0
-       static const iomux_v3_cfg_t fec_cfg_pads[] = {
-               /* RXD1 */
-               NEW_PAD_CTRL(MX51_PAD_EIM_EB3__GPIO2_23, NO_PAD_CTRL),
-               /* RXD2 */
-               NEW_PAD_CTRL(MX51_PAD_EIM_CS2__GPIO2_27, NO_PAD_CTRL),
-               /* RXD3 */
-               NEW_PAD_CTRL(MX51_PAD_EIM_CS3__GPIO2_28, NO_PAD_CTRL),
-               /* RXER */
-               NEW_PAD_CTRL(MX51_PAD_EIM_CS4__GPIO2_29, NO_PAD_CTRL),
-               /* COL */
-               NEW_PAD_CTRL(MX51_PAD_NANDF_RB2__GPIO3_10, NO_PAD_CTRL),
-               /* RCLK */
-               NEW_PAD_CTRL(MX51_PAD_NANDF_RB3__GPIO3_11, NO_PAD_CTRL),
-               /* RXD0 */
-               NEW_PAD_CTRL(MX51_PAD_NANDF_D9__GPIO3_31, NO_PAD_CTRL),
-       };
-
-       static const iomux_v3_cfg_t fec_pads[] = {
-               NEW_PAD_CTRL(MX51_PAD_EIM_CS3__FEC_RDATA3, MX51_PAD_CTRL_2),
-               NEW_PAD_CTRL(MX51_PAD_EIM_CS2__FEC_RDATA2, MX51_PAD_CTRL_2),
-               NEW_PAD_CTRL(MX51_PAD_EIM_EB3__FEC_RDATA1, MX51_PAD_CTRL_2),
-               MX51_PAD_NANDF_D9__FEC_RDATA0,
-               NEW_PAD_CTRL(MX51_PAD_NANDF_RB3__FEC_RX_CLK, MX51_PAD_CTRL_4),
-               MX51_PAD_EIM_CS4__FEC_RX_ER,
-               NEW_PAD_CTRL(MX51_PAD_NANDF_RB2__FEC_COL, MX51_PAD_CTRL_4),
-       };
-#endif
-
-       if (reset) {
-
-               /* reset_n is on NANDF_D15 */
-               gpio_direction_output(IMX_GPIO_NR(3, 25), 0);
-
-#ifdef CONFIG_VISION2_HW_1_0
-               /*
-                * set FEC Configuration lines
-                * set levels of FEC config lines
-                */
-               gpio_direction_output(IMX_GPIO_NR(3, 11), 0);
-               gpio_direction_output(IMX_GPIO_NR(3, 10), 1);
-               gpio_direction_output(IMX_GPIO_NR(3, 31), 1);
-
-               /* set direction of FEC config lines */
-               gpio_direction_output(IMX_GPIO_NR(2, 27), 0);
-               gpio_direction_output(IMX_GPIO_NR(2, 28), 0);
-               gpio_direction_output(IMX_GPIO_NR(2, 29), 0);
-               gpio_direction_output(IMX_GPIO_NR(2, 23), 1);
-
-               imx_iomux_v3_setup_multiple_pads(fec_cfg_pads,
-                                                ARRAY_SIZE(fec_cfg_pads));
-#endif
-
-               /* activate reset_n pin */
-               imx_iomux_v3_setup_pad(
-                               NEW_PAD_CTRL(MX51_PAD_NANDF_D15__GPIO3_25,
-                                               PAD_CTL_DSE_MAX));
-       } else {
-               /* set FEC Control lines */
-               gpio_direction_input(IMX_GPIO_NR(3, 25));
-               udelay(500);
-
-#ifdef CONFIG_VISION2_HW_1_0
-               imx_iomux_v3_setup_multiple_pads(fec_pads,
-                                                       ARRAY_SIZE(fec_pads));
-#endif
-       }
-}
-
-static void power_init_mx51(void)
-{
-       unsigned int val;
-       struct pmic *p;
-       int ret;
-
-       ret = pmic_init(I2C_PMIC);
-       if (ret)
-               return;
-
-       p = pmic_get("FSL_PMIC");
-       if (!p)
-               return;
-
-       /* Write needed to Power Gate 2 register */
-       pmic_reg_read(p, REG_POWER_MISC, &val);
-
-       /* enable VCAM with 2.775V to enable read from PMIC */
-       val = VCAMCONFIG | VCAMEN;
-       pmic_reg_write(p, REG_MODE_1, val);
-
-       /*
-        * Set switchers in Auto in NORMAL mode & STANDBY mode
-        * Setup the switcher mode for SW1 & SW2
-        */
-       pmic_reg_read(p, REG_SW_4, &val);
-       val = (val & ~((SWMODE_MASK << SWMODE1_SHIFT) |
-               (SWMODE_MASK << SWMODE2_SHIFT)));
-       val |= (SWMODE_AUTO_AUTO << SWMODE1_SHIFT) |
-               (SWMODE_AUTO_AUTO << SWMODE2_SHIFT);
-       pmic_reg_write(p, REG_SW_4, val);
-
-       /* Setup the switcher mode for SW3 & SW4 */
-       pmic_reg_read(p, REG_SW_5, &val);
-       val &= ~((SWMODE_MASK << SWMODE4_SHIFT) |
-               (SWMODE_MASK << SWMODE3_SHIFT));
-       val |= (SWMODE_AUTO_AUTO << SWMODE4_SHIFT) |
-               (SWMODE_AUTO_AUTO << SWMODE3_SHIFT);
-       pmic_reg_write(p, REG_SW_5, val);
-
-
-       /* Set VGEN3 to 1.8V, VCAM to 3.0V */
-       pmic_reg_read(p, REG_SETTING_0, &val);
-       val &= ~(VCAM_MASK | VGEN3_MASK);
-       val |= VCAM_3_0;
-       pmic_reg_write(p, REG_SETTING_0, val);
-
-       /* Set VVIDEO to 2.775V, VAUDIO to 3V0, VSD to 1.8V */
-       pmic_reg_read(p, REG_SETTING_1, &val);
-       val &= ~(VVIDEO_MASK | VSD_MASK | VAUDIO_MASK);
-       val |= VVIDEO_2_775 | VAUDIO_3_0 | VSD_1_8;
-       pmic_reg_write(p, REG_SETTING_1, val);
-
-       /* Configure VGEN3 and VCAM regulators to use external PNP */
-       val = VGEN3CONFIG | VCAMCONFIG;
-       pmic_reg_write(p, REG_MODE_1, val);
-       udelay(200);
-
-       /* Enable VGEN3, VCAM, VAUDIO, VVIDEO, VSD regulators */
-       val = VGEN3EN | VGEN3CONFIG | VCAMEN | VCAMCONFIG |
-               VVIDEOEN | VAUDIOEN  | VSDEN;
-       pmic_reg_write(p, REG_MODE_1, val);
-
-       pmic_reg_read(p, REG_POWER_CTL2, &val);
-       val |= WDIRESET;
-       pmic_reg_write(p, REG_POWER_CTL2, val);
-
-       udelay(2500);
-
-}
-#endif
-
-static void setup_gpios(void)
-{
-       static const iomux_v3_cfg_t gpio_pads_1[] = {
-               NEW_PAD_CTRL(MX51_PAD_GPIO1_7__GPIO1_7, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* CAM_SUP_DISn */
-               NEW_PAD_CTRL(MX51_PAD_DI1_PIN12__GPIO3_1, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* DAB Display EN */
-               NEW_PAD_CTRL(MX51_PAD_DI1_PIN13__GPIO3_2, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* WDOG_TRIGGER */
-       };
-
-       static const iomux_v3_cfg_t gpio_pads_2[] = {
-               NEW_PAD_CTRL(MX51_PAD_DI1_D0_CS__GPIO3_3, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* Display2 TxEN */
-               NEW_PAD_CTRL(MX51_PAD_DI1_D1_CS__GPIO3_4, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* DAB Light EN */
-               NEW_PAD_CTRL(MX51_PAD_DISPB2_SER_DIN__GPIO3_5, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* AUDIO_MUTE */
-               NEW_PAD_CTRL(MX51_PAD_DISPB2_SER_DIO__GPIO3_6, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* SPARE_OUT */
-               NEW_PAD_CTRL(MX51_PAD_NANDF_D14__GPIO3_26, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* BEEPER_EN */
-               NEW_PAD_CTRL(MX51_PAD_NANDF_D13__GPIO3_27, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* POWER_OFF */
-               NEW_PAD_CTRL(MX51_PAD_NANDF_D10__GPIO3_30, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* FRAM_WE */
-               NEW_PAD_CTRL(MX51_PAD_CSPI1_RDY__GPIO4_26, PAD_CTL_PKE |
-                               PAD_CTL_DSE_MED), /* EXPANSION_EN */
-               MX51_PAD_GPIO1_2__PWM1_PWMO,
-       };
-
-       unsigned int i;
-
-       imx_iomux_v3_setup_multiple_pads(gpio_pads_1, ARRAY_SIZE(gpio_pads_1));
-
-       /* Now we need to trigger the watchdog */
-       WATCHDOG_RESET();
-
-       imx_iomux_v3_setup_multiple_pads(gpio_pads_2, ARRAY_SIZE(gpio_pads_2));
-
-       /*
-        * Set GPIO1_4 to high and output; it is used to reset
-        * the system on reboot
-        */
-       gpio_direction_output(IMX_GPIO_NR(1, 4), 1);
-
-       gpio_direction_output(IMX_GPIO_NR(1, 7), 0);
-       for (i = IMX_GPIO_NR(3, 1); i < IMX_GPIO_NR(3, 7); i++)
-               gpio_direction_output(i, 0);
-
-       gpio_direction_output(IMX_GPIO_NR(3, 30), 0);
-
-       /* Set POWER_OFF high */
-       gpio_direction_output(IMX_GPIO_NR(3, 27), 1);
-
-       gpio_direction_output(IMX_GPIO_NR(3, 26), 0);
-
-       gpio_direction_output(IMX_GPIO_NR(4, 26), 0);
-
-       gpio_direction_output(IMX_GPIO_NR(4, 25), 1);
-
-       WATCHDOG_RESET();
-}
-
-static void setup_fec(void)
-{
-       static const iomux_v3_cfg_t fec_pads[] = {
-               NEW_PAD_CTRL(MX51_PAD_EIM_EB2__FEC_MDIO, PAD_CTL_HYS |
-                               PAD_CTL_PUS_22K_UP | PAD_CTL_ODE |
-                               PAD_CTL_DSE_HIGH | PAD_CTL_SRE_FAST),
-               MX51_PAD_NANDF_CS3__FEC_MDC,
-               NEW_PAD_CTRL(MX51_PAD_EIM_CS3__FEC_RDATA3, MX51_PAD_CTRL_2),
-               NEW_PAD_CTRL(MX51_PAD_EIM_CS2__FEC_RDATA2, MX51_PAD_CTRL_2),
-               NEW_PAD_CTRL(MX51_PAD_EIM_EB3__FEC_RDATA1, MX51_PAD_CTRL_2),
-               MX51_PAD_NANDF_D9__FEC_RDATA0,
-               MX51_PAD_NANDF_CS6__FEC_TDATA3,
-               MX51_PAD_NANDF_CS5__FEC_TDATA2,
-               MX51_PAD_NANDF_CS4__FEC_TDATA1,
-               MX51_PAD_NANDF_D8__FEC_TDATA0,
-               MX51_PAD_NANDF_CS7__FEC_TX_EN,
-               MX51_PAD_NANDF_CS2__FEC_TX_ER,
-               MX51_PAD_NANDF_RDY_INT__FEC_TX_CLK,
-               NEW_PAD_CTRL(MX51_PAD_NANDF_RB2__FEC_COL, MX51_PAD_CTRL_4),
-               NEW_PAD_CTRL(MX51_PAD_NANDF_RB3__FEC_RX_CLK, MX51_PAD_CTRL_4),
-               MX51_PAD_EIM_CS5__FEC_CRS,
-               MX51_PAD_EIM_CS4__FEC_RX_ER,
-               NEW_PAD_CTRL(MX51_PAD_NANDF_D11__FEC_RX_DV, MX51_PAD_CTRL_4),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(fec_pads, ARRAY_SIZE(fec_pads));
-}
-
-struct fsl_esdhc_cfg esdhc_cfg[1] = {
-       {MMC_SDHC1_BASE_ADDR},
-};
-
-int get_mmc_getcd(u8 *cd, struct mmc *mmc)
-{
-       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
-
-       if (cfg->esdhc_base == MMC_SDHC1_BASE_ADDR)
-               *cd = gpio_get_value(IMX_GPIO_NR(1, 0));
-       else
-               *cd = 0;
-
-       return 0;
-}
-
-#ifdef CONFIG_FSL_ESDHC
-int board_mmc_init(bd_t *bis)
-{
-       static const iomux_v3_cfg_t sd1_pads[] = {
-               NEW_PAD_CTRL(MX51_PAD_SD1_CMD__SD1_CMD, PAD_CTL_DSE_MAX |
-                       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_SD1_CLK__SD1_CLK, PAD_CTL_DSE_MAX |
-                       PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_SD1_DATA0__SD1_DATA0, PAD_CTL_DSE_MAX |
-                       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_SD1_DATA1__SD1_DATA1, PAD_CTL_DSE_MAX |
-                       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_SD1_DATA2__SD1_DATA2, PAD_CTL_DSE_MAX |
-                       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_SD1_DATA3__SD1_DATA3, PAD_CTL_DSE_MAX |
-                       PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_SRE_FAST),
-               NEW_PAD_CTRL(MX51_PAD_GPIO1_0__SD1_CD, PAD_CTL_HYS),
-               NEW_PAD_CTRL(MX51_PAD_GPIO1_1__SD1_WP, PAD_CTL_HYS),
-       };
-
-       imx_iomux_v3_setup_multiple_pads(sd1_pads, ARRAY_SIZE(sd1_pads));
-
-       esdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-       return fsl_esdhc_initialize(bis, &esdhc_cfg[0]);
-}
-#endif
-
-void lcd_enable(void)
-{
-       static const iomux_v3_cfg_t lcd_pads[] = {
-               MX51_PAD_DI1_PIN2__DI1_PIN2,
-               MX51_PAD_DI1_PIN3__DI1_PIN3,
-       };
-
-       int ret;
-
-       imx_iomux_v3_setup_multiple_pads(lcd_pads, ARRAY_SIZE(lcd_pads));
-
-       gpio_set_value(IMX_GPIO_NR(1, 2), 1);
-       imx_iomux_v3_setup_pad(NEW_PAD_CTRL(MX51_PAD_GPIO1_2__GPIO1_2,
-                                               NO_PAD_CTRL));
-
-       ret = ipuv3_fb_init(&nec_nl6448bc26_09c, 0, IPU_PIX_FMT_RGB666);
-       if (ret)
-               puts("LCD cannot be configured\n");
-}
-
-int board_early_init_f(void)
-{
-
-
-       init_drive_strength();
-
-       /* Setup debug led */
-       gpio_direction_output(IMX_GPIO_NR(1, 6), 0);
-       imx_iomux_v3_setup_pad(NEW_PAD_CTRL(MX51_PAD_GPIO1_6__GPIO1_6,
-                                       PAD_CTL_DSE_MAX | PAD_CTL_SRE_FAST));
-
-       /* wait a little while to give the pll time to settle */
-       sdelay(100000);
-
-       setup_weim();
-       setup_uart();
-       setup_fec();
-       setup_gpios();
-
-       spi_io_init();
-
-       return 0;
-}
-
-static void backlight(int on)
-{
-       if (on) {
-               gpio_set_value(IMX_GPIO_NR(3, 1), 1);
-               udelay(10000);
-               gpio_set_value(IMX_GPIO_NR(3, 4), 1);
-       } else {
-               gpio_set_value(IMX_GPIO_NR(3, 1), 0);
-               gpio_set_value(IMX_GPIO_NR(3, 4), 0);
-       }
-}
-
-int board_init(void)
-{
-       /* address of boot parameters */
-       gd->bd->bi_boot_params = PHYS_SDRAM_1 + 0x100;
-
-       lcd_enable();
-
-       backlight(1);
-
-       return 0;
-}
-
-int board_late_init(void)
-{
-       power_init_mx51();
-
-       reset_peripherals(1);
-       udelay(2000);
-       reset_peripherals(0);
-       udelay(2000);
-
-       /* Early revisions require a second reset */
-#ifdef CONFIG_VISION2_HW_1_0
-       reset_peripherals(1);
-       udelay(2000);
-       reset_peripherals(0);
-       udelay(2000);
-#endif
-
-       return 0;
-}
-
-/*
- * Do not overwrite the console
- * Use always serial for U-Boot console
- */
-int overwrite_console(void)
-{
-       return 1;
-}
-
-int checkboard(void)
-{
-       puts("Board: TTControl Vision II CPU V\n");
-
-       return 0;
-}
-
-int do_vision_lcd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       int on;
-
-       if (argc < 2)
-               return cmd_usage(cmdtp);
-
-       on = (strcmp(argv[1], "on") == 0);
-       backlight(on);
-
-       return 0;
-}
-
-U_BOOT_CMD(
-       lcdbl, CONFIG_SYS_MAXARGS, 1, do_vision_lcd,
-       "Vision2 Backlight",
-       "lcdbl [on|off]\n"
-);
diff --git a/board/udoo/1066mhz_4x256mx16.cfg b/board/udoo/1066mhz_4x256mx16.cfg
deleted file mode 100644 (file)
index 1ac0aec..0000000
+++ /dev/null
@@ -1,55 +0,0 @@
-/*
- * Copyright (C) 2013 Boundary Devices
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-DATA 4, MX6_MMDC_P0_MDPDC, 0x00020036
-DATA 4, MX6_MMDC_P0_MDOTC, 0x09444040
-
-DATA 4, MX6_MMDC_P0_MDCFG0, 0x54597955
-DATA 4, MX6_MMDC_P0_MDCFG1, 0xFF328F64
-DATA 4, MX6_MMDC_P0_MDCFG2, 0x01FF00DB
-
-DATA 4, MX6_MMDC_P0_MDMISC, 0x00001740
-DATA 4, MX6_MMDC_P0_MDSCR,  0x00008000
-DATA 4, MX6_MMDC_P0_MDRWD,  0x000026D2
-
-DATA 4, MX6_MMDC_P0_MDOR,  0x00591023
-DATA 4, MX6_MMDC_P0_MDASP, 0x00000027
-DATA 4, MX6_MMDC_P0_MDCTL, 0x831A0000
-
-DATA 4, MX6_MMDC_P0_MDSCR, 0x04088032
-DATA 4, MX6_MMDC_P0_MDSCR, 0x00008033
-
-DATA 4, MX6_MMDC_P0_MDSCR,     0x00048031
-DATA 4, MX6_MMDC_P0_MDSCR,     0x09408030
-DATA 4, MX6_MMDC_P0_MDSCR,     0x04008040
-DATA 4, MX6_MMDC_P0_MPZQHWCTRL, 0xA1380003
-DATA 4, MX6_MMDC_P1_MPZQHWCTRL, 0xA1380003
-DATA 4, MX6_MMDC_P0_MDREF,     0x00005800
-DATA 4, MX6_MMDC_P0_MPODTCTRL,         0x00011117
-DATA 4, MX6_MMDC_P1_MPODTCTRL,         0x00011117
-
-DATA 4, MX6_MMDC_P0_MPDGCTRL0, 0x43510360
-DATA 4, MX6_MMDC_P0_MPDGCTRL1, 0x0342033F
-DATA 4, MX6_MMDC_P1_MPDGCTRL0, 0x033F033F
-DATA 4, MX6_MMDC_P1_MPDGCTRL1, 0x03290266
-
-DATA 4, MX6_MMDC_P0_MPRDDLCTL, 0x4B3E4141
-DATA 4, MX6_MMDC_P1_MPRDDLCTL, 0x47413B4A
-DATA 4, MX6_MMDC_P0_MPWRDLCTL, 0x42404843
-DATA 4, MX6_MMDC_P1_MPWRDLCTL, 0x4C3F4C45
-
-DATA 4, MX6_MMDC_P0_MPWLDECTRL0, 0x00350035
-DATA 4, MX6_MMDC_P0_MPWLDECTRL1, 0x001F001F
-DATA 4, MX6_MMDC_P1_MPWLDECTRL0, 0x00010001
-DATA 4, MX6_MMDC_P1_MPWLDECTRL1, 0x00010001
-
-DATA 4, MX6_MMDC_P0_MPMUR0, 0x00000800
-DATA 4, MX6_MMDC_P1_MPMUR0, 0x00000800
-
-DATA 4, MX6_MMDC_P0_MDPDC, 0x00025576
-DATA 4, MX6_MMDC_P0_MAPSR, 0x00011006
-DATA 4, MX6_MMDC_P0_MDSCR, 0x00000000
-
index 970f39f0f7f26538e3a6cff241033657d65d49b3..78617a21383c3738684f384521d3429f86f7ab88 100644 (file)
@@ -3,9 +3,6 @@ if TARGET_UDOO
 config SYS_BOARD
        default "udoo"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "udoo"
 
index ee8b61e37e3bc2a5f88e8efebd2324b95e8a2051..789e98ff85d314f22e41bff1785f25b46b02df7b 100644 (file)
@@ -3,4 +3,4 @@ M:      Fabio Estevam <fabio.estevam@freescale.com>
 S:     Maintained
 F:     board/udoo/
 F:     include/configs/udoo.h
-F:     configs/udoo_quad_defconfig
+F:     configs/udoo_defconfig
index 80efadaf0da661d0806c87983e9ebd8a53dab14c..1d6d9f891f85ecd22870072e18d5c94a698990e6 100644 (file)
@@ -4,4 +4,4 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-y  := udoo.o
+obj-y  := udoo.o udoo_spl.o
diff --git a/board/udoo/clocks.cfg b/board/udoo/clocks.cfg
deleted file mode 100644 (file)
index 9cd1af1..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2013 Boundary Devices
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *      Addr-type register length (1,2 or 4 bytes)
- *      Address   absolute address of the register
- *      value     value to be stored in the register
- */
-
-/* set the default clock gate to save power */
-DATA 4, CCM_CCGR0, 0x00C03F3F
-DATA 4, CCM_CCGR1, 0x0030FC03
-DATA 4, CCM_CCGR2, 0x0FFFC000
-DATA 4, CCM_CCGR3, 0x3FF00000
-DATA 4, CCM_CCGR4, 0x00FFF300
-DATA 4, CCM_CCGR5, 0x0F0000C3
-DATA 4, CCM_CCGR6, 0x000003FF
-
-/* enable AXI cache for VDOA/VPU/IPU */
-DATA 4, MX6_IOMUXC_GPR4, 0xF00000FF
-
-/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
-DATA 4, MX6_IOMUXC_GPR6, 0x007F007F
-DATA 4, MX6_IOMUXC_GPR7, 0x007F007F
-
diff --git a/board/udoo/ddr-setup.cfg b/board/udoo/ddr-setup.cfg
deleted file mode 100644 (file)
index 78cbe17..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * Copyright (C) 2013 Boundary Devices
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
- * Device Configuration Data (DCD)
- *
- * Each entry must have the format:
- * Addr-type           Address        Value
- *
- * where:
- *      Addr-type register length (1,2 or 4 bytes)
- *      Address   absolute address of the register
- *      value     value to be stored in the register
- */
-
-/*
- * DDR3 settings
- * MX6Q    ddr is limited to 1066 Mhz  currently 1056 MHz(528 MHz clock),
- *        memory bus width: 64 bits    x16/x32/x64
- * MX6DL   ddr is limited to 800 MHz(400 MHz clock)
- *        memory bus width: 64 bits    x16/x32/x64
- * MX6SOLO ddr is limited to 800 MHz(400 MHz clock)
- *        memory bus width: 32 bits    x16/x32
- */
-DATA 4, MX6_IOM_DRAM_SDQS0, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS1, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS2, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS3, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS4, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS5, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS6, 0x00000030
-DATA 4, MX6_IOM_DRAM_SDQS7, 0x00000030
-
-DATA 4, MX6_IOM_GRP_B0DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B1DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B2DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B3DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B4DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B5DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B6DS, 0x00000030
-DATA 4, MX6_IOM_GRP_B7DS, 0x00000030
-DATA 4, MX6_IOM_GRP_ADDDS, 0x00000030
-/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */
-DATA 4, MX6_IOM_GRP_CTLDS, 0x00000030
-
-DATA 4, MX6_IOM_DRAM_DQM0, 0x00020030
-DATA 4, MX6_IOM_DRAM_DQM1, 0x00020030
-DATA 4, MX6_IOM_DRAM_DQM2, 0x00020030
-DATA 4, MX6_IOM_DRAM_DQM3, 0x00020030
-DATA 4, MX6_IOM_DRAM_DQM4, 0x00020030
-DATA 4, MX6_IOM_DRAM_DQM5, 0x00020030
-DATA 4, MX6_IOM_DRAM_DQM6, 0x00020030
-DATA 4, MX6_IOM_DRAM_DQM7, 0x00020030
-
-DATA 4, MX6_IOM_DRAM_CAS, 0x00020030
-DATA 4, MX6_IOM_DRAM_RAS, 0x00020030
-DATA 4, MX6_IOM_DRAM_SDCLK_0, 0x00020030
-DATA 4, MX6_IOM_DRAM_SDCLK_1, 0x00020030
-
-DATA 4, MX6_IOM_DRAM_RESET, 0x00020030
-DATA 4, MX6_IOM_DRAM_SDCKE0, 0x00003000
-DATA 4, MX6_IOM_DRAM_SDCKE1, 0x00003000
-
-DATA 4, MX6_IOM_DRAM_SDODT0, 0x00003030
-DATA 4, MX6_IOM_DRAM_SDODT1, 0x00003030
-
-/* (differential input) */
-DATA 4, MX6_IOM_DDRMODE_CTL, 0x00020000
-/* (differential input) */
-DATA 4, MX6_IOM_GRP_DDRMODE, 0x00020000
-/* disable ddr pullups */
-DATA 4, MX6_IOM_GRP_DDRPKE, 0x00000000
-DATA 4, MX6_IOM_DRAM_SDBA2, 0x00000000
-/* 40 Ohm drive strength for cs0/1,sdba2,cke0/1,sdwe */
-DATA 4, MX6_IOM_GRP_DDR_TYPE, 0x000C0000
-
-/* Read data DQ Byte0-3 delay */
-DATA 4, MX6_MMDC_P0_MPRDDQBY0DL, 0x33333333
-DATA 4, MX6_MMDC_P0_MPRDDQBY1DL, 0x33333333
-DATA 4, MX6_MMDC_P0_MPRDDQBY2DL, 0x33333333
-DATA 4, MX6_MMDC_P0_MPRDDQBY3DL, 0x33333333
-DATA 4, MX6_MMDC_P1_MPRDDQBY0DL, 0x33333333
-DATA 4, MX6_MMDC_P1_MPRDDQBY1DL, 0x33333333
-DATA 4, MX6_MMDC_P1_MPRDDQBY2DL, 0x33333333
-DATA 4, MX6_MMDC_P1_MPRDDQBY3DL, 0x33333333
-
index e9236d444c848a955e863bf1a330a281a5839017..a574a2fceca4036547c0deb5caaf31bf12ba6527 100644 (file)
@@ -42,28 +42,28 @@ DECLARE_GLOBAL_DATA_PTR;
 
 int dram_init(void)
 {
-       gd->ram_size = (phys_size_t)CONFIG_DDR_MB * 1024 * 1024;
+       gd->ram_size = imx_ddr_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),
+       IOMUX_PADS(PAD_EIM_D26__UART2_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D27__UART2_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL)),
 };
 
 static iomux_v3_cfg_t const usdhc3_pads[] = {
-       MX6_PAD_SD3_CLK__SD3_CLK    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_CMD__SD3_CMD    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       IOMUX_PADS(PAD_SD3_CLK__SD3_CLK    | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_SD3_CMD__SD3_CMD    | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_SD3_DAT0__SD3_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_SD3_DAT1__SD3_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_SD3_DAT2__SD3_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_SD3_DAT3__SD3_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
 };
 
 static iomux_v3_cfg_t const wdog_pads[] = {
-       MX6_PAD_EIM_A24__GPIO5_IO04 | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_D19__GPIO3_IO19,
+       IOMUX_PADS(PAD_EIM_A24__GPIO5_IO04 | MUX_PAD_CTRL(NO_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D19__GPIO3_IO19),
 };
 
 int mx6_rgmii_rework(struct phy_device *phydev)
@@ -96,43 +96,43 @@ int mx6_rgmii_rework(struct phy_device *phydev)
 }
 
 static iomux_v3_cfg_t const enet_pads1[] = {
-       MX6_PAD_ENET_MDIO__ENET_MDIO            | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_MDC__ENET_MDC              | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TXC__RGMII_TXC    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD0__RGMII_TD0    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD1__RGMII_TD1    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD2__RGMII_TD2    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TD3__RGMII_TD3    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_TX_CTL__RGMII_TX_CTL      | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_ENET_REF_CLK__ENET_TX_CLK       | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RXC__RGMII_RXC    | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       IOMUX_PADS(PAD_ENET_MDIO__ENET_MDIO             | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_ENET_MDC__ENET_MDC               | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_TXC__RGMII_TXC     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_TD0__RGMII_TD0     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_TD1__RGMII_TD1     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_TD2__RGMII_TD2     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_TD3__RGMII_TD3     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_TX_CTL__RGMII_TX_CTL       | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_ENET_REF_CLK__ENET_TX_CLK        | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_RXC__RGMII_RXC     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
        /* RGMII reset */
-       MX6_PAD_EIM_D23__GPIO3_IO23             | MUX_PAD_CTRL(NO_PAD_CTRL),
+       IOMUX_PADS(PAD_EIM_D23__GPIO3_IO23              | MUX_PAD_CTRL(NO_PAD_CTRL)),
        /* Ethernet power supply */
-       MX6_PAD_EIM_EB3__GPIO2_IO31             | MUX_PAD_CTRL(NO_PAD_CTRL),
+       IOMUX_PADS(PAD_EIM_EB3__GPIO2_IO31              | MUX_PAD_CTRL(NO_PAD_CTRL)),
        /* pin 32 - 1 - (MODE0) all */
-       MX6_PAD_RGMII_RD0__GPIO6_IO25           | MUX_PAD_CTRL(NO_PAD_CTRL),
+       IOMUX_PADS(PAD_RGMII_RD0__GPIO6_IO25            | MUX_PAD_CTRL(NO_PAD_CTRL)),
        /* pin 31 - 1 - (MODE1) all */
-       MX6_PAD_RGMII_RD1__GPIO6_IO27           | MUX_PAD_CTRL(NO_PAD_CTRL),
+       IOMUX_PADS(PAD_RGMII_RD1__GPIO6_IO27            | MUX_PAD_CTRL(NO_PAD_CTRL)),
        /* pin 28 - 1 - (MODE2) all */
-       MX6_PAD_RGMII_RD2__GPIO6_IO28           | MUX_PAD_CTRL(NO_PAD_CTRL),
+       IOMUX_PADS(PAD_RGMII_RD2__GPIO6_IO28            | MUX_PAD_CTRL(NO_PAD_CTRL)),
        /* pin 27 - 1 - (MODE3) all */
-       MX6_PAD_RGMII_RD3__GPIO6_IO29           | MUX_PAD_CTRL(NO_PAD_CTRL),
+       IOMUX_PADS(PAD_RGMII_RD3__GPIO6_IO29            | MUX_PAD_CTRL(NO_PAD_CTRL)),
        /* pin 33 - 1 - (CLK125_EN) 125Mhz clockout enabled */
-       MX6_PAD_RGMII_RX_CTL__GPIO6_IO24        | MUX_PAD_CTRL(NO_PAD_CTRL),
+       IOMUX_PADS(PAD_RGMII_RX_CTL__GPIO6_IO24 | MUX_PAD_CTRL(NO_PAD_CTRL)),
 };
 
 static iomux_v3_cfg_t const enet_pads2[] = {
-       MX6_PAD_RGMII_RD0__RGMII_RD0    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RD1__RGMII_RD1    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RD2__RGMII_RD2    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RD3__RGMII_RD3    | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_RGMII_RX_CTL__RGMII_RX_CTL      | MUX_PAD_CTRL(ENET_PAD_CTRL),
+       IOMUX_PADS(PAD_RGMII_RD0__RGMII_RD0     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_RD1__RGMII_RD1     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_RD2__RGMII_RD2     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_RD3__RGMII_RD3     | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_RGMII_RX_CTL__RGMII_RX_CTL       | MUX_PAD_CTRL(ENET_PAD_CTRL)),
 };
 
 static void setup_iomux_enet(void)
 {
-       imx_iomux_v3_setup_multiple_pads(enet_pads1, ARRAY_SIZE(enet_pads1));
+       SETUP_IOMUX_PADS(enet_pads1);
        udelay(20);
        gpio_direction_output(IMX_GPIO_NR(2, 31), 1); /* Power supply on */
 
@@ -156,17 +156,17 @@ static void setup_iomux_enet(void)
        gpio_free(IMX_GPIO_NR(6, 28));
        gpio_free(IMX_GPIO_NR(6, 29));
 
-       imx_iomux_v3_setup_multiple_pads(enet_pads2, ARRAY_SIZE(enet_pads2));
+       SETUP_IOMUX_PADS(enet_pads2);
 }
 
 static void setup_iomux_uart(void)
 {
-       imx_iomux_v3_setup_multiple_pads(uart2_pads, ARRAY_SIZE(uart2_pads));
+       SETUP_IOMUX_PADS(uart2_pads);
 }
 
 static void setup_iomux_wdog(void)
 {
-       imx_iomux_v3_setup_multiple_pads(wdog_pads, ARRAY_SIZE(wdog_pads));
+       SETUP_IOMUX_PADS(wdog_pads);
        gpio_direction_output(WDT_TRG, 0);
        gpio_direction_output(WDT_EN, 1);
        gpio_direction_input(WDT_TRG);
@@ -191,28 +191,31 @@ int board_eth_init(bd_t *bis)
 #ifdef CONFIG_FEC_MXC
        bus = fec_get_miibus(base, -1);
        if (!bus)
-               return 0;
+               return -EINVAL;
        /* scan phy 4,5,6,7 */
        phydev = phy_find_by_mask(bus, (0xf << 4), PHY_INTERFACE_MODE_RGMII);
 
        if (!phydev) {
-               free(bus);
-               return 0;
+               ret = -EINVAL;
+               goto free_bus;
        }
        printf("using phy at %d\n", phydev->addr);
        ret  = fec_probe(bis, -1, base, bus, phydev);
-       if (ret) {
-               printf("FEC MXC: %s:failed\n", __func__);
-               free(phydev);
-               free(bus);
-       }
+       if (ret)
+               goto free_phydev;
 #endif
        return 0;
+
+free_phydev:
+       free(phydev);
+free_bus:
+       free(bus);
+       return ret;
 }
 
 int board_mmc_init(bd_t *bis)
 {
-       imx_iomux_v3_setup_multiple_pads(usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
+       SETUP_IOMUX_PADS(usdhc3_pads);
        usdhc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
        usdhc_cfg.max_bus_width = 4;
 
@@ -242,14 +245,29 @@ int board_init(void)
        gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
 
 #ifdef CONFIG_CMD_SATA
-       setup_sata();
+       if (is_cpu_type(MXC_CPU_MX6Q))
+               setup_sata();
+#endif
+       return 0;
+}
+
+int board_late_init(void)
+{
+#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+       if (is_cpu_type(MXC_CPU_MX6Q))
+               setenv("board_rev", "MX6Q");
+       else
+               setenv("board_rev", "MX6DL");
 #endif
        return 0;
 }
 
 int checkboard(void)
 {
-       puts("Board: Udoo\n");
+       if (is_cpu_type(MXC_CPU_MX6Q))
+               puts("Board: Udoo Quad\n");
+       else
+               puts("Board: Udoo DualLite\n");
 
        return 0;
 }
diff --git a/board/udoo/udoo.cfg b/board/udoo/udoo.cfg
deleted file mode 100644 (file)
index 8d7ff25..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * Copyright (C) 2013 Boundary Devices
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
- * Refer doc/README.imximage for more details about how-to configure
- * and create imximage boot image
- *
- * The syntax is taken as close as possible with the kwbimage
- */
-
-/* image version */
-IMAGE_VERSION 2
-
-/*
- * Boot Device : one of
- * spi, sd (the board has no nand neither onenand)
- */
-BOOT_FROM      sd
-
-#define __ASSEMBLY__
-#include <config.h>
-#include "asm/arch/mx6-ddr.h"
-#include "asm/arch/iomux.h"
-#include "asm/arch/crm_regs.h"
-
-#include "ddr-setup.cfg"
-#include "1066mhz_4x256mx16.cfg"
-#include "clocks.cfg"
diff --git a/board/udoo/udoo_spl.c b/board/udoo/udoo_spl.c
new file mode 100644 (file)
index 0000000..a1154ed
--- /dev/null
@@ -0,0 +1,271 @@
+/*
+ * Copyright (C) 2015 Udoo
+ * Author: Tungyi Lin <tungyilin1127@gmail.com>
+ *         Richard Hu <hakahu@gmail.com>
+ * Based on board/wandboard/spl.c
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <asm/arch/clock.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/mx6-pins.h>
+#include <asm/errno.h>
+#include <asm/gpio.h>
+#include <asm/imx-common/iomux-v3.h>
+#include <asm/imx-common/video.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/io.h>
+#include <asm/arch/sys_proto.h>
+#include <spl.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#if defined(CONFIG_SPL_BUILD)
+#include <asm/arch/mx6-ddr.h>
+
+/*
+ * Driving strength:
+ *   0x30 == 40 Ohm
+ *   0x28 == 48 Ohm
+ */
+#define IMX6DQ_DRIVE_STRENGTH          0x30
+#define IMX6SDL_DRIVE_STRENGTH 0x28
+
+/* configure MX6Q/DUAL mmdc DDR io registers */
+static struct mx6dq_iomux_ddr_regs mx6dq_ddr_ioregs = {
+       .dram_sdclk_0 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdclk_1 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_cas = IMX6DQ_DRIVE_STRENGTH,
+       .dram_ras = IMX6DQ_DRIVE_STRENGTH,
+       .dram_reset = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdcke0 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdcke1 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdba2 = 0x00000000,
+       .dram_sdodt0 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdodt1 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdqs0 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdqs1 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdqs2 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdqs3 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdqs4 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdqs5 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdqs6 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_sdqs7 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_dqm0 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_dqm1 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_dqm2 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_dqm3 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_dqm4 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_dqm5 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_dqm6 = IMX6DQ_DRIVE_STRENGTH,
+       .dram_dqm7 = IMX6DQ_DRIVE_STRENGTH,
+};
+
+/* configure MX6Q/DUAL mmdc GRP io registers */
+static struct mx6dq_iomux_grp_regs mx6dq_grp_ioregs = {
+       .grp_ddr_type = 0x000c0000,
+       .grp_ddrmode_ctl = 0x00020000,
+       .grp_ddrpke = 0x00000000,
+       .grp_addds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_ctlds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_ddrmode = 0x00020000,
+       .grp_b0ds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_b1ds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_b2ds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_b3ds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_b4ds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_b5ds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_b6ds = IMX6DQ_DRIVE_STRENGTH,
+       .grp_b7ds = IMX6DQ_DRIVE_STRENGTH,
+};
+
+/* configure MX6SOLO/DUALLITE mmdc DDR io registers */
+struct mx6sdl_iomux_ddr_regs mx6sdl_ddr_ioregs = {
+       .dram_sdclk_0 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdclk_1 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_cas = IMX6SDL_DRIVE_STRENGTH,
+       .dram_ras = IMX6SDL_DRIVE_STRENGTH,
+       .dram_reset = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdcke0 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdcke1 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdba2 = 0x00000000,
+       .dram_sdodt0 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdodt1 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdqs0 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdqs1 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdqs2 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdqs3 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdqs4 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdqs5 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdqs6 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_sdqs7 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_dqm0 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_dqm1 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_dqm2 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_dqm3 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_dqm4 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_dqm5 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_dqm6 = IMX6SDL_DRIVE_STRENGTH,
+       .dram_dqm7 = IMX6SDL_DRIVE_STRENGTH,
+};
+
+/* configure MX6SOLO/DUALLITE mmdc GRP io registers */
+struct mx6sdl_iomux_grp_regs mx6sdl_grp_ioregs = {
+       .grp_ddr_type = 0x000c0000,
+       .grp_ddrmode_ctl = 0x00020000,
+       .grp_ddrpke = 0x00000000,
+       .grp_addds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_ctlds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_ddrmode = 0x00020000,
+       .grp_b0ds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_b1ds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_b2ds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_b3ds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_b4ds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_b5ds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_b6ds = IMX6SDL_DRIVE_STRENGTH,
+       .grp_b7ds = IMX6SDL_DRIVE_STRENGTH,
+};
+
+/* MT41K128M16JT-125 */
+static struct mx6_ddr3_cfg mt41k128m16jt_125 = {
+       /* quad = 1066, duallite = 800 */
+       .mem_speed = 1066,
+       .density = 2,
+       .width = 16,
+       .banks = 8,
+       .rowaddr = 14,
+       .coladdr = 10,
+       .pagesz = 2,
+       .trcd = 1375,
+       .trcmin = 4875,
+       .trasmin = 3500,
+       .SRT = 0,
+};
+
+static struct mx6_mmdc_calibration mx6q_1g_mmdc_calib = {
+       .p0_mpwldectrl0 = 0x00350035,
+       .p0_mpwldectrl1 = 0x001F001F,
+       .p1_mpwldectrl0 = 0x00010001,
+       .p1_mpwldectrl1 = 0x00010001,
+       .p0_mpdgctrl0 = 0x43510360,
+       .p0_mpdgctrl1 = 0x0342033F,
+       .p1_mpdgctrl0 = 0x033F033F,
+       .p1_mpdgctrl1 = 0x03290266,
+       .p0_mprddlctl = 0x4B3E4141,
+       .p1_mprddlctl = 0x47413B4A,
+       .p0_mpwrdlctl = 0x42404843,
+       .p1_mpwrdlctl = 0x4C3F4C45,
+};
+
+static struct mx6_mmdc_calibration mx6dl_1g_mmdc_calib = {
+       .p0_mpwldectrl0 = 0x002F0038,
+       .p0_mpwldectrl1 = 0x001F001F,
+       .p1_mpwldectrl0 = 0x001F001F,
+       .p1_mpwldectrl1 = 0x001F001F,
+       .p0_mpdgctrl0 = 0x425C0251,
+       .p0_mpdgctrl1 = 0x021B021E,
+       .p1_mpdgctrl0 = 0x021B021E,
+       .p1_mpdgctrl1 = 0x01730200,
+       .p0_mprddlctl = 0x45474C45,
+       .p1_mprddlctl = 0x44464744,
+       .p0_mpwrdlctl = 0x3F3F3336,
+       .p1_mpwrdlctl = 0x32383630,
+};
+
+/* DDR 64bit 1GB */
+static struct mx6_ddr_sysinfo mem_qdl = {
+       .dsize = 2,
+       .cs1_mirror = 0,
+       /* config for full 4GB range so that get_mem_size() works */
+       .cs_density = 32,
+       .ncs = 1,
+       .bi_on = 1,
+       /* quad = 2, duallite = 1 */
+       .rtt_nom = 2,
+       /* quad = 2, duallite = 1 */
+       .rtt_wr = 2,
+       .ralat = 5,
+       .walat = 0,
+       .mif3_mode = 3,
+       .rst_to_cke = 0x23,
+       .sde_to_rst = 0x10,
+};
+
+static void ccgr_init(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       /* set the default clock gate to save power */
+       writel(0x00C03F3F, &ccm->CCGR0);
+       writel(0x0030FC03, &ccm->CCGR1);
+       writel(0x0FFFC000, &ccm->CCGR2);
+       writel(0x3FF00000, &ccm->CCGR3);
+       writel(0x00FFF300, &ccm->CCGR4);
+       writel(0x0F0000C3, &ccm->CCGR5);
+       writel(0x000003FF, &ccm->CCGR6);
+}
+
+static void gpr_init(void)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       /* enable AXI cache for VDOA/VPU/IPU */
+       writel(0xF00000FF, &iomux->gpr[4]);
+       /* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
+       writel(0x007F007F, &iomux->gpr[6]);
+       writel(0x007F007F, &iomux->gpr[7]);
+}
+
+static void spl_dram_init(void)
+{
+       if (is_cpu_type(MXC_CPU_MX6DL)) {
+               mt41k128m16jt_125.mem_speed = 800;
+               mem_qdl.rtt_nom = 1;
+               mem_qdl.rtt_wr = 1;
+
+               mx6sdl_dram_iocfg(64, &mx6sdl_ddr_ioregs, &mx6sdl_grp_ioregs);
+               mx6_dram_cfg(&mem_qdl, &mx6dl_1g_mmdc_calib, &mt41k128m16jt_125);
+       } else if (is_cpu_type(MXC_CPU_MX6Q)) {
+               mt41k128m16jt_125.mem_speed = 1066;
+               mem_qdl.rtt_nom = 2;
+               mem_qdl.rtt_wr = 2;
+
+               mx6dq_dram_iocfg(64, &mx6dq_ddr_ioregs, &mx6dq_grp_ioregs);
+               mx6_dram_cfg(&mem_qdl, &mx6q_1g_mmdc_calib, &mt41k128m16jt_125);
+       }
+
+       udelay(100);
+}
+
+void board_init_f(ulong dummy)
+{
+       ccgr_init();
+
+       /* setup AIPS and disable watchdog */
+       arch_cpu_init();
+
+       gpr_init();
+
+       /* iomux */
+       board_early_init_f();
+
+       /* setup GP timer */
+       timer_init();
+
+       /* UART clocks enabled and gd valid - init serial console */
+       preloader_console_init();
+
+       /* DDR initialization */
+       spl_dram_init();
+
+       /* Clear the BSS. */
+       memset(__bss_start, 0, __bss_end - __bss_start);
+
+       /* load/boot image from boot device */
+       board_init_r(NULL, 0);
+}
+#endif
diff --git a/board/vpac270/Kconfig b/board/vpac270/Kconfig
deleted file mode 100644 (file)
index 1701b35..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_VPAC270
-
-config SYS_BOARD
-       default "vpac270"
-
-config SYS_CONFIG_NAME
-       default "vpac270"
-
-endif
diff --git a/board/vpac270/MAINTAINERS b/board/vpac270/MAINTAINERS
deleted file mode 100644 (file)
index 1c62765..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-VPAC270 BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
-F:     board/vpac270/
-F:     include/configs/vpac270.h
-F:     configs/vpac270_nor_128_defconfig
-F:     configs/vpac270_nor_256_defconfig
-F:     configs/vpac270_ond_256_defconfig
diff --git a/board/vpac270/Makefile b/board/vpac270/Makefile
deleted file mode 100644 (file)
index ad7f7d8..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-#
-# Voipac PXA270 Support
-#
-# Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-ifndef CONFIG_SPL_BUILD
-obj-y  := vpac270.o
-else
-obj-y  := onenand.o
-endif
diff --git a/board/vpac270/onenand.c b/board/vpac270/onenand.c
deleted file mode 100644 (file)
index a749b31..0000000
+++ /dev/null
@@ -1,46 +0,0 @@
-/*
- * Voipac PXA270 OneNAND SPL
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <config.h>
-#include <asm/io.h>
-#include <onenand_uboot.h>
-#include <asm/arch/pxa.h>
-
-void board_init_f(unsigned long unused)
-{
-       extern uint32_t _end;
-       uint32_t tmp;
-
-       asm volatile("mov %0, pc" : "=r"(tmp));
-       tmp >>= 24;
-
-       /* The code runs from OneNAND RAM, copy SPL to SRAM and execute it. */
-       if (tmp == 0) {
-               tmp = (uint32_t)&_end - CONFIG_SPL_TEXT_BASE;
-               onenand_spl_load_image(0, tmp, (void *)CONFIG_SPL_TEXT_BASE);
-               asm volatile("mov pc, %0" : : "r"(CONFIG_SPL_TEXT_BASE));
-       }
-
-       /* Hereby, the code runs from (S)RAM, copy U-Boot and execute it. */
-       arch_cpu_init();
-       pxa2xx_dram_init();
-       onenand_spl_load_image(CONFIG_SPL_ONENAND_LOAD_ADDR,
-                               CONFIG_SPL_ONENAND_LOAD_SIZE,
-                               (void *)CONFIG_SYS_TEXT_BASE);
-       asm volatile("mov pc, %0" : : "r"(CONFIG_SYS_TEXT_BASE));
-
-       for (;;)
-               ;
-}
-
-void __attribute__((noreturn)) hang(void)
-{
-       for (;;)
-               ;
-}
diff --git a/board/vpac270/u-boot-spl.lds b/board/vpac270/u-boot-spl.lds
deleted file mode 100644 (file)
index 954afb9..0000000
+++ /dev/null
@@ -1,81 +0,0 @@
-/*
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * January 2004 - Changed to support H4 device
- * Copyright (c) 2004-2008 Texas Instruments
- *
- * (C) Copyright 2002
- * Gary Jennejohn, DENX Software Engineering, <garyj@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-OUTPUT_FORMAT("elf32-littlearm", "elf32-littlearm", "elf32-littlearm")
-OUTPUT_ARCH(arm)
-ENTRY(_start)
-SECTIONS
-{
-       . = CONFIG_SPL_TEXT_BASE;
-       .text.0 :
-       {
-               *(.vectors)
-               arch/arm/cpu/pxa/start.o                (.text*)
-               arch/arm/lib/built-in.o                 (.text*)
-               board/vpac270/built-in.o                (.text*)
-               drivers/built-in.o                      (.text*)
-       }
-
-
-       /* Start of the rest of the SPL */
-       . = CONFIG_SPL_TEXT_BASE + 0x800;
-
-       .text.1 :
-       {
-               *(.text*)
-       }
-
-       . = ALIGN(4);
-       .rodata : { *(SORT_BY_ALIGNMENT(SORT_BY_NAME(.rodata*))) }
-
-       . = ALIGN(4);
-       .data : {
-               *(.data*)
-       }
-
-       . = ALIGN(4);
-
-       __image_copy_end = .;
-
-       .rel.dyn : {
-               __rel_dyn_start = .;
-               *(.rel*)
-               __rel_dyn_end = .;
-       }
-
-       . = ALIGN(0x800);
-
-       .end :
-       {
-               *(.__end)
-       }
-
-       _image_binary_end = .;
-
-       .bss __rel_dyn_start (OVERLAY) : {
-               __bss_start = .;
-               *(.bss*)
-                . = ALIGN(4);
-               __bss_end = .;
-       }
-
-       .dynsym _image_binary_end : { *(.dynsym) }
-       .dynbss : { *(.dynbss) }
-       .dynstr : { *(.dynstr*) }
-       .dynamic : { *(.dynamic*) }
-       .hash : { *(.hash*) }
-       .plt : { *(.plt*) }
-       .interp : { *(.interp*) }
-       .gnu : { *(.gnu*) }
-       .ARM.exidx : { *(.ARM.exidx*) }
-}
diff --git a/board/vpac270/vpac270.c b/board/vpac270/vpac270.c
deleted file mode 100644 (file)
index 8d777df..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * Voipac PXA270 Support
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/regs-mmc.h>
-#include <asm/arch/pxa.h>
-#include <netdev.h>
-#include <serial.h>
-#include <asm/io.h>
-#include <usb.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-int board_init(void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* memory and cpu-speed are setup before relocation */
-       /* so we do _nothing_ here */
-
-       /* Arch number of vpac270 */
-       gd->bd->bi_arch_number = MACH_TYPE_VPAC270;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       return 0;
-}
-
-int dram_init(void)
-{
-#ifndef        CONFIG_ONENAND
-       pxa2xx_dram_init();
-#endif
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-
-#ifdef CONFIG_RAM_256M
-       gd->bd->bi_dram[1].start = PHYS_SDRAM_2;
-       gd->bd->bi_dram[1].size = PHYS_SDRAM_2_SIZE;
-#endif
-}
-
-#ifdef CONFIG_CMD_MMC
-int board_mmc_init(bd_t *bis)
-{
-       pxa_mmc_register(0);
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_CMD_USB
-int board_usb_init(int index, enum usb_init_type init)
-{
-       writel((UHCHR | UHCHR_PCPL | UHCHR_PSPL) &
-               ~(UHCHR_SSEP0 | UHCHR_SSEP1 | UHCHR_SSEP2 | UHCHR_SSE),
-               UHCHR);
-
-       writel(readl(UHCHR) | UHCHR_FSBIR, UHCHR);
-
-       while (readl(UHCHR) & UHCHR_FSBIR)
-               ;
-
-       writel(readl(UHCHR) & ~UHCHR_SSE, UHCHR);
-       writel((UHCHIE_UPRIE | UHCHIE_RWIE), UHCHIE);
-
-       /* Clear any OTG Pin Hold */
-       if (readl(PSSR) & PSSR_OTGPH)
-               writel(readl(PSSR) | PSSR_OTGPH, PSSR);
-
-       writel(readl(UHCRHDA) & ~(0x200), UHCRHDA);
-       writel(readl(UHCRHDA) | 0x100, UHCRHDA);
-
-       /* Set port power control mask bits, only 3 ports. */
-       writel(readl(UHCRHDB) | (0x7<<17), UHCRHDB);
-
-       /* enable port 2 */
-       writel(readl(UP2OCR) | UP2OCR_HXOE | UP2OCR_HXS |
-               UP2OCR_DMPDE | UP2OCR_DPPDE, UP2OCR);
-
-       return 0;
-}
-
-int board_usb_cleanup(int index, enum usb_init_type init)
-{
-       return 0;
-}
-
-void usb_board_stop(void)
-{
-       writel(readl(UHCHR) | UHCHR_FHR, UHCHR);
-       udelay(11);
-       writel(readl(UHCHR) & ~UHCHR_FHR, UHCHR);
-
-       writel(readl(UHCCOMS) | 1, UHCCOMS);
-       udelay(10);
-
-       writel(readl(CKEN) & ~CKEN10_USBHOST, CKEN);
-
-       return;
-}
-#endif
-
-#ifdef CONFIG_DRIVER_DM9000
-int board_eth_init(bd_t *bis)
-{
-       return dm9000_initialize(bis);
-}
-#endif
index 392856671551ebd1a0e785459e38a511ba4a0785..def63696e5f8260633dfb4a4891a8dcf394ae7c2 100644 (file)
@@ -3,9 +3,6 @@ if TARGET_WANDBOARD
 config SYS_BOARD
        default "wandboard"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "wandboard"
 
index 7b569ccb6492d6bf2e1291d057bfbbfb1c6f82d9..dc0263631906afe07f2f4f8530158d533ce0acbf 100644 (file)
@@ -3,9 +3,6 @@ if TARGET_WARP
 config SYS_BOARD
        default "warp"
 
-config SYS_SOC
-       default "mx6"
-
 config SYS_CONFIG_NAME
        default "warp"
 
diff --git a/board/xaeniax/Kconfig b/board/xaeniax/Kconfig
deleted file mode 100644 (file)
index 519e21f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_XAENIAX
-
-config SYS_BOARD
-       default "xaeniax"
-
-config SYS_CONFIG_NAME
-       default "xaeniax"
-
-endif
diff --git a/board/xaeniax/MAINTAINERS b/board/xaeniax/MAINTAINERS
deleted file mode 100644 (file)
index 44bb588..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-XAENIAX BOARD
-#M:    -
-S:     Maintained
-F:     board/xaeniax/
-F:     include/configs/xaeniax.h
-F:     configs/xaeniax_defconfig
diff --git a/board/xaeniax/Makefile b/board/xaeniax/Makefile
deleted file mode 100644 (file)
index e5f116d..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := xaeniax.o flash.o
diff --git a/board/xaeniax/flash.c b/board/xaeniax/flash.c
deleted file mode 100644 (file)
index 6ad6216..0000000
+++ /dev/null
@@ -1,412 +0,0 @@
-/*
- * (C) Copyright 2001
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2001
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/byteorder/swab.h>
-
-
-flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS];   /* info for FLASH chips    */
-
-/* Board support for 1 or 2 flash devices */
-#define FLASH_PORT_WIDTH32
-#undef FLASH_PORT_WIDTH16
-
-#ifdef FLASH_PORT_WIDTH16
-#define FLASH_PORT_WIDTH               ushort
-#define FLASH_PORT_WIDTHV              vu_short
-#define SWAP(x)               __swab16(x)
-#else
-#define FLASH_PORT_WIDTH               ulong
-#define FLASH_PORT_WIDTHV              vu_long
-#define SWAP(x)               __swab32(x)
-#endif
-
-#define FPW    FLASH_PORT_WIDTH
-#define FPWV   FLASH_PORT_WIDTHV
-
-#define mb() __asm__ __volatile__ ("" : : : "memory")
-
-/*-----------------------------------------------------------------------
- * Functions
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info);
-static int write_data (flash_info_t *info, ulong dest, FPW data);
-static void flash_get_offsets (ulong base, flash_info_t *info);
-void inline spin_wheel (void);
-
-/*-----------------------------------------------------------------------
- */
-
-unsigned long flash_init (void)
-{
-       int i;
-       ulong size = 0;
-
-       for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++) {
-               switch (i) {
-               case 0:
-                       flash_get_size ((FPW *) PHYS_FLASH_1, &flash_info[i]);
-                       flash_get_offsets (PHYS_FLASH_1, &flash_info[i]);
-                       break;
-               case 1:
-                       flash_get_size ((FPW *) PHYS_FLASH_2, &flash_info[i]);
-                       flash_get_offsets (PHYS_FLASH_2, &flash_info[i]);
-                       break;
-               default:
-                       panic ("configured too many flash banks!\n");
-                       break;
-               }
-               size += flash_info[i].size;
-       }
-
-       /* Protect monitor and environment sectors
-        */
-       flash_protect ( FLAG_PROTECT_SET,
-                       CONFIG_SYS_FLASH_BASE,
-                       CONFIG_SYS_FLASH_BASE + monitor_flash_len - 1,
-                       &flash_info[0] );
-
-       flash_protect ( FLAG_PROTECT_SET,
-                       CONFIG_ENV_ADDR,
-                       CONFIG_ENV_ADDR + CONFIG_ENV_SIZE - 1, &flash_info[0] );
-
-       return size;
-}
-
-/*-----------------------------------------------------------------------
- */
-static void flash_get_offsets (ulong base, flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return;
-       }
-
-       if ((info->flash_id & FLASH_VENDMASK) == FLASH_MAN_INTEL) {
-               for (i = 0; i < info->sector_count; i++) {
-                       info->start[i] = base + (i * PHYS_FLASH_SECT_SIZE);
-                       info->protect[i] = 0;
-               }
-       }
-}
-
-/*-----------------------------------------------------------------------
- */
-void flash_print_info (flash_info_t *info)
-{
-       int i;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               printf ("missing or unknown FLASH type\n");
-               return;
-       }
-
-       switch (info->flash_id & FLASH_VENDMASK) {
-       case FLASH_MAN_INTEL:
-               printf ("INTEL ");
-               break;
-       default:
-               printf ("Unknown Vendor ");
-               break;
-       }
-
-       switch (info->flash_id & FLASH_TYPEMASK) {
-       case FLASH_28F128J3A:
-               printf ("28F128J3A\n");
-               break;
-       default:
-               printf ("Unknown Chip Type\n");
-               break;
-       }
-
-       printf ("  Size: %ld MB in %d Sectors\n",
-                       info->size >> 20, info->sector_count);
-
-       printf ("  Sector Start Addresses:");
-       for (i = 0; i < info->sector_count; ++i) {
-               if ((i % 5) == 0)
-                       printf ("\n   ");
-               printf (" %08lX%s",
-                       info->start[i],
-                       info->protect[i] ? " (RO)" : "     ");
-       }
-       printf ("\n");
-       return;
-}
-
-/*
- * The following code cannot be run from FLASH!
- */
-static ulong flash_get_size (FPW *addr, flash_info_t *info)
-{
-       volatile FPW value;
-
-       /* Write auto select command: read Manufacturer ID */
-       addr[0x5555] = (FPW) 0x00AA00AA;
-       addr[0x2AAA] = (FPW) 0x00550055;
-       addr[0x5555] = (FPW) 0x00900090;
-
-       mb ();
-       value = addr[0];
-
-       switch (value) {
-
-       case (FPW) INTEL_MANUFACT:
-               info->flash_id = FLASH_MAN_INTEL;
-               break;
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               info->sector_count = 0;
-               info->size = 0;
-               addr[0] = (FPW) 0x00FF00FF;     /* restore read mode */
-               return (0);                     /* no or unknown flash  */
-       }
-
-       mb ();
-       value = addr[1];                        /* device ID        */
-
-       switch (value) {
-
-       case (FPW) INTEL_ID_28F128J3A:
-               info->flash_id += FLASH_28F128J3A;
-               info->sector_count = 128;
-               info->size = 0x02000000;
-               break;                          /* => 16 MB     */
-
-       default:
-               info->flash_id = FLASH_UNKNOWN;
-               break;
-       }
-
-       if (info->sector_count > CONFIG_SYS_MAX_FLASH_SECT) {
-               printf ("** ERROR: sector count %d > max (%d) **\n",
-                       info->sector_count, CONFIG_SYS_MAX_FLASH_SECT);
-               info->sector_count = CONFIG_SYS_MAX_FLASH_SECT;
-       }
-
-       addr[0] = (FPW) 0x00FF00FF;             /* restore read mode */
-
-       return (info->size);
-}
-
-
-/*-----------------------------------------------------------------------
- */
-
-int flash_erase (flash_info_t *info, int s_first, int s_last)
-{
-       int prot, sect;
-       ulong type, start;
-       int rcode = 0;
-
-       if ((s_first < 0) || (s_first > s_last)) {
-               if (info->flash_id == FLASH_UNKNOWN) {
-                       printf ("- missing\n");
-               } else {
-                       printf ("- no sectors to erase\n");
-               }
-               return 1;
-       }
-
-       type = (info->flash_id & FLASH_VENDMASK);
-       if ((type != FLASH_MAN_INTEL)) {
-               printf ("Can't erase unknown flash type %08lx - aborted\n",
-                       info->flash_id);
-               return 1;
-       }
-
-       prot = 0;
-       for (sect = s_first; sect <= s_last; ++sect) {
-               if (info->protect[sect]) {
-                       prot++;
-               }
-       }
-
-       if (prot) {
-               printf ("- Warning: %d protected sectors will not be erased!\n",
-                       prot);
-       } else {
-               printf ("\n");
-       }
-
-       /* Disable interrupts which might cause a timeout here */
-       disable_interrupts();
-
-       /* Start erase on unprotected sectors */
-       for (sect = s_first; sect <= s_last; sect++) {
-               if (info->protect[sect] == 0) { /* not protected */
-                       FPWV *addr = (FPWV *) (info->start[sect]);
-                       FPW status;
-
-                       printf ("Erasing sector %2d ... ", sect);
-
-                       /* arm simple, non interrupt dependent timer */
-                       start = get_timer(0);
-
-                       *addr = (FPW) 0x00500050;       /* clear status register */
-                       *addr = (FPW) 0x00200020;       /* erase setup */
-                       *addr = (FPW) 0x00D000D0;       /* erase confirm */
-
-                       while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
-                               if (get_timer(start) > CONFIG_SYS_FLASH_ERASE_TOUT) {
-                                       printf ("Timeout\n");
-                                       *addr = (FPW) 0x00B000B0;       /* suspend erase     */
-                                       *addr = (FPW) 0x00FF00FF;       /* reset to read mode */
-                                       rcode = 1;
-                                       break;
-                               }
-                       }
-
-                       *addr = 0x00500050;     /* clear status register cmd.   */
-                       *addr = 0x00FF00FF;     /* resest to read mode          */
-
-                       printf (" done\n");
-               }
-       }
-       return rcode;
-}
-
-/*-----------------------------------------------------------------------
- * Copy memory to flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- * 4 - Flash not identified
- */
-
-int write_buff (flash_info_t *info, uchar *src, ulong addr, ulong cnt)
-{
-       ulong cp, wp;
-       FPW data;
-       int count, i, l, rc, port_width;
-
-       if (info->flash_id == FLASH_UNKNOWN) {
-               return 4;
-       }
-/* get lower word aligned address */
-#ifdef FLASH_PORT_WIDTH16
-       wp = (addr & ~1);
-       port_width = 2;
-#else
-       wp = (addr & ~3);
-       port_width = 4;
-#endif
-
-       /*
-        * handle unaligned start bytes
-        */
-       if ((l = addr - wp) != 0) {
-               data = 0;
-               for (i = 0, cp = wp; i < l; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *) cp);
-               }
-               for (; i < port_width && cnt > 0; ++i) {
-                       data = (data << 8) | *src++;
-                       --cnt;
-                       ++cp;
-               }
-               for (; cnt == 0 && i < port_width; ++i, ++cp) {
-                       data = (data << 8) | (*(uchar *) cp);
-               }
-
-               if ((rc = write_data (info, wp, SWAP (data))) != 0) {
-                       return (rc);
-               }
-               wp += port_width;
-       }
-
-       /*
-        * handle word aligned part
-        */
-       count = 0;
-       while (cnt >= port_width) {
-               data = 0;
-               for (i = 0; i < port_width; ++i) {
-                       data = (data << 8) | *src++;
-               }
-               if ((rc = write_data (info, wp, SWAP (data))) != 0) {
-                       return (rc);
-               }
-               wp += port_width;
-               cnt -= port_width;
-               if (count++ > 0x800) {
-                       spin_wheel ();
-                       count = 0;
-               }
-       }
-
-       if (cnt == 0) {
-               return (0);
-       }
-
-       /*
-        * handle unaligned tail bytes
-        */
-       data = 0;
-       for (i = 0, cp = wp; i < port_width && cnt > 0; ++i, ++cp) {
-               data = (data << 8) | *src++;
-               --cnt;
-       }
-       for (; i < port_width; ++i, ++cp) {
-               data = (data << 8) | (*(uchar *) cp);
-       }
-
-       return (write_data (info, wp, SWAP (data)));
-}
-
-/*-----------------------------------------------------------------------
- * Write a word or halfword to Flash, returns:
- * 0 - OK
- * 1 - write timeout
- * 2 - Flash not erased
- */
-static int write_data (flash_info_t *info, ulong dest, FPW data)
-{
-       FPWV *addr = (FPWV *) dest;
-       ulong status;
-       ulong start;
-
-       /* Check if Flash is (sufficiently) erased */
-       if ((*addr & data) != data) {
-               printf ("not erased at %08lx (%lx)\n", (ulong) addr, *addr);
-               return (2);
-       }
-       /* Disable interrupts which might cause a timeout here */
-       disable_interrupts();
-
-       *addr = (FPW) 0x00400040;       /* write setup */
-       *addr = data;
-
-       /* arm simple, non interrupt dependent timer */
-       start = get_timer(0);
-
-       /* wait while polling the status register */
-       while (((status = *addr) & (FPW) 0x00800080) != (FPW) 0x00800080) {
-               if (get_timer(start) > CONFIG_SYS_FLASH_WRITE_TOUT) {
-                       *addr = (FPW) 0x00FF00FF;       /* restore read mode */
-                       return (1);
-               }
-       }
-
-       *addr = (FPW) 0x00FF00FF;       /* restore read mode */
-
-       return (0);
-}
-
-void inline spin_wheel (void)
-{
-       static int p = 0;
-       static char w[] = "\\/-";
-
-       printf ("\010%c", w[p]);
-       (++p == 3) ? (p = 0) : 0;
-}
diff --git a/board/xaeniax/xaeniax.c b/board/xaeniax/xaeniax.c
deleted file mode 100644 (file)
index 995c262..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-/*
- * (C) Copyright 2004
- * Vincent Dubey, Xa SA, vincent.dubey@xa-ch.com
- *
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <netdev.h>
-#include <asm/arch/pxa.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* arch number of xaeniax */
-       gd->bd->bi_arch_number = 585;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       return 0;
-}
-
-int board_late_init(void)
-{
-       setenv("stdout", "serial");
-       setenv("stderr", "serial");
-       return 0;
-}
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-}
-
-#ifdef CONFIG_CMD_NET
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_SMC91111
-       rc = smc91111_initialize(0, CONFIG_SMC91111_BASE);
-#endif
-       return rc;
-}
-#endif
diff --git a/board/zeus/Kconfig b/board/zeus/Kconfig
deleted file mode 100644 (file)
index 6779650..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_ZEUS
-
-config SYS_BOARD
-       default "zeus"
-
-config SYS_CONFIG_NAME
-       default "zeus"
-
-endif
diff --git a/board/zeus/MAINTAINERS b/board/zeus/MAINTAINERS
deleted file mode 100644 (file)
index 3118710..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ZEUS BOARD
-M:     Stefan Roese <sr@denx.de>
-S:     Maintained
-F:     board/zeus/
-F:     include/configs/zeus.h
-F:     configs/zeus_defconfig
diff --git a/board/zeus/Makefile b/board/zeus/Makefile
deleted file mode 100644 (file)
index aa3658a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2007
-# Stefan Roese, DENX Software Engineering, sr@denx.de.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  = zeus.o update.o
diff --git a/board/zeus/README b/board/zeus/README
deleted file mode 100644 (file)
index 1848d8c..0000000
+++ /dev/null
@@ -1,73 +0,0 @@
-
-Storage of the board specific values (ethaddr...)
--------------------------------------------------
-
-The board specific environment variables that should be unique
-for each individual board, can be stored in the I2C EEPROM. This
-will be done from offset 0x80 with the length of 0x80 bytes. The
-following command can be used to store the values here:
-
-=> setdef de:20:6a:ed:e2:72 de:20:6a:ed:e2:73 AB0001
-
-         ethaddr           eth1addr          serial#
-
-Now those 3 values are stored into the I2C EEPROM. A CRC is added
-to make sure that the values get not corrupted.
-
-
-SW-Reset Pushbutton handling:
------------------------------
-
-The SW-reset push button is connected to a GPIO input too. This
-way U-Boot can "see" how long the SW-reset was pressed, and a
-specific action can be taken. Two different actions are supported:
-
-a) Release after more than 5 seconds and less then 10 seconds:
-   -> Run POST
-
-   Please note, that the POST test will take a while (approx. 1 min
-   on the 128MByte board). This is mainly due to the system memory
-   test.
-
-b) Release after more than 10 seconds:
-   -> Restore factory default settings
-
-   The factory default values are restored. The default environment
-   variables are restored (ipaddr, serverip...) and the board
-   specific values (ethaddr, eth1addr and serial#) are restored
-   to the environment from the I2C EEPROM. Also a bootline parameter
-   is added to the Linux bootline to signal the Linux kernel upon
-   the next startup, that the factory defaults should be restored.
-
-The command to check this sw-reset status and act accordingly is
-
-=> chkreset
-
-This command is added to the default "bootcmd", so that it is called
-automatically upon startup.
-
-Also, the 2 LED's are used to indicate the current status of this
-command (time passed since pushing the button). When the POST test
-will be run, the green LED will be switched off, and when the
-factory restore will be initiated, the reg LED will be switched off.
-
-
-Loggin of POST results:
------------------------
-
-The results of the POST tests are logged in a logbuffer located at the end
-of the onboard memory. It can be accessed with the U-Boot command "log":
-
-=> log show
-<4>POST memory PASSED
-<4>POST cache PASSED
-<4>POST cpu PASSED
-<4>POST uart PASSED
-<4>POST ethernet PASSED
-
-The DENX Linux kernel tree has support for this log buffer included. Exactly
-this buffer is used for logging of all kernel messages too. By enabling the
-compile time option "CONFIG_LOGBUFFER" this support is enabled. This way you
-can access the U-Boot log messages from Linux too.
-
-2007-08-10, Stefan Roese <sr@denx.de>
diff --git a/board/zeus/update.c b/board/zeus/update.c
deleted file mode 100644 (file)
index ac738ef..0000000
+++ /dev/null
@@ -1,89 +0,0 @@
-/*
- * (C) Copyright 2007
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <common.h>
-#include <command.h>
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <asm/ppc4xx-gpio.h>
-#include <i2c.h>
-
-#if defined(CONFIG_ZEUS)
-
-u8 buf_zeus_ce[] = {
-/*00    01    02    03    04    05    06    07 */
-  0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-/*08    09    0a    0b    0c    0d    0e    0f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-/*10    11    12    13    14    15    16    17 */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-/*18    19    1a    1b    1c    1d    1e    1f */
-  0x00, 0xc0, 0x50, 0x12, 0x72, 0x3e, 0x00, 0x00 };
-
-u8 buf_zeus_pe[] = {
-
-/* CPU_CLOCK_DIV 1    = 00
-   CPU_PLB_FREQ_DIV 3 = 10
-   OPB_PLB_FREQ_DIV 2 = 01
-   EBC_PLB_FREQ_DIV 2 = 00
-   MAL_PLB_FREQ_DIV 1 = 00
-   PCI_PLB_FRQ_DIV 3  = 10
-   PLL_PLLOUTA        = IS SET
-   PLL_OPERATING      = IS NOT SET
-   PLL_FDB_MUL 10     = 1010
-   PLL_FWD_DIV_A 3    = 101
-   PLL_FWD_DIV_B 3    = 101
-   TUNE               = 0x2be */
-/*00    01    02    03    04    05    06    07 */
-  0x05, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-/*08    09    0a    0b    0c    0d    0e    0f */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-/*10    11    12    13    14    15    16    17 */
-  0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
-/*18    19    1a    1b    1c    1d    1e    1f */
-  0x00, 0x60, 0x68, 0x2d, 0x42, 0xbe, 0x00, 0x00 };
-
-static int update_boot_eeprom(void)
-{
-       u32 len = 0x20;
-       u8 chip = CONFIG_SYS_I2C_EEPROM_ADDR;
-       u8 *pbuf;
-       u8 base;
-       int i;
-
-       if (in_be32((void *)GPIO0_IR) & GPIO_VAL(CONFIG_SYS_GPIO_ZEUS_PE)) {
-               pbuf = buf_zeus_pe;
-               base = 0x40;
-       } else {
-               pbuf = buf_zeus_ce;
-               base = 0x00;
-       }
-
-       for (i = 0; i < len; i++, base++) {
-               if (i2c_write(chip, base, 1, &pbuf[i], 1) != 0) {
-                       printf("i2c_write fail\n");
-                       return 1;
-               }
-               udelay(11000);
-       }
-
-       return 0;
-}
-
-int do_update_boot_eeprom(cmd_tbl_t* cmdtp, int flag, int argc, char * const argv[])
-{
-       return update_boot_eeprom();
-}
-
-U_BOOT_CMD (
-       update_boot_eeprom, 1, 1, do_update_boot_eeprom,
-       "update boot eeprom content",
-       ""
-);
-
-#endif
diff --git a/board/zeus/zeus.c b/board/zeus/zeus.c
deleted file mode 100644 (file)
index e2b12f6..0000000
+++ /dev/null
@@ -1,410 +0,0 @@
-/*
- * (C) Copyright 2007
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <malloc.h>
-#include <environment.h>
-#include <logbuff.h>
-#include <post.h>
-
-#include <asm/processor.h>
-#include <asm/io.h>
-#include <asm/ppc4xx-gpio.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define REBOOT_MAGIC   0x07081967
-#define REBOOT_NOP     0x00000000
-#define REBOOT_DO_POST 0x00000001
-
-extern flash_info_t flash_info[CONFIG_SYS_MAX_FLASH_BANKS]; /* info for FLASH chips    */
-
-ulong flash_get_size(ulong base, int banknum);
-void env_crc_update(void);
-
-static u32 start_time;
-
-int board_early_init_f(void)
-{
-       mtdcr(UIC0SR, 0xFFFFFFFF);      /* clear all ints */
-       mtdcr(UIC0ER, 0x00000000);      /* disable all ints */
-       mtdcr(UIC0CR, 0x00000000);
-       mtdcr(UIC0PR, 0xFFFF7F00);      /* set int polarities */
-       mtdcr(UIC0TR, 0x00000000);      /* set int trigger levels */
-       mtdcr(UIC0SR, 0xFFFFFFFF);      /* clear all ints */
-       mtdcr(UIC0VCR, 0x00000001);     /* set vect base=0,INT0 highest priority */
-
-       /*
-        * Configure CPC0_PCI to enable PerWE as output
-        */
-       mtdcr(CPC0_PCI, CPC0_PCI_SPE);
-
-       return 0;
-}
-
-int misc_init_r(void)
-{
-       u32 pbcr;
-       int size_val = 0;
-       u32 post_magic;
-       u32 post_val;
-
-       post_magic = in_be32((void *)CONFIG_SYS_POST_MAGIC);
-       post_val = in_be32((void *)CONFIG_SYS_POST_VAL);
-       if ((post_magic == REBOOT_MAGIC) && (post_val == REBOOT_DO_POST)) {
-               /*
-                * Set special bootline bootparameter to pass this POST boot
-                * mode to Linux to reset the username/password
-                */
-               setenv("addmisc", "setenv bootargs \\${bootargs} factory_reset=yes");
-
-               /*
-                * Normally don't run POST tests, only when enabled
-                * via the sw-reset button. So disable further tests
-                * upon next bootup here.
-                */
-               out_be32((void *)CONFIG_SYS_POST_VAL, REBOOT_NOP);
-       } else {
-               /*
-                * Only run POST when initiated via the sw-reset button mechanism
-                */
-               post_word_store(0);
-       }
-
-       /*
-        * Get current time
-        */
-       start_time = get_timer(0);
-
-       /*
-        * FLASH stuff...
-        */
-
-       /* Re-do sizing to get full correct info */
-
-       /* adjust flash start and offset */
-       mfebc(PB0CR, pbcr);
-       switch (gd->bd->bi_flashsize) {
-       case 1 << 20:
-               size_val = 0;
-               break;
-       case 2 << 20:
-               size_val = 1;
-               break;
-       case 4 << 20:
-               size_val = 2;
-               break;
-       case 8 << 20:
-               size_val = 3;
-               break;
-       case 16 << 20:
-               size_val = 4;
-               break;
-       case 32 << 20:
-               size_val = 5;
-               break;
-       case 64 << 20:
-               size_val = 6;
-               break;
-       case 128 << 20:
-               size_val = 7;
-               break;
-       }
-       pbcr = (pbcr & 0x0001ffff) | gd->bd->bi_flashstart | (size_val << 17);
-       mtebc(PB0CR, pbcr);
-
-       /*
-        * Re-check to get correct base address
-        */
-       flash_get_size(gd->bd->bi_flashstart, 0);
-
-       /* Monitor protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           -CONFIG_SYS_MONITOR_LEN,
-                           0xffffffff,
-                           &flash_info[0]);
-
-       /* Env protection ON by default */
-       (void)flash_protect(FLAG_PROTECT_SET,
-                           CONFIG_ENV_ADDR_REDUND,
-                           CONFIG_ENV_ADDR_REDUND + 2*CONFIG_ENV_SECT_SIZE - 1,
-                           &flash_info[0]);
-
-       return 0;
-}
-
-/*
- * Check Board Identity:
- */
-int checkboard(void)
-{
-       char buf[64];
-       int i = getenv_f("serial#", buf, sizeof(buf));
-
-       puts("Board: Zeus-");
-
-       if (in_be32((void *)GPIO0_IR) & GPIO_VAL(CONFIG_SYS_GPIO_ZEUS_PE))
-               puts("PE");
-       else
-               puts("CE");
-
-       puts(" of BulletEndPoint");
-
-       if (i > 0) {
-               puts(", serial# ");
-               puts(buf);
-       }
-       putc('\n');
-
-       /* both LED's off */
-       gpio_write_bit(CONFIG_SYS_GPIO_LED_RED, 0);
-       gpio_write_bit(CONFIG_SYS_GPIO_LED_GREEN, 0);
-       udelay(10000);
-       /* and on again */
-       gpio_write_bit(CONFIG_SYS_GPIO_LED_RED, 1);
-       gpio_write_bit(CONFIG_SYS_GPIO_LED_GREEN, 1);
-
-       return (0);
-}
-
-static int default_env_var(char *buf, char *var)
-{
-       char *ptr;
-       char *val;
-
-       /*
-        * Find env variable
-        */
-       ptr = strstr(buf + 4, var);
-       if (ptr == NULL) {
-               printf("ERROR: %s not found!\n", var);
-               return -1;
-       }
-       ptr += strlen(var) + 1;
-
-       /*
-        * Now the ethaddr needs to be updated in the "normal"
-        * environment storage -> redundant flash.
-        */
-       val = ptr;
-       setenv(var, val);
-       printf("Updated %s from eeprom to %s!\n", var, val);
-
-       return 0;
-}
-
-static int restore_default(void)
-{
-       char *buf;
-       char *buf_save;
-       u32 crc;
-
-       set_default_env("");
-
-       gd->env_valid = 1;
-
-       /*
-        * Read board specific values from I2C EEPROM
-        * and set env variables accordingly
-        * -> ethaddr, eth1addr, serial#
-        */
-       buf = buf_save = malloc(FACTORY_RESET_ENV_SIZE);
-       if (buf == NULL) {
-               printf("ERROR: malloc() failed\n");
-               return -1;
-       }
-       if (eeprom_read(FACTORY_RESET_I2C_EEPROM, FACTORY_RESET_ENV_OFFS,
-                       (u8 *)buf, FACTORY_RESET_ENV_SIZE)) {
-               puts("\nError reading EEPROM!\n");
-       } else {
-               crc = crc32(0, (u8 *)(buf + 4), FACTORY_RESET_ENV_SIZE - 4);
-               if (crc != *(u32 *)buf) {
-                       printf("ERROR: crc mismatch %08x %08x\n", crc, *(u32 *)buf);
-                       return -1;
-               }
-
-               default_env_var(buf, "ethaddr");
-               buf += 8 + 18;
-               default_env_var(buf, "eth1addr");
-               buf += 9 + 18;
-               default_env_var(buf, "serial#");
-       }
-
-       /*
-        * Finally save updated env variables back to flash
-        */
-       saveenv();
-
-       free(buf_save);
-
-       return 0;
-}
-
-int do_set_default(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       char *buf;
-       char *buf_save;
-       char str[32];
-       u32 crc;
-       char var[32];
-
-       if (argc < 4) {
-               puts("ERROR!\n");
-               return -1;
-       }
-
-       buf = buf_save = malloc(FACTORY_RESET_ENV_SIZE);
-       memset(buf, 0, FACTORY_RESET_ENV_SIZE);
-
-       strcpy(var, "ethaddr");
-       printf("Setting %s to %s\n", var, argv[1]);
-       sprintf(str, "%s=%s", var, argv[1]);
-       strcpy(buf + 4, str);
-       buf += strlen(str) + 1;
-
-       strcpy(var, "eth1addr");
-       printf("Setting %s to %s\n", var, argv[2]);
-       sprintf(str, "%s=%s", var, argv[2]);
-       strcpy(buf + 4, str);
-       buf += strlen(str) + 1;
-
-       strcpy(var, "serial#");
-       printf("Setting %s to %s\n", var, argv[3]);
-       sprintf(str, "%s=%s", var, argv[3]);
-       strcpy(buf + 4, str);
-
-       crc = crc32(0, (u8 *)(buf_save + 4), FACTORY_RESET_ENV_SIZE - 4);
-       *(u32 *)buf_save = crc;
-
-       if (eeprom_write(FACTORY_RESET_I2C_EEPROM, FACTORY_RESET_ENV_OFFS,
-                        (u8 *)buf_save, FACTORY_RESET_ENV_SIZE)) {
-               puts("\nError writing EEPROM!\n");
-               return -1;
-       }
-
-       free(buf_save);
-
-       return 0;
-}
-
-U_BOOT_CMD(
-       setdef, 4,      1,      do_set_default,
-       "write board-specific values to EEPROM (ethaddr...)",
-       "ethaddr eth1addr serial#\n    - write board-specific values to EEPROM"
-       );
-
-static inline int sw_reset_pressed(void)
-{
-       return !(in_be32((void *)GPIO0_IR) & GPIO_VAL(CONFIG_SYS_GPIO_SW_RESET));
-}
-
-int do_chkreset(cmd_tbl_t* cmdtp, int flag, int argc, char * const argv[])
-{
-       int delta;
-       int count = 0;
-       int post = 0;
-       int factory_reset = 0;
-
-       if (!sw_reset_pressed()) {
-               printf("SW-Reset already high (Button released)\n");
-               printf("-> No action taken!\n");
-               return 0;
-       }
-
-       printf("Waiting for SW-Reset button to be released.");
-
-       while (1) {
-               delta = get_timer(start_time);
-               if (!sw_reset_pressed())
-                       break;
-
-               if ((delta > CONFIG_SYS_TIME_POST) && !post) {
-                       printf("\nWhen released now, POST tests will be started.");
-                       gpio_write_bit(CONFIG_SYS_GPIO_LED_GREEN, 0);
-                       post = 1;
-               }
-
-               if ((delta > CONFIG_SYS_TIME_FACTORY_RESET) && !factory_reset) {
-                       printf("\nWhen released now, factory default values"
-                              " will be restored.");
-                       gpio_write_bit(CONFIG_SYS_GPIO_LED_RED, 0);
-                       factory_reset = 1;
-               }
-
-               udelay(1000);
-               if (!(count++ % 1000))
-                       printf(".");
-       }
-
-
-       printf("\nSW-Reset Button released after %d milli-seconds!\n", delta);
-
-       if (delta > CONFIG_SYS_TIME_FACTORY_RESET) {
-               printf("Starting factory reset value restoration...\n");
-
-               /*
-                * Restore default setting
-                */
-               restore_default();
-
-               /*
-                * Reset the board for default to become valid
-                */
-               do_reset(NULL, 0, 0, NULL);
-
-               return 0;
-       }
-
-       if (delta > CONFIG_SYS_TIME_POST) {
-               printf("Starting POST configuration...\n");
-
-               /*
-                * Enable POST upon next bootup
-                */
-               out_be32((void *)CONFIG_SYS_POST_MAGIC, REBOOT_MAGIC);
-               out_be32((void *)CONFIG_SYS_POST_VAL, REBOOT_DO_POST);
-               post_bootmode_init();
-
-               /*
-                * Reset the logbuffer for a clean start
-                */
-               logbuff_reset();
-
-               do_reset(NULL, 0, 0, NULL);
-
-               return 0;
-       }
-
-       return 0;
-}
-
-U_BOOT_CMD (
-       chkreset, 1, 1, do_chkreset,
-       "Check for status of SW-reset button and act accordingly",
-       ""
-);
-
-#if defined(CONFIG_POST)
-/*
- * Returns 1 if keys pressed to start the power-on long-running tests
- * Called from board_init_f().
- */
-int post_hotkeys_pressed(void)
-{
-       u32 post_magic;
-       u32 post_val;
-
-       post_magic = in_be32((void *)CONFIG_SYS_POST_MAGIC);
-       post_val = in_be32((void *)CONFIG_SYS_POST_VAL);
-
-       if ((post_magic == REBOOT_MAGIC) && (post_val == REBOOT_DO_POST))
-               return 1;
-       else
-               return 0;
-}
-#endif /* CONFIG_POST */
diff --git a/board/zipitz2/Kconfig b/board/zipitz2/Kconfig
deleted file mode 100644 (file)
index c663504..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-if TARGET_ZIPITZ2
-
-config SYS_BOARD
-       default "zipitz2"
-
-config SYS_CONFIG_NAME
-       default "zipitz2"
-
-endif
diff --git a/board/zipitz2/MAINTAINERS b/board/zipitz2/MAINTAINERS
deleted file mode 100644 (file)
index 55b0f64..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-ZIPITZ2 BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
-F:     board/zipitz2/
-F:     include/configs/zipitz2.h
-F:     configs/zipitz2_defconfig
diff --git a/board/zipitz2/Makefile b/board/zipitz2/Makefile
deleted file mode 100644 (file)
index 855f6bc..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-#
-# Copyright (C) 2009
-# Marek Vasut <marek.vasut@gmail.com>
-#
-# Heavily based on pxa255_idp platform
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := zipitz2.o
diff --git a/board/zipitz2/zipitz2.c b/board/zipitz2/zipitz2.c
deleted file mode 100644 (file)
index 90bba6a..0000000
+++ /dev/null
@@ -1,202 +0,0 @@
-/*
- * Copyright (C) 2009
- * Marek Vasut <marek.vasut@gmail.com>
- *
- * Heavily based on pxa255_idp platform
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-#include <serial.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/pxa.h>
-#include <asm/arch/regs-mmc.h>
-#include <spi.h>
-#include <asm/io.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_CMD_SPI
-void lcd_start(void);
-#else
-inline void lcd_start(void) {};
-#endif
-
-/*
- * Miscelaneous platform dependent initialisations
- */
-
-int board_init (void)
-{
-       /* We have RAM, disable cache */
-       dcache_disable();
-       icache_disable();
-
-       /* arch number of Z2 */
-       gd->bd->bi_arch_number = MACH_TYPE_ZIPIT2;
-
-       /* adress of boot parameters */
-       gd->bd->bi_boot_params = 0xa0000100;
-
-       /* Enable LCD */
-       lcd_start();
-
-       return 0;
-}
-
-int dram_init(void)
-{
-       pxa2xx_dram_init();
-       gd->ram_size = PHYS_SDRAM_1_SIZE;
-       return 0;
-}
-
-void dram_init_banksize(void)
-{
-       gd->bd->bi_dram[0].start = PHYS_SDRAM_1;
-       gd->bd->bi_dram[0].size = PHYS_SDRAM_1_SIZE;
-}
-
-#ifdef CONFIG_CMD_MMC
-int board_mmc_init(bd_t *bis)
-{
-       pxa_mmc_register(0);
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_CMD_SPI
-
-struct {
-       unsigned char   reg;
-       unsigned short  data;
-       unsigned char   mdelay;
-} lcd_data[] = {
-       { 0x07, 0x0000, 0 },
-       { 0x13, 0x0000, 10 },
-       { 0x11, 0x3004, 0 },
-       { 0x14, 0x200F, 0 },
-       { 0x10, 0x1a20, 0 },
-       { 0x13, 0x0040, 50 },
-       { 0x13, 0x0060, 0 },
-       { 0x13, 0x0070, 200 },
-       { 0x01, 0x0127, 0 },
-       { 0x02, 0x0700, 0 },
-       { 0x03, 0x1030, 0 },
-       { 0x08, 0x0208, 0 },
-       { 0x0B, 0x0620, 0 },
-       { 0x0C, 0x0110, 0 },
-       { 0x30, 0x0120, 0 },
-       { 0x31, 0x0127, 0 },
-       { 0x32, 0x0000, 0 },
-       { 0x33, 0x0503, 0 },
-       { 0x34, 0x0727, 0 },
-       { 0x35, 0x0124, 0 },
-       { 0x36, 0x0706, 0 },
-       { 0x37, 0x0701, 0 },
-       { 0x38, 0x0F00, 0 },
-       { 0x39, 0x0F00, 0 },
-       { 0x40, 0x0000, 0 },
-       { 0x41, 0x0000, 0 },
-       { 0x42, 0x013f, 0 },
-       { 0x43, 0x0000, 0 },
-       { 0x44, 0x013f, 0 },
-       { 0x45, 0x0000, 0 },
-       { 0x46, 0xef00, 0 },
-       { 0x47, 0x013f, 0 },
-       { 0x48, 0x0000, 0 },
-       { 0x07, 0x0015, 30 },
-       { 0x07, 0x0017, 0 },
-       { 0x20, 0x0000, 0 },
-       { 0x21, 0x0000, 0 },
-       { 0x22, 0x0000, 0 },
-};
-
-void zipitz2_spi_sda(int set)
-{
-       /* GPIO 13 */
-       if (set)
-               writel((1 << 13), GPSR0);
-       else
-               writel((1 << 13), GPCR0);
-}
-
-void zipitz2_spi_scl(int set)
-{
-       /* GPIO 22 */
-       if (set)
-               writel((1 << 22), GPCR0);
-       else
-               writel((1 << 22), GPSR0);
-}
-
-unsigned char zipitz2_spi_read(void)
-{
-       /* GPIO 40 */
-       return !!(readl(GPLR1) & (1 << 8));
-}
-
-int spi_cs_is_valid(unsigned int bus, unsigned int cs)
-{
-       /* Always valid */
-       return 1;
-}
-
-void spi_cs_activate(struct spi_slave *slave)
-{
-       /* GPIO 88 low */
-       writel((1 << 24), GPCR2);
-}
-
-void spi_cs_deactivate(struct spi_slave *slave)
-{
-       /* GPIO 88 high */
-       writel((1 << 24), GPSR2);
-
-}
-
-void lcd_start(void)
-{
-       int i;
-       unsigned char reg[3] = { 0x74, 0x00, 0 };
-       unsigned char data[3] = { 0x76, 0, 0 };
-       unsigned char dummy[3] = { 0, 0, 0 };
-
-       /* PWM2 AF */
-       writel(readl(GAFR0_L) | 0x00800000, GAFR0_L);
-       /* Enable clock to all PWM */
-       writel(readl(CKEN) | 0x3, CKEN);
-       /* Configure PWM2 */
-       writel(0x4f, PWM_CTRL2);
-       writel(0x2ff, PWM_PWDUTY2);
-       writel(792, PWM_PERVAL2);
-
-       /* Toggle the reset pin to reset the LCD */
-       writel((1 << 19), GPSR0);
-       udelay(100000);
-       writel((1 << 19), GPCR0);
-       udelay(20000);
-       writel((1 << 19), GPSR0);
-       udelay(20000);
-
-       /* Program the LCD init sequence */
-       for (i = 0; i < sizeof(lcd_data) / sizeof(lcd_data[0]); i++) {
-               reg[0] = 0x74;
-               reg[1] = 0x0;
-               reg[2] = lcd_data[i].reg;
-               spi_xfer(NULL, 24, reg, dummy, SPI_XFER_BEGIN | SPI_XFER_END);
-
-               data[0] = 0x76;
-               data[1] = lcd_data[i].data >> 8;
-               data[2] = lcd_data[i].data & 0xff;
-               spi_xfer(NULL, 24, data, dummy, SPI_XFER_BEGIN | SPI_XFER_END);
-
-               if (lcd_data[i].mdelay)
-                       udelay(lcd_data[i].mdelay * 1000);
-       }
-
-       writel((1 << 11), GPSR0);
-}
-#endif
index 88dc0160796e745a8ec7f683591e75f45fa0c758..2c42b8e4d0346e339543e908f8d76636f39b7332 100644 (file)
@@ -625,4 +625,26 @@ config CMD_REGULATOR
 
 endmenu
 
+menu "Security commands"
+config CMD_TPM
+       bool "Enable the 'tpm' command"
+       depends on TPM
+       help
+         This provides a means to talk to a TPM from the command line. A wide
+         range of commands if provided - see 'tpm help' for details. The
+         command requires a suitable TPM on your board and the correct driver
+         must be enabled.
+
+config CMD_TPM_TEST
+       bool "Enable the 'tpm test' command"
+       depends on CMD_TPM
+       help
+         This provides a a series of tests to confirm that the TPM is working
+         correctly. The tests cover initialisation, non-volatile RAM, extend,
+         global lock and checking that timing is within expectations. The
+         tests pass correctly on Infineon TPMs but may need to be adjusted
+         for other devices.
+
+endmenu
+
 endmenu
index dc82433e90dee24e41423a1e7042313126c24d79..556fb07592927f3bdee71782a10fe3651595e36b 100644 (file)
@@ -169,6 +169,7 @@ obj-$(CONFIG_CMD_TIME) += cmd_time.o
 obj-$(CONFIG_CMD_TRACE) += cmd_trace.o
 obj-$(CONFIG_SYS_HUSH_PARSER) += cmd_test.o
 obj-$(CONFIG_CMD_TPM) += cmd_tpm.o
+obj-$(CONFIG_CMD_TPM_TEST) += cmd_tpm_test.o
 obj-$(CONFIG_CMD_TSI148) += cmd_tsi148.o
 obj-$(CONFIG_CMD_UBI) += cmd_ubi.o
 obj-$(CONFIG_CMD_UBIFS) += cmd_ubifs.o
@@ -209,6 +210,7 @@ obj-$(CONFIG_LYNXKDI) += lynxkdi.o
 obj-$(CONFIG_MENU) += menu.o
 obj-$(CONFIG_MODEM_SUPPORT) += modem.o
 obj-$(CONFIG_UPDATE_TFTP) += update.o
+obj-$(CONFIG_DFU_TFTP) += update.o
 obj-$(CONFIG_USB_KEYBOARD) += usb_kbd.o
 obj-$(CONFIG_CMD_DFU) += cmd_dfu.o
 obj-$(CONFIG_CMD_GPT) += cmd_gpt.o
index 857148f8afef2562098358bc6615506d14716fc3..f060db75c6c8d161e71bd85374f0ac148457f14a 100644 (file)
@@ -1,6 +1,9 @@
 /*
  * cmd_dfu.c -- dfu command
  *
+ * Copyright (C) 2015
+ * Lukasz Majewski <l.majewski@majess.pl>
+ *
  * Copyright (C) 2012 Samsung Electronics
  * authors: Andrzej Pietrasiewicz <andrzej.p@samsung.com>
  *         Lukasz Majewski <l.majewski@samsung.com>
@@ -13,6 +16,7 @@
 #include <dfu.h>
 #include <g_dnl.h>
 #include <usb.h>
+#include <net.h>
 
 static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
@@ -26,6 +30,15 @@ static int do_dfu(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        char *devstring = argv[3];
 
        int ret, i = 0;
+#ifdef CONFIG_DFU_TFTP
+       unsigned long addr = 0;
+       if (!strcmp(argv[1], "tftp")) {
+               if (argc == 5)
+                       addr = simple_strtoul(argv[4], NULL, 0);
+
+               return update_tftp(addr, interface, devstring);
+       }
+#endif
 
        ret = dfu_init_env_entities(interface, devstring);
        if (ret)
@@ -89,4 +102,11 @@ U_BOOT_CMD(dfu, CONFIG_SYS_MAXARGS, 1, do_dfu,
        "    on device <dev>, attached to interface\n"
        "    <interface>\n"
        "    [list] - list available alt settings\n"
+#ifdef CONFIG_DFU_TFTP
+       "dfu tftp <interface> <dev> [<addr>]\n"
+       "  - device firmware upgrade via TFTP\n"
+       "    on device <dev>, attached to interface\n"
+       "    <interface>\n"
+       "    [<addr>] - address where FIT image has been stored\n"
+#endif
 );
index b0459744d98d075f8257e01bc6683edbc5a5988d..78b8747336a871c9131501a8fb9c2ccb2c7a1219 100644 (file)
@@ -23,7 +23,7 @@ static int do_fitupd(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (argc == 2)
                addr = simple_strtoul(argv[1], NULL, 16);
 
-       return update_tftp(addr);
+       return update_tftp(addr, NULL, NULL);
 }
 
 U_BOOT_CMD(fitupd, 2, 0, do_fitupd,
index 1bc0db860c3344dad85466fc52c0c61cddca3998..864b2596cca515d3e442a25a586fb79f56c33081 100644 (file)
@@ -453,6 +453,37 @@ static int do_i2c_flags(cmd_tbl_t *cmdtp, int flag, int argc,
 
        return 0;
 }
+
+static int do_i2c_olen(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+{
+       struct udevice *dev;
+       uint olen;
+       int chip;
+       int ret;
+
+       if (argc < 2)
+               return CMD_RET_USAGE;
+
+       chip = simple_strtoul(argv[1], NULL, 16);
+       ret = i2c_get_cur_bus_chip(chip, &dev);
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_READ);
+
+       if (argc > 2) {
+               olen = simple_strtoul(argv[2], NULL, 16);
+               ret = i2c_set_chip_offset_len(dev, olen);
+       } else  {
+               ret = i2c_get_chip_offset_len(dev);
+               if (ret >= 0) {
+                       printf("%x\n", ret);
+                       ret = 0;
+               }
+       }
+       if (ret)
+               return i2c_report_err(ret, I2C_ERR_READ);
+
+       return 0;
+}
 #endif
 
 /**
@@ -1903,6 +1934,7 @@ static cmd_tbl_t cmd_i2c_sub[] = {
        U_BOOT_CMD_MKENT(write, 6, 0, do_i2c_write, "", ""),
 #ifdef CONFIG_DM_I2C
        U_BOOT_CMD_MKENT(flags, 2, 1, do_i2c_flags, "", ""),
+       U_BOOT_CMD_MKENT(olen, 2, 1, do_i2c_olen, "", ""),
 #endif
        U_BOOT_CMD_MKENT(reset, 0, 1, do_i2c_reset, "", ""),
 #if defined(CONFIG_CMD_SDRAM)
@@ -1971,6 +2003,7 @@ static char i2c_help_text[] =
        "          to I2C; the -s option selects bulk write in a single transaction\n"
 #ifdef CONFIG_DM_I2C
        "i2c flags chip [flags] - set or get chip flags\n"
+       "i2c olen chip [offset_length] - set or get chip offset length\n"
 #endif
        "i2c reset - re-init the I2C Controller\n"
 #if defined(CONFIG_CMD_SDRAM)
index 0294952e69a73849293d43a9974d1d2a1bbdecfc..97501cc3d1896342c4b5da6372bf10c177274e75 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <dm.h>
 #include <malloc.h>
 #include <tpm.h>
 #include <asm/unaligned.h>
@@ -57,6 +58,8 @@ static void *parse_byte_string(char *bytes, uint8_t *data, size_t *count_ptr)
        size_t count, length;
        int i;
 
+       if (!bytes)
+               return NULL;
        length = strlen(bytes);
        count = length / 2;
 
@@ -79,17 +82,19 @@ static void *parse_byte_string(char *bytes, uint8_t *data, size_t *count_ptr)
 }
 
 /**
- * Convert TPM command return code to U-Boot command error codes.
+ * report_return_code() - Report any error and return failure or success
  *
  * @param return_code  TPM command return code
  * @return value of enum command_ret_t
  */
-static int convert_return_code(uint32_t return_code)
+static int report_return_code(int return_code)
 {
-       if (return_code)
+       if (return_code) {
+               printf("Error: %d\n", return_code);
                return CMD_RET_FAILURE;
-       else
+       } else {
                return CMD_RET_SUCCESS;
+       }
 }
 
 /**
@@ -251,7 +256,7 @@ static int do_tpm_startup(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_FAILURE;
        }
 
-       return convert_return_code(tpm_startup(mode));
+       return report_return_code(tpm_startup(mode));
 }
 
 static int do_tpm_nv_define_space(cmd_tbl_t *cmdtp, int flag,
@@ -265,7 +270,7 @@ static int do_tpm_nv_define_space(cmd_tbl_t *cmdtp, int flag,
        perm = simple_strtoul(argv[2], NULL, 0);
        size = simple_strtoul(argv[3], NULL, 0);
 
-       return convert_return_code(tpm_nv_define_space(index, perm, size));
+       return report_return_code(tpm_nv_define_space(index, perm, size));
 }
 
 static int do_tpm_nv_read_value(cmd_tbl_t *cmdtp, int flag,
@@ -286,7 +291,7 @@ static int do_tpm_nv_read_value(cmd_tbl_t *cmdtp, int flag,
                print_byte_string(data, count);
        }
 
-       return convert_return_code(rc);
+       return report_return_code(rc);
 }
 
 static int do_tpm_nv_write_value(cmd_tbl_t *cmdtp, int flag,
@@ -308,7 +313,7 @@ static int do_tpm_nv_write_value(cmd_tbl_t *cmdtp, int flag,
        rc = tpm_nv_write_value(index, data, count);
        free(data);
 
-       return convert_return_code(rc);
+       return report_return_code(rc);
 }
 
 static int do_tpm_extend(cmd_tbl_t *cmdtp, int flag,
@@ -331,7 +336,7 @@ static int do_tpm_extend(cmd_tbl_t *cmdtp, int flag,
                print_byte_string(out_digest, sizeof(out_digest));
        }
 
-       return convert_return_code(rc);
+       return report_return_code(rc);
 }
 
 static int do_tpm_pcr_read(cmd_tbl_t *cmdtp, int flag,
@@ -352,7 +357,7 @@ static int do_tpm_pcr_read(cmd_tbl_t *cmdtp, int flag,
                print_byte_string(data, count);
        }
 
-       return convert_return_code(rc);
+       return report_return_code(rc);
 }
 
 static int do_tpm_tsc_physical_presence(cmd_tbl_t *cmdtp, int flag,
@@ -364,7 +369,7 @@ static int do_tpm_tsc_physical_presence(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_USAGE;
        presence = (uint16_t)simple_strtoul(argv[1], NULL, 0);
 
-       return convert_return_code(tpm_tsc_physical_presence(presence));
+       return report_return_code(tpm_tsc_physical_presence(presence));
 }
 
 static int do_tpm_read_pubek(cmd_tbl_t *cmdtp, int flag,
@@ -384,7 +389,7 @@ static int do_tpm_read_pubek(cmd_tbl_t *cmdtp, int flag,
                print_byte_string(data, count);
        }
 
-       return convert_return_code(rc);
+       return report_return_code(rc);
 }
 
 static int do_tpm_physical_set_deactivated(cmd_tbl_t *cmdtp, int flag,
@@ -396,7 +401,7 @@ static int do_tpm_physical_set_deactivated(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_USAGE;
        state = (uint8_t)simple_strtoul(argv[1], NULL, 0);
 
-       return convert_return_code(tpm_physical_set_deactivated(state));
+       return report_return_code(tpm_physical_set_deactivated(state));
 }
 
 static int do_tpm_get_capability(cmd_tbl_t *cmdtp, int flag,
@@ -419,7 +424,7 @@ static int do_tpm_get_capability(cmd_tbl_t *cmdtp, int flag,
                print_byte_string(cap, count);
        }
 
-       return convert_return_code(rc);
+       return report_return_code(rc);
 }
 
 #define TPM_COMMAND_NO_ARG(cmd)                                \
@@ -428,7 +433,7 @@ static int do_##cmd(cmd_tbl_t *cmdtp, int flag,             \
 {                                                      \
        if (argc != 1)                                  \
                return CMD_RET_USAGE;                   \
-       return convert_return_code(cmd());              \
+       return report_return_code(cmd());               \
 }
 
 TPM_COMMAND_NO_ARG(tpm_init)
@@ -438,6 +443,41 @@ TPM_COMMAND_NO_ARG(tpm_force_clear)
 TPM_COMMAND_NO_ARG(tpm_physical_enable)
 TPM_COMMAND_NO_ARG(tpm_physical_disable)
 
+#ifdef CONFIG_DM_TPM
+static int get_tpm(struct udevice **devp)
+{
+       int rc;
+
+       rc = uclass_first_device(UCLASS_TPM, devp);
+       if (rc) {
+               printf("Could not find TPM (ret=%d)\n", rc);
+               return CMD_RET_FAILURE;
+       }
+
+       return 0;
+}
+
+static int do_tpm_info(cmd_tbl_t *cmdtp, int flag, int argc,
+                      char *const argv[])
+{
+       struct udevice *dev;
+       char buf[80];
+       int rc;
+
+       rc = get_tpm(&dev);
+       if (rc)
+               return rc;
+       rc = tpm_get_desc(dev, buf, sizeof(buf));
+       if (rc < 0) {
+               printf("Couldn't get TPM info (%d)\n", rc);
+               return CMD_RET_FAILURE;
+       }
+       printf("%s\n", buf);
+
+       return 0;
+}
+#endif
+
 static int do_tpm_raw_transfer(cmd_tbl_t *cmdtp, int flag,
                int argc, char * const argv[])
 {
@@ -452,14 +492,24 @@ static int do_tpm_raw_transfer(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_FAILURE;
        }
 
+#ifdef CONFIG_DM_TPM
+       struct udevice *dev;
+
+       rc = get_tpm(&dev);
+       if (rc)
+               return rc;
+
+       rc = tpm_xfer(dev, command, count, response, &response_length);
+#else
        rc = tis_sendrecv(command, count, response, &response_length);
+#endif
        free(command);
        if (!rc) {
                puts("tpm response:\n");
                print_byte_string(response, response_length);
        }
 
-       return convert_return_code(rc);
+       return report_return_code(rc);
 }
 
 static int do_tpm_nv_define(cmd_tbl_t *cmdtp, int flag,
@@ -477,7 +527,7 @@ static int do_tpm_nv_define(cmd_tbl_t *cmdtp, int flag,
        index = simple_strtoul(argv[2], NULL, 0);
        perm = simple_strtoul(argv[3], NULL, 0);
 
-       return convert_return_code(tpm_nv_define_space(index, perm, size));
+       return report_return_code(tpm_nv_define_space(index, perm, size));
 }
 
 static int do_tpm_nv_read(cmd_tbl_t *cmdtp, int flag,
@@ -506,7 +556,7 @@ static int do_tpm_nv_read(cmd_tbl_t *cmdtp, int flag,
        }
        free(data);
 
-       return convert_return_code(err);
+       return report_return_code(err);
 }
 
 static int do_tpm_nv_write(cmd_tbl_t *cmdtp, int flag,
@@ -534,7 +584,7 @@ static int do_tpm_nv_write(cmd_tbl_t *cmdtp, int flag,
        err = tpm_nv_write_value(index, data, count);
        free(data);
 
-       return convert_return_code(err);
+       return report_return_code(err);
 }
 
 #ifdef CONFIG_TPM_AUTH_SESSIONS
@@ -546,7 +596,7 @@ static int do_tpm_oiap(cmd_tbl_t *cmdtp, int flag,
 
        err = tpm_oiap(&auth_handle);
 
-       return convert_return_code(err);
+       return report_return_code(err);
 }
 
 static int do_tpm_load_key2_oiap(cmd_tbl_t *cmdtp, int flag,
@@ -571,7 +621,7 @@ static int do_tpm_load_key2_oiap(cmd_tbl_t *cmdtp, int flag,
        if (!err)
                printf("Key handle is 0x%x\n", key_handle);
 
-       return convert_return_code(err);
+       return report_return_code(err);
 }
 
 static int do_tpm_get_pub_key_oiap(cmd_tbl_t *cmdtp, int flag,
@@ -596,7 +646,7 @@ static int do_tpm_get_pub_key_oiap(cmd_tbl_t *cmdtp, int flag,
                printf("dump of received pub key structure:\n");
                print_byte_string(pub_key_buffer, pub_key_len);
        }
-       return convert_return_code(err);
+       return report_return_code(err);
 }
 
 TPM_COMMAND_NO_ARG(tpm_end_oiap)
@@ -607,6 +657,9 @@ TPM_COMMAND_NO_ARG(tpm_end_oiap)
        U_BOOT_CMD_MKENT(cmd, 0, 1, do_tpm_ ## cmd, "", "")
 
 static cmd_tbl_t tpm_commands[] = {
+#ifdef CONFIG_DM_TPM
+       U_BOOT_CMD_MKENT(info, 0, 1, do_tpm_info, "", ""),
+#endif
        U_BOOT_CMD_MKENT(init, 0, 1,
                        do_tpm_init, "", ""),
        U_BOOT_CMD_MKENT(startup, 0, 1,
@@ -677,6 +730,9 @@ U_BOOT_CMD(tpm, CONFIG_SYS_MAXARGS, 1, do_tpm,
 "cmd args...\n"
 "    - Issue TPM command <cmd> with arguments <args...>.\n"
 "Admin Startup and State Commands:\n"
+#ifdef CONFIG_DM_TPM
+"  info - Show information about the TPM\n"
+#endif
 "  init\n"
 "    - Put TPM into a state where it waits for 'startup' command.\n"
 "  startup mode\n"
diff --git a/common/cmd_tpm_test.c b/common/cmd_tpm_test.c
new file mode 100644 (file)
index 0000000..65332d1
--- /dev/null
@@ -0,0 +1,564 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+#include <environment.h>
+#include <tpm.h>
+
+/* Prints error and returns on failure */
+#define TPM_CHECK(tpm_command) do { \
+       uint32_t result; \
+       \
+       result = (tpm_command); \
+       if (result != TPM_SUCCESS) { \
+               printf("TEST FAILED: line %d: " #tpm_command ": 0x%x\n", \
+                       __LINE__, result); \
+               return result; \
+       } \
+} while (0)
+
+#define INDEX0                 0xda70
+#define INDEX1                 0xda71
+#define INDEX2                 0xda72
+#define INDEX3                 0xda73
+#define INDEX_INITIALISED      0xda80
+#define PHYS_PRESENCE          4
+#define PRESENCE               8
+
+static uint32_t TlclStartupIfNeeded(void)
+{
+       uint32_t result = tpm_startup(TPM_ST_CLEAR);
+
+       return result == TPM_INVALID_POSTINIT ? TPM_SUCCESS : result;
+}
+
+static int test_timer(void)
+{
+       printf("get_timer(0) = %lu\n", get_timer(0));
+       return 0;
+}
+
+static uint32_t tpm_get_flags(uint8_t *disable, uint8_t *deactivated,
+                             uint8_t *nvlocked)
+{
+       struct tpm_permanent_flags pflags;
+       uint32_t result;
+
+       result = tpm_get_permanent_flags(&pflags);
+       if (result)
+               return result;
+       if (disable)
+               *disable = pflags.disable;
+       if (deactivated)
+               *deactivated = pflags.deactivated;
+       if (nvlocked)
+               *nvlocked = pflags.nv_locked;
+       debug("TPM: Got flags disable=%d, deactivated=%d, nvlocked=%d\n",
+             pflags.disable, pflags.deactivated, pflags.nv_locked);
+
+       return 0;
+}
+
+static uint32_t tpm_set_global_lock(void)
+{
+       uint32_t x;
+
+       debug("TPM: Set global lock\n");
+       return tpm_nv_write_value(INDEX0, (uint8_t *)&x, 0);
+}
+
+static uint32_t tpm_nv_write_value_lock(uint32_t index)
+{
+       debug("TPM: Write lock 0x%x\n", index);
+
+       return tpm_nv_write_value(index, NULL, 0);
+}
+
+static uint32_t tpm_nv_set_locked(void)
+{
+       debug("TPM: Set NV locked\n");
+
+       return tpm_nv_define_space(TPM_NV_INDEX_LOCK, 0, 0);
+}
+
+static int tpm_is_owned(void)
+{
+       uint8_t response[TPM_PUBEK_SIZE];
+       uint32_t result;
+
+       result = tpm_read_pubek(response, sizeof(response));
+
+       return result != TPM_SUCCESS;
+}
+
+static int test_early_extend(void)
+{
+       uint8_t value_in[20];
+       uint8_t value_out[20];
+
+       printf("Testing earlyextend ...");
+       tpm_init();
+       TPM_CHECK(tpm_startup(TPM_ST_CLEAR));
+       TPM_CHECK(tpm_continue_self_test());
+       TPM_CHECK(tpm_extend(1, value_in, value_out));
+       printf("done\n");
+       return 0;
+}
+
+static int test_early_nvram(void)
+{
+       uint32_t x;
+
+       printf("Testing earlynvram ...");
+       tpm_init();
+       TPM_CHECK(tpm_startup(TPM_ST_CLEAR));
+       TPM_CHECK(tpm_continue_self_test());
+       TPM_CHECK(tpm_tsc_physical_presence(PRESENCE));
+       TPM_CHECK(tpm_nv_read_value(INDEX0, (uint8_t *)&x, sizeof(x)));
+       printf("done\n");
+       return 0;
+}
+
+static int test_early_nvram2(void)
+{
+       uint32_t x;
+
+       printf("Testing earlynvram2 ...");
+       tpm_init();
+       TPM_CHECK(tpm_startup(TPM_ST_CLEAR));
+       TPM_CHECK(tpm_continue_self_test());
+       TPM_CHECK(tpm_tsc_physical_presence(PRESENCE));
+       TPM_CHECK(tpm_nv_write_value(INDEX0, (uint8_t *)&x, sizeof(x)));
+       printf("done\n");
+       return 0;
+}
+
+static int test_enable(void)
+{
+       uint8_t disable = 0, deactivated = 0;
+
+       printf("Testing enable ...\n");
+       tpm_init();
+       TPM_CHECK(TlclStartupIfNeeded());
+       TPM_CHECK(tpm_self_test_full());
+       TPM_CHECK(tpm_tsc_physical_presence(PRESENCE));
+       TPM_CHECK(tpm_get_flags(&disable, &deactivated, NULL));
+       printf("\tdisable is %d, deactivated is %d\n", disable, deactivated);
+       TPM_CHECK(tpm_physical_enable());
+       TPM_CHECK(tpm_physical_set_deactivated(0));
+       TPM_CHECK(tpm_get_flags(&disable, &deactivated, NULL));
+       printf("\tdisable is %d, deactivated is %d\n", disable, deactivated);
+       if (disable == 1 || deactivated == 1)
+               printf("\tfailed to enable or activate\n");
+       printf("\tdone\n");
+       return 0;
+}
+
+#define reboot() do { \
+       printf("\trebooting...\n"); \
+       reset_cpu(0); \
+} while (0)
+
+static int test_fast_enable(void)
+{
+       uint8_t disable = 0, deactivated = 0;
+       int i;
+
+       printf("Testing fastenable ...\n");
+       tpm_init();
+       TPM_CHECK(TlclStartupIfNeeded());
+       TPM_CHECK(tpm_self_test_full());
+       TPM_CHECK(tpm_tsc_physical_presence(PRESENCE));
+       TPM_CHECK(tpm_get_flags(&disable, &deactivated, NULL));
+       printf("\tdisable is %d, deactivated is %d\n", disable, deactivated);
+       for (i = 0; i < 2; i++) {
+               TPM_CHECK(tpm_force_clear());
+               TPM_CHECK(tpm_get_flags(&disable, &deactivated, NULL));
+               printf("\tdisable is %d, deactivated is %d\n", disable,
+                      deactivated);
+               assert(disable == 1 && deactivated == 1);
+               TPM_CHECK(tpm_physical_enable());
+               TPM_CHECK(tpm_physical_set_deactivated(0));
+               TPM_CHECK(tpm_get_flags(&disable, &deactivated, NULL));
+               printf("\tdisable is %d, deactivated is %d\n", disable,
+                      deactivated);
+               assert(disable == 0 && deactivated == 0);
+       }
+       printf("\tdone\n");
+       return 0;
+}
+
+static int test_global_lock(void)
+{
+       uint32_t zero = 0;
+       uint32_t result;
+       uint32_t x;
+
+       printf("Testing globallock ...\n");
+       tpm_init();
+       TPM_CHECK(TlclStartupIfNeeded());
+       TPM_CHECK(tpm_self_test_full());
+       TPM_CHECK(tpm_tsc_physical_presence(PRESENCE));
+       TPM_CHECK(tpm_nv_read_value(INDEX0, (uint8_t *)&x, sizeof(x)));
+       TPM_CHECK(tpm_nv_write_value(INDEX0, (uint8_t *)&zero,
+                                    sizeof(uint32_t)));
+       TPM_CHECK(tpm_nv_read_value(INDEX1, (uint8_t *)&x, sizeof(x)));
+       TPM_CHECK(tpm_nv_write_value(INDEX1, (uint8_t *)&zero,
+                                    sizeof(uint32_t)));
+       TPM_CHECK(tpm_set_global_lock());
+       /* Verifies that write to index0 fails */
+       x = 1;
+       result = tpm_nv_write_value(INDEX0, (uint8_t *)&x, sizeof(x));
+       assert(result == TPM_AREA_LOCKED);
+       TPM_CHECK(tpm_nv_read_value(INDEX0, (uint8_t *)&x, sizeof(x)));
+       assert(x == 0);
+       /* Verifies that write to index1 is still possible */
+       x = 2;
+       TPM_CHECK(tpm_nv_write_value(INDEX1, (uint8_t *)&x, sizeof(x)));
+       TPM_CHECK(tpm_nv_read_value(INDEX1, (uint8_t *)&x, sizeof(x)));
+       assert(x == 2);
+       /* Turns off PP */
+       tpm_tsc_physical_presence(PHYS_PRESENCE);
+       /* Verifies that write to index1 fails */
+       x = 3;
+       result = tpm_nv_write_value(INDEX1, (uint8_t *)&x, sizeof(x));
+       assert(result == TPM_BAD_PRESENCE);
+       TPM_CHECK(tpm_nv_read_value(INDEX1, (uint8_t *)&x, sizeof(x)));
+       assert(x == 2);
+       printf("\tdone\n");
+       return 0;
+}
+
+static int test_lock(void)
+{
+       printf("Testing lock ...\n");
+       tpm_init();
+       tpm_startup(TPM_ST_CLEAR);
+       tpm_self_test_full();
+       tpm_tsc_physical_presence(PRESENCE);
+       tpm_nv_write_value_lock(INDEX0);
+       printf("\tLocked 0x%x\n", INDEX0);
+       printf("\tdone\n");
+       return 0;
+}
+
+static void initialise_spaces(void)
+{
+       uint32_t zero = 0;
+       uint32_t perm = TPM_NV_PER_WRITE_STCLEAR | TPM_NV_PER_PPWRITE;
+
+       printf("\tInitialising spaces\n");
+       tpm_nv_set_locked();  /* useful only the first time */
+       tpm_nv_define_space(INDEX0, perm, 4);
+       tpm_nv_write_value(INDEX0, (uint8_t *)&zero, 4);
+       tpm_nv_define_space(INDEX1, perm, 4);
+       tpm_nv_write_value(INDEX1, (uint8_t *)&zero, 4);
+       tpm_nv_define_space(INDEX2, perm, 4);
+       tpm_nv_write_value(INDEX2, (uint8_t *)&zero, 4);
+       tpm_nv_define_space(INDEX3, perm, 4);
+       tpm_nv_write_value(INDEX3, (uint8_t *)&zero, 4);
+       perm = TPM_NV_PER_READ_STCLEAR | TPM_NV_PER_WRITE_STCLEAR |
+               TPM_NV_PER_PPWRITE;
+       tpm_nv_define_space(INDEX_INITIALISED, perm, 1);
+}
+
+static int test_readonly(void)
+{
+       uint8_t c;
+       uint32_t index_0, index_1, index_2, index_3;
+       int read0, read1, read2, read3;
+
+       printf("Testing readonly ...\n");
+       tpm_init();
+       tpm_startup(TPM_ST_CLEAR);
+       tpm_self_test_full();
+       tpm_tsc_physical_presence(PRESENCE);
+       /*
+        * Checks if initialisation has completed by trying to read-lock a
+        * space that's created at the end of initialisation
+        */
+       if (tpm_nv_read_value(INDEX_INITIALISED, &c, 0) == TPM_BADINDEX) {
+               /* The initialisation did not complete */
+               initialise_spaces();
+       }
+
+       /* Checks if spaces are OK or messed up */
+       read0 = tpm_nv_read_value(INDEX0, (uint8_t *)&index_0, sizeof(index_0));
+       read1 = tpm_nv_read_value(INDEX1, (uint8_t *)&index_1, sizeof(index_1));
+       read2 = tpm_nv_read_value(INDEX2, (uint8_t *)&index_2, sizeof(index_2));
+       read3 = tpm_nv_read_value(INDEX3, (uint8_t *)&index_3, sizeof(index_3));
+       if (read0 || read1 || read2 || read3) {
+               printf("Invalid contents\n");
+               return 0;
+       }
+
+       /*
+        * Writes space, and locks it.  Then attempts to write again.
+        * I really wish I could use the imperative.
+        */
+       index_0 += 1;
+       if (tpm_nv_write_value(INDEX0, (uint8_t *)&index_0, sizeof(index_0) !=
+               TPM_SUCCESS)) {
+               error("\tcould not write index 0\n");
+       }
+       tpm_nv_write_value_lock(INDEX0);
+       if (tpm_nv_write_value(INDEX0, (uint8_t *)&index_0, sizeof(index_0)) ==
+                       TPM_SUCCESS)
+               error("\tindex 0 is not locked\n");
+
+       printf("\tdone\n");
+       return 0;
+}
+
+static int test_redefine_unowned(void)
+{
+       uint32_t perm;
+       uint32_t result;
+       uint32_t x;
+
+       printf("Testing redefine_unowned ...");
+       tpm_init();
+       TPM_CHECK(TlclStartupIfNeeded());
+       TPM_CHECK(tpm_self_test_full());
+       TPM_CHECK(tpm_tsc_physical_presence(PRESENCE));
+       assert(!tpm_is_owned());
+
+       /* Ensures spaces exist. */
+       TPM_CHECK(tpm_nv_read_value(INDEX0, (uint8_t *)&x, sizeof(x)));
+       TPM_CHECK(tpm_nv_read_value(INDEX1, (uint8_t *)&x, sizeof(x)));
+
+       /* Redefines spaces a couple of times. */
+       perm = TPM_NV_PER_PPWRITE | TPM_NV_PER_GLOBALLOCK;
+       TPM_CHECK(tpm_nv_define_space(INDEX0, perm, 2 * sizeof(uint32_t)));
+       TPM_CHECK(tpm_nv_define_space(INDEX0, perm, sizeof(uint32_t)));
+       perm = TPM_NV_PER_PPWRITE;
+       TPM_CHECK(tpm_nv_define_space(INDEX1, perm, 2 * sizeof(uint32_t)));
+       TPM_CHECK(tpm_nv_define_space(INDEX1, perm, sizeof(uint32_t)));
+
+       /* Sets the global lock */
+       tpm_set_global_lock();
+
+       /* Verifies that index0 cannot be redefined */
+       result = tpm_nv_define_space(INDEX0, perm, sizeof(uint32_t));
+       assert(result == TPM_AREA_LOCKED);
+
+       /* Checks that index1 can */
+       TPM_CHECK(tpm_nv_define_space(INDEX1, perm, 2 * sizeof(uint32_t)));
+       TPM_CHECK(tpm_nv_define_space(INDEX1, perm, sizeof(uint32_t)));
+
+       /* Turns off PP */
+       tpm_tsc_physical_presence(PHYS_PRESENCE);
+
+       /* Verifies that neither index0 nor index1 can be redefined */
+       result = tpm_nv_define_space(INDEX0, perm, sizeof(uint32_t));
+       assert(result == TPM_BAD_PRESENCE);
+       result = tpm_nv_define_space(INDEX1, perm, sizeof(uint32_t));
+       assert(result == TPM_BAD_PRESENCE);
+
+       printf("done\n");
+       return 0;
+}
+
+#define PERMPPGL (TPM_NV_PER_PPWRITE | TPM_NV_PER_GLOBALLOCK)
+#define PERMPP TPM_NV_PER_PPWRITE
+
+static int test_space_perm(void)
+{
+       uint32_t perm;
+
+       printf("Testing spaceperm ...");
+       tpm_init();
+       TPM_CHECK(TlclStartupIfNeeded());
+       TPM_CHECK(tpm_continue_self_test());
+       TPM_CHECK(tpm_tsc_physical_presence(PRESENCE));
+       TPM_CHECK(tpm_get_permissions(INDEX0, &perm));
+       assert((perm & PERMPPGL) == PERMPPGL);
+       TPM_CHECK(tpm_get_permissions(INDEX1, &perm));
+       assert((perm & PERMPP) == PERMPP);
+       printf("done\n");
+       return 0;
+}
+
+static int test_startup(void)
+{
+       uint32_t result;
+       printf("Testing startup ...\n");
+
+       tpm_init();
+       result = tpm_startup(TPM_ST_CLEAR);
+       if (result != 0 && result != TPM_INVALID_POSTINIT)
+               printf("\ttpm startup failed with 0x%x\n", result);
+       result = tpm_get_flags(NULL, NULL, NULL);
+       if (result != 0)
+               printf("\ttpm getflags failed with 0x%x\n", result);
+       printf("\texecuting SelfTestFull\n");
+       tpm_self_test_full();
+       result = tpm_get_flags(NULL, NULL, NULL);
+       if (result != 0)
+               printf("\ttpm getflags failed with 0x%x\n", result);
+       printf("\tdone\n");
+       return 0;
+}
+
+/*
+ * Runs [op] and ensures it returns success and doesn't run longer than
+ * [time_limit] in milliseconds.
+ */
+#define TTPM_CHECK(op, time_limit) do { \
+       ulong start, time; \
+       uint32_t __result; \
+       \
+       start = get_timer(0); \
+       __result = op; \
+       if (__result != TPM_SUCCESS) { \
+               printf("\t" #op ": error 0x%x\n", __result); \
+               return -1; \
+       } \
+       time = get_timer(start); \
+       printf("\t" #op ": %lu ms\n", time); \
+       if (time > (ulong)time_limit) { \
+               printf("\t" #op " exceeded " #time_limit " ms\n"); \
+       } \
+} while (0)
+
+
+static int test_timing(void)
+{
+       uint32_t x;
+       uint8_t in[20], out[20];
+
+       printf("Testing timing ...");
+       tpm_init();
+       TTPM_CHECK(TlclStartupIfNeeded(), 50);
+       TTPM_CHECK(tpm_continue_self_test(), 100);
+       TTPM_CHECK(tpm_self_test_full(), 1000);
+       TTPM_CHECK(tpm_tsc_physical_presence(PRESENCE), 100);
+       TTPM_CHECK(tpm_nv_write_value(INDEX0, (uint8_t *)&x, sizeof(x)), 100);
+       TTPM_CHECK(tpm_nv_read_value(INDEX0, (uint8_t *)&x, sizeof(x)), 100);
+       TTPM_CHECK(tpm_extend(0, in, out), 200);
+       TTPM_CHECK(tpm_set_global_lock(), 50);
+       TTPM_CHECK(tpm_tsc_physical_presence(PHYS_PRESENCE), 100);
+       printf("done\n");
+       return 0;
+}
+
+#define TPM_MAX_NV_WRITES_NOOWNER 64
+
+static int test_write_limit(void)
+{
+       printf("Testing writelimit ...\n");
+       int i;
+       uint32_t result;
+
+       tpm_init();
+       TPM_CHECK(TlclStartupIfNeeded());
+       TPM_CHECK(tpm_self_test_full());
+       TPM_CHECK(tpm_tsc_physical_presence(PRESENCE));
+       TPM_CHECK(tpm_force_clear());
+       TPM_CHECK(tpm_physical_enable());
+       TPM_CHECK(tpm_physical_set_deactivated(0));
+
+       for (i = 0; i < TPM_MAX_NV_WRITES_NOOWNER + 2; i++) {
+               printf("\twriting %d\n", i);
+               result = tpm_nv_write_value(INDEX0, (uint8_t *)&i, sizeof(i));
+               switch (result) {
+               case TPM_SUCCESS:
+                       break;
+               case TPM_MAXNVWRITES:
+                       assert(i >= TPM_MAX_NV_WRITES_NOOWNER);
+               default:
+                       error("\tunexpected error code %d (0x%x)\n",
+                             result, result);
+               }
+       }
+
+       /* Reset write count */
+       TPM_CHECK(tpm_force_clear());
+       TPM_CHECK(tpm_physical_enable());
+       TPM_CHECK(tpm_physical_set_deactivated(0));
+
+       /* Try writing again. */
+       TPM_CHECK(tpm_nv_write_value(INDEX0, (uint8_t *)&i, sizeof(i)));
+       printf("\tdone\n");
+       return 0;
+}
+
+#define VOIDTEST(XFUNC) \
+       int do_test_##XFUNC(cmd_tbl_t *cmd_tbl, int flag, int argc, \
+       char * const argv[]) \
+       { \
+               return test_##XFUNC(); \
+       }
+
+#define VOIDENT(XNAME) \
+       U_BOOT_CMD_MKENT(XNAME, 0, 1, do_test_##XNAME, "", ""),
+
+VOIDTEST(early_extend)
+VOIDTEST(early_nvram)
+VOIDTEST(early_nvram2)
+VOIDTEST(enable)
+VOIDTEST(fast_enable)
+VOIDTEST(global_lock)
+VOIDTEST(lock)
+VOIDTEST(readonly)
+VOIDTEST(redefine_unowned)
+VOIDTEST(space_perm)
+VOIDTEST(startup)
+VOIDTEST(timing)
+VOIDTEST(write_limit)
+VOIDTEST(timer)
+
+static cmd_tbl_t cmd_cros_tpm_sub[] = {
+       VOIDENT(early_extend)
+       VOIDENT(early_nvram)
+       VOIDENT(early_nvram2)
+       VOIDENT(enable)
+       VOIDENT(fast_enable)
+       VOIDENT(global_lock)
+       VOIDENT(lock)
+       VOIDENT(readonly)
+       VOIDENT(redefine_unowned)
+       VOIDENT(space_perm)
+       VOIDENT(startup)
+       VOIDENT(timing)
+       VOIDENT(write_limit)
+       VOIDENT(timer)
+};
+
+static int do_tpmtest(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       cmd_tbl_t *c;
+
+       printf("argc = %d, argv = ", argc);
+       do {
+               int i = 0;
+
+               for (i = 0; i < argc; i++)
+                       printf(" %s", argv[i]);
+                       printf("\n------\n");
+               } while (0);
+       argc--;
+       argv++;
+       c = find_cmd_tbl(argv[0], cmd_cros_tpm_sub,
+                        ARRAY_SIZE(cmd_cros_tpm_sub));
+       return c ? c->cmd(cmdtp, flag, argc, argv) : cmd_usage(cmdtp);
+}
+
+U_BOOT_CMD(tpmtest, 2, 1, do_tpmtest, "TPM tests",
+       "\n\tearly_extend\n"
+       "\tearly_nvram\n"
+       "\tearly_nvram2\n"
+       "\tenable\n"
+       "\tfast_enable\n"
+       "\tglobal_lock\n"
+       "\tlock\n"
+       "\treadonly\n"
+       "\tredefine_unowned\n"
+       "\tspace_perm\n"
+       "\tstartup\n"
+       "\ttiming\n"
+       "\twrite_limit\n");
index 10eea655701e793fd6641f2e22972b78c1651f76..0460b4cc56f352581b91c951725d99adb1597c9d 100644 (file)
@@ -14,7 +14,7 @@
 #include <common.h>
 #include <command.h>
 #include <exports.h>
-
+#include <memalign.h>
 #include <nand.h>
 #include <onenand_uboot.h>
 #include <linux/mtd/mtd.h>
index 6874af7547148276f8b9564aa1e4b4e01ba8c7e1..6bdbbc5c05286e765abd1a901ef675499926d4ca 100644 (file)
@@ -14,6 +14,7 @@
 #include <common.h>
 #include <command.h>
 #include <dm.h>
+#include <memalign.h>
 #include <asm/byteorder.h>
 #include <asm/unaligned.h>
 #include <part.h>
index e4c848935ad19d7cac64d07102e7ebe39841b58b..d79d864a0c1216ee0e66a216b94d80a59e62de28 100644 (file)
@@ -13,6 +13,7 @@
 #include <environment.h>
 #include <linux/stddef.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <search.h>
 #include <errno.h>
 #include <fat.h>
index 51e7707cb0f7b0bcc7ca9f377e4f42ca97255a9e..96398224cc849577a4150edf281337070e06d94b 100644 (file)
@@ -12,6 +12,7 @@
 #include <environment.h>
 #include <linux/stddef.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <mmc.h>
 #include <search.h>
 #include <errno.h>
index 92e0e053dfe6b57abe49156bc246e780089a4af0..b32eeac9d7673c0137c3554dfd378f9ed2449bf4 100644 (file)
@@ -19,6 +19,7 @@
 #include <environment.h>
 #include <linux/stddef.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <nand.h>
 #include <search.h>
 #include <errno.h>
index 77bbfa6ef43caf051ba5166dd8045944e6e7a821..e0dc5af8513e60d680080593a2a2fa91797964f0 100644 (file)
@@ -11,6 +11,7 @@
 #include <environment.h>
 #include <errno.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <search.h>
 #include <ubi_uboot.h>
 #undef crc32
index 678588d2e330f3b151a89e1cdb0cb338fffe4c20..1325e07953e72d7fab6841aec74cf96c937a87de 100644 (file)
@@ -155,6 +155,9 @@ static const table_entry_t uimage_type[] = {
        {       IH_TYPE_ATMELIMAGE, "atmelimage", "ATMEL ROM-Boot Image",},
        {       IH_TYPE_X86_SETUP,  "x86_setup",  "x86 setup.bin",    },
        {       IH_TYPE_LPC32XXIMAGE, "lpc32xximage",  "LPC32XX Boot Image", },
+       {       IH_TYPE_RKIMAGE,    "rkimage",    "Rockchip Boot Image" },
+       {       IH_TYPE_RKSD,       "rksd",       "Rockchip SD Boot Image" },
+       {       IH_TYPE_RKSPI,      "rkspi",      "Rockchip SPI Boot Image" },
        {       -1,                 "",           "",                   },
 };
 
index 8db2adde016f9396b5a7794a2de1453de711c057..2ba00f6d34c040d81c192636ba8df26a4b5a30d8 100644 (file)
@@ -16,11 +16,14 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static int lcd_dt_simplefb_configure_node(void *blob, int off)
 {
-#if LCD_BPP == LCD_COLOR16
        int vl_col = lcd_get_pixel_width();
        int vl_row = lcd_get_pixel_height();
+#if LCD_BPP == LCD_COLOR16
        return fdt_setup_simplefb_node(blob, off, gd->fb_base, vl_col, vl_row,
                                       vl_col * 2, "r5g6b5");
+#elif LCD_BPP == LCD_COLOR32
+       return fdt_setup_simplefb_node(blob, off, gd->fb_base, vl_col, vl_row,
+                                      vl_col * 4, "a8r8g8b8");
 #else
        return -1;
 #endif
index 2979fbed630ca22d7ae9a208c18a06ab1a3e21f0..ead0cd17aa8e37e3889ef5da184415a3332e9476 100644 (file)
@@ -75,7 +75,7 @@ void main_loop(void)
        run_preboot_environment_command();
 
 #if defined(CONFIG_UPDATE_TFTP)
-       update_tftp(0UL);
+       update_tftp(0UL, NULL, NULL);
 #endif /* CONFIG_UPDATE_TFTP */
 
        s = bootdelay_process();
index 1c6aa186d0d091af65d5148aba6c0b68eabcb1b0..1da80b70f2db6d1f01b5dca3141240a01ef1d169 100644 (file)
@@ -13,8 +13,8 @@
 #error "CONFIG_FIT and CONFIG_OF_LIBFDT are required for auto-update feature"
 #endif
 
-#if defined(CONFIG_SYS_NO_FLASH)
-#error "CONFIG_SYS_NO_FLASH defined, but FLASH is required for auto-update feature"
+#if defined(CONFIG_UPDATE_TFTP) && defined(CONFIG_SYS_NO_FLASH)
+#error "CONFIG_UPDATE_TFTP and CONFIG_SYS_NO_FLASH needed for legacy behaviour"
 #endif
 
 #include <command.h>
@@ -22,6 +22,8 @@
 #include <net.h>
 #include <net/tftp.h>
 #include <malloc.h>
+#include <dfu.h>
+#include <errno.h>
 
 /* env variable holding the location of the update file */
 #define UPDATE_FILE_ENV                "updatefile"
 
 extern ulong tftp_timeout_ms;
 extern int tftp_timeout_count_max;
-extern flash_info_t flash_info[];
 extern ulong load_addr;
-
+#ifndef CONFIG_SYS_NO_FLASH
+extern flash_info_t flash_info[];
 static uchar *saved_prot_info;
-
+#endif
 static int update_load(char *filename, ulong msec_max, int cnt_max, ulong addr)
 {
        int size, rv;
@@ -94,6 +96,7 @@ static int update_load(char *filename, ulong msec_max, int cnt_max, ulong addr)
        return rv;
 }
 
+#ifndef CONFIG_SYS_NO_FLASH
 static int update_flash_protect(int prot, ulong addr_first, ulong addr_last)
 {
        uchar *sp_info_ptr;
@@ -165,9 +168,11 @@ static int update_flash_protect(int prot, ulong addr_first, ulong addr_last)
 
        return 0;
 }
+#endif
 
 static int update_flash(ulong addr_source, ulong addr_first, ulong size)
 {
+#ifndef CONFIG_SYS_NO_FLASH
        ulong addr_last = addr_first + size - 1;
 
        /* round last address to the sector boundary */
@@ -203,7 +208,7 @@ static int update_flash(ulong addr_source, ulong addr_first, ulong size)
                printf("Error: could not protect flash sectors\n");
                return 1;
        }
-
+#endif
        return 0;
 }
 
@@ -223,13 +228,24 @@ static int update_fit_getparams(const void *fit, int noffset, ulong *addr,
        return 0;
 }
 
-int update_tftp(ulong addr)
+int update_tftp(ulong addr, char *interface, char *devstring)
 {
-       char *filename, *env_addr;
-       int images_noffset, ndepth, noffset;
+       char *filename, *env_addr, *fit_image_name;
        ulong update_addr, update_fladdr, update_size;
-       void *fit;
+       int images_noffset, ndepth, noffset;
+       bool update_tftp_dfu;
        int ret = 0;
+       void *fit;
+
+       if (interface == NULL && devstring == NULL) {
+               update_tftp_dfu = false;
+       } else if (interface && devstring) {
+               update_tftp_dfu = true;
+       } else {
+               error("Interface: %s and devstring: %s not supported!\n",
+                     interface, devstring);
+               return -EINVAL;
+       }
 
        /* use already present image */
        if (addr)
@@ -278,8 +294,8 @@ got_update_file:
                if (ndepth != 1)
                        goto next_node;
 
-               printf("Processing update '%s' :",
-                       fit_get_name(fit, noffset, NULL));
+               fit_image_name = (char *)fit_get_name(fit, noffset, NULL);
+               printf("Processing update '%s' :", fit_image_name);
 
                if (!fit_image_verify(fit, noffset)) {
                        printf("Error: invalid update hash, aborting\n");
@@ -295,10 +311,20 @@ got_update_file:
                        ret = 1;
                        goto next_node;
                }
-               if (update_flash(update_addr, update_fladdr, update_size)) {
-                       printf("Error: can't flash update, aborting\n");
-                       ret = 1;
-                       goto next_node;
+
+               if (!update_tftp_dfu) {
+                       if (update_flash(update_addr, update_fladdr,
+                                        update_size)) {
+                               printf("Error: can't flash update, aborting\n");
+                               ret = 1;
+                               goto next_node;
+                       }
+               } else if (fit_image_check_type(fit, noffset,
+                                               IH_TYPE_FIRMWARE)) {
+                       ret = dfu_tftp_write(fit_image_name, update_addr,
+                                            update_size, interface, devstring);
+                       if (ret)
+                               return ret;
                }
 next_node:
                noffset = fdt_next_node(fit, noffset, &ndepth);
index fbaf8ecbe232ce63170228727df1ed7fa23b060f..700bfc315b67f9f58276ccdcb8a88006ac71321f 100644 (file)
@@ -29,6 +29,7 @@
 #include <common.h>
 #include <command.h>
 #include <dm.h>
+#include <memalign.h>
 #include <asm/processor.h>
 #include <linux/compiler.h>
 #include <linux/ctype.h>
index 652a104361f63ee715a99e924ccd1145a2c66224..415b45c1f139451c685fd450a6477bde34859cab 100644 (file)
@@ -26,6 +26,7 @@
 #include <command.h>
 #include <dm.h>
 #include <errno.h>
+#include <memalign.h>
 #include <asm/processor.h>
 #include <asm/unaligned.h>
 #include <linux/ctype.h>
index 0227024441710041a4cbcb2fd5c30920ad9078a6..95912f99c767ff70265d33e99ce336845ba67a35 100644 (file)
@@ -11,6 +11,7 @@
 #include <dm.h>
 #include <errno.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <stdio_dev.h>
 #include <asm/byteorder.h>
 
index b9784304086ecdc7ec7beaaeedb853af513824de..b390310ee35b554f3d152f39fbd1d9e77cc7132a 100644 (file)
@@ -39,6 +39,7 @@
 #include <errno.h>
 #include <inttypes.h>
 #include <mapmem.h>
+#include <memalign.h>
 #include <asm/byteorder.h>
 #include <asm/processor.h>
 #include <dm/device-internal.h>
index 0245bfc763cd3ca3826abec74ca8cce23a3c407e..ee219f82fd66dd37272c1412887b32af512030ae 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_SUNXI=y
 CONFIG_MACH_SUN4I=y
 CONFIG_DRAM_CLK=480
 CONFIG_DRAM_EMR1=4
+CONFIG_MMC0_CD_PIN="PH1"
 CONFIG_SYS_CLK_FREQ=912000000
 CONFIG_DEFAULT_DEVICE_TREE="sun4i-a10-olinuxino-lime"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
diff --git a/configs/A10s-Wobo-i5_defconfig b/configs/A10s-Wobo-i5_defconfig
new file mode 100644 (file)
index 0000000..206fd48
--- /dev/null
@@ -0,0 +1,14 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN5I=y
+CONFIG_DRAM_CLK=432
+CONFIG_MMC0_CD_PIN="PB3"
+CONFIG_USB1_VBUS_PIN="PG12"
+CONFIG_DEFAULT_DEVICE_TREE="sun5i-a10s-wobo-i5"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+CONFIG_USB_EHCI_HCD=y
index dcaaff9220ff4c4df6c5d088aae7378faa05bbe8..ccf35c784ca6aea16b111da3d1f30f4c44ab832f 100644 (file)
@@ -3,11 +3,11 @@ CONFIG_ARCH_SUNXI=y
 CONFIG_MACH_SUN5I=y
 CONFIG_DRAM_CLK=408
 CONFIG_DRAM_EMR1=0
+CONFIG_MMC0_CD_PIN="PG0"
 CONFIG_USB1_VBUS_PIN="PG11"
 # CONFIG_VIDEO_HDMI is not set
 CONFIG_VIDEO_VGA_VIA_LCD=y
 CONFIG_VIDEO_VGA_VIA_LCD_FORCE_SYNC_ACTIVE_HIGH=y
-CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:3,vmode:0"
 CONFIG_VIDEO_LCD_POWER="PB10"
 CONFIG_VIDEO_LCD_BL_PWM="PB2"
 CONFIG_DEFAULT_DEVICE_TREE="sun5i-a13-olinuxino-micro"
index 4b4337223ca517d86b9b12e7d1a91cbcbb64d021..1f68d98cbab4eb15ddb801979910a25b72c69416 100644 (file)
@@ -3,12 +3,12 @@ CONFIG_ARCH_SUNXI=y
 CONFIG_MACH_SUN5I=y
 CONFIG_DRAM_CLK=408
 CONFIG_DRAM_EMR1=0
+CONFIG_MMC0_CD_PIN="PG0"
 CONFIG_USB1_VBUS_PIN="PG11"
 CONFIG_AXP_GPIO=y
 # CONFIG_VIDEO_HDMI is not set
 CONFIG_VIDEO_VGA_VIA_LCD=y
 CONFIG_VIDEO_VGA_VIA_LCD_FORCE_SYNC_ACTIVE_HIGH=y
-CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:16,ri:209,up:22,lo:22,hs:30,vs:1,sync:3,vmode:0"
 CONFIG_VIDEO_LCD_POWER="AXP0-0"
 CONFIG_VIDEO_LCD_BL_PWM="PB2"
 CONFIG_DEFAULT_DEVICE_TREE="sun5i-a13-olinuxino"
index fb1f24002c3b41555862dc530f893dae6c92a037..4a257b3d358f909bdb08a3bf92dfb4d834defa16 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_SUNXI=y
 CONFIG_MACH_SUN7I=y
 CONFIG_DRAM_CLK=480
+CONFIG_MMC0_CD_PIN="PH1"
 CONFIG_DEFAULT_DEVICE_TREE="sun7i-a20-olinuxino-lime"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_SPL=y
diff --git a/configs/A20-Olimex-SOM-EVB_defconfig b/configs/A20-Olimex-SOM-EVB_defconfig
new file mode 100644 (file)
index 0000000..e8c3d18
--- /dev/null
@@ -0,0 +1,16 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN7I=y
+CONFIG_DRAM_CLK=480
+CONFIG_MMC0_CD_PIN="PH1"
+CONFIG_USB0_VBUS_PIN="PB9"
+CONFIG_USB0_VBUS_DET="PH5"
+CONFIG_DEFAULT_DEVICE_TREE="sun7i-a20-olimex-som-evb"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER,SUNXI_GMAC,RGMII,AHCI,SATAPWR=SUNXI_GPC(3)"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_USB_EHCI_HCD=y
index e3f44f62621cbb0740fcc5c10ce24c78b0a2d359..57ff52da9513f2041f479b36658a7977884271d9 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_DRAM_CLK=432
 CONFIG_MMC0_CD_PIN="PG0"
 CONFIG_USB0_VBUS_PIN="PG12"
 CONFIG_USB0_VBUS_DET="PG1"
+CONFIG_USB0_ID_DET="PG2"
 CONFIG_AXP_GPIO=y
 # CONFIG_VIDEO_HDMI is not set
 CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:45,ri:82,up:22,lo:22,hs:1,vs:1,sync:3,vmode:0"
index fa60ddf415f2488edd500df195121cd8a4522b14..bbda5bfa5c5e261a01ca2467b7649ead8faeb813 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_SUNXI=y
 CONFIG_MACH_SUN4I=y
 CONFIG_DRAM_CLK=480
+CONFIG_MMC0_CD_PIN="PH1"
 CONFIG_DEFAULT_DEVICE_TREE="sun4i-a10-cubieboard"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_SPL=y
index b8809c806b3f842974ac58532eb43dc9cf15c9a7..e1b76ce78c8f189a952310b2156384b04d7176ae 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_SUNXI=y
 CONFIG_MACH_SUN7I=y
 CONFIG_DRAM_CLK=432
+CONFIG_MMC0_CD_PIN="PH1"
 CONFIG_VIDEO_VGA=y
 CONFIG_GMAC_TX_DELAY=1
 CONFIG_DEFAULT_DEVICE_TREE="sun7i-a20-cubietruck"
diff --git a/configs/T1024QDS_D4_SECURE_BOOT_defconfig b/configs/T1024QDS_D4_SECURE_BOOT_defconfig
deleted file mode 100644 (file)
index f69c49d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC85xx=y
-CONFIG_TARGET_T102XQDS=y
-CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4,SECURE_BOOT"
-CONFIG_SPI_FLASH=y
-CONFIG_NETDEVICES=y
-CONFIG_E1000=y
diff --git a/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig b/configs/T1024QDS_DDR4_SECURE_BOOT_defconfig
new file mode 100644 (file)
index 0000000..f69c49d
--- /dev/null
@@ -0,0 +1,7 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T102XQDS=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4,SECURE_BOOT"
+CONFIG_SPI_FLASH=y
+CONFIG_NETDEVICES=y
+CONFIG_E1000=y
diff --git a/configs/T1024QDS_DDR4_defconfig b/configs/T1024QDS_DDR4_defconfig
new file mode 100644 (file)
index 0000000..174fbca
--- /dev/null
@@ -0,0 +1,5 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T102XQDS=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1024,SYS_FSL_DDR4"
+CONFIG_SPI_FLASH=y
diff --git a/configs/T1040QDS_D4_defconfig b/configs/T1040QDS_D4_defconfig
deleted file mode 100644 (file)
index 8c4320b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC85xx=y
-CONFIG_TARGET_T1040QDS=y
-CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SYS_FSL_DDR4"
-CONFIG_SPI_FLASH=y
-CONFIG_NETDEVICES=y
-CONFIG_E1000=y
diff --git a/configs/T1040QDS_DDR4_defconfig b/configs/T1040QDS_DDR4_defconfig
new file mode 100644 (file)
index 0000000..8c4320b
--- /dev/null
@@ -0,0 +1,7 @@
+CONFIG_PPC=y
+CONFIG_MPC85xx=y
+CONFIG_TARGET_T1040QDS=y
+CONFIG_SYS_EXTRA_OPTIONS="PPC_T1040,SYS_FSL_DDR4"
+CONFIG_SPI_FLASH=y
+CONFIG_NETDEVICES=y
+CONFIG_E1000=y
diff --git a/configs/alpr_defconfig b/configs/alpr_defconfig
deleted file mode 100644 (file)
index b7cd74d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_ALPR=y
-# CONFIG_CMD_LOADB is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NFS is not set
index 60339c8725e0f051a639476a629b587239daa46a..f1ff65fa835a5e74ab4f4a931f6425fced1c6262 100644 (file)
@@ -8,3 +8,4 @@ CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT"
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_SPI_FLASH=y
+CONFIG_DFU_TFTP=y
diff --git a/configs/am335x_sl50_defconfig b/configs/am335x_sl50_defconfig
new file mode 100644 (file)
index 0000000..0ddccc8
--- /dev/null
@@ -0,0 +1,10 @@
+CONFIG_ARM=y
+CONFIG_TARGET_AM335X_SL50=y
+CONFIG_SPL=y
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT"
+CONFIG_CONS_INDEX=1
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_SETEXPR is not set
index e676f0ec0d9890a1d04574c73675edcaaf02258c..e43f6eb2a55a9e42a89edef675811a080fbcb872 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_ARISTAINETOS2=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/aristainetos2b_defconfig b/configs/aristainetos2b_defconfig
new file mode 100644 (file)
index 0000000..af2dbc6
--- /dev/null
@@ -0,0 +1,7 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_TARGET_ARISTAINETOS2B=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_SPI_FLASH=y
index f5b0b6bf5a71007a6e693000279b0b5c82a05319..e6affedb9c3249761ec67e8c0a3fd64fca1c4206 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_ARISTAINETOS=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos.cfg,MX6DL"
 # CONFIG_CMD_IMLS is not set
index 9a6cef3670aa31d0c5290ba02dba76d6a8ed0f42..fdb31490135251c3b059b91926b73922c7da6549 100644 (file)
@@ -1,13 +1,12 @@
 CONFIG_ARC=y
 CONFIG_SYS_DCACHE_OFF=y
 CONFIG_ARC_CACHE_LINE_SHIFT=5
-CONFIG_TARGET_AXS101=y
 CONFIG_SYS_CLK_FREQ=750000000
 CONFIG_SYS_TEXT_BASE=0x81000000
+CONFIG_SYS_PROMPT="AXS# "
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_NETDEVICES=y
 CONFIG_ETH_DESIGNWARE=y
 CONFIG_USE_PRIVATE_LIBGCC=y
-CONFIG_SYS_PROMPT="AXS# "
index 8315b61358cda9fdcb54bc234ecbcdeaf00c0341..b3dbb8d05607bcfa4fff5cd685894822e3038dfb 100644 (file)
@@ -1,8 +1,8 @@
 CONFIG_ARC=y
 CONFIG_ISA_ARCV2=y
-CONFIG_TARGET_AXS101=y
 CONFIG_SYS_CLK_FREQ=50000000
 CONFIG_SYS_TEXT_BASE=0x81000000
+CONFIG_SYS_PROMPT="AXS# "
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
diff --git a/configs/balloon3_defconfig b/configs/balloon3_defconfig
deleted file mode 100644 (file)
index bf524ce..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_BALLOON3=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
index 13bd282024b7c24ea8ae55cdc89968defca5d979..2ea30c82275f3d62b2017b0db2d6b4a7842523c4 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_BAYLEYBAY=y
 CONFIG_HAVE_INTEL_ME=y
 CONFIG_SMP=y
 CONFIG_HAVE_VGA_BIOS=y
+CONFIG_VGA_BIOS_ADDR=0xfffa0000
 CONFIG_GENERATE_PIRQ_TABLE=y
 CONFIG_GENERATE_MP_TABLE=y
 CONFIG_CMD_CPU=y
@@ -19,11 +20,13 @@ CONFIG_OF_CONTROL=y
 CONFIG_CPU=y
 CONFIG_DM_PCI=y
 CONFIG_SPI_FLASH=y
-CONFIG_NETDEVICES=y
+CONFIG_DM_ETH=y
 CONFIG_E1000=y
 CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_DM_RTC=y
 CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_SYS_VSNPRINTF=y
index 74f95277e80f680facbc120091508cc052747fbb..0289a3fd4d2c9f8c27e0dcf6b8bbfd91498703a5 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_CGTQMX6EVAL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/congatec/cgtqmx6eval/imximage.cfg,MX6Q"
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/chromebook_jerry_defconfig b/configs/chromebook_jerry_defconfig
new file mode 100644 (file)
index 0000000..389dfd2
--- /dev/null
@@ -0,0 +1,43 @@
+CONFIG_ARM=y
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_ROCKCHIP_RK3288=y
+CONFIG_TARGET_CHROMEBOOK_JERRY=y
+CONFIG_DEFAULT_DEVICE_TREE="rk3288-jerry"
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_STACK_R_ADDR=0x80000
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_PMIC=y
+CONFIG_CMD_REGULATOR=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_CLK=y
+CONFIG_SPL_CLK=y
+CONFIG_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_RESET=y
+CONFIG_LED=y
+CONFIG_SPL_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_DEBUG_UART=y
+CONFIG_DEBUG_UART_BASE=0xff690000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_SIMPLE=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_SPL_PINCTRL_SIMPLE=y
+CONFIG_ROCKCHIP_PINCTRL=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_ACT8846=y
+CONFIG_DM_REGULATOR=y
+CONFIG_REGULATOR_ACT8846=y
+CONFIG_RAM=y
+CONFIG_SPL_RAM=y
+CONFIG_DM_MMC=y
+CONFIG_ROCKCHIP_DWMMC=y
+CONFIG_USE_PRIVATE_LIBGCC=y
+CONFIG_CMD_DHRYSTONE=y
+CONFIG_ERRNO_STR=y
index b987f3f52f690c30afffe6ffcf7f10f22b53dd11..985573667ac9697ce06ee6f24d0b18b6a79bab53 100644 (file)
@@ -11,15 +11,20 @@ CONFIG_HAVE_VGA_BIOS=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
 CONFIG_CMD_BOOTSTAGE=y
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM_PCI=y
 CONFIG_SPI_FLASH=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
+CONFIG_DM_TPM=y
+CONFIG_TPM_TIS_LPC=y
 CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
 CONFIG_DM_RTC=y
 CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_SYS_VSNPRINTF=y
+CONFIG_TPM=y
index e82c8ecf64e90e44795e0ec2a662917f3ed2c4b1..c75b20d24db737ac705157bb4adef3fa643b1baf 100644 (file)
@@ -11,15 +11,20 @@ CONFIG_HAVE_VGA_BIOS=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
 CONFIG_CMD_BOOTSTAGE=y
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM_PCI=y
 CONFIG_SPI_FLASH=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
+CONFIG_DM_TPM=y
+CONFIG_TPM_TIS_LPC=y
 CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
 CONFIG_FRAMEBUFFER_VESA_MODE_11A=y
 CONFIG_DM_RTC=y
 CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_SYS_VSNPRINTF=y
+CONFIG_TPM=y
index 21c35e3d94d0d496f19879eb4252b29f4acafef0..b50ababa036405c3c9b30618e8141949c42364bf 100644 (file)
@@ -28,5 +28,5 @@ CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
-CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP=y
 CONFIG_SYS_PROMPT="CM-FX6 # "
+CONFIG_SYS_USB_EVENT_POLL_VIA_INT_QUEUE=y
diff --git a/configs/cmi_mpc5xx_defconfig b/configs/cmi_mpc5xx_defconfig
deleted file mode 100644 (file)
index abebfab..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_PPC=y
-CONFIG_5xx=y
-CONFIG_TARGET_CMI_MPC5XX=y
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
index 37ead03a43258416b15d4f5692e1def5662e650d..c8ab862edccf448e635a0b2e41a86e3c48698844 100644 (file)
@@ -4,4 +4,8 @@ CONFIG_TARGET_CONTROLCENTERD=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD,DEVELOP"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
+CONFIG_CMD_TPM=y
 CONFIG_SPI_FLASH=y
+CONFIG_TPM_ATMEL_TWI=y
+CONFIG_TPM_AUTH_SESSIONS=y
+CONFIG_TPM=y
index 7166edbf9d4a6e467a3f45e252c50b277937f0ac..21c0eab53dcc9f28396687969917e80faa199c4d 100644 (file)
@@ -4,4 +4,8 @@ CONFIG_TARGET_CONTROLCENTERD=y
 CONFIG_SYS_EXTRA_OPTIONS="36BIT,SDCARD"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
+CONFIG_CMD_TPM=y
 CONFIG_SPI_FLASH=y
+CONFIG_TPM_ATMEL_TWI=y
+CONFIG_TPM_AUTH_SESSIONS=y
+CONFIG_TPM=y
index d99fcd45135560589b63c4f6fe1f3d58cf73f608..c3a0920d7cdcfe3e680a4e78180fdadb5a319858 100644 (file)
@@ -6,3 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="TRAILBLAZER,SPIFLASH,DEVELOP"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TPM=y
+CONFIG_TPM_ATMEL_TWI=y
+CONFIG_TPM_AUTH_SESSIONS=y
+CONFIG_TPM=y
index 3557aea1ebb57ec29311952f8eb362cb05cb3ff6..08aae9ae2dbd8aaabd68baa2bddb7af93998b7b6 100644 (file)
@@ -6,3 +6,7 @@ CONFIG_SYS_EXTRA_OPTIONS="TRAILBLAZER,SPIFLASH"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TPM=y
+CONFIG_TPM_ATMEL_TWI=y
+CONFIG_TPM_AUTH_SESSIONS=y
+CONFIG_TPM=y
index df3a624ecd119dc320d4d1db3001bcf176e9018b..e95f96d77953d4084a59d547f802cbbaebb91888 100644 (file)
@@ -9,10 +9,18 @@ CONFIG_TSC_CALIBRATION_BYPASS=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
 CONFIG_CMD_BOOTSTAGE=y
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM_PCI=y
 CONFIG_SPI_FLASH=y
-CONFIG_NETDEVICES=y
+CONFIG_DM_ETH=y
 CONFIG_E1000=y
+CONFIG_DM_TPM=y
+CONFIG_TPM_TIS_LPC=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_DM_RTC=y
 CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_SYS_VSNPRINTF=y
+CONFIG_TPM=y
diff --git a/configs/cpu9260_128M_defconfig b/configs/cpu9260_128M_defconfig
deleted file mode 100644 (file)
index 187fced..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPU9260=y
-CONFIG_SYS_EXTRA_OPTIONS="CPU9260,CPU9260_128M"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="CPU9260=> "
diff --git a/configs/cpu9260_defconfig b/configs/cpu9260_defconfig
deleted file mode 100644 (file)
index 4b50505..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPU9260=y
-CONFIG_SYS_EXTRA_OPTIONS="CPU9260"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="CPU9260=> "
diff --git a/configs/cpu9260_nand_128M_defconfig b/configs/cpu9260_nand_128M_defconfig
deleted file mode 100644 (file)
index 797fb85..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPU9260=y
-CONFIG_SYS_EXTRA_OPTIONS="CPU9260,CPU9260_128M,NANDBOOT"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="CPU9260=> "
diff --git a/configs/cpu9260_nand_defconfig b/configs/cpu9260_nand_defconfig
deleted file mode 100644 (file)
index 8d155d0..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPU9260=y
-CONFIG_SYS_EXTRA_OPTIONS="CPU9260,NANDBOOT"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="CPU9260=> "
diff --git a/configs/cpu9G20_128M_defconfig b/configs/cpu9G20_128M_defconfig
deleted file mode 100644 (file)
index 650c934..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPU9260=y
-CONFIG_SYS_EXTRA_OPTIONS="CPU9G20,CPU9G20_128M"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="CPU9G20=> "
diff --git a/configs/cpu9G20_defconfig b/configs/cpu9G20_defconfig
deleted file mode 100644 (file)
index 997eec5..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPU9260=y
-CONFIG_SYS_EXTRA_OPTIONS="CPU9G20"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="CPU9G20=> "
diff --git a/configs/cpu9G20_nand_128M_defconfig b/configs/cpu9G20_nand_128M_defconfig
deleted file mode 100644 (file)
index 6d62732..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPU9260=y
-CONFIG_SYS_EXTRA_OPTIONS="CPU9G20,CPU9G20_128M,NANDBOOT"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="CPU9G20=> "
diff --git a/configs/cpu9G20_nand_defconfig b/configs/cpu9G20_nand_defconfig
deleted file mode 100644 (file)
index 52f916f..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPU9260=y
-CONFIG_SYS_EXTRA_OPTIONS="CPU9G20,NANDBOOT"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="CPU9G20=> "
diff --git a/configs/cpuat91_defconfig b/configs/cpuat91_defconfig
deleted file mode 100644 (file)
index 10b8ad2..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPUAT91=y
-CONFIG_AUTOBOOT_KEYED=y
-CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n"
-CONFIG_AUTOBOOT_DELAY_STR="d"
-CONFIG_AUTOBOOT_STOP_STR=" "
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NFS is not set
-CONFIG_SYS_PROMPT="CPUAT91=> "
diff --git a/configs/cpuat91_ram_defconfig b/configs/cpuat91_ram_defconfig
deleted file mode 100644 (file)
index 188c2b9..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_CPUAT91=y
-CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT"
-CONFIG_AUTOBOOT_KEYED=y
-CONFIG_AUTOBOOT_PROMPT="Press SPACE to abort autoboot in %d seconds\n"
-CONFIG_AUTOBOOT_DELAY_STR="d"
-CONFIG_AUTOBOOT_STOP_STR=" "
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NFS is not set
index 4fc182748261ec6f77e146309a284a5162125b09..f328159051e19d7e5b0b616f1ab6c92431a0643a 100644 (file)
@@ -19,10 +19,13 @@ CONFIG_OF_CONTROL=y
 CONFIG_CPU=y
 CONFIG_DM_PCI=y
 CONFIG_SPI_FLASH=y
-CONFIG_NETDEVICES=y
+CONFIG_DM_ETH=y
 CONFIG_E1000=y
+CONFIG_PCH_GBE=y
 CONFIG_VIDEO_VESA=y
 CONFIG_FRAMEBUFFER_SET_VESA_MODE=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_DM_RTC=y
 CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_SYS_VSNPRINTF=y
diff --git a/configs/csb272_defconfig b/configs/csb272_defconfig
deleted file mode 100644 (file)
index c9cc680..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_CSB272=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/csb472_defconfig b/configs/csb472_defconfig
deleted file mode 100644 (file)
index e46b965..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_CSB472=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/d2net_v2_defconfig b/configs/d2net_v2_defconfig
deleted file mode 100644 (file)
index d5f783f..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-CONFIG_ARM=y
-CONFIG_KIRKWOOD=y
-CONFIG_TARGET_NET2BIG_V2=y
-CONFIG_SYS_EXTRA_OPTIONS="D2NET_V2"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
diff --git a/configs/davinci_dm355evm_defconfig b/configs/davinci_dm355evm_defconfig
deleted file mode 100644 (file)
index 4513ce4..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_DM355EVM=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="DM355 EVM # "
diff --git a/configs/davinci_dm355leopard_defconfig b/configs/davinci_dm355leopard_defconfig
deleted file mode 100644 (file)
index 7945605..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_DM355LEOPARD=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="DM355 LEOPARD # "
diff --git a/configs/davinci_dm365evm_defconfig b/configs/davinci_dm365evm_defconfig
deleted file mode 100644 (file)
index 3550e75..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_DM365EVM=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="DM36x EVM # "
diff --git a/configs/davinci_dm6467Tevm_defconfig b/configs/davinci_dm6467Tevm_defconfig
deleted file mode 100644 (file)
index 3749b81..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_DM6467EVM=y
-CONFIG_SYS_EXTRA_OPTIONS="DAVINCI_DM6467TEVM,REFCLK_FREQ=33000000"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/davinci_dm6467evm_defconfig b/configs/davinci_dm6467evm_defconfig
deleted file mode 100644 (file)
index b2021af..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_DM6467EVM=y
-CONFIG_SYS_EXTRA_OPTIONS="REFCLK_FREQ=27000000"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="DM6467 EVM > "
diff --git a/configs/davinci_dvevm_defconfig b/configs/davinci_dvevm_defconfig
deleted file mode 100644 (file)
index 7c6f03e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_DVEVM=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="U-Boot > "
diff --git a/configs/davinci_schmoogie_defconfig b/configs/davinci_schmoogie_defconfig
deleted file mode 100644 (file)
index 2fb4d9f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_SCHMOOGIE=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="U-Boot > "
diff --git a/configs/davinci_sffsdr_defconfig b/configs/davinci_sffsdr_defconfig
deleted file mode 100644 (file)
index 633b4a8..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_SFFSDR=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="U-Boot > "
diff --git a/configs/davinci_sonata_defconfig b/configs/davinci_sonata_defconfig
deleted file mode 100644 (file)
index 697ce06..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_DAVINCI_SONATA=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="U-Boot > "
diff --git a/configs/dig297_defconfig b/configs/dig297_defconfig
deleted file mode 100644 (file)
index 4c2c982..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-CONFIG_ARM=y
-CONFIG_OMAP34XX=y
-CONFIG_TARGET_DIG297=y
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NFS is not set
-CONFIG_SYS_PROMPT="DIG297# "
diff --git a/configs/eb_cpux9k2_defconfig b/configs/eb_cpux9k2_defconfig
deleted file mode 100644 (file)
index 6a6f3cd..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_EB_CPUX9K2=y
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="U-Boot> "
diff --git a/configs/eb_cpux9k2_ram_defconfig b/configs/eb_cpux9k2_ram_defconfig
deleted file mode 100644 (file)
index 47c2178..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_EB_CPUX9K2=y
-CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT"
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/enbw_cmc_defconfig b/configs/enbw_cmc_defconfig
deleted file mode 100644 (file)
index 90249f3..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_DAVINCI=y
-CONFIG_TARGET_ENBW_CMC=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/firefly-rk3288_defconfig b/configs/firefly-rk3288_defconfig
new file mode 100644 (file)
index 0000000..5fe90b5
--- /dev/null
@@ -0,0 +1,42 @@
+CONFIG_ARM=y
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_ROCKCHIP_RK3288=y
+CONFIG_TARGET_FIREFLY_RK3288=y
+CONFIG_DEFAULT_DEVICE_TREE="rk3288-firefly"
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_STACK_R_ADDR=0x80000
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_PMIC=y
+CONFIG_CMD_REGULATOR=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_CLK=y
+CONFIG_SPL_CLK=y
+CONFIG_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_RESET=y
+CONFIG_LED=y
+CONFIG_LED_GPIO=y
+CONFIG_DEBUG_UART=y
+CONFIG_DEBUG_UART_BASE=0xff690000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+# CONFIG_PINCTRL_FULL is not set
+# CONFIG_SPL_PINCTRL_FULL is not set
+CONFIG_ROCKCHIP_PINCTRL=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_ACT8846=y
+CONFIG_DM_REGULATOR=y
+CONFIG_REGULATOR_ACT8846=y
+CONFIG_RAM=y
+CONFIG_SPL_RAM=y
+CONFIG_DM_MMC=y
+CONFIG_ROCKCHIP_DWMMC=y
+CONFIG_USE_PRIVATE_LIBGCC=y
+CONFIG_CMD_DHRYSTONE=y
+CONFIG_ERRNO_STR=y
index 30cead75b29a386d69209330eed8dbcfbe23da32..30e09370e6435e1b62210196d7acf540b385fabd 100644 (file)
@@ -13,7 +13,7 @@ CONFIG_VIDEO_LCD_BL_PWM="PB2"
 CONFIG_DEFAULT_DEVICE_TREE="sun5i-a13-forfun-q88db"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2,AXP209_POWER"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
index 6ef1090e1ee965a56b4305315ec3f18b3d1d33c7..d05154ee0a61d554d41aad4e355ea82538450218 100644 (file)
@@ -14,6 +14,9 @@ CONFIG_OF_CONTROL=y
 CONFIG_SPI_FLASH=y
 CONFIG_NETDEVICES=y
 CONFIG_ETH_DESIGNWARE=y
+CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
 CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_SYS_VSNPRINTF=y
diff --git a/configs/gt90h_v4_defconfig b/configs/gt90h_v4_defconfig
new file mode 100644 (file)
index 0000000..3b72dc2
--- /dev/null
@@ -0,0 +1,26 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN8I_A23=y
+CONFIG_DRAM_CLK=480
+CONFIG_DRAM_ZQ=32767
+CONFIG_MMC0_CD_PIN="PB4"
+CONFIG_USB0_VBUS_PIN="AXP0-VBUS-ENABLE"
+CONFIG_USB0_VBUS_DET="AXP0-VBUS-DETECT"
+CONFIG_USB0_ID_DET="PH8"
+CONFIG_AXP_GPIO=y
+CONFIG_VIDEO_LCD_MODE="x:1024,y:600,depth:18,pclk_khz:55000,le:159,ri:160,up:22,lo:12,hs:1,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_DCLK_PHASE=0
+CONFIG_VIDEO_LCD_POWER="PH7"
+CONFIG_VIDEO_LCD_BL_EN="PH6"
+CONFIG_VIDEO_LCD_BL_PWM="PH0"
+CONFIG_USB_MUSB_HOST=y
+CONFIG_DEFAULT_DEVICE_TREE="sun8i-a23-gt90h-v4"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=5"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+CONFIG_AXP221_DCDC2_VOLT=1100
+CONFIG_AXP221_DLDO1_VOLT=3300
+CONFIG_AXP221_ALDO1_VOLT=3000
index e294cac0b2fb2e102fac86687bf8a9a433ee3cdb..e45b077e3a5b22ca2529b71ef5cf52e6fc3c485d 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_GW_VENTANA=y
 CONFIG_SPL=y
 CONFIG_SPL_STACK_R=y
diff --git a/configs/ima3-mx53_defconfig b/configs/ima3-mx53_defconfig
deleted file mode 100644 (file)
index 1f5e3a6..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_IMA3_MX53=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/esg/ima3-mx53/imximage.cfg"
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
-CONFIG_SYS_PROMPT="IMA3 MX53 U-Boot > "
diff --git a/configs/imx27lite_defconfig b/configs/imx27lite_defconfig
deleted file mode 100644 (file)
index b02955d..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_IMX27LITE=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/imx31_litekit_defconfig b/configs/imx31_litekit_defconfig
deleted file mode 100644 (file)
index f10759b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_IMX31_LITEKIT=y
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="uboot> "
diff --git a/configs/inet1_defconfig b/configs/inet1_defconfig
new file mode 100644 (file)
index 0000000..b2ba497
--- /dev/null
@@ -0,0 +1,22 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN4I=y
+CONFIG_DRAM_CLK=432
+CONFIG_DRAM_EMR1=4
+CONFIG_USB0_VBUS_PIN="PB9"
+CONFIG_USB0_VBUS_DET="PH5"
+CONFIG_USB0_ID_DET="PH4"
+CONFIG_VIDEO_LCD_MODE="x:1024,y:600,depth:24,pclk_khz:52000,le:32,ri:287,up:22,lo:12,hs:1,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="PH8"
+CONFIG_VIDEO_LCD_BL_EN="PH7"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
+CONFIG_VIDEO_LCD_PANEL_LVDS=y
+CONFIG_DEFAULT_DEVICE_TREE="sun4i-a10-inet1"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_MUSB_HOST=y
diff --git a/configs/inet97fv2_defconfig b/configs/inet97fv2_defconfig
new file mode 100644 (file)
index 0000000..d7ddee1
--- /dev/null
@@ -0,0 +1,20 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN4I=y
+CONFIG_DRAM_CLK=408
+CONFIG_DRAM_EMR1=4
+CONFIG_USB0_VBUS_PIN="PB9"
+CONFIG_USB0_VBUS_DET="PH5"
+CONFIG_USB0_ID_DET="PH4"
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:24,pclk_khz:33000,le:45,ri:209,up:22,lo:22,hs:1,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="PH8"
+CONFIG_VIDEO_LCD_BL_EN="PH7"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
+CONFIG_USB_MUSB_HOST=y
+CONFIG_DEFAULT_DEVICE_TREE="sun4i-a10-inet97fv2"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
diff --git a/configs/inet98v_rev2_defconfig b/configs/inet98v_rev2_defconfig
new file mode 100644 (file)
index 0000000..c23245a
--- /dev/null
@@ -0,0 +1,22 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN5I=y
+CONFIG_DRAM_CLK=432
+CONFIG_MMC0_CD_PIN="PG0"
+CONFIG_USB0_VBUS_PIN="PG12"
+CONFIG_USB0_VBUS_DET="PG1"
+CONFIG_USB0_ID_DET="PG2"
+CONFIG_AXP_GPIO=y
+# CONFIG_VIDEO_HDMI is not set
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:45,ri:209,up:22,lo:22,hs:1,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="AXP0-0"
+CONFIG_VIDEO_LCD_BL_EN="AXP0-1"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
+CONFIG_USB_MUSB_HOST=y
+CONFIG_DEFAULT_DEVICE_TREE="sun5i-a13-inet-98v-rev2"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2,AXP209_POWER"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
diff --git a/configs/inet9f_rev03_defconfig b/configs/inet9f_rev03_defconfig
new file mode 100644 (file)
index 0000000..fdfb02a
--- /dev/null
@@ -0,0 +1,20 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN4I=y
+CONFIG_DRAM_CLK=408
+CONFIG_DRAM_EMR1=4
+CONFIG_USB0_VBUS_PIN="PB9"
+CONFIG_USB0_VBUS_DET="PH5"
+CONFIG_USB0_ID_DET="PH4"
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:24,pclk_khz:33000,le:45,ri:209,up:22,lo:22,hs:1,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="PH8"
+CONFIG_VIDEO_LCD_BL_EN="PH7"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
+CONFIG_USB_MUSB_HOST=y
+CONFIG_DEFAULT_DEVICE_TREE="sun4i-a10-inet9f-rev03"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
diff --git a/configs/inetspace_v2_defconfig b/configs/inetspace_v2_defconfig
deleted file mode 100644 (file)
index f314059..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-CONFIG_ARM=y
-CONFIG_KIRKWOOD=y
-CONFIG_TARGET_NETSPACE_V2=y
-CONFIG_SYS_EXTRA_OPTIONS="INETSPACE_V2"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
diff --git a/configs/jornada_defconfig b/configs/jornada_defconfig
deleted file mode 100644 (file)
index 65cbc2a..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_JORNADA=y
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
-# CONFIG_CMD_MISC is not set
-CONFIG_SYS_PROMPT="HP Jornada# "
diff --git a/configs/lcd4_lwmon5_defconfig b/configs/lcd4_lwmon5_defconfig
deleted file mode 100644 (file)
index b911dbd..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_LWMON5=y
-CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="LCD4_LWMON5"
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/lp8x4x_defconfig b/configs/lp8x4x_defconfig
deleted file mode 100644 (file)
index 63bbcca..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_LP8X4X=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/ls2085a_emu_D4_defconfig b/configs/ls2085a_emu_D4_defconfig
deleted file mode 100644 (file)
index 9c82e17..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_LS2085A_EMU=y
-CONFIG_SYS_EXTRA_OPTIONS="EMU,SYS_FSL_DDR4"
-# CONFIG_CMD_CONSOLE is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_EDITENV is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_ITEST is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NFS is not set
-# CONFIG_CMD_MISC is not set
index fa4a44e856437a64eab125dda27a4951f444e39c..9c82e17d6421a022a7ba53d144489ba116abd38d 100644 (file)
@@ -1,6 +1,6 @@
 CONFIG_ARM=y
 CONFIG_TARGET_LS2085A_EMU=y
-CONFIG_SYS_EXTRA_OPTIONS="EMU"
+CONFIG_SYS_EXTRA_OPTIONS="EMU,SYS_FSL_DDR4"
 # CONFIG_CMD_CONSOLE is not set
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_XIMG is not set
diff --git a/configs/lwmon5_defconfig b/configs/lwmon5_defconfig
deleted file mode 100644 (file)
index 0a6da68..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_LWMON5=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/magnesium_defconfig b/configs/magnesium_defconfig
deleted file mode 100644 (file)
index 2fa6589..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_MAGNESIUM=y
-# CONFIG_CMD_SETEXPR is not set
index 5ea278fee4ff7d6f70d55e9698eac6a374ac06bd..0707f0d2989ba2bfa206c87d0b6fdf27db6b7439 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_EMBESTMX6BOARDS=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,ENV_IS_IN_SPI_FLASH"
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/mv88f6281gtw_ge_defconfig b/configs/mv88f6281gtw_ge_defconfig
deleted file mode 100644 (file)
index 8988734..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_KIRKWOOD=y
-CONFIG_TARGET_MV88F6281GTW_GE=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
diff --git a/configs/mx51_efikamx_defconfig b/configs/mx51_efikamx_defconfig
deleted file mode 100644 (file)
index a88c223..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_MX51_EFIKAMX=y
-CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_MX51_EFIKAMX,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_mx.cfg"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
-CONFIG_SYS_PROMPT="Efika> "
diff --git a/configs/mx51_efikasb_defconfig b/configs/mx51_efikasb_defconfig
deleted file mode 100644 (file)
index 1bc7c00..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_MX51_EFIKAMX=y
-CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_MX51_EFIKASB,IMX_CONFIG=board/genesi/mx51_efikamx/imximage_sb.cfg"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
index 27fe22eb018ed9356f980e6887d54fb5de8fef2a..59362c661be0001a63035c29c8aaf9315eadc2ac 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6CUBOXI=y
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
index 6c1ba3361d6cae5ff8aee4984195033070c739ba..e1bdaafe9bb1aac5cbc0a3812899ae7118a6641d 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QARM2=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage_mx6dl.cfg,MX6DL,DDR_MB=2048"
 # CONFIG_CMD_IMLS is not set
index 4624a09dfe760b8acebf745e2093dfb3df6c3664..a37c254a7d0986905dca14857d1db9db80180045 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QARM2=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage_mx6dl.cfg,MX6DL,MX6DL_LPDDR2,DDR_MB=512"
 # CONFIG_CMD_IMLS is not set
index 756e5dbff4a032407370f7e631e3a18ce2c9b1a2..17d1b9675136c02e0145be5e30e4044a0407a3f8 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QSABREAUTO=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6dl.cfg,MX6DL"
 # CONFIG_CMD_IMLS is not set
index de9999851b0631e2ce6c8a805e25e4c4d79e3a85..6610a0c93f37c720fc1a2b05d66f78abea11a6d6 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6SABRESD=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabresd/mx6dlsabresd.cfg,MX6DL"
 # CONFIG_CMD_IMLS is not set
index 42dbded3433f6367470e29fc7a6501c9beeb1898..5cd78cd300cb6216cdf44bf33c335e2656a26f81 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QARM2=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg,MX6Q,DDR_MB=2048"
 # CONFIG_CMD_IMLS is not set
index 5f9105fd9a72cd50ac8c2be4df2399ff9e3050b6..89c42b851040211a269c9abb3d2a62df70d2cf56 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QARM2=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg,MX6Q,MX6DQ_LPDDR2,DDR_MB=512"
 # CONFIG_CMD_IMLS is not set
index 293e3f27a5646b064e77bed61ddc7d680a3c14ac..2cbbc32b0a5fa6d0bd27487e3122f9e42d9a963c 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QSABREAUTO=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6qp.cfg,MX6Q"
 CONFIG_SPI_FLASH=y
index 9343bcce5a5c6900c604f816fbaaaff28b480482..11ded404adf9e9fb9ddd8d3fc7c4fb653b188664 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QSABREAUTO=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg,MX6Q"
 # CONFIG_CMD_IMLS is not set
index 427fbee32296314b2765e521c333e4f2c5b2c886..1a2bb221d3d8be02c64be3165c83ee40d9fd0ce2 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_NITROGEN6X=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,SABRELITE"
 # CONFIG_CMD_IMLS is not set
index 732c1dce61729f0d5f43b683e9695c0f220e5670..6cbe1cfbb68dddc6f3bca248eb2a8547c6061529 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6SABRESD=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sabresd/mx6q_4x_mt41j128.cfg,MX6Q"
 # CONFIG_CMD_IMLS is not set
index d93a40dbe3d921fda3f329b0568273d567717e2b..bfd371a32220a32c51cc519940d4ca9284af70fe 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6SABRESD=y
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6Q"
index dcc3296a3b93541fc2038e013260a3d230064949..ae9912b2a609b1f5fa5f3fcd847b31c557bdccd0 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6SLEVK=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL"
 # CONFIG_CMD_IMLS is not set
index 964a147cacb9954dcef38b95132132ef0415cad9..39046164ef75cb22240a2c812eb9ecbecc11a3b3 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6SLEVK=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL,SYS_BOOT_SPINOR"
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/mx6slevk_spl_defconfig b/configs/mx6slevk_spl_defconfig
new file mode 100644 (file)
index 0000000..1fbd0d1
--- /dev/null
@@ -0,0 +1,8 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_TARGET_MX6SLEVK=y
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6SL"
+CONFIG_DM=y
+CONFIG_SPI_FLASH=y
+CONFIG_DM_THERMAL=y
index e6e4db5c48648f484b4bc79876b8d66bb9404a31..a5829053276245115393b6e6ad97592435e1d01c 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6SXSABRESD=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sxsabresd/imximage.cfg,MX6SX"
 # CONFIG_CMD_IMLS is not set
index df3489409c8e594107e74f640391638e31f4335e..3f196590c48515f5ece4c6a8199be295c71df3ce 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6SXSABRESD=y
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6SX"
index 29159a1bf76a3b110b5648843a7967a8d7a67095..57dbad225079f182663944473a7ee567925a9904 100644 (file)
@@ -1,4 +1,8 @@
 CONFIG_ARM=y
-CONFIG_TARGET_MX6UL_14X14_EVK=y
+CONFIG_ARCH_MX6=y
+CONFIG_CMD_NET=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_DHCP=y
 CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6UL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
+CONFIG_TARGET_MX6UL_14X14_EVK=y
diff --git a/configs/mx6ul_9x9_evk_defconfig b/configs/mx6ul_9x9_evk_defconfig
new file mode 100644 (file)
index 0000000..e54609d
--- /dev/null
@@ -0,0 +1,8 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_TARGET_MX6UL_9X9_EVK=y
+CONFIG_SPL=y
+CONFIG_CMD_NET=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_DHCP=y
diff --git a/configs/mx7dsabresd_defconfig b/configs/mx7dsabresd_defconfig
new file mode 100644 (file)
index 0000000..bb95424
--- /dev/null
@@ -0,0 +1,14 @@
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7dsabresd/imximage.cfg,MX7D"
+CONFIG_ARM=y
+CONFIG_ARCH_MX7=y
+CONFIG_TARGET_MX7DSABRESD=y
+CONFIG_SYS_MALLOC_F=y
+CONFIG_SYS_MALLOC_F_LEN=0x400
+CONFIG_CMD_NET=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_DHCP=y
+# CONFIG_CMD_BOOTD is not set
+# CONFIG_CMD_SETEXPR is not set
+# CONFIG_CMD_IMI is not set
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_XIMG is not set
diff --git a/configs/nhk8815_defconfig b/configs/nhk8815_defconfig
deleted file mode 100644 (file)
index 218d92a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_NOMADIK=y
-CONFIG_NOMADIK_NHK8815=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="Nomadik> "
diff --git a/configs/nhk8815_onenand_defconfig b/configs/nhk8815_onenand_defconfig
deleted file mode 100644 (file)
index c01559d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_NOMADIK=y
-CONFIG_NOMADIK_NHK8815=y
-CONFIG_SYS_EXTRA_OPTIONS="BOOT_ONENAND"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
index 6cbc0e3089a42408398a271ab22fd63c2ded97c9..2044fc9d151fab8224fab02e4cb71e08e07b1b7f 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_NITROGEN6X=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg,MX6DL,DDR_MB=2048"
 # CONFIG_CMD_IMLS is not set
index 055266ca36c9e5efbd78ae162f666ecf9ccd935f..c90c8c9762929a885e70691ad7b38a50020f7af5 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_NITROGEN6X=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024"
 # CONFIG_CMD_IMLS is not set
index 7b5ccc7ab915d0e4cb63572b795200b8812f2cd2..90ef17eeebe771ff53702e836c6fcc40f4afbd00 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_NITROGEN6X=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048"
 # CONFIG_CMD_IMLS is not set
index 5cc245ed01c01d01bcbab8375f4c8dc2b3056f9d..798467ece01b4908fa79ce5e47c5aba822920c96 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_NITROGEN6X=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024"
 # CONFIG_CMD_IMLS is not set
index b613a491c227c8274080b2f0e8b5c2fcf80d4021..e8eca1b016211a49f4bec21f51beb2a8b2b2fcca 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_NITROGEN6X=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024"
 # CONFIG_CMD_IMLS is not set
index b7cd09abcc18051a7a9130cab173609f7292b908..d142ebc116342b47fd58d01f84532ffeb4841e58 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_NITROGEN6X=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512"
 # CONFIG_CMD_IMLS is not set
index aca98b724564e493b84df68d16dc64958f949967..60d6658217da11cd4e20c4092be28d5d2e6eb6a0 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_KOSAGI_NOVENA=y
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
index 274e955a37bef53df540bb617469a9541dea2708..6464c379a4dad0f3417d0eb0778134d92f63481f 100644 (file)
@@ -9,16 +9,21 @@ CONFIG_DEFAULT_DEVICE_TREE="tegra124-nyan-big"
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_SPL_DM=y
 CONFIG_SPI_FLASH=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
 CONFIG_CROS_EC_KEYB=y
+CONFIG_DM_TPM=y
+CONFIG_TPM_TIS_I2C=y
 CONFIG_TEGRA114_SPI=y
 CONFIG_DISPLAY_PORT=y
 CONFIG_VIDEO_TEGRA124=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_TPM=y
 CONFIG_USE_PRIVATE_LIBGCC=y
 CONFIG_SYS_PROMPT="Tegra124 (Nyan-big) # "
diff --git a/configs/omap3_mvblx_defconfig b/configs/omap3_mvblx_defconfig
deleted file mode 100644 (file)
index fb12a70..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_OMAP34XX=y
-CONFIG_TARGET_OMAP3_MVBLX=y
-CONFIG_AUTOBOOT_KEYED=y
-CONFIG_AUTOBOOT_STOP_STR="S"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="mvblx # "
diff --git a/configs/omap3_sdp3430_defconfig b/configs/omap3_sdp3430_defconfig
deleted file mode 100644 (file)
index 2e46091..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_OMAP34XX=y
-CONFIG_TARGET_OMAP3_SDP3430=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="OMAP34XX SDP # "
diff --git a/configs/openrd_base_defconfig b/configs/openrd_base_defconfig
deleted file mode 100644 (file)
index 1686139..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_KIRKWOOD=y
-CONFIG_TARGET_OPENRD=y
-CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_BASE"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/openrd_client_defconfig b/configs/openrd_client_defconfig
deleted file mode 100644 (file)
index c342315..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_KIRKWOOD=y
-CONFIG_TARGET_OPENRD=y
-CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_CLIENT"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/openrd_ultimate_defconfig b/configs/openrd_ultimate_defconfig
deleted file mode 100644 (file)
index 530ba4d..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_KIRKWOOD=y
-CONFIG_TARGET_OPENRD=y
-CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_ULTIMATE"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
index ea789345ff6f7dcd00fedd38aff2577534306903..17022a43dee873e1b6fd5d3c0c1b1c7b6e647344 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_OT1200=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/bachmann/ot1200/mx6q_4x_mt41j128.cfg,MX6Q"
 # CONFIG_CMD_IMLS is not set
index 3c7346b5ce4a4ba6a4e234d3487e231a63426a78..dbbea35cf0945126d8da88ab1d423a14cfb7ba61 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_OT1200=y
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
diff --git a/configs/otc570_dataflash_defconfig b/configs/otc570_dataflash_defconfig
deleted file mode 100644 (file)
index c5ff59a..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_OTC570=y
-CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/otc570_defconfig b/configs/otc570_defconfig
deleted file mode 100644 (file)
index 8cc55ee..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_OTC570=y
-CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_NANDFLASH"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/p3p440_defconfig b/configs/p3p440_defconfig
deleted file mode 100644 (file)
index 84e683b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_P3P440=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/palmld_defconfig b/configs/palmld_defconfig
deleted file mode 100644 (file)
index 354071a..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_PALMLD=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
-CONFIG_SYS_PROMPT="$ "
diff --git a/configs/palmtc_defconfig b/configs/palmtc_defconfig
deleted file mode 100644 (file)
index de617e1..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_PALMTC=y
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
-CONFIG_SYS_PROMPT="$ "
diff --git a/configs/palmtreo680_defconfig b/configs/palmtreo680_defconfig
deleted file mode 100644 (file)
index b56191d..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_PALMTREO680=y
-CONFIG_SPL=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SOURCE is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
diff --git a/configs/pcs440ep_defconfig b/configs/pcs440ep_defconfig
deleted file mode 100644 (file)
index b01f63a..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_PCS440EP=y
-# CONFIG_CMD_SETEXPR is not set
index 323a2d38b3de6772eac6383a6233b3e6176b07ec..56a518556c67bb06ca13faff3cc1b03366ca8f40 100644 (file)
@@ -7,11 +7,15 @@ CONFIG_SPL=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_SPI_FLASH=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
 CONFIG_CROS_EC_KEYB=y
+CONFIG_DM_TPM=y
+CONFIG_TPM_TIS_I2C=y
 CONFIG_DM_I2C=y
 CONFIG_DM_I2C_COMPAT=y
 CONFIG_I2C_CROS_EC_TUNNEL=y
@@ -30,5 +34,6 @@ CONFIG_SOUND_MAX98095=y
 CONFIG_SOUND_WM8994=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
 CONFIG_SYS_PROMPT="Peach-Pi # "
index 6a082968b9ee83e77008327784985c13a2fa7ebb..1934bf38a1b175f846b827fb3d28428c4a2647f5 100644 (file)
@@ -7,11 +7,15 @@ CONFIG_SPL=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_SPI_FLASH=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
 CONFIG_CROS_EC_KEYB=y
+CONFIG_DM_TPM=y
+CONFIG_TPM_TIS_I2C=y
 CONFIG_DM_I2C=y
 CONFIG_DM_I2C_COMPAT=y
 CONFIG_I2C_CROS_EC_TUNNEL=y
@@ -30,5 +34,6 @@ CONFIG_SOUND_MAX98095=y
 CONFIG_SOUND_WM8994=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
 CONFIG_SYS_PROMPT="Peach-Pit # "
index 64da7c449b219a456b299b369cff5d19da48f9d6..2e4e879b74063cc1de9c75c84558ffd37b2c2feb 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_PLATINUM_PICON=y
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6DL"
index 67957c38305614442e57aea4a968c5c50f8e3214..0c8e32f57746a56409d3d7e3fea24c3c9e1fd6e3 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_PLATINUM_TITANIUM=y
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
diff --git a/configs/polaris_defconfig b/configs/polaris_defconfig
deleted file mode 100644 (file)
index e209566..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_TRIZEPSIV=y
-CONFIG_SYS_EXTRA_OPTIONS="POLARIS"
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/portuxg20_defconfig b/configs/portuxg20_defconfig
deleted file mode 100644 (file)
index 1e8344f..0000000
+++ /dev/null
@@ -1,10 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_STAMP9G20=y
-CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,PORTUXG20"
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/pov_protab2_ips9_defconfig b/configs/pov_protab2_ips9_defconfig
new file mode 100644 (file)
index 0000000..3107f31
--- /dev/null
@@ -0,0 +1,21 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN4I=y
+CONFIG_DRAM_CLK=432
+CONFIG_USB0_VBUS_PIN="PB9"
+CONFIG_USB0_VBUS_DET="PH5"
+CONFIG_USB0_ID_DET="PH4"
+CONFIG_VIDEO_LCD_MODE="x:1024,y:768,depth:18,pclk_khz:100000,le:480,ri:260,up:6,lo:16,hs:320,vs:10,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_DCLK_PHASE=0
+CONFIG_VIDEO_LCD_PANEL_LVDS=y
+CONFIG_VIDEO_LCD_POWER="PH8"
+CONFIG_VIDEO_LCD_BL_EN="PH7"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
+CONFIG_DEFAULT_DEVICE_TREE="sun4i-a10-pov-protab2-ips9"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="AXP209_POWER"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+CONFIG_USB_MUSB_HOST=y
diff --git a/configs/pxa255_idp_defconfig b/configs/pxa255_idp_defconfig
deleted file mode 100644 (file)
index c7be4e9..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_PXA255_IDP=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/q8_a13_tablet_defconfig b/configs/q8_a13_tablet_defconfig
new file mode 100644 (file)
index 0000000..2c61f51
--- /dev/null
@@ -0,0 +1,22 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SUNXI=y
+CONFIG_MACH_SUN5I=y
+CONFIG_DRAM_CLK=384
+CONFIG_MMC0_CD_PIN="PG0"
+CONFIG_USB0_VBUS_PIN="PG12"
+CONFIG_USB0_VBUS_DET="PG1"
+CONFIG_USB0_ID_DET="PG2"
+CONFIG_AXP_GPIO=y
+# CONFIG_VIDEO_HDMI is not set
+CONFIG_VIDEO_LCD_MODE="x:800,y:480,depth:18,pclk_khz:33000,le:87,ri:40,up:31,lo:13,hs:1,vs:1,sync:3,vmode:0"
+CONFIG_VIDEO_LCD_POWER="AXP0-0"
+CONFIG_VIDEO_LCD_BL_EN="AXP0-1"
+CONFIG_VIDEO_LCD_BL_PWM="PB2"
+CONFIG_DEFAULT_DEVICE_TREE="sun5i-a13-q8-tablet"
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_SPL=y
+CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=2,AXP209_POWER"
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+# CONFIG_CMD_FPGA is not set
+CONFIG_USB_MUSB_HOST=y
diff --git a/configs/qong_defconfig b/configs/qong_defconfig
deleted file mode 100644 (file)
index fddd836..0000000
+++ /dev/null
@@ -1,2 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_QONG=y
diff --git a/configs/rd6281a_defconfig b/configs/rd6281a_defconfig
deleted file mode 100644 (file)
index 8fe8594..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_KIRKWOOD=y
-CONFIG_TARGET_RD6281A=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
index fd18e2de95a611e478cb5db8066c970184e0a3b8..859b14323e51de514501532b0701834a8a8fb520 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_EMBESTMX6BOARDS=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024,ENV_IS_IN_MMC"
 # CONFIG_CMD_IMLS is not set
index 85ff95df79622cf756a306fda7967cfcddb72089..e9e1597f9acfb247f9141983020b053d630ef3db 100644 (file)
@@ -11,6 +11,8 @@ CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_HOSTFILE=y
 CONFIG_CLK=y
@@ -30,9 +32,13 @@ CONFIG_CROS_EC_KEYB=y
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
 CONFIG_SANDBOX_SERIAL=y
+CONFIG_DM_TPM=y
 CONFIG_TPM_TIS_SANDBOX=y
 CONFIG_SYS_I2C_SANDBOX=y
 CONFIG_SANDBOX_SPI=y
+CONFIG_PINCTRL=y
+CONFIG_PINCONF=y
+CONFIG_PINCTRL_SANDBOX=y
 CONFIG_SANDBOX_GPIO=y
 CONFIG_DM_PMIC=y
 CONFIG_DM_PMIC_SANDBOX=y
@@ -49,6 +55,7 @@ CONFIG_DM_MMC=y
 CONFIG_DM_RTC=y
 CONFIG_SYS_VSNPRINTF=y
 CONFIG_CMD_DHRYSTONE=y
+CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
 CONFIG_UNIT_TEST=y
 CONFIG_UT_TIME=y
diff --git a/configs/sbc405_defconfig b/configs/sbc405_defconfig
deleted file mode 100644 (file)
index 0bc0ab2..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_SBC405=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/scb9328_defconfig b/configs/scb9328_defconfig
deleted file mode 100644 (file)
index c9c5034..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_SCB9328=y
-# CONFIG_CMD_CONSOLE is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_SOURCE is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="scb9328> "
index f5decd5c69f02ff6681bcfd3c06b23b08be15d68..32c7c5deab076e8531ef6fc85fdc9cacb154ee8d 100644 (file)
@@ -8,6 +8,8 @@ CONFIG_SPL=y
 CONFIG_CMD_SOUND=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_SPI_FLASH=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
@@ -17,6 +19,8 @@ CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_S5P=y
 CONFIG_DEBUG_UART_BASE=0x12c30000
 CONFIG_DEBUG_UART_CLOCK=100000000
+CONFIG_DM_TPM=y
+CONFIG_TPM_TIS_I2C=y
 CONFIG_DM_I2C=y
 CONFIG_DM_I2C_COMPAT=y
 CONFIG_I2C_CROS_EC_LDO=y
@@ -41,4 +45,5 @@ CONFIG_SOUND_MAX98095=y
 CONFIG_SOUND_WM8994=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
diff --git a/configs/snowball_defconfig b/configs/snowball_defconfig
deleted file mode 100644 (file)
index e73bc48..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_SNOWBALL=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_EDITENV is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_ITEST is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
-CONFIG_SYS_PROMPT="U8500 $ "
diff --git a/configs/socfpga_de0_nano_soc_defconfig b/configs/socfpga_de0_nano_soc_defconfig
new file mode 100644 (file)
index 0000000..2b0d510
--- /dev/null
@@ -0,0 +1,20 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SOCFPGA=y
+CONFIG_TARGET_SOCFPGA_CYCLONE5=y
+CONFIG_TARGET_SOCFPGA_TERASIC_DE0_NANO=y
+CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_de0_nano_soc"
+CONFIG_SPL=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_OF_CONTROL=y
+CONFIG_DM_ETH=y
+CONFIG_NETDEVICES=y
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_DM_GPIO=y
+CONFIG_DWAPB_GPIO=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_SPL_SIMPLE_BUS=y
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_STACK_R_ADDR=0x00800000
+CONFIG_SYS_MALLOC_F_LEN=0x2000
diff --git a/configs/socfpga_mcvevk_defconfig b/configs/socfpga_mcvevk_defconfig
new file mode 100644 (file)
index 0000000..36ec320
--- /dev/null
@@ -0,0 +1,21 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SOCFPGA=y
+CONFIG_TARGET_SOCFPGA_CYCLONE5=y
+CONFIG_TARGET_SOCFPGA_DENX_MCVEVK=y
+CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_mcvevk"
+CONFIG_SPL=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_OF_CONTROL=y
+CONFIG_DM_ETH=y
+CONFIG_NETDEVICES=y
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_DM_GPIO=y
+CONFIG_DWAPB_GPIO=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_DM_SEQ_ALIAS=y
+CONFIG_SPL_SIMPLE_BUS=y
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_STACK_R_ADDR=0x00800000
+CONFIG_SYS_MALLOC_F_LEN=0x2000
diff --git a/configs/socfpga_sockit_defconfig b/configs/socfpga_sockit_defconfig
new file mode 100644 (file)
index 0000000..01723c5
--- /dev/null
@@ -0,0 +1,26 @@
+CONFIG_ARM=y
+CONFIG_ARCH_SOCFPGA=y
+CONFIG_TARGET_SOCFPGA_CYCLONE5=y
+CONFIG_TARGET_SOCFPGA_TERASIC_SOCKIT=y
+CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_sockit"
+CONFIG_SPL=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_OF_CONTROL=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_USE_4K_SECTORS=n
+CONFIG_DM_ETH=y
+CONFIG_NETDEVICES=y
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_DM_GPIO=y
+CONFIG_DWAPB_GPIO=y
+CONFIG_SPL_DM=y
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_DM_SEQ_ALIAS=y
+CONFIG_SPL_SIMPLE_BUS=y
+CONFIG_DM_SPI=y
+CONFIG_DM_SPI_FLASH=y
+CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_STACK_R_ADDR=0x00800000
+CONFIG_SYS_MALLOC_F_LEN=0x2000
index f1d9a58ad159d3f6caf75672636338b967743dd0..b20bfed0964b02458c870f446957670330bbce52 100644 (file)
@@ -8,6 +8,8 @@ CONFIG_SPL=y
 CONFIG_CMD_SOUND=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
+CONFIG_CMD_TPM=y
+CONFIG_CMD_TPM_TEST=y
 CONFIG_SPI_FLASH=y
 CONFIG_CMD_CROS_EC=y
 CONFIG_CROS_EC=y
@@ -17,6 +19,8 @@ CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_S5P=y
 CONFIG_DEBUG_UART_BASE=0x12c30000
 CONFIG_DEBUG_UART_CLOCK=100000000
+CONFIG_DM_TPM=y
+CONFIG_TPM_TIS_I2C=y
 CONFIG_DM_I2C=y
 CONFIG_DM_I2C_COMPAT=y
 CONFIG_I2C_CROS_EC_LDO=y
@@ -40,4 +44,5 @@ CONFIG_SOUND_MAX98095=y
 CONFIG_SOUND_WM8994=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_TPM=y
 CONFIG_ERRNO_STR=y
diff --git a/configs/stamp9g20_defconfig b/configs/stamp9g20_defconfig
deleted file mode 100644 (file)
index 40d6232..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_STAMP9G20=y
-CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20"
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="U-Boot> "
diff --git a/configs/stxgp3_defconfig b/configs/stxgp3_defconfig
deleted file mode 100644 (file)
index 816092d..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC85xx=y
-CONFIG_TARGET_STXGP3=y
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="GPPP=> "
diff --git a/configs/stxssa_4M_defconfig b/configs/stxssa_4M_defconfig
deleted file mode 100644 (file)
index 7547906..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC85xx=y
-CONFIG_TARGET_STXSSA=y
-CONFIG_SYS_EXTRA_OPTIONS="STXSSA_4M"
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/stxssa_defconfig b/configs/stxssa_defconfig
deleted file mode 100644 (file)
index ec812c1..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_PPC=y
-CONFIG_MPC85xx=y
-CONFIG_TARGET_STXSSA=y
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="SSA=> "
index 745d32edd53eb7b720080a05254588c9192f4eb2..822aec37edf700fb9300052cf1fc937576eb91bd 100644 (file)
@@ -1,6 +1,6 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_TBS2910=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q"
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_DM=y
index d286fd61fe772a4778bacc5b522e85f9f7058463..de3c78dc38a0fd4a1b4fb9ecda65044ca70d9d52 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_TITANIUM=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/barco/titanium/imximage.cfg"
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/tk71_defconfig b/configs/tk71_defconfig
deleted file mode 100644 (file)
index 5e2a0b8..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_KIRKWOOD=y
-CONFIG_TARGET_TK71=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
index c9a304d8c01a97c5af3d6a896f1128a612707015..e30b130c14e75799bae1b83467797b9b4a5ddacb 100644 (file)
@@ -7,5 +7,4 @@ CONFIG_AUTOBOOT_KEYED=y
 CONFIG_AUTOBOOT_PROMPT="Enter password in %d seconds to stop autoboot\n"
 CONFIG_AUTOBOOT_ENCRYPTION=y
 CONFIG_AUTOBOOT_STOP_STR_SHA256="36a9e7f1c95b82ffb99743e0c5c4ce95d83c9a430aac59f84ef3cbfab6145068"
-CONFIG_SPI_FLASH=y
 CONFIG_PCA9551_LED=y
diff --git a/configs/trizepsiv_defconfig b/configs/trizepsiv_defconfig
deleted file mode 100644 (file)
index 1887983..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_TRIZEPSIV=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/ts4800_defconfig b/configs/ts4800_defconfig
new file mode 100644 (file)
index 0000000..a2fa541
--- /dev/null
@@ -0,0 +1,4 @@
+CONFIG_ARM=y
+CONFIG_TARGET_TS4800=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/tt01_defconfig b/configs/tt01_defconfig
deleted file mode 100644 (file)
index 08f9f7b..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_TT01=y
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="TT01> "
diff --git a/configs/tx25_defconfig b/configs/tx25_defconfig
deleted file mode 100644 (file)
index b752414..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_TX25=y
-CONFIG_SPL=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/u8500_href_defconfig b/configs/u8500_href_defconfig
deleted file mode 100644 (file)
index 0aebc78..0000000
+++ /dev/null
@@ -1,13 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_U8500_HREF=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_EDITENV is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_ITEST is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
-CONFIG_SYS_PROMPT="U8500 $ "
diff --git a/configs/udoo_defconfig b/configs/udoo_defconfig
new file mode 100644 (file)
index 0000000..e4f1d8d
--- /dev/null
@@ -0,0 +1,7 @@
+CONFIG_SPL=y
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_DM=y
+CONFIG_DM_THERMAL=y
+CONFIG_TARGET_UDOO=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
diff --git a/configs/udoo_quad_defconfig b/configs/udoo_quad_defconfig
deleted file mode 100644 (file)
index 42c21c6..0000000
+++ /dev/null
@@ -1,5 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_UDOO=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/udoo/udoo.cfg,MX6Q,DDR_MB=1024"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
diff --git a/configs/versatileab_defconfig b/configs/versatileab_defconfig
deleted file mode 100644 (file)
index 3dc7d19..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-CONFIG_ARM=y
-CONFIG_SYS_EXTRA_OPTIONS="ARCH_VERSATILE_AB"
-# CONFIG_CMD_CONSOLE is not set
-# CONFIG_CMD_BOOTD is not set
-# CONFIG_CMD_RUN is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_EDITENV is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_LOADB is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_ECHO is not set
-# CONFIG_CMD_ITEST is not set
-# CONFIG_CMD_SOURCE is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NFS is not set
-# CONFIG_CMD_MISC is not set
diff --git a/configs/versatilepb_defconfig b/configs/versatilepb_defconfig
deleted file mode 100644 (file)
index 9fe83b9..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-CONFIG_ARM=y
-CONFIG_SYS_EXTRA_OPTIONS="ARCH_VERSATILE_PB"
-# CONFIG_CMD_CONSOLE is not set
-# CONFIG_CMD_BOOTD is not set
-# CONFIG_CMD_RUN is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_EDITENV is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_LOADB is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_ECHO is not set
-# CONFIG_CMD_ITEST is not set
-# CONFIG_CMD_SOURCE is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NFS is not set
-# CONFIG_CMD_MISC is not set
diff --git a/configs/versatileqemu_defconfig b/configs/versatileqemu_defconfig
deleted file mode 100644 (file)
index 9ddef4d..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-CONFIG_ARM=y
-CONFIG_SYS_EXTRA_OPTIONS="ARCH_VERSATILE_QEMU,ARCH_VERSATILE_PB"
-# CONFIG_CMD_CONSOLE is not set
-# CONFIG_CMD_BOOTD is not set
-# CONFIG_CMD_RUN is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_EDITENV is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-# CONFIG_CMD_LOADB is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_ECHO is not set
-# CONFIG_CMD_ITEST is not set
-# CONFIG_CMD_SOURCE is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NFS is not set
-# CONFIG_CMD_MISC is not set
diff --git a/configs/vision2_defconfig b/configs/vision2_defconfig
deleted file mode 100644 (file)
index 962dc5b..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_VISION2=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/ttcontrol/vision2/imximage_hynix.cfg"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SPI_FLASH=y
-CONFIG_SYS_PROMPT="Vision II U-boot > "
diff --git a/configs/vl_ma2sc_defconfig b/configs/vl_ma2sc_defconfig
deleted file mode 100644 (file)
index c908c6e..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_VL_MA2SC=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="U-Boot> "
diff --git a/configs/vl_ma2sc_ram_defconfig b/configs/vl_ma2sc_ram_defconfig
deleted file mode 100644 (file)
index 43a576f..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_AT91=y
-CONFIG_TARGET_VL_MA2SC=y
-CONFIG_SYS_EXTRA_OPTIONS="RAMLOAD"
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/vpac270_nor_128_defconfig b/configs/vpac270_nor_128_defconfig
deleted file mode 100644 (file)
index 1d11653..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_VPAC270=y
-CONFIG_SYS_EXTRA_OPTIONS="NOR,RAM_128M"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="$ "
diff --git a/configs/vpac270_nor_256_defconfig b/configs/vpac270_nor_256_defconfig
deleted file mode 100644 (file)
index bcd1006..0000000
+++ /dev/null
@@ -1,6 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_VPAC270=y
-CONFIG_SYS_EXTRA_OPTIONS="NOR,RAM_256M"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="$ "
diff --git a/configs/vpac270_ond_256_defconfig b/configs/vpac270_ond_256_defconfig
deleted file mode 100644 (file)
index d989819..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_VPAC270=y
-CONFIG_SPL=y
-CONFIG_SYS_EXTRA_OPTIONS="ONENAND,RAM_256M"
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_SYS_PROMPT="$ "
index 62666ffca79b6a698f7d66e1c04f60cfe9500d73..595e4be53dab5eff4565b1a8e3f87432d6767a71 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_WANDBOARD=y
 CONFIG_SPL=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
index dacb4320da543946201e10afd8bd13b50210c8b7..423f82037a5aeed3985840e1794856d01c07b297 100644 (file)
@@ -1,4 +1,5 @@
 CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
 CONFIG_TARGET_WARP=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL"
 # CONFIG_CMD_IMLS is not set
diff --git a/configs/xaeniax_defconfig b/configs/xaeniax_defconfig
deleted file mode 100644 (file)
index 8634cc7..0000000
+++ /dev/null
@@ -1,3 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_XAENIAX=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/zeus_defconfig b/configs/zeus_defconfig
deleted file mode 100644 (file)
index da2ff3c..0000000
+++ /dev/null
@@ -1,4 +0,0 @@
-CONFIG_PPC=y
-CONFIG_4xx=y
-CONFIG_TARGET_ZEUS=y
-# CONFIG_CMD_SETEXPR is not set
diff --git a/configs/zipitz2_defconfig b/configs/zipitz2_defconfig
deleted file mode 100644 (file)
index 2977ccc..0000000
+++ /dev/null
@@ -1,7 +0,0 @@
-CONFIG_ARM=y
-CONFIG_TARGET_ZIPITZ2=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_SETEXPR is not set
-# CONFIG_CMD_NET is not set
-# CONFIG_CMD_NFS is not set
-CONFIG_SYS_PROMPT="$ "
index cf1a36ebb826699e9b391f6d68a9fad0c5806430..89263d38aaa03c609f4aa1ec3da83913832dee3d 100644 (file)
@@ -17,6 +17,7 @@
 #include <common.h>
 #include <command.h>
 #include <ide.h>
+#include <memalign.h>
 #include "part_dos.h"
 
 #ifdef HAVE_BLOCK_DEVICE
index 5856f9321118da1be38015d4bce89e8e498f1683..15627f29e8bd4ad33ba1688ad846d131e9c0cb8c 100644 (file)
@@ -16,6 +16,7 @@
 #include <ide.h>
 #include <inttypes.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <part_efi.h>
 #include <linux/ctype.h>
 
index cbcb995c48c715b67ff4ab33826113c3f3d8daac..099e0a0035be07303ac6b69a646ab59ba6260819 100644 (file)
@@ -15,6 +15,7 @@
 
 #include <common.h>
 #include <command.h>
+#include <memalign.h>
 #include <ide.h>
 #include "part_mac.h"
 
diff --git a/doc/README.dfutftp b/doc/README.dfutftp
new file mode 100644 (file)
index 0000000..0257f0d
--- /dev/null
@@ -0,0 +1,114 @@
+Device Firmware Upgrade (DFU) - extension to use TFTP
+=====================================================
+
+Why?
+----
+
+* Update TFTP (CONFIG_UPDATE_TFTP) only supports writing
+code to NAND memory via TFTP.
+* DFU supports writing data to the variety of mediums (NAND,
+eMMC, SD, partitions, RAM, etc) via USB.
+
+Combination of both solves their shortcomings!
+
+
+Overview
+--------
+
+This document briefly describes how to use DFU for
+upgrading firmware (e.g. kernel, u-boot, rootfs, etc.)
+via TFTP protocol.
+
+By using Ethernet (TFTP protocol to be precise) it is
+possible to overcome the major problem of USB based DFU -
+the relatively low transfer speed for large files.
+This was caused by DFU standard, which imposed utilization
+of only EP0 for transfer. By using Ethernet we can circumvent
+this shortcoming.
+
+Beagle Bone Black rev. C (BBB) powered by TI's am335x CPU has
+been used as a demo board.
+
+To utilize this feature, one needs to first enable support
+for USB based DFU (CONFIG_DFU_*) and DFU TFTP update
+(CONFIG_DFU_TFTP) described in ./doc/README.update.
+
+The "dfu" command has been extended to support transfer via TFTP - one
+needs to type for example "dfu tftp 0 mmc 0"
+
+This feature does not depend on "fitupd" command enabled.
+
+As of this writing (SHA1:8d77576371381ade83de475bb639949b44941e8c v2015.10-rc2)
+the update.c code is not enabled (CONFIG_UPDATE_TFTP) by any board in the
+contemporary u-boot tree.
+
+
+Environment variables
+---------------------
+
+The "dfu tftp" command can be used in the "preboot" environment variable
+(when it is enabled by defining CONFIG_PREBOOT).
+This is the preferable way of using this command in the early boot stage
+as opposed to legacy update_tftp() function invocation.
+
+
+Beagle Bone Black (BBB) setup
+-----------------------------
+
+1. Setup tftp env variables:
+   *  select desired eth device - 'ethact' variable ["ethact=cpsw"]
+      (use "bdinfo" to check current setting)
+   *  setup "serverip" and "ipaddr" variables
+   *  set "loadaddr" as a fixed buffer where incoming data is placed
+      ["loadaddr=0x81000000"]
+
+#########
+# BONUS #
+#########
+It is possible to use USB interface to emulate ETH connection by setting
+"ethact=usb_ether". In this way one can have very fast DFU transfer via USB.
+
+For 33MiB test image the transfer rate was 1MiB/s for ETH over USB and 200KiB/s
+for pure DFU USB transfer.
+
+2. Setup update_tftp variables:
+   *  set "updatefile" - the file name to be downloaded via TFTP (stored on
+      the HOST at e.g. /srv/tftp)
+
+3. If required, to update firmware on boot, put the "dfu tftp 0 mmc 0" in the
+    "preboot" env variable. Otherwise use this command from u-boot prompt.
+
+4. Inspect "dfu" specific variables:
+   * "dfu_alt_info" - information about available DFU entities
+   * "dfu_bufsiz"   - variable to set buffer size [in bytes] - when it is not
+                   possible to set large enough default buffer (8 MiB @ BBB)
+
+
+
+FIT image format for download
+-----------------------------
+
+To create FIT image for download one should follow the update tftp README file
+(./doc/README.update) with one notable difference:
+
+The original snippet of ./doc/uImage.FIT/update_uboot.its
+
+       images {
+               update@1 {
+                       description = "U-Boot binary";
+
+should look like
+
+       images {
+               u-boot.bin@1 {
+                       description = "U-Boot binary";
+
+where "u-boot.bin" is the DFU entity name to be stored.
+
+
+
+To do
+-----
+
+* Extend dfu-util command to support TFTP based transfers
+* Upload support (via TFTP)
index 72a1d595f5fe520bc252f5a71e0afd00a732f606..30e05da57455ba606e03a1b05fb36c7b151b08e0 100644 (file)
@@ -1,7 +1,8 @@
 U-boot config options used in fec_mxc.c
 
 CONFIG_FEC_MXC
-       Selects fec_mxc.c to be compiled into u-boot.
+       Selects fec_mxc.c to be compiled into u-boot. Can read out the
+       ethaddr from the SoC eFuses (see below).
 
 CONFIG_MII
        Must be defined if CONFIG_FEC_MXC is defined.
@@ -25,3 +26,9 @@ CONFIG_FEC_MXC_NO_ANEG
 CONFIG_FEC_MXC_PHYADDR
        Optional, selects the exact phy address that should be connected
        and function fecmxc_initialize will try to initialize it.
+
+
+Reading the ethaddr from the SoC eFuses:
+if CONFIG_FEC_MXC is defined and the U-Boot environment does not contain the
+ethaddr variable, then its value gets read from the corresponding eFuses in
+the SoC. See the README files of the specific SoC for details.
index c5312b69d3598907d803b2dae71157094389da83..ea0e144cedcf2074a4752e8d1f03a7b9681ae78b 100644 (file)
@@ -26,3 +26,15 @@ i.MX5x SoCs.
 
 2.1 MAC Address: It is stored in the words 9 to 14 of fuse bank 1, using the
     natural MAC byte order (i.e. MSB first).
+
+    This is an example how to program an example MAC address 01:23:45:67:89:ab
+    into the eFuses. Assure that the programming voltage is available and then
+    execute:
+
+    => fuse prog -y 1 9 01 23 45 67 89 ab
+
+    After programming a MAC address, consider locking the MAC fuses. This is
+    done by programming the MAC_ADDR_LOCK fuse, which is bit 4 of word 0 in
+    bank 1:
+
+    => fuse prog -y 1 0 10
index a62c3574054d5a9cb36d918d3c35766967e81d81..e09ac032c0f5675930fa90fe9f00a47a8c1112b9 100644 (file)
@@ -68,10 +68,6 @@ make
 make cm_t35_config
 make
 
-* BlueLYNX-X:
-
-make omap3_mvblx_config
-make
 
 Custom commands
 ===============
index f67605cf9994fab860c4858ef01d6aa94c8319a7..bd175eb22dffd45cb0bfa9e5379932c9322ad13e 100644 (file)
@@ -155,6 +155,13 @@ fdt <path>     - if this label is chosen, use tftp to retrieve the fdt blob
                      the fdt_addr_r environment variable, and that address will
                      be passed to bootm.
 
+fdtdir <path>      - if this label is chosen, use tftp to retrieve a fdt blob
+                     relative to <path>. If the fdtfile environment variable
+                     is set, <path>/<fdtfile> is retrieved. Otherwise, the
+                     filename is generated from the soc and board environment
+                     variables, i.e. <path>/<soc>-<board>.dtb is retrieved.
+                     If the fdt command is specified, fdtdir is ignored.
+
 localboot <flag>    - Run the command defined by "localcmd" in the environment.
                      <flag> is ignored and is only here to match the syntax of
                      PXELINUX config files.
@@ -163,7 +170,7 @@ Example
 -------
 Here's a couple of example files to show how this works.
 
-------------/tftpboot/pxelinux.cfg/menus/linux.list----------
+------------/tftpboot/pxelinux.cfg/menus/base.menu-----------
 menu title Linux selections
 
 # This is the default label
diff --git a/doc/README.rockchip b/doc/README.rockchip
new file mode 100644 (file)
index 0000000..87ce9d2
--- /dev/null
@@ -0,0 +1,247 @@
+#
+# Copyright (C) 2015 Google. Inc
+# Written by Simon Glass <sjg@chromium.org>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+U-Boot on Rockchip
+==================
+
+There are several repositories available with versions of U-Boot that support
+many Rockchip devices [1] [2].
+
+The current mainline support is experimental only and is not useful for
+anything. It should provide a base on which to build.
+
+So far only support for the RK3288 is provided.
+
+
+Prerequisites
+=============
+
+You will need:
+
+   - Firefly RK3288 baord
+   - Power connection to 5V using the supplied micro-USB power cable
+   - Separate USB serial cable attached to your computer and the Firefly
+        (connect to the micro-USB connector below the logo)
+   - rkflashtool [3]
+   - openssl (sudo apt-get install openssl)
+   - Serial UART connection [4]
+   - Suitable ARM cross compiler, e.g.:
+        sudo apt-get install gcc-4.7-arm-linux-gnueabi
+
+
+Building
+========
+
+At present three RK3288 boards are supported:
+
+   - Firefly RK3288 - use firefly-rk3288 configuration
+   - Radxa Rock 2 - also uses firefly-rk3288 configuration
+   - Haier Chromebook - use chromebook_jerry configuration
+
+For example:
+
+   CROSS_COMPILE=arm-linux-gnueabi- make O=firefly firefly-rk3288_defconfig all
+
+(or you can use another cross compiler if you prefer)
+
+Note that the Radxa Rock 2 uses the Firefly configuration for now as
+device tree files are not yet available for the Rock 2. Clearly the two
+have hardware differences, so this approach will break down as more drivers
+are added.
+
+
+Writing to the board with USB
+=============================
+
+For USB to work you must get your board into ROM boot mode, either by erasing
+your MMC or (perhaps) holding the recovery button when you boot the board.
+To erase your MMC, you can boot into Linux and type (as root)
+
+   dd if=/dev/zero of=/dev/mmcblk0 bs=1M
+
+Connect your board's OTG port to your computer.
+
+To create a suitable image and write it to the board:
+
+   ./firefly-rk3288/tools/mkimage -T rkimage -d \
+       ./firefly-rk3288/spl/u-boot-spl-dtb.bin out && \
+   cat out | openssl rc4 -K 7c4e0304550509072d2c7b38170d1711 | rkflashtool l
+
+If all goes well you should something like:
+
+   U-Boot SPL 2015.07-rc1-00383-ge345740-dirty (Jun 03 2015 - 10:06:49)
+   Card did not respond to voltage select!
+   spl: mmc init failed with error: -17
+   ### ERROR ### Please RESET the board ###
+
+You will need to reset the board before each time you try. Yes, that's all
+it does so far. If support for the Rockchip USB protocol or DFU were added
+in SPL then we could in principle load U-Boot and boot to a prompt from USB
+as several other platforms do. However it does not seem to be possible to
+use the existing boot ROM code from SPL.
+
+
+Booting from an SD card
+=======================
+
+To write an image that boots from an SD card (assumed to be /dev/sdc):
+
+   ./firefly-rk3288/tools/mkimage -T rksd -d \
+       firefly-rk3288/spl/u-boot-spl-dtb.bin out && \
+   sudo dd if=out of=/dev/sdc seek=64 && \
+   sudo dd if=firefly-rk3288/u-boot-dtb.img of=/dev/sdc seek=256
+
+This puts the Rockchip header and SPL image first and then places the U-Boot
+image at block 256 (i.e. 128KB from the start of the SD card). This
+corresponds with this setting in U-Boot:
+
+   #define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR     256
+
+Put this SD (or micro-SD) card into your board and reset it. You should see
+something like:
+
+   U-Boot SPL 2015.07-rc1-00383-ge345740-dirty (Jun 03 2015 - 11:04:40)
+
+
+   U-Boot 2015.07-rc1-00383-ge345740-dirty (Jun 03 2015 - 11:04:40)
+
+   DRAM:  2 GiB
+   MMC:
+   Using default environment
+
+   In:    serial@ff690000
+   Out:   serial@ff690000
+   Err:   serial@ff690000
+   =>
+
+
+Booting from SPI
+================
+
+To write an image that boots from SPI flash (e.g. for the Haier Chromebook):
+
+   ./chromebook_jerry/tools/mkimage -T rkspi -d chromebook_jerry/spl/u-boot-spl-dtb.bin out
+   dd if=spl.bin of=out.bin bs=128K conv=sync
+   cat chromebook_jerry/u-boot-dtb.img out.bin
+   dd if=out.bin of=out.bin.pad bs=4M conv=sync
+
+This converts the SPL image to the required SPI format by adding the Rockchip
+header and skipping every 2KB block. Then the U-Boot image is written at
+offset 128KB and the whole image is padded to 4MB which is the SPI flash size.
+The position of U-Boot is controlled with this setting in U-Boot:
+
+   #define CONFIG_SYS_SPI_U_BOOT_OFFS  (128 << 10)
+
+If you have a Dediprog em100pro connected then you can write the image with:
+
+      sudo em100 -s -c GD25LQ32 -d out.bin.pad -r
+
+When booting you should see something like:
+
+   U-Boot SPL 2015.07-rc2-00215-g9a58220-dirty (Jun 23 2015 - 12:11:32)
+
+
+   U-Boot 2015.07-rc2-00215-g9a58220-dirty (Jun 23 2015 - 12:11:32 -0600)
+
+   Model: Google Jerry
+   DRAM:  2 GiB
+   MMC:
+   Using default environment
+
+   In:    serial@ff690000
+   Out:   serial@ff690000
+   Err:   serial@ff690000
+   =>
+
+
+Future work
+===========
+
+Immediate priorities are:
+
+- GPIO (driver exists but is lightly tested)
+- I2C (driver exists but is non-functional)
+- USB host
+- USB device
+- PMIC and regulators (only ACT8846 is supported at present)
+- LCD and HDMI
+- Run CPU at full speed
+- Ethernet
+- NAND flash
+- Support for other Rockchip parts
+- Boot U-Boot proper over USB OTG (at present only SPL works)
+
+
+Development Notes
+=================
+
+There are plenty of patches in the links below to help with this work.
+
+[1] https://github.com/rkchrome/uboot.git
+[2] https://github.com/linux-rockchip/u-boot-rockchip.git branch u-boot-rk3288
+[3] https://github.com/linux-rockchip/rkflashtool.git
+[4] http://wiki.t-firefly.com/index.php/Firefly-RK3288/Serial_debug/en
+
+rkimage
+-------
+
+rkimage.c produces an SPL image suitable for sending directly to the boot ROM
+over USB OTG. This is a very simple format - just the string RK32 (as 4 bytes)
+followed by u-boot-spl-dtb.bin.
+
+The boot ROM loads image to 0xff704000 which is in the internal SRAM. The SRAM
+starts at 0xff700000 and extends to 0xff718000 where we put the stack.
+
+rksd
+----
+
+rksd.c produces an image consisting of 32KB of empty space, a header and
+u-boot-spl-dtb.bin. The header is defined by 'struct header0_info' although
+most of the fields are unused by U-Boot. We just need to specify the
+signature, a flag and the block offset and size of the SPL image.
+
+The header occupies a single block but we pad it out to 4 blocks. The header
+is encoding using RC4 with the key 7c4e0304550509072d2c7b38170d1711. The SPL
+image can be encoded too but we don't do that.
+
+The maximum size of u-boot-spl-dtb.bin which the boot ROM will read is 32KB,
+or 0x40 blocks. This is a severe and annoying limitation. There may be a way
+around this limitation, since there is plenty of SRAM, but at present the
+board refuses to boot if this limit is exceeded.
+
+The image produced is padded up to a block boundary (512 bytes). It should be
+written to the start of an SD card using dd.
+
+Since this image is set to load U-Boot from the SD card at block offset,
+CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR, dd should be used to write
+u-boot-dtb.img to the SD card at that offset. See above for instructions.
+
+rkspi
+-----
+
+rkspi.c produces an image consisting of a header and u-boot-spl-dtb.bin. The
+resulting image is then spread out so that only the first 2KB of each 4KB
+sector is used. The header is the same as with rksd and the maximum size is
+also 32KB (before spreading). The image should be written to the start of
+SPI flash.
+
+See above for instructions on how to write a SPI image.
+
+
+Device tree and driver model
+----------------------------
+
+Where possible driver model is used to provide a structure to the
+functionality. Device tree is used for configuration. However these have an
+overhead and in SPL with a 32KB size limit some shortcuts have been taken.
+In general all Rockchip drivers should use these features, with SPL-specific
+modifications where required.
+
+
+--
+Simon Glass <sjg@chromium.org>
+24 June 2015
index fb1ed42320f377e7bf68206eb9f8104c1a8a22c8..9cda0bdedcc9e40145b944a265f0492e0030f677 100644 (file)
@@ -12,7 +12,17 @@ The list should be sorted in reverse chronological order.
 
 Board            Arch        CPU            Commit      Removed     Last known maintainer/contact
 =================================================================================================
-cam_enc_4xx      arm         arm926ejs      -           -           Heiko Schocher <hs@denx.de>
+stxgp3           powerpc     mpc85xx        -           -           Dan Malek <dan@embeddedalley.com>
+stxssa           powerpc     mpc85xx        -           -           Dan Malek <dan@embeddedalley.com>
+cmi_mpc5xx       powerpc     mpc5xx         -           -
+zeus             powerpc     ppc4xx         -           -           Stefan Roese <sr@denx.de>
+sbc405           powerpc     ppc4xx         -           -
+pcs440ep         powerpc     ppc4xx         -           -           Stefan Roese <sr@denx.de>
+p3p440           powerpc     ppc4xx         -           -           Stefan Roese <sr@denx.de>
+lwmon5           powerpc     ppc4xx         -           -           Stefan Roese <sr@denx.de>
+csb272/csb472    powerpc     ppc4xx         -           -           Tolunay Orkun <torkun@nextio.com>
+alpr             powerpc     ppc4xx         -           -           Stefan Roese <sr@denx.de>
+cam_enc_4xx      arm         arm926ejs      8d775763    2015-08-20  Heiko Schocher <hs@denx.de>
 atstk1003        avr32       -              e5354b8a    2015-06-10  Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
 atstk1004        avr32       -              e5354b8a    2015-06-10  Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
 atstk1006        avr32       -              e5354b8a    2015-06-10  Haavard Skinnemoen <haavard.skinnemoen@atmel.com>
diff --git a/doc/README.switch_config b/doc/README.switch_config
deleted file mode 100644 (file)
index f890373..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-On the enbw_cmc board is a KSZ8864RMN switch which needs
-configured through spi before working. This is done on
-startup from u-boot through a config file stored at an
-address specified in the "hwconfig" environment variable,
-subcommand "config".
-
-For example on the enbw_cmc board:
-
-hwconfig=switch:lan=on,pwl=off,config=0x60160000
-
-The file has the following structure:
-
-- a comment starts with a '#' or a ';' and ends with a newline
-- The switch needs for its config a reg/value pair, so we
-  have two columns in the file:
-    reg  : contains the register address
-    value: contains a 8 bit register value
-  This 2 columns are seperated through space or tab.
-
-example (minimal configuration on the enbw_cmc board):
-
-;reg    value   comment
-;-----------------------------------------
-0x01   0x00
-0x01   0x01    ; Start Switch with this configuration
index a7f4d9ebe5ddddb317f8ac50c85ee3839e65201b..eab124ce1d920e27aa0d7ef67e36d3cd8b7e6194 100644 (file)
@@ -93,3 +93,10 @@ Example .its files
   An example containing three updates. It can be used to update Linux kernel,
   ramdisk and FDT blob stored in Flash. The procedure for preparing the update
   file is similar to the example above.
+
+TFTP update via DFU
+-------------------
+
+- It is now possible to update firmware (bootloader, kernel, rootfs, etc.) via
+  TFTP by using DFU (Device Firmware Upgrade). More information can be found in
+  ./doc/README.dfutftp documentation entry.
index 59f306b8511cb24a70803e81dbfb9d51d6925016..b66fd6cb8acab0e01d39ee53cd62d391f6332e2b 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_IMX_WATCHDOG
        Available for i.mx31/35/5x/6x to service the watchdog. This is not
        automatically set because some boards (vision2) still need to define
        their own hw_watchdog_reset routine.
+       TODO: vision2 is removed now, so perhaps this can be changed.
 
 CONFIG_XILINX_TB_WATCHDOG
        Available for Xilinx Axi platforms to service timebase watchdog timer.
index 3bab5cf64e62902240a705e32aa3290205cd596f..5f9c46f05d98eb8d30fa5757e47b4253f2da98a4 100644 (file)
@@ -189,7 +189,7 @@ Offset   Description         Controlling config
 001000   me.bin              Set by the descriptor
 500000   <spare>
 700000   u-boot-dtb.bin      CONFIG_SYS_TEXT_BASE
-790000   vga.bin             CONFIG_X86_OPTION_ROM_ADDR
+790000   vga.bin             CONFIG_VGA_BIOS_ADDR
 7c0000   fsp.bin             CONFIG_FSP_ADDR
 7f8000   <spare>             (depends on size of fsp.bin)
 7fe000   Environment         CONFIG_ENV_OFFSET
diff --git a/doc/device-tree-bindings/clock/rockchip,rk3188-cru.txt b/doc/device-tree-bindings/clock/rockchip,rk3188-cru.txt
new file mode 100644 (file)
index 0000000..0c2bf5e
--- /dev/null
@@ -0,0 +1,61 @@
+* Rockchip RK3188/RK3066 Clock and Reset Unit
+
+The RK3188/RK3066 clock controller generates and supplies clock to various
+controllers within the SoC and also implements a reset controller for SoC
+peripherals.
+
+Required Properties:
+
+- compatible: should be "rockchip,rk3188-cru", "rockchip,rk3188a-cru" or
+                       "rockchip,rk3066a-cru"
+- reg: physical base address of the controller and length of memory mapped
+  region.
+- #clock-cells: should be 1.
+- #reset-cells: should be 1.
+
+Optional Properties:
+
+- rockchip,grf: phandle to the syscon managing the "general register files"
+  If missing pll rates are not changable, due to the missing pll lock status.
+
+Each clock is assigned an identifier and client nodes can use this identifier
+to specify the clock which they consume. All available clocks are defined as
+preprocessor macros in the dt-bindings/clock/rk3188-cru.h and
+dt-bindings/clock/rk3066-cru.h headers and can be used in device tree sources.
+Similar macros exist for the reset sources in these files.
+
+External clocks:
+
+There are several clocks that are generated outside the SoC. It is expected
+that they are defined using standard clock bindings with following
+clock-output-names:
+ - "xin24m" - crystal input - required,
+ - "xin32k" - rtc clock - optional,
+ - "xin27m" - 27mhz crystal input on rk3066 - optional,
+ - "ext_hsadc" - external HSADC clock - optional,
+ - "ext_cif0" - external camera clock - optional,
+ - "ext_rmii" - external RMII clock - optional,
+ - "ext_jtag" - externalJTAG clock - optional
+
+Example: Clock controller node:
+
+       cru: cru@20000000 {
+               compatible = "rockchip,rk3188-cru";
+               reg = <0x20000000 0x1000>;
+               rockchip,grf = <&grf>;
+
+               #clock-cells = <1>;
+               #reset-cells = <1>;
+       };
+
+Example: UART controller node that consumes the clock generated by the clock
+  controller:
+
+       uart0: serial@10124000 {
+               compatible = "snps,dw-apb-uart";
+               reg = <0x10124000 0x400>;
+               interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <1>;
+               clocks = <&cru SCLK_UART0>;
+       };
diff --git a/doc/device-tree-bindings/clock/rockchip,rk3288-cru.txt b/doc/device-tree-bindings/clock/rockchip,rk3288-cru.txt
new file mode 100644 (file)
index 0000000..c9fbb76
--- /dev/null
@@ -0,0 +1,61 @@
+* Rockchip RK3288 Clock and Reset Unit
+
+The RK3288 clock controller generates and supplies clock to various
+controllers within the SoC and also implements a reset controller for SoC
+peripherals.
+
+Required Properties:
+
+- compatible: should be "rockchip,rk3288-cru"
+- reg: physical base address of the controller and length of memory mapped
+  region.
+- #clock-cells: should be 1.
+- #reset-cells: should be 1.
+
+Optional Properties:
+
+- rockchip,grf: phandle to the syscon managing the "general register files"
+  If missing pll rates are not changable, due to the missing pll lock status.
+
+Each clock is assigned an identifier and client nodes can use this identifier
+to specify the clock which they consume. All available clocks are defined as
+preprocessor macros in the dt-bindings/clock/rk3288-cru.h headers and can be
+used in device tree sources. Similar macros exist for the reset sources in
+these files.
+
+External clocks:
+
+There are several clocks that are generated outside the SoC. It is expected
+that they are defined using standard clock bindings with following
+clock-output-names:
+ - "xin24m" - crystal input - required,
+ - "xin32k" - rtc clock - optional,
+ - "ext_i2s" - external I2S clock - optional,
+ - "ext_hsadc" - external HSADC clock - optional,
+ - "ext_edp_24m" - external display port clock - optional,
+ - "ext_vip" - external VIP clock - optional,
+ - "ext_isp" - external ISP clock - optional,
+ - "ext_jtag" - external JTAG clock - optional
+
+Example: Clock controller node:
+
+       cru: cru@20000000 {
+               compatible = "rockchip,rk3188-cru";
+               reg = <0x20000000 0x1000>;
+               rockchip,grf = <&grf>;
+
+               #clock-cells = <1>;
+               #reset-cells = <1>;
+       };
+
+Example: UART controller node that consumes the clock generated by the clock
+  controller:
+
+       uart0: serial@10124000 {
+               compatible = "snps,dw-apb-uart";
+               reg = <0x10124000 0x400>;
+               interrupts = <GIC_SPI 34 IRQ_TYPE_LEVEL_HIGH>;
+               reg-shift = <2>;
+               reg-io-width = <1>;
+               clocks = <&cru SCLK_UART0>;
+       };
diff --git a/doc/device-tree-bindings/clock/rockchip,rk3288-dmc.txt b/doc/device-tree-bindings/clock/rockchip,rk3288-dmc.txt
new file mode 100644 (file)
index 0000000..2ca9db7
--- /dev/null
@@ -0,0 +1,155 @@
+Rockchip Dynamic Memory Controller Driver
+Required properties:
+- compatible: "rockchip,rk3288-dmc", "syscon"
+- rockchip,cru: this driver should access cru regs, so need get cru here
+- rockchip,grf: this driver should access grf regs, so need get grf here
+- rockchip,pmu: this driver should access pmu regs, so need get pmu here
+- rockchip,sgrf: this driver should access sgrf regs, so need get sgrf here
+- rockchip,noc: this driver should access noc regs, so need get noc here
+- reg: dynamic ram protocol controller(PCTL) address and phy controller(PHYCTL) address
+- clock: must include clock specifiers corresponding to entries in the clock-names property.
+- clock-output-names: from common clock binding to override the default output clock name
+    Must contain
+      pclk_ddrupctl0: support clock for access protocol controller registers of channel 0
+      pclk_publ0: support clock for access phy controller registers of channel 0
+      pclk_ddrupctl1: support clock for access protocol controller registers of channel 1
+      pclk_publ1: support clock for access phy controller registers of channel 1
+      arm_clk: for get arm frequency
+-logic-supply: this driver should adjust VDD_LOGIC according to dmc frequency, so need get logic-supply here
+-timings:
+    Must contain
+      rockchip,odt-disable-freq: if ddr clock frequency low than odt-disable-freq,this driver should disable DDR ODT
+      rockchip,dll-disable-freq: if ddr clock frequency low than dll-disable-freq,this driver should disable DDR DLL
+      rockchip,sr-enable-freq: if ddr clock frequency high than sr-enable-freq,this driver should enable the automatic self refresh function
+      rockchip,pd-enable-freq: if ddr clock frequency high than pd-enable-freq,this driver should enable the automatic power down function
+      rockchip,auto-self-refresh-cnt: Self Refresh idle period. Memories are placed into Self-Refresh mode if the NIF is idle in Access state for auto-self-refresh-cnt * 32 * n_clk cycles.The automatic self refresh function is disabled when auto-self-refresh-cnt=0.
+      rockchip,auto-power-down-cnt: Power-down idle period. Memories are placed into power-down mode if the NIF is idle for auto-power-down-cnt n_clk cycles.The automatic power down function is disabled when auto-power-down-cnt=0.
+      rockchip,ddr-speed-bin: DDR3 type,AC timing parameters from the memory data-sheet
+        0.DDR3_800D (5-5-5)
+        1.DDR3_800E (6-6-6)
+        2.DDR3_1066E (6-6-6)
+        3.DDR3_1066F (7-7-7)
+        4.DDR3_1066G (8-8-8)
+        5.DDR3_1333F (7-7-7)
+        6.DDR3_1333G (8-8-8)
+        7.DDR3_1333H (9-9-9)
+        8.DDR3_1333J (10-10-10)
+        9.DDR3_1600G (8-8-8)
+        10.DDR3_1600H (9-9-9)
+        11.DDR3_1600J (10-10-10)
+        12.DDR3_1600K (11-11-11)
+        13.DDR3_1866J (10-10-10)
+        14.DDR3_1866K (11-11-11)
+        15.DDR3_1866L (12-12-12)
+        16.DDR3_1866M (13-13-13)
+        17.DDR3_2133K (11-11-11)
+        18.DDR3_2133L (12-12-12)
+        19.DDR3_2133M (13-13-13)
+        20.DDR3_2133N (14-14-14)
+        21.DDR3_DEFAULT
+      rockchip,trcd: tRCD,AC timing parameters from the memory data-sheet
+      rockchip,trp: tRP,AC timing parameters from the memory data-sheet
+-rockchip,num-channels: number of SDRAM channels (1 or 2)
+-rockchip,pctl-timing: parameters for the SDRAM setup, in this order:
+       togcnt1u
+       tinit
+       trsth
+       togcnt100n
+       trefi
+       tmrd
+       trfc
+       trp
+       trtw
+       tal
+       tcl
+       tcwl
+       tras
+       trc
+       trcd
+       trrd
+       trtp
+       twr
+       twtr
+       texsr
+       txp
+       txpdll
+       tzqcs
+       tzqcsi
+       tdqs
+       tcksre
+       tcksrx
+       tcke
+       tmod
+       trstl
+       tzqcl
+       tmrr
+       tckesr
+       tdpd
+-rockchip,phy-timing: PHY timing information in this order:
+       dtpr0
+       dtpr1
+       dtpr2
+       mr0..mr3
+-rockchip,sdram-channel: SDRAM channel information, each 8 bits. Both channels
+will be set up the same. The parameters are in this order:
+       rank
+       col
+       bk
+       bw
+       dbw
+       row_3_4
+       cs0_row
+       cs1_row
+- rockchip,sdram-params: SDRAM base parameters, in this order:
+       NOC timing      - value for ddrtiming register
+       NOC activate    - value for activate register
+       ddrconf         - value for ddrconf register
+       DDR frequency in MHz
+       DRAM type (3=DDR3, 6=LPDDR3)
+       stride          - stride value for soc_con2 register
+       odt             - 1 to enable DDR ODT, 0 to disable
+
+Example:
+       dmc: dmc@ff610000 {
+               compatible = "rockchip,rk3288-dmc", "syscon";
+               rockchip,cru = <&cru>;
+               rockchip,grf = <&grf>;
+               rockchip,pmu = <&pmu>;
+               rockchip,sgrf = <&sgrf>;
+               rockchip,noc = <&noc>;
+               reg = <0xff610000 0x3fc
+                      0xff620000 0x294
+                      0xff630000 0x3fc
+                      0xff640000 0x294>;
+               clocks = <&cru PCLK_DDRUPCTL0>, <&cru PCLK_PUBL0>,
+                        <&cru PCLK_DDRUPCTL1>, <&cru PCLK_PUBL1>,
+                        <&cru ARMCLK>;
+               clock-names = "pclk_ddrupctl0", "pclk_publ0",
+                             "pclk_ddrupctl1", "pclk_publ1",
+                             "arm_clk";
+       };
+
+       &dmc {
+               logic-supply = <&vdd_logic>;
+               timings {
+                       rockchip,odt-disable-freq = <333000000>;
+                       rockchip,dll-disable-freq = <333000000>;
+                       rockchip,sr-enable-freq = <333000000>;
+                       rockchip,pd-enable-freq = <666000000>;
+                       rockchip,auto-self-refresh-cnt = <0>;
+                       rockchip,auto-power-down-cnt = <64>;
+                       rockchip,ddr-speed-bin = <21>;
+                       rockchip,trcd = <10>;
+                       rockchip,trp = <10>;
+               };
+               rockchip,num-channels = <2>;
+               rockchip,pctl-timing = <0x29a 0x1f4 0xc8 0x42 0x4e 0x4 0xea 0xa
+                       0x5 0x0 0xa 0x7 0x19 0x24 0xa 0x7
+                       0x5 0xa 0x5 0x200 0x5 0x10 0x40 0x0
+                       0x1 0x7 0x7 0x4 0xc 0x43 0x100 0x0
+                       0x5 0x0>;
+               rockchip,phy-timing = <0x48f9aab4 0xea0910 0x1002c200
+                       0xa60 0x40 0x10 0x0>;
+               rockchip,sdram-channel = /bits/ 8 <0x1 0xa 0x3 0x2 0x1 0x0 0xf 0xf>;
+               rockchip,sdram-params = <0x30B25564 0x627 3 666000000 3 9 1>;
+       };
diff --git a/doc/device-tree-bindings/clock/rockchip.txt b/doc/device-tree-bindings/clock/rockchip.txt
new file mode 100644 (file)
index 0000000..22f6769
--- /dev/null
@@ -0,0 +1,77 @@
+Device Tree Clock bindings for arch-rockchip
+
+This binding uses the common clock binding[1].
+
+[1] Documentation/devicetree/bindings/clock/clock-bindings.txt
+
+== Gate clocks ==
+
+These bindings are deprecated!
+Please use the soc specific CRU bindings instead.
+
+The gate registers form a continuos block which makes the dt node
+structure a matter of taste, as either all gates can be put into
+one gate clock spanning all registers or they can be divided into
+the 10 individual gates containing 16 clocks each.
+The code supports both approaches.
+
+Required properties:
+- compatible : "rockchip,rk2928-gate-clk"
+- reg : shall be the control register address(es) for the clock.
+- #clock-cells : from common clock binding; shall be set to 1
+- clock-output-names : the corresponding gate names that the clock controls
+- clocks : should contain the parent clock for each individual gate,
+  therefore the number of clocks elements should match the number of
+  clock-output-names
+
+Example using multiple gate clocks:
+
+               clk_gates0: gate-clk@200000d0 {
+                       compatible = "rockchip,rk2928-gate-clk";
+                       reg = <0x200000d0 0x4>;
+                       clocks = <&dummy>, <&dummy>,
+                                <&dummy>, <&dummy>,
+                                <&dummy>, <&dummy>,
+                                <&dummy>, <&dummy>,
+                                <&dummy>, <&dummy>,
+                                <&dummy>, <&dummy>,
+                                <&dummy>, <&dummy>,
+                                <&dummy>, <&dummy>;
+
+                       clock-output-names =
+                               "gate_core_periph", "gate_cpu_gpll",
+                               "gate_ddrphy", "gate_aclk_cpu",
+                               "gate_hclk_cpu", "gate_pclk_cpu",
+                               "gate_atclk_cpu", "gate_i2s0",
+                               "gate_i2s0_frac", "gate_i2s1",
+                               "gate_i2s1_frac", "gate_i2s2",
+                               "gate_i2s2_frac", "gate_spdif",
+                               "gate_spdif_frac", "gate_testclk";
+
+                       #clock-cells = <1>;
+               };
+
+               clk_gates1: gate-clk@200000d4 {
+                       compatible = "rockchip,rk2928-gate-clk";
+                       reg = <0x200000d4 0x4>;
+                       clocks = <&xin24m>, <&xin24m>,
+                                <&xin24m>, <&dummy>,
+                                <&dummy>, <&xin24m>,
+                                <&xin24m>, <&dummy>,
+                                <&xin24m>, <&dummy>,
+                                <&xin24m>, <&dummy>,
+                                <&xin24m>, <&dummy>,
+                                <&xin24m>, <&dummy>;
+
+                       clock-output-names =
+                               "gate_timer0", "gate_timer1",
+                               "gate_timer2", "gate_jtag",
+                               "gate_aclk_lcdc1_src", "gate_otgphy0",
+                               "gate_otgphy1", "gate_ddr_gpll",
+                               "gate_uart0", "gate_frac_uart0",
+                               "gate_uart1", "gate_frac_uart1",
+                               "gate_uart2", "gate_frac_uart2",
+                               "gate_uart3", "gate_frac_uart3";
+
+                       #clock-cells = <1>;
+               };
diff --git a/doc/device-tree-bindings/pinctrl/rockchip,pinctrl.txt b/doc/device-tree-bindings/pinctrl/rockchip,pinctrl.txt
new file mode 100644 (file)
index 0000000..388b213
--- /dev/null
@@ -0,0 +1,157 @@
+* Rockchip Pinmux Controller
+
+The Rockchip Pinmux Controller, enables the IC
+to share one PAD to several functional blocks. The sharing is done by
+multiplexing the PAD input/output signals. For each PAD there are several
+muxing options with option 0 being the use as a GPIO.
+
+Please refer to pinctrl-bindings.txt in this directory for details of the
+common pinctrl bindings used by client devices, including the meaning of the
+phrase "pin configuration node".
+
+The Rockchip pin configuration node is a node of a group of pins which can be
+used for a specific device or function. This node represents both mux and
+config of the pins in that group. The 'pins' selects the function mode(also
+named pin mode) this pin can work on and the 'config' configures various pad
+settings such as pull-up, etc.
+
+The pins are grouped into up to 5 individual pin banks which need to be
+defined as gpio sub-nodes of the pinmux controller.
+
+Required properties for iomux controller:
+  - compatible: one of "rockchip,rk2928-pinctrl", "rockchip,rk3066a-pinctrl"
+                      "rockchip,rk3066b-pinctrl", "rockchip,rk3188-pinctrl"
+                      "rockchip,rk3288-pinctrl"
+  - rockchip,grf: phandle referencing a syscon providing the
+        "general register files"
+
+Optional properties for iomux controller:
+  - rockchip,pmu: phandle referencing a syscon providing the pmu registers
+        as some SoCs carry parts of the iomux controller registers there.
+        Required for at least rk3188 and rk3288.
+
+Deprecated properties for iomux controller:
+  - reg: first element is the general register space of the iomux controller
+        It should be large enough to contain also separate pull registers.
+        second element is the separate pull register space of the rk3188.
+        Use rockchip,grf and rockchip,pmu described above instead.
+
+Required properties for gpio sub nodes:
+  - compatible: "rockchip,gpio-bank"
+  - reg: register of the gpio bank (different than the iomux registerset)
+  - interrupts: base interrupt of the gpio bank in the interrupt controller
+  - clocks: clock that drives this bank
+  - gpio-controller: identifies the node as a gpio controller and pin bank.
+  - #gpio-cells: number of cells in GPIO specifier. Since the generic GPIO
+    binding is used, the amount of cells must be specified as 2. See generic
+    GPIO binding documentation for description of particular cells.
+  - interrupt-controller: identifies the controller node as interrupt-parent.
+  - #interrupt-cells: the value of this property should be 2 and the interrupt
+    cells should use the standard two-cell scheme described in
+    bindings/interrupt-controller/interrupts.txt
+
+Deprecated properties for gpio sub nodes:
+  - compatible: "rockchip,rk3188-gpio-bank0"
+  - reg: second element: separate pull register for rk3188 bank0, use
+        rockchip,pmu described above instead
+
+Required properties for pin configuration node:
+  - rockchip,pins: 3 integers array, represents a group of pins mux and config
+    setting. The format is rockchip,pins = <PIN_BANK PIN_BANK_IDX MUX &phandle>.
+    The MUX 0 means gpio and MUX 1 to N mean the specific device function.
+    The phandle of a node containing the generic pinconfig options
+    to use, as described in pinctrl-bindings.txt in this directory.
+
+Examples:
+
+#include <dt-bindings/pinctrl/rockchip.h>
+
+...
+
+pinctrl@20008000 {
+       compatible = "rockchip,rk3066a-pinctrl";
+       rockchip,grf = <&grf>;
+
+       #address-cells = <1>;
+       #size-cells = <1>;
+       ranges;
+
+       gpio0: gpio0@20034000 {
+               compatible = "rockchip,gpio-bank";
+               reg = <0x20034000 0x100>;
+               interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
+               clocks = <&clk_gates8 9>;
+
+               gpio-controller;
+               #gpio-cells = <2>;
+
+               interrupt-controller;
+               #interrupt-cells = <2>;
+       };
+
+       ...
+
+       pcfg_pull_default: pcfg_pull_default {
+               bias-pull-pin-default
+       };
+
+       uart2 {
+               uart2_xfer: uart2-xfer {
+                       rockchip,pins = <RK_GPIO1 8 1 &pcfg_pull_default>,
+                                       <RK_GPIO1 9 1 &pcfg_pull_default>;
+               };
+       };
+};
+
+uart2: serial@20064000 {
+       compatible = "snps,dw-apb-uart";
+       reg = <0x20064000 0x400>;
+       interrupts = <GIC_SPI 36 IRQ_TYPE_LEVEL_HIGH>;
+       reg-shift = <2>;
+       reg-io-width = <1>;
+       clocks = <&mux_uart2>;
+       status = "okay";
+
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart2_xfer>;
+};
+
+Example for rk3188:
+
+       pinctrl@20008000 {
+               compatible = "rockchip,rk3188-pinctrl";
+               rockchip,grf = <&grf>;
+               rockchip,pmu = <&pmu>;
+               #address-cells = <1>;
+               #size-cells = <1>;
+               ranges;
+
+               gpio0: gpio0@0x2000a000 {
+                       compatible = "rockchip,rk3188-gpio-bank0";
+                       reg = <0x2000a000 0x100>;
+                       interrupts = <GIC_SPI 54 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_gates8 9>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               gpio1: gpio1@0x2003c000 {
+                       compatible = "rockchip,gpio-bank";
+                       reg = <0x2003c000 0x100>;
+                       interrupts = <GIC_SPI 55 IRQ_TYPE_LEVEL_HIGH>;
+                       clocks = <&clk_gates8 10>;
+
+                       gpio-controller;
+                       #gpio-cells = <2>;
+
+                       interrupt-controller;
+                       #interrupt-cells = <2>;
+               };
+
+               ...
+
+       };
diff --git a/doc/device-tree-bindings/thermal/rockchip-thermal.txt b/doc/device-tree-bindings/thermal/rockchip-thermal.txt
new file mode 100644 (file)
index 0000000..ef802de
--- /dev/null
@@ -0,0 +1,68 @@
+* Temperature Sensor ADC (TSADC) on rockchip SoCs
+
+Required properties:
+- compatible : "rockchip,rk3288-tsadc"
+- reg : physical base address of the controller and length of memory mapped
+       region.
+- interrupts : The interrupt number to the cpu. The interrupt specifier format
+              depends on the interrupt controller.
+- clocks : Must contain an entry for each entry in clock-names.
+- clock-names : Shall be "tsadc" for the converter-clock, and "apb_pclk" for
+               the peripheral clock.
+- resets : Must contain an entry for each entry in reset-names.
+          See ../reset/reset.txt for details.
+- reset-names : Must include the name "tsadc-apb".
+- #thermal-sensor-cells : Should be 1. See ./thermal.txt for a description.
+- rockchip,hw-tshut-temp : The hardware-controlled shutdown temperature value.
+- rockchip,hw-tshut-mode : The hardware-controlled shutdown mode 0:CRU 1:GPIO.
+- rockchip,hw-tshut-polarity : The hardware-controlled active polarity 0:LOW
+                              1:HIGH.
+
+Exiample:
+tsadc: tsadc@ff280000 {
+       compatible = "rockchip,rk3288-tsadc";
+       reg = <0xff280000 0x100>;
+       interrupts = <GIC_SPI 37 IRQ_TYPE_LEVEL_HIGH>;
+       clocks = <&cru SCLK_TSADC>, <&cru PCLK_TSADC>;
+       clock-names = "tsadc", "apb_pclk";
+       resets = <&cru SRST_TSADC>;
+       reset-names = "tsadc-apb";
+       pinctrl-names = "default";
+       pinctrl-0 = <&otp_out>;
+       #thermal-sensor-cells = <1>;
+       rockchip,hw-tshut-temp = <95000>;
+       rockchip,hw-tshut-mode = <0>;
+       rockchip,hw-tshut-polarity = <0>;
+};
+
+Example: referring to thermal sensors:
+thermal-zones {
+       cpu_thermal: cpu_thermal {
+               polling-delay-passive = <1000>; /* milliseconds */
+               polling-delay = <5000>; /* milliseconds */
+
+               /* sensor       ID */
+               thermal-sensors = <&tsadc       1>;
+
+               trips {
+                       cpu_alert0: cpu_alert {
+                               temperature = <70000>; /* millicelsius */
+                               hysteresis = <2000>; /* millicelsius */
+                               type = "passive";
+                       };
+                       cpu_crit: cpu_crit {
+                               temperature = <90000>; /* millicelsius */
+                               hysteresis = <2000>; /* millicelsius */
+                               type = "critical";
+                       };
+               };
+
+               cooling-maps {
+                       map0 {
+                               trip = <&cpu_alert0>;
+                               cooling-device =
+                                   <&cpu0 THERMAL_NO_LIMIT THERMAL_NO_LIMIT>;
+                       };
+               };
+       };
+};
index 598bb3eba5dc1b2be53c156b27cc5c9b15d0ca61..6fe78a1d084b391784acf48986d44fc483894b45 100644 (file)
@@ -12,6 +12,7 @@ alias u-boot uboot
 # things simple and easy to look up/coordinate.
 alias aaribaud       Albert Aribaud <albert.u.boot@aribaud.net>
 alias abiessmann     Andreas Bießmann <andreas.devel@googlemail.com>
+alias abrodkin       Alexey Brodkin <alexey.brodkin@synopsys.com>
 alias afleming       Andy Fleming <afleming@gmail.com>
 alias ag             Anatolij Gustschin <agust@denx.de>
 alias alisonwang     Alison Wang <alison.wang@freescale.com>
@@ -50,9 +51,11 @@ alias vapier         Mike Frysinger <vapier@gentoo.org>
 alias wd             Wolfgang Denk <wd@denx.de>
 
 # Architecture aliases
-alias arch           arm, avr32, bfin, m68k, microblaze, mips, nds32, nios2, powerpc, sandbox, superh, sparc, x86
+alias arch           arc, arm, avr32, bfin, m68k, microblaze, mips, nds32, nios2, powerpc, sandbox, superh, sparc, x86
 alias arches         arch
 
+alias arc            uboot, abrodkin
+
 alias arm            uboot, aaribaud
 alias at91           uboot, abiessmann
 alias davinci        ti
index 092bc02b304ef6dc9f8cfd6230a5c1ebbf653618..63c92c594a7dfe2cd0defd13eb3eee219b649368 100644 (file)
@@ -1,66 +1,68 @@
 menu "Device Drivers"
 
-source "drivers/clk/Kconfig"
-
 source "drivers/core/Kconfig"
 
+# types of drivers sorted in alphabetical order
+
+source "drivers/block/Kconfig"
+
+source "drivers/clk/Kconfig"
+
 source "drivers/cpu/Kconfig"
 
-source "drivers/demo/Kconfig"
+source "drivers/crypto/Kconfig"
 
-source "drivers/pci/Kconfig"
+source "drivers/demo/Kconfig"
 
-source "drivers/pcmcia/Kconfig"
+source "drivers/dfu/Kconfig"
 
-source "drivers/mtd/Kconfig"
+source "drivers/dma/Kconfig"
 
-source "drivers/block/Kconfig"
+source "drivers/gpio/Kconfig"
 
-source "drivers/misc/Kconfig"
+source "drivers/hwmon/Kconfig"
 
-source "drivers/net/Kconfig"
+source "drivers/i2c/Kconfig"
 
 source "drivers/input/Kconfig"
 
 source "drivers/led/Kconfig"
 
-source "drivers/serial/Kconfig"
+source "drivers/misc/Kconfig"
 
-source "drivers/tpm/Kconfig"
+source "drivers/mmc/Kconfig"
 
-source "drivers/i2c/Kconfig"
+source "drivers/mtd/Kconfig"
 
-source "drivers/spi/Kconfig"
+source "drivers/net/Kconfig"
 
-source "drivers/gpio/Kconfig"
+source "drivers/pci/Kconfig"
+
+source "drivers/pcmcia/Kconfig"
+
+source "drivers/pinctrl/Kconfig"
 
 source "drivers/power/Kconfig"
 
 source "drivers/ram/Kconfig"
 
-source "drivers/hwmon/Kconfig"
-
-source "drivers/watchdog/Kconfig"
+source "drivers/rtc/Kconfig"
 
-source "drivers/video/Kconfig"
+source "drivers/serial/Kconfig"
 
 source "drivers/sound/Kconfig"
 
-source "drivers/usb/Kconfig"
-
-source "drivers/dfu/Kconfig"
-
-source "drivers/mmc/Kconfig"
+source "drivers/spi/Kconfig"
 
-source "drivers/rtc/Kconfig"
+source "drivers/thermal/Kconfig"
 
-source "drivers/dma/Kconfig"
+source "drivers/tpm/Kconfig"
 
-source "drivers/crypto/Kconfig"
+source "drivers/usb/Kconfig"
 
-source "drivers/thermal/Kconfig"
+source "drivers/video/Kconfig"
 
-endmenu
+source "drivers/watchdog/Kconfig"
 
 config PHYS_TO_BUS
        bool "Custom physical to bus address mapping"
@@ -69,3 +71,5 @@ config PHYS_TO_BUS
          peripheral DMA master accesses. If yours does, select this option in
          your platform's Kconfig, and implement the appropriate mapping
          functions in your platform's support code.
+
+endmenu
index a721ec86dfefb580bf14eed7e6b9faab12306d52..9d0a5959a8ef0079a7d4268b89000be663385415 100644 (file)
@@ -1,6 +1,7 @@
 obj-$(CONFIG_$(SPL_)DM)                += core/
 obj-$(CONFIG_$(SPL_)CLK)       += clk/
 obj-$(CONFIG_$(SPL_)LED)       += led/
+obj-$(CONFIG_$(SPL_)PINCTRL)   += pinctrl/
 obj-$(CONFIG_$(SPL_)RAM)       += ram/
 
 ifdef CONFIG_SPL_BUILD
index 0d19dd25a3441c95d1e159dfeacacdd4a2960cc3..82c68439f8630d0b6342676bf43910f33d5847b1 100644 (file)
@@ -15,6 +15,7 @@
 #include <asm/errno.h>
 #include <asm/io.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <scsi.h>
 #include <libata.h>
 #include <linux/ctype.h>
index bb89fb918b3afdaa6d809f211dcf2c67860204d2..008ec100a1a8e5f7b121f402513c81e31fb7419c 100644 (file)
@@ -6,4 +6,5 @@
 #
 
 obj-$(CONFIG_CLK) += clk-uclass.o
+obj-$(CONFIG_ROCKCHIP_RK3288) += clk_rk3288.o
 obj-$(CONFIG_SANDBOX) += clk_sandbox.o
diff --git a/drivers/clk/clk_rk3288.c b/drivers/clk/clk_rk3288.c
new file mode 100644 (file)
index 0000000..54d4930
--- /dev/null
@@ -0,0 +1,618 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <errno.h>
+#include <syscon.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/cru_rk3288.h>
+#include <asm/arch/grf_rk3288.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/periph.h>
+#include <dm/lists.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct rk3288_clk_plat {
+       enum rk_clk_id clk_id;
+};
+
+struct rk3288_clk_priv {
+       struct rk3288_grf *grf;
+       struct rk3288_cru *cru;
+       ulong rate;
+};
+
+struct pll_div {
+       u32 nr;
+       u32 nf;
+       u32 no;
+};
+
+enum {
+       VCO_MAX_HZ      = 2200U * 1000000,
+       VCO_MIN_HZ      = 440 * 1000000,
+       OUTPUT_MAX_HZ   = 2200U * 1000000,
+       OUTPUT_MIN_HZ   = 27500000,
+       FREF_MAX_HZ     = 2200U * 1000000,
+       FREF_MIN_HZ     = 269 * 1000000,
+};
+
+enum {
+       /* PLL CON0 */
+       PLL_OD_MASK             = 0x0f,
+
+       /* PLL CON1 */
+       PLL_NF_MASK             = 0x1fff,
+
+       /* PLL CON2 */
+       PLL_BWADJ_MASK          = 0x0fff,
+
+       /* PLL CON3 */
+       PLL_RESET_SHIFT         = 5,
+
+       /* CLKSEL1: pd bus clk pll sel: codec or general */
+       PD_BUS_SEL_PLL_MASK     = 15,
+       PD_BUS_SEL_CPLL         = 0,
+       PD_BUS_SEL_GPLL,
+
+       /* pd bus pclk div: pclk = pd_bus_aclk /(div + 1) */
+       PD_BUS_PCLK_DIV_SHIFT   = 12,
+       PD_BUS_PCLK_DIV_MASK    = 7,
+
+       /* pd bus hclk div: aclk_bus: hclk_bus = 1:1 or 2:1 or 4:1 */
+       PD_BUS_HCLK_DIV_SHIFT   = 8,
+       PD_BUS_HCLK_DIV_MASK    = 3,
+
+       /* pd bus aclk div: pd_bus_aclk = pd_bus_src_clk /(div0 * div1) */
+       PD_BUS_ACLK_DIV0_SHIFT  = 3,
+       PD_BUS_ACLK_DIV0_MASK   = 0x1f,
+       PD_BUS_ACLK_DIV1_SHIFT  = 0,
+       PD_BUS_ACLK_DIV1_MASK   = 0x7,
+
+       /*
+        * CLKSEL10
+        * peripheral bus pclk div:
+        * aclk_bus: pclk_bus = 1:1 or 2:1 or 4:1 or 8:1
+        */
+       PERI_PCLK_DIV_SHIFT     = 12,
+       PERI_PCLK_DIV_MASK      = 7,
+
+       /* peripheral bus hclk div: aclk_bus: hclk_bus = 1:1 or 2:1 or 4:1 */
+       PERI_HCLK_DIV_SHIFT     = 8,
+       PERI_HCLK_DIV_MASK      = 3,
+
+       /*
+        * peripheral bus aclk div:
+        *    aclk_periph = periph_clk_src / (peri_aclk_div_con + 1)
+        */
+       PERI_ACLK_DIV_SHIFT     = 0,
+       PERI_ACLK_DIV_MASK      = 0x1f,
+
+       /* CLKSEL37 */
+       DPLL_MODE_MASK          = 0x3,
+       DPLL_MODE_SHIFT         = 4,
+       DPLL_MODE_SLOW          = 0,
+       DPLL_MODE_NORM,
+
+       CPLL_MODE_MASK          = 3,
+       CPLL_MODE_SHIFT         = 8,
+       CPLL_MODE_SLOW          = 0,
+       CPLL_MODE_NORM,
+
+       GPLL_MODE_MASK          = 3,
+       GPLL_MODE_SHIFT         = 12,
+       GPLL_MODE_SLOW          = 0,
+       GPLL_MODE_NORM,
+
+       NPLL_MODE_MASK          = 3,
+       NPLL_MODE_SHIFT         = 14,
+       NPLL_MODE_SLOW          = 0,
+       NPLL_MODE_NORM,
+
+       SOCSTS_DPLL_LOCK        = 1 << 5,
+       SOCSTS_APLL_LOCK        = 1 << 6,
+       SOCSTS_CPLL_LOCK        = 1 << 7,
+       SOCSTS_GPLL_LOCK        = 1 << 8,
+       SOCSTS_NPLL_LOCK        = 1 << 9,
+};
+
+#define RATE_TO_DIV(input_rate, output_rate) \
+       ((input_rate) / (output_rate) - 1);
+
+#define DIV_TO_RATE(input_rate, div)   ((input_rate) / ((div) + 1))
+
+#define PLL_DIVISORS(hz, _nr, _no) {\
+       .nr = _nr, .nf = (u32)((u64)hz * _nr * _no / OSC_HZ), .no = _no};\
+       _Static_assert(((u64)hz * _nr * _no / OSC_HZ) * OSC_HZ /\
+                      (_nr * _no) == hz, #hz "Hz cannot be hit with PLL "\
+                      "divisors on line " __stringify(__LINE__));
+
+/* Keep divisors as low as possible to reduce jitter and power usage */
+static const struct pll_div apll_init_cfg = PLL_DIVISORS(APLL_HZ, 1, 1);
+static const struct pll_div gpll_init_cfg = PLL_DIVISORS(GPLL_HZ, 2, 2);
+static const struct pll_div cpll_init_cfg = PLL_DIVISORS(CPLL_HZ, 1, 2);
+
+static int rkclk_set_pll(struct rk3288_cru *cru, enum rk_clk_id clk_id,
+                        const struct pll_div *div)
+{
+       int pll_id = rk_pll_id(clk_id);
+       struct rk3288_pll *pll = &cru->pll[pll_id];
+       /* All PLLs have same VCO and output frequency range restrictions. */
+       uint vco_hz = OSC_HZ / 1000 * div->nf / div->nr * 1000;
+       uint output_hz = vco_hz / div->no;
+
+       debug("PLL at %p: nf=%d, nr=%d, no=%d, vco=%u Hz, output=%u Hz\n",
+             pll, div->nf, div->nr, div->no, vco_hz, output_hz);
+       assert(vco_hz >= VCO_MIN_HZ && vco_hz <= VCO_MAX_HZ &&
+              output_hz >= OUTPUT_MIN_HZ && output_hz <= OUTPUT_MAX_HZ &&
+              (div->no == 1 || !(div->no % 2)));
+
+       /* enter rest */
+       rk_setreg(&pll->con3, 1 << PLL_RESET_SHIFT);
+
+       rk_clrsetreg(&pll->con0,
+                    CLKR_MASK << CLKR_SHIFT | PLL_OD_MASK,
+                    ((div->nr - 1) << CLKR_SHIFT) | (div->no - 1));
+       rk_clrsetreg(&pll->con1, CLKF_MASK, div->nf - 1);
+       rk_clrsetreg(&pll->con2, PLL_BWADJ_MASK, (div->nf >> 1) - 1);
+
+       udelay(10);
+
+       /* return form rest */
+       rk_clrreg(&pll->con3, 1 << PLL_RESET_SHIFT);
+
+       return 0;
+}
+
+static inline unsigned int log2(unsigned int value)
+{
+       return fls(value) - 1;
+}
+
+static int rkclk_configure_ddr(struct rk3288_cru *cru, struct rk3288_grf *grf,
+                              unsigned int hz)
+{
+       static const struct pll_div dpll_cfg[] = {
+               {.nf = 25, .nr = 2, .no = 1},
+               {.nf = 400, .nr = 9, .no = 2},
+               {.nf = 500, .nr = 9, .no = 2},
+               {.nf = 100, .nr = 3, .no = 1},
+       };
+       int cfg;
+
+       debug("%s: cru=%p, grf=%p, hz=%u\n", __func__, cru, grf, hz);
+       switch (hz) {
+       case 300000000:
+               cfg = 0;
+               break;
+       case 533000000: /* actually 533.3P MHz */
+               cfg = 1;
+               break;
+       case 666000000: /* actually 666.6P MHz */
+               cfg = 2;
+               break;
+       case 800000000:
+               cfg = 3;
+               break;
+       default:
+               debug("Unsupported SDRAM frequency, add to clock.c!");
+               return -EINVAL;
+       }
+
+       /* pll enter slow-mode */
+       rk_clrsetreg(&cru->cru_mode_con, DPLL_MODE_MASK << DPLL_MODE_SHIFT,
+                    DPLL_MODE_SLOW << DPLL_MODE_SHIFT);
+
+       rkclk_set_pll(cru, CLK_DDR, &dpll_cfg[cfg]);
+
+       /* wait for pll lock */
+       while (!(readl(&grf->soc_status[1]) & SOCSTS_DPLL_LOCK))
+               udelay(1);
+
+       /* PLL enter normal-mode */
+       rk_clrsetreg(&cru->cru_mode_con, DPLL_MODE_MASK << DPLL_MODE_SHIFT,
+                    DPLL_MODE_NORM << DPLL_MODE_SHIFT);
+
+       return 0;
+}
+
+#ifdef CONFIG_SPL_BUILD
+static void rkclk_init(struct rk3288_cru *cru, struct rk3288_grf *grf)
+{
+       u32 aclk_div;
+       u32 hclk_div;
+       u32 pclk_div;
+
+       /* pll enter slow-mode */
+       rk_clrsetreg(&cru->cru_mode_con,
+                    GPLL_MODE_MASK << GPLL_MODE_SHIFT |
+                    CPLL_MODE_MASK << CPLL_MODE_SHIFT,
+                    GPLL_MODE_SLOW << GPLL_MODE_SHIFT |
+                    CPLL_MODE_SLOW << CPLL_MODE_SHIFT);
+
+       /* init pll */
+       rkclk_set_pll(cru, CLK_GENERAL, &gpll_init_cfg);
+       rkclk_set_pll(cru, CLK_CODEC, &cpll_init_cfg);
+
+       /* waiting for pll lock */
+       while ((readl(&grf->soc_status[1]) &
+                       (SOCSTS_CPLL_LOCK | SOCSTS_GPLL_LOCK)) !=
+                       (SOCSTS_CPLL_LOCK | SOCSTS_GPLL_LOCK))
+               udelay(1);
+
+       /*
+        * pd_bus clock pll source selection and
+        * set up dependent divisors for PCLK/HCLK and ACLK clocks.
+        */
+       aclk_div = GPLL_HZ / PD_BUS_ACLK_HZ - 1;
+       assert((aclk_div + 1) * PD_BUS_ACLK_HZ == GPLL_HZ && aclk_div < 0x1f);
+       hclk_div = PD_BUS_ACLK_HZ / PD_BUS_HCLK_HZ - 1;
+       assert((hclk_div + 1) * PD_BUS_HCLK_HZ ==
+               PD_BUS_ACLK_HZ && (hclk_div < 0x4) && (hclk_div != 0x2));
+
+       pclk_div = PD_BUS_ACLK_HZ / PD_BUS_PCLK_HZ - 1;
+       assert((pclk_div + 1) * PD_BUS_PCLK_HZ ==
+               PD_BUS_ACLK_HZ && pclk_div < 0x7);
+
+       rk_clrsetreg(&cru->cru_clksel_con[1],
+                    PD_BUS_PCLK_DIV_MASK << PD_BUS_PCLK_DIV_SHIFT |
+                    PD_BUS_HCLK_DIV_MASK << PD_BUS_HCLK_DIV_SHIFT |
+                    PD_BUS_ACLK_DIV0_MASK << PD_BUS_ACLK_DIV0_SHIFT |
+                    PD_BUS_ACLK_DIV1_MASK << PD_BUS_ACLK_DIV1_SHIFT,
+                    pclk_div << PD_BUS_PCLK_DIV_SHIFT |
+                    hclk_div << PD_BUS_HCLK_DIV_SHIFT |
+                    aclk_div << PD_BUS_ACLK_DIV0_SHIFT |
+                    0 << 0);
+
+       /*
+        * peri clock pll source selection and
+        * set up dependent divisors for PCLK/HCLK and ACLK clocks.
+        */
+       aclk_div = GPLL_HZ / PERI_ACLK_HZ - 1;
+       assert((aclk_div + 1) * PERI_ACLK_HZ == GPLL_HZ && aclk_div < 0x1f);
+
+       hclk_div = log2(PERI_ACLK_HZ / PERI_HCLK_HZ);
+       assert((1 << hclk_div) * PERI_HCLK_HZ ==
+               PERI_ACLK_HZ && (hclk_div < 0x4));
+
+       pclk_div = log2(PERI_ACLK_HZ / PERI_PCLK_HZ);
+       assert((1 << pclk_div) * PERI_PCLK_HZ ==
+               PERI_ACLK_HZ && (pclk_div < 0x4));
+
+       rk_clrsetreg(&cru->cru_clksel_con[10],
+                    PERI_PCLK_DIV_MASK << PERI_PCLK_DIV_SHIFT |
+                    PERI_HCLK_DIV_MASK << PERI_HCLK_DIV_SHIFT |
+                    PERI_ACLK_DIV_MASK << PERI_ACLK_DIV_SHIFT,
+                    pclk_div << PERI_PCLK_DIV_SHIFT |
+                    hclk_div << PERI_HCLK_DIV_SHIFT |
+                    aclk_div << PERI_ACLK_DIV_SHIFT);
+
+       /* PLL enter normal-mode */
+       rk_clrsetreg(&cru->cru_mode_con,
+                    GPLL_MODE_MASK << GPLL_MODE_SHIFT |
+                    CPLL_MODE_MASK << CPLL_MODE_SHIFT,
+                    GPLL_MODE_NORM << GPLL_MODE_SHIFT |
+                    GPLL_MODE_NORM << CPLL_MODE_SHIFT);
+}
+#endif
+
+/* Get pll rate by id */
+static uint32_t rkclk_pll_get_rate(struct rk3288_cru *cru,
+                                  enum rk_clk_id clk_id)
+{
+       uint32_t nr, no, nf;
+       uint32_t con;
+       int pll_id = rk_pll_id(clk_id);
+       struct rk3288_pll *pll = &cru->pll[pll_id];
+       static u8 clk_shift[CLK_COUNT] = {
+               0xff, APLL_WORK_SHIFT, DPLL_WORK_SHIFT, CPLL_WORK_SHIFT,
+               GPLL_WORK_SHIFT, NPLL_WORK_SHIFT
+       };
+       uint shift;
+
+       con = readl(&cru->cru_mode_con);
+       shift = clk_shift[clk_id];
+       switch ((con >> shift) & APLL_WORK_MASK) {
+       case APLL_WORK_SLOW:
+               return OSC_HZ;
+       case APLL_WORK_NORMAL:
+               /* normal mode */
+               con = readl(&pll->con0);
+               no = ((con >> CLKOD_SHIFT) & CLKOD_MASK) + 1;
+               nr = ((con >> CLKR_SHIFT) & CLKR_MASK) + 1;
+               con = readl(&pll->con1);
+               nf = ((con >> CLKF_SHIFT) & CLKF_MASK) + 1;
+
+               return (24 * nf / (nr * no)) * 1000000;
+       case APLL_WORK_DEEP:
+       default:
+               return 32768;
+       }
+}
+
+static ulong rk3288_clk_get_rate(struct udevice *dev)
+{
+       struct rk3288_clk_plat *plat = dev_get_platdata(dev);
+       struct rk3288_clk_priv *priv = dev_get_priv(dev);
+
+       debug("%s\n", dev->name);
+       return rkclk_pll_get_rate(priv->cru, plat->clk_id);
+}
+
+static ulong rk3288_clk_set_rate(struct udevice *dev, ulong rate)
+{
+       struct rk3288_clk_plat *plat = dev_get_platdata(dev);
+       struct rk3288_clk_priv *priv = dev_get_priv(dev);
+
+       debug("%s\n", dev->name);
+       switch (plat->clk_id) {
+       case CLK_DDR:
+               rkclk_configure_ddr(priv->cru, priv->grf, rate);
+               break;
+       default:
+               return -ENOENT;
+       }
+
+       return 0;
+}
+
+static ulong rockchip_mmc_get_clk(struct rk3288_cru *cru, uint clk_general_rate,
+                                 enum periph_id periph)
+{
+       uint src_rate;
+       uint div, mux;
+       u32 con;
+
+       switch (periph) {
+       case PERIPH_ID_EMMC:
+               con = readl(&cru->cru_clksel_con[12]);
+               mux = (con >> EMMC_PLL_SHIFT) & EMMC_PLL_MASK;
+               div = (con >> EMMC_DIV_SHIFT) & EMMC_DIV_MASK;
+               break;
+       case PERIPH_ID_SDCARD:
+               con = readl(&cru->cru_clksel_con[12]);
+               mux = (con >> MMC0_PLL_SHIFT) & MMC0_PLL_MASK;
+               div = (con >> MMC0_DIV_SHIFT) & MMC0_DIV_MASK;
+               break;
+       case PERIPH_ID_SDMMC2:
+               con = readl(&cru->cru_clksel_con[12]);
+               mux = (con >> SDIO0_PLL_SHIFT) & SDIO0_PLL_MASK;
+               div = (con >> SDIO0_DIV_SHIFT) & SDIO0_DIV_MASK;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       src_rate = mux == EMMC_PLL_SELECT_24MHZ ? OSC_HZ : clk_general_rate;
+       return DIV_TO_RATE(src_rate, div);
+}
+
+static ulong rockchip_mmc_set_clk(struct rk3288_cru *cru, uint clk_general_rate,
+                                 enum periph_id periph, uint freq)
+{
+       int src_clk_div;
+       int mux;
+
+       debug("%s: clk_general_rate=%u\n", __func__, clk_general_rate);
+       src_clk_div = RATE_TO_DIV(clk_general_rate, freq);
+
+       if (src_clk_div > 0x3f) {
+               src_clk_div = RATE_TO_DIV(OSC_HZ, freq);
+               mux = EMMC_PLL_SELECT_24MHZ;
+               assert((int)EMMC_PLL_SELECT_24MHZ ==
+                      (int)MMC0_PLL_SELECT_24MHZ);
+       } else {
+               mux = EMMC_PLL_SELECT_GENERAL;
+               assert((int)EMMC_PLL_SELECT_GENERAL ==
+                      (int)MMC0_PLL_SELECT_GENERAL);
+       }
+       switch (periph) {
+       case PERIPH_ID_EMMC:
+               rk_clrsetreg(&cru->cru_clksel_con[12],
+                            EMMC_PLL_MASK << EMMC_PLL_SHIFT |
+                            EMMC_DIV_MASK << EMMC_DIV_SHIFT,
+                            mux << EMMC_PLL_SHIFT |
+                            (src_clk_div - 1) << EMMC_DIV_SHIFT);
+               break;
+       case PERIPH_ID_SDCARD:
+               rk_clrsetreg(&cru->cru_clksel_con[11],
+                            MMC0_PLL_MASK << MMC0_PLL_SHIFT |
+                            MMC0_DIV_MASK << MMC0_DIV_SHIFT,
+                            mux << MMC0_PLL_SHIFT |
+                            (src_clk_div - 1) << MMC0_DIV_SHIFT);
+               break;
+       case PERIPH_ID_SDMMC2:
+               rk_clrsetreg(&cru->cru_clksel_con[12],
+                            SDIO0_PLL_MASK << SDIO0_PLL_SHIFT |
+                            SDIO0_DIV_MASK << SDIO0_DIV_SHIFT,
+                            mux << SDIO0_PLL_SHIFT |
+                            (src_clk_div - 1) << SDIO0_DIV_SHIFT);
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return rockchip_mmc_get_clk(cru, clk_general_rate, periph);
+}
+
+static ulong rockchip_spi_get_clk(struct rk3288_cru *cru, uint clk_general_rate,
+                                 enum periph_id periph)
+{
+       uint div, mux;
+       u32 con;
+
+       switch (periph) {
+       case PERIPH_ID_SPI0:
+               con = readl(&cru->cru_clksel_con[25]);
+               mux = (con >> SPI0_PLL_SHIFT) & SPI0_PLL_MASK;
+               div = (con >> SPI0_DIV_SHIFT) & SPI0_DIV_MASK;
+               break;
+       case PERIPH_ID_SPI1:
+               con = readl(&cru->cru_clksel_con[25]);
+               mux = (con >> SPI1_PLL_SHIFT) & SPI1_PLL_MASK;
+               div = (con >> SPI1_DIV_SHIFT) & SPI1_DIV_MASK;
+               break;
+       case PERIPH_ID_SPI2:
+               con = readl(&cru->cru_clksel_con[39]);
+               mux = (con >> SPI2_PLL_SHIFT) & SPI2_PLL_MASK;
+               div = (con >> SPI2_DIV_SHIFT) & SPI2_DIV_MASK;
+               break;
+       default:
+               return -EINVAL;
+       }
+       assert(mux == SPI0_PLL_SELECT_GENERAL);
+
+       return DIV_TO_RATE(clk_general_rate, div);
+}
+
+static ulong rockchip_spi_set_clk(struct rk3288_cru *cru, uint clk_general_rate,
+                                 enum periph_id periph, uint freq)
+{
+       int src_clk_div;
+
+       debug("%s: clk_general_rate=%u\n", __func__, clk_general_rate);
+       src_clk_div = RATE_TO_DIV(clk_general_rate, freq);
+       switch (periph) {
+       case PERIPH_ID_SPI0:
+               rk_clrsetreg(&cru->cru_clksel_con[25],
+                            SPI0_PLL_MASK << SPI0_PLL_SHIFT |
+                            SPI0_DIV_MASK << SPI0_DIV_SHIFT,
+                            SPI0_PLL_SELECT_GENERAL << SPI0_PLL_SHIFT |
+                            src_clk_div << SPI0_DIV_SHIFT);
+               break;
+       case PERIPH_ID_SPI1:
+               rk_clrsetreg(&cru->cru_clksel_con[25],
+                            SPI1_PLL_MASK << SPI1_PLL_SHIFT |
+                            SPI1_DIV_MASK << SPI1_DIV_SHIFT,
+                            SPI1_PLL_SELECT_GENERAL << SPI1_PLL_SHIFT |
+                            src_clk_div << SPI1_DIV_SHIFT);
+               break;
+       case PERIPH_ID_SPI2:
+               rk_clrsetreg(&cru->cru_clksel_con[39],
+                            SPI2_PLL_MASK << SPI2_PLL_SHIFT |
+                            SPI2_DIV_MASK << SPI2_DIV_SHIFT,
+                            SPI2_PLL_SELECT_GENERAL << SPI2_PLL_SHIFT |
+                            src_clk_div << SPI2_DIV_SHIFT);
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return rockchip_spi_get_clk(cru, clk_general_rate, periph);
+}
+
+ulong rk3288_set_periph_rate(struct udevice *dev, int periph, ulong rate)
+{
+       struct rk3288_clk_priv *priv = dev_get_priv(dev);
+       ulong new_rate;
+
+       switch (periph) {
+       case PERIPH_ID_EMMC:
+       case PERIPH_ID_SDCARD:
+               new_rate = rockchip_mmc_set_clk(priv->cru, clk_get_rate(dev),
+                                               periph, rate);
+               break;
+       case PERIPH_ID_SPI0:
+       case PERIPH_ID_SPI1:
+       case PERIPH_ID_SPI2:
+               new_rate = rockchip_spi_set_clk(priv->cru, clk_get_rate(dev),
+                                               periph, rate);
+               break;
+       default:
+               return -ENOENT;
+       }
+
+       return new_rate;
+}
+
+static struct clk_ops rk3288_clk_ops = {
+       .get_rate       = rk3288_clk_get_rate,
+       .set_rate       = rk3288_clk_set_rate,
+       .set_periph_rate = rk3288_set_periph_rate,
+};
+
+static int rk3288_clk_probe(struct udevice *dev)
+{
+       struct rk3288_clk_plat *plat = dev_get_platdata(dev);
+       struct rk3288_clk_priv *priv = dev_get_priv(dev);
+
+       if (plat->clk_id != CLK_OSC) {
+               struct rk3288_clk_priv *parent_priv = dev_get_priv(dev->parent);
+
+               priv->cru = parent_priv->cru;
+               priv->grf = parent_priv->grf;
+               return 0;
+       }
+       priv->cru = (struct rk3288_cru *)dev_get_addr(dev);
+       priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+#ifdef CONFIG_SPL_BUILD
+       rkclk_init(priv->cru, priv->grf);
+#endif
+
+       return 0;
+}
+
+static const char *const clk_name[CLK_COUNT] = {
+       "osc",
+       "apll",
+       "dpll",
+       "cpll",
+       "gpll",
+       "mpll",
+};
+
+static int rk3288_clk_bind(struct udevice *dev)
+{
+       struct rk3288_clk_plat *plat = dev_get_platdata(dev);
+       int pll, ret;
+
+       /* We only need to set up the root clock */
+       if (dev->of_offset == -1) {
+               plat->clk_id = CLK_OSC;
+               return 0;
+       }
+
+       /* Create devices for P main clocks */
+       for (pll = 1; pll < CLK_COUNT; pll++) {
+               struct udevice *child;
+               struct rk3288_clk_plat *cplat;
+
+               debug("%s %s\n", __func__, clk_name[pll]);
+               ret = device_bind_driver(dev, "clk_rk3288", clk_name[pll],
+                                        &child);
+               if (ret)
+                       return ret;
+               cplat = dev_get_platdata(child);
+               cplat->clk_id = pll;
+       }
+
+       /* The reset driver does not have a device node, so bind it here */
+       ret = device_bind_driver(gd->dm_root, "rk3288_reset", "reset", &dev);
+       if (ret)
+               debug("Warning: No RK3288 reset driver: ret=%d\n", ret);
+
+       return 0;
+}
+
+static const struct udevice_id rk3288_clk_ids[] = {
+       { .compatible = "rockchip,rk3288-cru" },
+       { }
+};
+
+U_BOOT_DRIVER(clk_rk3288) = {
+       .name           = "clk_rk3288",
+       .id             = UCLASS_CLK,
+       .of_match       = rk3288_clk_ids,
+       .priv_auto_alloc_size = sizeof(struct rk3288_clk_priv),
+       .platdata_auto_alloc_size = sizeof(struct rk3288_clk_plat),
+       .ops            = &rk3288_clk_ops,
+       .bind           = rk3288_clk_bind,
+       .probe          = rk3288_clk_probe,
+};
index 788f8b739bf40f8aca95f98466f9a3f77f03639e..41f4e695e8af8a8035f605049771b96dc4462203 100644 (file)
@@ -105,4 +105,19 @@ config DEBUG_DEVRES
 
          If you are unsure about this, Say N here.
 
+config SIMPLE_BUS
+       bool "Support simple-bus driver"
+       depends on DM && OF_CONTROL
+       default y
+       help
+         Supports the 'simple-bus' driver, which is used on some systems.
+
+config SPL_SIMPLE_BUS
+       bool "Support simple-bus driver in SPL"
+       depends on SPL_DM && SPL_OF_CONTROL
+       default n
+       help
+         Supports the 'simple-bus' driver, which is used on some systems
+         in SPL.
+
 endmenu
index 11e0276e56b289114a28cfe13a321079dbef8541..f19f67d30f76b17571a362c9fd360a7312800a90 100644 (file)
@@ -6,10 +6,8 @@
 
 obj-y  += device.o lists.o root.o uclass.o util.o
 obj-$(CONFIG_DEVRES) += devres.o
-ifndef CONFIG_SPL_BUILD
-obj-$(CONFIG_$(SPL_)OF_CONTROL) += simple-bus.o
-endif
 obj-$(CONFIG_$(SPL_)DM_DEVICE_REMOVE)  += device-remove.o
+obj-$(CONFIG_$(SPL_)SIMPLE_BUS)        += simple-bus.o
 obj-$(CONFIG_DM)       += dump.o
 obj-$(CONFIG_REGMAP)   += regmap.o
 obj-$(CONFIG_SYSCON)   += syscon-uclass.o
index a31e25f6b5c5b30b92c2d0251c5dd083f3939de2..0ccd443f252e0bbb75425685d33b2f07fcbab84d 100644 (file)
@@ -15,6 +15,7 @@
 #include <dm/device.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
+#include <dm/pinctrl.h>
 #include <dm/platdata.h>
 #include <dm/uclass.h>
 #include <dm/uclass-internal.h>
@@ -32,13 +33,16 @@ int device_bind(struct udevice *parent, const struct driver *drv,
        struct uclass *uc;
        int size, ret = 0;
 
-       *devp = NULL;
+       if (devp)
+               *devp = NULL;
        if (!name)
                return -EINVAL;
 
        ret = uclass_get(drv->id, &uc);
-       if (ret)
+       if (ret) {
+               debug("Missing uclass for driver %s\n", drv->name);
                return ret;
+       }
 
        dev = calloc(1, sizeof(struct udevice));
        if (!dev)
@@ -133,7 +137,8 @@ int device_bind(struct udevice *parent, const struct driver *drv,
 
        if (parent)
                dm_dbg("Bound device %s to %s\n", dev->name, parent->name);
-       *devp = dev;
+       if (devp)
+               *devp = dev;
 
        dev->flags |= DM_FLAG_BOUND;
 
@@ -284,6 +289,9 @@ int device_probe_child(struct udevice *dev, void *parent_priv)
 
        dev->flags |= DM_FLAG_ACTIVATED;
 
+       /* continue regardless of the result of pinctrl */
+       pinctrl_select_state(dev, "default");
+
        ret = uclass_pre_probe_device(dev);
        if (ret)
                goto fail;
@@ -574,7 +582,7 @@ fdt_addr_t dev_get_addr(struct udevice *dev)
        fdt_addr_t addr;
 
        addr = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
-       if (addr != FDT_ADDR_T_NONE) {
+       if (CONFIG_IS_ENABLED(SIMPLE_BUS) && addr != FDT_ADDR_T_NONE) {
                if (device_get_uclass_id(dev->parent) == UCLASS_SIMPLE_BUS)
                        addr = simple_bus_translate(dev->parent, addr);
        }
index 78ab00c7bfbf9e4d46cdf2c9e83e3cf2011d23e8..bdb394a9ae21f3d1f2d80b355abe03cdaace8dae 100644 (file)
@@ -162,8 +162,11 @@ int dm_scan_fdt_node(struct udevice *parent, const void *blob, int offset,
                        continue;
                }
                err = lists_bind_fdt(parent, blob, offset, NULL);
-               if (err && !ret)
+               if (err && !ret) {
                        ret = err;
+                       debug("%s: ret=%d\n", fdt_get_name(blob, offset, NULL),
+                             ret);
+               }
        }
 
        if (ret)
index f63ff599a69bac8ded6f48ab15acfbf12eae5f54..e800c28653f6170c62d9e1aeb23da1ced4ebea7a 100644 (file)
@@ -58,7 +58,12 @@ static int uclass_add(enum uclass_id id, struct uclass **ucp)
        if (!uc_drv) {
                debug("Cannot find uclass for id %d: please add the UCLASS_DRIVER() declaration for this UCLASS_... id\n",
                      id);
-               return -ENOENT;
+               /*
+                * Use a strange error to make this case easier to find. When
+                * a uclass is not available it can prevent driver model from
+                * starting up and this failure is otherwise hard to debug.
+                */
+               return -EPFNOSUPPORT;
        }
        uc = calloc(1, sizeof(*uc));
        if (!uc)
index e2ff040b001c8a4acdd8199fc840cac4f1472e3b..cb3fb24416e243b18fa1aa66a2a873ff3393c056 100644 (file)
@@ -32,8 +32,6 @@
  */
 #define MV_DEBUG_INIT
 
-#define BIT(x)                         (1 << (x))
-
 #ifdef MV_DEBUG_INIT
 #define DEBUG_INIT_S(s)                        puts(s)
 #define DEBUG_INIT_D(d, l)             printf("%x", d)
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..4fe22193b1480098cbb8001b5edc2cbfc11e442d 100644 (file)
@@ -0,0 +1,10 @@
+menu "DFU support"
+
+config DFU_TFTP
+       bool "DFU via TFTP"
+       help
+         This option allows performing update of DFU managed medium with data
+         send via TFTP boot.
+         Detailed description of this feature can be found at ./doc/README.dfutftp
+
+endmenu
index cebea30ac3c3a039a4c5e2c658016296c00daca0..61f2b71f918127f5b337a8afbb65c6f6e9c31a06 100644 (file)
@@ -10,3 +10,4 @@ obj-$(CONFIG_DFU_MMC) += dfu_mmc.o
 obj-$(CONFIG_DFU_NAND) += dfu_nand.o
 obj-$(CONFIG_DFU_RAM) += dfu_ram.o
 obj-$(CONFIG_DFU_SF) += dfu_sf.o
+obj-$(CONFIG_DFU_TFTP) += dfu_tftp.o
index 675162d927d8863a96952f407c0fced396e9c48c..8f5915e49ca5e386f16d4778ef19a6cb0c399088 100644 (file)
@@ -76,7 +76,7 @@ int dfu_init_env_entities(char *interface, char *devstr)
 }
 
 static unsigned char *dfu_buf;
-static unsigned long dfu_buf_size = CONFIG_SYS_DFU_DATA_BUF_SIZE;
+static unsigned long dfu_buf_size;
 
 unsigned char *dfu_free_buf(void)
 {
@@ -164,7 +164,6 @@ static int dfu_write_buffer_drain(struct dfu_entity *dfu)
 void dfu_write_transaction_cleanup(struct dfu_entity *dfu)
 {
        /* clear everything */
-       dfu_free_buf();
        dfu->crc = 0;
        dfu->offset = 0;
        dfu->i_blk_seq_num = 0;
@@ -339,17 +338,6 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
                dfu->r_left = dfu->get_medium_size(dfu);
                if (dfu->r_left < 0)
                        return dfu->r_left;
-               switch (dfu->layout) {
-               case DFU_RAW_ADDR:
-               case DFU_RAM_ADDR:
-                       break;
-               default:
-                       if (dfu->r_left > dfu_buf_size) {
-                               printf("%s: File too big for buffer\n",
-                                      __func__);
-                               return -EOVERFLOW;
-                       }
-               }
 
                debug("%s: %s %ld [B]\n", __func__, dfu->name, dfu->r_left);
 
@@ -385,7 +373,6 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
                              dfu_hash_algo->name, dfu->crc);
                puts("\nUPLOAD ... done\nCtrl+C to exit ...\n");
 
-               dfu_free_buf();
                dfu->i_blk_seq_num = 0;
                dfu->crc = 0;
                dfu->offset = 0;
@@ -433,6 +420,7 @@ static int dfu_fill_entity(struct dfu_entity *dfu, char *s, int alt,
                       __func__,  interface);
                return -1;
        }
+       dfu_get_buf(dfu);
 
        return 0;
 }
@@ -441,6 +429,7 @@ void dfu_free_entities(void)
 {
        struct dfu_entity *dfu, *p, *t = NULL;
 
+       dfu_free_buf();
        list_for_each_entry_safe_reverse(dfu, p, &dfu_list, list) {
                list_del(&dfu->list);
                if (dfu->free_entity)
@@ -568,3 +557,40 @@ int dfu_get_alt(char *name)
 
        return -ENODEV;
 }
+
+int dfu_write_from_mem_addr(struct dfu_entity *dfu, void *buf, int size)
+{
+       unsigned long dfu_buf_size, write, left = size;
+       int i, ret = 0;
+       void *dp = buf;
+
+       /*
+        * Here we must call dfu_get_buf(dfu) first to be sure that dfu_buf_size
+        * has been properly initialized - e.g. if "dfu_bufsiz" has been taken
+        * into account.
+        */
+       dfu_get_buf(dfu);
+       dfu_buf_size = dfu_get_buf_size();
+       debug("%s: dfu buf size: %lu\n", __func__, dfu_buf_size);
+
+       for (i = 0; left > 0; i++) {
+               write = min(dfu_buf_size, left);
+
+               debug("%s: dp: 0x%p left: %lu write: %lu\n", __func__,
+                     dp, left, write);
+               ret = dfu_write(dfu, dp, write, i);
+               if (ret) {
+                       error("DFU write failed\n");
+                       return ret;
+               }
+
+               dp += write;
+               left -= write;
+       }
+
+       ret = dfu_flush(dfu, NULL, 0, i);
+       if (ret)
+               error("DFU flush failed!");
+
+       return ret;
+}
index 2a780f7b5d31ec7008e5ebde915b5a0ca3f083e4..5a9fb4a6e24780ed3fda556ca522cd697d5f90dc 100644 (file)
@@ -18,6 +18,7 @@
 
 static unsigned char *dfu_file_buf;
 static long dfu_file_buf_len;
+static long dfu_file_buf_filled;
 
 static int mmc_access_part(struct dfu_entity *dfu, struct mmc *mmc, int part)
 {
@@ -230,9 +231,12 @@ long dfu_get_medium_size_mmc(struct dfu_entity *dfu)
                return dfu->data.mmc.lba_size * dfu->data.mmc.lba_blk_size;
        case DFU_FS_FAT:
        case DFU_FS_EXT4:
+               dfu_file_buf_filled = -1;
                ret = mmc_file_op(DFU_OP_SIZE, dfu, NULL, &len);
                if (ret < 0)
                        return ret;
+               if (len > CONFIG_SYS_DFU_MAX_FILE_SIZE)
+                       return -1;
                return len;
        default:
                printf("%s: Layout (%s) not (yet) supported!\n", __func__,
@@ -241,6 +245,27 @@ long dfu_get_medium_size_mmc(struct dfu_entity *dfu)
        }
 }
 
+static int mmc_file_unbuffer(struct dfu_entity *dfu, u64 offset, void *buf,
+                            long *len)
+{
+       int ret;
+       long file_len;
+
+       if (dfu_file_buf_filled == -1) {
+               ret = mmc_file_op(DFU_OP_READ, dfu, dfu_file_buf, &file_len);
+               if (ret < 0)
+                       return ret;
+               dfu_file_buf_filled = file_len;
+       }
+       if (offset + *len > dfu_file_buf_filled)
+               return -EINVAL;
+
+       /* Add to the current buffer. */
+       memcpy(buf, dfu_file_buf + offset, *len);
+
+       return 0;
+}
+
 int dfu_read_medium_mmc(struct dfu_entity *dfu, u64 offset, void *buf,
                long *len)
 {
@@ -252,7 +277,7 @@ int dfu_read_medium_mmc(struct dfu_entity *dfu, u64 offset, void *buf,
                break;
        case DFU_FS_FAT:
        case DFU_FS_EXT4:
-               ret = mmc_file_op(DFU_OP_READ, dfu, buf, len);
+               ret = mmc_file_unbuffer(dfu, offset, buf, len);
                break;
        default:
                printf("%s: Layout (%s) not (yet) supported!\n", __func__,
diff --git a/drivers/dfu/dfu_tftp.c b/drivers/dfu/dfu_tftp.c
new file mode 100644 (file)
index 0000000..cd71708
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * (C) Copyright 2015
+ * Lukasz Majewski <l.majewski@majess.pl>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <malloc.h>
+#include <errno.h>
+#include <dfu.h>
+
+int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len,
+                  char *interface, char *devstring)
+{
+       char *s, *sb;
+       int alt_setting_num, ret;
+       struct dfu_entity *dfu;
+
+       debug("%s: name: %s addr: 0x%x len: %d device: %s:%s\n", __func__,
+             dfu_entity_name, addr, len, interface, devstring);
+
+       ret = dfu_init_env_entities(interface, devstring);
+       if (ret)
+               goto done;
+
+       /*
+        * We need to copy name pointed by *dfu_entity_name since this text
+        * is the integral part of the FDT image.
+        * Any implicit modification (i.e. done by strsep()) will corrupt
+        * the FDT image and prevent other images to be stored.
+        */
+       s = strdup(dfu_entity_name);
+       sb = s;
+       if (!s) {
+               ret = -ENOMEM;
+               goto done;
+       }
+
+       strsep(&s, "@");
+       debug("%s: image name: %s strlen: %d\n", __func__, sb, strlen(sb));
+
+       alt_setting_num = dfu_get_alt(sb);
+       free(sb);
+       if (alt_setting_num < 0) {
+               error("Alt setting [%d] to write not found!",
+                     alt_setting_num);
+               ret = -ENODEV;
+               goto done;
+       }
+
+       dfu = dfu_get_entity(alt_setting_num);
+       if (!dfu) {
+               error("DFU entity for alt: %d not found!", alt_setting_num);
+               ret = -ENODEV;
+               goto done;
+       }
+
+       ret = dfu_write_from_mem_addr(dfu, (void *)addr, len);
+
+done:
+       dfu_free_entities();
+
+       return ret;
+}
index 9a5d29debb91d271a1bfcf5dd3e0d8d791090c43..ef57a89ea2f4c897605f40754e6a9d6068a10633 100644 (file)
@@ -28,6 +28,15 @@ config LPC32XX_GPIO
        help
          Support for the LPC32XX GPIO driver.
 
+config ROCKCHIP_GPIO
+       bool "Rockchip GPIO driver"
+       depends on DM_GPIO
+       help
+         Support GPIO access on Rockchip SoCs. The GPIOs are arranged into
+         a number of banks (different for each SoC type) each with 32 GPIOs.
+         The GPIOs for a device are defined in the device tree with one node
+         for each bank.
+
 config SANDBOX_GPIO
        bool "Enable sandbox GPIO driver"
        depends on SANDBOX && DM && DM_GPIO
index ba185949bfda7a1cab7fb6eb4e8161a56d6760b6..c58aa4dfd5aa2d8f447e5946d55f431480a5de45 100644 (file)
@@ -21,6 +21,7 @@ obj-$(CONFIG_MXC_GPIO)        += mxc_gpio.o
 obj-$(CONFIG_MXS_GPIO) += mxs_gpio.o
 obj-$(CONFIG_PCA953X)          += pca953x.o
 obj-$(CONFIG_PCA9698)          += pca9698.o
+obj-$(CONFIG_ROCKCHIP_GPIO)    += rk_gpio.o
 obj-$(CONFIG_S5P)              += s5p_gpio.o
 obj-$(CONFIG_SANDBOX_GPIO)     += sandbox.o
 obj-$(CONFIG_SPEAR_GPIO)       += spear_gpio.o
index 8a9826e6ebf1c66a17a899e3d3fd5cee54ba9542..9674ee75f03185eca01bc5d942ba7acd6a011f01 100644 (file)
@@ -22,7 +22,7 @@
  *   read on another one.
 *
  * In order to keep this code simple, GPIOS are considered here as
- * homogeneous and linear, from 0 to 127.
+ * homogeneous and linear, from 0 to 159.
  *
  *     ** WARNING #1 **
  *
@@ -35,7 +35,7 @@
  * Please read NOTE in description of lpc32xx_gpio_get_function().
  */
 
-#define LPC32XX_GPIOS 128
+#define LPC32XX_GPIOS 160
 
 struct lpc32xx_gpio_priv {
        struct gpio_regs *regs;
@@ -45,11 +45,18 @@ struct lpc32xx_gpio_priv {
 
 /**
  * We have 4 GPIO ports of 32 bits each
+ *
+ * Port mapping offset (32 bits each):
+ * - Port 0: 0
+ * - Port 1: 32
+ * - Port 2: 64
+ * - Port 3: GPO / GPIO (output): 96
+ * - Port 3: GPI: 128
  */
 
-#define MAX_GPIO 128
+#define MAX_GPIO 160
 
-#define GPIO_TO_PORT(gpio) ((gpio / 32) & 3)
+#define GPIO_TO_PORT(gpio) ((gpio / 32) & 7)
 #define GPIO_TO_RANK(gpio) (gpio % 32)
 #define GPIO_TO_MASK(gpio) (1 << (gpio % 32))
 
@@ -75,9 +82,16 @@ static int lpc32xx_gpio_direction_input(struct udevice *dev, unsigned offset)
                break;
        case 2:
                /* ports 2 and 3 share a common direction */
-       case 3:
                writel(mask, &regs->p2_p3_dir_clr);
                break;
+       case 3:
+               /* Setup direction only for GPIO_xx. */
+               if ((mask >= 25) && (mask <= 30))
+                       writel(mask, &regs->p2_p3_dir_clr);
+               break;
+       case 4:
+               /* GPI_xx; nothing to do. */
+               break;
        default:
                return -1;
        }
@@ -111,6 +125,11 @@ static int lpc32xx_gpio_get_value(struct udevice *dev, unsigned offset)
                value = readl(&regs->p2_inp_state);
                break;
        case 3:
+               /* Read GPO_xx and GPIO_xx (as output) using p3_outp_state. */
+               value = readl(&regs->p3_outp_state);
+               break;
+       case 4:
+               /* Read GPI_xx and GPIO_xx (as input) using p3_inp_state. */
                value = readl(&regs->p3_inp_state);
                break;
        default:
@@ -149,6 +168,8 @@ static int gpio_set(struct udevice *dev, unsigned gpio)
        case 3:
                writel(mask, &regs->p3_outp_set);
                break;
+       case 4:
+               /* GPI_xx; invalid. */
        default:
                return -1;
        }
@@ -181,6 +202,8 @@ static int gpio_clr(struct udevice *dev, unsigned gpio)
        case 3:
                writel(mask, &regs->p3_outp_clr);
                break;
+       case 4:
+               /* GPI_xx; invalid. */
        default:
                return -1;
        }
@@ -223,9 +246,15 @@ static int lpc32xx_gpio_direction_output(struct udevice *dev, unsigned offset,
                break;
        case 2:
                /* ports 2 and 3 share a common direction */
-       case 3:
                writel(mask, &regs->p2_p3_dir_set);
                break;
+       case 3:
+               /* Setup direction only for GPIO_xx. */
+               if ((mask >= 25) && (mask <= 30))
+                       writel(mask, &regs->p2_p3_dir_set);
+               break;
+       case 4:
+               /* GPI_xx; invalid. */
        default:
                return -1;
        }
index 0c48320966b56f7f66d061d21bb9c440bfdbf545..70fe5b6a4e3ebb48f798091295d32ddce4ad59be 100644 (file)
@@ -40,16 +40,18 @@ static unsigned long gpio_ports[] = {
        [1] = GPIO2_BASE_ADDR,
        [2] = GPIO3_BASE_ADDR,
 #if defined(CONFIG_MX25) || defined(CONFIG_MX27) || defined(CONFIG_MX51) || \
-               defined(CONFIG_MX53) || defined(CONFIG_MX6)
+               defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
+               defined(CONFIG_MX7)
        [3] = GPIO4_BASE_ADDR,
 #endif
-#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6)
+#if defined(CONFIG_MX27) || defined(CONFIG_MX53) || defined(CONFIG_MX6) || \
+               defined(CONFIG_MX7)
        [4] = GPIO5_BASE_ADDR,
 #ifndef CONFIG_MX6UL
        [5] = GPIO6_BASE_ADDR,
 #endif
 #endif
-#if defined(CONFIG_MX53) || defined(CONFIG_MX6)
+#if defined(CONFIG_MX53) || defined(CONFIG_MX6) || defined(CONFIG_MX7)
 #ifndef CONFIG_MX6UL
        [6] = GPIO7_BASE_ADDR,
 #endif
diff --git a/drivers/gpio/rk_gpio.c b/drivers/gpio/rk_gpio.c
new file mode 100644 (file)
index 0000000..fbdf9f3
--- /dev/null
@@ -0,0 +1,123 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * (C) Copyright 2008-2014 Rockchip Electronics
+ * Peter, Software Engineering, <superpeter.cai@gmail.com>.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <asm/errno.h>
+#include <asm/gpio.h>
+#include <asm/io.h>
+#include <dt-bindings/gpio/gpio.h>
+
+enum {
+       ROCKCHIP_GPIOS_PER_BANK         = 32,
+};
+
+#define OFFSET_TO_BIT(bit)     (1UL << (bit))
+
+struct rockchip_gpio_priv {
+       struct rockchip_gpio_regs *regs;
+       char name[2];
+};
+
+static int rockchip_gpio_direction_input(struct udevice *dev, unsigned offset)
+{
+       struct rockchip_gpio_priv *priv = dev_get_priv(dev);
+       struct rockchip_gpio_regs *regs = priv->regs;
+
+       clrbits_le32(&regs->swport_ddr, OFFSET_TO_BIT(offset));
+
+       return 0;
+}
+
+static int rockchip_gpio_direction_output(struct udevice *dev, unsigned offset,
+                                         int value)
+{
+       struct rockchip_gpio_priv *priv = dev_get_priv(dev);
+       struct rockchip_gpio_regs *regs = priv->regs;
+       int mask = OFFSET_TO_BIT(offset);
+
+       clrsetbits_le32(&regs->swport_dr, mask, value ? mask : 0);
+       setbits_le32(&regs->swport_ddr, mask);
+
+       return 0;
+}
+
+static int rockchip_gpio_get_value(struct udevice *dev, unsigned offset)
+{
+       struct rockchip_gpio_priv *priv = dev_get_priv(dev);
+       struct rockchip_gpio_regs *regs = priv->regs;
+
+       return readl(&regs->ext_port) & OFFSET_TO_BIT(offset);
+}
+
+static int rockchip_gpio_set_value(struct udevice *dev, unsigned offset,
+                                  int value)
+{
+       struct rockchip_gpio_priv *priv = dev_get_priv(dev);
+       struct rockchip_gpio_regs *regs = priv->regs;
+       int mask = OFFSET_TO_BIT(offset);
+
+       clrsetbits_le32(&regs->swport_dr, mask, value ? mask : 0);
+
+       return 0;
+}
+
+static int rockchip_gpio_get_function(struct udevice *dev, unsigned offset)
+{
+       return -ENOSYS;
+}
+
+static int rockchip_gpio_xlate(struct udevice *dev, struct gpio_desc *desc,
+                           struct fdtdec_phandle_args *args)
+{
+       desc->offset = args->args[0];
+       desc->flags = args->args[1] & GPIO_ACTIVE_LOW ? GPIOD_ACTIVE_LOW : 0;
+
+       return 0;
+}
+
+static int rockchip_gpio_probe(struct udevice *dev)
+{
+       struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
+       struct rockchip_gpio_priv *priv = dev_get_priv(dev);
+       char *end;
+       int bank;
+
+       priv->regs = (struct rockchip_gpio_regs *)dev_get_addr(dev);
+       uc_priv->gpio_count = ROCKCHIP_GPIOS_PER_BANK;
+       end = strrchr(dev->name, '@');
+       bank = trailing_strtoln(dev->name, end);
+       priv->name[0] = 'A' + bank;
+       uc_priv->bank_name = priv->name;
+
+       return 0;
+}
+
+static const struct dm_gpio_ops gpio_rockchip_ops = {
+       .direction_input        = rockchip_gpio_direction_input,
+       .direction_output       = rockchip_gpio_direction_output,
+       .get_value              = rockchip_gpio_get_value,
+       .set_value              = rockchip_gpio_set_value,
+       .get_function           = rockchip_gpio_get_function,
+       .xlate                  = rockchip_gpio_xlate,
+};
+
+static const struct udevice_id rockchip_gpio_ids[] = {
+       { .compatible = "rockchip,gpio-bank" },
+       { }
+};
+
+U_BOOT_DRIVER(gpio_rockchip) = {
+       .name   = "gpio_rockchip",
+       .id     = UCLASS_GPIO,
+       .of_match = rockchip_gpio_ids,
+       .ops    = &gpio_rockchip_ops,
+       .priv_auto_alloc_size = sizeof(struct rockchip_gpio_priv),
+       .probe  = rockchip_gpio_probe,
+};
index 49b1054660ac81d467c6f0d7684d8269ff8a1092..17fcfbf4d3f62ac144152f908852ac034b363a17 100644 (file)
@@ -327,8 +327,7 @@ static int gpio_exynos_bind(struct udevice *parent)
        if (plat)
                return 0;
 
-       base = (struct s5p_gpio_bank *)fdtdec_get_addr(gd->fdt_blob,
-                                                  parent->of_offset, "reg");
+       base = (struct s5p_gpio_bank *)dev_get_addr(parent);
        for (node = fdt_first_subnode(blob, parent->of_offset), bank = base;
             node > 0;
             node = fdt_next_subnode(blob, node), bank++) {
index 57b78e55e23b9ef048bb4edd69ad110443ec9384..9d8f11ef302ac960d0a8ad1e36181508d05db83f 100644 (file)
@@ -285,8 +285,7 @@ static int gpio_sunxi_bind(struct udevice *parent)
                no_banks = SUNXI_GPIO_BANKS;
        }
 
-       ctlr = (struct sunxi_gpio_reg *)fdtdec_get_addr(gd->fdt_blob,
-                                                  parent->of_offset, "reg");
+       ctlr = (struct sunxi_gpio_reg *)dev_get_addr(parent);
        for (bank = 0; bank < no_banks; bank++) {
                struct sunxi_gpio_platdata *plat;
                struct udevice *dev;
index 8017e359f543dffb77ce17c97411414ed09afdd7..4921f0ff42e9706957ae6ca785187a3dcfc8e9ec 100644 (file)
@@ -343,8 +343,7 @@ static int gpio_tegra_bind(struct udevice *parent)
        if (!fdt_getprop(gd->fdt_blob, parent->of_offset, "interrupts", &len))
                return -EINVAL;
        bank_count = len / 3 / sizeof(u32);
-       ctlr = (struct gpio_ctlr *)fdtdec_get_addr(gd->fdt_blob,
-                                                  parent->of_offset, "reg");
+       ctlr = (struct gpio_ctlr *)dev_get_addr(parent);
        }
 #endif
        for (bank = 0; bank < bank_count; bank++) {
index c40bd5c1e069749b5d06aac02b89e12f2d2789b6..14adda2857d17dce774f87bec6254bb3fa1ba18f 100644 (file)
@@ -58,6 +58,15 @@ config DM_I2C_GPIO
          bindings are supported.
          Binding info: doc/device-tree-bindings/i2c/i2c-gpio.txt
 
+config SYS_I2C_ROCKCHIP
+       bool "Rockchip I2C driver"
+       depends on DM_I2C
+       help
+         Add support for the Rockchip I2C driver. This is used with various
+         Rockchip parts such as RK3126, RK3128, RK3036 and RK3288. All chips
+         have several I2C ports and all are provided, controled by the
+         device tree.
+
 config SYS_I2C_SANDBOX
        bool "Sandbox I2C driver"
        depends on SANDBOX && DM_I2C
index 9b45248e2e271bcf3387d61d4e75cb3bcf57bb39..8ce294b02a6d28b90c212036f997564ebb04c106 100644 (file)
@@ -31,6 +31,7 @@ obj-$(CONFIG_SYS_I2C_OMAP24XX) += omap24xx_i2c.o
 obj-$(CONFIG_SYS_I2C_OMAP34XX) += omap24xx_i2c.o
 obj-$(CONFIG_SYS_I2C_PPC4XX) += ppc4xx_i2c.o
 obj-$(CONFIG_SYS_I2C_RCAR) += rcar_i2c.o
+obj-$(CONFIG_SYS_I2C_ROCKCHIP) += rk_i2c.o
 obj-$(CONFIG_SYS_I2C_S3C24X0) += s3c24x0_i2c.o
 obj-$(CONFIG_SYS_I2C_SANDBOX) += sandbox_i2c.o i2c-emul-uclass.o
 obj-$(CONFIG_SYS_I2C_SH) += sh_i2c.o
diff --git a/drivers/i2c/rk_i2c.c b/drivers/i2c/rk_i2c.c
new file mode 100644 (file)
index 0000000..ebdba35
--- /dev/null
@@ -0,0 +1,391 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * (C) Copyright 2008-2014 Rockchip Electronics
+ * Peter, Software Engineering, <superpeter.cai@gmail.com>.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <errno.h>
+#include <i2c.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/i2c.h>
+#include <asm/arch/periph.h>
+#include <dm/pinctrl.h>
+#include <linux/sizes.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* i2c timerout */
+#define I2C_TIMEOUT_MS         100
+#define I2C_RETRY_COUNT                3
+
+/* rk i2c fifo max transfer bytes */
+#define RK_I2C_FIFO_SIZE       32
+
+struct rk_i2c {
+       struct udevice *clk;
+       struct udevice *pinctrl;
+       struct i2c_regs *regs;
+       unsigned int speed;
+       enum periph_id id;
+};
+
+static inline void rk_i2c_get_div(int div, int *divh, int *divl)
+{
+       *divl = div / 2;
+       if (div % 2 == 0)
+               *divh = div / 2;
+       else
+               *divh = DIV_ROUND_UP(div, 2);
+}
+
+/*
+ * SCL Divisor = 8 * (CLKDIVL+1 + CLKDIVH+1)
+ * SCL = PCLK / SCLK Divisor
+ * i2c_rate = PCLK
+ */
+static void rk_i2c_set_clk(struct rk_i2c *i2c, uint32_t scl_rate)
+{
+       uint32_t i2c_rate;
+       int div, divl, divh;
+
+       /* First get i2c rate from pclk */
+       i2c_rate = clk_get_periph_rate(i2c->clk, i2c->id);
+
+       div = DIV_ROUND_UP(i2c_rate, scl_rate * 8) - 2;
+       divh = 0;
+       divl = 0;
+       if (div >= 0)
+               rk_i2c_get_div(div, &divh, &divl);
+       writel(I2C_CLKDIV_VAL(divl, divh), &i2c->regs->clkdiv);
+
+       debug("rk_i2c_set_clk: i2c rate = %d, scl rate = %d\n", i2c_rate,
+             scl_rate);
+       debug("set i2c clk div = %d, divh = %d, divl = %d\n", div, divh, divl);
+       debug("set clk(I2C_CLKDIV: 0x%08x)\n", readl(&i2c->regs->clkdiv));
+}
+
+static void rk_i2c_show_regs(struct i2c_regs *regs)
+{
+#ifdef DEBUG
+       uint i;
+
+       debug("i2c_con: 0x%08x\n", readl(&regs->con));
+       debug("i2c_clkdiv: 0x%08x\n", readl(&regs->clkdiv));
+       debug("i2c_mrxaddr: 0x%08x\n", readl(&regs->mrxaddr));
+       debug("i2c_mrxraddR: 0x%08x\n", readl(&regs->mrxraddr));
+       debug("i2c_mtxcnt: 0x%08x\n", readl(&regs->mtxcnt));
+       debug("i2c_mrxcnt: 0x%08x\n", readl(&regs->mrxcnt));
+       debug("i2c_ien: 0x%08x\n", readl(&regs->ien));
+       debug("i2c_ipd: 0x%08x\n", readl(&regs->ipd));
+       debug("i2c_fcnt: 0x%08x\n", readl(&regs->fcnt));
+       for (i = 0; i < 8; i++)
+               debug("i2c_txdata%d: 0x%08x\n", i, readl(&regs->txdata[i]));
+       for (i = 0; i < 8; i++)
+               debug("i2c_rxdata%d: 0x%08x\n", i, readl(&regs->rxdata[i]));
+#endif
+}
+
+static int rk_i2c_send_start_bit(struct rk_i2c *i2c)
+{
+       struct i2c_regs *regs = i2c->regs;
+       ulong start;
+
+       debug("I2c Send Start bit.\n");
+       writel(I2C_IPD_ALL_CLEAN, &regs->ipd);
+
+       writel(I2C_CON_EN | I2C_CON_START, &regs->con);
+       writel(I2C_STARTIEN, &regs->ien);
+
+       start = get_timer(0);
+       while (1) {
+               if (readl(&regs->ipd) & I2C_STARTIPD) {
+                       writel(I2C_STARTIPD, &regs->ipd);
+                       break;
+               }
+               if (get_timer(start) > I2C_TIMEOUT_MS) {
+                       debug("I2C Send Start Bit Timeout\n");
+                       rk_i2c_show_regs(regs);
+                       return -ETIMEDOUT;
+               }
+               udelay(1);
+       }
+
+       return 0;
+}
+
+static int rk_i2c_send_stop_bit(struct rk_i2c *i2c)
+{
+       struct i2c_regs *regs = i2c->regs;
+       ulong start;
+
+       debug("I2c Send Stop bit.\n");
+       writel(I2C_IPD_ALL_CLEAN, &regs->ipd);
+
+       writel(I2C_CON_EN | I2C_CON_STOP, &regs->con);
+       writel(I2C_CON_STOP, &regs->ien);
+
+       start = get_timer(0);
+       while (1) {
+               if (readl(&regs->ipd) & I2C_STOPIPD) {
+                       writel(I2C_STOPIPD, &regs->ipd);
+                       break;
+               }
+               if (get_timer(start) > I2C_TIMEOUT_MS) {
+                       debug("I2C Send Start Bit Timeout\n");
+                       rk_i2c_show_regs(regs);
+                       return -ETIMEDOUT;
+               }
+               udelay(1);
+       }
+
+       return 0;
+}
+
+static inline void rk_i2c_disable(struct rk_i2c *i2c)
+{
+       writel(0, &i2c->regs->con);
+}
+
+static int rk_i2c_read(struct rk_i2c *i2c, uchar chip, uint reg, uint r_len,
+                      uchar *buf, uint b_len)
+{
+       struct i2c_regs *regs = i2c->regs;
+       uchar *pbuf = buf;
+       uint bytes_remain_len = b_len;
+       uint bytes_xferred = 0;
+       uint words_xferred = 0;
+       ulong start;
+       uint con = 0;
+       uint rxdata;
+       uint i, j;
+       int err;
+
+       debug("rk_i2c_read: chip = %d, reg = %d, r_len = %d, b_len = %d\n",
+             chip, reg, r_len, b_len);
+
+       err = rk_i2c_send_start_bit(i2c);
+       if (err)
+               return err;
+
+       writel(I2C_MRXADDR_SET(1, chip << 1 | 1), &regs->mrxaddr);
+       if (r_len == 0) {
+               writel(0, &regs->mrxraddr);
+       } else if (r_len < 4) {
+               writel(I2C_MRXRADDR_SET(r_len, reg), &regs->mrxraddr);
+       } else {
+               debug("I2C Read: addr len %d not supported\n", r_len);
+               return -EIO;
+       }
+
+       while (bytes_remain_len) {
+               if (bytes_remain_len > RK_I2C_FIFO_SIZE) {
+                       con = I2C_CON_EN | I2C_CON_MOD(I2C_MODE_TRX);
+                       bytes_xferred = 32;
+               } else {
+                       con = I2C_CON_EN | I2C_CON_MOD(I2C_MODE_TRX) |
+                               I2C_CON_LASTACK;
+                       bytes_xferred = bytes_remain_len;
+               }
+               words_xferred = DIV_ROUND_UP(bytes_xferred, 4);
+
+               writel(con, &regs->con);
+               writel(bytes_xferred, &regs->mrxcnt);
+               writel(I2C_MBRFIEN | I2C_NAKRCVIEN, &regs->ien);
+
+               start = get_timer(0);
+               while (1) {
+                       if (readl(&regs->ipd) & I2C_NAKRCVIPD) {
+                               writel(I2C_NAKRCVIPD, &regs->ipd);
+                               err = -EREMOTEIO;
+                       }
+                       if (readl(&regs->ipd) & I2C_MBRFIPD) {
+                               writel(I2C_MBRFIPD, &regs->ipd);
+                               break;
+                       }
+                       if (get_timer(start) > I2C_TIMEOUT_MS) {
+                               debug("I2C Read Data Timeout\n");
+                               err =  -ETIMEDOUT;
+                               rk_i2c_show_regs(regs);
+                               goto i2c_exit;
+                       }
+                       udelay(1);
+               }
+
+               for (i = 0; i < words_xferred; i++) {
+                       rxdata = readl(&regs->rxdata[i]);
+                       debug("I2c Read RXDATA[%d] = 0x%x\n", i, rxdata);
+                       for (j = 0; j < 4; j++) {
+                               if ((i * 4 + j) == bytes_xferred)
+                                       break;
+                               *pbuf++ = (rxdata >> (j * 8)) & 0xff;
+                       }
+               }
+
+               bytes_remain_len -= bytes_xferred;
+               debug("I2C Read bytes_remain_len %d\n", bytes_remain_len);
+       }
+
+i2c_exit:
+       rk_i2c_send_stop_bit(i2c);
+       rk_i2c_disable(i2c);
+
+       return err;
+}
+
+static int rk_i2c_write(struct rk_i2c *i2c, uchar chip, uint reg, uint r_len,
+                       uchar *buf, uint b_len)
+{
+       struct i2c_regs *regs = i2c->regs;
+       int err;
+       uchar *pbuf = buf;
+       uint bytes_remain_len = b_len + r_len + 1;
+       uint bytes_xferred = 0;
+       uint words_xferred = 0;
+       ulong start;
+       uint txdata;
+       uint i, j;
+
+       debug("rk_i2c_write: chip = %d, reg = %d, r_len = %d, b_len = %d\n",
+             chip, reg, r_len, b_len);
+       err = rk_i2c_send_start_bit(i2c);
+       if (err)
+               return err;
+
+       while (bytes_remain_len) {
+               if (bytes_remain_len > RK_I2C_FIFO_SIZE)
+                       bytes_xferred = 32;
+               else
+                       bytes_xferred = bytes_remain_len;
+               words_xferred = DIV_ROUND_UP(bytes_xferred, 4);
+
+               for (i = 0; i < words_xferred; i++) {
+                       txdata = 0;
+                       for (j = 0; j < 4; j++) {
+                               if ((i * 4 + j) == bytes_xferred)
+                                       break;
+
+                               if (i == 0 && j == 0) {
+                                       txdata |= (chip << 1);
+                               } else if (i == 0 && j <= r_len) {
+                                       txdata |= (reg &
+                                               (0xff << ((j - 1) * 8))) << 8;
+                               } else {
+                                       txdata |= (*pbuf++)<<(j * 8);
+                               }
+                               writel(txdata, &regs->txdata[i]);
+                       }
+                       debug("I2c Write TXDATA[%d] = 0x%x\n", i, txdata);
+               }
+
+               writel(I2C_CON_EN | I2C_CON_MOD(I2C_MODE_TX), &regs->con);
+               writel(bytes_xferred, &regs->mtxcnt);
+               writel(I2C_MBTFIEN | I2C_NAKRCVIEN, &regs->ien);
+
+               start = get_timer(0);
+               while (1) {
+                       if (readl(&regs->ipd) & I2C_NAKRCVIPD) {
+                               writel(I2C_NAKRCVIPD, &regs->ipd);
+                               err = -EREMOTEIO;
+                       }
+                       if (readl(&regs->ipd) & I2C_MBTFIPD) {
+                               writel(I2C_MBTFIPD, &regs->ipd);
+                               break;
+                       }
+                       if (get_timer(start) > I2C_TIMEOUT_MS) {
+                               debug("I2C Write Data Timeout\n");
+                               err =  -ETIMEDOUT;
+                               rk_i2c_show_regs(regs);
+                               goto i2c_exit;
+                       }
+                       udelay(1);
+               }
+
+               bytes_remain_len -= bytes_xferred;
+               debug("I2C Write bytes_remain_len %d\n", bytes_remain_len);
+       }
+
+i2c_exit:
+       rk_i2c_send_stop_bit(i2c);
+       rk_i2c_disable(i2c);
+
+       return err;
+}
+
+static int rockchip_i2c_xfer(struct udevice *bus, struct i2c_msg *msg,
+                            int nmsgs)
+{
+       struct rk_i2c *i2c = dev_get_priv(bus);
+       int ret;
+
+       debug("i2c_xfer: %d messages\n", nmsgs);
+       for (; nmsgs > 0; nmsgs--, msg++) {
+               debug("i2c_xfer: chip=0x%x, len=0x%x\n", msg->addr, msg->len);
+               if (msg->flags & I2C_M_RD) {
+                       ret = rk_i2c_read(i2c, msg->addr, 0, 0, msg->buf,
+                                         msg->len);
+               } else {
+                       ret = rk_i2c_write(i2c, msg->addr, 0, 0, msg->buf,
+                                          msg->len);
+               }
+               if (ret) {
+                       debug("i2c_write: error sending\n");
+                       return -EREMOTEIO;
+               }
+       }
+
+       return 0;
+}
+
+int rockchip_i2c_set_bus_speed(struct udevice *bus, unsigned int speed)
+{
+       struct rk_i2c *i2c = dev_get_priv(bus);
+
+       rk_i2c_set_clk(i2c, speed);
+
+       return 0;
+}
+
+static int rockchip_i2c_probe(struct udevice *bus)
+{
+       struct rk_i2c *i2c = dev_get_priv(bus);
+       int ret;
+
+       ret = uclass_get_device(UCLASS_PINCTRL, 0, &i2c->pinctrl);
+       if (ret)
+               return ret;
+       ret = uclass_get_device(UCLASS_CLK, 0, &i2c->clk);
+       if (ret)
+               return ret;
+       ret = pinctrl_get_periph_id(i2c->pinctrl, bus);
+       if (ret < 0)
+               return ret;
+       i2c->id = ret;
+       i2c->regs = (void *)dev_get_addr(bus);
+       return pinctrl_request(i2c->pinctrl, i2c->id, 0);
+}
+
+static const struct dm_i2c_ops rockchip_i2c_ops = {
+       .xfer           = rockchip_i2c_xfer,
+       .set_bus_speed  = rockchip_i2c_set_bus_speed,
+};
+
+static const struct udevice_id rockchip_i2c_ids[] = {
+       { .compatible = "rockchip,rk3288-i2c" },
+       { }
+};
+
+U_BOOT_DRIVER(i2c_rockchip) = {
+       .name   = "i2c_rockchip",
+       .id     = UCLASS_I2C,
+       .of_match = rockchip_i2c_ids,
+       .probe  = rockchip_i2c_probe,
+       .priv_auto_alloc_size = sizeof(struct rk_i2c),
+       .ops    = &rockchip_i2c_ops,
+};
index ae6f436385a616479db3096256613657c3d14665..dc9b661c1cf754632cc7d673c024f860332e60b4 100644 (file)
@@ -1397,12 +1397,10 @@ static int s3c_i2c_ofdata_to_platdata(struct udevice *dev)
 
        if (i2c_bus->is_highspeed) {
                flags = PINMUX_FLAG_HS_MODE;
-               i2c_bus->hsregs = (struct exynos5_hsi2c *)
-                               fdtdec_get_addr(blob, node, "reg");
+               i2c_bus->hsregs = (struct exynos5_hsi2c *)dev_get_addr(dev);
        } else {
                flags = 0;
-               i2c_bus->regs = (struct s3c24x0_i2c *)
-                               fdtdec_get_addr(blob, node, "reg");
+               i2c_bus->regs = (struct s3c24x0_i2c *)dev_get_addr(dev);
        }
 
        i2c_bus->id = pinmux_decode_periph_id(blob, node);
index a4289788a65cb7ae8e9583a03299c2b1b992ef41..2fa07f9c57c455d96121183eff05c02ba7d72b40 100644 (file)
@@ -339,7 +339,7 @@ static int tegra_i2c_probe(struct udevice *dev)
 
        i2c_bus->id = dev->seq;
        i2c_bus->type = dev_get_driver_data(dev);
-       i2c_bus->regs = (struct i2c_ctlr *)fdtdec_get_addr(blob, node, "reg");
+       i2c_bus->regs = (struct i2c_ctlr *)dev_get_addr(dev);
 
        /*
         * We don't have a binding for pinmux yet. Leave it out for now. So
index 2987337219d75d1dd19843d139528fb65aa3f0ec..fe74403460a94c95914fc5107fc79c667bd736ed 100644 (file)
@@ -11,7 +11,7 @@ config LED
 
 config SPL_LED
        bool "Enable LED support in SPL"
-       depends on LED
+       depends on SPL && SPL_DM
        help
          The LED subsystem adds a small amount of overhead to the image.
          If this is acceptable and you have a need to use LEDs in SPL,
@@ -27,4 +27,11 @@ config LED_GPIO
          The GPIO driver must used driver model. LEDs are configured using
          the device tree.
 
+config SPL_LED_GPIO
+       bool "LED support for GPIO-connected LEDs in SPL"
+        depends on SPL_LED && DM_GPIO
+       help
+         This option is an SPL-variant of the LED_GPIO option.
+         See the help of LED_GPIO for details.
+
 endmenu
index 990129e08d366d0ca54c049a03cbbee8ea71887b..02367fdacbc10e77abbe51979b2a40bc1fa2bc56 100644 (file)
@@ -5,5 +5,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-obj-$(CONFIG_LED) += led-uclass.o
-obj-$(CONFIG_LED_GPIO) += led_gpio.o
+obj-y += led-uclass.o
+obj-$(CONFIG_$(SPL_)LED_GPIO) += led_gpio.o
index f29a16977426bf60f666cd2ec7816fd3008943e7..8b38a84de6645ebaa37f0babce3687537c073d92 100644 (file)
@@ -59,7 +59,7 @@ config CROS_EC_SPI
          provides a faster and more robust interface than I2C but the bugs
          are less interesting.
 
-config CONFIG_FSL_SEC_MON
+config FSL_SEC_MON
        bool "Enable FSL SEC_MON Driver"
        help
          Freescale Security Monitor block is responsible for monitoring
index 5218b91c0baf8a957b11aaca86f5403fb25f4e82..8d0fc3c5cbcb7331e89ad435b921b7bf253d07a9 100644 (file)
@@ -35,3 +35,4 @@ obj-$(CONFIG_FSL_IFC) += fsl_ifc.o
 obj-$(CONFIG_FSL_SEC_MON) += fsl_sec_mon.o
 obj-$(CONFIG_PCA9551_LED) += pca9551_led.o
 obj-$(CONFIG_RESET) += reset-uclass.o
+obj-$(CONFIG_FSL_DEVICE_DISABLE) += fsl_devdis.o
index 44cd9b9fd4874777dd68d0f3266bd2aba042616c..a592891f26f0eb9799e646ad2846651166476997 100644 (file)
@@ -60,29 +60,29 @@ int debug_server_parse_firmware_fit_image(const void **raw_image_addr,
        /* Check if Image is in FIT format */
        format = genimg_get_format(fit_hdr);
        if (format != IMAGE_FORMAT_FIT) {
-               printf("Error! Not a FIT image\n");
+               printf("Debug Server FW: Not a FIT image\n");
                goto out_error;
        }
 
        if (!fit_check_format(fit_hdr)) {
-               printf("Error! Bad FIT image format\n");
+               printf("Debug Server FW: Bad FIT image format\n");
                goto out_error;
        }
 
        node_offset = fit_image_get_node(fit_hdr, uname);
        if (node_offset < 0) {
-               printf("Error! Can not find %s subimage\n", uname);
+               printf("Debug Server FW:Can not find %s subimage\n", uname);
                goto out_error;
        }
 
        /* Verify Debug Server firmware image */
        if (!fit_image_verify(fit_hdr, node_offset)) {
-               printf("Error! Bad Debug Server firmware hash");
+               printf("Debug Server FW: Bad Debug Server firmware hash");
                goto out_error;
        }
 
        if (fit_get_desc(fit_hdr, node_offset, &desc) < 0) {
-               printf("Error! Failed to get Debug Server fw description");
+               printf("Debug Server FW: Failed to get FW description");
                goto out_error;
        }
 
diff --git a/drivers/misc/fsl_devdis.c b/drivers/misc/fsl_devdis.c
new file mode 100644 (file)
index 0000000..996f45c
--- /dev/null
@@ -0,0 +1,29 @@
+/*
+ * Copyright 2015 Freescale Semiconductor, Inc.
+ * Author: Zhuoyu Zhang <Zhuoyu.Zhang@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch-ls102xa/immap_ls102xa.h>
+#include <asm/arch-ls102xa/config.h>
+#include <linux/compiler.h>
+#include <hwconfig.h>
+#include <fsl_devdis.h>
+
+void device_disable(const struct devdis_table *tbl, uint32_t num)
+{
+       int i;
+       struct ccsr_gur __iomem *gur = (void *)CONFIG_SYS_FSL_GUTS_ADDR;
+
+       /*
+        * Extract hwconfig from environment and disable unused device.
+        */
+       for (i = 0; i < num; i++) {
+               if (hwconfig_sub("devdis", tbl[i].name))
+                       setbits_be32(&gur->devdisr + tbl[i].offset,
+                               tbl[i].mask);
+       }
+}
+
index d92044eeda227a7eba57bdb6b8a7b72ce1fdf80f..65ff8158e59b137d6592a48adcbed7dd5598aef7 100644 (file)
 #define BM_CTRL_ERROR                  0x00000200
 #define BM_CTRL_BUSY                   0x00000100
 #define BO_CTRL_ADDR                   0
+#ifdef CONFIG_MX7
+#define BM_CTRL_ADDR                    0x0000000f
+#define BM_CTRL_RELOAD                  0x00000400
+#else
 #define BM_CTRL_ADDR                   0x0000007f
-
+#endif
+
+#ifdef CONFIG_MX7
+#define BO_TIMING_FSOURCE               12
+#define BM_TIMING_FSOURCE               0x0007f000
+#define BV_TIMING_FSOURCE_NS            1001
+#define BO_TIMING_PROG                  0
+#define BM_TIMING_PROG                  0x00000fff
+#define BV_TIMING_PROG_US               10
+#else
 #define BO_TIMING_STROBE_READ          16
 #define BM_TIMING_STROBE_READ          0x003f0000
 #define BV_TIMING_STROBE_READ_NS       37
@@ -36,6 +49,7 @@
 #define BO_TIMING_STROBE_PROG          0
 #define BM_TIMING_STROBE_PROG          0x00000fff
 #define BV_TIMING_STROBE_PROG_US       10
+#endif
 
 #define BM_READ_CTRL_READ_FUSE         0x00000001
 
 
 #define WRITE_POSTAMBLE_US             2
 
+#if defined(CONFIG_MX6) || defined(CONFIG_VF610)
+#define FUSE_BANK_SIZE 0x80
+#ifdef CONFIG_MX6SL
+#define FUSE_BANKS     8
+#else
+#define FUSE_BANKS     16
+#endif
+#elif defined CONFIG_MX7
+#define FUSE_BANK_SIZE 0x40
+#define FUSE_BANKS     16
+#else
+#error "Unsupported architecture\n"
+#endif
+
+#if defined(CONFIG_MX6)
+#include <asm/arch/sys_proto.h>
+
+/*
+ * There is a hole in shadow registers address map of size 0x100
+ * between bank 5 and bank 6 on iMX6QP, iMX6DQ, iMX6SDL, iMX6SX and iMX6UL.
+ * Bank 5 ends at 0x6F0 and Bank 6 starts at 0x800. When reading the fuses,
+ * we should account for this hole in address space.
+ *
+ * Similar hole exists between bank 14 and bank 15 of size
+ * 0x80 on iMX6QP, iMX6DQ, iMX6SDL and iMX6SX.
+ * Note: iMX6SL has only 0-7 banks and there is no hole.
+ * Note: iMX6UL doesn't have this one.
+ *
+ * This function is to covert user input to physical bank index.
+ * Only needed when read fuse, because we use register offset, so
+ * need to calculate real register offset.
+ * When write, no need to consider hole, always use the bank/word
+ * index from fuse map.
+ */
+u32 fuse_bank_physical(int index)
+{
+       u32 phy_index;
+
+       if (is_cpu_type(MXC_CPU_MX6SL)) {
+               phy_index = index;
+       } else if (is_cpu_type(MXC_CPU_MX6UL)) {
+               if (index >= 6)
+                       phy_index = fuse_bank_physical(5) + (index - 6) + 3;
+               else
+                       phy_index = index;
+       } else {
+               if (index >= 15)
+                       phy_index = fuse_bank_physical(14) + (index - 15) + 2;
+               else if (index >= 6)
+                       phy_index = fuse_bank_physical(5) + (index - 6) + 3;
+               else
+                       phy_index = index;
+       }
+       return phy_index;
+}
+#else
+u32 fuse_bank_physical(int index)
+{
+       return index;
+}
+#endif
+
 static void wait_busy(struct ocotp_regs *regs, unsigned int delay_us)
 {
        while (readl(&regs->ctrl) & BM_CTRL_BUSY)
@@ -59,9 +135,9 @@ static int prepare_access(struct ocotp_regs **regs, u32 bank, u32 word,
 {
        *regs = (struct ocotp_regs *)OCOTP_BASE_ADDR;
 
-       if (bank >= ARRAY_SIZE((*regs)->bank) ||
-                       word >= ARRAY_SIZE((*regs)->bank[0].fuse_regs) >> 2 ||
-                       !assert) {
+       if (bank >= FUSE_BANKS ||
+           word >= ARRAY_SIZE((*regs)->bank[0].fuse_regs) >> 2 ||
+           !assert) {
                printf("mxc_ocotp %s(): Invalid argument\n", caller);
                return -EINVAL;
        }
@@ -99,16 +175,38 @@ int fuse_read(u32 bank, u32 word, u32 *val)
 {
        struct ocotp_regs *regs;
        int ret;
+       u32 phy_bank;
 
        ret = prepare_read(&regs, bank, word, val, __func__);
        if (ret)
                return ret;
 
-       *val = readl(&regs->bank[bank].fuse_regs[word << 2]);
+       phy_bank = fuse_bank_physical(bank);
+
+       *val = readl(&regs->bank[phy_bank].fuse_regs[word << 2]);
 
        return finish_access(regs, __func__);
 }
 
+#ifdef CONFIG_MX7
+static void set_timing(struct ocotp_regs *regs)
+{
+       u32 ipg_clk;
+       u32 fsource, prog;
+       u32 timing;
+
+       ipg_clk = mxc_get_clock(MXC_IPG_CLK);
+
+       fsource = DIV_ROUND_UP((ipg_clk / 1000) * BV_TIMING_FSOURCE_NS,
+                       +       1000000) + 1;
+       prog = DIV_ROUND_CLOSEST(ipg_clk * BV_TIMING_PROG_US, 1000000) + 1;
+
+       timing = BF(fsource, TIMING_FSOURCE) | BF(prog, TIMING_PROG);
+
+       clrsetbits_le32(&regs->timing, BM_TIMING_FSOURCE | BM_TIMING_PROG,
+                       timing);
+}
+#else
 static void set_timing(struct ocotp_regs *regs)
 {
        u32 ipg_clk;
@@ -130,12 +228,17 @@ static void set_timing(struct ocotp_regs *regs)
        clrsetbits_le32(&regs->timing, BM_TIMING_STROBE_READ | BM_TIMING_RELAX |
                        BM_TIMING_STROBE_PROG, timing);
 }
+#endif
 
 static void setup_direct_access(struct ocotp_regs *regs, u32 bank, u32 word,
                                int write)
 {
        u32 wr_unlock = write ? BV_CTRL_WR_UNLOCK_KEY : 0;
+#ifdef CONFIG_MX7
+       u32 addr = bank;
+#else
        u32 addr = bank << 3 | word;
+#endif
 
        set_timing(regs);
        clrsetbits_le32(&regs->ctrl, BM_CTRL_WR_UNLOCK | BM_CTRL_ADDR,
@@ -155,7 +258,11 @@ int fuse_sense(u32 bank, u32 word, u32 *val)
        setup_direct_access(regs, bank, word, false);
        writel(BM_READ_CTRL_READ_FUSE, &regs->read_ctrl);
        wait_busy(regs, 1);
+#ifdef CONFIG_MX7
+       *val = readl((&regs->read_fuse_data0) + (word << 2));
+#else
        *val = readl(&regs->read_fuse_data);
+#endif
 
        return finish_access(regs, __func__);
 }
@@ -176,8 +283,38 @@ int fuse_prog(u32 bank, u32 word, u32 val)
                return ret;
 
        setup_direct_access(regs, bank, word, true);
+#ifdef CONFIG_MX7
+       switch (word) {
+       case 0:
+               writel(0, &regs->data1);
+               writel(0, &regs->data2);
+               writel(0, &regs->data3);
+               writel(val, &regs->data0);
+               break;
+       case 1:
+               writel(val, &regs->data1);
+               writel(0, &regs->data2);
+               writel(0, &regs->data3);
+               writel(0, &regs->data0);
+               break;
+       case 2:
+               writel(0, &regs->data1);
+               writel(val, &regs->data2);
+               writel(0, &regs->data3);
+               writel(0, &regs->data0);
+               break;
+       case 3:
+               writel(0, &regs->data1);
+               writel(0, &regs->data2);
+               writel(val, &regs->data3);
+               writel(0, &regs->data0);
+               break;
+       }
+       wait_busy(regs, BV_TIMING_PROG_US);
+#else
        writel(val, &regs->data);
        wait_busy(regs, BV_TIMING_STROBE_PROG_US);
+#endif
        udelay(WRITE_POSTAMBLE_US);
 
        return finish_access(regs, __func__);
@@ -187,12 +324,15 @@ int fuse_override(u32 bank, u32 word, u32 val)
 {
        struct ocotp_regs *regs;
        int ret;
+       u32 phy_bank;
 
        ret = prepare_write(&regs, bank, word, __func__);
        if (ret)
                return ret;
 
-       writel(val, &regs->bank[bank].fuse_regs[word << 2]);
+       phy_bank = fuse_bank_physical(bank);
+
+       writel(val, &regs->bank[phy_bank].fuse_regs[word << 2]);
 
        return finish_access(regs, __func__);
 }
index 6f0a1d3e6da836c84ef59abc7644ca9adfda3830..6c0d247ed22021cb022cd923bb2139ce94a7991d 100644 (file)
@@ -152,6 +152,7 @@ static int mxs_ocotp_scale_hclk(bool enter, uint32_t *val)
                /* Return the original HCLK clock speed. */
                *val = readl(&clkctrl_regs->hw_clkctrl_hbus);
                *val &= CLKCTRL_HBUS_DIV_MASK;
+               *val >>= CLKCTRL_HBUS_DIV_OFFSET;
 
                /* Scale the HCLK to 454/19 = 23.9 MHz . */
                scale_val = (~19) << CLKCTRL_HBUS_DIV_OFFSET;
index 3e835f7bca0b6c374e94a7b0f09c7d51654fad2e..6277f92ef5b7cd911ba0cc82e575da41353be271 100644 (file)
@@ -10,6 +10,15 @@ config DM_MMC
          appear as block devices in U-Boot and can support filesystems such
          as EXT4 and FAT.
 
+config ROCKCHIP_DWMMC
+       bool "Rockchip SD/MMC controller support"
+       depends on DM_MMC && OF_CONTROL
+       help
+         This enables support for the Rockchip SD/MMM controller, which is
+         based on Designware IP. The device is compatible with at least
+         SD 3.0, SDIO 3.0 and MMC 4.5 and supports common eMMC chips as well
+         as removeable SD and micro-SD cards.
+
 config SH_SDHI
        bool "SuperH/Renesas ARM SoCs on-chip SDHI host controller support"
        depends on RMOBILE
index cae207c303460c7fcca0f04e07c41a96ccf6d960..99d02954ed6b6fb9287f2104dc14db987144fa09 100644 (file)
@@ -29,6 +29,7 @@ obj-$(CONFIG_MXS_MMC) += mxsmmc.o
 obj-$(CONFIG_OMAP_HSMMC) += omap_hsmmc.o
 obj-$(CONFIG_X86) += pci_mmc.o
 obj-$(CONFIG_PXA_MMC_GENERIC) += pxa_mmc_gen.o
+obj-$(CONFIG_ROCKCHIP_DWMMC) += rockchip_dw_mmc.o
 obj-$(CONFIG_SUPPORT_EMMC_RPMB) += rpmb.o
 obj-$(CONFIG_S3C_SDI) += s3c_sdi.o
 obj-$(CONFIG_S5P_SDHCI) += s5p_sdhci.o
index 77b87e0365be110beef432eb608d375fa2dc51b1..a84c1e16d8b706332c86db4a439227d3601027cb 100644 (file)
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <errno.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <mmc.h>
 #include <dwmmc.h>
 #include <asm-generic/errno.h>
@@ -266,7 +267,7 @@ static int dwmci_setup_bus(struct dwmci_host *host, u32 freq)
         * host->bus_hz should be set by user.
         */
        if (host->get_mmc_clk)
-               sclk = host->get_mmc_clk(host);
+               sclk = host->get_mmc_clk(host, freq);
        else if (host->bus_hz)
                sclk = host->bus_hz;
        else {
index cde2ba7118f16adbae2262bdadc9f4929f298c89..863bbb3f64b27ea6ef1e860a7a7bd743426567ba 100644 (file)
@@ -39,7 +39,7 @@ static void exynos_dwmci_clksel(struct dwmci_host *host)
        dwmci_writel(host, DWMCI_CLKSEL, priv->sdr_timing);
 }
 
-unsigned int exynos_dwmci_get_clk(struct dwmci_host *host)
+unsigned int exynos_dwmci_get_clk(struct dwmci_host *host, uint freq)
 {
        unsigned long sclk;
        int8_t clk_div;
index f12546ac51925a9e249ffb1a8fbdf8cd6f91ea04..2a58702848b7f977bd3d10b12bd9138287fc1df5 100644 (file)
 #include <config.h>
 #include <common.h>
 #include <command.h>
+#include <dm.h>
+#include <dm/device-internal.h>
 #include <errno.h>
 #include <mmc.h>
 #include <part.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <linux/list.h>
 #include <div64.h>
 #include "mmc_private.h"
@@ -1759,10 +1762,44 @@ static void do_preinit(void)
        }
 }
 
+#if defined(CONFIG_DM_MMC) && defined(CONFIG_SPL_BUILD)
+static int mmc_probe(bd_t *bis)
+{
+       return 0;
+}
+#elif defined(CONFIG_DM_MMC)
+static int mmc_probe(bd_t *bis)
+{
+       int ret;
+       struct uclass *uc;
+       struct udevice *m;
+
+       ret = uclass_get(UCLASS_MMC, &uc);
+       if (ret)
+               return ret;
+
+       uclass_foreach_dev(m, uc) {
+               ret = device_probe(m);
+               if (ret)
+                       printf("%s - probe failed: %d\n", m->name, ret);
+       }
+
+       return 0;
+}
+#else
+static int mmc_probe(bd_t *bis)
+{
+       if (board_mmc_init(bis) < 0)
+               cpu_mmc_init(bis);
+
+       return 0;
+}
+#endif
 
 int mmc_initialize(bd_t *bis)
 {
        static int initialized = 0;
+       int ret;
        if (initialized)        /* Avoid initializing mmc multiple times */
                return 0;
        initialized = 1;
@@ -1770,10 +1807,9 @@ int mmc_initialize(bd_t *bis)
        INIT_LIST_HEAD (&mmc_devices);
        cur_dev_num = 0;
 
-#ifndef CONFIG_DM_MMC
-       if (board_mmc_init(bis) < 0)
-               cpu_mmc_init(bis);
-#endif
+       ret = mmc_probe(bis);
+       if (ret)
+               return ret;
 
 #ifndef CONFIG_SPL_BUILD
        print_mmc_devices(',');
diff --git a/drivers/mmc/rockchip_dw_mmc.c b/drivers/mmc/rockchip_dw_mmc.c
new file mode 100644 (file)
index 0000000..f11c8e0
--- /dev/null
@@ -0,0 +1,98 @@
+/*
+ * Copyright (c) 2013 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <dwmmc.h>
+#include <errno.h>
+#include <syscon.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/periph.h>
+#include <linux/err.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct rockchip_dwmmc_priv {
+       struct udevice *clk;
+       struct rk3288_grf *grf;
+       struct dwmci_host host;
+};
+
+static uint rockchip_dwmmc_get_mmc_clk(struct dwmci_host *host, uint freq)
+{
+       struct udevice *dev = host->priv;
+       struct rockchip_dwmmc_priv *priv = dev_get_priv(dev);
+       int ret;
+
+       ret = clk_set_periph_rate(priv->clk, PERIPH_ID_SDMMC0 + host->dev_index,
+                                 freq);
+       if (ret < 0) {
+               debug("%s: err=%d\n", __func__, ret);
+               return ret;
+       }
+
+       return freq;
+}
+
+static int rockchip_dwmmc_ofdata_to_platdata(struct udevice *dev)
+{
+       struct rockchip_dwmmc_priv *priv = dev_get_priv(dev);
+       struct dwmci_host *host = &priv->host;
+
+       host->name = dev->name;
+       host->ioaddr = (void *)dev_get_addr(dev);
+       host->buswidth = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
+                                       "bus-width", 4);
+       host->get_mmc_clk = rockchip_dwmmc_get_mmc_clk;
+       host->priv = dev;
+
+       /* TODO(sjg@chromium.org): Remove the need for this hack */
+       host->dev_index = (ulong)host->ioaddr == 0xff0f0000 ? 0 : 1;
+
+       return 0;
+}
+
+static int rockchip_dwmmc_probe(struct udevice *dev)
+{
+       struct mmc_uclass_priv *upriv = dev_get_uclass_priv(dev);
+       struct rockchip_dwmmc_priv *priv = dev_get_priv(dev);
+       struct dwmci_host *host = &priv->host;
+       u32 minmax[2];
+       int ret;
+
+       priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+       if (IS_ERR(priv->grf))
+               return PTR_ERR(priv->grf);
+       ret = uclass_get_device(UCLASS_CLK, CLK_GENERAL, &priv->clk);
+       if (ret)
+               return ret;
+
+       ret = fdtdec_get_int_array(gd->fdt_blob, dev->of_offset,
+                                  "clock-freq-min-max", minmax, 2);
+       if (!ret)
+               ret = add_dwmci(host, minmax[1], minmax[0]);
+       if (ret)
+               return ret;
+
+       upriv->mmc = host->mmc;
+
+       return 0;
+}
+
+static const struct udevice_id rockchip_dwmmc_ids[] = {
+       { .compatible = "rockchip,rk3288-dw-mshc" },
+       { }
+};
+
+U_BOOT_DRIVER(rockchip_dwmmc_drv) = {
+       .name           = "rockchip_dwmmc",
+       .id             = UCLASS_MMC,
+       .of_match       = rockchip_dwmmc_ids,
+       .ofdata_to_platdata = rockchip_dwmmc_ofdata_to_platdata,
+       .probe          = rockchip_dwmmc_probe,
+       .priv_auto_alloc_size = sizeof(struct rockchip_dwmmc_priv),
+};
index 9d0b8bc0c8f9b41fd91185729e87c3777e8c7a23..1c6888fc48f9370a2befa194743ea69d3be6926b 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <config.h>
 #include <common.h>
+#include <memalign.h>
 #include <mmc.h>
 #include <u-boot/sha256.h>
 #include "mmc_private.h"
index eb69aed9dfb48cfa462489eb3e7fe99664e2d234..8076761e06e0d44bcc0924864d94c40c450a434e 100644 (file)
@@ -6,6 +6,8 @@
 
 #include <common.h>
 #include <malloc.h>
+#include <fdtdec.h>
+#include <libfdt.h>
 #include <dwmmc.h>
 #include <errno.h>
 #include <asm/arch/dwmmc.h>
@@ -42,34 +44,87 @@ static void socfpga_dwmci_clksel(struct dwmci_host *host)
                CLKMGR_PERPLLGRP_EN_SDMMCCLK_MASK);
 }
 
-int socfpga_dwmmc_init(u32 regbase, int bus_width, int index)
+static int socfpga_dwmci_of_probe(const void *blob, int node, const int idx)
 {
+       /* FIXME: probe from DT eventually too/ */
+       const unsigned long clk = cm_get_mmc_controller_clk_hz();
+
        struct dwmci_host *host;
-       unsigned long clk = cm_get_mmc_controller_clk_hz();
+       fdt_addr_t reg_base;
+       int bus_width, fifo_depth;
 
        if (clk == 0) {
-               printf("%s: MMC clock is zero!", __func__);
+               printf("DWMMC%d: MMC clock is zero!", idx);
                return -EINVAL;
        }
 
-       /* calloc for zero init */
-       host = calloc(1, sizeof(struct dwmci_host));
-       if (!host) {
-               printf("%s: calloc() failed!\n", __func__);
-               return -ENOMEM;
+       /* Get the register address from the device node */
+       reg_base = fdtdec_get_addr(blob, node, "reg");
+       if (!reg_base) {
+               printf("DWMMC%d: Can't get base address\n", idx);
+               return -EINVAL;
+       }
+
+       /* Get the bus width from the device node */
+       bus_width = fdtdec_get_int(blob, node, "bus-width", 0);
+       if (bus_width <= 0) {
+               printf("DWMMC%d: Can't get bus-width\n", idx);
+               return -EINVAL;
        }
 
+       fifo_depth = fdtdec_get_int(blob, node, "fifo-depth", 0);
+       if (fifo_depth < 0) {
+               printf("DWMMC%d: Can't get FIFO depth\n", idx);
+               return -EINVAL;
+       }
+
+       /* Allocate the host */
+       host = calloc(1, sizeof(*host));
+       if (!host)
+               return -ENOMEM;
+
        host->name = "SOCFPGA DWMMC";
-       host->ioaddr = (void *)regbase;
+       host->ioaddr = (void *)reg_base;
        host->buswidth = bus_width;
        host->clksel = socfpga_dwmci_clksel;
-       host->dev_index = index;
-       /* fixed clock divide by 4 which due to the SDMMC wrapper */
+       host->dev_index = idx;
+       /* Fixed clock divide by 4 which due to the SDMMC wrapper */
        host->bus_hz = clk;
        host->fifoth_val = MSIZE(0x2) |
-               RX_WMARK(CONFIG_SOCFPGA_DWMMC_FIFO_DEPTH / 2 - 1) |
-               TX_WMARK(CONFIG_SOCFPGA_DWMMC_FIFO_DEPTH / 2);
+               RX_WMARK(fifo_depth / 2 - 1) | TX_WMARK(fifo_depth / 2);
 
        return add_dwmci(host, host->bus_hz, 400000);
 }
 
+static int socfpga_dwmci_process_node(const void *blob, int nodes[],
+                                     int count)
+{
+       int i, node, ret;
+
+       for (i = 0; i < count; i++) {
+               node = nodes[i];
+               if (node <= 0)
+                       continue;
+
+               ret = socfpga_dwmci_of_probe(blob, node, i);
+               if (ret) {
+                       printf("%s: failed to decode dev %d\n", __func__, i);
+                       return ret;
+               }
+       }
+       return 0;
+}
+
+int socfpga_dwmmc_init(const void *blob)
+{
+       int nodes[2];   /* Max. two controllers. */
+       int ret, count;
+
+       count = fdtdec_find_aliases_for_id(blob, "mmc",
+                                          COMPAT_ALTERA_SOCFPGA_DWMMC,
+                                          nodes, ARRAY_SIZE(nodes));
+
+       ret = socfpga_dwmci_process_node(blob, nodes, count);
+
+       return ret;
+}
index f9b9493c892152dcdc958cb5da65feb46191dace..25f18adb67257359160803e92733a7ebaa938ac2 100644 (file)
@@ -257,9 +257,11 @@ static int mmc_trans_data_by_cpu(struct mmc *mmc, struct mmc_data *data)
        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);
+       unsigned byte_cnt = data->blocksize * data->blocks;
+       unsigned timeout_msecs = byte_cnt >> 8;
+       if (timeout_msecs < 2000)
+               timeout_msecs = 2000;
 
        /* Always read / write data through the CPU */
        setbits_le32(&mmchost->reg->gctrl, SUNXI_MMC_GCTRL_ACCESS_BY_AHB);
index b6dfb0e8351be5bfc482c3d7cffc2613888d71f2..9a74064c98b5d13bb73cda2bb1a46f3aaf0cd643 100644 (file)
@@ -63,6 +63,14 @@ config NAND_PXA3XX
          This enables the driver for the NAND flash device found on
          PXA3xx processors (NFCv1) and also on Armada 370/XP (NFCv2).
 
+config NAND_SUNXI
+       bool "Support for NAND on Allwinner SoCs in SPL"
+       depends on MACH_SUN4I || MACH_SUN5I || MACH_SUN7I
+       select SYS_NAND_SELF_INIT
+       ---help---
+       Enable support for NAND. This option allows SPL to read from
+       sunxi NAND using DMA transfers.
+
 comment "Generic NAND options"
 
 # Enhance depends when converting drivers to Kconfig which use this config
@@ -84,6 +92,15 @@ config SYS_NAND_BUSWIDTH_16BIT
            not available while configuring controller. So a static CONFIG_NAND_xx
            is needed to know the device's bus-width in advance.
 
+# Enhance depends when converting drivers to Kconfig which use this config
+config SYS_NAND_U_BOOT_OFFS
+       hex "Location in NAND to read U-Boot from"
+       default 0x8000 if NAND_SUNXI
+       depends on NAND_SUNXI
+       help
+       Set the offset from the start of the nand where u-boot should be
+       loaded from.
+
 if SPL
 
 config SPL_NAND_DENALI
@@ -92,46 +109,6 @@ config SPL_NAND_DENALI
          This is a small implementation of the Denali NAND controller
          for use on SPL.
 
-config SPL_NAND_SUNXI
-       bool "Support for NAND on Allwinner A20 in SPL"
-       depends on MACH_SUN7I
-       ---help---
-       Enable support for NAND. This option allows SPL to read from
-       sunxi NAND using DMA transfers.
-       Depending on the NAND chip, values like ECC strength and page sizes
-       have to be configured.
-
-config NAND_SUNXI_SPL_SYNDROME_PARTITIONS_END
-       hex "Size of syndrome partitions in sunxi NAND"
-       default 0x400000
-       depends on SPL_NAND_SUNXI
-       ---help---
-       End address for boot partitions on NAND. Those partitions have a
-       different random seed that has to match the sunxi BROM setting.
-
-config NAND_SUNXI_SPL_ECC_STRENGTH
-       int "ECC Strength for sunxi NAND"
-       default 40
-       depends on SPL_NAND_SUNXI
-       ---help---
-       ECC strength used by the sunxi NAND SPL driver. This is specific to the
-       chosen NAND chip and has to match the value used by the sunxi BROM.
-
-config NAND_SUNXI_SPL_ECC_PAGE_SIZE
-       hex "ECC page size for sunxi NAND"
-       default 0x400
-       depends on SPL_NAND_SUNXI
-       ---help---
-       ECC page size used by the sunxi NAND SPL driver for syndrome partitions.
-       This setting has to match the value used by the sunxi BROM.
-
-config NAND_SUNXI_SPL_PAGE_SIZE
-       hex "Page size for sunxi NAND"
-       default 0x2000
-       depends on SPL_NAND_SUNXI
-       ---help---
-       Page size of the NAND flash used by the sunxi NAND SPL driver. This is
-       specific to the chosen NAND chip.
 endif
 
 endmenu
index 64d1675d0a9c0b7c613749ca866d4b0f3d9d47b5..b4e537617666ac2ab5e1814758bf1a921c1096a3 100644 (file)
@@ -12,7 +12,6 @@ NORMAL_DRIVERS=y
 endif
 
 obj-$(CONFIG_SPL_NAND_AM33XX_BCH) += am335x_spl_bch.o
-obj-$(CONFIG_SPL_NAND_SUNXI) += sunxi_nand_spl.o
 obj-$(CONFIG_SPL_NAND_DENALI) += denali_spl.o
 obj-$(CONFIG_SPL_NAND_DOCG4) += docg4_spl.o
 obj-$(CONFIG_SPL_NAND_SIMPLE) += nand_spl_simple.o
@@ -61,7 +60,6 @@ obj-$(CONFIG_NAND_VF610_NFC) += vf610_nfc.o
 obj-$(CONFIG_NAND_MXC) += mxc_nand.o
 obj-$(CONFIG_NAND_MXS) += mxs_nand.o
 obj-$(CONFIG_NAND_NDFC) += ndfc.o
-obj-$(CONFIG_NAND_NOMADIK) += nomadik.o
 obj-$(CONFIG_NAND_PXA3XX) += pxa3xx_nand.o
 obj-$(CONFIG_NAND_S3C2410) += s3c2410_nand.o
 obj-$(CONFIG_NAND_SPEAR) += spr_nand.o
@@ -77,5 +75,6 @@ obj-$(CONFIG_NAND_FSL_ELBC) += fsl_elbc_spl.o
 obj-$(CONFIG_NAND_FSL_IFC) += fsl_ifc_spl.o
 obj-$(CONFIG_NAND_MXC) += mxc_nand_spl.o
 obj-$(CONFIG_NAND_MXS) += mxs_nand_spl.o mxs_nand.o
+obj-$(CONFIG_NAND_SUNXI) += sunxi_nand_spl.o
 
 endif # drivers
index 567eff09140f4f091052e4472351ec382497e794..0976a67ff8383678bfc4447d4a9f810d57366ec4 100644 (file)
@@ -13,6 +13,7 @@
 #include <asm/io.h>
 #include <linux/bitops.h>
 #include <linux/err.h>
+#include <linux/mtd/nand_bch.h>
 #include <linux/mtd/nand_ecc.h>
 #include <linux/mtd/fsmc_nand.h>
 #include <asm/arch/hardware.h>
@@ -390,6 +391,45 @@ static int fsmc_read_page_hwecc(struct mtd_info *mtd, struct nand_chip *chip,
        return 0;
 }
 
+#ifndef CONFIG_SPL_BUILD
+/*
+ * fsmc_nand_switch_ecc - switch the ECC operation between different engines
+ *
+ * @eccstrength                - the number of bits that could be corrected
+ *                       (1 - HW, 4 - SW BCH4)
+ */
+int __maybe_unused fsmc_nand_switch_ecc(uint32_t eccstrength)
+{
+       struct nand_chip *nand;
+       struct mtd_info *mtd;
+       int err;
+
+       mtd = &nand_info[nand_curr_device];
+       nand = mtd->priv;
+
+       /* Setup the ecc configurations again */
+       if (eccstrength == 1) {
+               nand->ecc.mode = NAND_ECC_HW;
+               nand->ecc.bytes = 3;
+               nand->ecc.strength = 1;
+               nand->ecc.layout = &fsmc_ecc1_layout;
+               nand->ecc.correct = nand_correct_data;
+       } else {
+               nand->ecc.mode = NAND_ECC_SOFT_BCH;
+               nand->ecc.calculate = nand_bch_calculate_ecc;
+               nand->ecc.correct = nand_bch_correct_data;
+               nand->ecc.bytes = 7;
+               nand->ecc.strength = 4;
+               nand->ecc.layout = NULL;
+       }
+
+       /* Update NAND handling after ECC mode switch */
+       err = nand_scan_tail(mtd);
+
+       return err;
+}
+#endif /* CONFIG_SPL_BUILD */
+
 int fsmc_nand_init(struct nand_chip *nand)
 {
        static int chip_nr;
index 7a62cc33613c1f9e4eaac33da19e2b8c27bd74a3..abcedc210211f94d0dd0698a31a528f96d29092f 100644 (file)
@@ -16,7 +16,6 @@
 #define JZ_NAND_CMD_ADDR (JZ_NAND_DATA_ADDR + 0x8000)
 #define JZ_NAND_ADDR_ADDR (JZ_NAND_DATA_ADDR + 0x10000)
 
-#define BIT(x) (1 << (x))
 #define JZ_NAND_ECC_CTRL_ENCODING      BIT(3)
 #define JZ_NAND_ECC_CTRL_RS            BIT(2)
 #define JZ_NAND_ECC_CTRL_RESET         BIT(1)
index 21b4a618ce503c98bce2c861bc1e876941d83dc6..71285b6669416b1402ebd8b03f7b9957b47a37a4 100644 (file)
@@ -23,6 +23,7 @@
 #include <command.h>
 #include <watchdog.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <div64.h>
 
 #include <asm/errno.h>
diff --git a/drivers/mtd/nand/nomadik.c b/drivers/mtd/nand/nomadik.c
deleted file mode 100644 (file)
index a7cee51..0000000
+++ /dev/null
@@ -1,206 +0,0 @@
-/*
- * (C) Copyright 2007 STMicroelectronics, <www.st.com>
- * (C) Copyright 2009 Alessandro Rubini <rubini@unipv.it>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <nand.h>
-#include <asm/io.h>
-
-static inline int parity(int b) /* b is really a byte; returns 0 or ~0 */
-{
-       __asm__ __volatile__(
-               "eor   %0, %0, %0, lsr #4\n\t"
-               "eor   %0, %0, %0, lsr #2\n\t"
-               "eor   %0, %0, %0, lsr #1\n\t"
-               "ands  %0, %0, #1\n\t"
-               "subne %0, %0, #2\t"
-               : "=r" (b) : "0" (b));
-       return b;
-}
-
-/*
- * This is the ECC routine used in hardware, according to the manual.
- * HW claims to make the calculation but not the correction; so we must
- * recalculate the bytes for a comparison.
- */
-static int ecc512(const unsigned char *data, unsigned char *ecc)
-{
-       int gpar = 0;
-       int i, val, par;
-       int pbits = 0;          /* P8, P16, ... P2048 */
-       int pprime = 0;         /* P8', P16', ... P2048' */
-       int lowbits;            /* P1, P2, P4 and primes */
-
-       for (i = 0; i < 512; i++) {
-               par = parity((val = data[i]));
-               gpar ^= val;
-               pbits ^= (i & par);
-       }
-       /*
-        * Ok, now gpar is global parity (xor of all bytes)
-        * pbits are all the parity bits (non-prime ones)
-        */
-       par = parity(gpar);
-       pprime = pbits ^ par;
-       /* Put low bits in the right position for ecc[2] (bits 7..2) */
-       lowbits = 0
-               | (parity(gpar & 0xf0) & 0x80)  /* P4  */
-               | (parity(gpar & 0x0f) & 0x40)  /* P4' */
-               | (parity(gpar & 0xcc) & 0x20)  /* P2  */
-               | (parity(gpar & 0x33) & 0x10)  /* P2' */
-               | (parity(gpar & 0xaa) & 0x08)  /* P1  */
-               | (parity(gpar & 0x55) & 0x04); /* P1' */
-
-       ecc[2] = ~(lowbits | ((pbits & 0x100) >> 7) | ((pprime & 0x100) >> 8));
-       /* now intermix bits for ecc[1] (P1024..P128') and ecc[0] (P64..P8') */
-       ecc[1] = ~(    (pbits & 0x80) >> 0  | ((pprime & 0x80) >> 1)
-                   | ((pbits & 0x40) >> 1) | ((pprime & 0x40) >> 2)
-                   | ((pbits & 0x20) >> 2) | ((pprime & 0x20) >> 3)
-                   | ((pbits & 0x10) >> 3) | ((pprime & 0x10) >> 4));
-
-       ecc[0] = ~(    (pbits & 0x8) << 4  | ((pprime & 0x8) << 3)
-                   | ((pbits & 0x4) << 3) | ((pprime & 0x4) << 2)
-                   | ((pbits & 0x2) << 2) | ((pprime & 0x2) << 1)
-                   | ((pbits & 0x1) << 1) | ((pprime & 0x1) << 0));
-       return 0;
-}
-
-/* This is the method in the chip->ecc field */
-static int nomadik_ecc_calculate(struct mtd_info *mtd, const uint8_t *dat,
-                                uint8_t *ecc_code)
-{
-       return ecc512(dat, ecc_code);
-}
-
-static int nomadik_ecc_correct(struct mtd_info *mtd, uint8_t *dat,
-                               uint8_t *r_ecc, uint8_t *c_ecc)
-{
-       struct nand_chip *chip = mtd->priv;
-       uint32_t r, c, d, diff; /*read, calculated, xor of them */
-
-       if (!memcmp(r_ecc, c_ecc, chip->ecc.bytes))
-               return 0;
-
-       /* Reorder the bytes into ascending-order 24 bits -- see manual */
-       r = r_ecc[2] << 22 | r_ecc[1] << 14 | r_ecc[0] << 6 | r_ecc[2] >> 2;
-       c = c_ecc[2] << 22 | c_ecc[1] << 14 | c_ecc[0] << 6 | c_ecc[2] >> 2;
-       diff = (r ^ c) & ((1<<24)-1); /* use 24 bits only */
-
-       /* If 12 bits are different, one per pair, it's correctable */
-       if (((diff | (diff>>1)) & 0x555555) == 0x555555) {
-               int bit = ((diff & 2) >> 1)
-                       | ((diff & 0x8) >> 2) | ((diff & 0x20) >> 3);
-               int byte;
-
-               d = diff >> 6; /* remove bit-order info */
-               byte =  ((d & 2) >> 1)
-                       | ((d & 0x8) >> 2) | ((d & 0x20) >> 3)
-                       | ((d & 0x80) >> 4) | ((d & 0x200) >> 5)
-                       | ((d & 0x800) >> 6) | ((d & 0x2000) >> 7)
-                       | ((d & 0x8000) >> 8) | ((d & 0x20000) >> 9);
-               /* correct the single bit */
-               dat[byte] ^= 1<<bit;
-               return 0;
-       }
-       /* If 1 bit only differs, it's one bit error in ECC, ignore */
-       if ((diff ^ (1 << (ffs(diff) - 1))) == 0)
-               return 0;
-       /* Otherwise, uncorrectable */
-       return -1;
-}
-
-static void nomadik_ecc_hwctl(struct mtd_info *mtd, int mode)
-{ /* mandatory in the structure but not used here */ }
-
-
-/* This is the layout used by older installations, we keep compatible */
-struct nand_ecclayout nomadik_ecc_layout = {
-       .eccbytes = 3 * 4,
-       .eccpos = { /* each subpage has 16 bytes: pos 2,3,4 hosts ECC */
-               0x02, 0x03, 0x04,
-               0x12, 0x13, 0x14,
-               0x22, 0x23, 0x24,
-               0x32, 0x33, 0x34},
-       .oobfree = { {0x08, 0x08}, {0x18, 0x08}, {0x28, 0x08}, {0x38, 0x08} },
-};
-
-#define MASK_ALE       (1 << 24)       /* our ALE is AD21 */
-#define MASK_CLE       (1 << 23)       /* our CLE is AD22 */
-
-/* This is copied from the AT91SAM9 devices (Stelian Pop, Lead Tech Design) */
-static void nomadik_nand_hwcontrol(struct mtd_info *mtd,
-                                  int cmd, unsigned int ctrl)
-{
-       struct nand_chip *this = mtd->priv;
-       u32 pcr0 = readl(REG_FSMC_PCR0);
-
-       if (ctrl & NAND_CTRL_CHANGE) {
-               ulong IO_ADDR_W = (ulong) this->IO_ADDR_W;
-               IO_ADDR_W &= ~(MASK_ALE | MASK_CLE);
-
-               if (ctrl & NAND_CLE)
-                       IO_ADDR_W |= MASK_CLE;
-               if (ctrl & NAND_ALE)
-                       IO_ADDR_W |= MASK_ALE;
-
-               if (ctrl & NAND_NCE)
-                       writel(pcr0 | 0x4, REG_FSMC_PCR0);
-               else
-                       writel(pcr0 & ~0x4, REG_FSMC_PCR0);
-
-               this->IO_ADDR_W = (void *) IO_ADDR_W;
-               this->IO_ADDR_R = (void *) IO_ADDR_W;
-       }
-
-       if (cmd != NAND_CMD_NONE)
-               writeb(cmd, this->IO_ADDR_W);
-}
-
-/* Returns 1 when ready; upper layers timeout at 20ms with timer routines */
-static int nomadik_nand_ready(struct mtd_info *mtd)
-{
-       return 1; /* The ready bit is handled in hardware */
-}
-
-/* Copy a buffer 32bits at a time: faster than defualt method which is 8bit */
-static void nomadik_nand_read_buf(struct mtd_info *mtd, uint8_t *buf, int len)
-{
-       int i;
-       struct nand_chip *chip = mtd->priv;
-       u32 *p = (u32 *) buf;
-
-       len >>= 2;
-       writel(0, REG_FSMC_ECCR0);
-       for (i = 0; i < len; i++)
-               p[i] = readl(chip->IO_ADDR_R);
-}
-
-int board_nand_init(struct nand_chip *chip)
-{
-       /* Set up the FSMC_PCR0 for nand access*/
-       writel(0x0000004a, REG_FSMC_PCR0);
-       /* Set up FSMC_PMEM0, FSMC_PATT0 with timing data for access */
-       writel(0x00020401, REG_FSMC_PMEM0);
-       writel(0x00020404, REG_FSMC_PATT0);
-
-       chip->options = NAND_COPYBACK | NAND_CACHEPRG | NAND_NO_PADDING;
-       chip->cmd_ctrl = nomadik_nand_hwcontrol;
-       chip->dev_ready = nomadik_nand_ready;
-       /* The chip allows 32bit reads, so avoid the default 8bit copy */
-       chip->read_buf = nomadik_nand_read_buf;
-
-       /* ECC: follow the hardware-defined rulse, but do it in sw */
-       chip->ecc.mode = NAND_ECC_HW;
-       chip->ecc.bytes = 3;
-       chip->ecc.size = 512;
-       chip->ecc.strength = 1;
-       chip->ecc.layout = &nomadik_ecc_layout;
-       chip->ecc.calculate = nomadik_ecc_calculate;
-       chip->ecc.hwctl = nomadik_ecc_hwctl;
-       chip->ecc.correct = nomadik_ecc_correct;
-
-       return 0;
-}
index ac5f56d066fef5245050b4604f84e5155a064732..5985534e5f1546073baff720db1d99b1ec0e1bcc 100644 (file)
@@ -5,9 +5,10 @@
  * SPDX-License-Identifier:     GPL-2.0+
  */
 
+#include <asm/arch/clock.h>
+#include <asm/io.h>
 #include <common.h>
 #include <config.h>
-#include <asm/io.h>
 #include <nand.h>
 
 /* registers */
@@ -41,6 +42,8 @@
 #define NFC_CTL_EN                 (1 << 0)
 #define NFC_CTL_RESET              (1 << 1)
 #define NFC_CTL_RAM_METHOD         (1 << 14)
+#define NFC_CTL_PAGE_SIZE_MASK     (0xf << 8)
+#define NFC_CTL_PAGE_SIZE(a)       ((fls(a) - 11) << 8)
 
 
 #define NFC_ECC_EN                 (1 << 0)
@@ -64,7 +67,8 @@
 #define NFC_SEND_CMD3              (1 << 28)
 #define NFC_SEND_CMD4              (1 << 29)
 
-#define NFC_CMD_INT_FLAG           (1 << 1)
+#define NFC_ST_CMD_INT_FLAG        (1 << 1)
+#define NFC_ST_DMA_INT_FLAG        (1 << 2)
 
 #define NFC_READ_CMD_OFFSET         0
 #define NFC_RANDOM_READ_CMD0_OFFSET 8
@@ -85,6 +89,7 @@
 
 #define SUNXI_DMA_DDMA_CFG_REG_LOADING  (1 << 31)
 #define SUNXI_DMA_DDMA_CFG_REG_DMA_DEST_DATA_WIDTH_32 (2 << 25)
+#define SUNXI_DMA_DDMA_CFG_REG_DDMA_DST_DRQ_TYPE_DRAM (1 << 16)
 #define SUNXI_DMA_DDMA_CFG_REG_DMA_SRC_DATA_WIDTH_32 (2 << 9)
 #define SUNXI_DMA_DDMA_CFG_REG_DMA_SRC_ADDR_MODE_IO (1 << 5)
 #define SUNXI_DMA_DDMA_CFG_REG_DDMA_SRC_DRQ_TYPE_NFC (3 << 0)
 
 /* minimal "boot0" style NAND support for Allwinner A20 */
 
-/* temporary buffer in internal ram */
-unsigned char temp_buf[CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE]
-       __aligned(0x10) __section(".text#");
-
 /* random seed used by linux */
 const uint16_t random_seed[128] = {
        0x2b75, 0x0bd0, 0x5ca3, 0x62d1, 0x1c93, 0x07e9, 0x2162, 0x3a72,
@@ -156,6 +157,8 @@ void nand_init(void)
 {
        uint32_t val;
 
+       board_nand_init();
+
        val = readl(SUNXI_NFC_BASE + NFC_CTL);
        /* enable and reset CTL */
        writel(val | NFC_CTL_EN | NFC_CTL_RESET,
@@ -165,86 +168,49 @@ void nand_init(void)
                                 NFC_CTL_RESET, MAX_RETRIES)) {
                printf("Couldn't initialize nand\n");
        }
+
+       /* reset NAND */
+       writel(NFC_ST_CMD_INT_FLAG, SUNXI_NFC_BASE + NFC_ST);
+       writel(NFC_SEND_CMD1 | NFC_WAIT_FLAG | NAND_CMD_RESET,
+              SUNXI_NFC_BASE + NFC_CMD);
+
+       if (!check_value(SUNXI_NFC_BASE + NFC_ST, NFC_ST_CMD_INT_FLAG,
+                        MAX_RETRIES)) {
+               printf("Error timeout waiting for nand reset\n");
+               return;
+       }
+       writel(NFC_ST_CMD_INT_FLAG, SUNXI_NFC_BASE + NFC_ST);
 }
 
-static void nand_read_page(unsigned int real_addr, int syndrome,
-                          uint32_t *ecc_errors)
+static int nand_read_page(int page_size, int ecc_strength, int ecc_page_size,
+       int addr_cycles, uint32_t real_addr, dma_addr_t dst, int syndrome)
 {
        uint32_t val;
-       int ecc_off = 0;
+       int i, ecc_off = 0;
        uint16_t ecc_mode = 0;
        uint16_t rand_seed;
        uint32_t page;
        uint16_t column;
-       uint32_t oob_offset;
-
-       switch (CONFIG_NAND_SUNXI_SPL_ECC_STRENGTH) {
-       case 16:
-               ecc_mode = 0;
-               ecc_off = 0x20;
-               break;
-       case 24:
-               ecc_mode = 1;
-               ecc_off = 0x2e;
-               break;
-       case 28:
-               ecc_mode = 2;
-               ecc_off = 0x32;
-               break;
-       case 32:
-               ecc_mode = 3;
-               ecc_off = 0x3c;
-               break;
-       case 40:
-               ecc_mode = 4;
-               ecc_off = 0x4a;
-               break;
-       case 48:
-               ecc_mode = 4;
-               ecc_off = 0x52;
-               break;
-       case 56:
-               ecc_mode = 4;
-               ecc_off = 0x60;
-               break;
-       case 60:
-               ecc_mode = 4;
-               ecc_off = 0x0;
-               break;
-       case 64:
-               ecc_mode = 4;
-               ecc_off = 0x0;
-               break;
-       default:
-               ecc_mode = 0;
-               ecc_off = 0;
-       }
+       static const u8 strengths[] = { 16, 24, 28, 32, 40, 48, 56, 60, 64 };
 
-       if (ecc_off == 0) {
-               printf("Unsupported ECC strength (%d)!\n",
-                      CONFIG_NAND_SUNXI_SPL_ECC_STRENGTH);
-               return;
+       for (i = 0; i < ARRAY_SIZE(strengths); i++) {
+               if (ecc_strength == strengths[i]) {
+                       ecc_mode = i;
+                       break;
+               }
        }
 
-       /* clear temp_buf */
-       memset(temp_buf, 0, CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE);
+       /* HW ECC always request ECC bytes for 1024 bytes blocks */
+       ecc_off = DIV_ROUND_UP(ecc_strength * fls(8 * 1024), 8);
+       /* HW ECC always work with even numbers of ECC bytes */
+       ecc_off += (ecc_off & 1);
+       ecc_off += 4; /* prepad */
 
-       /* set CMD  */
-       writel(NFC_SEND_CMD1 | NFC_WAIT_FLAG | NAND_CMD_RESET,
-              SUNXI_NFC_BASE + NFC_CMD);
-
-       if (!check_value(SUNXI_NFC_BASE + NFC_ST, NFC_CMD_INT_FLAG,
-                        MAX_RETRIES)) {
-               printf("Error while initilizing command interrupt\n");
-               return;
-       }
-
-       page = real_addr / CONFIG_NAND_SUNXI_SPL_PAGE_SIZE;
-       column = real_addr % CONFIG_NAND_SUNXI_SPL_PAGE_SIZE;
+       page = real_addr / page_size;
+       column = real_addr % page_size;
 
        if (syndrome)
-               column += (column / CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE)
-                       * ecc_off;
+               column += (column / ecc_page_size) * ecc_off;
 
        /* clear ecc status */
        writel(0, SUNXI_NFC_BASE + NFC_ECC_ST);
@@ -262,15 +228,11 @@ static void nand_read_page(unsigned int real_addr, int syndrome,
        val = readl(SUNXI_NFC_BASE + NFC_CTL);
        writel(val | NFC_CTL_RAM_METHOD, SUNXI_NFC_BASE + NFC_CTL);
 
-       if (syndrome) {
-               writel(CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE,
+       if (!syndrome)
+               writel(page_size + (column / ecc_page_size) * ecc_off,
                       SUNXI_NFC_BASE + NFC_SPARE_AREA);
-       } else {
-               oob_offset = CONFIG_NAND_SUNXI_SPL_PAGE_SIZE
-                       + (column / CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE)
-                       * ecc_off;
-               writel(oob_offset, SUNXI_NFC_BASE + NFC_SPARE_AREA);
-       }
+
+       flush_dcache_range(dst, ALIGN(dst + ecc_page_size, ARCH_DMA_MINALIGN));
 
        /* SUNXI_DMA */
        writel(0x0, SUNXI_DMA_BASE + SUNXI_DMA_CFG_REG0); /* clr dma cmd */
@@ -278,15 +240,15 @@ static void nand_read_page(unsigned int real_addr, int syndrome,
        writel(SUNXI_NFC_BASE + NFC_IO_DATA,
               SUNXI_DMA_BASE + SUNXI_DMA_SRC_START_ADDR_REG0);
        /* read to RAM */
-       writel((uint32_t)temp_buf,
-              SUNXI_DMA_BASE + SUNXI_DMA_DEST_START_ADDRR_REG0);
+       writel(dst, SUNXI_DMA_BASE + SUNXI_DMA_DEST_START_ADDRR_REG0);
        writel(SUNXI_DMA_DDMA_PARA_REG_SRC_WAIT_CYC
                        | SUNXI_DMA_DDMA_PARA_REG_SRC_BLK_SIZE,
                        SUNXI_DMA_BASE + SUNXI_DMA_DDMA_PARA_REG0);
-       writel(CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE,
+       writel(ecc_page_size,
               SUNXI_DMA_BASE + SUNXI_DMA_DDMA_BC_REG0); /* 1kB */
        writel(SUNXI_DMA_DDMA_CFG_REG_LOADING
                | SUNXI_DMA_DDMA_CFG_REG_DMA_DEST_DATA_WIDTH_32
+               | SUNXI_DMA_DDMA_CFG_REG_DDMA_DST_DRQ_TYPE_DRAM
                | SUNXI_DMA_DDMA_CFG_REG_DMA_SRC_DATA_WIDTH_32
                | SUNXI_DMA_DDMA_CFG_REG_DMA_SRC_ADDR_MODE_IO
                | SUNXI_DMA_DDMA_CFG_REG_DDMA_SRC_DRQ_TYPE_NFC,
@@ -300,54 +262,135 @@ static void nand_read_page(unsigned int real_addr, int syndrome,
        writel(((page & 0xFFFF) << 16) | column,
               SUNXI_NFC_BASE + NFC_ADDR_LOW);
        writel((page >> 16) & 0xFF, SUNXI_NFC_BASE + NFC_ADDR_HIGH);
+       writel(NFC_ST_DMA_INT_FLAG, SUNXI_NFC_BASE + NFC_ST);
        writel(NFC_SEND_CMD1 | NFC_SEND_CMD2 | NFC_DATA_TRANS |
-               NFC_PAGE_CMD | NFC_WAIT_FLAG | (4 << NFC_ADDR_NUM_OFFSET) |
+               NFC_PAGE_CMD | NFC_WAIT_FLAG |
+               ((addr_cycles - 1) << NFC_ADDR_NUM_OFFSET) |
                NFC_SEND_ADR | NFC_DATA_SWAP_METHOD | (syndrome ? NFC_SEQ : 0),
                SUNXI_NFC_BASE + NFC_CMD);
 
-       if (!check_value(SUNXI_NFC_BASE + NFC_ST, (1 << 2),
+       if (!check_value(SUNXI_NFC_BASE + NFC_ST, NFC_ST_DMA_INT_FLAG,
                         MAX_RETRIES)) {
                printf("Error while initializing dma interrupt\n");
-               return;
+               return -1;
        }
+       writel(NFC_ST_DMA_INT_FLAG, SUNXI_NFC_BASE + NFC_ST);
 
        if (!check_value_negated(SUNXI_DMA_BASE + SUNXI_DMA_CFG_REG0,
                                 SUNXI_DMA_DDMA_CFG_REG_LOADING, MAX_RETRIES)) {
                printf("Error while waiting for dma transfer to finish\n");
-               return;
+               return -1;
        }
 
+       invalidate_dcache_range(dst,
+                               ALIGN(dst + ecc_page_size, ARCH_DMA_MINALIGN));
+
        if (readl(SUNXI_NFC_BASE + NFC_ECC_ST))
-               (*ecc_errors)++;
+               return -1;
+
+       return 0;
+}
+
+static int nand_read_ecc(int page_size, int ecc_strength, int ecc_page_size,
+       int addr_cycles, uint32_t offs, uint32_t size, void *dest, int syndrome)
+{
+       void *end = dest + size;
+
+       clrsetbits_le32(SUNXI_NFC_BASE + NFC_CTL, NFC_CTL_PAGE_SIZE_MASK,
+                       NFC_CTL_PAGE_SIZE(page_size));
+
+       for ( ;dest < end; dest += ecc_page_size, offs += ecc_page_size) {
+               if (nand_read_page(page_size, ecc_strength, ecc_page_size,
+                                  addr_cycles, offs, (dma_addr_t)dest,
+                                  syndrome))
+                       return -1;
+       }
+
+       return 0;
+}
+
+static int nand_read_buffer(uint32_t offs, unsigned int size, void *dest,
+                           int syndrome)
+{
+       const struct {
+               int page_size;
+               int ecc_strength;
+               int ecc_page_size;
+               int addr_cycles;
+       } nand_configs[] = {
+               {  8192, 40, 1024, 5 },
+               { 16384, 56, 1024, 5 },
+               {  8192, 24, 1024, 5 },
+               {  4096, 24, 1024, 5 },
+       };
+       static int nand_config = -1;
+       int i;
+
+       if (nand_config == -1) {
+               for (i = 0; i < ARRAY_SIZE(nand_configs); i++) {
+                       debug("nand: trying page %d ecc %d / %d addr %d: ",
+                             nand_configs[i].page_size,
+                             nand_configs[i].ecc_strength,
+                             nand_configs[i].ecc_page_size,
+                             nand_configs[i].addr_cycles);
+                       if (nand_read_ecc(nand_configs[i].page_size,
+                                         nand_configs[i].ecc_strength,
+                                         nand_configs[i].ecc_page_size,
+                                         nand_configs[i].addr_cycles,
+                                         offs, size, dest, syndrome) == 0) {
+                               debug("success\n");
+                               nand_config = i;
+                               return 0;
+                       }
+                       debug("failed\n");
+               }
+               return -1;
+       }
+
+       return nand_read_ecc(nand_configs[nand_config].page_size,
+                            nand_configs[nand_config].ecc_strength,
+                            nand_configs[nand_config].ecc_page_size,
+                            nand_configs[nand_config].addr_cycles,
+                            offs, size, dest, syndrome);
 }
 
 int nand_spl_load_image(uint32_t offs, unsigned int size, void *dest)
 {
-       void *current_dest;
-       uint32_t count;
-       uint32_t current_count;
-       uint32_t ecc_errors = 0;
-
-       memset(dest, 0x0, size); /* clean destination memory */
-       for (current_dest = dest;
-                       current_dest < (dest + size);
-                       current_dest += CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE) {
-               nand_read_page(offs, offs
-                               < CONFIG_NAND_SUNXI_SPL_SYNDROME_PARTITIONS_END,
-                              &ecc_errors);
-               count = current_dest - dest;
-
-               if (size - count > CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE)
-                       current_count = CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE;
-               else
-                       current_count = size - count;
-
-               memcpy(current_dest,
-                      temp_buf,
-                      current_count);
-               offs += CONFIG_NAND_SUNXI_SPL_ECC_PAGE_SIZE;
+       const uint32_t boot_offsets[] = {
+               0 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS,
+               1 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS,
+               2 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS,
+               4 * 1024 * 1024 + CONFIG_SYS_NAND_U_BOOT_OFFS,
+       };
+       int i, syndrome;
+
+       if (CONFIG_SYS_NAND_U_BOOT_OFFS == CONFIG_SPL_PAD_TO)
+               syndrome = 1; /* u-boot-dtb.bin appended to SPL */
+       else
+               syndrome = 0; /* u-boot-dtb.bin on its own partition */
+
+       if (offs == CONFIG_SYS_NAND_U_BOOT_OFFS) {
+               for (i = 0; i < ARRAY_SIZE(boot_offsets); i++) {
+                       if (nand_read_buffer(boot_offsets[i], size,
+                                            dest, syndrome) == 0)
+                               return 0;
+               }
+               return -1;
        }
-       return ecc_errors ? -1 : 0;
+
+       return nand_read_buffer(offs, size, dest, syndrome);
 }
 
-void nand_deselect(void) {}
+void nand_deselect(void)
+{
+       struct sunxi_ccm_reg *const ccm =
+               (struct sunxi_ccm_reg *)SUNXI_CCM_BASE;
+
+       clrbits_le32(&ccm->ahb_gate0, (CLK_GATE_OPEN << AHB_GATE_OFFSET_NAND0));
+#ifdef CONFIG_MACH_SUN9I
+       clrbits_le32(&ccm->ahb_gate1, (1 << AHB_GATE_OFFSET_DMA));
+#else
+       clrbits_le32(&ccm->ahb_gate0, (1 << AHB_GATE_OFFSET_DMA));
+#endif
+       clrbits_le32(&ccm->nand0_clk_cfg, CCM_NAND_CTRL_ENABLE | AHB_DIV_1);
+}
index debad4f791f97ee81c172b243f14d204a07b666d..a77db7b65dfa7d8519f555ba19845431c582c223 100644 (file)
@@ -9,6 +9,7 @@
 
 #include <common.h>
 #include <asm/io.h>
+#include <memalign.h>
 #include <nand.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/funcmux.h>
index 7367d9e5ac911bf91343ee345a2a7f16f5cc953c..bbec6a60e01a42b4411bd6b75d0d5d8fc6ab93ac 100644 (file)
@@ -8,6 +8,11 @@ config DM_ETH
          This is currently implemented in net/eth.c
          Look in include/net.h for details.
 
+config PHYLIB
+       bool "Ethernet PHY (physical media interface) support"
+       help
+         Enable Ethernet PHY (physical media interface) support.
+
 menuconfig NETDEVICES
        bool "Network device support"
        depends on NET
@@ -79,4 +84,12 @@ config ETH_DESIGNWARE
          100Mbit and 1 Gbit operation. You must enable CONFIG_PHYLIB to
          provide the PHY (physical media interface).
 
+config PCH_GBE
+       bool "Intel Platform Controller Hub EG20T GMAC driver"
+       depends on DM_ETH && DM_PCI
+       select PHYLIB
+       help
+         This MAC is present in Intel Platform Controller Hub EG20T. It
+         supports 10/100/1000 Mbps operation.
+
 endif # NETDEVICES
index c4fd6ec2e96100339492239930a161030082a222..ad3bd1e2124059f7da1fed4f37859f7ec6e7f69e 100644 (file)
@@ -182,12 +182,10 @@ static int alt_sgdma_do_sync_transfer(volatile struct alt_sgdma_registers *dev,
 static int alt_sgdma_do_async_transfer(volatile struct alt_sgdma_registers *dev,
                                volatile struct alt_sgdma_descriptor *desc)
 {
-       unsigned int status;
        int counter = 0;
 
        /* Wait for any pending transfers to complete */
        alt_sgdma_print_desc(desc);
-       status = dev->status;
 
        counter = 0;
        while (dev->status & ALT_SGDMA_STATUS_BUSY_MSK) {
index d9cb5076951a9a5c5576c434a734e45bf7976c46..ae78d21db6d95a5d2b63552d7ef7d9d1d3fb7937 100644 (file)
@@ -562,12 +562,12 @@ static int designware_eth_probe(struct udevice *dev)
 {
        struct eth_pdata *pdata = dev_get_platdata(dev);
        struct dw_eth_dev *priv = dev_get_priv(dev);
+       u32 iobase = pdata->iobase;
        int ret;
 
-       debug("%s, iobase=%lx, priv=%p\n", __func__, pdata->iobase, priv);
-       priv->mac_regs_p = (struct eth_mac_regs *)pdata->iobase;
-       priv->dma_regs_p = (struct eth_dma_regs *)(pdata->iobase +
-                       DW_DMA_BASE_OFFSET);
+       debug("%s, iobase=%x, priv=%p\n", __func__, iobase, priv);
+       priv->mac_regs_p = (struct eth_mac_regs *)iobase;
+       priv->dma_regs_p = (struct eth_dma_regs *)(iobase + DW_DMA_BASE_OFFSET);
        priv->interface = pdata->phy_interface;
 
        dw_mdio_init(dev->name, priv->mac_regs_p);
index 7b830ff8c0515a66f763ff4c4270965f39a2e65a..2ba03ed73e45e40b177221cc47483465dba7a3cc 100644 (file)
@@ -32,6 +32,7 @@ tested on both gig copper and gig fiber boards
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
+#include <memalign.h>
 #include <pci.h>
 #include "e1000.h"
 
index c5dcbbbcedecf7302f0c68536c102af8aec6e77d..79f6737e8e9c9727c46591cfe543643c83b17d4e 100644 (file)
@@ -10,6 +10,7 @@
 
 #include <common.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <net.h>
 #include <netdev.h>
 #include <miiphy.h>
@@ -17,6 +18,7 @@
 
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
+#include <asm/imx-common/sys_proto.h>
 #include <asm/io.h>
 #include <asm/errno.h>
 #include <linux/compiler.h>
@@ -551,12 +553,15 @@ static int fec_init(struct eth_device *dev, bd_t* bd)
        writel(0x00000000, &fec->eth->gaddr2);
 
 
-       /* clear MIB RAM */
-       for (i = mib_ptr; i <= mib_ptr + 0xfc; i += 4)
-               writel(0, i);
+       /* Do not access reserved register for i.MX6UL */
+       if (!is_cpu_type(MXC_CPU_MX6UL)) {
+               /* clear MIB RAM */
+               for (i = mib_ptr; i <= mib_ptr + 0xfc; i += 4)
+                       writel(0, i);
 
-       /* FIFO receive start register */
-       writel(0x520, &fec->eth->r_fstart);
+               /* FIFO receive start register */
+               writel(0x520, &fec->eth->r_fstart);
+       }
 
        /* size and address of each buffer */
        writel(FEC_MAX_PKT_SIZE, &fec->eth->emrbr);
index 9a8a007861435872ca883e087c03284574425b7f..b3ff4c50dbe7c17098ba7d65c76d6389eccc7082 100644 (file)
@@ -3,6 +3,7 @@
  *
  * SPDX-License-Identifier:    GPL-2.0+
  */
+#include <errno.h>
 #include <common.h>
 #include <asm/io.h>
 #include <asm/fsl_serdes.h>
@@ -230,7 +231,7 @@ void board_ft_fman_fixup_port(void *blob, char * prop, phys_addr_t pa,
                                enum fm_port port, int offset)
         __attribute__((weak, alias("__def_board_ft_fman_fixup_port")));
 
-static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
+int ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
 {
        int off;
        uint32_t ph;
@@ -239,11 +240,13 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
                                CONFIG_SYS_FSL_FM1_DTSEC1_OFFSET;
 
        off = fdt_node_offset_by_compat_reg(blob, prop, paddr);
+       if (off == -FDT_ERR_NOTFOUND)
+               return -EINVAL;
 
        if (info->enabled) {
                fdt_fixup_phy_connection(blob, off, info->enet_if);
                board_ft_fman_fixup_port(blob, prop, paddr, info->port, off);
-               return ;
+               return 0;
        }
 
 #ifdef CONFIG_SYS_FMAN_V3
@@ -281,7 +284,7 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
            ((info->port == FM1_10GEC4) && (PORT_IS_ENABLED(FM1_DTSEC4)))
 #endif
        )
-               return;
+               return 0;
 #endif
        /* board code might have caused offset to change */
        off = fdt_node_offset_by_compat_reg(blob, prop, paddr);
@@ -294,6 +297,8 @@ static void ft_fixup_port(void *blob, struct fm_eth_info *info, char *prop)
        ph = fdt_get_phandle(blob, off);
        do_fixup_by_prop(blob, "fsl,fman-mac", &ph, sizeof(ph),
                "status", "disabled", strlen("disabled") + 1, 1);
+
+       return 0;
 }
 
 void fdt_fixup_fman_ethernet(void *blob)
@@ -305,10 +310,18 @@ void fdt_fixup_fman_ethernet(void *blob)
                ft_fixup_port(blob, &fm_info[i], "fsl,fman-memac");
 #else
        for (i = 0; i < ARRAY_SIZE(fm_info); i++) {
-               if (fm_info[i].type == FM_ETH_1G_E)
-                       ft_fixup_port(blob, &fm_info[i], "fsl,fman-1g-mac");
-               else
-                       ft_fixup_port(blob, &fm_info[i], "fsl,fman-10g-mac");
+               /* Try the new compatible first.
+                * If the node is missing, try the old.
+                */
+               if (fm_info[i].type == FM_ETH_1G_E) {
+                       if (ft_fixup_port(blob, &fm_info[i], "fsl,fman-dtsec"))
+                               ft_fixup_port(blob, &fm_info[i],
+                                             "fsl,fman-1g-mac");
+               } else {
+                       if (ft_fixup_port(blob, &fm_info[i], "fsl,fman-tgec"))
+                               ft_fixup_port(blob, &fm_info[i],
+                                             "fsl,fman-10g-mac");
+               }
        }
 #endif
 }
index a03bdc06300fde51293a30baa930c0697306f28b..004fcf88c207066b3b6aa03e3d9010c38561e07f 100644 (file)
@@ -7,10 +7,10 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <errno.h>
 #include <asm/io.h>
 #include <pci.h>
-#include <malloc.h>
 #include <miiphy.h>
 #include "pch_gbe.h"
 
@@ -19,7 +19,7 @@
 #endif
 
 static struct pci_device_id supported[] = {
-       { PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TCF_GBE },
+       { PCI_DEVICE(PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_TCF_GBE) },
        { }
 };
 
@@ -62,9 +62,10 @@ static int pch_gbe_mac_write(struct pch_gbe_regs *mac_regs, u8 *addr)
        return -ETIME;
 }
 
-static int pch_gbe_reset(struct eth_device *dev)
+static int pch_gbe_reset(struct udevice *dev)
 {
-       struct pch_gbe_priv *priv = dev->priv;
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
+       struct eth_pdata *plat = dev_get_platdata(dev);
        struct pch_gbe_regs *mac_regs = priv->mac_regs;
        ulong start;
 
@@ -97,7 +98,7 @@ static int pch_gbe_reset(struct eth_device *dev)
                         * so we have to reload MAC address here in order to
                         * make linux pch_gbe driver happy.
                         */
-                       return pch_gbe_mac_write(mac_regs, dev->enetaddr);
+                       return pch_gbe_mac_write(mac_regs, plat->enetaddr);
                }
 
                udelay(10);
@@ -107,9 +108,9 @@ static int pch_gbe_reset(struct eth_device *dev)
        return -ETIME;
 }
 
-static void pch_gbe_rx_descs_init(struct eth_device *dev)
+static void pch_gbe_rx_descs_init(struct udevice *dev)
 {
-       struct pch_gbe_priv *priv = dev->priv;
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
        struct pch_gbe_regs *mac_regs = priv->mac_regs;
        struct pch_gbe_rx_desc *rx_desc = &priv->rx_desc[0];
        int i;
@@ -128,9 +129,9 @@ static void pch_gbe_rx_descs_init(struct eth_device *dev)
               &mac_regs->rx_dsc_sw_p);
 }
 
-static void pch_gbe_tx_descs_init(struct eth_device *dev)
+static void pch_gbe_tx_descs_init(struct udevice *dev)
 {
-       struct pch_gbe_priv *priv = dev->priv;
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
        struct pch_gbe_regs *mac_regs = priv->mac_regs;
        struct pch_gbe_tx_desc *tx_desc = &priv->tx_desc[0];
 
@@ -183,9 +184,9 @@ static void pch_gbe_adjust_link(struct pch_gbe_regs *mac_regs,
        return;
 }
 
-static int pch_gbe_init(struct eth_device *dev, bd_t *bis)
+static int pch_gbe_start(struct udevice *dev)
 {
-       struct pch_gbe_priv *priv = dev->priv;
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
        struct pch_gbe_regs *mac_regs = priv->mac_regs;
 
        if (pch_gbe_reset(dev))
@@ -226,18 +227,18 @@ static int pch_gbe_init(struct eth_device *dev, bd_t *bis)
        return 0;
 }
 
-static void pch_gbe_halt(struct eth_device *dev)
+static void pch_gbe_stop(struct udevice *dev)
 {
-       struct pch_gbe_priv *priv = dev->priv;
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
 
        pch_gbe_reset(dev);
 
        phy_shutdown(priv->phydev);
 }
 
-static int pch_gbe_send(struct eth_device *dev, void *packet, int length)
+static int pch_gbe_send(struct udevice *dev, void *packet, int length)
 {
-       struct pch_gbe_priv *priv = dev->priv;
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
        struct pch_gbe_regs *mac_regs = priv->mac_regs;
        struct pch_gbe_tx_desc *tx_head, *tx_desc;
        u16 frame_ctrl = 0;
@@ -277,15 +278,13 @@ static int pch_gbe_send(struct eth_device *dev, void *packet, int length)
        return -ETIME;
 }
 
-static int pch_gbe_recv(struct eth_device *dev)
+static int pch_gbe_recv(struct udevice *dev, int flags, uchar **packetp)
 {
-       struct pch_gbe_priv *priv = dev->priv;
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
        struct pch_gbe_regs *mac_regs = priv->mac_regs;
-       struct pch_gbe_rx_desc *rx_head, *rx_desc;
+       struct pch_gbe_rx_desc *rx_desc;
        u32 hw_desc, buffer_addr, length;
-       int rx_swp;
 
-       rx_head = &priv->rx_desc[0];
        rx_desc = &priv->rx_desc[priv->rx_idx];
 
        readl(&mac_regs->int_st);
@@ -293,11 +292,21 @@ static int pch_gbe_recv(struct eth_device *dev)
 
        /* Just return if not receiving any packet */
        if ((u32)rx_desc == hw_desc)
-               return 0;
+               return -EAGAIN;
 
        buffer_addr = pci_mem_to_phys(priv->bdf, rx_desc->buffer_addr);
+       *packetp = (uchar *)buffer_addr;
        length = rx_desc->rx_words_eob - 3 - ETH_FCS_LEN;
-       net_process_received_packet((uchar *)buffer_addr, length);
+
+       return length;
+}
+
+static int pch_gbe_free_pkt(struct udevice *dev, uchar *packet, int length)
+{
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
+       struct pch_gbe_regs *mac_regs = priv->mac_regs;
+       struct pch_gbe_rx_desc *rx_head = &priv->rx_desc[0];
+       int rx_swp;
 
        /* Test the wrap-around condition */
        if (++priv->rx_idx >= PCH_GBE_DESC_NUM)
@@ -309,7 +318,7 @@ static int pch_gbe_recv(struct eth_device *dev)
        writel(pci_phys_to_mem(priv->bdf, (u32)(rx_head + rx_swp)),
               &mac_regs->rx_dsc_sw_p);
 
-       return length;
+       return 0;
 }
 
 static int pch_gbe_mdio_ready(struct pch_gbe_regs *mac_regs)
@@ -365,7 +374,7 @@ static int pch_gbe_mdio_write(struct mii_dev *bus, int addr, int devad,
                return 0;
 }
 
-static int pch_gbe_mdio_init(char *name, struct pch_gbe_regs *mac_regs)
+static int pch_gbe_mdio_init(const char *name, struct pch_gbe_regs *mac_regs)
 {
        struct mii_dev *bus;
 
@@ -384,13 +393,14 @@ static int pch_gbe_mdio_init(char *name, struct pch_gbe_regs *mac_regs)
        return mdio_register(bus);
 }
 
-static int pch_gbe_phy_init(struct eth_device *dev)
+static int pch_gbe_phy_init(struct udevice *dev)
 {
-       struct pch_gbe_priv *priv = dev->priv;
+       struct pch_gbe_priv *priv = dev_get_priv(dev);
+       struct eth_pdata *plat = dev_get_platdata(dev);
        struct phy_device *phydev;
        int mask = 0xffffffff;
 
-       phydev = phy_find_by_mask(priv->bus, mask, priv->interface);
+       phydev = phy_find_by_mask(priv->bus, mask, plat->phy_interface);
        if (!phydev) {
                printf("pch_gbe: cannot find the phy\n");
                return -1;
@@ -404,63 +414,66 @@ static int pch_gbe_phy_init(struct eth_device *dev)
        priv->phydev = phydev;
        phy_config(phydev);
 
-       return 1;
+       return 0;
 }
 
-int pch_gbe_register(bd_t *bis)
+int pch_gbe_probe(struct udevice *dev)
 {
-       struct eth_device *dev;
        struct pch_gbe_priv *priv;
+       struct eth_pdata *plat = dev_get_platdata(dev);
        pci_dev_t devno;
        u32 iobase;
 
-       devno = pci_find_devices(supported, 0);
-       if (devno == -1)
-               return -ENODEV;
-
-       dev = (struct eth_device *)malloc(sizeof(*dev));
-       if (!dev)
-               return -ENOMEM;
-       memset(dev, 0, sizeof(*dev));
+       devno = pci_get_bdf(dev);
 
        /*
         * The priv structure contains the descriptors and frame buffers which
-        * need a strict buswidth alignment (64 bytes)
+        * need a strict buswidth alignment (64 bytes). This is guaranteed by
+        * DM_FLAG_ALLOC_PRIV_DMA flag in the U_BOOT_DRIVER.
         */
-       priv = (struct pch_gbe_priv *)memalign(PCH_GBE_ALIGN_SIZE,
-                                              sizeof(*priv));
-       if (!priv) {
-               free(dev);
-               return -ENOMEM;
-       }
-       memset(priv, 0, sizeof(*priv));
+       priv = dev_get_priv(dev);
 
-       dev->priv = priv;
-       priv->dev = dev;
        priv->bdf = devno;
 
        pci_read_config_dword(devno, PCI_BASE_ADDRESS_1, &iobase);
        iobase &= PCI_BASE_ADDRESS_MEM_MASK;
        iobase = pci_mem_to_phys(devno, iobase);
 
-       dev->iobase = iobase;
+       plat->iobase = iobase;
        priv->mac_regs = (struct pch_gbe_regs *)iobase;
 
-       sprintf(dev->name, "pch_gbe");
-
        /* Read MAC address from SROM and initialize dev->enetaddr with it */
-       pch_gbe_mac_read(priv->mac_regs, dev->enetaddr);
-
-       dev->init = pch_gbe_init;
-       dev->halt = pch_gbe_halt;
-       dev->send = pch_gbe_send;
-       dev->recv = pch_gbe_recv;
+       pch_gbe_mac_read(priv->mac_regs, plat->enetaddr);
 
-       eth_register(dev);
-
-       priv->interface = PHY_INTERFACE_MODE_RGMII;
+       plat->phy_interface = PHY_INTERFACE_MODE_RGMII;
        pch_gbe_mdio_init(dev->name, priv->mac_regs);
        priv->bus = miiphy_get_dev_by_name(dev->name);
 
        return pch_gbe_phy_init(dev);
 }
+
+static const struct eth_ops pch_gbe_ops = {
+       .start = pch_gbe_start,
+       .send = pch_gbe_send,
+       .recv = pch_gbe_recv,
+       .free_pkt = pch_gbe_free_pkt,
+       .stop = pch_gbe_stop,
+};
+
+static const struct udevice_id pch_gbe_ids[] = {
+       { .compatible = "intel,pch-gbe" },
+       { }
+};
+
+U_BOOT_DRIVER(eth_pch_gbe) = {
+       .name = "pch_gbe",
+       .id = UCLASS_ETH,
+       .of_match = pch_gbe_ids,
+       .probe = pch_gbe_probe,
+       .ops = &pch_gbe_ops,
+       .priv_auto_alloc_size = sizeof(struct pch_gbe_priv),
+       .platdata_auto_alloc_size = sizeof(struct eth_pdata),
+       .flags = DM_FLAG_ALLOC_PRIV_DMA,
+};
+
+U_BOOT_PCI_DEVICE(eth_pch_gbe, supported);
index 11329d4834d6eec4fe7d4e0fec068907a3ec9c2a..afcb03dd36a1605ca9fd9e35e1a115051e450695 100644 (file)
@@ -287,12 +287,10 @@ struct pch_gbe_priv {
        struct pch_gbe_rx_desc rx_desc[PCH_GBE_DESC_NUM];
        struct pch_gbe_tx_desc tx_desc[PCH_GBE_DESC_NUM];
        char rx_buff[PCH_GBE_DESC_NUM][PCH_GBE_RX_FRAME_LEN];
-       struct eth_device *dev;
        struct phy_device *phydev;
        struct mii_dev *bus;
        struct pch_gbe_regs *mac_regs;
        pci_dev_t bdf;
-       u32 interface;
        int rx_idx;
        int tx_idx;
 };
index 20a67466a7c36db297d563531e41b5e465b36f8d..941d0760b57f378e0ea183c1d46532c79f432db6 100644 (file)
@@ -347,6 +347,16 @@ static struct phy_driver VSC8514_driver = {
        .shutdown = &genphy_shutdown,
 };
 
+static struct phy_driver VSC8584_driver = {
+       .name = "Vitesse VSC8584",
+       .uid = 0x707c0,
+       .mask = 0xffff0,
+       .features = PHY_GBIT_FEATURES,
+       .config = &vsc8574_config,
+       .startup = &vitesse_startup,
+       .shutdown = &genphy_shutdown,
+};
+
 static struct phy_driver VSC8601_driver = {
        .name = "Vitesse VSC8601",
        .uid = 0x70420,
@@ -417,6 +427,7 @@ int phy_vitesse_init(void)
        phy_register(&VSC8211_driver);
        phy_register(&VSC8221_driver);
        phy_register(&VSC8574_driver);
+       phy_register(&VSC8584_driver);
        phy_register(&VSC8514_driver);
        phy_register(&VSC8662_driver);
        phy_register(&VSC8664_driver);
index 7b6e20f30fbfe3ee4f0413be7dce4f4f645be219..ebd46b27e5fdeda6e2e543b2e652802d745cd1ec 100644 (file)
@@ -44,6 +44,7 @@
 #include <dm.h>
 #include <errno.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <net.h>
 #ifndef CONFIG_DM_ETH
 #include <netdev.h>
index ade14cd4757acd41c7cc77c23854ffedd840387b..f31216ffa6cc9ad8027372902ab1eef0042d2892 100644 (file)
@@ -499,15 +499,8 @@ again:
        }
 
        /* we have a packet address, so tell the card to use it */
-#ifndef CONFIG_XAENIAX
        SMC_outb (dev, packet_no, PN_REG);
-#else
-       /* On Xaeniax board, we can't use SMC_outb here because that way
-        * the Allocate MMU command will end up written to the command register
-        * as well, which will lead to a problem.
-        */
-       SMC_outl (dev, packet_no << 16, 0);
-#endif
+
        /* do not write new ptr value if Write data fifo not empty */
        while ( saved_ptr & PTR_NOTEMPTY )
                printf ("Write data fifo not empty!\n");
@@ -542,39 +535,19 @@ again:
         */
 #ifdef USE_32_BIT
        SMC_outsl (dev, SMC91111_DATA_REG, buf, length >> 2);
-#ifndef CONFIG_XAENIAX
        if (length & 0x2)
                SMC_outw (dev, *((word *) (buf + (length & 0xFFFFFFFC))),
                          SMC91111_DATA_REG);
-#else
-       /* On XANEIAX, we can only use 32-bit writes, so we need to handle
-        * unaligned tail part specially. The standard code doesn't work.
-        */
-       if ((length & 3) == 3) {
-               u16 * ptr = (u16*) &buf[length-3];
-               SMC_outl(dev, (*ptr) | ((0x2000 | buf[length-1]) << 16),
-                               SMC91111_DATA_REG);
-       } else if ((length & 2) == 2) {
-               u16 * ptr = (u16*) &buf[length-2];
-               SMC_outl(dev, *ptr, SMC91111_DATA_REG);
-       } else if (length & 1) {
-               SMC_outl(dev, (0x2000 | buf[length-1]), SMC91111_DATA_REG);
-       } else {
-               SMC_outl(dev, 0, SMC91111_DATA_REG);
-       }
-#endif
 #else
        SMC_outsw (dev, SMC91111_DATA_REG, buf, (length) >> 1);
 #endif /* USE_32_BIT */
 
-#ifndef CONFIG_XAENIAX
        /* Send the last byte, if there is one.   */
        if ((length & 1) == 0) {
                SMC_outw (dev, 0, SMC91111_DATA_REG);
        } else {
                SMC_outw (dev, buf[length - 1] | 0x2000, SMC91111_DATA_REG);
        }
-#endif
 
        /* and let the chipset deal with it */
        SMC_outw (dev, MC_ENQUEUE, MMU_CMD_REG);
@@ -588,9 +561,6 @@ again:
 
                /* release packet */
                /* no need to release, MMU does that now */
-#ifdef CONFIG_XAENIAX
-                SMC_outw (dev, MC_FREEPKT, MMU_CMD_REG);
-#endif
 
                /* wait for MMU getting ready (low) */
                while (SMC_inw (dev, MMU_CMD_REG) & MC_BUSY) {
@@ -610,9 +580,6 @@ again:
 
                /* release packet */
                /* no need to release, MMU does that now */
-#ifdef CONFIG_XAENIAX
-               SMC_outw (dev, MC_FREEPKT, MMU_CMD_REG);
-#endif
 
                /* wait for MMU getting ready (low) */
                while (SMC_inw (dev, MMU_CMD_REG) & MC_BUSY) {
@@ -625,15 +592,7 @@ again:
        }
 
        /* restore previously saved registers */
-#ifndef CONFIG_XAENIAX
        SMC_outb( dev, saved_pnr, PN_REG );
-#else
-       /* On Xaeniax board, we can't use SMC_outb here because that way
-        * the Allocate MMU command will end up written to the command register
-        * as well, which will lead to a problem.
-        */
-       SMC_outl(dev, saved_pnr << 16, 0);
-#endif
        SMC_outw( dev, saved_ptr, PTR_REG );
 
        return length;
@@ -802,15 +761,7 @@ static int smc_rcv(struct eth_device *dev)
                udelay(1); /* Wait until not busy */
 
        /* restore saved registers */
-#ifndef CONFIG_XAENIAX
        SMC_outb( dev, saved_pnr, PN_REG );
-#else
-       /* On Xaeniax board, we can't use SMC_outb here because that way
-        * the Allocate MMU command will end up written to the command register
-        * as well, which will lead to a problem.
-        */
-       SMC_outl( dev, saved_pnr << 16, 0);
-#endif
        SMC_outw( dev, saved_ptr, PTR_REG );
 
        if (!is_error) {
index e19c491cbce7c00d3f429f9b7d009172bd0b66b5..5197f36039f660903b7dde4b585d1c6cdadfb02a 100644 (file)
@@ -77,19 +77,6 @@ struct smc91111_priv{
        if (__p & 2) __v >>= 8; \
        else __v &= 0xff; \
        __v; })
-#elif defined(CONFIG_XAENIAX)
-#define SMC_inl(a,r)   (*((volatile dword *)((a)->iobase+(r))))
-#define SMC_inw(a,z)   ({ \
-       unsigned int __p = (unsigned int)((a)->iobase + (z)); \
-       unsigned int __v = *(volatile unsigned int *)((__p) & ~3); \
-       if (__p & 3) __v >>= 16; \
-       else __v &= 0xffff; \
-       __v; })
-#define SMC_inb(a,p)   ({ \
-       unsigned int ___v = SMC_inw((a),(p) & ~1); \
-       if ((p) & 1) ___v >>= 8; \
-       else ___v &= 0xff; \
-       ___v; })
 #else
 #define        SMC_inl(a,r)    (*((volatile dword *)((a)->iobase+(r))))
 #define        SMC_inw(a,r)    (*((volatile word *)((a)->iobase+(r))))
@@ -104,15 +91,6 @@ struct smc91111_priv{
 #ifdef CONFIG_XSENGINE
 #define        SMC_outl(a,d,r) (*((volatile dword *)((a)->iobase+(r<<1))) = d)
 #define        SMC_outw(a,d,r) (*((volatile word *)((a)->iobase+(r<<1))) = d)
-#elif defined (CONFIG_XAENIAX)
-#define SMC_outl(a,d,r)        (*((volatile dword *)((a)->iobase+(r))) = d)
-#define SMC_outw(a,d,p)        ({ \
-       dword __dwo = SMC_inl((a),(p) & ~3); \
-       dword __dwn = (word)(d); \
-       __dwo &= ((p) & 3) ? 0x0000ffff : 0xffff0000; \
-       __dwo |= ((p) & 3) ? __dwn << 16 : __dwn; \
-       SMC_outl((a), __dwo, (p) & ~3); \
-})
 #else
 #define        SMC_outl(a,d,r) (*((volatile dword *)((a)->iobase+(r))) = d)
 #define        SMC_outw(a,d,r) (*((volatile word *)((a)->iobase+(r))) = d)
index 42d037471fecc26aedbca473ad53343f974aa2d9..4bdc188c8f395551ddce7db00c6031fdc66acae1 100644 (file)
@@ -271,9 +271,6 @@ void redundant_init(struct eth_device *dev)
        out_be32(&regs->tstat, TSTAT_CLEAR_THALT);
        out_be32(&regs->rstat, RSTAT_CLEAR_RHALT);
        clrbits_be32(&regs->dmactrl, DMACTRL_GRS | DMACTRL_GTS);
-#ifdef CONFIG_LS102XA
-       setbits_be32(&regs->dmactrl, DMACTRL_LE);
-#endif
 
        do {
                uint16_t status;
@@ -370,9 +367,6 @@ static void startup_tsec(struct eth_device *dev)
        out_be32(&regs->tstat, TSTAT_CLEAR_THALT);
        out_be32(&regs->rstat, RSTAT_CLEAR_RHALT);
        clrbits_be32(&regs->dmactrl, DMACTRL_GRS | DMACTRL_GTS);
-#ifdef CONFIG_LS102XA
-       setbits_be32(&regs->dmactrl, DMACTRL_LE);
-#endif
 }
 
 /* This returns the status bits of the device. The return value
index b25298fb5e9cec04a8a5e383206521049e8c18c3..ea70853da21fa1e756a342404801148479bcd747 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
+static int pci_get_bus(int busnum, struct udevice **busp)
+{
+       int ret;
+
+       ret = uclass_get_device_by_seq(UCLASS_PCI, busnum, busp);
+
+       /* Since buses may not be numbered yet try a little harder with bus 0 */
+       if (ret == -ENODEV) {
+               ret = uclass_first_device(UCLASS_PCI, busp);
+               if (ret)
+                       return ret;
+               else if (!*busp)
+                       return -ENODEV;
+               ret = uclass_get_device_by_seq(UCLASS_PCI, busnum, busp);
+       }
+
+       return ret;
+}
+
 struct pci_controller *pci_bus_to_hose(int busnum)
 {
        struct udevice *bus;
        int ret;
 
-       ret = uclass_get_device_by_seq(UCLASS_PCI, busnum, &bus);
+       ret = pci_get_bus(busnum, &bus);
        if (ret) {
                debug("%s: Cannot get bus %d: ret=%d\n", __func__, busnum, ret);
                return NULL;
        }
+
        return dev_get_uclass_priv(bus);
 }
 
@@ -128,7 +148,7 @@ int pci_bus_find_bdf(pci_dev_t bdf, struct udevice **devp)
        struct udevice *bus;
        int ret;
 
-       ret = uclass_get_device_by_seq(UCLASS_PCI, PCI_BUS(bdf), &bus);
+       ret = pci_get_bus(PCI_BUS(bdf), &bus);
        if (ret)
                return ret;
        return pci_bus_find_devfn(bus, PCI_MASK_BUS(bdf), devp);
@@ -206,7 +226,7 @@ int pci_write_config(pci_dev_t bdf, int offset, unsigned long value,
        struct udevice *bus;
        int ret;
 
-       ret = uclass_get_device_by_seq(UCLASS_PCI, PCI_BUS(bdf), &bus);
+       ret = pci_get_bus(PCI_BUS(bdf), &bus);
        if (ret)
                return ret;
 
@@ -271,7 +291,7 @@ int pci_read_config(pci_dev_t bdf, int offset, unsigned long *valuep,
        struct udevice *bus;
        int ret;
 
-       ret = uclass_get_device_by_seq(UCLASS_PCI, PCI_BUS(bdf), &bus);
+       ret = pci_get_bus(PCI_BUS(bdf), &bus);
        if (ret)
                return ret;
 
index ca485ba90cb67c3b53336514884feaf47b94157d..1568f20c1a060bfd28e633088acc1644fa51b571 100644 (file)
@@ -495,7 +495,7 @@ __weak int imx6_pcie_toggle_reset(void)
         *
         * The PCIe #PERST reset line _MUST_ be connected, otherwise your
         * design does not conform to the specification. You must wait at
-        * least 20 mS after de-asserting the #PERST so the EP device can
+        * least 20 ms after de-asserting the #PERST so the EP device can
         * do self-initialisation.
         *
         * In case your #PERST pin is connected to a plain GPIO pin of the
@@ -506,7 +506,7 @@ __weak int imx6_pcie_toggle_reset(void)
         * In case your #PERST toggling logic is more complex, for example
         * connected via CPLD or somesuch, you can override this function
         * in your board file and implement reset logic as needed. You must
-        * not forget to wait at least 20 mS after de-asserting #PERST in
+        * not forget to wait at least 20 ms after de-asserting #PERST in
         * this case either though.
         *
         * In case your #PERST line of the PCIe EP device is not connected
@@ -538,7 +538,7 @@ static int imx6_pcie_deassert_core_reset(void)
 
        /*
         * Wait for the clock to settle a bit, when the clock are sourced
-        * from the CPU, we need about 30mS to settle.
+        * from the CPU, we need about 30 ms to settle.
         */
        mdelay(50);
 
index 95cfe8c16fb73383e3755e7071e3892c58488c6f..2f24a6a39bf6d2b767898b6428cb4838ca70ac03 100644 (file)
@@ -689,6 +689,7 @@ void fdt_fixup_smmu_pcie(void *blob)
 {
        int count;
        u32 stream_ids[MAX_STREAM_IDS];
+       u32 ctlr_streamid = 0x300;
 
        #ifdef CONFIG_PCIE1
        /* PEX1 stream ID fixup */
@@ -696,6 +697,8 @@ void fdt_fixup_smmu_pcie(void *blob)
        alloc_stream_ids(FSL_PEX1_STREAM_ID_START, count, stream_ids,
                         MAX_STREAM_IDS);
        pcie_set_available_streamids(blob, "/pcie@3400000", stream_ids, count);
+       append_mmu_masters(blob, "/iommu@5000000", "/pcie@3400000",
+                          &ctlr_streamid, 1);
        #endif
 
        #ifdef CONFIG_PCIE2
@@ -704,6 +707,8 @@ void fdt_fixup_smmu_pcie(void *blob)
        alloc_stream_ids(FSL_PEX2_STREAM_ID_START, count, stream_ids,
                         MAX_STREAM_IDS);
        pcie_set_available_streamids(blob, "/pcie@3500000", stream_ids, count);
+       append_mmu_masters(blob, "/iommu@5000000", "/pcie@3500000",
+                          &ctlr_streamid, 1);
        #endif
 
        #ifdef CONFIG_PCIE3
@@ -712,6 +717,8 @@ void fdt_fixup_smmu_pcie(void *blob)
        alloc_stream_ids(FSL_PEX3_STREAM_ID_START, count, stream_ids,
                         MAX_STREAM_IDS);
        pcie_set_available_streamids(blob, "/pcie@3600000", stream_ids, count);
+       append_mmu_masters(blob, "/iommu@5000000", "/pcie@3600000",
+                          &ctlr_streamid, 1);
        #endif
 
        #ifdef CONFIG_PCIE4
@@ -720,6 +727,8 @@ void fdt_fixup_smmu_pcie(void *blob)
        alloc_stream_ids(FSL_PEX4_STREAM_ID_START, count, stream_ids,
                         MAX_STREAM_IDS);
        pcie_set_available_streamids(blob, "/pcie@3700000", stream_ids, count);
+       append_mmu_masters(blob, "/iommu@5000000", "/pcie@3700000",
+                          &ctlr_streamid, 1);
        #endif
 }
 #endif
diff --git a/drivers/pinctrl/Kconfig b/drivers/pinctrl/Kconfig
new file mode 100644 (file)
index 0000000..b8146df
--- /dev/null
@@ -0,0 +1,127 @@
+#
+# PINCTRL infrastructure and drivers
+#
+
+menu "Pin controllers"
+
+config PINCTRL
+       bool "Support pin controllers"
+       depends on DM
+       help
+         This enables the basic support for pinctrl framework.  You may want
+         to enable some more options depending on what you want to do.
+
+config PINCTRL_FULL
+       bool "Support full pin controllers"
+       depends on PINCTRL && OF_CONTROL
+       default y
+       help
+         This provides Linux-compatible device tree interface for the pinctrl
+         subsystem.  This feature depends on device tree configuration because
+         it parses a device tree to look for the pinctrl device which the
+         peripheral device is associated with.
+
+         If this option is disabled (it is the only possible choice for non-DT
+         boards), the pinctrl core provides no systematic mechanism for
+         identifying peripheral devices, applying needed pinctrl settings.
+         It is totally up to the implementation of each low-level driver.
+         You can save memory footprint in return for some limitations.
+
+config PINCTRL_GENERIC
+       bool "Support generic pin controllers"
+       depends on PINCTRL_FULL
+       default y
+       help
+         Say Y here if you want to use the pinctrl subsystem through the
+         generic DT interface.  If enabled, some functions become available
+         to parse common properties such as "pins", "groups", "functions" and
+         some pin configuration parameters.  It would be easier if you only
+         need the generic DT interface for pin muxing and pin configuration.
+         If you need to handle vendor-specific DT properties, you can disable
+         this option and implement your own set_state callback in the pinctrl
+         operations.
+
+config PINMUX
+       bool "Support pin multiplexing controllers"
+       depends on PINCTRL_GENERIC
+       default y
+       help
+         This option enables pin multiplexing through the generic pinctrl
+         framework. Most SoCs have their own own multiplexing arrangement
+         where a single pin can be used for several functions. An SoC pinctrl
+         driver allows the required function to be selected for each pin.
+         The driver is typically controlled by the device tree.
+
+config PINCONF
+       bool "Support pin configuration controllers"
+       depends on PINCTRL_GENERIC
+       help
+         This option enables pin configuration through the generic pinctrl
+         framework.
+
+config SPL_PINCTRL
+       bool "Support pin controlloers in SPL"
+       depends on SPL && SPL_DM
+       help
+         This option is an SPL-variant of the PINCTRL option.
+         See the help of PINCTRL for details.
+
+config SPL_PINCTRL_FULL
+       bool "Support full pin controllers in SPL"
+       depends on SPL_PINCTRL && SPL_OF_CONTROL
+       default y
+       help
+         This option is an SPL-variant of the PINCTRL_FULL option.
+         See the help of PINCTRL_FULL for details.
+
+config SPL_PINCTRL_GENERIC
+       bool "Support generic pin controllers in SPL"
+       depends on SPL_PINCTRL_FULL
+       default y
+       help
+         This option is an SPL-variant of the PINCTRL_GENERIC option.
+         See the help of PINCTRL_GENERIC for details.
+
+config SPL_PINMUX
+       bool "Support pin multiplexing controllers in SPL"
+       depends on SPL_PINCTRL_GENERIC
+       default y
+       help
+         This option is an SPL-variant of the PINMUX option.
+         See the help of PINMUX for details.
+         The pinctrl subsystem can add a substantial overhead to the SPL
+         image since it typically requires quite a few tables either in the
+         driver or in the device tree. If this is acceptable and you need
+         to adjust pin multiplexing in SPL in order to boot into U-Boot,
+         enable this option. You will need to enable device tree in SPL
+         for this to work.
+
+config SPL_PINCONF
+       bool "Support pin configuration controllers in SPL"
+       depends on SPL_PINCTRL_GENERIC
+       help
+         This option is an SPL-variant of the PINCONF option.
+         See the help of PINCONF for details.
+
+if PINCTRL || SPL_PINCTRL
+
+config ROCKCHIP_PINCTRL
+       bool "Rockchip pin control driver"
+       depends on DM
+       help
+         Support pin multiplexing control on Rockchip SoCs. The driver is
+         controlled by a device tree node which contains both the GPIO
+         definitions and pin control functions for each available multiplex
+         function.
+
+config PINCTRL_SANDBOX
+       bool "Sandbox pinctrl driver"
+       depends on SANDBOX
+       help
+         This enables pinctrl driver for sandbox.  Currently, this driver
+         actually does nothing but print debug messages when pinctrl
+         operations are invoked.
+
+endif
+
+endmenu
diff --git a/drivers/pinctrl/Makefile b/drivers/pinctrl/Makefile
new file mode 100644 (file)
index 0000000..f537df4
--- /dev/null
@@ -0,0 +1,5 @@
+obj-y                                  += pinctrl-uclass.o
+obj-$(CONFIG_$(SPL_)PINCTRL_GENERIC)   += pinctrl-generic.o
+
+obj-$(CONFIG_ARCH_ROCKCHIP) += rockchip/
+obj-$(CONFIG_PINCTRL_SANDBOX)  += pinctrl-sandbox.o
diff --git a/drivers/pinctrl/pinctrl-generic.c b/drivers/pinctrl/pinctrl-generic.c
new file mode 100644 (file)
index 0000000..e86b72a
--- /dev/null
@@ -0,0 +1,359 @@
+/*
+ * Copyright (C) 2015  Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/compat.h>
+#include <dm/device.h>
+#include <dm/pinctrl.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/**
+ * pinctrl_pin_name_to_selector() - return the pin selector for a pin
+ *
+ * @dev: pin controller device
+ * @pin: the pin name to look up
+ * @return: pin selector, or negative error code on failure
+ */
+static int pinctrl_pin_name_to_selector(struct udevice *dev, const char *pin)
+{
+       const struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+       unsigned npins, selector;
+
+       if (!ops->get_pins_count || !ops->get_pin_name) {
+               dev_dbg(dev, "get_pins_count or get_pin_name missing\n");
+               return -ENOSYS;
+       }
+
+       npins = ops->get_pins_count(dev);
+
+       /* See if this pctldev has this pin */
+       for (selector = 0; selector < npins; selector++) {
+               const char *pname = ops->get_pin_name(dev, selector);
+
+               if (!strcmp(pin, pname))
+                       return selector;
+       }
+
+       return -ENOSYS;
+}
+
+/**
+ * pinctrl_group_name_to_selector() - return the group selector for a group
+ *
+ * @dev: pin controller device
+ * @group: the pin group name to look up
+ * @return: pin group selector, or negative error code on failure
+ */
+static int pinctrl_group_name_to_selector(struct udevice *dev,
+                                         const char *group)
+{
+       const struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+       unsigned ngroups, selector;
+
+       if (!ops->get_groups_count || !ops->get_group_name) {
+               dev_dbg(dev, "get_groups_count or get_group_name missing\n");
+               return -ENOSYS;
+       }
+
+       ngroups = ops->get_groups_count(dev);
+
+       /* See if this pctldev has this group */
+       for (selector = 0; selector < ngroups; selector++) {
+               const char *gname = ops->get_group_name(dev, selector);
+
+               if (!strcmp(group, gname))
+                       return selector;
+       }
+
+       return -ENOSYS;
+}
+
+#if CONFIG_IS_ENABLED(PINMUX)
+/**
+ * pinmux_func_name_to_selector() - return the function selector for a function
+ *
+ * @dev: pin controller device
+ * @function: the function name to look up
+ * @return: function selector, or negative error code on failure
+ */
+static int pinmux_func_name_to_selector(struct udevice *dev,
+                                       const char *function)
+{
+       const struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+       unsigned nfuncs, selector = 0;
+
+       if (!ops->get_functions_count || !ops->get_function_name) {
+               dev_dbg(dev,
+                       "get_functions_count or get_function_name missing\n");
+               return -ENOSYS;
+       }
+
+       nfuncs = ops->get_functions_count(dev);
+
+       /* See if this pctldev has this function */
+       for (selector = 0; selector < nfuncs; selector++) {
+               const char *fname = ops->get_function_name(dev, selector);
+
+               if (!strcmp(function, fname))
+                       return selector;
+       }
+
+       return -ENOSYS;
+}
+
+/**
+ * pinmux_enable_setting() - enable pin-mux setting for a certain pin/group
+ *
+ * @dev: pin controller device
+ * @is_group: target of operation (true: pin group, false: pin)
+ * @selector: pin selector or group selector, depending on @is_group
+ * @func_selector: function selector
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinmux_enable_setting(struct udevice *dev, bool is_group,
+                                unsigned selector, unsigned func_selector)
+{
+       const struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+
+       if (is_group) {
+               if (!ops->pinmux_group_set) {
+                       dev_dbg(dev, "pinmux_group_set op missing\n");
+                       return -ENOSYS;
+               }
+
+               return ops->pinmux_group_set(dev, selector, func_selector);
+       } else {
+               if (!ops->pinmux_set) {
+                       dev_dbg(dev, "pinmux_set op missing\n");
+                       return -ENOSYS;
+               }
+               return ops->pinmux_set(dev, selector, func_selector);
+       }
+}
+#else
+static int pinmux_func_name_to_selector(struct udevice *dev,
+                                       const char *function)
+{
+       return 0;
+}
+
+static int pinmux_enable_setting(struct udevice *dev, bool is_group,
+                                unsigned selector, unsigned func_selector)
+{
+       return 0;
+}
+#endif
+
+#if CONFIG_IS_ENABLED(PINCONF)
+/**
+ * pinconf_prop_name_to_param() - return parameter ID for a property name
+ *
+ * @dev: pin controller device
+ * @property: property name in DTS, such as "bias-pull-up", "slew-rate", etc.
+ * @default_value: return default value in case no value is specified in DTS
+ * @return: return pamater ID, or negative error code on failure
+ */
+static int pinconf_prop_name_to_param(struct udevice *dev,
+                                     const char *property, u32 *default_value)
+{
+       const struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+       const struct pinconf_param *p, *end;
+
+       if (!ops->pinconf_num_params || !ops->pinconf_params) {
+               dev_dbg(dev, "pinconf_num_params or pinconf_params missing\n");
+               return -ENOSYS;
+       }
+
+       p = ops->pinconf_params;
+       end = p + ops->pinconf_num_params;
+
+       /* See if this pctldev supports this parameter */
+       for (; p < end; p++) {
+               if (!strcmp(property, p->property)) {
+                       *default_value = p->default_value;
+                       return p->param;
+               }
+       }
+
+       return -ENOSYS;
+}
+
+/**
+ * pinconf_enable_setting() - apply pin configuration for a certain pin/group
+ *
+ * @dev: pin controller device
+ * @is_group: target of operation (true: pin group, false: pin)
+ * @selector: pin selector or group selector, depending on @is_group
+ * @param: configuration paramter
+ * @argument: argument taken by some configuration parameters
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinconf_enable_setting(struct udevice *dev, bool is_group,
+                                 unsigned selector, unsigned param,
+                                 u32 argument)
+{
+       const struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+
+       if (is_group) {
+               if (!ops->pinconf_group_set) {
+                       dev_dbg(dev, "pinconf_group_set op missing\n");
+                       return -ENOSYS;
+               }
+
+               return ops->pinconf_group_set(dev, selector, param,
+                                             argument);
+       } else {
+               if (!ops->pinconf_set) {
+                       dev_dbg(dev, "pinconf_set op missing\n");
+                       return -ENOSYS;
+               }
+               return ops->pinconf_set(dev, selector, param, argument);
+       }
+}
+#else
+static int pinconf_prop_name_to_param(struct udevice *dev,
+                                     const char *property, u32 *default_value)
+{
+       return -ENOSYS;
+}
+
+static int pinconf_enable_setting(struct udevice *dev, bool is_group,
+                                 unsigned selector, unsigned param,
+                                 u32 argument)
+{
+       return 0;
+}
+#endif
+
+/**
+ * pinctrl_generic_set_state_one() - set state for a certain pin/group
+ * Apply all pin multiplexing and pin configurations specified by @config
+ * for a given pin or pin group.
+ *
+ * @dev: pin controller device
+ * @config: pseudo device pointing to config node
+ * @is_group: target of operation (true: pin group, false: pin)
+ * @selector: pin selector or group selector, depending on @is_group
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinctrl_generic_set_state_one(struct udevice *dev,
+                                        struct udevice *config,
+                                        bool is_group, unsigned selector)
+{
+       const void *fdt = gd->fdt_blob;
+       int node_offset = config->of_offset;
+       const char *propname;
+       const void *value;
+       int prop_offset, len, func_selector, param, ret;
+       u32 arg, default_val;
+
+       for (prop_offset = fdt_first_property_offset(fdt, node_offset);
+            prop_offset > 0;
+            prop_offset = fdt_next_property_offset(fdt, prop_offset)) {
+               value = fdt_getprop_by_offset(fdt, prop_offset,
+                                             &propname, &len);
+               if (!value)
+                       return -EINVAL;
+
+               if (!strcmp(propname, "function")) {
+                       func_selector = pinmux_func_name_to_selector(dev,
+                                                                    value);
+                       if (func_selector < 0)
+                               return func_selector;
+                       ret = pinmux_enable_setting(dev, is_group,
+                                                   selector,
+                                                   func_selector);
+               } else {
+                       param = pinconf_prop_name_to_param(dev, propname,
+                                                          &default_val);
+                       if (param < 0)
+                               continue; /* just skip unknown properties */
+
+                       if (len >= sizeof(fdt32_t))
+                               arg = fdt32_to_cpu(*(fdt32_t *)value);
+                       else
+                               arg = default_val;
+
+                       ret = pinconf_enable_setting(dev, is_group,
+                                                    selector, param, arg);
+               }
+
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
+/**
+ * pinctrl_generic_set_state_subnode() - apply all settings in config node
+ *
+ * @dev: pin controller device
+ * @config: pseudo device pointing to config node
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinctrl_generic_set_state_subnode(struct udevice *dev,
+                                            struct udevice *config)
+{
+       const void *fdt = gd->fdt_blob;
+       int node = config->of_offset;
+       const char *subnode_target_type = "pins";
+       bool is_group = false;
+       const char *name;
+       int strings_count, selector, i, ret;
+
+       strings_count = fdt_count_strings(fdt, node, subnode_target_type);
+       if (strings_count < 0) {
+               subnode_target_type = "groups";
+               is_group = true;
+               strings_count = fdt_count_strings(fdt, node,
+                                                 subnode_target_type);
+               if (strings_count < 0)
+                       return -EINVAL;
+       }
+
+       for (i = 0; i < strings_count; i++) {
+               ret = fdt_get_string_index(fdt, node, subnode_target_type,
+                                          i, &name);
+               if (ret < 0)
+                       return -EINVAL;
+
+               if (is_group)
+                       selector = pinctrl_group_name_to_selector(dev, name);
+               else
+                       selector = pinctrl_pin_name_to_selector(dev, name);
+               if (selector < 0)
+                       return selector;
+
+               ret = pinctrl_generic_set_state_one(dev, config,
+                                                   is_group, selector);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
+int pinctrl_generic_set_state(struct udevice *dev, struct udevice *config)
+{
+       struct udevice *child;
+       int ret;
+
+       ret = pinctrl_generic_set_state_subnode(dev, config);
+       if (ret)
+               return ret;
+
+       for (device_find_first_child(config, &child);
+            child;
+            device_find_next_child(&child)) {
+               ret = pinctrl_generic_set_state_subnode(dev, child);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
diff --git a/drivers/pinctrl/pinctrl-sandbox.c b/drivers/pinctrl/pinctrl-sandbox.c
new file mode 100644 (file)
index 0000000..ab03d8b
--- /dev/null
@@ -0,0 +1,147 @@
+/*
+ * Copyright (C) 2015  Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/* #define DEBUG */
+
+#include <common.h>
+#include <dm/device.h>
+#include <dm/pinctrl.h>
+
+static const char * const sandbox_pins[] = {
+       "SCL",
+       "SDA",
+       "TX",
+       "RX",
+};
+
+static const char * const sandbox_groups[] = {
+       "i2c",
+       "serial_a",
+       "serial_b",
+       "spi",
+};
+
+static const char * const sandbox_functions[] = {
+       "i2c",
+       "serial",
+       "spi",
+};
+
+static const struct pinconf_param sandbox_conf_params[] = {
+       { "bias-disable", PIN_CONFIG_BIAS_DISABLE, 0 },
+       { "bias-high-impedance", PIN_CONFIG_BIAS_HIGH_IMPEDANCE, 0 },
+       { "bias-bus-hold", PIN_CONFIG_BIAS_BUS_HOLD, 0 },
+       { "bias-pull-up", PIN_CONFIG_BIAS_PULL_UP, 1 },
+       { "bias-pull-down", PIN_CONFIG_BIAS_PULL_DOWN, 1 },
+       { "bias-pull-pin-default", PIN_CONFIG_BIAS_PULL_PIN_DEFAULT, 1 },
+       { "drive-open-drain", PIN_CONFIG_DRIVE_OPEN_DRAIN, 0 },
+       { "drive-open-source", PIN_CONFIG_DRIVE_OPEN_SOURCE, 0 },
+       { "drive-strength", PIN_CONFIG_DRIVE_STRENGTH, 0 },
+       { "input-enable", PIN_CONFIG_INPUT_ENABLE, 1 },
+       { "input-disable", PIN_CONFIG_INPUT_ENABLE, 0 },
+};
+
+static int sandbox_get_pins_count(struct udevice *dev)
+{
+       return ARRAY_SIZE(sandbox_pins);
+}
+
+static const char *sandbox_get_pin_name(struct udevice *dev, unsigned selector)
+{
+       return sandbox_pins[selector];
+}
+
+static int sandbox_get_groups_count(struct udevice *dev)
+{
+       return ARRAY_SIZE(sandbox_groups);
+}
+
+static const char *sandbox_get_group_name(struct udevice *dev,
+                                         unsigned selector)
+{
+       return sandbox_groups[selector];
+}
+
+static int sandbox_get_functions_count(struct udevice *dev)
+{
+       return ARRAY_SIZE(sandbox_functions);
+}
+
+static const char *sandbox_get_function_name(struct udevice *dev,
+                                            unsigned selector)
+{
+       return sandbox_functions[selector];
+}
+
+static int sandbox_pinmux_set(struct udevice *dev, unsigned pin_selector,
+                             unsigned func_selector)
+{
+       debug("sandbox pinmux: pin = %d (%s), function = %d (%s)\n",
+             pin_selector, sandbox_get_pin_name(dev, pin_selector),
+             func_selector, sandbox_get_function_name(dev, func_selector));
+
+       return 0;
+}
+
+static int sandbox_pinmux_group_set(struct udevice *dev,
+                                   unsigned group_selector,
+                                   unsigned func_selector)
+{
+       debug("sandbox pinmux: group = %d (%s), function = %d (%s)\n",
+             group_selector, sandbox_get_group_name(dev, group_selector),
+             func_selector, sandbox_get_function_name(dev, func_selector));
+
+       return 0;
+}
+
+static int sandbox_pinconf_set(struct udevice *dev, unsigned pin_selector,
+                              unsigned param, unsigned argument)
+{
+       debug("sandbox pinconf: pin = %d (%s), param = %d, arg = %d\n",
+             pin_selector, sandbox_get_pin_name(dev, pin_selector),
+             param, argument);
+
+       return 0;
+}
+
+static int sandbox_pinconf_group_set(struct udevice *dev,
+                                    unsigned group_selector,
+                                    unsigned param, unsigned argument)
+{
+       debug("sandbox pinconf: group = %d (%s), param = %d, arg = %d\n",
+             group_selector, sandbox_get_group_name(dev, group_selector),
+             param, argument);
+
+       return 0;
+}
+
+const struct pinctrl_ops sandbox_pinctrl_ops = {
+       .get_pins_count = sandbox_get_pins_count,
+       .get_pin_name = sandbox_get_pin_name,
+       .get_groups_count = sandbox_get_groups_count,
+       .get_group_name = sandbox_get_group_name,
+       .get_functions_count = sandbox_get_functions_count,
+       .get_function_name = sandbox_get_function_name,
+       .pinmux_set = sandbox_pinmux_set,
+       .pinmux_group_set = sandbox_pinmux_group_set,
+       .pinconf_num_params = ARRAY_SIZE(sandbox_conf_params),
+       .pinconf_params = sandbox_conf_params,
+       .pinconf_set = sandbox_pinconf_set,
+       .pinconf_group_set = sandbox_pinconf_group_set,
+       .set_state = pinctrl_generic_set_state,
+};
+
+static const struct udevice_id sandbox_pinctrl_match[] = {
+       { .compatible = "sandbox,pinctrl" },
+       { /* sentinel */ }
+};
+
+U_BOOT_DRIVER(sandbox_pinctrl) = {
+       .name = "sandbox_pinctrl",
+       .id = UCLASS_PINCTRL,
+       .of_match = sandbox_pinctrl_match,
+       .ops = &sandbox_pinctrl_ops,
+};
diff --git a/drivers/pinctrl/pinctrl-uclass.c b/drivers/pinctrl/pinctrl-uclass.c
new file mode 100644 (file)
index 0000000..58001ef
--- /dev/null
@@ -0,0 +1,262 @@
+/*
+ * Copyright (C) 2015  Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <libfdt.h>
+#include <linux/err.h>
+#include <linux/list.h>
+#include <dm/device.h>
+#include <dm/lists.h>
+#include <dm/pinctrl.h>
+#include <dm/root.h>
+#include <dm/uclass.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#if CONFIG_IS_ENABLED(PINCTRL_FULL)
+/**
+ * pinctrl_config_one() - apply pinctrl settings for a single node
+ *
+ * @config: pin configuration node
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinctrl_config_one(struct udevice *config)
+{
+       struct udevice *pctldev;
+       const struct pinctrl_ops *ops;
+
+       pctldev = config;
+       for (;;) {
+               pctldev = dev_get_parent(pctldev);
+               if (!pctldev) {
+                       dev_err(config, "could not find pctldev\n");
+                       return -EINVAL;
+               }
+               if (pctldev->uclass->uc_drv->id == UCLASS_PINCTRL)
+                       break;
+       }
+
+       ops = pinctrl_get_ops(pctldev);
+       return ops->set_state(pctldev, config);
+}
+
+/**
+ * pinctrl_select_state_full() - full implementation of pinctrl_select_state
+ *
+ * @dev: peripheral device
+ * @statename: state name, like "default"
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinctrl_select_state_full(struct udevice *dev, const char *statename)
+{
+       const void *fdt = gd->fdt_blob;
+       int node = dev->of_offset;
+       char propname[32]; /* long enough */
+       const fdt32_t *list;
+       uint32_t phandle;
+       int config_node;
+       struct udevice *config;
+       int state, size, i, ret;
+
+       state = fdt_find_string(fdt, node, "pinctrl-names", statename);
+       if (state < 0) {
+               char *end;
+               /*
+                * If statename is not found in "pinctrl-names",
+                * assume statename is just the integer state ID.
+                */
+               state = simple_strtoul(statename, &end, 10);
+               if (*end)
+                       return -EINVAL;
+       }
+
+       snprintf(propname, sizeof(propname), "pinctrl-%d", state);
+       list = fdt_getprop(fdt, node, propname, &size);
+       if (!list)
+               return -EINVAL;
+
+       size /= sizeof(*list);
+       for (i = 0; i < size; i++) {
+               phandle = fdt32_to_cpu(*list++);
+
+               config_node = fdt_node_offset_by_phandle(fdt, phandle);
+               if (config_node < 0) {
+                       dev_err(dev, "prop %s index %d invalid phandle\n",
+                               propname, i);
+                       return -EINVAL;
+               }
+               ret = uclass_get_device_by_of_offset(UCLASS_PINCONFIG,
+                                                    config_node, &config);
+               if (ret)
+                       return ret;
+
+               ret = pinctrl_config_one(config);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
+/**
+ * pinconfig_post-bind() - post binding for PINCONFIG uclass
+ * Recursively bind its children as pinconfig devices.
+ *
+ * @dev: pinconfig device
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinconfig_post_bind(struct udevice *dev)
+{
+       const void *fdt = gd->fdt_blob;
+       int offset = dev->of_offset;
+       const char *name;
+       int ret;
+
+       for (offset = fdt_first_subnode(fdt, offset);
+            offset > 0;
+            offset = fdt_next_subnode(fdt, offset)) {
+               /*
+                * If this node has "compatible" property, this is not
+                * a pin configuration node, but a normal device. skip.
+                */
+               fdt_get_property(fdt, offset, "compatible", &ret);
+               if (ret >= 0)
+                       continue;
+
+               if (ret != -FDT_ERR_NOTFOUND)
+                       return ret;
+
+               name = fdt_get_name(fdt, offset, NULL);
+               if (!name)
+                       return -EINVAL;
+               ret = device_bind_driver_to_node(dev, "pinconfig", name,
+                                                offset, NULL);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
+UCLASS_DRIVER(pinconfig) = {
+       .id = UCLASS_PINCONFIG,
+       .post_bind = pinconfig_post_bind,
+       .name = "pinconfig",
+};
+
+U_BOOT_DRIVER(pinconfig_generic) = {
+       .name = "pinconfig",
+       .id = UCLASS_PINCONFIG,
+};
+
+#else
+static int pinctrl_select_state_full(struct udevice *dev, const char *statename)
+{
+       return -ENODEV;
+}
+
+static int pinconfig_post_bind(struct udevice *dev)
+{
+       /* Scan the bus for devices */
+       return dm_scan_fdt_node(dev, gd->fdt_blob, dev->of_offset, false);
+}
+#endif
+
+/**
+ * pinctrl_select_state_simple() - simple implementation of pinctrl_select_state
+ *
+ * @dev: peripheral device
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinctrl_select_state_simple(struct udevice *dev)
+{
+       struct udevice *pctldev;
+       struct pinctrl_ops *ops;
+       int ret;
+
+       /*
+        * For simplicity, assume the first device of PINCTRL uclass
+        * is the correct one.  This is most likely OK as there is
+        * usually only one pinctrl device on the system.
+        */
+       ret = uclass_get_device(UCLASS_PINCTRL, 0, &pctldev);
+       if (ret)
+               return ret;
+
+       ops = pinctrl_get_ops(pctldev);
+       if (!ops->set_state_simple) {
+               dev_dbg(dev, "set_state_simple op missing\n");
+               return -ENOSYS;
+       }
+
+       return ops->set_state_simple(pctldev, dev);
+}
+
+int pinctrl_select_state(struct udevice *dev, const char *statename)
+{
+       /*
+        * Try full-implemented pinctrl first.
+        * If it fails or is not implemented, try simple one.
+        */
+       if (pinctrl_select_state_full(dev, statename))
+               return pinctrl_select_state_simple(dev);
+
+       return 0;
+}
+
+int pinctrl_request(struct udevice *dev, int func, int flags)
+{
+       struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+
+       if (!ops->request)
+               return -ENOSYS;
+
+       return ops->request(dev, func, flags);
+}
+
+int pinctrl_request_noflags(struct udevice *dev, int func)
+{
+       return pinctrl_request(dev, func, 0);
+}
+
+int pinctrl_get_periph_id(struct udevice *dev, struct udevice *periph)
+{
+       struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+
+       if (!ops->get_periph_id)
+               return -ENOSYS;
+
+       return ops->get_periph_id(dev, periph);
+}
+
+/**
+ * pinconfig_post-bind() - post binding for PINCTRL uclass
+ * Recursively bind child nodes as pinconfig devices in case of full pinctrl.
+ *
+ * @dev: pinctrl device
+ * @return: 0 on success, or negative error code on failure
+ */
+static int pinctrl_post_bind(struct udevice *dev)
+{
+       const struct pinctrl_ops *ops = pinctrl_get_ops(dev);
+
+       if (!ops) {
+               dev_dbg(dev, "ops is not set.  Do not bind.\n");
+               return -EINVAL;
+       }
+
+       /*
+        * The pinctrl driver child nodes should be bound so that peripheral
+        * devices can easily search in parent devices during later DT-parsing.
+        */
+       return pinconfig_post_bind(dev);
+}
+
+UCLASS_DRIVER(pinctrl) = {
+       .id = UCLASS_PINCTRL,
+       .post_bind = pinctrl_post_bind,
+       .name = "pinctrl",
+};
diff --git a/drivers/pinctrl/rockchip/Makefile b/drivers/pinctrl/rockchip/Makefile
new file mode 100644 (file)
index 0000000..251bace
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# Copyright (c) 2015 Google, Inc
+# Written by Simon Glass <sjg@chromium.org>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-$(CONFIG_ROCKCHIP_PINCTRL) += pinctrl_rk3288.o
diff --git a/drivers/pinctrl/rockchip/pinctrl_rk3288.c b/drivers/pinctrl/rockchip/pinctrl_rk3288.c
new file mode 100644 (file)
index 0000000..5205498
--- /dev/null
@@ -0,0 +1,441 @@
+/*
+ * Pinctrl driver for Rockchip SoCs
+ * Copyright (c) 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <syscon.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/grf_rk3288.h>
+#include <asm/arch/hardware.h>
+#include <asm/arch/periph.h>
+#include <asm/arch/pmu_rk3288.h>
+#include <dm/pinctrl.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct rk3288_pinctrl_priv {
+       struct rk3288_grf *grf;
+       struct rk3288_pmu *pmu;
+};
+
+static void pinctrl_rk3288_pwm_config(struct rk3288_grf *grf, int pwm_id)
+{
+       switch (pwm_id) {
+       case PERIPH_ID_PWM0:
+               rk_clrsetreg(&grf->gpio7a_iomux, GPIO7A0_MASK << GPIO7A0_SHIFT,
+                            GPIO7A0_PWM_0 << GPIO7A0_SHIFT);
+               break;
+       case PERIPH_ID_PWM1:
+               rk_clrsetreg(&grf->gpio7a_iomux, GPIO7A1_MASK << GPIO7A1_SHIFT,
+                            GPIO7A1_PWM_1 << GPIO7A1_SHIFT);
+               break;
+       case PERIPH_ID_PWM2:
+               rk_clrsetreg(&grf->gpio7a_iomux, GPIO7C6_MASK << GPIO7C6_SHIFT,
+                            GPIO7C6_PWM_2 << GPIO7C6_SHIFT);
+               break;
+       case PERIPH_ID_PWM3:
+               rk_clrsetreg(&grf->gpio7a_iomux, GPIO7C7_MASK << GPIO7C6_SHIFT,
+                            GPIO7C7_PWM_3 << GPIO7C7_SHIFT);
+               break;
+       default:
+               debug("pwm id = %d iomux error!\n", pwm_id);
+               break;
+       }
+}
+
+static void pinctrl_rk3288_i2c_config(struct rk3288_grf *grf,
+                                     struct rk3288_pmu *pmu, int i2c_id)
+{
+       switch (i2c_id) {
+       case PERIPH_ID_I2C0:
+               clrsetbits_le32(&pmu->gpio0b_iomux,
+                               GPIO0_B7_MASK << GPIO0_B7_SHIFT,
+                               GPIO0_B7_I2C0PMU_SDA << GPIO0_B7_SHIFT);
+               clrsetbits_le32(&pmu->gpio0b_iomux,
+                               GPIO0_C0_MASK << GPIO0_C0_SHIFT,
+                               GPIO0_C0_I2C0PMU_SCL << GPIO0_C0_SHIFT);
+               break;
+       case PERIPH_ID_I2C1:
+               rk_clrsetreg(&grf->gpio8a_iomux,
+                            GPIO8A4_MASK << GPIO8A4_SHIFT |
+                            GPIO8A5_MASK << GPIO8A5_SHIFT,
+                            GPIO8A4_I2C2SENSOR_SDA << GPIO8A4_SHIFT |
+                            GPIO8A5_I2C2SENSOR_SCL << GPIO8A5_SHIFT);
+               break;
+       case PERIPH_ID_I2C2:
+               rk_clrsetreg(&grf->gpio6b_iomux,
+                            GPIO6B1_MASK << GPIO6B1_SHIFT |
+                            GPIO6B2_MASK << GPIO6B2_SHIFT,
+                            GPIO6B1_I2C1AUDIO_SDA << GPIO6B1_SHIFT |
+                            GPIO6B2_I2C1AUDIO_SCL << GPIO6B2_SHIFT);
+               break;
+       case PERIPH_ID_I2C3:
+               rk_clrsetreg(&grf->gpio2c_iomux,
+                            GPIO2C1_MASK << GPIO2C1_SHIFT |
+                            GPIO2C0_MASK << GPIO2C0_SHIFT,
+                            GPIO2C1_I2C3CAM_SDA << GPIO2C1_SHIFT |
+                            GPIO2C0_I2C3CAM_SCL << GPIO2C0_SHIFT);
+               break;
+       case PERIPH_ID_I2C4:
+               rk_clrsetreg(&grf->gpio7cl_iomux,
+                            GPIO7C1_MASK << GPIO7C1_SHIFT |
+                            GPIO7C2_MASK << GPIO7C2_SHIFT,
+                            GPIO7C1_I2C4TP_SDA << GPIO7C1_SHIFT |
+                            GPIO7C2_I2C4TP_SCL << GPIO7C2_SHIFT);
+               break;
+       case PERIPH_ID_I2C5:
+               rk_clrsetreg(&grf->gpio7cl_iomux,
+                            GPIO7C3_MASK << GPIO7C3_SHIFT,
+                            GPIO7C3_I2C5HDMI_SDA << GPIO7C3_SHIFT);
+               rk_clrsetreg(&grf->gpio7ch_iomux,
+                            GPIO7C4_MASK << GPIO7C4_SHIFT,
+                            GPIO7C4_I2C5HDMI_SCL << GPIO7C4_SHIFT);
+               break;
+       default:
+               debug("i2c id = %d iomux error!\n", i2c_id);
+               break;
+       }
+}
+
+static void pinctrl_rk3288_lcdc_config(struct rk3288_grf *grf, int lcd_id)
+{
+       switch (lcd_id) {
+       case PERIPH_ID_LCDC0:
+               rk_clrsetreg(&grf->gpio1d_iomux,
+                            GPIO1D3_MASK << GPIO1D0_SHIFT |
+                            GPIO1D2_MASK << GPIO1D2_SHIFT |
+                            GPIO1D1_MASK << GPIO1D1_SHIFT |
+                            GPIO1D0_MASK << GPIO1D0_SHIFT,
+                            GPIO1D3_LCDC0_DCLK << GPIO1D3_SHIFT |
+                            GPIO1D2_LCDC0_DEN << GPIO1D2_SHIFT |
+                            GPIO1D1_LCDC0_VSYNC << GPIO1D1_SHIFT |
+                            GPIO1D0_LCDC0_HSYNC << GPIO1D0_SHIFT);
+               break;
+       default:
+               debug("lcdc id = %d iomux error!\n", lcd_id);
+               break;
+       }
+}
+
+static int pinctrl_rk3288_spi_config(struct rk3288_grf *grf,
+                                    enum periph_id spi_id, int cs)
+{
+       switch (spi_id) {
+       case PERIPH_ID_SPI0:
+               switch (cs) {
+               case 0:
+                       rk_clrsetreg(&grf->gpio5b_iomux,
+                                    GPIO5B5_MASK << GPIO5B5_SHIFT,
+                                    GPIO5B5_SPI0_CSN0 << GPIO5B5_SHIFT);
+                       break;
+               case 1:
+                       rk_clrsetreg(&grf->gpio5c_iomux,
+                                    GPIO5C0_MASK << GPIO5C0_SHIFT,
+                                    GPIO5C0_SPI0_CSN1 << GPIO5C0_SHIFT);
+                       break;
+               default:
+                       goto err;
+               }
+               rk_clrsetreg(&grf->gpio5b_iomux,
+                            GPIO5B7_MASK << GPIO5B7_SHIFT |
+                            GPIO5B6_MASK << GPIO5B6_SHIFT |
+                            GPIO5B4_MASK << GPIO5B4_SHIFT,
+                            GPIO5B7_SPI0_RXD << GPIO5B7_SHIFT |
+                            GPIO5B6_SPI0_TXD << GPIO5B6_SHIFT |
+                            GPIO5B4_SPI0_CLK << GPIO5B4_SHIFT);
+               break;
+       case PERIPH_ID_SPI1:
+               if (cs != 0)
+                       goto err;
+               rk_clrsetreg(&grf->gpio7b_iomux,
+                            GPIO7B6_MASK << GPIO7B6_SHIFT |
+                            GPIO7B7_MASK << GPIO7B7_SHIFT |
+                            GPIO7B5_MASK << GPIO7B5_SHIFT |
+                            GPIO7B4_MASK << GPIO7B4_SHIFT,
+                            GPIO7B6_SPI1_RXD << GPIO7B6_SHIFT |
+                            GPIO7B7_SPI1_TXD << GPIO7B7_SHIFT |
+                            GPIO7B5_SPI1_CSN0 << GPIO7B5_SHIFT |
+                            GPIO7B4_SPI1_CLK << GPIO7B4_SHIFT);
+               break;
+       case PERIPH_ID_SPI2:
+               switch (cs) {
+               case 0:
+                       rk_clrsetreg(&grf->gpio8a_iomux,
+                                    GPIO8A7_MASK << GPIO8A7_SHIFT,
+                                    GPIO8A7_SPI2_CSN0 << GPIO8A7_SHIFT);
+                       break;
+               case 1:
+                       rk_clrsetreg(&grf->gpio8a_iomux,
+                                    GPIO8A3_MASK << GPIO8A3_SHIFT,
+                                    GPIO8A3_SPI2_CSN1 << GPIO8A3_SHIFT);
+                       break;
+               default:
+                       goto err;
+               }
+               rk_clrsetreg(&grf->gpio8b_iomux,
+                            GPIO8B1_MASK << GPIO8B1_SHIFT |
+                            GPIO8B0_MASK << GPIO8B0_SHIFT,
+                            GPIO8B1_SPI2_TXD << GPIO8B1_SHIFT |
+                            GPIO8B0_SPI2_RXD << GPIO8B0_SHIFT);
+               rk_clrsetreg(&grf->gpio8a_iomux,
+                            GPIO8A6_MASK << GPIO8A6_SHIFT,
+                            GPIO8A6_SPI2_CLK << GPIO8A6_SHIFT);
+               break;
+       default:
+               goto err;
+       }
+
+       return 0;
+err:
+       debug("rkspi: periph%d cs=%d not supported", spi_id, cs);
+       return -ENOENT;
+}
+
+static void pinctrl_rk3288_uart_config(struct rk3288_grf *grf, int uart_id)
+{
+       switch (uart_id) {
+       case PERIPH_ID_UART_BT:
+               rk_clrsetreg(&grf->gpio4c_iomux,
+                            GPIO4C3_MASK << GPIO4C3_SHIFT |
+                            GPIO4C2_MASK << GPIO4C2_SHIFT |
+                            GPIO4C1_MASK << GPIO4C1_SHIFT |
+                            GPIO4C0_MASK << GPIO4C0_SHIFT,
+                            GPIO4C3_UART0BT_RTSN << GPIO4C3_SHIFT |
+                            GPIO4C2_UART0BT_CTSN << GPIO4C2_SHIFT |
+                            GPIO4C1_UART0BT_SOUT << GPIO4C1_SHIFT |
+                            GPIO4C0_UART0BT_SIN << GPIO4C0_SHIFT);
+               break;
+       case PERIPH_ID_UART_BB:
+               rk_clrsetreg(&grf->gpio5b_iomux,
+                            GPIO5B3_MASK << GPIO5B3_SHIFT |
+                            GPIO5B2_MASK << GPIO5B2_SHIFT |
+                            GPIO5B1_MASK << GPIO5B1_SHIFT |
+                            GPIO5B0_MASK << GPIO5B0_SHIFT,
+                            GPIO5B3_UART1BB_RTSN << GPIO5B3_SHIFT |
+                            GPIO5B2_UART1BB_CTSN << GPIO5B2_SHIFT |
+                            GPIO5B1_UART1BB_SOUT << GPIO5B1_SHIFT |
+                            GPIO5B0_UART1BB_SIN << GPIO5B0_SHIFT);
+               break;
+       case PERIPH_ID_UART_DBG:
+               rk_clrsetreg(&grf->gpio7ch_iomux,
+                            GPIO7C7_MASK << GPIO7C7_SHIFT |
+                            GPIO7C6_MASK << GPIO7C6_SHIFT,
+                            GPIO7C7_UART2DBG_SOUT << GPIO7C7_SHIFT |
+                            GPIO7C6_UART2DBG_SIN << GPIO7C6_SHIFT);
+               break;
+       case PERIPH_ID_UART_GPS:
+               rk_clrsetreg(&grf->gpio7b_iomux,
+                            GPIO7B2_MASK << GPIO7B2_SHIFT |
+                            GPIO7B1_MASK << GPIO7B1_SHIFT |
+                            GPIO7B0_MASK << GPIO7B0_SHIFT,
+                            GPIO7B2_UART3GPS_RTSN << GPIO7B2_SHIFT |
+                            GPIO7B1_UART3GPS_CTSN << GPIO7B1_SHIFT |
+                            GPIO7B0_UART3GPS_SOUT << GPIO7B0_SHIFT);
+               rk_clrsetreg(&grf->gpio7a_iomux,
+                            GPIO7A7_MASK << GPIO7A7_SHIFT,
+                            GPIO7A7_UART3GPS_SIN << GPIO7A7_SHIFT);
+               break;
+       case PERIPH_ID_UART_EXP:
+               rk_clrsetreg(&grf->gpio5b_iomux,
+                            GPIO5B5_MASK << GPIO5B5_SHIFT |
+                            GPIO5B4_MASK << GPIO5B4_SHIFT |
+                            GPIO5B6_MASK << GPIO5B6_SHIFT |
+                            GPIO5B7_MASK << GPIO5B7_SHIFT,
+                            GPIO5B5_UART4EXP_RTSN << GPIO5B5_SHIFT |
+                            GPIO5B4_UART4EXP_CTSN << GPIO5B4_SHIFT |
+                            GPIO5B6_UART4EXP_SOUT << GPIO5B6_SHIFT |
+                            GPIO5B7_UART4EXP_SIN << GPIO5B7_SHIFT);
+               break;
+       default:
+               debug("uart id = %d iomux error!\n", uart_id);
+               break;
+       }
+}
+
+static void pinctrl_rk3288_sdmmc_config(struct rk3288_grf *grf, int mmc_id)
+{
+       switch (mmc_id) {
+       case PERIPH_ID_EMMC:
+               rk_clrsetreg(&grf->gpio3a_iomux, 0xffff,
+                            GPIO3A7_EMMC_DATA7 << GPIO3A7_SHIFT |
+                            GPIO3A6_EMMC_DATA6 << GPIO3A6_SHIFT |
+                            GPIO3A5_EMMC_DATA5 << GPIO3A5_SHIFT |
+                            GPIO3A4_EMMC_DATA4 << GPIO3A4_SHIFT |
+                            GPIO3A3_EMMC_DATA3 << GPIO3A3_SHIFT |
+                            GPIO3A2_EMMC_DATA2 << GPIO3A2_SHIFT |
+                            GPIO3A1_EMMC_DATA1 << GPIO3A1_SHIFT |
+                            GPIO3A0_EMMC_DATA0 << GPIO3A0_SHIFT);
+               rk_clrsetreg(&grf->gpio3b_iomux, GPIO3B1_MASK << GPIO3B1_SHIFT,
+                            GPIO3B1_EMMC_PWREN << GPIO3B1_SHIFT);
+               rk_clrsetreg(&grf->gpio3c_iomux,
+                            GPIO3C0_MASK << GPIO3C0_SHIFT,
+                            GPIO3C0_EMMC_CMD << GPIO3C0_SHIFT);
+               break;
+       case PERIPH_ID_SDCARD:
+               rk_clrsetreg(&grf->gpio6c_iomux, 0xffff,
+                            GPIO6C6_SDMMC0_DECTN << GPIO6C6_SHIFT |
+                            GPIO6C5_SDMMC0_CMD << GPIO6C5_SHIFT |
+                            GPIO6C4_SDMMC0_CLKOUT << GPIO6C4_SHIFT |
+                            GPIO6C3_SDMMC0_DATA3 << GPIO6C3_SHIFT |
+                            GPIO6C2_SDMMC0_DATA2 << GPIO6C2_SHIFT |
+                            GPIO6C1_SDMMC0_DATA1 << GPIO6C1_SHIFT |
+                            GPIO6C0_SDMMC0_DATA0 << GPIO6C0_SHIFT);
+
+               /* use sdmmc0 io, disable JTAG function */
+               rk_clrsetreg(&grf->soc_con0, 1 << GRF_FORCE_JTAG_SHIFT, 0);
+               break;
+       default:
+               debug("mmc id = %d iomux error!\n", mmc_id);
+               break;
+       }
+}
+
+static void pinctrl_rk3288_hdmi_config(struct rk3288_grf *grf, int hdmi_id)
+{
+       switch (hdmi_id) {
+       case PERIPH_ID_HDMI:
+               rk_clrsetreg(&grf->gpio7cl_iomux, GPIO7C3_MASK << GPIO7C3_SHIFT,
+                            GPIO7C3_EDPHDMII2C_SDA << GPIO7C3_SHIFT);
+               rk_clrsetreg(&grf->gpio7ch_iomux, GPIO7C4_MASK << GPIO7C4_SHIFT,
+                            GPIO7C4_EDPHDMII2C_SCL << GPIO7C4_SHIFT);
+               break;
+       default:
+               debug("hdmi id = %d iomux error!\n", hdmi_id);
+               break;
+       }
+}
+
+static int rk3288_pinctrl_request(struct udevice *dev, int func, int flags)
+{
+       struct rk3288_pinctrl_priv *priv = dev_get_priv(dev);
+
+       debug("%s: func=%x, flags=%x\n", __func__, func, flags);
+       switch (func) {
+       case PERIPH_ID_PWM0:
+       case PERIPH_ID_PWM1:
+       case PERIPH_ID_PWM2:
+       case PERIPH_ID_PWM3:
+       case PERIPH_ID_PWM4:
+               pinctrl_rk3288_pwm_config(priv->grf, func);
+               break;
+       case PERIPH_ID_I2C0:
+       case PERIPH_ID_I2C1:
+       case PERIPH_ID_I2C2:
+       case PERIPH_ID_I2C3:
+       case PERIPH_ID_I2C4:
+       case PERIPH_ID_I2C5:
+               pinctrl_rk3288_i2c_config(priv->grf, priv->pmu, func);
+               break;
+       case PERIPH_ID_SPI0:
+       case PERIPH_ID_SPI1:
+       case PERIPH_ID_SPI2:
+               pinctrl_rk3288_spi_config(priv->grf, func, flags);
+               break;
+       case PERIPH_ID_UART0:
+       case PERIPH_ID_UART1:
+       case PERIPH_ID_UART2:
+       case PERIPH_ID_UART3:
+       case PERIPH_ID_UART4:
+               pinctrl_rk3288_uart_config(priv->grf, func);
+               break;
+       case PERIPH_ID_LCDC0:
+       case PERIPH_ID_LCDC1:
+               pinctrl_rk3288_lcdc_config(priv->grf, func);
+               break;
+       case PERIPH_ID_SDMMC0:
+       case PERIPH_ID_SDMMC1:
+               pinctrl_rk3288_sdmmc_config(priv->grf, func);
+               break;
+       case PERIPH_ID_HDMI:
+               pinctrl_rk3288_hdmi_config(priv->grf, func);
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+static int rk3288_pinctrl_get_periph_id(struct udevice *dev,
+                                       struct udevice *periph)
+{
+       u32 cell[3];
+       int ret;
+
+       ret = fdtdec_get_int_array(gd->fdt_blob, periph->of_offset,
+                                  "interrupts", cell, ARRAY_SIZE(cell));
+       if (ret < 0)
+               return -EINVAL;
+
+       switch (cell[1]) {
+       case 44:
+               return PERIPH_ID_SPI0;
+       case 45:
+               return PERIPH_ID_SPI1;
+       case 46:
+               return PERIPH_ID_SPI2;
+       case 60:
+               return PERIPH_ID_I2C0;
+       case 62: /* Note strange order */
+               return PERIPH_ID_I2C1;
+       case 61:
+               return PERIPH_ID_I2C2;
+       case 63:
+               return PERIPH_ID_I2C3;
+       case 64:
+               return PERIPH_ID_I2C4;
+       case 65:
+               return PERIPH_ID_I2C5;
+       }
+
+       return -ENOENT;
+}
+
+static int rk3288_pinctrl_set_state_simple(struct udevice *dev,
+                                          struct udevice *periph)
+{
+       int func;
+
+       func = rk3288_pinctrl_get_periph_id(dev, periph);
+       if (func < 0)
+               return func;
+       return rk3288_pinctrl_request(dev, func, 0);
+}
+
+static struct pinctrl_ops rk3288_pinctrl_ops = {
+       .set_state_simple       = rk3288_pinctrl_set_state_simple,
+       .request        = rk3288_pinctrl_request,
+       .get_periph_id  = rk3288_pinctrl_get_periph_id,
+};
+
+static int rk3288_pinctrl_probe(struct udevice *dev)
+{
+       struct rk3288_pinctrl_priv *priv = dev_get_priv(dev);
+
+       priv->grf = syscon_get_first_range(ROCKCHIP_SYSCON_GRF);
+       priv->pmu = syscon_get_first_range(ROCKCHIP_SYSCON_PMU);
+       debug("%s: grf=%p, pmu=%p\n", __func__, priv->grf, priv->pmu);
+
+       return 0;
+}
+
+static const struct udevice_id rk3288_pinctrl_ids[] = {
+       { .compatible = "rockchip,rk3288-pinctrl" },
+       { }
+};
+
+U_BOOT_DRIVER(pinctrl_rk3288) = {
+       .name           = "pinctrl_rk3288",
+       .id             = UCLASS_PINCTRL,
+       .of_match       = rk3288_pinctrl_ids,
+       .priv_auto_alloc_size = sizeof(struct rk3288_pinctrl_priv),
+       .ops            = &rk3288_pinctrl_ops,
+       .probe          = rk3288_pinctrl_probe,
+};
index 23cdd714ae6aac75424c0151cba43902362e69b8..df5e3734b05f20e8ff9db1c83dea2aad3a41fe0f 100644 (file)
@@ -22,6 +22,15 @@ config AXP221_DCDC1_VOLT
        things like GPIO-s, sdcard interfaces, etc. On most boards this is
        undervolted to 3.0V to safe battery.
 
+config AXP221_DCDC2_VOLT
+       int "axp221 dcdc2 voltage"
+       depends on AXP221_POWER
+       default 1200
+       ---help---
+       Set the voltage (mV) to program the axp221 dcdc2 at, set to 0 to
+       disable dcdc2. On A31 boards this is typically used for VDD-GPU,
+       on A23/A33 for VDD-SYS, this should normally be set to 1.2V.
+
 config AXP221_DLDO1_VOLT
        int "axp221 dldo1 voltage"
        depends on AXP221_POWER
index fc6a3743dc964d5121cdf419f8c1b602b9e422e8..547fd1aaa6a0d7ee0ece5ddbd15b5551f9fe9cd7 100644 (file)
@@ -10,6 +10,15 @@ config DM_PMIC
        - 'drivers/power/pmic/pmic-uclass.c'
        - 'include/power/pmic.h'
 
+config PMIC_ACT8846
+       bool "Enable support for the active-semi 8846 PMIC"
+       depends on DM_PMIC && DM_I2C
+       ---help---
+       This PMIC includes 4 DC/DC step-down buck regulators and 8 low-dropout
+       regulators (LDOs). It also provides some GPIO, reset and battery
+       functions. It uses an I2C interface and is designed for use with
+       tablets and smartphones.
+
 config DM_PMIC_PFUZE100
        bool "Enable Driver Model for PMIC PFUZE100"
        depends on DM_PMIC
index 99c5778334a4350bf1b52b8aeb4ade0095d35c99..00fde71b2c22f91ccae08eff799e80601ff9b09a 100644 (file)
@@ -9,6 +9,7 @@ obj-$(CONFIG_DM_PMIC) += pmic-uclass.o
 obj-$(CONFIG_DM_PMIC_MAX77686) += max77686.o
 obj-$(CONFIG_DM_PMIC_PFUZE100) += pfuze100.o
 obj-$(CONFIG_DM_PMIC_SANDBOX) += sandbox.o i2c_pmic_emul.o
+obj-$(CONFIG_PMIC_ACT8846) += act8846.o
 obj-$(CONFIG_PMIC_TPS65090) += tps65090.o
 obj-$(CONFIG_PMIC_S5M8767) += s5m8767.o
 
@@ -19,6 +20,7 @@ obj-$(CONFIG_POWER_MAX8997) += pmic_max8997.o
 obj-$(CONFIG_POWER_MUIC_MAX8997) += muic_max8997.o
 obj-$(CONFIG_POWER_MAX77686) += pmic_max77686.o
 obj-$(CONFIG_POWER_PFUZE100) += pmic_pfuze100.o
+obj-$(CONFIG_POWER_PFUZE3000) += pmic_pfuze3000.o
 obj-$(CONFIG_POWER_TPS65217) += pmic_tps65217.o
 obj-$(CONFIG_POWER_TPS65218) += pmic_tps62362.o
 obj-$(CONFIG_POWER_TPS65218) += pmic_tps65218.o
diff --git a/drivers/power/pmic/act8846.c b/drivers/power/pmic/act8846.c
new file mode 100644 (file)
index 0000000..ff096b3
--- /dev/null
@@ -0,0 +1,90 @@
+/*
+ * Copyright (C) 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <fdtdec.h>
+#include <libfdt.h>
+#include <power/act8846_pmic.h>
+#include <power/pmic.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static const struct pmic_child_info pmic_children_info[] = {
+       { .prefix = "REG", .driver = "act8846_reg"},
+       { },
+};
+
+static int act8846_reg_count(struct udevice *dev)
+{
+       return ACT8846_NUM_OF_REGS;
+}
+
+static int act8846_write(struct udevice *dev, uint reg, const uint8_t *buff,
+                         int len)
+{
+       if (dm_i2c_write(dev, reg, buff, len)) {
+               debug("write error to device: %p register: %#x!", dev, reg);
+               return -EIO;
+       }
+
+       return 0;
+}
+
+static int act8846_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
+{
+       if (dm_i2c_read(dev, reg, buff, len)) {
+               debug("read error from device: %p register: %#x!", dev, reg);
+               return -EIO;
+       }
+
+       return 0;
+}
+
+static int act8846_bind(struct udevice *dev)
+{
+       const void *blob = gd->fdt_blob;
+       int regulators_node;
+       int children;
+
+       regulators_node = fdt_subnode_offset(blob, dev->of_offset,
+                                            "regulators");
+       if (regulators_node <= 0) {
+               debug("%s: %s regulators subnode not found!", __func__,
+                     dev->name);
+               return -ENXIO;
+       }
+
+       debug("%s: '%s' - found regulators subnode\n", __func__, dev->name);
+
+       children = pmic_bind_children(dev, regulators_node, pmic_children_info);
+       if (!children)
+               debug("%s: %s - no child found\n", __func__, dev->name);
+
+       /* Always return success for this device */
+       return 0;
+}
+
+static struct dm_pmic_ops act8846_ops = {
+       .reg_count = act8846_reg_count,
+       .read = act8846_read,
+       .write = act8846_write,
+};
+
+static const struct udevice_id act8846_ids[] = {
+       { .compatible = "active-semi,act8846" },
+       { }
+};
+
+U_BOOT_DRIVER(pmic_act8846) = {
+       .name = "act8846 pmic",
+       .id = UCLASS_PMIC,
+       .of_match = act8846_ids,
+       .bind = act8846_bind,
+       .ops = &act8846_ops,
+};
diff --git a/drivers/power/pmic/pmic_pfuze3000.c b/drivers/power/pmic/pmic_pfuze3000.c
new file mode 100644 (file)
index 0000000..ac807a8
--- /dev/null
@@ -0,0 +1,32 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ * Peng Fan <Peng.Fan@freescale.com>
+ *
+ * SPDX-License-Identifier:      GPL-2.0+
+ */
+
+#include <common.h>
+#include <errno.h>
+#include <i2c.h>
+#include <power/pmic.h>
+#include <power/pfuze3000_pmic.h>
+
+int power_pfuze3000_init(unsigned char bus)
+{
+       static const char name[] = "PFUZE3000";
+       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 = PMIC_NUM_OF_REGS;
+       p->hw.i2c.addr = CONFIG_POWER_PFUZE3000_I2C_ADDR;
+       p->hw.i2c.tx_num = 1;
+       p->bus = bus;
+
+       return 0;
+}
index 77d64e43c6a0b77a5c5f722c354e4484a56082d9..434dd029b54ae77863c1c95f92918b340b855596 100644 (file)
@@ -16,6 +16,15 @@ config DM_REGULATOR
        for this purpose if PMIC I/O driver is implemented or dm_scan_fdt_node()
        otherwise. Detailed information can be found in the header file.
 
+config REGULATOR_ACT8846
+       bool "Enable driver for ACT8846 regulator"
+       depends on DM_REGULATOR && PMIC_ACT8846
+       ---help---
+       Enable support for the regulator functions of the ACT8846 PMIC. The
+       driver implements get/set api for the various BUCKS and LDOS supported
+       by the PMIC device. This driver is controlled by a device tree node
+       which includes voltage limits.
+
 config DM_REGULATOR_PFUZE100
        bool "Enable Driver Model for REGULATOR PFUZE100"
        depends on DM_REGULATOR && DM_PMIC_PFUZE100
index 7035936a35d75052a324d6d406602d349f76b562..c85978e02431dc32394554b27f4ba9c94efbcd45 100644 (file)
@@ -6,6 +6,7 @@
 #
 
 obj-$(CONFIG_DM_REGULATOR) += regulator-uclass.o
+obj-$(CONFIG_REGULATOR_ACT8846) += act8846.o
 obj-$(CONFIG_DM_REGULATOR_MAX77686) += max77686.o
 obj-$(CONFIG_DM_REGULATOR_PFUZE100) += pfuze100.o
 obj-$(CONFIG_DM_REGULATOR_FIXED) += fixed.o
diff --git a/drivers/power/regulator/act8846.c b/drivers/power/regulator/act8846.c
new file mode 100644 (file)
index 0000000..255f8b0
--- /dev/null
@@ -0,0 +1,155 @@
+/*
+ * Copyright (C) 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * Based on Rockchip's drivers/power/pmic/pmic_act8846.c:
+ * Copyright (C) 2012 rockchips
+ * zyw <zyw@rock-chips.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <power/act8846_pmic.h>
+#include <power/pmic.h>
+#include <power/regulator.h>
+
+static const u16 voltage_map[] = {
+       600, 625, 650, 675, 700, 725, 750, 775,
+       800, 825, 850, 875, 900, 925, 950, 975,
+       1000, 1025, 1050, 1075, 1100, 1125, 1150, 1175,
+       1200, 1250, 1300, 1350, 1400, 1450, 1500, 1550,
+       1600, 1650, 1700, 1750, 1800, 1850, 1900, 1950,
+       2000, 2050, 2100, 2150, 2200, 2250, 2300, 2350,
+       2400, 2500, 2600, 2700, 2800, 2900, 3000, 3100,
+       3200, 3300, 3400, 3500, 3600, 3700, 3800, 3900,
+};
+
+enum {
+       REG_SYS0,
+       REG_SYS1,
+       REG1_VOL        = 0x10,
+       REG1_CTL        = 0X11,
+       REG2_VOL0       = 0x20,
+       REG2_VOL1,
+       REG2_CTL,
+       REG3_VOL0       = 0x30,
+       REG3_VOL1,
+       REG3_CTL,
+       REG4_VOL0       = 0x40,
+       REG4_VOL1,
+       REG4_CTL,
+       REG5_VOL        = 0x50,
+       REG5_CTL,
+       REG6_VOL        = 0X58,
+       REG6_CTL,
+       REG7_VOL        = 0x60,
+       REG7_CTL,
+       REG8_VOL        = 0x68,
+       REG8_CTL,
+       REG9_VOL        = 0x70,
+       REG9_CTL,
+       REG10_VOL       = 0x80,
+       REG10_CTL,
+       REG11_VOL       = 0x90,
+       REG11_CTL,
+       REG12_VOL       = 0xa0,
+       REG12_CTL,
+       REG13           = 0xb1,
+};
+
+static const u8 addr_vol[] = {
+       0, REG1_VOL, REG2_VOL0, REG3_VOL0, REG4_VOL0,
+       REG5_VOL, REG6_VOL, REG7_VOL, REG8_VOL, REG9_VOL,
+       REG10_VOL, REG11_VOL, REG12_VOL,
+};
+
+static const u8 addr_ctl[] = {
+       0, REG1_CTL, REG2_CTL, REG3_CTL, REG4_CTL,
+       REG5_CTL, REG6_CTL, REG7_CTL, REG8_CTL, REG9_CTL,
+       REG10_CTL, REG11_CTL, REG12_CTL,
+};
+
+static int check_volt_table(const u16 *volt_table, int uvolt)
+{
+       int i;
+
+       for (i = VOL_MIN_IDX; i < VOL_MAX_IDX; i++) {
+               if (uvolt <= (volt_table[i] * 1000))
+                       return i;
+       }
+       return -EINVAL;
+}
+
+static int reg_get_value(struct udevice *dev)
+{
+       int reg = dev->driver_data;
+       int ret;
+
+       ret = pmic_reg_read(dev->parent, reg);
+       if (ret < 0)
+               return ret;
+
+       return voltage_map[ret & LDO_VOL_MASK] * 1000;
+}
+
+static int reg_set_value(struct udevice *dev, int uvolt)
+{
+       int reg = dev->driver_data;
+       int val;
+
+       val = check_volt_table(voltage_map, uvolt);
+       if (val < 0)
+               return val;
+
+       return pmic_clrsetbits(dev->parent, addr_vol[reg], LDO_VOL_MASK, val);
+}
+
+static int reg_set_enable(struct udevice *dev, bool enable)
+{
+       int reg = dev->driver_data;
+
+       return pmic_clrsetbits(dev->parent, addr_ctl[reg], LDO_EN_MASK,
+                              enable ? LDO_EN_MASK : 0);
+}
+
+static bool reg_get_enable(struct udevice *dev)
+{
+       int reg = dev->driver_data;
+       int ret;
+
+       ret = pmic_reg_read(dev->parent, reg);
+       if (ret < 0)
+               return ret;
+
+       return ret & LDO_EN_MASK ? true : false;
+}
+
+static int act8846_reg_probe(struct udevice *dev)
+{
+       struct dm_regulator_uclass_platdata *uc_pdata;
+       int reg = dev->driver_data;
+
+       uc_pdata = dev_get_uclass_platdata(dev);
+
+       uc_pdata->type = reg <= 4 ? REGULATOR_TYPE_BUCK : REGULATOR_TYPE_LDO;
+       uc_pdata->mode_count = 0;
+
+       return 0;
+}
+
+static const struct dm_regulator_ops act8846_reg_ops = {
+       .get_value  = reg_get_value,
+       .set_value  = reg_set_value,
+       .get_enable = reg_get_enable,
+       .set_enable = reg_set_enable,
+};
+
+U_BOOT_DRIVER(act8846_buck) = {
+       .name = "act8846_reg",
+       .id = UCLASS_REGULATOR,
+       .ops = &act8846_reg_ops,
+       .probe = act8846_reg_probe,
+};
index c84bbc647f5fe78032d76bb02acf56e70ef8c548..e5e1be134ccee80a4a9f3a56a7c7438c76e8c394 100644 (file)
@@ -49,6 +49,8 @@
 #define RTC_STAT_BIT_A1F       0x1     /* Alarm 1 flag                 */
 #define RTC_STAT_BIT_A2F       0x2     /* Alarm 2 flag                 */
 #define RTC_STAT_BIT_OSF       0x80    /* Oscillator stop flag         */
+#define RTC_STAT_BIT_BB32KHZ   0x40    /* Battery backed 32KHz Output  */
+#define RTC_STAT_BIT_EN32KHZ   0x8     /* Enable 32KHz Output  */
 
 
 static uchar rtc_read (uchar reg);
@@ -141,6 +143,14 @@ void rtc_reset (void)
        rtc_write (RTC_CTL_REG_ADDR, RTC_CTL_BIT_RS1 | RTC_CTL_BIT_RS2);
 }
 
+/*
+ * Enable 32KHz output
+ */
+void rtc_enable_32khz_output(void)
+{
+       rtc_write(RTC_STAT_REG_ADDR,
+                 RTC_STAT_BIT_BB32KHZ | RTC_STAT_BIT_EN32KHZ);
+}
 
 /*
  * Helper functions
index 4f6a3b87a137bdb6c51e4cd0b5196da8e9c9e50d..ccb80d2d1d90198c5ae104b532b234d3ca33fe43 100644 (file)
@@ -109,9 +109,18 @@ config DEBUG_UART_SHIFT
          value. Use this value to specify the shift to use, where 0=byte
          registers, 2=32-bit word registers, etc.
 
+config ROCKCHIP_SERIAL
+       bool "Rockchip on-chip UART support"
+       depends on ARCH_UNIPHIER && DM_SERIAL
+       help
+         Select this to enable a debug UART for Rockchip devices. This uses
+         the ns16550 driver. You will need to #define CONFIG_SYS_NS16550 in
+         your board config header. The clock input is automatically set to
+         use the oscillator (24MHz).
+
 config SANDBOX_SERIAL
        bool "Sandbox UART support"
-       depends on SANDBOX && DM
+       depends on SANDBOX
        help
          Select this to enable a seral UART for sandbox. This is required to
          operate correctly, otherwise you will see no serial output from
@@ -131,7 +140,7 @@ config SANDBOX_SERIAL
 
 config UNIPHIER_SERIAL
        bool "Support for UniPhier on-chip UART"
-       depends on ARCH_UNIPHIER && DM_SERIAL
+       depends on ARCH_UNIPHIER
        help
          If you have a UniPhier based board and want to use the on-chip
          serial ports, say Y to this option. If unsure, say N.
index 1d1f0361cd71a40bf0585a0a2216945a977cdc68..869ea7b8fb46fe1d08abfaee46ab64782e5d0216 100644 (file)
@@ -40,6 +40,7 @@ obj-$(CONFIG_ZYNQ_SERIAL) += serial_zynq.o
 obj-$(CONFIG_BFIN_SERIAL) += serial_bfin.o
 obj-$(CONFIG_FSL_LPUART) += serial_lpuart.o
 obj-$(CONFIG_MXS_AUART) += mxs_auart.o
+obj-$(CONFIG_ROCKCHIP_SERIAL) += serial_rockchip.o
 obj-$(CONFIG_ARC_SERIAL) += serial_arc.o
 obj-$(CONFIG_TEGRA_SERIAL) += serial_tegra.o
 obj-$(CONFIG_UNIPHIER_SERIAL) += serial_uniphier.o
index 2b6d1e46386b0ee895ef10f77b14e550cb50e4c2..6275a11a0c8c28b530c6897196172ea0c627083e 100644 (file)
@@ -364,7 +364,7 @@ int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
        fdt_addr_t addr;
 
        /* try Processor Local Bus device first */
-       addr = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
+       addr = dev_get_addr(dev);
 #ifdef CONFIG_PCI
        if (addr == FDT_ADDR_T_NONE) {
                /* then try pci device */
index 54e596c4ed624d9b952f7ebf3f06d607cd9d1c90..7dbb49f81464c1dffbc949c91e88000da3bc0691 100644 (file)
@@ -133,8 +133,7 @@ static int arc_serial_ofdata_to_platdata(struct udevice *dev)
        struct arc_serial_platdata *plat = dev_get_platdata(dev);
        DECLARE_GLOBAL_DATA_PTR;
 
-       plat->reg = (struct arc_serial_regs *)fdtdec_get_addr(gd->fdt_blob,
-                                                       dev->of_offset, "reg");
+       plat->reg = (struct arc_serial_regs *)dev_get_addr(dev);
        plat->uartclk = fdtdec_get_int(gd->fdt_blob, dev->of_offset,
                                       "clock-frequency", 0);
 
index 917b6034d360e824bdfa6fd95e8ae82224f08fa8..ecf3bc02409e4a741353cd97404f827ea18e7896 100644 (file)
@@ -365,7 +365,7 @@ static int pl01x_serial_ofdata_to_platdata(struct udevice *dev)
        struct pl01x_serial_platdata *plat = dev_get_platdata(dev);
        fdt_addr_t addr;
 
-       addr = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
+       addr = dev_get_addr(dev);
        if (addr == FDT_ADDR_T_NONE)
                return -EINVAL;
 
diff --git a/drivers/serial/serial_rockchip.c b/drivers/serial/serial_rockchip.c
new file mode 100644 (file)
index 0000000..0e7bbfc
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <ns16550.h>
+#include <serial.h>
+#include <asm/arch/clock.h>
+
+static const struct udevice_id rockchip_serial_ids[] = {
+       { .compatible = "rockchip,rk3288-uart" },
+       { }
+};
+
+static int rockchip_serial_ofdata_to_platdata(struct udevice *dev)
+{
+       struct ns16550_platdata *plat = dev_get_platdata(dev);
+       int ret;
+
+       ret = ns16550_serial_ofdata_to_platdata(dev);
+       if (ret)
+               return ret;
+
+       /* Do all Rockchip parts use 24MHz? */
+       plat->clock = 24 * 1000000;
+
+       return 0;
+}
+
+U_BOOT_DRIVER(serial_ns16550) = {
+       .name   = "serial_rockchip",
+       .id     = UCLASS_SERIAL,
+       .of_match = rockchip_serial_ids,
+       .ofdata_to_platdata = rockchip_serial_ofdata_to_platdata,
+       .platdata_auto_alloc_size = sizeof(struct ns16550_platdata),
+       .priv_auto_alloc_size = sizeof(struct NS16550),
+       .probe = ns16550_serial_probe,
+       .ops    = &ns16550_serial_ops,
+       .flags  = DM_FLAG_PRE_RELOC,
+};
index 21cb566c2906cb01d9dd911c3581bd9458122359..3f0b5882541bfe9a320e01972af6ff4c1e095d58 100644 (file)
@@ -169,7 +169,7 @@ static int s5p_serial_ofdata_to_platdata(struct udevice *dev)
        struct s5p_serial_platdata *plat = dev->platdata;
        fdt_addr_t addr;
 
-       addr = fdtdec_get_addr(gd->fdt_blob, dev->of_offset, "reg");
+       addr = dev_get_addr(dev);
        if (addr == FDT_ADDR_T_NONE)
                return -EINVAL;
 
index c84a7b74d6cad193ad209f27fc8ed0b8f89fa1c3..8e04fce6f2ab10075f59ac53b5ec1c077b515905 100644 (file)
@@ -58,6 +58,14 @@ config ICH_SPI
          access the SPI NOR flash on platforms embedding this Intel
          ICH IP core.
 
+config ROCKCHIP_SPI
+       bool "Rockchip SPI driver"
+       help
+         Enable the Rockchip SPI driver, used to access SPI NOR flash and
+         other SPI peripherals (such as the Chrome OS EC) on Rockchip SoCs.
+         This uses driver model and requires a device tree binding to
+         operate.
+
 config SANDBOX_SPI
        bool "Sandbox SPI driver"
        depends on SANDBOX && DM
index ee88aa162bc1405a361f1adcc15dcaf29d1f082b..de241be15a7660dcfd93401aeb7688f95fa9490c 100644 (file)
@@ -39,6 +39,7 @@ obj-$(CONFIG_MPC8XXX_SPI) += mpc8xxx_spi.o
 obj-$(CONFIG_MXC_SPI) += mxc_spi.o
 obj-$(CONFIG_MXS_SPI) += mxs_spi.o
 obj-$(CONFIG_OMAP3_SPI) += omap3_spi.o
+obj-$(CONFIG_ROCKCHIP_SPI) += rk_spi.o
 obj-$(CONFIG_SANDBOX_SPI) += sandbox_spi.o
 obj-$(CONFIG_SH_SPI) += sh_spi.o
 obj-$(CONFIG_SH_QSPI) += sh_qspi.o
index 0a036ccb009a81093069b5377b62c0baa9592e11..0bd4f88926f142bd264625a8ede2f84128f554d7 100644 (file)
@@ -15,8 +15,6 @@
 #include <asm/io.h>
 #include <asm/arch/hardware.h>
 
-#define BIT(x)                 (1 << (x))
-
 /* SPIGCR0 */
 #define SPIGCR0_SPIENA_MASK    0x1
 #define SPIGCR0_SPIRST_MASK    0x0
index 8f5c0fc8029d6b862bbbf1962ae55a27d80ec531..86ee90f4be50f796550ed17437d68b357f0ba861 100644 (file)
@@ -134,7 +134,7 @@ static int dw_spi_ofdata_to_platdata(struct udevice *bus)
        const void *blob = gd->fdt_blob;
        int node = bus->of_offset;
 
-       plat->regs = (struct dw_spi *)fdtdec_get_addr(blob, node, "reg");
+       plat->regs = (struct dw_spi *)dev_get_addr(bus);
 
        /* Use 500KHz as a suitable default */
        plat->frequency = fdtdec_get_int(blob, node, "spi-max-frequency",
index 235557ea3c53404253e31393b794d8cf7fe6ac91..cb682ddda48a5735c00e175972e01f9ec43910b4 100644 (file)
@@ -16,8 +16,6 @@
 
 #include <asm/arch/ep93xx.h>
 
-
-#define BIT(x)                 (1<<(x))
 #define SSPBASE                        SPI_BASE
 
 #define SSPCR0                 0x0000
index 418b48120a30b5fc63ed3e93748a9d30e1734129..44948c37364d27d42138fd824145e426ad56acdf 100644 (file)
@@ -255,7 +255,7 @@ static int exynos_spi_ofdata_to_platdata(struct udevice *bus)
        const void *blob = gd->fdt_blob;
        int node = bus->of_offset;
 
-       plat->regs = (struct exynos_spi *)fdtdec_get_addr(blob, node, "reg");
+       plat->regs = (struct exynos_spi *)dev_get_addr(bus);
        plat->periph_id = pinmux_decode_periph_id(blob, node);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
index 3881b2e8a54630938667d08ca911a5f06854542d..887edd801a42d1a87662ca7e3f0f036f19e50cc2 100644 (file)
@@ -654,7 +654,7 @@ static int fsl_dspi_ofdata_to_platdata(struct udevice *bus)
        plat->num_chipselect =
                fdtdec_get_int(blob, node, "num-cs", FSL_DSPI_MAX_CHIPSELECT);
 
-       addr = fdtdec_get_addr(blob, node, "reg");
+       addr = dev_get_addr(bus);
        if (addr == FDT_ADDR_T_NONE) {
                debug("DSPI: Can't get base address or size\n");
                return -ENOMEM;
index 2b9f395a97821568dc12c5e28feaaf42b42ffd50..627644b56bdf13f94fbdbae4d10f80cbbe06f0d1 100644 (file)
@@ -12,6 +12,7 @@
 
 #include <common.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <spi.h>
 #include <asm/errno.h>
 #include <asm/io.h>
diff --git a/drivers/spi/rk_spi.c b/drivers/spi/rk_spi.c
new file mode 100644 (file)
index 0000000..5e0c6ad
--- /dev/null
@@ -0,0 +1,374 @@
+/*
+ * spi driver for rockchip
+ *
+ * (C) Copyright 2015 Google, Inc
+ *
+ * (C) Copyright 2008-2013 Rockchip Electronics
+ * Peter, Software Engineering, <superpeter.cai@gmail.com>.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#include <common.h>
+#include <clk.h>
+#include <dm.h>
+#include <errno.h>
+#include <spi.h>
+#include <asm/errno.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/periph.h>
+#include <dm/pinctrl.h>
+#include "rk_spi.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/* Change to 1 to output registers at the start of each transaction */
+#define DEBUG_RK_SPI   0
+
+struct rockchip_spi_platdata {
+       enum periph_id periph_id;
+       struct udevice *pinctrl;
+       s32 frequency;          /* Default clock frequency, -1 for none */
+       fdt_addr_t base;
+       uint deactivate_delay_us;       /* Delay to wait after deactivate */
+};
+
+struct rockchip_spi_priv {
+       struct rockchip_spi *regs;
+       struct udevice *clk_gpll;
+       unsigned int max_freq;
+       unsigned int mode;
+       enum periph_id periph_id;       /* Peripheral ID for this device */
+       ulong last_transaction_us;      /* Time of last transaction end */
+       u8 bits_per_word;               /* max 16 bits per word */
+       u8 n_bytes;
+       unsigned int speed_hz;
+       unsigned int tmode;
+       uint input_rate;
+};
+
+#define SPI_FIFO_DEPTH         32
+
+static void rkspi_dump_regs(struct rockchip_spi *regs)
+{
+       debug("ctrl0: \t\t0x%08x\n", readl(&regs->ctrlr0));
+       debug("ctrl1: \t\t0x%08x\n", readl(&regs->ctrlr1));
+       debug("ssienr: \t\t0x%08x\n", readl(&regs->enr));
+       debug("ser: \t\t0x%08x\n", readl(&regs->ser));
+       debug("baudr: \t\t0x%08x\n", readl(&regs->baudr));
+       debug("txftlr: \t\t0x%08x\n", readl(&regs->txftlr));
+       debug("rxftlr: \t\t0x%08x\n", readl(&regs->rxftlr));
+       debug("txflr: \t\t0x%08x\n", readl(&regs->txflr));
+       debug("rxflr: \t\t0x%08x\n", readl(&regs->rxflr));
+       debug("sr: \t\t0x%08x\n", readl(&regs->sr));
+       debug("imr: \t\t0x%08x\n", readl(&regs->imr));
+       debug("isr: \t\t0x%08x\n", readl(&regs->isr));
+       debug("dmacr: \t\t0x%08x\n", readl(&regs->dmacr));
+       debug("dmatdlr: \t0x%08x\n", readl(&regs->dmatdlr));
+       debug("dmardlr: \t0x%08x\n", readl(&regs->dmardlr));
+}
+
+static void rkspi_enable_chip(struct rockchip_spi *regs, bool enable)
+{
+       writel(enable ? 1 : 0, &regs->enr);
+}
+
+static void rkspi_set_clk(struct rockchip_spi_priv *priv, uint speed)
+{
+       uint clk_div;
+
+       clk_div = clk_get_divisor(priv->input_rate, speed);
+       debug("spi speed %u, div %u\n", speed, clk_div);
+
+       writel(clk_div, &priv->regs->baudr);
+}
+
+static int rkspi_wait_till_not_busy(struct rockchip_spi *regs)
+{
+       unsigned long start;
+
+       start = get_timer(0);
+       while (readl(&regs->sr) & SR_BUSY) {
+               if (get_timer(start) > ROCKCHIP_SPI_TIMEOUT_MS) {
+                       debug("RK SPI: Status keeps busy for 1000us after a read/write!\n");
+                       return -ETIMEDOUT;
+               }
+       }
+
+       return 0;
+}
+
+static void spi_cs_activate(struct rockchip_spi *regs, uint cs)
+{
+       debug("activate cs%u\n", cs);
+       writel(1 << cs, &regs->ser);
+}
+
+static void spi_cs_deactivate(struct rockchip_spi *regs, uint cs)
+{
+       debug("deactivate cs%u\n", cs);
+       writel(0, &regs->ser);
+}
+
+static int rockchip_spi_ofdata_to_platdata(struct udevice *bus)
+{
+       struct rockchip_spi_platdata *plat = bus->platdata;
+       const void *blob = gd->fdt_blob;
+       int node = bus->of_offset;
+       int ret;
+
+       plat->base = dev_get_addr(bus);
+       ret = uclass_get_device(UCLASS_PINCTRL, 0, &plat->pinctrl);
+       if (ret)
+               return ret;
+       ret = pinctrl_get_periph_id(plat->pinctrl, bus);
+
+       if (ret < 0) {
+               debug("%s: Could not get peripheral ID for %s: %d\n", __func__,
+                     bus->name, ret);
+               return -FDT_ERR_NOTFOUND;
+       }
+       plat->periph_id = ret;
+
+       plat->frequency = fdtdec_get_int(blob, node, "spi-max-frequency",
+                                       50000000);
+       plat->deactivate_delay_us = fdtdec_get_int(blob, node,
+                                       "spi-deactivate-delay", 0);
+       debug("%s: base=%x, periph_id=%d, max-frequency=%d, deactivate_delay=%d\n",
+             __func__, plat->base, plat->periph_id, plat->frequency,
+             plat->deactivate_delay_us);
+
+       return 0;
+}
+
+static int rockchip_spi_probe(struct udevice *bus)
+{
+       struct rockchip_spi_platdata *plat = dev_get_platdata(bus);
+       struct rockchip_spi_priv *priv = dev_get_priv(bus);
+       int ret;
+
+       debug("%s: probe\n", __func__);
+       priv->regs = (struct rockchip_spi *)plat->base;
+
+       priv->last_transaction_us = timer_get_us();
+       priv->max_freq = plat->frequency;
+       priv->periph_id = plat->periph_id;
+       ret = uclass_get_device(UCLASS_CLK, CLK_GENERAL, &priv->clk_gpll);
+       if (ret) {
+               debug("%s: Failed to find CLK_GENERAL: %d\n", __func__, ret);
+               return ret;
+       }
+
+       /*
+        * Use 99 MHz as our clock since it divides nicely into 594 MHz which
+        * is the assumed speed for CLK_GENERAL.
+        */
+       ret = clk_set_periph_rate(priv->clk_gpll, plat->periph_id, 99000000);
+       if (ret < 0) {
+               debug("%s: Failed to set clock: %d\n", __func__, ret);
+               return ret;
+       }
+       priv->input_rate = ret;
+       debug("%s: rate = %u\n", __func__, priv->input_rate);
+       priv->bits_per_word = 8;
+       priv->tmode = TMOD_TR; /* Tx & Rx */
+
+       return 0;
+}
+
+static int rockchip_spi_claim_bus(struct udevice *dev)
+{
+       struct udevice *bus = dev->parent;
+       struct rockchip_spi_platdata *plat = dev_get_platdata(bus);
+       struct rockchip_spi_priv *priv = dev_get_priv(bus);
+       struct rockchip_spi *regs = priv->regs;
+       struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+       u8 spi_dfs, spi_tf;
+       uint ctrlr0;
+       int ret;
+
+       /* Disable the SPI hardware */
+       rkspi_enable_chip(regs, 0);
+
+       switch (priv->bits_per_word) {
+       case 8:
+               priv->n_bytes = 1;
+               spi_dfs = DFS_8BIT;
+               spi_tf = HALF_WORD_OFF;
+               break;
+       case 16:
+               priv->n_bytes = 2;
+               spi_dfs = DFS_16BIT;
+               spi_tf = HALF_WORD_ON;
+               break;
+       default:
+               debug("%s: unsupported bits: %dbits\n", __func__,
+                     priv->bits_per_word);
+               return -EPROTONOSUPPORT;
+       }
+
+       rkspi_set_clk(priv, priv->speed_hz);
+
+       /* Operation Mode */
+       ctrlr0 = OMOD_MASTER << OMOD_SHIFT;
+
+       /* Data Frame Size */
+       ctrlr0 |= spi_dfs & DFS_MASK << DFS_SHIFT;
+
+       /* set SPI mode 0..3 */
+       if (priv->mode & SPI_CPOL)
+               ctrlr0 |= SCOL_HIGH << SCOL_SHIFT;
+       if (priv->mode & SPI_CPHA)
+               ctrlr0 |= SCPH_TOGSTA << SCPH_SHIFT;
+
+       /* Chip Select Mode */
+       ctrlr0 |= CSM_KEEP << CSM_SHIFT;
+
+       /* SSN to Sclk_out delay */
+       ctrlr0 |= SSN_DELAY_ONE << SSN_DELAY_SHIFT;
+
+       /* Serial Endian Mode */
+       ctrlr0 |= SEM_LITTLE << SEM_SHIFT;
+
+       /* First Bit Mode */
+       ctrlr0 |= FBM_MSB << FBM_SHIFT;
+
+       /* Byte and Halfword Transform */
+       ctrlr0 |= (spi_tf & HALF_WORD_MASK) << HALF_WORD_TX_SHIFT;
+
+       /* Rxd Sample Delay */
+       ctrlr0 |= 0 << RXDSD_SHIFT;
+
+       /* Frame Format */
+       ctrlr0 |= FRF_SPI << FRF_SHIFT;
+
+       /* Tx and Rx mode */
+       ctrlr0 |= (priv->tmode & TMOD_MASK) << TMOD_SHIFT;
+
+       writel(ctrlr0, &regs->ctrlr0);
+
+       ret = pinctrl_request(plat->pinctrl, priv->periph_id, slave_plat->cs);
+       if (ret) {
+               debug("%s: Cannot request pinctrl: %d\n", __func__, ret);
+               return ret;
+       }
+
+       return 0;
+}
+
+static int rockchip_spi_release_bus(struct udevice *dev)
+{
+       return 0;
+}
+
+static int rockchip_spi_xfer(struct udevice *dev, unsigned int bitlen,
+                          const void *dout, void *din, unsigned long flags)
+{
+       struct udevice *bus = dev->parent;
+       struct rockchip_spi_priv *priv = dev_get_priv(bus);
+       struct rockchip_spi *regs = priv->regs;
+       struct dm_spi_slave_platdata *slave_plat = dev_get_parent_platdata(dev);
+       int len = bitlen >> 3;
+       const u8 *out = dout;
+       u8 *in = din;
+       int toread, towrite;
+       int ret;
+
+       debug("%s: dout=%p, din=%p, len=%x, flags=%lx\n", __func__, dout, din,
+             len, flags);
+       if (DEBUG_RK_SPI)
+               rkspi_dump_regs(regs);
+
+       /* Assert CS before transfer */
+       if (flags & SPI_XFER_BEGIN)
+               spi_cs_activate(regs, slave_plat->cs);
+
+       while (len > 0) {
+               int todo = min(len, 0xffff);
+
+               rkspi_enable_chip(regs, true);
+               writel(todo - 1, &regs->ctrlr1);
+               rkspi_enable_chip(regs, true);
+
+               toread = todo;
+               towrite = todo;
+               while (toread || towrite) {
+                       u32 status = readl(&regs->sr);
+
+                       if (towrite && !(status & SR_TF_FULL)) {
+                               writel(out ? *out++ : 0, regs->txdr);
+                               towrite--;
+                       }
+                       if (toread && !(status & SR_RF_EMPT)) {
+                               u32 byte = readl(regs->rxdr);
+
+                               if (in)
+                                       *in++ = byte;
+                               toread--;
+                       }
+               }
+               ret = rkspi_wait_till_not_busy(regs);
+               if (ret)
+                       break;
+               len -= todo;
+       }
+
+       /* Deassert CS after transfer */
+       if (flags & SPI_XFER_END)
+               spi_cs_deactivate(regs, slave_plat->cs);
+
+       rkspi_enable_chip(regs, false);
+
+       return ret;
+}
+
+static int rockchip_spi_set_speed(struct udevice *bus, uint speed)
+{
+       struct rockchip_spi_priv *priv = dev_get_priv(bus);
+
+       if (speed > ROCKCHIP_SPI_MAX_RATE)
+               return -EINVAL;
+       if (speed > priv->max_freq)
+               speed = priv->max_freq;
+       priv->speed_hz = speed;
+
+       return 0;
+}
+
+static int rockchip_spi_set_mode(struct udevice *bus, uint mode)
+{
+       struct rockchip_spi_priv *priv = dev_get_priv(bus);
+
+       priv->mode = mode;
+
+       return 0;
+}
+
+static const struct dm_spi_ops rockchip_spi_ops = {
+       .claim_bus      = rockchip_spi_claim_bus,
+       .release_bus    = rockchip_spi_release_bus,
+       .xfer           = rockchip_spi_xfer,
+       .set_speed      = rockchip_spi_set_speed,
+       .set_mode       = rockchip_spi_set_mode,
+       /*
+        * cs_info is not needed, since we require all chip selects to be
+        * in the device tree explicitly
+        */
+};
+
+static const struct udevice_id rockchip_spi_ids[] = {
+       { .compatible = "rockchip,rk3288-spi" },
+       { }
+};
+
+U_BOOT_DRIVER(rockchip_spi) = {
+       .name   = "rockchip_spi",
+       .id     = UCLASS_SPI,
+       .of_match = rockchip_spi_ids,
+       .ops    = &rockchip_spi_ops,
+       .ofdata_to_platdata = rockchip_spi_ofdata_to_platdata,
+       .platdata_auto_alloc_size = sizeof(struct rockchip_spi_platdata),
+       .priv_auto_alloc_size = sizeof(struct rockchip_spi_priv),
+       .probe  = rockchip_spi_probe,
+};
diff --git a/drivers/spi/rk_spi.h b/drivers/spi/rk_spi.h
new file mode 100644 (file)
index 0000000..f1ac812
--- /dev/null
@@ -0,0 +1,124 @@
+/*
+ * SPI driver for rockchip
+ *
+ * (C) Copyright 2015 Google, Inc
+ *
+ * (C) Copyright 2008-2013 Rockchip Electronics
+ * Peter, Software Engineering, <superpeter.cai@gmail.com>.
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __RK_SPI_H
+#define __RK_SPI_H
+
+struct rockchip_spi {
+       u32 ctrlr0;
+       u32 ctrlr1;
+       u32 enr;
+       u32 ser;
+       u32 baudr;
+       u32 txftlr;
+       u32 rxftlr;
+       u32 txflr;
+       u32 rxflr;
+       u32 sr;
+       u32 ipr;
+       u32 imr;
+       u32 isr;
+       u32 risr;
+       u32 icr;
+       u32 dmacr;
+       u32 dmatdlr;
+       u32 dmardlr;            /* 0x44 */
+       u32 reserved[0xef];
+       u32 txdr[0x100];        /* 0x400 */
+       u32 rxdr[0x100];        /* 0x800 */
+};
+
+/* CTRLR0 */
+enum {
+       DFS_SHIFT       = 0,    /* Data Frame Size */
+       DFS_MASK        = 3,
+       DFS_4BIT        = 0,
+       DFS_8BIT,
+       DFS_16BIT,
+       DFS_RESV,
+
+       CFS_SHIFT       = 2,    /* Control Frame Size */
+       CFS_MASK        = 0xf,
+
+       SCPH_SHIFT      = 6,    /* Serial Clock Phase */
+       SCPH_MASK       = 1,
+       SCPH_TOGMID     = 0,    /* SCLK toggles in middle of first data bit */
+       SCPH_TOGSTA,            /* SCLK toggles at start of first data bit */
+
+       SCOL_SHIFT      = 7,    /* Serial Clock Polarity */
+       SCOL_MASK       = 1,
+       SCOL_LOW        = 0,    /* Inactive state of serial clock is low */
+       SCOL_HIGH,              /* Inactive state of serial clock is high */
+
+       CSM_SHIFT       = 8,    /* Chip Select Mode */
+       CSM_MASK        = 0x3,
+       CSM_KEEP        = 0,    /* ss_n stays low after each frame  */
+       CSM_HALF,               /* ss_n high for half sclk_out cycles */
+       CSM_ONE,                /* ss_n high for one sclk_out cycle */
+       CSM_RESV,
+
+       SSN_DELAY_SHIFT = 10,   /* SSN to Sclk_out delay */
+       SSN_DELAY_MASK  = 1,
+       SSN_DELAY_HALF  = 0,    /* 1/2 sclk_out cycle */
+       SSN_DELAY_ONE   = 1,    /* 1 sclk_out cycle */
+
+       SEM_SHIFT       = 11,   /* Serial Endian Mode */
+       SEM_MASK        = 1,
+       SEM_LITTLE      = 0,    /* little endian */
+       SEM_BIG,                /* big endian */
+
+       FBM_SHIFT       = 12,   /* First Bit Mode */
+       FBM_MASK        = 1,
+       FBM_MSB         = 0,    /* first bit is MSB */
+       FBM_LSB,                /* first bit in LSB */
+
+       HALF_WORD_TX_SHIFT = 13,        /* Byte and Halfword Transform */
+       HALF_WORD_MASK  = 1,
+       HALF_WORD_ON    = 0,    /* apb 16bit write/read, spi 8bit write/read */
+       HALF_WORD_OFF,          /* apb 8bit write/read, spi 8bit write/read */
+
+       RXDSD_SHIFT     = 14,   /* Rxd Sample Delay, in cycles */
+       RXDSD_MASK      = 3,
+
+       FRF_SHIFT       = 16,   /* Frame Format */
+       FRF_MASK        = 3,
+       FRF_SPI         = 0,    /* Motorola SPI */
+       FRF_SSP,                        /* Texas Instruments SSP*/
+       FRF_MICROWIRE,          /* National Semiconductors Microwire */
+       FRF_RESV,
+
+       TMOD_SHIFT      = 18,   /* Transfer Mode */
+       TMOD_MASK       = 3,
+       TMOD_TR         = 0,    /* xmit & recv */
+       TMOD_TO,                /* xmit only */
+       TMOD_RO,                /* recv only */
+       TMOD_RESV,
+
+       OMOD_SHIFT      = 20,   /* Operation Mode */
+       OMOD_MASK       = 1,
+       OMOD_MASTER     = 0,    /* Master Mode */
+       OMOD_SLAVE,             /* Slave Mode */
+};
+
+/* SR */
+enum {
+       SR_MASK         = 0x7f,
+       SR_BUSY         = 1 << 0,
+       SR_TF_FULL      = 1 << 1,
+       SR_TF_EMPT      = 1 << 2,
+       SR_RF_EMPT      = 1 << 3,
+       SR_RF_FULL      = 1 << 4,
+};
+
+#define ROCKCHIP_SPI_TIMEOUT_MS                1000
+#define ROCKCHIP_SPI_MAX_RATE          48000000
+
+#endif /* __RK_SPI_H */
index d7eecd5bc606888982ae5b3ed6ff320c8dab41af..a965f80aebb5b5f5e95a27e80395d2651a09b09a 100644 (file)
@@ -118,7 +118,7 @@ static int tegra114_spi_ofdata_to_platdata(struct udevice *bus)
        const void *blob = gd->fdt_blob;
        int node = bus->of_offset;
 
-       plat->base = fdtdec_get_addr(blob, node, "reg");
+       plat->base = dev_get_addr(bus);
        plat->periph_id = clock_decode_periph_id(blob, node);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
index 82c1b84f3bd953ec50dfdb0b4197448da3043584..afa0848dcb0357c8dd26991d9741c049448e9be1 100644 (file)
@@ -90,7 +90,7 @@ static int tegra20_sflash_ofdata_to_platdata(struct udevice *bus)
        const void *blob = gd->fdt_blob;
        int node = bus->of_offset;
 
-       plat->base = fdtdec_get_addr(blob, node, "reg");
+       plat->base = dev_get_addr(bus);
        plat->periph_id = clock_decode_periph_id(blob, node);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
index f6fb89b393f0881e624e006baf9f16cd056d2474..fbb665b86f3f3faa4d2cd4dcbcca21c0da799790 100644 (file)
@@ -106,7 +106,7 @@ static int tegra30_spi_ofdata_to_platdata(struct udevice *bus)
        const void *blob = gd->fdt_blob;
        int node = bus->of_offset;
 
-       plat->base = fdtdec_get_addr(blob, node, "reg");
+       plat->base = dev_get_addr(bus);
        plat->periph_id = clock_decode_periph_id(blob, node);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
index 7ae1f0ec9aeade68a873356dcecdebf28e0cf604..310fb69c8d76d2d036a202b2b3db5c231e253e13 100644 (file)
@@ -72,7 +72,7 @@ static int zynq_spi_ofdata_to_platdata(struct udevice *bus)
        const void *blob = gd->fdt_blob;
        int node = bus->of_offset;
 
-       plat->regs = (struct zynq_spi_regs *)fdtdec_get_addr(blob, node, "reg");
+       plat->regs = (struct zynq_spi_regs *)dev_get_addr(bus);
 
        /* FIXME: Use 250MHz as a suitable default */
        plat->frequency = fdtdec_get_int(blob, node, "spi-max-frequency",
index 6d4cacdcf7fe3d334664d4c23f407d96bd879610..d768f5ef80879e681d5659cc8f23427f1dacb6b4 100644 (file)
@@ -6,4 +6,4 @@
 #
 
 obj-$(CONFIG_DM_THERMAL) += thermal-uclass.o
-obj-$(CONFIG_IMX6_THERMAL) += imx_thermal.o
+obj-$(CONFIG_IMX_THERMAL) += imx_thermal.o
index 3c6c9679f97a89b30a30caf8b8bafb9238a41213..09a3c52680276d134880d389bcb6c20e85c2135f 100644 (file)
@@ -25,6 +25,9 @@
 #define FACTOR1                        15976
 #define FACTOR2                        4297157
 #define MEASURE_FREQ           327
+#define TEMPERATURE_MIN         -40
+#define TEMPERATURE_HOT         85
+#define TEMPERATURE_MAX         125
 
 #define TEMPSENSE0_TEMP_CNT_SHIFT      8
 #define TEMPSENSE0_TEMP_CNT_MASK       (0xfff << TEMPSENSE0_TEMP_CNT_SHIFT)
@@ -41,6 +44,7 @@ struct thermal_data {
        int maxc;
 };
 
+#if defined(CONFIG_MX6)
 static int read_cpu_temperature(struct udevice *dev)
 {
        int temperature;
@@ -123,6 +127,73 @@ static int read_cpu_temperature(struct udevice *dev)
 
        return temperature;
 }
+#elif defined(CONFIG_MX7)
+static int read_cpu_temperature(struct udevice *dev)
+{
+       unsigned int reg, tmp, start;
+       unsigned int raw_25c, te1;
+       int temperature;
+       unsigned int *priv = dev_get_priv(dev);
+       u32 fuse = *priv;
+       struct mxc_ccm_anatop_reg *ccm_anatop = (struct mxc_ccm_anatop_reg *)
+                                                ANATOP_BASE_ADDR;
+       /*
+        * fuse data layout:
+        * [31:21] sensor value @ 25C
+        * [20:18] hot temperature value
+        * [17:9] sensor value of room
+        * [8:0] sensor value of hot
+        */
+
+       raw_25c = fuse >> 21;
+       if (raw_25c == 0)
+               raw_25c = 25;
+
+       te1 = (fuse >> 9) & 0x1ff;
+
+       /*
+        * now we only use single measure, every time we read
+        * the temperature, we will power on/down anadig thermal
+        * module
+        */
+       writel(TEMPMON_HW_ANADIG_TEMPSENSE1_POWER_DOWN_MASK, &ccm_anatop->tempsense1_clr);
+       writel(PMU_REF_REFTOP_SELFBIASOFF_MASK, &ccm_anatop->ref_set);
+
+       /* write measure freq */
+       reg = readl(&ccm_anatop->tempsense1);
+       reg &= ~TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_FREQ_MASK;
+       reg |= TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_FREQ(MEASURE_FREQ);
+       writel(reg, &ccm_anatop->tempsense1);
+
+       writel(TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_TEMP_MASK, &ccm_anatop->tempsense1_clr);
+       writel(TEMPMON_HW_ANADIG_TEMPSENSE1_FINISHED_MASK, &ccm_anatop->tempsense1_clr);
+       writel(TEMPMON_HW_ANADIG_TEMPSENSE1_MEASURE_TEMP_MASK, &ccm_anatop->tempsense1_set);
+
+       start = get_timer(0);
+       /* Wait max 100ms */
+       do {
+               /*
+                * Since we can not rely on finish bit, use 1ms delay to get
+                * temperature. From RM, 17us is enough to get data, but
+                * to gurantee to get the data, delay 100ms here.
+                */
+               reg = readl(&ccm_anatop->tempsense1);
+               tmp = (reg & TEMPMON_HW_ANADIG_TEMPSENSE1_TEMP_VALUE_MASK)
+                      >> TEMPMON_HW_ANADIG_TEMPSENSE1_TEMP_VALUE_SHIFT;
+       } while (get_timer(0) < (start + 100));
+
+       writel(TEMPMON_HW_ANADIG_TEMPSENSE1_FINISHED_MASK, &ccm_anatop->tempsense1_clr);
+
+       /* power down anatop thermal sensor */
+       writel(TEMPMON_HW_ANADIG_TEMPSENSE1_POWER_DOWN_MASK, &ccm_anatop->tempsense1_set);
+       writel(PMU_REF_REFTOP_SELFBIASOFF_MASK, &ccm_anatop->ref_clr);
+
+       /* Single point */
+       temperature = tmp - (te1 - raw_25c);
+
+       return temperature;
+}
+#endif
 
 int imx_thermal_get_temp(struct udevice *dev, int *temp)
 {
@@ -130,6 +201,7 @@ int imx_thermal_get_temp(struct udevice *dev, int *temp)
        int cpu_tmp = 0;
 
        cpu_tmp = read_cpu_temperature(dev);
+
        while (cpu_tmp >= priv->critical) {
                printf("CPU Temperature (%dC) too close to max (%dC)",
                       cpu_tmp, priv->maxc);
@@ -157,10 +229,20 @@ static int imx_thermal_probe(struct udevice *dev)
        /* Read Temperature calibration data fuse */
        fuse_read(pdata->fuse_bank, pdata->fuse_word, &fuse);
 
-       /* Check for valid fuse */
-       if (fuse == 0 || fuse == ~0) {
-               printf("CPU:   Thermal invalid data, fuse: 0x%x\n", fuse);
-               return -EPERM;
+       if (is_soc_type(MXC_SOC_MX6)) {
+               /* Check for valid fuse */
+               if (fuse == 0 || fuse == ~0) {
+                       debug("CPU:   Thermal invalid data, fuse: 0x%x\n",
+                               fuse);
+                       return -EPERM;
+               }
+       } else if (is_soc_type(MXC_SOC_MX7)) {
+               /* No Calibration data in FUSE? */
+               if ((fuse & 0x3ffff) == 0)
+                       return -EPERM;
+               /* We do not support 105C TE2 */
+               if (((fuse & 0x1c0000) >> 18) == 0x6)
+                       return -EPERM;
        }
 
        /* set critical cooling temp */
index f408b8a81d1e7d2f438c1ce20590f8563920d002..6bc8fddbd16b7368d2b43e611e0cac01935c2f47 100644 (file)
@@ -1,7 +1,76 @@
+#
+# TPM subsystem configuration
+#
+
+menu "TPM support"
+
+config DM_TPM
+       bool "Enable driver model for Trusted Platform Module drivers"
+       depends on DM && TPM
+       help
+          Enable driver model for TPMs. The TIS interface (tis_open(),
+         tis_sendrecv(), etc.) is then implemented by the TPM uclass. Note
+         that even with driver model only a single TPM is currently
+         supported, since the tpm library assumes this.
+
 config TPM_TIS_SANDBOX
        bool "Enable sandbox TPM driver"
+       depends on SANDBOX
        help
          This driver emulates a TPM, providing access to base functions
          such as reading and writing TPM private data. This is enough to
          support Chrome OS verified boot. Extend functionality is not
          implemented.
+
+config TPM_ATMEL_TWI
+       bool "Enable Atmel TWI TPM device driver"
+       depends on TPM
+       help
+         This driver supports an Atmel TPM device connected on the I2C bus.
+         The usual tpm operations and the 'tpm' command can be used to talk
+         to the device using the standard TPM Interface Specification (TIS)
+         protocol
+
+config TPM_TIS_I2C
+       bool "Enable support for Infineon SLB9635/45 TPMs on I2C"
+       depends on TPM && DM_I2C
+       help
+         This driver supports Infineon TPM devices connected on the I2C bus.
+         The usual tpm operations and the 'tpm' command can be used to talk
+         to the device using the standard TPM Interface Specification (TIS)
+         protocol
+
+config TPM_TIS_I2C_BURST_LIMITATION
+       bool "Enable I2C burst length limitation"
+       depends on TPM_TIS_I2C
+       help
+         Some broken TPMs have a limitation on the number of bytes they can
+         receive in one message. Enable this option to allow you to set this
+         option. The can allow a broken TPM to be used by splitting messages
+         into separate pieces.
+
+config TPM_TIS_I2C_BURST_LIMITATION_LEN
+       int "Length"
+       depends on TPM_TIS_I2C_BURST_LIMITATION
+       help
+         Use this to set the burst limitation length
+
+config TPM_TIS_LPC
+       bool "Enable support for Infineon SLB9635/45 TPMs on LPC"
+       depends on TPM && X86
+       help
+         This driver supports Infineon TPM devices connected on the I2C bus.
+         The usual tpm operations and the 'tpm' command can be used to talk
+         to the device using the standard TPM Interface Specification (TIS)
+         protocol
+
+config TPM_AUTH_SESSIONS
+       bool "Enable TPM authentication session support"
+       depends on TPM
+       help
+         Enable support for authorised (AUTH1) commands as specified in the
+         TCG Main Specification 1.2. OIAP-authorised versions of the commands
+         TPM_LoadKey2 and TPM_GetPubKey are provided. Both features are
+         available using the 'tpm' command, too.
+
+endmenu
index 150570ee7e4d94c096ad2b2340cfef13c043fc51..0d328f8d9d35110a0037400e71ea51a4df7906dc 100644 (file)
@@ -3,9 +3,9 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-# TODO: Merge tpm_tis_lpc.c with tpm.c
+obj-$(CONFIG_DM_TPM) += tpm-uclass.o
+
 obj-$(CONFIG_TPM_ATMEL_TWI) += tpm_atmel_twi.o
-obj-$(CONFIG_TPM_TIS_I2C) += tpm.o
 obj-$(CONFIG_TPM_TIS_I2C) += tpm_tis_i2c.o
 obj-$(CONFIG_TPM_TIS_LPC) += tpm_tis_lpc.o
 obj-$(CONFIG_TPM_TIS_SANDBOX) += tpm_tis_sandbox.o
diff --git a/drivers/tpm/tpm-uclass.c b/drivers/tpm/tpm-uclass.c
new file mode 100644 (file)
index 0000000..b6e1fc5
--- /dev/null
@@ -0,0 +1,133 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <tpm.h>
+#include <linux/unaligned/be_byteshift.h>
+#include "tpm_internal.h"
+
+int tpm_open(struct udevice *dev)
+{
+       struct tpm_ops *ops = tpm_get_ops(dev);
+
+       if (!ops->open)
+               return -ENOSYS;
+
+       return ops->open(dev);
+}
+
+int tpm_close(struct udevice *dev)
+{
+       struct tpm_ops *ops = tpm_get_ops(dev);
+
+       if (!ops->close)
+               return -ENOSYS;
+
+       return ops->close(dev);
+}
+
+int tpm_get_desc(struct udevice *dev, char *buf, int size)
+{
+       struct tpm_ops *ops = tpm_get_ops(dev);
+
+       if (!ops->get_desc)
+               return -ENOSYS;
+
+       return ops->get_desc(dev, buf, size);
+}
+
+/* Returns max number of milliseconds to wait */
+static ulong tpm_tis_i2c_calc_ordinal_duration(struct tpm_chip_priv *priv,
+                                              u32 ordinal)
+{
+       int duration_idx = TPM_UNDEFINED;
+       int duration = 0;
+
+       if (ordinal < TPM_MAX_ORDINAL) {
+               duration_idx = tpm_ordinal_duration[ordinal];
+       } else if ((ordinal & TPM_PROTECTED_ORDINAL_MASK) <
+                       TPM_MAX_PROTECTED_ORDINAL) {
+               duration_idx = tpm_protected_ordinal_duration[
+                               ordinal & TPM_PROTECTED_ORDINAL_MASK];
+       }
+
+       if (duration_idx != TPM_UNDEFINED)
+               duration = priv->duration_ms[duration_idx];
+
+       if (duration <= 0)
+               return 2 * 60 * 1000; /* Two minutes timeout */
+       else
+               return duration;
+}
+
+int tpm_xfer(struct udevice *dev, const uint8_t *sendbuf, size_t send_size,
+       uint8_t *recvbuf, size_t *recv_size)
+{
+       struct tpm_chip_priv *priv = dev_get_uclass_priv(dev);
+       struct tpm_ops *ops = tpm_get_ops(dev);
+       ulong start, stop;
+       uint count, ordinal;
+       int ret, ret2;
+
+       if (ops->xfer)
+               return ops->xfer(dev, sendbuf, send_size, recvbuf, recv_size);
+
+       if (!ops->send || !ops->recv)
+               return -ENOSYS;
+
+       /* switch endianess: big->little */
+       count = get_unaligned_be32(sendbuf + TPM_CMD_COUNT_BYTE);
+       ordinal = get_unaligned_be32(sendbuf + TPM_CMD_ORDINAL_BYTE);
+
+       if (count == 0) {
+               debug("no data\n");
+               return -ENODATA;
+       }
+       if (count > send_size) {
+               debug("invalid count value %x %zx\n", count, send_size);
+               return -E2BIG;
+       }
+
+       debug("%s: Calling send\n", __func__);
+       ret = ops->send(dev, sendbuf, send_size);
+       if (ret < 0)
+               return ret;
+
+       start = get_timer(0);
+       stop = tpm_tis_i2c_calc_ordinal_duration(priv, ordinal);
+       do {
+               ret = ops->recv(dev, priv->buf, sizeof(priv->buf));
+               if (ret >= 0) {
+                       if (ret > *recv_size)
+                               return -ENOSPC;
+                       memcpy(recvbuf, priv->buf, ret);
+                       *recv_size = ret;
+                       ret = 0;
+                       break;
+               } else if (ret != -EAGAIN) {
+                       return ret;
+               }
+
+               mdelay(priv->retry_time_ms);
+               if (get_timer(start) > stop) {
+                       ret = -ETIMEDOUT;
+                       break;
+               }
+       } while (ret);
+
+       ret2 = ops->cleanup ? ops->cleanup(dev) : 0;
+
+       return ret2 ? ret2 : ret;
+}
+
+UCLASS_DRIVER(tpm) = {
+       .id             = UCLASS_TPM,
+       .name           = "tpm",
+       .flags          = DM_UC_FLAG_SEQ_ALIAS,
+       .per_device_auto_alloc_size     = sizeof(struct tpm_chip_priv),
+};
diff --git a/drivers/tpm/tpm.c b/drivers/tpm/tpm.c
deleted file mode 100644 (file)
index a650892..0000000
+++ /dev/null
@@ -1,694 +0,0 @@
-/*
- * Copyright (C) 2011 Infineon Technologies
- *
- * Authors:
- * Peter Huewe <huewe.external@infineon.com>
- *
- * Description:
- * Device driver for TCG/TCPA TPM (trusted platform module).
- * Specifications at www.trustedcomputinggroup.org
- *
- * It is based on the Linux kernel driver tpm.c from Leendert van
- * Dorn, Dave Safford, Reiner Sailer, and Kyleen Hall.
- *
- * Version: 2.1.1
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, version 2 of the
- * License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#include <config.h>
-#include <common.h>
-#include <dm.h>
-#include <linux/compiler.h>
-#include <fdtdec.h>
-#include <i2c.h>
-#include <tpm.h>
-#include <asm-generic/errno.h>
-#include <linux/types.h>
-#include <linux/unaligned/be_byteshift.h>
-
-#include "tpm_private.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/* TPM configuration */
-struct tpm {
-#ifdef CONFIG_DM_I2C
-       struct udevice *dev;
-#else
-       int i2c_bus;
-       int slave_addr;
-       int old_bus;
-#endif
-       char inited;
-} tpm;
-
-/* Global structure for tpm chip data */
-static struct tpm_chip g_chip;
-
-enum tpm_duration {
-       TPM_SHORT = 0,
-       TPM_MEDIUM = 1,
-       TPM_LONG = 2,
-       TPM_UNDEFINED,
-};
-
-/* Extended error numbers from linux (see errno.h) */
-#define ECANCELED      125     /* Operation Canceled */
-
-/* Timer frequency. Corresponds to msec timer resolution*/
-#define HZ             1000
-
-#define TPM_MAX_ORDINAL                        243
-#define TPM_MAX_PROTECTED_ORDINAL      12
-#define TPM_PROTECTED_ORDINAL_MASK     0xFF
-
-#define TPM_CMD_COUNT_BYTE     2
-#define TPM_CMD_ORDINAL_BYTE   6
-
-/*
- * Array with one entry per ordinal defining the maximum amount
- * of time the chip could take to return the result.  The ordinal
- * designation of short, medium or long is defined in a table in
- * TCG Specification TPM Main Part 2 TPM Structures Section 17. The
- * values of the SHORT, MEDIUM, and LONG durations are retrieved
- * from the chip during initialization with a call to tpm_get_timeouts.
- */
-static const u8 tpm_protected_ordinal_duration[TPM_MAX_PROTECTED_ORDINAL] = {
-       TPM_UNDEFINED,          /* 0 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 5 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 10 */
-       TPM_SHORT,
-};
-
-static const u8 tpm_ordinal_duration[TPM_MAX_ORDINAL] = {
-       TPM_UNDEFINED,          /* 0 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 5 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 10 */
-       TPM_SHORT,
-       TPM_MEDIUM,
-       TPM_LONG,
-       TPM_LONG,
-       TPM_MEDIUM,             /* 15 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_MEDIUM,
-       TPM_LONG,
-       TPM_SHORT,              /* 20 */
-       TPM_SHORT,
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_SHORT,              /* 25 */
-       TPM_SHORT,
-       TPM_MEDIUM,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_MEDIUM,             /* 30 */
-       TPM_LONG,
-       TPM_MEDIUM,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,              /* 35 */
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_MEDIUM,             /* 40 */
-       TPM_LONG,
-       TPM_MEDIUM,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,              /* 45 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_LONG,
-       TPM_MEDIUM,             /* 50 */
-       TPM_MEDIUM,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 55 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_MEDIUM,             /* 60 */
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_MEDIUM,             /* 65 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 70 */
-       TPM_SHORT,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 75 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_LONG,               /* 80 */
-       TPM_UNDEFINED,
-       TPM_MEDIUM,
-       TPM_LONG,
-       TPM_SHORT,
-       TPM_UNDEFINED,          /* 85 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 90 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_UNDEFINED,          /* 95 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_MEDIUM,             /* 100 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 105 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 110 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,              /* 115 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_LONG,               /* 120 */
-       TPM_LONG,
-       TPM_MEDIUM,
-       TPM_UNDEFINED,
-       TPM_SHORT,
-       TPM_SHORT,              /* 125 */
-       TPM_SHORT,
-       TPM_LONG,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,              /* 130 */
-       TPM_MEDIUM,
-       TPM_UNDEFINED,
-       TPM_SHORT,
-       TPM_MEDIUM,
-       TPM_UNDEFINED,          /* 135 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 140 */
-       TPM_SHORT,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 145 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 150 */
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_UNDEFINED,          /* 155 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 160 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 165 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_LONG,               /* 170 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 175 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_MEDIUM,             /* 180 */
-       TPM_SHORT,
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_MEDIUM,             /* 185 */
-       TPM_SHORT,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 190 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 195 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 200 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,
-       TPM_SHORT,              /* 205 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_MEDIUM,             /* 210 */
-       TPM_UNDEFINED,
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_MEDIUM,
-       TPM_UNDEFINED,          /* 215 */
-       TPM_MEDIUM,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,
-       TPM_SHORT,              /* 220 */
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_SHORT,
-       TPM_UNDEFINED,          /* 225 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 230 */
-       TPM_LONG,
-       TPM_MEDIUM,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,          /* 235 */
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_UNDEFINED,
-       TPM_SHORT,              /* 240 */
-       TPM_UNDEFINED,
-       TPM_MEDIUM,
-};
-
-/* Returns max number of milliseconds to wait */
-static unsigned long tpm_calc_ordinal_duration(struct tpm_chip *chip,
-               u32 ordinal)
-{
-       int duration_idx = TPM_UNDEFINED;
-       int duration = 0;
-
-       if (ordinal < TPM_MAX_ORDINAL) {
-               duration_idx = tpm_ordinal_duration[ordinal];
-       } else if ((ordinal & TPM_PROTECTED_ORDINAL_MASK) <
-                       TPM_MAX_PROTECTED_ORDINAL) {
-               duration_idx = tpm_protected_ordinal_duration[
-                               ordinal & TPM_PROTECTED_ORDINAL_MASK];
-       }
-
-       if (duration_idx != TPM_UNDEFINED)
-               duration = chip->vendor.duration[duration_idx];
-
-       if (duration <= 0)
-               return 2 * 60 * HZ; /* Two minutes timeout */
-       else
-               return duration;
-}
-
-static ssize_t tpm_transmit(const unsigned char *buf, size_t bufsiz)
-{
-       int rc;
-       u32 count, ordinal;
-       unsigned long start, stop;
-
-       struct tpm_chip *chip = &g_chip;
-
-       /* switch endianess: big->little */
-       count = get_unaligned_be32(buf + TPM_CMD_COUNT_BYTE);
-       ordinal = get_unaligned_be32(buf + TPM_CMD_ORDINAL_BYTE);
-
-       if (count == 0) {
-               error("no data\n");
-               return -ENODATA;
-       }
-       if (count > bufsiz) {
-               error("invalid count value %x %zx\n", count, bufsiz);
-               return -E2BIG;
-       }
-
-       debug("Calling send\n");
-       rc = chip->vendor.send(chip, (u8 *)buf, count);
-       debug("   ... done calling send\n");
-       if (rc < 0) {
-               error("tpm_transmit: tpm_send: error %d\n", rc);
-               goto out;
-       }
-
-       if (chip->vendor.irq)
-               goto out_recv;
-
-       start = get_timer(0);
-       stop = tpm_calc_ordinal_duration(chip, ordinal);
-       do {
-               debug("waiting for status... %ld %ld\n", start, stop);
-               u8 status = chip->vendor.status(chip);
-               if ((status & chip->vendor.req_complete_mask) ==
-                   chip->vendor.req_complete_val) {
-                       debug("...got it;\n");
-                       goto out_recv;
-               }
-
-               if (status == chip->vendor.req_canceled) {
-                       error("Operation Canceled\n");
-                       rc = -ECANCELED;
-                       goto out;
-               }
-               udelay(TPM_TIMEOUT * 1000);
-       } while (get_timer(start) < stop);
-
-       chip->vendor.cancel(chip);
-       error("Operation Timed out\n");
-       rc = -ETIME;
-       goto out;
-
-out_recv:
-       debug("out_recv: reading response...\n");
-       rc = chip->vendor.recv(chip, (u8 *)buf, TPM_BUFSIZE);
-       if (rc < 0)
-               error("tpm_transmit: tpm_recv: error %d\n", rc);
-
-out:
-       return rc;
-}
-
-#ifdef CONFIG_DM_I2C
-static int tpm_open_dev(struct udevice *dev)
-{
-       int rc;
-
-       debug("%s: start\n", __func__);
-       if (g_chip.is_open)
-               return -EBUSY;
-       rc = tpm_vendor_init_dev(dev);
-       if (rc < 0)
-               g_chip.is_open = 0;
-       return rc;
-}
-#else
-static int tpm_open(uint32_t dev_addr)
-{
-       int rc;
-
-       if (g_chip.is_open)
-               return -EBUSY;
-       rc = tpm_vendor_init(dev_addr);
-       if (rc < 0)
-               g_chip.is_open = 0;
-       return rc;
-}
-#endif
-static void tpm_close(void)
-{
-       if (g_chip.is_open) {
-               tpm_vendor_cleanup(&g_chip);
-               g_chip.is_open = 0;
-       }
-}
-
-static int tpm_select(void)
-{
-#ifndef CONFIG_DM_I2C
-       int ret;
-
-       tpm.old_bus = i2c_get_bus_num();
-       if (tpm.old_bus != tpm.i2c_bus) {
-               ret = i2c_set_bus_num(tpm.i2c_bus);
-               if (ret) {
-                       debug("%s: Fail to set i2c bus %d\n", __func__,
-                             tpm.i2c_bus);
-                       return -1;
-               }
-       }
-#endif
-       return 0;
-}
-
-static int tpm_deselect(void)
-{
-#ifndef CONFIG_DM_I2C
-       int ret;
-
-       if (tpm.old_bus != i2c_get_bus_num()) {
-               ret = i2c_set_bus_num(tpm.old_bus);
-               if (ret) {
-                       debug("%s: Fail to restore i2c bus %d\n",
-                             __func__, tpm.old_bus);
-                       return -1;
-               }
-       }
-       tpm.old_bus = -1;
-#endif
-       return 0;
-}
-
-/**
- * Decode TPM configuration.
- *
- * @param dev  Returns a configuration of TPM device
- * @return 0 if ok, -1 on error
- */
-static int tpm_decode_config(struct tpm *dev)
-{
-       const void *blob = gd->fdt_blob;
-       int parent;
-       int node;
-
-       node = fdtdec_next_compatible(blob, 0, COMPAT_INFINEON_SLB9635_TPM);
-       if (node < 0) {
-               node = fdtdec_next_compatible(blob, 0,
-                               COMPAT_INFINEON_SLB9645_TPM);
-       }
-       if (node < 0) {
-               debug("%s: Node not found\n", __func__);
-               return -1;
-       }
-       parent = fdt_parent_offset(blob, node);
-       if (parent < 0) {
-               debug("%s: Cannot find node parent\n", __func__);
-               return -1;
-       }
-#ifdef CONFIG_DM_I2C
-       struct udevice *bus;
-       int chip_addr;
-       int ret;
-
-       /*
-        * TODO(sjg@chromium.org): Remove this when driver model supports
-        * TPMs
-        */
-       ret = uclass_get_device_by_of_offset(UCLASS_I2C, parent, &bus);
-       if (ret) {
-               debug("Cannot find bus for node '%s: ret=%d'\n",
-                     fdt_get_name(blob, parent, NULL), ret);
-               return ret;
-       }
-
-       chip_addr = fdtdec_get_int(blob, node, "reg", -1);
-       if (chip_addr == -1) {
-               debug("Cannot find reg property for node '%s: ret=%d'\n",
-                     fdt_get_name(blob, node, NULL), ret);
-               return ret;
-       }
-       /*
-        * TODO(sjg@chromium.org): Older TPMs will need to use the older method
-        * in iic_tpm_read() so the offset length needs to be 0 here.
-        */
-       ret = i2c_get_chip(bus, chip_addr, 1, &dev->dev);
-       if (ret) {
-               debug("Cannot find device for node '%s: ret=%d'\n",
-                     fdt_get_name(blob, node, NULL), ret);
-               return ret;
-       }
-#else
-       int i2c_bus;
-
-       i2c_bus = i2c_get_bus_num_fdt(parent);
-       if (i2c_bus < 0)
-               return -1;
-       dev->i2c_bus = i2c_bus;
-       dev->slave_addr = fdtdec_get_addr(blob, node, "reg");
-#endif
-
-       return 0;
-}
-
-struct tpm_chip *tpm_register_hardware(const struct tpm_vendor_specific *entry)
-{
-       struct tpm_chip *chip;
-
-       /* Driver specific per-device data */
-       chip = &g_chip;
-       memcpy(&chip->vendor, entry, sizeof(struct tpm_vendor_specific));
-       chip->is_open = 1;
-
-       return chip;
-}
-
-int tis_init(void)
-{
-       if (tpm.inited)
-               return 0;
-
-       if (tpm_decode_config(&tpm))
-               return -1;
-
-       if (tpm_select())
-               return -1;
-
-#ifndef CONFIG_DM_I2C
-       /*
-        * Probe TPM twice; the first probing might fail because TPM is asleep,
-        * and the probing can wake up TPM.
-        */
-       if (i2c_probe(tpm.slave_addr) && i2c_probe(tpm.slave_addr)) {
-               debug("%s: fail to probe i2c addr 0x%x\n", __func__,
-                     tpm.slave_addr);
-               return -1;
-       }
-#endif
-
-       tpm_deselect();
-       debug("%s: done\n", __func__);
-
-       tpm.inited = 1;
-
-       return 0;
-}
-
-int tis_open(void)
-{
-       int rc;
-
-       if (!tpm.inited)
-               return -1;
-
-       if (tpm_select())
-               return -1;
-
-#ifdef CONFIG_DM_I2C
-       rc = tpm_open_dev(tpm.dev);
-#else
-       rc = tpm_open(tpm.slave_addr);
-#endif
-
-       tpm_deselect();
-
-       return rc;
-}
-
-int tis_close(void)
-{
-       if (!tpm.inited)
-               return -1;
-
-       if (tpm_select())
-               return -1;
-
-       tpm_close();
-
-       tpm_deselect();
-
-       return 0;
-}
-
-int tis_sendrecv(const uint8_t *sendbuf, size_t sbuf_size,
-               uint8_t *recvbuf, size_t *rbuf_len)
-{
-       int len;
-       uint8_t buf[4096];
-
-       if (!tpm.inited)
-               return -1;
-
-       if (sizeof(buf) < sbuf_size)
-               return -1;
-
-       memcpy(buf, sendbuf, sbuf_size);
-
-       if (tpm_select())
-               return -1;
-
-       len = tpm_transmit(buf, sbuf_size);
-
-       tpm_deselect();
-
-       if (len < 10) {
-               *rbuf_len = 0;
-               return -1;
-       }
-
-       memcpy(recvbuf, buf, len);
-       *rbuf_len = len;
-
-       return 0;
-}
index 361a7720fa547816c04818ccc0640188384cd759..205d7a5d97db9a5ac9e5f5dd59e0ff05f82100dd 100644 (file)
@@ -1,18 +1,9 @@
 /*
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation; either version 2 of
- * the License, or (at your option) any later version.
+ * Copyright (C) 2013 Guntermann & Drunck, GmbH
  *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
+ * Written by Dirk Eibach <eibach@gdsys.de>
  *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0+
  */
 
 #include <common.h>
diff --git a/drivers/tpm/tpm_internal.h b/drivers/tpm/tpm_internal.h
new file mode 100644 (file)
index 0000000..cd29dba
--- /dev/null
@@ -0,0 +1,287 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __tpm_internal_h
+#define __tpm_internal_h
+
+enum {
+       TPM_MAX_ORDINAL                 = 243,
+       TPM_MAX_PROTECTED_ORDINAL       = 12,
+       TPM_PROTECTED_ORDINAL_MASK      = 0xff,
+       TPM_CMD_COUNT_BYTE              = 2,
+       TPM_CMD_ORDINAL_BYTE            = 6,
+};
+
+/*
+ * Array with one entry per ordinal defining the maximum amount
+ * of time the chip could take to return the result.  The ordinal
+ * designation of short, medium or long is defined in a table in
+ * TCG Specification TPM Main Part 2 TPM Structures Section 17. The
+ * values of the SHORT, MEDIUM, and LONG durations are retrieved
+ * from the chip during initialization with a call to tpm_get_timeouts.
+ */
+static const u8 tpm_protected_ordinal_duration[TPM_MAX_PROTECTED_ORDINAL] = {
+       TPM_UNDEFINED,          /* 0 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 5 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 10 */
+       TPM_SHORT,
+};
+
+static const u8 tpm_ordinal_duration[TPM_MAX_ORDINAL] = {
+       TPM_UNDEFINED,          /* 0 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 5 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 10 */
+       TPM_SHORT,
+       TPM_MEDIUM,
+       TPM_LONG,
+       TPM_LONG,
+       TPM_MEDIUM,             /* 15 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_MEDIUM,
+       TPM_LONG,
+       TPM_SHORT,              /* 20 */
+       TPM_SHORT,
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_SHORT,              /* 25 */
+       TPM_SHORT,
+       TPM_MEDIUM,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_MEDIUM,             /* 30 */
+       TPM_LONG,
+       TPM_MEDIUM,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,              /* 35 */
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_MEDIUM,             /* 40 */
+       TPM_LONG,
+       TPM_MEDIUM,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,              /* 45 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_LONG,
+       TPM_MEDIUM,             /* 50 */
+       TPM_MEDIUM,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 55 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_MEDIUM,             /* 60 */
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_MEDIUM,             /* 65 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 70 */
+       TPM_SHORT,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 75 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_LONG,               /* 80 */
+       TPM_UNDEFINED,
+       TPM_MEDIUM,
+       TPM_LONG,
+       TPM_SHORT,
+       TPM_UNDEFINED,          /* 85 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 90 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_UNDEFINED,          /* 95 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_MEDIUM,             /* 100 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 105 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 110 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,              /* 115 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_LONG,               /* 120 */
+       TPM_LONG,
+       TPM_MEDIUM,
+       TPM_UNDEFINED,
+       TPM_SHORT,
+       TPM_SHORT,              /* 125 */
+       TPM_SHORT,
+       TPM_LONG,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,              /* 130 */
+       TPM_MEDIUM,
+       TPM_UNDEFINED,
+       TPM_SHORT,
+       TPM_MEDIUM,
+       TPM_UNDEFINED,          /* 135 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 140 */
+       TPM_SHORT,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 145 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 150 */
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_UNDEFINED,          /* 155 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 160 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 165 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_LONG,               /* 170 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 175 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_MEDIUM,             /* 180 */
+       TPM_SHORT,
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_MEDIUM,             /* 185 */
+       TPM_SHORT,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 190 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 195 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 200 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,
+       TPM_SHORT,              /* 205 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_MEDIUM,             /* 210 */
+       TPM_UNDEFINED,
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_MEDIUM,
+       TPM_UNDEFINED,          /* 215 */
+       TPM_MEDIUM,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,
+       TPM_SHORT,              /* 220 */
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_SHORT,
+       TPM_UNDEFINED,          /* 225 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 230 */
+       TPM_LONG,
+       TPM_MEDIUM,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,          /* 235 */
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_UNDEFINED,
+       TPM_SHORT,              /* 240 */
+       TPM_UNDEFINED,
+       TPM_MEDIUM,
+};
+
+#endif
diff --git a/drivers/tpm/tpm_private.h b/drivers/tpm/tpm_private.h
deleted file mode 100644 (file)
index 8894c98..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2011 Infineon Technologies
- *
- * Authors:
- * Peter Huewe <huewe.external@infineon.com>
- *
- * Version: 2.1.1
- *
- * Description:
- * Device driver for TCG/TCPA TPM (trusted platform module).
- * Specifications at www.trustedcomputinggroup.org
- *
- * It is based on the Linux kernel driver tpm.c from Leendert van
- * Dorn, Dave Safford, Reiner Sailer, and Kyleen Hall.
- *
- *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, version 2 of the
- * License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
- */
-
-#ifndef _TPM_PRIVATE_H_
-#define _TPM_PRIVATE_H_
-
-#include <linux/compiler.h>
-#include <linux/types.h>
-
-enum tpm_timeout {
-       TPM_TIMEOUT = 5,        /* msecs */
-};
-
-/* Size of external transmit buffer (used in tpm_transmit)*/
-#define TPM_BUFSIZE 4096
-
-/* Index of Count field in TPM response buffer */
-#define TPM_RSP_SIZE_BYTE      2
-#define TPM_RSP_RC_BYTE                6
-
-struct tpm_chip;
-
-struct tpm_vendor_specific {
-       const u8 req_complete_mask;
-       const u8 req_complete_val;
-       const u8 req_canceled;
-       int irq;
-       int (*recv) (struct tpm_chip *, u8 *, size_t);
-       int (*send) (struct tpm_chip *, u8 *, size_t);
-       void (*cancel) (struct tpm_chip *);
-       u8(*status) (struct tpm_chip *);
-       int locality;
-       unsigned long timeout_a, timeout_b, timeout_c, timeout_d;  /* msec */
-       unsigned long duration[3];  /* msec */
-};
-
-struct tpm_chip {
-       int is_open;
-       struct tpm_vendor_specific vendor;
-};
-
-struct tpm_input_header {
-       __be16 tag;
-       __be32 length;
-       __be32 ordinal;
-} __packed;
-
-struct tpm_output_header {
-       __be16 tag;
-       __be32 length;
-       __be32 return_code;
-} __packed;
-
-struct timeout_t {
-       __be32 a;
-       __be32 b;
-       __be32 c;
-       __be32 d;
-} __packed;
-
-struct duration_t {
-       __be32 tpm_short;
-       __be32 tpm_medium;
-       __be32 tpm_long;
-} __packed;
-
-union cap_t {
-       struct timeout_t timeout;
-       struct duration_t duration;
-};
-
-struct tpm_getcap_params_in {
-       __be32 cap;
-       __be32 subcap_size;
-       __be32 subcap;
-} __packed;
-
-struct tpm_getcap_params_out {
-       __be32 cap_size;
-       union cap_t cap;
-} __packed;
-
-union tpm_cmd_header {
-       struct tpm_input_header in;
-       struct tpm_output_header out;
-};
-
-union tpm_cmd_params {
-       struct tpm_getcap_params_out getcap_out;
-       struct tpm_getcap_params_in getcap_in;
-};
-
-struct tpm_cmd_t {
-       union tpm_cmd_header header;
-       union tpm_cmd_params params;
-} __packed;
-
-struct tpm_chip *tpm_register_hardware(const struct tpm_vendor_specific *);
-
-int tpm_vendor_init(uint32_t dev_addr);
-
-struct udevice;
-int tpm_vendor_init_dev(struct udevice *dev);
-
-void tpm_vendor_cleanup(struct tpm_chip *chip);
-
-
-#endif
index cc740e9c21beb16510c73897416f998993a9573f..9afe46c1e90c28cd7f321be876eaf51c447260f8 100644 (file)
  *
  * Version: 2.1.1
  *
- * See file CREDITS for list of people who contributed to this
- * project.
- *
- * This program is free software; you can redistribute it and/or
- * modify it under the terms of the GNU General Public License as
- * published by the Free Software Foundation, version 2 of the
- * License.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place, Suite 330, Boston,
- * MA 02111-1307 USA
+ * SPDX-License-Identifier:    GPL-2.0
  */
 
 #include <common.h>
 #include <dm.h>
 #include <fdtdec.h>
-#include <linux/compiler.h>
 #include <i2c.h>
+#include <tis.h>
 #include <tpm.h>
 #include <asm-generic/errno.h>
+#include <linux/compiler.h>
 #include <linux/types.h>
 #include <linux/unaligned/be_byteshift.h>
 
-#include "tpm_private.h"
+#include "tpm_tis_i2c.h"
+#include "tpm_internal.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
-/* Address of the TPM on the I2C bus */
-#define TPM_I2C_ADDR           0x20
-
-/* Max buffer size supported by our tpm */
-#define TPM_DEV_BUFSIZE                1260
-
-/* Max number of iterations after i2c NAK */
-#define MAX_COUNT              3
-
-/*
- * Max number of iterations after i2c NAK for 'long' commands
- *
- * We need this especially for sending TPM_READY, since the cleanup after the
- * transtion to the ready state may take some time, but it is unpredictable
- * how long it will take.
- */
-#define MAX_COUNT_LONG         50
-
-#define SLEEP_DURATION         60      /* in usec */
-#define SLEEP_DURATION_LONG    210     /* in usec */
-
-#define TPM_HEADER_SIZE                10
-
-/*
- * Expected value for DIDVID register
- *
- * The only device the system knows about at this moment is Infineon slb9635.
- */
-#define TPM_TIS_I2C_DID_VID    0x000b15d1L
-
-enum tis_access {
-       TPM_ACCESS_VALID                = 0x80,
-       TPM_ACCESS_ACTIVE_LOCALITY      = 0x20,
-       TPM_ACCESS_REQUEST_PENDING      = 0x04,
-       TPM_ACCESS_REQUEST_USE          = 0x02,
-};
-
-enum tis_status {
-       TPM_STS_VALID                   = 0x80,
-       TPM_STS_COMMAND_READY           = 0x40,
-       TPM_STS_GO                      = 0x20,
-       TPM_STS_DATA_AVAIL              = 0x10,
-       TPM_STS_DATA_EXPECT             = 0x08,
-};
-
-enum tis_defaults {
-       TIS_SHORT_TIMEOUT               = 750,  /* ms */
-       TIS_LONG_TIMEOUT                = 2000, /* ms */
-};
-
-/* expected value for DIDVID register */
-#define TPM_TIS_I2C_DID_VID_9635 0x000b15d1L
-#define TPM_TIS_I2C_DID_VID_9645 0x001a15d1L
-
-enum i2c_chip_type {
-       SLB9635,
-       SLB9645,
-       UNKNOWN,
-};
-
 static const char * const chip_name[] = {
        [SLB9635] = "slb9635tt",
        [SLB9645] = "slb9645tt",
        [UNKNOWN] = "unknown/fallback to slb9635",
 };
 
-#define        TPM_ACCESS(l)                   (0x0000 | ((l) << 4))
-#define        TPM_STS(l)                      (0x0001 | ((l) << 4))
-#define        TPM_DATA_FIFO(l)                (0x0005 | ((l) << 4))
-#define        TPM_DID_VID(l)                  (0x0006 | ((l) << 4))
-
-/* Structure to store I2C TPM specific stuff */
-struct tpm_dev {
-#ifdef CONFIG_DM_I2C
-       struct udevice *dev;
-#else
-       uint addr;
-#endif
-       u8 buf[TPM_DEV_BUFSIZE + sizeof(u8)];  /* Max buffer size + addr */
-       enum i2c_chip_type chip_type;
-};
-
-static struct tpm_dev tpm_dev = {
-#ifndef CONFIG_DM_I2C
-       .addr = TPM_I2C_ADDR
-#endif
-};
-
-static struct tpm_dev tpm_dev;
-
 /*
- * iic_tpm_read() - read from TPM register
+ * tpm_tis_i2c_read() - read from TPM register
  * @addr: register address to read from
  * @buffer: provided by caller
  * @len: number of bytes to read
@@ -154,39 +56,32 @@ static struct tpm_dev tpm_dev;
  *
  * Return -EIO on error, 0 on success.
  */
-static int iic_tpm_read(u8 addr, u8 *buffer, size_t len)
+static int tpm_tis_i2c_read(struct udevice *dev, u8 addr, u8 *buffer,
+                           size_t len)
 {
+       struct tpm_chip *chip = dev_get_priv(dev);
        int rc;
        int count;
        uint32_t addrbuf = addr;
 
-       if ((tpm_dev.chip_type == SLB9635) || (tpm_dev.chip_type == UNKNOWN)) {
+       if ((chip->chip_type == SLB9635) || (chip->chip_type == UNKNOWN)) {
                /* slb9635 protocol should work in both cases */
                for (count = 0; count < MAX_COUNT; count++) {
-#ifdef CONFIG_DM_I2C
-                       rc = dm_i2c_write(tpm_dev.dev, 0, (uchar *)&addrbuf, 1);
-#else
-                       rc = i2c_write(tpm_dev.addr, 0, 0,
-                                      (uchar *)&addrbuf, 1);
-#endif
+                       rc = dm_i2c_write(dev, 0, (uchar *)&addrbuf, 1);
                        if (rc == 0)
                                break;  /* Success, break to skip sleep */
-                       udelay(SLEEP_DURATION);
+                       udelay(SLEEP_DURATION_US);
                }
                if (rc)
-                       return -rc;
+                       return rc;
 
                /* After the TPM has successfully received the register address
                 * it needs some time, thus we're sleeping here again, before
                 * retrieving the data
                 */
                for (count = 0; count < MAX_COUNT; count++) {
-                       udelay(SLEEP_DURATION);
-#ifdef CONFIG_DM_I2C
-                       rc = dm_i2c_read(tpm_dev.dev, 0, buffer, len);
-#else
-                       rc = i2c_read(tpm_dev.addr, 0, 0, buffer, len);
-#endif
+                       udelay(SLEEP_DURATION_US);
+                       rc = dm_i2c_read(dev, 0, buffer, len);
                        if (rc == 0)
                                break;  /* success, break to skip sleep */
                }
@@ -199,60 +94,56 @@ static int iic_tpm_read(u8 addr, u8 *buffer, size_t len)
                 * be safe on the safe side.
                 */
                for (count = 0; count < MAX_COUNT; count++) {
-#ifdef CONFIG_DM_I2C
-                       rc = dm_i2c_read(tpm_dev.dev, addr, buffer, len);
-#else
-                       rc = i2c_read(tpm_dev.addr, addr, 1, buffer, len);
-#endif
+                       rc = dm_i2c_read(dev, addr, buffer, len);
                        if (rc == 0)
                                break;  /* break here to skip sleep */
-                       udelay(SLEEP_DURATION);
+                       udelay(SLEEP_DURATION_US);
                }
        }
 
        /* Take care of 'guard time' */
-       udelay(SLEEP_DURATION);
+       udelay(SLEEP_DURATION_US);
        if (rc)
-               return -rc;
+               return rc;
 
        return 0;
 }
 
-static int iic_tpm_write_generic(u8 addr, u8 *buffer, size_t len,
-               unsigned int sleep_time, u8 max_count)
+static int tpm_tis_i2c_write_generic(struct udevice *dev, u8 addr,
+                                    const u8 *buffer, size_t len,
+                                    unsigned int sleep_time_us, u8 max_count)
 {
+       struct tpm_chip_priv *priv = dev_get_uclass_priv(dev);
+       struct tpm_chip *chip = dev_get_priv(dev);
        int rc = 0;
        int count;
 
-       /* Prepare send buffer */
-#ifndef CONFIG_DM_I2C
-       tpm_dev.buf[0] = addr;
-       memcpy(&(tpm_dev.buf[1]), buffer, len);
-       buffer = tpm_dev.buf;
-       len++;
-#endif
+       if (chip->chip_type == SLB9635) {
+               /* Prepare send buffer to include the address */
+               priv->buf[0] = addr;
+               memcpy(&(priv->buf[1]), buffer, len);
+               buffer = priv->buf;
+               len++;
+               addr = 0;
+       }
 
        for (count = 0; count < max_count; count++) {
-#ifdef CONFIG_DM_I2C
-               rc = dm_i2c_write(tpm_dev.dev, addr, buffer, len);
-#else
-               rc = i2c_write(tpm_dev.addr, 0, 0, buffer, len);
-#endif
+               rc = dm_i2c_write(dev, addr, buffer, len);
                if (rc == 0)
                        break;  /* Success, break to skip sleep */
-               udelay(sleep_time);
+               udelay(sleep_time_us);
        }
 
        /* take care of 'guard time' */
-       udelay(sleep_time);
+       udelay(sleep_time_us);
        if (rc)
-               return -rc;
+               return rc;
 
        return 0;
 }
 
 /*
- * iic_tpm_write() - write to TPM register
+ * tpm_tis_i2c_write() - write to TPM register
  * @addr: register address to write to
  * @buffer: containing data to be written
  * @len: number of bytes to write
@@ -263,109 +154,135 @@ static int iic_tpm_write_generic(u8 addr, u8 *buffer, size_t len,
  * NOTE: TPM is big-endian for multi-byte values. Multi-byte
  * values have to be swapped.
  *
- * NOTE: use this function instead of the iic_tpm_write_generic function.
+ * NOTE: use this function instead of the tpm_tis_i2c_write_generic function.
  *
  * Return -EIO on error, 0 on success
  */
-static int iic_tpm_write(u8 addr, u8 *buffer, size_t len)
+static int tpm_tis_i2c_write(struct udevice *dev, u8 addr, const u8 *buffer,
+                            size_t len)
 {
-       return iic_tpm_write_generic(addr, buffer, len, SLEEP_DURATION,
-                       MAX_COUNT);
+       return tpm_tis_i2c_write_generic(dev, addr, buffer, len,
+                                        SLEEP_DURATION_US, MAX_COUNT);
 }
 
 /*
  * This function is needed especially for the cleanup situation after
  * sending TPM_READY
  */
-static int iic_tpm_write_long(u8 addr, u8 *buffer, size_t len)
+static int tpm_tis_i2c_write_long(struct udevice *dev, u8 addr, u8 *buffer,
+                                 size_t len)
 {
-       return iic_tpm_write_generic(addr, buffer, len, SLEEP_DURATION_LONG,
-                       MAX_COUNT_LONG);
+       return tpm_tis_i2c_write_generic(dev, addr, buffer, len,
+                                        SLEEP_DURATION_LONG_US,
+                                        MAX_COUNT_LONG);
 }
 
-static int check_locality(struct tpm_chip *chip, int loc)
+static int tpm_tis_i2c_check_locality(struct udevice *dev, int loc)
 {
        const u8 mask = TPM_ACCESS_ACTIVE_LOCALITY | TPM_ACCESS_VALID;
+       struct tpm_chip *chip = dev_get_priv(dev);
        u8 buf;
        int rc;
 
-       rc = iic_tpm_read(TPM_ACCESS(loc), &buf, 1);
+       rc = tpm_tis_i2c_read(dev, TPM_ACCESS(loc), &buf, 1);
        if (rc < 0)
                return rc;
 
        if ((buf & mask) == mask) {
-               chip->vendor.locality = loc;
+               chip->locality = loc;
                return loc;
        }
 
-       return -1;
+       return -ENOENT;
 }
 
-static void release_locality(struct tpm_chip *chip, int loc, int force)
+static void tpm_tis_i2c_release_locality(struct udevice *dev, int loc,
+                                        int force)
 {
        const u8 mask = TPM_ACCESS_REQUEST_PENDING | TPM_ACCESS_VALID;
        u8 buf;
 
-       if (iic_tpm_read(TPM_ACCESS(loc), &buf, 1) < 0)
+       if (tpm_tis_i2c_read(dev, TPM_ACCESS(loc), &buf, 1) < 0)
                return;
 
        if (force || (buf & mask) == mask) {
                buf = TPM_ACCESS_ACTIVE_LOCALITY;
-               iic_tpm_write(TPM_ACCESS(loc), &buf, 1);
+               tpm_tis_i2c_write(dev, TPM_ACCESS(loc), &buf, 1);
        }
 }
 
-static int request_locality(struct tpm_chip *chip, int loc)
+static int tpm_tis_i2c_request_locality(struct udevice *dev, int loc)
 {
+       struct tpm_chip *chip = dev_get_priv(dev);
        unsigned long start, stop;
        u8 buf = TPM_ACCESS_REQUEST_USE;
        int rc;
 
-       if (check_locality(chip, loc) >= 0)
+       rc = tpm_tis_i2c_check_locality(dev, loc);
+       if (rc >= 0) {
+               debug("%s: Already have locality\n", __func__);
                return loc;  /* We already have the locality */
+       } else if (rc != -ENOENT) {
+               debug("%s: Failed to get locality: %d\n", __func__, rc);
+               return rc;
+       }
 
-       rc = iic_tpm_write(TPM_ACCESS(loc), &buf, 1);
-       if (rc)
+       rc = tpm_tis_i2c_write(dev, TPM_ACCESS(loc), &buf, 1);
+       if (rc) {
+               debug("%s: Failed to write to TPM: %d\n", __func__, rc);
                return rc;
+       }
 
        /* Wait for burstcount */
        start = get_timer(0);
-       stop = chip->vendor.timeout_a;
+       stop = chip->timeout_a;
        do {
-               if (check_locality(chip, loc) >= 0)
+               rc = tpm_tis_i2c_check_locality(dev, loc);
+               if (rc >= 0) {
+                       debug("%s: Have locality\n", __func__);
                        return loc;
-               udelay(TPM_TIMEOUT * 1000);
+               } else if (rc != -ENOENT) {
+                       debug("%s: Failed to get locality: %d\n", __func__, rc);
+                       return rc;
+               }
+               mdelay(TPM_TIMEOUT_MS);
        } while (get_timer(start) < stop);
+       debug("%s: Timeout getting locality: %d\n", __func__, rc);
 
-       return -1;
+       return rc;
 }
 
-static u8 tpm_tis_i2c_status(struct tpm_chip *chip)
+static u8 tpm_tis_i2c_status(struct udevice *dev)
 {
+       struct tpm_chip *chip = dev_get_priv(dev);
        /* NOTE: Since i2c read may fail, return 0 in this case --> time-out */
        u8 buf;
 
-       if (iic_tpm_read(TPM_STS(chip->vendor.locality), &buf, 1) < 0)
+       if (tpm_tis_i2c_read(dev, TPM_STS(chip->locality), &buf, 1) < 0)
                return 0;
        else
                return buf;
 }
 
-static void tpm_tis_i2c_ready(struct tpm_chip *chip)
+static int tpm_tis_i2c_ready(struct udevice *dev)
 {
+       struct tpm_chip *chip = dev_get_priv(dev);
        int rc;
 
        /* This causes the current command to be aborted */
        u8 buf = TPM_STS_COMMAND_READY;
 
        debug("%s\n", __func__);
-       rc = iic_tpm_write_long(TPM_STS(chip->vendor.locality), &buf, 1);
+       rc = tpm_tis_i2c_write_long(dev, TPM_STS(chip->locality), &buf, 1);
        if (rc)
                debug("%s: rc=%d\n", __func__, rc);
+
+       return rc;
 }
 
-static ssize_t get_burstcount(struct tpm_chip *chip)
+static ssize_t tpm_tis_i2c_get_burstcount(struct udevice *dev)
 {
+       struct tpm_chip *chip = dev_get_priv(dev);
        unsigned long start, stop;
        ssize_t burstcnt;
        u8 addr, buf[3];
@@ -373,53 +290,54 @@ static ssize_t get_burstcount(struct tpm_chip *chip)
        /* Wait for burstcount */
        /* XXX: Which timeout value? Spec has 2 answers (c & d) */
        start = get_timer(0);
-       stop = chip->vendor.timeout_d;
+       stop = chip->timeout_d;
        do {
                /* Note: STS is little endian */
-               addr = TPM_STS(chip->vendor.locality) + 1;
-               if (iic_tpm_read(addr, buf, 3) < 0)
+               addr = TPM_STS(chip->locality) + 1;
+               if (tpm_tis_i2c_read(dev, addr, buf, 3) < 0)
                        burstcnt = 0;
                else
                        burstcnt = (buf[2] << 16) + (buf[1] << 8) + buf[0];
 
                if (burstcnt)
                        return burstcnt;
-               udelay(TPM_TIMEOUT * 1000);
+               mdelay(TPM_TIMEOUT_MS);
        } while (get_timer(start) < stop);
 
        return -EBUSY;
 }
 
-static int wait_for_stat(struct tpm_chip *chip, u8 mask, unsigned long timeout,
-               int *status)
+static int tpm_tis_i2c_wait_for_stat(struct udevice *dev, u8 mask,
+                                    unsigned long timeout, int *status)
 {
        unsigned long start, stop;
 
        /* Check current status */
-       *status = tpm_tis_i2c_status(chip);
+       *status = tpm_tis_i2c_status(dev);
        if ((*status & mask) == mask)
                return 0;
 
        start = get_timer(0);
        stop = timeout;
        do {
-               udelay(TPM_TIMEOUT * 1000);
-               *status = tpm_tis_i2c_status(chip);
+               mdelay(TPM_TIMEOUT_MS);
+               *status = tpm_tis_i2c_status(dev);
                if ((*status & mask) == mask)
                        return 0;
        } while (get_timer(start) < stop);
 
-       return -ETIME;
+       return -ETIMEDOUT;
 }
 
-static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
+static int tpm_tis_i2c_recv_data(struct udevice *dev, u8 *buf, size_t count)
 {
+       struct tpm_chip *chip = dev_get_priv(dev);
        size_t size = 0;
        ssize_t burstcnt;
        int rc;
 
        while (size < count) {
-               burstcnt = get_burstcount(chip);
+               burstcnt = tpm_tis_i2c_get_burstcount(dev);
 
                /* burstcount < 0 -> tpm is busy */
                if (burstcnt < 0)
@@ -429,8 +347,8 @@ static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
                if (burstcnt > (count - size))
                        burstcnt = count - size;
 
-               rc = iic_tpm_read(TPM_DATA_FIFO(chip->vendor.locality),
-                               &(buf[size]), burstcnt);
+               rc = tpm_tis_i2c_read(dev, TPM_DATA_FIFO(chip->locality),
+                                     &(buf[size]), burstcnt);
                if (rc == 0)
                        size += burstcnt;
        }
@@ -438,60 +356,58 @@ static int recv_data(struct tpm_chip *chip, u8 *buf, size_t count)
        return size;
 }
 
-static int tpm_tis_i2c_recv(struct tpm_chip *chip, u8 *buf, size_t count)
+static int tpm_tis_i2c_recv(struct udevice *dev, u8 *buf, size_t count)
 {
+       struct tpm_chip *chip = dev_get_priv(dev);
        int size = 0;
        int expected, status;
+       int rc;
 
-       if (count < TPM_HEADER_SIZE) {
-               size = -EIO;
-               goto out;
-       }
+       status = tpm_tis_i2c_status(dev);
+       if (status == TPM_STS_COMMAND_READY)
+               return -EINTR;
+       if ((status & (TPM_STS_DATA_AVAIL | TPM_STS_VALID)) !=
+           (TPM_STS_DATA_AVAIL | TPM_STS_VALID))
+               return -EAGAIN;
+
+       debug("...got it;\n");
 
        /* Read first 10 bytes, including tag, paramsize, and result */
-       size = recv_data(chip, buf, TPM_HEADER_SIZE);
+       size = tpm_tis_i2c_recv_data(dev, buf, TPM_HEADER_SIZE);
        if (size < TPM_HEADER_SIZE) {
-               error("Unable to read header\n");
-               goto out;
+               debug("Unable to read header\n");
+               return size < 0 ? size : -EIO;
        }
 
        expected = get_unaligned_be32(buf + TPM_RSP_SIZE_BYTE);
        if ((size_t)expected > count) {
-               error("Error size=%x, expected=%x, count=%x\n", size, expected,
+               debug("Error size=%x, expected=%x, count=%x\n", size, expected,
                      count);
-               size = -EIO;
-               goto out;
+               return -ENOSPC;
        }
 
-       size += recv_data(chip, &buf[TPM_HEADER_SIZE],
-                       expected - TPM_HEADER_SIZE);
+       size += tpm_tis_i2c_recv_data(dev, &buf[TPM_HEADER_SIZE],
+                                     expected - TPM_HEADER_SIZE);
        if (size < expected) {
-               error("Unable to read remainder of result\n");
-               size = -ETIME;
-               goto out;
+               debug("Unable to read remainder of result\n");
+               return -ETIMEDOUT;
        }
 
-       wait_for_stat(chip, TPM_STS_VALID, chip->vendor.timeout_c, &status);
+       rc = tpm_tis_i2c_wait_for_stat(dev, TPM_STS_VALID, chip->timeout_c,
+                                      &status);
+       if (rc)
+               return rc;
        if (status & TPM_STS_DATA_AVAIL) {  /* Retry? */
-               error("Error left over data\n");
-               size = -EIO;
-               goto out;
+               debug("Error left over data\n");
+               return -EIO;
        }
 
-out:
-       tpm_tis_i2c_ready(chip);
-       /*
-        * The TPM needs some time to clean up here,
-        * so we sleep rather than keeping the bus busy
-        */
-       udelay(2000);
-       release_locality(chip, chip->vendor.locality, 0);
-
        return size;
 }
 
-static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t len)
+static int tpm_tis_i2c_send(struct udevice *dev, const u8 *buf, size_t len)
 {
+       struct tpm_chip *chip = dev_get_priv(dev);
        int rc, status;
        size_t burstcnt;
        size_t count = 0;
@@ -502,20 +418,21 @@ static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t len)
        if (len > TPM_DEV_BUFSIZE)
                return -E2BIG;  /* Command is too long for our tpm, sorry */
 
-       if (request_locality(chip, 0) < 0)
+       if (tpm_tis_i2c_request_locality(dev, 0) < 0)
                return -EBUSY;
 
-       status = tpm_tis_i2c_status(chip);
+       status = tpm_tis_i2c_status(dev);
        if ((status & TPM_STS_COMMAND_READY) == 0) {
-               tpm_tis_i2c_ready(chip);
-               if (wait_for_stat(chip, TPM_STS_COMMAND_READY,
-                                 chip->vendor.timeout_b, &status) < 0) {
-                       rc = -ETIME;
-                       goto out_err;
-               }
+               rc = tpm_tis_i2c_ready(dev);
+               if (rc)
+                       return rc;
+               rc = tpm_tis_i2c_wait_for_stat(dev, TPM_STS_COMMAND_READY,
+                                              chip->timeout_b, &status);
+               if (rc)
+                       return rc;
        }
 
-       burstcnt = get_burstcount(chip);
+       burstcnt = tpm_tis_i2c_get_burstcount(dev);
 
        /* burstcount < 0 -> tpm is busy */
        if (burstcnt < 0)
@@ -527,107 +444,79 @@ static int tpm_tis_i2c_send(struct tpm_chip *chip, u8 *buf, size_t len)
                        burstcnt = len - count;
 
 #ifdef CONFIG_TPM_TIS_I2C_BURST_LIMITATION
-               if (retry && burstcnt > CONFIG_TPM_TIS_I2C_BURST_LIMITATION)
-                       burstcnt = CONFIG_TPM_TIS_I2C_BURST_LIMITATION;
+               if (retry && burstcnt > CONFIG_TPM_TIS_I2C_BURST_LIMITATION_LEN)
+                       burstcnt = CONFIG_TPM_TIS_I2C_BURST_LIMITATION_LEN;
 #endif /* CONFIG_TPM_TIS_I2C_BURST_LIMITATION */
 
-               rc = iic_tpm_write(TPM_DATA_FIFO(chip->vendor.locality),
-                               &(buf[count]), burstcnt);
+               rc = tpm_tis_i2c_write(dev, TPM_DATA_FIFO(chip->locality),
+                                      &(buf[count]), burstcnt);
                if (rc == 0)
                        count += burstcnt;
                else {
                        debug("%s: error\n", __func__);
-                       if (retry++ > 10) {
-                               rc = -EIO;
-                               goto out_err;
-                       }
-                       rc = wait_for_stat(chip, TPM_STS_VALID,
-                                          chip->vendor.timeout_c, &status);
+                       if (retry++ > 10)
+                               return -EIO;
+                       rc = tpm_tis_i2c_wait_for_stat(dev, TPM_STS_VALID,
+                                                      chip->timeout_c,
+                                                      &status);
                        if (rc)
-                               goto out_err;
+                               return rc;
 
-                       if ((status & TPM_STS_DATA_EXPECT) == 0) {
-                               rc = -EIO;
-                               goto out_err;
-                       }
+                       if ((status & TPM_STS_DATA_EXPECT) == 0)
+                               return -EIO;
                }
        }
 
        /* Go and do it */
-       iic_tpm_write(TPM_STS(chip->vendor.locality), &sts, 1);
-       debug("done\n");
+       rc = tpm_tis_i2c_write(dev, TPM_STS(chip->locality), &sts, 1);
+       if (rc < 0)
+               return rc;
+       debug("%s: done, rc=%d\n", __func__, rc);
 
        return len;
+}
+
+static int tpm_tis_i2c_cleanup(struct udevice *dev)
+{
+       struct tpm_chip *chip = dev_get_priv(dev);
 
-out_err:
-       debug("%s: out_err\n", __func__);
-       tpm_tis_i2c_ready(chip);
+       tpm_tis_i2c_ready(dev);
        /*
         * The TPM needs some time to clean up here,
         * so we sleep rather than keeping the bus busy
         */
-       udelay(2000);
-       release_locality(chip, chip->vendor.locality, 0);
-
-       return rc;
-}
+       mdelay(2);
+       tpm_tis_i2c_release_locality(dev, chip->locality, 0);
 
-static struct tpm_vendor_specific tpm_tis_i2c = {
-       .status = tpm_tis_i2c_status,
-       .recv = tpm_tis_i2c_recv,
-       .send = tpm_tis_i2c_send,
-       .cancel = tpm_tis_i2c_ready,
-       .req_complete_mask = TPM_STS_DATA_AVAIL | TPM_STS_VALID,
-       .req_complete_val = TPM_STS_DATA_AVAIL | TPM_STS_VALID,
-       .req_canceled = TPM_STS_COMMAND_READY,
-};
-
-
-static enum i2c_chip_type tpm_vendor_chip_type(void)
-{
-#if CONFIG_IS_ENABLED(OF_CONTROL)
-       const void *blob = gd->fdt_blob;
-
-       if (fdtdec_next_compatible(blob, 0, COMPAT_INFINEON_SLB9645_TPM) >= 0)
-               return SLB9645;
-
-       if (fdtdec_next_compatible(blob, 0, COMPAT_INFINEON_SLB9635_TPM) >= 0)
-               return SLB9635;
-#endif
-       return UNKNOWN;
+       return 0;
 }
 
-static int tpm_vendor_init_common(void)
+static int tpm_tis_i2c_init(struct udevice *dev)
 {
-       struct tpm_chip *chip;
+       struct tpm_chip *chip = dev_get_priv(dev);
        u32 vendor;
        u32 expected_did_vid;
+       int rc;
 
-       tpm_dev.chip_type = tpm_vendor_chip_type();
-
-       chip = tpm_register_hardware(&tpm_tis_i2c);
-       if (chip < 0)
-               return -ENODEV;
-
-       /* Disable interrupts (not supported) */
-       chip->vendor.irq = 0;
+       chip->is_open = 1;
 
-       /* Default timeouts */
-       chip->vendor.timeout_a = TIS_SHORT_TIMEOUT;
-       chip->vendor.timeout_b = TIS_LONG_TIMEOUT;
-       chip->vendor.timeout_c = TIS_SHORT_TIMEOUT;
-       chip->vendor.timeout_d = TIS_SHORT_TIMEOUT;
+       /* Default timeouts - these could move to the device tree */
+       chip->timeout_a = TIS_SHORT_TIMEOUT_MS;
+       chip->timeout_b = TIS_LONG_TIMEOUT_MS;
+       chip->timeout_c = TIS_SHORT_TIMEOUT_MS;
+       chip->timeout_d = TIS_SHORT_TIMEOUT_MS;
 
-       if (request_locality(chip, 0) < 0)
-               return  -ENODEV;
+       rc = tpm_tis_i2c_request_locality(dev, 0);
+       if (rc < 0)
+               return rc;
 
        /* Read four bytes from DID_VID register */
-       if (iic_tpm_read(TPM_DID_VID(0), (uchar *)&vendor, 4) < 0) {
-               release_locality(chip, 0, 1);
+       if (tpm_tis_i2c_read(dev, TPM_DID_VID(0), (uchar *)&vendor, 4) < 0) {
+               tpm_tis_i2c_release_locality(dev, 0, 1);
                return -EIO;
        }
 
-       if (tpm_dev.chip_type == SLB9635) {
+       if (chip->chip_type == SLB9635) {
                vendor = be32_to_cpu(vendor);
                expected_did_vid = TPM_TIS_I2C_DID_VID_9635;
        } else {
@@ -635,13 +524,14 @@ static int tpm_vendor_init_common(void)
                expected_did_vid = TPM_TIS_I2C_DID_VID_9645;
        }
 
-       if (tpm_dev.chip_type != UNKNOWN && vendor != expected_did_vid) {
+       if (chip->chip_type != UNKNOWN && vendor != expected_did_vid) {
                error("Vendor id did not match! ID was %08x\n", vendor);
                return -ENODEV;
        }
 
+       chip->vend_dev = vendor;
        debug("1.2 TPM (chip type %s device-id 0x%X)\n",
-             chip_name[tpm_dev.chip_type], vendor >> 16);
+             chip_name[chip->chip_type], vendor >> 16);
 
        /*
         * A timeout query to TPM can be placed here.
@@ -651,33 +541,83 @@ static int tpm_vendor_init_common(void)
        return 0;
 }
 
-#ifdef CONFIG_DM_I2C
-/* Initialisation of i2c tpm */
-int tpm_vendor_init_dev(struct udevice *dev)
+static int tpm_tis_i2c_open(struct udevice *dev)
 {
-       tpm_dev.dev = dev;
-       return tpm_vendor_init_common();
+       struct tpm_chip *chip = dev_get_priv(dev);
+       int rc;
+
+       debug("%s: start\n", __func__);
+       if (chip->is_open)
+               return -EBUSY;
+       rc = tpm_tis_i2c_init(dev);
+       if (rc < 0)
+               chip->is_open = 0;
+
+       return rc;
 }
-#else
-/* Initialisation of i2c tpm */
-int tpm_vendor_init(uint32_t dev_addr)
+
+static int tpm_tis_i2c_close(struct udevice *dev)
 {
-       uint old_addr;
-       int rc = 0;
+       struct tpm_chip *chip = dev_get_priv(dev);
 
-       old_addr = tpm_dev.addr;
-       if (dev_addr != 0)
-               tpm_dev.addr = dev_addr;
+       if (chip->is_open) {
+               tpm_tis_i2c_release_locality(dev, chip->locality, 1);
+               chip->is_open = 0;
+               chip->vend_dev = 0;
+       }
 
-       rc = tpm_vendor_init_common();
-       if (rc)
-               tpm_dev.addr = old_addr;
+       return 0;
+}
 
-       return rc;
+static int tpm_tis_get_desc(struct udevice *dev, char *buf, int size)
+{
+       struct tpm_chip *chip = dev_get_priv(dev);
+
+       if (size < 50)
+               return -ENOSPC;
+
+       return snprintf(buf, size, "1.2 TPM (%s, chip type %s device-id 0x%x)",
+                       chip->is_open ? "open" : "closed",
+                       chip_name[chip->chip_type],
+                       chip->vend_dev >> 16);
 }
-#endif
 
-void tpm_vendor_cleanup(struct tpm_chip *chip)
+static int tpm_tis_i2c_probe(struct udevice *dev)
 {
-       release_locality(chip, chip->vendor.locality, 1);
+       struct tpm_chip_priv *uc_priv = dev_get_uclass_priv(dev);
+       struct tpm_chip *chip = dev_get_priv(dev);
+
+       chip->chip_type = dev_get_driver_data(dev);
+
+       /* TODO: These need to be checked and tuned */
+       uc_priv->duration_ms[TPM_SHORT] = TIS_SHORT_TIMEOUT_MS;
+       uc_priv->duration_ms[TPM_MEDIUM] = TIS_LONG_TIMEOUT_MS;
+       uc_priv->duration_ms[TPM_LONG] = TIS_LONG_TIMEOUT_MS;
+       uc_priv->retry_time_ms = TPM_TIMEOUT_MS;
+
+       return 0;
 }
+
+static const struct tpm_ops tpm_tis_i2c_ops = {
+       .open           = tpm_tis_i2c_open,
+       .close          = tpm_tis_i2c_close,
+       .get_desc       = tpm_tis_get_desc,
+       .send           = tpm_tis_i2c_send,
+       .recv           = tpm_tis_i2c_recv,
+       .cleanup        = tpm_tis_i2c_cleanup,
+};
+
+static const struct udevice_id tpm_tis_i2c_ids[] = {
+       { .compatible = "infineon,slb9635tt", .data = SLB9635 },
+       { .compatible = "infineon,slb9645tt", .data = SLB9645 },
+       { }
+};
+
+U_BOOT_DRIVER(tpm_tis_i2c) = {
+       .name   = "tpm_tis_i2c",
+       .id     = UCLASS_TPM,
+       .of_match = tpm_tis_i2c_ids,
+       .ops    = &tpm_tis_i2c_ops,
+       .probe  = tpm_tis_i2c_probe,
+       .priv_auto_alloc_size = sizeof(struct tpm_chip),
+};
diff --git a/drivers/tpm/tpm_tis_i2c.h b/drivers/tpm/tpm_tis_i2c.h
new file mode 100644 (file)
index 0000000..3b510d1
--- /dev/null
@@ -0,0 +1,146 @@
+/*
+ * Copyright (C) 2011 Infineon Technologies
+ *
+ * Authors:
+ * Peter Huewe <huewe.external@infineon.com>
+ *
+ * Version: 2.1.1
+ *
+ * Description:
+ * Device driver for TCG/TCPA TPM (trusted platform module).
+ * Specifications at www.trustedcomputinggroup.org
+ *
+ * It is based on the Linux kernel driver tpm.c from Leendert van
+ * Dorn, Dave Safford, Reiner Sailer, and Kyleen Hall.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _TPM_TIS_I2C_H
+#define _TPM_TIS_I2C_H
+
+#include <linux/compiler.h>
+#include <linux/types.h>
+
+enum tpm_timeout {
+       TPM_TIMEOUT_MS                  = 5,
+       TIS_SHORT_TIMEOUT_MS            = 750,
+       TIS_LONG_TIMEOUT_MS             = 2000,
+       SLEEP_DURATION_US               = 60,
+       SLEEP_DURATION_LONG_US          = 210,
+};
+
+/* Size of external transmit buffer (used in tpm_transmit)*/
+#define TPM_BUFSIZE 4096
+
+/* Index of Count field in TPM response buffer */
+#define TPM_RSP_SIZE_BYTE      2
+#define TPM_RSP_RC_BYTE                6
+
+enum i2c_chip_type {
+       SLB9635,
+       SLB9645,
+       UNKNOWN,
+};
+
+struct tpm_chip {
+       int is_open;
+       int locality;
+       u32 vend_dev;
+       unsigned long timeout_a, timeout_b, timeout_c, timeout_d;  /* msec */
+       enum i2c_chip_type chip_type;
+};
+
+struct tpm_input_header {
+       __be16 tag;
+       __be32 length;
+       __be32 ordinal;
+} __packed;
+
+struct tpm_output_header {
+       __be16 tag;
+       __be32 length;
+       __be32 return_code;
+} __packed;
+
+struct timeout_t {
+       __be32 a;
+       __be32 b;
+       __be32 c;
+       __be32 d;
+} __packed;
+
+struct duration_t {
+       __be32 tpm_short;
+       __be32 tpm_medium;
+       __be32 tpm_long;
+} __packed;
+
+union cap_t {
+       struct timeout_t timeout;
+       struct duration_t duration;
+};
+
+struct tpm_getcap_params_in {
+       __be32 cap;
+       __be32 subcap_size;
+       __be32 subcap;
+} __packed;
+
+struct tpm_getcap_params_out {
+       __be32 cap_size;
+       union cap_t cap;
+} __packed;
+
+union tpm_cmd_header {
+       struct tpm_input_header in;
+       struct tpm_output_header out;
+};
+
+union tpm_cmd_params {
+       struct tpm_getcap_params_out getcap_out;
+       struct tpm_getcap_params_in getcap_in;
+};
+
+struct tpm_cmd_t {
+       union tpm_cmd_header header;
+       union tpm_cmd_params params;
+} __packed;
+
+/* Max number of iterations after i2c NAK */
+#define MAX_COUNT              3
+
+/*
+ * Max number of iterations after i2c NAK for 'long' commands
+ *
+ * We need this especially for sending TPM_READY, since the cleanup after the
+ * transtion to the ready state may take some time, but it is unpredictable
+ * how long it will take.
+ */
+#define MAX_COUNT_LONG         50
+
+enum tis_access {
+       TPM_ACCESS_VALID                = 0x80,
+       TPM_ACCESS_ACTIVE_LOCALITY      = 0x20,
+       TPM_ACCESS_REQUEST_PENDING      = 0x04,
+       TPM_ACCESS_REQUEST_USE          = 0x02,
+};
+
+enum tis_status {
+       TPM_STS_VALID                   = 0x80,
+       TPM_STS_COMMAND_READY           = 0x40,
+       TPM_STS_GO                      = 0x20,
+       TPM_STS_DATA_AVAIL              = 0x10,
+       TPM_STS_DATA_EXPECT             = 0x08,
+};
+
+/* expected value for DIDVID register */
+#define TPM_TIS_I2C_DID_VID_9635 0x000b15d1L
+#define TPM_TIS_I2C_DID_VID_9645 0x001a15d1L
+
+#define        TPM_ACCESS(l)                   (0x0000 | ((l) << 4))
+#define        TPM_STS(l)                      (0x0001 | ((l) << 4))
+#define        TPM_DATA_FIFO(l)                (0x0005 | ((l) << 4))
+#define        TPM_DID_VID(l)                  (0x0006 | ((l) << 4))
+
+#endif
index d09f8cee05b0940ea32c7707e5aeb4a1e6d2e90e..b41c3cec37525f313797e45b6096bc221dc36cc8 100644 (file)
  */
 
 #include <common.h>
-#include <asm/io.h>
+#include <dm.h>
+#include <mapmem.h>
+#include <tis.h>
 #include <tpm.h>
+#include <asm/io.h>
 
 #define PREFIX "lpc_tpm: "
 
@@ -36,13 +39,15 @@ struct tpm_locality {
        u8 padding4[251];
 };
 
+struct tpm_tis_lpc_priv {
+       struct tpm_locality *regs;
+};
+
 /*
  * This pointer refers to the TPM chip, 5 of its localities are mapped as an
  * array.
  */
 #define TPM_TOTAL_LOCALITIES   5
-static struct tpm_locality *lpc_tpm_dev =
-       (struct tpm_locality *)CONFIG_TPM_TIS_BASE_ADDRESS;
 
 /* Some registers' bit field definitions */
 #define TIS_STS_VALID                  (1 << 7) /* 0x80 */
@@ -63,85 +68,45 @@ static struct tpm_locality *lpc_tpm_dev =
 #define TIS_STS_BURST_COUNT_MASK       (0xffff)
 #define TIS_STS_BURST_COUNT_SHIFT      (8)
 
-/*
- * Error value returned if a tpm register does not enter the expected state
- * after continuous polling. No actual TPM register reading ever returns -1,
- * so this value is a safe error indication to be mixed with possible status
- * register values.
- */
-#define TPM_TIMEOUT_ERR                        (-1)
-
-/* Error value returned on various TPM driver errors. */
-#define TPM_DRIVER_ERR         (1)
-
  /* 1 second is plenty for anything TPM does. */
 #define MAX_DELAY_US   (1000 * 1000)
 
 /* Retrieve burst count value out of the status register contents. */
 static u16 burst_count(u32 status)
 {
-       return (status >> TIS_STS_BURST_COUNT_SHIFT) & TIS_STS_BURST_COUNT_MASK;
+       return (status >> TIS_STS_BURST_COUNT_SHIFT) &
+                       TIS_STS_BURST_COUNT_MASK;
 }
 
-/*
- * Structures defined below allow creating descriptions of TPM vendor/device
- * ID information for run time discovery. The only device the system knows
- * about at this time is Infineon slb9635.
- */
-struct device_name {
-       u16 dev_id;
-       const char * const dev_name;
-};
-
-struct vendor_name {
-       u16 vendor_id;
-       const char *vendor_name;
-       const struct device_name *dev_names;
-};
-
-static const struct device_name infineon_devices[] = {
-       {0xb, "SLB9635 TT 1.2"},
-       {0}
-};
-
-static const struct vendor_name vendor_names[] = {
-       {0x15d1, "Infineon", infineon_devices},
-};
-
-/*
- * Cached vendor/device ID pair to indicate that the device has been already
- * discovered.
- */
-static u32 vendor_dev_id;
-
 /* TPM access wrappers to support tracing */
-static u8 tpm_read_byte(const u8 *ptr)
+static u8 tpm_read_byte(struct tpm_tis_lpc_priv *priv, const u8 *ptr)
 {
        u8  ret = readb(ptr);
        debug(PREFIX "Read reg 0x%4.4x returns 0x%2.2x\n",
-             (u32)(uintptr_t)ptr - (u32)(uintptr_t)lpc_tpm_dev, ret);
+             (u32)(uintptr_t)ptr - (u32)(uintptr_t)priv->regs, ret);
        return ret;
 }
 
-static u32 tpm_read_word(const u32 *ptr)
+static u32 tpm_read_word(struct tpm_tis_lpc_priv *priv, const u32 *ptr)
 {
        u32  ret = readl(ptr);
        debug(PREFIX "Read reg 0x%4.4x returns 0x%8.8x\n",
-             (u32)(uintptr_t)ptr - (u32)(uintptr_t)lpc_tpm_dev, ret);
+             (u32)(uintptr_t)ptr - (u32)(uintptr_t)priv->regs, ret);
        return ret;
 }
 
-static void tpm_write_byte(u8 value, u8 *ptr)
+static void tpm_write_byte(struct tpm_tis_lpc_priv *priv, u8 value, u8 *ptr)
 {
        debug(PREFIX "Write reg 0x%4.4x with 0x%2.2x\n",
-             (u32)(uintptr_t)ptr - (u32)(uintptr_t)lpc_tpm_dev, value);
+             (u32)(uintptr_t)ptr - (u32)(uintptr_t)priv->regs, value);
        writeb(value, ptr);
 }
 
-static void tpm_write_word(u32 value, u32 *ptr)
+static void tpm_write_word(struct tpm_tis_lpc_priv *priv, u32 value,
+                          u32 *ptr)
 {
        debug(PREFIX "Write reg 0x%4.4x with 0x%8.8x\n",
-             (u32)(uintptr_t)ptr - (u32)(uintptr_t)lpc_tpm_dev, value);
+             (u32)(uintptr_t)ptr - (u32)(uintptr_t)priv->regs, value);
        writel(value, ptr);
 }
 
@@ -156,67 +121,51 @@ static void tpm_write_word(u32 value, u32 *ptr)
  * @expected - value the field(s) are supposed to be set to
  *
  * Returns the register contents in case the expected value was found in the
- * appropriate register bits, or TPM_TIMEOUT_ERR on timeout.
+ * appropriate register bits, or -ETIMEDOUT on timeout.
  */
-static u32 tis_wait_reg(u32 *reg, u8 mask, u8 expected)
+static int tis_wait_reg(struct tpm_tis_lpc_priv *priv, u32 *reg, u8 mask,
+                       u8 expected)
 {
        u32 time_us = MAX_DELAY_US;
 
        while (time_us > 0) {
-               u32 value = tpm_read_word(reg);
+               u32 value = tpm_read_word(priv, reg);
                if ((value & mask) == expected)
                        return value;
                udelay(1); /* 1 us */
                time_us--;
        }
-       return TPM_TIMEOUT_ERR;
+
+       return -ETIMEDOUT;
 }
 
 /*
  * Probe the TPM device and try determining its manufacturer/device name.
  *
- * Returns 0 on success (the device is found or was found during an earlier
- * invocation) or TPM_DRIVER_ERR if the device is not found.
+ * Returns 0 on success, -ve on error
  */
-int tis_init(void)
+static int tpm_tis_lpc_probe(struct udevice *dev)
 {
-       u32 didvid = tpm_read_word(&lpc_tpm_dev[0].did_vid);
-       int i;
-       const char *device_name = "unknown";
-       const char *vendor_name = device_name;
-       u16 vid, did;
-
-       if (vendor_dev_id)
-               return 0;  /* Already probed. */
-
-       if (!didvid || (didvid == 0xffffffff)) {
-               printf("%s: No TPM device found\n", __func__);
-               return TPM_DRIVER_ERR;
-       }
+       struct tpm_tis_lpc_priv *priv = dev_get_priv(dev);
+       u32 vid, did;
+       fdt_addr_t addr;
+       u32 didvid;
 
-       vendor_dev_id = didvid;
+       addr = dev_get_addr(dev);
+       if (addr == FDT_ADDR_T_NONE)
+               return -EINVAL;
+       priv->regs = map_sysmem(addr, 0);
+       didvid = tpm_read_word(priv, &priv->regs[0].did_vid);
 
        vid = didvid & 0xffff;
        did = (didvid >> 16) & 0xffff;
-       for (i = 0; i < ARRAY_SIZE(vendor_names); i++) {
-               int j = 0;
-               u16 known_did;
-
-               if (vid == vendor_names[i].vendor_id)
-                       vendor_name = vendor_names[i].vendor_name;
-
-               while ((known_did = vendor_names[i].dev_names[j].dev_id) != 0) {
-                       if (known_did == did) {
-                               device_name =
-                                       vendor_names[i].dev_names[j].dev_name;
-                               break;
-                       }
-                       j++;
-               }
-               break;
+       if (vid != 0x15d1 || did != 0xb) {
+               debug("Invalid vendor/device ID %04x/%04x\n", vid, did);
+               return -ENOSYS;
        }
 
-       printf("Found TPM %s by %s\n", device_name, vendor_name);
+       debug("Found TPM %s by %s\n", "SLB9635 TT 1.2", "Infineon");
+
        return 0;
 }
 
@@ -228,23 +177,25 @@ int tis_init(void)
  * @data - address of the data to send, byte by byte
  * @len - length of the data to send
  *
- * Returns 0 on success, TPM_DRIVER_ERR on error (in case the device does
- * not accept the entire command).
+ * Returns 0 on success, -ve on error (in case the device does not accept
+ * the entire command).
  */
-static u32 tis_senddata(const u8 * const data, u32 len)
+static int tis_senddata(struct udevice *dev, const u8 *data, size_t len)
 {
+       struct tpm_tis_lpc_priv *priv = dev_get_priv(dev);
+       struct tpm_locality *regs = priv->regs;
        u32 offset = 0;
        u16 burst = 0;
        u32 max_cycles = 0;
        u8 locality = 0;
        u32 value;
 
-       value = tis_wait_reg(&lpc_tpm_dev[locality].tpm_status,
+       value = tis_wait_reg(priv, &regs[locality].tpm_status,
                             TIS_STS_COMMAND_READY, TIS_STS_COMMAND_READY);
-       if (value == TPM_TIMEOUT_ERR) {
+       if (value == -ETIMEDOUT) {
                printf("%s:%d - failed to get 'command_ready' status\n",
                       __FILE__, __LINE__);
-               return TPM_DRIVER_ERR;
+               return value;
        }
        burst = burst_count(value);
 
@@ -256,11 +207,11 @@ static u32 tis_senddata(const u8 * const data, u32 len)
                        if (max_cycles++ == MAX_DELAY_US) {
                                printf("%s:%d failed to feed %d bytes of %d\n",
                                       __FILE__, __LINE__, len - offset, len);
-                               return TPM_DRIVER_ERR;
+                               return -ETIMEDOUT;
                        }
                        udelay(1);
-                       burst = burst_count(tpm_read_word(&lpc_tpm_dev
-                                                    [locality].tpm_status));
+                       burst = burst_count(tpm_read_word(priv,
+                                       &regs[locality].tpm_status));
                }
 
                max_cycles = 0;
@@ -276,16 +227,16 @@ static u32 tis_senddata(const u8 * const data, u32 len)
                 */
                count = min((u32)burst, len - offset - 1);
                while (count--)
-                       tpm_write_byte(data[offset++],
-                                 &lpc_tpm_dev[locality].data);
+                       tpm_write_byte(priv, data[offset++],
+                                      &regs[locality].data);
 
-               value = tis_wait_reg(&lpc_tpm_dev[locality].tpm_status,
+               value = tis_wait_reg(priv, &regs[locality].tpm_status,
                                     TIS_STS_VALID, TIS_STS_VALID);
 
-               if ((value == TPM_TIMEOUT_ERR) || !(value & TIS_STS_EXPECT)) {
+               if ((value == -ETIMEDOUT) || !(value & TIS_STS_EXPECT)) {
                        printf("%s:%d TPM command feed overflow\n",
                               __FILE__, __LINE__);
-                       return TPM_DRIVER_ERR;
+                       return value == -ETIMEDOUT ? value : -EIO;
                }
 
                burst = burst_count(value);
@@ -300,21 +251,21 @@ static u32 tis_senddata(const u8 * const data, u32 len)
        }
 
        /* Send the last byte. */
-       tpm_write_byte(data[offset++], &lpc_tpm_dev[locality].data);
+       tpm_write_byte(priv, data[offset++], &regs[locality].data);
        /*
         * Verify that TPM does not expect any more data as part of this
         * command.
         */
-       value = tis_wait_reg(&lpc_tpm_dev[locality].tpm_status,
+       value = tis_wait_reg(priv, &regs[locality].tpm_status,
                             TIS_STS_VALID, TIS_STS_VALID);
-       if ((value == TPM_TIMEOUT_ERR) || (value & TIS_STS_EXPECT)) {
+       if ((value == -ETIMEDOUT) || (value & TIS_STS_EXPECT)) {
                printf("%s:%d unexpected TPM status 0x%x\n",
                       __FILE__, __LINE__, value);
-               return TPM_DRIVER_ERR;
+               return value == -ETIMEDOUT ? value : -EIO;
        }
 
        /* OK, sitting pretty, let's start the command execution. */
-       tpm_write_word(TIS_STS_TPM_GO, &lpc_tpm_dev[locality].tpm_status);
+       tpm_write_word(priv, TIS_STS_TPM_GO, &regs[locality].tpm_status);
        return 0;
 }
 
@@ -328,25 +279,27 @@ static u32 tis_senddata(const u8 * const data, u32 len)
  *
  * On success stores the number of received bytes to len and returns 0. On
  * errors (misformatted TPM data or synchronization problems) returns
- * TPM_DRIVER_ERR.
+ * -ve value.
  */
-static u32 tis_readresponse(u8 *buffer, u32 *len)
+static int tis_readresponse(struct udevice *dev, u8 *buffer, size_t len)
 {
+       struct tpm_tis_lpc_priv *priv = dev_get_priv(dev);
+       struct tpm_locality *regs = priv->regs;
        u16 burst;
        u32 value;
        u32 offset = 0;
        u8 locality = 0;
        const u32 has_data = TIS_STS_DATA_AVAILABLE | TIS_STS_VALID;
-       u32 expected_count = *len;
+       u32 expected_count = len;
        int max_cycles = 0;
 
        /* Wait for the TPM to process the command. */
-       value = tis_wait_reg(&lpc_tpm_dev[locality].tpm_status,
+       value = tis_wait_reg(priv, &regs[locality].tpm_status,
                              has_data, has_data);
-       if (value == TPM_TIMEOUT_ERR) {
+       if (value == -ETIMEDOUT) {
                printf("%s:%d failed processing command\n",
                       __FILE__, __LINE__);
-               return TPM_DRIVER_ERR;
+               return value;
        }
 
        do {
@@ -354,18 +307,17 @@ static u32 tis_readresponse(u8 *buffer, u32 *len)
                        if (max_cycles++ == MAX_DELAY_US) {
                                printf("%s:%d TPM stuck on read\n",
                                       __FILE__, __LINE__);
-                               return TPM_DRIVER_ERR;
+                               return -EIO;
                        }
                        udelay(1);
-                       value = tpm_read_word(&lpc_tpm_dev
-                                             [locality].tpm_status);
+                       value = tpm_read_word(priv, &regs[locality].tpm_status);
                }
 
                max_cycles = 0;
 
                while (burst-- && (offset < expected_count)) {
-                       buffer[offset++] = tpm_read_byte(&lpc_tpm_dev
-                                                        [locality].data);
+                       buffer[offset++] = tpm_read_byte(priv,
+                                               &regs[locality].data);
 
                        if (offset == 6) {
                                /*
@@ -382,22 +334,22 @@ static u32 tis_readresponse(u8 *buffer, u32 *len)
                                expected_count = be32_to_cpu(real_length);
 
                                if ((expected_count < offset) ||
-                                   (expected_count > *len)) {
+                                   (expected_count > len)) {
                                        printf("%s:%d bad response size %d\n",
                                               __FILE__, __LINE__,
                                               expected_count);
-                                       return TPM_DRIVER_ERR;
+                                       return -ENOSPC;
                                }
                        }
                }
 
                /* Wait for the next portion. */
-               value = tis_wait_reg(&lpc_tpm_dev[locality].tpm_status,
+               value = tis_wait_reg(priv, &regs[locality].tpm_status,
                                     TIS_STS_VALID, TIS_STS_VALID);
-               if (value == TPM_TIMEOUT_ERR) {
+               if (value == -ETIMEDOUT) {
                        printf("%s:%d failed to read response\n",
                               __FILE__, __LINE__);
-                       return TPM_DRIVER_ERR;
+                       return value;
                }
 
                if (offset == expected_count)
@@ -412,68 +364,90 @@ static u32 tis_readresponse(u8 *buffer, u32 *len)
        if (value & TIS_STS_DATA_AVAILABLE) {
                printf("%s:%d wrong receive status %x\n",
                       __FILE__, __LINE__, value);
-               return TPM_DRIVER_ERR;
+               return -EBADMSG;
        }
 
        /* Tell the TPM that we are done. */
-       tpm_write_word(TIS_STS_COMMAND_READY, &lpc_tpm_dev
-                 [locality].tpm_status);
-       *len = offset;
-       return 0;
+       tpm_write_word(priv, TIS_STS_COMMAND_READY,
+                      &regs[locality].tpm_status);
+
+       return offset;
 }
 
-int tis_open(void)
+static int tpm_tis_lpc_open(struct udevice *dev)
 {
+       struct tpm_tis_lpc_priv *priv = dev_get_priv(dev);
+       struct tpm_locality *regs = priv->regs;
        u8 locality = 0; /* we use locality zero for everything. */
-
-       if (tis_close())
-               return TPM_DRIVER_ERR;
+       int ret;
 
        /* now request access to locality. */
-       tpm_write_word(TIS_ACCESS_REQUEST_USE, &lpc_tpm_dev[locality].access);
+       tpm_write_word(priv, TIS_ACCESS_REQUEST_USE, &regs[locality].access);
 
        /* did we get a lock? */
-       if (tis_wait_reg(&lpc_tpm_dev[locality].access,
+       ret = tis_wait_reg(priv, &regs[locality].access,
                         TIS_ACCESS_ACTIVE_LOCALITY,
-                        TIS_ACCESS_ACTIVE_LOCALITY) == TPM_TIMEOUT_ERR) {
+                        TIS_ACCESS_ACTIVE_LOCALITY);
+       if (ret == -ETIMEDOUT) {
                printf("%s:%d - failed to lock locality %d\n",
                       __FILE__, __LINE__, locality);
-               return TPM_DRIVER_ERR;
+               return ret;
        }
 
-       tpm_write_word(TIS_STS_COMMAND_READY,
-                      &lpc_tpm_dev[locality].tpm_status);
+       tpm_write_word(priv, TIS_STS_COMMAND_READY,
+                      &regs[locality].tpm_status);
        return 0;
 }
 
-int tis_close(void)
+static int tpm_tis_lpc_close(struct udevice *dev)
 {
+       struct tpm_tis_lpc_priv *priv = dev_get_priv(dev);
+       struct tpm_locality *regs = priv->regs;
        u8 locality = 0;
 
-       if (tpm_read_word(&lpc_tpm_dev[locality].access) &
+       if (tpm_read_word(priv, &regs[locality].access) &
            TIS_ACCESS_ACTIVE_LOCALITY) {
-               tpm_write_word(TIS_ACCESS_ACTIVE_LOCALITY,
-                              &lpc_tpm_dev[locality].access);
+               tpm_write_word(priv, TIS_ACCESS_ACTIVE_LOCALITY,
+                              &regs[locality].access);
 
-               if (tis_wait_reg(&lpc_tpm_dev[locality].access,
-                                TIS_ACCESS_ACTIVE_LOCALITY, 0) ==
-                   TPM_TIMEOUT_ERR) {
+               if (tis_wait_reg(priv, &regs[locality].access,
+                                TIS_ACCESS_ACTIVE_LOCALITY, 0) == -ETIMEDOUT) {
                        printf("%s:%d - failed to release locality %d\n",
                               __FILE__, __LINE__, locality);
-                       return TPM_DRIVER_ERR;
+                       return -ETIMEDOUT;
                }
        }
        return 0;
 }
 
-int tis_sendrecv(const u8 *sendbuf, size_t send_size,
-                u8 *recvbuf, size_t *recv_len)
+static int tpm_tis_get_desc(struct udevice *dev, char *buf, int size)
 {
-       if (tis_senddata(sendbuf, send_size)) {
-               printf("%s:%d failed sending data to TPM\n",
-                      __FILE__, __LINE__);
-               return TPM_DRIVER_ERR;
-       }
+       if (size < 50)
+               return -ENOSPC;
 
-       return tis_readresponse(recvbuf, (u32 *)recv_len);
+       return snprintf(buf, size, "1.2 TPM (vendor %s, chip %s)",
+                       "Infineon", "SLB9635 TT 1.2");
 }
+
+
+static const struct tpm_ops tpm_tis_lpc_ops = {
+       .open           = tpm_tis_lpc_open,
+       .close          = tpm_tis_lpc_close,
+       .get_desc       = tpm_tis_get_desc,
+       .send           = tis_senddata,
+       .recv           = tis_readresponse,
+};
+
+static const struct udevice_id tpm_tis_lpc_ids[] = {
+       { .compatible = "infineon,slb9635lpc" },
+       { }
+};
+
+U_BOOT_DRIVER(tpm_tis_lpc) = {
+       .name   = "tpm_tis_lpc",
+       .id     = UCLASS_TPM,
+       .of_match = tpm_tis_lpc_ids,
+       .ops    = &tpm_tis_lpc_ops,
+       .probe  = tpm_tis_lpc_probe,
+       .priv_auto_alloc_size = sizeof(struct tpm_tis_lpc_priv),
+};
index ed4b0391278307c77ffefcd6f7464b30527149d6..9ea98075b3071b8c594d75fe6b344114f2bad520 100644 (file)
@@ -5,6 +5,8 @@
  */
 
 #include <common.h>
+#include <dm.h>
+#include <tpm.h>
 #include <asm/state.h>
 #include <asm/unaligned.h>
 #include <linux/crc8.h>
@@ -56,7 +58,7 @@ enum {
  */
 static struct tpm_state {
        uint8_t nvdata[NV_SEQ_COUNT][NV_DATA_SIZE];
-} state;
+} g_state;
 
 /**
  * sandbox_tpm_read_state() - read the sandbox EC state from the state file
@@ -82,7 +84,7 @@ static int sandbox_tpm_read_state(const void *blob, int node)
                sprintf(prop_name, "nvdata%d", i);
                prop = fdt_getprop(blob, node, prop_name, &len);
                if (prop && len == NV_DATA_SIZE)
-                       memcpy(state.nvdata[i], prop, NV_DATA_SIZE);
+                       memcpy(g_state.nvdata[i], prop, NV_DATA_SIZE);
        }
 
        return 0;
@@ -110,7 +112,7 @@ static int sandbox_tpm_write_state(void *blob, int node)
                char prop_name[20];
 
                sprintf(prop_name, "nvdata%d", i);
-               fdt_setprop(blob, node, prop_name, state.nvdata[i],
+               fdt_setprop(blob, node, prop_name, g_state.nvdata[i],
                            NV_DATA_SIZE);
        }
 
@@ -135,10 +137,11 @@ static int index_to_seq(uint32_t index)
        return -1;
 }
 
-int tis_sendrecv(const u8 *sendbuf, size_t send_size,
-                u8 *recvbuf, size_t *recv_len)
+static int sandbox_tpm_xfer(struct udevice *dev, const uint8_t *sendbuf,
+                           size_t send_size, uint8_t *recvbuf,
+                           size_t *recv_len)
 {
-       struct tpm_state *tpm = &state;
+       struct tpm_state *tpm = dev_get_priv(dev);
        uint32_t code, index, length, type;
        uint8_t *data;
        int seq;
@@ -241,20 +244,50 @@ int tis_sendrecv(const u8 *sendbuf, size_t send_size,
        return 0;
 }
 
-int tis_open(void)
+static int sandbox_tpm_get_desc(struct udevice *dev, char *buf, int size)
 {
-       printf("%s\n", __func__);
+       if (size < 15)
+               return -ENOSPC;
+
+       return snprintf(buf, size, "sandbox TPM");
+}
+
+static int sandbox_tpm_probe(struct udevice *dev)
+{
+       struct tpm_state *tpm = dev_get_priv(dev);
+
+       memcpy(tpm, &g_state, sizeof(*tpm));
+
        return 0;
 }
 
-int tis_close(void)
+static int sandbox_tpm_open(struct udevice *dev)
 {
-       printf("%s\n", __func__);
        return 0;
 }
 
-int tis_init(void)
+static int sandbox_tpm_close(struct udevice *dev)
 {
-       printf("%s\n", __func__);
        return 0;
 }
+
+static const struct tpm_ops sandbox_tpm_ops = {
+       .open           = sandbox_tpm_open,
+       .close          = sandbox_tpm_close,
+       .get_desc       = sandbox_tpm_get_desc,
+       .xfer           = sandbox_tpm_xfer,
+};
+
+static const struct udevice_id sandbox_tpm_ids[] = {
+       { .compatible = "google,sandbox-tpm" },
+       { }
+};
+
+U_BOOT_DRIVER(sandbox_tpm) = {
+       .name   = "sandbox_tpm",
+       .id     = UCLASS_TPM,
+       .of_match = sandbox_tpm_ids,
+       .ops    = &sandbox_tpm_ops,
+       .probe  = sandbox_tpm_probe,
+       .priv_auto_alloc_size = sizeof(struct tpm_state),
+};
index 8a43e7c27d6fe263f1635206f30570ad92852ff8..ad083cf8ae4a28b4a6e56202f26dab0fcd56e592 100644 (file)
@@ -10,6 +10,7 @@
 #include <dm.h>
 #include <usb.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <linux/mii.h>
 #include "usb_ether.h"
 
index 94dfe85eff3aa8b89aa5b85163e742f46e35539c..cf4085d76572c986c268ce06f3ab97e8b30dab9b 100644 (file)
@@ -12,6 +12,7 @@
 #include <linux/mii.h>
 #include "usb_ether.h"
 #include <malloc.h>
+#include <memalign.h>
 #include <errno.h>
 
 /* ASIX AX88179 based USB 3.0 Ethernet Devices */
index c1b708600e891e553884ddbe4d91910ffe0be2b4..bbdad8b79ae49eace0e24acd36baa6928873b1ab 100644 (file)
@@ -14,6 +14,7 @@
 #include <errno.h>
 #include <linux/mii.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <usb.h>
 
 #include "usb_ether.h"
index 1dcd088b8dfc4772ff2d621774aa04767fc13eff..dc8fa8891be6b95200d95ca696215bd04e36bdd8 100644 (file)
@@ -11,6 +11,7 @@
 #include <dm.h>
 #include <errno.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <usb.h>
 #include <asm/unaligned.h>
 #include <linux/mii.h>
index 4c11a7e32677ab4d62aae367cd74f7aafa01b07b..6288ecf09f5316385b17ef2054b518277745a5c8 100644 (file)
@@ -10,6 +10,7 @@ obj-$(CONFIG_USB_ETHER) += epautoconf.o config.o usbstring.o
 
 # new USB gadget layer dependencies
 ifdef CONFIG_USB_GADGET
+obj-$(CONFIG_USB_GADGET_AT91) += at91_udc.o
 obj-$(CONFIG_USB_GADGET_ATMEL_USBA) += atmel_usba_udc.o
 obj-$(CONFIG_USB_GADGET_BCM_UDC_OTG_PHY) += bcm_udc_otg_phy.o
 obj-$(CONFIG_USB_GADGET_S3C_UDC_OTG) += s3c_udc_otg.o
diff --git a/drivers/usb/gadget/at91_udc.c b/drivers/usb/gadget/at91_udc.c
new file mode 100644 (file)
index 0000000..4070803
--- /dev/null
@@ -0,0 +1,1625 @@
+/*
+ * from linux:
+ * c94e289f195e: usb: gadget: remove incorrect __init/__exit annotations
+ *
+ * at91_udc -- driver for at91-series USB peripheral controller
+ *
+ * Copyright (C) 2004 by Thomas Rathbone
+ * Copyright (C) 2005 by HP Labs
+ * Copyright (C) 2005 by David Brownell
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#undef VERBOSE_DEBUG
+#undef PACKET_TRACE
+
+#include <common.h>
+#include <asm/errno.h>
+#include <asm/io.h>
+#include <asm/gpio.h>
+#include <asm/hardware.h>
+#include <mach/at91_matrix.h>
+#include <linux/list.h>
+#include <linux/usb/ch9.h>
+#include <linux/usb/gadget.h>
+#include <linux/usb/at91_udc.h>
+#include <malloc.h>
+#include <usb/lin_gadget_compat.h>
+
+#include "at91_udc.h"
+
+/*
+ * This controller is simple and PIO-only.  It's used in many AT91-series
+ * full speed USB controllers, including the at91rm9200 (arm920T, with MMU),
+ * at91sam926x (arm926ejs, with MMU), and several no-mmu versions.
+ *
+ * This driver expects the board has been wired with two GPIOs supporting
+ * a VBUS sensing IRQ, and a D+ pullup.  (They may be omitted, but the
+ * testing hasn't covered such cases.)
+ *
+ * The pullup is most important (so it's integrated on sam926x parts).  It
+ * provides software control over whether the host enumerates the device.
+ *
+ * The VBUS sensing helps during enumeration, and allows both USB clocks
+ * (and the transceiver) to stay gated off until they're necessary, saving
+ * power.  During USB suspend, the 48 MHz clock is gated off in hardware;
+ * it may also be gated off by software during some Linux sleep states.
+ */
+
+#define        DRIVER_VERSION  "3 May 2006"
+
+static const char driver_name [] = "at91_udc";
+static const char * const ep_names[] = {
+       "ep0",
+       "ep1",
+       "ep2",
+       "ep3-int",
+       "ep4",
+       "ep5",
+};
+#define ep0name                ep_names[0]
+
+#define at91_udp_read(udc, reg) \
+       __raw_readl((udc)->udp_baseaddr + (reg))
+#define at91_udp_write(udc, reg, val) \
+       __raw_writel((val), (udc)->udp_baseaddr + (reg))
+
+static struct at91_udc *controller;
+
+/*-------------------------------------------------------------------------*/
+
+static void done(struct at91_ep *ep, struct at91_request *req, int status)
+{
+       unsigned        stopped = ep->stopped;
+       struct at91_udc *udc = ep->udc;
+
+       list_del_init(&req->queue);
+       if (req->req.status == -EINPROGRESS)
+               req->req.status = status;
+       else
+               status = req->req.status;
+       if (status && status != -ESHUTDOWN)
+               VDBG("%s done %p, status %d\n", ep->ep.name, req, status);
+
+       ep->stopped = 1;
+       spin_unlock(&udc->lock);
+       req->req.complete(&ep->ep, &req->req);
+       spin_lock(&udc->lock);
+       ep->stopped = stopped;
+
+       /* ep0 is always ready; other endpoints need a non-empty queue */
+       if (list_empty(&ep->queue) && ep->int_mask != (1 << 0))
+               at91_udp_write(udc, AT91_UDP_IDR, ep->int_mask);
+}
+
+/*-------------------------------------------------------------------------*/
+
+/* bits indicating OUT fifo has data ready */
+#define        RX_DATA_READY   (AT91_UDP_RX_DATA_BK0 | AT91_UDP_RX_DATA_BK1)
+
+/*
+ * Endpoint FIFO CSR bits have a mix of bits, making it unsafe to just write
+ * back most of the value you just read (because of side effects, including
+ * bits that may change after reading and before writing).
+ *
+ * Except when changing a specific bit, always write values which:
+ *  - clear SET_FX bits (setting them could change something)
+ *  - set CLR_FX bits (clearing them could change something)
+ *
+ * There are also state bits like FORCESTALL, EPEDS, DIR, and EPTYPE
+ * that shouldn't normally be changed.
+ *
+ * NOTE at91sam9260 docs mention synch between UDPCK and MCK clock domains,
+ * implying a need to wait for one write to complete (test relevant bits)
+ * before starting the next write.  This shouldn't be an issue given how
+ * infrequently we write, except maybe for write-then-read idioms.
+ */
+#define        SET_FX  (AT91_UDP_TXPKTRDY)
+#define        CLR_FX  (RX_DATA_READY | AT91_UDP_RXSETUP \
+               | AT91_UDP_STALLSENT | AT91_UDP_TXCOMP)
+
+/* pull OUT packet data from the endpoint's fifo */
+static int read_fifo (struct at91_ep *ep, struct at91_request *req)
+{
+       u32 __iomem     *creg = ep->creg;
+       u8 __iomem      *dreg = ep->creg + (AT91_UDP_FDR(0) - AT91_UDP_CSR(0));
+       u32             csr;
+       u8              *buf;
+       unsigned int    count, bufferspace, is_done;
+
+       buf = req->req.buf + req->req.actual;
+       bufferspace = req->req.length - req->req.actual;
+
+       /*
+        * there might be nothing to read if ep_queue() calls us,
+        * or if we already emptied both pingpong buffers
+        */
+rescan:
+       csr = __raw_readl(creg);
+       if ((csr & RX_DATA_READY) == 0)
+               return 0;
+
+       count = (csr & AT91_UDP_RXBYTECNT) >> 16;
+       if (count > ep->ep.maxpacket)
+               count = ep->ep.maxpacket;
+       if (count > bufferspace) {
+               DBG("%s buffer overflow\n", ep->ep.name);
+               req->req.status = -EOVERFLOW;
+               count = bufferspace;
+       }
+       __raw_readsb((unsigned long)dreg, buf, count);
+
+       /* release and swap pingpong mem bank */
+       csr |= CLR_FX;
+       if (ep->is_pingpong) {
+               if (ep->fifo_bank == 0) {
+                       csr &= ~(SET_FX | AT91_UDP_RX_DATA_BK0);
+                       ep->fifo_bank = 1;
+               } else {
+                       csr &= ~(SET_FX | AT91_UDP_RX_DATA_BK1);
+                       ep->fifo_bank = 0;
+               }
+       } else
+               csr &= ~(SET_FX | AT91_UDP_RX_DATA_BK0);
+       __raw_writel(csr, creg);
+
+       req->req.actual += count;
+       is_done = (count < ep->ep.maxpacket);
+       if (count == bufferspace)
+               is_done = 1;
+
+       PACKET("%s %p out/%d%s\n", ep->ep.name, &req->req, count,
+                       is_done ? " (done)" : "");
+
+       /*
+        * avoid extra trips through IRQ logic for packets already in
+        * the fifo ... maybe preventing an extra (expensive) OUT-NAK
+        */
+       if (is_done)
+               done(ep, req, 0);
+       else if (ep->is_pingpong) {
+               /*
+                * One dummy read to delay the code because of a HW glitch:
+                * CSR returns bad RXCOUNT when read too soon after updating
+                * RX_DATA_BK flags.
+                */
+               csr = __raw_readl(creg);
+
+               bufferspace -= count;
+               buf += count;
+               goto rescan;
+       }
+
+       return is_done;
+}
+
+/* load fifo for an IN packet */
+static int write_fifo(struct at91_ep *ep, struct at91_request *req)
+{
+       u32 __iomem     *creg = ep->creg;
+       u32             csr = __raw_readl(creg);
+       u8 __iomem      *dreg = ep->creg + (AT91_UDP_FDR(0) - AT91_UDP_CSR(0));
+       unsigned        total, count, is_last;
+       u8              *buf;
+
+       /*
+        * TODO: allow for writing two packets to the fifo ... that'll
+        * reduce the amount of IN-NAKing, but probably won't affect
+        * throughput much.  (Unlike preventing OUT-NAKing!)
+        */
+
+       /*
+        * If ep_queue() calls us, the queue is empty and possibly in
+        * odd states like TXCOMP not yet cleared (we do it, saving at
+        * least one IRQ) or the fifo not yet being free.  Those aren't
+        * issues normally (IRQ handler fast path).
+        */
+       if (unlikely(csr & (AT91_UDP_TXCOMP | AT91_UDP_TXPKTRDY))) {
+               if (csr & AT91_UDP_TXCOMP) {
+                       csr |= CLR_FX;
+                       csr &= ~(SET_FX | AT91_UDP_TXCOMP);
+                       __raw_writel(csr, creg);
+                       csr = __raw_readl(creg);
+               }
+               if (csr & AT91_UDP_TXPKTRDY)
+                       return 0;
+       }
+
+       buf = req->req.buf + req->req.actual;
+       prefetch(buf);
+       total = req->req.length - req->req.actual;
+       if (ep->ep.maxpacket < total) {
+               count = ep->ep.maxpacket;
+               is_last = 0;
+       } else {
+               count = total;
+               is_last = (count < ep->ep.maxpacket) || !req->req.zero;
+       }
+
+       /*
+        * Write the packet, maybe it's a ZLP.
+        *
+        * NOTE:  incrementing req->actual before we receive the ACK means
+        * gadget driver IN bytecounts can be wrong in fault cases.  That's
+        * fixable with PIO drivers like this one (save "count" here, and
+        * do the increment later on TX irq), but not for most DMA hardware.
+        *
+        * So all gadget drivers must accept that potential error.  Some
+        * hardware supports precise fifo status reporting, letting them
+        * recover when the actual bytecount matters (e.g. for USB Test
+        * and Measurement Class devices).
+        */
+       __raw_writesb((unsigned long)dreg, buf, count);
+       csr &= ~SET_FX;
+       csr |= CLR_FX | AT91_UDP_TXPKTRDY;
+       __raw_writel(csr, creg);
+       req->req.actual += count;
+
+       PACKET("%s %p in/%d%s\n", ep->ep.name, &req->req, count,
+                       is_last ? " (done)" : "");
+       if (is_last)
+               done(ep, req, 0);
+       return is_last;
+}
+
+static void nuke(struct at91_ep *ep, int status)
+{
+       struct at91_request *req;
+
+       /* terminate any request in the queue */
+       ep->stopped = 1;
+       if (list_empty(&ep->queue))
+               return;
+
+       VDBG("%s %s\n", __func__, ep->ep.name);
+       while (!list_empty(&ep->queue)) {
+               req = list_entry(ep->queue.next, struct at91_request, queue);
+               done(ep, req, status);
+       }
+}
+
+/*-------------------------------------------------------------------------*/
+
+static int at91_ep_enable(struct usb_ep *_ep,
+                               const struct usb_endpoint_descriptor *desc)
+{
+       struct at91_ep  *ep = container_of(_ep, struct at91_ep, ep);
+       struct at91_udc *udc;
+       u16             maxpacket;
+       u32             tmp;
+       unsigned long   flags;
+
+       if (!_ep || !ep
+                       || !desc || _ep->name == ep0name
+                       || desc->bDescriptorType != USB_DT_ENDPOINT
+                       || (maxpacket = usb_endpoint_maxp(desc)) == 0
+                       || maxpacket > ep->maxpacket) {
+               DBG("bad ep or descriptor\n");
+               return -EINVAL;
+       }
+
+       udc = ep->udc;
+       if (!udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
+               DBG("bogus device state\n");
+               return -ESHUTDOWN;
+       }
+
+       tmp = usb_endpoint_type(desc);
+       switch (tmp) {
+       case USB_ENDPOINT_XFER_CONTROL:
+               DBG("only one control endpoint\n");
+               return -EINVAL;
+       case USB_ENDPOINT_XFER_INT:
+               if (maxpacket > 64)
+                       goto bogus_max;
+               break;
+       case USB_ENDPOINT_XFER_BULK:
+               switch (maxpacket) {
+               case 8:
+               case 16:
+               case 32:
+               case 64:
+                       goto ok;
+               }
+bogus_max:
+               DBG("bogus maxpacket %d\n", maxpacket);
+               return -EINVAL;
+       case USB_ENDPOINT_XFER_ISOC:
+               if (!ep->is_pingpong) {
+                       DBG("iso requires double buffering\n");
+                       return -EINVAL;
+               }
+               break;
+       }
+
+ok:
+       spin_lock_irqsave(&udc->lock, flags);
+
+       /* initialize endpoint to match this descriptor */
+       ep->is_in = usb_endpoint_dir_in(desc);
+       ep->is_iso = (tmp == USB_ENDPOINT_XFER_ISOC);
+       ep->stopped = 0;
+       if (ep->is_in)
+               tmp |= 0x04;
+       tmp <<= 8;
+       tmp |= AT91_UDP_EPEDS;
+       __raw_writel(tmp, ep->creg);
+
+       ep->ep.maxpacket = maxpacket;
+
+       /*
+        * reset/init endpoint fifo.  NOTE:  leaves fifo_bank alone,
+        * since endpoint resets don't reset hw pingpong state.
+        */
+       at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
+       at91_udp_write(udc, AT91_UDP_RST_EP, 0);
+
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return 0;
+}
+
+static int at91_ep_disable (struct usb_ep * _ep)
+{
+       struct at91_ep  *ep = container_of(_ep, struct at91_ep, ep);
+       struct at91_udc *udc = ep->udc;
+       unsigned long   flags;
+
+       if (ep == &ep->udc->ep[0])
+               return -EINVAL;
+
+       spin_lock_irqsave(&udc->lock, flags);
+
+       nuke(ep, -ESHUTDOWN);
+
+       /* restore the endpoint's pristine config */
+       ep->ep.desc = NULL;
+       ep->ep.maxpacket = ep->maxpacket;
+
+       /* reset fifos and endpoint */
+       if (ep->udc->clocked) {
+               at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
+               at91_udp_write(udc, AT91_UDP_RST_EP, 0);
+               __raw_writel(0, ep->creg);
+       }
+
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return 0;
+}
+
+/*
+ * this is a PIO-only driver, so there's nothing
+ * interesting for request or buffer allocation.
+ */
+
+static struct usb_request *
+at91_ep_alloc_request(struct usb_ep *_ep, gfp_t gfp_flags)
+{
+       struct at91_request *req;
+
+       req = kzalloc(sizeof (struct at91_request), gfp_flags);
+       if (!req)
+               return NULL;
+
+       INIT_LIST_HEAD(&req->queue);
+       return &req->req;
+}
+
+static void at91_ep_free_request(struct usb_ep *_ep, struct usb_request *_req)
+{
+       struct at91_request *req;
+
+       req = container_of(_req, struct at91_request, req);
+       BUG_ON(!list_empty(&req->queue));
+       kfree(req);
+}
+
+static int at91_ep_queue(struct usb_ep *_ep,
+                       struct usb_request *_req, gfp_t gfp_flags)
+{
+       struct at91_request     *req;
+       struct at91_ep          *ep;
+       struct at91_udc         *udc;
+       int                     status;
+       unsigned long           flags;
+
+       req = container_of(_req, struct at91_request, req);
+       ep = container_of(_ep, struct at91_ep, ep);
+
+       if (!_req || !_req->complete
+                       || !_req->buf || !list_empty(&req->queue)) {
+               DBG("invalid request\n");
+               return -EINVAL;
+       }
+
+       if (!_ep || (!ep->ep.desc && ep->ep.name != ep0name)) {
+               DBG("invalid ep\n");
+               return -EINVAL;
+       }
+
+       udc = ep->udc;
+
+       if (!udc || !udc->driver || udc->gadget.speed == USB_SPEED_UNKNOWN) {
+               DBG("invalid device\n");
+               return -EINVAL;
+       }
+
+       _req->status = -EINPROGRESS;
+       _req->actual = 0;
+
+       spin_lock_irqsave(&udc->lock, flags);
+
+       /* try to kickstart any empty and idle queue */
+       if (list_empty(&ep->queue) && !ep->stopped) {
+               int     is_ep0;
+
+               /*
+                * If this control request has a non-empty DATA stage, this
+                * will start that stage.  It works just like a non-control
+                * request (until the status stage starts, maybe early).
+                *
+                * If the data stage is empty, then this starts a successful
+                * IN/STATUS stage.  (Unsuccessful ones use set_halt.)
+                */
+               is_ep0 = (ep->ep.name == ep0name);
+               if (is_ep0) {
+                       u32     tmp;
+
+                       if (!udc->req_pending) {
+                               status = -EINVAL;
+                               goto done;
+                       }
+
+                       /*
+                        * defer changing CONFG until after the gadget driver
+                        * reconfigures the endpoints.
+                        */
+                       if (udc->wait_for_config_ack) {
+                               tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
+                               tmp ^= AT91_UDP_CONFG;
+                               VDBG("toggle config\n");
+                               at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
+                       }
+                       if (req->req.length == 0) {
+ep0_in_status:
+                               PACKET("ep0 in/status\n");
+                               status = 0;
+                               tmp = __raw_readl(ep->creg);
+                               tmp &= ~SET_FX;
+                               tmp |= CLR_FX | AT91_UDP_TXPKTRDY;
+                               __raw_writel(tmp, ep->creg);
+                               udc->req_pending = 0;
+                               goto done;
+                       }
+               }
+
+               if (ep->is_in)
+                       status = write_fifo(ep, req);
+               else {
+                       status = read_fifo(ep, req);
+
+                       /* IN/STATUS stage is otherwise triggered by irq */
+                       if (status && is_ep0)
+                               goto ep0_in_status;
+               }
+       } else
+               status = 0;
+
+       if (req && !status) {
+               list_add_tail (&req->queue, &ep->queue);
+               at91_udp_write(udc, AT91_UDP_IER, ep->int_mask);
+       }
+done:
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return (status < 0) ? status : 0;
+}
+
+static int at91_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
+{
+       struct at91_ep          *ep;
+       struct at91_request     *req;
+       unsigned long           flags;
+
+       ep = container_of(_ep, struct at91_ep, ep);
+       if (!_ep || ep->ep.name == ep0name)
+               return -EINVAL;
+
+       spin_lock_irqsave(&udc->lock, flags);
+
+       /* make sure it's actually queued on this endpoint */
+       list_for_each_entry (req, &ep->queue, queue) {
+               if (&req->req == _req)
+                       break;
+       }
+       if (&req->req != _req) {
+               spin_unlock_irqrestore(&udc->lock, flags);
+               return -EINVAL;
+       }
+
+       done(ep, req, -ECONNRESET);
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return 0;
+}
+
+static int at91_ep_set_halt(struct usb_ep *_ep, int value)
+{
+       struct at91_ep  *ep = container_of(_ep, struct at91_ep, ep);
+       struct at91_udc *udc = ep->udc;
+       u32 __iomem     *creg;
+       u32             csr;
+       unsigned long   flags;
+       int             status = 0;
+
+       if (!_ep || ep->is_iso || !ep->udc->clocked)
+               return -EINVAL;
+
+       creg = ep->creg;
+       spin_lock_irqsave(&udc->lock, flags);
+
+       csr = __raw_readl(creg);
+
+       /*
+        * fail with still-busy IN endpoints, ensuring correct sequencing
+        * of data tx then stall.  note that the fifo rx bytecount isn't
+        * completely accurate as a tx bytecount.
+        */
+       if (ep->is_in && (!list_empty(&ep->queue) || (csr >> 16) != 0))
+               status = -EAGAIN;
+       else {
+               csr |= CLR_FX;
+               csr &= ~SET_FX;
+               if (value) {
+                       csr |= AT91_UDP_FORCESTALL;
+                       VDBG("halt %s\n", ep->ep.name);
+               } else {
+                       at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
+                       at91_udp_write(udc, AT91_UDP_RST_EP, 0);
+                       csr &= ~AT91_UDP_FORCESTALL;
+               }
+               __raw_writel(csr, creg);
+       }
+
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return status;
+}
+
+static const struct usb_ep_ops at91_ep_ops = {
+       .enable         = at91_ep_enable,
+       .disable        = at91_ep_disable,
+       .alloc_request  = at91_ep_alloc_request,
+       .free_request   = at91_ep_free_request,
+       .queue          = at91_ep_queue,
+       .dequeue        = at91_ep_dequeue,
+       .set_halt       = at91_ep_set_halt,
+       /* there's only imprecise fifo status reporting */
+};
+
+/*-------------------------------------------------------------------------*/
+
+static int at91_get_frame(struct usb_gadget *gadget)
+{
+       struct at91_udc *udc = to_udc(gadget);
+
+       if (!to_udc(gadget)->clocked)
+               return -EINVAL;
+       return at91_udp_read(udc, AT91_UDP_FRM_NUM) & AT91_UDP_NUM;
+}
+
+static int at91_wakeup(struct usb_gadget *gadget)
+{
+       struct at91_udc *udc = to_udc(gadget);
+       u32             glbstate;
+       int             status = -EINVAL;
+       unsigned long   flags;
+
+       DBG("%s\n", __func__ );
+       spin_lock_irqsave(&udc->lock, flags);
+
+       if (!udc->clocked || !udc->suspended)
+               goto done;
+
+       /* NOTE:  some "early versions" handle ESR differently ... */
+
+       glbstate = at91_udp_read(udc, AT91_UDP_GLB_STAT);
+       if (!(glbstate & AT91_UDP_ESR))
+               goto done;
+       glbstate |= AT91_UDP_ESR;
+       at91_udp_write(udc, AT91_UDP_GLB_STAT, glbstate);
+
+done:
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return status;
+}
+
+/* reinit == restore initial software state */
+static void udc_reinit(struct at91_udc *udc)
+{
+       u32 i;
+
+       INIT_LIST_HEAD(&udc->gadget.ep_list);
+       INIT_LIST_HEAD(&udc->gadget.ep0->ep_list);
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               struct at91_ep *ep = &udc->ep[i];
+
+               if (i != 0)
+                       list_add_tail(&ep->ep.ep_list, &udc->gadget.ep_list);
+               ep->ep.desc = NULL;
+               ep->stopped = 0;
+               ep->fifo_bank = 0;
+               usb_ep_set_maxpacket_limit(&ep->ep, ep->maxpacket);
+               ep->creg = (void __iomem *) udc->udp_baseaddr + AT91_UDP_CSR(i);
+               /* initialize one queue per endpoint */
+               INIT_LIST_HEAD(&ep->queue);
+       }
+}
+
+static void reset_gadget(struct at91_udc *udc)
+{
+       struct usb_gadget_driver *driver = udc->driver;
+       int i;
+
+       if (udc->gadget.speed == USB_SPEED_UNKNOWN)
+               driver = NULL;
+       udc->gadget.speed = USB_SPEED_UNKNOWN;
+       udc->suspended = 0;
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               struct at91_ep *ep = &udc->ep[i];
+
+               ep->stopped = 1;
+               nuke(ep, -ESHUTDOWN);
+       }
+       if (driver) {
+               spin_unlock(&udc->lock);
+               udc->driver->disconnect(&udc->gadget);
+               spin_lock(&udc->lock);
+       }
+
+       udc_reinit(udc);
+}
+
+static void stop_activity(struct at91_udc *udc)
+{
+       struct usb_gadget_driver *driver = udc->driver;
+       int i;
+
+       if (udc->gadget.speed == USB_SPEED_UNKNOWN)
+               driver = NULL;
+       udc->gadget.speed = USB_SPEED_UNKNOWN;
+       udc->suspended = 0;
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               struct at91_ep *ep = &udc->ep[i];
+               ep->stopped = 1;
+               nuke(ep, -ESHUTDOWN);
+       }
+       if (driver) {
+               spin_unlock(&udc->lock);
+               driver->disconnect(&udc->gadget);
+               spin_lock(&udc->lock);
+       }
+
+       udc_reinit(udc);
+}
+
+static void clk_on(struct at91_udc *udc)
+{
+       if (udc->clocked)
+               return;
+       udc->clocked = 1;
+}
+
+static void clk_off(struct at91_udc *udc)
+{
+       if (!udc->clocked)
+               return;
+       udc->clocked = 0;
+       udc->gadget.speed = USB_SPEED_UNKNOWN;
+}
+
+/*
+ * activate/deactivate link with host; minimize power usage for
+ * inactive links by cutting clocks and transceiver power.
+ */
+static void pullup(struct at91_udc *udc, int is_on)
+{
+       if (!udc->enabled || !udc->vbus)
+               is_on = 0;
+       DBG("%sactive\n", is_on ? "" : "in");
+
+       if (is_on) {
+               clk_on(udc);
+               at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM);
+               at91_udp_write(udc, AT91_UDP_TXVC, 0);
+       } else {
+               stop_activity(udc);
+               at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM);
+               at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS);
+               clk_off(udc);
+       }
+
+       if (udc->caps && udc->caps->pullup)
+               udc->caps->pullup(udc, is_on);
+}
+
+/* vbus is here!  turn everything on that's ready */
+static int at91_vbus_session(struct usb_gadget *gadget, int is_active)
+{
+       struct at91_udc *udc = to_udc(gadget);
+       unsigned long   flags;
+
+       /* VDBG("vbus %s\n", is_active ? "on" : "off"); */
+       spin_lock_irqsave(&udc->lock, flags);
+       udc->vbus = (is_active != 0);
+       if (udc->driver)
+               pullup(udc, is_active);
+       else
+               pullup(udc, 0);
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return 0;
+}
+
+static int at91_pullup(struct usb_gadget *gadget, int is_on)
+{
+       struct at91_udc *udc = to_udc(gadget);
+       unsigned long   flags;
+
+       spin_lock_irqsave(&udc->lock, flags);
+       udc->enabled = is_on = !!is_on;
+       pullup(udc, is_on);
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return 0;
+}
+
+static int at91_set_selfpowered(struct usb_gadget *gadget, int is_on)
+{
+       struct at91_udc *udc = to_udc(gadget);
+       unsigned long   flags;
+
+       spin_lock_irqsave(&udc->lock, flags);
+       udc->selfpowered = (is_on != 0);
+       spin_unlock_irqrestore(&udc->lock, flags);
+       return 0;
+}
+
+static int at91_start(struct usb_gadget *gadget,
+               struct usb_gadget_driver *driver);
+static int at91_stop(struct usb_gadget *gadget);
+
+static const struct usb_gadget_ops at91_udc_ops = {
+       .get_frame              = at91_get_frame,
+       .wakeup                 = at91_wakeup,
+       .set_selfpowered        = at91_set_selfpowered,
+       .vbus_session           = at91_vbus_session,
+       .pullup                 = at91_pullup,
+       .udc_start              = at91_start,
+       .udc_stop               = at91_stop,
+
+       /*
+        * VBUS-powered devices may also also want to support bigger
+        * power budgets after an appropriate SET_CONFIGURATION.
+        */
+       /* .vbus_power          = at91_vbus_power, */
+};
+
+/*-------------------------------------------------------------------------*/
+
+static int handle_ep(struct at91_ep *ep)
+{
+       struct at91_request     *req;
+       u32 __iomem             *creg = ep->creg;
+       u32                     csr = __raw_readl(creg);
+
+       if (!list_empty(&ep->queue))
+               req = list_entry(ep->queue.next,
+                       struct at91_request, queue);
+       else
+               req = NULL;
+
+       if (ep->is_in) {
+               if (csr & (AT91_UDP_STALLSENT | AT91_UDP_TXCOMP)) {
+                       csr |= CLR_FX;
+                       csr &= ~(SET_FX | AT91_UDP_STALLSENT | AT91_UDP_TXCOMP);
+                       __raw_writel(csr, creg);
+               }
+               if (req)
+                       return write_fifo(ep, req);
+
+       } else {
+               if (csr & AT91_UDP_STALLSENT) {
+                       /* STALLSENT bit == ISOERR */
+                       if (ep->is_iso && req)
+                               req->req.status = -EILSEQ;
+                       csr |= CLR_FX;
+                       csr &= ~(SET_FX | AT91_UDP_STALLSENT);
+                       __raw_writel(csr, creg);
+                       csr = __raw_readl(creg);
+               }
+               if (req && (csr & RX_DATA_READY))
+                       return read_fifo(ep, req);
+       }
+       return 0;
+}
+
+union setup {
+       u8                      raw[8];
+       struct usb_ctrlrequest  r;
+};
+
+static void handle_setup(struct at91_udc *udc, struct at91_ep *ep, u32 csr)
+{
+       u32 __iomem     *creg = ep->creg;
+       u8 __iomem      *dreg = ep->creg + (AT91_UDP_FDR(0) - AT91_UDP_CSR(0));
+       unsigned        rxcount, i = 0;
+       u32             tmp;
+       union setup     pkt;
+       int             status = 0;
+
+       /* read and ack SETUP; hard-fail for bogus packets */
+       rxcount = (csr & AT91_UDP_RXBYTECNT) >> 16;
+       if (likely(rxcount == 8)) {
+               while (rxcount--)
+                       pkt.raw[i++] = __raw_readb(dreg);
+               if (pkt.r.bRequestType & USB_DIR_IN) {
+                       csr |= AT91_UDP_DIR;
+                       ep->is_in = 1;
+               } else {
+                       csr &= ~AT91_UDP_DIR;
+                       ep->is_in = 0;
+               }
+       } else {
+               /* REVISIT this happens sometimes under load; why?? */
+               ERR("SETUP len %d, csr %08x\n", rxcount, csr);
+               status = -EINVAL;
+       }
+       csr |= CLR_FX;
+       csr &= ~(SET_FX | AT91_UDP_RXSETUP);
+       __raw_writel(csr, creg);
+       udc->wait_for_addr_ack = 0;
+       udc->wait_for_config_ack = 0;
+       ep->stopped = 0;
+       if (unlikely(status != 0))
+               goto stall;
+
+#define w_index                le16_to_cpu(pkt.r.wIndex)
+#define w_value                le16_to_cpu(pkt.r.wValue)
+#define w_length       le16_to_cpu(pkt.r.wLength)
+
+       VDBG("SETUP %02x.%02x v%04x i%04x l%04x\n",
+                       pkt.r.bRequestType, pkt.r.bRequest,
+                       w_value, w_index, w_length);
+
+       /*
+        * A few standard requests get handled here, ones that touch
+        * hardware ... notably for device and endpoint features.
+        */
+       udc->req_pending = 1;
+       csr = __raw_readl(creg);
+       csr |= CLR_FX;
+       csr &= ~SET_FX;
+       switch ((pkt.r.bRequestType << 8) | pkt.r.bRequest) {
+
+       case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
+                       | USB_REQ_SET_ADDRESS:
+               __raw_writel(csr | AT91_UDP_TXPKTRDY, creg);
+               udc->addr = w_value;
+               udc->wait_for_addr_ack = 1;
+               udc->req_pending = 0;
+               /* FADDR is set later, when we ack host STATUS */
+               return;
+
+       case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
+                       | USB_REQ_SET_CONFIGURATION:
+               tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_CONFG;
+               if (pkt.r.wValue)
+                       udc->wait_for_config_ack = (tmp == 0);
+               else
+                       udc->wait_for_config_ack = (tmp != 0);
+               if (udc->wait_for_config_ack)
+                       VDBG("wait for config\n");
+               /* CONFG is toggled later, if gadget driver succeeds */
+               break;
+
+       /*
+        * Hosts may set or clear remote wakeup status, and
+        * devices may report they're VBUS powered.
+        */
+       case ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
+                       | USB_REQ_GET_STATUS:
+               tmp = (udc->selfpowered << USB_DEVICE_SELF_POWERED);
+               if (at91_udp_read(udc, AT91_UDP_GLB_STAT) & AT91_UDP_ESR)
+                       tmp |= (1 << USB_DEVICE_REMOTE_WAKEUP);
+               PACKET("get device status\n");
+               __raw_writeb(tmp, dreg);
+               __raw_writeb(0, dreg);
+               goto write_in;
+               /* then STATUS starts later, automatically */
+       case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
+                       | USB_REQ_SET_FEATURE:
+               if (w_value != USB_DEVICE_REMOTE_WAKEUP)
+                       goto stall;
+               tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
+               tmp |= AT91_UDP_ESR;
+               at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
+               goto succeed;
+       case ((USB_TYPE_STANDARD|USB_RECIP_DEVICE) << 8)
+                       | USB_REQ_CLEAR_FEATURE:
+               if (w_value != USB_DEVICE_REMOTE_WAKEUP)
+                       goto stall;
+               tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
+               tmp &= ~AT91_UDP_ESR;
+               at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
+               goto succeed;
+
+       /*
+        * Interfaces have no feature settings; this is pretty useless.
+        * we won't even insist the interface exists...
+        */
+       case ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_INTERFACE) << 8)
+                       | USB_REQ_GET_STATUS:
+               PACKET("get interface status\n");
+               __raw_writeb(0, dreg);
+               __raw_writeb(0, dreg);
+               goto write_in;
+               /* then STATUS starts later, automatically */
+       case ((USB_TYPE_STANDARD|USB_RECIP_INTERFACE) << 8)
+                       | USB_REQ_SET_FEATURE:
+       case ((USB_TYPE_STANDARD|USB_RECIP_INTERFACE) << 8)
+                       | USB_REQ_CLEAR_FEATURE:
+               goto stall;
+
+       /*
+        * Hosts may clear bulk/intr endpoint halt after the gadget
+        * driver sets it (not widely used); or set it (for testing)
+        */
+       case ((USB_DIR_IN|USB_TYPE_STANDARD|USB_RECIP_ENDPOINT) << 8)
+                       | USB_REQ_GET_STATUS:
+               tmp = w_index & USB_ENDPOINT_NUMBER_MASK;
+               ep = &udc->ep[tmp];
+               if (tmp >= NUM_ENDPOINTS || (tmp && !ep->ep.desc))
+                       goto stall;
+
+               if (tmp) {
+                       if ((w_index & USB_DIR_IN)) {
+                               if (!ep->is_in)
+                                       goto stall;
+                       } else if (ep->is_in)
+                               goto stall;
+               }
+               PACKET("get %s status\n", ep->ep.name);
+               if (__raw_readl(ep->creg) & AT91_UDP_FORCESTALL)
+                       tmp = (1 << USB_ENDPOINT_HALT);
+               else
+                       tmp = 0;
+               __raw_writeb(tmp, dreg);
+               __raw_writeb(0, dreg);
+               goto write_in;
+               /* then STATUS starts later, automatically */
+       case ((USB_TYPE_STANDARD|USB_RECIP_ENDPOINT) << 8)
+                       | USB_REQ_SET_FEATURE:
+               tmp = w_index & USB_ENDPOINT_NUMBER_MASK;
+               ep = &udc->ep[tmp];
+               if (w_value != USB_ENDPOINT_HALT || tmp >= NUM_ENDPOINTS)
+                       goto stall;
+               if (!ep->ep.desc || ep->is_iso)
+                       goto stall;
+               if ((w_index & USB_DIR_IN)) {
+                       if (!ep->is_in)
+                               goto stall;
+               } else if (ep->is_in)
+                       goto stall;
+
+               tmp = __raw_readl(ep->creg);
+               tmp &= ~SET_FX;
+               tmp |= CLR_FX | AT91_UDP_FORCESTALL;
+               __raw_writel(tmp, ep->creg);
+               goto succeed;
+       case ((USB_TYPE_STANDARD|USB_RECIP_ENDPOINT) << 8)
+                       | USB_REQ_CLEAR_FEATURE:
+               tmp = w_index & USB_ENDPOINT_NUMBER_MASK;
+               ep = &udc->ep[tmp];
+               if (w_value != USB_ENDPOINT_HALT || tmp >= NUM_ENDPOINTS)
+                       goto stall;
+               if (tmp == 0)
+                       goto succeed;
+               if (!ep->ep.desc || ep->is_iso)
+                       goto stall;
+               if ((w_index & USB_DIR_IN)) {
+                       if (!ep->is_in)
+                               goto stall;
+               } else if (ep->is_in)
+                       goto stall;
+
+               at91_udp_write(udc, AT91_UDP_RST_EP, ep->int_mask);
+               at91_udp_write(udc, AT91_UDP_RST_EP, 0);
+               tmp = __raw_readl(ep->creg);
+               tmp |= CLR_FX;
+               tmp &= ~(SET_FX | AT91_UDP_FORCESTALL);
+               __raw_writel(tmp, ep->creg);
+               if (!list_empty(&ep->queue))
+                       handle_ep(ep);
+               goto succeed;
+       }
+
+#undef w_value
+#undef w_index
+#undef w_length
+
+       /* pass request up to the gadget driver */
+       if (udc->driver) {
+               spin_unlock(&udc->lock);
+               status = udc->driver->setup(&udc->gadget, &pkt.r);
+               spin_lock(&udc->lock);
+       }
+       else
+               status = -ENODEV;
+       if (status < 0) {
+stall:
+               VDBG("req %02x.%02x protocol STALL; stat %d\n",
+                               pkt.r.bRequestType, pkt.r.bRequest, status);
+               csr |= AT91_UDP_FORCESTALL;
+               __raw_writel(csr, creg);
+               udc->req_pending = 0;
+       }
+       return;
+
+succeed:
+       /* immediate successful (IN) STATUS after zero length DATA */
+       PACKET("ep0 in/status\n");
+write_in:
+       csr |= AT91_UDP_TXPKTRDY;
+       __raw_writel(csr, creg);
+       udc->req_pending = 0;
+}
+
+static void handle_ep0(struct at91_udc *udc)
+{
+       struct at91_ep          *ep0 = &udc->ep[0];
+       u32 __iomem             *creg = ep0->creg;
+       u32                     csr = __raw_readl(creg);
+       struct at91_request     *req;
+
+       if (unlikely(csr & AT91_UDP_STALLSENT)) {
+               nuke(ep0, -EPROTO);
+               udc->req_pending = 0;
+               csr |= CLR_FX;
+               csr &= ~(SET_FX | AT91_UDP_STALLSENT | AT91_UDP_FORCESTALL);
+               __raw_writel(csr, creg);
+               VDBG("ep0 stalled\n");
+               csr = __raw_readl(creg);
+       }
+       if (csr & AT91_UDP_RXSETUP) {
+               nuke(ep0, 0);
+               udc->req_pending = 0;
+               handle_setup(udc, ep0, csr);
+               return;
+       }
+
+       if (list_empty(&ep0->queue))
+               req = NULL;
+       else
+               req = list_entry(ep0->queue.next, struct at91_request, queue);
+
+       /* host ACKed an IN packet that we sent */
+       if (csr & AT91_UDP_TXCOMP) {
+               csr |= CLR_FX;
+               csr &= ~(SET_FX | AT91_UDP_TXCOMP);
+
+               /* write more IN DATA? */
+               if (req && ep0->is_in) {
+                       if (handle_ep(ep0))
+                               udc->req_pending = 0;
+
+               /*
+                * Ack after:
+                *  - last IN DATA packet (including GET_STATUS)
+                *  - IN/STATUS for OUT DATA
+                *  - IN/STATUS for any zero-length DATA stage
+                * except for the IN DATA case, the host should send
+                * an OUT status later, which we'll ack.
+                */
+               } else {
+                       udc->req_pending = 0;
+                       __raw_writel(csr, creg);
+
+                       /*
+                        * SET_ADDRESS takes effect only after the STATUS
+                        * (to the original address) gets acked.
+                        */
+                       if (udc->wait_for_addr_ack) {
+                               u32     tmp;
+
+                               at91_udp_write(udc, AT91_UDP_FADDR,
+                                               AT91_UDP_FEN | udc->addr);
+                               tmp = at91_udp_read(udc, AT91_UDP_GLB_STAT);
+                               tmp &= ~AT91_UDP_FADDEN;
+                               if (udc->addr)
+                                       tmp |= AT91_UDP_FADDEN;
+                               at91_udp_write(udc, AT91_UDP_GLB_STAT, tmp);
+
+                               udc->wait_for_addr_ack = 0;
+                               VDBG("address %d\n", udc->addr);
+                       }
+               }
+       }
+
+       /* OUT packet arrived ... */
+       else if (csr & AT91_UDP_RX_DATA_BK0) {
+               csr |= CLR_FX;
+               csr &= ~(SET_FX | AT91_UDP_RX_DATA_BK0);
+
+               /* OUT DATA stage */
+               if (!ep0->is_in) {
+                       if (req) {
+                               if (handle_ep(ep0)) {
+                                       /* send IN/STATUS */
+                                       PACKET("ep0 in/status\n");
+                                       csr = __raw_readl(creg);
+                                       csr &= ~SET_FX;
+                                       csr |= CLR_FX | AT91_UDP_TXPKTRDY;
+                                       __raw_writel(csr, creg);
+                                       udc->req_pending = 0;
+                               }
+                       } else if (udc->req_pending) {
+                               /*
+                                * AT91 hardware has a hard time with this
+                                * "deferred response" mode for control-OUT
+                                * transfers.  (For control-IN it's fine.)
+                                *
+                                * The normal solution leaves OUT data in the
+                                * fifo until the gadget driver is ready.
+                                * We couldn't do that here without disabling
+                                * the IRQ that tells about SETUP packets,
+                                * e.g. when the host gets impatient...
+                                *
+                                * Working around it by copying into a buffer
+                                * would almost be a non-deferred response,
+                                * except that it wouldn't permit reliable
+                                * stalling of the request.  Instead, demand
+                                * that gadget drivers not use this mode.
+                                */
+                               DBG("no control-OUT deferred responses!\n");
+                               __raw_writel(csr | AT91_UDP_FORCESTALL, creg);
+                               udc->req_pending = 0;
+                       }
+
+               /* STATUS stage for control-IN; ack.  */
+               } else {
+                       PACKET("ep0 out/status ACK\n");
+                       __raw_writel(csr, creg);
+
+                       /* "early" status stage */
+                       if (req)
+                               done(ep0, req, 0);
+               }
+       }
+}
+
+static irqreturn_t at91_udc_irq(struct at91_udc *udc)
+{
+       u32                     rescans = 5;
+       int                     disable_clock = 0;
+       unsigned long           flags;
+
+       spin_lock_irqsave(&udc->lock, flags);
+
+       if (!udc->clocked) {
+               clk_on(udc);
+               disable_clock = 1;
+       }
+
+       while (rescans--) {
+               u32 status;
+
+               status = at91_udp_read(udc, AT91_UDP_ISR)
+                       & at91_udp_read(udc, AT91_UDP_IMR);
+               if (!status)
+                       break;
+
+               /* USB reset irq:  not maskable */
+               if (status & AT91_UDP_ENDBUSRES) {
+                       at91_udp_write(udc, AT91_UDP_IDR, ~MINIMUS_INTERRUPTUS);
+                       at91_udp_write(udc, AT91_UDP_IER, MINIMUS_INTERRUPTUS);
+                       /* Atmel code clears this irq twice */
+                       at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES);
+                       at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_ENDBUSRES);
+                       VDBG("end bus reset\n");
+                       udc->addr = 0;
+                       reset_gadget(udc);
+
+                       /* enable ep0 */
+                       at91_udp_write(udc, AT91_UDP_CSR(0),
+                                       AT91_UDP_EPEDS | AT91_UDP_EPTYPE_CTRL);
+                       udc->gadget.speed = USB_SPEED_FULL;
+                       udc->suspended = 0;
+                       at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_EP(0));
+
+                       /*
+                        * NOTE:  this driver keeps clocks off unless the
+                        * USB host is present.  That saves power, but for
+                        * boards that don't support VBUS detection, both
+                        * clocks need to be active most of the time.
+                        */
+
+               /* host initiated suspend (3+ms bus idle) */
+               } else if (status & AT91_UDP_RXSUSP) {
+                       at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXSUSP);
+                       at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXRSM);
+                       at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXSUSP);
+                       /* VDBG("bus suspend\n"); */
+                       if (udc->suspended)
+                               continue;
+                       udc->suspended = 1;
+
+                       /*
+                        * NOTE:  when suspending a VBUS-powered device, the
+                        * gadget driver should switch into slow clock mode
+                        * and then into standby to avoid drawing more than
+                        * 500uA power (2500uA for some high-power configs).
+                        */
+                       if (udc->driver && udc->driver->suspend) {
+                               spin_unlock(&udc->lock);
+                               udc->driver->suspend(&udc->gadget);
+                               spin_lock(&udc->lock);
+                       }
+
+               /* host initiated resume */
+               } else if (status & AT91_UDP_RXRSM) {
+                       at91_udp_write(udc, AT91_UDP_IDR, AT91_UDP_RXRSM);
+                       at91_udp_write(udc, AT91_UDP_IER, AT91_UDP_RXSUSP);
+                       at91_udp_write(udc, AT91_UDP_ICR, AT91_UDP_RXRSM);
+                       /* VDBG("bus resume\n"); */
+                       if (!udc->suspended)
+                               continue;
+                       udc->suspended = 0;
+
+                       /*
+                        * NOTE:  for a VBUS-powered device, the gadget driver
+                        * would normally want to switch out of slow clock
+                        * mode into normal mode.
+                        */
+                       if (udc->driver && udc->driver->resume) {
+                               spin_unlock(&udc->lock);
+                               udc->driver->resume(&udc->gadget);
+                               spin_lock(&udc->lock);
+                       }
+
+               /* endpoint IRQs are cleared by handling them */
+               } else {
+                       int             i;
+                       unsigned        mask = 1;
+                       struct at91_ep  *ep = &udc->ep[1];
+
+                       if (status & mask)
+                               handle_ep0(udc);
+                       for (i = 1; i < NUM_ENDPOINTS; i++) {
+                               mask <<= 1;
+                               if (status & mask)
+                                       handle_ep(ep);
+                               ep++;
+                       }
+               }
+       }
+
+       if (disable_clock)
+               clk_off(udc);
+
+       spin_unlock_irqrestore(&udc->lock, flags);
+
+       return IRQ_HANDLED;
+}
+
+/*-------------------------------------------------------------------------*/
+
+static int at91_start(struct usb_gadget *gadget,
+               struct usb_gadget_driver *driver)
+{
+       struct at91_udc *udc = controller;
+
+       udc->driver = driver;
+       udc->enabled = 1;
+       udc->selfpowered = 1;
+
+       return 0;
+}
+
+static int at91_stop(struct usb_gadget *gadget)
+{
+       struct at91_udc *udc = controller;
+       unsigned long   flags;
+
+       spin_lock_irqsave(&udc->lock, flags);
+       udc->enabled = 0;
+       at91_udp_write(udc, AT91_UDP_IDR, ~0);
+       spin_unlock_irqrestore(&udc->lock, flags);
+
+       udc->driver = NULL;
+
+       return 0;
+}
+
+/*-------------------------------------------------------------------------*/
+
+static int at91rm9200_udc_init(struct at91_udc *udc)
+{
+       struct at91_ep *ep;
+       int ret;
+       int i;
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               ep = &udc->ep[i];
+
+               switch (i) {
+               case 0:
+               case 3:
+                       ep->maxpacket = 8;
+                       break;
+               case 1 ... 2:
+                       ep->maxpacket = 64;
+                       break;
+               case 4 ... 5:
+                       ep->maxpacket = 256;
+                       break;
+               }
+       }
+
+       ret = gpio_request(udc->board.pullup_pin, "udc_pullup");
+       if (ret) {
+               DBG("D+ pullup is busy\n");
+               return ret;
+       }
+
+       gpio_direction_output(udc->board.pullup_pin,
+                             udc->board.pullup_active_low);
+
+       return 0;
+}
+
+static void at91rm9200_udc_pullup(struct at91_udc *udc, int is_on)
+{
+       int active = !udc->board.pullup_active_low;
+
+       if (is_on)
+               gpio_set_value(udc->board.pullup_pin, active);
+       else
+               gpio_set_value(udc->board.pullup_pin, !active);
+}
+
+static const struct at91_udc_caps at91rm9200_udc_caps = {
+       .init = at91rm9200_udc_init,
+       .pullup = at91rm9200_udc_pullup,
+};
+
+static int at91sam9260_udc_init(struct at91_udc *udc)
+{
+       struct at91_ep *ep;
+       int i;
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               ep = &udc->ep[i];
+
+               switch (i) {
+               case 0 ... 3:
+                       ep->maxpacket = 64;
+                       break;
+               case 4 ... 5:
+                       ep->maxpacket = 512;
+                       break;
+               }
+       }
+
+       return 0;
+}
+
+#if defined(CONFIG_AT91SAM9260) || defined(CONFIG_AT91SAM9G20)
+static void at91sam9260_udc_pullup(struct at91_udc *udc, int is_on)
+{
+       u32 txvc = at91_udp_read(udc, AT91_UDP_TXVC);
+
+       if (is_on)
+               txvc |= AT91_UDP_TXVC_PUON;
+       else
+               txvc &= ~AT91_UDP_TXVC_PUON;
+
+       at91_udp_write(udc, AT91_UDP_TXVC, txvc);
+}
+
+static const struct at91_udc_caps at91sam9260_udc_caps = {
+       .init = at91sam9260_udc_init,
+       .pullup = at91sam9260_udc_pullup,
+};
+#endif
+
+#if defined(CONFIG_AT91SAM9261)
+static int at91sam9261_udc_init(struct at91_udc *udc)
+{
+       struct at91_ep *ep;
+       int i;
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               ep = &udc->ep[i];
+
+               switch (i) {
+               case 0:
+                       ep->maxpacket = 8;
+                       break;
+               case 1 ... 3:
+                       ep->maxpacket = 64;
+                       break;
+               case 4 ... 5:
+                       ep->maxpacket = 256;
+                       break;
+               }
+       }
+
+       udc->matrix = (struct at91_matrix *)ATMEL_BASE_MATRIX;
+
+       if (IS_ERR(udc->matrix))
+               return PTR_ERR(udc->matrix);
+
+       return 0;
+}
+
+static void at91sam9261_udc_pullup(struct at91_udc *udc, int is_on)
+{
+       u32 usbpucr = 0;
+
+       usbpucr = readl(&udc->matrix->pucr);
+       if (is_on)
+               usbpucr |= AT91_MATRIX_USBPUCR_PUON;
+
+       writel(usbpucr, &udc->matrix->pucr);
+}
+
+static const struct at91_udc_caps at91sam9261_udc_caps = {
+       .init = at91sam9261_udc_init,
+       .pullup = at91sam9261_udc_pullup,
+};
+#endif
+
+static int at91sam9263_udc_init(struct at91_udc *udc)
+{
+       struct at91_ep *ep;
+       int i;
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               ep = &udc->ep[i];
+
+               switch (i) {
+               case 0:
+               case 1:
+               case 2:
+               case 3:
+                       ep->maxpacket = 64;
+                       break;
+               case 4:
+               case 5:
+                       ep->maxpacket = 256;
+                       break;
+               }
+       }
+
+       return 0;
+}
+
+static const struct at91_udc_caps at91sam9263_udc_caps = {
+       .init = at91sam9263_udc_init,
+       .pullup = at91sam9260_udc_pullup,
+};
+
+int usb_gadget_handle_interrupts(int index)
+{
+       struct at91_udc *udc = controller;
+
+       return at91_udc_irq(udc);
+}
+
+int usb_gadget_register_driver(struct usb_gadget_driver *driver)
+{
+       struct at91_udc *udc = controller;
+       int ret;
+
+       if (!driver || !driver->bind || !driver->setup) {
+               printf("bad paramter\n");
+               return -EINVAL;
+       }
+
+       if (udc->driver) {
+               printf("UDC already has a gadget driver\n");
+               return -EBUSY;
+       }
+
+       at91_start(&udc->gadget, driver);
+
+       udc->driver = driver;
+
+       ret = driver->bind(&udc->gadget);
+       if (ret) {
+               error("driver->bind() returned %d\n", ret);
+               udc->driver = NULL;
+       }
+
+       return ret;
+}
+
+int usb_gadget_unregister_driver(struct usb_gadget_driver *driver)
+{
+       struct at91_udc *udc = controller;
+
+       if (!driver || !driver->unbind || !driver->disconnect) {
+               error("bad paramter\n");
+               return -EINVAL;
+       }
+
+       driver->disconnect(&udc->gadget);
+       driver->unbind(&udc->gadget);
+       udc->driver = NULL;
+
+       at91_stop(&udc->gadget);
+
+       return 0;
+}
+
+int at91_udc_probe(struct at91_udc_data *pdata)
+{
+       struct at91_udc *udc;
+       int             retval;
+       struct at91_ep  *ep;
+       int             i;
+
+       udc = kzalloc(sizeof(*udc), GFP_KERNEL);
+       if (!udc)
+               return -ENOMEM;
+
+       controller = udc;
+       memcpy(&udc->board, pdata, sizeof(struct at91_udc_data));
+       if (udc->board.vbus_pin) {
+               printf("%s: gpio vbus pin not supported yet.\n", __func__);
+               return -ENXIO;
+       } else {
+               DBG("no VBUS detection, assuming always-on\n");
+               udc->vbus = 1;
+       }
+
+#if defined(CONFIG_AT91SAM9260) || defined(CONFIG_AT91SAM9G20)
+       udc->caps = &at91sam9260_udc_caps;
+#endif
+
+       udc->enabled = 0;
+       spin_lock_init(&udc->lock);
+
+       udc->gadget.ops = &at91_udc_ops;
+       udc->gadget.ep0 = &udc->ep[0].ep;
+       udc->gadget.name = driver_name;
+
+       for (i = 0; i < NUM_ENDPOINTS; i++) {
+               ep = &udc->ep[i];
+               ep->ep.name = ep_names[i];
+               ep->ep.ops = &at91_ep_ops;
+               ep->udc = udc;
+               ep->int_mask = (1 << i);
+               if (i != 0 && i != 3)
+                       ep->is_pingpong = 1;
+       }
+
+       udc->udp_baseaddr = (void *)udc->board.baseaddr;
+       if (IS_ERR(udc->udp_baseaddr))
+               return PTR_ERR(udc->udp_baseaddr);
+
+       if (udc->caps && udc->caps->init) {
+               retval = udc->caps->init(udc);
+               if (retval)
+                       return retval;
+       }
+
+       udc_reinit(udc);
+
+       at91_udp_write(udc, AT91_UDP_TXVC, AT91_UDP_TXVC_TXVDIS);
+       at91_udp_write(udc, AT91_UDP_IDR, 0xffffffff);
+       /* Clear all pending interrupts - UDP may be used by bootloader. */
+       at91_udp_write(udc, AT91_UDP_ICR, 0xffffffff);
+
+       INFO("%s version %s\n", driver_name, DRIVER_VERSION);
+       return 0;
+}
diff --git a/drivers/usb/gadget/at91_udc.h b/drivers/usb/gadget/at91_udc.h
new file mode 100644 (file)
index 0000000..3d8752e
--- /dev/null
@@ -0,0 +1,171 @@
+/*
+ * Copyright (C) 2004 by Thomas Rathbone, HP Labs
+ * Copyright (C) 2005 by Ivan Kokshaysky
+ * Copyright (C) 2006 by SAN People
+ *
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
+ */
+
+#ifndef AT91_UDC_H
+#define AT91_UDC_H
+
+/*
+ * USB Device Port (UDP) registers.
+ * Based on AT91RM9200 datasheet revision E.
+ */
+
+#define AT91_UDP_FRM_NUM       0x00            /* Frame Number Register */
+#define     AT91_UDP_NUM       (0x7ff <<  0)   /* Frame Number */
+#define     AT91_UDP_FRM_ERR   (1     << 16)   /* Frame Error */
+#define     AT91_UDP_FRM_OK    (1     << 17)   /* Frame OK */
+
+#define AT91_UDP_GLB_STAT      0x04            /* Global State Register */
+#define     AT91_UDP_FADDEN    (1 <<  0)       /* Function Address Enable */
+#define     AT91_UDP_CONFG     (1 <<  1)       /* Configured */
+#define     AT91_UDP_ESR       (1 <<  2)       /* Enable Send Resume */
+#define     AT91_UDP_RSMINPR   (1 <<  3)       /* Resume has been sent */
+#define     AT91_UDP_RMWUPE    (1 <<  4)       /* Remote Wake Up Enable */
+
+#define AT91_UDP_FADDR         0x08            /* Function Address Register */
+#define     AT91_UDP_FADD      (0x7f << 0)     /* Function Address Value */
+#define     AT91_UDP_FEN       (1    << 8)     /* Function Enable */
+
+#define AT91_UDP_IER           0x10            /* Interrupt Enable Register */
+#define AT91_UDP_IDR           0x14            /* Interrupt Disable Register */
+#define AT91_UDP_IMR           0x18            /* Interrupt Mask Register */
+
+#define AT91_UDP_ISR           0x1c            /* Interrupt Status Register */
+#define     AT91_UDP_EP(n)     (1 << (n))      /* Endpoint Interrupt Status */
+#define     AT91_UDP_RXSUSP    (1 <<  8)       /* USB Suspend Interrupt Status */
+#define     AT91_UDP_RXRSM     (1 <<  9)       /* USB Resume Interrupt Status */
+#define     AT91_UDP_EXTRSM    (1 << 10)       /* External Resume Interrupt Status [AT91RM9200 only] */
+#define     AT91_UDP_SOFINT    (1 << 11)       /* Start of Frame Interrupt Status */
+#define     AT91_UDP_ENDBUSRES (1 << 12)       /* End of Bus Reset Interrupt Status */
+#define     AT91_UDP_WAKEUP    (1 << 13)       /* USB Wakeup Interrupt Status [AT91RM9200 only] */
+
+#define AT91_UDP_ICR           0x20            /* Interrupt Clear Register */
+#define AT91_UDP_RST_EP                0x28            /* Reset Endpoint Register */
+
+#define AT91_UDP_CSR(n)                (0x30+((n)*4))  /* Endpoint Control/Status Registers 0-7 */
+#define     AT91_UDP_TXCOMP    (1 <<  0)       /* Generates IN packet with data previously written in DPR */
+#define     AT91_UDP_RX_DATA_BK0 (1 <<  1)     /* Receive Data Bank 0 */
+#define     AT91_UDP_RXSETUP   (1 <<  2)       /* Send STALL to the host */
+#define     AT91_UDP_STALLSENT (1 <<  3)       /* Stall Sent / Isochronous error (Isochronous endpoints) */
+#define     AT91_UDP_TXPKTRDY  (1 <<  4)       /* Transmit Packet Ready */
+#define     AT91_UDP_FORCESTALL        (1 <<  5)       /* Force Stall */
+#define     AT91_UDP_RX_DATA_BK1 (1 <<  6)     /* Receive Data Bank 1 */
+#define     AT91_UDP_DIR       (1 <<  7)       /* Transfer Direction */
+#define     AT91_UDP_EPTYPE    (7 <<  8)       /* Endpoint Type */
+#define                AT91_UDP_EPTYPE_CTRL            (0 <<  8)
+#define                AT91_UDP_EPTYPE_ISO_OUT         (1 <<  8)
+#define                AT91_UDP_EPTYPE_BULK_OUT        (2 <<  8)
+#define                AT91_UDP_EPTYPE_INT_OUT         (3 <<  8)
+#define                AT91_UDP_EPTYPE_ISO_IN          (5 <<  8)
+#define                AT91_UDP_EPTYPE_BULK_IN         (6 <<  8)
+#define                AT91_UDP_EPTYPE_INT_IN          (7 <<  8)
+#define     AT91_UDP_DTGLE     (1 << 11)       /* Data Toggle */
+#define     AT91_UDP_EPEDS     (1 << 15)       /* Endpoint Enable/Disable */
+#define     AT91_UDP_RXBYTECNT (0x7ff << 16)   /* Number of bytes in FIFO */
+
+#define AT91_UDP_FDR(n)                (0x50+((n)*4))  /* Endpoint FIFO Data Registers 0-7 */
+
+#define AT91_UDP_TXVC          0x74            /* Transceiver Control Register */
+#define     AT91_UDP_TXVC_TXVDIS (1 << 8)      /* Transceiver Disable */
+#define     AT91_UDP_TXVC_PUON   (1 << 9)      /* PullUp On [AT91SAM9260 only] */
+
+/*-------------------------------------------------------------------------*/
+
+/*
+ * controller driver data structures
+ */
+
+#define        NUM_ENDPOINTS   6
+
+/*
+ * hardware won't disable bus reset, or resume while the controller
+ * is suspended ... watching suspend helps keep the logic symmetric.
+ */
+#define        MINIMUS_INTERRUPTUS \
+       (AT91_UDP_ENDBUSRES | AT91_UDP_RXRSM | AT91_UDP_RXSUSP)
+
+struct at91_ep {
+       struct usb_ep                   ep;
+       struct list_head                queue;
+       struct at91_udc                 *udc;
+       void __iomem                    *creg;
+
+       unsigned                        maxpacket:16;
+       u8                              int_mask;
+       unsigned                        is_pingpong:1;
+
+       unsigned                        stopped:1;
+       unsigned                        is_in:1;
+       unsigned                        is_iso:1;
+       unsigned                        fifo_bank:1;
+};
+
+struct at91_udc_caps {
+       int (*init)(struct at91_udc *udc);
+       void (*pullup)(struct at91_udc *udc, int is_on);
+};
+
+/*
+ * driver is non-SMP, and just blocks IRQs whenever it needs
+ * access protection for chip registers or driver state
+ */
+struct at91_udc {
+       struct usb_gadget               gadget;
+       struct at91_ep                  ep[NUM_ENDPOINTS];
+       struct usb_gadget_driver        *driver;
+       const struct at91_udc_caps      *caps;
+       unsigned                        vbus:1;
+       unsigned                        enabled:1;
+       unsigned                        clocked:1;
+       unsigned                        suspended:1;
+       unsigned                        req_pending:1;
+       unsigned                        wait_for_addr_ack:1;
+       unsigned                        wait_for_config_ack:1;
+       unsigned                        selfpowered:1;
+       unsigned                        active_suspend:1;
+       u8                              addr;
+       struct at91_udc_data            board;
+       void __iomem                    *udp_baseaddr;
+       int                             udp_irq;
+       spinlock_t                      lock;
+       struct at91_matrix              *matrix;
+};
+
+static inline struct at91_udc *to_udc(struct usb_gadget *g)
+{
+       return container_of(g, struct at91_udc, gadget);
+}
+
+struct at91_request {
+       struct usb_request              req;
+       struct list_head                queue;
+};
+
+/*-------------------------------------------------------------------------*/
+
+#ifdef VERBOSE_DEBUG
+#    define VDBG               DBG
+#else
+#    define VDBG(stuff...)     do{}while(0)
+#endif
+
+#ifdef PACKET_TRACE
+#    define PACKET             VDBG
+#else
+#    define PACKET(stuff...)   do{}while(0)
+#endif
+
+#define ERR(stuff...)          debug("udc: " stuff)
+#define WARNING(stuff...)      debug("udc: " stuff)
+#define INFO(stuff...)         debug("udc: " stuff)
+#define DBG(stuff...)          debug("udc: " stuff)
+
+#endif
+
index 3e8eb8799f4e0227fc2fa24c3d9716175d786d5e..1ba5054965f05d9a9a2281b2a1bcc97ce1a79224 100644 (file)
@@ -87,6 +87,7 @@ static int ci_ep_enable(struct usb_ep *ep,
 static int ci_ep_disable(struct usb_ep *ep);
 static int ci_ep_queue(struct usb_ep *ep,
                struct usb_request *req, gfp_t gfp_flags);
+static int ci_ep_dequeue(struct usb_ep *ep, struct usb_request *req);
 static struct usb_request *
 ci_ep_alloc_request(struct usb_ep *ep, unsigned int gfp_flags);
 static void ci_ep_free_request(struct usb_ep *ep, struct usb_request *_req);
@@ -99,6 +100,7 @@ static struct usb_ep_ops ci_ep_ops = {
        .enable         = ci_ep_enable,
        .disable        = ci_ep_disable,
        .queue          = ci_ep_queue,
+       .dequeue        = ci_ep_dequeue,
        .alloc_request  = ci_ep_alloc_request,
        .free_request   = ci_ep_free_request,
 };
@@ -424,7 +426,7 @@ static void ci_ep_submit_next_request(struct ci_ep *ci_ep)
        int bit, num, len, in;
        struct ci_req *ci_req;
        u8 *buf;
-       uint32_t length, actlen;
+       uint32_t len_left, len_this_dtd;
        struct ept_queue_item *dtd, *qtd;
 
        ci_ep->req_primed = true;
@@ -442,25 +444,23 @@ static void ci_ep_submit_next_request(struct ci_ep *ci_ep)
 
        ci_req->dtd_count = 0;
        buf = ci_req->hw_buf;
-       actlen = 0;
+       len_left = len;
        dtd = item;
 
        do {
-               length = min(ci_req->req.length - actlen,
-                            (unsigned)EP_MAX_LENGTH_TRANSFER);
+               len_this_dtd = min(len_left, (unsigned)EP_MAX_LENGTH_TRANSFER);
 
-               dtd->info = INFO_BYTES(length) | INFO_ACTIVE;
+               dtd->info = INFO_BYTES(len_this_dtd) | INFO_ACTIVE;
                dtd->page0 = (unsigned long)buf;
                dtd->page1 = ((unsigned long)buf & 0xfffff000) + 0x1000;
                dtd->page2 = ((unsigned long)buf & 0xfffff000) + 0x2000;
                dtd->page3 = ((unsigned long)buf & 0xfffff000) + 0x3000;
                dtd->page4 = ((unsigned long)buf & 0xfffff000) + 0x4000;
 
-               len -= length;
-               actlen += length;
-               buf += length;
+               len_left -= len_this_dtd;
+               buf += len_this_dtd;
 
-               if (len) {
+               if (len_left) {
                        qtd = (struct ept_queue_item *)
                               memalign(ILIST_ALIGN, ILIST_ENT_SZ);
                        dtd->next = (unsigned long)qtd;
@@ -469,7 +469,7 @@ static void ci_ep_submit_next_request(struct ci_ep *ci_ep)
                }
 
                ci_req->dtd_count++;
-       } while (len);
+       } while (len_left);
 
        item = dtd;
        /*
@@ -525,6 +525,30 @@ static void ci_ep_submit_next_request(struct ci_ep *ci_ep)
        writel(bit, &udc->epprime);
 }
 
+static int ci_ep_dequeue(struct usb_ep *_ep, struct usb_request *_req)
+{
+       struct ci_ep *ci_ep = container_of(_ep, struct ci_ep, ep);
+       struct ci_req *ci_req;
+
+       list_for_each_entry(ci_req, &ci_ep->queue, queue) {
+               if (&ci_req->req == _req)
+                       break;
+       }
+
+       if (&ci_req->req != _req)
+               return -EINVAL;
+
+       list_del_init(&ci_req->queue);
+
+       if (ci_req->req.status == -EINPROGRESS) {
+               ci_req->req.status = -ECONNRESET;
+               if (ci_req->req.complete)
+                       ci_req->req.complete(_ep, _req);
+       }
+
+       return 0;
+}
+
 static int ci_ep_queue(struct usb_ep *ep,
                struct usb_request *req, gfp_t gfp_flags)
 {
index d96296cd73b1f57815413afcc46e33f0e38390a0..a13b21d0a0f233833d616735460b51da288a83a8 100644 (file)
@@ -948,6 +948,7 @@ static void composite_unbind(struct usb_gadget *gadget)
                        debug("unbind config '%s'/%p\n", c->label, c);
                        c->unbind(c);
                }
+               free(c);
        }
        if (composite->unbind)
                composite->unbind(cdev);
index 53f4672291f3d83a32cae43f4bd99caedba6c502..c5e35ee35077a37cca9a623c77c835dc75542bb2 100644 (file)
@@ -17,6 +17,7 @@
 #include <net.h>
 #include <usb.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <linux/ctype.h>
 
 #include "gadget_chips.h"
index 6346370cd67a863ebf8222fc3380a5641cb3e6db..ff1481ba372304f3f8f5af5be18ea2185a6d57b2 100644 (file)
@@ -18,6 +18,7 @@
 #include <errno.h>
 #include <common.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <version.h>
 #include <linux/usb/ch9.h>
 #include <linux/usb/gadget.h>
@@ -123,6 +124,9 @@ static int process_rqt_cmd(const struct rqt_box *rqt)
                send_rsp(rsp);
                g_dnl_unregister();
                dfu_free_entities();
+#ifdef CONFIG_THOR_RESET_OFF
+               return RESET_DONE;
+#endif
                run_command("reset", 0);
                break;
        case RQT_CMD_POWEROFF:
@@ -728,6 +732,10 @@ int thor_handle(void)
 
                if (ret > 0) {
                        ret = process_data();
+#ifdef CONFIG_THOR_RESET_OFF
+                       if (ret == RESET_DONE)
+                               break;
+#endif
                        if (ret < 0)
                                return ret;
                } else {
@@ -768,7 +776,7 @@ static int thor_func_bind(struct usb_configuration *c, struct usb_function *f)
                goto fail;
        }
        dev->req->buf = memalign(CONFIG_SYS_CACHELINE_SIZE,
-                                gadget->ep0->maxpacket);
+                                THOR_PACKET_SIZE);
        if (!dev->req->buf) {
                status = -ENOMEM;
                goto fail;
index 833a9d24ae7e632ba18173738491b5c6f65a1650..83412851dd17f6100f7c2eda67b0e30e8b69958d 100644 (file)
@@ -121,4 +121,7 @@ struct f_thor {
 #define F_NAME_BUF_SIZE 32
 #define THOR_PACKET_SIZE SZ_1M      /* 1 MiB */
 #define THOR_STORE_UNIT_SIZE SZ_32M /* 32 MiB */
+#ifdef CONFIG_THOR_RESET_OFF
+#define RESET_DONE 0xFFFFFFFF
+#endif
 #endif /* _USB_THOR_H_ */
index ad89a0d2e6700e85b143071160c2d0ea62c1e266..2fa6da4091e16b07ca5b2b3322e133b67550b934 100644 (file)
@@ -93,8 +93,6 @@ static int g_dnl_unbind(struct usb_composite_dev *cdev)
 {
        struct usb_gadget *gadget = cdev->gadget;
 
-       free(cdev->config);
-       cdev->config = NULL;
        debug("%s: calling usb_gadget_disconnect for "
                        "controller '%s'\n", __func__, gadget->name);
        usb_gadget_disconnect(gadget);
index 85236aeb2a48bc135248a46a12f4a9ae2d4c0a20..541c0f968701ef9ed6d9e290b54bd8e927b51fce 100644 (file)
@@ -10,6 +10,7 @@
 #include <errno.h>
 #include <usb.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <phys2bus.h>
 #include <usbroothubdes.h>
 #include <asm/io.h>
index 3a0d32ee2ba1f0e3c9d49500e4570103e0f70487..135ef7262278c67f9c39f171560cd29b338963d1 100644 (file)
@@ -15,6 +15,7 @@
 #include <usb.h>
 #include <asm/io.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <watchdog.h>
 #include <linux/compiler.h>
 
@@ -1645,8 +1646,10 @@ int ehci_register(struct udevice *dev, struct ehci_hccr *hccr,
        ctrl->hcor = hcor;
        ctrl->priv = ctrl;
 
-       if (init == USB_INIT_DEVICE)
+       ctrl->init = init;
+       if (ctrl->init == USB_INIT_DEVICE)
                goto done;
+
        ret = ehci_reset(ctrl);
        if (ret)
                goto err;
@@ -1666,6 +1669,9 @@ int ehci_deregister(struct udevice *dev)
 {
        struct ehci_ctrl *ctrl = dev_get_priv(dev);
 
+       if (ctrl->init == USB_INIT_DEVICE)
+               return 0;
+
        ehci_shutdown(ctrl);
 
        return 0;
index 4a4f5593e9da0718c91915b7d7d4b557765c5bfe..31d54ab285bf01c9ea0e864559413f880868b46e 100644 (file)
@@ -684,11 +684,13 @@ static void config_clock(const u32 timing[])
                timing[PARAM_CPCON], timing[PARAM_LFCON]);
 }
 
-static int fdt_decode_usb(const void *blob, int node, struct fdt_usb *config)
+static int fdt_decode_usb(struct udevice *dev, struct fdt_usb *config)
 {
+       const void *blob = gd->fdt_blob;
+       int node = dev->of_offset;
        const char *phy, *mode;
 
-       config->reg = (struct usb_ctlr *)fdtdec_get_addr(blob, node, "reg");
+       config->reg = (struct usb_ctlr *)dev_get_addr(dev);
        mode = fdt_getprop(blob, node, "dr_mode", NULL);
        if (mode) {
                if (0 == strcmp(mode, "host"))
@@ -812,7 +814,7 @@ static int ehci_usb_ofdata_to_platdata(struct udevice *dev)
        struct fdt_usb *priv = dev_get_priv(dev);
        int ret;
 
-       ret = fdt_decode_usb(gd->fdt_blob, dev->of_offset, priv);
+       ret = fdt_decode_usb(dev, priv);
        if (ret)
                return ret;
 
index 3379c293c4dfafa310c2f933eba0bce6d846a000..b41c04a8b30a182a2370c066aca32e4e2d3280a3 100644 (file)
@@ -242,6 +242,7 @@ struct ehci_ops {
 };
 
 struct ehci_ctrl {
+       enum usb_init_type init;
        struct ehci_hccr *hccr; /* R/O registers, not need for volatile */
        struct ehci_hcor *hcor;
        int rootdev;
index 0ffd838db29e2535ba064f73b5add9973af8d240..9bde2b252c03783356a83ffbb6d1769e4fbdb11d 100644 (file)
@@ -41,6 +41,7 @@
 #endif
 
 #include <malloc.h>
+#include <memalign.h>
 #include <usb.h>
 
 #include "ohci.h"
index b17a7d762e03350fd01bb1225d59a5ce4f4a5701..c66ebb6678dee1d1340a7b9010fc4d96ae0c642c 100644 (file)
@@ -10,6 +10,7 @@
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
+#include <memalign.h>
 #include <usb.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
index 251885b28b3a9a1e16d6e34edb4ca7ff993e4ce2..28416ed1064914bbdf8c8fce1258381c182d1115 100644 (file)
@@ -61,7 +61,7 @@ static int xhci_usb_ofdata_to_platdata(struct udevice *dev)
        /*
         * Get the base address for XHCI controller from the device node
         */
-       plat->hcd_base = fdtdec_get_addr(blob, dev->of_offset, "reg");
+       plat->hcd_base = dev_get_addr(dev);
        if (plat->hcd_base == FDT_ADDR_T_NONE) {
                debug("Can't get the XHCI register base address\n");
                return -ENXIO;
index 0082ff87f0345495b93394931a0ed6809cf2866e..6a6cb93b4c507e7ed7d07c7489be1088bac8516f 100644 (file)
@@ -21,8 +21,6 @@ config USB_MUSB_SUNXI
        default y
        ---help---
        Say y here to enable support for the sunxi OTG / DRC USB controller
-       used on almost all sunxi boards. Note currently u-boot can only have
-       one usb host controller enabled at a time, so enabling this on boards
-       which also use the ehci host controller will result in build errors.
+       used on almost all sunxi boards.
 
 endif
index 83d60d672dd6732f0758a56fe59e35042848b413..37ad69a039c8f50860f0bd7db02a630a8080f80a 100755 (executable)
@@ -14,8 +14,6 @@
 #include <i2c.h>
 #include "anx9804.h"
 
-#define BIT(x) (1 << (x))
-
 /* Registers at i2c address 0x38 */
 
 #define ANX9804_HDCP_CONTROL_0_REG                             0x01
index 61d054dd8923d7423df19aa5ee13366c6e084d32..7867fe3895d00a763ff7b841554f46de1fd2ecd1 100644 (file)
@@ -6,6 +6,7 @@
 
 #include <common.h>
 #include <lcd.h>
+#include <memalign.h>
 #include <asm/arch/mbox.h>
 #include <asm/global_data.h>
 
index 3a5f325cd30b97337c77280d5dc8877d2c86fceb..e2b2144d88020b9d73d2f2529da13d70f6bfe801 100644 (file)
@@ -1035,16 +1035,6 @@ err_release_fb:
        return NULL;
 }
 
-void video_set_lut(unsigned int index, /* color number */
-                   unsigned char r,    /* red */
-                   unsigned char g,    /* green */
-                   unsigned char b     /* blue */
-                   )
-{
-
-       return;
-}
-
 void da8xx_video_init(const struct da8xx_panel *panel,
                      const struct lcd_ctrl_config *lcd_cfg, int bits_pixel)
 {
index 43670fc320b7c3ed646a87155a092e1789657843..11fef279a90d7101846d0a61563649ad69c1340a 100644 (file)
@@ -220,7 +220,8 @@ err_claim_bus:
 static int do_lgset(cmd_tbl_t *cmdtp, int flag, int argc,
                       char * const argv[])
 {
-       lg4573_spi_startup(0, 0, 10000000, SPI_MODE_0);
+       lg4573_spi_startup(CONFIG_LG4573_BUS, CONFIG_LG4573_CS, 10000000,
+                          SPI_MODE_0);
        return 0;
 }
 
index 1c74e97c5e9d955de8b21bf2cb99735f9a877231..868c51254d3aff3be3092508348b50e188baf2bc 100644 (file)
@@ -419,8 +419,7 @@ void *video_hw_init (void)
        board_disp_init ();
 #endif
 
-#if (defined(CONFIG_LWMON5) || \
-     defined(CONFIG_SOCRATES)) && !(CONFIG_POST & CONFIG_SYS_POST_SYSMON)
+#if defined(CONFIG_SOCRATES) && !(CONFIG_POST & CONFIG_SYS_POST_SYSMON)
        /* Lamp on */
        board_backlight_switch (1);
 #endif
index aa4cc433b908a842abb11a9c96cfc4abc8270fff..3f10d5c2d929b4e6233ad852d9e0c800f9e2835e 100644 (file)
@@ -904,12 +904,3 @@ void *video_hw_init(void)
 
        return (void *) &panel;
 }
-
-void video_set_lut(unsigned int index, /* color number */
-                   unsigned char r,    /* red */
-                   unsigned char g,    /* green */
-                   unsigned char b     /* blue */
-                   )
-{
-       return;
-}
index 1fa95314fc4621857114bcef2e98e50a60f163b7..265274b9d668ad6d2741657e8350b33886214eec 100644 (file)
@@ -599,15 +599,6 @@ void *video_hw_init(void)
        return (void *)&panel;
 }
 
-void video_set_lut(unsigned int index, /* color number */
-                       unsigned char r,    /* red */
-                       unsigned char g,    /* green */
-                       unsigned char b     /* blue */
-                       )
-{
-       return;
-}
-
 int ipuv3_fb_init(struct fb_videomode const *mode,
                  uint8_t disp,
                  uint32_t pixfmt)
index 3c0b721e3b8226d024d39a31270ceed2d69fab2d..1bf92020ae6deb0b7c0afb5944752041045814b6 100644 (file)
@@ -1555,9 +1555,8 @@ error_enable:
 static int tegra_dp_ofdata_to_platdata(struct udevice *dev)
 {
        struct tegra_dp_plat *plat = dev_get_platdata(dev);
-       const void *blob = gd->fdt_blob;
 
-       plat->base = fdtdec_get_addr(blob, dev->of_offset, "reg");
+       plat->base = dev_get_addr(dev);
 
        return 0;
 }
index 482a4bd5be316a44a57381c46e1269ee8d61580b..9e9cb550695ddac8178762c33d7152950bf44b1f 100644 (file)
@@ -7,7 +7,7 @@
 
 obj-$(CONFIG_AT91SAM9_WATCHDOG) += at91sam9_wdt.o
 obj-$(CONFIG_FTWDT010_WATCHDOG) += ftwdt010_wdt.o
-ifneq (,$(filter $(SOC), mx31 mx35 mx5 mx6 vf610 ls102xa))
+ifneq (,$(filter $(SOC), mx31 mx35 mx5 mx6 mx7 vf610 ls102xa))
 obj-y += imx_watchdog.o
 endif
 obj-$(CONFIG_S5P)               += s5p_wdt.o
index d72a90905f5b95ca7de5e10aebb863761ceecf84..a04bb962af81c260d414c9d049a45643ce72cc3b 100644 (file)
@@ -58,7 +58,7 @@ config DEFAULT_DEVICE_TREE
 
 config OF_SPL_REMOVE_PROPS
        string "List of device tree properties to drop for SPL"
-       depends on OF_CONTROL && SPL
+       depends on SPL_OF_CONTROL
        default "pinctrl-0 pinctrl-names clocks clock-names interrupt-parent"
        help
          Since SPL normally runs in a reduced memory space, the device tree
index c77c02cdfce262cdb6910a4746b149f2b9f0d07f..20f52566f09c03bfeaa869855aa81649e109dc2c 100644 (file)
@@ -25,6 +25,7 @@
 
 #include <common.h>
 #include <config.h>
+#include <memalign.h>
 #include <ext4fs.h>
 #include <ext_common.h>
 #include "ext4_common.h"
index cab5465b9d4f9e99158dbdc8cd2f704e090c9b4b..727a2f753df391457010925aa237a46330b5cf5f 100644 (file)
@@ -24,6 +24,7 @@
 #include <ext4fs.h>
 #include <inttypes.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <stddef.h>
 #include <linux/stat.h>
 #include <linux/time.h>
@@ -614,8 +615,7 @@ static int parse_path(char **arr, char *dirname)
        arr[i] = zalloc(strlen("/") + 1);
        if (!arr[i])
                return -ENOMEM;
-
-       arr[i++] = "/";
+       memcpy(arr[i++], "/", strlen("/"));
 
        /* add each path entry after root */
        while (token != NULL) {
@@ -745,6 +745,11 @@ end:
 fail:
        free(depth_dirname);
        free(parse_dirname);
+       for (i = 0; i < depth; i++) {
+               if (!ptr[i])
+                       break;
+               free(ptr[i]);
+       }
        free(ptr);
        free(parent_inode);
        free(first_inode);
@@ -765,6 +770,7 @@ static int check_filename(char *filename, unsigned int blknr)
        struct ext2_dirent *previous_dir = NULL;
        char *ptr = NULL;
        struct ext_filesystem *fs = get_fs();
+       int ret = -1;
 
        /* get the first block of root */
        first_block_no_of_root = blknr;
@@ -818,12 +824,12 @@ static int check_filename(char *filename, unsigned int blknr)
                if (ext4fs_put_metadata(root_first_block_addr,
                                        first_block_no_of_root))
                        goto fail;
-               return inodeno;
+               ret = inodeno;
        }
 fail:
        free(root_first_block_buffer);
 
-       return -1;
+       return ret;
 }
 
 int ext4fs_filename_check(char *filename)
@@ -2040,7 +2046,7 @@ static char *ext4fs_read_symlink(struct ext2fs_node *node)
                status = ext4fs_read_file(diro, 0,
                                           __le32_to_cpu(diro->inode.size),
                                           symlink, &actread);
-               if (status == 0) {
+               if ((status < 0) || (actread == 0)) {
                        free(symlink);
                        return 0;
                }
index fbc4c4b1cc1a48e2f458a0ef30df97b451d40675..e027916763f9b52937c7fe13f1698b67b94eb901 100644 (file)
@@ -23,6 +23,7 @@
 
 
 #include <common.h>
+#include <memalign.h>
 #include <linux/stat.h>
 #include <div64.h>
 #include "ext4_common.h"
@@ -986,26 +987,17 @@ int ext4_write_file(const char *filename, void *buf, loff_t offset,
                return -1;
        }
 
-       /* mount the filesystem */
-       if (!ext4fs_mount(0)) {
-               printf("** Error Bad ext4 partition **\n");
-               goto fail;
-       }
-
        ret = ext4fs_write(filename, buf, len);
-
        if (ret) {
                printf("** Error ext4fs_write() **\n");
                goto fail;
        }
-       ext4fs_close();
 
        *actwrite = len;
 
        return 0;
 
 fail:
-       ext4fs_close();
        *actwrite = 0;
 
        return -1;
index bccc3e3ed8fd0929c7f1adf33b2125178be75ccb..f939bc5deed2770e84c98dcfd4bc8fe056070655 100644 (file)
@@ -16,6 +16,7 @@
 #include <asm/byteorder.h>
 #include <part.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <linux/compiler.h>
 #include <linux/ctype.h>
 
@@ -45,11 +46,18 @@ static disk_partition_t cur_part_info;
 
 static int disk_read(__u32 block, __u32 nr_blocks, void *buf)
 {
+       ulong ret;
+
        if (!cur_dev || !cur_dev->block_read)
                return -1;
 
-       return cur_dev->block_read(cur_dev->dev,
-                       cur_part_info.start + block, nr_blocks, buf);
+       ret = cur_dev->block_read(cur_dev->dev,
+                                 cur_part_info.start + block, nr_blocks, buf);
+
+       if (nr_blocks && ret == 0)
+               return -1;
+
+       return ret;
 }
 
 int fat_set_blk_dev(block_dev_desc_t *dev_desc, disk_partition_t *info)
@@ -895,6 +903,7 @@ int do_fat_read_at(const char *filename, loff_t pos, void *buffer,
        strcpy(fnamecopy, filename);
        downcase(fnamecopy);
 
+root_reparse:
        if (*fnamecopy == '\0') {
                if (!dols)
                        goto exit;
@@ -1180,6 +1189,34 @@ rootdir_done:
                if (isdir && !(dentptr->attr & ATTR_DIR))
                        goto exit;
 
+               /*
+                * If we are looking for a directory, and found a directory
+                * type entry, and the entry is for the root directory (as
+                * denoted by a cluster number of 0), jump back to the start
+                * of the function, since at least on FAT12/16, the root dir
+                * lives in a hard-coded location and needs special handling
+                * to parse, rather than simply following the cluster linked
+                * list in the FAT, like other directories.
+                */
+               if (isdir && (dentptr->attr & ATTR_DIR) && !START(dentptr)) {
+                       /*
+                        * Modify the filename to remove the prefix that gets
+                        * back to the root directory, so the initial root dir
+                        * parsing code can continue from where we are without
+                        * confusion.
+                        */
+                       strcpy(fnamecopy, nextname ?: "");
+                       /*
+                        * Set up state the same way as the function does when
+                        * first started. This is required for the root dir
+                        * parsing code operates in its expected environment.
+                        */
+                       subname = "";
+                       cursect = mydata->rootdir_sect;
+                       isdir = 0;
+                       goto root_reparse;
+               }
+
                if (idx >= 0)
                        subname = nextname;
        }
index 98b88add83c507116bfa05a7927983c785a13a2c..adb6940dffcc3f6f63843b4a5d70af3d4e66f991 100644 (file)
@@ -30,6 +30,8 @@ static void uppercase(char *str, int len)
 static int total_sector;
 static int disk_write(__u32 block, __u32 nr_blocks, void *buf)
 {
+       ulong ret;
+
        if (!cur_dev || !cur_dev->block_write)
                return -1;
 
@@ -39,8 +41,13 @@ static int disk_write(__u32 block, __u32 nr_blocks, void *buf)
                return -1;
        }
 
-       return cur_dev->block_write(cur_dev->dev,
-                       cur_part_info.start + block, nr_blocks, buf);
+       ret = cur_dev->block_write(cur_dev->dev,
+                                  cur_part_info.start + block,
+                                  nr_blocks, buf);
+       if (nr_blocks && ret == 0)
+               return -1;
+
+       return ret;
 }
 
 /*
index 0bf52db0cef5c1ce0ecb271ab234e5cd5a174d03..41763a189790041cd311c1fd608a79c186b783e9 100644 (file)
@@ -28,6 +28,9 @@
 #include <linux/writeback.h>
 #else
 
+#include <common.h>
+#include <malloc.h>
+#include <memalign.h>
 #include <linux/compat.h>
 #include <linux/stat.h>
 #include <linux/err.h>
index 4daa7fad53df51acffcc7d58199181412e05b6d6..f7a084747e692ac0506cc8649b93058351e71f11 100644 (file)
@@ -23,6 +23,8 @@
  *          Adrian Hunter
  */
 
+#include <common.h>
+#include <memalign.h>
 #include "ubifs.h"
 #include <u-boot/zlib.h>
 
index c12f402f773ff6d0a334413437ff9bf17e03f236..68b24d0778d4c2f64b2d608c14293387d130e5d3 100644 (file)
@@ -973,102 +973,6 @@ int cpu_release(int nr, int argc, char * const argv[]);
 
 #define ROUND(a,b)             (((a) + (b) - 1) & ~((b) - 1))
 
-/*
- * ARCH_DMA_MINALIGN is defined in asm/cache.h for each architecture.  It
- * is used to align DMA buffers.
- */
-#ifndef __ASSEMBLY__
-#include <asm/cache.h>
-#endif
-
-/*
- * The ALLOC_CACHE_ALIGN_BUFFER macro is used to allocate a buffer on the
- * stack that meets the minimum architecture alignment requirements for DMA.
- * Such a buffer is useful for DMA operations where flushing and invalidating
- * the cache before and after a read and/or write operation is required for
- * correct operations.
- *
- * When called the macro creates an array on the stack that is sized such
- * that:
- *
- * 1) The beginning of the array can be advanced enough to be aligned.
- *
- * 2) The size of the aligned portion of the array is a multiple of the minimum
- *    architecture alignment required for DMA.
- *
- * 3) The aligned portion contains enough space for the original number of
- *    elements requested.
- *
- * The macro then creates a pointer to the aligned portion of this array and
- * assigns to the pointer the address of the first element in the aligned
- * portion of the array.
- *
- * Calling the macro as:
- *
- *     ALLOC_CACHE_ALIGN_BUFFER(uint32_t, buffer, 1024);
- *
- * Will result in something similar to saying:
- *
- *     uint32_t    buffer[1024];
- *
- * The following differences exist:
- *
- * 1) The resulting buffer is guaranteed to be aligned to the value of
- *    ARCH_DMA_MINALIGN.
- *
- * 2) The buffer variable created by the macro is a pointer to the specified
- *    type, and NOT an array of the specified type.  This can be very important
- *    if you want the address of the buffer, which you probably do, to pass it
- *    to the DMA hardware.  The value of &buffer is different in the two cases.
- *    In the macro case it will be the address of the pointer, not the address
- *    of the space reserved for the buffer.  However, in the second case it
- *    would be the address of the buffer.  So if you are replacing hard coded
- *    stack buffers with this macro you need to make sure you remove the & from
- *    the locations where you are taking the address of the buffer.
- *
- * Note that the size parameter is the number of array elements to allocate,
- * not the number of bytes.
- *
- * This macro can not be used outside of function scope, or for the creation
- * of a function scoped static buffer.  It can not be used to create a cache
- * line aligned global buffer.
- */
-#define PAD_COUNT(s, pad) (((s) - 1) / (pad) + 1)
-#define PAD_SIZE(s, pad) (PAD_COUNT(s, pad) * pad)
-#define ALLOC_ALIGN_BUFFER_PAD(type, name, size, align, pad)           \
-       char __##name[ROUND(PAD_SIZE((size) * sizeof(type), pad), align)  \
-                     + (align - 1)];                                   \
-                                                                       \
-       type *name = (type *) ALIGN((uintptr_t)__##name, align)
-#define ALLOC_ALIGN_BUFFER(type, name, size, align)            \
-       ALLOC_ALIGN_BUFFER_PAD(type, name, size, align, 1)
-#define ALLOC_CACHE_ALIGN_BUFFER_PAD(type, name, size, pad)            \
-       ALLOC_ALIGN_BUFFER_PAD(type, name, size, ARCH_DMA_MINALIGN, pad)
-#define ALLOC_CACHE_ALIGN_BUFFER(type, name, size)                     \
-       ALLOC_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
-
-/*
- * DEFINE_CACHE_ALIGN_BUFFER() is similar to ALLOC_CACHE_ALIGN_BUFFER, but it's
- * purpose is to allow allocating aligned buffers outside of function scope.
- * Usage of this macro shall be avoided or used with extreme care!
- */
-#define DEFINE_ALIGN_BUFFER(type, name, size, align)                   \
-       static char __##name[ALIGN(size * sizeof(type), align)] \
-                       __aligned(align);                               \
-                                                                       \
-       static type *name = (type *)__##name
-#define DEFINE_CACHE_ALIGN_BUFFER(type, name, size)                    \
-       DEFINE_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
-
-#ifndef __ASSEMBLY__
-#include <malloc.h>
-
-static inline void *malloc_cache_aligned(size_t size)
-{
-       return memalign(ARCH_DMA_MINALIGN, ALIGN(size, ARCH_DMA_MINALIGN));
-}
-#endif
-
 /*
  * check_member() - Check the offset of a structure member
  *
index ad3f52ac929d224a47696e3afbaff582a92f8c8d..1e458f44f6d8ea498bc3060f5b6a4a3914632579 100644 (file)
@@ -460,13 +460,13 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_INIT_RAM_ADDR       0xfdd00000      /* Initial L1 address */
 #ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH     0xf
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe0ec000
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
          CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW)
 #else
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe0ec000 /* Initial L1 address */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe03c000 /* Initial L1 address */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW CONFIG_SYS_INIT_RAM_ADDR_PHYS
 #endif
index 931816bf36a07942aee2d4d45400f1015cc37da6..a42c93690dc1ecae3344e5aff6c6f00ade1072f8 100644 (file)
@@ -18,6 +18,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_BOOKE           1       /* BOOKE */
 #define CONFIG_E500            1       /* BOOKE e500 family */
index d24d1ca522487920a11bc8dae07af390cf7499cf..8942aae3efe3cbc1364c911155daa8298c984d94 100644 (file)
@@ -13,6 +13,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_BOOKE           1       /* BOOKE */
 #define CONFIG_E500            1       /* BOOKE e500 family */
index d7aa5011f45a9487698dc5768ca0eced031e0768..67fac7029418ca2c27d4cf19086a016be2135699 100644 (file)
@@ -11,6 +11,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_BOOKE           1       /* BOOKE */
 #define CONFIG_E500            1       /* BOOKE e500 family */
index eef1b1e5060c4bbd2f09ae0bb70dbaa50b1ba004..842afe1421cbea924359cd22e1c5e1b894bc5859 100644 (file)
@@ -13,6 +13,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 #ifdef CONFIG_36BIT
 #define CONFIG_PHYS_64BIT
 #endif
index 675ca874f6a0857e3944f191386a5be2e44f0838..2e8db5a67b0c677a97d5150bb34e738e910e9fb4 100644 (file)
@@ -13,6 +13,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_BOOKE           1       /* BOOKE */
 #define CONFIG_E500            1       /* BOOKE e500 family */
index 5a481d5207616e8701566ca3eed1832f67d4b142..fabe6bf0cf83869452376856911a18f6c39a281d 100644 (file)
@@ -18,6 +18,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_BOOKE           1       /* BOOKE */
 #define CONFIG_E500            1       /* BOOKE e500 family */
index 05e5a3d08e3fb72cdc54b9c0865380d8dbd58094..7a2131bb41916ba9bb71608bcd794b0add5c83e3 100644 (file)
@@ -10,6 +10,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_BOOKE           1       /* BOOKE */
 #define CONFIG_E500            1       /* BOOKE e500 family */
index ad8082950b99f7da12117e5f23900078c5e13305..9e38724710cb4f602d2b712ed8833c973f89a7f1 100644 (file)
@@ -10,6 +10,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_BOOKE           1       /* BOOKE */
 #define CONFIG_E500            1       /* BOOKE e500 family */
index de56c489cdb736f60b9ded5af1cd8c6cf0b3067f..9a487e0a23eee02dcb39246724b84cbe096be7ac 100644 (file)
@@ -13,6 +13,9 @@
 #ifndef __CONFIG_H
 #define __CONFIG_H
 
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_BOARDINFO
+
 /* High Level Configuration Options */
 #define CONFIG_MPC8610         1       /* MPC8610 specific */
 #define CONFIG_MPC8610HPCD     1       /* MPC8610HPCD board specific */
index 2f78e05c575da124fe2941ce4207fabeebf373a0..92f51f6fd65df0cf46eca2629366bbba023ab810 100644 (file)
@@ -475,13 +475,13 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_INIT_RAM_ADDR       0xfdd00000      /* Initial L1 address */
 #ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH     0xf
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe0ec000
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
          CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW)
 #else
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe0ec000 /* Initial L1 address */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe03c000 /* Initial L1 address */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW CONFIG_SYS_INIT_RAM_ADDR_PHYS
 #endif
index 386d0e6e82bca72f385fc751cc86441cd77a06fc..324f7108d5a12cf16988018e5359ac26b0da4c08 100644 (file)
@@ -476,13 +476,13 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_INIT_RAM_ADDR       0xfdd00000      /* Initial L1 address */
 #ifdef CONFIG_PHYS_64BIT
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH     0xf
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe0ec000
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
          CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW)
 #else
-#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe0ec000 /* Initial L1 address */
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS  0xfe03c000 /* Initial L1 address */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH 0
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW CONFIG_SYS_INIT_RAM_ADDR_PHYS
 #endif
index a0390a845bad0b3d127ba5cada335d87c21f0172..1f4616011af4085e0635abf764cd3b3f8b079ea6 100644 (file)
@@ -380,7 +380,7 @@ unsigned long get_board_ddr_clk(void);
 #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
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
index 39273377da8d23e389b05f54858b9863fe608df7..cd5b3e2adafcdbde17b57c6d21e7ee88b09844aa 100644 (file)
@@ -432,7 +432,7 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_rcw.cfg
 #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
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
index 19f07f86972fd41a7f8ca19db02ef3b342eb85f3..23ca0cfcebf7be2df3a69e7aaefda07898272b87 100644 (file)
@@ -430,7 +430,7 @@ unsigned long get_board_ddr_clk(void);
 #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
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
                        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
index b0d8399fdd327ea6af443780329037d2e6756fe8..ef42b88854e1b8709d061cb392b02cfb90465c8e 100644 (file)
@@ -390,7 +390,7 @@ unsigned long get_board_ddr_clk(void);
 #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
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
                        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
index edc03c34149aa4aa350ad87a272ad4b0daa3ba68..d43f6b7ea40273510d1cf2d782032cc5bcfab46d 100644 (file)
 #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
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
diff --git a/include/configs/alpr.h b/include/configs/alpr.h
deleted file mode 100644 (file)
index f113ebd..0000000
+++ /dev/null
@@ -1,351 +0,0 @@
-/*
- * (C) Copyright 2006-2008
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*-----------------------------------------------------------------------
- * High Level Configuration Options
- *----------------------------------------------------------------------*/
-#define CONFIG_ALPR            1           /* Board is ebony           */
-#define CONFIG_440GX           1           /* Specifc GX support       */
-#define CONFIG_440             1           /* ... PPC440 family        */
-#define CONFIG_BOARD_EARLY_INIT_F 1        /* Call board_pre_init      */
-#define CONFIG_LAST_STAGE_INIT 1           /* call last_stage_init()   */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_SYS_CLK_FREQ    33333333    /* external freq to pll     */
-#define CONFIG_4xx_DCACHE              /* Enable i- and d-cache        */
-
-/*-----------------------------------------------------------------------
- * Base addresses -- Note these are effective addresses where the
- * actual resources get mapped (not physical addresses)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_SDRAM_BASE          0x00000000      /* _must_ be 0                  */
-#define CONFIG_SYS_FLASH_BASE          0xffe00000      /* start of FLASH               */
-#define CONFIG_SYS_MONITOR_BASE        0xfffc0000      /* start of monitor             */
-#define CONFIG_SYS_PCI_MEMBASE         0x80000000      /* mapped pci memory            */
-#define        CONFIG_SYS_PCI_MEMSIZE          0x40000000      /* size of mapped pci memory    */
-#define CONFIG_SYS_ISRAM_BASE          0xc0000000      /* internal SRAM                */
-#define CONFIG_SYS_PCI_BASE            0xd0000000      /* internal PCI regs            */
-#define CONFIG_SYS_PCI_MEMBASE1        CONFIG_SYS_PCI_MEMBASE  + 0x10000000
-#define CONFIG_SYS_PCI_MEMBASE2        CONFIG_SYS_PCI_MEMBASE1 + 0x10000000
-#define CONFIG_SYS_PCI_MEMBASE3        CONFIG_SYS_PCI_MEMBASE2 + 0x10000000
-
-
-#define CONFIG_SYS_FPGA_BASE       (CONFIG_SYS_PERIPHERAL_BASE + 0x08300000)
-#define CONFIG_SYS_NVRAM_BASE_ADDR (CONFIG_SYS_PERIPHERAL_BASE + 0x08000000)
-
-/*-----------------------------------------------------------------------
- * Initial RAM & stack pointer (placed in internal SRAM)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_TEMP_STACK_OCM  1
-#define CONFIG_SYS_OCM_DATA_ADDR   CONFIG_SYS_ISRAM_BASE
-#define CONFIG_SYS_INIT_RAM_ADDR   CONFIG_SYS_ISRAM_BASE  /* Initial RAM address       */
-#define CONFIG_SYS_INIT_RAM_SIZE    0x2000         /* Size of used area in RAM */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
-
-#define CONFIG_SYS_MONITOR_LEN     (256 * 1024)    /* Reserve 256 kB for Mon   */
-#define CONFIG_SYS_MALLOC_LEN      (128 * 1024)    /* Reserve 128 kB for malloc*/
-
-/*-----------------------------------------------------------------------
- * Serial Port
- *----------------------------------------------------------------------*/
-#define CONFIG_CONS_INDEX      2       /* Use UART1                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_SYS_BAUDRATE_TABLE  \
-    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
-/*-----------------------------------------------------------------------
- * FLASH related
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_FLASH_CFI           1       /* The flash is CFI compatible          */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use common CFI driver                */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max number of sectors on one chip    */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-#define CONFIG_SYS_FLASH_QUIET_TEST    1       /* don't warn upon unknown flash        */
-
-#define CONFIG_ENV_IS_IN_FLASH     1   /* use FLASH for environment vars       */
-
-#define CONFIG_ENV_SECT_SIZE   0x10000 /* size of one complete sector          */
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE-CONFIG_ENV_SECT_SIZE)
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR-CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-/*-----------------------------------------------------------------------
- * DDR SDRAM
- *----------------------------------------------------------------------*/
-#undef CONFIG_SPD_EEPROM               /* Don't use SPD EEPROM for setup       */
-#define CONFIG_SDRAM_BANK0     1       /* init onboard DDR SDRAM bank 0        */
-#undef CONFIG_SDRAM_ECC                        /* enable ECC support                   */
-#define CONFIG_SYS_SDRAM_TABLE { \
-               {(256 << 20), 13, 0x000C4001}, /* 256MB mode 3, 13x10(4)*/ \
-               {(64 << 20),  12, 0x00082001}} /* 64MB mode 2, 12x9(4)  */
-
-/*-----------------------------------------------------------------------
- * I2C
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-#define CONFIG_SYS_I2C_NOPROBES        { {0, 0x69} }   /* Don't probe these addrs */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (PCF8594C)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x54    /* EEPROM PCF8594C              */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3    /* The Philips PCF8594C has     */
-                                       /* 8 byte page write mode using */
-                                       /* last 3 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  40   /* and takes up to 40 msec */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \"run kernelx\" to boot the system;"                 \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth3\0"                                                 \
-       "hostname=alpr\0"                                               \
-       "fdt_file=alpr/alpr.dtb\0"                                      \
-       "fdt_addr=400000\0"                                             \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath} ${init}\0"             \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS1,${baudrate} " \
-               "mem=193M\0"                                            \
-       "flash_nfs=run nfsargs addip addtty;"                           \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip addtty;"                          \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;"     \
-               "bootm\0"                                               \
-       "net_nfs_fdt=tftp 200000 ${bootfile};"                          \
-               "tftp ${fdt_addr} ${fdt_file};"                         \
-               "run nfsargs addip addtty;"                             \
-               "bootm 200000 - ${fdt_addr}\0"                          \
-       "rootpath=/opt/projects/alpr/nfs_root\0"                        \
-       "bootfile=/alpr/uImage\0"                                       \
-       "kernel_addr=fff00000\0"                                        \
-       "ramdisk_addr=fff10000\0"                                       \
-       "load=tftp 100000 /alpr/u-boot/u-boot.bin\0"                    \
-       "update=protect off fffc0000 ffffffff;era fffc0000 ffffffff;"   \
-               "cp.b 100000 fffc0000 40000;"                           \
-               "setenv filesize;saveenv\0"                             \
-       "upd=run load update\0"                                         \
-       "ethprime=ppc_4xx_eth3\0"                                       \
-       "ethact=ppc_4xx_eth3\0"                                         \
-       "autoload=no\0"                                                 \
-       "ipconfig=dhcp;setenv serverip 11.0.0.152\0"                    \
-       "load_fpga=fpga load 0 ffe00000 10dd9a\0"                       \
-       "mtdargs=setenv bootargs root=/dev/mtdblock6 rw "               \
-               "rootfstype=jffs2 init=/sbin/init\0"                    \
-       "kernel1_mtd=nand read 200000 0 200000;run mtdargs addip addtty"\
-               ";bootm 200000\0"                                       \
-       "kernel2_mtd=nand read 200000 200000 200000;run mtdargs addip " \
-               "addtty;bootm 200000\0"                                 \
-       "kernel1=setenv actkernel 'kernel1';run load_fpga "             \
-               "kernel1_mtd\0"                                         \
-       "kernel2=setenv actkernel 'kernel2';run load_fpga "             \
-               "kernel2_mtd\0"                                         \
-       ""
-
-#define CONFIG_BOOTCOMMAND     "run kernel2"
-
-#define CONFIG_BOOTDELAY       2       /* autoboot after 5 seconds     */
-
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0x02    /* dummy setting, no EMAC0 used */
-#define CONFIG_PHY1_ADDR       0x03    /* dummy setting, no EMAC1 used */
-#define CONFIG_PHY2_ADDR       0x01    /* PHY address for EMAC2        */
-#define CONFIG_PHY3_ADDR       0x02    /* PHY address for EMAC3        */
-#define CONFIG_HAS_ETH0
-#define CONFIG_HAS_ETH1
-#define CONFIG_HAS_ETH2
-#define CONFIG_HAS_ETH3
-#define CONFIG_PHY_RESET       1       /* reset phy upon startup       */
-#define CONFIG_M88E1111_PHY    1       /* needed for PHY specific setup*/
-#define CONFIG_PHY_GIGE                1       /* Include GbE speed/duplex detection */
-#define CONFIG_SYS_RX_ETH_BUFFER       32      /* Number of ethernet rx buffers & descriptors */
-
-#define CONFIG_NETCONSOLE              /* include NetConsole support   */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_FPGA_LOADMK
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_PCI
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_ALT_MEMTEST         1       /* Enable more extensive memtest*/
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_MX_CYCLIC       1       /* enable mdc/mwc commands      */
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-#define CONFIG_VERSION_VARIABLE        1       /* include version env variable */
-
-#define CONFIG_SYS_4xx_RESET_TYPE      0x2     /* use chip reset on this board */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-/* General PCI */
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-#define CONFIG_PCI_SCAN_SHOW           /* show pci devices on startup  */
-#define CONFIG_SYS_PCI_TARGBASE    0x80000000  /* PCIaddr mapped to CONFIG_SYS_PCI_MEMBASE */
-#define CONFIG_PCI_BOOTDELAY   1       /* enable pci bootdelay variable*/
-
-/* Board-specific PCI */
-#define CONFIG_SYS_PCI_TARGET_INIT             /* let board init pci target    */
-#define CONFIG_SYS_PCI_MASTER_INIT
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x10e8  /* AMCC */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0xcafe  /* Whatever */
-
-/*-----------------------------------------------------------------------
- * FPGA stuff
- *-----------------------------------------------------------------------*/
-#define CONFIG_FPGA
-#define CONFIG_FPGA_ALTERA
-#define CONFIG_FPGA_CYCLON2
-#define CONFIG_SYS_FPGA_CHECK_CTRLC
-#define CONFIG_SYS_FPGA_PROG_FEEDBACK
-#define CONFIG_FPGA_COUNT       1              /* Ich habe 2 ... aber in
-                                       Reihe geschaltet -> sollte gehen,
-                                       aufpassen mit Datasize ist jetzt
-                                       halt doppelt so gross ... Seite 306
-                                       ist das mit den multiple Device in PS
-                                       Mode erklaert ...*/
-
-/* FPGA program pin configuration */
-#define CONFIG_SYS_GPIO_CLK            18      /* FPGA clk pin (cpu output)            */
-#define CONFIG_SYS_GPIO_DATA           19      /* FPGA data pin (cpu output)           */
-#define CONFIG_SYS_GPIO_STATUS         20      /* FPGA status pin (cpu input)          */
-#define CONFIG_SYS_GPIO_CONFIG         21      /* FPGA CONFIG pin (cpu output)         */
-#define CONFIG_SYS_GPIO_CON_DON        22      /* FPGA CONFIG_DONE pin (cpu input)     */
-
-#define CONFIG_SYS_GPIO_SEL_DPR        14      /* cpu output */
-#define CONFIG_SYS_GPIO_SEL_AVR        15      /* cpu output */
-#define CONFIG_SYS_GPIO_PROG_EN        23      /* cpu output */
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup
- *-----------------------------------------------------------------------*/
-#define CONFIG_SYS_GPIO_SHUTDOWN       (0x80000000 >> 6)
-#define CONFIG_SYS_GPIO_SSD_EMPTY      (0x80000000 >> 9)
-#define CONFIG_SYS_GPIO_EREADY         (0x80000000 >> 26)
-#define CONFIG_SYS_GPIO_REV0           (0x80000000 >> 14)
-#define CONFIG_SYS_GPIO_REV1           (0x80000000 >> 15)
-
-/*-----------------------------------------------------------------------
- * NAND-FLASH stuff
- *-----------------------------------------------------------------------*/
-#define CONFIG_SYS_MAX_NAND_DEVICE     4
-#define CONFIG_SYS_NAND_BASE           0xF0000000      /* NAND FLASH Base Address      */
-#define CONFIG_SYS_NAND_BASE_LIST      { CONFIG_SYS_NAND_BASE + 0, CONFIG_SYS_NAND_BASE + 2,   \
-                                 CONFIG_SYS_NAND_BASE + 4, CONFIG_SYS_NAND_BASE + 6 }
-#define CONFIG_SYS_NAND_QUIET_TEST     1       /* don't warn upon unknown NAND flash   */
-#define CONFIG_SYS_NAND_MAX_OOBFREE    2
-#define CONFIG_SYS_NAND_MAX_ECCPOS     56
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_FLASH               CONFIG_SYS_FLASH_BASE
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x92015480
-#define CONFIG_SYS_EBC_PB0CR           (CONFIG_SYS_FLASH | 0x3A000) /* BS=2MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (NAND-FLASH) initialization                                   */
-#define CONFIG_SYS_EBC_PB1AP           0x01840380      /* TWT=3                        */
-#define CONFIG_SYS_EBC_PB1CR           (CONFIG_SYS_NAND_BASE | 0x18000) /* BS=1MB,BU=R/W,BW=8bit */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_OF_BOARD_SETUP  1
-
-#endif /* __CONFIG_H */
index e89c49e1e3a0a0f7c4c2b6c0f7080c2330af562d..3cf768e662d634a6d3dd09209ee1c28bc545687d 100644 (file)
@@ -70,6 +70,7 @@
 #ifndef CONFIG_SPL_BUILD
 #define CONFIG_EXTRA_ENV_SETTINGS \
        DEFAULT_LINUX_BOOT_ENV \
+       DEFAULT_MMC_TI_ARGS \
        "boot_fdt=try\0" \
        "bootpart=0:2\0" \
        "bootdir=/boot\0" \
                "uuid_disk=${uuid_gpt_disk};" \
                "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \
        "optargs=\0" \
-       "mmcdev=0\0" \
-       "mmcroot=/dev/mmcblk0p2 ro\0" \
-       "mmcrootfstype=ext4 rootwait\0" \
        "ramroot=/dev/ram0 rw\0" \
        "ramrootfstype=ext2\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "${optargs} " \
-               "root=${mmcroot} " \
-               "rootfstype=${mmcrootfstype}\0" \
        "spiroot=/dev/mtdblock4 rw\0" \
        "spirootfstype=jffs2\0" \
        "spisrcaddr=0xe0000\0" \
        "loadramdisk=load mmc ${mmcdev} ${rdaddr} ramdisk.gz\0" \
        "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
        "loadfdt=load mmc ${bootpart} ${fdtaddr} ${bootdir}/${fdtfile}\0" \
-       "mmcloados=run mmcargs; " \
+       "mmcloados=run args_mmc; " \
                "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
                        "if run loadfdt; then " \
                                "bootz ${loadaddr} - ${fdtaddr}; " \
diff --git a/include/configs/am335x_sl50.h b/include/configs/am335x_sl50.h
new file mode 100644 (file)
index 0000000..f655e69
--- /dev/null
@@ -0,0 +1,138 @@
+/*
+ * am335x_sl50.h
+ *
+ * Copyright (C) 2015 Toby Churchill Ltd - http://www.toby-churchill.com/
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_AM335X_EVM_H
+#define __CONFIG_AM335X_EVM_H
+
+#include <configs/ti_am335x_common.h>
+#undef CONFIG_BOOTDELAY
+
+#ifndef CONFIG_SPL_BUILD
+#ifndef CONFIG_FIT
+# define CONFIG_FIT
+#endif
+# define CONFIG_TIMESTAMP
+# define CONFIG_LZO
+#endif
+
+#define CONFIG_SYS_BOOTM_LEN           (16 << 20)
+
+/*#define CONFIG_MACH_TYPE             3589     Until the next sync */
+#define CONFIG_BOARD_LATE_INIT
+
+/* Clock Defines */
+#define V_OSCK                         24000000  /* Clock output from T2 */
+#define V_SCLK                         (V_OSCK)
+
+/* Always 128 KiB env size */
+#define CONFIG_ENV_SIZE                        (128 << 10)
+
+/* Enhance our eMMC support / experience. */
+#define CONFIG_CMD_GPT
+#define CONFIG_EFI_PARTITION
+
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+
+#ifndef CONFIG_SPL_BUILD
+
+#include <config_distro_defaults.h>
+
+#define MEM_LAYOUT_ENV_SETTINGS \
+       "scriptaddr=0x80000000\0" \
+       "pxefile_addr_r=0x80100000\0" \
+       "kernel_addr_r=0x82000000\0" \
+       "fdt_addr_r=0x88000000\0" \
+       "ramdisk_addr_r=0x88080000\0" \
+
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0) \
+       func(MMC, mmc, 1)
+
+#define AM335XX_BOARD_FDTFILE \
+       "fdtfile=am335x-sl50.dtb\0" \
+
+#include <config_distro_bootcmd.h>
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       AM335XX_BOARD_FDTFILE \
+       MEM_LAYOUT_ENV_SETTINGS \
+       BOOTENV
+
+#endif
+
+/* NS16550 Configuration */
+#define CONFIG_SYS_NS16550_COM1                0x44e09000      /* Base EVM has UART0 */
+#define CONFIG_SYS_NS16550_COM2                0x48022000      /* UART1 */
+#define CONFIG_SYS_NS16550_COM3                0x48024000      /* UART2 */
+#define CONFIG_SYS_NS16550_COM4                0x481a6000      /* UART3 */
+#define CONFIG_SYS_NS16550_COM5                0x481a8000      /* UART4 */
+#define CONFIG_SYS_NS16550_COM6                0x481aa000      /* UART5 */
+#define CONFIG_BAUDRATE                        115200
+
+#define CONFIG_CMD_EEPROM
+#define CONFIG_ENV_EEPROM_IS_ON_I2C
+#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50    /* Main EEPROM */
+#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
+#define CONFIG_SYS_I2C_MULTI_EEPROMS
+
+/* PMIC support */
+#define CONFIG_POWER_TPS65217
+#define CONFIG_POWER_TPS65910
+
+/* SPL */
+#define CONFIG_SPL_POWER_SUPPORT
+#define CONFIG_SPL_YMODEM_SUPPORT
+
+/* Bootcount using the RTC block */
+#define CONFIG_BOOTCOUNT_LIMIT
+#define CONFIG_BOOTCOUNT_AM33XX
+#define CONFIG_SYS_BOOTCOUNT_BE
+
+#define CONFIG_SPL_LDSCRIPT            "$(CPUDIR)/am33xx/u-boot-spl.lds"
+
+#ifndef CONFIG_SPL_USBETH_SUPPORT
+/* To support eMMC booting */
+#define CONFIG_STORAGE_EMMC
+#define CONFIG_FASTBOOT_FLASH_MMC_DEV   1
+#endif
+
+#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_USBETH_SUPPORT)
+/* Remove other SPL modes. */
+#undef CONFIG_SPL_YMODEM_SUPPORT
+#undef CONFIG_SPL_NAND_SUPPORT
+#undef CONFIG_SPL_MMC_SUPPORT
+#define CONFIG_ENV_IS_NOWHERE
+#undef CONFIG_ENV_IS_IN_NAND
+/* disable host part of MUSB in SPL */
+#undef CONFIG_MUSB_HOST
+/* disable EFI partitions and partition UUID support */
+#undef CONFIG_PARTITION_UUIDS
+#undef CONFIG_EFI_PARTITION
+/* General network SPL  */
+#define CONFIG_SPL_NET_SUPPORT
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SPL_NET_VCI_STRING      "AM335x U-Boot SPL"
+#endif
+
+#if defined(CONFIG_EMMC_BOOT)
+#undef CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SPL_ENV_SUPPORT
+#define CONFIG_SYS_MMC_ENV_DEV         1
+#define CONFIG_SYS_MMC_ENV_PART                2
+#define CONFIG_ENV_OFFSET              0x0
+#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
+#define CONFIG_SYS_REDUNDAND_ENVIRONMENT
+#endif
+
+/* Network. */
+#define CONFIG_PHY_GIGE
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_SMSC
+
+#endif /* ! __CONFIG_AM335X_SL50_H */
index 15fa3e3fecea49903413194991722c139fbdf608..d868442acb5ae9d8ff3aa31a1f26b7a5a51b349b 100644 (file)
 #ifndef CONFIG_SPL_BUILD
 #define CONFIG_EXTRA_ENV_SETTINGS \
        DEFAULT_LINUX_BOOT_ENV \
+       DEFAULT_MMC_TI_ARGS \
        "fdtfile=undefined\0" \
        "bootpart=0:2\0" \
        "bootdir=/boot\0" \
                "uuid_disk=${uuid_gpt_disk};" \
                "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}\0" \
        "optargs=\0" \
-       "mmcdev=0\0" \
-       "mmcroot=/dev/mmcblk0p2 rw\0" \
-       "mmcrootfstype=ext4 rootwait\0" \
        "usbroot=/dev/sda2 rw\0" \
        "usbrootfstype=ext4 rootwait\0" \
        "usbdev=0\0" \
        "ramroot=/dev/ram0 rw\0" \
        "ramrootfstype=ext2\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "${optargs} " \
-               "root=${mmcroot} " \
-               "rootfstype=${mmcrootfstype}\0" \
        "usbargs=setenv bootargs console=${console} " \
                "${optargs} " \
                "root=${usbroot} " \
                        "if run loadimage; then " \
                                "run loadfdt; " \
                                "echo Booting from mmc${mmcdev} ...; " \
-                               "run mmcargs; " \
+                               "run args_mmc; " \
                                "bootz ${loadaddr} - ${fdtaddr}; " \
                        "fi;" \
                "fi;\0" \
index 4a5d4fb0802cee4f3dbb01ef8504da057b462478..20afdd6bc07bc1dba47ce99a9f156a50b8f9ecc9 100644 (file)
@@ -45,7 +45,6 @@
 #define CONFIG_SPI_FLASH_MTD
 #define CONFIG_SPI_FLASH_STMICRO
 #define CONFIG_MXC_SPI
-#define CONFIG_SF_DEFAULT_BUS          3
 #define CONFIG_SF_DEFAULT_SPEED                20000000
 #define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
 #define CONFIG_SYS_SPI_ST_ENABLE_WP_PIN
        "ubiboot=echo Booting from ubi ...; " \
                "run ubiargs addmtd addmisc set_fit_default;" \
                "bootm ${fit_addr_r}\0" \
-       "ubifs_load_fit=sf probe;ubi part ubi 2048;ubifsmount ubi:rootfs;" \
-               "ubifsload ${fit_addr_r} /boot/system.itb; " \
-               "imi ${fit_addr_r}\0 " \
        "rescueargs=setenv bootargs console=${console},${baudrate} " \
                "root=/dev/ram rw\0 " \
        "rescueboot=echo Booting rescue system from NOR ...; " \
index 258866a473a87675cf7b4bc9eb9fa1884afc71a9..be93debfa10415bf1d4bf36f2c76b30770538adc 100644 (file)
@@ -22,6 +22,7 @@
 
 #define CONFIG_FEC_XCV_TYPE            RMII
 
+#define CONFIG_SF_DEFAULT_BUS          3
 #define CONFIG_SF_DEFAULT_CS           0
 
 #define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
        "addmisc=setenv bootargs ${bootargs} consoleblank=0\0" \
        "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0" \
        "ubiargs=setenv bootargs console=${console},${baudrate} " \
-               "ubi.mtd=0,2048 root=ubi0:rootfs rootfstype=ubifs\0 "
+               "ubi.mtd=0,2048 root=ubi0:rootfs rootfstype=ubifs\0 " \
+       "ubifs_load_fit=sf probe;ubi part ubi 2048;ubifsmount ubi:rootfs;" \
+               "ubifsload ${fit_addr_r} /boot/system.itb; " \
+               "imi ${fit_addr_r}\0 "
 
 #define ARISTAINETOS_USB_OTG_PWR       IMX_GPIO_NR(4, 15)
 #define ARISTAINETOS_USB_H1_PWR                IMX_GPIO_NR(3, 31)
index faeafe2dda25b7ed8af05a73d070dd82c2c63d60..152f5e919afaad1be2c4844c883b7820d9aeee0c 100644 (file)
@@ -24,6 +24,7 @@
 #define CONFIG_FEC_XCV_TYPE            RGMII
 #define CONFIG_PHY_MICREL_KSZ9031
 
+#define CONFIG_SF_DEFAULT_BUS          3
 #define CONFIG_SF_DEFAULT_CS           1
 
 #define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
                "-(rescue-system);gpmi-nand:-(ubi)\0" \
        "addmisc=setenv bootargs ${bootargs} net.ifnames=0 consoleblank=0\0" \
        "ubiargs=setenv bootargs console=${console},${baudrate} " \
-               "ubi.mtd=0,4096 root=ubi0:rootfs rootfstype=ubifs\0 "
+               "ubi.mtd=0,4096 root=ubi0:rootfs rootfstype=ubifs\0 " \
+       "ubifs_load_fit=sf probe;ubi part ubi 4096;ubifsmount ubi:rootfs;" \
+               "ubifsload ${fit_addr_r} /boot/system.itb; " \
+               "imi ${fit_addr_r}\0 "
 
 #define CONFIG_SYS_I2C_MXC_I2C4                /* enable I2C bus 4 */
 
@@ -45,6 +49,8 @@
 /* Framebuffer */
 #define CONFIG_SYS_LDB_CLOCK 33246000
 #define CONFIG_LG4573
+#define CONFIG_LG4573_BUS 0
+#define CONFIG_LG4573_CS 0
 
 #define CONFIG_CMD_BMP
 
diff --git a/include/configs/aristainetos2b.h b/include/configs/aristainetos2b.h
new file mode 100644 (file)
index 0000000..78791db
--- /dev/null
@@ -0,0 +1,62 @@
+/*
+ * (C) Copyright 2015
+ * Heiko Schocher, DENX Software Engineering, hs@denx.de.
+ *
+ * Based on:
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ *
+ * Configuration settings for the Freescale i.MX6DL aristainetos2 board.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __ARISTAINETOS2B_CONFIG_H
+#define __ARISTAINETOS2B_CONFIG_H
+
+#define CONFIG_SYS_BOARD_VERSION       3
+#define CONFIG_HOSTNAME                aristainetos2
+#define CONFIG_BOARDNAME       "aristainetos2-revB"
+
+#define CONFIG_BOARD_LATE_INIT
+
+#define CONFIG_MXC_UART_BASE   UART2_BASE
+#define CONFIG_CONSOLE_DEV     "ttymxc1"
+
+#define CONFIG_FEC_XCV_TYPE            RGMII
+#define CONFIG_PHY_MICREL_KSZ9031
+
+#define CONFIG_SF_DEFAULT_BUS          0
+#define CONFIG_SF_DEFAULT_CS           0
+
+#define CONFIG_EXTRA_ENV_BOARD_SETTINGS \
+       "board_type=aristainetos2_7@1\0" \
+       "nor_bootdelay=-2\0" \
+       "mtdids=nand0=gpmi-nand,nor0=spi0.0\0" \
+       "mtdparts=mtdparts=spi0.0:832k(u-boot),64k(env),64k(env-red)," \
+               "-(rescue-system);gpmi-nand:-(ubi)\0" \
+       "addmisc=setenv bootargs ${bootargs} net.ifnames=0 consoleblank=0\0" \
+       "ubiargs=setenv bootargs console=${console},${baudrate} " \
+               "ubi.mtd=0,4096 root=ubi0:rootfs rootfstype=ubifs\0 " \
+       "ubifs_load_fit=sf probe;ubi part ubi 4096;ubifsmount ubi:rootfs;" \
+               "ubifsload ${fit_addr_r} /boot/system.itb; " \
+               "imi ${fit_addr_r}\0 " \
+
+#define CONFIG_SYS_I2C_MXC_I2C4                /* enable I2C bus 4 */
+
+#define ARISTAINETOS_USB_OTG_PWR       IMX_GPIO_NR(4, 15)
+#define ARISTAINETOS_USB_H1_PWR        IMX_GPIO_NR(1, 0)
+#define CONFIG_GPIO_ENABLE_SPI_FLASH   IMX_GPIO_NR(2, 15)
+
+/* Framebuffer */
+#define CONFIG_SYS_LDB_CLOCK 33246000
+#define CONFIG_LG4573
+#define CONFIG_LG4573_BUS 0
+#define CONFIG_LG4573_CS 1
+
+#define CONFIG_CMD_BMP
+
+#define CONFIG_PWM_IMX
+#define CONFIG_IMX6_PWM_PER_CLK        66000000
+
+#include "aristainetos-common.h"
+
+#endif                         /* __ARISTAINETOS2B_CONFIG_H */
index de5f12ebb05a0c2b3b64b9a155ae63157d4150c4..3d6b0ae0c32dae4726e235be71e11bd48216ce8e 100644 (file)
 
 #define CONFIG_SYS_CBSIZE              256
 #define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
-                                       sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_AUTO_COMPLETE
index 459b8f97e0b80eaae4870f55dff8a01deee10b4f..619f5dab177bdf569c849cde293a6c8db5f21d50 100644 (file)
 
 #define CONFIG_SYS_CBSIZE              256
 #define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_SYS_LONGHELP            1
 #define CONFIG_CMDLINE_EDITING 1
 #define CONFIG_AUTO_COMPLETE
index 9c595f28674133d705fbdb68070aef12dac624f5..4d260e9fa8972aad2c510d7bf6229751f93c8d4d 100644 (file)
 
 #define CONFIG_SYS_CBSIZE              256
 #define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_AUTO_COMPLETE
index 3eb0154c06cc22f1e64c02ca130e67673e20c5b7..2f251db1aebeb446c4d751b48474ec246acb777b 100644 (file)
 
 #define CONFIG_SYS_CBSIZE              256
 #define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_SYS_LONGHELP            1
 #define CONFIG_CMDLINE_EDITING         1
 #define CONFIG_AUTO_COMPLETE
index 2f6a3a57b49bb5b24a2806c45a99e960c4db53a5..70eaf1d6024589787523734c5788595c20f4b157 100644 (file)
 
 #define CONFIG_SYS_CBSIZE              256
 #define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_AUTO_COMPLETE
index acdd63e758f7df743d9905fac0e927ebc1da8157..44f821be05ba3c708cd7338d85850fd63ae10ae6 100644 (file)
 
 #define CONFIG_SYS_CBSIZE      256
 #define CONFIG_SYS_MAXARGS     16
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) \
-                                       + 16)
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_AUTO_COMPLETE
index f7a174edbf3b2b1f2d4cb17c1a60a83e1e96e241..cba927acb40e0175b223b2e43fde496fcac79c0d 100644 (file)
 
 #define CONFIG_SYS_CBSIZE              256
 #define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
 #define CONFIG_SYS_LONGHELP            1
 #define CONFIG_CMDLINE_EDITING         1
 #define CONFIG_AUTO_COMPLETE
index fbb584d9bf3c047dbfc566cd0cc734902257dc4d..2068e0de04abb4181d9dc1ba521c2defda2166d9 100644 (file)
 
 #define CONFIG_SYS_CBSIZE      256
 #define CONFIG_SYS_MAXARGS     16
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) \
-                                       + 16)
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CMDLINE_EDITING
 #define CONFIG_AUTO_COMPLETE
diff --git a/include/configs/balloon3.h b/include/configs/balloon3.h
deleted file mode 100644 (file)
index 124a766..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Balloon3 configuration file
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef        __CONFIG_H
-#define        __CONFIG_H
-
-/*
- * High Level Board Configuration Options
- */
-#define        CONFIG_CPU_PXA27X               1       /* Marvell PXA270 CPU */
-#define        CONFIG_BALLOON3                 1       /* Balloon3 board */
-
-/*
- * Environment settings
- */
-#define        CONFIG_ENV_OVERWRITE
-#define        CONFIG_SYS_MALLOC_LEN           (128*1024)
-#define        CONFIG_ARCH_CPU_INIT
-#define        CONFIG_BOOTCOMMAND                                              \
-       "fpga load 0x0 0x50000 0x62638; "                               \
-       "if usb reset && fatload usb 0 0xa4000000 uImage; then "        \
-               "bootm 0xa4000000; "                                    \
-       "fi; "                                                          \
-       "bootm 0xd0000;"
-#define        CONFIG_BOOTARGS                 "console=tty0 console=ttyS2,115200"
-#define        CONFIG_TIMESTAMP
-#define        CONFIG_BOOTDELAY                2       /* Autoboot delay */
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-#define        CONFIG_SYS_TEXT_BASE            0x0
-#define        CONFIG_LZMA                     /* LZMA compression support */
-
-/*
- * Serial Console Configuration
- */
-#define        CONFIG_PXA_SERIAL
-#define        CONFIG_STUART                   1
-#define CONFIG_CONS_INDEX              2
-#define        CONFIG_BAUDRATE                 115200
-
-/*
- * Bootloader Components Configuration
- */
-#undef CONFIG_CMD_ENV
-#define        CONFIG_CMD_USB
-#define        CONFIG_CMD_FPGA_LOADMK
-#undef CONFIG_LCD
-
-/*
- * KGDB
- */
-#ifdef CONFIG_CMD_KGDB
-#define        CONFIG_KGDB_BAUDRATE            230400  /* kgdb serial port speed */
-#endif
-
-/*
- * HUSH Shell Configuration
- */
-#define        CONFIG_SYS_HUSH_PARSER          1
-
-#define        CONFIG_SYS_LONGHELP
-#undef CONFIG_SYS_PROMPT
-#ifdef CONFIG_SYS_HUSH_PARSER
-#define        CONFIG_SYS_PROMPT               "$ "
-#else
-#endif
-#define        CONFIG_SYS_CBSIZE               256
-#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_DEVICE_NULLDEV       1
-
-/*
- * Clock Configuration
- */
-#define        CONFIG_SYS_CPUSPEED             0x290           /* 520MHz */
-
-/*
- * DRAM Map
- */
-#define        CONFIG_NR_DRAM_BANKS            3               /* 3 banks of DRAM */
-#define        PHYS_SDRAM_1                    0xa0000000      /* SDRAM Bank #1 */
-#define        PHYS_SDRAM_1_SIZE               0x08000000      /* 128 MB */
-#define        PHYS_SDRAM_2                    0xb0000000      /* SDRAM Bank #2 */
-#define        PHYS_SDRAM_2_SIZE               0x08000000      /* 128 MB */
-#define        PHYS_SDRAM_3                    0x80000000      /* SDRAM Bank #3 */
-#define        PHYS_SDRAM_3_SIZE               0x08000000      /* 128 MB */
-
-#define        CONFIG_SYS_DRAM_BASE            0xa0000000      /* CS0 */
-#define        CONFIG_SYS_DRAM_SIZE            0x18000000      /* 384 MB DRAM */
-
-#define        CONFIG_SYS_MEMTEST_START        0xa0400000      /* memtest works on */
-#define        CONFIG_SYS_MEMTEST_END          0xa0800000      /* 4 ... 8 MB in DRAM */
-
-#define        CONFIG_SYS_LOAD_ADDR            0xa1000000
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         \
-       (PHYS_SDRAM_1 + GENERATED_GBL_DATA_SIZE + 2048)
-
-/*
- * NOR FLASH
- */
-#ifdef CONFIG_CMD_FLASH
-#define        PHYS_FLASH_1                    0x00000000      /* Flash Bank #1 */
-#define        PHYS_FLASH_SIZE                 0x00800000      /* 8 MB */
-#define        CONFIG_SYS_FLASH_BASE           PHYS_FLASH_1
-
-#define        CONFIG_SYS_FLASH_CFI
-#define        CONFIG_FLASH_CFI_DRIVER         1
-#define        CONFIG_SYS_FLASH_CFI_WIDTH      FLASH_CFI_16BIT
-
-#define        CONFIG_SYS_MAX_FLASH_BANKS      1
-#define        CONFIG_SYS_MAX_FLASH_SECT       256
-
-#define        CONFIG_SYS_FLASH_USE_BUFFER_WRITE       1
-
-#define        CONFIG_SYS_FLASH_ERASE_TOUT     240000
-#define        CONFIG_SYS_FLASH_WRITE_TOUT     240000
-#define        CONFIG_SYS_FLASH_LOCK_TOUT      240000
-#define        CONFIG_SYS_FLASH_UNLOCK_TOUT    240000
-#define        CONFIG_SYS_FLASH_PROTECTION
-#define        CONFIG_ENV_IS_IN_FLASH
-#else
-#define        CONFIG_SYS_NO_FLASH
-#define        CONFIG_ENV_IS_NOWHERE
-#endif
-
-#define        CONFIG_SYS_MONITOR_BASE         0x000000
-#define        CONFIG_SYS_MONITOR_LEN          0x40000
-
-#define        CONFIG_ENV_SIZE                 0x2000
-#define        CONFIG_ENV_ADDR                 0x40000
-#define        CONFIG_ENV_SECT_SIZE            0x10000
-
-/*
- * GPIO settings
- */
-#define        CONFIG_SYS_GPSR0_VAL    0x307dc7fd
-#define        CONFIG_SYS_GPSR1_VAL    0x03cffa4e
-#define        CONFIG_SYS_GPSR2_VAL    0x7131c000
-#define        CONFIG_SYS_GPSR3_VAL    0x01e1f3ff
-
-#define        CONFIG_SYS_GPCR0_VAL    0x0
-#define        CONFIG_SYS_GPCR1_VAL    0x0
-#define        CONFIG_SYS_GPCR2_VAL    0x0
-#define        CONFIG_SYS_GPCR3_VAL    0x0
-
-#define        CONFIG_SYS_GPDR0_VAL    0xc0f98e02
-#define        CONFIG_SYS_GPDR1_VAL    0xfcffa8b7
-#define        CONFIG_SYS_GPDR2_VAL    0x22e3ffff
-#define        CONFIG_SYS_GPDR3_VAL    0x000201fe
-
-#define        CONFIG_SYS_GAFR0_L_VAL  0x96c00000
-#define        CONFIG_SYS_GAFR0_U_VAL  0xa5e5459b
-#define        CONFIG_SYS_GAFR1_L_VAL  0x699b759a
-#define        CONFIG_SYS_GAFR1_U_VAL  0xaaa5a5aa
-#define        CONFIG_SYS_GAFR2_L_VAL  0xaaaaaaaa
-#define        CONFIG_SYS_GAFR2_U_VAL  0x01f9a6aa
-#define        CONFIG_SYS_GAFR3_L_VAL  0x54510003
-#define        CONFIG_SYS_GAFR3_U_VAL  0x00001599
-
-#define        CONFIG_SYS_PSSR_VAL     0x30
-
-/*
- * Clock settings
- */
-#define        CONFIG_SYS_CKEN         0xffffffff
-#define        CONFIG_SYS_CCCR         0x00000290
-
-/*
- * Memory settings
- */
-#define        CONFIG_SYS_MSC0_VAL     0x7ff07ff8
-#define        CONFIG_SYS_MSC1_VAL     0x7ff07ff0
-#define        CONFIG_SYS_MSC2_VAL     0x74a42491
-#define        CONFIG_SYS_MDCNFG_VAL   0x89d309d3
-#define        CONFIG_SYS_MDREFR_VAL   0x001d8018
-#define        CONFIG_SYS_MDMRS_VAL    0x00220022
-#define        CONFIG_SYS_FLYCNFG_VAL  0x00000000
-#define        CONFIG_SYS_SXCNFG_VAL   0x00000000
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define        CONFIG_SYS_MECR_VAL     0x00000000
-#define        CONFIG_SYS_MCMEM0_VAL   0x00014307
-#define        CONFIG_SYS_MCMEM1_VAL   0x00014307
-#define        CONFIG_SYS_MCATT0_VAL   0x0001c787
-#define        CONFIG_SYS_MCATT1_VAL   0x0001c787
-#define        CONFIG_SYS_MCIO0_VAL    0x0001430f
-#define        CONFIG_SYS_MCIO1_VAL    0x0001430f
-
-/*
- * LCD
- */
-#ifdef CONFIG_LCD
-#define        CONFIG_BALLOON3LCD
-#define        CONFIG_VIDEO_LOGO
-#define        CONFIG_CMD_BMP
-#define        CONFIG_SPLASH_SCREEN
-#define        CONFIG_SPLASH_SCREEN_ALIGN
-#define        CONFIG_VIDEO_BMP_GZIP
-#define        CONFIG_VIDEO_BMP_RLE8
-#define        CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  (2 << 20)
-#endif
-
-/*
- * USB
- */
-#ifdef CONFIG_CMD_USB
-#define        CONFIG_USB_OHCI_NEW
-#define        CONFIG_SYS_USB_OHCI_CPU_INIT
-#define        CONFIG_SYS_USB_OHCI_BOARD_INIT
-#define        CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS      2
-#define        CONFIG_SYS_USB_OHCI_REGS_BASE   0x4C000000
-#define        CONFIG_SYS_USB_OHCI_SLOT_NAME   "balloon3"
-#define        CONFIG_USB_STORAGE
-#define        CONFIG_DOS_PARTITION
-#define        CONFIG_CMD_FAT
-#define        CONFIG_CMD_EXT2
-#endif
-
-/*
- * FPGA
- */
-#ifdef CONFIG_CMD_FPGA
-#define        CONFIG_FPGA
-#define        CONFIG_FPGA_XILINX
-#define        CONFIG_FPGA_SPARTAN3
-#define        CONFIG_SYS_FPGA_PROG_FEEDBACK
-#define        CONFIG_SYS_FPGA_WAIT    1000
-#define        CONFIG_MAX_FPGA_DEVICES 1
-#endif
-
-#endif /* __CONFIG_H */
index b7c5716eae435e2a73882dd1be659e33fc117de2..7b48875d63861ab9b971f3a8b7f888d462aa69c2 100644 (file)
 #define CONFIG_G_DNL_PRODUCT_NUM       0x0d02  /* nexus one */
 #define CONFIG_G_DNL_MANUFACTURER      "Broadcom Corporation"
 
+/* Fastboot and USB OTG */
+#define CONFIG_USB_FUNCTION_FASTBOOT
+#define CONFIG_CMD_FASTBOOT
+#define CONFIG_FASTBOOT_FLASH
+#define CONFIG_FASTBOOT_FLASH_MMC_DEV  0
+#define CONFIG_SYS_CACHELINE_SIZE      64
+#define CONFIG_USB_FASTBOOT_BUF_SIZE   (CONFIG_SYS_SDRAM_SIZE - SZ_1M)
+#define CONFIG_USB_FASTBOOT_BUF_ADDR   CONFIG_SYS_SDRAM_BASE
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_DUALSPEED
+#define CONFIG_USB_GADGET_VBUS_DRAW    0
+#define CONFIG_USB_GADGET_S3C_UDC_OTG
+#define CONFIG_USB_GADGET_BCM_UDC_OTG_PHY
+#define CONFIG_USB_GADGET_DOWNLOAD
+#define CONFIG_USBID_ADDR              0x34052c46
+#define CONFIG_G_DNL_VENDOR_NUM                0x18d1  /* google */
+#define CONFIG_G_DNL_PRODUCT_NUM       0x0d02  /* nexus one */
+#define CONFIG_G_DNL_MANUFACTURER      "Broadcom Corporation"
+
 #endif /* __BCM28155_AP_H */
index 838ef1f00a23df7188589d6e76d4caaa8b32bb5c..c6960920b2bb4b0c213d34d206fb8468acd4c53b 100644 (file)
 /* ------------------------------------------------------------------------- */
 #define BUR_COMMON_ENV \
 "usbscript=usb start && fatload usb 0 0x80000000 usbscript.img && source\0" \
-"defaultip=192.168.60.253\0" \
-"defaultsip=192.168.60.254\0" \
+"brdefaultip=if test -r ${ipaddr}; then; else" \
+" setenv ipaddr 192.168.60.1; setenv serverip 192.168.60.254;" \
+" setenv gatewayip 192.168.60.254; setenv netmask 255.255.255.0; fi;\0" \
 "netconsole=echo switching to network console ...; " \
-"if dhcp; then setenv ncip ${serverip}; " \
-"else " \
-"setenv ncip 192.168.60.254; setenv serverip 192.168.60.254; " \
-"setenv gatewayip 192.168.60.254; setenv ipaddr 192.168.60.1; " \
-"fi; " \
+"if dhcp; then; else run brdefaultip; fi; setenv ncip ${serverip}; " \
 "setcurs 1 9; lcdputs myip; setcurs 10 9; lcdputs ${ipaddr};" \
 "setcurs 1 10;lcdputs serverip; setcurs 10 10; lcdputs ${serverip};" \
 "setenv stdout nc;setenv stdin nc;setenv stderr nc\0"
 
+#define CONFIG_PREBOOT                 "run brdefaultip"
 #define CONFIG_CMD_TIME
 
 #define CONFIG_SYS_GENERIC_BOARD
index fb5b82ee33254bc7e0cc27df7531c2841f3e9e6c..c7d54ee2492155af4d327ed133e213dcd9774d05 100644 (file)
 #define CONFIG_CMD_BMODE
 
 /* Thermal support */
-#define CONFIG_IMX6_THERMAL
-
-#define CONFIG_CMD_FUSE
-#if defined(CONFIG_CMD_FUSE) || defined(CONFIG_IMX6_THERMAL)
-#define CONFIG_MXC_OCOTP
-#endif
+#define CONFIG_IMX_THERMAL
 
 /* I2C Configs */
 #define CONFIG_CMD_I2C
 #define CONFIG_LBA48
 #define CONFIG_LIBATA
 
+/* Ethernet */
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_MII
+#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         6
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_ATHEROS
+
 /* Command definition */
 
 #define CONFIG_MXC_UART_BASE   UART2_BASE
diff --git a/include/configs/chromebook_jerry.h b/include/configs/chromebook_jerry.h
new file mode 100644 (file)
index 0000000..a22b123
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <configs/rk3288_common.h>
+
+#define CONFIG_SPL_SPI_SUPPORT
+#define CONFIG_SPL_SPI_FLASH_SUPPORT
+#define CONFIG_SPL_SPI_LOAD
+
+#endif
index 00fe26da2965ed48feb9e2b32d7305968084d6b5..dc732b810f9c29a3d47c97a5a2a5ab657186d1d0 100644 (file)
@@ -14,4 +14,6 @@
 /* Avoid a warning in the Realtek Ethernet driver */
 #define CONFIG_SYS_CACHELINE_SIZE 16
 
+#define CONFIG_VGA_AS_SINGLE_DEVICE
+
 #endif /* __CONFIG_H */
index ddf6b5f131991174aace331709455df073f725e5..12734a10bfdefea6c7004272b3e46c701efa95ff 100644 (file)
 #define CONFIG_SYS_MALLOC_LEN                  (10 * 1024 * 1024)
 #define CONFIG_SYS_U_BOOT_MAX_SIZE_SECTORS     800 /* 400 KB */
 #define CONFIG_OF_BOARD_SETUP
+#define CONFIG_MISC_INIT_R
 
 /* SPL */
 #include "imx6_spl.h"
index 33b22a72b98968f4300ae57833502bb5e0a3ff93..69332b647da1d45eef947b278c612e2bb1f01463 100644 (file)
@@ -36,6 +36,8 @@
 #include <asm/arch/cpu.h>              /* get chip and board defs */
 #include <asm/arch/omap.h>
 
+#define CONFIG_MACH_TYPE                MACH_TYPE_CM_T3517
+
 /*
  * Display CPU and Board information
  */
@@ -66,7 +68,7 @@
 /*
  * Size of malloc() pool
  */
-#define CONFIG_ENV_SIZE                (16 << 10)      /* 16 KiB */
+#define CONFIG_ENV_SIZE                (128 << 10)     /* 128 KiB */
 #define CONFIG_SYS_MALLOC_LEN  (CONFIG_ENV_SIZE + (128 << 10))
 
 /*
        "loadaddr=0x82000000\0" \
        "baudrate=115200\0" \
        "console=ttyO2,115200n8\0" \
+       "netretry=yes\0" \
        "mpurate=auto\0" \
        "vram=12M\0" \
        "dvimode=1024x768MR-16@60\0" \
 #define CONFIG_SMC911X
 #define CONFIG_SMC911X_32_BIT
 #define CONFIG_SMC911X_BASE    (0x2C000000 + (16 << 20))
+#define CONFIG_ARP_TIMEOUT             200UL
+#define CONFIG_NET_RETRY_COUNT         5
 #endif /* CONFIG_CMD_NET */
 
 /* additions for new relocation code, must be added to all boards */
diff --git a/include/configs/cmi_mpc5xx.h b/include/configs/cmi_mpc5xx.h
deleted file mode 100644 (file)
index d081865..0000000
+++ /dev/null
@@ -1,240 +0,0 @@
-/*
- * (C) Copyright 2003
- * Martin Winistoerfer, martinwinistoerfer@gmx.ch.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * File:               cmi_mpc5xx.h
- *
- * Discription:                Config header file for cmi
- *                     board  using an MPC5xx CPU
- *
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- */
-
-#define CONFIG_MPC555          1               /* This is an MPC555 CPU                */
-#define CONFIG_CMI             1               /* Using the customized cmi board       */
-
-#define        CONFIG_SYS_TEXT_BASE    0x02000000      /* Boot from flash at location 0x00000000 */
-
-/* Serial Console Configuration */
-#define        CONFIG_5xx_CONS_SCI1
-#undef CONFIG_5xx_CONS_SCI2
-
-#define CONFIG_BAUDRATE                57600
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_ASKENV
-
-
-#if 0
-#define CONFIG_BOOTDELAY       -1              /* autoboot disabled                    */
-#else
-#define CONFIG_BOOTDELAY       5               /* autoboot after 5 seconds             */
-#endif
-#define CONFIG_BOOTCOMMAND     "go 02034004"   /* autoboot command                     */
-
-#define CONFIG_BOOTARGS                ""              /* Assuming OS Image in 4 flash sector at offset 4004 */
-
-#define CONFIG_WATCHDOG                                /* turn on platform specific watchdog   */
-
-#define CONFIG_STATUS_LED      1               /* Enable status led */
-
-#define CONFIG_LOADS_ECHO      1               /* Echo on for serial download */
-
-/*
- * Miscellaneous configurable options
- */
-
-#define        CONFIG_SYS_LONGHELP                             /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE               1024            /* Console I/O Buffer Size      */
-#else
-#define        CONFIG_SYS_CBSIZE               256             /* Console I/O Buffer Size      */
-#endif
-#define        CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS              16             /* max number of command args    */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x00000000      /* memtest works on             */
-#define CONFIG_SYS_MEMTEST_END         0x000fa000      /* 1 MB in SRAM                 */
-
-#define        CONFIG_SYS_LOAD_ADDR            0x100000        /* default load address         */
-
-#define CONFIG_SYS_BAUDRATE_TABLE      { 9600, 19200, 38400, 57600, 115200, 1250000 }
-
-
-/*
- * Low Level Configuration Settings
- */
-
-/*
- * Internal Memory Mapped (This is not the IMMR content)
- */
-#define CONFIG_SYS_IMMR                0x01000000              /* Physical start adress of internal memory map */
-
-/*
- * Definitions for initial stack pointer and data area
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       (CONFIG_SYS_IMMR + 0x003f9800)  /* Physical start adress of internal MPC555 writable RAM */
-#define        CONFIG_SYS_INIT_RAM_SIZE        (CONFIG_SYS_IMMR + 0x003fffff)  /* Physical end adress of internal MPC555 used RAM area */
-#define CONFIG_SYS_GBL_DATA_OFFSET     ((CONFIG_SYS_INIT_RAM_SIZE - CONFIG_SYS_INIT_RAM_ADDR) - GENERATED_GBL_DATA_SIZE) /* Offset from the beginning of ram */
-#define        CONFIG_SYS_INIT_SP_ADDR 0x013fa000              /* Physical start adress of inital stack */
-
-/*
- * Start addresses for the final memory configuration
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define        CONFIG_SYS_SDRAM_BASE           0x00000000      /* Monitor won't change memory map                      */
-#define CONFIG_SYS_FLASH_BASE          0x02000000      /* External flash */
-#define PLD_BASE               0x03000000      /* PLD  */
-#define ANYBUS_BASE            0x03010000      /* Anybus Module */
-
-#define CONFIG_SYS_RESET_ADRESS        0x01000000      /* Adress which causes reset */
-#define        CONFIG_SYS_MONITOR_BASE CONFIG_SYS_FLASH_BASE   /* CONFIG_SYS_TEXT_BASE is defined in the board config.mk file. */
-                                               /* This adress is given to the linker with -Ttext to    */
-                                               /* locate the text section at this adress.              */
-#define        CONFIG_SYS_MONITOR_LEN          (192 << 10)     /* Reserve 192 kB for Monitor                           */
-#define        CONFIG_SYS_MALLOC_LEN           (64 << 10)      /* Reserve 128 kB for malloc()                          */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define        CONFIG_SYS_BOOTMAPSZ            (8 << 20)       /* Initial Memory map for Linux         */
-
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- *-----------------------------------------------------------------------
- *
- */
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1               /* Max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      64              /* Max number of sectors on one chip    */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    180000          /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    600             /* Timeout for Flash Write (in ms)      */
-#define CONFIG_SYS_FLASH_PROTECTION    1               /* Physically section protection on     */
-
-#define        CONFIG_ENV_IS_IN_FLASH  1
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_OFFSET              0x00020000      /* Environment starts at this adress    */
-#define        CONFIG_ENV_SIZE         0x00010000      /* Set whole sector as env              */
-#define        CONFIG_SYS_USE_PPCENV                           /* Environment embedded in sect .ppcenv */
-#endif
-
-/*-----------------------------------------------------------------------
- * SYPCR - System Protection Control
- * SYPCR can only be written once after reset!
- *-----------------------------------------------------------------------
- * SW Watchdog freeze
- */
-#if defined(CONFIG_WATCHDOG)
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWE | SYPCR_SWRI| SYPCR_SWP)
-#else
-#define CONFIG_SYS_SYPCR       (SYPCR_SWTC | SYPCR_BMT | SYPCR_BME | SYPCR_SWF | \
-                        SYPCR_SWP)
-#endif /* CONFIG_WATCHDOG */
-
-/*-----------------------------------------------------------------------
- * TBSCR - Time Base Status and Control
- *-----------------------------------------------------------------------
- * Clear Reference Interrupt Status, Timebase freezing enabled
- */
-#define CONFIG_SYS_TBSCR       (TBSCR_REFA | TBSCR_REFB | TBSCR_TBF)
-
-/*-----------------------------------------------------------------------
- * PISCR - Periodic Interrupt Status and Control
- *-----------------------------------------------------------------------
- * Clear Periodic Interrupt Status, Interrupt Timer freezing enabled
- */
-#define CONFIG_SYS_PISCR       (PISCR_PITF)
-
-/*-----------------------------------------------------------------------
- * SCCR - System Clock and reset Control Register
- *-----------------------------------------------------------------------
- * Set clock output, timebase and RTC source and divider,
- * power management and some other internal clocks
- */
-#define SCCR_MASK      SCCR_EBDF00
-#define CONFIG_SYS_SCCR        (SCCR_TBS     | SCCR_RTDIV    | SCCR_RTSEL    | \
-                        SCCR_COM00   | SCCR_DFNL000 | SCCR_DFNH000)
-
-/*-----------------------------------------------------------------------
- * SIUMCR - SIU Module Configuration
- *-----------------------------------------------------------------------
- * Data show cycle
- */
-#define CONFIG_SYS_SIUMCR      (SIUMCR_DBGC00)         /* Disable data show cycle      */
-
-/*-----------------------------------------------------------------------
- * PLPRCR - PLL, Low-Power, and Reset Control Register
- *-----------------------------------------------------------------------
- * Set all bits to 40 Mhz
- *
- */
-#define CONFIG_SYS_OSC_CLK     ((uint)4000000)         /* Oscillator clock is 4MHz     */
-#define CONFIG_SYS_PLPRCR      (PLPRCR_MF_9 | PLPRCR_DIVF_0)
-
-
-/*-----------------------------------------------------------------------
- * UMCR - UIMB Module Configuration Register
- *-----------------------------------------------------------------------
- *
- */
-#define CONFIG_SYS_UMCR        (UMCR_FSPEED)           /* IMB clock same as U-bus      */
-
-/*-----------------------------------------------------------------------
- * ICTRL - I-Bus Support Control Register
- */
-#define CONFIG_SYS_ICTRL       (ICTRL_ISCT_SER_7)      /* Take out of serialized mode  */
-
-/*-----------------------------------------------------------------------
- * USIU - Memory Controller Register
- *-----------------------------------------------------------------------
- */
-
-#define CONFIG_SYS_BR0_PRELIM          (CONFIG_SYS_FLASH_BASE | BR_V | BR_BI | BR_PS_16)
-#define CONFIG_SYS_OR0_PRELIM          (OR_ADDR_MK_FF | OR_SCY_3)
-#define CONFIG_SYS_BR1_PRELIM          (ANYBUS_BASE)
-#define CONFIG_SYS_OR1_PRELIM          (OR_ADDR_MK_FFFF | OR_SCY_1 | OR_ETHR)
-#define CONFIG_SYS_BR2_PRELIM          (CONFIG_SYS_SDRAM_BASE | BR_V | BR_PS_32)
-#define CONFIG_SYS_OR2_PRELIM          (OR_ADDR_MK_FF)
-#define CONFIG_SYS_BR3_PRELIM          (PLD_BASE | BR_V | BR_BI | BR_LBDIR | BR_PS_8)
-#define CONFIG_SYS_OR3_PRELIM          (OR_ADDR_MK_FF | OR_TRLX | OR_BSCY | OR_SCY_8 | \
-                                OR_ACS_10 | OR_ETHR | OR_CSNT)
-
-#define FLASH_BASE0_PRELIM     CONFIG_SYS_FLASH_BASE   /* We don't realign the flash   */
-
-/*-----------------------------------------------------------------------
- * DER - Timer Decrementer
- *-----------------------------------------------------------------------
- * Initialise to zero
- */
-#define CONFIG_SYS_DER                 0x00000000
-
-#endif /* __CONFIG_H */
index 8f829eddb1d908170aa2d8c537ef52c67b11c629..9a1f6d0782c6b93f760a326832b7472996a25476 100644 (file)
 #define CONFIG_SF_DEFAULT_MODE         0
 #endif
 
-/*
- * TPM
- */
-#define CONFIG_TPM_ATMEL_TWI
-#define CONFIG_TPM
-#define CONFIG_TPM_AUTH_SESSIONS
 #define CONFIG_SHA1
-#define CONFIG_CMD_TPM
 
 /*
  * MMC
index c91e289da8d9b2893bfc7e4ce238e7a100413f33..68056125e9a8649fe399f4dd67edc637ce2503e3 100644 (file)
@@ -15,6 +15,7 @@
 #define __CONFIG_H
 
 #include <asm/hardware.h>
+#include <linux/sizes.h>
 
 #define CONFIG_SYS_GENERIC_BOARD
 /*
@@ -81,7 +82,7 @@
 #define CONFIG_SYS_SDRAM_SIZE          0x08000000
 
 #define CONFIG_SYS_INIT_SP_ADDR \
-       (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - GENERATED_GBL_DATA_SIZE)
+       (CONFIG_SYS_SDRAM_BASE + SZ_4K - GENERATED_GBL_DATA_SIZE)
 
 /* No NOR flash */
 #define CONFIG_SYS_NO_FLASH
 #define CONFIG_DOS_PARTITION
 #define CONFIG_USB_STORAGE
 
-#define CONFIG_SYS_LOAD_ADDR           0x72000000      /* load address */
+/* USB DFU support */
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_DUALSPEED
+#define CONFIG_USB_GADGET_ATMEL_USBA
+
+/* DFU class support */
+#define CONFIG_CMD_DFU
+#define CONFIG_USB_FUNCTION_DFU
+#define CONFIG_DFU_NAND
+#define CONFIG_USB_GADGET_DOWNLOAD
+#define CONFIG_USB_GADGET_VBUS_DRAW    2
+#define CONFIG_SYS_DFU_DATA_BUF_SIZE   (SZ_1M)
+#define DFU_MANIFEST_POLL_TIMEOUT      25000
+
+/* USB DFU IDs */
+#define CONFIG_G_DNL_VENDOR_NUM 0x0908
+#define CONFIG_G_DNL_PRODUCT_NUM 0x02d2
+#define CONFIG_G_DNL_MANUFACTURER "Siemens AG"
+
+#define CONFIG_SYS_CACHELINE_SIZE      SZ_8K
+#define CONFIG_SYS_LOAD_ADDR   ATMEL_BASE_CS6
 
 /* bootstrap + u-boot + env in nandflash */
 #define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x100000
 #define CONFIG_ENV_OFFSET_REDUND       0x180000
-#define CONFIG_ENV_SIZE                        0x20000
+#define CONFIG_ENV_SIZE                        SZ_128K
 
 #define CONFIG_BOOTCOMMAND                                             \
        "nand read 0x70000000 0x200000 0x300000;"                       \
  * Size of malloc() pool
  */
 #define CONFIG_SYS_MALLOC_LEN  ROUND(3 * CONFIG_ENV_SIZE + \
-                               128*1024, 0x1000)
+                               SZ_4M, 0x1000)
+
 /* Defines for SPL */
 #define CONFIG_SPL_FRAMEWORK
 #define CONFIG_SPL_TEXT_BASE           0x300000
-#define CONFIG_SPL_MAX_SIZE            (12 * 1024)
-#define CONFIG_SPL_STACK               (16 * 1024)
+#define CONFIG_SPL_MAX_SIZE            (12 * SZ_1K)
+#define CONFIG_SPL_STACK               (SZ_16K)
 
 #define CONFIG_SPL_BSS_START_ADDR      CONFIG_SPL_MAX_SIZE
-#define CONFIG_SPL_BSS_MAX_SIZE                (2 * 1024)
+#define CONFIG_SPL_BSS_MAX_SIZE                (SZ_2K)
 
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
 #define CONFIG_SYS_NAND_U_BOOT_DST     CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 
-#define CONFIG_SYS_NAND_PAGE_SIZE      2048
-#define CONFIG_SYS_NAND_BLOCK_SIZE     (128*1024)
+#define CONFIG_SYS_NAND_PAGE_SIZE      SZ_2K
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (SZ_128K)
 #define CONFIG_SYS_NAND_PAGE_COUNT     (CONFIG_SYS_NAND_BLOCK_SIZE / \
                                         CONFIG_SYS_NAND_PAGE_SIZE)
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS  NAND_LARGE_BADBLOCK_POS
diff --git a/include/configs/cpu9260.h b/include/configs/cpu9260.h
deleted file mode 100644 (file)
index 82f4fe7..0000000
+++ /dev/null
@@ -1,485 +0,0 @@
-/*
- * (C) Copyright 2007-2008
- * Stelian Pop <stelian@popies.net>
- * Lead Tech Design <www.leadtechdesign.com>
- * Ilko Iliev <www.ronetix.at>
- *
- * (C) Copyright 2009
- * Eric Benard <eric@eukrea.com>
- *
- * Configuration settings for the Eukrea CPU9260 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* to be removed once maemory-map.h is fixed */
-#define AT91_BASE_SYS  0xffffe800
-#define AT91_DBGU      (0xfffff200 - AT91_BASE_SYS)
-
-#define CONFIG_SYS_AT91_MAIN_CLOCK     18432000
-#define CONFIG_SYS_AT91_SLOW_CLOCK     32768
-
-#if defined(CONFIG_CPU9G20)
-#define CONFIG_AT91SAM9G20
-#elif defined(CONFIG_CPU9260)
-#define CONFIG_AT91SAM9260
-#else
-#error "Unknown board"
-#endif
-
-#include <asm/arch/hardware.h>
-
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_BOARD_EARLY_INIT_F
-
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-
-#if defined(CONFIG_NANDBOOT)
-#define CONFIG_SKIP_LOWLEVEL_INIT
-#define CONFIG_SYS_TEXT_BASE           0x23f00000
-#else
-#define CONFIG_SYS_TEXT_BASE           0x00000000
-#endif
-
-/* clocks */
-#if defined(CONFIG_CPU9G20)
-#define MASTER_PLL_DIV         0x01
-#define MASTER_PLL_MUL         0x2B
-#elif defined(CONFIG_CPU9260)
-#define MASTER_PLL_DIV         0x09
-#define MASTER_PLL_MUL         0x61
-#endif
-
-/* CKGR_MOR - enable main osc. */
-#define CONFIG_SYS_MOR_VAL                                             \
-               (AT91_PMC_MOSCEN |                                      \
-                (255 << 8))            /* Main Oscillator Start-up Time */
-#if defined(CONFIG_CPU9G20)
-#define CONFIG_SYS_PLLAR_VAL                                           \
-               (AT91_PMC_PLLA_WR_ERRATA | /* Bit 29 must be 1 when prog */ \
-                ((MASTER_PLL_MUL - 1) << 16) | (MASTER_PLL_DIV))
-#elif defined(CONFIG_CPU9260)
-#define CONFIG_SYS_PLLAR_VAL                                           \
-               (AT91_PMC_PLLA_WR_ERRATA | /* Bit 29 must be 1 when prog */ \
-                AT91_PMC_OUT |                                         \
-                ((MASTER_PLL_MUL - 1) << 16) | (MASTER_PLL_DIV))
-#endif
-
-#if defined(CONFIG_CPU9G20)
-#define        CONFIG_SYS_MCKR1_VAL            \
-               (AT91_PMC_CSS_PLLA |    \
-                AT91_PMC_PRES_1 |      \
-                AT91SAM9_PMC_MDIV_6 |  \
-                AT91_PMC_PDIV_2)
-#define        CONFIG_SYS_MCKR2_VAL            \
-               CONFIG_SYS_MCKR1_VAL
-#elif defined(CONFIG_CPU9260)
-#define        CONFIG_SYS_MCKR1_VAL            \
-               (AT91_PMC_CSS_SLOW |    \
-                AT91_PMC_PRES_1 |      \
-                AT91SAM9_PMC_MDIV_2 |  \
-                AT91_PMC_PDIV_1)
-#define        CONFIG_SYS_MCKR2_VAL            \
-               (AT91_PMC_CSS_PLLA |    \
-                AT91_PMC_PRES_1 |      \
-                AT91SAM9_PMC_MDIV_2 |  \
-                AT91_PMC_PDIV_1)
-#endif
-
-/* define PDC[31:16] as DATA[31:16] */
-#define CONFIG_SYS_PIOC_PDR_VAL1       0xFFFF0000
-/* no pull-up for D[31:16] */
-#define CONFIG_SYS_PIOC_PPUDR_VAL      0xFFFF0000
-
-/* EBI_CSA, 3.3V, no pull-ups for D[15:0], CS1 SDRAM, CS3 NAND Flash */
-#define CONFIG_SYS_MATRIX_EBICSA_VAL           \
-               (AT91_MATRIX_CSA_DBPUC | AT91_MATRIX_CSA_EBI_CS1A | \
-               AT91_MATRIX_CSA_EBI_CS3A | AT91_MATRIX_CSA_VDDIOMSEL_3_3V)
-
-/* SDRAM */
-/* SDRAMC_MR Mode register */
-#define CONFIG_SYS_SDRC_MR_VAL1                AT91_SDRAMC_MODE_NORMAL
-/* SDRAMC_TR - Refresh Timer register */
-#define CONFIG_SYS_SDRC_TR_VAL1                0x287
-/* SDRAMC_CR - Configuration register*/
-#if defined(CONFIG_CPU9G20)
-#define CONFIG_SYS_SDRC_CR_VAL_64MB                                    \
-               (AT91_SDRAMC_NC_9 |                                     \
-                AT91_SDRAMC_NR_13 |                                    \
-                AT91_SDRAMC_NB_4 |                                     \
-                AT91_SDRAMC_CAS_2 |                                    \
-                AT91_SDRAMC_DBW_32 |                                   \
-                (2 <<  8) |    /* Write Recovery Delay */              \
-                (9 << 12) |    /* Row Cycle Delay */                   \
-                (3 << 16) |    /* Row Precharge Delay */               \
-                (3 << 20) |    /* Row to Column Delay */               \
-                (6 << 24) |    /* Active to Precharge Delay */         \
-                (10 << 28))    /* Exit Self Refresh to Active Delay */
-
-#define CONFIG_SYS_SDRC_CR_VAL_128MB                                   \
-               (AT91_SDRAMC_NC_10 |                                    \
-                AT91_SDRAMC_NR_13 |                                    \
-                AT91_SDRAMC_NB_4 |                                     \
-                AT91_SDRAMC_CAS_2 |                                    \
-                AT91_SDRAMC_DBW_32 |                                   \
-                (2 <<  8) |    /* Write Recovery Delay */              \
-                (9 << 12) |    /* Row Cycle Delay */                   \
-                (3 << 16) |    /* Row Precharge Delay */               \
-                (3 << 20) |    /* Row to Column Delay */               \
-                (6 << 24) |    /* Active to Precharge Delay */         \
-                (10 << 28))    /* Exit Self Refresh to Active Delay */
-#elif defined(CONFIG_CPU9260)
-#define CONFIG_SYS_SDRC_CR_VAL_64MB                                    \
-               (AT91_SDRAMC_NC_9 |                                     \
-                AT91_SDRAMC_NR_13 |                                    \
-                AT91_SDRAMC_NB_4 |                                     \
-                AT91_SDRAMC_CAS_2 |                                    \
-                AT91_SDRAMC_DBW_32 |                                   \
-                (2 <<  8) |    /* Write Recovery Delay */              \
-                (7 << 12) |    /* Row Cycle Delay */                   \
-                (2 << 16) |    /* Row Precharge Delay */               \
-                (2 << 20) |    /* Row to Column Delay */               \
-                (5 << 24) |    /* Active to Precharge Delay */         \
-                (8 << 28))     /* Exit Self Refresh to Active Delay */
-
-#define CONFIG_SYS_SDRC_CR_VAL_128MB                                   \
-               (AT91_SDRAMC_NC_10 |                                    \
-                AT91_SDRAMC_NR_13 |                                    \
-                AT91_SDRAMC_NB_4 |                                     \
-                AT91_SDRAMC_CAS_2 |                                    \
-                AT91_SDRAMC_DBW_32 |                                   \
-                (2 <<  8) |    /* Write Recovery Delay */              \
-                (7 << 12) |    /* Row Cycle Delay */                   \
-                (2 << 16) |    /* Row Precharge Delay */               \
-                (2 << 20) |    /* Row to Column Delay */               \
-                (5 << 24) |    /* Active to Precharge Delay */         \
-                (8 << 28))     /* Exit Self Refresh to Active Delay */
-#endif
-
-/* Memory Device Register -> SDRAM */
-#define CONFIG_SYS_SDRC_MDR_VAL                AT91_SDRAMC_MD_SDRAM
-#define CONFIG_SYS_SDRC_MR_VAL2                AT91_SDRAMC_MODE_PRECHARGE
-#define CONFIG_SYS_SDRAM_VAL1          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRC_MR_VAL3                AT91_SDRAMC_MODE_REFRESH
-#define CONFIG_SYS_SDRAM_VAL2          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL3          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL4          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL5          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL6          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL7          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL8          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL9          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRC_MR_VAL4                AT91_SDRAMC_MODE_LMR
-#define CONFIG_SYS_SDRAM_VAL10         0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRC_MR_VAL5                AT91_SDRAMC_MODE_NORMAL
-#define CONFIG_SYS_SDRAM_VAL11         0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRC_TR_VAL2                1200            /* SDRAM_TR */
-#define CONFIG_SYS_SDRAM_VAL12         0               /* SDRAM_BASE */
-
-/* setup SMC0, CS0 (NOR Flash) - 16-bit */
-#if defined(CONFIG_CPU9G20)
-#define CONFIG_SYS_SMC0_SETUP0_VAL                                     \
-               (AT91_SMC_SETUP_NWE(0) | AT91_SMC_SETUP_NCS_WR(0) |     \
-                AT91_SMC_SETUP_NRD(0) | AT91_SMC_SETUP_NCS_RD(0))
-#define CONFIG_SYS_SMC0_PULSE0_VAL                                     \
-               (AT91_SMC_PULSE_NWE(8) | AT91_SMC_PULSE_NCS_WR(8) |     \
-                AT91_SMC_PULSE_NRD(14) | AT91_SMC_PULSE_NCS_RD(14))
-#define CONFIG_SYS_SMC0_CYCLE0_VAL     \
-               (AT91_SMC_CYCLE_NWE(8) | AT91_SMC_CYCLE_NRD(14))
-#define CONFIG_SYS_SMC0_MODE0_VAL                              \
-               (AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |  \
-                AT91_SMC_MODE_DBW_16 |                         \
-                AT91_SMC_MODE_TDF |                            \
-                AT91_SMC_MODE_TDF_CYCLE(3))
-#elif defined(CONFIG_CPU9260)
-#define CONFIG_SYS_SMC0_SETUP0_VAL                                     \
-               (AT91_SMC_SETUP_NWE(0) | AT91_SMC_SETUP_NCS_WR(0) |     \
-                AT91_SMC_SETUP_NRD(0) | AT91_SMC_SETUP_NCS_RD(0))
-#define CONFIG_SYS_SMC0_PULSE0_VAL                                     \
-               (AT91_SMC_PULSE_NWE(6) | AT91_SMC_PULSE_NCS_WR(6) |     \
-                AT91_SMC_PULSE_NRD(10) | AT91_SMC_PULSE_NCS_RD(10))
-#define CONFIG_SYS_SMC0_CYCLE0_VAL     \
-               (AT91_SMC_CYCLE_NWE(6) | AT91_SMC_CYCLE_NRD(10))
-#define CONFIG_SYS_SMC0_MODE0_VAL                              \
-               (AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |  \
-                AT91_SMC_MODE_DBW_16 |                         \
-                AT91_SMC_MODE_TDF |                            \
-                AT91_SMC_MODE_TDF_CYCLE(2))
-#endif
-
-/* user reset enable */
-#define CONFIG_SYS_RSTC_RMR_VAL                        \
-               (AT91_RSTC_KEY |                \
-               AT91_RSTC_CR_PROCRST |          \
-               AT91_RSTC_MR_ERSTL(1) | \
-               AT91_RSTC_MR_ERSTL(2))
-
-/* Disable Watchdog */
-#define CONFIG_SYS_WDTC_WDMR_VAL                               \
-               (AT91_WDT_MR_WDIDLEHLT | AT91_WDT_MR_WDDBGHLT | \
-                AT91_WDT_MR_WDV(0xfff) |                       \
-                AT91_WDT_MR_WDDIS |                            \
-                AT91_WDT_MR_WDD(0xfff))
-
-/*
- * Hardware drivers
- */
-#define CONFIG_AT91SAM9_WATCHDOG
-#define CONFIG_AT91_GPIO
-#define CONFIG_ATMEL_USART
-#define CONFIG_USART_BASE      ATMEL_BASE_DBGU
-#define CONFIG_USART_ID                ATMEL_ID_SYS
-
-#define CONFIG_BOOTDELAY       3
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_USB
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_MII
-
-/* SDRAM */
-#define CONFIG_NR_DRAM_BANKS   1
-#define CONFIG_SYS_SDRAM_BASE          0x20000000
-#if defined(CONFIG_CPU9260_128M) || defined(CONFIG_CPU9G20_128M)
-#define CONFIG_SYS_SDRAM_SIZE          (128 * 1024 * 1024)
-#define CONFIG_SYS_SDRC_CR_VAL CONFIG_SYS_SDRC_CR_VAL_128MB
-#else
-#define CONFIG_SYS_SDRAM_SIZE          (64 * 1024 * 1024)
-#define CONFIG_SYS_SDRC_CR_VAL CONFIG_SYS_SDRC_CR_VAL_64MB
-#endif
-
-/* NAND flash */
-#define CONFIG_NAND_ATMEL
-#define CONFIG_SYS_MAX_NAND_DEVICE             1
-#define CONFIG_SYS_NAND_BASE                   0x40000000
-#define CONFIG_SYS_NAND_DBW_8                  1
-#define CONFIG_SYS_NAND_READY_PIN              GPIO_PIN_PC(13)
-#define CONFIG_SYS_NAND_ENABLE_PIN             GPIO_PIN_PC(14)
-#define CONFIG_SYS_NAND_MASK_ALE               (1 << 21)
-#define CONFIG_SYS_NAND_MASK_CLE               (1 << 22)
-
-/* NOR flash */
-#if defined(CONFIG_NANDBOOT)
-#define CONFIG_SYS_NO_FLASH
-#else
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER
-#define PHYS_FLASH_1                           0x10000000
-#define PHYS_FLASH_2                           0x12000000
-#define CONFIG_SYS_FLASH_BANKS_LIST            \
-               { PHYS_FLASH_1, PHYS_FLASH_2 }
-#define CONFIG_SYS_FLASH_BASE                  PHYS_FLASH_1
-#define CONFIG_SYS_MAX_FLASH_SECT              (255+4)
-#define CONFIG_SYS_MAX_FLASH_BANKS             2
-#define CONFIG_SYS_FLASH_CFI_WIDTH             FLASH_CFI_16BIT
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-#define CONFIG_SYS_FLASH_PROTECTION
-#define CONFIG_SYS_MONITOR_BASE                        PHYS_FLASH_1
-#endif
-
-/* Ethernet */
-#define CONFIG_MACB
-#define CONFIG_RMII
-#define CONFIG_NET_RETRY_COUNT                 20
-#define CONFIG_MACB_SEARCH_PHY
-#define CONFIG_AT91_WANTS_COMMON_PHY
-
-/* LEDS */
-/* Status LED */
-#define CONFIG_STATUS_LED
-#define CONFIG_BOARD_SPECIFIC_LED
-#define STATUS_LED_RED                         0
-#define STATUS_LED_GREEN                       1
-#define STATUS_LED_YELLOW                      2
-#define STATUS_LED_BLUE                                3
-/* Red */
-#define STATUS_LED_BIT                         STATUS_LED_RED
-#define STATUS_LED_STATE                       STATUS_LED_OFF
-#define STATUS_LED_PERIOD                      (CONFIG_SYS_HZ / 2)
-/* Green */
-#define STATUS_LED_BIT1                                STATUS_LED_GREEN
-#define STATUS_LED_STATE1                      STATUS_LED_OFF
-#define STATUS_LED_PERIOD1                     (CONFIG_SYS_HZ / 2)
-/* Yellow */
-#define STATUS_LED_BIT2                                STATUS_LED_YELLOW
-#define STATUS_LED_STATE2                      STATUS_LED_OFF
-#define STATUS_LED_PERIOD2                     (CONFIG_SYS_HZ / 2)
-/* Blue */
-#define STATUS_LED_BIT3                                STATUS_LED_BLUE
-#define STATUS_LED_STATE3                      STATUS_LED_ON
-#define STATUS_LED_PERIOD3                     (CONFIG_SYS_HZ / 2)
-/* Optional value */
-#define STATUS_LED_BOOT                                STATUS_LED_BIT
-
-#define CONFIG_RED_LED                         AT91_PIO_PORTC, 11
-#define CONFIG_GREEN_LED                       AT91_PIO_PORTC, 12
-#define CONFIG_YELLOW_LED                      AT91_PIO_PORTC, 7
-#define CONFIG_BLUE_LED                                AT91_PIO_PORTC, 9
-
-/* USB */
-#define CONFIG_USB_ATMEL
-#define CONFIG_USB_ATMEL_CLK_SEL_PLLB
-#define CONFIG_USB_OHCI_NEW
-#define CONFIG_DOS_PARTITION
-#define CONFIG_SYS_USB_OHCI_CPU_INIT
-#define CONFIG_SYS_USB_OHCI_REGS_BASE          0x00500000
-#if defined(CONFIG_CPU9G20)
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME          "at91sam9g20"
-#elif defined(CONFIG_CPU9260)
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME          "at91sam9260"
-#endif
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
-#define CONFIG_USB_STORAGE
-
-#define CONFIG_SYS_LOAD_ADDR                   0x21000000
-#define CONFIG_LOADADDR                                CONFIG_SYS_LOAD_ADDR
-
-#define CONFIG_SYS_MEMTEST_START               CONFIG_SYS_SDRAM_BASE
-#define CONFIG_SYS_MEMTEST_END                 \
-       (CONFIG_SYS_MEMTEST_START + CONFIG_SYS_SDRAM_SIZE - 512 * 1024)
-
-#if defined(CONFIG_NANDBOOT)
-#define CONFIG_SYS_USE_NANDFLASH
-#undef CONFIG_SYS_USE_FLASH
-#else
-#define CONFIG_SYS_USE_FLASH
-#undef CONFIG_SYS_USE_NANDFLASH
-#endif
-
-#if defined(CONFIG_CPU9G20)
-#define CONFIG_SYS_BASEDIR     "cpu9G20"
-#elif defined(CONFIG_CPU9260)
-#define CONFIG_SYS_BASEDIR     "cpu9260"
-#endif
-
-#if defined(CONFIG_SYS_USE_FLASH)
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_OFFSET              0x40000
-#define CONFIG_ENV_SECT_SIZE           0x20000
-#define        CONFIG_ENV_SIZE                 0x20000
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BOOTCOMMAND             "run flashboot"
-
-#define MTDIDS_DEFAULT         "nor0=physmap-flash.0,nand0=atmel_nand"
-#define MTDPARTS_DEFAULT               \
-       "mtdparts=physmap-flash.0:"     \
-               "256k(u-boot)ro,"       \
-               "128k(u-boot-env)ro,"   \
-               "1792k(kernel),"        \
-               "-(rootfs);"            \
-       "atmel_nand:-(nand)"
-
-#define CONFIG_BOOTARGS "root=/dev/mtdblock3 rootfstype=jffs2 "
-
-#define CONFIG_EXTRA_ENV_SETTINGS                              \
-       "mtdids=" MTDIDS_DEFAULT "\0"                           \
-       "mtdparts=" MTDPARTS_DEFAULT "\0"                       \
-       "partition=nand0,0\0"                                   \
-       "ramargs=setenv bootargs $(bootargs) $(mtdparts)\0"     \
-       "ramboot=tftpboot 0x22000000 $(basedir)/uImage;"        \
-               "run ramargs;bootm 22000000\0"                  \
-       "flashboot=run ramargs;bootm 0x10060000\0"              \
-       "basedir=" CONFIG_SYS_BASEDIR "\0"                      \
-       "updtub=tftp 0x24000000 $(basedir)/u-boot.bin;protect " \
-               "off 0x10000000 0x1003ffff;erase 0x10000000 "   \
-               "0x1003ffff;cp.b 0x24000000 0x10000000 "        \
-               "$(filesize)\0" \
-       "updtui=tftp 0x24000000 $(basedir)/uImage;protect off"  \
-               " 0x10060000 0x1021ffff;erase 0x10060000 "      \
-               "0x1021ffff;cp.b 0x24000000 0x10060000 "        \
-               "$(filesize)\0" \
-       "updtrfs=tftp 0x24000000 $(basedir)/rootfs.jffs2; "     \
-               "protect off 0x10220000 0x13ffffff;erase "      \
-               "0x10220000 0x13ffffff;cp.b 0x24000000 "        \
-               "0x10220000 $(filesize)\0" \
-       ""
-#elif defined(CONFIG_NANDBOOT)
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_OFFSET              0x60000
-#define CONFIG_ENV_OFFSET_REDUND       0x80000
-#define CONFIG_ENV_SECT_SIZE           0x20000
-#define        CONFIG_ENV_SIZE                 0x20000
-#define CONFIG_ENV_SIZE_REDUND         (CONFIG_ENV_SIZE)
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BOOTCOMMAND             "run flashboot"
-
-#define MTDIDS_DEFAULT         "nand0=atmel_nand"
-#define MTDPARTS_DEFAULT               \
-       "mtdparts=atmel_nand:"          \
-               "128k(bootstrap)ro,"    \
-               "256k(u-boot)ro,"       \
-               "128k(u-boot-env)ro,"   \
-               "128k(u-boot-env2)ro,"  \
-               "2M(kernel),"   \
-               "-(rootfs)"
-
-#define CONFIG_BOOTARGS "root=ubi0:eukrea-cpu9260-rootfs "     \
-       "ubi.mtd=5 rootfstype=ubifs at91sam9_wdt.heartbeat=60"
-
-#define CONFIG_EXTRA_ENV_SETTINGS                              \
-       "mtdids=" MTDIDS_DEFAULT "\0"                           \
-       "mtdparts=" MTDPARTS_DEFAULT "\0"                       \
-       "partition=nand0,5\0"                                   \
-       "ramargs=setenv bootargs $(bootargs) $(mtdparts)\0"     \
-       "ramboot=tftpboot 0x22000000 $(basedir)/uImage;"        \
-               "run ramargs;bootm 22000000\0"                  \
-       "flashboot=run ramargs; nand read 0x22000000 0xA0000 "  \
-               "0x200000; bootm 0x22000000\0"                  \
-       "basedir=" CONFIG_SYS_BASEDIR "\0"                      \
-       "u-boot=u-boot-eukrea-cpu9260.bin\0"                    \
-       "kernel=uImage-eukrea-cpu9260.bin\0"                    \
-       "rootfs=image-eukrea-cpu9260.ubi\0"                     \
-       "updtub=tftp ${loadaddr} $(basedir)/${u-boot}; "        \
-               "nand erase 20000 40000; "                      \
-               "nand write ${loadaddr} 20000 40000\0"          \
-       "updtui=tftp ${loadaddr} $(basedir)/${kernel}; "        \
-               "nand erase a0000 200000; "                     \
-               "nand write ${loadaddr} a0000 200000\0"         \
-       "updtrfs=tftp ${loadaddr} $(basedir)/${rootfs}; "       \
-               "nand erase  2a0000 fd60000; "                  \
-               "nand write ${loadaddr} 2a0000 ${filesize}\0"
-#endif
-
-#define CONFIG_BAUDRATE                        115200
-
-#define CONFIG_SYS_CBSIZE              256
-#define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE              \
-               (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SILENT_CONSOLE
-#define CONFIG_NETCONSOLE
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN          \
-               ROUND(3 * CONFIG_ENV_SIZE + 128 * 1024, 0x1000)
-
-#define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - \
-                               GENERATED_GBL_DATA_SIZE)
-
-#endif
diff --git a/include/configs/cpuat91.h b/include/configs/cpuat91.h
deleted file mode 100644 (file)
index 29cd842..0000000
+++ /dev/null
@@ -1,222 +0,0 @@
-/*
- * CPUAT91 by (C) Copyright 2006-2010 Eric Benard
- * eric@eukrea.com
- *
- * Configuration settings for the CPUAT91 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _CONFIG_CPUAT91_H
-#define _CONFIG_CPUAT91_H
-
-#include <linux/sizes.h>
-
-#ifdef CONFIG_RAMBOOT
-#define CONFIG_SKIP_LOWLEVEL_INIT
-#define CONFIG_SYS_TEXT_BASE           0x21F00000
-#else
-#define CONFIG_BOOTDELAY               1
-#define CONFIG_SYS_TEXT_BASE           0
-#endif
-
-#define AT91C_XTAL_CLOCK               18432000
-#define CONFIG_SYS_AT91_SLOW_CLOCK     32768
-#define AT91C_MAIN_CLOCK               ((AT91C_XTAL_CLOCK / 4) * 39)
-#define AT91C_MASTER_CLOCK             (AT91C_MAIN_CLOCK / 3)
-#define CONFIG_SYS_HZ_CLOCK            (AT91C_MASTER_CLOCK / 2)
-
-#define CONFIG_AT91RM9200
-#define CONFIG_CPUAT91
-#define USE_920T_MMU
-
-#include <asm/hardware.h>      /* needed for port definitions */
-
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-#define CONFIG_BOARD_EARLY_INIT_F
-
-#ifndef CONFIG_SKIP_LOWLEVEL_INIT
-#define CONFIG_SYS_USE_MAIN_OSCILLATOR
-/* flash */
-#define CONFIG_SYS_MC_PUIA_VAL 0x00000000
-#define CONFIG_SYS_MC_PUP_VAL  0x00000000
-#define CONFIG_SYS_MC_PUER_VAL 0x00000000
-#define CONFIG_SYS_MC_ASR_VAL  0x00000000
-#define CONFIG_SYS_MC_AASR_VAL 0x00000000
-#define CONFIG_SYS_EBI_CFGR_VAL        0x00000000
-#define CONFIG_SYS_SMC_CSR0_VAL        0x00003284 /* 16bit, 2 TDF, 4 WS */
-
-/* clocks */
-#define CONFIG_SYS_PLLAR_VAL   0x20263E04 /* 179.712000 MHz for PCK */
-#define CONFIG_SYS_PLLBR_VAL   0x10483E0E /* 48.054857 MHz for USB */
-#define CONFIG_SYS_MCKR_VAL    0x00000202 /* PCK/3 = MCK Master Clock */
-
-/* sdram */
-#define CONFIG_SYS_PIOC_ASR_VAL        0xFFFF0000 /* Configure PIOC as D16/D31 */
-#define CONFIG_SYS_PIOC_BSR_VAL        0x00000000
-#define CONFIG_SYS_PIOC_PDR_VAL        0xFFFF0000
-#define CONFIG_SYS_EBI_CSA_VAL 0x00000002 /* CS1=SDRAM */
-#define CONFIG_SYS_SDRC_CR_VAL 0x2188C155 /* set up the SDRAM */
-#define CONFIG_SYS_SDRAM       0x20000000 /* address of the SDRAM */
-#define CONFIG_SYS_SDRAM1      0x20000080 /* address of the SDRAM */
-#define CONFIG_SYS_SDRAM_VAL   0x00000000 /* value written to SDRAM */
-#define CONFIG_SYS_SDRC_MR_VAL 0x00000002 /* Precharge All */
-#define CONFIG_SYS_SDRC_MR_VAL1        0x00000004 /* refresh */
-#define CONFIG_SYS_SDRC_MR_VAL2        0x00000003 /* Load Mode Register */
-#define CONFIG_SYS_SDRC_MR_VAL3        0x00000000 /* Normal Mode */
-#define CONFIG_SYS_SDRC_TR_VAL 0x000002E0 /* Write refresh rate */
-#endif /* CONFIG_SKIP_LOWLEVEL_INIT */
-
-#define CONFIG_ATMEL_USART
-#define CONFIG_USART_BASE      ATMEL_BASE_DBGU
-#define CONFIG_USART_ID                0/* ignored in arm */
-
-#undef CONFIG_HARD_I2C
-#define AT91_PIN_SDA                   (1<<25)
-#define AT91_PIN_SCL                   (1<<26)
-
-#define CONFIG_SYS_I2C_INIT_BOARD
-#define        CONFIG_SYS_I2C_SPEED            50000
-#define CONFIG_SYS_I2C_SLAVE           0
-
-#define I2C_INIT       i2c_init_board();
-#define I2C_ACTIVE     writel(AT91_PMX_AA_TWD, &pio->pioa.mddr);
-#define I2C_TRISTATE   writel(AT91_PMX_AA_TWD, &pio->pioa.mder);
-#define I2C_READ       ((readl(&pio->pioa.pdsr) & AT91_PMX_AA_TWD) != 0)
-#define I2C_SDA(bit)                                           \
-       if (bit)                                                \
-               writel(AT91_PMX_AA_TWD, &pio->pioa.sodr);       \
-       else                                                    \
-               writel(AT91_PMX_AA_TWD, &pio->pioa.codr);
-#define I2C_SCL(bit)                                           \
-       if (bit)                                                \
-               writel(AT91_PMX_AA_TWCK, &pio->pioa.sodr);      \
-       else                                                    \
-               writel(AT91_PMX_AA_TWCK, &pio->pioa.codr);
-
-#define I2C_DELAY      udelay(2500000/CONFIG_SYS_I2C_SPEED)
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x54
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         1
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    1
-#define        CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS   10
-
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_CACHE
-#undef CONFIG_CMD_USB
-#undef CONFIG_CMD_DHCP
-
-#ifdef CONFIG_SYS_I2C_SOFT
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-#endif
-
-#define CONFIG_NR_DRAM_BANKS                   1
-#define CONFIG_SYS_SDRAM_BASE                  0x20000000
-#define CONFIG_SYS_SDRAM_SIZE                  (32 * 1024 * 1024)
-
-#define CONFIG_SYS_MEMTEST_START               CONFIG_SYS_SDRAM_BASE
-#define CONFIG_SYS_MEMTEST_END                 \
-       (CONFIG_SYS_MEMTEST_START + CONFIG_SYS_SDRAM_SIZE - 512 * 1024)
-
-#define CONFIG_DRIVER_AT91EMAC
-#define CONFIG_SYS_RX_ETH_BUFFER       16
-#define CONFIG_RMII
-#define CONFIG_MII
-#define CONFIG_DRIVER_AT91EMAC_PHYADDR 1
-#define CONFIG_NET_RETRY_COUNT                 20
-#define CONFIG_KS8721_PHY
-
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-#define CONFIG_SYS_MAX_FLASH_BANKS             1
-#define CONFIG_SYS_FLASH_PROTECTION
-#define PHYS_FLASH_1                           0x10000000
-#define CONFIG_SYS_FLASH_BASE                  PHYS_FLASH_1
-#define CONFIG_SYS_MAX_FLASH_SECT              128
-#define CONFIG_SYS_FLASH_CFI_WIDTH             FLASH_CFI_16BIT
-#define CONFIG_SYS_MONITOR_BASE                        PHYS_FLASH_1
-#define PHYS_FLASH_SIZE                                (16 * 1024 * 1024)
-#define CONFIG_SYS_FLASH_BANKS_LIST            \
-               { PHYS_FLASH_1 }
-
-#if defined(CONFIG_CMD_USB)
-#define CONFIG_USB_ATMEL
-#define CONFIG_USB_ATMEL_CLK_SEL_PLLB
-#define CONFIG_USB_OHCI_NEW
-#define CONFIG_USB_STORAGE
-#define CONFIG_DOS_PARTITION
-#define CONFIG_AT91C_PQFP_UHPBU
-#undef CONFIG_SYS_USB_OHCI_BOARD_INIT
-#define CONFIG_SYS_USB_OHCI_CPU_INIT
-#define CONFIG_SYS_USB_OHCI_REGS_BASE          AT91_USB_HOST_BASE
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME          "at91rm9200"
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     15
-#endif
-
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_ADDR                                (PHYS_FLASH_1 + 128 * 1024)
-#define CONFIG_ENV_SIZE                                (128 * 1024)
-#define CONFIG_ENV_SECT_SIZE           (128 * 1024)
-
-#define CONFIG_SYS_LOAD_ADDR           0x21000000
-
-#define CONFIG_BAUDRATE                        115200
-
-#define CONFIG_SYS_CBSIZE              256
-#define CONFIG_SYS_MAXARGS             32
-#define CONFIG_SYS_PBSIZE              \
-       (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_CMDLINE_EDITING
-
-#define CONFIG_SYS_MALLOC_LEN          \
-                       ROUND(3 * CONFIG_ENV_SIZE + 128 * 1024, 4 * 1024)
-
-#define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_SYS_SDRAM_BASE + 4 * 1024 - \
-                               GENERATED_GBL_DATA_SIZE)
-
-#define CONFIG_DEVICE_NULLDEV
-#define CONFIG_SILENT_CONSOLE
-
-#define CONFIG_VERSION_VARIABLE
-
-#define MTDIDS_DEFAULT                 "nor0=physmap-flash.0"
-#define MTDPARTS_DEFAULT               \
-       "mtdparts=physmap-flash.0:"     \
-               "128k(u-boot)ro,"       \
-               "128k(u-boot-env),"     \
-               "1792k(kernel),"        \
-               "-(rootfs)"
-
-#define CONFIG_BOOTARGS                \
-       "root=/dev/mtdblock3 rootfstype=jffs2 console=ttyS0,115200"
-
-#define CONFIG_BOOTCOMMAND             "run flashboot"
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "mtdid=" MTDIDS_DEFAULT "\0"                                    \
-       "mtdparts=" MTDPARTS_DEFAULT "\0"                               \
-       "flub=tftp 21000000 cpuat91/u-boot.bin; protect off 10000000 "  \
-               "1001FFFF; erase 10000000 1001FFFF; cp.b 21000000 "     \
-               "10000000 ${filesize}\0"                                \
-       "flui=tftp 21000000 cpuat91/uImage; protect off 10040000 "      \
-               "1019ffff; erase 10040000 101fffff; cp.b 21000000 "     \
-               "10040000 ${filesize}\0"                                \
-       "flrfs=tftp 21000000 cpuat91/rootfs.jffs2; protect off "        \
-               "10200000 10ffffff; erase 10200000 10ffffff; cp.b "     \
-               "21000000 10200000 ${filesize}\0"                       \
-       "ramargs=setenv bootargs $(bootargs) $(mtdparts)\0"             \
-       "flashboot=run ramargs;bootm 10040000\0"                        \
-       "netboot=run ramargs;tftpboot 21000000 cpuat91/uImage;"         \
-               "bootm 21000000\0"
-#endif /* _CONFIG_CPUAT91_H */
index 998da78842bf15cde6fbbf539ebf13f056597019..3153a74d3b819ca468e8c802692d7f965aea0963 100644 (file)
 #define CONFIG_MMC_SDMA
 #define CONFIG_CMD_MMC
 
-/* Topcliff Gigabit Ethernet */
-#define CONFIG_PCH_GBE
-#define CONFIG_PHYLIB
-
 /* Environment configuration */
 #define CONFIG_ENV_SECT_SIZE           0x1000
 #define CONFIG_ENV_OFFSET              0
diff --git a/include/configs/csb272.h b/include/configs/csb272.h
deleted file mode 100644 (file)
index 71cb5df..0000000
+++ /dev/null
@@ -1,282 +0,0 @@
-/*
- * (C) Copyright 2004
- * Tolunay Orkun, Nextio Inc., torkun@nextio.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405GP CPU       */
-#define CONFIG_CSB272          1       /* on a Cogent CSB272 board     */
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f()    */
-#define CONFIG_LAST_STAGE_INIT 1       /* Call last_stage_init()       */
-#define CONFIG_SYS_CLK_FREQ     33000000 /* external frequency to pll   */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-/*
- * OS Bootstrap configuration
- *
- */
-
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled */
-#else
-#define CONFIG_BOOTDELAY       3       /* autoboot after X seconds     */
-#endif
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check keypress when bootdelay = 0 */
-
-#if 1
-#undef  CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND \
-       "setenv bootargs console=ttyS0,38400 debug " \
-       "root=/dev/ram rw ramdisk_size=4096 " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " \
-       "bootm fe000000 fe100000"
-#endif
-
-#if 0
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND \
-       "bootp; " \
-       "setenv bootargs console=ttyS0,38400 debug " \
-       "root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " \
-       "bootm"
-#endif
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_DNS2
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-
-
-/*
- * Serial download configuration
- *
- */
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-/*
- * KGDB Configuration
- *
- */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-/*
- * Miscellaneous configurable options
- *
- */
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser */
-
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE               1024    /* Console I/O Buffer Size */
-#else
-#define        CONFIG_SYS_CBSIZE               256     /* Console I/O Buffer Size */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_info (bd_t) */
-#define CONFIG_SYS_LOAD_ADDR           0x100000 /* default load address */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-/*
- * watchdog configuration
- *
- */
-#undef  CONFIG_WATCHDOG                        /* watchdog disabled */
-
-/*
- * UART configuration
- *
- */
-#define CONFIG_CONS_INDEX              1       /* Use UART0            */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#define CONFIG_SYS_EXT_SERIAL_CLOCK    3868400 /* use external serial clock */
-#undef  CONFIG_SYS_BASE_BAUD
-#define CONFIG_BAUDRATE                38400   /* Default baud rate */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-    { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400 }
-
-/*
- * I2C configuration
- *
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F    /* I2C slave address */
-
-/*
- * MII PHY configuration
- *
- */
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_PHY_CMD_DELAY   40      /* PHY COMMAND delay            */
-                                       /* 32usec min. for LXT971A      */
-#define CONFIG_PHY_RESET_DELAY 300     /* PHY RESET recovery delay     */
-
-/*
- * RTC configuration
- *
- * Note that DS1307 RTC is limited to 100Khz I2C bus.
- *
- */
-#define CONFIG_RTC_DS1307              /* Use Dallas 1307 RTC          */
-
-/*
- * PCI stuff
- *
- */
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define PCI_HOST_ADAPTER       0       /* configure ar pci adapter     */
-#define PCI_HOST_FORCE         1       /* configure as pci host        */
-#define PCI_HOST_AUTO          2       /* detected via arbiter enable  */
-
-#define CONFIG_PCI_HOST        PCI_HOST_FORCE  /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-#undef  CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-#define CONFIG_PCI_BOOTDELAY    0       /* enable pci bootdelay variable*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x0000  /* PCI Vendor ID: to-do!!!      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0000  /* PCI Device ID: to-do!!!      */
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0x80000001      /* 2GB, enable hard-wired to 1  */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0x00000000      /* disabled                     */
-#define CONFIG_SYS_PCI_PTM2MS  0x00000000      /* disabled                     */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*
- * IDE stuff
- *
- */
-#undef  CONFIG_IDE_PCMCIA               /* no pcmcia interface required */
-#undef  CONFIG_IDE_LED                  /* no led for ide supported     */
-#undef  CONFIG_IDE_RESET                /* no reset for ide supported   */
-
-/*
- * Environment configuration
- *
- */
-#define CONFIG_ENV_IS_IN_FLASH 1       /* environment is in FLASH      */
-#undef CONFIG_ENV_IS_IN_NVRAM
-#undef CONFIG_ENV_IS_IN_EEPROM
-
-/*
- * General Memory organization
- *
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFE000000
-#define CONFIG_SYS_FLASH_SIZE          0x02000000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024) /* Reserve 256 KB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024) /* Reserve 128 KB for malloc() */
-
-#if CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_RAMSTART
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-#define CONFIG_ENV_IN_OWN_SECTOR       1          /* Give Environment own sector */
-#define CONFIG_ENV_ADDR                0xFFF00000 /* Address of Environment Sector */
-#define        CONFIG_ENV_SIZE         0x00001000 /* Size of Environment */
-#define CONFIG_ENV_SECT_SIZE   0x00040000 /* Size of Environment Sector */
-#endif
-
-/*
- * FLASH Device configuration
- *
- */
-#define CONFIG_SYS_FLASH_CFI           1       /* flash is CFI conformant      */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* use common cfi driver        */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster) */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max # of memory banks        */
-#define CONFIG_SYS_FLASH_INCREMENT     0       /* there is only one bank       */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max # of sectors on one chip */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* hardware flash protection    */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
-
-/*
- * On Chip Memory location/size
- *
- */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-
-/*
- * Global info and initial stack
- *
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of on-chip SRAM */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*
- * Miscellaneous board specific definitions
- *
- */
-#define CONFIG_SYS_I2C_PLL_ADDR        0x58    /* I2C address of AMIS FS6377-01 PLL */
-#define CONFIG_I2CFAST         1       /* enable "i2cfast" env. setting     */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/csb472.h b/include/configs/csb472.h
deleted file mode 100644 (file)
index 5bd3867..0000000
+++ /dev/null
@@ -1,281 +0,0 @@
-/*
- * (C) Copyright 2004
- * Tolunay Orkun, Nextio Inc., torkun@nextio.com
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405GP CPU       */
-#define CONFIG_CSB472          1       /* on a Cogent CSB472 board     */
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* Call board_early_init_f()    */
-#define CONFIG_LAST_STAGE_INIT 1       /* Call last_stage_init()       */
-#define CONFIG_SYS_CLK_FREQ     25000000 /* external frequency to pll   */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-/*
- * OS Bootstrap configuration
- *
- */
-
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled */
-#else
-#define CONFIG_BOOTDELAY       3       /* autoboot after X seconds     */
-#endif
-
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check keypress when bootdelay = 0 */
-
-#if 1
-#undef  CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND \
-       "setenv bootargs console=ttyS0,38400 debug " \
-       "root=/dev/ram rw ramdisk_size=4096 " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " \
-       "bootm ff800000 ff900000"
-#endif
-
-#if 0
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND \
-       "bootp; " \
-       "setenv bootargs console=ttyS0,38400 debug " \
-       "root=/dev/nfs rw nfsroot=${serverip}:${rootpath} " \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off; " \
-       "bootm"
-#endif
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_DNS2
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_BEDBUG
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-
-/*
- * Serial download configuration
- *
- */
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-/*
- * KGDB Configuration
- *
- */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-/*
- * Miscellaneous configurable options
- *
- */
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser */
-
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
-#if defined(CONFIG_CMD_KGDB)
-#define        CONFIG_SYS_CBSIZE               1024    /* Console I/O Buffer Size */
-#else
-#define        CONFIG_SYS_CBSIZE               256     /* Console I/O Buffer Size */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM */
-
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_info (bd_t) */
-#define CONFIG_SYS_LOAD_ADDR           0x100000 /* default load address */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-/*
- * watchdog configuration
- *
- */
-#undef  CONFIG_WATCHDOG                        /* watchdog disabled */
-
-/*
- * UART configuration
- *
- */
-#define CONFIG_CONS_INDEX              1       /* Use UART0            */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK             /* use internal serial clock */
-#define CONFIG_SYS_BASE_BAUD           691200
-#define CONFIG_BAUDRATE                38400   /* Default baud rate */
-#define CONFIG_SYS_BAUDRATE_TABLE      \
-    { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400 }
-
-/*
- * I2C configuration
- *
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F    /* I2C slave address */
-
-/*
- * MII PHY configuration
- *
- */
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_PHY_CMD_DELAY   40      /* PHY COMMAND delay            */
-                                       /* 32usec min. for LXT971A      */
-#define CONFIG_PHY_RESET_DELAY 300     /* PHY RESET recovery delay     */
-
-/*
- * RTC configuration
- *
- * Note that DS1307 RTC is limited to 100Khz I2C bus.
- *
- */
-#define CONFIG_RTC_DS1307              /* Use Dallas 1307 RTC          */
-
-/*
- * PCI stuff
- *
- */
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define PCI_HOST_ADAPTER       0       /* configure ar pci adapter     */
-#define PCI_HOST_FORCE         1       /* configure as pci host        */
-#define PCI_HOST_AUTO          2       /* detected via arbiter enable  */
-
-#define CONFIG_PCI_HOST        PCI_HOST_FORCE  /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-#undef  CONFIG_PCI_SCAN_SHOW            /* print pci devices @ startup  */
-#define CONFIG_PCI_BOOTDELAY    0       /* enable pci bootdelay variable*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x0000  /* PCI Vendor ID: to-do!!!      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0000  /* PCI Device ID: to-do!!!      */
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0x80000001      /* 2GB, enable hard-wired to 1  */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0x00000000      /* disabled                     */
-#define CONFIG_SYS_PCI_PTM2MS  0x00000000      /* disabled                     */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*
- * IDE stuff
- *
- */
-#undef  CONFIG_IDE_PCMCIA               /* no pcmcia interface required */
-#undef  CONFIG_IDE_LED                  /* no led for ide supported     */
-#undef  CONFIG_IDE_RESET                /* no reset for ide supported   */
-
-/*
- * Environment configuration
- *
- */
-#define CONFIG_ENV_IS_IN_FLASH 1       /* environment is in FLASH      */
-#undef CONFIG_ENV_IS_IN_NVRAM
-#undef CONFIG_ENV_IS_IN_EEPROM
-
-/*
- * General Memory organization
- *
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFF800000
-#define CONFIG_SYS_FLASH_SIZE          0x00800000
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024) /* Reserve 256 KB for Monitor */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024) /* Reserve 128 KB for malloc() */
-
-#if CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_RAMSTART
-#endif
-
-#if defined(CONFIG_ENV_IS_IN_FLASH)
-#define CONFIG_ENV_IN_OWN_SECTOR       1          /* Give Environment own sector */
-#define CONFIG_ENV_ADDR                0xFFF00000 /* Address of Environment Sector */
-#define        CONFIG_ENV_SIZE         0x00001000 /* Size of Environment */
-#define CONFIG_ENV_SECT_SIZE   0x00040000 /* Size of Environment Sector */
-#endif
-
-/*
- * FLASH Device configuration
- *
- */
-#define CONFIG_SYS_FLASH_CFI           1       /* flash is CFI conformant      */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* use common cfi driver        */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster) */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max # of memory banks        */
-#define CONFIG_SYS_FLASH_INCREMENT     0       /* there is only one bank       */
-#define CONFIG_SYS_MAX_FLASH_SECT      64      /* max # of sectors on one chip */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* hardware flash protection    */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
-
-/*
- * On Chip Memory location/size
- *
- */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-
-/*
- * Global info and initial stack
- *
- */
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of on-chip SRAM */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*
- * Miscellaneous board specific definitions
- *
- */
-#define CONFIG_I2CFAST         1       /* enable "i2cfast" env. setting     */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/davinci_dm355evm.h b/include/configs/davinci_dm355evm.h
deleted file mode 100644 (file)
index 72296a0..0000000
+++ /dev/null
@@ -1,195 +0,0 @@
-/*
- * Copyright (C) 2009 David Brownell
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* Spectrum Digital TMS320DM355 EVM board */
-#define DAVINCI_DM355EVM
-
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is a 3rd stage loader */
-#define CONFIG_SYS_NO_FLASH            /* that is, no *NOR* flash */
-#define CONFIG_SYS_CONSOLE_INFO_QUIET
-
-/* SoC Configuration */
-#define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
-#define CONFIG_SYS_HZ_CLOCK            24000000        /* timer0 freq */
-#define CONFIG_SOC_DM355
-
-/* Memory Info */
-#define CONFIG_NR_DRAM_BANKS           1
-#define PHYS_SDRAM_1                   0x80000000
-#define PHYS_SDRAM_1_SIZE              (128 << 20)     /* 128 MiB */
-
-/* Serial Driver info: UART0 for console  */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    -4
-#define CONFIG_SYS_NS16550_COM1                0x01c20000
-#define CONFIG_SYS_NS16550_CLK         CONFIG_SYS_HZ_CLOCK
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_BAUDRATE                        115200
-
-/* Ethernet:  external DM9000 */
-#define CONFIG_DRIVER_DM9000           1
-#define CONFIG_DM9000_BASE             0x04014000
-#define DM9000_IO                      CONFIG_DM9000_BASE
-#define DM9000_DATA                    (CONFIG_DM9000_BASE + 2)
-
-/* I2C */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED           400000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE           0x10    /* SMBus host address */
-
-/* NAND: socketed, two chipselects, normally 2 GBytes */
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_CS             2
-#define CONFIG_SYS_NAND_USE_FLASH_BBT
-#define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST
-#define CONFIG_SYS_NAND_PAGE_2K
-
-#define CONFIG_SYS_NAND_LARGEPAGE
-#define CONFIG_SYS_NAND_BASE_LIST      { 0x02000000, }
-/* socket has two chipselects, nCE0 gated by address BIT(14) */
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_MAX_CHIPS      2
-
-/* SD/MMC */
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_DAVINCI_MMC
-#define CONFIG_DAVINCI_MMC_SD1
-#define CONFIG_MMC_MBLOCK
-
-/* USB: OTG connector */
-/* NYET -- #define CONFIG_USB_DAVINCI */
-
-/* U-Boot command configuration */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#ifdef CONFIG_MMC
-#define CONFIG_DOS_PARTITION
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_MMC
-#endif
-
-#ifdef CONFIG_NAND_DAVINCI
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_MTD_DEVICE
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_UBI
-#define CONFIG_RBTREE
-#endif
-
-#ifdef CONFIG_USB_DAVINCI
-#define CONFIG_USB_MUSB_HCD
-#define CONFIG_CMD_USB
-#define CONFIG_USB_STORAGE
-#else
-#undef CONFIG_USB_MUSB_HCD
-#undef CONFIG_CMD_USB
-#undef CONFIG_USB_STORAGE
-#endif
-
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-
-/* U-Boot general configuration */
-#define CONFIG_BOOTFILE                "uImage"        /* Boot file name */
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size  */
-#define CONFIG_SYS_PBSIZE                      /* Print buffer size */ \
-               (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_LONGHELP
-
-#ifdef CONFIG_NAND_DAVINCI
-#define CONFIG_ENV_SIZE                (256 << 10)     /* 256 KiB */
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_OFFSET      0x3C0000
-#undef CONFIG_ENV_IS_IN_FLASH
-#endif
-
-#if defined(CONFIG_MMC) && !defined(CONFIG_ENV_IS_IN_NAND)
-#define CONFIG_CMD_ENV
-#define CONFIG_ENV_SIZE                (16 << 10)      /* 16 KiB */
-#define CONFIG_ENV_OFFSET      (51 << 9)       /* Sector 51 */
-#define CONFIG_ENV_IS_IN_MMC
-#undef CONFIG_ENV_IS_IN_FLASH
-#endif
-
-#define CONFIG_BOOTDELAY       5
-#define CONFIG_BOOTCOMMAND \
-               "dhcp;bootm"
-#define CONFIG_BOOTARGS \
-               "console=ttyS0,115200n8 " \
-               "root=/dev/mmcblk0p1 rootwait rootfstype=ext3 ro"
-
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_TIMESTAMP
-
-#define CONFIG_NET_RETRY_COUNT 10
-
-/* U-Boot memory configuration */
-#define CONFIG_SYS_MALLOC_LEN          (1 << 20)       /* 1 MiB */
-#define CONFIG_SYS_MEMTEST_START       0x87000000      /* physical address */
-#define CONFIG_SYS_MEMTEST_END         0x88000000      /* test 16MB RAM */
-
-/* Linux interfacing */
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_SYS_BARGSIZE    1024                    /* bootarg Size */
-#define CONFIG_SYS_LOAD_ADDR   0x80700000              /* kernel address */
-
-
-/* NAND configuration ... socketed with two chipselects.  It normally comes
- * with a 2GByte SLC part with 2KB pages (and 128KB erase blocks); other
- * 2GByte parts may have 4KB pages, 256KB erase blocks, and use MLC.  (MLC
- * pretty much demands the 4-bit ECC support.)  You can of course swap in
- * other parts, including small page ones.
- *
- * This presents a single read-only partition for all bootloader stuff.
- * UBL (1+ block), U-Boot (256KB+), U-Boot environment (one block), and
- * some extra space to help cope with bad blocks in that data.  Linux
- * shouldn't care about its detailed layout, and will probably want to use
- * UBI/UBFS for the rest (except maybe on smallpage chips).  It's easy to
- * override this default partitioning using MTDPARTS and cmdlinepart.
- */
-#define MTDIDS_DEFAULT         "nand0=davinci_nand.0"
-
-#ifdef CONFIG_SYS_NAND_LARGEPAGE
-/*  Use same layout for 128K/256K blocks; allow some bad blocks */
-#define PART_BOOT              "2m(bootloader)ro,"
-#else
-/* Assume 16K erase blocks; allow a few bad ones. */
-#define PART_BOOT              "512k(bootloader)ro,"
-#endif
-
-#define PART_KERNEL            "4m(kernel),"   /* kernel + initramfs */
-#define PART_REST              "-(filesystem)"
-
-#define MTDPARTS_DEFAULT       \
-       "mtdparts=davinci_nand.0:" PART_BOOT PART_KERNEL PART_REST
-
-#define CONFIG_MAX_RAM_BANK_SIZE       (256 << 20)     /* 256 MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_SP_ADDR                \
-       (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/davinci_dm355leopard.h b/include/configs/davinci_dm355leopard.h
deleted file mode 100644 (file)
index e3ff943..0000000
+++ /dev/null
@@ -1,140 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Incorporated
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define DAVINCI_DM355LEOPARD
-
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is a 3rd stage loader */
-#define CONFIG_SYS_NO_FLASH            /* that is, no *NOR* flash */
-#define CONFIG_SYS_CONSOLE_INFO_QUIET
-
-/* SoC Configuration */
-#define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
-#define CONFIG_SYS_HZ_CLOCK            24000000        /* timer0 freq */
-#define CONFIG_SOC_DM355                               /* DM355 based board */
-
-/* Memory Info */
-#define CONFIG_NR_DRAM_BANKS           1
-#define PHYS_SDRAM_1                   0x80000000
-#define PHYS_SDRAM_1_SIZE              (128 << 20)     /* 128 MiB */
-
-/* Serial Driver info: UART0 for console  */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    -4
-#define CONFIG_SYS_NS16550_COM1                0x01c20000
-#define CONFIG_SYS_NS16550_CLK         CONFIG_SYS_HZ_CLOCK
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_BAUDRATE                        115200
-
-/* Ethernet:  external DM9000 */
-#define CONFIG_DRIVER_DM9000           1
-#define CONFIG_DM9000_BASE             0x04000000
-#define DM9000_IO                      CONFIG_DM9000_BASE
-#define DM9000_DATA                    (CONFIG_DM9000_BASE + 16)
-
-/* I2C */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED           400000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE           0x10
-
-/* NAND */
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_CS             2
-#define CONFIG_SYS_NAND_USE_FLASH_BBT
-#define CONFIG_SYS_NAND_HW_ECC
-
-#define CONFIG_SYS_NAND_BASE_LIST      { 0x02000000, }
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-
-/* U-Boot command configuration */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#ifdef CONFIG_NAND_DAVINCI
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_MTD_DEVICE
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_UBI
-#define CONFIG_RBTREE
-#endif
-
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-
-/* U-Boot general configuration */
-#define CONFIG_BOOTFILE                "uImage"        /* Boot file name */
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size  */
-#define CONFIG_SYS_PBSIZE                      /* Print buffer size */ \
-               (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_LONGHELP
-
-#ifdef CONFIG_NAND_DAVINCI
-#define CONFIG_ENV_SIZE                (256 << 10)     /* 256 KiB */
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_OFFSET      0x3C0000
-#undef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_OVERWRITE
-#endif
-
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOTCOMMAND     "dhcp;bootm"
-#define CONFIG_BOOTARGS                \
-                       "console=ttyS0,115200n8 " \
-                       "root=/dev/mmcblk0p1 rootwait rootfstype=ext3 ro"
-
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_TIMESTAMP
-
-#define CONFIG_NET_RETRY_COUNT 10
-
-/* U-Boot memory configuration */
-#define CONFIG_SYS_MALLOC_LEN          (1 << 20)       /* 1 MiB */
-#define CONFIG_SYS_MEMTEST_START       0x87000000      /* physical address */
-#define CONFIG_SYS_MEMTEST_END         0x88000000      /* test 16MB RAM */
-
-/* Linux interfacing */
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_SYS_BARGSIZE    1024                    /* bootarg Size */
-#define CONFIG_SYS_LOAD_ADDR   0x80700000              /* kernel address */
-
-#define MTDIDS_DEFAULT         "nand0=davinci_nand.0"
-
-#ifdef CONFIG_SYS_NAND_LARGEPAGE
-#define PART_BOOT              "2m(bootloader)ro,"
-#else
-/* Assume 16K erase blocks; allow a few bad ones. */
-#define PART_BOOT              "512k(bootloader)ro,"
-#endif
-
-#define PART_KERNEL            "4m(kernel),"   /* kernel + initramfs */
-#define PART_REST              "-(filesystem)"
-
-#define MTDPARTS_DEFAULT       \
-       "mtdparts=davinci_nand.0:" PART_BOOT PART_KERNEL PART_REST
-
-#define CONFIG_MAX_RAM_BANK_SIZE       (256 << 20)     /* 256 MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_SP_ADDR                \
-       (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/davinci_dm365evm.h b/include/configs/davinci_dm365evm.h
deleted file mode 100644 (file)
index bbc801b..0000000
+++ /dev/null
@@ -1,220 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Incorporated
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* Spectrum Digital TMS320DM365 EVM board */
-#define DAVINCI_DM365EVM
-
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is a 3rd stage loader */
-#define CONFIG_SYS_NO_FLASH            /* that is, no *NOR* flash */
-#define CONFIG_SYS_CONSOLE_INFO_QUIET
-
-/* SoC Configuration */
-#define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
-#define CONFIG_SYS_HZ_CLOCK            24000000        /* timer0 freq */
-#define CONFIG_SOC_DM365
-
-/* Memory Info */
-#define CONFIG_NR_DRAM_BANKS           1
-#define PHYS_SDRAM_1                   0x80000000
-#define PHYS_SDRAM_1_SIZE              (128 << 20)     /* 128 MiB */
-
-/* Serial Driver info: UART0 for console  */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    -4
-#define CONFIG_SYS_NS16550_COM1                0x01c20000
-#define CONFIG_SYS_NS16550_CLK         CONFIG_SYS_HZ_CLOCK
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_BAUDRATE                        115200
-
-/* EEPROM definitions for EEPROM on DM365 EVM */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         2
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x50
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      6
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  20
-
-/* Network Configuration */
-#define CONFIG_DRIVER_TI_EMAC
-#define CONFIG_MII
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_NET_RETRY_COUNT 10
-
-/* I2C */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED           400000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE           0x10    /* SMBus host address */
-
-/* NAND: socketed, two chipselects, normally 2 GBytes */
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_CS             2
-#define CONFIG_SYS_NAND_USE_FLASH_BBT
-#define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST
-#define CONFIG_SYS_NAND_PAGE_2K
-
-#define CONFIG_SYS_NAND_LARGEPAGE
-#define CONFIG_SYS_NAND_BASE_LIST      { 0x02000000, }
-/* socket has two chipselects, nCE0 gated by address BIT(14) */
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_MAX_CHIPS      2
-
-/* SD/MMC */
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_DAVINCI_MMC
-#define CONFIG_DAVINCI_MMC_SD1
-#define CONFIG_MMC_MBLOCK
-
-#define PINMUX4_USBDRVBUS_BITCLEAR       0x3000
-#define PINMUX4_USBDRVBUS_BITSET         0x2000
-
-/* USB Configuration */
-#define CONFIG_USB_DAVINCI
-#define CONFIG_USB_MUSB_HCD
-
-#ifdef CONFIG_USB_DAVINCI
-#define CONFIG_CMD_USB         /* include support for usb      */
-#define CONFIG_CMD_STORAGE     /* include support for usb      */
-#define CONFIG_CMD_FAT         /* include support for FAT/storage*/
-#define CONFIG_DOS_PARTITION   /* include support for FAT/storage*/
-#endif
-
-#ifdef CONFIG_USB_MUSB_HCD         /* include support for usb host */
-#define CONFIG_CMD_USB         /* include support for usb cmd */
-#define CONFIG_USB_STORAGE     /* MSC class support */
-#define CONFIG_CMD_STORAGE     /* inclue support for usb-storage cmd */
-#define CONFIG_CMD_FAT         /* inclue support for FAT/storage */
-#define CONFIG_DOS_PARTITION   /* inclue support for FAT/storage */
-
-#ifdef CONFIG_USB_KEYBOARD     /* HID class support */
-#define CONFIG_SYS_USB_EVENT_POLL
-
-#define CONFIG_PREBOOT "usb start"
-#endif /* CONFIG_USB_KEYBOARD */
-#endif /* CONFIG_USB_MUSB_HCD */
-
-#ifdef CONFIG_USB_MUSB_UDC
-#define CONFIG_USB_DEVICE              1
-#define CONFIG_USB_TTY                 1
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV   1
-#define CONFIG_USBD_VENDORID           0x0451
-#define CONFIG_USBD_PRODUCTID          0x5678
-#define CONFIG_USBD_MANUFACTURER       "Texas Instruments"
-#define CONFIG_USBD_PRODUCT_NAME       "DM365VM"
-#endif /* CONFIG_USB_MUSB_UDC */
-
-/* U-Boot command configuration */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#ifdef CONFIG_MMC
-#define CONFIG_DOS_PARTITION
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_MMC
-#endif
-
-#ifdef CONFIG_NAND_DAVINCI
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_MTD_DEVICE
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_UBI
-#define CONFIG_RBTREE
-#endif
-
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-
-/* U-Boot general configuration */
-#define CONFIG_BOOTFILE                "uImage"        /* Boot file name */
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size  */
-#define CONFIG_SYS_PBSIZE                      /* Print buffer size */ \
-               (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_LONGHELP
-
-#ifdef CONFIG_NAND_DAVINCI
-#define CONFIG_ENV_SIZE                (256 << 10)     /* 256 KiB */
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_OFFSET      0x3C0000
-#undef CONFIG_ENV_IS_IN_FLASH
-#endif
-
-#if defined(CONFIG_MMC) && !defined(CONFIG_ENV_IS_IN_NAND)
-#define CONFIG_CMD_ENV
-#define CONFIG_ENV_SIZE                (16 << 10)      /* 16 KiB */
-#define CONFIG_ENV_OFFSET      (51 << 9)       /* Sector 51 */
-#define CONFIG_ENV_IS_IN_MMC
-#undef CONFIG_ENV_IS_IN_FLASH
-#endif
-
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOTCOMMAND \
-               "dhcp;bootm"
-#define CONFIG_BOOTARGS \
-               "console=ttyS0,115200n8 " \
-               "root=/dev/mmcblk0p1 rootwait rootfstype=ext3 ro"
-
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_TIMESTAMP
-
-/* U-Boot memory configuration */
-#define CONFIG_SYS_MALLOC_LEN          (1 << 20)       /* 1 MiB */
-#define CONFIG_SYS_MEMTEST_START       0x87000000      /* physical address */
-#define CONFIG_SYS_MEMTEST_END         0x88000000      /* test 16MB RAM */
-
-/* Linux interfacing */
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_SYS_BARGSIZE    1024                    /* bootarg Size */
-#define CONFIG_SYS_LOAD_ADDR   0x80700000              /* kernel address */
-
-
-/* NAND configuration issocketed with two chipselects just like the DM355 EVM.
- * It normally comes with a 2GByte SLC part with 2KB pages
- * (and 128KB erase blocks); other
- * 2GByte parts may have 4KB pages, 256KB erase blocks, and use MLC.  (MLC
- * pretty much demands the 4-bit ECC support.)  You can of course swap in
- * other parts, including small page ones.
- */
-#define MTDIDS_DEFAULT         "nand0=davinci_nand.0"
-
-#ifdef CONFIG_SYS_NAND_LARGEPAGE
-/*  Use same layout for 128K/256K blocks; allow some bad blocks */
-#define PART_BOOT              "2m(bootloader)ro,"
-#else
-/* Assume 16K erase blocks; allow a few bad ones. */
-#define PART_BOOT              "512k(bootloader)ro,"
-#endif
-
-#define PART_KERNEL            "4m(kernel),"   /* kernel + initramfs */
-#define PART_REST              "-(filesystem)"
-
-#define MTDPARTS_DEFAULT       \
-       "mtdparts=davinci_nand.0:" PART_BOOT PART_KERNEL PART_REST
-
-#define CONFIG_MAX_RAM_BANK_SIZE       (256 << 20)     /* 256 MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_SP_ADDR                \
-       (CONFIG_SYS_SDRAM_BASE + 0x1000 - GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/davinci_dm6467evm.h b/include/configs/davinci_dm6467evm.h
deleted file mode 100644 (file)
index 6346422..0000000
+++ /dev/null
@@ -1,138 +0,0 @@
-/*
- * Copyright (C) 2009 Texas Instruments Incorporated
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* Spectrum Digital TMS320DM6467 EVM board */
-#define DAVINCI_DM6467EVM
-#define CONFIG_SYS_USE_NAND
-#define CONFIG_SYS_NAND_SMALLPAGE
-
-#define CONFIG_SKIP_LOWLEVEL_INIT
-
-/* SoC Configuration */
-
-/* Clock rates detection */
-#ifndef __ASSEMBLY__
-extern unsigned int davinci_arm_clk_get(void);
-#endif
-
-/* Arm Clock frequency    */
-#define CONFIG_SYS_CLK_FREQ    davinci_arm_clk_get()
-/* Timer Input clock freq */
-#define CONFIG_SYS_HZ_CLOCK            (CONFIG_SYS_CLK_FREQ/2)
-#define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
-#define CONFIG_SOC_DM646X
-
-/* EEPROM definitions for EEPROM */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         2
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x50
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      6
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  20
-
-/* Memory Info */
-#define CONFIG_SYS_MALLOC_LEN          (1 << 20)       /* 1 MiB */
-#define CONFIG_SYS_MEMTEST_START       0x80000000
-#define CONFIG_SYS_MEMTEST_END         0x81000000      /* 16MB RAM test */
-#define CONFIG_NR_DRAM_BANKS           1
-#define PHYS_SDRAM_1                   0x80000000      /* DDR Start */
-#define PHYS_SDRAM_1_SIZE              (256 << 20)     /* DDR size 256MB */
-
-/* Linux interfacing */
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_SYS_BARGSIZE            1024            /* Bootarg Size */
-#define CONFIG_SYS_LOAD_ADDR           0x80700000      /* kernel address */
-#define CONFIG_REVISION_TAG
-
-/* Serial Driver info */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    4
-#define CONFIG_SYS_NS16550_COM1                0x01c20000
-#define CONFIG_SYS_NS16550_CLK         24000000
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_BAUDRATE                        115200
-
-/* I2C Configuration */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED           80000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE           10
-
-/* Network & Ethernet Configuration */
-#define CONFIG_DRIVER_TI_EMAC
-#define CONFIG_MII
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_NET_RETRY_COUNT 10
-
-/* Flash & Environment */
-#define CONFIG_SYS_NO_FLASH
-#ifdef CONFIG_SYS_USE_NAND
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_MASK_CLE       0x80000
-#define CONFIG_SYS_NAND_MASK_ALE       0x40000
-#define CONFIG_SYS_NAND_CS             2
-#undef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_SIZE                        (16 << 10)      /* 16 KiB */
-#define CONFIG_SYS_NAND_BASE_LIST      {0x42000000, }
-#define CONFIG_SYS_NAND_HW_ECC
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_ENV_OFFSET              0
-#else
-#define CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_SIZE                        (4 << 10)       /* 4 KiB */
-#endif
-
-/* U-Boot general configuration */
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOTFILE                "uImage"        /* Boot file name */
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size  */
-#define CONFIG_SYS_PBSIZE              \
-                       (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS             16
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_AUTO_COMPLETE
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-#define CONFIG_BOOTCOMMAND             "source 0x82080000; dhcp; bootm"
-#define CONFIG_BOOTARGS                        \
-                                       "mem=120M console=ttyS0,115200n8 " \
-                                       "root=/dev/hda1 rw noinitrd ip=dhcp"
-
-/* U-Boot commands */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_SAVES
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#ifdef CONFIG_SYS_USE_NAND
-#define CONFIG_CMD_NAND
-#endif
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#define CONFIG_MAX_RAM_BANK_SIZE       (256 << 20)     /* 256 MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_SIZE       0x1000
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_SDRAM_BASE + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/davinci_dvevm.h b/include/configs/davinci_dvevm.h
deleted file mode 100644 (file)
index 15d8150..0000000
+++ /dev/null
@@ -1,216 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * Define this to make U-Boot skip low level initialization when loaded
- * by initial bootloader. Not required by NAND U-Boot version but IS
- * required for a NOR version used to burn the real NOR U-Boot into
- * NOR Flash. NAND and NOR support for DaVinci chips is mutually exclusive
- * so it is NOT possible to build a U-Boot with both NAND and NOR routines.
- * NOR U-Boot is loaded directly from Flash so it must perform all the
- * low level initialization itself. NAND version is loaded by an initial
- * bootloader (UBL in TI-ese) that performs such an initialization so it's
- * skipped in NAND version. The third DaVinci boot mode loads a bootloader
- * via UART0 and that bootloader in turn loads and runs U-Boot (or whatever)
- * performing low level init prior to loading. All that means we can NOT use
- * NAND version to put U-Boot into NOR because it doesn't have NOR support and
- * we can NOT use NOR version because it performs low level initialization
- * effectively destroying itself in DDR memory. That's why a separate NOR
- * version with this define is needed. It is loaded via UART, then one uses
- * it to somehow download a proper NOR version built WITHOUT this define to
- * RAM (tftp?) and burn it to NOR Flash. I would be probably able to squeeze
- * NOR support into the initial bootloader so it won't be needed but DaVinci
- * static RAM might be too small for this (I have something like 2Kbytes left
- * as of now, without NOR support) so this might've not happened...
- *
-#define CONFIG_NOR_UART_BOOT
- */
-
-/*=======*/
-/* Board */
-/*=======*/
-#define DV_EVM
-#define CONFIG_SYS_NAND_SMALLPAGE
-#define CONFIG_SYS_USE_NAND
-/*===================*/
-/* SoC Configuration */
-/*===================*/
-#define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
-#define CONFIG_SYS_HZ_CLOCK            27000000        /* Timer Input clock freq */
-#define CONFIG_SOC_DM644X
-/*====================================================*/
-/* EEPROM definitions for Atmel 24C256BN SEEPROM chip */
-/* on Sonata/DV_EVM board. No EEPROM on schmoogie.    */
-/*====================================================*/
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         2
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x50
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      6
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  20
-/*=============*/
-/* Memory Info */
-/*=============*/
-#define CONFIG_SYS_MALLOC_LEN          (0x10000 + 128*1024)    /* malloc() len */
-#define CONFIG_SYS_MEMTEST_START       0x80000000      /* memtest start address */
-#define CONFIG_SYS_MEMTEST_END         0x81000000      /* 16MB RAM test */
-#define CONFIG_NR_DRAM_BANKS   1               /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1           0x80000000      /* DDR Start */
-#define PHYS_SDRAM_1_SIZE      0x10000000      /* DDR size 256MB */
-
-#define DDR_8BANKS                             /* 8-bank DDR2 (256MB) */
-/*====================*/
-/* Serial Driver info */
-/*====================*/
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    -4      /* NS16550 register size, byteorder */
-#define CONFIG_SYS_NS16550_COM1        0x01c20000      /* Base address of UART0 */
-#define CONFIG_SYS_NS16550_CLK CONFIG_SYS_HZ_CLOCK     /* Input clock to NS16550 */
-#define CONFIG_CONS_INDEX      1               /* use UART0 for console */
-#define CONFIG_BAUDRATE                115200          /* Default baud rate */
-/*===================*/
-/* I2C Configuration */
-/*===================*/
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED 80000 /* 100Kbps won't work, silicon bug */
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE 10        /* Bogus, master-only in U-Boot */
-/*==================================*/
-/* Network & Ethernet Configuration */
-/*==================================*/
-#define CONFIG_DRIVER_TI_EMAC
-#define CONFIG_MII
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_NET_RETRY_COUNT 10
-/*=====================*/
-/* Flash & Environment */
-/*=====================*/
-#ifdef CONFIG_SYS_USE_NAND
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_CS             2
-#undef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_ENV_IS_IN_NAND          /* U-Boot env in NAND Flash  */
-#ifdef CONFIG_SYS_NAND_SMALLPAGE
-#define CONFIG_ENV_SECT_SIZE   512     /* Env sector Size */
-#define CONFIG_ENV_SIZE                (16 << 10)      /* 16 KiB */
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_MTD_DEVICE
-#define CONFIG_CMD_MTDPARTS
-#define MTDIDS_DEFAULT         \
-       "nand0=davinci_nand.0"
-#define MTDPARTS_DEFAULT       \
-       "mtdparts=davinci_nand.0:384k(bootloader)ro,4m(kernel),-(filesystem)"
-#else
-#define CONFIG_ENV_SECT_SIZE   2048    /* Env sector Size */
-#define CONFIG_ENV_SIZE                (128 << 10)     /* 128 KiB */
-#endif
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is loaded by a bootloader */
-#define CONFIG_SYS_NAND_BASE           0x02000000
-#define CONFIG_SYS_NAND_USE_FLASH_BBT
-#define CONFIG_SYS_NAND_HW_ECC
-#define CONFIG_SYS_MAX_NAND_DEVICE     1       /* Max number of NAND devices */
-#define CONFIG_ENV_OFFSET              0x0     /* Block 0--not used by bootcode */
-#elif defined(CONFIG_SYS_USE_NOR)
-#ifdef CONFIG_NOR_UART_BOOT
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is loaded by a bootloader */
-#else
-#undef CONFIG_SKIP_LOWLEVEL_INIT
-#endif
-#define CONFIG_ENV_IS_IN_FLASH
-#undef CONFIG_SYS_NO_FLASH
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_SYS_MAX_FLASH_BANKS     1               /* max number of flash banks */
-#define CONFIG_SYS_FLASH_SECT_SZ       0x10000         /* 64KB sect size AMD Flash */
-#define CONFIG_ENV_OFFSET              (CONFIG_SYS_FLASH_SECT_SZ*3)
-#define PHYS_FLASH_1           0x02000000      /* CS2 Base address      */
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1    /* Flash Base for U-Boot */
-#define PHYS_FLASH_SIZE                0x2000000       /* Flash size 32MB       */
-#define CONFIG_SYS_MAX_FLASH_SECT      (PHYS_FLASH_SIZE/CONFIG_SYS_FLASH_SECT_SZ)
-#define CONFIG_ENV_SECT_SIZE   CONFIG_SYS_FLASH_SECT_SZ        /* Env sector Size */
-#endif
-/*==============================*/
-/* U-Boot general configuration */
-/*==============================*/
-#define CONFIG_MISC_INIT_R
-#undef CONFIG_BOOTDELAY
-#define CONFIG_BOOTFILE                "uImage"        /* Boot file name */
-#define CONFIG_SYS_CBSIZE              1024            /* Console I/O Buffer Size  */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)        /* Print buffer sz */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */
-#define CONFIG_SYS_LOAD_ADDR           0x80700000      /* default Linux kernel load address */
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_AUTO_COMPLETE           /* Won't work with hush so far, may be later */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-#define CONFIG_USB_MUSB_HCD
-#define CONFIG_USB_DAVINCI
-/*===================*/
-/* Linux Information */
-/*===================*/
-#define LINUX_BOOT_PARAM_ADDR  0x80000100
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_BOOTARGS                "mem=120M console=ttyS0,115200n8 root=/dev/hda1 rw noinitrd ip=dhcp"
-#define CONFIG_BOOTCOMMAND     "setenv setboot setenv bootargs \\$(bootargs) video=dm64xxfb:output=\\$(videostd);run setboot; bootm 0x2050000"
-/*=================*/
-/* U-Boot commands */
-/*=================*/
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-#define CONFIG_CMD_EEPROM
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#ifdef CONFIG_SYS_USE_NAND
-#define CONFIG_CMD_NAND
-#elif defined(CONFIG_SYS_USE_NOR)
-#define CONFIG_CMD_JFFS2
-#else
-#error "Either CONFIG_SYS_USE_NAND or CONFIG_SYS_USE_NOR _MUST_ be defined !!!"
-#endif
-/*==========================*/
-/* USB MSC support (if any) */
-/*==========================*/
-#ifdef CONFIG_USB_DAVINCI
-#define CONFIG_CMD_USB
-#ifdef CONFIG_USB_MUSB_HCD
-#define CONFIG_USB_STORAGE
-#define CONFIG_CMD_STORAGE
-#define CONFIG_CMD_FAT
-#define CONFIG_DOS_PARTITION
-#endif
-#ifdef CONFIG_USB_KEYBOARD
-#define CONFIG_SYS_USB_EVENT_POLL
-#define CONFIG_PREBOOT "usb start"
-#endif
-#endif
-
-#define CONFIG_MAX_RAM_BANK_SIZE       (256 << 20)     /* 256 MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_SIZE       0x1000
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_SDRAM_BASE + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/davinci_schmoogie.h b/include/configs/davinci_schmoogie.h
deleted file mode 100644 (file)
index bc5e1ca..0000000
+++ /dev/null
@@ -1,136 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*=======*/
-/* Board */
-/*=======*/
-#define SCHMOOGIE
-#define CONFIG_SYS_NAND_LARGEPAGE
-#define CONFIG_SYS_USE_NAND
-#define MACH_TYPE_SCHMOOGIE 1255
-#define CONFIG_MACH_TYPE MACH_TYPE_SCHMOOGIE
-
-/*===================*/
-/* SoC Configuration */
-/*===================*/
-#define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
-#define CONFIG_SYS_HZ_CLOCK            27000000        /* Timer Input clock freq */
-#define CONFIG_SOC_DM644X
-/*=============*/
-/* Memory Info */
-/*=============*/
-#define CONFIG_SYS_MALLOC_LEN          (0x10000 + 256*1024)    /* malloc() len */
-#define CONFIG_SYS_MEMTEST_START       0x80000000      /* memtest start address */
-#define CONFIG_SYS_MEMTEST_END         0x81000000      /* 16MB RAM test */
-#define CONFIG_NR_DRAM_BANKS   1               /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1           0x80000000      /* DDR Start */
-#define PHYS_SDRAM_1_SIZE      0x08000000      /* DDR size 128MB */
-#define DDR_4BANKS                             /* 4-bank DDR2 (128MB) */
-/*====================*/
-/* Serial Driver info */
-/*====================*/
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    -4      /* NS16550 register size, byteorder */
-#define CONFIG_SYS_NS16550_COM1        0x01c20000      /* Base address of UART0 */
-#define CONFIG_SYS_NS16550_CLK CONFIG_SYS_HZ_CLOCK     /* Input clock to NS16550 */
-#define CONFIG_CONS_INDEX      1               /* use UART0 for console */
-#define CONFIG_BAUDRATE                115200          /* Default baud rate */
-/*===================*/
-/* I2C Configuration */
-/*===================*/
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED 80000 /* 100Kbps won't work, silicon bug */
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE 10    /* Bogus, master-only in U-Boot */
-/*==================================*/
-/* Network & Ethernet Configuration */
-/*==================================*/
-#define CONFIG_DRIVER_TI_EMAC
-#define CONFIG_MII
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_NET_RETRY_COUNT 10
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-/*=====================*/
-/* Flash & Environment */
-/*=====================*/
-#undef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_CS             2
-#define CONFIG_ENV_IS_IN_NAND          /* U-Boot env in NAND Flash  */
-#define CONFIG_ENV_SECT_SIZE   2048    /* Env sector Size */
-#define CONFIG_ENV_SIZE                (128 << 10)     /* 128 KiB */
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is loaded by a bootloader */
-#define CONFIG_SYS_NAND_BASE           0x02000000
-#define CONFIG_SYS_NAND_HW_ECC
-#define CONFIG_SYS_MAX_NAND_DEVICE     1       /* Max number of NAND devices */
-#define CONFIG_ENV_OFFSET              0x0     /* Block 0--not used by bootcode */
-/*=====================*/
-/* Board related stuff */
-/*=====================*/
-#define CONFIG_RTC_DS1307              /* RTC chip on SCHMOOGIE */
-#define CONFIG_SYS_I2C_RTC_ADDR        0x6f    /* RTC chip I2C address */
-#define CONFIG_UID_DS28CM00            /* Unique ID on SCHMOOGIE */
-#define CONFIG_SYS_UID_ADDR            0x50    /* UID chip I2C address */
-/*==============================*/
-/* U-Boot general configuration */
-/*==============================*/
-#define CONFIG_MISC_INIT_R
-#undef CONFIG_BOOTDELAY
-#define CONFIG_BOOTFILE                "uImage"        /* Boot file name */
-#define CONFIG_SYS_CBSIZE              1024            /* Console I/O Buffer Size  */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)        /* Print buffer sz */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */
-#define CONFIG_SYS_LOAD_ADDR           0x80700000      /* default Linux kernel load address */
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_AUTO_COMPLETE           /* Won't work with hush so far, may be later */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-/*===================*/
-/* Linux Information */
-/*===================*/
-#define LINUX_BOOT_PARAM_ADDR  0x80000100
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_BOOTARGS                "mem=56M console=ttyS0,115200n8 root=/dev/hda1 rw noinitrd ip=dhcp"
-#define CONFIG_BOOTCOMMAND     "setenv setboot setenv bootargs \\$(bootargs) video=dm64xxfb:output=\\$(videostd);run setboot"
-/*=================*/
-/* U-Boot commands */
-/*=================*/
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_NAND
-#undef CONFIG_CMD_EEPROM
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#define CONFIG_MAX_RAM_BANK_SIZE       (256 << 20)     /* 256 MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_SIZE       0x1000
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_SDRAM_BASE + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/davinci_sffsdr.h b/include/configs/davinci_sffsdr.h
deleted file mode 100644 (file)
index e719388..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * Copyright (C) 2008 Lyrtech <www.lyrtech.com>
- * Copyright (C) 2008 Philip Balister, OpenSDR <philip@opensdr.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* Board */
-#define SFFSDR
-#define CONFIG_SYS_NAND_LARGEPAGE
-#define CONFIG_SYS_USE_NAND
-#define CONFIG_SYS_USE_DSPLINK         /* don't power up the DSP. */
-/* SoC Configuration */
-#define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
-#define CONFIG_SYS_HZ_CLOCK            27000000        /* Timer Input clock freq */
-#define CONFIG_SOC_DM644X
-/* EEPROM definitions for Atmel 24LC64 EEPROM chip */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         2
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x50
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      5
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  20
-/* Memory Info */
-#define CONFIG_SYS_MALLOC_LEN          (0x10000 + 256*1024)    /* malloc() len */
-#define CONFIG_SYS_MEMTEST_START       0x80000000      /* memtest start address */
-#define CONFIG_SYS_MEMTEST_END         0x81000000      /* 16MB RAM test */
-#define CONFIG_NR_DRAM_BANKS   1               /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1           0x80000000      /* DDR Start */
-#define PHYS_SDRAM_1_SIZE      0x08000000      /* DDR size 128MB */
-#define DDR_4BANKS                             /* 4-bank DDR2 (128MB) */
-/* Serial Driver info */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    -4      /* NS16550 register size, byteorder */
-#define CONFIG_SYS_NS16550_COM1        0x01c20000      /* Base address of UART0 */
-#define CONFIG_SYS_NS16550_CLK CONFIG_SYS_HZ_CLOCK     /* Input clock to NS16550 */
-#define CONFIG_CONS_INDEX      1               /* use UART0 for console */
-#define CONFIG_BAUDRATE                115200          /* Default baud rate */
-/* I2C Configuration */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED 80000 /* 100Kbps won't work, silicon bug */
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE 10    /* Bogus, master-only in U-Boot */
-/* Network & Ethernet Configuration */
-#define CONFIG_DRIVER_TI_EMAC
-#define CONFIG_MII
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_NET_RETRY_COUNT 10
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-/* Flash & Environment */
-#undef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_CS             2
-#define CONFIG_ENV_IS_IN_NAND          /* U-Boot env in NAND Flash  */
-#define CONFIG_ENV_SECT_SIZE   2048    /* Env sector Size */
-#define CONFIG_ENV_SIZE                (128 << 10)     /* 128 KiB */
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is loaded by a bootloader */
-#define CONFIG_SYS_NAND_BASE           0x02000000
-#define CONFIG_SYS_NAND_HW_ECC
-#define CONFIG_SYS_MAX_NAND_DEVICE     1       /* Max number of NAND devices */
-#define CONFIG_ENV_OFFSET              0x0     /* Block 0--not used by bootcode */
-/* I2C switch definitions for PCA9543 chip */
-#define CONFIG_SYS_I2C_PCA9543_ADDR            0x70
-#define CONFIG_SYS_I2C_PCA9543_ADDR_LEN        0       /* Single register. */
-#define CONFIG_SYS_I2C_PCA9543_ENABLE_CH0      0x01    /* Enable channel 0. */
-/* U-Boot general configuration */
-#define CONFIG_MISC_INIT_R
-#define CONFIG_BOOTDELAY       5               /* Autoboot after 5 seconds. */
-#define CONFIG_BOOTFILE                "uImage"        /* Boot file name */
-#define CONFIG_SYS_CBSIZE              1024            /* Console I/O Buffer Size  */
-#define CONFIG_SYS_PBSIZE                                                      \
-               (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)    /* Print buffer size */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */
-#define CONFIG_SYS_LOAD_ADDR           0x80700000      /* Default Linux kernel
-                                                * load address. */
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_AUTO_COMPLETE           /* Won't work with hush so far,
-                                        * may be later */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-/* Linux Information */
-#define LINUX_BOOT_PARAM_ADDR  0x80000100
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_BOOTARGS                        \
-       "mem=56M "                      \
-       "console=ttyS0,115200n8 "       \
-       "root=/dev/nfs rw noinitrd ip=dhcp "    \
-       "nfsroot=${serverip}:/nfsroot/sffsdr "  \
-       "eth0=${ethaddr}"
-#define CONFIG_BOOTCOMMAND     \
-       "nand read 87A00000 100000 300000;"     \
-       "bootelf 87A00000"
-/* U-Boot commands */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_ELF /* Needed to load Integrity kernel. */
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#define CONFIG_MAX_RAM_BANK_SIZE       (256 << 20)     /* 256 MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_SIZE       0x1000
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_SDRAM_BASE + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/davinci_sonata.h b/include/configs/davinci_sonata.h
deleted file mode 100644 (file)
index b85c988..0000000
+++ /dev/null
@@ -1,187 +0,0 @@
-/*
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * Define this to make U-Boot skip low level initialization when loaded
- * by initial bootloader. Not required by NAND U-Boot version but IS
- * required for a NOR version used to burn the real NOR U-Boot into
- * NOR Flash. NAND and NOR support for DaVinci chips is mutually exclusive
- * so it is NOT possible to build a U-Boot with both NAND and NOR routines.
- * NOR U-Boot is loaded directly from Flash so it must perform all the
- * low level initialization itself. NAND version is loaded by an initial
- * bootloader (UBL in TI-ese) that performs such an initialization so it's
- * skipped in NAND version. The third DaVinci boot mode loads a bootloader
- * via UART0 and that bootloader in turn loads and runs U-Boot (or whatever)
- * performing low level init prior to loading. All that means we can NOT use
- * NAND version to put U-Boot into NOR because it doesn't have NOR support and
- * we can NOT use NOR version because it performs low level initialization
- * effectively destroying itself in DDR memory. That's why a separate NOR
- * version with this define is needed. It is loaded via UART, then one uses
- * it to somehow download a proper NOR version built WITHOUT this define to
- * RAM (tftp?) and burn it to NOR Flash. I would be probably able to squeeze
- * NOR support into the initial bootloader so it won't be needed but DaVinci
- * static RAM might be too small for this (I have something like 2Kbytes left
- * as of now, without NOR support) so this might've not happened...
- *
-#define CONFIG_NOR_UART_BOOT
- */
-
-/*=======*/
-/* Board */
-/*=======*/
-#define SONATA_BOARD
-#define CONFIG_SYS_NAND_SMALLPAGE
-#define CONFIG_SYS_USE_NOR
-#define MACH_TYPE_SONATA 1254
-#define CONFIG_MACH_TYPE MACH_TYPE_SONATA
-/*===================*/
-/* SoC Configuration */
-/*===================*/
-#define CONFIG_SYS_TIMERBASE           0x01c21400      /* use timer 0 */
-#define CONFIG_SYS_HZ_CLOCK            27000000        /* Timer Input clock freq */
-#define CONFIG_SOC_DM644X
-/*====================================================*/
-/* EEPROM definitions for Atmel 24C256BN SEEPROM chip */
-/* on Sonata/DV_EVM board. No EEPROM on schmoogie.    */
-/*====================================================*/
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         2
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x50
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      6
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  20
-/*=============*/
-/* Memory Info */
-/*=============*/
-#define CONFIG_SYS_MALLOC_LEN          (0x10000 + 128*1024)    /* malloc() len */
-#define CONFIG_SYS_MEMTEST_START       0x80000000      /* memtest start address */
-#define CONFIG_SYS_MEMTEST_END         0x81000000      /* 16MB RAM test */
-#define CONFIG_NR_DRAM_BANKS   1               /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1           0x80000000      /* DDR Start */
-#define PHYS_SDRAM_1_SIZE      0x08000000      /* DDR size 128MB */
-#define DDR_4BANKS                             /* 4-bank DDR2 (128MB) */
-/*====================*/
-/* Serial Driver info */
-/*====================*/
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    -4      /* NS16550 register size, byteorder */
-#define CONFIG_SYS_NS16550_COM1        0x01c20000      /* Base address of UART0 */
-#define CONFIG_SYS_NS16550_CLK CONFIG_SYS_HZ_CLOCK     /* Input clock to NS16550 */
-#define CONFIG_CONS_INDEX      1               /* use UART0 for console */
-#define CONFIG_BAUDRATE                115200          /* Default baud rate */
-/*===================*/
-/* I2C Configuration */
-/*===================*/
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED 80000 /* 100Kbps won't work, silicon bug */
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE 10    /* Bogus, master-only in U-Boot */
-/*==================================*/
-/* Network & Ethernet Configuration */
-/*==================================*/
-#define CONFIG_DRIVER_TI_EMAC
-#define CONFIG_MII
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_NET_RETRY_COUNT 10
-/*=====================*/
-/* Flash & Environment */
-/*=====================*/
-#ifdef CONFIG_SYS_USE_NAND
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_CS             2
-#undef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_ENV_OVERWRITE           /* instead if obsoleted forceenv() */
-#define CONFIG_ENV_IS_IN_NAND          /* U-Boot env in NAND Flash  */
-#define CONFIG_ENV_SECT_SIZE   512     /* Env sector Size */
-#define CONFIG_ENV_SIZE                (16 << 10)      /* 16 KiB */
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is loaded by a bootloader */
-#define CONFIG_SYS_NAND_BASE           0x02000000
-#define CONFIG_SYS_NAND_HW_ECC
-#define CONFIG_SYS_MAX_NAND_DEVICE     1       /* Max number of NAND devices */
-#define CONFIG_ENV_OFFSET              0x0     /* Block 0--not used by bootcode */
-#elif defined(CONFIG_SYS_USE_NOR)
-#ifdef CONFIG_NOR_UART_BOOT
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is loaded by a bootloader */
-#else
-#undef CONFIG_SKIP_LOWLEVEL_INIT
-#endif
-#define CONFIG_ENV_IS_IN_FLASH
-#undef CONFIG_SYS_NO_FLASH
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_SYS_MAX_FLASH_BANKS     1               /* max number of flash banks */
-#define CONFIG_SYS_FLASH_SECT_SZ       0x20000         /* 128KB sect size AMD Flash */
-#define CONFIG_ENV_OFFSET              (CONFIG_SYS_FLASH_SECT_SZ*2)
-#define CONFIG_ENV_SIZE                CONFIG_SYS_FLASH_SECT_SZ
-#define PHYS_FLASH_1           0x02000000      /* CS2 Base address      */
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1    /* Flash Base for U-Boot */
-#define PHYS_FLASH_SIZE                0x2000000       /* Flash size 32MB       */
-#define CONFIG_SYS_MAX_FLASH_SECT      (PHYS_FLASH_SIZE/CONFIG_SYS_FLASH_SECT_SZ)
-#define CONFIG_ENV_SECT_SIZE   CONFIG_SYS_FLASH_SECT_SZ        /* Env sector Size */
-#endif
-/*==============================*/
-/* U-Boot general configuration */
-/*==============================*/
-#define CONFIG_MISC_INIT_R
-#undef CONFIG_BOOTDELAY
-#define CONFIG_BOOTFILE                "uImage"        /* Boot file name */
-#define CONFIG_SYS_CBSIZE              1024            /* Console I/O Buffer Size  */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)        /* Print buffer sz */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */
-#define CONFIG_SYS_LOAD_ADDR           0x80700000      /* default Linux kernel load address */
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_AUTO_COMPLETE           /* Won't work with hush so far, may be later */
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-/*===================*/
-/* Linux Information */
-/*===================*/
-#define LINUX_BOOT_PARAM_ADDR  0x80000100
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_BOOTARGS                "mem=56M console=ttyS0,115200n8 root=/dev/hda1 rw noinitrd ip=dhcp"
-#define CONFIG_BOOTCOMMAND     "setenv setboot setenv bootargs \\$(bootargs) video=dm64xxfb:output=\\$(videostd);run setboot; bootm 0x2060000"
-/*=================*/
-/* U-Boot commands */
-/*=================*/
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-#define CONFIG_CMD_EEPROM
-#ifdef CONFIG_SYS_USE_NAND
-#define CONFIG_CMD_NAND
-#elif defined(CONFIG_SYS_USE_NOR)
-#define CONFIG_CMD_JFFS2
-#else
-#error "Either CONFIG_SYS_USE_NAND or CONFIG_SYS_USE_NOR _MUST_ be defined !!!"
-#endif
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#define CONFIG_MAX_RAM_BANK_SIZE       (256 << 20)     /* 256 MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_SIZE       0x1000
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_SDRAM_BASE + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/dig297.h b/include/configs/dig297.h
deleted file mode 100644 (file)
index 98205ad..0000000
+++ /dev/null
@@ -1,268 +0,0 @@
-/*
- * (C) Copyright 2011 Comelit Group SpA
- * Luca Ceresoli <luca.ceresoli@comelit.it>
- *
- * Based on omap3_beagle.h:
- * (C) Copyright 2006-2008
- * Texas Instruments.
- * Richard Woodruff <r-woodruff2@ti.com>
- * Syed Mohammed Khasim <x0khasim@ti.com>
- *
- * Configuration settings for the Comelit DIG297 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#include <asm/mach-types.h>
-#ifdef MACH_TYPE_OMAP3_CPS
-#error "MACH_TYPE_OMAP3_CPS has been defined properly, please remove this."
-#else
-#define MACH_TYPE_OMAP3_CPS 2751
-#endif
-#define CONFIG_MACH_TYPE MACH_TYPE_OMAP3_CPS
-/* Common ARM Erratas */
-#define CONFIG_ARM_ERRATA_454179
-#define CONFIG_ARM_ERRATA_430973
-#define CONFIG_ARM_ERRATA_621766
-
-/*
- * High Level Configuration Options
- */
-#define CONFIG_OMAP            /* in a TI OMAP core */
-#define CONFIG_OMAP_GPIO
-#define CONFIG_OMAP_COMMON
-
-#define CONFIG_SYS_TEXT_BASE   0x80008000
-
-#define CONFIG_SDRC    /* The chip has SDRC controller */
-
-#include <asm/arch/cpu.h>              /* get chip and board defs */
-#include <asm/arch/omap.h>
-
-/*
- * Display CPU and Board information
- */
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-
-/* Clock Defines */
-#define V_OSCK                 26000000        /* Clock output from T2 */
-#define V_SCLK                 (V_OSCK >> 1)
-
-#define CONFIG_MISC_INIT_R
-
-#define CONFIG_CMDLINE_TAG                     /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-#define CONFIG_REVISION_TAG
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_ENV_SIZE                        (128 << 10)     /* 128 KiB */
-                                               /* Sector */
-#define CONFIG_SYS_MALLOC_LEN          (1024 << 10) /* UBI needs >= 512 kB */
-
-/*
- * 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
-
-/*
- * select serial console configuration: UART3 (ttyO2)
- */
-#define CONFIG_CONS_INDEX              3
-#define CONFIG_SYS_NS16550_COM3                OMAP34XX_UART3
-#define CONFIG_SERIAL3                 3
-
-/* 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             1
-#define CONFIG_MMC                     1
-#define CONFIG_OMAP_HSMMC              1
-#define CONFIG_DOS_PARTITION
-
-/* library portions to compile in */
-#define CONFIG_RBTREE
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_LZO
-
-/* commands to include */
-#define CONFIG_CMD_FAT         /* FAT support                  */
-#define CONFIG_CMD_UBI         /* UBI Support                  */
-#define CONFIG_CMD_UBIFS       /* UBIFS Support                */
-#define CONFIG_CMD_MTDPARTS    /* Enable MTD parts commands    */
-#define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
-#define MTDIDS_DEFAULT         "nand0=omap2-nand.0"
-#define MTDPARTS_DEFAULT       "mtdparts=omap2-nand.0:896k(uboot),"\
-                               "128k(uboot-env),3m(kernel),252m(ubi)"
-
-#define CONFIG_CMD_I2C         /* I2C serial bus support       */
-#define CONFIG_CMD_MMC         /* MMC support                  */
-#define CONFIG_CMD_NAND                /* NAND support                 */
-
-#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
-
-/*
- * TWL4030
- */
-#define CONFIG_TWL4030_POWER
-#define CONFIG_TWL4030_LED
-
-/*
- * Board NAND Info.
- */
-#define CONFIG_NAND_OMAP_GPMC
-#define CONFIG_SYS_NAND_BUSWIDTH_16BIT
-#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 */
-
-#if defined(CONFIG_CMD_NET)
-/*
- * SMSC9220 Ethernet
- */
-
-#define CONFIG_SMC911X
-#define CONFIG_SMC911X_32_BIT
-#define CONFIG_SMC911X_BASE     0x2C000000
-
-#endif /* (CONFIG_CMD_NET) */
-
-/* Environment information */
-#define CONFIG_BOOTDELAY               1
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "loadaddr=0x82000000\0" \
-       "console=ttyO2,115200n8\0" \
-       "mtdids=" MTDIDS_DEFAULT "\0" \
-       "mtdparts=" MTDPARTS_DEFAULT "\0" \
-       "partition=nand0,3\0"\
-       "mmcroot=/dev/mmcblk0p2 rw\0" \
-       "mmcrootfstype=ext3 rootwait\0" \
-       "nandroot=ubi0:rootfs ro\0" \
-       "nandrootfstype=ubifs\0" \
-       "nfspath=/srv/nfs\0" \
-       "tftpfilename=uImage\0" \
-       "gatewayip=0.0.0.0\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "${mtdparts} " \
-               "root=${mmcroot} " \
-               "rootfstype=${mmcrootfstype} " \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:" \
-                       "${netmask}:${hostname}::off\0" \
-       "nandargs=setenv bootargs console=${console} " \
-               "${mtdparts} " \
-               "ubi.mtd=3 " \
-               "root=${nandroot} " \
-               "rootfstype=${nandrootfstype} " \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:" \
-                       "${netmask}:${hostname}::off\0" \
-       "netargs=setenv bootargs console=${console} " \
-               "${mtdparts} " \
-               "root=/dev/nfs rw " \
-               "nfsroot=${serverip}:${nfspath} " \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:" \
-                       "${netmask}:${hostname}::off\0" \
-       "mmcboot=echo Booting from mmc ...; " \
-               "run mmcargs; " \
-               "bootm ${loadaddr}\0" \
-       "nandboot=echo Booting from nand ...; " \
-               "run nandargs; " \
-               "nand read ${loadaddr} 100000 300000; " \
-               "bootm ${loadaddr}\0" \
-       "netboot=echo Booting from network ...; " \
-               "run netargs; " \
-               "tftp ${loadaddr} ${serverip}:${tftpfilename}; " \
-               "bootm ${loadaddr}\0" \
-       "resetenv=nand erase e0000 20000\0"\
-
-#define CONFIG_BOOTCOMMAND \
-       "run nandboot"
-
-#define CONFIG_AUTO_COMPLETE
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP            /* undef to save memory */
-#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
-/* 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)
-
-#define CONFIG_SYS_MEMTEST_START       (OMAP34XX_SDRC_CS0)     /* memtest */
-                                                               /* works on */
-#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 *** */
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 2 sectors */
-
-#define CONFIG_SYS_FLASH_BASE          boot_flash_base
-
-/* Monitor at start of flash */
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
-
-#define CONFIG_ENV_IS_IN_NAND
-#define SMNAND_ENV_OFFSET              0x0E0000 /* environment starts here */
-
-#define CONFIG_SYS_ENV_SECT_SIZE       (128 << 10)     /* 128 KiB */
-#define CONFIG_ENV_OFFSET              SMNAND_ENV_OFFSET
-#define CONFIG_ENV_ADDR                        SMNAND_ENV_OFFSET
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_ADDR       0x4020f800
-#define CONFIG_SYS_INIT_RAM_SIZE       0x800
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_INIT_RAM_ADDR + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-
-#endif /* __CONFIG_H */
index 9a70aaecbf47589a5584c7313c5b16b49723375f..2d1f1b3db91ef55fdbf7d7a2f8f008fc2471e364 100644 (file)
@@ -24,6 +24,8 @@
 #define CONFIG_VIDEO
 #define CONFIG_PREBOOT
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /*
  * SoC Configuration
  */
diff --git a/include/configs/eb_cpux9k2.h b/include/configs/eb_cpux9k2.h
deleted file mode 100644 (file)
index d27f7e0..0000000
+++ /dev/null
@@ -1,400 +0,0 @@
-/*
- * (C) Copyright 2008-2009
- * BuS Elektronik GmbH & Co. KG <www.bus-elektronik.de>
- * Jens Scharsig <esw@bus-elektronik.de>
- *
- * Configuation settings for the EB+CPUx9K2 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _CONFIG_EB_CPUx9K2_H_
-#define _CONFIG_EB_CPUx9K2_H_
-
-/*--------------------------------------------------------------------------*/
-
-#define CONFIG_AT91RM9200              /* It's an Atmel AT91RM9200 SoC */
-#define CONFIG_EB_CPUX9K2              /* on an EP+CPUX9K2 Board       */
-#define USE_920T_MMU
-
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_IDENT_STRING    " on EB+CPUx9K2"
-
-#include <asm/hardware.h>      /* needed for port definitions */
-
-#define CONFIG_MISC_INIT_R
-#define CONFIG_BOARD_EARLY_INIT_F
-
-#define MACH_TYPE_EB_CPUX9K2           1977
-#define CONFIG_MACH_TYPE               MACH_TYPE_EB_CPUX9K2
-
-#define CONFIG_SYS_CACHELINE_SIZE      32
-#define CONFIG_SYS_DCACHE_OFF
-
-/*--------------------------------------------------------------------------*/
-#ifndef CONFIG_RAMBOOT
-#define CONFIG_SYS_TEXT_BASE           0x00000000
-#else
-#define CONFIG_SKIP_LOWLEVEL_INIT
-#define CONFIG_SYS_TEXT_BASE           0x21800000
-#endif
-#define CONFIG_SYS_LOAD_ADDR           0x21000000  /* default load address */
-#define CONFIG_STANDALONE_LOAD_ADDR    0x21000000
-
-#define CONFIG_BOOT_RETRY_TIME         30
-#define CONFIG_CMDLINE_EDITING
-
-#define CONFIG_SYS_CBSIZE      512             /* Console I/O Buffer Size */
-#define CONFIG_SYS_MAXARGS     32              /* max number of command args */
-#define CONFIG_SYS_PBSIZE      \
-       (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-
-/*
- * ARM asynchronous clock
- */
-
-#define AT91C_MAIN_CLOCK       179404800       /* from 12.288 MHz * 73 / 5 */
-#define AT91C_MASTER_CLOCK     (AT91C_MAIN_CLOCK / 3)
-#define CONFIG_SYS_HZ_CLOCK    (AT91C_MASTER_CLOCK / 2)
-
-#define CONFIG_SYS_AT91_SLOW_CLOCK     32768           /* slow clock */
-
-#define CONFIG_CMDLINE_TAG             1
-#define CONFIG_SETUP_MEMORY_TAGS       1
-#define CONFIG_INITRD_TAG              1
-
-#define CONFIG_SYS_USE_MAIN_OSCILLATOR 1
-/* flash */
-#define CONFIG_SYS_EBI_CFGR_VAL                0x00000000
-#define CONFIG_SYS_SMC_CSR0_VAL                0x00003284 /* 16bit, 2 TDF, 4 WS */
-
-/* clocks */
-#define CONFIG_SYS_PLLAR_VAL           0x20483E05 /* 179.4048 MHz for PCK */
-#define CONFIG_SYS_PLLBR_VAL           0x104C3E0A /* 47.3088 MHz (for USB) */
-#define CONFIG_SYS_MCKR_VAL            0x00000202 /* PCK/3 = MCK Clock */
-
-/*
- * Size of malloc() pool
- */
-
-#define CONFIG_SYS_MALLOC_LEN          (4 * 1024 * 1024)
-
-/*
- * sdram
- */
-
-#define CONFIG_NR_DRAM_BANKS           1
-
-#define CONFIG_SYS_SDRAM_BASE          0x20000000
-#define CONFIG_SYS_SDRAM_SIZE          0x04000000  /* 64 megs */
-#define CONFIG_SYS_INIT_SP_ADDR                0x00204000  /* use internal SRAM */
-
-#define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
-#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + \
-                                       CONFIG_SYS_SDRAM_SIZE - 0x00400000 - \
-                                       CONFIG_SYS_MALLOC_LEN)
-
-#define CONFIG_SYS_PIOC_ASR_VAL                0xFFFF0000 /* PIOC as D16/D31 */
-#define CONFIG_SYS_PIOC_BSR_VAL                0x00000000
-#define CONFIG_SYS_PIOC_PDR_VAL                0xFFFF0000
-#define CONFIG_SYS_EBI_CSA_VAL         0x00000002 /* CS1=SDRAM */
-#define CONFIG_SYS_SDRC_CR_VAL         0x2188c159 /* set up the SDRAM */
-#define CONFIG_SYS_SDRAM               0x20000000 /* address of the SDRAM */
-#define CONFIG_SYS_SDRAM1              0x20000080 /* address of the SDRAM */
-#define CONFIG_SYS_SDRAM_VAL           0x00000000 /* value written to SDRAM */
-#define CONFIG_SYS_SDRC_MR_VAL         0x00000002 /* Precharge All */
-#define CONFIG_SYS_SDRC_MR_VAL1                0x00000004 /* refresh */
-#define CONFIG_SYS_SDRC_MR_VAL2                0x00000003 /* Load Mode Register */
-#define CONFIG_SYS_SDRC_MR_VAL3                0x00000000 /* Normal Mode */
-#define CONFIG_SYS_SDRC_TR_VAL         0x000002E0 /* Write refresh rate */
-
-/*
- * Command line configuration
- */
-#define CONFIG_CMD_BMP
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_PING
-#define CONFIG_I2C_CMD_TREE
-#define CONFIG_CMD_USB
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_UBI
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_CMD_UBIFS
-
-#define CONFIG_SYS_LONGHELP
-
-/*
- * MTD defines
- */
-
-#define CONFIG_FLASH_CFI_MTD
-#define CONFIG_MTD_DEVICE
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-
-#define MTDIDS_DEFAULT         "nor0=physmap-flash.0,nand0=atmel_nand"
-#define MTDPARTS_DEFAULT       "mtdparts="                             \
-                                       "physmap-flash.0:"              \
-                                               "512k(U-Boot),"         \
-                                               "128k(Env),"            \
-                                               "128k(Splash),"         \
-                                               "4M(Kernel),"           \
-                                               "384k(MiniFS),"         \
-                                               "-(FS)"                 \
-                                       ";"                             \
-                                       "atmel_nand:"                   \
-                                               "1M(emergency),"        \
-                                               "-(data)"
-/*
- * Hardware drivers
- */
-#define CONFIG_USB_ATMEL
-#define CONFIG_USB_ATMEL_CLK_SEL_PLLB
-#define CONFIG_USB_OHCI_NEW
-#define CONFIG_AT91C_PQFP_UHPBUG
-#define CONFIG_USB_STORAGE
-#define CONFIG_DOS_PARTITION
-#define CONFIG_ISO_PARTITION
-#define CONFIG_EFI_PARTITION
-
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     1
-#define CONFIG_SYS_USB_OHCI_CPU_INIT
-#define CONFIG_SYS_USB_OHCI_REGS_BASE          0x00300000
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME          "at91rm9200"
-
-/*
- * UART/CONSOLE
- */
-
-#define CONFIG_BAUDRATE 115200
-#define CONFIG_ATMEL_USART
-#define CONFIG_USART_BASE      ATMEL_BASE_DBGU
-#define CONFIG_USART_ID                0/* ignored in arm */
-
-/*
- * network
- */
-
-#define CONFIG_NET_RETRY_COUNT         10
-#define CONFIG_RESET_PHY_R             1
-
-#define CONFIG_DRIVER_AT91EMAC         1
-#define CONFIG_DRIVER_AT91EMAC_QUIET   1
-#define CONFIG_SYS_RX_ETH_BUFFER       8
-#define CONFIG_MII                     1
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * I2C-Bus
- */
-
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT            /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      50000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0
-
-/* Software  I2C driver configuration */
-
-#define AT91_PIN_SDA                   (1<<25)         /* AT91C_PIO_PA25 */
-#define AT91_PIN_SCL                   (1<<26)         /* AT91C_PIO_PA26 */
-
-#define CONFIG_SYS_I2C_INIT_BOARD
-
-#define I2C_INIT       i2c_init_board();
-#define I2C_ACTIVE     writel(ATMEL_PMX_AA_TWD, &pio->pioa.mddr);
-#define I2C_TRISTATE   writel(ATMEL_PMX_AA_TWD, &pio->pioa.mder);
-#define I2C_READ       ((readl(&pio->pioa.pdsr) & ATMEL_PMX_AA_TWD) != 0)
-#define I2C_SDA(bit)                                           \
-       if (bit)                                                \
-               writel(ATMEL_PMX_AA_TWD, &pio->pioa.sodr);      \
-       else                                                    \
-               writel(ATMEL_PMX_AA_TWD, &pio->pioa.codr);
-#define I2C_SCL(bit)                                           \
-       if (bit)                                                \
-               writel(ATMEL_PMX_AA_TWCK, &pio->pioa.sodr);     \
-       else                                                    \
-               writel(ATMEL_PMX_AA_TWCK, &pio->pioa.codr);
-
-#define I2C_DELAY      udelay(2500000/CONFIG_SYS_I2C_SOFT_SPEED)
-
-/* I2C-RTC */
-
-#ifdef CONFIG_CMD_DATE
-#define CONFIG_RTC_DS1338
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68
-#endif
-
-/* EEPROM */
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50
-
-/* FLASH organization */
-
-/*  NOR-FLASH */
-#define CONFIG_FLASH_SHOW_PROGRESS     45
-
-#define CONFIG_FLASH_CFI_DRIVER        1
-
-#define PHYS_FLASH_1                   0x10000000
-#define PHYS_FLASH_SIZE                        0x01000000  /* 16 megs main flash */
-#define CONFIG_SYS_FLASH_CFI           1
-#define CONFIG_SYS_FLASH_CFI_WIDTH     FLASH_CFI_16BIT
-
-#define CONFIG_SYS_FLASH_PROTECTION    1
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-#define CONFIG_SYS_MAX_FLASH_SECT      512
-#define CONFIG_SYS_FLASH_ERASE_TOUT    6000
-#define CONFIG_SYS_FLASH_WRITE_TOUT    2000
-
-/* NAND */
-
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE           0x40000000
-#define CONFIG_SYS_NAND_DBW_8          1
-
-/* Status LED's */
-
-#define CONFIG_STATUS_LED              1
-#define CONFIG_BOARD_SPECIFIC_LED      1
-
-#define STATUS_LED_BOOT                        1
-#define STATUS_LED_ACTIVE              0
-
-#define STATUS_LED_BIT                 1       /* AT91C_PIO_PD0 green LED */
-#define STATUS_LED_PERIOD              (CONFIG_SYS_HZ / 2)
-#define STATUS_LED_STATE               STATUS_LED_OFF          /* BLINKING */
-#define STATUS_LED_BIT1                        2       /* AT91C_PIO_PD1  red LED */
-#define STATUS_LED_STATE1              STATUS_LED_ON           /* BLINKING */
-#define STATUS_LED_PERIOD1             (CONFIG_SYS_HZ / 4)
-
-#define        CONFIG_VIDEO                    1
-
-/* Options */
-
-#ifdef CONFIG_VIDEO
-
-#define CONFIG_VIDEO_VCXK                      1
-
-#define CONFIG_SPLASH_SCREEN                   1
-
-#define CONFIG_SYS_VCXK_DEFAULT_LINEALIGN      4
-#define CONFIG_SYS_VCXK_BASE   0x30000000
-
-#define CONFIG_SYS_VCXK_ACKNOWLEDGE_PIN                (1<<3)
-#define CONFIG_SYS_VCXK_ACKNOWLEDGE_PORT       piob
-#define CONFIG_SYS_VCXK_ACKNOWLEDGE_DDR                odr
-
-#define CONFIG_SYS_VCXK_ENABLE_PIN             (1<<5)
-#define CONFIG_SYS_VCXK_ENABLE_PORT            piob
-#define CONFIG_SYS_VCXK_ENABLE_DDR             oer
-
-#define CONFIG_SYS_VCXK_REQUEST_PIN            (1<<2)
-#define CONFIG_SYS_VCXK_REQUEST_PORT           piob
-#define CONFIG_SYS_VCXK_REQUEST_DDR            oer
-
-#define CONFIG_SYS_VCXK_INVERT_PIN             (1<<4)
-#define CONFIG_SYS_VCXK_INVERT_PORT            piob
-#define CONFIG_SYS_VCXK_INVERT_DDR             oer
-
-#define CONFIG_SYS_VCXK_RESET_PIN              (1<<6)
-#define CONFIG_SYS_VCXK_RESET_PORT             piob
-#define CONFIG_SYS_VCXK_RESET_DDR              oer
-
-#endif /* CONFIG_VIDEO */
-
-/* Environment */
-
-#define CONFIG_BOOTDELAY               5
-
-#define CONFIG_ENV_IS_IN_FLASH         1
-#define CONFIG_ENV_ADDR                        (PHYS_FLASH_1 + 0x80000)
-#define CONFIG_ENV_SIZE                        0x20000 /* sectors are 128K here */
-
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_BOOTCOMMAND             "run nfsboot"
-
-#define CONFIG_NFSBOOTCOMMAND                                          \
-               "dhcp $(copy_addr) uImage_cpux9k2;"                     \
-               "run bootargsdefaults;"                                 \
-               "set bootargs $(bootargs) boot=nfs "                    \
-               ";echo $(bootargs)"                                     \
-       ";bootm"
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "displaywidth=256\0"                                            \
-       "displayheight=512\0"                                           \
-       "displaybsteps=1023\0"                                          \
-       "ubootaddr=10000000\0"                                          \
-       "splashimage=100A0000\0"                                        \
-       "kerneladdr=100C0000\0"                                         \
-       "kernelsize=00400000\0"                                         \
-       "rootfsaddr=10520000\0"                                         \
-       "copy_addr=21200000\0"                                          \
-       "rootfssize=00AE0000\0"                                         \
-       "mtdids=" MTDIDS_DEFAULT "\0"                                   \
-       "mtdparts=" MTDPARTS_DEFAULT "\0"                               \
-       "bootargsdefaults=set bootargs "                                \
-               "console=ttyS0,115200 "                                 \
-               "video=vcxk_fb:xres:${displaywidth},"                   \
-                       "yres:${displayheight},"                        \
-                       "bres:${displaybsteps} "                        \
-               "mem=62M "                                              \
-               "panic=10 "                                             \
-               "uboot=\\\"${ver}\\\" "                                 \
-               "\0"                                                    \
-       "update_kernel=protect off $(kerneladdr) +$(kernelsize);"       \
-               "dhcp $(copy_addr) uImage_cpux9k2;"                     \
-               "erase $(kerneladdr) +$(kernelsize);"                   \
-               "cp.b $(fileaddr) $(kerneladdr) $(filesize);"           \
-               "protect on $(kerneladdr) +$(kernelsize)"               \
-               "\0"                                                    \
-       "update_root=protect off $(rootfsaddr) +$(rootfssize);"         \
-               "dhcp $(copy_addr) rfs;"                                \
-               "erase $(rootfsaddr) +$(rootfssize);"                   \
-               "cp.b $(fileaddr) $(rootfsaddr) $(filesize);"           \
-               "\0"                                                    \
-       "update_uboot=protect off 10000000 1007FFFF;"                   \
-               "dhcp $(copy_addr) u-boot_eb_cpux9k2;"                  \
-               "erase 10000000 1007FFFF;"                              \
-               "cp.b $(fileaddr) $(ubootaddr) $(filesize);"            \
-               "protect on 10000000 1007FFFF;reset\0"                  \
-       "update_splash=protect off $(splashimage) +20000;"              \
-               "dhcp $(copy_addr) splash_eb_cpux9k2.bmp;"              \
-               "erase $(splashimage) +20000;"                          \
-               "cp.b $(fileaddr) $(splashimage) $(filesize);"          \
-               "protect on $(splashimage) +20000;reset\0"              \
-       "emergency=run bootargsdefaults;"                               \
-               "set bootargs $(bootargs) root=initramfs boot=emergency " \
-               ";bootm $(kerneladdr)\0"                                \
-       "netemergency=run bootargsdefaults;"                            \
-               "dhcp $(copy_addr) uImage_cpux9k2;"                     \
-               "set bootargs $(bootargs) root=initramfs boot=emergency " \
-               ";bootm $(copy_addr)\0"                                 \
-       "norboot=run bootargsdefaults;"                                 \
-               "set bootargs $(bootargs) root=initramfs boot=local "   \
-               ";bootm $(kerneladdr)\0"                                \
-       "nandboot=run bootargsdefaults;"                                \
-               "set bootargs $(bootargs) root=initramfs boot=nand "    \
-               ";bootm $(kerneladdr)\0"                                \
-       " "
-
-/*--------------------------------------------------------------------------*/
-
-#endif
-
-/* EOF */
index efe2a9daa7c150d16c172b596b76aed8ce2cacb8..e3e32aa0814b3fffaff6f5cb66922374650b3a3f 100644 (file)
@@ -25,6 +25,8 @@
 #error "no board defined"
 #endif
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /* Initial environment and monitor configuration options. */
 #define CONFIG_BOOTDELAY               2
 #define CONFIG_CMDLINE_TAG             1
index 5779cfdb66b5f6a0b694368b3df442342bf8603f..1c955d9e37a69f2281465d8f6476a6a6734535c9 100644 (file)
@@ -11,8 +11,6 @@
 
 #undef CONFIG_CMD_SF_TEST
 
-#undef CONFIG_TPM
-#undef CONFIG_TPM_TIS_LPC
 #undef CONFIG_TPM_TIS_BASE_ADDRESS
 
 #undef CONFIG_CMD_IMLS
index 12744a61432dc89ac8b3506f57fac6d6e6d34a66..58cee96ac313b3a2f58d248392fd2d8b07bb9a7d 100644 (file)
@@ -19,7 +19,7 @@
 
 #define PHYS_SDRAM_SIZE                (1u * 1024 * 1024 * 1024)
 
-#define CONFIG_IMX6_THERMAL
+#define CONFIG_IMX_THERMAL
 
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (10 * SZ_1M)
diff --git a/include/configs/enbw_cmc.h b/include/configs/enbw_cmc.h
deleted file mode 100644 (file)
index 141489d..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * (C) Copyright 2011
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- *
- * Based on:
- * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
- *
- * Based on davinci_dvevm.h. Original Copyrights follow:
- *
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * Board
- */
-#define CONFIG_DRIVER_TI_EMAC
-#define CONFIG_SYS_DAVINCI_EMAC_PHY_COUNT 7
-#define CONFIG_USE_NAND
-
-/*
- * SoC Configuration
- */
-#define CONFIG_SOC_DA8XX               /* TI DA8xx SoC */
-#define CONFIG_SOC_DA850               /* TI DA850 SoC */
-#define CONFIG_SYS_EXCEPTION_VECTORS_HIGH
-#define CONFIG_SYS_CLK_FREQ            clk_get(DAVINCI_ARM_CLKID)
-#define CONFIG_SYS_OSCIN_FREQ          24000000
-#define CONFIG_SYS_TIMERBASE           DAVINCI_TIMER0_BASE
-#define CONFIG_SYS_HZ_CLOCK            clk_get(DAVINCI_AUXCLK_CLKID)
-#define CONFIG_DA850_LOWLEVEL
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_SYS_DA850_PLL_INIT
-#define CONFIG_SYS_DA850_DDR_INIT
-#define CONFIG_DA8XX_GPIO
-#define CONFIG_HOSTNAME                enbw_cmc
-
-#define MACH_TYPE_ENBW_CMC     3585
-#define CONFIG_MACH_TYPE       MACH_TYPE_ENBW_CMC
-
-/*
- * Memory Info
- */
-#define CONFIG_SYS_MALLOC_LEN  (0x10000 + 1*1024*1024) /* malloc() len */
-#define PHYS_SDRAM_1           DAVINCI_DDR_EMIF_DATA_BASE /* DDR Start */
-#define PHYS_SDRAM_1_SIZE      (64 << 20) /* SDRAM size 64MB */
-#define CONFIG_MAX_RAM_BANK_SIZE (512 << 20) /* max size from SPRS586*/
-
-/* memtest start addr */
-#define CONFIG_SYS_MEMTEST_START       (PHYS_SDRAM_1 + 0x2000000)
-
-/* memtest will be run on 16MB */
-#define CONFIG_SYS_MEMTEST_END (PHYS_SDRAM_1 + 0x2000000 + 16*1024*1024)
-
-#define CONFIG_NR_DRAM_BANKS   1 /* we have 1 bank of DRAM */
-
-/*
- * Serial Driver info
- */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    -4      /* NS16550 register size */
-#define CONFIG_SYS_NS16550_COM1        DAVINCI_UART2_BASE /* Base address of UART2 */
-#define CONFIG_SYS_NS16550_CLK clk_get(DAVINCI_UART2_CLKID)
-#define CONFIG_CONS_INDEX      1               /* use UART0 for console */
-#define CONFIG_BAUDRATE                115200          /* Default baud rate */
-
-/*
- * I2C Configuration
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_DAVINCI
-#define CONFIG_SYS_DAVINCI_I2C_SPEED           80000
-#define CONFIG_SYS_DAVINCI_I2C_SLAVE   10 /* Bogus, master-only in U-Boot */
-#define CONFIG_SYS_I2C_EXPANDER_ADDR   0x20
-#define CONFIG_CMD_I2C
-
-#define CONFIG_CMD_DTT
-#define CONFIG_DTT_LM75
-#define CONFIG_DTT_SENSORS     {0}     /* Sensor addresses             */
-#define CONFIG_SYS_DTT_MAX_TEMP        70
-#define CONFIG_SYS_DTT_LOW_TEMP        -30
-#define CONFIG_SYS_DTT_HYSTERESIS      3
-
-/*
- * SPI Configuration
- */
-#define CONFIG_DAVINCI_SPI
-#define CONFIG_SYS_SPI_BASE            DAVINCI_SPI1_BASE
-#define CONFIG_SYS_SPI_CLK             clk_get(DAVINCI_SPI1_CLKID)
-#define CONFIG_CMD_SPI
-
-/*
- * Flash & Environment
- */
-#ifdef CONFIG_USE_NAND
-#define CONFIG_NAND_DAVINCI
-#define CONFIG_SYS_NAND_USE_FLASH_BBT
-#define CONFIG_SYS_NAND_4BIT_HW_ECC_OOBFIRST
-#define CONFIG_SYS_NAND_PAGE_2K
-#define CONFIG_SYS_NAND_CS             3
-#define CONFIG_SYS_NAND_BASE           DAVINCI_ASYNC_EMIF_DATA_CE3_BASE
-#define CONFIG_SYS_NAND_MASK_CLE               0x10
-#define CONFIG_SYS_NAND_MASK_ALE               0x8
-#undef CONFIG_SYS_NAND_HW_ECC
-#define CONFIG_SYS_MAX_NAND_DEVICE     1 /* Max number of NAND devices */
-
-#define MTDIDS_DEFAULT         "nor0=physmap-flash.0,nand0=davinci_nand.1"
-#define MTDPARTS_DEFAULT                       \
-       "mtdparts="                             \
-               "physmap-flash.0:"              \
-                       "512k(U-Boot),"         \
-                       "64k(env1),"            \
-                       "64k(env2),"            \
-                       "-(rest);"              \
-               "davinci_nand.1:"               \
-                       "128k(dtb),"            \
-                       "3m(kernel),"           \
-                       "4m(rootfs),"           \
-                       "-(userfs)"
-
-
-#define CONFIG_CMD_MTDPARTS
-
-#endif
-
-/*
- * Network & Ethernet Configuration
- */
-#ifdef CONFIG_DRIVER_TI_EMAC
-#define CONFIG_MII
-#define CONFIG_BOOTP_DNS
-#define CONFIG_BOOTP_DNS2
-#define CONFIG_BOOTP_SEND_HOSTNAME
-#define CONFIG_NET_RETRY_COUNT 10
-#endif
-
-/*
- * Flash configuration
- */
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_FLASH_CFI_MTD
-#define CONFIG_SYS_FLASH_BASE           0x60000000
-#define CONFIG_SYS_FLASH_SIZE           0x01000000
-#define CONFIG_SYS_MAX_FLASH_BANKS      1       /* max num of memory banks */
-#define CONFIG_SYS_FLASH_BANKS_LIST     { CONFIG_SYS_FLASH_BASE }
-#define CONFIG_SYS_MAX_FLASH_SECT       128
-#define CONFIG_FLASH_16BIT              /* Flash is 16-bit */
-
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_SYS_MONITOR_LEN 0x80000
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + \
-                                       CONFIG_SYS_MONITOR_LEN)
-#define CONFIG_ENV_SECT_SIZE   (64 << 10)
-#define CONFIG_ENV_SIZE                (16 << 10)      /* 16 KiB */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR + \
-                                       CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND         (CONFIG_ENV_SIZE)
-#undef CONFIG_ENV_IS_IN_NAND
-#define CONFIG_DEFAULT_SETTINGS_ADDR   (CONFIG_ENV_ADDR_REDUND + \
-                                               CONFIG_ENV_SECT_SIZE)
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "u-boot_addr_r=c0000000\0"                                      \
-       "u-boot=" __stringify(CONFIG_HOSTNAME) "/u-boot.bin\0"          \
-       "load=tftp ${u-boot_addr_r} ${u-boot}\0"                        \
-       "update=protect off " __stringify(CONFIG_SYS_FLASH_BASE) " +${filesize};"\
-               "erase " __stringify(CONFIG_SYS_FLASH_BASE) " +${filesize};"    \
-               "cp.b ${u-boot_addr_r} " __stringify(CONFIG_SYS_FLASH_BASE)     \
-               " ${filesize};"                                         \
-               "protect on " __stringify(CONFIG_SYS_FLASH_BASE) " +${filesize}\0"\
-       "netdev=eth0\0"                                                 \
-       "rootpath=/opt/eldk-arm/arm\0"                                  \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "kernel_addr_r=c0700000\0"                                      \
-       "fdt_addr_r=c0600000\0"                                         \
-       "ramdisk_addr_r=c0b00000\0"                                     \
-       "fdt_file=" __stringify(CONFIG_HOSTNAME) "/"                    \
-               __stringify(CONFIG_HOSTNAME) ".dtb\0"                   \
-       "kernel_file=" __stringify(CONFIG_HOSTNAME) "/uImage \0"        \
-       "nand_ld_ramdsk=nand read ${ramdisk_addr_r} 320000 400000\0"    \
-       "nand_ld_kernel=nand read ${kernel_addr_r} 20000 300000\0"      \
-       "nand_ld_fdt=nand read ${fdt_addr_r} 0 2000\0"                  \
-       "load_kernel=tftp ${kernel_addr_r} ${kernel_file}\0"            \
-       "load_fdt=tftp ${fdt_addr_r} ${fdt_file}\0"                     \
-       "load_nand=run nand_ld_ramdsk nand_ld_kernel nand_ld_fdt\0"     \
-       "addcon=setenv bootargs ${bootargs} console=ttyS2,"             \
-               "${baudrate}n8\0"                                       \
-       "net_nfs=run load_fdt load_kernel; "                            \
-               "run nfsargs addip addcon addmtd addmisc;"              \
-               "bootm ${kernel_addr_r} - ${fdt_addr_r}\0"              \
-       "nand_selfnand=run load_nand ramargs addip addcon addmisc;bootm "\
-               "${kernel_addr_r} ${ramdisk_addr_r} ${fdt_addr_r}\0"    \
-       "bootcmd=run net_nfs\0"                                         \
-       "machid=e01\0"                                                  \
-       "key_cmd_0=echo key:   0\0"                                     \
-       "key_cmd_1=echo key:   1\0"                                     \
-       "key_cmd_2=echo key:   2\0"                                     \
-       "key_cmd_3=echo key:   3\0"                                     \
-       "key_magic_0=0\0"                                               \
-       "key_magic_1=1\0"                                               \
-       "key_magic_2=2\0"                                               \
-       "key_magic_3=3\0"                                               \
-       "magic_keys=0123\0"                                             \
-       "hwconfig=switch:lan=on,pwl=off,config=0x60100000\0"            \
-       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0"              \
-       "addmisc=setenv bootargs ${bootargs}\0"                         \
-       "mtdids=" MTDIDS_DEFAULT "\0"                                   \
-       "mtdparts=" MTDPARTS_DEFAULT "\0"                               \
-       "logversion=2\0"                                                \
-       "\0"
-
-/*
- * U-Boot general configuration
- */
-#define CONFIG_BOOTFILE                "uImage" /* Boot file name */
-#define CONFIG_SYS_CBSIZE      1024 /* Console I/O Buffer Size */
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
-#define CONFIG_SYS_MAXARGS     16 /* max number of command args */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE /* Boot Args Buffer Size */
-#define CONFIG_SYS_LOAD_ADDR   (PHYS_SDRAM_1 + 0x700000)
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_AUTO_COMPLETE
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CRC32_VERIFY
-#define CONFIG_MX_CYCLIC
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_HWCONFIG
-#define CONFIG_SHOW_BOOT_PROGRESS
-#define CONFIG_BOARD_LATE_INIT
-
-/*
- * U-Boot commands
- */
-#define CONFIG_CMD_ENV
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SAVES
-#define CONFIG_CMD_CACHE
-
-#ifdef CONFIG_CMD_BDI
-#define CONFIG_CLOCKS
-#endif
-
-#ifndef CONFIG_DRIVER_TI_EMAC
-#undef CONFIG_CMD_DHCP
-#undef CONFIG_CMD_MII
-#undef CONFIG_CMD_PING
-#endif
-
-#ifdef CONFIG_USE_NAND
-#define CONFIG_CMD_NAND
-
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_DEVICE
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_LZO
-#define CONFIG_RBTREE
-#define CONFIG_CMD_UBI
-#define CONFIG_CMD_UBIFS
-#endif
-
-#if !defined(CONFIG_USE_NAND) && \
-       !defined(CONFIG_USE_NOR) && \
-       !defined(CONFIG_USE_SPIFLASH)
-#define CONFIG_ENV_IS_NOWHERE
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_ENV_SIZE                (16 << 10)
-#undef CONFIG_CMD_ENV
-#endif
-
-#define CONFIG_SYS_TEXT_BASE           0x60000000
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_SDRAM_BASE          0xc0000000
-#define CONFIG_SYS_INIT_SP_ADDR                (0x8001ff00)
-
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-#define CONFIG_MISC_INIT_R
-
-#define CONFIG_CMC_RESET_PIN   0x04000000
-#define CONFIG_CMC_RESET_TIMEOUT       3
-
-#define CONFIG_HW_WATCHDOG
-#define CONFIG_SYS_WDTTIMERBASE                DAVINCI_TIMER1_BASE
-#define CONFIG_SYS_WDT_PERIOD_LOW      0x0c000000
-#define CONFIG_SYS_WDT_PERIOD_HIGH     0x0
-
-#define CONFIG_CMD_DATE
-#define CONFIG_RTC_DAVINCI
-
-/* SD/MMC */
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_DAVINCI_MMC
-#define CONFIG_MMC_MBLOCK
-#define CONFIG_DOS_PARTITION
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_MMC
-
-/* GPIO */
-#define CONFIG_ENBW_CMC_BOARD_TYPE     57
-#define CONFIG_ENBW_CMC_HW_ID_BIT0     39
-#define CONFIG_ENBW_CMC_HW_ID_BIT1     38
-#define CONFIG_ENBW_CMC_HW_ID_BIT2     35
-
-/* FDT support */
-#define CONFIG_OF_LIBFDT
-
-/* LowLevel Init */
-/* PLL */
-#define CONFIG_SYS_DV_CLKMODE          0
-#define CONFIG_SYS_DA850_PLL0_POSTDIV  0
-#define CONFIG_SYS_DA850_PLL0_PLLDIV1  0x8000
-#define CONFIG_SYS_DA850_PLL0_PLLDIV2  0x8001
-#define CONFIG_SYS_DA850_PLL0_PLLDIV3  0x8002 /* 150MHz */
-#define CONFIG_SYS_DA850_PLL0_PLLDIV4  0x8003
-#define CONFIG_SYS_DA850_PLL0_PLLDIV5  0x8002
-#define CONFIG_SYS_DA850_PLL0_PLLDIV6  CONFIG_SYS_DA850_PLL0_PLLDIV1
-#define CONFIG_SYS_DA850_PLL0_PLLDIV7  0x8005
-
-#define CONFIG_SYS_DA850_PLL1_POSTDIV  1
-#define CONFIG_SYS_DA850_PLL1_PLLDIV1  0x8000
-#define CONFIG_SYS_DA850_PLL1_PLLDIV2  0x8001
-#define CONFIG_SYS_DA850_PLL1_PLLDIV3  0x8002
-
-#define CONFIG_SYS_DA850_PLL0_PLLM     18      /* PLL0 -> 456 MHz */
-#define CONFIG_SYS_DA850_PLL1_PLLM     24      /* PLL1 -> 300 MHz */
-
-/* DDR RAM */
-#define CONFIG_SYS_DA850_DDR2_DDRPHYCR (DV_DDR_PHY_PWRDNEN | \
-                       DV_DDR_PHY_EXT_STRBEN   | \
-                       (0x4 << DV_DDR_PHY_RD_LATENCY_SHIFT))
-
-#define CONFIG_SYS_DA850_DDR2_SDBCR (0 | \
-                 (0 << DV_DDR_SDCR_DDR2TERM1_SHIFT) | \
-                 (0 << DV_DDR_SDCR_MSDRAMEN_SHIFT) | \
-                 (1 << DV_DDR_SDCR_DDR2EN_SHIFT) | \
-                 (0x1 << DV_DDR_SDCR_DDREN_SHIFT)      | \
-                 (0x1 << DV_DDR_SDCR_SDRAMEN_SHIFT)    | \
-                 (0x1 << DV_DDR_SDCR_TIMUNLOCK_SHIFT)  | \
-                 (0x1 << DV_DDR_SDCR_BUS_WIDTH_SHIFT)  | \
-                 (0x3 << DV_DDR_SDCR_CL_SHIFT)         | \
-                 (0x2 << DV_DDR_SDCR_IBANK_SHIFT)              | \
-                 (0x2 << DV_DDR_SDCR_PAGESIZE_SHIFT))
-
-#define CONFIG_SYS_DA850_DDR2_SDBCR2 4 /* 13 row address bits */
-
-/*
- * freq = 150MHz -> t = 7ns
- */
-#define CONFIG_SYS_DA850_DDR2_SDTIMR (0 | \
-               (0x0d << DV_DDR_SDTMR1_RFC_SHIFT)       | \
-               (1 << DV_DDR_SDTMR1_RP_SHIFT)           | \
-               (1 << DV_DDR_SDTMR1_RCD_SHIFT)          | \
-               (1 << DV_DDR_SDTMR1_WR_SHIFT)           | \
-               (5 << DV_DDR_SDTMR1_RAS_SHIFT)          | \
-               (7 << DV_DDR_SDTMR1_RC_SHIFT)           | \
-               (1 << DV_DDR_SDTMR1_RRD_SHIFT)          | \
-               (readl(&dv_ddr2_regs_ctrl->sdtimr) & 0x4) |  /* Reserved */ \
-               ((2 - 1) << DV_DDR_SDTMR1_WTR_SHIFT))
-
-/*
- * freq = 150MHz -> t=7ns
- */
-#define CONFIG_SYS_DA850_DDR2_SDTIMR2 (0 | \
-       (readl(&dv_ddr2_regs_ctrl->sdtimr2) & 0x80000000) | /* Reserved */ \
-       (8 << DV_DDR_SDTMR2_RASMAX_SHIFT)               | \
-       (2 << DV_DDR_SDTMR2_XP_SHIFT)                   | \
-       (0 << DV_DDR_SDTMR2_ODT_SHIFT)                  | \
-       (15 << DV_DDR_SDTMR2_XSNR_SHIFT)                | \
-       (27 << DV_DDR_SDTMR2_XSRD_SHIFT)                | \
-       (0 << DV_DDR_SDTMR2_RTP_SHIFT)                  | \
-       (2 << DV_DDR_SDTMR2_CKE_SHIFT))
-
-#define CONFIG_SYS_DA850_DDR2_SDRCR    0x00000407
-#define CONFIG_SYS_DA850_DDR2_PBBPR    0x30
-#define CONFIG_SYS_DA850_SYSCFG_SUSPSRC (DAVINCI_SYSCFG_SUSPSRC_TIMER0 | \
-                                       DAVINCI_SYSCFG_SUSPSRC_SPI1 | \
-                                       DAVINCI_SYSCFG_SUSPSRC_UART2 | \
-                                       DAVINCI_SYSCFG_SUSPSRC_EMAC |\
-                                       DAVINCI_SYSCFG_SUSPSRC_I2C)
-
-#define CONFIG_SYS_DA850_CS2CFG        (DAVINCI_ABCR_WSETUP(2) | \
-                               DAVINCI_ABCR_WSTROBE(6) | \
-                               DAVINCI_ABCR_WHOLD(1)   | \
-                               DAVINCI_ABCR_RSETUP(2)  | \
-                               DAVINCI_ABCR_RSTROBE(6) | \
-                               DAVINCI_ABCR_RHOLD(1)   | \
-                               DAVINCI_ABCR_ASIZE_16BIT)
-
-#define CONFIG_SYS_DA850_CS3CFG        (DAVINCI_ABCR_WSETUP(1) | \
-                               DAVINCI_ABCR_WSTROBE(2) | \
-                               DAVINCI_ABCR_WHOLD(1)   | \
-                               DAVINCI_ABCR_RSETUP(1)  | \
-                               DAVINCI_ABCR_RSTROBE(6) | \
-                               DAVINCI_ABCR_RHOLD(1)   | \
-                               DAVINCI_ABCR_ASIZE_8BIT)
-
-/*
- * NOR Bootconfiguration word:
- * Method: Direc boot
- * EMIFA access mode: 16 Bit
- */
-#define CONFIG_SYS_DV_NOR_BOOT_CFG     (0x11)
-
-#define CONFIG_POST    (CONFIG_SYS_POST_MEMORY)
-#define CONFIG_POST_EXTERNAL_WORD_FUNCS
-#define CONFIG_SYS_POST_WORD_ADDR DAVINCI_RTC_BASE
-#define CONFIG_LOGBUFFER
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV
-
-#define CONFIG_BOOTCOUNT_LIMIT
-#define CONFIG_SYS_BOOTCOUNT_ADDR      DAVINCI_RTC_BASE
-#define CONFIG_SYS_BOOTCOUNT_BE
-
-#define CONFIG_SYS_NAND_U_BOOT_DST     0xc0080000
-#define CONFIG_SYS_NAND_U_BOOT_OFFS    0x60004000
-#define CONFIG_SYS_NAND_U_BOOT_SIZE    0x70000
-#define CONFIG_SYS_NAND_U_BOOT_START   CONFIG_SYS_NAND_U_BOOT_DST
-#endif /* __CONFIG_H */
index e710f41f79e2bc9adc32645fd8d88eb4638bfd74..4866836d55261ce2405c256bdf6a993c56115411 100644 (file)
 #define CONFIG_CMD_DTT
 #define CONFIG_TMU_CMD_DTT
 
-/* TPM */
-#define CONFIG_TPM
-#define CONFIG_CMD_TPM
-#define CONFIG_TPM_TIS_I2C
-#define CONFIG_TPM_TIS_I2C_BUS_NUMBER  3
-#define CONFIG_TPM_TIS_I2C_SLAVE_ADDR  0x20
-
 /* MMC SPL */
 #define COPY_BL2_FNPTR_ADDR    0x02020030
 #define CONFIG_SUPPORT_EMMC_BOOT
diff --git a/include/configs/firefly-rk3288.h b/include/configs/firefly-rk3288.h
new file mode 100644 (file)
index 0000000..a82adc8
--- /dev/null
@@ -0,0 +1,14 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <configs/rk3288_common.h>
+
+#define CONFIG_SPL_MMC_SUPPORT
+
+#endif
index 3c3c6e9d543e11d1244bd72901d9de598bfe52a9..b7ec2792bbe736fa38f049a261bbfc5054ba8128 100644 (file)
 /* ns16550 UART is memory-mapped in Quark SoC */
 #undef  CONFIG_SYS_NS16550_PORT_MAPPED
 
-#define CONFIG_PCI_MEM_BUS             0x90000000
-#define CONFIG_PCI_MEM_PHYS            CONFIG_PCI_MEM_BUS
-#define CONFIG_PCI_MEM_SIZE            0x20000000
-
-#define CONFIG_PCI_PREF_BUS            0xb0000000
-#define CONFIG_PCI_PREF_PHYS           CONFIG_PCI_PREF_BUS
-#define CONFIG_PCI_PREF_SIZE           0x20000000
-
-#define CONFIG_PCI_IO_BUS              0x2000
-#define CONFIG_PCI_IO_PHYS             CONFIG_PCI_IO_BUS
-#define CONFIG_PCI_IO_SIZE             0xe000
-
 #define CONFIG_SYS_EARLY_PCI_INIT
 #define CONFIG_PCI_PNP
 
index 8b9d9228769ef7b7e5c2b78823ea118b02098df7..231bea7855c416b8ebc871d370f4adc75bbff619 100644 (file)
@@ -57,7 +57,7 @@
 #define CONFIG_CMD_GPIO
 
 /* Thermal */
-#define CONFIG_IMX6_THERMAL
+#define CONFIG_IMX_THERMAL
 
 /* Serial */
 #define CONFIG_MXC_UART
diff --git a/include/configs/ima3-mx53.h b/include/configs/ima3-mx53.h
deleted file mode 100644 (file)
index 2fa6c3d..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * (C) Copyright 2012, Stefano Babic <sbabic@denx.de>
- *
- * Copyright (C) 2010 Freescale Semiconductor, Inc.
- *
- * Configuration settings for the MX53-EVK Freescale board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* SOC type must be included before imx-regs.h */
-#define CONFIG_MX53
-#include <asm/arch/imx-regs.h>
-
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-
-#define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-
-#define CONFIG_OF_LIBFDT
-
-/* Size of malloc() pool */
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 2 * 1024 * 1024)
-
-#define CONFIG_BOARD_EARLY_INIT_F
-
-/* Enable GPIOs */
-#define CONFIG_MXC_GPIO
-
-/* UART */
-#define CONFIG_MXC_UART
-#define CONFIG_MXC_UART_BASE   UART4_BASE_ADDR
-
-/* MMC */
-#define CONFIG_FSL_ESDHC
-#define CONFIG_SYS_FSL_ESDHC_ADDR      0
-#define CONFIG_SYS_FSL_ESDHC_NUM       1
-
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_DOS_PARTITION
-
-/* Ethernet on FEC */
-#define CONFIG_MII
-
-#define CONFIG_FEC_MXC
-#define IMX_FEC_BASE                   FEC_BASE_ADDR
-#define CONFIG_FEC_MXC_PHYADDR         0x01
-#define CONFIG_PHY_ADDR                        CONFIG_FEC_MXC_PHYADDR
-#define CONFIG_RESET_PHY_R
-#define CONFIG_FEC_MXC_NO_ANEG
-#define CONFIG_ETHPRIME                        "FEC0"
-
-/* SPI */
-#define CONFIG_HARD_SPI
-#define CONFIG_MXC_SPI
-#define CONFIG_DEFAULT_SPI_BUS         1
-#define CONFIG_DEFAULT_SPI_MODE                SPI_MODE_0
-
-/* SPI FLASH - not used for environment */
-#define CONFIG_SPI_FLASH_STMICRO
-#define CONFIG_SF_DEFAULT_MODE         SPI_MODE_0
-#define CONFIG_SF_DEFAULT_SPEED                25000000
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_BAUDRATE                        115200
-
-/* Command definition */
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_MMC
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_CMD_SPI
-#define CONFIG_CMD_SF
-#define CONFIG_CMD_GPIO
-
-#define CONFIG_BOOTDELAY       3
-
-#define CONFIG_LOADADDR                0x70800000      /* loadaddr env var */
-#define CONFIG_SYS_TEXT_BASE    0xf0001400 /* uboot in nor flash */
-
-#define CONFIG_ARP_TIMEOUT     200UL
-
-/* Miscellaneous configurable options */
-#define CONFIG_SYS_LONGHELP            /* undef to save memory */
-#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
-#define CONFIG_AUTO_COMPLETE
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     16      /* max number of command args */
-#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size */
-
-#define CONFIG_SYS_MEMTEST_START       0x70000000
-#define CONFIG_SYS_MEMTEST_END         0x10000
-
-#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
-
-#define CONFIG_CMDLINE_EDITING
-
-/* Physical Memory Map */
-#define CONFIG_NR_DRAM_BANKS   1
-#define PHYS_SDRAM_1           CSD0_BASE_ADDR
-#define PHYS_SDRAM_1_SIZE      (1024 * 1024 * 1024)
-
-#define CONFIG_SYS_SDRAM_BASE          (PHYS_SDRAM_1)
-#define CONFIG_SYS_INIT_RAM_ADDR       (IRAM_BASE_ADDR)
-#define CONFIG_SYS_INIT_RAM_SIZE       (IRAM_SIZE)
-
-#define CONFIG_SYS_INIT_SP_OFFSET \
-       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR \
-       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
-
-#define CONFIG_MTD_DEVICE              /* needed for mtdparts commands */
-#define MTDIDS_DEFAULT         "nor0=f0000000.flash"
-
-/* FLASH and environment organization */
-
-#define CONFIG_SYS_FLASH_BASE          0xF0000000
-#define CONFIG_SYS_FLASH_CFI           /* Flash is CFI conformant */
-#define CONFIG_FLASH_CFI_DRIVER                /* Use the common driver */
-#define CONFIG_FLASH_CFI_MTD           /* with MTD support */
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-#define CONFIG_SYS_MAX_FLASH_SECT      1024
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (512 * 1024)
-
-#define CONFIG_ENV_SIZE        (8 * 1024)
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
-                               CONFIG_SYS_MONITOR_LEN)
-#define CONFIG_ENV_SECT_SIZE   0x20000
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + \
-                                       CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
-
-/*
- * Default environment and default scripts
- * to update uboot and load kernel
- */
-
-#define HOSTNAME ima3-mx53
-
-#define CONFIG_HOSTNAME ima3-mx53
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram0 rw\0"                   \
-       "addip_sta=setenv bootargs ${bootargs} "                        \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addip_dyn=setenv bootargs ${bootargs} ip=dhcp\0"               \
-       "addip=if test -n ${ipdyn};then run addip_dyn;"                 \
-               "else run addip_sta;fi\0"       \
-       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0"              \
-       "addtty=setenv bootargs ${bootargs}"                            \
-               " console=${console},${baudrate}\0"                     \
-       "addmisc=setenv bootargs ${bootargs} ${misc}\0"                 \
-       "console=ttymxc3\0"                                             \
-       "loadaddr=70800000\0"                                           \
-       "kernel_addr_r=70800000\0"                                      \
-       "ramdisk_addr_r=71000000\0"                                     \
-       "hostname=" __stringify(CONFIG_HOSTNAME) "\0"                   \
-       "bootfile=" __stringify(CONFIG_HOSTNAME) "/uImage\0"            \
-       "ramdisk_file=" __stringify(CONFIG_HOSTNAME) "/uRamdisk\0"      \
-       "mmcargs=setenv bootargs root=${mmcroot} "                      \
-               "rootfstype=${mmcrootfstype}\0"                         \
-       "mmcroot=/dev/mmcblk0p3 rw\0"                                   \
-       "mmcboot=echo Booting from mmc ...; "                           \
-               "run mmcargs addip addtty addmtd addmisc mmcload;"      \
-               "bootm\0"                                               \
-       "mmcload=fatload mmc ${mmcdev}:${mmcpart} "                     \
-               "${loadaddr} ${uimage}\0"                               \
-       "mmcrootfstype=ext3 rootwait\0"                                 \
-       "flash_self=run ramargs addip addtty addmtd addmisc;"           \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "flash_nfs=run nfsargs addip addtty addmtd addmisc;"            \
-               "bootm ${kernel_addr}\0"                                \
-       "net_nfs=tftp ${kernel_addr_r} ${bootfile}; "                   \
-               "run nfsargs addip addtty addmtd addmisc;"              \
-               "bootm ${kernel_addr_r}\0"                              \
-       "net_self_load=tftp ${ramdisk_addr_r} ${ramdisk_file};"         \
-               "tftp ${kernel_addr_r} ${bootfile}\0"                   \
-       "net_self=if run net_self_load;then "                           \
-               "run ramargs addip addtty addmtd addmisc;"              \
-               "bootm ${kernel_addr_r} ${ramdisk_addr_r};"             \
-               "else echo Images not loades;fi\0"                      \
-       "satargs=setenv bootargs root=/dev/sda1\0"                      \
-       "satafile=boot/uImage\0"                                        \
-       "ssdboot=echo Booting from ssd ...; "                           \
-               "run satargs addip addtty addmtd addmisc;"              \
-               "sata init;ext2load sata 0:1 ${kernel_addr_r} "         \
-               "${satafile};bootm\0"                                   \
-       "u-boot=" __stringify(CONFIG_HOSTNAME) "/u-boot.imx\0"          \
-       "uimage=uImage\0"                                               \
-       "load=tftp ${loadaddr} ${u-boot}\0"                             \
-       "uboot_addr=0xf0001000\0"                                       \
-       "update=protect off 0xf0000000 +60000;"                         \
-               "erase ${uboot_addr} +60000;"                           \
-               "cp.b ${loadaddr} ${uboot_addr} ${filesize}\0"          \
-       "upd=if run load;then echo Updating u-boot;if run update;"      \
-               "then echo U-Boot updated;"                             \
-                       "else echo Error updating u-boot !;"            \
-                       "echo Board without bootloader !!;"             \
-               "fi;"                                                   \
-               "else echo U-Boot not downloaded..exiting;fi\0"         \
-       "bootcmd=run net_nfs\0"
-
-
-#define CONFIG_CMD_SATA
-#ifdef CONFIG_CMD_SATA
-       #define CONFIG_DWC_AHSATA
-       #define CONFIG_SYS_SATA_MAX_DEVICE      1
-       #define CONFIG_DWC_AHSATA_PORT_ID       0
-       #define CONFIG_DWC_AHSATA_BASE_ADDR     SATA_BASE_ADDR
-       #define CONFIG_LBA48
-       #define CONFIG_LIBATA
-#endif
-
-#endif                         /* __CONFIG_H */
diff --git a/include/configs/imx27lite.h b/include/configs/imx27lite.h
deleted file mode 100644 (file)
index c18c35e..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright (C) 2009 Ilya Yanok <yanok@emcraft.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* include common defines/options for all imx27lite related boards */
-#include "imx27lite-common.h"
-/*
- * SoC Configuration
- */
-#define CONFIG_IMX27LITE
-#define CONFIG_HOSTNAME                imx27
-#define CONFIG_BOARDNAME       "LogicPD imx27lite\n"
-
-/*
- * Flash & Environment
- */
-#define CONFIG_SYS_FLASH_SECT_SZ       0x2000  /* 8KB sect size Intel Flash */
-#define CONFIG_ENV_OFFSET              (PHYS_FLASH_SIZE - 0x20000)
-#define PHYS_FLASH_SIZE                        0x200000
-#define CONFIG_ENV_SECT_SIZE           0x10000         /* Env sector Size */
-
-/*
- * SD/MMC
- */
-#define CONFIG_MXC_MCI_REGS_BASE       0x10014000
-
-/*
- * MTD partitions
- */
-#define MTDIDS_DEFAULT         "nor0=physmap-flash.0,nand0=mxc_nand.0"
-#define MTDPARTS_DEFAULT                       \
-       "mtdparts="                             \
-               "physmap-flash.0:"              \
-                       "256k(U-Boot),"         \
-                       "1664k(user),"          \
-                       "64k(env1),"            \
-                       "64k(env2);"            \
-               "mxc_nand.0:"                   \
-                       "128k(IPL-SPL),"        \
-                       "4m(kernel),"           \
-                       "22m(rootfs),"          \
-                       "-(userfs)"
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/imx31_litekit.h b/include/configs/imx31_litekit.h
deleted file mode 100644 (file)
index 23e3a6c..0000000
+++ /dev/null
@@ -1,171 +0,0 @@
-/*
- * (C) Copyright 2004
- * Texas Instruments.
- * Richard Woodruff <r-woodruff2@ti.com>
- * Kshitij Gupta <kshitij@ti.com>
- *
- * Configuration settings for the LogicPD i.MX31 Litekit board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#include <asm/arch/imx-regs.h>
-
- /* High Level Configuration Options */
-#define CONFIG_MX31            1    /* This is a mx31 */
-#define CONFIG_MX31_CLK32      32000
-
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-
-#define CONFIG_SYS_TEXT_BASE   0xa0000000
-
-#define CONFIG_MACH_TYPE       MACH_TYPE_MX31LITE
-
-/* Temporarily disabled */
-#if 0
-#define CONFIG_OF_LIBFDT               1
-#define CONFIG_FIT                     1
-#define CONFIG_FIT_VERBOSE             1
-#endif
-
-#define CONFIG_CMDLINE_TAG             1    /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS       1
-#define CONFIG_INITRD_TAG              1
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 128 * 1024)
-
-/*
- * Hardware drivers
- */
-
-#define CONFIG_MXC_UART
-#define CONFIG_MXC_UART_BASE   UART1_BASE
-#define CONFIG_MXC_GPIO
-
-#define CONFIG_HARD_SPI                1
-#define CONFIG_MXC_SPI         1
-#define CONFIG_DEFAULT_SPI_BUS 1
-#define CONFIG_DEFAULT_SPI_MODE        (SPI_MODE_0 | SPI_CS_HIGH)
-
-/* PMIC Controller */
-#define CONFIG_POWER
-#define CONFIG_POWER_SPI
-#define CONFIG_POWER_FSL
-#define CONFIG_FSL_PMIC_BUS    1
-#define CONFIG_FSL_PMIC_CS     0
-#define CONFIG_FSL_PMIC_CLK    1000000
-#define CONFIG_FSL_PMIC_MODE   (SPI_MODE_0 | SPI_CS_HIGH)
-#define CONFIG_FSL_PMIC_BITLEN 32
-#define CONFIG_RTC_MC13XXX
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                115200
-
-/***********************************************************
- * Command definition
- ***********************************************************/
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SPI
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_NAND
-
-#define CONFIG_BOOTDELAY       3
-
-#define CONFIG_NETMASK         255.255.255.0
-#define CONFIG_IPADDR          192.168.23.168
-#define CONFIG_SERVERIP                192.168.23.2
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                                                                       \
-       "bootargs_base=setenv bootargs console=ttySMX0,115200\0"                                                        \
-       "bootargs_nfs=setenv bootargs $(bootargs) root=/dev/nfs ip=dhcp nfsroot=$(serverip):$(nfsrootfs),v3,tcp\0"      \
-       "bootcmd=run bootcmd_net\0"                                                                                     \
-       "bootcmd_net=run bootargs_base bootargs_mtd bootargs_nfs; tftpboot 0x80000000 uImage-mx31; bootm\0"             \
-       "prg_uboot=tftpboot 0x80000000 u-boot-imx31_litekit.bin; protect off all; erase 0xa00d0000 0xa01effff; cp.b 0x80000000 0xa00d0000 $(filesize)\0"
-
-
-#define CONFIG_SMC911X         1
-#define CONFIG_SMC911X_BASE    (CS4_BASE + 0x00020000)
-#define CONFIG_SMC911X_32_BIT  1
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP            /* undef to save memory */
-#define CONFIG_SYS_CBSIZE              256  /* Console I/O Buffer Size */
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)
-#define CONFIG_SYS_MAXARGS             16          /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE  /* Boot Argument Buffer Size */
-
-#define CONFIG_SYS_MEMTEST_START       0  /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0x10000
-
-#define CONFIG_SYS_LOAD_ADDR           0 /* default load address */
-
-#define CONFIG_CMDLINE_EDITING 1
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS   1
-#define PHYS_SDRAM_1           CSD0_BASE
-#define PHYS_SDRAM_1_SIZE      (128 * 1024 * 1024)
-#define CONFIG_BOARD_EARLY_INIT_F
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
-#define CONFIG_SYS_INIT_RAM_SIZE               IRAM_SIZE
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-#define CONFIG_SYS_FLASH_BASE          CS0_BASE
-#define CONFIG_SYS_MAX_FLASH_BANKS     1           /* max number of memory banks */
-#define CONFIG_SYS_MAX_FLASH_SECT      128          /* max number of sectors on one chip */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE /* Monitor at beginning of flash */
-
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + 0x001f0000)
-#define        CONFIG_ENV_IS_IN_FLASH  1
-#define CONFIG_ENV_SECT_SIZE   (64 * 1024)
-#define CONFIG_ENV_SIZE                (64 * 1024)
-
-/*-----------------------------------------------------------------------
- * CFI FLASH driver setup
- */
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash memory is CFI compliant */
-#define CONFIG_FLASH_CFI_DRIVER        1       /* Use drivers/cfi_flash.c */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* Use buffered writes (~10x faster) */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* Use hardware sector protection */
-
-/* timeout values are in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (100*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (100*CONFIG_SYS_HZ) /* Timeout for Flash Write */
-
-/*
- * JFFS2 partitions
- */
-#undef CONFIG_CMD_MTDPARTS
-#define CONFIG_JFFS2_DEV       "nor0"
-
-/*
- * NAND flash
- */
-#define CONFIG_NAND_MXC
-#define CONFIG_MXC_NAND_REGS_BASE      NFC_BASE_ADDR
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE           NFC_BASE_ADDR
-#define CONFIG_MXC_NAND_HWECC
-
-#endif /* __CONFIG_H */
index 0a585b700b217e31f2734e0fc2abfd8d36db9a9d..1744f2c74c901e6802a91dd4d21df74d668b74f2 100644 (file)
@@ -61,7 +61,7 @@
 #define CONFIG_SPL_LIBDISK_SUPPORT
 #endif
 
-#if defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)
+#if defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || defined(CONFIG_MX6SL)
 #define CONFIG_SPL_BSS_START_ADDR      0x88200000
 #define CONFIG_SPL_BSS_MAX_SIZE        0x100000        /* 1 MB */
 #define CONFIG_SYS_SPL_MALLOC_START    0x88300000
diff --git a/include/configs/jornada.h b/include/configs/jornada.h
deleted file mode 100644 (file)
index 3090476..0000000
+++ /dev/null
@@ -1,123 +0,0 @@
-/*
- * Copyright 2010 (C)
- * Kristoffer Ericson <kristoffer.ericson@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_SA1110                  1       /* This is an SA110 CPU */
-#define CONFIG_JORNADA700              1       /* on an HP Jornada 700 series */
-#define CONFIG_SYS_FLASH_PROTECTION    1
-
-#define CONFIG_SYS_TEXT_BASE           0xC1F00000
-
-/* we will never enable dcache, because we have to setup MMU first */
-#define CONFIG_SYS_DCACHE_OFF
-
-/* Console setting */
-
-#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs      */
-#define CONFIG_SETUP_MEMORY_TAGS       1
-#define CONFIG_INITRD_TAG              1
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 128*1024)
-
-/*
- * select serial console configuration
- */
-#define CONFIG_SA1100_SERIAL   1
-#define CONFIG_SERIAL3         1       /* we use serial 3 */
-#define CONFIG_BAUDRATE        19200
-#define CONFIG_LOADS_ECHO      1
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_JFFS2
-
-#define CONFIG_BOOTDELAY       5
-#define CONFIG_BOOTARGS        "root=/dev/hda1 console=ttySA0,19200n8 console=tty1"
-#define CONFIG_BOOTCOMMAND     "run boot_kernel"
-#define CONFIG_SYS_AUTOLOAD    "n"     /* No autoload */
-#define CONFIG_SYS_LOAD_ADDR   0xc0000000
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP    /* undef to save memory */
-#define CONFIG_SYS_CBSIZE              256     /* console buffsize */
-#define CONFIG_SYS_PBSIZE              (256+sizeof(CONFIG_SYS_PROMPT)+16)
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            256     /* Boot Argument Buffer Size */
-#define CONFIG_SYS_MEMTEST_START       0xc0040000      /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0xc2000000      /* 4..128 MB */
-#define CONFIG_SYS_CPUSPEED            0x0a /* core clock 206MHz */
-#define CONFIG_SYS_BAUDRATE_TABLE      { 19200, 38400, 57600, 115200 }
-
-#define CONFIG_SYS_FLASH_CFI           1
-#define CONFIG_FLASH_CFI_DRIVER        1
-#define CONFIG_FLASH_CFI_WIDTH         FLASH_CFI_32BIT
-#define CONFIG_SYS_FLASH_BASE          0x00000000
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (4096)
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (4096)
-#define CONFIG_SYS_FLASH_INCREMENT     0x02000000
-#define PHYS_FLASH_1                   0x00000000      /* starts at 0x0 */
-#define PHYS_FLASH_SIZE                0x04000000      /* 64MB */
-#define PHYS_FLASH_SECT_SIZE           0x00040000      /* 256KB Sectors */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-#define CONFIG_SYS_MAX_FLASH_SECT      260
-#define CONFIG_SYS_FLASH_BANKS_LIST    { PHYS_FLASH_1 }
-#define CONFIG_SYS_FLASH_EMPTY_INFO    1
-#define CONFIG_SYS_MONITOR_LEN         0x00040000
-#define CONFIG_SYS_MONITOR_BASE        0x00000000
-#define CONFIG_FLASH_SHOW_PROGRESS     1
-
-/* Environment */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                0x00040000
-#define CONFIG_ENV_OFFSET      0x00040000
-#define CONFIG_ENV_SIZE                0x00040000
-#define CONFIG_ENV_SECT_SIZE   0x00040000
-#define CONFIG_ENV_OVERWRITE   1
-
-/*
-  Monitor -     0x00000000 - 0x00040000 (256kb)
-  Environment - 0x00040000 - 0x00080000 (256kb)
-  Kernel -      0x00080000 - 0x00380000 (3mb)
-  Rootfs -      0x00380000 - 0x........ (rest)
-*/
-
-#define CONFIG_NR_DRAM_BANKS           2
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_INTRAM_BASE         INTERNAL_SRAM_BASE
-#define CONFIG_SYS_INTRAM_SIZE         INTERNAL_SRAM_SIZE
-#define CONFIG_SYS_INIT_SP_ADDR        0x0
-#define PHYS_SDRAM_1                   0xc0000000      /* SDRAM Bank #1 */
-#define PHYS_SDRAM_2                   0xc4000000      /* SDRAM Bank #2 */
-#define PHYS_SDRAM_1_SIZE              0x04000000      /* 64 MB */
-#define PHYS_SDRAM_2_SIZE              0x04000000      /* 64 MB */
-
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_DEVICE
-#define CONFIG_FLASH_CFI_MTD
-#define MTDIDS_DEFAULT         "nor0=jornada7xx-0"
-#define MTDPARTS_DEFAULT       "mtdparts=jornada7xx-0:256k(u-boot),256k(env),"\
-               "3m(kernel),-(user);"
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                               \
-       "flash_kernel=protect off all; "                                \
-       "erase 00080000 0037ffff;cp.b c0000000 00080000 00300000;\0"    \
-       "flash_uboot=protect off all; "                                 \
-       "erase 00000000 0003ffff;cp.b c0000000 00000000 00040000;\0"    \
-       "boot_kernel=cp.b 00080000 c0000000 00300000;bootm;\0"
-#endif /* __CONFIG_H */
index 30810d375297397a03fb8fde90928ea2f7453af8..7f878b713afa169facb51a7746e153e4a80a0e02 100644 (file)
@@ -7,6 +7,11 @@
 #ifndef _CONFIG_LACIE_KW_H
 #define _CONFIG_LACIE_KW_H
 
+/*
+ * Generic board support
+ */
+#define CONFIG_SYS_GENERIC_BOARD
+
 /*
  * Machine number definition
  */
 #undef CONFIG_SYS_IDE_MAXDEVICE
 #undef CONFIG_SYS_PROMPT
 #define CONFIG_ENV_SPI_MAX_HZ           20000000 /* 20Mhz */
-#define CONFIG_SYS_IDE_MAXBUS           1
-#define CONFIG_SYS_IDE_MAXDEVICE        1
 #if defined(CONFIG_D2NET_V2)
 #define CONFIG_SYS_PROMPT              "d2v2> "
 #elif defined(CONFIG_NET2BIG_V2)
 #if defined(CONFIG_NETSPACE_MAX_V2) || defined(CONFIG_D2NET_V2) || \
        defined(CONFIG_NET2BIG_V2)
 #define CONFIG_SYS_ATA_IDE1_OFFSET      MV_SATA_PORT1_OFFSET
+#define CONFIG_SYS_IDE_MAXBUS           2
+#define CONFIG_SYS_IDE_MAXDEVICE        2
+#else
+#define CONFIG_SYS_IDE_MAXBUS           1
+#define CONFIG_SYS_IDE_MAXDEVICE        1
 #endif
 #endif /* CONFIG_MVSATA_IDE */
 
diff --git a/include/configs/lp8x4x.h b/include/configs/lp8x4x.h
deleted file mode 100644 (file)
index 10a7b05..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * ICP DAS LP-8x4x configuration file
- *
- * Copyright (C) 2013 Sergey Yanovich <ynvich@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef        __CONFIG_H
-#define        __CONFIG_H
-
-/*
- * High Level Board Configuration Options
- */
-#define        CONFIG_CPU_PXA27X                       /* Marvell PXA270 CPU */
-#define        MACH_TYPE_LP8X4X                4539    /* ICP DAS LP-8x4x */
-#define        CONFIG_MACH_TYPE                MACH_TYPE_LP8X4X
-#define        CONFIG_SYS_TEXT_BASE            0x00000000
-
-#define        CONFIG_SYS_MALLOC_LEN           (128*1024)
-#define        CONFIG_ARCH_CPU_INIT
-#define        CONFIG_BOOTCOMMAND              \
-       "bootm 80000 - 240000;"
-
-#define        CONFIG_BOOTARGS                 \
-       "console=ttyS0,115200 mem=128M root=/dev/mmcblk0p1 rw" \
-       "init=/sbin/init rootfstype=ext4 rootwait"
-
-#define        CONFIG_TIMESTAMP
-#define        CONFIG_BOOTDELAY                2       /* Autoboot delay */
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-#define        CONFIG_LZMA                     /* LZMA compression support */
-#define        CONFIG_OF_LIBFDT
-
-/*
- * Serial Console Configuration
- */
-#define        CONFIG_PXA_SERIAL
-#define        CONFIG_FFUART                   1
-#define        CONFIG_CONS_INDEX               3
-#define        CONFIG_BAUDRATE                 115200
-
-/*
- * Bootloader Components Configuration
- */
-#define        CONFIG_CMD_ENV
-#define        CONFIG_CMD_MMC
-#define        CONFIG_CMD_USB
-#undef CONFIG_LCD
-#undef CONFIG_CMD_IDE
-
-/*
- * Networking Configuration
- * chip on the ICPDAS LINPAC board
- */
-#ifdef CONFIG_CMD_NET
-#define        CONFIG_CMD_PING
-#define        CONFIG_CMD_DHCP
-
-#define        CONFIG_DRIVER_DM9000            1
-#define        CONFIG_DM9000_BASE              0x0C000000
-#define        DM9000_IO                       0x0C000000
-#define        DM9000_DATA                     0x0C004000
-#define        DM9000_IO_2                     0x0D000000
-#define        DM9000_DATA_2                   0x0D004000
-#define        CONFIG_NET_RETRY_COUNT          10
-
-#define        CONFIG_BOOTP_BOOTFILESIZE
-#define        CONFIG_BOOTP_BOOTPATH
-#define        CONFIG_BOOTP_GATEWAY
-#define        CONFIG_BOOTP_HOSTNAME
-#endif
-
-/*
- * MMC Card Configuration
- */
-#ifdef CONFIG_CMD_MMC
-#define        CONFIG_MMC
-#define        CONFIG_GENERIC_MMC
-#define        CONFIG_PXA_MMC_GENERIC
-#define        CONFIG_CMD_FAT
-#define        CONFIG_CMD_EXT2
-#define        CONFIG_DOS_PARTITION
-#endif
-
-/*
- * KGDB
- */
-#ifdef CONFIG_CMD_KGDB
-#define        CONFIG_KGDB_BAUDRATE            230400  /* kgdb serial port speed */
-#endif
-
-/*
- * HUSH Shell Configuration
- */
-#define        CONFIG_SYS_HUSH_PARSER          1
-
-#define        CONFIG_SYS_LONGHELP
-#undef CONFIG_SYS_PROMPT
-#ifdef CONFIG_SYS_HUSH_PARSER
-#define        CONFIG_SYS_PROMPT               "$ "
-#else
-#endif
-#define        CONFIG_SYS_CBSIZE               256
-#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_DEVICE_NULLDEV       1
-#define        CONFIG_CMDLINE_EDITING          1
-#define        CONFIG_AUTO_COMPLETE            1
-
-/*
- * DRAM Map
- */
-#define        CONFIG_NR_DRAM_BANKS            1               /* 1 bank of DRAM */
-#define        PHYS_SDRAM_1                    0xa0000000      /* SDRAM Bank #1 */
-#define        PHYS_SDRAM_1_SIZE               0x08000000      /* 128 MB */
-
-#define        CONFIG_SYS_DRAM_BASE            0xa0000000      /* CS0 */
-#define        CONFIG_SYS_DRAM_SIZE            0x08000000      /* 128 MB DRAM */
-
-#define        CONFIG_SYS_MEMTEST_START        0xa0400000      /* memtest works on */
-#define        CONFIG_SYS_MEMTEST_END          0xa0800000      /* 4 ... 8 MB in DRAM */
-
-#define        CONFIG_SYS_LOAD_ADDR            0xa0008000
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-/* Use first 64kb bank of the internal SRAM */
-#define        CONFIG_SYS_INIT_SP_ADDR         0x5c010000
-
-/*
- * NOR FLASH
- */
-#define        CONFIG_SYS_MONITOR_BASE         0x0
-#define        CONFIG_SYS_MONITOR_LEN          0x40000
-#define        CONFIG_ENV_ADDR                 \
-                       (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#define        CONFIG_ENV_SIZE                 0x40000
-#define        CONFIG_ENV_SECT_SIZE            0x40000
-
-#define        PHYS_FLASH_1                    0x00000000      /* Flash Bank #1 */
-#define        PHYS_FLASH_2                    0x04000000      /* Flash Bank #2 */
-
-#define        CONFIG_SYS_FLASH_CFI
-#define        CONFIG_FLASH_CFI_DRIVER         1
-
-#define        CONFIG_SYS_MAX_FLASH_SECT       (4 + 255)
-#define        CONFIG_SYS_MAX_FLASH_BANKS      2
-#define        CONFIG_SYS_FLASH_BANKS_LIST     { PHYS_FLASH_1, PHYS_FLASH_2 }
-
-#define        CONFIG_SYS_FLASH_ERASE_TOUT     (25*CONFIG_SYS_HZ)
-#define        CONFIG_SYS_FLASH_WRITE_TOUT     (25*CONFIG_SYS_HZ)
-
-#define        CONFIG_SYS_FLASH_USE_BUFFER_WRITE       1
-#define        CONFIG_SYS_FLASH_PROTECTION             1
-
-#define        CONFIG_ENV_IS_IN_FLASH          1
-
-/*
- * GPIO settings
- */
-#define        CONFIG_SYS_GPSR0_VAL    0x0808c014
-#define        CONFIG_SYS_GPSR1_VAL    0x00cf0002
-#define        CONFIG_SYS_GPSR2_VAL    0x0221c000
-#define        CONFIG_SYS_GPSR3_VAL    0x00020000
-
-#define        CONFIG_SYS_GPCR0_VAL    0x00000000
-#define        CONFIG_SYS_GPCR1_VAL    0x0000ab80
-#define        CONFIG_SYS_GPCR2_VAL    0x00100000
-#define        CONFIG_SYS_GPCR3_VAL    0x0
-
-#define        CONFIG_SYS_GPDR0_VAL    0xc0e9ddf4
-#define        CONFIG_SYS_GPDR1_VAL    0xfcffab83
-#define        CONFIG_SYS_GPDR2_VAL    0x02f1ffff
-#define        CONFIG_SYS_GPDR3_VAL    0x00021b81
-
-#define        CONFIG_SYS_GAFR0_L_VAL  0x80000000
-#define        CONFIG_SYS_GAFR0_U_VAL  0xa5e54018
-#define        CONFIG_SYS_GAFR1_L_VAL  0x999a955a
-#define        CONFIG_SYS_GAFR1_U_VAL  0xaaa5a00a
-#define        CONFIG_SYS_GAFR2_L_VAL  0xaaaaaaaa
-#define        CONFIG_SYS_GAFR2_U_VAL  0x55f9a402
-#define        CONFIG_SYS_GAFR3_L_VAL  0x540a950c
-#define        CONFIG_SYS_GAFR3_U_VAL  0x00001599
-
-#define        CONFIG_SYS_PSSR_VAL     0x32
-
-/*
- * Clock settings
- */
-#define        CONFIG_SYS_CKEN         0x005002c0
-#define        CONFIG_SYS_CCCR         0x02000290
-#define        CONFIG_SYS_CLKCFG       0x0000000b
-
-/*
- * Memory settings
- */
-#define        CONFIG_SYS_MSC0_VAL     0x2bd8aad2
-#define        CONFIG_SYS_MSC1_VAL     0xb8c9b8dc
-#define        CONFIG_SYS_MSC2_VAL     0xfff9b8c9
-#define        CONFIG_SYS_FLYCNFG_VAL  0x00010001
-#define        CONFIG_SYS_MDREFR_VAL   0x2093e018
-#define        CONFIG_SYS_MDCNFG_VAL   0x890009d1
-#define        CONFIG_SYS_MDMRS_VAL    0x00220022
-#define        CONFIG_SYS_SXCNFG_VAL   0x40044004
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define        CONFIG_SYS_MECR_VAL     0x00000001
-#define        CONFIG_SYS_MCMEM0_VAL   0x0000c497
-#define        CONFIG_SYS_MCMEM1_VAL   0x0000c497
-#define        CONFIG_SYS_MCATT0_VAL   0x0000c497
-#define        CONFIG_SYS_MCATT1_VAL   0x0000c497
-#define        CONFIG_SYS_MCIO0_VAL    0x00008407
-#define        CONFIG_SYS_MCIO1_VAL    0x00008407
-
-/*
- * LCD
- */
-#ifdef CONFIG_LCD
-#define        CONFIG_VOIPAC_LCD
-#endif
-
-/*
- * USB
- */
-#ifdef CONFIG_CMD_USB
-#define        CONFIG_USB_OHCI_NEW
-#define        CONFIG_SYS_USB_OHCI_BOARD_INIT
-#define        CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS      2
-#define        CONFIG_SYS_USB_OHCI_REGS_BASE   0x4C000000
-#define        CONFIG_SYS_USB_OHCI_SLOT_NAME   "lp8x4x"
-#define        CONFIG_USB_STORAGE
-#endif
-
-#endif /* __CONFIG_H */
index dfaffa13d3c040bb9d76221446e8ef827b620f87..b44f3264e318e2154ee25f12db63118136d07721 100644 (file)
@@ -566,7 +566,9 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_TIMER_CLK_FREQ          12500000
 
 #define CONFIG_HWCONFIG
-#define HWCONFIG_BUFFER_SIZE           128
+#define HWCONFIG_BUFFER_SIZE           256
+
+#define CONFIG_FSL_DEVICE_DISABLE
 
 #define CONFIG_BOOTDELAY               3
 
index 3299a9f593ee692ca7765906a4859552a2e446ec..7dcb719b0133af50814dabfa8bf4316cf868b4fe 100644 (file)
 #define CONFIG_TIMER_CLK_FREQ          12500000
 
 #define CONFIG_HWCONFIG
-#define HWCONFIG_BUFFER_SIZE           128
+#define HWCONFIG_BUFFER_SIZE           256
+
+#define CONFIG_FSL_DEVICE_DISABLE
 
 #define CONFIG_BOOTDELAY               3
 
index 39fb464593c50c228ab85f55abce7ab6e3edf79c..2dbb5f70a98979dfdcaf3adfd90d8c8a871b6dea 100644 (file)
@@ -218,6 +218,7 @@ unsigned long long get_qixis_addr(void);
 #define CONFIG_CMD_CACHE
 #define CONFIG_CMD_DHCP
 #define CONFIG_CMD_ENV
+#define CONFIG_CMD_GREPENV
 #define CONFIG_CMD_MII
 #define CONFIG_CMD_PING
 
@@ -250,8 +251,8 @@ unsigned long long get_qixis_addr(void);
        "kernel_size=0x2800000\0"               \
        "console=ttyAMA0,38400n8\0"
 
-#define CONFIG_BOOTARGS                "console=ttyS1,115200 root=/dev/ram0 " \
-                               "earlycon=uart8250,mmio,0x21c0600,115200 " \
+#define CONFIG_BOOTARGS                "console=ttyS0,115200 root=/dev/ram0 " \
+                               "earlycon=uart8250,mmio,0x21c0500,115200 " \
                                "ramdisk_size=0x2000000 default_hugepagesz=2m" \
                                " hugepagesz=2m hugepages=16"
 #define CONFIG_BOOTCOMMAND             "cp.b $kernel_start $kernel_load "     \
index d0d2eedb6d7cc36e197e003967ed2eace543bdda..bd15b3d6247da42660c110071af2758cfc931a9e 100644 (file)
 #define CONFIG_SYS_CS1_FTIM2           CONFIG_SYS_NAND_FTIM2
 #define CONFIG_SYS_CS1_FTIM3           CONFIG_SYS_NAND_FTIM3
 
+/*  MMC  */
+#define CONFIG_MMC
+#ifdef CONFIG_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_FSL_ESDHC
+#define CONFIG_SYS_FSL_MMC_HAS_CAPBLT_VS33
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+#endif
+
 /* Debug Server firmware */
 #define CONFIG_SYS_DEBUG_SERVER_FW_IN_NOR
 #define CONFIG_SYS_DEBUG_SERVER_FW_ADDR        0x580C00000ULL
index f818570e5567f75c415608acab513958d85152a6..f7f38700323fd8f7341d47d7b0327dec531150b4 100644 (file)
@@ -355,6 +355,23 @@ unsigned long get_board_ddr_clk(void);
 #define SGMII_CARD_PORT3_PHY_ADDR 0x1E
 #define SGMII_CARD_PORT4_PHY_ADDR 0x1F
 
+#define XQSGMII_CARD_PHY1_PORT0_ADDR 0x0
+#define XQSGMII_CARD_PHY1_PORT1_ADDR 0x1
+#define XQSGMII_CARD_PHY1_PORT2_ADDR 0x2
+#define XQSGMII_CARD_PHY1_PORT3_ADDR 0x3
+#define XQSGMII_CARD_PHY2_PORT0_ADDR 0x4
+#define XQSGMII_CARD_PHY2_PORT1_ADDR 0x5
+#define XQSGMII_CARD_PHY2_PORT2_ADDR 0x6
+#define XQSGMII_CARD_PHY2_PORT3_ADDR 0x7
+#define XQSGMII_CARD_PHY3_PORT0_ADDR 0x8
+#define XQSGMII_CARD_PHY3_PORT1_ADDR 0x9
+#define XQSGMII_CARD_PHY3_PORT2_ADDR 0xa
+#define XQSGMII_CARD_PHY3_PORT3_ADDR 0xb
+#define XQSGMII_CARD_PHY4_PORT0_ADDR 0xc
+#define XQSGMII_CARD_PHY4_PORT1_ADDR 0xd
+#define XQSGMII_CARD_PHY4_PORT2_ADDR 0xe
+#define XQSGMII_CARD_PHY4_PORT3_ADDR 0xf
+
 #define CONFIG_MII             /* MII PHY management */
 #define CONFIG_ETHPRIME                "DPNI1"
 #define CONFIG_PHY_GIGE                /* Include GbE speed/duplex detection */
index aee12162572b12290fe56fa05c496400bc5cfd10..a190bc7c707e368f371d95c7e53349bb0a1198e2 100644 (file)
@@ -321,6 +321,12 @@ unsigned long get_board_sys_clk(void);
        "kernel_load=0xa0000000\0"              \
        "kernel_size=0x2800000\0"
 
+#undef CONFIG_BOOTARGS
+#define CONFIG_BOOTARGS                "console=ttyS1,115200 root=/dev/ram0 " \
+                               "earlycon=uart8250,mmio,0x21c0600,115200 " \
+                               "ramdisk_size=0x2000000 default_hugepagesz=2m" \
+                               " hugepagesz=2m hugepages=16"
+
 /* MAC/PHY configuration */
 #ifdef CONFIG_FSL_MC_ENET
 #define CONFIG_PHYLIB_10G
diff --git a/include/configs/lwmon5.h b/include/configs/lwmon5.h
deleted file mode 100644 (file)
index 513167e..0000000
+++ /dev/null
@@ -1,692 +0,0 @@
-/*
- * (C) Copyright 2007-2013
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * lwmon5.h - configuration for lwmon5 board
- */
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * Liebherr extra version info
- */
-#define CONFIG_IDENT_STRING    " - v2.0"
-
-/*
- * High Level Configuration Options
- */
-#define CONFIG_LWMON5          1               /* Board is lwmon5      */
-#define CONFIG_440EPX          1               /* Specific PPC440EPx   */
-#define CONFIG_440             1               /* ... PPC440 family    */
-
-#ifdef CONFIG_LCD4_LWMON5
-#define        CONFIG_SYS_TEXT_BASE    0x01000000 /* SPL U-Boot TEXT_BASE */
-#define CONFIG_HOSTNAME                lcd4_lwmon5
-#else
-#define CONFIG_SYS_TEXT_BASE   0xFFF80000
-#define CONFIG_HOSTNAME                lwmon5
-#endif
-
-#define CONFIG_SYS_CLK_FREQ    33300000        /* external freq to pll */
-
-#define CONFIG_4xx_DCACHE              /* enable cache in SDRAM        */
-
-#define CONFIG_BOARD_EARLY_INIT_F      /* Call board_early_init_f      */
-#define CONFIG_BOARD_EARLY_INIT_R      /* Call board_early_init_r      */
-#define CONFIG_BOARD_POSTCLK_INIT      /* Call board_postclk_init      */
-#define CONFIG_MISC_INIT_R             /* Call misc_init_r             */
-#define CONFIG_BOARD_RESET             /* Call board_reset             */
-
-/*
- * Base addresses -- Note these are effective addresses where the
- * actual resources get mapped (not physical addresses)
- */
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE    /* Start of U-Boot      */
-#define CONFIG_SYS_MONITOR_LEN         0x80000
-#define CONFIG_SYS_MALLOC_LEN          (1 << 20)       /* Reserved for malloc  */
-
-#define CONFIG_SYS_BOOT_BASE_ADDR      0xf0000000
-#define CONFIG_SYS_SDRAM_BASE          0x00000000      /* _must_ be 0          */
-#define CONFIG_SYS_FLASH_BASE          0xf8000000      /* start of FLASH       */
-#define CONFIG_SYS_LIME_BASE_0         0xc0000000
-#define CONFIG_SYS_LIME_BASE_1         0xc1000000
-#define CONFIG_SYS_LIME_BASE_2         0xc2000000
-#define CONFIG_SYS_LIME_BASE_3         0xc3000000
-#define CONFIG_SYS_FPGA_BASE_0         0xc4000000
-#define CONFIG_SYS_FPGA_BASE_1         0xc4200000
-#define CONFIG_SYS_OCM_BASE            0xe0010000      /* ocm                  */
-#define CONFIG_SYS_PCI_BASE            0xe0000000      /* Internal PCI regs    */
-#define CONFIG_SYS_PCI_MEMBASE         0x80000000      /* mapped pci memory    */
-#define CONFIG_SYS_PCI_MEMBASE1                (CONFIG_SYS_PCI_MEMBASE  + 0x10000000)
-#define CONFIG_SYS_PCI_MEMBASE2                (CONFIG_SYS_PCI_MEMBASE1 + 0x10000000)
-#define CONFIG_SYS_PCI_MEMBASE3                (CONFIG_SYS_PCI_MEMBASE2 + 0x10000000)
-
-#ifndef CONFIG_LCD4_LWMON5
-#define CONFIG_SYS_USB2D0_BASE         0xe0000100
-#define CONFIG_SYS_USB_DEVICE          0xe0000000
-#define CONFIG_SYS_USB_HOST            0xe0000400
-#endif
-
-/*
- * Initial RAM & stack pointer
- *
- * On LWMON5 we use D-cache as init-ram and stack pointer. We also move
- * the POST_WORD from OCM to a 440EPx register that preserves it's
- * content during reset (GPT0_COMP6). This way we reserve the OCM (16k)
- * for logbuffer only. (GPT0_COMP1-COMP5 are reserved for logbuffer header.)
- */
-#ifndef CONFIG_LCD4_LWMON5
-#define CONFIG_SYS_INIT_RAM_DCACHE     1               /* d-cache as init ram  */
-#define CONFIG_SYS_INIT_RAM_ADDR       0x70000000              /* DCache       */
-#define CONFIG_SYS_INIT_RAM_SIZE               (4 << 10)
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-#else
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_BASE
-#define CONFIG_SYS_INIT_RAM_SIZE       (4 << 10)
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      (CONFIG_SYS_GBL_DATA_OFFSET - 0x4)
-#endif
-/* unused GPT0 COMP reg        */
-#define CONFIG_SYS_POST_WORD_ADDR      (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP6)
-#define CONFIG_SYS_OCM_SIZE            (16 << 10)
-/* 440EPx errata CHIP 11: don't use last 4kbytes */
-#define CONFIG_SYS_MEM_TOP_HIDE                (4 << 10)
-
-/* Additional registers for watchdog timer post test */
-#define CONFIG_SYS_WATCHDOG_TIME_ADDR  (CONFIG_SYS_PERIPHERAL_BASE + GPT0_MASK2)
-#define CONFIG_SYS_WATCHDOG_FLAGS_ADDR (CONFIG_SYS_PERIPHERAL_BASE + GPT0_MASK1)
-#define CONFIG_SYS_DSPIC_TEST_ADDR     CONFIG_SYS_WATCHDOG_FLAGS_ADDR
-#define CONFIG_SYS_OCM_STATUS_ADDR     CONFIG_SYS_WATCHDOG_FLAGS_ADDR
-#define CONFIG_SYS_WATCHDOG_MAGIC      0x12480000
-#define CONFIG_SYS_WATCHDOG_MAGIC_MASK 0xFFFF0000
-#define CONFIG_SYS_DSPIC_TEST_MASK     0x00000001
-#define CONFIG_SYS_OCM_STATUS_OK       0x00009A00
-#define CONFIG_SYS_OCM_STATUS_FAIL     0x0000A300
-#define CONFIG_SYS_OCM_STATUS_MASK     0x0000FF00
-
-/*
- * Serial Port
- */
-#define CONFIG_CONS_INDEX      2       /* Use UART1                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK             /* no external clock provided   */
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_SYS_BAUDRATE_TABLE                                              \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
-/*
- * Environment
- */
-#define CONFIG_ENV_IS_IN_FLASH         /* use FLASH for environment vars       */
-
-/*
- * FLASH related
- */
-#define CONFIG_SYS_FLASH_CFI                   /* The flash is CFI compatible  */
-#define CONFIG_FLASH_CFI_DRIVER                        /* Use common CFI driver        */
-
-#define CONFIG_SYS_FLASH0              0xFC000000
-#define CONFIG_SYS_FLASH1              0xF8000000
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH1, CONFIG_SYS_FLASH0 }
-
-#define CONFIG_SYS_MAX_FLASH_BANKS_DETECT 2    /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_PROTECTION            /* use hardware flash protection        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-#define CONFIG_SYS_FLASH_QUIET_TEST            /* don't warn upon unknown flash        */
-
-#define CONFIG_ENV_SECT_SIZE   0x40000 /* size of one complete sector          */
-#define CONFIG_ENV_ADDR                ((-CONFIG_SYS_MONITOR_LEN) - CONFIG_ENV_SECT_SIZE)
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR - CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-/*
- * DDR SDRAM
- */
-#define CONFIG_SYS_MBYTES_SDRAM                256
-#define CONFIG_SYS_DDR_CACHED_ADDR     0x40000000      /* setup 2nd TLB cached here    */
-#define CONFIG_DDR_DATA_EYE                    /* use DDR2 optimization        */
-#ifndef CONFIG_LCD4_LWMON5
-#define CONFIG_DDR_ECC                         /* enable ECC                   */
-#endif
-
-#ifndef CONFIG_LCD4_LWMON5
-/* POST support */
-#define CONFIG_POST            (CONFIG_SYS_POST_CACHE          | \
-                                CONFIG_SYS_POST_CPU            | \
-                                CONFIG_SYS_POST_ECC            | \
-                                CONFIG_SYS_POST_ETHER          | \
-                                CONFIG_SYS_POST_FPU            | \
-                                CONFIG_SYS_POST_I2C            | \
-                                CONFIG_SYS_POST_MEMORY         | \
-                                CONFIG_SYS_POST_OCM            | \
-                                CONFIG_SYS_POST_RTC            | \
-                                CONFIG_SYS_POST_SPR            | \
-                                CONFIG_SYS_POST_UART           | \
-                                CONFIG_SYS_POST_SYSMON         | \
-                                CONFIG_SYS_POST_WATCHDOG       | \
-                                CONFIG_SYS_POST_DSP            | \
-                                CONFIG_SYS_POST_BSPEC1         | \
-                                CONFIG_SYS_POST_BSPEC2         | \
-                                CONFIG_SYS_POST_BSPEC3         | \
-                                CONFIG_SYS_POST_BSPEC4         | \
-                                CONFIG_SYS_POST_BSPEC5)
-
-/* Define here the base-addresses of the UARTs to test in POST */
-#define CONFIG_SYS_POST_UART_TABLE     { CONFIG_SYS_NS16550_COM1, \
-                       CONFIG_SYS_NS16550_COM2 }
-
-#define CONFIG_POST_UART  {                            \
-       "UART test",                                    \
-       "uart",                                         \
-       "This test verifies the UART operation.",       \
-       POST_RAM | POST_SLOWTEST | POST_ALWAYS | POST_MANUAL,   \
-       &uart_post_test,                                \
-       NULL,                                           \
-       NULL,                                           \
-       CONFIG_SYS_POST_UART                            \
-       }
-
-#define CONFIG_POST_WATCHDOG  {                                \
-       "Watchdog timer test",                          \
-       "watchdog",                                     \
-       "This test checks the watchdog timer.",         \
-       POST_RAM | POST_POWERON | POST_SLOWTEST | POST_MANUAL | POST_REBOOT, \
-       &lwmon5_watchdog_post_test,                     \
-       NULL,                                           \
-       NULL,                                           \
-       CONFIG_SYS_POST_WATCHDOG                        \
-       }
-
-#define CONFIG_POST_BSPEC1    {                                \
-       "dsPIC init test",                              \
-       "dspic_init",                                   \
-       "This test returns result of dsPIC READY test run earlier.",    \
-       POST_RAM | POST_ALWAYS,                         \
-       &dspic_init_post_test,                          \
-       NULL,                                           \
-       NULL,                                           \
-       CONFIG_SYS_POST_BSPEC1                          \
-       }
-
-#define CONFIG_POST_BSPEC2    {                                \
-       "dsPIC test",                                   \
-       "dspic",                                        \
-       "This test gets result of dsPIC POST and dsPIC version.",       \
-       POST_RAM | POST_ALWAYS,                         \
-       &dspic_post_test,                               \
-       NULL,                                           \
-       NULL,                                           \
-       CONFIG_SYS_POST_BSPEC2                          \
-       }
-
-#define CONFIG_POST_BSPEC3    {                                \
-       "FPGA test",                                    \
-       "fpga",                                         \
-       "This test checks FPGA registers and memory.",  \
-       POST_RAM | POST_ALWAYS | POST_MANUAL,           \
-       &fpga_post_test,                                \
-       NULL,                                           \
-       NULL,                                           \
-       CONFIG_SYS_POST_BSPEC3                          \
-       }
-
-#define CONFIG_POST_BSPEC4    {                                \
-       "GDC test",                                     \
-       "gdc",                                          \
-       "This test checks GDC registers and memory.",   \
-       POST_RAM | POST_ALWAYS | POST_MANUAL,\
-       &gdc_post_test,                                 \
-       NULL,                                           \
-       NULL,                                           \
-       CONFIG_SYS_POST_BSPEC4                          \
-       }
-
-#define CONFIG_POST_BSPEC5    {                                \
-       "SYSMON1 test",                                 \
-       "sysmon1",                                      \
-       "This test checks GPIO_62_EPX pin indicating power failure.",   \
-       POST_RAM | POST_MANUAL | POST_NORMAL | POST_SLOWTEST,   \
-       &sysmon1_post_test,                             \
-       NULL,                                           \
-       NULL,                                           \
-       CONFIG_SYS_POST_BSPEC5                          \
-       }
-
-#define CONFIG_SYS_POST_CACHE_ADDR     0x7fff0000 /* free virtual address      */
-#define CONFIG_LOGBUFFER
-/* Reserve GPT0_COMP1-COMP5 for logbuffer header */
-#define CONFIG_ALT_LH_ADDR     (CONFIG_SYS_PERIPHERAL_BASE + GPT0_COMP1)
-#define CONFIG_ALT_LB_ADDR     (CONFIG_SYS_OCM_BASE)
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */
-#endif
-
-/*
- * I2C
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_RTC_ADDR        0x51    /* RTC                          */
-#define CONFIG_SYS_I2C_EEPROM_CPU_ADDR 0x52    /* EEPROM          (CPU Modul)  */
-#define CONFIG_SYS_I2C_EEPROM_MB_ADDR  0x53    /* EEPROM AT24C128 (MainBoard)  */
-#define CONFIG_SYS_I2C_DSPIC_ADDR      0x54    /* dsPIC                        */
-#define CONFIG_SYS_I2C_DSPIC_2_ADDR    0x55    /* dsPIC                        */
-#define CONFIG_SYS_I2C_DSPIC_KEYB_ADDR 0x56    /* dsPIC                        */
-#define CONFIG_SYS_I2C_DSPIC_IO_ADDR   0x57    /* dsPIC                        */
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2       /* Bytes of address             */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 6    /* The Atmel AT24C128 has       */
-                                       /* 64 byte page write mode using*/
-                                       /* last 6 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10   /* and takes up to 10 msec */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_ENABLE
-
-#define CONFIG_RTC_PCF8563                     /* enable Philips PCF8563 RTC   */
-#define CONFIG_SYS_I2C_RTC_ADDR                0x51    /* Philips PCF8563 RTC address  */
-#define CONFIG_SYS_I2C_KEYBD_ADDR      0x56    /* PIC LWE keyboard             */
-#define CONFIG_SYS_I2C_DSPIC_IO_ADDR   0x57    /* PIC I/O addr               */
-
-#define CONFIG_SYS_POST_I2C_ADDRS      {CONFIG_SYS_I2C_RTC_ADDR,       \
-                                        CONFIG_SYS_I2C_EEPROM_CPU_ADDR,\
-                                        CONFIG_SYS_I2C_EEPROM_MB_ADDR, \
-                                        CONFIG_SYS_I2C_DSPIC_ADDR,     \
-                                        CONFIG_SYS_I2C_DSPIC_2_ADDR,   \
-                                        CONFIG_SYS_I2C_DSPIC_KEYB_ADDR,\
-                                        CONFIG_SYS_I2C_DSPIC_IO_ADDR }
-
-/*
- * Pass open firmware flat tree
- */
-#define CONFIG_OF_LIBFDT
-#define CONFIG_OF_BOARD_SETUP
-/* Update size in "reg" property of NOR FLASH device tree nodes */
-#define CONFIG_FDT_FIXUP_NOR_FLASH_SIZE
-
-#define CONFIG_FIT                     /* enable FIT image support     */
-
-#define        CONFIG_POST_KEY_MAGIC   "3C+3E" /* press F3 + F5 keys to force POST */
-
-#define        CONFIG_PREBOOT          "setenv bootdelay 15"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "hostname=lwmon5\0"                                             \
-       "netdev=eth0\0"                                                 \
-       "unlock=yes\0"                                                  \
-       "logversion=2\0"                                                \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS1,${baudrate}\0"\
-       "addmisc=setenv bootargs ${bootargs} rtc-pcf8563.probe=0,0x51\0"\
-       "flash_nfs=run nfsargs addip addtty addmisc;"                   \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip addtty addmisc;"                  \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};"                              \
-               "run nfsargs addip addtty addmisc;bootm\0"              \
-       "rootpath=/opt/eldk/ppc_4xxFP\0"                                \
-       "bootfile=/tftpboot/lwmon5/uImage\0"                            \
-       "kernel_addr=FC000000\0"                                        \
-       "ramdisk_addr=FC180000\0"                                       \
-       "load=tftp 200000 /tftpboot/${hostname}/u-boot.bin\0"           \
-       "update=protect off FFF80000 FFFFFFFF;era FFF80000 FFFFFFFF;"   \
-               "cp.b 200000 FFF80000 80000\0"                          \
-       "upd=run load update\0"                                         \
-       "lwe_env=tftp 200000 /tftpboot.dev/lwmon5/env_uboot.bin;"       \
-               "autoscr 200000\0"                                      \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define        CONFIG_IBM_EMAC4_V4     1
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                3       /* PHY address, See schematics  */
-
-#define CONFIG_PHY_RESET        1      /* reset phy upon startup         */
-#define CONFIG_PHY_RESET_DELAY 300
-
-#define CONFIG_HAS_ETH0
-#define CONFIG_SYS_RX_ETH_BUFFER       32      /* Number of ethernet rx buffers & descriptors */
-
-#define CONFIG_HAS_ETH1                1       /* add support for "eth1addr"   */
-#define CONFIG_PHY1_ADDR       1
-
-/* Video console */
-#define CONFIG_VIDEO
-#define CONFIG_VIDEO_MB862xx
-#define CONFIG_VIDEO_MB862xx_ACCEL
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_CONSOLE_EXTRA_INFO
-#define VIDEO_FB_16BPP_PIXEL_SWAP
-#define VIDEO_FB_16BPP_WORD_SWAP
-
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-#define CONFIG_VIDEO_SW_CURSOR
-#define CONFIG_SPLASH_SCREEN
-
-#ifndef CONFIG_LCD4_LWMON5
-/*
- * USB/EHCI
- */
-#define CONFIG_USB_EHCI                        /* Enable EHCI USB support      */
-#define CONFIG_USB_EHCI_PPC4XX         /* on PPC4xx platform           */
-#define CONFIG_SYS_PPC4XX_USB_ADDR     0xe0000300
-#define CONFIG_EHCI_MMIO_BIG_ENDIAN
-#define CONFIG_EHCI_DESC_BIG_ENDIAN
-#define CONFIG_EHCI_HCD_INIT_AFTER_RESET /* re-init HCD after CMD_RESET */
-#define CONFIG_USB_STORAGE
-
-/* Partitions */
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-#define CONFIG_ISO_PARTITION
-#endif
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_SDRAM
-
-#ifdef CONFIG_VIDEO
-#define CONFIG_CMD_BMP
-#endif
-
-#ifndef CONFIG_LCD4_LWMON5
-#ifdef CONFIG_440EPX
-#define CONFIG_CMD_USB
-#endif
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SUPPORT_VFAT
-
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#define CONFIG_SYS_HUSH_PARSER         1       /* Use the HUSH parser          */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size  */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on           */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM        */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000  /* default load address       */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_MX_CYCLIC        1       /* enable mdc/mwc commands      */
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-#define CONFIG_SYS_CONSOLE_INFO_QUIET  /* don't print console @ startup*/
-
-#ifndef CONFIG_LCD4_LWMON5
-#ifndef DEBUG
-#define CONFIG_HW_WATCHDOG     1       /* Use external HW-Watchdog     */
-#endif
-#define CONFIG_WD_PERIOD       40000   /* in usec */
-#define CONFIG_WD_MAX_RATE     66600   /* in ticks */
-#endif
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 16 MB of memory, since this is
- * the maximum mapped by the 40x Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (16 << 20) /* Initial Memory map for Linux */
-#define CONFIG_SYS_BOOTM_LEN           (16 << 20) /* Increase max gunzip size */
-
-/*
- * External Bus Controller (EBC) Setup
- */
-#define CONFIG_SYS_FLASH               CONFIG_SYS_FLASH_BASE
-
-/* Memory Bank 0 (NOR-FLASH) initialization                                    */
-#define CONFIG_SYS_EBC_PB0AP           0x03000280
-#define CONFIG_SYS_EBC_PB0CR           (CONFIG_SYS_FLASH | 0xfc000)
-
-/* Memory Bank 1 (Lime) initialization                                         */
-#define CONFIG_SYS_EBC_PB1AP           0x01004380
-#define CONFIG_SYS_EBC_PB1CR           (CONFIG_SYS_LIME_BASE_0 | 0xbc000)
-
-/* Memory Bank 2 (FPGA) initialization                                         */
-#define CONFIG_SYS_EBC_PB2AP           0x01004400
-#define CONFIG_SYS_EBC_PB2CR           (CONFIG_SYS_FPGA_BASE_0 | 0x1c000)
-
-/* Memory Bank 3 (FPGA2) initialization                                                */
-#define CONFIG_SYS_EBC_PB3AP           0x01004400
-#define CONFIG_SYS_EBC_PB3CR           (CONFIG_SYS_FPGA_BASE_1 | 0x1c000)
-
-#define CONFIG_SYS_EBC_CFG             0xb8400000
-
-/*
- * Graphics (Fujitsu Lime)
- */
-/* SDRAM Clock frequency adjustment register */
-#define CONFIG_SYS_LIME_SDRAM_CLOCK    0xC1FC0038
-#if 1 /* 133MHz is not tested enough, use 100MHz for now */
-/* Lime Clock frequency is to set 100MHz */
-#define CONFIG_SYS_LIME_CLOCK_100MHZ   0x00000
-#else
-/* Lime Clock frequency for 133MHz */
-#define CONFIG_SYS_LIME_CLOCK_133MHZ   0x10000
-#endif
-
-/* SDRAM Parameter register */
-#define CONFIG_SYS_LIME_MMR            0xC1FCFFFC
-/*
- * SDRAM parameter value; was 0x414FB7F2, caused several vertical bars
- * and pixel flare on display when 133MHz was configured. According to
- * SDRAM chip datasheet CAS Latency is 3 for 133MHz and -75 Speed
- * Grade
- */
-#ifdef CONFIG_SYS_LIME_CLOCK_133MHZ
-#define CONFIG_SYS_MB862xx_MMR 0x414FB7F3
-#define CONFIG_SYS_MB862xx_CCF CONFIG_SYS_LIME_CLOCK_133MHZ
-#else
-#define CONFIG_SYS_MB862xx_MMR 0x414FB7F2
-#define CONFIG_SYS_MB862xx_CCF CONFIG_SYS_LIME_CLOCK_100MHZ
-#endif
-
-/*
- * GPIO Setup
- */
-#define CONFIG_SYS_GPIO_PHY1_RST       12
-#define CONFIG_SYS_GPIO_FLASH_WP       14
-#define CONFIG_SYS_GPIO_PHY0_RST       22
-#define CONFIG_SYS_GPIO_PERM_VOLT_FEED 49
-#define CONFIG_SYS_GPIO_DSPIC_READY    51
-#define CONFIG_SYS_GPIO_CAN_ENABLE     53
-#define CONFIG_SYS_GPIO_LSB_ENABLE     54
-#define CONFIG_SYS_GPIO_EEPROM_EXT_WP  55
-#define CONFIG_SYS_GPIO_HIGHSIDE       56
-#define CONFIG_SYS_GPIO_EEPROM_INT_WP  57
-#define CONFIG_SYS_GPIO_BOARD_RESET    58
-#define CONFIG_SYS_GPIO_LIME_S         59
-#define CONFIG_SYS_GPIO_LIME_RST       60
-#define CONFIG_SYS_GPIO_SYSMON_STATUS  62
-#define CONFIG_SYS_GPIO_WATCHDOG       63
-
-/* On LCD4, GPIO49 has to be configured to 0 instead of 1 */
-#ifdef CONFIG_LCD4_LWMON5
-#define GPIO49_VAL     0
-#else
-#define GPIO49_VAL     1
-#endif
-
-/*
- * PPC440 GPIO Configuration
- */
-#define CONFIG_SYS_4xx_GPIO_TABLE { /*   Out             GPIO  Alternate1      Alternate2      Alternate3 */ \
-{                                                                                      \
-/* GPIO Core 0 */                                                                      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO0        EBC_ADDR(7)     DMA_REQ(2)      */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO1        EBC_ADDR(6)     DMA_ACK(2)      */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO2        EBC_ADDR(5)     DMA_EOT/TC(2)   */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO3        EBC_ADDR(4)     DMA_REQ(3)      */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO4        EBC_ADDR(3)     DMA_ACK(3)      */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO5        EBC_ADDR(2)     DMA_EOT/TC(3)   */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO6        EBC_CS_N(1)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO7        EBC_CS_N(2)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO8        EBC_CS_N(3)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO9        EBC_CS_N(4)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO10 EBC_CS_N(5)                   */      \
-{GPIO0_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO11 EBC_BUS_ERR                   */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO12                               */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO13                               */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_1}, /* GPIO14                               */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_1}, /* GPIO15                               */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO16 GMCTxD(4)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO17 GMCTxD(5)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO18 GMCTxD(6)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO19 GMCTxD(7)                     */      \
-{GPIO0_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO20 RejectPkt0                    */      \
-{GPIO0_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO21 RejectPkt1                    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO22                               */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO23 SCPD0                         */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO24 GMCTxD(2)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_0}, /* GPIO25 GMCTxD(3)                     */      \
-{GPIO0_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO26                               */      \
-{GPIO0_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO27 EXT_EBC_REQ   USB2D_RXERROR   */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO28               USB2D_TXVALID   */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO29 EBC_EXT_HDLA  USB2D_PAD_SUSPNDM */    \
-{GPIO0_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO30 EBC_EXT_ACK   USB2D_XCVRSELECT*/      \
-{GPIO0_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO31 EBC_EXR_BUSREQ        USB2D_TERMSELECT*/      \
-},                                                                                     \
-{                                                                                      \
-/* GPIO Core 1 */                                                                      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT2, GPIO_OUT_0}, /* GPIO32 USB2D_OPMODE0 EBC_DATA(2)     */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT2, GPIO_OUT_0}, /* GPIO33 USB2D_OPMODE1 EBC_DATA(3)     */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_ALT3, GPIO_OUT_0}, /* GPIO34 UART0_DCD_N   UART1_DSR_CTS_N UART2_SOUT*/ \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT3, GPIO_OUT_0}, /* GPIO35 UART0_8PIN_DSR_N UART1_RTS_DTR_N UART2_SIN*/ \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT2, GPIO_OUT_0}, /* GPIO36 UART0_8PIN_CTS_N EBC_DATA(0)  UART3_SIN*/ \
-{GPIO1_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_0}, /* GPIO37 UART0_RTS_N   EBC_DATA(1)     UART3_SOUT*/ \
-{GPIO1_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_0}, /* GPIO38 UART0_DTR_N   UART1_SOUT      */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT2, GPIO_OUT_0}, /* GPIO39 UART0_RI_N    UART1_SIN       */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO40 UIC_IRQ(0)                    */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO41 UIC_IRQ(1)                    */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO42 UIC_IRQ(2)                    */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO43 UIC_IRQ(3)                    */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO44 UIC_IRQ(4)    DMA_ACK(1)      */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO45 UIC_IRQ(6)    DMA_EOT/TC(1)   */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO46 UIC_IRQ(7)    DMA_REQ(0)      */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO47 UIC_IRQ(8)    DMA_ACK(0)      */      \
-{GPIO1_BASE, GPIO_IN , GPIO_ALT1, GPIO_OUT_0}, /* GPIO48 UIC_IRQ(9)    DMA_EOT/TC(0)   */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO49_VAL}, /* GPIO49  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL , GPIO_OUT_0}, /* GPIO50  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO51  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO52  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO53  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO54  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_1}, /* GPIO55  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO56  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_1}, /* GPIO57  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO58  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO59  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO60  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO61  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_IN , GPIO_SEL , GPIO_OUT_0}, /* GPIO62  Unselect via TraceSelect Bit */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_SEL , GPIO_OUT_0}, /* GPIO63  Unselect via TraceSelect Bit */      \
-}                                                                                      \
-}
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-/*
- * SPL related defines
- */
-#ifdef CONFIG_LCD4_LWMON5
-#define CONFIG_SPL_FRAMEWORK
-#define CONFIG_SPL_BOARD_INIT
-#define CONFIG_SPL_NOR_SUPPORT
-#define CONFIG_SPL_TEXT_BASE           0xffff0000 /* last 64 KiB for SPL */
-#define CONFIG_SYS_SPL_MAX_LEN         (64 << 10)
-#define CONFIG_UBOOT_PAD_TO            458752  /* decimal for 'dd' */
-#define CONFIG_SPL_LIBCOMMON_SUPPORT   /* image.c */
-#define CONFIG_SPL_LIBGENERIC_SUPPORT  /* string.c */
-#define CONFIG_SPL_SERIAL_SUPPORT
-
-/* Place BSS for SPL near end of SDRAM */
-#define CONFIG_SPL_BSS_START_ADDR      ((256 - 1) << 20)
-#define CONFIG_SPL_BSS_MAX_SIZE                (64 << 10)
-
-#define CONFIG_SPL_OS_BOOT
-/* Place patched DT blob (fdt) at this address */
-#define CONFIG_SYS_SPL_ARGS_ADDR       0x01800000
-
-#define CONFIG_SPL_TARGET              "u-boot-img-spl-at-end.bin"
-
-/* Settings for real U-Boot to be loaded from NOR flash */
-#define CONFIG_SYS_UBOOT_BASE          (-CONFIG_SYS_MONITOR_LEN)
-#define CONFIG_SYS_UBOOT_START         0x01002100
-
-#define CONFIG_SYS_OS_BASE             0xf8000000
-#define CONFIG_SYS_FDT_BASE            0xf87c0000
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/magnesium.h b/include/configs/magnesium.h
deleted file mode 100644 (file)
index 3364bde..0000000
+++ /dev/null
@@ -1,58 +0,0 @@
-/*
- * Copyright (C) 2010 Heiko Schocher <hs@denx.de>
- *
- * based on:
- * Copyright (C) 2009 Ilya Yanok <yanok@emcraft.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* include common defines/options for all imx27lite related boards */
-#include "imx27lite-common.h"
-
-/*
- * SoC Configuration
- */
-#define CONFIG_MAGNESIUM
-#define CONFIG_HOSTNAME                magnesium
-#define CONFIG_BOARDNAME       "Projectiondesign magnesium\n"
-
-/*
- * Flash & Environment
- */
-#define CONFIG_SYS_FLASH_SECT_SZ       0x8000  /* 64KB sect size */
-#define CONFIG_ENV_OFFSET              (PHYS_FLASH_SIZE - 0x40000)
-#define PHYS_FLASH_SIZE                        0x800000
-#define CONFIG_ENV_SECT_SIZE           0x20000         /* Env sector Size */
-
-/*
- * NAND
- */
-#define CONFIG_SYS_NAND_LARGEPAGE
-
-/*
- * SD/MMC
- */
-#define CONFIG_MXC_MCI_REGS_BASE       0x10013000
-
-/*
- * MTD partitions
- */
-#define MTDIDS_DEFAULT         "nor0=physmap-flash.0,nand0=mxc_nand.0"
-#define MTDPARTS_DEFAULT                       \
-       "mtdparts="                             \
-               "physmap-flash.0:"              \
-                       "256k(U-Boot),"         \
-                       "7680k(user),"          \
-                       "128k(env1),"           \
-                       "128k(env2);"           \
-               "mxc_nand.0:"                   \
-                       "128k(IPL-SPL),"        \
-                       "4m(kernel),"           \
-                       "22m(rootfs),"          \
-                       "-(userfs)"
-
-#endif /* __CONFIG_H */
index e5bb87302c7b82649d1c96b5bd146ec85833b972..ab6c910dee6604478aec664ef52f975f03562bfc 100644 (file)
@@ -56,6 +56,8 @@
 #define CONFIG_DISPLAY_CPUINFO                 /* display cpu info and speed */
 #define CONFIG_PREBOOT                         /* enable preboot variable */
 
+#define CONFIG_SYS_GENERIC_BOARD
+
 /*
  * Hardware drivers
  */
diff --git a/include/configs/mv88f6281gtw_ge.h b/include/configs/mv88f6281gtw_ge.h
deleted file mode 100644 (file)
index 45a4a75..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _CONFIG_MV88F6281GTW_GE_H
-#define _CONFIG_MV88F6281GTW_GE_H
-
-/*
- * Version number information
- */
-#define CONFIG_IDENT_STRING    "\nMarvell-MV88F6281GTW_GE"
-
-/*
- * High Level Configuration Options (easy to change)
- */
-#define CONFIG_FEROCEON_88FR131        1       /* CPU Core subversion */
-#define CONFIG_KW88F6281       1       /* SOC Name */
-#define CONFIG_MACH_MV88F6281GTW_GE    /* Machine type */
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* disable board lowlevel_init */
-
-/*
- * Commands configuration
- */
-#define CONFIG_SYS_NO_FLASH            /* Declare no flash (NOR/SPI) */
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_ENV
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SF
-#define CONFIG_CMD_USB
-
-/*
- * mv-common.h should be defined after CMD configs since it used them
- * to enable certain macros
- */
-#include "mv-common.h"
-
-/* Unwanted stuffs from mv-common.h */
-#undef CONFIG_CMD_EXT2
-#undef CONFIG_CMD_JFFS2
-#undef CONFIG_CMD_FAT
-#undef CONFIG_CMD_UBI
-#undef CONFIG_CMD_UBIFS
-#undef CONFIG_RBTREE
-
-/*
- *  Environment variables configurations
- */
-#ifdef CONFIG_SPI_FLASH
-#define CONFIG_ENV_IS_IN_SPI_FLASH     1
-#define CONFIG_ENV_SECT_SIZE           0x10000 /* 64K */
-#else
-#define CONFIG_ENV_IS_NOWHERE          1       /* if env in SDRAM */
-#endif
-#define CONFIG_ENV_SIZE                        0x1000  /* 4k */
-#define CONFIG_ENV_ADDR                        0x30000
-#define CONFIG_ENV_OFFSET              0x30000 /* env starts here */
-
-/*
- * Default environment variables
- */
-#define CONFIG_BOOTCOMMAND             "${x_bootcmd_kernel}; " \
-       "setenv bootargs ${x_bootargs} ${x_bootargs_root}; "    \
-       "${x_bootcmd_usb}; bootm 0x6400000;"
-
-#define CONFIG_MTDPARTS                        "spi0.0:512k(uboot),"   \
-       "512k@512k(psm),2m@1m(kernel),13m@3m(rootfs)\0"
-
-#define CONFIG_EXTRA_ENV_SETTINGS      "x_bootargs=console"    \
-       "=ttyS0,115200 mtdparts="CONFIG_MTDPARTS        \
-       "x_bootcmd_kernel=cp.b 0xE8100000 0x6400000 0x200000\0" \
-       "x_bootcmd_usb=usb start\0" \
-       "x_bootargs_root=root=/dev/mtdblock3 ro rootfstype=squashfs\0"
-
-/*
- * Ethernet Driver configuration
- */
-#ifdef CONFIG_CMD_NET
-#define CONFIG_MVGBE_PORTS     {1, 0}  /* enable port 0 only */
-#define CONFIG_MV88E61XX_SWITCH        /* Enable mv88e61xx switch driver */
-#endif /* CONFIG_CMD_NET */
-
-#endif /* _CONFIG_MV88F6281GTW_GE_H */
diff --git a/include/configs/mx51_efikamx.h b/include/configs/mx51_efikamx.h
deleted file mode 100644 (file)
index 373cfcb..0000000
+++ /dev/null
@@ -1,242 +0,0 @@
-/*
- * Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * Configuration settings for the MX51EVK Board
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Board Configuration Options
- */
-/* An i.MX51 CPU */
-#define CONFIG_MX51
-
-#define        machine_is_efikamx()    (CONFIG_MACH_TYPE == MACH_TYPE_MX51_EFIKAMX)
-#define        machine_is_efikasb()    (CONFIG_MACH_TYPE == MACH_TYPE_MX51_EFIKASB)
-
-#include <asm/arch/imx-regs.h>
-
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-
-#define CONFIG_SYS_TEXT_BASE           0x97800000
-
-#define        CONFIG_SYS_ICACHE_OFF
-#define        CONFIG_SYS_DCACHE_OFF
-
-/*
- * Bootloader Components Configuration
- */
-#define CONFIG_CMD_SPI
-#define CONFIG_CMD_SF
-#define CONFIG_CMD_MMC
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_DATE
-
-/*
- * Environmental settings
- */
-
-#define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
-#define CONFIG_ENV_SECT_SIZE           (1 * 64 * 1024)
-#define CONFIG_ENV_SIZE                        (4 * 1024)
-
-/*
- * ATAG setup
- */
-#define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs */
-#define CONFIG_REVISION_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-
-#define CONFIG_OF_LIBFDT               1
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 2 * 1024 * 1024)
-
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT
-
-/*
- * Hardware drivers
- */
-#define CONFIG_MXC_UART
-#define CONFIG_MXC_UART_BASE           UART1_BASE
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_BAUDRATE                        115200
-
-#define CONFIG_MXC_GPIO
-
-/*
- * SPI Interface
- */
-#ifdef CONFIG_CMD_SPI
-
-#define CONFIG_HARD_SPI
-#define CONFIG_MXC_SPI
-#define CONFIG_DEFAULT_SPI_BUS         1
-#define CONFIG_DEFAULT_SPI_MODE                (SPI_MODE_0 | SPI_CS_HIGH)
-
-/* SPI FLASH */
-#ifdef CONFIG_CMD_SF
-
-#define CONFIG_SPI_FLASH_SST
-#define CONFIG_SF_DEFAULT_CS           1
-#define CONFIG_SF_DEFAULT_MODE         (SPI_MODE_0)
-#define CONFIG_SF_DEFAULT_SPEED                25000000
-
-#define CONFIG_ENV_SPI_CS              CONFIG_SF_DEFAULT_CS
-#define CONFIG_ENV_SPI_BUS             0
-#define CONFIG_ENV_SPI_MAX_HZ          25000000
-#define CONFIG_ENV_SPI_MODE            (SPI_MODE_0)
-#define CONFIG_FSL_ENV_IN_SF
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_SYS_NO_FLASH
-
-#else
-#define CONFIG_ENV_IS_NOWHERE
-#endif
-
-/* SPI PMIC */
-#define CONFIG_POWER
-#define CONFIG_POWER_SPI
-#define CONFIG_POWER_FSL
-#define CONFIG_FSL_PMIC_BUS            0
-#define CONFIG_FSL_PMIC_CS             (0 | 120 << 8)
-#define CONFIG_FSL_PMIC_CLK            25000000
-#define CONFIG_FSL_PMIC_MODE           (SPI_MODE_0 | SPI_CS_HIGH)
-#define CONFIG_FSL_PMIC_BITLEN 32
-#define CONFIG_RTC_MC13XXX
-#endif
-
-/*
- * MMC Configs
- */
-#ifdef CONFIG_CMD_MMC
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_FSL_ESDHC
-#define CONFIG_SYS_FSL_ESDHC_ADDR      0
-#define CONFIG_SYS_FSL_ESDHC_NUM       2
-#endif
-
-/*
- * ATA/IDE
- */
-#ifdef CONFIG_CMD_IDE
-#define CONFIG_LBA48
-#undef CONFIG_IDE_LED
-#undef CONFIG_IDE_RESET
-
-#define CONFIG_MX51_PATA
-
-#define __io
-
-#define CONFIG_SYS_IDE_MAXBUS          1
-#define CONFIG_SYS_IDE_MAXDEVICE       1
-
-#define CONFIG_SYS_ATA_BASE_ADDR       0x83fe0000
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0
-
-#define CONFIG_SYS_ATA_DATA_OFFSET     0xa0
-#define CONFIG_SYS_ATA_REG_OFFSET      0xa0
-#define CONFIG_SYS_ATA_ALT_OFFSET      0xd8
-
-#define CONFIG_SYS_ATA_STRIDE          4
-
-#define CONFIG_IDE_PREINIT
-#define CONFIG_MXC_ATA_PIO_MODE                4
-#endif
-
-/*
- * USB
- */
-#define        CONFIG_CMD_USB
-#ifdef CONFIG_CMD_USB
-#define        CONFIG_USB_EHCI                 /* Enable EHCI USB support */
-#define        CONFIG_USB_EHCI_MX5
-#define        CONFIG_USB_ULPI
-#define        CONFIG_USB_ULPI_VIEWPORT
-#define        CONFIG_MXC_USB_PORT     1
-#if    (CONFIG_MXC_USB_PORT == 0)
-#define        CONFIG_MXC_USB_PORTSC   (1 << 28)
-#define        CONFIG_MXC_USB_FLAGS    MXC_EHCI_INTERNAL_PHY
-#else
-#define        CONFIG_MXC_USB_PORTSC   (2 << 30)
-#define        CONFIG_MXC_USB_FLAGS    0
-#endif
-#define        CONFIG_EHCI_IS_TDI
-#define        CONFIG_USB_STORAGE
-#define        CONFIG_USB_HOST_ETHER
-#define        CONFIG_USB_KEYBOARD
-#define        CONFIG_SYS_USB_EVENT_POLL_VIA_CONTROL_EP
-#define CONFIG_PREBOOT
-/* USB NET */
-#ifdef CONFIG_CMD_NET
-#define        CONFIG_USB_ETHER_ASIX
-#define        CONFIG_CMD_PING
-#define        CONFIG_CMD_DHCP
-#endif
-#endif /* CONFIG_CMD_USB */
-
-/*
- * Filesystems
- */
-#ifdef CONFIG_CMD_FAT
-#define CONFIG_DOS_PARTITION
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_BOOTDELAY               3
-#define CONFIG_LOADADDR                        0x90800000
-
-#define CONFIG_SYS_LONGHELP            /* undef to save memory */
-#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
-#define CONFIG_AUTO_COMPLETE
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args */
-#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size */
-
-#define CONFIG_SYS_MEMTEST_START       0x90000000
-#define CONFIG_SYS_MEMTEST_END         0x90010000
-
-#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
-
-#define CONFIG_CMDLINE_EDITING
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS           1
-#define PHYS_SDRAM_1                   CSD0_BASE_ADDR
-#define PHYS_SDRAM_1_SIZE              (512 * 1024 * 1024)
-
-#define CONFIG_SYS_SDRAM_BASE          (PHYS_SDRAM_1)
-#define CONFIG_SYS_INIT_RAM_ADDR       (IRAM_BASE_ADDR)
-#define CONFIG_SYS_INIT_RAM_SIZE       (IRAM_SIZE)
-
-#define CONFIG_SYS_INIT_SP_OFFSET \
-       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR \
-       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
-
-#define CONFIG_SYS_DDR_CLKSEL          0
-#define CONFIG_SYS_CLKTL_CBCDR         0x59E35145
-#define CONFIG_SYS_MAIN_PWR_ON
-
-#endif
index 634a09f34928fd8e7e33233a223b9d139f484ec5..6e89dd1455f7ff1353ecce244937b53fc6210447 100644 (file)
@@ -14,7 +14,7 @@
 #define CONFIG_SPL_MMC_SUPPORT
 #include "imx6_spl.h"
 
-#define CONFIG_IMX6_THERMAL
+#define CONFIG_IMX_THERMAL
 
 #define CONFIG_SYS_MALLOC_LEN          (10 * SZ_1M)
 #define CONFIG_BOARD_EARLY_INIT_F
index 6a57841f5fe02a803e5a7412767297d558562906..98eb0427aa5c5e3ebcfb86c2a6814c58f72893ce 100644 (file)
@@ -11,7 +11,7 @@
 
 #include "mx6_common.h"
 
-#define CONFIG_IMX6_THERMAL
+#define CONFIG_IMX_THERMAL
 
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN          (10 * SZ_1M)
index 3cecd94039dac5b473e9a22361c865c91c2936bc..51b297a1a3553bb51aaf09de8b2b36d763e77ef0 100644 (file)
 
 #include "mx6_common.h"
 
+#ifdef CONFIG_SPL
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+#include "imx6_spl.h"
+#endif
+
 #define MACH_TYPE_MX6SLEVK             4307
 #define CONFIG_MACH_TYPE               MACH_TYPE_MX6SLEVK
 
 #define CONFIG_SYS_MMC_ENV_DEV         1       /* SDHC2*/
 #endif
 
-#define CONFIG_IMX6_THERMAL
+#define CONFIG_IMX_THERMAL
 
 #endif                         /* __CONFIG_H */
index 848bdcd674cd7cd5df0dcccdb844a6375e7c206b..381eaa24d5395a4d7c152d4fd7fb5ff4d30acfea 100644 (file)
 #define CONFIG_PCIE_IMX_POWER_GPIO     IMX_GPIO_NR(2, 1)
 #endif
 
-#define CONFIG_IMX6_THERMAL
+#define CONFIG_IMX_THERMAL
 
 #define CONFIG_CMD_TIME
 
index 6ae736f15492f50f3c303bf4dc95048abc5f1daf..465ddee8817ee4b2a0e35fd6e042e13c32f0d6a9 100644 (file)
 #include "mx6_common.h"
 #include <asm/imx-common/gpio.h>
 
+#define is_mx6ul_9x9_evk()     CONFIG_IS_ENABLED(TARGET_MX6UL_9X9_EVK)
+
 /* SPL options */
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
 #define CONFIG_SPL_MMC_SUPPORT
-#define CONFIG_SPL_FAT_SUPPORT
 #include "imx6_spl.h"
 
-#define CONFIG_MX6
-#define CONFIG_ROM_UNIFIED_SECTIONS
-#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
 #define CONFIG_MXC_UART
 #define CONFIG_MXC_UART_BASE           UART1_BASE
 
-#define CONFIG_CMD_FUSE
-#ifdef CONFIG_CMD_FUSE
-#define CONFIG_MXC_OCOTP
-#endif
-
 /* MMC Configs */
 #ifdef CONFIG_FSL_USDHC
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC2_BASE_ADDR
 #define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
 #endif
 
-#undef CONFIG_BOOTM_NETBSD
-#undef CONFIG_BOOTM_PLAN9
-#undef CONFIG_BOOTM_RTEMS
-
-#undef CONFIG_CMD_EXPORTENV
-#undef CONFIG_CMD_IMPORTENV
-
 /* I2C configs */
 #define CONFIG_CMD_I2C
 #ifdef CONFIG_CMD_I2C
 #define CONFIG_SYS_I2C
 #define CONFIG_SYS_I2C_MXC
 #define CONFIG_SYS_I2C_SPEED           100000
-#endif
-
-#define PHYS_SDRAM_SIZE                        SZ_512M
 
-#undef CONFIG_CMD_IMLS
+/* PMIC only for 9X9 EVK */
+#define CONFIG_POWER
+#define CONFIG_POWER_I2C
+#define CONFIG_POWER_PFUZE3000
+#define CONFIG_POWER_PFUZE3000_I2C_ADDR  0x08
+#endif
 
 #define CONFIG_SYS_MMC_IMG_LOAD_PART   1
 
@@ -81,7 +71,7 @@
        "console=ttymxc0\0" \
        "fdt_high=0xffffffff\0" \
        "initrd_high=0xffffffff\0" \
-       "fdt_file=imx6ul-14x14-evk.dtb\0" \
+       "fdt_file=undefined\0" \
        "fdt_addr=0x83000000\0" \
        "boot_fdt=try\0" \
        "ip_dyn=yes\0" \
                        "fi; " \
                "else " \
                        "bootz; " \
-               "fi;\0"
+               "fi;\0" \
+               "findfdt="\
+                       "if test $fdt_file = undefined; then " \
+                               "if test $board_name = EVK && test $board_rev = 9X9; then " \
+                                       "setenv fdt_file imx6ul-9x9-evk.dtb; fi; " \
+                               "if test $board_name = EVK && test $board_rev = 14X14; then " \
+                                       "setenv fdt_file imx6ul-14x14-evk.dtb; fi; " \
+                               "if test $fdt_file = undefined; then " \
+                                       "echo WARNING: Could not determine dtb to use; fi; " \
+                       "fi;\0" \
 
 #define CONFIG_BOOTCOMMAND \
+          "run findfdt;" \
           "mmc dev ${mmcdev};" \
           "mmc dev ${mmcdev}; if mmc rescan; then " \
                   "if run loadbootscript; then " \
           "else run netboot; fi"
 
 /* Miscellaneous configurable options */
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-
 #define CONFIG_CMD_MEMTEST
 #define CONFIG_SYS_MEMTEST_START       0x80000000
 #define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + 0x10000000)
 #define CONFIG_USB_MAX_CONTROLLER_COUNT 2
 #endif
 
-#define CONFIG_IMX6_THERMAL
+#ifdef CONFIG_CMD_NET
+#define CONFIG_FEC_MXC
+#define CONFIG_MII
+#define CONFIG_FEC_ENET_DEV            1
+
+#if (CONFIG_FEC_ENET_DEV == 0)
+#define IMX_FEC_BASE                   ENET_BASE_ADDR
+#define CONFIG_FEC_MXC_PHYADDR          0x2
+#define CONFIG_FEC_XCV_TYPE             RMII
+#elif (CONFIG_FEC_ENET_DEV == 1)
+#define IMX_FEC_BASE                   ENET2_BASE_ADDR
+#define CONFIG_FEC_MXC_PHYADDR         0x1
+#define CONFIG_FEC_XCV_TYPE            RMII
+#endif
+#define CONFIG_ETHPRIME                        "FEC"
+
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_MICREL
+#endif
+
+#define CONFIG_IMX_THERMAL
 
 #endif
diff --git a/include/configs/mx7_common.h b/include/configs/mx7_common.h
new file mode 100644 (file)
index 0000000..ea2be49
--- /dev/null
@@ -0,0 +1,95 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * Configuration settings for the Freescale i.MX7.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __MX7_COMMON_H
+#define __MX7_COMMON_H
+
+#include <linux/sizes.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/imx-common/gpio.h>
+
+#ifndef CONFIG_MX7
+#define CONFIG_MX7
+#endif
+
+/* Timer settings */
+#define CONFIG_MXC_GPT_HCLK
+#define CONFIG_SYSCOUNTER_TIMER
+#define CONFIG_SC_TIMER_CLK 8000000 /* 8Mhz */
+
+/* Enable iomux-lpsr support */
+#define CONFIG_IOMUX_LPSR
+#define CONFIG_IMX_FIXED_IVT_OFFSET
+
+/* Size of malloc() pool */
+#define CONFIG_SYS_MALLOC_LEN           (32 * SZ_1M)
+
+#define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_LATE_INIT
+
+#define CONFIG_ROM_UNIFIED_SECTIONS
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+
+#define CONFIG_LOADADDR                 0x80800000
+#define CONFIG_SYS_TEXT_BASE            0x87800000
+
+#ifndef CONFIG_BOOTDELAY
+#define CONFIG_BOOTDELAY                3
+#endif
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE
+#define CONFIG_CONS_INDEX               1
+#define CONFIG_BAUDRATE                 115200
+
+/* Filesystems and image support */
+#define CONFIG_OF_LIBFDT
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_EXT4_WRITE
+#define CONFIG_CMD_FAT
+
+/* Miscellaneous configurable options */
+#undef CONFIG_CMD_IMLS
+#define CONFIG_SYS_LONGHELP
+#define CONFIG_SYS_HUSH_PARSER
+#define CONFIG_CMDLINE_EDITING
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_CBSIZE              512
+#define CONFIG_SYS_MAXARGS             32
+#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE
+
+#ifndef CONFIG_SYS_DCACHE_OFF
+#define CONFIG_CMD_CACHE
+#endif
+
+/* GPIO */
+#define CONFIG_MXC_GPIO
+#define CONFIG_CMD_GPIO
+
+/* UART */
+#define CONFIG_MXC_UART
+#define CONFIG_MXC_UART_BASE            UART1_IPS_BASE_ADDR
+
+/* MMC */
+#define CONFIG_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_BOUNCE_BUFFER
+#define CONFIG_FSL_ESDHC
+#define CONFIG_FSL_USDHC
+
+/* Fuses */
+#define CONFIG_CMD_FUSE
+#define CONFIG_MXC_OCOTP
+
+#endif
diff --git a/include/configs/mx7dsabresd.h b/include/configs/mx7dsabresd.h
new file mode 100644 (file)
index 0000000..ec6e0a6
--- /dev/null
@@ -0,0 +1,194 @@
+/*
+ * Copyright (C) 2015 Freescale Semiconductor, Inc.
+ *
+ * Configuration settings for the Freescale i.MX7D SABRESD board.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __MX7D_SABRESD_CONFIG_H
+#define __MX7D_SABRESD_CONFIG_H
+
+#include "mx7_common.h"
+
+#define CONFIG_DBG_MONITOR
+#define PHYS_SDRAM_SIZE                        SZ_1G
+
+/* Network */
+#define CONFIG_CMD_MII
+#define CONFIG_FEC_MXC
+#define CONFIG_MII
+#define CONFIG_FEC_XCV_TYPE             RGMII
+#define CONFIG_ETHPRIME                 "FEC"
+#define CONFIG_FEC_MXC_PHYADDR          0
+
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_BROADCOM
+#define CONFIG_FEC_DMA_MINALIGN                64
+/* ENET1 */
+#define IMX_FEC_BASE                   ENET_IPS_BASE_ADDR
+
+/* MMC Config*/
+#define CONFIG_SYS_FSL_ESDHC_ADDR       0
+
+/* PMIC */
+#define CONFIG_POWER
+#define CONFIG_POWER_I2C
+#define CONFIG_POWER_PFUZE3000
+#define CONFIG_POWER_PFUZE3000_I2C_ADDR        0x08
+
+#undef CONFIG_BOOTM_NETBSD
+#undef CONFIG_BOOTM_PLAN9
+#undef CONFIG_BOOTM_RTEMS
+
+#undef CONFIG_CMD_EXPORTENV
+#undef CONFIG_CMD_IMPORTENV
+
+/* I2C configs */
+#define CONFIG_CMD_I2C
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MXC
+#define CONFIG_SYS_I2C_MXC_I2C1
+#define CONFIG_SYS_I2C_SPEED           100000
+
+#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
+#define CONFIG_SYS_MMC_IMG_LOAD_PART   1
+
+#define CONFIG_MFG_ENV_SETTINGS \
+       "mfgtool_args=setenv bootargs console=${console},${baudrate} " \
+               "rdinit=/linuxrc " \
+               "g_mass_storage.stall=0 g_mass_storage.removable=1 " \
+               "g_mass_storage.idVendor=0x066F g_mass_storage.idProduct=0x37FF "\
+               "g_mass_storage.iSerialNumber=\"\" "\
+               "clk_ignore_unused "\
+               "\0" \
+       "initrd_addr=0x83800000\0" \
+       "initrd_high=0xffffffff\0" \
+       "bootcmd_mfg=run mfgtool_args;bootz ${loadaddr} ${initrd_addr} ${fdt_addr};\0" \
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       CONFIG_MFG_ENV_SETTINGS \
+       "script=boot.scr\0" \
+       "image=zImage\0" \
+       "console=ttymxc0\0" \
+       "fdt_high=0xffffffff\0" \
+       "initrd_high=0xffffffff\0" \
+       "fdt_file=imx7d-sdb.dtb\0" \
+       "fdt_addr=0x83000000\0" \
+       "boot_fdt=try\0" \
+       "ip_dyn=yes\0" \
+       "mmcdev="__stringify(CONFIG_SYS_MMC_ENV_DEV)"\0" \
+       "mmcpart=" __stringify(CONFIG_SYS_MMC_IMG_LOAD_PART) "\0" \
+       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
+       "mmcautodetect=yes\0" \
+       "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};" \
+          "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_CMD_MEMTEST
+#define CONFIG_SYS_MEMTEST_START       0x80000000
+#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_MEMTEST_START + 0x20000000)
+
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
+#define CONFIG_SYS_HZ                  1000
+
+#define CONFIG_STACKSIZE               SZ_128K
+
+/* 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                        SZ_8K
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_ENV_OFFSET              (8 * SZ_64K)
+#define CONFIG_SYS_FSL_USDHC_NUM       2
+
+#define CONFIG_SYS_MMC_ENV_DEV         0   /* USDHC1 */
+#define CONFIG_SYS_MMC_ENV_PART                0       /* user area */
+#define CONFIG_MMCROOT                 "/dev/mmcblk0p2"  /* USDHC1 */
+
+#define CONFIG_CMD_BMODE
+
+/* USB Configs */
+#define CONFIG_CMD_USB
+#define CONFIG_USB_EHCI
+#define CONFIG_USB_EHCI_MX7
+#define CONFIG_USB_STORAGE
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS   0
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+
+#define CONFIG_IMX_THERMAL
+
+#endif /* __CONFIG_H */
diff --git a/include/configs/nhk8815.h b/include/configs/nhk8815.h
deleted file mode 100644 (file)
index dd70adc..0000000
+++ /dev/null
@@ -1,170 +0,0 @@
-/*
- * (C) Copyright 2005
- * STMicroelectronics.
- * Configuration settings for the "Nomadik Hardware Kit" NHK-8815,
- * the evaluation board for the Nomadik 8815 System on Chip.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#include <nomadik.h>
-
-#define CONFIG_NOMADIK_8815    /* cpu variant */
-
-#define CONFIG_SKIP_LOWLEVEL_INIT /* we have already been loaded to RAM */
-
-/* commands */
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_SYS_NO_FLASH
-/* There is NAND storage */
-#define CONFIG_NAND_NOMADIK
-#define CONFIG_CMD_JFFS2
-
-/* user interface */
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE \
-                                       + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE /* Boot Arg Buffer Size */
-#define CONFIG_SYS_MAXARGS     16
-#define CONFIG_SYS_LOAD_ADDR   0x800000        /* default load address */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE
-
-/* boot config */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_BOOTDELAY       1
-#define CONFIG_BOOTARGS        "root=/dev/ram0 console=ttyAMA1,115200n8 init=linuxrc"
-#define CONFIG_BOOTCOMMAND     "fsload 0x100000 kernel.uimg;" \
-                               " fsload 0x800000 initrd.gz.uimg;" \
-                               " bootm 0x100000 0x800000"
-
-/* memory-related information */
-#define CONFIG_NR_DRAM_BANKS   2
-#define PHYS_SDRAM_1           0x00000000      /* DDR-SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE      0x04000000      /* 64 MB */
-#define PHYS_SDRAM_2           0x08000000      /* SDR-SDRAM BANK #2*/
-#define PHYS_SDRAM_2_SIZE      0x04000000      /* 64 MB */
-#define CONFIG_SYS_SDRAM_BASE  PHYS_SDRAM_1
-#define CONFIG_SYS_SDRAM_SIZE  (PHYS_SDRAM_1_SIZE + PHYS_SDRAM_2_SIZE)
-/* The IPL loads us at 0, tell so to u-boot. Put stack pointer 1M into RAM */
-#define CONFIG_SYS_TEXT_BASE    0x00000000
-#define CONFIG_SYS_INIT_SP_ADDR (CONFIG_SYS_TEXT_BASE + (1<<20))
-
-#define CONFIG_SYS_MEMTEST_START       0x00000000
-#define CONFIG_SYS_MEMTEST_END         0x0FFFFFFF
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 256 * 1024)
-
-#define CONFIG_BOARD_LATE_INIT /* call board_late_init during start up */
-
-/* timing informazion */
-#define CONFIG_SYS_TIMERBASE   0x101E2000
-
-/* serial port (PL011) configuration */
-#define CONFIG_PL011_SERIAL
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                115200
-#define CFG_SERIAL0            0x101FD000
-#define CFG_SERIAL1            0x101FB000
-
-#define CONFIG_PL01x_PORTS     { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1 }
-#define CONFIG_PL011_CLOCK     48000000
-
-/* i2c, for the port extenders (uses gpio.c in board directory) */
-#ifndef __ASSEMBLY__
-#include <asm/arch/gpio.h>
-#define CONFIG_CMD_I2C
-#define CONFIG_SYS_I2C
-#define        CONFIG_SYS_I2C_SOFT     1       /* I2C bit-banged       */
-#define I2C_SOFT_DEFS
-#define CONFIG_SYS_I2C_SOFT_SPEED      400000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0x7F
-#define __SDA                  63
-#define __SCL                  62
-#define I2C_SDA(x)             nmk_gpio_set(__SDA, x)
-#define I2C_SCL(x)             nmk_gpio_set(__SCL, x)
-#define I2C_READ               (nmk_gpio_get(__SDA)!=0)
-#define I2C_ACTIVE             nmk_gpio_dir(__SDA, 1)
-#define I2C_TRISTATE           nmk_gpio_dir(__SDA, 0)
-#define I2C_DELAY     (udelay(2))
-#endif /* __ASSEMBLY__ */
-
-/* Ethernet */
-#define PCI_MEMORY_VADDR       0xe8000000
-#define PCI_IO_VADDR           0xee000000
-#define __io(a)                        ((void __iomem *)(PCI_IO_VADDR + (a)))
-#define __mem_isa(a)           ((a) + PCI_MEMORY_VADDR)
-
-#define CONFIG_SMC91111        /* Using SMC91c111*/
-#define CONFIG_SMC91111_BASE   0x34000300
-#undef  CONFIG_SMC91111_EXT_PHY        /* Internal PHY */
-#define CONFIG_SMC_USE_32_BIT
-#define CONFIG_BOOTFILE                "uImage"
-
-#define CONFIG_IP_DEFRAG       /* Allows faster download, TFTP and NFS */
-#define CONFIG_TFTP_BLOCKSIZE  4096
-#define CONFIG_NFS_READ_SIZE   4096
-
-/* Storage information: onenand and nand */
-#define CONFIG_CMD_ONENAND
-#define CONFIG_MTD_ONENAND_VERIFY_WRITE
-#define CONFIG_SYS_ONENAND_BASE                0x30000000
-
-#define CONFIG_CMD_NAND
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE           0x40000000 /* SMPS0n */
-
-/*
- * Filesystem information
- *
- * Since U-Boot has been loaded to RAM by vendor code, we could use
- * either or both OneNand and Nand. However, we need to know where the
- * filesystem lives. Comments below report vendor-selected partitions
- */
-#ifdef CONFIG_BOOT_ONENAND
-   /* Partition                                Size    Start
-    * XloaderTOC + X-Loader            256KB   0x00000000
-    * Memory init function             256KB   0x00040000
-    * U-Boot + env                     2MB     0x00080000
-    * Sysimage (kernel + ramdisk)      4MB     0x00280000
-    * JFFS2 Root filesystem            22MB    0x00680000
-    * JFFS2 User Data                  227.5MB 0x01C80000
-    */
-#   define CONFIG_JFFS2_DEV            "onenand0"
-#   define CONFIG_JFFS2_PART_SIZE      0x01600000
-#   define CONFIG_JFFS2_PART_OFFSET    0x00680000
-#   define CONFIG_ENV_IS_IN_ONENAND
-#   define CONFIG_ENV_SIZE             0x20000 /* 128 Kb - one sector */
-#   define CONFIG_ENV_ADDR             (0x00280000 - CONFIG_ENV_SIZE)
-
-#else /*  BOOT_NAND */
-   /* Partition                                Size    Start
-    * XloaderTOC + X-Loader            256KB   0x00000000
-    * Memory init function             256KB   0x00040000
-    * U-Boot + env                     2MB     0x00080000
-    * Kernel Image                     3MB     0x00280000
-    * JFFS2 Root filesystem            22MB    0x00580000
-    * JFFS2 User Data                  100.5MB 0x01b80000
-    */
-#   define CONFIG_JFFS2_DEV            "nand0"
-#   define CONFIG_JFFS2_NAND           1 /* For the jffs2 support*/
-#   define CONFIG_JFFS2_PART_SIZE      0x01600000
-#   define CONFIG_JFFS2_PART_OFFSET    0x00580000
-#   define CONFIG_ENV_IS_IN_NAND
-#   define CONFIG_ENV_SIZE             0x20000 /* 128 Kb - one sector */
-#   define CONFIG_ENV_OFFSET           (0x00280000 - CONFIG_ENV_SIZE)
-
-#endif /* CONFIG_BOOT_ONENAND */
-
-/* this is needed to make hello_world.c and other stuff happy */
-#define CONFIG_SYS_MAX_FLASH_SECT      512
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-
-#endif /* __CONFIG_H */
index 04433edcc543c6fba908294bcfcb2d3e27e4df40..4409103f4912c5b08b5e4e715f8084bd00eba5ad 100644 (file)
@@ -19,6 +19,8 @@
 #include <configs/ti_omap3_common.h>
 #include <asm/mach-types.h>
 
+#undef CONFIG_BOOTDELAY
+
 /*
  * Display CPU and Board information
  */
 
 /*#undef CONFIG_ENV_IS_NOWHERE*/
 
+#ifndef CONFIG_SPL_BUILD
+
+#include <config_distro_defaults.h>
+
+/* Environment */
+#define ENV_DEVICE_SETTINGS \
+       "stdin=serial\0" \
+       "stdout=serial\0" \
+       "stderr=serial\0"
+
+#define MEM_LAYOUT_SETTINGS \
+       DEFAULT_LINUX_BOOT_ENV \
+       "scriptaddr=0x87E00000\0" \
+       "pxefile_addr_r=0x87F00000\0"
+
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0)
+
+#include <config_distro_bootcmd.h>
+
+
 #define CONFIG_EXTRA_ENV_SETTINGS \
-       "usbtty=cdc_acm\0" \
-       "loadaddr=0x82000000\0" \
-       "dtbaddr=0x81600000\0" \
-       "bootdir=/boot\0" \
-       "bootfile=zImage\0" \
-       "usbtty=cdc_acm\0" \
-       "console=ttyO2,115200n8\0" \
-       "mpurate=auto\0" \
-       "vram=12M\0" \
-       "dvimode=1024x768MR-16@60\0" \
-       "defaultdisplay=dvi\0" \
-       "mmcdev=0\0" \
-       "mmcroot=/dev/mmcblk0p2 rw\0" \
-       "mmcrootfstype=ext4 rootwait\0" \
-       "nandroot=/dev/mtdblock4 rw\0" \
-       "nandrootfstype=jffs2\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "mpurate=${mpurate} " \
-               "vram=${vram} " \
-               "omapfb.mode=dvi:${dvimode} " \
-               "omapfb.debug=y " \
-               "omapdss.def_disp=${defaultdisplay} " \
-               "root=${mmcroot} " \
-               "rootfstype=${mmcrootfstype}\0" \
-       "nandargs=setenv bootargs console=${console} " \
-               "mpurate=${mpurate} " \
-               "vram=${vram} " \
-               "omapfb.mode=dvi:${dvimode} " \
-               "omapfb.debug=y " \
-               "omapdss.def_disp=${defaultdisplay} " \
-               "root=${nandroot} " \
-               "rootfstype=${nandrootfstype}\0" \
-       "loadbootenv=load mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \
-       "importbootenv=echo Importing environment from mmc ...; " \
-               "env import -t $loadaddr $filesize\0" \
-       "loadzimage=load mmc ${mmcdev}:2 ${loadaddr} ${bootdir}/${bootfile}\0" \
-       "loadfdt=load mmc ${mmcdev}:2 ${dtbaddr} ${bootdir}/${dtbfile}\0" \
-       "mmcboot=echo Booting from mmc ...; " \
-               "run mmcargs; " \
-               "bootz ${loadaddr}\0" \
-       "mmcbootfdt=echo Booting with DT from mmc ...; " \
-               "bootz ${loadaddr} - ${dtbaddr}\0" \
-       "nandboot=echo Booting from onenand ...; " \
-               "run nandargs; " \
-               "onenand read ${loadaddr} 280000 400000; " \
-               "bootz ${loadaddr}\0" \
-
-#define CONFIG_BOOTCOMMAND \
-       "mmc dev ${mmcdev}; if mmc rescan; then " \
-               "echo SD/MMC found on device ${mmcdev};" \
-               "if run loadbootenv; then " \
-                       "run importbootenv;" \
-               "fi;" \
-               "if test -n $uenvcmd; then " \
-                       "echo Running uenvcmd ...;" \
-                       "run uenvcmd;" \
-               "fi;" \
-               "if run loadzimage; then " \
-                       "if test -n $dtbfile; then " \
-                               "if run loadfdt; then " \
-                                       "run mmcbootfdt;" \
-                               "fi;" \
-                       "fi;" \
-                       "run mmcboot;" \
-               "fi;" \
-       "fi;" \
-       "run nandboot;" \
+       ENV_DEVICE_SETTINGS \
+       MEM_LAYOUT_SETTINGS \
+       BOOTENV
+
+#endif
 
 /*
  * FLASH and environment organization
index e09e617f73aedb8281b910ce766340cc77199017..8bd36340e7b32e7ab6705c3b5547e9603014b166 100644 (file)
 /*
  * High Level Configuration Options
  */
-#define CONFIG_OMAP                    /* in a TI OMAP core */
-#define CONFIG_OMAP3_LOGIC             /* working with Logic OMAP boards */
-#define CONFIG_OMAP_GPIO
-#define CONFIG_OMAP_COMMON
-/* Common ARM Erratas */
-#define CONFIG_ARM_ERRATA_454179
-#define CONFIG_ARM_ERRATA_430973
-#define CONFIG_ARM_ERRATA_621766
 
+#define CONFIG_NR_DRAM_BANKS   2       /* CS1 may or may not be populated */
 #define CONFIG_SYS_TEXT_BASE   0x80400000
 
-#define CONFIG_SDRC    /* The chip has SDRC controller */
-
-#include <asm/arch/cpu.h>      /* get chip and board defs */
-#include <asm/arch/omap.h>
-
+#include <configs/ti_omap3_common.h>
+#define CONFIG_OMAP3_LOGIC             /* working with Logic OMAP boards */
 /*
  * Display CPU and Board information
  */
+
 #define CONFIG_DISPLAY_CPUINFO
 #define CONFIG_DISPLAY_BOARDINFO
 
  */
 #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
-
 /*
  * select serial console configuration
  */
+#undef CONFIG_CONS_INDEX
 #define CONFIG_CONS_INDEX              1
 #define CONFIG_SYS_NS16550_COM1                OMAP34XX_UART1
 #define CONFIG_SERIAL1                 1       /* UART1 on OMAP Logic boards */
@@ -92,7 +72,6 @@
 #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_MTDPARTS    /* Enable MTD parts commands */
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
 #define MTDIDS_DEFAULT                 "nand0=omap2-nand.0"
 /*
  * TWL4030
  */
-#define CONFIG_TWL4030_POWER
+
 
 /*
  * Board NAND Info.
  */
+#define CONFIG_SYS_NAND_BASE            NAND_BASE
 #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_SYS_NAND_BUSWIDTH_16BIT
-#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               2
 
 /*
  * PREBOOT assumes the 4.3" display is attached.  User can interrupt
 /* 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).
 #define CONFIG_SYS_ENV_SECT_SIZE       (128 << 10)     /* 128 KiB */
 #define CONFIG_ENV_ADDR                        CONFIG_ENV_OFFSET
 
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
 #define CONFIG_SYS_INIT_RAM_ADDR       0x4020f800
 #define CONFIG_SYS_INIT_RAM_SIZE       0x800
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_INIT_RAM_ADDR + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
 
 /*
  * SMSC922x Ethernet
diff --git a/include/configs/omap3_mvblx.h b/include/configs/omap3_mvblx.h
deleted file mode 100644 (file)
index 9e2cf73..0000000
+++ /dev/null
@@ -1,277 +0,0 @@
-/*
- * MATRIX VISION GmbH mvBlueLYNX-X
- *
- * Derived from omap3_beagle.h:
- * (C) Copyright 2006-2008
- * Texas Instruments.
- * Richard Woodruff <r-woodruff2@ti.com>
- * Syed Mohammed Khasim <x0khasim@ti.com>
- *
- * Configuration settings for the TI OMAP3530 Beagle board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- */
-#define CONFIG_OMAP            1       /* in a TI OMAP core */
-#define CONFIG_MVBLX           1       /* working with mvBlueLYNX-X */
-#define CONFIG_MACH_TYPE       MACH_TYPE_MVBLX
-#define CONFIG_OMAP_GPIO
-#define CONFIG_OMAP_COMMON
-/* Common ARM Erratas */
-#define CONFIG_ARM_ERRATA_454179
-#define CONFIG_ARM_ERRATA_430973
-#define CONFIG_ARM_ERRATA_621766
-
-#define CONFIG_SDRC    /* The chip has SDRC controller */
-
-#include <asm/arch/cpu.h>              /* get chip and board defs */
-#include <asm/arch/omap.h>
-
-/*
- * Display CPU and Board information
- */
-#define CONFIG_DISPLAY_CPUINFO         1
-#define CONFIG_DISPLAY_BOARDINFO       1
-
-/* Clock Defines */
-#define V_OSCK                 26000000        /* Clock output from T2 */
-#define V_SCLK                 (V_OSCK >> 1)
-
-#define CONFIG_MISC_INIT_R
-
-#define CONFIG_OF_LIBFDT               1
-
-#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS       1
-#define CONFIG_INITRD_TAG              1
-#define CONFIG_REVISION_TAG            1
-#define CONFIG_SERIAL_TAG              1
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_ENV_SIZE                        (2 << 10)       /* 2 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
-
-/*
- * select serial console configuration
- */
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_SYS_NS16550_COM1                OMAP34XX_UART1
-#define CONFIG_SERIAL1                 1       /* UART1 */
-
-#define CONFIG_BAUDRATE                        115200
-#define CONFIG_SYS_BAUDRATE_TABLE      {4800, 9600, 19200, 38400, 57600,\
-                                       115200}
-#define CONFIG_GENERIC_MMC             1
-#define CONFIG_MMC                     1
-#define CONFIG_OMAP_HSMMC              1
-#define CONFIG_DOS_PARTITION           1
-
-/* silent console by default */
-#define CONFIG_SYS_DEVICE_NULLDEV      1
-#define CONFIG_SILENT_CONSOLE          1
-
-/* USB */
-#define CONFIG_USB_MUSB_UDC                    1
-#define CONFIG_USB_OMAP3               1
-#define CONFIG_TWL4030_USB             1
-
-/* USB device configuration */
-#define CONFIG_USB_DEVICE              1
-#define CONFIG_USB_TTY                 1
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV   1
-#define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE 1
-#define CONFIG_SYS_CONSOLE_ENV_OVERWRITE 1
-#define CONFIG_USBD_VENDORID                   0x164c
-#define CONFIG_USBD_PRODUCTID_GSERIAL  0x0201
-#define CONFIG_USBD_PRODUCTID_CDCACM   0x0201
-#define CONFIG_USBD_MANUFACTURER               "MATRIX VISION GmbH"
-#define CONFIG_USBD_PRODUCT_NAME               "mvBlueLYNX-X"
-
-/* no FLASH available */
-#define CONFIG_SYS_NO_FLASH
-
-/* commands to include */
-#define CONFIG_CMD_CACHE
-#define CONFIG_CMD_EXT2                /* EXT2 Support                 */
-#define CONFIG_CMD_FAT         /* FAT support                  */
-#define CONFIG_CMD_I2C         /* I2C serial bus support       */
-#define CONFIG_CMD_MMC         /* MMC support                  */
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_FPGA_LOADMK
-
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_OMAP24_I2C_SPEED    100000
-#define CONFIG_SYS_OMAP24_I2C_SLAVE    1
-#define CONFIG_SYS_I2C_OMAP34XX
-
-/*
- * TWL4030
- */
-#define CONFIG_TWL4030_POWER           1
-
-/* Environment information */
-#undef CONFIG_ENV_OVERWRITE    /* disallow overwriting serial# and ethaddr */
-#define CONFIG_BOOTDELAY               0
-#define CONFIG_ZERO_BOOTDELAY_CHECK
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "silent=true\0" \
-       "loadaddr=0x82000000\0" \
-       "usbtty=cdc_acm\0" \
-       "console=ttyO0,115200n8\0" \
-       "mpurate=600\0" \
-       "vram=12M\0" \
-       "dvimode=1024x768-24@60\0" \
-       "defaultdisplay=dvi\0" \
-       "loadfpga=if ext2load mmc ${mmcdev}:2 ${loadaddr} "\
-               "/lib/firmware/mvblx/${fpgafilename}; then " \
-                       "fpga load 0 ${loadaddr} ${filesize}; " \
-               "fi;\0" \
-       "mmcdev=0\0" \
-       "mmcroot=/dev/mmcblk0p2 rw\0" \
-       "mmcrootfstype=ext3 rootwait\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "mpurate=${mpurate} " \
-               "vram=${vram} " \
-               "omapfb.mode=dvi:${dvimode} " \
-               "omapfb.debug=y " \
-               "omapdss.def_disp=${defaultdisplay} " \
-               "root=${mmcroot} " \
-               "rootfstype=${mmcrootfstype} " \
-               "mvfw.fpgavers=${fpgavers} " \
-               "${cmdline_suffix}\0" \
-       "loadbootenv=fatload mmc ${mmcdev} ${loadaddr} uEnv.txt\0" \
-       "importbootenv=echo Importing environment from mmc ...; " \
-               "env import -t $loadaddr $filesize\0" \
-       "loaduimage=fatload mmc ${mmcdev} ${loadaddr} uImage\0" \
-       "mmcboot=echo Booting from mmc ...; " \
-               "run mmcargs; " \
-               "bootm ${loadaddr}\0" \
-       "mmcbootcmd= " \
-               "echo Trying mmc${mmcdev}; " \
-               "mmc dev ${mmcdev}; " \
-               "if mmc rescan; then " \
-                       "setenv mmcroot /dev/mmcblk${mmcdev}p2 rw; " \
-                       "echo SD/MMC found on device ${mmcdev};" \
-                       "if run loadbootenv; then " \
-                          "echo Loading boot environment from mmc${mmcdev}; " \
-                          "run importbootenv; " \
-                       "fi;" \
-                       "run loadfpga; " \
-                       "if test -n $uenvcmd; then " \
-                               "echo Running uenvcmd ...;" \
-                               "run uenvcmd;" \
-                       "fi;" \
-                       "if run loaduimage; then " \
-                               "run mmcboot; " \
-                       "fi;" \
-               "fi\0"
-
-#define CONFIG_BOOTCOMMAND \
-       "setenv mmcdev 1;" \
-       "run mmcbootcmd || " \
-       "setenv mmcdev 0;" \
-       "run mmcbootcmd"
-
-
-#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 */
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
-                                       sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args */
-/* Boot Argument Buffer Size */
-#define CONFIG_SYS_BARGSIZE            (CONFIG_SYS_CBSIZE)
-
-#define CONFIG_SYS_ALT_MEMTEST      1 /* alternative memtest with looping */
-#define CONFIG_SYS_MEMTEST_START       (0x82000000)    /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         (0x9dffffff)    /* end = 448 MB */
-#define CONFIG_SYS_MEMTEST_SCRATCH     (0x81000000)    /* dummy address */
-
-/* default load address */
-#define CONFIG_SYS_LOAD_ADDR           (OMAP34XX_SDRC_CS0)
-
-/*
- * 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   1
-#define PHYS_SDRAM_1           OMAP34XX_SDRC_CS0
-#define PHYS_SDRAM_2           OMAP34XX_SDRC_CS1
-
-#define CONFIG_ENV_IS_NOWHERE  1
-
-/*----------------------------------------------------------------------------
- * Network Subsystem (SMSC9211 Ethernet from SMSC9118 family)
- *----------------------------------------------------------------------------
- */
-#if defined(CONFIG_CMD_NET)
-  #define CONFIG_SMC911X               1
-  #define CONFIG_SMC911X_32_BIT
-  #define CONFIG_SMC911X_BASE     0x2C000000
-#endif /* (CONFIG_CMD_NET) */
-
-#define CONFIG_FPGA_COUNT      1
-#define CONFIG_FPGA
-#define CONFIG_FPGA_ALTERA
-#define CONFIG_FPGA_CYCLON2
-#define CONFIG_SYS_FPGA_PROG_FEEDBACK
-#define CONFIG_SYS_FPGA_DONT_USE_CONF_DONE
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR 0x50 /* 0xA0>>1 */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN  1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 4  /* 2^4 = 16-byte pages */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 5
-#define CONFIG_SYS_EEPROM_SIZE 256 /* Bytes */
-#define CONFIG_ID_EEPROM
-#define CONFIG_SYS_EEPROM_BUS_NUM      2
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_ADDR       0x4020f800
-#define CONFIG_SYS_INIT_RAM_SIZE       0x800
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_INIT_RAM_ADDR + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-
-#define CONFIG_OMAP3_SPI
-
-#define CONFIG_SYS_CACHELINE_SIZE      64
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/omap3_sdp3430.h b/include/configs/omap3_sdp3430.h
deleted file mode 100644 (file)
index f43e477..0000000
+++ /dev/null
@@ -1,318 +0,0 @@
-/*
- * (C) Copyright 2006-2009
- * Texas Instruments Incorporated.
- * Richard Woodruff <r-woodruff2@ti.com>
- * Syed Mohammed Khasim <x0khasim@ti.com>
- * Nishanth Menon <nm@ti.com>
- *
- * Configuration settings for the 3430 TI SDP3430 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* TODO: REMOVE THE FOLLOWING
- * Retained the following till size.h is removed in u-boot
- */
-#include <linux/sizes.h>
-/*
- * High Level Configuration Options
- */
-#define CONFIG_OMAP            1       /* in a TI OMAP core */
-#define CONFIG_OMAP3_3430SDP   1       /* working with SDP Rev2 */
-#define CONFIG_OMAP_COMMON
-/* Common ARM Erratas */
-#define CONFIG_ARM_ERRATA_454179
-#define CONFIG_ARM_ERRATA_430973
-#define CONFIG_ARM_ERRATA_621766
-
-#define CONFIG_SDRC    /* The chip has SDRC controller */
-
-#include <asm/arch/cpu.h>              /* get chip and board defs */
-#include <asm/arch/omap.h>
-
-/*
- * NOTE:  these #defines presume standard SDP jumper settings.
- * In particular:
- *  - 26 MHz clock (not 19.2 or 38.4 MHz)
- *  - Boot from 128MB NOR, not NAND or OneNAND
- *
- * At this writing, OMAP3 U-Boot support doesn't permit concurrent
- * support for all the flash types the board supports.
- */
-#define CONFIG_DISPLAY_CPUINFO         1
-#define CONFIG_DISPLAY_BOARDINFO       1
-
-/* Clock Defines */
-#define V_OSCK                 26000000        /* Clock output from T2 */
-#define V_SCLK                 (V_OSCK >> 1)
-
-#define CONFIG_MISC_INIT_R
-
-#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS       1
-#define CONFIG_INITRD_TAG              1
-#define CONFIG_REVISION_TAG            1
-
-#define CONFIG_OF_LIBFDT               1
-
-/*
- * Size of malloc() pool
- * Total Size Environment - 256k
- * Malloc - add 256k
- */
-#define CONFIG_ENV_SIZE                        (256 << 10)
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + (256 << 10))
-
-/*--------------------------------------------------------------------------*/
-
-/*
- * Hardware drivers
- */
-
-/*
- * TWL4030
- */
-#define CONFIG_TWL4030_POWER           1
-
-/*
- * serial port - NS16550 compatible
- */
-#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
-
-/* Original SDP u-boot used UART1 and thus J8 (innermost); that can be
- * swapped with UART2 via jumpering.  Downsides of using J8:  it doesn't
- * support UART boot (that's only for UART3); it prevents sharing a Linux
- * kernel (LL_DEBUG_UART3) or filesystem (getty ttyS2) with most boards.
- *
- * UART boot uses UART3 on J9, and the SDP user's guide says to use
- * that for console.  Downsides of using J9:  you can't use IRDA too;
- * since UART3 isn't in the CORE power domain, it may be a bit less
- * usable in certain PM-sensitive debug scenarios.
- */
-#undef CONSOLE_J9                      /* else J8/UART1 (innermost) */
-
-#ifdef CONSOLE_J9
-#define CONFIG_CONS_INDEX              3
-#define CONFIG_SYS_NS16550_COM3                OMAP34XX_UART3
-#define CONFIG_SERIAL3                 3       /* UART3 */
-#else
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_SYS_NS16550_COM1                OMAP34XX_UART1
-#define CONFIG_SERIAL1                 1       /* UART1 */
-#endif
-
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_BAUDRATE                        115200
-#define CONFIG_SYS_BAUDRATE_TABLE      {4800, 9600, 19200, 38400, 57600,\
-                                       115200}
-
-/*
- * I2C for power management setup
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_OMAP24_I2C_SPEED    100000
-#define CONFIG_SYS_OMAP24_I2C_SLAVE    1
-#define CONFIG_SYS_I2C_OMAP34XX
-
-/* OMITTED:  single 1 Gbit MT29F1G NAND flash */
-
-/*
- * NOR boot support - single 1 Gbit PF48F6000M0 Strataflash
- */
-#define CONFIG_SYS_FLASH_BASE          0x10000000
-#define CONFIG_FLASH_CFI_DRIVER                1       /* Use drivers/cfi_flash.c */
-#define CONFIG_SYS_FLASH_CFI           1       /* use CFI geometry data */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* ~10x faster writes */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* hardware sector protection */
-#define CONFIG_SYS_FLASH_EMPTY_INFO    1       /* flinfo 'E' for empty */
-#define CONFIG_SYS_FLASH_BANKS_LIST     {CONFIG_SYS_FLASH_BASE}
-#define CONFIG_SYS_MAX_FLASH_BANKS      1      /* max number of flash banks */
-
-#define CONFIG_SYS_FLASH_CFI_WIDTH     2
-#define PHYS_FLASH_SIZE                        (128 << 20)
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max sectors on one chip */
-
-/* OMITTED:  single 2 Gbit KFM2G16 OneNAND flash */
-
-#define CONFIG_ENV_IS_IN_FLASH         1
-#define CONFIG_SYS_ENV_SECT_SIZE       (256 << 10)
-#define CONFIG_ENV_OFFSET              CONFIG_SYS_ENV_SECT_SIZE
-#define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_ENV_SECT_SIZE)
-/*--------------------------------------------------------------------------*/
-
-/* Enabled commands */
-#define CONFIG_CMD_DHCP                /* DHCP Support                 */
-#define CONFIG_CMD_EXT2                /* EXT2 Support                 */
-#define CONFIG_CMD_FAT         /* FAT support                  */
-#define CONFIG_CMD_I2C         /* I2C serial bus support       */
-#define CONFIG_CMD_JFFS2       /* JFFS2 Support                */
-#define CONFIG_CMD_MMC         /* MMC support                  */
-
-/*--------------------------------------------------------------------------*/
-/*
- * MMC boot support
- */
-
-#if defined(CONFIG_CMD_MMC)
-#define CONFIG_GENERIC_MMC             1
-#define CONFIG_MMC                     1
-#define CONFIG_OMAP_HSMMC              1
-#define CONFIG_DOS_PARTITION           1
-#endif
-
-/*----------------------------------------------------------------------------
- * SMSC9115 Ethernet from SMSC9118 family
- *----------------------------------------------------------------------------
- */
-#if defined(CONFIG_CMD_NET)
-
-#define CONFIG_LAN91C96
-#define CONFIG_LAN91C96_BASE   DEBUG_BASE
-#define CONFIG_LAN91C96_EXT_PHY
-
-#define CONFIG_BOOTP_SEND_HOSTNAME
-/*
- * BOOTP fields
- */
-#define CONFIG_BOOTP_SUBNETMASK                0x00000001
-#define CONFIG_BOOTP_GATEWAY           0x00000002
-#define CONFIG_BOOTP_HOSTNAME          0x00000004
-#define CONFIG_BOOTP_BOOTPATH          0x00000010
-#endif /* (CONFIG_CMD_NET) */
-
-/*
- * Environment setup
- *
- * Default boot order:  mmc bootscript, MMC uImage, NOR image.
- * Network booting environment must be configured at site.
- */
-
-/* allow overwriting serial config and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "loadaddr=0x82000000\0" \
-       "console=ttyS0,115200n8\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "root=/dev/mmcblk0p2 rw " \
-               "rootfstype=ext3 rootwait\0" \
-       "norargs=setenv bootargs console=${console} " \
-               "root=/dev/mtdblock3 rw " \
-               "rootfstype=jffs2\0" \
-       "loadbootscript=fatload mmc 0 ${loadaddr} boot.scr\0" \
-       "bootscript=echo Running bootscript from MMC/SD ...; " \
-               "autoscr ${loadaddr}\0" \
-       "loaduimage=fatload mmc 0 ${loadaddr} uImage\0" \
-       "mmcboot=echo Booting from MMC/SD ...; " \
-               "run mmcargs; " \
-               "bootm ${loadaddr}\0" \
-       "norboot=echo Booting from NOR ...; " \
-               "run norargs; " \
-               "bootm 0x80000\0" \
-
-#define CONFIG_BOOTCOMMAND \
-       "if mmcinit; then " \
-               "if run loadbootscript; then " \
-                       "run bootscript; " \
-               "else " \
-                       "if run loaduimage; then " \
-                               "run mmcboot; " \
-                       "else run norboot; " \
-                       "fi; " \
-               "fi; " \
-       "else run norboot; fi"
-
-#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 */
-#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)
-
-/* SDRAM Test range - start at 16 meg boundary -ends at 32Meg -
- * a basic sanity check ONLY
- * IF you would like to increase coverage, increase the end address
- * or run the test with custom options
- */
-#define CONFIG_SYS_MEMTEST_START       (OMAP34XX_SDRC_CS0 + 0x01000000)
-#define CONFIG_SYS_MEMTEST_END         (OMAP34XX_SDRC_CS0 + (32 << 20))
-
-/* Default load address */
-#define CONFIG_SYS_LOAD_ADDR           (OMAP34XX_SDRC_CS0)
-
-/*--------------------------------------------------------------------------*/
-
-/*
- * 3430 has 12 GP timers, they can be driven by the SysClk (12/13/19.2) or by
- * 32KHz clk, or from external sig. This rate is divided by a local divisor.
- */
-#define CONFIG_SYS_TIMERBASE           (OMAP34XX_GPT2)
-#define CONFIG_SYS_PTV                 2       /* Divisor: 2^(PTV+1) => 8 */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_ADDR       0x4020f800
-#define CONFIG_SYS_INIT_RAM_SIZE       0x800
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_INIT_RAM_ADDR + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-/*
- * SDRAM 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
-
-/*--------------------------------------------------------------------------*/
-
-/*
- * NOR FLASH usage ... default nCS0:
- *  - one 256KB sector for U-Boot
- *  - one 256KB sector for its parameters (not all used)
- *  - eight sectors (2 MB) for kernel
- *  - rest for JFFS2
- */
-
-/* Monitor at start of flash */
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (256 << 10)
-
-/*
- * NAND FLASH usage ... default nCS1:
- *  - four 128KB sectors for X-Loader
- *  - four 128KB sectors for U-Boot
- *  - two 128KB sector for its parameters
- *  - 32 sectors (4 MB) for kernel
- *  - rest for filesystem
- */
-
-/*
- * OneNAND FLASH usage ... default nCS2:
- *  - four 128KB sectors for X-Loader
- *  - two 128KB sectors for U-Boot
- *  - one 128KB sector for its parameters
- *  - sixteen sectors (2 MB) for kernel
- *  - rest for filesystem
- */
-
-#define CONFIG_SYS_CACHELINE_SIZE      64
-
-#endif                         /* __CONFIG_H */
index 86479213fc8b7227430fbbb944ffe88e029fc754..18a2924fd479091da05f641b74e19d59e13f10da 100644 (file)
        "name=rootfs,start=2MiB,size=-,uuid=${uuid_gpt_rootfs}"
 #endif
 
+#define DFU_ALT_INFO_MMC \
+       "dfu_alt_info_mmc=" \
+       "boot part 0 1;" \
+       "rootfs part 0 2;" \
+       "MLO fat 0 1;" \
+       "MLO.raw raw 0x100 0x100;" \
+       "u-boot.img.raw raw 0x300 0x400;" \
+       "spl-os-args.raw raw 0x80 0x80;" \
+       "spl-os-image.raw raw 0x900 0x2000;" \
+       "spl-os-args fat 0 1;" \
+       "spl-os-image fat 0 1;" \
+       "u-boot.img fat 0 1;" \
+       "uEnv.txt fat 0 1\0"
+
+#define DFU_ALT_INFO_EMMC \
+       "dfu_alt_info_emmc=" \
+       "rawemmc raw 0 3751936;" \
+       "boot part 1 1;" \
+       "rootfs part 1 2;" \
+       "MLO fat 1 1;" \
+       "MLO.raw raw 0x100 0x100;" \
+       "u-boot.img.raw raw 0x300 0x400;" \
+       "spl-os-args.raw raw 0x80 0x80;" \
+       "spl-os-image.raw raw 0x900 0x2000;" \
+       "spl-os-args fat 1 1;" \
+       "spl-os-image fat 1 1;" \
+       "u-boot.img fat 1 1;" \
+       "uEnv.txt fat 1 1\0"
+
+#define DFU_ALT_INFO_RAM \
+       "dfu_alt_info_ram=" \
+       "kernel ram 0x80200000 0x4000000;" \
+       "fdt ram 0x80f80000 0x80000;" \
+       "ramdisk ram 0x81000000 0x4000000\0"
+
+#define DFUARGS \
+       "dfu_bufsiz=0x10000\0" \
+       DFU_ALT_INFO_MMC \
+       DFU_ALT_INFO_EMMC \
+       DFU_ALT_INFO_RAM
+
 #include <configs/ti_omap5_common.h>
 
 #define CONFIG_CONS_INDEX              3
 #define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO 80
 #define CONFIG_OMAP_EHCI_PHY3_RESET_GPIO 79
 
+/* USB GADGET */
+#define CONFIG_USB_DWC3_PHY_OMAP
+#define CONFIG_USB_DWC3_OMAP
+#define CONFIG_USB_DWC3
+#define CONFIG_USB_DWC3_GADGET
+
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_DOWNLOAD
+#define CONFIG_USB_GADGET_VBUS_DRAW 2
+#define CONFIG_G_DNL_MANUFACTURER "Texas Instruments"
+#define CONFIG_G_DNL_VENDOR_NUM 0x0403
+#define CONFIG_G_DNL_PRODUCT_NUM 0xBD00
+#define CONFIG_USB_GADGET_DUALSPEED
+
+/* USB Device Firmware Update support */
+#define CONFIG_USB_FUNCTION_DFU
+#define CONFIG_DFU_RAM
+#define CONFIG_CMD_DFU
+
+#define CONFIG_DFU_MMC
+
 /* Enabled commands */
 #define CONFIG_CMD_DHCP                /* DHCP Support                 */
 
diff --git a/include/configs/openrd.h b/include/configs/openrd.h
deleted file mode 100644 (file)
index 7211314..0000000
+++ /dev/null
@@ -1,137 +0,0 @@
-/*
- * (C) Copyright 2009
- * Net Insight <www.netinsight.net>
- * Written-by: Simon Kagstrom <simon.kagstrom@netinsight.net>
- *
- * Based on sheevaplug.h:
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _CONFIG_OPENRD_H
-#define _CONFIG_OPENRD_H
-
-/*
- * Version number information
- */
-#ifdef CONFIG_BOARD_IS_OPENRD_ULTIMATE
-# define CONFIG_IDENT_STRING   "\nOpenRD-Ultimate"
-#else
-# ifdef CONFIG_BOARD_IS_OPENRD_CLIENT
-#  define CONFIG_IDENT_STRING  "\nOpenRD-Client"
-# else
-#  ifdef CONFIG_BOARD_IS_OPENRD_BASE
-#   define CONFIG_IDENT_STRING "\nOpenRD-Base"
-#  else
-#   error Unknown OpenRD board specified
-#  endif
-# endif
-#endif
-
-/*
- * High Level Configuration Options (easy to change)
- */
-#define CONFIG_SHEEVA_88SV131  1       /* CPU Core subversion */
-#define CONFIG_KW88F6281       1       /* SOC Name */
-#define CONFIG_MACH_OPENRD_BASE        /* Machine type */
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* disable board lowlevel_init */
-
-/*
- * Commands configuration
- */
-#define CONFIG_SYS_NO_FLASH            /* Declare no flash (NOR/SPI) */
-#define CONFIG_SYS_MVFS
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ENV
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_MMC
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_USB
-#define CONFIG_CMD_IDE
-
-/*
- * mv-common.h should be defined after CMD configs since it used them
- * to enable certain macros
- */
-#include "mv-common.h"
-
-/*
- *  Environment variables configurations
- */
-#ifdef CONFIG_CMD_NAND
-#define CONFIG_ENV_IS_IN_NAND          1
-#define CONFIG_ENV_SECT_SIZE           0x20000 /* 128K */
-#else
-#define CONFIG_ENV_IS_NOWHERE          1       /* if env in SDRAM */
-#endif
-/*
- * max 4k env size is enough, but in case of nand
- * it has to be rounded to sector size
- */
-#define CONFIG_ENV_SIZE                        0x20000 /* 128k */
-#define CONFIG_ENV_ADDR                        0x60000
-#define CONFIG_ENV_OFFSET              0x60000 /* env starts here */
-/*
- * Environment is right behind U-Boot in flash. Make sure U-Boot
- * doesn't grow into the environment area.
- */
-#define CONFIG_BOARD_SIZE_LIMIT                CONFIG_ENV_OFFSET
-
-/*
- * Default environment variables
- */
-#define CONFIG_BOOTCOMMAND             "${x_bootcmd_kernel}; " \
-       "setenv bootargs ${x_bootargs} ${x_bootargs_root}; "    \
-       "${x_bootcmd_usb}; bootm 0x6400000;"
-
-#define MTDIDS_DEFAULT         "nand0=nand_mtd"
-#define MTDPARTS_DEFAULT       "mtdparts=nand_mtd:0x100000@0x000000(uboot),"\
-       "0x400000@0x100000(uImage),"\
-       "0x1fb00000@0x500000(rootfs)"
-
-#define CONFIG_EXTRA_ENV_SETTINGS      "x_bootargs=console"            \
-       "=ttyS0,115200 "MTDPARTS_DEFAULT " rw ubi.mtd=2,2048\0"         \
-       "x_bootcmd_kernel=nand read 0x6400000 0x100000 0x300000\0"      \
-       "x_bootcmd_usb=usb start\0"                                     \
-       "x_bootargs_root=root=ubi0:rootfs rootfstype=ubifs\0"           \
-       "mtdids="MTDIDS_DEFAULT"\0"                                     \
-       "mtdparts="MTDPARTS_DEFAULT"\0"
-
-/*
- * Ethernet Driver configuration
- */
-#ifdef CONFIG_CMD_NET
-# ifdef CONFIG_BOARD_IS_OPENRD_BASE
-#  define CONFIG_MVGBE_PORTS   {1, 0}  /* enable port 0 only */
-# else
-#  define CONFIG_MVGBE_PORTS   {1, 1}  /* enable both ports */
-# endif
-# ifdef CONFIG_BOARD_IS_OPENRD_ULTIMATE
-#  define CONFIG_PHY_BASE_ADR  0x0
-#  define PHY_NO               "88E1121"
-# else
-#  define CONFIG_PHY_BASE_ADR  0x8
-#  define PHY_NO               "88E1116"
-# endif
-#endif /* CONFIG_CMD_NET */
-
-/*
- * SATA Driver configuration
- */
-#ifdef CONFIG_MVSATA_IDE
-#define CONFIG_SYS_ATA_IDE0_OFFSET     MV_SATA_PORT0_OFFSET
-#define CONFIG_SYS_ATA_IDE1_OFFSET     MV_SATA_PORT1_OFFSET
-#endif /*CONFIG_MVSATA_IDE*/
-
-#ifdef CONFIG_CMD_MMC
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_MVEBU_MMC
-#define CONFIG_SYS_MMC_BASE KW_SDIO_BASE
-#endif /* CONFIG_CMD_MMC */
-
-#endif /* _CONFIG_OPENRD_BASE_H */
diff --git a/include/configs/otc570.h b/include/configs/otc570.h
deleted file mode 100644 (file)
index 0cada63..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * (C) Copyright 2010-2011
- * Daniel Gorsulowski <daniel.gorsulowski@esd.eu>
- * esd electronic system design gmbh <www.esd.eu>
- *
- * (C) Copyright 2007-2008
- * Stelian Pop <stelian@popies.net>
- * Lead Tech Design <www.leadtechdesign.com>
- *
- * Configuation settings for the esd OTC570 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * SoC must be defined first, before hardware.h is included.
- * In this case SoC is defined in boards.cfg.
- */
-#include <asm/hardware.h>
-
-/*
- * Warning: changing CONFIG_SYS_TEXT_BASE requires
- * adapting the initial boot program.
- * Since the linker has to swallow that define, we must use a pure
- * hex number here!
- */
-#define CONFIG_SYS_TEXT_BASE           0x20002000
-
-/*
- * since a number of boards are not being listed in linux
- * arch/arm/tools/mach-types any more, the mach-types have to be
- * defined here
- */
-#define MACH_TYPE_OTC570               2166
-
-/* ARM asynchronous clock */
-#define CONFIG_SYS_AT91_SLOW_CLOCK     32768   /* 32.768 kHz crystal */
-#define CONFIG_SYS_AT91_MAIN_CLOCK     16000000/* 16.0 MHz crystal */
-
-/* Misc CPU related */
-#define CONFIG_SKIP_LOWLEVEL_INIT
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_BOARD_EARLY_INIT_F              /* call board_early_init_f() */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-#define CONFIG_SERIAL_TAG
-#define CONFIG_REVISION_TAG
-#define CONFIG_CMDLINE_TAG                     /* enable passing of ATAGs */
-#define CONFIG_MISC_INIT_R                     /* Call misc_init_r */
-
-#define CONFIG_DISPLAY_BOARDINFO               /* call checkboard() */
-#define CONFIG_DISPLAY_CPUINFO                 /* display cpu info and speed */
-#define CONFIG_PREBOOT                         /* enable preboot variable */
-
-/*
- * Hardware drivers
- */
-
-/* required until arch/arm/include/asm/arch-at91/at91sam9263.h is reworked */
-#define ATMEL_PMC_UHP                  AT91SAM926x_PMC_UHP
-
-/* general purpose I/O */
-#define CONFIG_AT91_GPIO
-
-/* Console output */
-#define CONFIG_ATMEL_USART
-#define CONFIG_USART_BASE              ATMEL_BASE_DBGU
-#define CONFIG_USART_ID                        ATMEL_ID_SYS
-#define CONFIG_BAUDRATE                        115200
-
-#define CONFIG_BOOTDELAY               3
-#define CONFIG_ZERO_BOOTDELAY_CHECK
-
-/* LCD */
-#define CONFIG_LCD
-#undef CONFIG_SPLASH_SCREEN
-
-#ifdef CONFIG_LCD
-# define LCD_BPP                       LCD_COLOR8
-
-# ifndef CONFIG_SPLASH_SCREEN
-#  define CONFIG_LCD_LOGO
-#  define CONFIG_LCD_INFO
-#  undef CONFIG_LCD_INFO_BELOW_LOGO
-# endif /* CONFIG_SPLASH_SCREEN */
-
-# undef LCD_TEST_PATTERN
-# define CONFIG_SYS_WHITE_ON_BLACK
-# define CONFIG_ATMEL_LCD
-# define CONFIG_SYS_CONSOLE_IS_IN_ENV
-# define CONFIG_OTC570_LCD_BASE                (CONFIG_SYS_SDRAM_BASE + 0x03fa5000)
-# define CONFIG_CMD_BMP
-#endif /* CONFIG_LCD */
-
-/* RTC and I2C stuff */
-#define CONFIG_RTC_DS1338
-#define CONFIG_SYS_I2C_RTC_ADDR                0x68
-
-#define CONFIG_SYS_I2C
-#define        CONFIG_SYS_I2C_SOFT     /* I2C bit-banged       */
-#ifdef CONFIG_SYS_I2C_SOFT
-#define CONFIG_SYS_I2C_SOFT_SPEED      100000
-#define CONFIG_SYS_I2C_SOFT_SLAVE      0x7F
-
-/* Configure data and clock pins for pio */
-# define I2C_INIT { \
-       at91_set_pio_output(AT91_PIO_PORTB, 4, 0); \
-       at91_set_pio_output(AT91_PIO_PORTB, 5, 0); \
-}
-# define I2C_SOFT_DECLARATIONS
-/* Configure data pin as output */
-# define I2C_ACTIVE            at91_set_pio_output(AT91_PIO_PORTB, 4, 0)
-/* Configure data pin as input */
-# define I2C_TRISTATE          at91_set_pio_input(AT91_PIO_PORTB, 4, 0)
-/* Read data pin */
-# define I2C_READ              at91_get_pio_value(AT91_PIO_PORTB, 4)
-/* Set data pin */
-# define I2C_SDA(bit)          at91_set_pio_value(AT91_PIO_PORTB, 4, bit)
-/* Set clock pin */
-# define I2C_SCL(bit)          at91_set_pio_value(AT91_PIO_PORTB, 5, bit)
-# define I2C_DELAY             udelay(2) /* 1/4 I2C clock duration */
-#endif /* CONFIG_SYS_I2C_SOFT */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_USB
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_DATE
-
-/* LED */
-#define CONFIG_AT91_LED
-
-/*
- * SDRAM: 1 bank, min 32, max 128 MB
- * Initialized before u-boot gets started.
- */
-#define CONFIG_NR_DRAM_BANKS           1
-#define CONFIG_SYS_SDRAM_BASE          0x20000000 /* ATMEL_BASE_CS1 */
-#define CONFIG_SYS_SDRAM_SIZE          0x04000000
-
-#define CONFIG_SYS_MEMTEST_START       (CONFIG_SYS_SDRAM_BASE + 0x00100000)
-#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_SDRAM_BASE + 0x01E00000)
-#define CONFIG_SYS_LOAD_ADDR           (CONFIG_SYS_SDRAM_BASE + 0x00100000)
-
-/*
- * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM,
- * leaving the correct space for initial global data structure above
- * that address while providing maximum stack area below.
- */
-#define CONFIG_SYS_INIT_SP_ADDR \
-       (ATMEL_BASE_SRAM0 + 0x1000 - GENERATED_GBL_DATA_SIZE)
-
-/* DataFlash */
-#ifdef CONFIG_SYS_USE_DATAFLASH
-# define CONFIG_ATMEL_DATAFLASH_SPI
-# define CONFIG_HAS_DATAFLASH
-# define CONFIG_SYS_MAX_DATAFLASH_BANKS                1
-# define CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0   0xC0000000      /* CS0 */
-# define AT91_SPI_CLK                          15000000
-# define DATAFLASH_TCSS                                (0x1a << 16)
-# define DATAFLASH_TCHS                                (0x1 << 24)
-#endif
-
-/* NOR flash is not populated, disable it */
-#define CONFIG_SYS_NO_FLASH
-
-/* NAND flash */
-#ifdef CONFIG_CMD_NAND
-# define CONFIG_NAND_ATMEL
-# define CONFIG_SYS_MAX_NAND_DEVICE            1
-# define CONFIG_SYS_NAND_BASE                  0x40000000 /* ATMEL_BASE_CS3 */
-# define CONFIG_SYS_NAND_DBW_8
-# define CONFIG_SYS_NAND_MASK_ALE              (1 << 21)
-# define CONFIG_SYS_NAND_MASK_CLE              (1 << 22)
-# define CONFIG_SYS_NAND_ENABLE_PIN            GPIO_PIN_PD(15)
-# define CONFIG_SYS_NAND_READY_PIN             GPIO_PIN_PA(22)
-#endif
-
-/* Ethernet */
-#define CONFIG_MACB
-#define CONFIG_RMII
-#define CONFIG_FIT
-#define CONFIG_NET_RETRY_COUNT                 20
-#undef CONFIG_RESET_PHY_R
-
-/* USB */
-#define CONFIG_USB_ATMEL
-#define CONFIG_USB_ATMEL_CLK_SEL_PLLB
-#define CONFIG_USB_OHCI_NEW
-#define CONFIG_DOS_PARTITION
-#define CONFIG_SYS_USB_OHCI_CPU_INIT
-#define CONFIG_SYS_USB_OHCI_REGS_BASE          0x00a00000
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME          "at91sam9263"
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
-#define CONFIG_USB_STORAGE
-#define CONFIG_CMD_FAT
-
-/* CAN */
-#define CONFIG_AT91_CAN
-
-/* hw-controller addresses */
-#define CONFIG_ET1100_BASE             0x70000000 /* ATMEL_BASE_CS6 */
-
-#ifdef CONFIG_SYS_USE_DATAFLASH
-
-/* bootstrap + u-boot + env in dataflash on CS0 */
-# define CONFIG_ENV_IS_IN_DATAFLASH
-# define CONFIG_SYS_MONITOR_BASE       (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
-                                       0x8400)
-# define CONFIG_ENV_OFFSET             0x4200
-# define CONFIG_ENV_ADDR               (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
-                                       CONFIG_ENV_OFFSET)
-# define CONFIG_ENV_SIZE               0x4200
-
-#elif CONFIG_SYS_USE_NANDFLASH
-
-/* bootstrap + u-boot + env + linux in nandflash */
-# define CONFIG_ENV_IS_IN_NAND         1
-# define CONFIG_ENV_OFFSET             0xC0000
-# define CONFIG_ENV_SIZE               0x20000
-
-#endif
-
-#define CONFIG_SYS_CBSIZE              512
-#define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
-                                       sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CMDLINE_EDITING
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN          ROUND(3 * CONFIG_ENV_SIZE + \
-                                       128*1024, 0x1000)
-
-#endif
diff --git a/include/configs/p3p440.h b/include/configs/p3p440.h
deleted file mode 100644 (file)
index eb14003..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * (C) Copyright 2005-2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * (C) Copyright 2002 Scott McNutt <smcnutt@artesyncp.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/************************************************************************
- * board/config_p3p440.h - configuration for Prodrive P3P440
- ***********************************************************************/
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*-----------------------------------------------------------------------
- * High Level Configuration Options
- *----------------------------------------------------------------------*/
-#define CONFIG_P3P440          1           /* Board is P3P440          */
-#define CONFIG_440GP           1           /* Specifc GP support       */
-#define CONFIG_440             1           /* ... PPC440 family        */
-#define CONFIG_BOARD_EARLY_INIT_F 1        /* Call board_early_init_f  */
-#define CONFIG_MISC_INIT_R     1           /* Call misc_init_r         */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_SYS_CLK_FREQ    33333333    /* external freq to pll     */
-
-/*-----------------------------------------------------------------------
- * Base addresses -- Note these are effective addresses where the
- * actual resources get mapped (not physical addresses)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_SDRAM_BASE      0x00000000      /* _must_ be 0              */
-#define CONFIG_SYS_FLASH_BASE      0xff800000      /* start of FLASH           */
-#define CONFIG_SYS_MONITOR_BASE    0xfffc0000      /* start of monitor         */
-#define CONFIG_SYS_PCI_MEMBASE     0x80000000      /* mapped pci memory        */
-#define CONFIG_SYS_ISRAM_BASE      0xc0000000      /* internal SRAM            */
-#define CONFIG_SYS_PCI_BASE        0xd0000000      /* internal PCI regs        */
-
-#define CONFIG_SYS_USB_BASE        (CONFIG_SYS_PERIPHERAL_BASE + 0x00000000)
-
-/*-----------------------------------------------------------------------
- * Initial RAM & stack pointer (placed in internal SRAM)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_ISRAM_BASE  /* Initial RAM address   */
-#define CONFIG_SYS_INIT_RAM_SIZE       0x2000      /* Size of used area in RAM */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Mon*/
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc*/
-
-/*-----------------------------------------------------------------------
- * DDR SDRAM
- *----------------------------------------------------------------------*/
-#define CONFIG_SDRAM_BANK0     1       /* init onboard DDR SDRAM bank 0*/
-#define CONFIG_SDRAM_ECC               /* enable ECC support           */
-#define CONFIG_SYS_SDRAM_TABLE { \
-               {(256 << 20), 13, 0x000C4001}, /* 256MB mode 3, 13x10(4)*/ \
-               {(64 << 20),  12, 0x00082001}} /* 64MB mode 2, 12x9(4)  */
-
-/*-----------------------------------------------------------------------
- * Serial Port
- *----------------------------------------------------------------------*/
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_SYS_BAUDRATE_TABLE                                              \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,               \
-                       57600, 115200, 230400, 460800, 921600 }
-
-/*-----------------------------------------------------------------------
- * I2C
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-#define CONFIG_SYS_I2C_NOPROBES        { {0, 0x69} }   /* Don't probe these addrs */
-
-/*-----------------------------------------------------------------------
- * I2C RTC
- *----------------------------------------------------------------------*/
-#define CONFIG_RTC_MAX6900     1               /* MAX6900 RTC          */
-
-/*-----------------------------------------------------------------------
- * I2C EEPROM (PCF8594C) for environment
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x54    /* EEPROM PCF8594C              */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1       /* Bytes of address             */
-/* mask of address bits that overflow into the "EEPROM chip address"   */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3    /* The Philips PCF8594C has     */
-                                       /* 8 byte page write mode using */
-                                       /* last 3 bits of the address   */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  40   /* and takes up to 40 msec */
-
-/*-----------------------------------------------------------------------
- * Default configuration (environment varibles...)
- *----------------------------------------------------------------------*/
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "hostname=p3p440\0"                                             \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
-       "flash_nfs=run nfsargs addip addtty;"                           \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip addtty;"                          \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;"     \
-               "bootm\0"                                               \
-       "rootpath=/opt/eldk/ppc_4xx\0"                                  \
-       "bootfile=/tftpboot/p3p440/uImage\0"                            \
-       "kernel_addr=ff800000\0"                                        \
-       "ramdisk_addr=ff810000\0"                                       \
-       "load=tftp 100000 /tftpboot/p3p440/u-boot.bin\0"                \
-       "update=protect off fffc0000 ffffffff;era fffc0000 ffffffff;"   \
-               "cp.b 100000 fffc0000 40000;"                           \
-               "setenv filesize;saveenv\0"                             \
-       "upd=run load update\0"                                         \
-       "unlock=yes\0"                                                  \
-       ""
-#define CONFIG_BOOTCOMMAND     "run net_nfs"
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0x1c    /* PHY address                  */
-#define CONFIG_HAS_ETH1
-#define CONFIG_PHY1_ADDR       0x1d    /* EMAC1 PHY address            */
-#define CONFIG_SYS_RX_ETH_BUFFER       32      /* Number of ethernet rx buffers & descriptors */
-
-#define CONFIG_NETCONSOLE              /* include NetConsole support   */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_SNTP
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configurable options
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *----------------------------------------------------------------------*/
-/* General PCI */
-#define CONFIG_PCI                                 /* include pci support              */
-#define        CONFIG_PCI_INDIRECT_BRIDGE 1    /* indirect PCI bridge support */
-#define CONFIG_PCI_PNP                         /* do pci plug-and-play         */
-#define CONFIG_PCI_SCAN_SHOW            /* show pci devices on startup  */
-#define CONFIG_SYS_PCI_TARGBASE    0x80000000  /* PCIaddr mapped to CONFIG_SYS_PCI_MEMBASE */
-
-/* Board-specific PCI */
-#define CONFIG_SYS_PCI_TARGET_INIT                 /* let board init pci target    */
-
-#define CONFIG_DISABLE_PISE_TEST       /* disable PISE test (PCIX only)*/
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x10e8  /* AMCC */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0xcafe  /* Whatever */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_FLASH0              0xFF800000
-#define CONFIG_SYS_FLASH1              0xFF000000
-#define CONFIG_SYS_FLASH2              0xFE800000
-#define CONFIG_SYS_FLASH3              0xFE000000
-#define CONFIG_SYS_USB                 0xF0000000
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x03050200
-#define CONFIG_SYS_EBC_PB0CR           (CONFIG_SYS_FLASH0 | 0x7A000) /* BAS=0xFF8,BS=8MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 1 (Flash Bank 1, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB1AP           0x03050200
-#define CONFIG_SYS_EBC_PB1CR           (CONFIG_SYS_FLASH1 | 0x7A000) /* BAS=0xFF8,BS=8MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 2 (Flash Bank 2, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB2AP           0x03050200
-#define CONFIG_SYS_EBC_PB2CR           (CONFIG_SYS_FLASH2 | 0x7A000) /* BAS=0xFF8,BS=8MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 3 (Flash Bank 3, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB3AP           0x03050200
-#define CONFIG_SYS_EBC_PB3CR           (CONFIG_SYS_FLASH3 | 0x7A000) /* BAS=0xFF8,BS=8MB,BU=R/W,BW=16bit */
-
-/* Memory Bank 7 (USB controller) initialization                               */
-#define CONFIG_SYS_EBC_PB7AP           0x02015000
-#define CONFIG_SYS_EBC_PB7CR           (CONFIG_SYS_USB | 0xFE000) /* BAS=0xF00,BS=128MB,BU=R/W,BW=16bit*/
-
-/*-----------------------------------------------------------------------
- * FLASH related
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_FLASH_CFI                           /* The flash is CFI compatible  */
-#define CONFIG_FLASH_CFI_DRIVER                        /* Use common CFI driver        */
-
-#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH3, CONFIG_SYS_FLASH2, CONFIG_SYS_FLASH1, CONFIG_SYS_FLASH0 }
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     4       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protection        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-#define CONFIG_SYS_FLASH_QUIET_TEST    1       /* don't warn upon unknown flash        */
-
-#define CONFIG_ENV_IS_IN_FLASH     1   /* use FLASH for environment vars       */
-
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* size of one complete sector          */
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE-CONFIG_ENV_SECT_SIZE)
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR-CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-#endif /* __CONFIG_H */
diff --git a/include/configs/palmld.h b/include/configs/palmld.h
deleted file mode 100644 (file)
index ec48c14..0000000
+++ /dev/null
@@ -1,245 +0,0 @@
-/*
- * Palm LifeDrive configuration file
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef        __CONFIG_H
-#define        __CONFIG_H
-
-/*
- * High Level Board Configuration Options
- */
-#define        CONFIG_CPU_PXA27X               1       /* Marvell PXA270 CPU */
-#define        CONFIG_PALMLD           1       /* Palm LifeDrive board */
-
-/* we will never enable dcache, because we have to setup MMU first */
-#define CONFIG_SYS_DCACHE_OFF
-
-/*
- * Environment settings
- */
-#define        CONFIG_ENV_OVERWRITE
-#define        CONFIG_SYS_MALLOC_LEN           (128*1024)
-#define        CONFIG_SYS_TEXT_BASE    0x0
-
-#define        CONFIG_BOOTCOMMAND                                              \
-       "if mmcinfo && fatload mmc 0 0xa0000000 uboot.script ; then "   \
-               "source 0xa0000000; "                                   \
-       "else "                                                         \
-               "bootm 0x0x60000; "                                     \
-       "fi; "
-#define        CONFIG_BOOTARGS                 "console=tty0 console=ttyS0,9600"
-#define        CONFIG_TIMESTAMP
-#define        CONFIG_BOOTDELAY                2       /* Autoboot delay */
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-
-#define        CONFIG_LZMA                     /* LZMA compression support */
-
-/*
- * Serial Console Configuration
- */
-#define        CONFIG_PXA_SERIAL
-#define        CONFIG_FFUART                   1
-#define CONFIG_CONS_INDEX              3
-#define        CONFIG_BAUDRATE                 9600
-
-/*
- * Bootloader Components Configuration
- */
-#define        CONFIG_CMD_ENV
-#define        CONFIG_CMD_MMC
-#define        CONFIG_CMD_IDE
-#define        CONFIG_LCD
-#define        CONFIG_PXA_LCD
-
-/*
- * MMC Card Configuration
- */
-#ifdef CONFIG_CMD_MMC
-#define        CONFIG_MMC
-#define        CONFIG_GENERIC_MMC
-#define        CONFIG_PXA_MMC_GENERIC
-#define        CONFIG_SYS_MMC_BASE             0xF0000000
-#define        CONFIG_CMD_FAT
-#define        CONFIG_CMD_EXT2
-#define        CONFIG_DOS_PARTITION
-#endif
-
-/*
- * LCD
- */
-#ifdef CONFIG_LCD
-#define        CONFIG_LQ038J7DH53
-#define        CONFIG_VIDEO_LOGO
-#define        CONFIG_CMD_BMP
-#define        CONFIG_SPLASH_SCREEN
-#define        CONFIG_SPLASH_SCREEN_ALIGN
-#define        CONFIG_VIDEO_BMP_GZIP
-#define        CONFIG_VIDEO_BMP_RLE8
-#define        CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  (2 << 20)
-#endif
-
-/*
- * KGDB
- */
-#ifdef CONFIG_CMD_KGDB
-#define        CONFIG_KGDB_BAUDRATE            230400  /* kgdb serial port speed */
-#endif
-
-/*
- * HUSH Shell Configuration
- */
-#define        CONFIG_SYS_HUSH_PARSER          1
-
-#define        CONFIG_SYS_LONGHELP
-#define        CONFIG_SYS_CBSIZE               256
-#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_DEVICE_NULLDEV       1
-
-/*
- * Clock Configuration
- */
-#define        CONFIG_SYS_CPUSPEED             0x210           /* 416MHz ; N=2,L=16 */
-
-/*
- * DRAM Map
- */
-#define        CONFIG_NR_DRAM_BANKS            1               /* 1 bank of DRAM */
-#define        PHYS_SDRAM_1                    0xa0000000      /* SDRAM Bank #1 */
-#define        PHYS_SDRAM_1_SIZE               0x02000000      /* 32 MB */
-
-#define        CONFIG_SYS_DRAM_BASE            0xa0000000      /* CS0 */
-#define        CONFIG_SYS_DRAM_SIZE            0x02000000      /* 32 MB DRAM */
-
-#define        CONFIG_SYS_MEMTEST_START        0xa0400000      /* memtest works on */
-#define        CONFIG_SYS_MEMTEST_END          0xa0800000      /* 4 ... 8 MB in DRAM */
-
-#define        CONFIG_SYS_LOAD_ADDR            CONFIG_SYS_DRAM_BASE
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         (GENERATED_GBL_DATA_SIZE + PHYS_SDRAM_1)
-
-/*
- * NOR FLASH
- */
-#ifdef CONFIG_CMD_FLASH
-#define        PHYS_FLASH_1                    0x00000000      /* Flash Bank #1 */
-#define        PHYS_FLASH_SIZE                 0x00080000      /* 512 KB */
-#define        CONFIG_SYS_FLASH_BASE           PHYS_FLASH_1
-
-#define        CONFIG_SYS_FLASH_CFI
-#define        CONFIG_FLASH_CFI_DRIVER         1
-
-#define        CONFIG_FLASH_CFI_LEGACY
-#define        CONFIG_SYS_FLASH_LEGACY_512Kx16
-
-#define        CONFIG_SYS_MONITOR_BASE         0
-#define        CONFIG_SYS_MONITOR_LEN          0x40000
-
-#define        CONFIG_SYS_MAX_FLASH_BANKS      1
-#define        CONFIG_SYS_MAX_FLASH_SECT       256
-
-#define        CONFIG_SYS_FLASH_USE_BUFFER_WRITE       1
-
-#define        CONFIG_SYS_FLASH_ERASE_TOUT     240000
-#define        CONFIG_SYS_FLASH_WRITE_TOUT     240000
-#define        CONFIG_SYS_FLASH_LOCK_TOUT      240000
-#define        CONFIG_SYS_FLASH_UNLOCK_TOUT    240000
-#define        CONFIG_SYS_FLASH_PROTECTION
-
-#define        CONFIG_ENV_IS_IN_FLASH          1
-#define        CONFIG_ENV_SECT_SIZE            0x10000
-#else
-#define        CONFIG_SYS_NO_FLASH
-#define        CONFIG_ENV_IS_NOWHERE
-#endif
-
-#define        CONFIG_ENV_ADDR                 0x40000
-#define        CONFIG_ENV_SIZE                 0x4000
-
-/*
- * IDE
- */
-#ifdef CONFIG_CMD_IDE
-#define        CONFIG_LBA48
-#undef CONFIG_IDE_LED
-#undef CONFIG_IDE_RESET
-
-#define        __io
-
-#define        CONFIG_SYS_IDE_MAXBUS           1
-#define        CONFIG_SYS_IDE_MAXDEVICE        1
-
-#define        CONFIG_SYS_ATA_BASE_ADDR        0x20000000
-#define        CONFIG_SYS_ATA_IDE0_OFFSET      0x0
-
-#define        CONFIG_SYS_ATA_DATA_OFFSET      0x10
-#define        CONFIG_SYS_ATA_REG_OFFSET       0x10
-#define        CONFIG_SYS_ATA_ALT_OFFSET       0x10
-
-#define        CONFIG_SYS_ATA_STRIDE           1
-#endif
-
-/*
- * GPIO settings
- */
-#define        CONFIG_SYS_GAFR0_L_VAL  0x00000000
-#define        CONFIG_SYS_GAFR0_U_VAL  0xa5180012
-#define        CONFIG_SYS_GAFR1_L_VAL  0x69988056
-#define        CONFIG_SYS_GAFR1_U_VAL  0xaaa580aa
-#define        CONFIG_SYS_GAFR2_L_VAL  0x6aaaaaaa
-#define        CONFIG_SYS_GAFR2_U_VAL  0x01040001
-#define        CONFIG_SYS_GAFR3_L_VAL  0x540a950c
-#define        CONFIG_SYS_GAFR3_U_VAL  0x00000009
-#define        CONFIG_SYS_GPCR0_VAL    0x00000000
-#define        CONFIG_SYS_GPCR1_VAL    0x00000000
-#define        CONFIG_SYS_GPCR2_VAL    0x00000000
-#define        CONFIG_SYS_GPCR3_VAL    0x00000000
-#define        CONFIG_SYS_GPDR0_VAL    0xc26b0000
-#define        CONFIG_SYS_GPDR1_VAL    0xfcdfaa93
-#define        CONFIG_SYS_GPDR2_VAL    0x7bbaffff
-#define        CONFIG_SYS_GPDR3_VAL    0x006ff38d
-#define        CONFIG_SYS_GPSR0_VAL    0x0d9e45ee
-#define        CONFIG_SYS_GPSR1_VAL    0x03affdae
-#define        CONFIG_SYS_GPSR2_VAL    0x07554000
-#define        CONFIG_SYS_GPSR3_VAL    0x01bc0785
-
-#define        CONFIG_SYS_PSSR_VAL     0x30
-
-/*
- * Clock settings
- */
-#define        CONFIG_SYS_CKEN         0x01ffffff
-#define        CONFIG_SYS_CCCR         0x02000210
-
-/*
- * Memory settings
- */
-#define        CONFIG_SYS_MSC0_VAL     0x7ff844c8
-#define        CONFIG_SYS_MSC1_VAL     0x7ff86ab4
-#define        CONFIG_SYS_MSC2_VAL     0x7ff87ff8
-#define        CONFIG_SYS_MDCNFG_VAL   0x0B880acd
-#define        CONFIG_SYS_MDREFR_VAL   0x201fa031
-#define        CONFIG_SYS_MDMRS_VAL    0x00320032
-#define        CONFIG_SYS_FLYCNFG_VAL  0x00000000
-#define        CONFIG_SYS_SXCNFG_VAL   0x40044004
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define        CONFIG_SYS_MECR_VAL     0x00000003
-#define        CONFIG_SYS_MCMEM0_VAL   0x0001c391
-#define        CONFIG_SYS_MCMEM1_VAL   0x0001c391
-#define        CONFIG_SYS_MCATT0_VAL   0x0001c391
-#define        CONFIG_SYS_MCATT1_VAL   0x0001c391
-#define        CONFIG_SYS_MCIO0_VAL    0x00014611
-#define        CONFIG_SYS_MCIO1_VAL    0x0001c391
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/palmtc.h b/include/configs/palmtc.h
deleted file mode 100644 (file)
index 81c3f02..0000000
+++ /dev/null
@@ -1,219 +0,0 @@
-/*
- * Palm Tungsten|C configuration file
- *
- * Copyright (C) 2009-2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef        __CONFIG_H
-#define        __CONFIG_H
-
-#include <asm/arch/pxa-regs.h>
-
-/*
- * High Level Board Configuration Options
- */
-#define        CONFIG_CPU_PXA25X                       1       /* Intel PXA255 CPU */
-#define        CONFIG_PALMTC                   1       /* Palm Tungsten|C board */
-
-/* we will never enable dcache, because we have to setup MMU first */
-#define CONFIG_SYS_DCACHE_OFF
-
-/*
- * Environment settings
- */
-#define        CONFIG_ENV_OVERWRITE
-#define        CONFIG_SYS_MALLOC_LEN           (128*1024)
-#define        CONFIG_SYS_TEXT_BASE    0x0
-
-#define        CONFIG_BOOTCOMMAND                                              \
-       "if mmc init && fatload mmc 0 0xa0000000 uboot.script ; then "  \
-               "source 0xa0000000; "                                   \
-       "else "                                                         \
-               "bootm 0x80000; "                                       \
-       "fi; "
-#define        CONFIG_BOOTARGS                                                 \
-       "console=tty0 console=ttyS0,115200"
-#define        CONFIG_TIMESTAMP
-#define        CONFIG_BOOTDELAY                2       /* Autoboot delay */
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-
-#define        CONFIG_LZMA                     /* LZMA compression support */
-
-/*
- * Serial Console Configuration
- * STUART - the lower serial port on Colibri board
- */
-#define        CONFIG_PXA_SERIAL
-#define        CONFIG_FFUART                   1
-#define CONFIG_CONS_INDEX              3
-#define        CONFIG_BAUDRATE                 115200
-
-/*
- * Bootloader Components Configuration
- */
-#define        CONFIG_CMD_ENV
-#define        CONFIG_CMD_MMC
-#define        CONFIG_LCD
-#define        CONFIG_PXA_LCD
-
-/*
- * MMC Card Configuration
- */
-#ifdef CONFIG_CMD_MMC
-#define        CONFIG_MMC
-#define        CONFIG_GENERIC_MMC
-#define        CONFIG_PXA_MMC_GENERIC
-#define        CONFIG_SYS_MMC_BASE             0xF0000000
-#define        CONFIG_CMD_FAT
-#define        CONFIG_CMD_EXT2
-#define        CONFIG_DOS_PARTITION
-#endif
-
-/*
- * LCD
- */
-#ifdef CONFIG_LCD
-#define        CONFIG_ACX517AKN
-#define        CONFIG_VIDEO_LOGO
-#define        CONFIG_CMD_BMP
-#define        CONFIG_SPLASH_SCREEN
-#define        CONFIG_SPLASH_SCREEN_ALIGN
-#define        CONFIG_VIDEO_BMP_GZIP
-#define        CONFIG_VIDEO_BMP_RLE8
-#define        CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  (2 << 20)
-#endif
-
-/*
- * KGDB
- */
-#ifdef CONFIG_CMD_KGDB
-#define        CONFIG_KGDB_BAUDRATE            230400  /* kgdb serial port speed */
-#endif
-
-/*
- * HUSH Shell Configuration
- */
-#define        CONFIG_SYS_HUSH_PARSER          1
-
-#define        CONFIG_SYS_LONGHELP
-#define        CONFIG_SYS_CBSIZE               256
-#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_DEVICE_NULLDEV       1
-
-/*
- * Clock Configuration
- */
-#define        CONFIG_SYS_CPUSPEED             0x161           /* 400MHz;L=1 M=3 T=1 */
-
-/*
- * DRAM Map
- */
-#define        CONFIG_NR_DRAM_BANKS            1               /* 1 bank of DRAM */
-#define        PHYS_SDRAM_1                    0xa0000000      /* SDRAM Bank #1 */
-#define        PHYS_SDRAM_1_SIZE               0x04000000      /* 64 MB */
-
-#define        CONFIG_SYS_DRAM_BASE            0xa0000000      /* CS0 */
-#define        CONFIG_SYS_DRAM_SIZE            0x04000000      /* 64 MB DRAM */
-
-#define        CONFIG_SYS_MEMTEST_START        0xa0400000      /* memtest works on */
-#define        CONFIG_SYS_MEMTEST_END          0xa0800000      /* 4 ... 8 MB in DRAM */
-
-#define        CONFIG_SYS_LOAD_ADDR            CONFIG_SYS_DRAM_BASE
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         0xfffff800
-
-/*
- * NOR FLASH
- */
-#ifdef CONFIG_CMD_FLASH
-#define        PHYS_FLASH_1                    0x00000000      /* Flash Bank #1 */
-#define        PHYS_FLASH_SIZE                 0x01000000      /* 16 MB */
-#define        CONFIG_SYS_FLASH_BASE           PHYS_FLASH_1
-
-#define        CONFIG_SYS_FLASH_CFI
-#define        CONFIG_FLASH_CFI_DRIVER         1
-#define        CONFIG_SYS_FLASH_CFI_WIDTH      FLASH_CFI_32BIT
-
-#define        CONFIG_SYS_MAX_FLASH_BANKS      1
-#define        CONFIG_SYS_MAX_FLASH_SECT       64
-
-#define        CONFIG_SYS_FLASH_USE_BUFFER_WRITE       1
-
-#define        CONFIG_SYS_FLASH_ERASE_TOUT     240000
-#define        CONFIG_SYS_FLASH_WRITE_TOUT     240000
-#define        CONFIG_SYS_FLASH_LOCK_TOUT      240000
-#define        CONFIG_SYS_FLASH_UNLOCK_TOUT    240000
-#define        CONFIG_SYS_FLASH_PROTECTION
-
-#define        CONFIG_ENV_IS_IN_FLASH          1
-#define        CONFIG_ENV_SECT_SIZE            0x40000
-#else
-#define        CONFIG_SYS_NO_FLASH
-#define        CONFIG_ENV_IS_NOWHERE
-#endif
-
-#define        CONFIG_SYS_MONITOR_BASE         0x0
-#define        CONFIG_SYS_MONITOR_LEN          0x40000
-
-#define        CONFIG_ENV_SIZE                 0x4000
-#define        CONFIG_ENV_ADDR                 0x40000
-
-/*
- * GPIO settings
- */
-#define        CONFIG_SYS_GAFR0_L_VAL  0x00011004
-#define        CONFIG_SYS_GAFR0_U_VAL  0xa5000008
-#define        CONFIG_SYS_GAFR1_L_VAL  0x60888050
-#define        CONFIG_SYS_GAFR1_U_VAL  0xaaa50aaa
-#define        CONFIG_SYS_GAFR2_L_VAL  0x0aaaaaaa
-#define        CONFIG_SYS_GAFR2_U_VAL  0x00000000
-#define        CONFIG_SYS_GPCR0_VAL    0x0
-#define        CONFIG_SYS_GPCR1_VAL    0x0
-#define        CONFIG_SYS_GPCR2_VAL    0x0
-#define        CONFIG_SYS_GPDR0_VAL    0xcfff8140
-#define        CONFIG_SYS_GPDR1_VAL    0xfcbfbef3
-#define        CONFIG_SYS_GPDR2_VAL    0x0001ffff
-#define        CONFIG_SYS_GPSR0_VAL    0x00010f8f
-#define        CONFIG_SYS_GPSR1_VAL    0x00bf5de5
-#define        CONFIG_SYS_GPSR2_VAL    0x03fe0800
-
-#define        CONFIG_SYS_PSSR_VAL     PSSR_RDH
-
-/* Clock setup:
- * CKEN[1] - PWM1 ; CKEN[6] - FFUART
- * CKEN[12] - MMC ; CKEN[16] - LCD
- */
-#define        CONFIG_SYS_CKEN         0x00011042
-#define        CONFIG_SYS_CCCR         0x00000161
-
-/*
- * Memory settings
- */
-#define        CONFIG_SYS_MSC0_VAL     0x800092c2
-#define        CONFIG_SYS_MSC1_VAL     0x80008000
-#define        CONFIG_SYS_MSC2_VAL     0x80008000
-#define        CONFIG_SYS_MDCNFG_VAL   0x00001ac9
-#define        CONFIG_SYS_MDREFR_VAL   0x00118018
-#define        CONFIG_SYS_MDMRS_VAL    0x00220032
-#define        CONFIG_SYS_FLYCNFG_VAL  0x01fe01fe
-#define        CONFIG_SYS_SXCNFG_VAL   0x00000000
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define        CONFIG_SYS_MECR_VAL     0x00000000
-#define        CONFIG_SYS_MCMEM0_VAL   0x00010504
-#define        CONFIG_SYS_MCMEM1_VAL   0x00010504
-#define        CONFIG_SYS_MCATT0_VAL   0x00010504
-#define        CONFIG_SYS_MCATT1_VAL   0x00010504
-#define        CONFIG_SYS_MCIO0_VAL    0x00010e04
-#define        CONFIG_SYS_MCIO1_VAL    0x00010e04
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/palmtreo680.h b/include/configs/palmtreo680.h
deleted file mode 100644 (file)
index 5ffed82..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Palm Treo 680 configuration file
- *
- * Copyright (C) 2013 Mike Dunn <mikedunn@newsguy.com>
- *
- * This file is released under the terms of GPL v2 and any later version.
- * See the file COPYING in the root directory of the source tree for details.
- *
- */
-
-#ifndef        __CONFIG_H
-#define        __CONFIG_H
-
-/*
- * High Level Board Configuration Options
- */
-#define CONFIG_CPU_PXA27X
-#define CONFIG_PALMTREO680
-#define CONFIG_MACH_TYPE                MACH_TYPE_TREO680
-
-#define CONFIG_SYS_MALLOC_LEN           (4096*1024)
-
-#define CONFIG_LZMA
-
-/*
- * Serial Console Configuration
- */
-#define CONFIG_PXA_SERIAL
-#define CONFIG_FFUART                   1
-#define CONFIG_BAUDRATE                 9600
-#define CONFIG_SYS_BAUDRATE_TABLE       { 9600, 19200, 38400, 57600, 115200 }
-#define CONFIG_CONS_INDEX               3
-
-/* we have nand (although technically nand *is* flash...) */
-#define CONFIG_SYS_NO_FLASH
-
-#define CONFIG_LCD
-/* #define CONFIG_KEYBOARD */  /* TODO */
-
-/*
- * Bootloader Components Configuration
- */
-#define CONFIG_CMD_ENV
-#define CONFIG_CMD_MMC
-#define CONFIG_CMD_NAND
-
-#define CONFIG_CMDLINE_TAG
-#define CONFIG_SETUP_MEMORY_TAGS
-
-/*
- * MMC Card Configuration
- */
-#ifdef CONFIG_CMD_MMC
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_PXA_MMC_GENERIC
-
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_EXT2
-#define CONFIG_DOS_PARTITION
-#endif
-
-/*
- * LCD
- */
-#ifdef CONFIG_LCD
-#define CONFIG_PXA_LCD
-#define CONFIG_ACX544AKN
-#define CONFIG_LCD_LOGO
-#define LCD_BPP LCD_COLOR16
-#define CONFIG_FB_ADDR 0x5c000000    /* internal SRAM */
-#define CONFIG_CMD_BMP
-#define CONFIG_SPLASH_SCREEN         /* requires "splashimage" env var */
-#define CONFIG_SPLASH_SCREEN_ALIGN   /* requires "splashpos" env var */
-#define CONFIG_VIDEO_BMP_GZIP
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  (2 << 20)
-
-#endif
-
-/*
- * KGDB
- */
-#ifdef CONFIG_CMD_KGDB
-#define CONFIG_KGDB_BAUDRATE            230400  /* kgdb serial port speed */
-#endif
-
-/*
- * HUSH Shell Configuration
- */
-#define CONFIG_SYS_HUSH_PARSER          1
-#define CONFIG_SYS_PROMPT_HUSH_PS2      "> "
-
-#define CONFIG_SYS_LONGHELP
-#undef CONFIG_SYS_PROMPT
-#ifdef CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_PROMPT               "$ "
-#else
-#endif
-#define CONFIG_SYS_CBSIZE               256
-#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_DEVICE_NULLDEV       1
-
-/*
- * Clock Configuration
- */
-#define CONFIG_SYS_CPUSPEED             0x210           /* 416MHz ; N=2,L=16 */
-
-/*
- * Stack sizes
- */
-#define CONFIG_STACKSIZE                (128*1024)      /* regular stack */
-#ifdef CONFIG_USE_IRQ
-#define CONFIG_STACKSIZE_IRQ            (4*1024)        /* IRQ stack */
-#define CONFIG_STACKSIZE_FIQ            (4*1024)        /* FIQ stack */
-#endif
-
-/*
- * DRAM Map
- */
-#define CONFIG_NR_DRAM_BANKS            1               /* 1 bank of DRAM */
-#define PHYS_SDRAM_1                    0xa0000000      /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE               0x04000000      /* 64 MB */
-
-#define CONFIG_SYS_DRAM_BASE            0xa0000000
-#define CONFIG_SYS_DRAM_SIZE            0x04000000      /* 64 MB DRAM */
-
-#define CONFIG_SYS_MEMTEST_START        0xa0400000      /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END          0xa0800000      /* 4 ... 8 MB in DRAM */
-#define CONFIG_SYS_LOAD_ADDR            CONFIG_SYS_DRAM_BASE
-#define CONFIG_SYS_SDRAM_BASE           PHYS_SDRAM_1
-
-/*
- * GPIO settings
- */
-#define CONFIG_SYS_GAFR0_L_VAL  0x0E000000
-#define CONFIG_SYS_GAFR0_U_VAL  0xA500001A
-#define CONFIG_SYS_GAFR1_L_VAL  0x60000002
-#define CONFIG_SYS_GAFR1_U_VAL  0xAAA07959
-#define CONFIG_SYS_GAFR2_L_VAL  0x02AAAAAA
-#define CONFIG_SYS_GAFR2_U_VAL  0x41440F08
-#define CONFIG_SYS_GAFR3_L_VAL  0x56AA95FF
-#define CONFIG_SYS_GAFR3_U_VAL  0x00001401
-#define CONFIG_SYS_GPCR0_VAL    0x1FF80400
-#define CONFIG_SYS_GPCR1_VAL    0x03003FC1
-#define CONFIG_SYS_GPCR2_VAL    0x01C1E000
-#define CONFIG_SYS_GPCR3_VAL    0x01C1E000
-#define CONFIG_SYS_GPDR0_VAL    0xCFF90400
-#define CONFIG_SYS_GPDR1_VAL    0xFB22BFC1
-#define CONFIG_SYS_GPDR2_VAL    0x93CDFFDF
-#define CONFIG_SYS_GPDR3_VAL    0x0069FF81
-#define CONFIG_SYS_GPSR0_VAL    0x02000018
-#define CONFIG_SYS_GPSR1_VAL    0x00000000
-#define CONFIG_SYS_GPSR2_VAL    0x000C0000
-#define CONFIG_SYS_GPSR3_VAL    0x00080000
-
-#define CONFIG_SYS_PSSR_VAL     0x30
-
-/*
- * Clock settings
- */
-#define CONFIG_SYS_CKEN         0x01ffffff
-#define CONFIG_SYS_CCCR         0x02000210
-
-/*
- * Memory settings
- */
-#define CONFIG_SYS_MSC0_VAL     0x7ff844c8
-#define CONFIG_SYS_MSC1_VAL     0x7ff86ab4
-#define CONFIG_SYS_MSC2_VAL     0x7ff87ff8
-#define CONFIG_SYS_MDCNFG_VAL   0x0B880acd
-#define CONFIG_SYS_MDREFR_VAL   0x201fa031
-#define CONFIG_SYS_MDMRS_VAL    0x00320032
-#define CONFIG_SYS_FLYCNFG_VAL  0x00000000
-#define CONFIG_SYS_SXCNFG_VAL   0x40044004
-#define CONFIG_SYS_MECR_VAL     0x00000003
-#define CONFIG_SYS_MCMEM0_VAL   0x0001c391
-#define CONFIG_SYS_MCMEM1_VAL   0x0001c391
-#define CONFIG_SYS_MCATT0_VAL   0x0001c391
-#define CONFIG_SYS_MCATT1_VAL   0x0001c391
-#define CONFIG_SYS_MCIO0_VAL    0x00014611
-#define CONFIG_SYS_MCIO1_VAL    0x0001c391
-
-/*
- * USB
- */
-#define CONFIG_USB_DEVICE
-#define CONFIG_USB_TTY
-#define CONFIG_USB_DEV_PULLUP_GPIO 114
-
-/*
- * SPL
- */
-#define CONFIG_SPL_TEXT_BASE    0xa1700000 /* IPL loads SPL here */
-#define CONFIG_SPL_STACK        0x5c040000 /* end of internal SRAM */
-#define CONFIG_SPL_NAND_SUPPORT /* build libnand for spl */
-#define CONFIG_SPL_NAND_DOCG4   /* use lean docg4 nand spl driver */
-#define CONFIG_SPL_LIBGENERIC_SUPPORT  /* spl uses memcpy */
-
-/*
- * NAND
- */
-#define CONFIG_NAND_DOCG4
-#define CONFIG_SYS_NAND_SELF_INIT
-#define CONFIG_SYS_MAX_NAND_DEVICE 1 /* only one device */
-#define CONFIG_SYS_NAND_BASE 0x00000000 /* mapped to reset vector */
-#define CONFIG_SYS_NAND_PAGE_SIZE 0x200
-#define CONFIG_SYS_NAND_BLOCK_SIZE 0x40000
-#define CONFIG_BITREVERSE       /* needed by docg4 driver */
-#define CONFIG_BCH              /* needed by docg4 driver */
-
-/*
- * IMPORTANT NOTE: this is the size of the concatenated spl + u-boot image.  It
- * will be rounded up to the next 64k boundary (the spl flash block size), so it
- * does not have to be exact, but you must ensure that it is not less than the
- * actual image size, or it may fail to boot (bricked phone)!
- * (Tip: reduces to three blocks with lcd and mmc support removed from u-boot.)
-*/
-#define CONFIG_SYS_NAND_U_BOOT_SIZE 0x40000 /* four 64k flash blocks */
-
-/*
- * This is the byte offset into the flash at which the concatenated spl + u-boot
- * image is placed.  It must be at the start of a block (256k boundary).  Blocks
- * 0 - 5 are write-protected, so we start at block 6.
- */
-#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x180000  /* block 6 */
-
-/* DRAM address to which u-boot proper is loaded (before it relocates itself) */
-#define CONFIG_SYS_NAND_U_BOOT_DST  0xa0000000
-#define CONFIG_SYS_NAND_U_BOOT_START CONFIG_SYS_NAND_U_BOOT_DST
-
-/* passed to linker by Makefile as arg to -Ttext option */
-#define CONFIG_SYS_TEXT_BASE 0xa0000000
-
-#define CONFIG_SYS_INIT_SP_ADDR         0x5c040000 /* end of internal SRAM */
-
-/*
- * environment
- */
-#define CONFIG_ENV_IS_NOWHERE
-#define CONFIG_BUILD_ENVCRC
-#define CONFIG_ENV_SIZE 0x200
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV
-#define CONFIG_EXTRA_ENV_SETTINGS  \
-       "stdin=usbtty\0"           \
-       "stdout=usbtty\0"          \
-       "stderr=usbtty"
-#define CONFIG_BOOTARGS "mtdparts=Msys_Diskonchip_G4:1536k(protected_part)ro,1024k(bootloader_part),-(filesys_part) \
-ip=192.168.11.102:::255.255.255.0:treo:usb0"
-#define CONFIG_BOOTDELAY   3
-
-#if 0 /* example: try 2nd mmc partition, then nand */
-#define CONFIG_BOOTCOMMAND                                              \
-       "mmc rescan; "                                                  \
-       "if mmcinfo && ext2load mmc 0:2 0xa1000000 uImage; then "       \
-           "bootm 0xa1000000; "                                        \
-       "elif nand read 0xa1000000 0x280000 0x240000; then "            \
-           "bootm 0xa1000000; "                                        \
-       "fi; "
-#endif
-
-/* u-boot lives at end of SDRAM, so use start of SDRAM for stand alone apps */
-#define CONFIG_STANDALONE_LOAD_ADDR 0xa0000000
-
-#define CONFIG_SYS_DCACHE_OFF
-#define CONFIG_SYS_ICACHE_OFF
-
-#endif  /* __CONFIG_H */
diff --git a/include/configs/pcs440ep.h b/include/configs/pcs440ep.h
deleted file mode 100644 (file)
index 77e20cf..0000000
+++ /dev/null
@@ -1,457 +0,0 @@
-/*
- * (C) Copyright 2006
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/************************************************************************
- * pcs440ep.h - configuration for PCS440EP board
- ***********************************************************************/
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-
-/* new uImage format support */
-#define CONFIG_FIT             1
-#define CONFIG_OF_LIBFDT       1
-#define CONFIG_FIT_VERBOSE     1 /* enable fit_format_{error,warning}() */
-
-/*-----------------------------------------------------------------------
- * High Level Configuration Options
- *----------------------------------------------------------------------*/
-#define CONFIG_PCS440EP                1       /* Board is PCS440EP            */
-#define CONFIG_440EP           1       /* Specific PPC440EP support    */
-#define CONFIG_440             1       /* ... PPC440 family            */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFA0000
-
-#define CONFIG_SYS_CLK_FREQ    33333333    /* external freq to pll     */
-
-#define CONFIG_BOARD_EARLY_INIT_F 1     /* Call board_early_init_f     */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-/*-----------------------------------------------------------------------
- * Base addresses -- Note these are effective addresses where the
- * actual resources get mapped (not physical addresses)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_MONITOR_LEN         (384 * 1024)    /* Reserve 384 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (256 * 1024)    /* Reserve 256 kB for malloc()  */
-#define CONFIG_SYS_MONITOR_BASE        (-CONFIG_SYS_MONITOR_LEN)
-#define CONFIG_SYS_SDRAM_BASE          0x00000000          /* _must_ be 0      */
-#define CONFIG_SYS_FLASH_BASE          0xfff00000          /* start of FLASH   */
-#define CONFIG_SYS_PCI_MEMBASE         0xa0000000          /* mapped pci memory*/
-#define CONFIG_SYS_PCI_MEMBASE1        CONFIG_SYS_PCI_MEMBASE  + 0x10000000
-#define CONFIG_SYS_PCI_MEMBASE2        CONFIG_SYS_PCI_MEMBASE1 + 0x10000000
-#define CONFIG_SYS_PCI_MEMBASE3        CONFIG_SYS_PCI_MEMBASE2 + 0x10000000
-
-/*Don't change either of these*/
-#define CONFIG_SYS_PCI_BASE            0xe0000000          /* internal PCI regs*/
-/*Don't change either of these*/
-
-#define CONFIG_SYS_USB_DEVICE          0x50000000
-#define CONFIG_SYS_BOOT_BASE_ADDR      0xf0000000
-
-/*-----------------------------------------------------------------------
- * Initial RAM & stack pointer (placed in SDRAM)
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_INIT_RAM_DCACHE     1               /* d-cache as init ram  */
-#define CONFIG_SYS_INIT_RAM_ADDR       0x70000000              /* DCache       */
-#define CONFIG_SYS_INIT_RAM_SIZE       (4 << 10)
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Serial Port
- *----------------------------------------------------------------------*/
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK             /* no external clk used         */
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_SYS_BAUDRATE_TABLE  \
-    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200}
-
-/*-----------------------------------------------------------------------
- * Environment
- *----------------------------------------------------------------------*/
-#define CONFIG_ENV_IS_IN_FLASH     1   /* use FLASH for environment vars       */
-
-/*-----------------------------------------------------------------------
- * FLASH related
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_MAX_FLASH_BANKS     2       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_WORD_SIZE     unsigned char   /* flash word size (width)      */
-#define CONFIG_SYS_FLASH_ADDR0         0x5555  /* 1st address for flash config cycles  */
-#define CONFIG_SYS_FLASH_ADDR1         0x2AAA  /* 2nd address for flash config cycles  */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_SECT_SIZE   0x10000 /* size of one complete sector          */
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE-CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE                0x2000  /* Total Size of Environment Sector     */
-
-#define CONFIG_ENV_OVERWRITE   1
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR-CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-#endif /* CONFIG_ENV_IS_IN_FLASH */
-
-#define ENV_NAME_REVLEV        "revision_level"
-#define ENV_NAME_SOLDER        "solder_switch"
-#define ENV_NAME_DIP   "dip"
-
-/*-----------------------------------------------------------------------
- * DDR SDRAM
- *----------------------------------------------------------------------*/
-#define CONFIG_SPD_EEPROM               /* Use SPD EEPROM for setup             */
-#undef CONFIG_DDR_ECC                  /* don't use ECC                        */
-#define SPD_EEPROM_ADDRESS      {0x50}
-#define        CONFIG_PROG_SDRAM_TLB   1
-
-/*-----------------------------------------------------------------------
- * I2C
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          100000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR     (0xa4>>1)
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS 3
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS 10
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "hostname=pcs440ep\0"                                           \
-       "use_eeprom_ethaddr=default\0"                                  \
-       "cs_test=off\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,${baudrate}\0"\
-       "flash_nfs=run nfsargs addip addtty;"                           \
-               "bootm ${kernel_addr}\0"                                \
-       "flash_self=run ramargs addip addtty;"                          \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "net_nfs=tftp 200000 ${bootfile};run nfsargs addip addtty;"     \
-               "bootm\0"                                               \
-       "rootpath=/opt/eldk/ppc_4xx\0"                                  \
-       "bootfile=/tftpboot/pcs440ep/uImage\0"                          \
-       "kernel_addr=FFF00000\0"                                        \
-       "ramdisk_addr=FFF00000\0"                                       \
-       "load=tftp 100000 /tftpboot/pcs440ep/u-boot.bin\0"              \
-       "update=protect off FFFA0000 FFFFFFFF;era FFFA0000 FFFFFFFF;"   \
-               "cp.b 100000 FFFA0000 60000\0"                          \
-       "upd=run load update\0"                                         \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled            */
-#else
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-#endif
-
-/* check U-Boot image with SHA1 sum */
-#define CONFIG_SHA1_CHECK_UB_IMG       1
-#define CONFIG_SHA1_START              CONFIG_SYS_MONITOR_BASE
-#define CONFIG_SHA1_LEN                        CONFIG_SYS_MONITOR_LEN
-
-/*-----------------------------------------------------------------------
- * Definitions for status LED
- */
-#define CONFIG_STATUS_LED      1       /* Status LED enabled           */
-#define CONFIG_BOARD_SPECIFIC_LED      1
-
-#define STATUS_LED_BIT         0x08                    /* DIAG1 is on GPIO_PPC_1 */
-#define STATUS_LED_PERIOD      ((CONFIG_SYS_HZ / 2) / 5)       /* blink at 5 Hz */
-#define STATUS_LED_STATE       STATUS_LED_OFF
-#define STATUS_LED_BIT1                0x04                    /* DIAG2 is on GPIO_PPC_2 */
-#define STATUS_LED_PERIOD1     ((CONFIG_SYS_HZ / 2) / 5)       /* blink at 5 Hz */
-#define STATUS_LED_STATE1      STATUS_LED_ON
-#define STATUS_LED_BIT2                0x02                    /* DIAG3 is on GPIO_PPC_3 */
-#define STATUS_LED_PERIOD2     ((CONFIG_SYS_HZ / 2) / 5)       /* blink at 5 Hz */
-#define STATUS_LED_STATE2      STATUS_LED_OFF
-#define STATUS_LED_BIT3                0x01                    /* DIAG4 is on GPIO_PPC_4 */
-#define STATUS_LED_PERIOD3     ((CONFIG_SYS_HZ / 2) / 5)       /* blink at 5 Hz */
-#define STATUS_LED_STATE3      STATUS_LED_OFF
-
-#define CONFIG_SHOW_BOOT_PROGRESS      1
-
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_HAS_ETH1                1       /* add support for "eth1addr"   */
-#define CONFIG_PHY_ADDR                1       /* PHY address, See schematics  */
-#define CONFIG_PHY1_ADDR        2
-
-#define CONFIG_SYS_RX_ETH_BUFFER       32      /* Number of ethernet rx buffers & descriptors */
-
-#define CONFIG_NETCONSOLE              /* include NetConsole support   */
-
-/* Partitions */
-#define CONFIG_MAC_PARTITION
-#define CONFIG_DOS_PARTITION
-#define CONFIG_ISO_PARTITION
-
-#ifdef CONFIG_440EP
-/* USB */
-#define CONFIG_USB_OHCI
-#define CONFIG_USB_STORAGE
-
-/*Comment this out to enable USB 1.1 device*/
-#define USB_2_0_DEVICE
-#endif /*CONFIG_440EP*/
-
-#ifdef DEBUG
-#define CONFIG_PANIC_HANG
-#else
-#define CONFIG_HW_WATCHDOG                     /* watchdog */
-#endif
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IDE
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_REGINFO
-#define CONFIG_CMD_REISER
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_USB
-
-#define CONFIG_SUPPORT_VFAT
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size  */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on           */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM        */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-#define CONFIG_LYNXKDI          1       /* support kdi files            */
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-/* General PCI */
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#undef  CONFIG_PCI_PNP                 /* do (not) pci plug-and-play   */
-#define CONFIG_PCI_SCAN_SHOW            /* show pci devices on startup  */
-#define CONFIG_SYS_PCI_TARGBASE        0x80000000 /* PCIaddr mapped to CONFIG_SYS_PCI_MEMBASE*/
-
-/* Board-specific PCI */
-#define CONFIG_SYS_PCI_TARGET_INIT
-#define CONFIG_SYS_PCI_MASTER_INIT
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x10e8  /* AMCC */
-#define CONFIG_SYS_PCI_SUBSYS_ID       0xcafe  /* Whatever */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- *----------------------------------------------------------------------*/
-#define FLASH_BASE0_PRELIM     0xFFF00000      /* FLASH bank #0        */
-#define FLASH_BASE1_PRELIM     0xFFF80000      /* FLASH bank #1        */
-
-#define CONFIG_SYS_FLASH               FLASH_BASE0_PRELIM
-#define CONFIG_SYS_SRAM                0xF1000000
-#define CONFIG_SYS_FPGA                0xF2000000
-#define CONFIG_SYS_CF1                 0xF0000000
-#define CONFIG_SYS_CF2                 0xF0100000
-
-/* Memory Bank 0 (Flash Bank 0, NOR-FLASH) initialization                      */
-#define CONFIG_SYS_EBC_PB0AP           0x02010000      /* TWT=4,OEN=1                  */
-#define CONFIG_SYS_EBC_PB0CR           (CONFIG_SYS_FLASH | 0x18000) /* BS=1MB,BU=R/W,BW=8bit   */
-
-/* Memory Bank 1 (SRAM) initialization                                         */
-#define CONFIG_SYS_EBC_PB1AP           0x01810040      /* TWT=3,OEN=1,BEM=1            */
-#define CONFIG_SYS_EBC_PB1CR           (CONFIG_SYS_SRAM | 0x5A000) /* BS=4MB,BU=R/W,BW=16bit   */
-
-/* Memory Bank 2 (FPGA) initialization                                         */
-#define CONFIG_SYS_EBC_PB2AP           0x01010440      /* TWT=2,OEN=1,TH=2,BEM=1       */
-#define CONFIG_SYS_EBC_PB2CR           (CONFIG_SYS_FPGA | 0x5A000) /* BS=4MB,BU=R/W,BW=16bit   */
-
-/* Memory Bank 3 (CompactFlash) initialization                                 */
-#define CONFIG_SYS_EBC_PB3AP           0x080BD400
-#define CONFIG_SYS_EBC_PB3CR           (CONFIG_SYS_CF1 | 0x1A000) /* BS=1MB,BU=R/W,BW=16bit    */
-
-/* Memory Bank 4 (CompactFlash) initialization                                 */
-#define CONFIG_SYS_EBC_PB4AP           0x080BD400
-#define CONFIG_SYS_EBC_PB4CR           (CONFIG_SYS_CF2 | 0x1A000) /* BS=1MB,BU=R/W,BW=16bit    */
-
-/*-----------------------------------------------------------------------
- * PPC440 GPIO Configuration
- */
-#define CONFIG_SYS_4xx_GPIO_TABLE { /*   Out                  GPIO     Alternate1      Alternate2   Alternate3 */ \
-{                                                                                      \
-/* GPIO Core 0 */                                                                      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO0   EBC_ADDR(7)     DMA_REQ(2)      */ \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO1   EBC_ADDR(6)     DMA_ACK(2)      */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO2   EBC_ADDR(5)     DMA_EOT/TC(2)   */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO3   EBC_ADDR(4)     DMA_REQ(3)      */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO4   EBC_ADDR(3)     DMA_ACK(3)      */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO5   EBC_ADDR(2)     DMA_EOT/TC(3)   */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO6   EBC_CS_N(1)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO7   EBC_CS_N(2)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO8   EBC_CS_N(3)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO9   EBC_CS_N(4)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO10  EBC_CS_N(5)                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO11  EBC_BUS_ERR                     */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO12  ZII_p0Rxd(0)                    */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO13  ZII_p0Rxd(1)                    */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO14  ZII_p0Rxd(2)                    */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO15  ZII_p0Rxd(3)                    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO16  ZII_p0Txd(0)                    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO17  ZII_p0Txd(1)                    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO18  ZII_p0Txd(2)                    */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO19  ZII_p0Txd(3)                    */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO20  ZII_p0Rx_er                     */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO21  ZII_p0Rx_dv                     */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO22  ZII_p0RxCrs                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO23  ZII_p0Tx_er                     */      \
-{GPIO0_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO24  ZII_p0Tx_en                     */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO25  ZII_p0Col                       */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO26                  USB2D_RXVALID   */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO27  EXT_EBC_REQ     USB2D_RXERROR   */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO28                  USB2D_TXVALID   */      \
-{GPIO0_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO29  EBC_EXT_HDLA    USB2D_PAD_SUSPNDM */    \
-{GPIO0_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO30  EBC_EXT_ACK     USB2D_XCVRSELECT*/      \
-{GPIO0_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO31  EBC_EXR_BUSREQ  USB2D_TERMSELECT*/      \
-},                                                                                     \
-{                                                                                      \
-/* GPIO Core 1 */                                                                      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO32  USB2D_OPMODE0                   */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO33  USB2D_OPMODE1                   */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_ALT3, GPIO_OUT_NO_CHG}, /* GPIO34  UART0_DCD_N     UART1_DSR_CTS_N UART2_SOUT*/ \
-{GPIO1_BASE, GPIO_IN,  GPIO_ALT3, GPIO_OUT_NO_CHG}, /* GPIO35  UART0_8PIN_DSR_N UART1_RTS_DTR_N UART2_SIN*/ \
-{GPIO1_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO36  UART0_8PIN_CTS_N                UART3_SIN*/ \
-{GPIO1_BASE, GPIO_OUT, GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO37  UART0_RTS_N                     */      \
-{GPIO1_BASE, GPIO_OUT, GPIO_ALT2, GPIO_OUT_NO_CHG}, /* GPIO38  UART0_DTR_N     UART1_SOUT      */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_ALT2, GPIO_OUT_NO_CHG}, /* GPIO39  UART0_RI_N      UART1_SIN       */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO40  UIC_IRQ(0)                      */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO41  UIC_IRQ(1)                      */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO42  UIC_IRQ(2)                      */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO43  UIC_IRQ(3)                      */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_ALT1, GPIO_OUT_NO_CHG}, /* GPIO44  UIC_IRQ(4)      DMA_ACK(1)      */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO45  UIC_IRQ(6)      DMA_EOT/TC(1)   */      \
-{GPIO1_BASE, GPIO_BI,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO46  UIC_IRQ(7)      DMA_REQ(0)      */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO47  UIC_IRQ(8)      DMA_ACK(0)      */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO48  UIC_IRQ(9)      DMA_EOT/TC(0)   */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO49  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO50  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO51  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO52  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO53  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO54  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO55  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO56  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO57  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO58  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO59  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO60  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO61  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO62  Unselect via TraceSelect Bit    */      \
-{GPIO1_BASE, GPIO_IN,  GPIO_SEL, GPIO_OUT_NO_CHG},  /* GPIO63  Unselect via TraceSelect Bit    */      \
-}                                                                                      \
-}
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-/*-----------------------------------------------------------------------
- * IDE/ATA stuff Supports IDE harddisk
- *-----------------------------------------------------------------------
- */
-
-#undef  CONFIG_IDE_8xx_PCCARD          /* Use IDE with PC Card Adapter */
-
-#undef  CONFIG_IDE_8xx_DIRECT          /* Direct IDE    not supported  */
-#undef  CONFIG_IDE_LED                 /* LED   for ide not supported  */
-
-#define CONFIG_SYS_IDE_MAXBUS          1       /* max. 1 IDE bus               */
-#define CONFIG_SYS_IDE_MAXDEVICE       1       /* max. 2 drives per IDE bus    */
-
-#define CONFIG_IDE_PREINIT     1
-#define CONFIG_IDE_RESET       1
-
-#define CONFIG_SYS_ATA_IDE0_OFFSET     0x0000
-
-#define CONFIG_SYS_ATA_BASE_ADDR       CONFIG_SYS_CF1
-
-/* Offset for data I/O                 */
-#define CONFIG_SYS_ATA_DATA_OFFSET     0
-
-/* Offset for normal register accesses */
-#define CONFIG_SYS_ATA_REG_OFFSET      (CONFIG_SYS_ATA_DATA_OFFSET)
-
-/* Offset for alternate registers      */
-#define CONFIG_SYS_ATA_ALT_OFFSET      (0x0000)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/pxa255_idp.h b/include/configs/pxa255_idp.h
deleted file mode 100644 (file)
index 332d79f..0000000
+++ /dev/null
@@ -1,335 +0,0 @@
-/*
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Copied from lubbock.h
- *
- * (C) Copyright 2004
- * BEC Systems <http://bec-systems.com>
- * Cliff Brake <cliff.brake@gmail.com>
- * Configuation settings for the Accelent/Vibren PXA255 IDP
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#include <asm/arch/pxa-regs.h>
-
-/*
- * If we are developing, we might want to start U-Boot from RAM
- * so we MUST NOT initialize critical regs like mem-timing ...
- */
-#undef CONFIG_SKIP_LOWLEVEL_INIT                       /* define for developing */
-#define        CONFIG_SYS_TEXT_BASE    0x0
-
-/*
- * define the following to enable debug blinks.  A debug blink function
- * must be defined in memsetup.S
- */
-#undef DEBUG_BLINK_ENABLE
-#undef DEBUG_BLINKC_ENABLE
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_CPU_PXA25X              1       /* This is an PXA250 CPU    */
-
-#undef CONFIG_LCD
-#ifdef CONFIG_LCD
-#define CONFIG_PXA_LCD
-#define CONFIG_SHARP_LM8V31
-#endif
-
-#define CONFIG_MMC             1
-#define CONFIG_DOS_PARTITION   1
-#define CONFIG_BOARD_LATE_INIT
-
-/* we will never enable dcache, because we have to setup MMU first */
-#define CONFIG_SYS_DCACHE_OFF
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN      (CONFIG_ENV_SIZE + 128*1024)
-
-/*
- * PXA250 IDP memory map information
- */
-
-#define IDP_CS5_ETH_OFFSET     0x03400000
-
-
-/*
- * Hardware drivers
- */
-#define CONFIG_SMC91111
-#define CONFIG_SMC91111_BASE   (PXA_CS5_PHYS + IDP_CS5_ETH_OFFSET + 0x300)
-#define CONFIG_SMC_USE_32_BIT  1
-/* #define CONFIG_SMC_USE_IOFUNCS */
-
-/* the following has to be set high -- suspect something is wrong with
- * with the tftp timeout routines. FIXME!!!
- */
-#define CONFIG_NET_RETRY_COUNT 100
-
-/*
- * select serial console configuration
- */
-#define CONFIG_PXA_SERIAL
-#define CONFIG_FFUART         1       /* we use FFUART on LUBBOCK */
-#define CONFIG_CONS_INDEX      3
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BAUDRATE                115200
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_DHCP
-
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOTCOMMAND     "bootm 40000"
-#define CONFIG_BOOTARGS                "root=/dev/mtdblock2 rootfstype=cramfs console=ttyS0,115200"
-
-#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS       1
-/* #define CONFIG_INITRD_TAG           1 */
-
-/*
- * Current memory map for Vibren supplied Linux images:
- *
- * Flash:
- * 0 - 0x3ffff (size = 0x40000): bootloader
- * 0x40000 - 0x13ffff (size = 0x100000): kernel
- * 0x140000 - 0x1f3ffff (size = 0x1e00000): jffs
- *
- * RAM:
- * 0xa0008000 - kernel is loaded
- * 0xa3000000 - Uboot runs (48MB into RAM)
- *
- */
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "prog_boot_mmc="                                                \
-                       "mw.b 0xa0000000 0xff 0x40000; "                \
-                       "if      mmcinit && "                           \
-                               "fatload mmc 0 0xa0000000 u-boot.bin; " \
-                       "then "                                         \
-                               "protect off 0x0 0x3ffff; "             \
-                               "erase 0x0 0x3ffff; "                   \
-                               "cp.b 0xa0000000 0x0 0x40000; "         \
-                               "reset;"                                \
-                       "fi\0"                                          \
-       "prog_uzImage_mmc="                                             \
-                       "mw.b 0xa0000000 0xff 0x100000; "               \
-                       "if      mmcinit && "                           \
-                               "fatload mmc 0 0xa0000000 uzImage; "    \
-                       "then "                                         \
-                               "protect off 0x40000 0xfffff; "         \
-                               "erase 0x40000 0xfffff; "               \
-                               "cp.b 0xa0000000 0x40000 0x100000; "    \
-                       "fi\0"                                          \
-       "prog_jffs_mmc="                                                \
-                       "mw.b 0xa0000000 0xff 0x1e00000; "              \
-                       "if      mmcinit && "                           \
-                               "fatload mmc 0 0xa0000000 root.jffs; "  \
-                       "then "                                         \
-                               "protect off 0x140000 0x1f3ffff; "      \
-                               "erase 0x140000 0x1f3ffff; "            \
-                               "cp.b 0xa0000000 0x140000 0x1e00000; "  \
-                       "fi\0"                                          \
-       "boot_mmc="                                                     \
-                       "if      mmcinit && "                           \
-                               "fatload mmc 0 0xa1000000 uzImage && "  \
-                       "then "                                         \
-                               "bootm 0xa1000000; "                    \
-                       "fi\0"                                          \
-       "prog_boot_net="                                                \
-                       "mw.b 0xa0000000 0xff 0x100000; "               \
-                       "if      bootp 0xa0000000 u-boot.bin; "         \
-                       "then "                                         \
-                               "protect off 0x0 0x3ffff; "             \
-                               "erase 0x0 0x3ffff; "                   \
-                               "cp.b 0xa0000000 0x0 0x40000; "         \
-                               "reset; "                               \
-                       "fi\0"                                          \
-       "prog_uzImage_net="                                             \
-                       "mw.b 0xa0000000 0xff 0x100000; "               \
-                       "if      bootp 0xa0000000 uzImage; "            \
-                       "then "                                         \
-                               "protect off 0x40000 0xfffff; "         \
-                               "erase 0x40000 0xfffff; "               \
-                               "cp.b 0xa0000000 0x40000 0x100000; "    \
-                       "fi\0"                                          \
-       "prog_jffs_net="                                                \
-                       "mw.b 0xa0000000 0xff 0x1e00000; "              \
-                       "if      bootp 0xa0000000 root.jffs; "          \
-                       "then "                                         \
-                               "protect off 0x140000 0x1f3ffff; "      \
-                               "erase 0x140000 0x1f3ffff; "            \
-                               "cp.b 0xa0000000 0x140000 0x1e00000; "  \
-                       "fi\0"
-
-
-/*     "erase_env="                    */
-/*                     "protect off"   */
-
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   115200          /* speed to run kgdb serial port */
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_HUSH_PARSER         1
-
-#define CONFIG_SYS_LONGHELP                            /* undef to save memory         */
-#undef CONFIG_SYS_PROMPT
-#ifdef CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_PROMPT              "$ "            /* Monitor Command Prompt */
-#else
-#endif
-#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_DEVICE_NULLDEV      1
-
-#define CONFIG_SYS_MEMTEST_START       0xa0400000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0xa0800000      /* 4 ... 8 MB in DRAM   */
-
-#define CONFIG_SYS_LOAD_ADDR           0xa0800000      /* default load address */
-
-#define CONFIG_SYS_CPUSPEED            0x161           /* set core clock to 400/200/100 MHz */
-
-#define RTC    1                               /* enable 32KHz osc */
-
-#ifdef CONFIG_MMC
-#define        CONFIG_GENERIC_MMC
-#define        CONFIG_PXA_MMC_GENERIC
-#define CONFIG_CMD_MMC
-#define CONFIG_SYS_MMC_BASE            0xF0000000
-#endif
-
-/*
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS   1          /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1           0xa0000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE      0x04000000 /* 64 MB */
-#define PHYS_SDRAM_2           0xa4000000 /* SDRAM Bank #2 */
-#define PHYS_SDRAM_2_SIZE      0x00000000 /* 0 MB */
-#define PHYS_SDRAM_3           0xa8000000 /* SDRAM Bank #3 */
-#define PHYS_SDRAM_3_SIZE      0x00000000 /* 0 MB */
-#define PHYS_SDRAM_4           0xac000000 /* SDRAM Bank #4 */
-#define PHYS_SDRAM_4_SIZE      0x00000000 /* 0 MB */
-
-#define PHYS_FLASH_1           0x00000000 /* Flash Bank #1 */
-#define PHYS_FLASH_2           0x04000000 /* Flash Bank #2 */
-#define PHYS_FLASH_SIZE                0x02000000 /* 32 MB */
-#define PHYS_FLASH_BANK_SIZE   0x02000000 /* 32 MB Banks */
-#define PHYS_FLASH_SECT_SIZE   0x00040000 /* 256 KB sectors (x2) */
-
-#define CONFIG_SYS_DRAM_BASE           0xa0000000
-#define CONFIG_SYS_DRAM_SIZE           0x04000000
-
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         0xfffff800
-
-/*
- * GPIO settings
- */
-
-#define CONFIG_SYS_GAFR0_L_VAL 0x80001005
-#define CONFIG_SYS_GAFR0_U_VAL 0xa5128012
-#define CONFIG_SYS_GAFR1_L_VAL 0x699a9558
-#define CONFIG_SYS_GAFR1_U_VAL 0xaaa5aa6a
-#define CONFIG_SYS_GAFR2_L_VAL 0xaaaaaaaa
-#define CONFIG_SYS_GAFR2_U_VAL 0x2
-#define CONFIG_SYS_GPCR0_VAL   0x1800400
-#define CONFIG_SYS_GPCR1_VAL   0x0
-#define CONFIG_SYS_GPCR2_VAL   0x0
-#define CONFIG_SYS_GPDR0_VAL   0xc1818440
-#define CONFIG_SYS_GPDR1_VAL   0xfcffab82
-#define CONFIG_SYS_GPDR2_VAL   0x1ffff
-#define CONFIG_SYS_GPSR0_VAL   0x8000
-#define CONFIG_SYS_GPSR1_VAL   0x3f0002
-#define CONFIG_SYS_GPSR2_VAL   0x1c000
-
-#define CONFIG_SYS_PSSR_VAL            0x20
-
-#define        CONFIG_SYS_CCCR                 CCCR_L27|CCCR_M2|CCCR_N10
-#define        CONFIG_SYS_CKEN                 0x0
-
-/*
- * Memory settings
- */
-#define CONFIG_SYS_MSC0_VAL            0x29DCA4D2
-#define CONFIG_SYS_MSC1_VAL            0x43AC494C
-#define CONFIG_SYS_MSC2_VAL            0x39D449D4
-#define CONFIG_SYS_MDCNFG_VAL          0x090009C9
-#define CONFIG_SYS_MDREFR_VAL          0x0085C017
-#define CONFIG_SYS_MDMRS_VAL           0x00220022
-#define        CONFIG_SYS_FLYCNFG_VAL          0x00000000
-#define        CONFIG_SYS_SXCNFG_VAL           0x00000000
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define CONFIG_SYS_MECR_VAL            0x00000003
-#define CONFIG_SYS_MCMEM0_VAL          0x00014405
-#define CONFIG_SYS_MCMEM1_VAL          0x00014405
-#define CONFIG_SYS_MCATT0_VAL          0x00014405
-#define CONFIG_SYS_MCATT1_VAL          0x00014405
-#define CONFIG_SYS_MCIO0_VAL           0x00014405
-#define CONFIG_SYS_MCIO1_VAL           0x00014405
-
-/*
- * FLASH and environment organization
- */
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER        1
-
-#define CONFIG_SYS_MONITOR_BASE        0
-#define CONFIG_SYS_MONITOR_LEN         PHYS_FLASH_SECT_SIZE
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      128  /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      1
-
-/* timeout values are in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (25*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (25*CONFIG_SYS_HZ) /* Timeout for Flash Write */
-
-/* put cfg at end of flash for now */
-#define CONFIG_ENV_IS_IN_FLASH 1
- /* Addr of Environment Sector */
-#define CONFIG_ENV_ADDR                (PHYS_FLASH_1 + PHYS_FLASH_SIZE - 0x40000)
-#define CONFIG_ENV_SIZE                PHYS_FLASH_SECT_SIZE    /* Total Size of Environment Sector     */
-#define        CONFIG_ENV_SECT_SIZE    (PHYS_FLASH_SECT_SIZE / 16)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/qong.h b/include/configs/qong.h
deleted file mode 100644 (file)
index f34a54f..0000000
+++ /dev/null
@@ -1,283 +0,0 @@
-/*
- * Copyright (C) 2009, Ilya Yanok, Emcraft Systems, <yanok@emcraft.com>
- *
- * Configuration settings for the Dave/DENX QongEVB-LITE board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#include <asm/arch/imx-regs.h>
-
-/* High Level Configuration Options */
-#define CONFIG_MX31                    /* This is a mx31 */
-#define CONFIG_QONG
-
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-
-#define CONFIG_SYS_TEXT_BASE 0xa0000000
-
-#define CONFIG_CMDLINE_TAG                     /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 1536 * 1024)
-
-/*
- * Hardware drivers
- */
-
-#define CONFIG_MXC_UART
-#define CONFIG_MXC_UART_BASE   UART1_BASE
-
-#define CONFIG_MXC_GPIO
-#define CONFIG_HW_WATCHDOG
-#define CONFIG_IMX_WATCHDOG
-
-#define CONFIG_MXC_SPI
-#define CONFIG_DEFAULT_SPI_BUS 1
-#define CONFIG_DEFAULT_SPI_MODE        (SPI_MODE_0 | SPI_CS_HIGH)
-#define CONFIG_RTC_MC13XXX
-
-#define CONFIG_POWER
-#define CONFIG_POWER_SPI
-#define CONFIG_POWER_FSL
-#define CONFIG_FSL_PMIC_BUS    1
-#define CONFIG_FSL_PMIC_CS     0
-#define CONFIG_FSL_PMIC_CLK    100000
-#define CONFIG_FSL_PMIC_MODE   (SPI_MODE_0 | SPI_CS_HIGH)
-#define CONFIG_FSL_PMIC_BITLEN 32
-
-/* FPGA */
-#define CONFIG_FPGA
-#define CONFIG_QONG_FPGA
-#define CONFIG_FPGA_BASE       (CS1_BASE)
-#define CONFIG_FPGA_LATTICE
-#define CONFIG_FPGA_COUNT      1
-
-#ifdef CONFIG_QONG_FPGA
-/* Ethernet */
-#define CONFIG_DNET
-#define CONFIG_DNET_BASE       (CS1_BASE + QONG_FPGA_PERIPH_SIZE)
-
-/* Framebuffer and LCD */
-#define CONFIG_VIDEO
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_MX3
-#define CONFIG_VIDEO_LOGO
-#define CONFIG_VIDEO_SW_CURSOR
-#define CONFIG_VGA_AS_SINGLE_DEVICE
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV
-#define CONFIG_SPLASH_SCREEN
-#define CONFIG_CMD_BMP
-#define CONFIG_BMP_16BPP
-#define CONFIG_VIDEO_BMP_GZIP
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (512 << 10)
-
-/* USB */
-#define CONFIG_CMD_USB
-#ifdef CONFIG_CMD_USB
-#define CONFIG_USB_EHCI                        /* Enable EHCI USB support */
-#define CONFIG_USB_EHCI_MXC
-#define CONFIG_EHCI_HCD_INIT_AFTER_RESET
-#define CONFIG_MXC_USB_PORT    2
-#define CONFIG_MXC_USB_PORTSC  (MXC_EHCI_MODE_ULPI | MXC_EHCI_UTMI_8BIT)
-#define CONFIG_MXC_USB_FLAGS   MXC_EHCI_POWER_PINS_ENABLED
-#define CONFIG_EHCI_IS_TDI
-#define CONFIG_USB_STORAGE
-#define CONFIG_DOS_PARTITION
-#define CONFIG_SUPPORT_VFAT
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#endif /* CONFIG_CMD_USB */
-
-/*
- * Reducing the ARP timeout from default 5 seconds to 200ms we speed up the
- * initial TFTP transfer, should the user wish one, significantly.
- */
-#define CONFIG_ARP_TIMEOUT     200UL
-
-#endif /* CONFIG_QONG_FPGA */
-
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_BAUDRATE                115200
-
-/***********************************************************
- * Command definition
- ***********************************************************/
-#define CONFIG_CMD_CACHE
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SPI
-#define CONFIG_CMD_UNZIP
-
-#define CONFIG_BOARD_LATE_INIT
-
-#define CONFIG_BOOTDELAY       5
-
-#define CONFIG_LOADADDR                0x80800000      /* loadaddr env var */
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs}"                            \
-               " console=ttymxc0,${baudrate}\0"                        \
-       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0"              \
-       "addmisc=setenv bootargs ${bootargs}\0"                         \
-       "uboot_addr=A0000000\0"                                         \
-       "kernel_addr=A00C0000\0"                                        \
-       "ramdisk_addr=A0300000\0"                                       \
-       "u-boot=qong/u-boot.bin\0"                                      \
-       "kernel_addr_r=80800000\0"                                      \
-       "hostname=qong\0"                                               \
-       "bootfile=qong/uImage\0"                                        \
-       "rootpath=/opt/eldk-4.2-arm/armVFP\0"                           \
-       "flash_self=run ramargs addip addtty addmtd addmisc;"           \
-               "bootm ${kernel_addr} ${ramdisk_addr}\0"                \
-       "flash_nfs=run nfsargs addip addtty addmtd addmisc;"            \
-               "bootm ${kernel_addr}\0"                                \
-       "net_nfs=tftp ${kernel_addr_r} ${bootfile};"                    \
-               "run nfsargs addip addtty addmtd addmisc;"              \
-               "bootm\0"                                               \
-       "bootcmd=run flash_self\0"                                      \
-       "load=tftp ${loadaddr} ${u-boot}\0"                             \
-       "update=protect off " __stringify(CONFIG_SYS_MONITOR_BASE)      \
-               " +${filesize};era " __stringify(CONFIG_SYS_MONITOR_BASE)\
-               " +${filesize};cp.b ${fileaddr} "                       \
-               __stringify(CONFIG_SYS_MONITOR_BASE) " ${filesize}\0"   \
-       "upd=run load update\0"                                         \
-       "videomode=video=ctfb:x:640,y:480,depth:16,mode:0,pclk:40000,"  \
-               "le:120,ri:40,up:35,lo:10,hs:30,vs:3,sync:100663296,"   \
-               "vmode:0\0"                                             \
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP            /* undef to save memory */
-#define CONFIG_SYS_CBSIZE              512     /* Console I/O Buffer Size */
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE + \
-               sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS             32      /* max number of command args */
-/* Boot Argument Buffer Size */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE
-
-/* memtest works on first 255MB of RAM */
-#define CONFIG_SYS_MEMTEST_START       PHYS_SDRAM_1
-#define CONFIG_SYS_MEMTEST_END         (PHYS_SDRAM_1 + 0xff000000)
-
-#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
-
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_HUSH_PARSER                 /* Use the HUSH parser */
-
-#define CONFIG_MISC_INIT_R
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS   1
-#define PHYS_SDRAM_1           CSD0_BASE
-#define PHYS_SDRAM_1_SIZE      0x10000000      /* 256 MB */
-
-/*
- * NAND driver
- */
-
-#ifndef __ASSEMBLY__
-extern void qong_nand_plat_init(void *chip);
-extern int qong_nand_rdy(void *chip);
-#endif
-#define CONFIG_NAND_PLAT
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE   CS3_BASE
-#define NAND_PLAT_INIT() qong_nand_plat_init(nand)
-
-#define QONG_NAND_CLE(chip) ((unsigned long)(chip)->IO_ADDR_W | (1 << 24))
-#define QONG_NAND_ALE(chip) ((unsigned long)(chip)->IO_ADDR_W | (1 << 23))
-#define QONG_NAND_WRITE(addr, cmd) \
-       do { \
-               __REG8(addr) = cmd; \
-       } while (0)
-
-#define NAND_PLAT_WRITE_CMD(chip, cmd) QONG_NAND_WRITE(QONG_NAND_CLE(chip), cmd)
-#define NAND_PLAT_WRITE_ADR(chip, cmd) QONG_NAND_WRITE(QONG_NAND_ALE(chip), cmd)
-#define NAND_PLAT_DEV_READY(chip)      (qong_nand_rdy(chip))
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-#define CONFIG_SYS_FLASH_BASE          CS0_BASE
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks */
-/* max number of sectors on one chip */
-#define CONFIG_SYS_MAX_FLASH_SECT      1024
-/* Monitor at beginning of flash */
-#define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         0x40000         /* Reserve 256KiB */
-
-#define        CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_SECT_SIZE   0x20000
-#define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE
-#define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + 0x80000)
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
-#define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
-
-/*-----------------------------------------------------------------------
- * CFI FLASH driver setup
- */
-/* Flash memory is CFI compliant */
-#define CONFIG_SYS_FLASH_CFI
-/* Use drivers/cfi_flash.c */
-#define CONFIG_FLASH_CFI_DRIVER
-/* Use buffered writes (~10x faster) */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
-/* Use hardware sector protection */
-#define CONFIG_SYS_FLASH_PROTECTION
-
-/*
- * Filesystem
- */
-#define CONFIG_CMD_JFFS2
-#define CONFIG_CMD_UBI
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_LZO
-#define CONFIG_MTD_DEVICE              /* needed for mtdparts commands */
-#define CONFIG_FLASH_CFI_MTD
-#define MTDIDS_DEFAULT         "nor0=physmap-flash.0,"         \
-                               "nand0=gen_nand"
-#define MTDPARTS_DEFAULT       \
-       "mtdparts=physmap-flash.0:"                             \
-                       "512k(U-Boot),128k(env1),128k(env2),"   \
-                       "2304k(kernel),13m(ramdisk),-(user);"   \
-               "gen_nand:"                                     \
-                       "128m(nand)"
-
-/* additions for new relocation code, must be added to all boards */
-#define CONFIG_SYS_SDRAM_BASE          0x80000000
-#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
-#define CONFIG_SYS_INIT_RAM_SIZE               IRAM_SIZE
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)
-
-#define CONFIG_BOARD_EARLY_INIT_F
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/rd6281a.h b/include/configs/rd6281a.h
deleted file mode 100644 (file)
index a0120b0..0000000
+++ /dev/null
@@ -1,96 +0,0 @@
-/*
- * (C) Copyright 2009
- * Marvell Semiconductor <www.marvell.com>
- * Written-by: Prafulla Wadaskar <prafulla@marvell.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _CONFIG_RD6281A_H
-#define _CONFIG_RD6281A_H
-
-/*
- * Version number information
- */
-#define CONFIG_IDENT_STRING    "\nMarvell-RD6281A"
-
-/*
- * High Level Configuration Options (easy to change)
- */
-#define CONFIG_FEROCEON_88FR131        1       /* CPU Core subversion */
-#define CONFIG_KW88F6281       1       /* SOC Name */
-#define CONFIG_MACH_RD6281A            /* Machine type */
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* disable board lowlevel_init */
-
-/*
- * Commands configuration
- */
-#define CONFIG_SYS_NO_FLASH            /* Declare no flash (NOR/SPI) */
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ENV
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_USB
-#define CONFIG_CMD_IDE
-
-/*
- * mv-common.h should be defined after CMD configs since it used them
- * to enable certain macros
- */
-#include "mv-common.h"
-
-/*
- * Environment variables configurations
- */
-#ifdef CONFIG_CMD_NAND
-#define CONFIG_ENV_IS_IN_NAND          1
-#define CONFIG_ENV_SECT_SIZE           0x20000 /* 128K */
-#else
-#define CONFIG_ENV_IS_NOWHERE          1       /* if env in SDRAM */
-#endif
-/*
- * max 4k env size is enough, but in case of nand
- * it has to be rounded to sector size
- */
-#define CONFIG_ENV_SIZE                        0x20000 /* 128k */
-#define CONFIG_ENV_ADDR                        0x40000
-#define CONFIG_ENV_OFFSET              0x40000 /* env starts here */
-
-/*
- * Default environment variables
- */
-#define CONFIG_BOOTCOMMAND             "${x_bootcmd_kernel}; " \
-       "setenv bootargs ${x_bootargs} ${x_bootargs_root}; "    \
-       "${x_bootcmd_usb}; bootm 0x6400000;"
-
-#define CONFIG_MTDPARTS                "orion_nand:512k(uboot),"       \
-       "3m@1m(kernel),1m@4m(psm),13m@5m(rootfs) rw\0"
-
-#define CONFIG_EXTRA_ENV_SETTINGS      "x_bootargs=console"    \
-       "=ttyS0,115200 mtdparts="CONFIG_MTDPARTS        \
-       "x_bootcmd_kernel=nand read 0x6400000 0x100000 0x300000\0" \
-       "x_bootcmd_usb=usb start\0" \
-       "x_bootargs_root=root=/dev/mtdblock3 rw rootfstype=jffs2\0"
-
-/*
- * Ethernet Driver configuration
- */
-#ifdef CONFIG_CMD_NET
-#define CONFIG_MVGBE_PORTS     {1, 1}  /* enable both ports */
-#define CONFIG_MV88E61XX_MULTICHIP_ADRMODE
-#define CONFIG_DIS_AUTO_NEG_SPEED_GMII /*Disable Auto speed negociation */
-#define CONFIG_PHY_SPEED       _1000BASET      /*Force PHYspeed to 1GBPs */
-#define CONFIG_PHY_BASE_ADR    0x0A
-#define CONFIG_MV88E61XX_SWITCH        /* Enable MV88E61XX switch driver */
-#endif /* CONFIG_CMD_NET */
-
-/*
- * SATA Driver configuration
- */
-#ifdef CONFIG_MVSATA_IDE
-#define CONFIG_SYS_ATA_IDE0_OFFSET     MV_SATA_PORT0_OFFSET
-#define CONFIG_SYS_ATA_IDE1_OFFSET     MV_SATA_PORT1_OFFSET
-#endif /*CONFIG_MVSATA_IDE*/
-
-#endif /* _CONFIG_RD6281A_H */
diff --git a/include/configs/rk3288_common.h b/include/configs/rk3288_common.h
new file mode 100644 (file)
index 0000000..e8aec28
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#ifndef __CONFIG_RK3288_COMMON_H
+#define __CONFIG_RK3288_COMMON_H
+
+#include <asm/arch/hardware.h>
+
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_NR_DRAM_BANKS           1
+#define CONFIG_ENV_IS_NOWHERE
+#define CONFIG_ENV_SIZE                        0x2000
+#define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_SYS_MAXARGS             16
+#define CONFIG_BAUDRATE                        115200
+#define CONFIG_SYS_MALLOC_LEN          (32 << 20)
+#define CONFIG_SYS_CBSIZE              1024
+#define CONFIG_SKIP_LOWLEVEL_INIT
+#define CONFIG_SYS_THUMB_BUILD
+#define CONFIG_OF_LIBFDT
+#define CONFIG_DISPLAY_BOARDINFO
+
+#define CONFIG_SYS_TIMER_RATE          (24 * 1000 * 1000)
+#define CONFIG_SYS_TIMER_COUNTER       (TIMER7_BASE + 8)
+
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_LIBGENERIC_SUPPORT
+#define CONFIG_SPL_SERIAL_SUPPORT
+#define CONFIG_SYS_NS16550
+#define CONFIG_SYS_NS16550_MEM32
+#define CONFIG_SPL_BOARD_INIT
+
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MALLOC_SIMPLE
+#endif
+
+#define CONFIG_SYS_TEXT_BASE           0x00100000
+#define CONFIG_SYS_INIT_SP_ADDR                0x00100000
+#define CONFIG_SYS_LOAD_ADDR           0x00800800
+#define CONFIG_SPL_STACK               0xff718000
+#define CONFIG_SPL_TEXT_BASE           0xff704004
+
+/* MMC/SD IP block */
+#define CONFIG_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_MMC
+#define CONFIG_SDHCI
+#define CONFIG_DWMMC
+#define CONFIG_BOUNCE_BUFFER
+
+#define CONFIG_DOS_PARTITION
+#define CONFIG_CMD_FAT
+#define CONFIG_FAT_WRITE
+#define CONFIG_CMD_EXT2
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_FS_GENERIC
+#define CONFIG_PARTITION_UUIDS
+#define CONFIG_CMD_PART
+
+/* RAW SD card / eMMC locations. */
+#define CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR        256
+#define CONFIG_SYS_SPI_U_BOOT_OFFS     (128 << 10)
+
+/* FAT sd card locations. */
+#define CONFIG_SYS_MMCSD_FS_BOOT_PARTITION     1
+#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME                "u-boot.img"
+
+#define CONFIG_SPL_PINCTRL_SUPPORT
+#define CONFIG_SPL_GPIO_SUPPORT
+#define CONFIG_SPL_RAM_SUPPORT
+#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
+
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_TIME
+
+#define CONFIG_SYS_SDRAM_BASE          0
+#define CONFIG_NR_DRAM_BANKS           1
+#define SDRAM_BANK_SIZE                        (2UL << 30)
+
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI
+#define CONFIG_CMD_SF
+#define CONFIG_CMD_SPI
+#define CONFIG_SPI_FLASH_GIGADEVICE
+#define CONFIG_SF_DEFAULT_SPEED 20000000
+
+#define CONFIG_CMD_I2C
+
+#ifndef CONFIG_SPL_BUILD
+#include <config_distro_defaults.h>
+
+#define ENV_MEM_LAYOUT_SETTINGS \
+       "scriptaddr=0x00000000\0" \
+       "pxefile_addr_r=0x00100000\0" \
+       "fdt_addr_r=0x01f00000\0" \
+       "kernel_addr_r=0x02000000\0" \
+       "ramdisk_addr_r=0x04000000\0"
+
+/* First try to boot from SD (index 0), then eMMC (index 1 */
+#define BOOT_TARGET_DEVICES(func) \
+       func(MMC, mmc, 0) \
+       func(MMC, mmc, 1)
+
+#include <config_distro_bootcmd.h>
+
+/* Linux fails to load the fdt if it's loaded above 512M on a Rock 2 board, so
+ * limit the fdt reallocation to that */
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "fdt_high=0x1fffffff\0" \
+       ENV_MEM_LAYOUT_SETTINGS \
+       BOOTENV
+#endif
+
+#endif
index 6965d921d9ea3eb1792bfc5a8b928ef533af8610..32e3a9ba559476b5e1bf8f482c9ae0360aaf0182 100644 (file)
 
 #define SANDBOX_ETH_SETTINGS           "ethaddr=00:00:11:22:33:44\0" \
                                        "eth1addr=00:00:11:22:33:45\0" \
-                                       "eth5addr=00:00:11:22:33:46\0" \
+                                       "eth3addr=00:00:11:22:33:46\0" \
+                                       "eth5addr=00:00:11:22:33:47\0" \
                                        "ipaddr=1.2.3.4\0"
 
 #define MEM_LAYOUT_ENV_SETTINGS \
diff --git a/include/configs/sbc405.h b/include/configs/sbc405.h
deleted file mode 100644 (file)
index b2adea9..0000000
+++ /dev/null
@@ -1,252 +0,0 @@
-/*
- * (C) Copyright 2001
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * board/config.h - configuration options, board specific
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-
-#define CONFIG_405GP           1       /* This is a PPC405 CPU         */
-#define CONFIG_SBC405          1       /* ...on a WR SBC405 board      */
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_BOARD_EARLY_INIT_F 1    /* call board_early_init_f()    */
-#define CONFIG_MISC_INIT_R     1       /* call misc_init_r()           */
-
-#define CONFIG_SYS_CLK_FREQ    33333333 /* external frequency to pll   */
-
-#define CONFIG_BAUDRATE                9600
-
-#define CONFIG_PREBOOT "echo;echo Welcome to U-Boot for the sbc405;echo;echo Type \"? or help\" to get on-line help;echo"
-
-#define CONFIG_RAMBOOT                                                         \
-       "setenv bootargs root=/dev/ram rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;"    \
-       "bootm ffc00000 ffca0000"
-#define CONFIG_NFSBOOT                                                         \
-       "setenv bootargs root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "     \
-       "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}::off;"    \
-       "bootm ffc00000"
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND      "version;echo;tftpboot ${loadaddr} ${loadfile};bootvx"      /* autoboot command     */
-
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0       /* PHY address                  */
-#define CONFIG_PHY_RESET_DELAY 300     /* Intel LXT971A needs this     */
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "bootargs=emac(0,0)host:/T221ppc/target/config/sbc405/vxWorks.st " \
-               "e=192.168.193.102:ffffffe0 h=192.168.193.100 u=target pw=hello " \
-               "f=0x08 tn=sbc405 o=emac \0" \
-       "env_startaddr=FF000000\0" \
-       "env_endaddr=FF03FFFF\0" \
-       "loadfile=vxWorks.st\0" \
-       "loadaddr=0x01000000\0" \
-       "net_load=tftpboot ${loadaddr} ${loadfile}\0" \
-       "uboot_startaddr=FFFC0000\0" \
-       "uboot_endaddr=FFFFFFFF\0" \
-       "update=tftp ${loadaddr} u-boot.bin;" \
-               "protect off ${uboot_startaddr} ${uboot_endaddr};" \
-               "era ${uboot_startaddr} ${uboot_endaddr};" \
-               "cp.b ${loadaddr} ${uboot_startaddr} ${filesize};" \
-               "protect on ${uboot_startaddr} ${uboot_endaddr}\0" \
-       "zapenv=protect off ${env_startaddr} ${env_endaddr};" \
-               "era ${env_startaddr} ${env_endaddr};" \
-               "protect on ${env_startaddr} ${env_endaddr}\0"
-
-#define CONFIG_BOOTDELAY       5       /* autoboot after 5 seconds     */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_SUBNETMASK
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_BOOTFILESIZE
-
-
-#define CONFIG_ENV_OVERWRITE
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_BSP
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PCI
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SDRAM
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0    */
-
-#define CONFIG_IPADDR          192.168.193.102
-#define CONFIG_NETMASK         255.255.255.224
-#define CONFIG_SERVERIP                192.168.193.119
-#define CONFIG_GATEWAYIP       192.168.193.97
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-
-#undef CONFIG_SYS_HUSH_PARSER                  /* use "hush" command parser    */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000       /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000       /* 4 ... 12 MB in DRAM  */
-
-#define CONFIG_CONS_INDEX      1       /* Use UART0                    */
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK             /* no external serial clock used */
-#define CONFIG_SYS_BASE_BAUD           691200
-
-/* The following table includes the supported baudrates */
-#define CONFIG_SYS_BAUDRATE_TABLE                                      \
-       { 300, 600, 1200, 2400, 4800, 9600, 19200, 38400,       \
-        57600, 115200, 230400, 460800, 921600 }
-
-#define CONFIG_SYS_LOAD_ADDR   0x100000        /* default load address */
-#define CONFIG_SYS_EXTBDINFO   1               /* To use extended board_info (bd_t) */
-
-#define CONFIG_VERSION_VARIABLE        1       /* include version env variable */
-
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* use 16 rx buffer on 405 emac */
-
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-/*-----------------------------------------------------------------------
- * PCI stuff
- *-----------------------------------------------------------------------
- */
-#define PCI_HOST_ADAPTER       0       /* configure as pci adapter     */
-#define PCI_HOST_FORCE         1       /* configure as pci host        */
-#define PCI_HOST_AUTO          2       /* detected via arbiter enable  */
-
-#define CONFIG_PCI                     /* include pci support          */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_PCI_HOST        PCI_HOST_FORCE  /* select pci host function     */
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play         */
-                                       /* resource configuration       */
-
-#define CONFIG_PCI_SCAN_SHOW           /* print pci devices @ startup  */
-
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x12FE  /* PCI Vendor ID: esd gmbh      */
-#define CONFIG_SYS_PCI_SUBSYS_DEVICEID 0x0408  /* PCI Device ID: PMC-405       */
-#define CONFIG_SYS_PCI_CLASSCODE       0x0b20  /* PCI Class Code: Processor/PPC*/
-#define CONFIG_SYS_PCI_PTM1LA  0x00000000      /* point to sdram               */
-#define CONFIG_SYS_PCI_PTM1MS  0xfc000001      /* 64MB, enable hard-wired to 1 */
-#define CONFIG_SYS_PCI_PTM1PCI 0x00000000      /* Host: use this pci address   */
-#define CONFIG_SYS_PCI_PTM2LA  0xffc00000      /* point to flash               */
-#define CONFIG_SYS_PCI_PTM2MS  0xffc00001      /* 4MB, enable                  */
-#define CONFIG_SYS_PCI_PTM2PCI 0x04000000      /* Host: use this pci address   */
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_MONITOR_BASE        0xFFFC0000
-#define CONFIG_SYS_MONITOR_LEN (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN  (128 * 1024)    /* Reserve 128 kB for malloc()  */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ   (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#define CONFIG_SYS_FLASH_CFI           1       /* Flash is CFI conformant              */
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Flash Erase Timeout (in ms)          */
-#define CONFIG_SYS_FLASH_INCREMENT     0x01000000
-#undef CONFIG_SYS_FLASH_PROTECTION             /* don't use hardware protection        */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Flash Write Timeout (in ms)          */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      128     /* max number of sectors on one chip    */
-
-/*-----------------------------------------------------------------------
- * Environment Variable setup
- */
-#define CONFIG_ENV_ADDR        CONFIG_SYS_FLASH_BASE   /* starting right at the beginning      */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_OFFSET              0       /* starting right at the beginning      */
-#define CONFIG_ENV_SECT_SIZE   0x40000 /* see README - env sector total size   */
-#define CONFIG_ENV_SIZE                0x40000 /* Total Size of Environment Sector     */
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-#define FLASH0_BA      CONFIG_SYS_FLASH_BASE           /* FLASH 0 Base Address         */
-
-/* Memory Bank 0 (Flash Bank 0) initialization                                 */
-#define CONFIG_SYS_EBC_PB0AP   0x92015480
-#define CONFIG_SYS_EBC_PB0CR   FLASH0_BA | 0x9C000 /* BAS=0xFF0,BS=16MB,BU=R/W,BW=32bit*/
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-
-/* use on chip memory ( OCM ) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM      1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of SDRAM             */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-/*-----------------------------------------------------------------------
- * Definitions for Serial Presence Detect EEPROM address
- * (to get SDRAM settings)
- */
-#define SPD_EEPROM_ADDRESS     0x50
-#define CONFIG_SPD_EEPROM      1       /* use SPD EEPROM for setup             */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/scb9328.h b/include/configs/scb9328.h
deleted file mode 100644 (file)
index d4ffb46..0000000
+++ /dev/null
@@ -1,312 +0,0 @@
-/*
- * Copyright (C) 2003 ETC s.r.o.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- * Written by Peter Figuli <peposh@etc.sk>, 2003.
- *
- * 2003/13/06 Initial MP10 Support copied from wepep250
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#define CONFIG_IMX             1     /* This is a Motorola MC9328MXL Chip */
-#define CONFIG_SCB9328         1     /* on a scb9328tronix board */
-
-#define CONFIG_IMX_SERIAL
-#define CONFIG_IMX_SERIAL1
-/*
- * Select serial console configuration
- */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-
-/*
- * Boot options. Setting delay to -1 stops autostart count down.
- * NOTE: Sending parameters to kernel depends on kernel version and
- * 2.4.19-rmk6-pxa1 patch used while my u-boot coding didn't accept
- * parameters at all! Do not get confused by them so.
- */
-#define CONFIG_BOOTDELAY   -1
-#define CONFIG_BOOTARGS           "console=ttySMX0,115200n8 root=/dev/mtdblock3 rootfstype=jffs2 mtdparts=scb9328_flash:128k(U-boot)ro,128k(U-boot_env),1m(kernel),4m(root),4m(fs) eval_board=evk9328"
-#define CONFIG_BOOTCOMMAND "bootm 10040000"
-#define CONFIG_SHOW_BOOT_PROGRESS
-#define CONFIG_NETMASK         255.255.255.0
-#define CONFIG_IPADDR          10.10.10.9
-#define CONFIG_SERVERIP                10.10.10.10
-
-/*
- * General options for u-boot. Modify to save memory foot print
- */
-#define CONFIG_SYS_LONGHELP                                  /* undef saves memory  */
-#define CONFIG_SYS_CBSIZE              256                   /* console I/O buffer  */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* print buffer size   */
-#define CONFIG_SYS_MAXARGS             16                    /* max command args    */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE             /* boot args buf size  */
-
-#define CONFIG_SYS_MEMTEST_START       0x08100000            /* memtest test area   */
-#define CONFIG_SYS_MEMTEST_END         0x08F00000
-
-#define CONFIG_SYS_CPUSPEED            0x141        /* core clock - register value  */
-
-#define CONFIG_BAUDRATE 115200
-/*
- * Definitions related to passing arguments to kernel.
- */
-#define CONFIG_CMDLINE_TAG          1   /* send commandline to Kernel       */
-#define CONFIG_SETUP_MEMORY_TAGS     1  /* send memory definition to kernel */
-#define CONFIG_INITRD_TAG           1   /* send initrd params               */
-
-/*
- * Malloc pool need to host env + 128 Kb reserve for other allocations.
- */
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + (128<<10) )
-
-/* SDRAM Setup Values
-0x910a8300 Precharge Command CAS 3
-0x910a8200 Precharge Command CAS 2
-
-0xa10a8300 AutoRefresh Command CAS 3
-0xa10a8200 Set AutoRefresh Command CAS 2 */
-
-#define PRECHARGE_CMD 0x910a8200
-#define AUTOREFRESH_CMD 0xa10a8200
-
-/*
- * SDRAM Memory Map
- */
-/* SH FIXME */
-#define CONFIG_NR_DRAM_BANKS   1               /* we have 1 bank of SDRAM */
-#define SCB9328_SDRAM_1                0x08000000      /* SDRAM bank #1           */
-#define SCB9328_SDRAM_1_SIZE   0x01000000      /* 16 MB                   */
-
-#define CONFIG_SYS_TEXT_BASE   0x10000000
-
-#define CONFIG_SYS_SDRAM_BASE  SCB9328_SDRAM_1
-#define CONFIG_SYS_INIT_SP_ADDR        (SCB9328_SDRAM_1 + 0xf00000)
-
-/*
- * Configuration for FLASH memory for the Synertronixx board
- */
-
-/* #define SCB9328_FLASH_32M */
-
-/* 32MB */
-#ifdef SCB9328_FLASH_32M
-#define CONFIG_SYS_MAX_FLASH_BANKS             1       /* FLASH banks count (not chip count)*/
-#define CONFIG_SYS_MAX_FLASH_SECT              256     /* number of sector in FLASH bank    */
-#define SCB9328_FLASH_BUS_WIDTH                2       /* we use 16 bit FLASH memory...     */
-#define SCB9328_FLASH_INTERLEAVE       1       /* ... made of 1 chip                */
-#define SCB9328_FLASH_BANK_SIZE         0x02000000     /* size of one flash bank            */
-#define SCB9328_FLASH_SECT_SIZE         0x00020000     /* size of erase sector              */
-#define SCB9328_FLASH_BASE      0x10000000     /* location of flash memory          */
-#define SCB9328_FLASH_UNLOCK           1       /* perform hw unlock first           */
-#else
-
-/* 16MB */
-#define CONFIG_SYS_MAX_FLASH_BANKS             1       /* FLASH banks count (not chip count)*/
-#define CONFIG_SYS_MAX_FLASH_SECT              128     /* number of sector in FLASH bank    */
-#define SCB9328_FLASH_BUS_WIDTH                2       /* we use 16 bit FLASH memory...     */
-#define SCB9328_FLASH_INTERLEAVE       1       /* ... made of 1 chip                */
-#define SCB9328_FLASH_BANK_SIZE         0x01000000     /* size of one flash bank            */
-#define SCB9328_FLASH_SECT_SIZE         0x00020000     /* size of erase sector              */
-#define SCB9328_FLASH_BASE      0x10000000     /* location of flash memory          */
-#define SCB9328_FLASH_UNLOCK           1       /* perform hw unlock first           */
-#endif /* SCB9328_FLASH_32M */
-
-/* This should be defined if CFI FLASH device is present. Actually benefit
-   is not so clear to me. In other words we can provide more informations
-   to user, but this expects more complex flash handling we do not provide
-   now.*/
-#undef CONFIG_SYS_FLASH_CFI
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    240000    /* timeout for Erase operation */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    240000    /* timeout for Write operation */
-
-#define CONFIG_SYS_FLASH_BASE          SCB9328_FLASH_BASE
-
-/*
- * This is setting for JFFS2 support in u-boot.
- * Right now there is no gain for user, but later on booting kernel might be
- * possible. Consider using XIP kernel running from flash to save RAM
- * footprint.
- * NOTE: Enable CONFIG_CMD_JFFS2 for JFFS2 support.
- */
-#define CONFIG_SYS_JFFS2_FIRST_BANK            0
-#define CONFIG_SYS_JFFS2_FIRST_SECTOR          5
-#define CONFIG_SYS_JFFS2_NUM_BANKS             1
-
-/*
- * Environment setup. Definitions of monitor location and size with
- * definition of environment setup ends up in 2 possibilities.
- * 1. Embeded environment - in u-boot code is space for environment
- * 2. Environment is read from predefined sector of flash
- * Right now we support 2. possiblity, but expecting no env placed
- * on mentioned address right now. This also needs to provide whole
- * sector for it - for us 256Kb is really waste of memory. U-boot uses
- * default env. and until kernel parameters could be sent to kernel
- * env. has no sense to us.
- */
-
-/* Setup for PA23 which is Reset Default PA23 but has to become
-   CS5 */
-
-#define CONFIG_SYS_GPR_A_VAL           0x00800000
-#define CONFIG_SYS_GIUS_A_VAL          0x0043fffe
-
-#define CONFIG_SYS_MONITOR_BASE        0x10000000
-#define CONFIG_SYS_MONITOR_LEN         0x20000         /* 128b ( 1 flash sector )  */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                0x10020000      /* absolute address for now  */
-#define CONFIG_ENV_SIZE                0x20000
-
-#define         CONFIG_ENV_OVERWRITE  1                /* env is not writable now   */
-
-/*
- * CSxU_VAL:
- * 63| x       x x x | x x x x | x x  x    x | x x x x | x x x x | x x x x | x x x x | x x x x|32
- *   |DTACK_SEL|0|BCD |          BCS   | PSZ|PME|SYNC|  DOL    | CNC|    WSC       | 0| WWS  |   EDC  |
- *
- * CSxL_VAL:
- * 31| x x x x | x x x x | x x x x | x x x x | x x x x |  x x x x | x x         x x | x x  x    x| 0
- *   |  OEA   |   OEN   |   WEA   |   WEN   |   CSA   |EBC| DSZ  | 0|SP|0|WP| 0 0|PA|CSEN|
- */
-
-#define CONFIG_SYS_CS0U_VAL 0x000F2000
-#define CONFIG_SYS_CS0L_VAL 0x11110d01
-#define CONFIG_SYS_CS1U_VAL 0x000F0a00
-#define CONFIG_SYS_CS1L_VAL 0x11110601
-#define CONFIG_SYS_CS2U_VAL 0x0
-#define CONFIG_SYS_CS2L_VAL 0x0
-
-#define CONFIG_SYS_CS3U_VAL 0x000FFFFF
-#define CONFIG_SYS_CS3L_VAL 0x00000303
-
-#define CONFIG_SYS_CS4U_VAL 0x000F0a00
-#define CONFIG_SYS_CS4L_VAL 0x11110301
-
-/* CNC == 3 too long
-   #define CONFIG_SYS_CS5U_VAL 0x0000C210 */
-
-/* #define CONFIG_SYS_CS5U_VAL 0x00008400
-   mal laenger mahcen, ob der bei 150MHz laenger haelt dann und
-   kaum langsamer ist */
-/* #define CONFIG_SYS_CS5U_VAL 0x00009400
-   #define CONFIG_SYS_CS5L_VAL 0x11010D03 */
-
-#define CONFIG_SYS_CS5U_VAL 0x00008400
-#define CONFIG_SYS_CS5L_VAL 0x00000D03
-
-#define CONFIG_DRIVER_DM9000           1
-#define CONFIG_DM9000_BASE             0x16000000
-#define DM9000_IO                      CONFIG_DM9000_BASE
-#define DM9000_DATA                    (CONFIG_DM9000_BASE+4)
-
-/* f_{dpll}=2*f{ref}*(MFI+MFN/(MFD+1))/(PD+1)
-   f_ref=16,777MHz
-
-   0x002a141f: 191,9944MHz
-   0x040b2007: 144MHz
-   0x042a141f: 96MHz
-   0x0811140d: 64MHz
-   0x040e200e: 150MHz
-   0x00321431: 200MHz
-
-   0x08001800: 64MHz mit 16er Quarz
-   0x04001800: 96MHz mit 16er Quarz
-   0x04002400: 144MHz mit 16er Quarz
-
-   31 |x x x x|x x x x|x x x x|x x x x|x x x x|x x x x|x x x x|x x x x| 0
-      |XXX|--PD---|-------MFD---------|XXX|--MFI--|-----MFN-----------|            */
-
-#define CPU200
-
-#ifdef CPU200
-#define CONFIG_SYS_MPCTL0_VAL 0x00321431
-#else
-#define CONFIG_SYS_MPCTL0_VAL 0x040e200e
-#endif
-
-/* #define BUS64 */
-#define BUS72
-
-#ifdef BUS72
-#define CONFIG_SYS_SPCTL0_VAL 0x04002400
-#endif
-
-#ifdef BUS96
-#define CONFIG_SYS_SPCTL0_VAL 0x04001800
-#endif
-
-#ifdef BUS64
-#define CONFIG_SYS_SPCTL0_VAL 0x08001800
-#endif
-
-/* Das ist der BCLK Divider, der aus der System PLL
-   BCLK und HCLK erzeugt:
-   31 | xxxx xxxx xxxx xxxx xx10 11xx xxxx xxxx | 0
-   0x2f008403 : 192MHz/2=96MHz, 144MHz/2=72MHz PRESC=1->BCLKDIV=2
-   0x2f008803 : 192MHz/3=64MHz, 240MHz/3=80MHz PRESC=1->BCLKDIV=2
-   0x2f001003 : 192MHz/5=38,4MHz
-   0x2f000003 : 64MHz/1
-   Bit 22: SPLL Restart
-   Bit 21: MPLL Restart */
-
-#ifdef BUS64
-#define CONFIG_SYS_CSCR_VAL 0x2f030003
-#endif
-
-#ifdef BUS72
-#define CONFIG_SYS_CSCR_VAL 0x2f030403
-#endif
-
-/*
- * Well this has to be defined, but on the other hand it is used differently
- * one may expect. For instance loadb command do not cares :-)
- * So advice is - do not relay on this...
- */
-#define CONFIG_SYS_LOAD_ADDR 0x08400000
-
-#define MHZ16QUARZINUSE
-
-#ifdef MHZ16QUARZINUSE
-#define CONFIG_SYSPLL_CLK_FREQ 16000000
-#else
-#define CONFIG_SYSPLL_CLK_FREQ 16780000
-#endif
-
-#define CONFIG_SYS_CLK_FREQ 16780000
-
-/* FMCR Bit 0 becomes 0 to make CS3 CS3 :P */
-#define CONFIG_SYS_FMCR_VAL 0x00000001
-
-/* Bit[0:3] contain PERCLK1DIV for UART 1
-   0x000b00b ->b<- -> 192MHz/12=16MHz
-   0x000b00b ->8<- -> 144MHz/09=16MHz
-   0x000b00b ->3<- -> 64MHz/4=16MHz */
-
-#ifdef BUS96
-#define CONFIG_SYS_PCDR_VAL 0x000b00b5
-#endif
-
-#ifdef BUS64
-#define CONFIG_SYS_PCDR_VAL 0x000b00b3
-#endif
-
-#ifdef BUS72
-#define CONFIG_SYS_PCDR_VAL 0x000b00b8
-#endif
-
-#endif /* __CONFIG_H */
index d696d4becec82dd54eab0213741eaa198ea8615a..d189c3fde97ce1f789023c861517b9d37bd7a98e 100644 (file)
@@ -28,6 +28,7 @@
  * In this case SoC is defined in boards.cfg.
  */
 #include <asm/hardware.h>
+#include <linux/sizes.h>
 
 /*
  * Warning: changing CONFIG_SYS_TEXT_BASE requires adapting the initial boot
@@ -64,7 +65,7 @@
  */
 #define CONFIG_NR_DRAM_BANKS           1
 #define CONFIG_SYS_SDRAM_BASE          ATMEL_BASE_CS1
-#define CONFIG_SYS_SDRAM_SIZE          (64 << 20)
+#define CONFIG_SYS_SDRAM_SIZE          (64 * SZ_1M)
 
 /*
  * Perform a SDRAM Memtest from the start of SDRAM
@@ -75,7 +76,7 @@
 
 /* Size of malloc() pool */
 #define CONFIG_SYS_MALLOC_LEN \
-       ROUND(3 * CONFIG_ENV_SIZE + (128 << 10), 0x1000)
+       ROUND(3 * CONFIG_ENV_SIZE + (4 * SZ_1M), 0x1000)
 
 /* NAND flash settings */
 #define CONFIG_NAND_ATMEL
 
 #if !defined(CONFIG_SPL_BUILD)
 /* USB configuration */
+#define CONFIG_CMD_USB
 #define CONFIG_USB_ATMEL
 #define CONFIG_USB_ATMEL_CLK_SEL_PLLB
 #define CONFIG_USB_OHCI_NEW
-#define CONFIG_USB_STORAGE
-#define CONFIG_DOS_PARTITION
 #define CONFIG_SYS_USB_OHCI_CPU_INIT
 #define CONFIG_SYS_USB_OHCI_REGS_BASE  ATMEL_UHP_BASE
 #define CONFIG_SYS_USB_OHCI_SLOT_NAME  "at91sam9260"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
+
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_USB_ETHER_MCS7830
+
+/* USB DFU support */
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_AT91
+
+/* DFU class support */
+#define CONFIG_CMD_DFU
+#define CONFIG_USB_FUNCTION_DFU
+#define CONFIG_DFU_NAND
+#define CONFIG_USB_GADGET_DOWNLOAD
+#define CONFIG_USB_GADGET_VBUS_DRAW    2
+#define CONFIG_SYS_DFU_DATA_BUF_SIZE   SZ_1M
+#define DFU_MANIFEST_POLL_TIMEOUT      25000
+
+/* USB DFU IDs */
+#define CONFIG_G_DNL_VENDOR_NUM 0x0908
+#define CONFIG_G_DNL_PRODUCT_NUM 0x02d2
+#define CONFIG_G_DNL_MANUFACTURER "Siemens AG"
+
+#define CONFIG_SYS_CACHELINE_SIZE      0x2000
 #endif
 
 /* General Boot Parameter */
 #define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (0x100000)
 #define CONFIG_ENV_OFFSET_REDUND       (0x180000)
-#define CONFIG_ENV_RANGE               (0x80000)
-#define CONFIG_ENV_SIZE                        (0x20000)
+#define CONFIG_ENV_RANGE               (SZ_512K)
+#define CONFIG_ENV_SIZE                        (SZ_128K)
 
 /*
  * Predefined environment variables.
 #undef CONFIG_CMD_LOADS
 
 #define CONFIG_CMD_NAND
-#define CONFIG_CMD_USB
 #define CONFIG_CMD_FAT
 
 #ifdef CONFIG_MACB
 /* Defines for SPL */
 #define CONFIG_SPL_FRAMEWORK
 #define CONFIG_SPL_TEXT_BASE           0x0
-#define CONFIG_SPL_MAX_SIZE            (4 * 1024)
+#define CONFIG_SPL_MAX_SIZE            (SZ_4K)
 
 #define CONFIG_SPL_BSS_START_ADDR      CONFIG_SYS_SDRAM_BASE
-#define CONFIG_SPL_BSS_MAX_SIZE                (16 * 1024)
+#define CONFIG_SPL_BSS_MAX_SIZE                (SZ_16K)
 #define CONFIG_SYS_SPL_MALLOC_START     (CONFIG_SPL_BSS_START_ADDR + \
                                        CONFIG_SPL_BSS_MAX_SIZE)
 #define CONFIG_SYS_SPL_MALLOC_SIZE      CONFIG_SYS_MALLOC_LEN
 #define CONFIG_SPL_NAND_RAW_ONLY
 #define CONFIG_SPL_NAND_SOFTECC
 #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x20000
-#define CONFIG_SYS_NAND_U_BOOT_SIZE    0x80000
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    SZ_512K
 #define        CONFIG_SYS_NAND_U_BOOT_START    CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_NAND_U_BOOT_DST     CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 
-#define CONFIG_SYS_NAND_SIZE           (256*1024*1024)
-#define CONFIG_SYS_NAND_PAGE_SIZE      2048
-#define CONFIG_SYS_NAND_BLOCK_SIZE     (128*1024)
+#define CONFIG_SYS_NAND_SIZE           (SZ_256M)
+#define CONFIG_SYS_NAND_PAGE_SIZE      SZ_2K
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (SZ_128K)
 #define CONFIG_SYS_NAND_PAGE_COUNT     (CONFIG_SYS_NAND_BLOCK_SIZE / \
                                         CONFIG_SYS_NAND_PAGE_SIZE)
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS  NAND_LARGE_BADBLOCK_POS
diff --git a/include/configs/snowball.h b/include/configs/snowball.h
deleted file mode 100644 (file)
index de03e76..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2009
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * #define DEBUG 1
- */
-
-#define CONFIG_SKIP_LOWLEVEL_INIT
-#define CONFIG_SNOWBALL
-#define CONFIG_SYS_ICACHE_OFF
-#define CONFIG_SYS_DCACHE_OFF
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_BOARD_LATE_INIT
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_U8500
-
-#define CONFIG_SYS_MEMTEST_START       0x00000000
-#define CONFIG_SYS_MEMTEST_END 0x1FFFFFFF
-
-/*-----------------------------------------------------------------------
- * Size of environment and malloc() pool
- */
-/*
- * If you use U-Boot as crash kernel, make sure that it does not overwrite
- * information saved by kexec during panic. Kexec expects the start
- * address of the executable 32K above "crashkernel" address.
- */
-/*
- * Size of malloc() pool
- */
-#define CONFIG_ENV_SIZE                (8*1024)
-#define CONFIG_SYS_MALLOC_LEN  (CONFIG_ENV_SIZE + 256*1024)
-
-#define CONFIG_ENV_IS_IN_MMC
-#define CONFIG_CMD_ENV
-#define CONFIG_ENV_OFFSET              0x0118000
-#define CONFIG_SYS_MMC_ENV_DEV          0              /* SLOT2: eMMC */
-
-/*
- * PL011 Configuration
- */
-#define CONFIG_PL011_SERIAL
-#define CONFIG_PL011_SERIAL_RLCR
-#define CONFIG_PL011_SERIAL_FLUSH_ON_INIT
-
-/*
- * U8500 UART registers base for 3 serial devices
- */
-#define CFG_UART0_BASE         0x80120000
-#define CFG_UART1_BASE         0x80121000
-#define CFG_UART2_BASE         0x80007000
-#define CFG_SERIAL0            CFG_UART0_BASE
-#define CFG_SERIAL1            CFG_UART1_BASE
-#define CFG_SERIAL2            CFG_UART2_BASE
-#define CONFIG_PL011_CLOCK     38400000
-#define CONFIG_PL01x_PORTS     { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1, \
-                                 (void *)CFG_SERIAL2 }
-#define CONFIG_CONS_INDEX      2
-#define CONFIG_BAUDRATE                115200
-
-/*
- * Devices and file systems
- */
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_DOS_PARTITION
-
-/*
- * Commands
- */
-#define CONFIG_CMD_MMC
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_EXT2
-
-#ifndef CONFIG_BOOTDELAY
-#define CONFIG_BOOTDELAY       1
-#endif
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND \
-"mmc dev 1; "                                                          \
-       "if run loadbootscript; "                                       \
-               "then run bootscript; "                                 \
-       "else "                                                         \
-               "if run mmcload; "                                      \
-                       "then run mmcboot; "                            \
-               "else "                                                 \
-                       "mmc dev 0; "                                   \
-                       "if run emmcloadbootscript; "                   \
-                               "then run bootscript; "                 \
-                       "else "                                         \
-                               "if run emmcload; "                     \
-                                       "then run emmcboot; "           \
-                               "else "                                 \
-                                       "echo No media to boot from; "  \
-                               "fi; "                                  \
-                       "fi; "                                          \
-               "fi; "                                                  \
-       "fi; "
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "verify=n\0"                                                    \
-       "loadaddr=0x00100000\0"                                         \
-       "console=ttyAMA2,115200n8\0"                                    \
-       "loadbootscript=fatload mmc 1:1 ${loadaddr} boot.scr\0"         \
-       "emmcloadbootscript=fatload mmc 0:2 ${loadaddr} boot.scr\0"     \
-       "bootscript=echo Running bootscript "                           \
-               "from mmc ...; source ${loadaddr}\0"                    \
-       "memargs256=mem=96M@0 mem_modem=32M@96M mem=32M@128M "          \
-               "hwmem=22M@160M pmem_hwb=42M@182M mem_mali=32@224M\0"   \
-       "memargs512=mem=96M@0 mem_modem=32M@96M hwmem=32M@128M "        \
-               "mem=64M@160M mem_mali=32M@224M "                       \
-               "pmem_hwb=128M@256M mem=128M@384M\0"                    \
-       "memargs1024=mem=128M@0 mali.mali_mem=32M@128M "                \
-               "hwmem=168M@M160M mem=48M@328M "                        \
-               "mem_issw=1M@383M mem=640M@384M\0"                      \
-       "memargs=setenv bootargs ${bootargs} ${memargs1024}\0"          \
-       "emmcload=fatload mmc 0:2 ${loadaddr} uImage\0"                 \
-       "mmcload=fatload mmc 1:1 ${loadaddr} uImage\0"                  \
-       "commonargs=setenv bootargs console=${console} "                \
-       "vmalloc=300M\0"                                                \
-       "emmcargs=setenv bootargs ${bootargs} "                         \
-               "root=/dev/mmcblk0p3 "                                  \
-               "rootwait\0"                                            \
-       "addcons=setenv bootargs ${bootargs} "                          \
-               "console=${console}\0"                                  \
-       "emmcboot=echo Booting from eMMC ...; "                         \
-               "run commonargs emmcargs memargs; "                     \
-               "bootm ${loadaddr}\0"                                   \
-       "mmcargs=setenv bootargs ${bootargs} "                          \
-               "root=/dev/mmcblk1p2 "                                  \
-               "rootwait earlyprintk\0"                                \
-       "mmcboot=echo Booting from external MMC ...; "                  \
-               "run commonargs mmcargs memargs; "                      \
-               "bootm ${loadaddr}\0"                                   \
-       "fdt_high=0x2BC00000\0"                                         \
-       "stdout=serial,usbtty\0"                                        \
-       "stdin=serial,usbtty\0"                                         \
-       "stderr=serial,usbtty\0"
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configurable options
- */
-
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory     */
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size  */
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE \
-                                       + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     32      /* max number of command args */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE /* Boot Arg Buffer Size */
-
-#define CONFIG_SYS_LOAD_ADDR           0x00100000 /* default load address */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1
-
-#define CONFIG_SYS_HUSH_PARSER         1
-#define CONFIG_CMDLINE_EDITING
-
-#define CONFIG_SETUP_MEMORY_TAGS       2
-#define CONFIG_INITRD_TAG              1
-#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs  */
-
-/*
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS           1
-#define PHYS_SDRAM_1                   0x00000000      /* DDR-SDRAM Bank #1 */
-
-/*
- * additions for new relocation code
- */
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_MAX_RAM_SIZE        0x40000000
-#define CONFIG_SYS_INIT_RAM_SIZE       0x100000
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_SDRAM_BASE + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR                CONFIG_SYS_GBL_DATA_OFFSET
-
-/* landing address before relocation */
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE            0x0
-#endif
-
-/*
- * MMC related configs
- */
-#define CONFIG_ARM_PL180_MMCI
-#define MMC_BLOCK_SIZE                 512
-#define CFG_EMMC_BASE                   0x80114000
-#define CFG_MMC_BASE                    0x80126000
-
-/*
- * FLASH and environment organization
- */
-#define CONFIG_SYS_NO_FLASH
-
-/*
- * base register values for U8500
- */
-#define CFG_PRCMU_BASE         0x80157000      /* Power, reset and clock */
-
-
-/*
- * U8500 GPIO register base for 9 banks
- */
-#define CONFIG_DB8500_GPIO
-#define CFG_GPIO_0_BASE                        0x8012E000
-#define CFG_GPIO_1_BASE                        0x8012E080
-#define CFG_GPIO_2_BASE                        0x8000E000
-#define CFG_GPIO_3_BASE                        0x8000E080
-#define CFG_GPIO_4_BASE                        0x8000E100
-#define CFG_GPIO_5_BASE                        0x8000E180
-#define CFG_GPIO_6_BASE                        0x8011E000
-#define CFG_GPIO_7_BASE                        0x8011E080
-#define CFG_GPIO_8_BASE                        0xA03FE000
-
-#define CFG_FSMC_BASE          0x80000000      /* FSMC Controller */
-
-#endif /* __CONFIG_H */
index c64c7ed42075a20179c43c2648d652968ad93548..38ae763653b7301cae8898ecef3c327223bb55af 100644 (file)
@@ -192,7 +192,6 @@ unsigned int cm_get_l4_sp_clk_hz(void);
 /*
  * QSPI support
  */
-#ifdef CONFIG_OF_CONTROL       /* QSPI is controlled via DT */
 #define CONFIG_CADENCE_QSPI
 /* Enable multiple SPI NOR flash manufacturers */
 #define CONFIG_SPI_FLASH_STMICRO       /* Micron/Numonyx flash */
@@ -212,12 +211,12 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
 #define CONFIG_CQSPI_DECODER           0
 #define CONFIG_CMD_SF
 #define CONFIG_SPI_FLASH_BAR
-#endif
 
-#if CONFIG_IS_ENABLED(OF_CONTROL)      /* DW SPI is controlled via DT */
+/*
+ * Designware SPI support
+ */
 #define CONFIG_DESIGNWARE_SPI
 #define CONFIG_CMD_SPI
-#endif
 
 /*
  * Serial Driver
diff --git a/include/configs/socfpga_de0_nano_soc.h b/include/configs/socfpga_de0_nano_soc.h
new file mode 100644 (file)
index 0000000..2508d03
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * Copyright (C) 2015 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __CONFIG_TERASIC_DE0_H__
+#define __CONFIG_TERASIC_DE0_H__
+
+#include <asm/arch/socfpga_base_addrs.h>
+
+/* U-Boot Commands */
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_DOS_PARTITION
+#define CONFIG_FAT_WRITE
+#define CONFIG_HW_WATCHDOG
+
+#define CONFIG_CMD_ASKENV
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_DFU
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_EXT4_WRITE
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_FS_GENERIC
+#define CONFIG_CMD_GPIO
+#define CONFIG_CMD_GREPENV
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_MMC
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_USB_MASS_STORAGE
+
+/* Memory configurations */
+#define PHYS_SDRAM_1_SIZE              0x40000000      /* 1GiB */
+
+/* Booting Linux */
+#define CONFIG_BOOTDELAY       3
+#define CONFIG_BOOTFILE                "fitImage"
+#define CONFIG_BOOTARGS                "console=ttyS0," __stringify(CONFIG_BAUDRATE)
+#ifdef CONFIG_SOCFPGA_VIRTUAL_TARGET
+#define CONFIG_BOOTCOMMAND     "run ramboot"
+#else
+#define CONFIG_BOOTCOMMAND     "run mmcload; run mmcboot"
+#endif
+#define CONFIG_LOADADDR                0x01000000
+#define CONFIG_SYS_LOAD_ADDR   CONFIG_LOADADDR
+
+/* Ethernet on SoC (EMAC) */
+#if defined(CONFIG_CMD_NET)
+
+/* PHY */
+#define CONFIG_PHY_MICREL
+#define CONFIG_PHY_MICREL_KSZ9031
+
+#endif
+
+/* USB */
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_DWC2_REG_ADDR       SOCFPGA_USB1_ADDRESS
+#endif
+#define CONFIG_G_DNL_MANUFACTURER      "Terasic"
+
+/* Extra Environment */
+#define CONFIG_HOSTNAME                socfpga_de0_nano_soc
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "loadaddr= " __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
+       "ramboot=setenv bootargs " CONFIG_BOOTARGS ";" \
+               "bootm ${loadaddr} - ${fdt_addr}\0" \
+       "bootimage=zImage\0" \
+       "fdt_addr=100\0" \
+       "fdtimage=socfpga.dtb\0" \
+               "fsloadcmd=ext2load\0" \
+       "bootm ${loadaddr} - ${fdt_addr}\0" \
+       "mmcroot=/dev/mmcblk0p2\0" \
+       "mmcboot=setenv bootargs " CONFIG_BOOTARGS \
+               " root=${mmcroot} rw rootwait;" \
+               "bootz ${loadaddr} - ${fdt_addr}\0" \
+       "mmcload=mmc rescan;" \
+               "load mmc 0:1 ${loadaddr} ${bootimage};" \
+               "load mmc 0:1 ${fdt_addr} ${fdtimage}\0" \
+
+/* The rest of the configuration is shared */
+#include <configs/socfpga_common.h>
+
+#endif /* __CONFIG_TERASIC_DE0_H__ */
diff --git a/include/configs/socfpga_mcvevk.h b/include/configs/socfpga_mcvevk.h
new file mode 100644 (file)
index 0000000..c5b4b4c
--- /dev/null
@@ -0,0 +1,132 @@
+/*
+ * Copyright (C) 2015 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __CONFIG_DENX_MCVEVK_H__
+#define __CONFIG_DENX_MCVEVK_H__
+
+#include <asm/arch/socfpga_base_addrs.h>
+
+/* U-Boot Commands */
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_DOS_PARTITION
+#define CONFIG_FAT_WRITE
+#define CONFIG_HW_WATCHDOG
+
+#define CONFIG_CMD_ASKENV
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_DFU
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_EXT4_WRITE
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_FS_GENERIC
+#define CONFIG_CMD_GPIO
+#define CONFIG_CMD_GREPENV
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_MMC
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_USB_MASS_STORAGE
+
+/* Memory configurations */
+#define PHYS_SDRAM_1_SIZE              0x40000000      /* 1GiB on MCV */
+
+/* Booting Linux */
+#define CONFIG_BOOTDELAY       3
+#define CONFIG_BOOTFILE                "fitImage"
+#define CONFIG_BOOTARGS                "console=ttyS0," __stringify(CONFIG_BAUDRATE)
+#define CONFIG_PREBOOT         "run try_bootscript"
+#define CONFIG_BOOTCOMMAND     "run mmc_mmc"
+#define CONFIG_LOADADDR                0x01000000
+#define CONFIG_SYS_LOAD_ADDR   CONFIG_LOADADDR
+
+/* USB */
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_DWC2_REG_ADDR       SOCFPGA_USB1_ADDRESS
+#endif
+#define CONFIG_G_DNL_MANUFACTURER      "DENX"
+
+/* Extra Environment */
+#define CONFIG_HOSTNAME                        mcvevk
+
+#define CONFIG_EXTRA_ENV_SETTINGS                                      \
+       "consdev=ttyS0\0"                                               \
+       "baudrate=115200\0"                                             \
+       "bootscript=boot.scr\0"                                         \
+       "bootdev=/dev/mmcblk0p2\0"                                      \
+       "rootdev=/dev/mmcblk0p3\0"                                      \
+       "netdev=eth0\0"                                                 \
+       "hostname=mcvevk\0"                                             \
+       "kernel_addr_r=0x10000000\0"                                    \
+       "update_filename=u-boot-with-spl-dtb.sfp\0"                     \
+       "update_sd_offset=0x800\0"                                      \
+       "update_sd="            /* Update the SD firmware partition */  \
+               "if mmc rescan ; then "                                 \
+               "if tftp ${update_filename} ; then "                    \
+               "setexpr fw_sz ${filesize} / 0x200 ; "  /* SD block size */ \
+               "setexpr fw_sz ${fw_sz} + 1 ; "                         \
+               "mmc write ${loadaddr} ${update_sd_offset} ${fw_sz} ; " \
+               "fi ; "                                                 \
+               "fi\0"                                                  \
+       "update_qspi_offset=0x0\0"                                      \
+       "update_qspi="          /* Update the QSPI firmware */          \
+               "if sf probe ; then "                                   \
+               "if tftp ${update_filename} ; then "                    \
+               "sf update ${loadaddr} ${update_qspi_offset} ${filesize} ; " \
+               "fi ; "                                                 \
+               "fi\0"                                                  \
+       "fpga_filename=output_file.rbf\0"                               \
+       "load_fpga="            /* Load FPGA bitstream */               \
+               "if tftp ${fpga_filename} ; then "                      \
+               "fpga load 0 $loadaddr $filesize ; "                    \
+               "bridge enable ; "                                      \
+               "fi\0"                                                  \
+       "addcons="                                                      \
+               "setenv bootargs ${bootargs} "                          \
+               "console=${consdev},${baudrate}\0"                      \
+       "addip="                                                        \
+               "setenv bootargs ${bootargs} "                          \
+               "ip=${ipaddr}:${serverip}:${gatewayip}:"                \
+                       "${netmask}:${hostname}:${netdev}:off\0"        \
+       "addmisc="                                                      \
+               "setenv bootargs ${bootargs} ${miscargs}\0"             \
+       "addargs=run addcons addmisc\0"                                 \
+       "mmcload="                                                      \
+               "mmc rescan ; "                                         \
+               "load mmc 0:2 ${kernel_addr_r} ${bootfile}\0"           \
+       "netload="                                                      \
+               "tftp ${kernel_addr_r} ${hostname}/${bootfile}\0"       \
+       "miscargs=nohlt panic=1\0"                                      \
+       "mmcargs=setenv bootargs root=${rootdev} rw rootwait\0"         \
+       "nfsargs="                                                      \
+               "setenv bootargs root=/dev/nfs rw "                     \
+                       "nfsroot=${serverip}:${rootpath},v3,tcp\0"      \
+       "mmc_mmc="                                                      \
+               "run mmcload mmcargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "mmc_nfs="                                                      \
+               "run mmcload nfsargs addip addargs ; "                  \
+               "bootm ${kernel_addr_r}\0"                              \
+       "net_mmc="                                                      \
+               "run netload mmcargs addargs ; "                        \
+               "bootm ${kernel_addr_r}\0"                              \
+       "net_nfs="                                                      \
+               "run netload nfsargs addip addargs ; "                  \
+               "bootm ${kernel_addr_r}\0"                              \
+       "try_bootscript="                                               \
+               "mmc rescan;"                                           \
+               "if test -e mmc 0:2 ${bootscript} ; then "              \
+               "if load mmc 0:2 ${kernel_addr_r} ${bootscript};"       \
+               "then ; "                                               \
+                       "echo Running bootscript... ; "                 \
+                       "source ${kernel_addr_r} ; "                    \
+               "fi ; "                                                 \
+               "fi\0"
+
+/* The rest of the configuration is shared */
+#include <configs/socfpga_common.h>
+
+#endif /* __CONFIG_DENX_MCVEVK_H__ */
diff --git a/include/configs/socfpga_sockit.h b/include/configs/socfpga_sockit.h
new file mode 100644 (file)
index 0000000..747e988
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright (C) 2015 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __CONFIG_TERASIC_SOCKIT_H__
+#define __CONFIG_TERASIC_SOCKIT_H__
+
+#include <asm/arch/socfpga_base_addrs.h>
+
+/* U-Boot Commands */
+#define CONFIG_SYS_NO_FLASH
+#define CONFIG_DOS_PARTITION
+#define CONFIG_FAT_WRITE
+#define CONFIG_HW_WATCHDOG
+
+#define CONFIG_CMD_ASKENV
+#define CONFIG_CMD_BOOTZ
+#define CONFIG_CMD_CACHE
+#define CONFIG_CMD_DFU
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_EXT4
+#define CONFIG_CMD_EXT4_WRITE
+#define CONFIG_CMD_FAT
+#define CONFIG_CMD_FS_GENERIC
+#define CONFIG_CMD_GPIO
+#define CONFIG_CMD_GREPENV
+#define CONFIG_CMD_MII
+#define CONFIG_CMD_MMC
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_USB_MASS_STORAGE
+
+/* Memory configurations */
+#define PHYS_SDRAM_1_SIZE              0x40000000      /* 1GiB on SoCDK */
+
+/* Booting Linux */
+#define CONFIG_BOOTDELAY       3
+#define CONFIG_BOOTFILE                "fitImage"
+#define CONFIG_BOOTARGS                "console=ttyS0," __stringify(CONFIG_BAUDRATE)
+#ifdef CONFIG_SOCFPGA_VIRTUAL_TARGET
+#define CONFIG_BOOTCOMMAND     "run ramboot"
+#else
+#define CONFIG_BOOTCOMMAND     "run mmcload; run mmcboot"
+#endif
+#define CONFIG_LOADADDR                0x01000000
+#define CONFIG_SYS_LOAD_ADDR   CONFIG_LOADADDR
+
+/* Ethernet on SoC (EMAC) */
+#if defined(CONFIG_CMD_NET)
+
+/* PHY */
+#define CONFIG_PHY_MICREL
+#define CONFIG_PHY_MICREL_KSZ9021
+#define CONFIG_KSZ9021_CLK_SKEW_ENV    "micrel-ksz9021-clk-skew"
+#define CONFIG_KSZ9021_CLK_SKEW_VAL    0xf0f0
+#define CONFIG_KSZ9021_DATA_SKEW_ENV   "micrel-ksz9021-data-skew"
+#define CONFIG_KSZ9021_DATA_SKEW_VAL   0x0
+
+#endif
+
+/* USB */
+#ifdef CONFIG_CMD_USB
+#define CONFIG_USB_DWC2_REG_ADDR       SOCFPGA_USB1_ADDRESS
+#endif
+#define CONFIG_G_DNL_MANUFACTURER      "Terasic"
+
+/* Extra Environment */
+#define CONFIG_HOSTNAME                socfpga_sockit
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "verify=n\0" \
+       "loadaddr= " __stringify(CONFIG_SYS_LOAD_ADDR) "\0" \
+       "ramboot=setenv bootargs " CONFIG_BOOTARGS ";" \
+               "bootm ${loadaddr} - ${fdt_addr}\0" \
+       "bootimage=zImage\0" \
+       "fdt_addr=100\0" \
+       "fdtimage=socfpga.dtb\0" \
+               "fsloadcmd=ext2load\0" \
+       "bootm ${loadaddr} - ${fdt_addr}\0" \
+       "mmcroot=/dev/mmcblk0p2\0" \
+       "mmcboot=setenv bootargs " CONFIG_BOOTARGS \
+               " root=${mmcroot} rw rootwait;" \
+               "bootz ${loadaddr} - ${fdt_addr}\0" \
+       "mmcload=mmc rescan;" \
+               "load mmc 0:1 ${loadaddr} ${bootimage};" \
+               "load mmc 0:1 ${fdt_addr} ${fdtimage}\0" \
+
+/* The rest of the configuration is shared */
+#include <configs/socfpga_common.h>
+
+#endif /* __CONFIG_TERASIC_SOCKIT_H__ */
diff --git a/include/configs/stamp9g20.h b/include/configs/stamp9g20.h
deleted file mode 100644 (file)
index 87df70b..0000000
+++ /dev/null
@@ -1,244 +0,0 @@
-/*
- * (C) Copyright 2007-2008
- * Stelian Pop <stelian@popies.net>
- * Lead Tech Design <www.leadtechdesign.com>
- *
- * (C) Copyright 2010
- * Achim Ehrlich <aehrlich@taskit.de>
- * taskit GmbH <www.taskit.de>
- *
- * (C) Copyright 2012
- * Markus Hubig <mhubig@imko.de>
- * IMKO GmbH <www.imko.de>
- *
- * Configuation settings for the stamp9g20 CPU module.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * SoC must be defined first, before hardware.h is included.
- * In this case SoC is defined in boards.cfg.
- */
-#include <asm/hardware.h>
-
-/*
- * Warning: changing CONFIG_SYS_TEXT_BASE requires adapting the initial boot
- * program. Since the linker has to swallow that define, we must use a pure
- * hex number here!
- */
-#define CONFIG_SYS_TEXT_BASE           0x23f00000
-
-/* ARM asynchronous clock */
-#define CONFIG_SYS_AT91_SLOW_CLOCK     32768           /* slow clock xtal */
-#define CONFIG_SYS_AT91_MAIN_CLOCK     18432000        /* 18.432MHz crystal */
-
-/* misc settings */
-#define CONFIG_CMDLINE_TAG             /* pass commandline to Kernel */
-#define CONFIG_SETUP_MEMORY_TAGS       /* pass memory defs to kernel */
-#define CONFIG_INITRD_TAG              /* pass initrd param to kernel */
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-Boot is loaded by a bootloader */
-#define CONFIG_BOARD_EARLY_INIT_f      /* call board_early_init_f() */
-#define CONFIG_BOARD_POSTCLK_INIT      /* call board_postclk_init() */
-#define CONFIG_DISPLAY_CPUINFO         /* display CPU Info at startup */
-
-/* setting board specific options */
-#ifdef CONFIG_PORTUXG20
-# define CONFIG_MACH_TYPE              MACH_TYPE_PORTUXG20
-# define CONFIG_MACB
-#else
-# define CONFIG_MACH_TYPE              MACH_TYPE_STAMP9G20
-#endif
-
-/*
- * SDRAM: 1 bank, 64 MB, base address 0x20000000
- * Already initialized before u-boot gets started.
- */
-#define CONFIG_NR_DRAM_BANKS           1
-#define CONFIG_SYS_SDRAM_BASE          ATMEL_BASE_CS1
-#define CONFIG_SYS_SDRAM_SIZE          (64 << 20)
-
-/*
- * Perform a SDRAM Memtest from the start of SDRAM
- * till the beginning of the U-Boot position in RAM.
- */
-#define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
-#define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_TEXT_BASE - 0x100000)
-
-/* Size of malloc() pool */
-#define CONFIG_SYS_MALLOC_LEN \
-       ROUND(3 * CONFIG_ENV_SIZE + (128 << 10), 0x1000)
-
-/*
- * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM,
- * leaving the correct space for initial global data structure above that
- * address while providing maximum stack area below.
- */
-#define CONFIG_SYS_INIT_SP_ADDR \
-       (ATMEL_BASE_SRAM1 + 0x1000 - GENERATED_GBL_DATA_SIZE)
-
-/* NAND flash settings */
-#define CONFIG_NAND_ATMEL
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE           ATMEL_BASE_CS3
-#define CONFIG_SYS_NAND_DBW_8
-#define CONFIG_SYS_NAND_MASK_ALE       (1 << 21)
-#define CONFIG_SYS_NAND_MASK_CLE       (1 << 22)
-#define CONFIG_SYS_NAND_ENABLE_PIN     AT91_PIN_PC14
-#define CONFIG_SYS_NAND_READY_PIN      AT91_PIN_PC13
-
-/* general purpose I/O */
-#define CONFIG_ATMEL_LEGACY            /* required until (g)pio is fixed */
-#define CONFIG_AT91_GPIO               /* enable the GPIO features */
-#define CONFIG_AT91_GPIO_PULLUP        1       /* keep pullups on peripheral pins */
-
-/* serial console */
-#define CONFIG_ATMEL_USART
-#define CONFIG_USART_BASE              ATMEL_BASE_DBGU
-#define CONFIG_USART_ID                        ATMEL_ID_SYS
-#define CONFIG_BAUDRATE                        115200
-
-/* LED configuration */
-#define CONFIG_STATUS_LED
-#define CONFIG_BOARD_SPECIFIC_LED
-
-/* The LED PINs */
-#define CONFIG_RED_LED                 AT91_PIN_PC5
-#define CONFIG_GREEN_LED               AT91_PIN_PC4
-#define CONFIG_YELLOW_LED              AT91_PIN_PC10
-
-#define STATUS_LED_RED                 0
-#define STATUS_LED_GREEN               1
-#define STATUS_LED_YELLOW              2
-
-/* Red LED */
-#define STATUS_LED_BIT                 STATUS_LED_RED
-#define STATUS_LED_STATE               STATUS_LED_OFF
-#define STATUS_LED_PERIOD              (CONFIG_SYS_HZ / 2)
-
-/* Green LED */
-#define STATUS_LED_BIT1                        STATUS_LED_GREEN
-#define STATUS_LED_STATE1              STATUS_LED_ON
-#define STATUS_LED_PERIOD1             (CONFIG_SYS_HZ / 2)
-
-/* Yellow LED */
-#define STATUS_LED_BIT2                        STATUS_LED_YELLOW
-#define STATUS_LED_STATE2              STATUS_LED_OFF
-#define STATUS_LED_PERIOD2             (CONFIG_SYS_HZ / 2)
-
-/* Boot status LED */
-#define STATUS_LED_BOOT                        STATUS_LED_GREEN
-
-/*
- * Ethernet configuration
- *
- * PortuxG20 has always ethernet but for Stamp9G20 you
- * can enable it here if your baseboard features ethernet.
- */
-
-#define CONFIG_MACB
-#define CONFIG_USB_HOST_ETHER
-#define CONFIG_USB_ETHER_ASIX
-#define CONFIG_USB_ETHER_MCS7830
-
-#ifdef CONFIG_MACB
-# define CONFIG_RMII                   /* use reduced MII inteface */
-# define CONFIG_NET_RETRY_COUNT        20      /* # of DHCP/BOOTP retries */
-#define CONFIG_AT91_WANTS_COMMON_PHY
-
-/* BOOTP and DHCP options */
-# define CONFIG_BOOTP_BOOTFILESIZE
-# define CONFIG_BOOTP_BOOTPATH
-# define CONFIG_BOOTP_GATEWAY
-# define CONFIG_BOOTP_HOSTNAME
-# define CONFIG_NFSBOOTCOMMAND                                         \
-       "setenv autoload yes; setenv autoboot yes; "                    \
-       "setenv bootargs ${basicargs} ${mtdparts} "                     \
-       "root=/dev/nfs ip=dhcp nfsroot=${serverip}:/srv/nfs/rootfs; "   \
-       "dhcp"
-#endif /* CONFIG_MACB */
-
-/* Enable the watchdog */
-#define CONFIG_AT91SAM9_WATCHDOG
-#define CONFIG_HW_WATCHDOG
-
-/* USB configuration */
-#define CONFIG_USB_ATMEL
-#define CONFIG_USB_ATMEL_CLK_SEL_PLLB
-#define CONFIG_USB_OHCI_NEW
-#define CONFIG_USB_STORAGE
-#define CONFIG_DOS_PARTITION
-#define CONFIG_SYS_USB_OHCI_CPU_INIT
-#define CONFIG_SYS_USB_OHCI_REGS_BASE  ATMEL_UHP_BASE
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME  "at91sam9260"
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
-
-/* General Boot Parameter */
-#define CONFIG_BOOTDELAY               3
-#define CONFIG_BOOTCOMMAND             "run flashboot"
-#define CONFIG_SYS_CBSIZE              256
-#define CONFIG_SYS_MAXARGS             16
-#define CONFIG_SYS_PBSIZE \
-       (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_CMDLINE_EDITING
-
-/*
- * RAM Memory address where to put the
- * Linux Kernel befor starting.
- */
-#define CONFIG_SYS_LOAD_ADDR           0x22000000
-
-/*
- * The NAND Flash partitions:
- * ==========================================
- * 0x0000000-0x001ffff -> 128k, bootstrap
- * 0x0020000-0x005ffff -> 256k, u-boot
- * 0x0060000-0x007ffff -> 128k, env1
- * 0x0080000-0x009ffff -> 128k, env2 (backup)
- * 0x0100000-0x06fffff ->   6M, kernel
- * 0x0700000-0x8000000 -> 121M, RootFS
- */
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_OFFSET              ((128 + 256) << 10)
-#define CONFIG_ENV_OFFSET_REDUND       ((128 + 256 + 128) << 10)
-#define CONFIG_ENV_SIZE                        (128 << 10)
-
-/*
- * Predefined environment variables.
- * Usefull to define some easy to use boot commands.
- */
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-                                                                       \
-       "basicargs=console=ttyS0,115200\0"                              \
-                                                                       \
-       "mtdparts=mtdparts=atmel_nand:128k(bootstrap)ro,"               \
-               "256k(uboot)ro,128k(env1)ro,"                           \
-               "128k(env2)ro,6M(linux),-(root)rw\0"                    \
-                                                                       \
-       "flashboot=setenv bootargs ${basicargs} ${mtdparts} "           \
-               "root=/dev/mtdblock5 rootfstype=jffs2; "                \
-               "nand read 0x22000000 0x100000 0x600000; "              \
-               "bootm 22000000\0"                                      \
-                                                                       \
-       "sdboot=setenv bootargs ${basicargs} ${mtdparts} "              \
-               "root=/dev/mmcblk0p1 rootwait; "                        \
-               "nand read 0x22000000 0x100000 0x600000; "              \
-               "bootm 22000000"
-
-/* Command line & features configuration */
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_USB
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_LED
-
-#ifdef CONFIG_MACB
-# define CONFIG_CMD_PING
-# define CONFIG_CMD_DHCP
-#endif /* CONFIG_MACB */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/stxgp3.h b/include/configs/stxgp3.h
deleted file mode 100644 (file)
index 25b7d5f..0000000
+++ /dev/null
@@ -1,354 +0,0 @@
-/*
- * (C) Copyright 2003 Embedded Edge, LLC
- * Dan Malek <dan@embeddededge.com>
- * Copied from ADS85xx.
- * Updates for Silicon Tx GP3 8560 board.
- *
- * (C) Copyright 2002,2003 Motorola,Inc.
- * Xianghua Xiao <X.Xiao@motorola.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* mpc8560ads board configuration file */
-/* please refer to doc/README.mpc85xx for more info */
-/* make sure you change the MAC address and other network params first,
- * search for CONFIG_SERVERIP, etc. in this file
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* High Level Configuration Options */
-#define CONFIG_BOOKE           1       /* BOOKE                */
-#define CONFIG_E500            1       /* BOOKE e500 family    */
-#define CONFIG_CPM2            1       /* has CPM2 */
-#define CONFIG_STXGP3          1       /* Silicon Tx GPPP board specific*/
-#define CONFIG_MPC8560         1
-
-#define        CONFIG_SYS_TEXT_BASE    0xfff80000
-
-#undef  CONFIG_PCI                     /* pci ethernet support */
-#define CONFIG_TSEC_ENET               /* tsec ethernet support*/
-#undef  CONFIG_ETHER_ON_FCC             /* cpm FCC ethernet support */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_FSL_LAW         1       /* Use common FSL init code */
-
-/* sysclk for MPC85xx
- */
-
-#define CONFIG_SYS_CLK_FREQ     33333333 /* most pci cards are 33Mhz */
-
-/* Blinkin' LEDs for Robert :-)
-*/
-#define CONFIG_SHOW_ACTIVITY 1
-
-/*
- * These can be toggled for performance analysis, otherwise use default.
- */
-#define CONFIG_L2_CACHE                     /* toggle L2 cache         */
-#define  CONFIG_BTB                          /* toggle branch predition */
-
-#define CONFIG_BOARD_EARLY_INIT_F   1        /* Call board_pre_init      */
-#define CONFIG_RESET_PHY_R     1       /* Call reset_phy()             */
-
-#undef  CONFIG_SYS_DRAM_TEST                       /* memory test, takes time  */
-#define CONFIG_SYS_MEMTEST_START       0x00200000  /* memtest region */
-#define CONFIG_SYS_MEMTEST_END         0x00400000
-
-
-/* Localbus SDRAM is an option, not all boards have it.
- * This address, however, is used to configure a 256M local bus
- * window that includes the Config latch below.
- */
-#define CONFIG_SYS_LBC_SDRAM_BASE      0xf0000000      /* Localbus SDRAM */
-#define CONFIG_SYS_LBC_SDRAM_SIZE      256             /* LBC SDRAM is 64MB    */
-
-#define CONFIG_SYS_FLASH_BASE        0xff000000      /* start of FLASH 16M    */
-#define CONFIG_SYS_BR0_PRELIM        0xff001801      /* port size 32bit      */
-
-#define CONFIG_SYS_OR0_PRELIM          0xff000ff7      /* 16 MB Flash           */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1               /* number of banks      */
-#define CONFIG_SYS_MAX_FLASH_SECT      136             /* sectors per device   */
-#undef CONFIG_SYS_FLASH_CHECKSUM
-#define CONFIG_SYS_FLASH_ERASE_TOUT    60000   /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-/* The configuration latch is Chip Select 1.
- * It's an 8-bit latch in the lower 8 bits of the word.
- */
-#define CONFIG_SYS_BR1_PRELIM          0xfc001801      /* 32-bit port */
-#define CONFIG_SYS_OR1_PRELIM          0xffff0ff7      /* 64K is enough */
-#define CONFIG_SYS_LBC_LCLDEVS_BASE    0xfc000000      /* Base of localbus devices */
-
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE    /* start of monitor     */
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#define CONFIG_SYS_RAMBOOT
-#else
-#undef  CONFIG_SYS_RAMBOOT
-#endif
-
-#ifdef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_CCSRBAR_DEFAULT     0x40000000      /* CCSRBAR by BDI cfg   */
-#endif
-#define CONFIG_SYS_CCSRBAR             0xfdf00000
-#define CONFIG_SYS_CCSRBAR_PHYS_LOW    CONFIG_SYS_CCSRBAR
-
-/* DDR Setup */
-#define CONFIG_SYS_FSL_DDR1
-#define CONFIG_SPD_EEPROM              /* Use SPD EEPROM for DDR setup*/
-#define CONFIG_DDR_SPD
-#undef CONFIG_FSL_DDR_INTERACTIVE
-
-#undef  CONFIG_DDR_ECC                 /* only for ECC DDR module */
-#define CONFIG_SYS_FSL_ERRATUM_DDR_MSYNC_IN    /* possible DLL fix needed */
-#define CONFIG_DDR_2T_TIMING           /* Sets the 2T timing bit */
-
-#define CONFIG_MEM_INIT_VALUE          0xDeadBeef
-
-#define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000      /* DDR is system memory*/
-#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
-
-#define CONFIG_NUM_DDR_CONTROLLERS     1
-#define CONFIG_DIMM_SLOTS_PER_CTLR     1
-#define CONFIG_CHIP_SELECTS_PER_CTRL   (2 * CONFIG_DIMM_SLOTS_PER_CTLR)
-
-/* I2C addresses of SPD EEPROMs */
-#define SPD_EEPROM_ADDRESS     0x54    /* CTLR 0 DIMM 0 */
-
-#undef CONFIG_CLOCKS_IN_MHZ
-
-/* local bus definitions */
-#define CONFIG_SYS_BR2_PRELIM          0xf8001861      /* 64MB localbus SDRAM  */
-#define CONFIG_SYS_OR2_PRELIM          0xfc006901
-#define CONFIG_SYS_LBC_LCRR            0x00030004      /* local bus freq       */
-#define CONFIG_SYS_LBC_LBCR            0x00000000
-#define CONFIG_SYS_LBC_LSRT            0x20000000
-#define CONFIG_SYS_LBC_MRTPR           0x20000000
-#define CONFIG_SYS_LBC_LSDMR_1         0x2861b723
-#define CONFIG_SYS_LBC_LSDMR_2         0x0861b723
-#define CONFIG_SYS_LBC_LSDMR_3         0x0861b723
-#define CONFIG_SYS_LBC_LSDMR_4         0x1861b723
-#define CONFIG_SYS_LBC_LSDMR_5         0x4061b723
-
-#define CONFIG_SYS_INIT_RAM_LOCK       1
-#define CONFIG_SYS_INIT_RAM_ADDR       0x60000000      /* Initial RAM address  */
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000          /* Size of used area in RAM */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Mon */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserved for malloc */
-
-/* Serial Port */
-#define CONFIG_CONS_ON_SCC             /* define if console on SCC */
-#undef  CONFIG_CONS_NONE               /* define if console on something else */
-#define CONFIG_CONS_INDEX       2      /* which serial channel for console */
-
-#define CONFIG_BAUDRATE                38400
-
-#define CONFIG_SYS_BAUDRATE_TABLE  \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 115200}
-
-/* Use the HUSH parser */
-#define CONFIG_SYS_HUSH_PARSER
-#ifdef  CONFIG_SYS_HUSH_PARSER
-#endif
-
-/*
- * I2C
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_FSL
-#define CONFIG_SYS_FSL_I2C_SPEED       400000
-#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
-#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
-
-#if 0
-#define CONFIG_SYS_I2C_NOPROBES        {0x00}  /* Don't probe these addrs */
-#else
-/* I did the 'if 0' so we could keep the syntax above if ever needed. */
-#undef CONFIG_SYS_I2C_NOPROBES
-#endif
-
-/* RapdIO Map configuration, mapped 1:1.
-*/
-#define CONFIG_SYS_RIO_MEM_BASE        0xc0000000
-#define CONFIG_SYS_RIO_MEM_PHYS        CONFIG_SYS_RIO_MEM_BASE
-#define CONFIG_SYS_RIO_MEM_SIZE        0x200000000     /* 512 M */
-
-/* Standard 8560 PCI addressing, mapped 1:1.
-*/
-#define CONFIG_SYS_PCI1_MEM_BASE       0x80000000
-#define CONFIG_SYS_PCI1_MEM_PHYS       CONFIG_SYS_PCI1_MEM_BASE
-#define CONFIG_SYS_PCI1_MEM_SIZE       0x20000000      /* 512M */
-#define CONFIG_SYS_PCI1_IO_BASE        0xe2000000
-#define CONFIG_SYS_PCI1_IO_PHYS        CONFIG_SYS_PCI1_IO_BASE
-#define CONFIG_SYS_PCI1_IO_SIZE        0x01000000      /* 16 M */
-
-#if defined(CONFIG_PCI)                        /* PCI Ethernet card */
-
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play */
-
-#undef CONFIG_EEPRO100
-#undef CONFIG_TULIP
-
-#if !defined(CONFIG_PCI_PNP)
-  #define PCI_ENET0_IOADDR     0xe0000000
-  #define PCI_ENET0_MEMADDR     0xe0000000
-  #define PCI_IDSEL_NUMBER      0x0c   /* slot0->3(IDSEL)=12->15 */
-#endif
-
-#undef CONFIG_PCI_SCAN_SHOW
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x1057  /* Motorola */
-
-#endif /* CONFIG_PCI */
-
-#if defined(CONFIG_TSEC_ENET)
-
-#define CONFIG_MII             1       /* MII PHY management           */
-
-#define CONFIG_TSEC1   1
-#define CONFIG_TSEC1_NAME      "TSEC0"
-#define CONFIG_TSEC2   1
-#define CONFIG_TSEC2_NAME      "TSEC1"
-
-#define TSEC1_PHY_ADDR         2
-#define TSEC2_PHY_ADDR         4
-#define TSEC1_PHYIDX           0
-#define TSEC2_PHYIDX           0
-#define TSEC1_FLAGS            TSEC_GIGABIT
-#define TSEC2_FLAGS            TSEC_GIGABIT
-#define CONFIG_ETHPRIME                "TSEC0"
-
-#elif defined(CONFIG_ETHER_ON_FCC)     /* CPM FCC Ethernet */
-
-#define CONFIG_ETHER_ON_FCC2             /* define if ether on FCC   */
-#undef  CONFIG_ETHER_NONE               /* define if ether on something else */
-#define CONFIG_ETHER_INDEX      2       /* which channel for ether  */
-
-#if (CONFIG_ETHER_INDEX == 2)
-  /*
-   * - Rx-CLK is CLK13
-   * - Tx-CLK is CLK14
-   * - Select bus for bd/buffers
-   * - Full duplex
-   */
-  #define CONFIG_SYS_CMXFCR_MASK2      (CMXFCR_FC2 | CMXFCR_RF2CS_MSK | CMXFCR_TF2CS_MSK)
-  #define CONFIG_SYS_CMXFCR_VALUE2     (CMXFCR_RF2CS_CLK13 | CMXFCR_TF2CS_CLK14)
-  #define CONFIG_SYS_CPMFCR_RAMTYPE    0
-#if 0
-  #define CONFIG_SYS_FCC_PSMR          (FCC_PSMR_FDE)
-#else
-  #define CONFIG_SYS_FCC_PSMR          0
-#endif
-  #define FETH2_RST            0x01
-#elif (CONFIG_ETHER_INDEX == 3)
-  /* need more definitions here for FE3 */
-  #define FETH3_RST            0x80
-#endif /* CONFIG_ETHER_INDEX */
-
-/* MDIO is done through the TSEC0 control.
-*/
-#define CONFIG_MII                     /* MII PHY management */
-#undef CONFIG_BITBANGMII               /* bit-bang MII PHY management  */
-
-#endif
-
-/* Environment */
-/* We use the top boot sector flash, so we have some 16K sectors for env
- */
-#ifndef CONFIG_SYS_RAMBOOT
-  #define CONFIG_ENV_IS_IN_FLASH       1
-  #define CONFIG_ENV_ADDR              (CONFIG_SYS_MONITOR_BASE + 0x60000)
-  #define CONFIG_ENV_SECT_SIZE 0x4000  /* 16K (one top sector) for env */
-  #define CONFIG_ENV_SIZE              0x2000
-#else
-  #define CONFIG_SYS_NO_FLASH          1       /* Flash is not usable now      */
-  #define CONFIG_ENV_IS_NOWHERE        1       /* Store ENV in memory only     */
-  #define CONFIG_ENV_ADDR              (CONFIG_SYS_MONITOR_BASE - 0x1000)
-  #define CONFIG_ENV_SIZE              0x2000
-#endif
-
-#define CONFIG_BOOTARGS "root=/dev/nfs rw ip=any console=ttyS1,38400"
-#define CONFIG_BOOTCOMMAND     "bootm 0xff000000 0xff100000"
-#define CONFIG_BOOTDELAY       3       /* -1 disable autoboot */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_REGINFO
-
-#if !defined(CONFIG_SYS_RAMBOOT)
-    #define CONFIG_CMD_ELF
-#endif
-
-#if defined(CONFIG_PCI)
-    #define CONFIG_CMD_PCI
-#endif
-
-#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
-    #define CONFIG_CMD_MII
-#endif
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR   0x1000000       /* default load address */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
-#define CONFIG_HAS_ETH0
-#define CONFIG_HAS_ETH1
-#define CONFIG_HAS_ETH2
-#endif
-
-#define CONFIG_SERVERIP                192.168.85.1
-#define CONFIG_IPADDR          192.168.85.60
-#define CONFIG_GATEWAYIP       192.168.85.1
-#define CONFIG_NETMASK         255.255.255.0
-#define CONFIG_HOSTNAME                STX_GP3
-#define CONFIG_ROOTPATH                "/gppproot"
-#define CONFIG_BOOTFILE                "uImage"
-#define CONFIG_LOADADDR                0x1000000
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/stxssa.h b/include/configs/stxssa.h
deleted file mode 100644 (file)
index ee16fea..0000000
+++ /dev/null
@@ -1,440 +0,0 @@
-/*
- * (C) Copyright 2005 Embedded Alley Solutions, Inc.
- * Dan Malek <dan@embeddedalley.com>
- * Copied from STx GP3.
- * Updates for Silicon Tx GP3 SSA board.
- *
- * (C) Copyright 2002,2003 Motorola,Inc.
- * Xianghua Xiao <X.Xiao@motorola.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/* mpc8560ads board configuration file */
-/* please refer to doc/README.mpc85xx for more info */
-/* make sure you change the MAC address and other network params first,
- * search for CONFIG_SERVERIP, etc. in this file
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/* High Level Configuration Options */
-#define CONFIG_BOOKE           1       /* BOOKE                */
-#define CONFIG_E500            1       /* BOOKE e500 family    */
-#define CONFIG_CPM2            1       /* has CPM2 */
-#define CONFIG_STXSSA          1       /* Silicon Tx GPPP SSA board specific*/
-#define CONFIG_MPC8560         1
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFF80000
-
-#define CONFIG_PCI                     /* PCI ethernet support */
-#define CONFIG_PCI_INDIRECT_BRIDGE     /* indirect PCI bridge support */
-#define CONFIG_TSEC_ENET               /* tsec ethernet support*/
-#undef CONFIG_ETHER_ON_FCC             /* cpm FCC ethernet support */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_FSL_LAW         1       /* Use common FSL init code */
-
-/* sysclk for MPC85xx
- */
-
-#define CONFIG_SYS_CLK_FREQ    33000000 /* most pci cards are 33Mhz */
-
-/* Blinkin' LEDs for Robert :-)
-*/
-#define CONFIG_SHOW_ACTIVITY 1
-
-/*
- * These can be toggled for performance analysis, otherwise use default.
- */
-#define CONFIG_L2_CACHE                                /* toggle L2 cache             */
-#define  CONFIG_BTB                            /* toggle branch predition */
-
-#define CONFIG_BOARD_EARLY_INIT_F   1          /* Call board_pre_init   */
-
-#undef CONFIG_SYS_DRAM_TEST                            /* memory test, takes time      */
-#define CONFIG_SYS_MEMTEST_START       0x00200000      /* memtest region */
-#define CONFIG_SYS_MEMTEST_END         0x00400000
-
-
-/* Localbus connector. There are many options that can be
- * connected here, including sdram or lots of flash.
- * This address, however, is used to configure a 256M local bus
- * window that includes the Config latch below.
- */
-#define CONFIG_SYS_LBC_OPTION_BASE     0xF0000000      /* Localbus Extension */
-#define CONFIG_SYS_LBC_OPTION_SIZE     256             /* 256MB */
-
-/* There are various flash options used, we configure for the largest,
- * which is 64Mbytes.  The CFI works fine and will discover the proper
- * sizes.
- */
-#ifdef CONFIG_STXSSA_4M
-#define CONFIG_SYS_FLASH_BASE          0xFFC00000      /* start of  4 MiB flash */
-#else
-#define CONFIG_SYS_FLASH_BASE          0xFC000000      /* start of 64 MiB flash */
-#endif
-#define CONFIG_SYS_BR0_PRELIM  (CONFIG_SYS_FLASH_BASE | 0x1801) /* port size 32bit      */
-#define CONFIG_SYS_OR0_PRELIM  (CONFIG_SYS_FLASH_BASE | 0x0FF7)
-
-#define CONFIG_SYS_FLASH_CFI           1
-#define CONFIG_FLASH_CFI_DRIVER        1
-#undef CONFIG_SYS_FLASH_USE_BUFFER_WRITE       /* use buffered writes (20x faster) */
-#define CONFIG_SYS_MAX_FLASH_SECT      256     /* max number of sectors on one chip */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks   */
-
-#define CONFIG_SYS_FLASH_BANKS_LIST { CONFIG_SYS_FLASH_BASE }
-
-#define CONFIG_SYS_FLASH_PROTECTION
-
-/* The configuration latch is Chip Select 1.
- * It's an 8-bit latch in the lower 8 bits of the word.
- */
-#define CONFIG_SYS_LBC_CFGLATCH_BASE   0xFB000000      /* Base of config latch */
-#define CONFIG_SYS_BR1_PRELIM          0xFB001801      /* 32-bit port */
-#define CONFIG_SYS_OR1_PRELIM          0xFFFF0FF7      /* 64K is enough */
-
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE    /* start of monitor     */
-
-#if (CONFIG_SYS_MONITOR_BASE < CONFIG_SYS_FLASH_BASE)
-#define CONFIG_SYS_RAMBOOT
-#else
-#undef CONFIG_SYS_RAMBOOT
-#endif
-
-#ifdef CONFIG_SYS_RAMBOOT
-#define CONFIG_SYS_CCSRBAR_DEFAULT     0x40000000      /* CCSRBAR by BDI cfg   */
-#endif
-
-#define CONFIG_SYS_CCSRBAR             0xe0000000
-#define CONFIG_SYS_CCSRBAR_PHYS_LOW    CONFIG_SYS_CCSRBAR
-
-/* DDR Setup */
-#define CONFIG_SYS_FSL_DDR1
-#define CONFIG_SPD_EEPROM              /* Use SPD EEPROM for DDR setup*/
-#define CONFIG_DDR_SPD
-#undef CONFIG_FSL_DDR_INTERACTIVE
-
-#undef CONFIG_DDR_ECC                  /* only for ECC DDR module */
-#define CONFIG_DDR_2T_TIMING           /* Sets the 2T timing bit */
-
-#define CONFIG_MEM_INIT_VALUE          0xDeadBeef
-
-#define CONFIG_SYS_DDR_SDRAM_BASE      0x00000000      /* DDR is system memory*/
-#define CONFIG_SYS_SDRAM_BASE          CONFIG_SYS_DDR_SDRAM_BASE
-
-#define CONFIG_NUM_DDR_CONTROLLERS     1
-#define CONFIG_DIMM_SLOTS_PER_CTLR     1
-#define CONFIG_CHIP_SELECTS_PER_CTRL   (2 * CONFIG_DIMM_SLOTS_PER_CTLR)
-
-/* I2C addresses of SPD EEPROMs */
-#define SPD_EEPROM_ADDRESS     0x54    /* CTLR 0 DIMM 0 */
-
-#undef CONFIG_CLOCKS_IN_MHZ
-
-/* local bus definitions */
-#define CONFIG_SYS_BR2_PRELIM          0xf8001861      /* 64MB localbus SDRAM  */
-#define CONFIG_SYS_OR2_PRELIM          0xfc006901
-#define CONFIG_SYS_LBC_LCRR            0x00030004      /* local bus freq       */
-#define CONFIG_SYS_LBC_LBCR            0x00000000
-#define CONFIG_SYS_LBC_LSRT            0x20000000
-#define CONFIG_SYS_LBC_MRTPR           0x20000000
-#define CONFIG_SYS_LBC_LSDMR_1         0x2861b723
-#define CONFIG_SYS_LBC_LSDMR_2         0x0861b723
-#define CONFIG_SYS_LBC_LSDMR_3         0x0861b723
-#define CONFIG_SYS_LBC_LSDMR_4         0x1861b723
-#define CONFIG_SYS_LBC_LSDMR_5         0x4061b723
-
-#define CONFIG_SYS_INIT_RAM_LOCK       1
-#define CONFIG_SYS_INIT_RAM_ADDR       0x60000000      /* Initial RAM address  */
-#define CONFIG_SYS_INIT_RAM_SIZE       0x4000          /* Size of used area in RAM */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
-
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Mon */
-#define CONFIG_SYS_MALLOC_LEN          (512 * 1024)    /* Reserved for malloc */
-
-/* Serial Port */
-#define CONFIG_CONS_INDEX     2
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_bus_freq(0)
-
-#define CONFIG_SYS_BAUDRATE_TABLE  \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 115200}
-
-#define CONFIG_SYS_NS16550_COM1        (CONFIG_SYS_CCSRBAR+0x4500)
-#define CONFIG_SYS_NS16550_COM2        (CONFIG_SYS_CCSRBAR+0x4600)
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_AUTO_COMPLETE   1       /* add autocompletion support   */
-#define CONFIG_SYS_HUSH_PARSER         1       /* Use the HUSH parser          */
-
-/* pass open firmware flat tree */
-#define CONFIG_OF_LIBFDT               1
-#define CONFIG_OF_BOARD_SETUP          1
-#define CONFIG_OF_STDOUT_VIA_ALIAS     1
-
-/*
- * I2C
- */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_FSL
-#define CONFIG_SYS_FSL_I2C_SPEED       400000
-#define CONFIG_SYS_FSL_I2C_SLAVE       0x7F
-#define CONFIG_SYS_FSL_I2C_OFFSET      0x3000
-#undef CONFIG_SYS_I2C_NOPROBES
-
-/* I2C RTC */
-#define CONFIG_RTC_DS1337              /* This is really a DS1339 RTC  */
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68    /* at address 0x68              */
-
-/* I2C EEPROM. AT24C32, we keep our environment in here.
-*/
-#define CONFIG_SYS_I2C_EEPROM_ADDR             0x51    /* 1010001x             */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN         2
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      5       /* =32 Bytes per write  */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  20
-
-/*
- * Standard 8555 PCI mapping.
- * Addresses are mapped 1-1.
- */
-#define CONFIG_SYS_PCI1_MEM_BASE       0x80000000
-#define CONFIG_SYS_PCI1_MEM_PHYS       CONFIG_SYS_PCI1_MEM_BASE
-#define CONFIG_SYS_PCI1_MEM_SIZE       0x20000000      /* 512M */
-#define CONFIG_SYS_PCI1_IO_BASE        0x00000000
-#define CONFIG_SYS_PCI1_IO_PHYS        0xe2000000
-#define CONFIG_SYS_PCI1_IO_SIZE        0x01000000      /* 16M */
-
-#define CONFIG_SYS_PCI2_MEM_BASE       0xa0000000
-#define CONFIG_SYS_PCI2_MEM_PHYS       CONFIG_SYS_PCI2_MEM_BASE
-#define CONFIG_SYS_PCI2_MEM_SIZE       0x20000000      /* 512M */
-#define CONFIG_SYS_PCI2_IO_BASE        0x00000000
-#define CONFIG_SYS_PCI2_IO_PHYS        0xe3000000
-#define CONFIG_SYS_PCI2_IO_SIZE        0x01000000      /* 16M */
-
-#if defined(CONFIG_PCI)                        /* PCI Ethernet card */
-#define CONFIG_MPC85XX_PCI2    1
-#define CONFIG_PCI_PNP                 /* do pci plug-and-play */
-
-#define CONFIG_EEPRO100
-#define CONFIG_TULIP
-
-#if !defined(CONFIG_PCI_PNP)
-  #define PCI_ENET0_IOADDR     0xe0000000
-  #define PCI_ENET0_MEMADDR    0xe0000000
-  #define PCI_IDSEL_NUMBER     0x0c    /* slot0->3(IDSEL)=12->15 */
-#endif
-
-#define CONFIG_PCI_SCAN_SHOW
-#define CONFIG_SYS_PCI_SUBSYS_VENDORID 0x1057  /* Motorola */
-
-#endif /* CONFIG_PCI */
-
-#if defined(CONFIG_TSEC_ENET)
-
-#define CONFIG_MII             1       /* MII PHY management           */
-
-#define CONFIG_TSEC1   1
-#define CONFIG_TSEC1_NAME      "TSEC0"
-#define CONFIG_TSEC2   1
-#define CONFIG_TSEC2_NAME      "TSEC1"
-
-#define TSEC1_PHY_ADDR         2
-#define TSEC2_PHY_ADDR         4
-#define TSEC1_PHYIDX           0
-#define TSEC2_PHYIDX           0
-#define TSEC1_FLAGS            TSEC_GIGABIT
-#define TSEC2_FLAGS            TSEC_GIGABIT
-#define CONFIG_ETHPRIME                "TSEC0"
-
-#elif defined(CONFIG_ETHER_ON_FCC)     /* CPM FCC Ethernet */
-
-#define CONFIG_ETHER_ON_FCC2           /* define if ether on FCC   */
-#undef CONFIG_ETHER_NONE               /* define if ether on something else */
-#define CONFIG_ETHER_INDEX     2       /* which channel for ether  */
-
-#if (CONFIG_ETHER_INDEX == 2)
-  /*
-   * - Rx-CLK is CLK13
-   * - Tx-CLK is CLK14
-   * - Select bus for bd/buffers
-   * - Full duplex
-   */
-  #define CONFIG_SYS_CMXFCR_MASK2      (CMXFCR_FC2 | CMXFCR_RF2CS_MSK | CMXFCR_TF2CS_MSK)
-  #define CONFIG_SYS_CMXFCR_VALUE2     (CMXFCR_RF2CS_CLK13 | CMXFCR_TF2CS_CLK14)
-  #define CONFIG_SYS_CPMFCR_RAMTYPE    0
-#if 0
-  #define CONFIG_SYS_FCC_PSMR          (FCC_PSMR_FDE)
-#else
-  #define CONFIG_SYS_FCC_PSMR          0
-#endif
-  #define FETH2_RST            0x01
-#elif (CONFIG_ETHER_INDEX == 3)
-  /* need more definitions here for FE3 */
-  #define FETH3_RST            0x80
-#endif                                 /* CONFIG_ETHER_INDEX */
-
-/* MDIO is done through the TSEC0 control.
-*/
-#define CONFIG_MII                     /* MII PHY management */
-#undef CONFIG_BITBANGMII               /* bit-bang MII PHY management  */
-
-#endif
-
-/* Environment - default config is in flash, see below */
-#if 0  /* in EEPROM */
-# define CONFIG_ENV_IS_IN_EEPROM       1
-# define CONFIG_ENV_OFFSET             0
-# define CONFIG_ENV_SIZE               2048
-#else  /* in flash */
-# define CONFIG_ENV_IS_IN_FLASH        1
-# ifdef CONFIG_STXSSA_4M
-#  define CONFIG_ENV_SECT_SIZE 0x20000
-# else /* default configuration - 64 MiB flash */
-#  define CONFIG_ENV_SECT_SIZE 0x40000
-# endif
-# define CONFIG_ENV_ADDR               (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
-# define CONFIG_ENV_SIZE               0x4000
-# define CONFIG_ENV_ADDR_REDUND        (CONFIG_ENV_ADDR - CONFIG_ENV_SECT_SIZE)
-# define CONFIG_ENV_SIZE_REDUND        (CONFIG_ENV_SIZE)
-#endif
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define        CONFIG_TIMESTAMP                /* Print image info with ts     */
-
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_SNTP
-#define CONFIG_CMD_REGINFO
-
-#if defined(CONFIG_PCI)
-    #define CONFIG_CMD_PCI
-#endif
-
-#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
-    #define CONFIG_CMD_MII
-#endif
-
-#if !defined(CONFIG_SYS_RAMBOOT)
-    #define CONFIG_CMD_ELF
-#endif
-
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_LOAD_ADDR   0x1000000       /* default load address */
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20) /* Initial Memory map for Linux */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400  /* speed to run kgdb serial port */
-#endif
-
-#if defined(CONFIG_TSEC_ENET) || defined(CONFIG_ETHER_ON_FCC)
-#define CONFIG_HAS_ETH0
-#define CONFIG_HAS_ETH1
-#define CONFIG_HAS_ETH2
-#endif
-
-/*
- * Environment in EEPROM is compatible with different flash sector sizes,
- * but only little space is available, so we use a very simple setup.
- * With environment in flash, we use a more powerful default configuration.
- */
-#ifdef CONFIG_ENV_IS_IN_EEPROM         /* use restricted "standard" environment */
-
-#define CONFIG_BAUDRATE                38400
-
-#define CONFIG_BOOTDELAY       3       /* -1 disable autoboot */
-#define CONFIG_BOOTCOMMAND     "bootm 0xffc00000 0xffd00000"
-#define CONFIG_BOOTARGS                "root=/dev/nfs rw ip=any console=ttyS1,$baudrate"
-#define CONFIG_SERVERIP                192.168.85.1
-#define CONFIG_IPADDR          192.168.85.60
-#define CONFIG_GATEWAYIP       192.168.85.1
-#define CONFIG_NETMASK         255.255.255.0
-#define CONFIG_HOSTNAME                STX_SSA
-#define CONFIG_ROOTPATH                "/gppproot"
-#define CONFIG_BOOTFILE                "uImage"
-#define CONFIG_LOADADDR                0x1000000
-
-#else /* ENV IS IN FLASH               -- use a full-blown envionment */
-
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_BOOTDELAY       5       /* -1 disable autoboot */
-
-#define CONFIG_PREBOOT "echo;" \
-       "echo Type \\\"run flash_nfs\\\" to mount root filesystem over NFS;" \
-       "echo"
-
-#undef CONFIG_BOOTARGS         /* the boot command will set bootargs   */
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "hostname=gp3ssa\0"                                             \
-       "bootfile=/tftpboot/gp3ssa/uImage\0"                            \
-       "loadaddr=400000\0"                                             \
-       "netdev=eth0\0"                                                 \
-       "consdev=ttyS1\0"                                               \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=$serverip:$rootpath\0"                         \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs $bootargs "                              \
-               "ip=$ipaddr:$serverip:$gatewayip:$netmask"              \
-               ":$hostname:$netdev:off panic=1\0"                      \
-       "addcons=setenv bootargs $bootargs "                            \
-               "console=$consdev,$baudrate\0"                          \
-       "flash_nfs=run nfsargs addip addcons;"                          \
-               "bootm $kernel_addr\0"                                  \
-       "flash_self=run ramargs addip addcons;"                         \
-               "bootm $kernel_addr $ramdisk_addr\0"                    \
-       "net_nfs=tftp $loadaddr $bootfile;"                             \
-               "run nfsargs addip addcons;bootm\0"                     \
-       "rootpath=/opt/eldk/ppc_85xx\0"                                 \
-       "kernel_addr=FC000000\0"                                        \
-       "ramdisk_addr=FC200000\0"                                       \
-       ""
-#define CONFIG_BOOTCOMMAND     "run flash_self"
-
-#endif /* CONFIG_ENV_IS_IN_EEPROM */
-
-#endif /* __CONFIG_H */
index 1abf73c311792b21f2fa40857b5f11e43fbd76cc..48cc4ed6f629ebbf1229603aca99840edcc4f051 100644 (file)
 #define CONFIG_INITRD_TAG
 #define CONFIG_SERIAL_TAG
 
-#if defined(CONFIG_SPL_NAND_SUNXI)
-#define CONFIG_SPL_NAND_DRIVERS
-#define CONFIG_SPL_NAND_SUPPORT
-
-#define CONFIG_SYS_NAND_SPL_KERNEL_OFFS 0x280000
-#define CONFIG_SYS_NAND_U_BOOT_OFFS 0x008000
-
+#ifdef CONFIG_NAND_SUNXI
+#define CONFIG_SPL_NAND_SUPPORT 1
 #endif
 
-
 /* mmc config */
 #if !defined(CONFIG_UART0_PORT_F)
 #define CONFIG_MMC
 
 #define CONFIG_SYS_NO_FLASH
 
-#define CONFIG_SYS_MONITOR_LEN         (512 << 10)     /* 512 KiB */
+#define CONFIG_SYS_MONITOR_LEN         (768 << 10)     /* 768 KiB */
 #define CONFIG_IDENT_STRING            " Allwinner Technology"
 
 #define CONFIG_ENV_OFFSET              (544 << 10) /* (8 + 24 + 512) KiB */
index 356220edb43e59499db24ceb5d0d938968baba54..d3138feb70af9ff048cea69a5263b35185dcac15 100644 (file)
 #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
+#define CONFIG_SYS_INIT_RAM_ADDR_PHYS_LOW      0xfe03c000
 /* The assembler doesn't like typecast */
 #define CONFIG_SYS_INIT_RAM_ADDR_PHYS \
        ((CONFIG_SYS_INIT_RAM_ADDR_PHYS_HIGH * 1ull << 32) | \
index 2c9f5da55ad4d9db88ee1ca6091e3ff6c5609e04..12994c8065985e4c8325d92fbad8461093f994ed 100644 (file)
@@ -20,6 +20,7 @@
  * In this case SoC is defined in boards.cfg.
  */
 #include <asm/hardware.h>
+#include <linux/sizes.h>
 
 #define CONFIG_SYS_GENERIC_BOARD
 
  */
 #define CONFIG_NR_DRAM_BANKS           1
 #define CONFIG_SYS_SDRAM_BASE          ATMEL_BASE_CS1
-#define CONFIG_SYS_SDRAM_SIZE          (128 * 1024 * 1024)
+#define CONFIG_SYS_SDRAM_SIZE          (128 * SZ_1M)
 
 /*
  * Initial stack pointer: 4k - GENERATED_GBL_DATA_SIZE in internal SRAM,
  * leaving the correct space for initial global data structure above
  * that address while providing maximum stack area below.
  */
-# define CONFIG_SYS_INIT_SP_ADDR \
+#define CONFIG_SYS_INIT_SP_ADDR \
        (ATMEL_BASE_SRAM1 + 0x1000 - GENERATED_GBL_DATA_SIZE)
 
 /* NAND flash */
 #define CONFIG_AT91_WANTS_COMMON_PHY
 
 #define CONFIG_AT91SAM9_WATCHDOG
+#define CONFIG_AT91_HW_WDT_TIMEOUT     15
 #if !defined(CONFIG_SPL_BUILD)
 /* Enable the watchdog */
 #define CONFIG_HW_WATCHDOG
 /* USB */
 #if defined(CONFIG_BOARD_TAURUS)
 #define CONFIG_USB_ATMEL
+#define CONFIG_USB_ATMEL_CLK_SEL_PLLB
 #define CONFIG_USB_OHCI_NEW
 #define CONFIG_SYS_USB_OHCI_CPU_INIT
 #define CONFIG_SYS_USB_OHCI_REGS_BASE          0x00500000
 #define CONFIG_SYS_USB_OHCI_SLOT_NAME          "at91sam9260"
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
 #define CONFIG_USB_STORAGE
+
+/* USB DFU support */
+#define CONFIG_CMD_MTDPARTS
+#define CONFIG_MTD_DEVICE
+#define CONFIG_MTD_PARTITIONS
+
+#define CONFIG_USB_GADGET
+#define CONFIG_USB_GADGET_AT91
+
+/* DFU class support */
+#define CONFIG_CMD_USB
+#define CONFIG_CMD_DFU
+#define CONFIG_USB_FUNCTION_DFU
+#define CONFIG_DFU_NAND
+#define CONFIG_USB_GADGET_DOWNLOAD
+#define CONFIG_USB_GADGET_VBUS_DRAW    2
+#define CONFIG_SYS_DFU_DATA_BUF_SIZE   (SZ_1M)
+#define DFU_MANIFEST_POLL_TIMEOUT      25000
+
+/* USB DFU IDs */
+#define CONFIG_G_DNL_VENDOR_NUM 0x0908
+#define CONFIG_G_DNL_PRODUCT_NUM 0x02d2
+#define CONFIG_G_DNL_MANUFACTURER "Siemens AG"
+
+#define CONFIG_SYS_CACHELINE_SIZE      SZ_8K
 #endif
 
 /* SPI EEPROM */
 #define CONFIG_SYS_SPI_U_BOOT_OFFS     0x20000
 
 #define CONFIG_SF_DEFAULT_BUS 0
-#define CONFIG_SF_DEFAULT_SPEED 10000000
-#define CONFIG_SF_DEFAULT_MODE SPI_MODE_0
+#define CONFIG_SF_DEFAULT_SPEED 1000000
+#define CONFIG_SF_DEFAULT_MODE SPI_MODE_3
 #endif
 
 /* load address */
 #define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x100000
 #define CONFIG_ENV_OFFSET_REDUND       0x180000
-#define CONFIG_ENV_SIZE                0x20000         /* 1 sector = 128 kB */
+#define CONFIG_ENV_SIZE                (SZ_128K)       /* 1 sector = 128 kB */
 #define CONFIG_BOOTCOMMAND     "nand read 0x22000000 0x200000 0x300000; bootm"
-#define CONFIG_BOOTARGS                                                        \
+
+#if defined(CONFIG_BOARD_TAURUS)
+#define        CONFIG_BOOTARGS_TAURUS                                          \
        "console=ttyS0,115200 earlyprintk "                             \
        "mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,"          \
        "256k(env),256k(env_redundant),256k(spare),"                    \
        "512k(dtb),6M(kernel)ro,-(rootfs) "                             \
        "root=/dev/mtdblock7 rw rootfstype=jffs2"
+#endif
+
+#if defined(CONFIG_BOARD_AXM)
+#define CONFIG_BOOTARGS_AXM                                            \
+       "\0"    \
+       "addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:"   \
+       "${gatewayip}:${netmask}:${hostname}:${netdev}::off\0"          \
+       "addtest=setenv bootargs ${bootargs} loglevel=4 test\0"         \
+       "baudrate=115200\0"                                             \
+       "boot_file=setenv bootfile /${project_dir}/kernel/uImage\0"     \
+       "boot_retries=0\0"                                              \
+       "bootcmd=run flash_self\0"                                      \
+       "bootdelay=3\0"                                                 \
+       "ethact=macb0\0"                                                \
+       "flash_nfs=run nand_kernel;run nfsargs;run addip;upgrade_available;"\
+       "bootm ${kernel_ram};reset\0"                                   \
+       "flash_self=run nand_kernel;run setbootargs;upgrade_available;" \
+       "bootm ${kernel_ram};reset\0"                                   \
+       "flash_self_test=run nand_kernel;run setbootargs addtest; "     \
+       "upgrade_available;bootm ${kernel_ram};reset\0"                 \
+       "hostname=systemone\0"                                          \
+       "kernel_Off=0x00200000\0"                                       \
+       "kernel_Off_fallback=0x03800000\0"                              \
+       "kernel_ram=0x21500000\0"                                       \
+       "kernel_size=0x00400000\0"                                      \
+       "kernel_size_fallback=0x00400000\0"                             \
+       "loads_echo=1\0"                                                \
+       "nand_kernel=nand read.e ${kernel_ram} ${kernel_Off} "          \
+               "${kernel_size}\0"                                      \
+       "net_nfs=run boot_file;tftp ${kernel_ram} ${bootfile};"         \
+       "run nfsargs;run addip;upgrade_available;bootm "                \
+               "${kernel_ram};reset\0"                                 \
+       "netdev=eth0\0"                                                 \
+       "nfsargs=run root_path;setenv bootargs ${bootargs} "            \
+       "root=/dev/nfs rw nfsroot=${serverip}:${rootpath} "             \
+       "at91sam9_wdt.wdt_timeout=16\0"                                 \
+       "partitionset_active=A\0"                                       \
+       "preboot=echo;echo Type 'run flash_self' to use kernel and root "\
+       "filesystem on memory;echo Type 'run flash_nfs' to use kernel " \
+       "from memory and root filesystem over NFS;echo Type 'run net_nfs' "\
+       "to get Kernel over TFTP and mount root filesystem over NFS;echo\0"\
+       "project_dir=systemone\0"                                       \
+       "root_path=setenv rootpath /home/projects/${project_dir}/rootfs\0"\
+       "rootfs=/dev/mtdblock5\0"                                       \
+       "rootfs_fallback=/dev/mtdblock7\0"                              \
+       "setbootargs=setenv bootargs ${bootargs} console=ttyMTD,mtdoops "\
+               "root=${rootfs} rootfstype=jffs2 panic=7 "              \
+               "at91sam9_wdt.wdt_timeout=16\0"                         \
+       "stderr=serial\0"                                               \
+       "stdin=serial\0"                                                \
+       "stdout=serial\0"                                               \
+       "upgrade_available=0\0"
+#endif
+
+#if defined(CONFIG_BOARD_TAURUS)
+#define CONFIG_BOOTARGS                CONFIG_BOOTARGS_TAURUS
+#endif
+
+#if defined(CONFIG_BOARD_AXM)
+#define CONFIG_BOOTARGS                CONFIG_BOOTARGS_AXM
+#endif
 
 #define CONFIG_SYS_CBSIZE              256
 #define CONFIG_SYS_MAXARGS             16
  * Size of malloc() pool
  */
 #define CONFIG_SYS_MALLOC_LEN \
-       ROUND(3 * CONFIG_ENV_SIZE + 128*1024, 0x1000)
+       ROUND(3 * CONFIG_ENV_SIZE + SZ_4M, 0x1000)
 
 /* Defines for SPL */
 #define CONFIG_SPL_FRAMEWORK
 #define CONFIG_SPL_TEXT_BASE           0x0
-#define CONFIG_SPL_MAX_SIZE            (14 * 1024)
-#define CONFIG_SPL_STACK               (16 * 1024)
+#define CONFIG_SPL_MAX_SIZE            (31 * SZ_512)
+#define        CONFIG_SPL_STACK                (ATMEL_BASE_SRAM1 + SZ_16K)
 #define CONFIG_SYS_SPL_MALLOC_START     (CONFIG_SYS_TEXT_BASE - \
                                        CONFIG_SYS_MALLOC_LEN)
 #define CONFIG_SYS_SPL_MALLOC_SIZE      CONFIG_SYS_MALLOC_LEN
 
 #define CONFIG_SPL_BSS_START_ADDR      CONFIG_SPL_MAX_SIZE
-#define CONFIG_SPL_BSS_MAX_SIZE                (3 * 1024)
+#define CONFIG_SPL_BSS_MAX_SIZE                (3 * SZ_512)
 
 #define CONFIG_SPL_LIBCOMMON_SUPPORT
 #define CONFIG_SPL_LIBGENERIC_SUPPORT
 #define CONFIG_SPL_NAND_RAW_ONLY
 #define CONFIG_SPL_NAND_SOFTECC
 #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x20000
-#define CONFIG_SYS_NAND_U_BOOT_SIZE    0x80000
+#define CONFIG_SYS_NAND_U_BOOT_SIZE    SZ_512K
 #define        CONFIG_SYS_NAND_U_BOOT_START    CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_NAND_U_BOOT_DST     CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_NAND_5_ADDR_CYCLE
 
-#define CONFIG_SYS_NAND_SIZE           (256*1024*1024)
-#define CONFIG_SYS_NAND_PAGE_SIZE      2048
-#define CONFIG_SYS_NAND_BLOCK_SIZE     (128*1024)
+#define CONFIG_SYS_NAND_SIZE           (256 * SZ_1M)
+#define CONFIG_SYS_NAND_PAGE_SIZE      SZ_2K
+#define CONFIG_SYS_NAND_BLOCK_SIZE     (SZ_128K)
 #define CONFIG_SYS_NAND_PAGE_COUNT     (CONFIG_SYS_NAND_BLOCK_SIZE / \
                                         CONFIG_SYS_NAND_PAGE_SIZE)
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS  NAND_LARGE_BADBLOCK_POS
 #define CONFIG_SYS_MCKR                        0x1300
 #define CONFIG_SYS_MCKR_CSS            (0x02 | CONFIG_SYS_MCKR)
 #define CONFIG_SYS_AT91_PLLB           0x10193F05
+
 #endif
index 66cb274f68a4fbed81a423755d18c6f281dcb5b7..70b440340ff726123888d0405bafa444a42340eb 100644 (file)
@@ -20,7 +20,7 @@
 
 #define CONFIG_SYS_HZ                  1000
 
-#define CONFIG_IMX6_THERMAL
+#define CONFIG_IMX_THERMAL
 
 /* Physical Memory Map */
 #define CONFIG_NR_DRAM_BANKS           1
index e67ff7b957154f92f3c85bdf1012828ca29c9303..651c4c4935366bf7d5df2b2eac05c6b55d947019 100644 (file)
@@ -8,6 +8,21 @@
 #ifndef __TEGRA_COMMON_POST_H
 #define __TEGRA_COMMON_POST_H
 
+/*
+ * Size of malloc() pool
+ */
+#ifdef CONFIG_USB_FUNCTION_DFU
+#define CONFIG_SYS_MALLOC_LEN  (SZ_4M + \
+                                       CONFIG_SYS_DFU_DATA_BUF_SIZE + \
+                                       CONFIG_SYS_DFU_MAX_FILE_SIZE)
+#else
+#define CONFIG_SYS_MALLOC_LEN          (4 << 20)       /* 4MB  */
+#endif
+
+#ifndef CONFIG_ARM64
+#define CONFIG_SYS_NONCACHED_MEMORY    (1 << 20)       /* 1 MiB */
+#endif
+
 #ifndef CONFIG_SPL_BUILD
 #define BOOT_TARGET_DEVICES(func) \
        func(MMC, mmc, 1) \
index e51da3f40571839a2c7cc8abbf12cfbafb8ca665..f6e1d5c4db2dc9b7ccd6f87e90b6c8fe30ab9b04 100644 (file)
@@ -30,7 +30,8 @@
 #define CONFIG_CMD_USB_MASS_STORAGE
 /* DFU protocol */
 #define CONFIG_USB_FUNCTION_DFU
-#define CONFIG_SYS_DFU_DATA_BUF_SIZE (1 * 1024 * 1024)
+#define CONFIG_SYS_DFU_DATA_BUF_SIZE SZ_1M
+#define CONFIG_SYS_DFU_MAX_FILE_SIZE SZ_32M
 #define CONFIG_CMD_DFU
 #ifdef CONFIG_MMC
 #define CONFIG_DFU_MMC
@@ -38,6 +39,7 @@
 #ifdef CONFIG_SPI_FLASH
 #define CONFIG_DFU_SF
 #endif
+#define CONFIG_DFU_RAM
 #endif
 
 #endif /* _TEGRA_COMMON_USB_GADGET_H_ */
index 6fe5f2ce6543cd04b76cfdd1c9671d2f10b2e496..1c469d092e8c5b983e1aa3240aabe21fda62ff30 100644 (file)
 #define CONFIG_ENV_VARS_UBOOT_CONFIG
 #define CONFIG_ENV_SIZE                        0x2000  /* Total Size Environment */
 
-/*
- * Size of malloc() pool
- */
-#ifdef CONFIG_DFU_MMC
-#define CONFIG_SYS_MALLOC_LEN          ((4 << 20) + \
-                                       CONFIG_SYS_DFU_DATA_BUF_SIZE)
-#else
-#define CONFIG_SYS_MALLOC_LEN          (4 << 20)       /* 4MB  */
-#endif
-
-#ifndef CONFIG_ARM64
-#define CONFIG_SYS_NONCACHED_MEMORY    (1 << 20)       /* 1 MiB */
-#endif
-
 /*
  * NS16550 Configuration
  */
 
 #ifndef CONFIG_SPL_BUILD
 #include <config_distro_defaults.h>
+#define CONFIG_CMD_EXT4_WRITE
+#define CONFIG_FAT_WRITE
 #endif
 
 #endif /* _TEGRA_COMMON_H_ */
index 18fca02c4c383ccdd9bfb4033aaebf12de7a8e8a..6dc65158994a3479b293da37d2a13ac07e43b45e 100644 (file)
        "ramdisk_addr_r=0x88080000\0" \
        "bootm_size=0x10000000\0"
 
+#define DEFAULT_MMC_TI_ARGS \
+       "mmcdev=0\0" \
+       "mmcrootfstype=ext4 rootwait\0" \
+       "finduuid=part uuid mmc 0:2 uuid\0" \
+       "args_mmc=run finduuid;setenv bootargs console=${console} " \
+               "${optargs} " \
+               "root=PARTUUID=${uuid} rw " \
+               "rootfstype=${mmcrootfstype}\0"
+
 /*
  * Default to a quick boot delay.
  */
index 2eaa3b61b4c3b7dd494fd52ac47b387f4e353a56..1cd7dae85b3fe563656a7ef9b38352d146eb6d0e 100644 (file)
@@ -83,6 +83,7 @@
  */
 #define CONFIG_EXTRA_ENV_SETTINGS \
        DEFAULT_LINUX_BOOT_ENV \
+       DEFAULT_MMC_TI_ARGS \
        "console=ttyO2,115200n8\0" \
        "fdtfile=undefined\0" \
        "bootpart=0:2\0" \
        "bootfile=zImage\0" \
        "usbtty=cdc_acm\0" \
        "vram=16M\0" \
-       "mmcdev=0\0" \
-       "mmcroot=/dev/mmcblk0p2 rw\0" \
-       "mmcrootfstype=ext3 rootwait\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "vram=${vram} " \
-               "root=${mmcroot} " \
-               "rootfstype=${mmcrootfstype}\0" \
        "loadbootscript=load mmc ${mmcdev} ${loadaddr} boot.scr\0" \
        "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
                "source ${loadaddr}\0" \
        "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
        "loaduimage=load mmc ${mmcdev} ${loadaddr} uImage\0" \
        "mmcboot=echo Booting from mmc${mmcdev} ...; " \
-               "run mmcargs; " \
+               "run args_mmc; " \
                "bootz ${loadaddr} - ${fdtaddr}\0" \
        "uimageboot=echo Booting from mmc${mmcdev} ...; " \
-               "run mmcargs; " \
+               "run args_mmc; " \
                "bootm ${loadaddr}\0" \
        "findfdt="\
                "if test $board_name = sdp4430; then " \
index 1c1f8c0830d82de84fe15e3de39dd0491eb32332..189ea7e9140e33465b98f2e8b62b0db262801f37 100644 (file)
@@ -70,6 +70,7 @@
 #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 #define CONFIG_EXTRA_ENV_SETTINGS \
        DEFAULT_LINUX_BOOT_ENV \
+       DEFAULT_MMC_TI_ARGS \
        "console=" CONSOLEDEV ",115200n8\0" \
        "fdtfile=undefined\0" \
        "bootpart=0:2\0" \
        "partitions=" PARTS_DEFAULT "\0" \
        "optargs=\0" \
        "dofastboot=0\0" \
-       "mmcdev=0\0" \
-       "mmcroot=/dev/mmcblk0p2 rw\0" \
-       "mmcrootfstype=ext4 rootwait\0" \
-       "mmcargs=setenv bootargs console=${console} " \
-               "${optargs} " \
-               "vram=${vram} " \
-               "root=${mmcroot} " \
-               "rootfstype=${mmcrootfstype}\0" \
        "loadbootscript=fatload mmc ${mmcdev} ${loadaddr} boot.scr\0" \
        "bootscript=echo Running bootscript from mmc${mmcdev} ...; " \
                "source ${loadaddr}\0" \
                        "if run loadimage; then " \
                                "run loadfdt; " \
                                "echo Booting from mmc${mmcdev} ...; " \
-                               "run mmcargs; " \
+                               "run args_mmc; " \
                                "bootz ${loadaddr} - ${fdtaddr}; " \
                        "fi;" \
                "fi;\0" \
diff --git a/include/configs/tk71.h b/include/configs/tk71.h
deleted file mode 100644 (file)
index 46e8c90..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-/*
- * Copyright (C) 2012 Marek Vasut <marex@denx.de>
- * on behalf of DENX Software Engineering GmbH
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_TK71_H__
-#define __CONFIG_TK71_H__
-
-/*
- * Version number information
- */
-#define CONFIG_IDENT_STRING    "\nKa-Ro TK71"
-
-/*
- * High Level Configuration Options (easy to change)
- */
-#define CONFIG_FEROCEON_88FR131        1       /* CPU Core subversion */
-#define CONFIG_KW88F6281       1       /* SOC Name */
-#define CONFIG_SKIP_LOWLEVEL_INIT      /* disable board lowlevel_init */
-#define CONFIG_NR_DRAM_BANKS   1
-
-#define MACH_TYPE_TK71         2399
-#define CONFIG_MACH_TYPE       MACH_TYPE_TK71
-
-/*
- * Commands configuration
- */
-#define        CONFIG_SYS_HUSH_PARSER
-
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_DOS_PARTITION
-#define CONFIG_SUPPORT_VFAT
-
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_ENV
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_USB
-
-/*
- * mv-common.h should be defined after CMD configs since it used them
- * to enable certain macros
- */
-#include "mv-common.h"
-
-/*
- * NAND flash
- */
-#ifdef CONFIG_CMD_NAND
-#define CONFIG_MTD_DEVICE
-#define CONFIG_MTD_PARTITIONS
-#define CONFIG_JFFS2_NAND
-#define CONFIG_JFFS2_DEV               "nand0,3"
-#endif
-
-/*
- * Ethernet Driver configuration
- */
-#ifdef CONFIG_CMD_NET
-#define CONFIG_MVGBE_PORTS     {1, 0}
-#define CONFIG_PHY_BASE_ADR    0x08
-#endif
-
-/*
- * USB/EHCI
- */
-#ifdef CONFIG_CMD_USB
-#define CONFIG_USB_EHCI
-#define CONFIG_USB_EHCI_KIRKWOOD
-#define CONFIG_EHCI_IS_TDI
-#define CONFIG_USB_STORAGE
-#endif
-
-/*
- *  Environment variables configurations
- */
-#ifdef CONFIG_CMD_NAND
-#define CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_SECT_SIZE           0x20000
-#else
-#define CONFIG_ENV_IS_NOWHERE
-#endif
-
-#define CONFIG_ENV_SIZE                        0x20000
-#define CONFIG_ENV_ADDR                        0x80000
-#define CONFIG_ENV_OFFSET              0x80000
-
-/*
- * Default environment variables
- */
-#define CONFIG_BOOTCOMMAND "nand read 0x800000 kernel 0x300000; bootm;"
-#define CONFIG_MTDPARTS        "512K(u-boot),512K(u-boot-env),3M(kernel),-(root)"
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "update_uboot=dhcp u-boot.kwb; nand erase.part u-boot; nand write ${fileaddr} u-boot ${filesize}\0" \
-       "update_kernel=dhcp uImage-tk71; nand erase.part kernel; nand write ${fileaddr} kernel ${filesize} \0" \
-       "update_rootfs=dhcp rootfs-tk71; nand erase.part root; nand write ${fileaddr} root ${filesize}\0" \
-       "update_all=run update_uboot; run update_kernel; run update_rootfs; reset\0" \
-       "mtdids=nand0=orion_nand\0" \
-       "mtdparts=mtdparts=orion_nand:"CONFIG_MTDPARTS"\0" \
-       "bootargs=console=ttyS0,115200 mtdparts=orion_nand:"CONFIG_MTDPARTS" rootfstype=jffs2 root=/dev/mtdblock3 rw\0"
-#define MTDIDS_DEFAULT                 "nand0=orion_nand"
-#define MTDPARTS_DEFAULT               "mtdparts=orion_nand:"CONFIG_MTDPARTS
-
-#define PHYS_SDRAM_1           0x00000000      /* Base address */
-#define PHYS_SDRAM_1_SIZE      0x20000000      /* Max 512 MB RAM */
-
-#endif /* __CONFIG_TK71_H__ */
index 1c86bc07019b615f2b22514bb345332419cb5401..1330a0a591abfbe265805e761970ee53ae94930f 100644 (file)
 #define CONFIG_SYS_BOOTCOUNT_ADDR      IRAM_BASE_ADDR
 #define CONFIG_SYS_BOOTCOUNT_BE
 
+/*
+ * Remove all unused interfaces / commands that are defined in
+ * the common header tqms6.h
+ */
+#undef CONFIG_CMD_SF
+#undef CONFIG_CMD_SPI
+#undef CONFIG_MXC_SPI
+
 #endif /* __CONFIG_TQMA6_WRU4_H */
diff --git a/include/configs/trizepsiv.h b/include/configs/trizepsiv.h
deleted file mode 100644 (file)
index 40c8d71..0000000
+++ /dev/null
@@ -1,309 +0,0 @@
-/*
- * (C) Copyright 2007
- * Stefano Babic, DENX Gmbh, sbabic@denx.de
- *
- * (C) Copyright 2004
- * Robert Whaley, Applied Data Systems, Inc. rwhaley@applieddata.net
- *
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.net
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Configuation settings for the LUBBOCK board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_CPU_PXA27X              1       /* This is an PXA27x CPU    */
-
-#define CONFIG_MMC             1
-#define CONFIG_BOARD_LATE_INIT
-#define        CONFIG_SYS_TEXT_BASE    0x0
-
-/* we will never enable dcache, because we have to setup MMU first */
-#define CONFIG_SYS_DCACHE_OFF
-
-#define RTC
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN      (CONFIG_ENV_SIZE + 128*1024)
-
-/*
- * Hardware drivers
- */
-
-/*
- * select serial console configuration
- */
-#define CONFIG_PXA_SERIAL
-#define CONFIG_FFUART         1       /* we use FFUART on Conxs */
-#define CONFIG_BTUART         1       /* we use BTUART on Conxs */
-#define CONFIG_STUART         1       /* we use STUART on Conxs */
-#define CONFIG_CONS_INDEX      3
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BAUDRATE               38400
-
-#define CONFIG_DOS_PARTITION   1
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_USB
-
-/* this must be included AFTER the definition of CONFIG_COMMANDS (if any) */
-
-#undef CONFIG_SHOW_BOOT_PROGRESS
-
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_SERVERIP                192.168.1.99
-#define CONFIG_BOOTCOMMAND     "run boot_flash"
-#define CONFIG_BOOTARGS                "console=ttyS0,38400 ramdisk_size=12288"\
-                               " rw root=/dev/ram initrd=0xa0800000,5m"
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "program_boot_mmc="                                             \
-                       "mw.b 0xa0010000 0xff 0x20000; "                \
-                       "if      mmcinit && "                           \
-                               "fatload mmc 0 0xa0010000 u-boot.bin; " \
-                       "then "                                         \
-                               "protect off 0x0 0x1ffff; "             \
-                               "erase 0x0 0x1ffff; "                   \
-                               "cp.b 0xa0010000 0x0 0x20000; "         \
-                       "fi\0"                                          \
-       "program_uzImage_mmc="                                          \
-                       "mw.b 0xa0010000 0xff 0x180000; "               \
-                       "if      mmcinit && "                           \
-                               "fatload mmc 0 0xa0010000 uzImage; "    \
-                       "then "                                         \
-                               "protect off 0x40000 0x1bffff; "        \
-                               "erase 0x40000 0x1bffff; "              \
-                               "cp.b 0xa0010000 0x40000 0x180000; "    \
-                       "fi\0"                                          \
-       "program_ramdisk_mmc="                                          \
-                       "mw.b 0xa0010000 0xff 0x500000; "               \
-                       "if      mmcinit && "                           \
-                               "fatload mmc 0 0xa0010000 ramdisk.gz; " \
-                       "then "                                         \
-                               "protect off 0x1c0000 0x6bffff; "       \
-                               "erase 0x1c0000 0x6bffff; "             \
-                               "cp.b 0xa0010000 0x1c0000 0x500000; "   \
-                       "fi\0"                                          \
-       "boot_mmc="                                                     \
-                       "if      mmcinit && "                           \
-                               "fatload mmc 0 0xa0030000 uzImage && "  \
-                               "fatload mmc 0 0xa0800000 ramdisk.gz; " \
-                       "then "                                         \
-                               "bootm 0xa0030000; "                    \
-                       "fi\0"                                          \
-       "boot_flash="                                                   \
-                       "cp.b 0x1c0000 0xa0800000 0x500000; "           \
-                       "bootm 0x40000\0"                               \
-
-#define CONFIG_SETUP_MEMORY_TAGS 1
-#define CONFIG_CMDLINE_TAG      1      /* enable passing of ATAGs      */
-/* #define CONFIG_INITRD_TAG    1 */
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400          /* speed to run kgdb serial port */
-#endif
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_HUSH_PARSER         1
-
-#define CONFIG_SYS_LONGHELP                            /* undef to save memory         */
-#undef CONFIG_SYS_PROMPT
-#ifdef CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_PROMPT              "$ "            /* Monitor Command Prompt */
-#else
-#endif
-#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_DEVICE_NULLDEV      1
-
-#define CONFIG_SYS_MEMTEST_START       0xa0400000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0xa0800000      /* 4 ... 8 MB in DRAM   */
-
-#define CONFIG_SYS_LOAD_ADDR           0xa1000000      /* default load address */
-
-#define CONFIG_SYS_CPUSPEED            0x207           /* need to look more closely, I think this is Turbo = 2x, L=91Mhz */
-
-#ifdef CONFIG_MMC
-#define        CONFIG_GENERIC_MMC
-#define        CONFIG_PXA_MMC_GENERIC
-#define CONFIG_CMD_MMC
-#define CONFIG_SYS_MMC_BASE            0xF0000000
-#endif
-
-/*
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS   4          /* we have 2 banks of DRAM */
-#define PHYS_SDRAM_1           0xa0000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE      0x04000000 /* 64 MB */
-#define PHYS_SDRAM_2           0xa4000000 /* SDRAM Bank #2 */
-#define PHYS_SDRAM_2_SIZE      0x00000000 /* 0 MB */
-#define PHYS_SDRAM_3           0xa8000000 /* SDRAM Bank #3 */
-#define PHYS_SDRAM_3_SIZE      0x00000000 /* 0 MB */
-#define PHYS_SDRAM_4           0xac000000 /* SDRAM Bank #4 */
-#define PHYS_SDRAM_4_SIZE      0x00000000 /* 0 MB */
-
-#define PHYS_FLASH_1           0x00000000 /* Flash Bank #1 */
-
-#define CONFIG_SYS_DRAM_BASE           0xa0000000
-#define CONFIG_SYS_DRAM_SIZE           0x04000000
-
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         (GENERATED_GBL_DATA_SIZE + PHYS_SDRAM_1)
-
-/*
- * GPIO settings
- */
-#define CONFIG_SYS_GPSR0_VAL           0x00018000
-#define CONFIG_SYS_GPSR1_VAL           0x00000000
-#define CONFIG_SYS_GPSR2_VAL           0x400dc000
-#define CONFIG_SYS_GPSR3_VAL           0x00000000
-#define CONFIG_SYS_GPCR0_VAL           0x00000000
-#define CONFIG_SYS_GPCR1_VAL           0x00000000
-#define CONFIG_SYS_GPCR2_VAL           0x00000000
-#define CONFIG_SYS_GPCR3_VAL           0x00000000
-#define CONFIG_SYS_GPDR0_VAL           0x00018000
-#define CONFIG_SYS_GPDR1_VAL           0x00028801
-#define CONFIG_SYS_GPDR2_VAL           0x520dc000
-#define CONFIG_SYS_GPDR3_VAL           0x0001E000
-#define CONFIG_SYS_GAFR0_L_VAL         0x801c0000
-#define CONFIG_SYS_GAFR0_U_VAL         0x00000013
-#define CONFIG_SYS_GAFR1_L_VAL         0x6990100A
-#define CONFIG_SYS_GAFR1_U_VAL         0x00000008
-#define CONFIG_SYS_GAFR2_L_VAL         0xA0000000
-#define CONFIG_SYS_GAFR2_U_VAL         0x010900F2
-#define CONFIG_SYS_GAFR3_L_VAL         0x54000003
-#define CONFIG_SYS_GAFR3_U_VAL         0x00002401
-#define CONFIG_SYS_GRER0_VAL           0x00000000
-#define CONFIG_SYS_GRER1_VAL           0x00000000
-#define CONFIG_SYS_GRER2_VAL           0x00000000
-#define CONFIG_SYS_GRER3_VAL           0x00000000
-
-#define CONFIG_SYS_GFER1_VAL           0x00000000
-#define CONFIG_SYS_GFER3_VAL           0x00000020
-
-#if CONFIG_POLARIS
-#define CONFIG_SYS_GFER0_VAL           0x00000001
-#define CONFIG_SYS_GFER2_VAL           0x00200000
-#else
-#define CONFIG_SYS_GFER0_VAL           0x00000000
-#define CONFIG_SYS_GFER2_VAL           0x00000000
-#endif
-
-#define CONFIG_SYS_PSSR_VAL            0x20    /* CHECK */
-
-/*
- * Clock settings
- */
-#define CONFIG_SYS_CKEN                0x01FFFFFF      /* CHECK */
-#define CONFIG_SYS_CCCR                0x02000290 /*   520Mhz */
-
-/*
- * Memory settings
- */
-
-#define CONFIG_SYS_MSC0_VAL            0x4df84df0
-#define CONFIG_SYS_MSC1_VAL            0x7ff87ff4
-#if CONFIG_POLARIS
-#define CONFIG_SYS_MSC2_VAL            0xa2697ff8
-#else
-#define CONFIG_SYS_MSC2_VAL            0xa26936d4
-#endif
-#define CONFIG_SYS_MDCNFG_VAL          0x880009C9
-#define CONFIG_SYS_MDREFR_VAL          0x20ca201e
-#define CONFIG_SYS_MDMRS_VAL           0x00220022
-
-#define CONFIG_SYS_FLYCNFG_VAL         0x00000000
-#define CONFIG_SYS_SXCNFG_VAL          0x40044004
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define CONFIG_SYS_MECR_VAL            0x00000001
-#define CONFIG_SYS_MCMEM0_VAL          0x00004204
-#define CONFIG_SYS_MCMEM1_VAL          0x00010204
-#define CONFIG_SYS_MCATT0_VAL          0x00010504
-#define CONFIG_SYS_MCATT1_VAL          0x00010504
-#define CONFIG_SYS_MCIO0_VAL           0x00008407
-#define CONFIG_SYS_MCIO1_VAL           0x0000c108
-
-#define CONFIG_DRIVER_DM9000           1
-
-#if CONFIG_POLARIS
-#define CONFIG_DM9000_BASE             0x0C800000
-#else
-#define CONFIG_DM9000_BASE             0x08000000
-#endif
-
-#define DM9000_IO                      CONFIG_DM9000_BASE
-#define DM9000_DATA                    (CONFIG_DM9000_BASE+0x8004)
-
-#define CONFIG_USB_OHCI_NEW    1
-#define CONFIG_SYS_USB_OHCI_BOARD_INIT 1
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     3
-#define CONFIG_SYS_USB_OHCI_REGS_BASE  0x4C000000
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME  "trizepsiv"
-#define CONFIG_USB_STORAGE     1
-#define CONFIG_SYS_USB_OHCI_CPU_INIT   1
-
-/*
- * FLASH and environment organization
- */
-
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER        1
-
-#define CONFIG_SYS_MONITOR_BASE        0
-#define CONFIG_SYS_MONITOR_LEN         0x40000
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      4 + 255  /* max number of sectors on one chip   */
-
-/* timeout values are in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (25*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (25*CONFIG_SYS_HZ) /* Timeout for Flash Write */
-
-/* write flash less slowly */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1
-
-/* Unlock to be used with Intel chips */
-#define CONFIG_SYS_FLASH_PROTECTION    1
-
-/* Flash environment locations */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                (PHYS_FLASH_1 + CONFIG_SYS_MONITOR_LEN) /* Addr of Environment Sector   */
-#define CONFIG_ENV_SIZE                0x40000 /* Total Size of Environment            */
-#define CONFIG_ENV_SECT_SIZE   0x40000 /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR+CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/ts4800.h b/include/configs/ts4800.h
new file mode 100644 (file)
index 0000000..21f1555
--- /dev/null
@@ -0,0 +1,185 @@
+/*
+ * Copyright (C) 2015, Savoir-faire Linux Inc.
+ *
+ * Derived from MX51EVK code by
+ *   Guennadi Liakhovetski <lg@denx.de>
+ *   Freescale Semiconductor, Inc.
+ *
+ * Configuration settings for the TS4800 Board
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+/* High Level Configuration Options */
+#define CONFIG_MX51
+
+#define CONFIG_DISPLAY_CPUINFO
+#define CONFIG_DISPLAY_BOARDINFO
+
+#define CONFIG_SYS_NO_FLASH            /* No NOR Flash */
+#define CONFIG_SKIP_LOWLEVEL_INIT      /* U-boot is a 2nd stage bootloader */
+
+#define CONFIG_HW_WATCHDOG
+
+#define CONFIG_MACH_TYPE       MACH_TYPE_TS48XX
+
+/* text base address used when linking */
+#define CONFIG_SYS_TEXT_BASE   0x90008000
+
+#include <asm/arch/imx-regs.h>
+
+/* enable passing of ATAGs */
+#define CONFIG_CMDLINE_TAG
+#define CONFIG_SETUP_MEMORY_TAGS
+#define CONFIG_INITRD_TAG
+#define CONFIG_REVISION_TAG
+
+/* use common/board_f.c instead of arch/<arch>/lib/<board>.c */
+#define CONFIG_SYS_GENERIC_BOARD
+
+/*
+ * Size of malloc() pool
+ */
+#define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
+
+/*
+ * Hardware drivers
+ */
+
+#define CONFIG_MXC_UART
+#define CONFIG_MXC_UART_BASE   UART1_BASE
+#define CONFIG_MXC_GPIO
+
+/*
+ * SPI Configs
+ * */
+#define CONFIG_HARD_SPI /* puts SPI: ready */
+#define CONFIG_MXC_SPI /* driver for the SPI controllers*/
+#define CONFIG_CMD_SPI /* SPI serial bus support */
+
+/*
+ * MMC Configs
+ * */
+#define CONFIG_FSL_ESDHC
+#define CONFIG_SYS_FSL_ESDHC_ADDR      MMC_SDHC1_BASE_ADDR
+
+#define CONFIG_MMC
+
+#define CONFIG_CMD_MMC
+#define CONFIG_GENERIC_MMC
+#define CONFIG_CMD_FAT
+#define CONFIG_DOS_PARTITION
+
+/*
+ * Eth Configs
+ */
+#define CONFIG_MII
+#define CONFIG_PHYLIB
+#define CONFIG_PHY_SMSC
+
+#define CONFIG_FEC_MXC
+#define IMX_FEC_BASE           FEC_BASE_ADDR
+#define CONFIG_ETHPRIME                "FEC"
+#define CONFIG_FEC_MXC_PHYADDR 0
+
+#define CONFIG_CMD_PING
+#define CONFIG_CMD_DHCP
+#define CONFIG_CMD_MII
+
+/* allow to overwrite serial and ethaddr */
+#define CONFIG_ENV_OVERWRITE           /* disable vendor parameters protection (serial#, ethaddr) */
+#define CONFIG_CONS_INDEX              1 /* use UART0 : used by serial driver */
+#define CONFIG_BAUDRATE                        115200
+
+/***********************************************************
+ * Command definition
+ ***********************************************************/
+
+#define CONFIG_CMD_BOOTZ
+#undef CONFIG_CMD_IMLS
+
+/* Environment variables */
+
+#define CONFIG_BOOTDELAY       1
+
+#define CONFIG_LOADADDR                0x91000000      /* loadaddr env var */
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "script=boot.scr\0" \
+       "image=uImage\0" \
+       "mmcdev=0\0" \
+       "mmcpart=1\0" \
+       "mmcargs=setenv bootargs root=/dev/mmcblk0p2 rootwait rw\0" \
+       "addtty=setenv bootargs ${bootargs} console=ttymxc0,${baudrate}\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" \
+       "mmcboot=echo Booting from mmc ...; " \
+               "run mmcargs addtty; " \
+                "bootm; "
+
+#define CONFIG_BOOTCOMMAND \
+       "mmc dev ${mmcdev}; if mmc rescan; then " \
+               "if run loadbootscript; then " \
+                       "run bootscript; " \
+               "else " \
+                       "if run loadimage; then " \
+                               "run mmcboot; " \
+                       "fi; " \
+               "fi; " \
+       "fi; "
+
+/*
+ * Miscellaneous configurable options
+ */
+#define CONFIG_SYS_LONGHELP            /* undef to save memory */
+#define CONFIG_SYS_HUSH_PARSER         /* use "hush" command parser */
+#define CONFIG_AUTO_COMPLETE
+#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size */
+/* Print Buffer Size */
+#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS     16      /* max number of command args */
+#define CONFIG_SYS_BARGSIZE CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size */
+
+#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
+
+#define CONFIG_CMDLINE_EDITING
+
+/*-----------------------------------------------------------------------
+ * Physical Memory Map
+ */
+#define CONFIG_NR_DRAM_BANKS   1
+#define PHYS_SDRAM_1           CSD0_BASE_ADDR
+#define PHYS_SDRAM_1_SIZE      (256 * 1024 * 1024)
+
+#define CONFIG_SYS_SDRAM_BASE          (PHYS_SDRAM_1)
+#define CONFIG_SYS_INIT_RAM_ADDR       (IRAM_BASE_ADDR)
+#define CONFIG_SYS_INIT_RAM_SIZE       (IRAM_SIZE)
+
+#define CONFIG_BOARD_EARLY_INIT_F
+
+#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)
+
+/* Low level init */
+#define CONFIG_SYS_DDR_CLKSEL  0
+#define CONFIG_SYS_CLKTL_CBCDR 0x59E35100
+#define CONFIG_SYS_MAIN_PWR_ON
+
+/*-----------------------------------------------------------------------
+ * Environment organization
+ */
+
+#define CONFIG_ENV_OFFSET      (6 * 64 * 1024)
+#define CONFIG_ENV_SIZE        (8 * 1024)
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV 0
+
+#endif
diff --git a/include/configs/tt01.h b/include/configs/tt01.h
deleted file mode 100644 (file)
index ca1e2e2..0000000
+++ /dev/null
@@ -1,266 +0,0 @@
-/*
- * (C) Copyright 2011 HALE electronic <helmut.raiger@hale.at>
- * (C) Copyright 2008 Magnus Lilja <lilja.magnus@gmail.com>
- *
- * Configuration settings for the HALE TT-01 board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#include <asm/arch/imx-regs.h>
-
-/* High Level Configuration Options */
-#define CONFIG_MX31
-
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-
-#define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-
-#define CONFIG_MACH_TYPE       3726            /* not yet in mach-types.h */
-#define CONFIG_SYS_TEXT_BASE   0xA0000000
-
-
-/*
- * Physical Memory Map:
- *   CS settings are defined by i.MX31:
- *     - CSD0 and CDS1 are 256MB each, starting at 0x80000000 and 0x9000000
- *     - CS0 and CS1 are 128MB each, at A0000000 and A8000000
- *     - CS2 to CS5 are 32MB each, at B0.., B2.., B4.., B6..
- *
- * HALE set-up of the bluetechnix board for now is:
- *   - 128MB DDR (2x64MB, 2x16bit), connected to 32bit DDR ram interface
- *   - NOR-Flash (Spansion 32MB MCP, Flash+16MB PSRAM), 16bit interface at CS0
- *             - S71WS256ND0BFWYM (and CS1 for 64MB S71WS512ND0 without PSRAM)
- *        the flash chip is a mirrorbit S29WS256N !
- *   - the PSRAM is hooked to CS5 (0xB6000000)
- *   - Intel Strata Flash PF48F2000P0ZB00, 16bit interface at (CS0 or) CS1
- *     - 64Mbit = 8MByte (will go away in the production set-up)
- *   - NAND-Flash NAND01GR3B2BZA6 at NAND-FC:
- *             1Gbit=128MB, 2048+64 bytes/page, 64pages x 1024 blocks
- *   - Ethernet controller SMC9118 at CS4 via FPGA, 16bit interface
- *
- * u-boot will support the 32MB nor flash and the 128MB NAND flash, the PSRAM
- * is not used right now. We should be able to reduce the SOM to NAND flash
- * only and boot from there.
- */
-#define CONFIG_NR_DRAM_BANKS   1
-#define PHYS_SDRAM_1           CSD0_BASE
-#define PHYS_SDRAM_1_SIZE      (128 * 1024 * 1024)
-
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
-#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
-#define CONFIG_SYS_GBL_DATA_OFFSET \
-       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR        \
-       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_GBL_DATA_OFFSET)
-
-/* default load address, 1MB up the road */
-#define CONFIG_SYS_LOAD_ADDR           (PHYS_SDRAM_1+0x100000)
-
-/* Size of malloc() pool, make sure possible frame buffer fits */
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 10*1024*1024)
-
-/* memtest works on all but the last 1MB (u-boot) and malloc area  */
-#define CONFIG_SYS_MEMTEST_START       PHYS_SDRAM_1
-#define CONFIG_SYS_MEMTEST_END \
-       (PHYS_SDRAM_1+(PHYS_SDRAM_1_SIZE-CONFIG_SYS_MALLOC_LEN-0x100000))
-
-/* CFI FLASH driver setup */
-#define CONFIG_SYS_FLASH_CFI           /* Flash memory is CFI compliant */
-#define CONFIG_FLASH_CFI_DRIVER                /* Use drivers/cfi_flash.c */
-#define CONFIG_FLASH_SPANSION_S29WS_N
-/*
- * TODO: Bluetechnix (the supplier of the SOM) did define these values
- * in their original version of u-boot (1.2 or so). This should be
- * reviewed.
- *
- * #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
- * #define CONFIG_SYS_FLASH_PROTECTION
- */
-#define CONFIG_SYS_FLASH_BASE          CS0_BASE
-#define CONFIG_SYS_MAX_FLASH_BANKS 1 /* max number of memory banks */
-#define CONFIG_SYS_MAX_FLASH_SECT (254+8) /* max number of sectors per chip */
-
-/*
- * FLASH and environment organization, only the Spansion chip is supported:
- * - it has 254 * 128kB + 8 * 32kB blocks
- * - this setup uses 4*32k+3*128k as monitor space = 0xA000 0000 to 0xA00F FFFF
- *             and 2 sectors with 128k as environment =
- *             A010 0000 to 0xA011 FFFF and 0xA012 0000 to 0xA013 FFFF
- * - this could be less, but this is only for developer versions of the board
- *   and no-one is going to use the NOR flash anyway.
- *
- * Monitor is at the beginning of the NOR-Flash, 1MB reserved. Again this is
- * way to large, but it avoids ENV overwrite (when updating u-boot) in case
- * size breaks the next boundary (as it has with 128k).
- */
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
-#define CONFIG_SYS_MONITOR_LEN         (1024 * 1024)
-
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_SECT_SIZE   (128 * 1024)
-#define CONFIG_ENV_SIZE                (128 * 1024)
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
-#define CONFIG_ENV_SIZE_REDUND         CONFIG_ENV_SIZE
-
-#define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-
-/* Hardware drivers */
-
-/*
- * on TT-01 UART1 pins are used by Audio, so we use UART2
- * TT-01 implements a hardware that turns off components depending on
- * the power level. In PL=1 the RS232 transceiver is usually off,
- * make sure that the transceiver is enabled during PL=1 for testing!
- */
-#define CONFIG_MXC_UART
-#define CONFIG_MXC_UART_BASE   UART2_BASE
-
-#define CONFIG_MXC_SPI
-#define CONFIG_MXC_GPIO
-
-/* MC13783 connected to CSPI3 and SS0 */
-#define CONFIG_POWER
-#define CONFIG_POWER_SPI
-#define CONFIG_POWER_FSL
-
-#define CONFIG_FSL_PMIC_BUS            2
-#define CONFIG_FSL_PMIC_CS             0
-#define CONFIG_FSL_PMIC_CLK            1000000
-#define CONFIG_FSL_PMIC_MODE   (SPI_MODE_0 | SPI_CS_HIGH)
-#define CONFIG_FSL_PMIC_BITLEN 32
-
-#define CONFIG_RTC_MC13XXX
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-/* console is UART2 on TT-01 */
-#define CONFIG_CONS_INDEX              1
-#define CONFIG_BAUDRATE                        115200
-
-/* ethernet setup for the onboard smc9118 */
-#define CONFIG_MII
-#define CONFIG_SMC911X
-/* 16 bit, onboard ethernet, decoded via MACH-MX0 FPGA at 0x84200000 */
-#define CONFIG_SMC911X_BASE            (CS4_BASE+0x200000)
-#define CONFIG_SMC911X_16_BIT
-
-/* mmc driver */
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_MXC_MMC
-#define CONFIG_MXC_MCI_REGS_BASE       SDHC1_BASE_ADDR
-
-/* video support */
-#define CONFIG_VIDEO
-#define CONFIG_VIDEO_MX3
-#define CONFIG_CFB_CONSOLE
-#define CONFIG_VIDEO_LOGO
-/* splash image won't work with NAND boot, use preboot script */
-#define CONFIG_VIDEO_SW_CURSOR
-#define CONFIG_CONSOLE_EXTRA_INFO /* display additional board info */
-#define CONFIG_VGA_AS_SINGLE_DEVICE /* display is an output only device */
-
-/* allow stdin, stdout and stderr variables to redirect output */
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV
-#define CONFIG_SILENT_CONSOLE          /* UARTs used externally (release) */
-#define CONFIG_SYS_DEVICE_NULLDEV      /* allow console to be turned off */
-#define CONFIG_PREBOOT
-
-/* allow decompressing max. 4MB */
-#define CONFIG_VIDEO_BMP_GZIP
-/* this is not only used by cfb_console.c for the logo, but also in cmd_bmp.c */
-#define CONFIG_SYS_VIDEO_LOGO_MAX_SIZE (4*1024*1024)
-
-/*
- * Command definition
- */
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_NAND
-/*
- * #define CONFIG_CMD_NAND_LOCK_UNLOCK the NAND01... chip does not support
- * the NAND_CMD_LOCK_STATUS command, however the NFC of i.MX31 supports
- * a software locking scheme.
- */
-#define CONFIG_CMD_BMP
-
-#define CONFIG_BOOTDELAY       3
-
-/*
- * currently a default setting for booting via script is implemented
- *   set user to login name and serverip to tftp host, define your
- *   boot behaviour in bootscript.loginname
- *
- * TT-01 board specific TFT setup (used by drivers/video/mx3fb.c)
- *
- *  This set-up is for the L5F30947T04 by Epson, which is
- *   800x480, 33MHz pixel clock, 60Hz vsync, 31.6kHz hsync
- *  sync must be set to: DI_D3_DRDY_SHARP_POL | DI_D3_CLK_POL
- */
-#define        CONFIG_EXTRA_ENV_SETTINGS \
-"videomode=epson\0" \
-"epson=video=ctfb:x:800,y:480,depth:16,mode:0,pclk:30076," \
-       "le:215,ri:1,up:32,lo:13,hs:7,vs:10,sync:100663296,vmode:0\0" \
-"bootcmd=dhcp bootscript.${user}; source\0"
-
-#define CONFIG_BOOTP_SERVERIP /* tftp serverip not overruled by dhcp server */
-#define CONFIG_BOOTP_SEND_HOSTNAME /* if env-var 'hostname' is set, send it */
-
-/* Miscellaneous configurable options */
-#define CONFIG_SYS_HUSH_PARSER
-
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory */
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size */
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + \
-                               sizeof(CONFIG_SYS_PROMPT)+16)
-/* max number of command args */
-#define CONFIG_SYS_MAXARGS     16
-/* Boot Argument Buffer Size */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE
-
-#define CONFIG_CMDLINE_EDITING
-
-/* MMC boot support */
-#define CONFIG_CMD_MMC
-#define CONFIG_DOS_PARTITION
-#define CONFIG_EFI_PARTITION
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_FAT
-
-#define CONFIG_NAND_MXC
-#define CONFIG_SYS_MAX_NAND_DEVICE             1
-
-/*
- * actually this is nothing someone wants to configure!
- * CONFIG_SYS_NAND_BASE despite being passed to board_nand_init()
- * is not used by the driver.
- */
-#define CONFIG_MXC_NAND_REGS_BASE      NFC_BASE_ADDR
-#define CONFIG_SYS_NAND_BASE           NFC_BASE_ADDR
-#define CONFIG_MXC_NAND_HWECC
-
-/* the current u-boot driver does not use the nand flash setup! */
-#define CONFIG_SYS_NAND_LARGEPAGE
-/*
- * it's not 16 bit:
- * #define CONFIG_SYS_NAND_BUSWIDTH_16BIT
- *    the current u-boot mxc_nand.c tries to auto-detect, but this only
- *    reads the boot settings during reset (which might be wrong)
- */
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/tx25.h b/include/configs/tx25.h
deleted file mode 100644 (file)
index 834b616..0000000
+++ /dev/null
@@ -1,172 +0,0 @@
-/*
- * (C) Copyright 2009 DENX Software Engineering
- * Author: John Rigby <jrigby@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-#include <asm/arch/imx-regs.h>
-
-/*
- * KARO TX25 board - SoC Configuration
- */
-#define CONFIG_MX25
-#define CONFIG_MX25_CLK32              32000   /* OSC32K frequency */
-#define CONFIG_SYS_TIMER_RATE          CONFIG_MX25_CLK32
-#define CONFIG_SYS_TIMER_COUNTER       \
-       (&((struct gpt_regs *)IMX_GPT1_BASE)->counter)
-
-#define        CONFIG_SYS_MONITOR_LEN          (256 << 10)     /* 256 kB for U-Boot */
-
-#define CONFIG_SPL_TARGET              "u-boot-with-spl.bin"
-#define CONFIG_SPL_LDSCRIPT            "arch/$(ARCH)/cpu/u-boot-spl.lds"
-#define CONFIG_SPL_MAX_SIZE            2048
-#define CONFIG_SPL_NAND_SUPPORT
-#define CONFIG_SPL_LIBGENERIC_SUPPORT
-#define CONFIG_SPL_SERIAL_SUPPORT
-
-#define CONFIG_SPL_TEXT_BASE           0x810c0000
-#define CONFIG_SYS_TEXT_BASE           0x81200000
-
-#ifndef MACH_TYPE_TX25
-#define MACH_TYPE_TX25 2177
-#endif
-
-#define CONFIG_MACH_TYPE MACH_TYPE_TX25
-
-#ifdef CONFIG_SPL_BUILD
-/* Start copying real U-boot from the second page */
-#define CONFIG_SYS_NAND_U_BOOT_OFFS    CONFIG_SPL_PAD_TO
-#define CONFIG_SYS_NAND_U_BOOT_SIZE    0x30000
-
-#define CONFIG_SYS_NAND_U_BOOT_DST      CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_NAND_U_BOOT_START    CONFIG_SYS_NAND_U_BOOT_DST
-
-#define CONFIG_SYS_NAND_PAGE_SIZE      2048
-#define CONFIG_SYS_NAND_OOBSIZE                64
-#define CONFIG_SYS_NAND_BLOCK_SIZE     (128 * 1024)
-#define CONFIG_SYS_NAND_PAGE_COUNT     64
-#define CONFIG_SYS_NAND_SIZE           (128 * 1024 * 1024)
-#define CONFIG_SYS_NAND_BAD_BLOCK_POS  0
-#else
-#define CONFIG_SKIP_LOWLEVEL_INIT
-#endif
-
-#define CONFIG_DISPLAY_CPUINFO
-
-#define CONFIG_CMDLINE_TAG                     /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-
-/*
- * Memory Info
- */
-/* malloc() len */
-#define CONFIG_SYS_MALLOC_LEN          (1 << 20)       /* 1 MiB */
-/*
- * Board has 2 32MB banks of DRAM but there is a bug when using
- * both so only the first is configured
- */
-#define CONFIG_NR_DRAM_BANKS   1
-
-#define PHYS_SDRAM_1           0x80000000
-#define PHYS_SDRAM_1_SIZE      0x02000000
-#if (CONFIG_NR_DRAM_BANKS == 2)
-#define PHYS_SDRAM_2           0x90000000
-#define PHYS_SDRAM_2_SIZE      0x02000000
-#endif
-/* 8MB DRAM test */
-#define CONFIG_SYS_MEMTEST_START       PHYS_SDRAM_1
-#define CONFIG_SYS_MEMTEST_END         (PHYS_SDRAM_1+0x0800000)
-
-/*
- * Serial Info
- */
-#define CONFIG_MXC_UART
-#define CONFIG_MXC_UART_BASE   UART1_BASE
-#define CONFIG_CONS_INDEX      1       /* use UART0 for console */
-#define CONFIG_BAUDRATE                115200  /* Default baud rate */
-
-#define CONFIG_MXC_GPIO
-
-/*
- * Flash & Environment
- */
-/* No NOR flash present */
-#define CONFIG_SYS_NO_FLASH
-#define        CONFIG_ENV_IS_IN_NAND
-#define        CONFIG_ENV_OFFSET       CONFIG_SYS_MONITOR_LEN
-#define CONFIG_ENV_SIZE                (128 * 1024)    /* 128 kB NAND block size */
-#define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
-
-/* NAND */
-#define CONFIG_NAND_MXC
-#define CONFIG_MXC_NAND_REGS_BASE      (0xBB000000)
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE           (0xBB000000)
-#define CONFIG_JFFS2_NAND
-#define CONFIG_MXC_NAND_HWECC
-#define CONFIG_SYS_NAND_LARGEPAGE
-
-/* U-Boot general configuration */
-#define CONFIG_SYS_CBSIZE      1024    /* Console I/O Buffer Size  */
-/* Print buffer sz */
-#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + \
-               sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     32      /* max number of command args */
-/* Boot Argument Buffer Size */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_LONGHELP
-
-/* U-Boot commands */
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_CACHE
-
-/*
- * Ethernet
- */
-#define CONFIG_FEC_MXC
-#define CONFIG_FEC_MXC_PHYADDR         0x1f
-#define CONFIG_MII
-#define CONFIG_BOARD_LATE_INIT
-#define CONFIG_ENV_OVERWRITE
-
-#define CONFIG_BOOTDELAY       5
-
-#define CONFIG_LOADADDR                0x81000000      /* loadaddr env var */
-#define CONFIG_SYS_LOAD_ADDR   CONFIG_LOADADDR
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "netdev=eth0\0"                                                 \
-       "nfsargs=setenv bootargs root=/dev/nfs rw "                     \
-               "nfsroot=${serverip}:${rootpath}\0"                     \
-       "ramargs=setenv bootargs root=/dev/ram rw\0"                    \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs}"                            \
-               " console=ttymxc0,${baudrate}\0"                        \
-       "addmtd=setenv bootargs ${bootargs} ${mtdparts}\0"              \
-       "addmisc=setenv bootargs ${bootargs}\0"                         \
-       "u-boot=tx25/u-boot.bin\0"                                      \
-       "kernel_addr_r=" __stringify(CONFIG_LOADADDR) "\0"              \
-       "hostname=tx25\0"                                               \
-       "bootfile=tx25/uImage\0"                                        \
-       "rootpath=/opt/eldk/arm\0"                                      \
-       "net_nfs=tftp ${kernel_addr_r} ${bootfile};"                    \
-               "run nfsargs addip addtty addmtd addmisc;"              \
-               "bootm\0"                                               \
-       "bootcmd=run net_nfs\0"                                         \
-       "load=tftp ${loadaddr} ${u-boot}\0"                             \
-       "update=nand erase 0 40000;nand write ${loadaddr} 0 40000\0"    \
-       "upd=run load update\0"                                         \
-
-/* additions for new relocation code, must be added to all boards */
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_SP_ADDR                (IMX_RAM_BASE + IMX_RAM_SIZE)
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/u8500_href.h b/include/configs/u8500_href.h
deleted file mode 100644 (file)
index a8cc030..0000000
+++ /dev/null
@@ -1,198 +0,0 @@
-/*
- * Copyright (C) ST-Ericsson SA 2009
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_U8500
-
-#define CONFIG_SYS_MEMTEST_START       0x00000000
-#define CONFIG_SYS_MEMTEST_END 0x1FFFFFFF
-
-#define CONFIG_BOARD_EARLY_INIT_F
-#define CONFIG_BOARD_LATE_INIT
-
-/*
- * Size of malloc() pool
- */
-#ifdef CONFIG_BOOT_SRAM
-#define CONFIG_ENV_SIZE                (32*1024)
-#define CONFIG_SYS_MALLOC_LEN  (CONFIG_ENV_SIZE + 64*1024)
-#else
-#define CONFIG_ENV_SIZE                (128*1024)
-#define CONFIG_SYS_MALLOC_LEN  (CONFIG_ENV_SIZE + 256*1024)
-#endif
-
-/*
- * PL011 Configuration
- */
-#define CONFIG_PL011_SERIAL
-#define CONFIG_PL011_SERIAL_RLCR
-#define CONFIG_PL011_SERIAL_FLUSH_ON_INIT
-
-/*
- * U8500 UART registers base for 3 serial devices
- */
-#define CFG_UART0_BASE         0x80120000
-#define CFG_UART1_BASE         0x80121000
-#define CFG_UART2_BASE         0x80007000
-#define CFG_SERIAL0            CFG_UART0_BASE
-#define CFG_SERIAL1            CFG_UART1_BASE
-#define CFG_SERIAL2            CFG_UART2_BASE
-#define CONFIG_PL011_CLOCK     38400000
-#define CONFIG_PL01x_PORTS     { (void *)CFG_SERIAL0, (void *)CFG_SERIAL1, \
-                                 (void *)CFG_SERIAL2 }
-#define CONFIG_CONS_INDEX      2
-#define CONFIG_BAUDRATE                115200
-
-/*
- * Devices and file systems
- */
-#define CONFIG_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_DOS_PARTITION
-
-/*
- * Commands
- */
-#define CONFIG_CMD_MMC
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_EXT2
-#define CONFIG_CMD_I2C
-
-#ifndef CONFIG_BOOTDELAY
-#define CONFIG_BOOTDELAY       1
-#endif
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-
-#undef CONFIG_BOOTARGS
-#define CONFIG_BOOTCOMMAND     "run emmcboot"
-
-#define CONFIG_EXTRA_ENV_SETTINGS \
-       "verify=n\0"                                                    \
-       "loadaddr=0x00100000\0"                                         \
-       "console=ttyAMA2,115200n8\0"                                    \
-       "memargs256=mem=96M@0 mem_modem=32M@96M mem=30M@128M "          \
-               "pmem=22M@158M pmem_hwb=44M@180M mem_mali=32@224M\0"    \
-       "memargs512=mem=96M@0 mem_modem=32M@96M mem=44M@128M "          \
-               "pmem=22M@172M mem=30M@194M mem_mali=32M@224M "         \
-               "pmem_hwb=54M@256M mem=202M@310M\0"                     \
-       "commonargs=setenv bootargs cachepolicy=writealloc noinitrd "   \
-               "init=init "                                            \
-               "board_id=${board_id} "                                 \
-               "logo.${logo} "                                         \
-               "startup_graphics=${startup_graphics}\0"                \
-       "emmcargs=setenv bootargs ${bootargs} "                         \
-               "root=/dev/mmcblk0p2 "                                  \
-               "rootdelay=1\0"                                         \
-       "addcons=setenv bootargs ${bootargs} "                          \
-               "console=${console}\0"                                  \
-       "emmcboot=echo Booting from eMMC ...; "                         \
-               "run commonargs emmcargs addcons memargs;"              \
-               "mmc read 0 ${loadaddr} 0xA0000 0x4000;"                \
-               "bootm ${loadaddr}\0"                                   \
-       "flash=mmc init 1;fatload mmc 1 ${loadaddr} flash.scr;"         \
-               "source ${loadaddr}\0"                                  \
-       "loaduimage=mmc init 1;fatload mmc 1 ${loadaddr} uImage\0"      \
-       "usbtty=cdc_acm\0"                                              \
-       "stdout=serial,usbtty\0"                                        \
-       "stdin=serial,usbtty\0"                                         \
-       "stderr=serial,usbtty\0"
-
-/*
- * Miscellaneous configurable options
- */
-
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory     */
-#define CONFIG_SYS_CBSIZE      1024            /* Console I/O Buffer Size  */
-
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE \
-                                       + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     32      /* max number of command args */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE /* Boot Arg Buffer Size */
-
-#define CONFIG_SYS_LOAD_ADDR           0x00100000 /* default load address */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE
-
-#define CONFIG_SYS_HUSH_PARSER
-#define CONFIG_CMDLINE_EDITING
-
-#define CONFIG_SETUP_MEMORY_TAGS       2
-#define CONFIG_INITRD_TAG
-#define CONFIG_CMDLINE_TAG                     /* enable passing of ATAGs  */
-
-/*
- * I2C
- */
-#define CONFIG_U8500_I2C
-#undef CONFIG_HARD_I2C                 /* I2C with hardware support */
-#define CONFIG_I2C_MULTI_BUS
-#define CONFIG_SYS_I2C_SPEED           100000
-#define CONFIG_SYS_I2C_SLAVE           0       /* slave addr of controller */
-#define CONFIG_SYS_U8500_I2C0_BASE             0x80004000
-#define CONFIG_SYS_U8500_I2C1_BASE             0x80122000
-#define CONFIG_SYS_U8500_I2C2_BASE             0x80128000
-#define CONFIG_SYS_U8500_I2C3_BASE             0x80110000
-#define CONFIG_SYS_U8500_I2C_BUS_MAX           4
-
-#define CONFIG_SYS_I2C_GPIOE_ADDR      0x42    /* GPIO expander chip addr */
-#define CONFIG_TC35892_GPIO
-
-/*
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS           1
-#define PHYS_SDRAM_1                   0x00000000      /* DDR-SDRAM Bank #1 */
-#define PHYS_SDRAM_SIZE_1              0x20000000      /* 512 MB */
-
-/*
- * additions for new relocation code
- */
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_SIZE       0x100000
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_SDRAM_BASE + \
-                                        CONFIG_SYS_INIT_RAM_SIZE - \
-                                        GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR                CONFIG_SYS_GBL_DATA_OFFSET
-
-/* landing address before relocation */
-#ifndef CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_TEXT_BASE            0x0
-#endif
-
-/*
- * MMC related configs
- * NB Only externa SD slot is currently supported
- */
-#define MMC_BLOCK_SIZE                 512
-#define CONFIG_ARM_PL180_MMCI
-#define CONFIG_ARM_PL180_MMCI_BASE     0x80126000      /* MMC base for 8500  */
-#define CONFIG_ARM_PL180_MMCI_CLOCK_FREQ 6250000
-#define CONFIG_MMC_DEV_NUM             1
-
-#define CONFIG_CMD_ENV
-#define CONFIG_ENV_IS_IN_MMC
-#define CONFIG_ENV_OFFSET              0x13F80000
-#define CONFIG_SYS_MMC_ENV_DEV          0               /* SLOT2: eMMC */
-
-/*
- * FLASH and environment organization
- */
-#define CONFIG_SYS_NO_FLASH
-
-/*
- * base register values for U8500
- */
-#define CFG_PRCMU_BASE         0x80157000      /* Power, reset and clock
-                                                  management unit */
-#define CFG_FSMC_BASE          0x80000000      /* FSMC Controller */
-
-#endif /* __CONFIG_H */
index 910bf01688d395d602180196e63642de53d9994a..8ec073d343b980fc93dab3460422c043b9800f38 100644 (file)
 
 #include "mx6_common.h"
 
+#define CONFIG_SPL_LIBCOMMON_SUPPORT
+#define CONFIG_SPL_MMC_SUPPORT
+#include "imx6_spl.h"
+
 #define MACH_TYPE_UDOO         4800
 #define CONFIG_MACH_TYPE       MACH_TYPE_UDOO
 
@@ -18,6 +22,7 @@
 #define CONFIG_SYS_MALLOC_LEN          (2 * SZ_1M)
 
 #define CONFIG_BOARD_EARLY_INIT_F
+#define CONFIG_BOARD_LATE_INIT
 
 #define CONFIG_MXC_UART
 #define CONFIG_MXC_UART_BASE           UART2_BASE
@@ -58,7 +63,7 @@
 /* MMC Configuration */
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 
-#define CONFIG_DEFAULT_FDT_FILE                "imx6q-udoo.dtb"
+#define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
        "script=boot.scr\0" \
@@ -67,7 +72,7 @@
        "splashpos=m,m\0" \
        "fdt_high=0xffffffff\0" \
        "initrd_high=0xffffffff\0" \
-       "fdt_file=" CONFIG_DEFAULT_FDT_FILE "\0" \
+       "fdt_file=undefined\0" \
        "fdt_addr=0x18000000\0" \
        "boot_fdt=try\0" \
        "ip_dyn=yes\0" \
                        "fi; " \
                "else " \
                        "bootz; " \
-               "fi;\0"
+               "fi;\0" \
+               "findfdt=" \
+                       "if test $board_rev = MX6Q ; then " \
+                               "setenv fdt_file imx6q-udoo.dtb; fi; " \
+                       "if test $board_rev = MX6DL ; then " \
+                               "setenv fdt_file imx6dl-udoo.dtb; fi; " \
+                       "if test $fdt_file = undefined; then " \
+                               "echo WARNING: Could not determine dtb to use; fi; \0"
 
 #define CONFIG_BOOTCOMMAND \
+          "run findfdt; " \
           "mmc dev ${mmcdev}; if mmc rescan; then " \
                   "if run loadbootscript; then " \
                           "run bootscript; " \
diff --git a/include/configs/versatile.h b/include/configs/versatile.h
deleted file mode 100644 (file)
index 636ca43..0000000
+++ /dev/null
@@ -1,214 +0,0 @@
-/*
- * (C) Copyright 2003
- * Texas Instruments.
- * Kshitij Gupta <kshitij@ti.com>
- * Configuation settings for the TI OMAP Innovator board.
- *
- * (C) Copyright 2004
- * ARM Ltd.
- * Philippe Robin, <philippe.robin@arm.com>
- * Configuration for Versatile PB.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_VERSATILE       1       /* This is Versatile Platform Board     */
-#define CONFIG_ARCH_VERSATILE  1       /* Specifically, a Versatile    */
-
-#define CONFIG_SYS_MEMTEST_START       0x100000
-#define CONFIG_SYS_MEMTEST_END         0x10000000
-
-#define CONFIG_SYS_TIMERBASE           0x101E2000      /* Timer 0 and 1 base */
-#define CONFIG_SYS_TIMER_RATE          (1000000 / 256)
-#define CONFIG_SYS_TIMER_COUNTER       (CONFIG_SYS_TIMERBASE + 0x4)
-#define CONFIG_SYS_TIMER_COUNTS_DOWN
-
-/*
- * control registers
- */
-#define VERSATILE_SCTL_BASE            0x101E0000      /* System controller */
-
-/*
- * System controller bit assignment
- */
-#define VERSATILE_REFCLK       0
-#define VERSATILE_TIMCLK       1
-
-#define VERSATILE_TIMER1_EnSel 15
-#define VERSATILE_TIMER2_EnSel 17
-#define VERSATILE_TIMER3_EnSel 19
-#define VERSATILE_TIMER4_EnSel 21
-
-#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS       1
-#define CONFIG_MISC_INIT_R             1
-/*
- * Size of malloc() pool
- */
-#define CONFIG_ENV_SIZE                        8192
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 128 * 1024)
-
-/*
- * Hardware drivers
- */
-
-#define CONFIG_SMC91111
-#define CONFIG_SMC_USE_32_BIT
-#define CONFIG_SMC91111_BASE   0x10010000
-#undef CONFIG_SMC91111_EXT_PHY
-
-/*
- * NS16550 Configuration
- */
-#define CONFIG_PL011_SERIAL
-#define CONFIG_PL011_CLOCK     24000000
-#define CONFIG_PL01x_PORTS                             \
-                       {(void *)CONFIG_SYS_SERIAL0,    \
-                        (void *)CONFIG_SYS_SERIAL1 }
-#define CONFIG_CONS_INDEX      0
-
-#define CONFIG_BAUDRATE                        38400
-#define CONFIG_SYS_SERIAL0             0x101F1000
-#define CONFIG_SYS_SERIAL1             0x101F2000
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_PING
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-#define CONFIG_BOOTP_SUBNETMASK
-
-#define CONFIG_BOOTDELAY       2
-#define CONFIG_BOOTARGS                "root=/dev/nfs mem=128M ip=dhcp "\
-                               "netdev=25,0,0xf1010000,0xf1010010,eth0 "\
-                               "console=ttyAMA0,38400n1"
-
-/*
- * Static configuration when assigning fixed address
- */
-#define CONFIG_BOOTFILE                "/tftpboot/uImage" /* file to load */
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP    /* undef to save memory */
-#define CONFIG_SYS_CBSIZE      256             /* Console I/O Buffer Size */
-/* Monitor Command Prompt       */
-#undef CONFIG_SYS_PROMPT
-#ifdef CONFIG_ARCH_VERSATILE_AB
-# define CONFIG_SYS_PROMPT     "VersatileAB # "
-#else
-# define CONFIG_SYS_PROMPT     "VersatilePB # "
-#endif
-/* Print Buffer Size */
-#define CONFIG_SYS_PBSIZE      \
-                       (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
-#define CONFIG_SYS_MAXARGS     16              /* max number of command args */
-#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size */
-
-#define CONFIG_SYS_LOAD_ADDR   0x7fc0  /* default load address */
-
-/*-----------------------------------------------------------------------
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS   1       /* we have 1 bank of DRAM */
-#define PHYS_SDRAM_1           0x00000000      /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE      0x08000000      /* 128 MB */
-#define PHYS_FLASH_SIZE                0x04000000      /* 64MB */
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_ADDR       0x00800000
-#define CONFIG_SYS_INIT_RAM_SIZE       0x000FFFFF
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - \
-                                               GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR        (CONFIG_SYS_INIT_RAM_ADDR + \
-                                               CONFIG_SYS_GBL_DATA_OFFSET)
-
-#define CONFIG_BOARD_EARLY_INIT_F
-
-/*-----------------------------------------------------------------------
- * FLASH and environment organization
- */
-#ifdef CONFIG_ARCH_VERSATILE_QEMU
-#define CONFIG_SYS_TEXT_BASE           0x10000
-#define CONFIG_SYS_NO_FLASH
-#define CONFIG_ENV_IS_NOWHERE
-#define CONFIG_SYS_MONITOR_LEN         0x80000
-#else
-#define CONFIG_SYS_TEXT_BASE           0x01000000
-/*
- * Use the CFI flash driver for ease of use
- */
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER
-#define CONFIG_ENV_IS_IN_FLASH 1
-/*
- *     System control register
- */
-#define VERSATILE_SYS_BASE             0x10000000
-#define VERSATILE_SYS_FLASH_OFFSET     0x4C
-#define VERSATILE_FLASHCTRL            \
-               (VERSATILE_SYS_BASE + VERSATILE_SYS_FLASH_OFFSET)
-/* Enable writing to flash */
-#define VERSATILE_FLASHPROG_FLVPPEN    (1 << 0)
-
-/* timeout values are in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (2 * CONFIG_SYS_HZ) /* Erase Timeout */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (2 * CONFIG_SYS_HZ) /* Write Timeout */
-
-/*
- * Note that CONFIG_SYS_MAX_FLASH_SECT allows for a parameter block
- * i.e.
- *     the bottom "sector" (bottom boot), or top "sector"
- *     (top boot), is a seperate erase region divided into
- *     4 (equal) smaller sectors. This, notionally, allows
- *     quicker erase/rewrire of the most frequently changed
- *     area......
- *     CONFIG_SYS_MAX_FLASH_SECT is padded up to a multiple of 4
- */
-
-#ifdef CONFIG_ARCH_VERSATILE_AB
-#define FLASH_SECTOR_SIZE              0x00020000      /* 128 KB sectors */
-#define CONFIG_ENV_SECT_SIZE           (2 * FLASH_SECTOR_SIZE)
-#define CONFIG_SYS_MAX_FLASH_SECT      (520)
-#endif
-
-#ifdef CONFIG_ARCH_VERSATILE_PB                /* Versatile PB is default      */
-#define FLASH_SECTOR_SIZE              0x00040000      /* 256 KB sectors */
-#define CONFIG_ENV_SECT_SIZE           FLASH_SECTOR_SIZE
-#define CONFIG_SYS_MAX_FLASH_SECT      (260)
-#endif
-
-#define CONFIG_SYS_FLASH_BASE          0x34000000
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-
-#define CONFIG_SYS_MONITOR_LEN         (4 * CONFIG_ENV_SECT_SIZE)
-
-/* The ARM Boot Monitor is shipped in the lowest sector of flash */
-
-#define FLASH_TOP                      (CONFIG_SYS_FLASH_BASE + PHYS_FLASH_SIZE)
-#define CONFIG_ENV_ADDR                        (FLASH_TOP - CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_OFFSET              (CONFIG_ENV_ADDR - CONFIG_SYS_FLASH_BASE)
-#define CONFIG_SYS_MONITOR_BASE                (CONFIG_ENV_ADDR - CONFIG_SYS_MONITOR_LEN)
-
-#define CONFIG_SYS_FLASH_PROTECTION    /* The devices have real protection */
-#define CONFIG_SYS_FLASH_EMPTY_INFO    /* flinfo indicates empty blocks */
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE /* use buffered writes */
-#endif
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/vision2.h b/include/configs/vision2.h
deleted file mode 100644 (file)
index b43373f..0000000
+++ /dev/null
@@ -1,199 +0,0 @@
-/*
- * Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * Configuration settings for the MX51-3Stack Freescale board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-
-#define CONFIG_MX51    /* in a mx51 */
-#define CONFIG_SYS_TEXT_BASE   0x97800000
-
-#include <asm/arch/imx-regs.h>
-
-#define CONFIG_DISPLAY_CPUINFO
-#define CONFIG_DISPLAY_BOARDINFO
-
-#define CONFIG_CMDLINE_TAG     /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-#define CONFIG_BOARD_LATE_INIT
-
-#ifndef MACH_TYPE_TTC_VISION2
-#define MACH_TYPE_TTC_VISION2  2775
-#endif
-#define CONFIG_MACH_TYPE       MACH_TYPE_TTC_VISION2
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN          (10 * 1024 * 1024)
-
-/*
- * Hardware drivers
- */
-#define CONFIG_MXC_UART
-#define CONFIG_MXC_UART_BASE   UART3_BASE
-#define CONFIG_MXC_GPIO
-#define CONFIG_MXC_SPI
-#define CONFIG_HW_WATCHDOG
-
- /*
- * SPI Configs
- * */
-#define CONFIG_FSL_SF
-#define CONFIG_CMD_SF
-
-#define CONFIG_SPI_FLASH_STMICRO
-
-/*
- * Use gpio 4 pin 25 as chip select for SPI flash
- * This corresponds to gpio 121
- */
-#define CONFIG_SF_DEFAULT_CS    1
-#define CONFIG_SF_DEFAULT_MODE   SPI_MODE_0
-#define CONFIG_SF_DEFAULT_SPEED  25000000
-
-#define CONFIG_ENV_SPI_CS      CONFIG_SF_DEFAULT_CS
-#define CONFIG_ENV_SPI_BUS      0
-#define CONFIG_ENV_SPI_MAX_HZ  25000000
-#define CONFIG_ENV_SPI_MODE    SPI_MODE_0
-
-#define CONFIG_ENV_OFFSET       (6 * 64 * 1024)
-#define CONFIG_ENV_SECT_SIZE    (1 * 64 * 1024)
-#define CONFIG_ENV_SIZE                (4 * 1024)
-
-#define CONFIG_FSL_ENV_IN_SF
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-
-/* PMIC Controller */
-#define CONFIG_POWER
-#define CONFIG_POWER_SPI
-#define CONFIG_POWER_FSL
-#define CONFIG_FSL_PMIC_BUS    0
-#define CONFIG_FSL_PMIC_CS     0
-#define CONFIG_FSL_PMIC_CLK    2500000
-#define CONFIG_FSL_PMIC_MODE   SPI_MODE_0
-#define CONFIG_FSL_PMIC_BITLEN 32
-#define CONFIG_RTC_MC13XXX
-
-/*
- * MMC Configs
- */
-#define CONFIG_FSL_ESDHC
-#ifdef CONFIG_FSL_ESDHC
-#define CONFIG_SYS_FSL_ESDHC_ADDR      (0x70004000)
-#define CONFIG_SYS_FSL_ESDHC_NUM       1
-
-#define CONFIG_MMC
-
-#define CONFIG_CMD_MMC
-#define CONFIG_GENERIC_MMC
-#define CONFIG_CMD_FAT
-#define CONFIG_DOS_PARTITION
-#endif
-
-#define CONFIG_CMD_DATE
-
-/*
- * Eth Configs
- */
-#define CONFIG_HAS_ETH1
-#define CONFIG_MII
-
-#define CONFIG_FEC_MXC
-#define IMX_FEC_BASE                           FEC_BASE_ADDR
-#define CONFIG_FEC_MXC_PHYADDR         0x1F
-
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_MII
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-#define CONFIG_CONS_INDEX                      3
-#define CONFIG_BAUDRATE                                115200
-
-/***********************************************************
- * Command definition
- ***********************************************************/
-
-#define CONFIG_CMD_SPI
-
-#define CONFIG_BOOTDELAY        3
-
-#define CONFIG_LOADADDR        0x90800000      /* loadaddr env var */
-
-#define        CONFIG_EXTRA_ENV_SETTINGS       \
-               "netdev=eth0\0"         \
-               "loadaddr=0x90800000\0"
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP
-#define CONFIG_AUTO_COMPLETE
-#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             64      /* max number of command args */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE
-
-#define CONFIG_SYS_MEMTEST_START       0x90000000
-#define CONFIG_SYS_MEMTEST_END         0x10000
-
-#define CONFIG_SYS_LOAD_ADDR           CONFIG_LOADADDR
-
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_SYS_HUSH_PARSER
-
-/*
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS           2
-#define PHYS_SDRAM_1                   CSD0_BASE_ADDR
-#define PHYS_SDRAM_1_SIZE              (256 * 1024 * 1024)
-#define PHYS_SDRAM_2                   CSD1_BASE_ADDR
-#define PHYS_SDRAM_2_SIZE              (256 * 1024 * 1024)
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define CONFIG_SYS_INIT_RAM_ADDR       IRAM_BASE_ADDR
-#define CONFIG_SYS_INIT_RAM_SIZE       IRAM_SIZE
-
-#define CONFIG_SYS_INIT_SP_OFFSET \
-       (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-#define CONFIG_SYS_INIT_SP_ADDR \
-       (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
-
-#define CONFIG_BOARD_EARLY_INIT_F
-
-/* 166 MHz DDR RAM */
-#define CONFIG_SYS_DDR_CLKSEL          0
-#define CONFIG_SYS_CLKTL_CBCDR         0x19239100
-#define CONFIG_SYS_MAIN_PWR_ON
-
-#define CONFIG_SYS_NO_FLASH
-
-/*
- * Framebuffer and LCD
- */
-#define CONFIG_PREBOOT
-#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_CMD_BMP
-#define CONFIG_BMP_16BPP
-#define CONFIG_IPUV3_CLK       133000000
-
-#endif                         /* __CONFIG_H */
diff --git a/include/configs/vl_ma2sc.h b/include/configs/vl_ma2sc.h
deleted file mode 100644 (file)
index 3facd7f..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * (C) Copyright 2009-2012
- * Jens Scharsig  <esw@bus-elekronik.de>
- * BuS Elektronik GmbH & Co. KG
- *
- * Configuation settings for the VL_MA2SC board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*--------------------------------------------------------------------------*/
-
-#define CONFIG_AT91SAM9263             /* It's an Atmel AT91SAM9263 SoC*/
-#define CONFIG_VL_MA2SC                        /* on an VL_MA2SC Board */
-#define CONFIG_ARCH_CPU_INIT
-#define CONFIG_MISC_INIT_R
-
-#include <asm/hardware.h>
-
-#define MACH_TYPE_VL_MA2SC             2412
-#define CONFIG_MACH_TYPE               MACH_TYPE_VL_MA2SC
-
-#define CONFIG_SYS_DCACHE_OFF
-
-#ifdef CONFIG_RAMLOAD
-#define CONFIG_SYS_TEXT_BASE           0x21000000
-#else
-#define CONFIG_SYS_TEXT_BASE           0x00000000
-#endif
-#define CONFIG_SYS_LOAD_ADDR           0x21000000  /* default load address */
-
-#define CONFIG_IDENT_STRING            " on MiS Activ 2"
-#define CONFIG_VERSION_VARIABLE
-#define CONFIG_AT91_GPIO
-
-#if !defined(CONFIG_SYS_USE_NANDFLASH) && !defined(CONFIG_RAMLOAD)
-#define CONFIG_SYS_USE_NORFLASH
-#define CONFIG_SYS_USE_BOOT_NORFLASH
-#endif
-
-#define CONFIG_CMDLINE_TAG                     /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS
-#define CONFIG_INITRD_TAG
-
-#ifndef CONFIG_SYS_USE_BOOT_NORFLASH
-#define CONFIG_SKIP_LOWLEVEL_INIT
-#endif
-
-/*
- * Hardware drivers
- */
-
-#define CONFIG_BOARD_EARLY_INIT_F
-
-#define CONFIG_WATCHDOG
-
-#define CONFIG_ATMEL_USART
-#define CONFIG_USART_BASE              ATMEL_BASE_DBGU
-#define CONFIG_USART_ID                        ATMEL_ID_SYS
-
-/* LCD */
-#define CONFIG_LCD
-#define CONFIG_ATMEL_LCD
-#define CONFIG_SPLASH_SCREEN
-#define CONFIG_SYS_BLACK_ON_WHITE
-#define LCD_BPP                                LCD_COLOR8
-#define CONFIG_ATMEL_LCD_BGR555
-
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV
-#define CONFIG_BOOTDELAY               3
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_BMP
-#define CONFIG_CMD_DATE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_MD5SUM
-#define CONFIG_CMD_SHA1SUM
-/*
-#define CONFIG_CMD_SPI
-*/
-#define CONFIG_CMD_FAT
-#define CONFIG_CMD_USB
-
-#define        CONFIG_SYS_LONGHELP
-#define CONFIG_MD5
-#define        CONFIG_SHA1
-
-/*----------------------------------------------------------------------------
- * Hardware confuguration
- *---------------------------------------------------------------------------*/
-
-/* USB */
-#define CONFIG_USB_ATMEL
-#define CONFIG_USB_ATMEL_CLK_SEL_PLLB
-#define CONFIG_USB_OHCI_NEW
-#define CONFIG_DOS_PARTITION
-#define CONFIG_SYS_USB_OHCI_CPU_INIT
-#define CONFIG_SYS_USB_OHCI_REGS_BASE          0x00a00000      /* UHP_BASE */
-#define CONFIG_SYS_USB_OHCI_SLOT_NAME          "at91sam9263"
-#define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
-#define CONFIG_USB_STORAGE
-#define CONFIG_AT91C_PQFP_UHPBUG
-
-/* I2C-Bus */
-
-#define CONFIG_SYS_I2C_SPEED                   50000
-#define CONFIG_SYS_I2C_SLAVE                   0               /* not used */
-
-#ifndef CONFIG_HARD_I2C
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_SOFT                    /* I2C bit-banged */
-#define CONFIG_SYS_I2C_SOFT_SPEED      CONFIG_SYS_I2C_SPEED
-#define CONFIG_SYS_I2C_SOFT_SLAVE      CONFIG_SYS_I2C_SLAVE
-
-/* Software  I2C driver configuration */
-#define I2C_DELAY      udelay(2500000/CONFIG_SYS_I2C_SPEED)
-
-#define AT91_PIN_SDA   (1<<4)          /* AT91C_PIO_PB4 */
-#define AT91_PIN_SCL   (1<<5)          /* AT91C_PIO_PB5 */
-
-#define I2C_INIT       i2c_init_board();
-#define I2C_ACTIVE     writel(AT91_PIN_SDA, &pio->piob.mddr);
-#define I2C_TRISTATE   writel(AT91_PIN_SDA, &pio->piob.mder);
-#define I2C_READ       ((readl(&pio->piob.pdsr) & AT91_PIN_SDA) != 0)
-#define I2C_SDA(bit)                                           \
-       do {                                                    \
-               if (bit)                                        \
-                       writel(AT91_PIN_SDA, &pio->piob.sodr);  \
-               else                                            \
-                       writel(AT91_PIN_SDA, &pio->piob.codr);  \
-       } while (0);
-#define I2C_SCL(bit)                                           \
-       do {                                                    \
-               if (bit)                                        \
-                       writel(AT91_PIN_SCL, &pio->piob.sodr);  \
-               else                                            \
-                       writel(AT91_PIN_SCL, &pio->piob.codr);  \
-       } while (0);
-#endif
-
-/* I2C-RTC */
-
-#ifdef CONFIG_CMD_DATE
-#define CONFIG_RTC_DS1338
-#define CONFIG_SYS_I2C_RTC_ADDR        0x68
-#endif
-
-/* EEPROM */
-
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 2
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50
-
-/* define PDC[31:16] as DATA[31:16] */
-#define CONFIG_SYS_PIOD_PDR_VAL1       0xFFFF0000
-#define CONFIG_SYS_PIOD_PPUDR_VAL      0xFFFF0000
-
-/* EBI0_CSA, CS1 SDRAM, CS3 NAND Flash, 3.3V memories */
-#define CONFIG_SYS_MATRIX_EBI0CSA_VAL                                  \
-       (AT91_MATRIX_CSA_DBPUC | AT91_MATRIX_CSA_VDDIOMSEL_3_3V |       \
-        AT91_MATRIX_CSA_EBI_CS1A)
-
-/* user reset enable */
-#define CONFIG_SYS_RSTC_RMR_VAL                        \
-               (AT91_RSTC_KEY |                \
-               AT91_RSTC_MR_URSTEN |           \
-               AT91_RSTC_MR_ERSTL(15))
-
-/* Disable Watchdog */
-#define CONFIG_SYS_WDTC_WDMR_VAL                               \
-               (AT91_WDT_MR_WDIDLEHLT | AT91_WDT_MR_WDDBGHLT | \
-                AT91_WDT_MR_WDV(0xFFF) |                       \
-                AT91_WDT_MR_WDDIS |                            \
-                AT91_WDT_MR_WDD(0xFFF))
-
-/* clocks */
-
-#define CONFIG_SYS_AT91_SLOW_CLOCK     32768           /* slow clock */
-
-#define MHZ180
-#if defined(MHZ199)
-/* 199,8994 MHZ */
-#define MASTER_PLL_MUL         911
-#define MASTER_PLL_DIV         56
-#define MASTER_PLL_OUT         2
-#elif defined(MHZ180)
-/* 180 MHZ */
-#define MASTER_PLL_MUL         1875
-#define MASTER_PLL_DIV         128
-#define MASTER_PLL_OUT         2
-#elif defined(MHZTEST)
-/* Test MHZ */
-#define CONFIG_DISPLAY_CPUINFO
-#define MASTER_PLL_MUL         8
-#define MASTER_PLL_DIV         1
-#define MASTER_PLL_OUT         2
-#else
-/* 176.9472 MHZ */
-#define MASTER_PLL_MUL         72
-#define MASTER_PLL_DIV         5
-#define MASTER_PLL_OUT         2
-#endif
-
-#define CONFIG_SYS_MOR_VAL                                     \
-       (AT91_PMC_MOR_MOSCEN | AT91_PMC_MOR_OSCOUNT(255))
-
-#define CONFIG_SYS_PLLAR_VAL                                   \
-       (AT91_PMC_PLLAR_29 |                                    \
-       AT91_PMC_PLLXR_OUT(MASTER_PLL_OUT) |                    \
-       AT91_PMC_PLLXR_PLLCOUNT(63) |                           \
-       AT91_PMC_PLLXR_MUL(MASTER_PLL_MUL - 1) |                \
-       AT91_PMC_PLLXR_DIV(MASTER_PLL_DIV))
-
-/* PCK/2 = MCK Master Clock from PLLA */
-#define        CONFIG_SYS_MCKR1_VAL            \
-       (AT91_PMC_MCKR_CSS_SLOW | AT91_PMC_MCKR_PRES_1 |        \
-        AT91_PMC_MCKR_MDIV_2)
-
-/* PCK/2 = MCK Master Clock from PLLA */
-#define        CONFIG_SYS_MCKR2_VAL            \
-       (AT91_PMC_MCKR_CSS_PLLA | AT91_PMC_MCKR_PRES_1 |        \
-       AT91_PMC_MCKR_MDIV_2)
-
-/* SDRAM */
-#define CONFIG_NR_DRAM_BANKS           1
-#define CONFIG_SYS_SDRAM_BASE          0x20000000
-#define CONFIG_SYS_SDRAM_SIZE          0x04000000  /* 64 megs */
-#define CONFIG_SYS_INIT_SP_ADDR                0x00504000  /* use internal SRAM0 */
-
-#define CONFIG_SYS_SDRC_MR_VAL1                0
-#define CONFIG_SYS_SDRC_TR_VAL1                700
-#define CONFIG_SYS_SDRC_CR_VAL                                         \
-               (AT91_SDRAMC_NC_9 |                                     \
-                AT91_SDRAMC_NR_13 |                                    \
-                AT91_SDRAMC_NB_4 |                                     \
-                AT91_SDRAMC_CAS_3 |                                    \
-                AT91_SDRAMC_DBW_32 |                                   \
-                (2 <<  8) |            /* Write Recovery Delay */      \
-                (7 << 12) |            /* Row Cycle Delay */           \
-                (2 << 16) |            /* Row Precharge Delay */       \
-                (2 << 20) |            /* Row to Column Delay */       \
-                (5 << 24) |            /* Active to Precharge Delay */ \
-                (8 << 28))             /* Exit Self Refresh to Active Delay */
-
-#define CONFIG_SYS_SDRC_MDR_VAL                AT91_SDRAMC_MD_SDRAM
-#define CONFIG_SYS_SDRC_MR_VAL2                AT91_SDRAMC_MODE_PRECHARGE
-#define CONFIG_SYS_SDRAM_VAL1          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRC_MR_VAL3                AT91_SDRAMC_MODE_REFRESH
-#define CONFIG_SYS_SDRAM_VAL2          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL3          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL4          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL5          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL6          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL7          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL8          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRAM_VAL9          0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRC_MR_VAL4                AT91_SDRAMC_MODE_LMR
-#define CONFIG_SYS_SDRAM_VAL10         0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRC_MR_VAL5                AT91_SDRAMC_MODE_NORMAL
-#define CONFIG_SYS_SDRAM_VAL11         0               /* SDRAM_BASE */
-#define CONFIG_SYS_SDRC_TR_VAL2                1200            /* SDRAM_TR */
-#define CONFIG_SYS_SDRAM_VAL12         0               /* SDRAM_BASE */
-
-/* NOR flash */
-
-#define CONFIG_FLASH_SHOW_PROGRESS     45
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER
-#define PHYS_FLASH_1                   0x10000000
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1
-#define CONFIG_SYS_MAX_FLASH_SECT      256
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-
-#define CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x00060000)
-
-/* setup SMC0, CS0 (NOR Flash) - 16-bit, 15 WS */
-#define CONFIG_SYS_SMC0_SETUP0_VAL                             \
-       (AT91_SMC_SETUP_NWE(10) | AT91_SMC_SETUP_NCS_WR(10) |   \
-        AT91_SMC_SETUP_NRD(10) | AT91_SMC_SETUP_NCS_RD(10))
-#define CONFIG_SYS_SMC0_PULSE0_VAL                             \
-       (AT91_SMC_PULSE_NWE(11) | AT91_SMC_PULSE_NCS_WR(11) |   \
-        AT91_SMC_PULSE_NRD(11) | AT91_SMC_PULSE_NCS_RD(11))
-#define CONFIG_SYS_SMC0_CYCLE0_VAL     \
-       (AT91_SMC_CYCLE_NWE(22) | AT91_SMC_CYCLE_NRD(22))
-#define CONFIG_SYS_SMC0_MODE0_VAL                              \
-       (AT91_SMC_MODE_RM_NRD | AT91_SMC_MODE_WM_NWE |          \
-        AT91_SMC_MODE_DBW_16 |                                 \
-        AT91_SMC_MODE_TDF | AT91_SMC_MODE_TDF_CYCLE(6))
-
-/* NAND flash */
-#ifdef CONFIG_CMD_NAND
-#define CONFIG_NAND_ATMEL
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE           0x40000000
-#define CONFIG_SYS_NAND_DBW_8          1
-#define CONFIG_SYS_NAND_MASK_ALE       (1 << 21)       /* our ALE is AD21 */
-#define CONFIG_SYS_NAND_MASK_CLE       (1 << 22)       /* our CLE is AD22 */
-#define CONFIG_SYS_NAND_ENABLE_PIN     GPIO_PIN_PD(15)
-#define CONFIG_SYS_NAND_READY_PIN      GPIO_PIN_PB(0)
-#endif
-
-/* Ethernet */
-#define CONFIG_MACB
-#define CONFIG_RMII
-#define CONFIG_NET_RETRY_COUNT         5
-#define CONFIG_AT91_WANTS_COMMON_PHY
-
-#define CONFIG_OVERWRITE_ETHADDR_ONCE
-
-#define CONFIG_SYS_LOAD_ADDR           0x21000000  /* default load address */
-
-#define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
-#define CONFIG_SYS_MEMTEST_END         0x21e00000
-
-/* Address and size of Primary Environment Sector */
-#ifdef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_SIZE                        0x20000
-#else
-#define CONFIG_ENV_SIZE                        0x2000
-#endif
-
-#define CONFIG_BAUDRATE                        115200
-#define CONFIG_SYS_BAUDRATE_TABLE      {312500, 230400, 115200, 19200, \
-                                               38400, 57600, 9600 }
-
-#define CONFIG_SYS_CBSIZE      512             /* Console I/O Buffer Size */
-#define CONFIG_SYS_MAXARGS     32              /* max number of command args */
-#define CONFIG_SYS_PBSIZE      \
-       (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_CMDLINE_EDITING
-#define CONFIG_AUTO_COMPLETE
-
-/*
- * Size of malloc() pool
- */
-#define CONFIG_SYS_MALLOC_LEN          \
-       ROUND(3 * CONFIG_ENV_SIZE + 128 * 1024, 0x1000)
-
-#ifndef CONFIG_RAMLOAD
-#define CONFIG_BOOTCOMMAND             "run nfsboot"
-#endif
-#define CONFIG_BOOT_RETRY_TIME         -1
-#define CONFIG_BOOT_RETRY_MIN          15
-
-#define CONFIG_NFSBOOTCOMMAND                                          \
-               "dhcp $(copy_addr) $(kernelname);"                      \
-               "run bootargsdefaults;"                                 \
-               "set bootargs $(bootargs) boot=nfs "                    \
-               ";echo $(bootargs)"                                     \
-       ";bootm"
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "ubootaddr=10000000\0"                                          \
-       "splashimage=10080000\0"                                        \
-       "kerneladdr=100A0000\0"                                         \
-       "kernelsize=00800000\0"                                         \
-       "minifsaddr=108A0000\0"                                         \
-       "minifssize=00060000\0"                                         \
-       "rootfsaddr=10900000\0"                                         \
-       "copy_addr=20200000\0"                                          \
-       "rootfssize=01700000\0"                                         \
-       "kernelname=uImage_vl_ma2sc\0"                                  \
-       "bootargsdefaults=set bootargs "                                \
-               "console=ttyS0,115200 "                                 \
-               "video=atmel_lcdfb "                                    \
-               "mem=62M "                                              \
-               "panic=10 "                                             \
-               "boardrevison=\\\"${revision}\\\" "                     \
-               "uboot=\\\"${ver}\\\" "                                 \
-               "\0"                                                    \
-       "update_all=run update_kernel;run update_root;"                 \
-               "run update_splash; run update_uboot\0"                 \
-       "update_kernel=protect off $(kerneladdr) +$(kernelsize);"       \
-               "dhcp $(copy_addr) $(kernelname);"                      \
-               "erase $(kerneladdr) +$(kernelsize);"                   \
-               "cp.b $(fileaddr) $(kerneladdr) $(filesize);"           \
-               "protect on $(kerneladdr) +$(kernelsize)"               \
-               "\0"                                                    \
-       "update_root=protect off $(rootfsaddr) +$(rootfssize);"         \
-               "dhcp $(copy_addr) vl_ma2sc.root;"                      \
-               "erase $(rootfsaddr) +$(rootfssize);"                   \
-               "cp.b $(fileaddr) $(rootfsaddr) $(filesize);"           \
-               "\0"                                                    \
-       "update_splash=protect off $(splashimage) +20000;"              \
-               "dhcp $(copy_addr) splash_vl_ma2sc.bmp;"                \
-               "erase $(splashimage) +20000;"                          \
-               "cp.b $(fileaddr) 10080000 $(filesize);"                \
-               "protect on $(splashimage) +20000\0"                    \
-       "update_uboot=protect off 10000000 1005FFFF;"                   \
-               "dhcp $(copy_addr) u-boot_vl_ma2sc;"                    \
-               "erase 10000000 1005FFFF;"                              \
-               "cp.b $(fileaddr) $(ubootaddr) $(filesize);"            \
-               "protect on 10000000 1005FFFF;reset\0"                  \
-       "emergency=run bootargsdefaults;"                               \
-               "set bootargs $(bootargs) root=initramfs boot=emergency " \
-               ";bootm $(kerneladdr)\0"                                \
-       "netemergency=run bootargsdefaults;"                            \
-               "dhcp $(copy_addr) $(kernelname);"                      \
-               "set bootargs $(bootargs) root=initramfs boot=emergency " \
-               ";bootm $(copy_addr)\0"                                 \
-       "norboot=run bootargsdefaults;"                                 \
-               "set bootargs $(bootargs) root=initramfs boot=local quiet " \
-               ";bootm $(kerneladdr)\0"                                \
-       "nandboot=run bootargsdefaults;"                                \
-               "set bootargs $(bootargs) root=initramfs boot=nand "    \
-               ";bootm $(kerneladdr)\0"                                \
-       "setnorboot=set bootcmd 'run norboot'; set bootdelay 1;save\0"  \
-       "clearenv=protect off 10060000 1007FFFF;"                       \
-               "erase 10060000 1007FFFF;reset\0"                       \
-       " "
-
-#endif
diff --git a/include/configs/vpac270.h b/include/configs/vpac270.h
deleted file mode 100644 (file)
index 976ba5d..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * Voipac PXA270 configuration file
- *
- * Copyright (C) 2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef        __CONFIG_H
-#define        __CONFIG_H
-
-/*
- * High Level Board Configuration Options
- */
-#define        CONFIG_CPU_PXA27X               1       /* Marvell PXA270 CPU */
-#define        CONFIG_VPAC270          1       /* Voipac PXA270 board */
-#define        CONFIG_SYS_TEXT_BASE    0xa0000000
-
-#ifdef CONFIG_ONENAND
-#define        CONFIG_SPL_ONENAND_SUPPORT
-#define        CONFIG_SPL_ONENAND_LOAD_ADDR    0x2000
-#define        CONFIG_SPL_ONENAND_LOAD_SIZE    \
-       (512 * 1024 - CONFIG_SPL_ONENAND_LOAD_ADDR)
-#define        CONFIG_SPL_TEXT_BASE    0x5c000000
-#define        CONFIG_SPL_LDSCRIPT     "board/vpac270/u-boot-spl.lds"
-#endif
-
-/*
- * Environment settings
- */
-#define        CONFIG_ENV_OVERWRITE
-#define        CONFIG_SYS_MALLOC_LEN           (128*1024)
-#define        CONFIG_ARCH_CPU_INIT
-#define        CONFIG_BOOTCOMMAND                                              \
-       "if mmc init && fatload mmc 0 0xa4000000 uImage; then "         \
-               "bootm 0xa4000000; "                                    \
-       "fi; "                                                          \
-       "if usb reset && fatload usb 0 0xa4000000 uImage; then "        \
-               "bootm 0xa4000000; "                                    \
-       "fi; "                                                          \
-       "if ide reset && fatload ide 0 0xa4000000 uImage; then "        \
-               "bootm 0xa4000000; "                                    \
-       "fi; "                                                          \
-       "bootm 0x60000;"
-
-#define        CONFIG_EXTRA_ENV_SETTINGS                                       \
-       "update_onenand="                                               \
-               "onenand erase 0x0 0x80000 ; "                          \
-               "onenand write 0xa0000000 0x0 0x80000"
-
-#define        CONFIG_BOOTARGS                 "console=tty0 console=ttyS0,115200"
-#define        CONFIG_TIMESTAMP
-#define        CONFIG_BOOTDELAY                2       /* Autoboot delay */
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-#define        CONFIG_LZMA                     /* LZMA compression support */
-#define        CONFIG_OF_LIBFDT
-
-/*
- * Serial Console Configuration
- */
-#define        CONFIG_PXA_SERIAL
-#define        CONFIG_FFUART                   1
-#define CONFIG_CONS_INDEX              3
-#define        CONFIG_BAUDRATE                 115200
-
-/*
- * Bootloader Components Configuration
- */
-#define        CONFIG_CMD_ENV
-#define        CONFIG_CMD_MMC
-#define        CONFIG_CMD_USB
-#undef CONFIG_LCD
-#define        CONFIG_CMD_IDE
-
-#ifdef CONFIG_ONENAND
-#define        CONFIG_CMD_ONENAND
-#else
-#undef CONFIG_CMD_ONENAND
-#endif
-
-/*
- * Networking Configuration
- *  chip on the Voipac PXA270 board
- */
-#ifdef CONFIG_CMD_NET
-#define        CONFIG_CMD_PING
-#define        CONFIG_CMD_DHCP
-
-#define        CONFIG_DRIVER_DM9000            1
-#define        CONFIG_DM9000_BASE              0x08000300      /* CS2 */
-#define        DM9000_IO                       (CONFIG_DM9000_BASE)
-#define        DM9000_DATA                     (CONFIG_DM9000_BASE + 4)
-#define        CONFIG_NET_RETRY_COUNT          10
-
-#define        CONFIG_BOOTP_BOOTFILESIZE
-#define        CONFIG_BOOTP_BOOTPATH
-#define        CONFIG_BOOTP_GATEWAY
-#define        CONFIG_BOOTP_HOSTNAME
-#endif
-
-/*
- * MMC Card Configuration
- */
-#ifdef CONFIG_CMD_MMC
-#define        CONFIG_MMC
-#define        CONFIG_GENERIC_MMC
-#define        CONFIG_PXA_MMC_GENERIC
-#define        CONFIG_SYS_MMC_BASE             0xF0000000
-#define        CONFIG_CMD_FAT
-#define        CONFIG_CMD_EXT2
-#define        CONFIG_DOS_PARTITION
-#endif
-
-/*
- * KGDB
- */
-#ifdef CONFIG_CMD_KGDB
-#define        CONFIG_KGDB_BAUDRATE            230400  /* kgdb serial port speed */
-#endif
-
-/*
- * HUSH Shell Configuration
- */
-#define        CONFIG_SYS_HUSH_PARSER          1
-
-#define        CONFIG_SYS_LONGHELP
-#ifdef CONFIG_SYS_HUSH_PARSER
-#else
-#endif
-#define        CONFIG_SYS_CBSIZE               256
-#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_DEVICE_NULLDEV       1
-#define        CONFIG_CMDLINE_EDITING          1
-#define        CONFIG_AUTO_COMPLETE            1
-
-/*
- * Clock Configuration
- */
-#define        CONFIG_SYS_CPUSPEED             0x190           /* 312MHz */
-
-
-/*
- * DRAM Map
- */
-#define        CONFIG_NR_DRAM_BANKS            2               /* 2 banks of DRAM */
-#define        PHYS_SDRAM_1                    0xa0000000      /* SDRAM Bank #1 */
-#define        PHYS_SDRAM_1_SIZE               0x08000000      /* 128 MB */
-
-#ifdef CONFIG_RAM_256M
-#define        PHYS_SDRAM_2                    0x80000000      /* SDRAM Bank #2 */
-#define        PHYS_SDRAM_2_SIZE               0x08000000      /* 128 MB */
-#endif
-
-#define        CONFIG_SYS_DRAM_BASE            0xa0000000      /* CS0 */
-#ifdef CONFIG_RAM_256M
-#define        CONFIG_SYS_DRAM_SIZE            0x10000000      /* 256 MB DRAM */
-#else
-#define        CONFIG_SYS_DRAM_SIZE            0x08000000      /* 128 MB DRAM */
-#endif
-
-#define        CONFIG_SYS_MEMTEST_START        0xa0400000      /* memtest works on */
-#define        CONFIG_SYS_MEMTEST_END          0xa0800000      /* 4 ... 8 MB in DRAM */
-
-#define        CONFIG_SYS_LOAD_ADDR            PHYS_SDRAM_1
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         0x5c010000
-
-/*
- * NOR FLASH
- */
-#define        CONFIG_SYS_MONITOR_BASE         0x0
-#define        CONFIG_SYS_MONITOR_LEN          0x80000
-#define        CONFIG_ENV_ADDR                 \
-                       (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
-#define        CONFIG_ENV_SIZE                 0x20000
-#define        CONFIG_ENV_SECT_SIZE            0x20000
-
-#if    defined(CONFIG_CMD_FLASH)       /* NOR */
-#define        PHYS_FLASH_1                    0x00000000      /* Flash Bank #1 */
-
-#ifdef CONFIG_RAM_256M
-#define        PHYS_FLASH_2                    0x02000000      /* Flash Bank #2 */
-#endif
-
-#define        CONFIG_SYS_FLASH_CFI
-#define        CONFIG_FLASH_CFI_DRIVER         1
-
-#define        CONFIG_SYS_MAX_FLASH_SECT       (4 + 255)
-#ifdef CONFIG_RAM_256M
-#define        CONFIG_SYS_MAX_FLASH_BANKS      2
-#define        CONFIG_SYS_FLASH_BANKS_LIST     { PHYS_FLASH_1, PHYS_FLASH_2 }
-#else
-#define        CONFIG_SYS_MAX_FLASH_BANKS      1
-#define        CONFIG_SYS_FLASH_BASE           PHYS_FLASH_1
-#endif
-
-#define        CONFIG_SYS_FLASH_ERASE_TOUT     (25*CONFIG_SYS_HZ)
-#define        CONFIG_SYS_FLASH_WRITE_TOUT     (25*CONFIG_SYS_HZ)
-
-#define        CONFIG_SYS_FLASH_USE_BUFFER_WRITE       1
-#define        CONFIG_SYS_FLASH_PROTECTION             1
-
-#define        CONFIG_ENV_IS_IN_FLASH          1
-
-#elif  defined(CONFIG_CMD_ONENAND)     /* OneNAND */
-#define        CONFIG_SYS_NO_FLASH
-#define        CONFIG_SYS_ONENAND_BASE         0x00000000
-
-#define        CONFIG_ENV_IS_IN_ONENAND        1
-
-#else  /* No flash */
-#define        CONFIG_SYS_NO_FLASH
-#define        CONFIG_ENV_IS_NOWHERE
-#endif
-
-/*
- * IDE
- */
-#ifdef CONFIG_CMD_IDE
-#define        CONFIG_LBA48
-#undef CONFIG_IDE_LED
-#undef CONFIG_IDE_RESET
-
-#define        __io
-
-#define        CONFIG_SYS_IDE_MAXBUS           1
-#define        CONFIG_SYS_IDE_MAXDEVICE        1
-
-#define        CONFIG_SYS_ATA_BASE_ADDR        0x0c000000
-#define        CONFIG_SYS_ATA_IDE0_OFFSET      0x0
-
-#define        CONFIG_SYS_ATA_DATA_OFFSET      0x120
-#define        CONFIG_SYS_ATA_REG_OFFSET       0x120
-#define        CONFIG_SYS_ATA_ALT_OFFSET       0x120
-
-#define        CONFIG_SYS_ATA_STRIDE           2
-#endif
-
-/*
- * GPIO settings
- */
-#define        CONFIG_SYS_GPSR0_VAL    0x01308800
-#define        CONFIG_SYS_GPSR1_VAL    0x00cf0000
-#define        CONFIG_SYS_GPSR2_VAL    0x922ac000
-#define        CONFIG_SYS_GPSR3_VAL    0x0161e800
-
-#define        CONFIG_SYS_GPCR0_VAL    0x00010000
-#define        CONFIG_SYS_GPCR1_VAL    0x0
-#define        CONFIG_SYS_GPCR2_VAL    0x0
-#define        CONFIG_SYS_GPCR3_VAL    0x0
-
-#define        CONFIG_SYS_GPDR0_VAL    0xcbb18800
-#define        CONFIG_SYS_GPDR1_VAL    0xfccfa981
-#define        CONFIG_SYS_GPDR2_VAL    0x922affff
-#define        CONFIG_SYS_GPDR3_VAL    0x0161e904
-
-#define        CONFIG_SYS_GAFR0_L_VAL  0x00100000
-#define        CONFIG_SYS_GAFR0_U_VAL  0xa5da8510
-#define        CONFIG_SYS_GAFR1_L_VAL  0x6992901a
-#define        CONFIG_SYS_GAFR1_U_VAL  0xaaa5a0aa
-#define        CONFIG_SYS_GAFR2_L_VAL  0xaaaaaaaa
-#define        CONFIG_SYS_GAFR2_U_VAL  0x4109a401
-#define        CONFIG_SYS_GAFR3_L_VAL  0x54010310
-#define        CONFIG_SYS_GAFR3_U_VAL  0x00025401
-
-#define        CONFIG_SYS_PSSR_VAL     0x30
-
-/*
- * Clock settings
- */
-#define        CONFIG_SYS_CKEN         0x00500240
-#define        CONFIG_SYS_CCCR         0x02000290
-
-/*
- * Memory settings
- */
-#define        CONFIG_SYS_MSC0_VAL     0x3ffc95f9
-#define        CONFIG_SYS_MSC1_VAL     0x02ccf974
-#define        CONFIG_SYS_MSC2_VAL     0x00000000
-#ifdef CONFIG_RAM_256M
-#define        CONFIG_SYS_MDCNFG_VAL   0x8ad30ad3
-#else
-#define        CONFIG_SYS_MDCNFG_VAL   0x88000ad3
-#endif
-#define        CONFIG_SYS_MDREFR_VAL   0x201fe01e
-#define        CONFIG_SYS_MDMRS_VAL    0x00000000
-#define        CONFIG_SYS_FLYCNFG_VAL  0x00000000
-#define        CONFIG_SYS_SXCNFG_VAL   0x40044004
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define        CONFIG_SYS_MECR_VAL     0x00000001
-#define        CONFIG_SYS_MCMEM0_VAL   0x00014307
-#define        CONFIG_SYS_MCMEM1_VAL   0x00014307
-#define        CONFIG_SYS_MCATT0_VAL   0x0001c787
-#define        CONFIG_SYS_MCATT1_VAL   0x0001c787
-#define        CONFIG_SYS_MCIO0_VAL    0x0001430f
-#define        CONFIG_SYS_MCIO1_VAL    0x0001430f
-
-/*
- * LCD
- */
-#ifdef CONFIG_LCD
-#define        CONFIG_VOIPAC_LCD
-#endif
-
-/*
- * USB
- */
-#ifdef CONFIG_CMD_USB
-#define        CONFIG_USB_OHCI_NEW
-#define        CONFIG_SYS_USB_OHCI_CPU_INIT
-#define        CONFIG_SYS_USB_OHCI_BOARD_INIT
-#define        CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS      2
-#define        CONFIG_SYS_USB_OHCI_REGS_BASE   0x4C000000
-#define        CONFIG_SYS_USB_OHCI_SLOT_NAME   "vpac270"
-#define        CONFIG_USB_STORAGE
-#endif
-
-#endif /* __CONFIG_H */
index 6a5738863ad9f1b9ba2b6aca246bce0897575c6b..73ba67c3e910d977f4e2ff252ccca2b1b2b39810 100644 (file)
@@ -17,6 +17,7 @@
 #define CONFIG_SPEAR600                                /* SPEAr600 SoC */
 #define CONFIG_X600                            /* on X600 board */
 #define CONFIG_SYS_GENERIC_BOARD
+#define CONFIG_SYS_THUMB_BUILD
 
 #include <asm/arch/hardware.h>
 
@@ -67,6 +68,8 @@
 #define CONFIG_MTD_ECC_SOFT
 #define CONFIG_SYS_FSMC_NAND_8BIT
 #define CONFIG_SYS_NAND_ONFI_DETECTION
+#define CONFIG_NAND_ECC_BCH
+#define CONFIG_BCH
 
 /* UBI/UBI config options */
 #define CONFIG_MTD_DEVICE
index 217312e5b72bad5ea22a12ddc9442a923ce4447b..3f153f24aeaa1bbd4a1b882cbd6cbd595854d0f3 100644 (file)
@@ -47,8 +47,6 @@
 #endif
 
 /* Generic TPM interfaced through LPC bus */
-#define CONFIG_TPM
-#define CONFIG_TPM_TIS_LPC
 #define CONFIG_TPM_TIS_BASE_ADDRESS        0xfed40000
 
 /*-----------------------------------------------------------------------
diff --git a/include/configs/xaeniax.h b/include/configs/xaeniax.h
deleted file mode 100644 (file)
index 8d19bff..0000000
+++ /dev/null
@@ -1,539 +0,0 @@
-/*
- * (C) Copyright 2004-2005
- * Wolfgang Denk, DENX Software Engineering, <wd@denx.de>
- *
- * (C) Copyright 2004
- * Vincent Dubey, Xa SA, vincent.dubey@xa-ch.com
- *
- * (C) Copyright 2002
- * Kyle Harris, Nexus Technologies, Inc. kharris@nexus-tech.ne
- *
- * (C) Copyright 2002
- * Sysgo Real-Time Solutions, GmbH <www.elinos.com>
- * Marius Groeger <mgroeger@sysgo.de>
- *
- * Configuation settings for the xaeniax board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Configuration Options
- * (easy to change)
- */
-#define CONFIG_CPU_PXA25X              1       /* This is an PXA255 CPU    */
-#define CONFIG_XAENIAX         1       /* on a xaeniax board       */
-#define        CONFIG_SYS_TEXT_BASE    0x0
-
-#define CONFIG_BOARD_LATE_INIT
-
-/* we will never enable dcache, because we have to setup MMU first */
-#define CONFIG_SYS_DCACHE_OFF
-
-/*
- * select serial console configuration
- */
-#define CONFIG_PXA_SERIAL
-#define CONFIG_BTUART         1       /* we use BTUART on XAENIAX */
-#define CONFIG_CONS_INDEX      4
-
-/* allow to overwrite serial and ethaddr */
-#define CONFIG_ENV_OVERWRITE
-
-#define        CONFIG_TIMESTAMP                /* Print image info with timestamp */
-
-#define CONFIG_BAUDRATE                115200
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_SDRAM
-#define CONFIG_CMD_SNTP
-
-#undef CONFIG_CMD_DTT
-
-
-#define CONFIG_NETMASK         255.255.255.0
-#define CONFIG_IPADDR          192.168.68.201
-#define CONFIG_SERVERIP                192.168.68.62
-
-#define CONFIG_BOOTDELAY       3
-#define CONFIG_BOOTCOMMAND     "bootm 0x00100000"
-#define CONFIG_BOOTARGS                "console=ttyS1,115200"
-#define CONFIG_CMDLINE_TAG             1       /* enable passing of ATAGs */
-#define CONFIG_SETUP_MEMORY_TAGS       1
-#define CONFIG_INITRD_TAG              1
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   115200                  /* speed to run kgdb serial port */
-#endif
-
-/*
- * Size of malloc() pool; this lives below the uppermost 128 KiB which are
- * used for the RAM copy of the uboot code
- */
-#define CONFIG_SYS_MALLOC_LEN      (CONFIG_ENV_SIZE + 128*1024)
-
-/*
- * Miscellaneous configurable options
- */
-#define CONFIG_SYS_LONGHELP                            /* undef to save memory */
-#define CONFIG_SYS_HUSH_PARSER         1
-
-#undef CONFIG_SYS_PROMPT
-#ifdef CONFIG_SYS_HUSH_PARSER
-#define CONFIG_SYS_PROMPT              "u-boot$ "      /* Monitor Command Prompt */
-#else
-#define CONFIG_SYS_PROMPT              "u-boot=> "     /* Monitor Command Prompt */
-#endif
-#define CONFIG_SYS_CBSIZE              256             /* Console I/O Buffer Size      */
-#define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16              /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size    */
-#define CONFIG_SYS_DEVICE_NULLDEV      1
-
-#define CONFIG_SYS_MEMTEST_START       0xa0400000      /* memtest works on     */
-#define CONFIG_SYS_MEMTEST_END         0xa0800000      /* 4 ... 8 MB in DRAM   */
-
-#define CONFIG_SYS_LOAD_ADDR           0xa1000000      /* default load address */
-
-#define CONFIG_SYS_CPUSPEED            0x141           /* set core clock to 400/200/100 MHz */
-
-/*
- * Physical Memory Map
- */
-#define CONFIG_NR_DRAM_BANKS   1          /* we have 1 banks (partition) of DRAM */
-#define PHYS_SDRAM_1           0xa0000000 /* SDRAM Bank #1 */
-#define PHYS_SDRAM_1_SIZE      0x04000000 /* 64 MB */
-#define PHYS_SDRAM_2           0xa4000000 /* SDRAM Bank #2 */
-#define PHYS_SDRAM_2_SIZE      0x00000000 /* 0 MB */
-#define PHYS_SDRAM_3           0xa8000000 /* SDRAM Bank #3 */
-#define PHYS_SDRAM_3_SIZE      0x00000000 /* 0 MB */
-#define PHYS_SDRAM_4           0xac000000 /* SDRAM Bank #4 */
-#define PHYS_SDRAM_4_SIZE      0x00000000 /* 0 MB */
-
-#define PHYS_FLASH_1           0x00000000 /* Flash Bank #1 */
-#define PHYS_FLASH_2           0x04000000 /* Flash Bank #2 */
-#define PHYS_FLASH_SIZE                0x02000000 /* 32 MB */
-#define PHYS_FLASH_BANK_SIZE   0x02000000 /* 32 MB Banks */
-#define PHYS_FLASH_SECT_SIZE   0x00040000 /* 256 KB sectors (x2) */
-
-#define CONFIG_SYS_DRAM_BASE           0xa0000000
-#define CONFIG_SYS_DRAM_SIZE           0x04000000
-
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         0xfffff800
-
-/*
- * FLASH and environment organization
- */
-#define CONFIG_SYS_MAX_FLASH_BANKS     1    /* max number of memory banks              */
-#define CONFIG_SYS_MAX_FLASH_SECT      128  /* max number of sectors on one chip    */
-
-/* timeout values are in ticks */
-#define CONFIG_SYS_FLASH_ERASE_TOUT    (25*CONFIG_SYS_HZ) /* Timeout for Flash Erase */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    (25*CONFIG_SYS_HZ) /* Timeout for Flash Write */
-
-/* FIXME */
-#define CONFIG_ENV_IS_IN_FLASH 1
-#define CONFIG_ENV_ADDR                (PHYS_FLASH_1 + 0x40000)/* Addr of Environment Sector   */
-#define CONFIG_ENV_SIZE                0x40000                 /* Total Size of Environment Sector     */
-
-/*
- * SMSC91C111 Network Card
- */
-#define CONFIG_SMC91111                1
-#define CONFIG_SMC91111_BASE           0x10000300  /* chip select 3         */
-#define CONFIG_SMC_USE_32_BIT          1          /* 32 bit bus  */
-#undef  CONFIG_SMC_91111_EXT_PHY                  /* we use internal phy   */
-#undef  CONFIG_SHOW_ACTIVITY
-#define CONFIG_NET_RETRY_COUNT         10         /* # of retries          */
-
-/*
- * GPIO settings
- */
-
-/*
- * GP05 == nUSBReset  is 1
- * GP10 == CFReset   is 1
- * GP13 == nCFDataEnable is 1
- * GP14 == nCFAddrEnable is 1
- * GP15 == nCS1      is 1
- * GP21 == ComBrdReset is 1
- * GP24 == SFRM      is 1
- * GP25 == TXD       is 1
- * GP31 == SYNC      is 1
- * GP33 == nCS5      is 1
- * GP39 == FFTXD     is 1
- * GP41 == RTS       is 1
- * GP43 == BTTXD     is 1
- * GP45 == BTRTS     is 1
- * GP47 == TXD       is 1
- * GP48 == nPOE      is 1
- * GP49 == nPWE      is 1
- * GP50 == nPIOR     is 1
- * GP51 == nPIOW     is 1
- * GP52 == nPCE[1]   is 1
- * GP53 == nPCE[2]   is 1
- * GP54 == nPSKTSEL  is 1
- * GP55 == nPREG     is 1
- * GP78 == nCS2      is 1
- * GP79 == nCS3      is 1
- * GP80 == nCS4      is 1
- * GP82 == NSSPSFRM  is 1
- * GP83 == NSSPTXD   is 1
- */
-#define CONFIG_SYS_GPSR0_VAL           0x8320E420
-#define CONFIG_SYS_GPSR1_VAL           0x00FFAA82
-#define CONFIG_SYS_GPSR2_VAL           0x000DC000
-
-/*
- * GP03 == LANReset  is 0
- * GP06 == USBWakeUp  is 0
- * GP11 == USBControl is 0
- * GP12 == Buzzer     is 0
- * GP16 == PWM0       is 0
- * GP17 == PWM1       is 0
- * GP23 == SCLK      is 0
- * GP30 == SDATA_OUT is 0
- * GP81 == NSSPCLK   is 0
- */
-#define CONFIG_SYS_GPCR0_VAL           0x40C31848
-#define CONFIG_SYS_GPCR1_VAL           0x00000000
-#define CONFIG_SYS_GPCR2_VAL           0x00020000
-
-/*
- * GP00 == CPUWakeUpUSB is input
- * GP01 == GP reset is input
- * GP02 == LANInterrupt is input
- * GP03 == LANReset     is output
- * GP04 == USBInterrupt is input
- * GP05 == nUSBReset    is output
- * GP06 == USBWakeUp    is output
- * GP07 == CFReady/nBusy is input
- * GP08 == nCFCardDetect1 is input
- * GP09 == nCFCardDetect2 is input
- * GP10 == nCFReset   is output
- * GP11 == USBControl is output
- * GP12 == Buzzer     is output
- * GP13 == CFDataEnable is output
- * GP14 == CFAddressEnable is output
- * GP15 == nCS1      is output
- * GP16 == PWM0      is output
- * GP17 == PWM1      is output
- * GP18 == RDY       is input
- * GP19 == ReaderReady is input
- * GP20 == ReaderReset is input
- * GP21 == ComBrdReset is output
- * GP23 == SCLK      is output
- * GP24 == SFRM      is output
- * GP25 == TXD       is output
- * GP26 == RXD       is input
- * GP27 == EXTCLK    is input
- * GP28 == BITCLK    is output
- * GP29 == SDATA_IN0 is input
- * GP30 == SDATA_OUT is output
- * GP31 == SYNC      is output
- * GP32 == SYSSCLK   is output
- * GP33 == nCS5      is output
- * GP34 == FFRXD     is input
- * GP35 == CTS       is input
- * GP36 == DCD       is input
- * GP37 == DSR       is input
- * GP38 == RI        is input
- * GP39 == FFTXD     is output
- * GP40 == DTR       is output
- * GP41 == RTS       is output
- * GP42 == BTRXD     is input
- * GP43 == BTTXD     is output
- * GP44 == BTCTS     is input
- * GP45 == BTRTS     is output
- * GP46 == RXD       is input
- * GP47 == TXD       is output
- * GP48 == nPOE      is output
- * GP49 == nPWE      is output
- * GP50 == nPIOR     is output
- * GP51 == nPIOW     is output
- * GP52 == nPCE[1]   is output
- * GP53 == nPCE[2]   is output
- * GP54 == nPSKTSEL  is output
- * GP55 == nPREG     is output
- * GP56 == nPWAIT    is input
- * GP57 == nPIOS16   is input
- * GP58 == LDD[0]    is output
- * GP59 == LDD[1]    is output
- * GP60 == LDD[2]    is output
- * GP61 == LDD[3]    is output
- * GP62 == LDD[4]    is output
- * GP63 == LDD[5]    is output
- * GP64 == LDD[6]    is output
- * GP65 == LDD[7]    is output
- * GP66 == LDD[8]    is output
- * GP67 == LDD[9]    is output
- * GP68 == LDD[10]   is output
- * GP69 == LDD[11]   is output
- * GP70 == LDD[12]   is output
- * GP71 == LDD[13]   is output
- * GP72 == LDD[14]   is output
- * GP73 == LDD[15]   is output
- * GP74 == LCD_FCLK  is output
- * GP75 == LCD_LCLK  is output
- * GP76 == LCD_PCLK  is output
- * GP77 == LCD_ACBIAS is output
- * GP78 == nCS2      is output
- * GP79 == nCS3      is output
- * GP80 == nCS4      is output
- * GP81 == NSSPCLK   is output
- * GP82 == NSSPSFRM  is output
- * GP83 == NSSPTXD   is output
- * GP84 == NSSPRXD   is input
- */
-#define CONFIG_SYS_GPDR0_VAL           0xD3E3FC68
-#define CONFIG_SYS_GPDR1_VAL           0xFCFFAB83
-#define CONFIG_SYS_GPDR2_VAL           0x000FFFFF
-
-/*
- * GP01 == GP reset is AF01
- * GP15 == nCS1     is AF10
- * GP16 == PWM0     is AF10
- * GP17 == PWM1     is AF10
- * GP18 == RDY      is AF01
- * GP23 == SCLK     is AF10
- * GP24 == SFRM     is AF10
- * GP25 == TXD      is AF10
- * GP26 == RXD      is AF01
- * GP27 == EXTCLK   is AF01
- * GP28 == BITCLK   is AF01
- * GP29 == SDATA_IN0 is AF10
- * GP30 == SDATA_OUT is AF01
- * GP31 == SYNC     is AF01
- * GP32 == SYSCLK   is AF01
- * GP33 == nCS5  is AF10
- * GP34 == FFRXD is AF01
- * GP35 == CTS   is AF01
- * GP36 == DCD   is AF01
- * GP37 == DSR   is AF01
- * GP38 == RI    is AF01
- * GP39 == FFTXD is AF10
- * GP40 == DTR   is AF10
- * GP41 == RTS   is AF10
- * GP42 == BTRXD is AF01
- * GP43 == BTTXD is AF10
- * GP44 == BTCTS is AF01
- * GP45 == BTRTS is AF10
- * GP46 == RXD   is AF10
- * GP47 == TXD   is AF01
- * GP48 == nPOE  is AF10
- * GP49 == nPWE  is AF10
- * GP50 == nPIOR is AF10
- * GP51 == nPIOW is AF10
- * GP52 == nPCE[1] is AF10
- * GP53 == nPCE[2] is AF10
- * GP54 == nPSKTSEL is AF10
- * GP55 == nPREG   is AF10
- * GP56 == nPWAIT  is AF01
- * GP57 == nPIOS16 is AF01
- * GP58 == LDD[0]  is AF10
- * GP59 == LDD[1]  is AF10
- * GP60 == LDD[2]  is AF10
- * GP61 == LDD[3]  is AF10
- * GP62 == LDD[4]  is AF10
- * GP63 == LDD[5]  is AF10
- * GP64 == LDD[6]  is AF10
- * GP65 == LDD[7]  is AF10
- * GP66 == LDD[8]  is AF10
- * GP67 == LDD[9]  is AF10
- * GP68 == LDD[10] is AF10
- * GP69 == LDD[11] is AF10
- * GP70 == LDD[12] is AF10
- * GP71 == LDD[13] is AF10
- * GP72 == LDD[14] is AF10
- * GP73 == LDD[15] is AF10
- * GP74 == LCD_FCLK is AF10
- * GP75 == LCD_LCLK is AF10
- * GP76 == LCD_PCLK is AF10
- * GP77 == LCD_ACBIAS is AF10
- * GP78 == nCS2     is AF10
- * GP79 == nCS3     is AF10
- * GP80 == nCS4     is AF10
- * GP81 == NSSPCLK  is AF01
- * GP82 == NSSPSFRM is AF01
- * GP83 == NSSPTXD  is AF01
- * GP84 == NSSPRXD  is AF10
- */
-#define CONFIG_SYS_GAFR0_L_VAL         0x80000004
-#define CONFIG_SYS_GAFR0_U_VAL         0x595A801A
-#define CONFIG_SYS_GAFR1_L_VAL         0x699A9559
-#define CONFIG_SYS_GAFR1_U_VAL         0xAAA5AAAA
-#define CONFIG_SYS_GAFR2_L_VAL         0xAAAAAAAA
-#define CONFIG_SYS_GAFR2_U_VAL         0x00000256
-
-/*
- * clock settings
- */
-/* RDH = 1
- * PH  = 0
- * VFS = 0
- * BFS = 0
- * SSS = 0
- */
-#define CONFIG_SYS_PSSR_VAL            0x00000030
-
-#define CONFIG_SYS_CKEN                        0x00000080  /*  */
-#define CONFIG_SYS_ICMR                        0x00000000  /* No interrupts enabled        */
-#define        CONFIG_SYS_CCCR                 CCCR_L27|CCCR_M2|CCCR_N10
-
-
-/*
- * Memory settings
- *
- * This is the configuration for nCS0/1 -> flash banks
- * configuration for nCS1 :
- * [31]    0    -
- * [30:28] 000  -
- * [27:24] 0000 -
- * [23:20] 0000 -
- * [19]    0    -
- * [18:16] 000  -
- * configuration for nCS0:
- * [15]    0    - Slower Device
- * [14:12] 010  - CS deselect to CS time: 2*(2*MemClk) = 40 ns
- * [11:08] 0011 - Address to data valid in bursts: (3+1)*MemClk = 40 ns
- * [07:04] 1111 - " for first access: (23+2)*MemClk = 250 ns (fixme 12+2?)
- * [03]    0    - 32 Bit bus width
- * [02:00] 010  - burst OF 4 ROM or FLASH
-*/
-#define CONFIG_SYS_MSC0_VAL            0x000023D2
-
-/* This is the configuration for nCS2/3 -> USB controller, LAN
- * configuration for nCS3: LAN
- * [31]    0    - Slower Device
- * [30:28] 001  - RRR3: CS deselect to CS time: 1*(2*MemClk) = 20 ns
- * [27:24] 0010 - RDN3: Address to data valid in bursts: (2+1)*MemClk = 30 ns
- * [23:20] 0010 - RDF3: Address for first access: (2+1)*MemClk = 30 ns
- * [19]    0    - 32 Bit bus width
- * [18:16] 100  - variable latency I/O
- * configuration for nCS2: USB
- * [15]    1    - Faster Device
- * [14:12] 010  - RRR2: CS deselect to CS time: 2*(2*MemClk) = 40 ns
- * [11:08] 0010 - RDN2: Address to data valid in bursts: (2+1)*MemClk = 30 ns
- * [07:04] 0110 - RDF2: Address for first access: (6+1)*MemClk = 70 ns
- * [03]    1    - 16 Bit bus width
- * [02:00] 100  - variable latency I/O
- */
-#define CONFIG_SYS_MSC1_VAL            0x1224A26C
-
-/* This is the configuration for nCS4/5 -> LAN
- * configuration for nCS5:
- * [31]    0    -
- * [30:28] 000  -
- * [27:24] 0000 -
- * [23:20] 0000 -
- * [19]    0    -
- * [18:16] 000  -
- * configuration for nCS4: LAN
- * [15]    1    - Faster Device
- * [14:12] 010  - RRR2: CS deselect to CS time: 2*(2*MemClk) = 40 ns
- * [11:08] 0010 - RDN2: Address to data valid in bursts: (2+1)*MemClk = 30 ns
- * [07:04] 0110 - RDF2: Address for first access: (6+1)*MemClk = 70 ns
- * [03]    0    - 32 Bit bus width
- * [02:00] 100  - variable latency I/O
- */
-#define CONFIG_SYS_MSC2_VAL            0x00001224
-
-/* MDCNFG: SDRAM Configuration Register
- *
- * [31:29]   000 - reserved
- * [28]      0  - no SA1111 compatiblity mode
- * [27]      0   - latch return data with return clock
- * [26]      0   - alternate addressing for pair 2/3
- * [25:24]   00  - timings
- * [23]      0   - internal banks in lower partition 2/3 (not used)
- * [22:21]   00  - row address bits for partition 2/3 (not used)
- * [20:19]   00  - column address bits for partition 2/3 (not used)
- * [18]      0   - SDRAM partition 2/3 width is 32 bit
- * [17]      0   - SDRAM partition 3 disabled
- * [16]      0   - SDRAM partition 2 disabled
- * [15:13]   000 - reserved
- * [12]      0  - no SA1111 compatiblity mode
- * [11]      1   - latch return data with return clock
- * [10]      0   - no alternate addressing for pair 0/1
- * [09:08]   10  - tRP=2*MemClk CL=2 tRCD=2*MemClk tRAS=5*MemClk tRC=8*MemClk
- * [7]       1   - 4 internal banks in lower partition pair
- * [06:05]   10  - 13 row address bits for partition 0/1
- * [04:03]   01  - 9 column address bits for partition 0/1
- * [02]      0   - SDRAM partition 0/1 width is 32 bit
- * [01]      0   - disable SDRAM partition 1
- * [00]      1   - enable  SDRAM partition 0
- */
-/* use the configuration above but disable partition 0 */
-#define CONFIG_SYS_MDCNFG_VAL          0x00000AC9
-
-/* MDREFR: SDRAM Refresh Control Register
- *
- * [32:26] 0     - reserved
- * [25]    0     - K2FREE: not free running
- * [24]    0     - K1FREE: not free running
- * [23]    0     - K0FREE: not free running
- * [22]    0     - SLFRSH: self refresh disabled
- * [21]    0     - reserved
- * [20]    1     - APD: auto power down
- * [19]    0     - K2DB2: SDCLK2 is MemClk
- * [18]    0     - K2RUN: disable SDCLK2
- * [17]    0     - K1DB2: SDCLK1 is MemClk
- * [16]    1     - K1RUN: enable SDCLK1
- * [15]    1     - E1PIN: SDRAM clock enable
- * [14]    0     - K0DB2: SDCLK0 is MemClk
- * [13]    0     - K0RUN: disable SDCLK0
- * [12]    0     - E0PIN: disable SDCKE0
- * [11:00] 000000011000 - (64ms/8192)*MemClkFreq/32 = 24
- */
-#define CONFIG_SYS_MDREFR_VAL          0x00138018 /* mh: was 0x00118018 */
-
-/* MDMRS: Mode Register Set Configuration Register
- *
- * [31]      0       - reserved
- * [30:23]   00000000- MDMRS2: SDRAM2/3 MRS Value. (not used)
- * [22:20]   011     - MDCL2:  SDRAM2/3 Cas Latency.  (not used)
- * [19]      0       - MDADD2: SDRAM2/3 burst Type. Fixed to sequential.  (not used)
- * [18:16]   010     - MDBL2:  SDRAM2/3 burst Length. Fixed to 4.  (not used)
- * [15]      0       - reserved
- * [14:07]   00000000- MDMRS0: SDRAM0/1 MRS Value.
- * [06:04]   011     - MDCL0:  SDRAM0/1 Cas Latency.
- * [03]      0       - MDADD0: SDRAM0/1 burst Type. Fixed to sequential.
- * [02:00]   010     - MDBL0:  SDRAM0/1 burst Length. Fixed to 4.
- */
-#define CONFIG_SYS_MDMRS_VAL           0x00320032
-
-#define        CONFIG_SYS_FLYCNFG_VAL          0x00000000
-#define        CONFIG_SYS_SXCNFG_VAL           0x00000000
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define CONFIG_SYS_MECR_VAL            0x00000000
-#define CONFIG_SYS_MCMEM0_VAL          0x00010504
-#define CONFIG_SYS_MCMEM1_VAL          0x00010504
-#define CONFIG_SYS_MCATT0_VAL          0x00010504
-#define CONFIG_SYS_MCATT1_VAL          0x00010504
-#define CONFIG_SYS_MCIO0_VAL           0x00004715
-#define CONFIG_SYS_MCIO1_VAL           0x00004715
-
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/zeus.h b/include/configs/zeus.h
deleted file mode 100644 (file)
index 2bc4e1a..0000000
+++ /dev/null
@@ -1,350 +0,0 @@
-/*
- * (C) Copyright 2007
- * Stefan Roese, DENX Software Engineering, sr@denx.de.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/************************************************************************
- * zeus.h - configuration for Zeus board
- ***********************************************************************/
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*-----------------------------------------------------------------------
- * High Level Configuration Options
- *----------------------------------------------------------------------*/
-#define CONFIG_ZEUS            1               /* Board is Zeus        */
-#define CONFIG_405EP           1               /* Specifc 405EP support*/
-
-#define        CONFIG_SYS_TEXT_BASE    0xFFFC0000
-
-#define CONFIG_SYS_CLK_FREQ     33000000 /* external frequency to pll   */
-
-#define CONFIG_BOARD_EARLY_INIT_F 1            /* Call board_early_init_f */
-#define CONFIG_MISC_INIT_R     1               /* Call misc_init_r     */
-
-#define PLLMR0_DEFAULT         PLLMR0_333_111_55_111
-#define PLLMR1_DEFAULT         PLLMR1_333_111_55_111
-
-#define CONFIG_ENV_IS_IN_FLASH     1   /* use FLASH for environment vars       */
-
-#define CONFIG_OVERWRITE_ETHADDR_ONCE  1
-
-#define CONFIG_PPC4xx_EMAC
-#define CONFIG_MII             1       /* MII PHY management           */
-#define CONFIG_PHY_ADDR                0x01    /* PHY address                  */
-#define CONFIG_HAS_ETH1                1
-#define CONFIG_PHY1_ADDR       0x11    /* EMAC1 PHY address            */
-#define CONFIG_SYS_RX_ETH_BUFFER       16      /* Number of ethernet rx buffers & descriptors */
-#define CONFIG_PHY_RESET       1
-#define CONFIG_PHY_RESET_DELAY 300     /* PHY RESET recovery delay     */
-
-/*
- * BOOTP options
- */
-#define CONFIG_BOOTP_BOOTFILESIZE
-#define CONFIG_BOOTP_BOOTPATH
-#define CONFIG_BOOTP_GATEWAY
-#define CONFIG_BOOTP_HOSTNAME
-
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_ASKENV
-#define CONFIG_CMD_CACHE
-#define CONFIG_CMD_DHCP
-#define CONFIG_CMD_DIAG
-#define CONFIG_CMD_EEPROM
-#define CONFIG_CMD_ELF
-#define CONFIG_CMD_I2C
-#define CONFIG_CMD_IRQ
-#define CONFIG_CMD_MII
-#define CONFIG_CMD_PING
-#define CONFIG_CMD_REGINFO
-
-/* POST support */
-#define CONFIG_POST            (CONFIG_SYS_POST_MEMORY   | \
-                                CONFIG_SYS_POST_CPU       | \
-                                CONFIG_SYS_POST_CACHE     | \
-                                CONFIG_SYS_POST_UART      | \
-                                CONFIG_SYS_POST_ETHER)
-
-#define CONFIG_SYS_POST_ETHER_EXT_LOOPBACK     /* eth POST using ext loopack connector */
-
-/* Define here the base-addresses of the UARTs to test in POST */
-#define CONFIG_SYS_POST_UART_TABLE     { CONFIG_SYS_NS16550_COM1 }
-
-#define CONFIG_LOGBUFFER
-#define CONFIG_SYS_POST_CACHE_ADDR     0x00800000 /* free virtual address      */
-
-#define CONFIG_SYS_CONSOLE_IS_IN_ENV /* Otherwise it catches logbuffer as output */
-
-#undef CONFIG_WATCHDOG                 /* watchdog disabled            */
-
-/*-----------------------------------------------------------------------
- * SDRAM
- *----------------------------------------------------------------------*/
-/*
- * SDRAM configuration (please see cpu/ppc/sdram.[ch])
- */
-#define CONFIG_SDRAM_BANK0     1       /* init onboard SDRAM bank 0 */
-#define CONFIG_SDRAM_BANK1     1       /* init onboard SDRAM bank 1 */
-
-/* SDRAM timings used in datasheet */
-#define CONFIG_SYS_SDRAM_CL            3       /* CAS latency */
-#define CONFIG_SYS_SDRAM_tRP           20      /* PRECHARGE command period */
-#define CONFIG_SYS_SDRAM_tRC           66      /* ACTIVE-to-ACTIVE command period */
-#define CONFIG_SYS_SDRAM_tRCD          20      /* ACTIVE-to-READ delay */
-#define CONFIG_SYS_SDRAM_tRFC          66      /* Auto refresh period */
-
-/*-----------------------------------------------------------------------
- * Serial Port
- *----------------------------------------------------------------------*/
-#define CONFIG_CONS_INDEX      1
-#define CONFIG_SYS_NS16550
-#define CONFIG_SYS_NS16550_SERIAL
-#define CONFIG_SYS_NS16550_REG_SIZE    1
-#define CONFIG_SYS_NS16550_CLK         get_serial_clock()
-#undef CONFIG_SYS_EXT_SERIAL_CLOCK                     /* external serial clock */
-#define CONFIG_SYS_BASE_BAUD   691200
-#define CONFIG_BAUDRATE                115200
-
-#define CONFIG_SYS_BAUDRATE_TABLE  \
-    {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}
-
-/*-----------------------------------------------------------------------
- * Miscellaneous configurable options
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_LONGHELP                    /* undef to save memory         */
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_SYS_CBSIZE              1024    /* Console I/O Buffer Size      */
-#else
-#define CONFIG_SYS_CBSIZE              256     /* Console I/O Buffer Size      */
-#endif
-#define CONFIG_SYS_PBSIZE              (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16) /* Print Buffer Size */
-#define CONFIG_SYS_MAXARGS             16      /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE /* Boot Argument Buffer Size  */
-
-#define CONFIG_SYS_MEMTEST_START       0x0400000 /* memtest works on           */
-#define CONFIG_SYS_MEMTEST_END         0x0C00000 /* 4 ... 12 MB in DRAM        */
-
-#define CONFIG_SYS_LOAD_ADDR           0x100000  /* default load address       */
-#define CONFIG_SYS_EXTBDINFO           1       /* To use extended board_into (bd_t) */
-
-#define CONFIG_LOADS_ECHO      1       /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   1       /* allow baudrate change        */
-
-#define CONFIG_CMDLINE_EDITING 1       /* add command line history     */
-#define CONFIG_LOOPW            1       /* enable loopw command         */
-#define CONFIG_MX_CYCLIC        1       /* enable mdc/mwc commands      */
-#define CONFIG_ZERO_BOOTDELAY_CHECK    /* check for keypress on bootdelay==0 */
-#define CONFIG_VERSION_VARIABLE 1      /* include version env variable */
-
-/*-----------------------------------------------------------------------
- * I2C
- *----------------------------------------------------------------------*/
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_PPC4XX
-#define CONFIG_SYS_I2C_PPC4XX_CH0
-#define CONFIG_SYS_I2C_PPC4XX_SPEED_0          400000
-#define CONFIG_SYS_I2C_PPC4XX_SLAVE_0          0x7F
-
-/* these are for the ST M24C02 2kbit serial i2c eeprom */
-#define CONFIG_SYS_I2C_EEPROM_ADDR     0x50            /* base address */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_LEN 1               /* bytes of address */
-/* mask of address bits that overflow into the "EEPROM chip address"    */
-#define CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW    0x07
-
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_BITS      3       /* 8 byte write page size */
-#define CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS  10      /* and takes up to 10 msec */
-
-/*
- * The layout of the I2C EEPROM, used for bootstrap setup and for board-
- * specific values, like ethaddr... that can be restored via the sw-reset
- * button
- */
-#define FACTORY_RESET_I2C_EEPROM       0x50
-#define FACTORY_RESET_ENV_OFFS         0x80
-#define FACTORY_RESET_ENV_SIZE         0x80
-
-/*-----------------------------------------------------------------------
- * Start addresses for the final memory configuration
- * (Set up by the startup code)
- * Please note that CONFIG_SYS_SDRAM_BASE _must_ start at 0
- */
-#define CONFIG_SYS_SDRAM_BASE          0x00000000
-#define CONFIG_SYS_FLASH_BASE          0xFF000000
-#define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256 kB for Monitor   */
-#define CONFIG_SYS_MALLOC_LEN          (128 * 1024)    /* Reserve 128 kB for malloc()  */
-#define CONFIG_SYS_MONITOR_BASE        (-CONFIG_SYS_MONITOR_LEN)
-
-/*
- * For booting Linux, the board info and command line data
- * have to be in the first 8 MB of memory, since this is
- * the maximum mapped by the Linux kernel during initialization.
- */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)       /* Initial Memory map for Linux */
-
-/*-----------------------------------------------------------------------
- * FLASH organization
- */
-#define CONFIG_SYS_FLASH_CFI                           /* The flash is CFI compatible  */
-#define CONFIG_FLASH_CFI_DRIVER                        /* Use common CFI driver        */
-
-#define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1       /* max number of memory banks           */
-#define CONFIG_SYS_MAX_FLASH_SECT      512     /* max number of sectors on one chip    */
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    120000  /* Timeout for Flash Erase (in ms)      */
-#define CONFIG_SYS_FLASH_WRITE_TOUT    500     /* Timeout for Flash Write (in ms)      */
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE 1    /* use buffered writes (20x faster)     */
-#define CONFIG_SYS_FLASH_PROTECTION    1       /* use hardware flash protection        */
-
-#define CONFIG_SYS_FLASH_EMPTY_INFO            /* print 'E' for empty sector on flinfo */
-#define CONFIG_SYS_FLASH_QUIET_TEST    1       /* don't warn upon unknown flash        */
-
-#ifdef CONFIG_ENV_IS_IN_FLASH
-#define CONFIG_ENV_SECT_SIZE   0x20000 /* size of one complete sector          */
-#define CONFIG_ENV_ADDR                ((-CONFIG_SYS_MONITOR_LEN)-CONFIG_ENV_SECT_SIZE)
-#define        CONFIG_ENV_SIZE         0x2000  /* Total Size of Environment Sector     */
-
-/* Address and size of Redundant Environment Sector    */
-#define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR-CONFIG_ENV_SECT_SIZE)
-#define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
-#endif
-
-/*-----------------------------------------------------------------------
- * Definitions for initial stack pointer and data area (in data cache)
- */
-/* use on chip memory (OCM) for temperary stack until sdram is tested */
-#define CONFIG_SYS_TEMP_STACK_OCM      1
-
-/* On Chip Memory location */
-#define CONFIG_SYS_OCM_DATA_ADDR       0xF8000000
-#define CONFIG_SYS_OCM_DATA_SIZE       0x1000
-#define CONFIG_SYS_INIT_RAM_ADDR       CONFIG_SYS_OCM_DATA_ADDR /* inside of OCM               */
-#define CONFIG_SYS_INIT_RAM_SIZE       CONFIG_SYS_OCM_DATA_SIZE /* Size of used area in RAM    */
-
-#define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
-/* reserve some memory for POST and BOOT limit info */
-#define CONFIG_SYS_INIT_SP_OFFSET      (CONFIG_SYS_GBL_DATA_OFFSET - 16)
-
-/* extra data in OCM */
-#define CONFIG_SYS_POST_MAGIC          \
-               (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 8)
-#define CONFIG_SYS_POST_VAL            \
-               (CONFIG_SYS_OCM_DATA_ADDR + CONFIG_SYS_GBL_DATA_OFFSET - 12)
-
-/*-----------------------------------------------------------------------
- * External Bus Controller (EBC) Setup
- */
-
-/* Memory Bank 0 (Flash 16M) initialization                                    */
-#define CONFIG_SYS_EBC_PB0AP           0x05815600
-#define CONFIG_SYS_EBC_PB0CR           0xFF09A000  /* BAS=0xFF0,BS=16MB,BU=R/W,BW=16bit  */
-
-/*-----------------------------------------------------------------------
- * Definitions for GPIO setup (PPC405EP specific)
- *
- * GPIO0[0]     - External Bus Controller BLAST output
- * GPIO0[1-9]   - Instruction trace outputs
- * GPIO0[10-13] - External Bus Controller CS_1 - CS_4 outputs
- * GPIO0[14-16] - External Bus Controller ABUS3-ABUS5 outputs
- * GPIO0[17-23] - External Interrupts IRQ0 - IRQ6 inputs
- * GPIO0[24-27] - UART0 control signal inputs/outputs
- * GPIO0[28-29] - UART1 data signal input/output
- * GPIO0[30-31] - EMAC0 and EMAC1 reject packet inputs
- */
-#define CONFIG_SYS_GPIO0_OSRL          0x15555550      /* Chip selects */
-#define CONFIG_SYS_GPIO0_OSRH          0x00000110      /* UART_DTR-pin 27 alt out */
-#define CONFIG_SYS_GPIO0_ISR1L         0x10000041      /* Pin 2, 12 is input */
-#define CONFIG_SYS_GPIO0_ISR1H         0x15505440      /* OUT: LEDs 22/23; IN: pin12,2, NVALID# */
-#define CONFIG_SYS_GPIO0_TSRL          0x00000000
-#define CONFIG_SYS_GPIO0_TSRH          0x00000000
-#define CONFIG_SYS_GPIO0_TCR           0xBFF68317      /* 3-state OUT: 22/23/29; 12,2 is not 3-state */
-#define CONFIG_SYS_GPIO0_ODR           0x00000000
-
-#define CONFIG_SYS_GPIO_SW_RESET       1
-#define CONFIG_SYS_GPIO_ZEUS_PE        12
-#define CONFIG_SYS_GPIO_LED_RED        22
-#define CONFIG_SYS_GPIO_LED_GREEN      23
-
-/* Time in milli-seconds */
-#define CONFIG_SYS_TIME_POST           5000
-#define CONFIG_SYS_TIME_FACTORY_RESET  10000
-
-#if defined(CONFIG_CMD_KGDB)
-#define CONFIG_KGDB_BAUDRATE   230400          /* speed to run kgdb serial port */
-#endif
-
-/*
- * Pass open firmware flat tree
- */
-#define CONFIG_OF_LIBFDT
-#define CONFIG_OF_BOARD_SETUP
-
-/* ENVIRONMENT VARS */
-
-#define CONFIG_PREBOOT         "echo;echo Welcome to Bulletendpoints board v1.1;echo"
-#define CONFIG_IPADDR          192.168.1.10
-#define CONFIG_SERVERIP                192.168.1.100
-#define CONFIG_GATEWAYIP       192.168.1.100
-#if 0
-#define CONFIG_BOOTDELAY       -1      /* autoboot disabled        */
-#else
-#define CONFIG_BOOTDELAY       3       /* autoboot after 5 seconds */
-#endif
-
-#define CONFIG_EXTRA_ENV_SETTINGS                                      \
-       "logversion=2\0"                                                \
-       "hostname=zeus\0"                                               \
-       "netdev=eth0\0"                                                 \
-       "ethact=ppc_4xx_eth0\0"                                         \
-       "netmask=255.255.255.0\0"                                       \
-       "ramdisk_size=50000\0"                                          \
-       "nfsargs=setenv bootargs root=/dev/nfs rw"                      \
-               " nfsroot=${serverip}:${rootpath}\0"                    \
-       "ramargs=setenv bootargs root=/dev/ram rw"                      \
-               " ramdisk_size=${ramdisk_size}\0"                       \
-       "addip=setenv bootargs ${bootargs} "                            \
-               "ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}"      \
-               ":${hostname}:${netdev}:off panic=1\0"                  \
-       "addtty=setenv bootargs ${bootargs} console=ttyS0,"             \
-               "${baudrate}\0"                                         \
-       "net_nfs=tftp ${kernel_mem_addr} ${file_kernel};"               \
-               "run nfsargs addip addtty;bootm\0"                      \
-       "net_ram=tftp ${kernel_mem_addr} ${file_kernel};"               \
-               "tftp ${ramdisk_mem_addr} ${file_fs};"                  \
-               "run ramargs addip addtty;"                             \
-               "bootm ${kernel_mem_addr} ${ramdisk_mem_addr}\0"        \
-       "rootpath=/target_fs/zeus\0"                                    \
-       "kernel_fl_addr=ff000000\0"                                     \
-       "kernel_mem_addr=200000\0"                                      \
-       "ramdisk_fl_addr=ff300000\0"                                    \
-       "ramdisk_mem_addr=4000000\0"                                    \
-       "uboot_fl_addr=fffc0000\0"                                      \
-       "uboot_mem_addr=100000\0"                                       \
-       "file_uboot=/zeus/u-boot.bin\0"                                 \
-       "tftp_uboot=tftp 100000 ${file_uboot}\0"                        \
-       "update_uboot=protect off fffc0000 ffffffff;"                   \
-               "era fffc0000 ffffffff;cp.b 100000 fffc0000 40000;"     \
-               "protect on fffc0000 ffffffff\0"                        \
-       "upd_uboot=run tftp_uboot;run update_uboot\0"                   \
-       "file_kernel=/zeus/uImage_ba\0"                                 \
-       "tftp_kernel=tftp 100000 ${file_kernel}\0"                      \
-       "update_kernel=protect off ff000000 ff17ffff;"                  \
-               "era ff000000 ff17ffff;cp.b 100000 ff000000 180000\0"   \
-       "upd_kernel=run tftp_kernel;run update_kernel\0"                \
-       "file_fs=/zeus/rootfs_ba.img\0"                                 \
-       "tftp_fs=tftp 100000 ${file_fs}\0"                              \
-       "update_fs=protect off ff300000 ff87ffff;era ff300000 ff87ffff;"\
-               "cp.b 100000 ff300000 580000\0"                         \
-       "upd_fs=run tftp_fs;run update_fs\0"                            \
-       "bootcmd=chkreset;run ramargs addip addtty addmisc;"            \
-               "bootm ${kernel_fl_addr} ${ramdisk_fl_addr}\0"          \
-       ""
-
-#endif /* __CONFIG_H */
diff --git a/include/configs/zipitz2.h b/include/configs/zipitz2.h
deleted file mode 100644 (file)
index 0199190..0000000
+++ /dev/null
@@ -1,238 +0,0 @@
-/*
- * Aeronix Zipit Z2 configuration file
- *
- * Copyright (C) 2009-2010 Marek Vasut <marek.vasut@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __CONFIG_H
-#define __CONFIG_H
-
-/*
- * High Level Board Configuration Options
- */
-#define        CONFIG_CPU_PXA27X               1       /* Marvell PXA270 CPU */
-#define        CONFIG_ZIPITZ2          1       /* Zipit Z2 board */
-#define        CONFIG_SYS_TEXT_BASE    0x0
-
-#undef CONFIG_BOARD_LATE_INIT
-#undef CONFIG_SKIP_LOWLEVEL_INIT
-#define        CONFIG_PREBOOT
-
-/*
- * Environment settings
- */
-#define        CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_IS_IN_FLASH         1
-#define CONFIG_ENV_ADDR                        0x40000
-#define CONFIG_ENV_SIZE                        0x20000
-
-/* we will never enable dcache, because we have to setup MMU first */
-#define CONFIG_SYS_DCACHE_OFF
-
-#define        CONFIG_SYS_MALLOC_LEN           (128*1024)
-#define        CONFIG_ARCH_CPU_INIT
-
-#define        CONFIG_BOOTCOMMAND                                              \
-       "if mmc rescan && ext2load mmc 0 0xa0000000 boot/uboot.script ;"\
-       "then "                                                         \
-               "source 0xa0000000; "                                   \
-       "else "                                                         \
-               "bootm 0x60000; "                                       \
-       "fi; "
-#define        CONFIG_BOOTARGS                                                 \
-       "console=tty0 console=ttyS2,115200 fbcon=rotate:3"
-#define        CONFIG_TIMESTAMP
-#define        CONFIG_BOOTDELAY                2       /* Autoboot delay */
-#define        CONFIG_CMDLINE_TAG
-#define        CONFIG_SETUP_MEMORY_TAGS
-#define        CONFIG_SYS_TEXT_BASE            0x0
-#define        CONFIG_LZMA                     /* LZMA compression support */
-
-/*
- * Serial Console Configuration
- * STUART - the lower serial port on Colibri board
- */
-#define        CONFIG_PXA_SERIAL
-#define        CONFIG_STUART                   1
-#define CONFIG_CONS_INDEX              2
-#define        CONFIG_BAUDRATE                 115200
-
-/*
- * Bootloader Components Configuration
- */
-#define        CONFIG_CMD_ENV
-#define        CONFIG_CMD_MMC
-#define        CONFIG_CMD_SPI
-
-/*
- * MMC Card Configuration
- */
-#ifdef CONFIG_CMD_MMC
-#define        CONFIG_MMC
-#define        CONFIG_GENERIC_MMC
-#define        CONFIG_PXA_MMC_GENERIC
-#define        CONFIG_SYS_MMC_BASE             0xF0000000
-#define        CONFIG_CMD_FAT
-#define CONFIG_CMD_EXT2
-#define        CONFIG_DOS_PARTITION
-#endif
-
-/*
- * SPI and LCD
- */
-#ifdef CONFIG_CMD_SPI
-#define        CONFIG_SOFT_SPI
-#define        CONFIG_LCD
-#define        CONFIG_PXA_LCD
-#define        CONFIG_LMS283GF05
-#define        CONFIG_VIDEO_LOGO
-#define        CONFIG_CMD_BMP
-#define        CONFIG_SPLASH_SCREEN
-#define        CONFIG_SPLASH_SCREEN_ALIGN
-#define        CONFIG_VIDEO_BMP_GZIP
-#define        CONFIG_VIDEO_BMP_RLE8
-#define        CONFIG_SYS_VIDEO_LOGO_MAX_SIZE  (2 << 20)
-
-#define        SPI_DELAY       udelay(10)
-#define        SPI_SDA(val)    zipitz2_spi_sda(val)
-#define        SPI_SCL(val)    zipitz2_spi_scl(val)
-#define        SPI_READ        zipitz2_spi_read()
-#ifndef        __ASSEMBLY__
-void zipitz2_spi_sda(int);
-void zipitz2_spi_scl(int);
-unsigned char zipitz2_spi_read(void);
-#endif
-#endif
-
-/*
- * KGDB
- */
-#ifdef CONFIG_CMD_KGDB
-#define        CONFIG_KGDB_BAUDRATE            230400          /* speed to run kgdb serial port */
-#endif
-
-/*
- * HUSH Shell Configuration
- */
-#define        CONFIG_SYS_HUSH_PARSER          1
-
-#define        CONFIG_SYS_LONGHELP                             /* undef to save memory */
-#define        CONFIG_SYS_CBSIZE               256             /* Console I/O Buffer Size */
-#define        CONFIG_SYS_PBSIZE               (CONFIG_SYS_CBSIZE+sizeof(CONFIG_SYS_PROMPT)+16)        /* Print Buffer Size */
-#define        CONFIG_SYS_MAXARGS              16              /* max number of command args */
-#define        CONFIG_SYS_BARGSIZE             CONFIG_SYS_CBSIZE       /* Boot Argument Buffer Size */
-#define        CONFIG_SYS_DEVICE_NULLDEV       1
-
-/*
- * Clock Configuration
- */
-#define CONFIG_SYS_CPUSPEED            0x190           /* standard setting for 312MHz; L=16, N=1.5, A=0, SDCLK!=SystemBus */
-
-/*
- * SRAM Map
- */
-#define        PHYS_SRAM                       0x5c000000      /* SRAM Bank #1 */
-#define        PHYS_SRAM_SIZE                  0x00040000      /* 256k */
-
-/*
- * DRAM Map
- */
-#define        CONFIG_NR_DRAM_BANKS            1               /* We have 1 bank of DRAM */
-#define        PHYS_SDRAM_1                    0xa0000000      /* SDRAM Bank #1 */
-#define        PHYS_SDRAM_1_SIZE               0x02000000      /* 32 MB */
-
-#define        CONFIG_SYS_DRAM_BASE            0xa0000000      /* CS0 */
-#define        CONFIG_SYS_DRAM_SIZE            0x02000000      /* 32 MB DRAM */
-
-#define CONFIG_SYS_MEMTEST_START       0xa0400000      /* memtest works on */
-#define CONFIG_SYS_MEMTEST_END         0xa0800000      /* 4 ... 8 MB in DRAM */
-
-#define        CONFIG_SYS_LOAD_ADDR            CONFIG_SYS_DRAM_BASE
-
-#define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
-#define        CONFIG_SYS_INIT_SP_ADDR         (GENERATED_GBL_DATA_SIZE + PHYS_SRAM + 2048)
-
-/*
- * NOR FLASH
- */
-#define PHYS_FLASH_1                   0x00000000      /* Flash Bank #1 */
-#define PHYS_FLASH_SIZE                        0x00800000      /* 8 MB */
-#define PHYS_FLASH_SECT_SIZE           0x00010000      /* 64 KB sectors */
-#define CONFIG_SYS_FLASH_BASE          PHYS_FLASH_1
-
-#define CONFIG_SYS_FLASH_CFI
-#define CONFIG_FLASH_CFI_DRIVER                1
-#define CONFIG_SYS_FLASH_CFI_WIDTH      FLASH_CFI_16BIT
-
-#define CONFIG_SYS_MONITOR_BASE                PHYS_FLASH_1
-#define CONFIG_SYS_MONITOR_LEN         PHYS_FLASH_SECT_SIZE
-
-#define CONFIG_SYS_MAX_FLASH_BANKS     1
-#define CONFIG_SYS_MAX_FLASH_SECT      256
-
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE      1
-
-#define CONFIG_SYS_FLASH_ERASE_TOUT    240000
-#define CONFIG_SYS_FLASH_WRITE_TOUT    240000
-#define CONFIG_SYS_FLASH_LOCK_TOUT     240000
-#define CONFIG_SYS_FLASH_UNLOCK_TOUT   240000
-#define CONFIG_SYS_FLASH_PROTECTION
-
-/*
- * GPIO settings
- */
-#define CONFIG_SYS_GAFR0_L_VAL 0x02000140
-#define CONFIG_SYS_GAFR0_U_VAL 0x59188000
-#define CONFIG_SYS_GAFR1_L_VAL 0x63900002
-#define CONFIG_SYS_GAFR1_U_VAL 0xaaa03950
-#define CONFIG_SYS_GAFR2_L_VAL 0x0aaaaaaa
-#define CONFIG_SYS_GAFR2_U_VAL 0x29000308
-#define CONFIG_SYS_GAFR3_L_VAL 0x54000000
-#define CONFIG_SYS_GAFR3_U_VAL 0x000000d5
-#define CONFIG_SYS_GPCR0_VAL   0x00000000
-#define CONFIG_SYS_GPCR1_VAL   0x00000020
-#define CONFIG_SYS_GPCR2_VAL   0x00000000
-#define CONFIG_SYS_GPCR3_VAL   0x00000000
-#define CONFIG_SYS_GPDR0_VAL   0xdafcee00
-#define CONFIG_SYS_GPDR1_VAL   0xffa3aaab
-#define CONFIG_SYS_GPDR2_VAL   0x8fe9ffff
-#define CONFIG_SYS_GPDR3_VAL   0x001b1f8a
-#define CONFIG_SYS_GPSR0_VAL   0x06080400
-#define CONFIG_SYS_GPSR1_VAL   0x007f0000
-#define CONFIG_SYS_GPSR2_VAL   0x032a0000
-#define CONFIG_SYS_GPSR3_VAL   0x00000180
-
-#define CONFIG_SYS_PSSR_VAL    0x30
-
-/*
- * Clock settings
- */
-#define CONFIG_SYS_CKEN                0x00511220
-#define CONFIG_SYS_CCCR                0x00000190
-
-/*
- * Memory settings
- */
-#define CONFIG_SYS_MSC0_VAL    0x2ffc38f8
-#define CONFIG_SYS_MSC1_VAL    0x0000ccd1
-#define CONFIG_SYS_MSC2_VAL    0x0000b884
-#define CONFIG_SYS_MDCNFG_VAL  0x08000ba9
-#define CONFIG_SYS_MDREFR_VAL  0x2011a01e
-#define CONFIG_SYS_MDMRS_VAL   0x00000000
-#define CONFIG_SYS_FLYCNFG_VAL 0x00010001
-#define CONFIG_SYS_SXCNFG_VAL  0x40044004
-
-/*
- * PCMCIA and CF Interfaces
- */
-#define CONFIG_SYS_MECR_VAL    0x00000001
-#define CONFIG_SYS_MCMEM0_VAL  0x00014307
-#define CONFIG_SYS_MCMEM1_VAL  0x00014307
-#define CONFIG_SYS_MCATT0_VAL  0x0001c787
-#define CONFIG_SYS_MCATT1_VAL  0x0001c787
-#define CONFIG_SYS_MCIO0_VAL   0x0001430f
-#define CONFIG_SYS_MCIO1_VAL   0x0001430f
-
-#endif /* __CONFIG_H */
index 7d31abdf337dfc3c6ae2c8e3eaa7024dd9e61e14..6118dc27b95631e141408c7e93c6fcf294dc719a 100644 (file)
@@ -162,6 +162,21 @@ bool dfu_usb_get_reset(void);
 int dfu_read(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
 int dfu_write(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
 int dfu_flush(struct dfu_entity *de, void *buf, int size, int blk_seq_num);
+
+/**
+ * dfu_write_from_mem_addr - write data from memory to DFU managed medium
+ *
+ * This function adds support for writing data starting from fixed memory
+ * address (like $loadaddr) to dfu managed medium (e.g. NAND, MMC, file system)
+ *
+ * @param dfu - dfu entity to which we want to store data
+ * @param buf - fixed memory addres from where data starts
+ * @param size - number of bytes to write
+ *
+ * @return - 0 on success, other value on failure
+ */
+int dfu_write_from_mem_addr(struct dfu_entity *dfu, void *buf, int size);
+
 /* Device specific */
 #ifdef CONFIG_DFU_MMC
 extern int dfu_fill_entity_mmc(struct dfu_entity *dfu, char *devstr, char *s);
@@ -207,5 +222,31 @@ static inline int dfu_fill_entity_sf(struct dfu_entity *dfu, char *devstr,
 }
 #endif
 
+/**
+ * dfu_tftp_write - Write TFTP data to DFU medium
+ *
+ * This function is storing data received via TFTP on DFU supported medium.
+ *
+ * @param dfu_entity_name - name of DFU entity to write
+ * @param addr - address of data buffer to write
+ * @param len - number of bytes
+ * @param interface - destination DFU medium (e.g. "mmc")
+ * @param devstring - instance number of destination DFU medium (e.g. "1")
+ *
+ * @return 0 on success, otherwise error code
+ */
+#ifdef CONFIG_DFU_TFTP
+int dfu_tftp_write(char *dfu_entity_name, unsigned int addr, unsigned int len,
+                  char *interface, char *devstring);
+#else
+static inline int dfu_tftp_write(char *dfu_entity_name, unsigned int addr,
+                                unsigned int len, char *interface,
+                                char *devstring)
+{
+       puts("TFTP write support for DFU not available!\n");
+       return -ENOSYS;
+}
+#endif
+
 int dfu_add(struct usb_configuration *c);
 #endif /* __DFU_ENTITY_H_ */
index 04884f18057e3a3ca2da81f4e2094433dbf6b4c1..322d35a4789c2f81a1401d066af09f3a47b22983 100644 (file)
@@ -31,7 +31,7 @@ struct udevice;
  * devices which use device tree.
  * @of_offset: Offset of device tree node for this device. This is -1 for
  * devices which don't use device tree.
- * @devp: Returns a pointer to the bound device
+ * @devp: if non-NULL, returns a pointer to the bound device
  * @return 0 if OK, -ve on error
  */
 int device_bind(struct udevice *parent, const struct driver *drv,
@@ -48,7 +48,7 @@ int device_bind(struct udevice *parent, const struct driver *drv,
  * @pre_reloc_only: If true, bind the driver only if its DM_INIT_F flag is set.
  * If false bind the driver always.
  * @info: Name and platdata for this device
- * @devp: Returns a pointer to the bound device
+ * @devp: if non-NULL, returns a pointer to the bound device
  * @return 0 if OK, -ve on error
  */
 int device_bind_by_name(struct udevice *parent, bool pre_reloc_only,
index 61610e69aa551532927f7875227c31f3c980784a..4513d6a311a7e80daebd6bb1bd32a0e2e92701d3 100644 (file)
@@ -68,7 +68,7 @@ int lists_bind_fdt(struct udevice *parent, const void *blob, int offset,
  * @parent:    Parent device
  * @drv_name:  Name of driver to attach to this parent
  * @dev_name:  Name of the new device thus created
- * @devp:      Returns the newly bound device
+ * @devp:      If non-NULL, returns the newly bound device
  */
 int device_bind_driver(struct udevice *parent, const char *drv_name,
                       const char *dev_name, struct udevice **devp);
@@ -83,7 +83,7 @@ int device_bind_driver(struct udevice *parent, const char *drv_name,
  * @drv_name:  Name of driver to attach to this parent
  * @dev_name:  Name of the new device thus created
  * @node:      Device tree node
- * @devp:      Returns the newly bound device
+ * @devp:      If non-NULL, returns the newly bound device
  */
 int device_bind_driver_to_node(struct udevice *parent, const char *drv_name,
                               const char *dev_name, int node,
diff --git a/include/dm/pinctrl.h b/include/dm/pinctrl.h
new file mode 100644 (file)
index 0000000..f6025f6
--- /dev/null
@@ -0,0 +1,287 @@
+/*
+ * Copyright (C) 2015  Masahiro Yamada <yamada.masahiro@socionext.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __PINCTRL_H
+#define __PINCTRL_H
+
+/**
+ * struct pinconf_param - pin config parameters
+ *
+ * @property: property name in DT nodes
+ * @param: ID for this config parameter
+ * @default_value: default value for this config parameter used in case
+ *     no value is specified in DT nodes
+ */
+struct pinconf_param {
+       const char * const property;
+       unsigned int param;
+       u32 default_value;
+};
+
+/**
+ * struct pinctrl_ops - pin control operations, to be implemented by
+ * pin controller drivers.
+ *
+ * The @set_state is the only mandatory operation.  You can implement your
+ * pinctrl driver with its own @set_state.  In this case, the other callbacks
+ * are not required.  Otherwise, generic pinctrl framework is also available;
+ * use pinctrl_generic_set_state for @set_state, and implement other operations
+ * depending on your necessity.
+ *
+ * @get_pins_count: return number of selectable named pins available
+ *     in this driver.  (necessary to parse "pins" property in DTS)
+ * @get_pin_name: return the pin name of the pin selector,
+ *     called by the core to figure out which pin it shall do
+ *     operations to.  (necessary to parse "pins" property in DTS)
+ * @get_groups_count: return number of selectable named groups available
+ *     in this driver.  (necessary to parse "groups" property in DTS)
+ * @get_group_name: return the group name of the group selector,
+ *     called by the core to figure out which pin group it shall do
+ *     operations to.  (necessary to parse "groups" property in DTS)
+ * @get_functions_count: return number of selectable named functions available
+ *     in this driver.  (necessary for pin-muxing)
+ * @get_function_name: return the function name of the muxing selector,
+ *     called by the core to figure out which mux setting it shall map a
+ *     certain device to.  (necessary for pin-muxing)
+ * @pinmux_set: enable a certain muxing function with a certain pin.
+ *     The @func_selector selects a certain function whereas @pin_selector
+ *     selects a certain pin to be used. On simple controllers one of them
+ *     may be ignored.  (necessary for pin-muxing against a single pin)
+ * @pinmux_group_set: enable a certain muxing function with a certain pin
+ *     group.  The @func_selector selects a certain function whereas
+ *     @group_selector selects a certain set of pins to be used. On simple
+ *     controllers one of them may be ignored.
+ *     (necessary for pin-muxing against a pin group)
+ * @pinconf_num_params: number of driver-specific parameters to be parsed
+ *     from device trees  (necessary for pin-configuration)
+ * @pinconf_params: list of driver_specific parameters to be parsed from
+ *     device trees  (necessary for pin-configuration)
+ * @pinconf_set: configure an individual pin with a given parameter.
+ *     (necessary for pin-configuration against a single pin)
+ * @pinconf_group_set: configure all pins in a group with a given parameter.
+ *     (necessary for pin-configuration against a pin group)
+ * @set_state: do pinctrl operations specified by @config, a pseudo device
+ *     pointing a config node. (necessary for pinctrl_full)
+ * @set_state_simple: do needed pinctrl operations for a peripherl @periph.
+ *     (necessary for pinctrl_simple)
+ */
+struct pinctrl_ops {
+       int (*get_pins_count)(struct udevice *dev);
+       const char *(*get_pin_name)(struct udevice *dev, unsigned selector);
+       int (*get_groups_count)(struct udevice *dev);
+       const char *(*get_group_name)(struct udevice *dev, unsigned selector);
+       int (*get_functions_count)(struct udevice *dev);
+       const char *(*get_function_name)(struct udevice *dev,
+                                        unsigned selector);
+       int (*pinmux_set)(struct udevice *dev, unsigned pin_selector,
+                         unsigned func_selector);
+       int (*pinmux_group_set)(struct udevice *dev, unsigned group_selector,
+                               unsigned func_selector);
+       unsigned int pinconf_num_params;
+       const struct pinconf_param *pinconf_params;
+       int (*pinconf_set)(struct udevice *dev, unsigned pin_selector,
+                          unsigned param, unsigned argument);
+       int (*pinconf_group_set)(struct udevice *dev, unsigned group_selector,
+                                unsigned param, unsigned argument);
+       int (*set_state)(struct udevice *dev, struct udevice *config);
+
+       /* for pinctrl-simple */
+       int (*set_state_simple)(struct udevice *dev, struct udevice *periph);
+       /**
+        * request() - Request a particular pinctrl function
+        *
+        * This activates the selected function.
+        *
+        * @dev:        Device to adjust (UCLASS_PINCTRL)
+        * @func:       Function number (driver-specific)
+        * @return 0 if OK, -ve on error
+        */
+       int (*request)(struct udevice *dev, int func, int flags);
+
+       /**
+       * get_periph_id() - get the peripheral ID for a device
+       *
+       * This generally looks at the peripheral's device tree node to work
+       * out the peripheral ID. The return value is normally interpreted as
+       * enum periph_id. so long as this is defined by the platform (which it
+       * should be).
+       *
+       * @dev:         Pinctrl device to use for decoding
+       * @periph:      Device to check
+       * @return peripheral ID of @periph, or -ENOENT on error
+       */
+       int (*get_periph_id)(struct udevice *dev, struct udevice *periph);
+};
+
+#define pinctrl_get_ops(dev)   ((struct pinctrl_ops *)(dev)->driver->ops)
+
+/**
+ * Generic pin configuration paramters
+ *
+ * @PIN_CONFIG_BIAS_DISABLE: disable any pin bias on the pin, a
+ *     transition from say pull-up to pull-down implies that you disable
+ *     pull-up in the process, this setting disables all biasing.
+ * @PIN_CONFIG_BIAS_HIGH_IMPEDANCE: the pin will be set to a high impedance
+ *     mode, also know as "third-state" (tristate) or "high-Z" or "floating".
+ *     On output pins this effectively disconnects the pin, which is useful
+ *     if for example some other pin is going to drive the signal connected
+ *     to it for a while. Pins used for input are usually always high
+ *     impedance.
+ * @PIN_CONFIG_BIAS_BUS_HOLD: the pin will be set to weakly latch so that it
+ *     weakly drives the last value on a tristate bus, also known as a "bus
+ *     holder", "bus keeper" or "repeater". This allows another device on the
+ *     bus to change the value by driving the bus high or low and switching to
+ *     tristate. The argument is ignored.
+ * @PIN_CONFIG_BIAS_PULL_UP: the pin will be pulled up (usually with high
+ *     impedance to VDD). If the argument is != 0 pull-up is enabled,
+ *     if it is 0, pull-up is total, i.e. the pin is connected to VDD.
+ * @PIN_CONFIG_BIAS_PULL_DOWN: the pin will be pulled down (usually with high
+ *     impedance to GROUND). If the argument is != 0 pull-down is enabled,
+ *     if it is 0, pull-down is total, i.e. the pin is connected to GROUND.
+ * @PIN_CONFIG_BIAS_PULL_PIN_DEFAULT: the pin will be pulled up or down based
+ *     on embedded knowledge of the controller hardware, like current mux
+ *     function. The pull direction and possibly strength too will normally
+ *     be decided completely inside the hardware block and not be readable
+ *     from the kernel side.
+ *     If the argument is != 0 pull up/down is enabled, if it is 0, the
+ *     configuration is ignored. The proper way to disable it is to use
+ *     @PIN_CONFIG_BIAS_DISABLE.
+ * @PIN_CONFIG_DRIVE_PUSH_PULL: the pin will be driven actively high and
+ *     low, this is the most typical case and is typically achieved with two
+ *     active transistors on the output. Setting this config will enable
+ *     push-pull mode, the argument is ignored.
+ * @PIN_CONFIG_DRIVE_OPEN_DRAIN: the pin will be driven with open drain (open
+ *     collector) which means it is usually wired with other output ports
+ *     which are then pulled up with an external resistor. Setting this
+ *     config will enable open drain mode, the argument is ignored.
+ * @PIN_CONFIG_DRIVE_OPEN_SOURCE: the pin will be driven with open source
+ *     (open emitter). Setting this config will enable open source mode, the
+ *     argument is ignored.
+ * @PIN_CONFIG_DRIVE_STRENGTH: the pin will sink or source at most the current
+ *     passed as argument. The argument is in mA.
+ * @PIN_CONFIG_INPUT_ENABLE: enable the pin's input.  Note that this does not
+ *     affect the pin's ability to drive output.  1 enables input, 0 disables
+ *     input.
+ * @PIN_CONFIG_INPUT_SCHMITT_ENABLE: control schmitt-trigger mode on the pin.
+ *      If the argument != 0, schmitt-trigger mode is enabled. If it's 0,
+ *      schmitt-trigger mode is disabled.
+ * @PIN_CONFIG_INPUT_SCHMITT: this will configure an input pin to run in
+ *     schmitt-trigger mode. If the schmitt-trigger has adjustable hysteresis,
+ *     the threshold value is given on a custom format as argument when
+ *     setting pins to this mode.
+ * @PIN_CONFIG_INPUT_DEBOUNCE: this will configure the pin to debounce mode,
+ *     which means it will wait for signals to settle when reading inputs. The
+ *     argument gives the debounce time in usecs. Setting the
+ *     argument to zero turns debouncing off.
+ * @PIN_CONFIG_POWER_SOURCE: if the pin can select between different power
+ *     supplies, the argument to this parameter (on a custom format) tells
+ *     the driver which alternative power source to use.
+ * @PIN_CONFIG_SLEW_RATE: if the pin can select slew rate, the argument to
+ *     this parameter (on a custom format) tells the driver which alternative
+ *     slew rate to use.
+ * @PIN_CONFIG_LOW_POWER_MODE: this will configure the pin for low power
+ *     operation, if several modes of operation are supported these can be
+ *     passed in the argument on a custom form, else just use argument 1
+ *     to indicate low power mode, argument 0 turns low power mode off.
+ * @PIN_CONFIG_OUTPUT: this will configure the pin as an output. Use argument
+ *     1 to indicate high level, argument 0 to indicate low level. (Please
+ *     see Documentation/pinctrl.txt, section "GPIO mode pitfalls" for a
+ *     discussion around this parameter.)
+ * @PIN_CONFIG_END: this is the last enumerator for pin configurations, if
+ *     you need to pass in custom configurations to the pin controller, use
+ *     PIN_CONFIG_END+1 as the base offset.
+ */
+#define PIN_CONFIG_BIAS_DISABLE                        0
+#define PIN_CONFIG_BIAS_HIGH_IMPEDANCE         1
+#define PIN_CONFIG_BIAS_BUS_HOLD               2
+#define PIN_CONFIG_BIAS_PULL_UP                        3
+#define PIN_CONFIG_BIAS_PULL_DOWN              4
+#define PIN_CONFIG_BIAS_PULL_PIN_DEFAULT       5
+#define PIN_CONFIG_DRIVE_PUSH_PULL             6
+#define PIN_CONFIG_DRIVE_OPEN_DRAIN            7
+#define PIN_CONFIG_DRIVE_OPEN_SOURCE           8
+#define PIN_CONFIG_DRIVE_STRENGTH              9
+#define PIN_CONFIG_INPUT_ENABLE                        10
+#define PIN_CONFIG_INPUT_SCHMITT_ENABLE                11
+#define PIN_CONFIG_INPUT_SCHMITT               12
+#define PIN_CONFIG_INPUT_DEBOUNCE              13
+#define PIN_CONFIG_POWER_SOURCE                        14
+#define PIN_CONFIG_SLEW_RATE                   15
+#define PIN_CONFIG_LOW_POWER_MODE              16
+#define PIN_CONFIG_OUTPUT                      17
+#define PIN_CONFIG_END                         0x7FFF
+
+#if CONFIG_IS_ENABLED(PINCTRL_GENERIC)
+/**
+ * pinctrl_generic_set_state() - generic set_state operation
+ * Parse the DT node of @config and its children and handle generic properties
+ * such as "pins", "groups", "functions", and pin configuration parameters.
+ *
+ * @pctldev: pinctrl device
+ * @config: config device (pseudo device), pointing a config node in DTS
+ * @return: 0 on success, or negative error code on failure
+ */
+int pinctrl_generic_set_state(struct udevice *pctldev, struct udevice *config);
+#else
+static inline int pinctrl_generic_set_state(struct udevice *pctldev,
+                                           struct udevice *config)
+{
+       return -EINVAL;
+}
+#endif
+
+#if CONFIG_IS_ENABLED(PINCTRL)
+/**
+ * pinctrl_select_state() - set a device to a given state
+ *
+ * @dev: peripheral device
+ * @statename: state name, like "default"
+ * @return: 0 on success, or negative error code on failure
+ */
+int pinctrl_select_state(struct udevice *dev, const char *statename);
+#else
+static inline int pinctrl_select_state(struct udevice *dev,
+                                      const char *statename)
+{
+       return -EINVAL;
+}
+#endif
+
+/**
+ * pinctrl_request() - Request a particular pinctrl function
+ *
+ * @dev:       Device to check (UCLASS_PINCTRL)
+ * @func:      Function number (driver-specific)
+ * @flags:     Flags (driver-specific)
+ * @return 0 if OK, -ve on error
+ */
+int pinctrl_request(struct udevice *dev, int func, int flags);
+
+/**
+ * pinctrl_request_noflags() - Request a particular pinctrl function
+ *
+ * This is similar to pinctrl_request() but uses 0 for @flags.
+ *
+ * @dev:       Device to check (UCLASS_PINCTRL)
+ * @func:      Function number (driver-specific)
+ * @return 0 if OK, -ve on error
+ */
+int pinctrl_request_noflags(struct udevice *dev, int func);
+
+/**
+ * pinctrl_get_periph_id() - get the peripheral ID for a device
+ *
+ * This generally looks at the peripheral's device tree node to work out the
+ * peripheral ID. The return value is normally interpreted as enum periph_id.
+ * so long as this is defined by the platform (which it should be).
+ *
+ * @dev:       Pinctrl device to use for decoding
+ * @periph:    Device to check
+ * @return peripheral ID of @periph, or -ENOENT on error
+ */
+int pinctrl_get_periph_id(struct udevice *dev, struct udevice *periph);
+
+#endif /* __PINCTRL_H */
index c744044bb8aa5f80718a4926c9dc7952996e4b43..1eeec74964356fe9a4bbce9195d8fcc4693bf649 100644 (file)
@@ -44,6 +44,8 @@ enum uclass_id {
        UCLASS_PCH,             /* x86 platform controller hub */
        UCLASS_PCI,             /* PCI bus */
        UCLASS_PCI_GENERIC,     /* Generic PCI bus device */
+       UCLASS_PINCTRL,         /* Pinctrl (pin muxing/configuration) device */
+       UCLASS_PINCONFIG,       /* Pin configuration node device */
        UCLASS_PMIC,            /* PMIC I/O device */
        UCLASS_REGULATOR,       /* Regulator device */
        UCLASS_RESET,           /* Reset device */
@@ -54,6 +56,7 @@ enum uclass_id {
        UCLASS_SPI_GENERIC,     /* Generic SPI flash target */
        UCLASS_SYSCON,          /* System configuration device */
        UCLASS_THERMAL,         /* Thermal sensor */
+       UCLASS_TPM,             /* Trusted Platform Module TIS interface */
        UCLASS_USB,             /* USB bus */
        UCLASS_USB_DEV_GENERIC, /* USB generic device */
        UCLASS_USB_HUB,         /* USB hub */
index d56877c89825e432b64cff0d17a5dab830ec2303..d214b887341b9b8711fc1e71ec4c2568c3367c71 100644 (file)
@@ -240,12 +240,7 @@ int uclass_resolve_seq(struct udevice *dev);
  * are no more devices.
  * @uc: uclass to scan
  */
-#define uclass_foreach_dev(pos, uc)                                    \
-       for (pos = list_entry((&(uc)->dev_head)->next, typeof(*pos),    \
-                       uclass_node);                                   \
-            prefetch(pos->uclass_node.next),                           \
-                       &pos->uclass_node != (&(uc)->dev_head);         \
-            pos = list_entry(pos->uclass_node.next, typeof(*pos),      \
-                       uclass_node))
+#define uclass_foreach_dev(pos, uc)    \
+       list_for_each_entry(pos, &uc->dev_head, uclass_node)
 
 #endif
diff --git a/include/dt-bindings/clock/rk3288-cru.h b/include/dt-bindings/clock/rk3288-cru.h
new file mode 100644 (file)
index 0000000..216eee5
--- /dev/null
@@ -0,0 +1,370 @@
+/*
+ * Copyright (c) 2014 MundoReader S.L.
+ * Author: Heiko Stuebner <heiko@sntech.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/* core clocks */
+#define PLL_APLL               1
+#define PLL_DPLL               2
+#define PLL_CPLL               3
+#define PLL_GPLL               4
+#define PLL_NPLL               5
+#define ARMCLK                 6
+
+/* sclk gates (special clocks) */
+#define SCLK_GPU               64
+#define SCLK_SPI0              65
+#define SCLK_SPI1              66
+#define SCLK_SPI2              67
+#define SCLK_SDMMC             68
+#define SCLK_SDIO0             69
+#define SCLK_SDIO1             70
+#define SCLK_EMMC              71
+#define SCLK_TSADC             72
+#define SCLK_SARADC            73
+#define SCLK_PS2C              74
+#define SCLK_NANDC0            75
+#define SCLK_NANDC1            76
+#define SCLK_UART0             77
+#define SCLK_UART1             78
+#define SCLK_UART2             79
+#define SCLK_UART3             80
+#define SCLK_UART4             81
+#define SCLK_I2S0              82
+#define SCLK_SPDIF             83
+#define SCLK_SPDIF8CH          84
+#define SCLK_TIMER0            85
+#define SCLK_TIMER1            86
+#define SCLK_TIMER2            87
+#define SCLK_TIMER3            88
+#define SCLK_TIMER4            89
+#define SCLK_TIMER5            90
+#define SCLK_TIMER6            91
+#define SCLK_HSADC             92
+#define SCLK_OTGPHY0           93
+#define SCLK_OTGPHY1           94
+#define SCLK_OTGPHY2           95
+#define SCLK_OTG_ADP           96
+#define SCLK_HSICPHY480M       97
+#define SCLK_HSICPHY12M                98
+#define SCLK_MACREF            99
+#define SCLK_LCDC_PWM0         100
+#define SCLK_LCDC_PWM1         101
+#define SCLK_MAC_RX            102
+#define SCLK_MAC_TX            103
+#define SCLK_EDP_24M           104
+#define SCLK_EDP               105
+#define SCLK_RGA               106
+#define SCLK_ISP               107
+#define SCLK_ISP_JPE           108
+#define SCLK_HDMI_HDCP         109
+#define SCLK_HDMI_CEC          110
+#define SCLK_HEVC_CABAC                111
+#define SCLK_HEVC_CORE         112
+#define SCLK_I2S0_OUT          113
+#define SCLK_SDMMC_DRV         114
+#define SCLK_SDIO0_DRV         115
+#define SCLK_SDIO1_DRV         116
+#define SCLK_EMMC_DRV          117
+#define SCLK_SDMMC_SAMPLE      118
+#define SCLK_SDIO0_SAMPLE      119
+#define SCLK_SDIO1_SAMPLE      120
+#define SCLK_EMMC_SAMPLE       121
+#define SCLK_USBPHY480M_SRC    122
+#define SCLK_PVTM_CORE         123
+#define SCLK_PVTM_GPU          124
+
+#define SCLK_MAC               151
+#define SCLK_MACREF_OUT                152
+
+#define DCLK_VOP0              190
+#define DCLK_VOP1              191
+
+/* aclk gates */
+#define ACLK_GPU               192
+#define ACLK_DMAC1             193
+#define ACLK_DMAC2             194
+#define ACLK_MMU               195
+#define ACLK_GMAC              196
+#define ACLK_VOP0              197
+#define ACLK_VOP1              198
+#define ACLK_CRYPTO            199
+#define ACLK_RGA               200
+#define ACLK_RGA_NIU           201
+#define ACLK_IEP               202
+#define ACLK_VIO0_NIU          203
+#define ACLK_VIP               204
+#define ACLK_ISP               205
+#define ACLK_VIO1_NIU          206
+#define ACLK_HEVC              207
+#define ACLK_VCODEC            208
+#define ACLK_CPU               209
+#define ACLK_PERI              210
+
+/* pclk gates */
+#define PCLK_GPIO0             320
+#define PCLK_GPIO1             321
+#define PCLK_GPIO2             322
+#define PCLK_GPIO3             323
+#define PCLK_GPIO4             324
+#define PCLK_GPIO5             325
+#define PCLK_GPIO6             326
+#define PCLK_GPIO7             327
+#define PCLK_GPIO8             328
+#define PCLK_GRF               329
+#define PCLK_SGRF              330
+#define PCLK_PMU               331
+#define PCLK_I2C0              332
+#define PCLK_I2C1              333
+#define PCLK_I2C2              334
+#define PCLK_I2C3              335
+#define PCLK_I2C4              336
+#define PCLK_I2C5              337
+#define PCLK_SPI0              338
+#define PCLK_SPI1              339
+#define PCLK_SPI2              340
+#define PCLK_UART0             341
+#define PCLK_UART1             342
+#define PCLK_UART2             343
+#define PCLK_UART3             344
+#define PCLK_UART4             345
+#define PCLK_TSADC             346
+#define PCLK_SARADC            347
+#define PCLK_SIM               348
+#define PCLK_GMAC              349
+#define PCLK_PWM               350
+#define PCLK_RKPWM             351
+#define PCLK_PS2C              352
+#define PCLK_TIMER             353
+#define PCLK_TZPC              354
+#define PCLK_EDP_CTRL          355
+#define PCLK_MIPI_DSI0         356
+#define PCLK_MIPI_DSI1         357
+#define PCLK_MIPI_CSI          358
+#define PCLK_LVDS_PHY          359
+#define PCLK_HDMI_CTRL         360
+#define PCLK_VIO2_H2P          361
+#define PCLK_CPU               362
+#define PCLK_PERI              363
+#define PCLK_DDRUPCTL0         364
+#define PCLK_PUBL0             365
+#define PCLK_DDRUPCTL1         366
+#define PCLK_PUBL1             367
+#define PCLK_WDT               368
+
+/* hclk gates */
+#define HCLK_GPS               448
+#define HCLK_OTG0              449
+#define HCLK_USBHOST0          450
+#define HCLK_USBHOST1          451
+#define HCLK_HSIC              452
+#define HCLK_NANDC0            453
+#define HCLK_NANDC1            454
+#define HCLK_TSP               455
+#define HCLK_SDMMC             456
+#define HCLK_SDIO0             457
+#define HCLK_SDIO1             458
+#define HCLK_EMMC              459
+#define HCLK_HSADC             460
+#define HCLK_CRYPTO            461
+#define HCLK_I2S0              462
+#define HCLK_SPDIF             463
+#define HCLK_SPDIF8CH          464
+#define HCLK_VOP0              465
+#define HCLK_VOP1              466
+#define HCLK_ROM               467
+#define HCLK_IEP               468
+#define HCLK_ISP               469
+#define HCLK_RGA               470
+#define HCLK_VIO_AHB_ARBI      471
+#define HCLK_VIO_NIU           472
+#define HCLK_VIP               473
+#define HCLK_VIO2_H2P          474
+#define HCLK_HEVC              475
+#define HCLK_VCODEC            476
+#define HCLK_CPU               477
+#define HCLK_PERI              478
+
+#define CLK_NR_CLKS            (HCLK_PERI + 1)
+
+/* soft-reset indices */
+#define SRST_CORE0             0
+#define SRST_CORE1             1
+#define SRST_CORE2             2
+#define SRST_CORE3             3
+#define SRST_CORE0_PO          4
+#define SRST_CORE1_PO          5
+#define SRST_CORE2_PO          6
+#define SRST_CORE3_PO          7
+#define SRST_PDCORE_STRSYS     8
+#define SRST_PDBUS_STRSYS      9
+#define SRST_L2C               10
+#define SRST_TOPDBG            11
+#define SRST_CORE0_DBG         12
+#define SRST_CORE1_DBG         13
+#define SRST_CORE2_DBG         14
+#define SRST_CORE3_DBG         15
+
+#define SRST_PDBUG_AHB_ARBITOR 16
+#define SRST_EFUSE256          17
+#define SRST_DMAC1             18
+#define SRST_INTMEM            19
+#define SRST_ROM               20
+#define SRST_SPDIF8CH          21
+#define SRST_TIMER             22
+#define SRST_I2S0              23
+#define SRST_SPDIF             24
+#define SRST_TIMER0            25
+#define SRST_TIMER1            26
+#define SRST_TIMER2            27
+#define SRST_TIMER3            28
+#define SRST_TIMER4            29
+#define SRST_TIMER5            30
+#define SRST_EFUSE             31
+
+#define SRST_GPIO0             32
+#define SRST_GPIO1             33
+#define SRST_GPIO2             34
+#define SRST_GPIO3             35
+#define SRST_GPIO4             36
+#define SRST_GPIO5             37
+#define SRST_GPIO6             38
+#define SRST_GPIO7             39
+#define SRST_GPIO8             40
+#define SRST_I2C0              42
+#define SRST_I2C1              43
+#define SRST_I2C2              44
+#define SRST_I2C3              45
+#define SRST_I2C4              46
+#define SRST_I2C5              47
+
+#define SRST_DWPWM             48
+#define SRST_MMC_PERI          49
+#define SRST_PERIPH_MMU                50
+#define SRST_DAP               51
+#define SRST_DAP_SYS           52
+#define SRST_TPIU              53
+#define SRST_PMU_APB           54
+#define SRST_GRF               55
+#define SRST_PMU               56
+#define SRST_PERIPH_AXI                57
+#define SRST_PERIPH_AHB                58
+#define SRST_PERIPH_APB                59
+#define SRST_PERIPH_NIU                60
+#define SRST_PDPERI_AHB_ARBI   61
+#define SRST_EMEM              62
+#define SRST_USB_PERI          63
+
+#define SRST_DMAC2             64
+#define SRST_MAC               66
+#define SRST_GPS               67
+#define SRST_RKPWM             69
+#define SRST_CCP               71
+#define SRST_USBHOST0          72
+#define SRST_HSIC              73
+#define SRST_HSIC_AUX          74
+#define SRST_HSIC_PHY          75
+#define SRST_HSADC             76
+#define SRST_NANDC0            77
+#define SRST_NANDC1            78
+
+#define SRST_TZPC              80
+#define SRST_SPI0              83
+#define SRST_SPI1              84
+#define SRST_SPI2              85
+#define SRST_SARADC            87
+#define SRST_PDALIVE_NIU       88
+#define SRST_PDPMU_INTMEM      89
+#define SRST_PDPMU_NIU         90
+#define SRST_SGRF              91
+
+#define SRST_VIO_ARBI          96
+#define SRST_RGA_NIU           97
+#define SRST_VIO0_NIU_AXI      98
+#define SRST_VIO_NIU_AHB       99
+#define SRST_LCDC0_AXI         100
+#define SRST_LCDC0_AHB         101
+#define SRST_LCDC0_DCLK                102
+#define SRST_VIO1_NIU_AXI      103
+#define SRST_VIP               104
+#define SRST_RGA_CORE          105
+#define SRST_IEP_AXI           106
+#define SRST_IEP_AHB           107
+#define SRST_RGA_AXI           108
+#define SRST_RGA_AHB           109
+#define SRST_ISP               110
+#define SRST_EDP               111
+
+#define SRST_VCODEC_AXI                112
+#define SRST_VCODEC_AHB                113
+#define SRST_VIO_H2P           114
+#define SRST_MIPIDSI0          115
+#define SRST_MIPIDSI1          116
+#define SRST_MIPICSI           117
+#define SRST_LVDS_PHY          118
+#define SRST_LVDS_CON          119
+#define SRST_GPU               120
+#define SRST_HDMI              121
+#define SRST_CORE_PVTM         124
+#define SRST_GPU_PVTM          125
+
+#define SRST_MMC0              128
+#define SRST_SDIO0             129
+#define SRST_SDIO1             130
+#define SRST_EMMC              131
+#define SRST_USBOTG_AHB                132
+#define SRST_USBOTG_PHY                133
+#define SRST_USBOTG_CON                134
+#define SRST_USBHOST0_AHB      135
+#define SRST_USBHOST0_PHY      136
+#define SRST_USBHOST0_CON      137
+#define SRST_USBHOST1_AHB      138
+#define SRST_USBHOST1_PHY      139
+#define SRST_USBHOST1_CON      140
+#define SRST_USB_ADP           141
+#define SRST_ACC_EFUSE         142
+
+#define SRST_CORESIGHT         144
+#define SRST_PD_CORE_AHB_NOC   145
+#define SRST_PD_CORE_APB_NOC   146
+#define SRST_PD_CORE_MP_AXI    147
+#define SRST_GIC               148
+#define SRST_LCDC_PWM0         149
+#define SRST_LCDC_PWM1         150
+#define SRST_VIO0_H2P_BRG      151
+#define SRST_VIO1_H2P_BRG      152
+#define SRST_RGA_H2P_BRG       153
+#define SRST_HEVC              154
+#define SRST_TSADC             159
+
+#define SRST_DDRPHY0           160
+#define SRST_DDRPHY0_APB       161
+#define SRST_DDRCTRL0          162
+#define SRST_DDRCTRL0_APB      163
+#define SRST_DDRPHY0_CTRL      164
+#define SRST_DDRPHY1           165
+#define SRST_DDRPHY1_APB       166
+#define SRST_DDRCTRL1          167
+#define SRST_DDRCTRL1_APB      168
+#define SRST_DDRPHY1_CTRL      169
+#define SRST_DDRMSCH0          170
+#define SRST_DDRMSCH1          171
+#define SRST_CRYPTO            174
+#define SRST_C2C_HOST          175
+
+#define SRST_LCDC1_AXI         176
+#define SRST_LCDC1_AHB         177
+#define SRST_LCDC1_DCLK                178
+#define SRST_UART0             179
+#define SRST_UART1             180
+#define SRST_UART2             181
+#define SRST_UART3             182
+#define SRST_UART4             183
+#define SRST_SIMC              186
+#define SRST_PS2C              187
+#define SRST_TSP               188
+#define SRST_TSP_CLKIN0                189
+#define SRST_TSP_CLKIN1                190
+#define SRST_TSP_27M           191
diff --git a/include/dt-bindings/clock/rockchip,rk808.h b/include/dt-bindings/clock/rockchip,rk808.h
new file mode 100644 (file)
index 0000000..1a87343
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * This header provides constants clk index RK808 pmic clkout
+ */
+#ifndef _CLK_ROCKCHIP_RK808
+#define _CLK_ROCKCHIP_RK808
+
+/* CLOCKOUT index */
+#define RK808_CLKOUT0          0
+#define RK808_CLKOUT1          1
+
+#endif
diff --git a/include/dt-bindings/pinctrl/rockchip.h b/include/dt-bindings/pinctrl/rockchip.h
new file mode 100644 (file)
index 0000000..56887e1
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Header providing constants for Rockchip pinctrl bindings.
+ *
+ * Copyright (c) 2013 MundoReader S.L.
+ * Author: Heiko Stuebner <heiko@sntech.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __DT_BINDINGS_ROCKCHIP_PINCTRL_H__
+#define __DT_BINDINGS_ROCKCHIP_PINCTRL_H__
+
+#define RK_GPIO0       0
+#define RK_GPIO1       1
+#define RK_GPIO2       2
+#define RK_GPIO3       3
+#define RK_GPIO4       4
+#define RK_GPIO6       6
+
+#define RK_FUNC_GPIO   0
+#define RK_FUNC_1      1
+#define RK_FUNC_2      2
+#define RK_FUNC_3      3
+#define RK_FUNC_4      4
+
+#endif
diff --git a/include/dt-bindings/power-domain/rk3288.h b/include/dt-bindings/power-domain/rk3288.h
new file mode 100644 (file)
index 0000000..ca68c11
--- /dev/null
@@ -0,0 +1,11 @@
+#ifndef __DT_BINDINGS_POWER_DOMAIN_RK3288_H__
+#define __DT_BINDINGS_POWER_DOMAIN_RK3288_H__
+
+/* RK3288 power domain index */
+#define RK3288_PD_GPU          0
+#define RK3288_PD_VIO          1
+#define RK3288_PD_VIDEO        2
+#define RK3288_PD_HEVC         3
+#define RK3288_PD_PERI         4
+
+#endif
index 7a7555a73ab2c7a5291b5b2f5ee5e263998d4eae..25cf42c606c993331ee82cfc314df27524b108d3 100644 (file)
@@ -163,7 +163,21 @@ struct dwmci_host {
 
        void (*clksel)(struct dwmci_host *host);
        void (*board_init)(struct dwmci_host *host);
-       unsigned int (*get_mmc_clk)(struct dwmci_host *host);
+
+       /**
+        * Get / set a particular MMC clock frequency
+        *
+        * This is used to request the current clock frequency of the clock
+        * that drives the DWMMC peripheral. The caller will then use this
+        * information to work out the divider it needs to achieve the
+        * required MMC bus clock frequency. If you want to handle the
+        * clock external to DWMMC, use @freq to select the frequency and
+        * return that value too. Then DWMMC will put itself in bypass mode.
+        *
+        * @host:       DWMMC host
+        * @freq:       Frequency the host is trying to achieve
+        */
+       unsigned int (*get_mmc_clk)(struct dwmci_host *host, uint freq);
 
        struct mmc_config cfg;
 };
index 0cb6fa0075028ecc08f44c7e0d9a463a9c7ae0ce..a422ecedb84461c7236dc71b3540597074fdad64 100644 (file)
@@ -154,8 +154,6 @@ enum fdt_compat_id {
        COMPAT_MAXIM_MAX77686_PMIC,     /* MAX77686 PMIC */
        COMPAT_GENERIC_SPI_FLASH,       /* Generic SPI Flash chip */
        COMPAT_MAXIM_98095_CODEC,       /* MAX98095 Codec */
-       COMPAT_INFINEON_SLB9635_TPM,    /* Infineon SLB9635 TPM */
-       COMPAT_INFINEON_SLB9645_TPM,    /* Infineon SLB9645 TPM */
        COMPAT_SAMSUNG_EXYNOS5_I2C,     /* Exynos5 High Speed I2C Controller */
        COMPAT_SANDBOX_LCD_SDL,         /* Sandbox LCD emulation with SDL */
        COMPAT_SAMSUNG_EXYNOS_SYSMMU,   /* Exynos sysmmu */
@@ -172,6 +170,7 @@ enum fdt_compat_id {
        COMPAT_INTEL_PCH,               /* Intel PCH */
        COMPAT_INTEL_IRQ_ROUTER,        /* Intel Interrupt Router */
        COMPAT_ALTERA_SOCFPGA_DWMAC,    /* SoCFPGA Ethernet controller */
+       COMPAT_ALTERA_SOCFPGA_DWMMC,    /* SoCFPGA DWMMC controller */
        COMPAT_INTEL_BAYTRAIL_FSP,      /* Intel Bay Trail FSP */
        COMPAT_INTEL_BAYTRAIL_FSP_MDP,  /* Intel FSP memory-down params */
 
index 9106f25f683573736f2e38e42f003c0f44122836..9517a4a7b5d753ba2beb49b8f14a00f04794244f 100644 (file)
@@ -12,7 +12,6 @@
 #define MC_CCSR_BASE_ADDR \
        ((struct mc_ccsr_registers __iomem *)0x8340000)
 
-#define BIT(x)                 (1 << (x))
 #define GCR1_P1_STOP           BIT(31)
 #define GCR1_P2_STOP           BIT(30)
 #define GCR1_P1_DE_RST         BIT(23)
diff --git a/include/fsl_devdis.h b/include/fsl_devdis.h
new file mode 100644 (file)
index 0000000..02415fe
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright 2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __FSL_DEVDIS_H_
+#define __FSL_DEVDIS_H_
+
+struct devdis_table {
+       char name[32];
+       u32 offset;
+       u32 mask;
+};
+
+void device_disable(const struct devdis_table *tbl, uint32_t num);
+
+#endif
index 63c3d37f20fa4dac33c43975693801a505b94a3e..8a864aeb227c9b24cef38a4353d469b12ef782dd 100644 (file)
@@ -245,8 +245,11 @@ struct lmb;
 #define IH_TYPE_X86_SETUP      20      /* x86 setup.bin Image          */
 #define IH_TYPE_LPC32XXIMAGE   21      /* x86 setup.bin Image          */
 #define IH_TYPE_LOADABLE       22      /* A list of typeless images    */
+#define IH_TYPE_RKIMAGE                23      /* Rockchip Boot Image          */
+#define IH_TYPE_RKSD           24      /* Rockchip SD card             */
+#define IH_TYPE_RKSPI          25      /* Rockchip SPI image           */
 
-#define IH_TYPE_COUNT          23      /* Number of image types */
+#define IH_TYPE_COUNT          26      /* Number of image types */
 
 /*
  * Compression Types
index e724310298610bb7c1230ecff1c8d158df28c6d4..7d30ace41fcb29fe14f83c8db7332b5f6262697a 100644 (file)
@@ -3,6 +3,8 @@
 
 #include <asm/types.h>
 
+#define BIT(nr)                (1UL << (nr))
+
 /*
  * ffs: find first bit set. This is defined the same way as
  * the libc and compiler builtin ffs routines, therefore
diff --git a/include/linux/usb/at91_udc.h b/include/linux/usb/at91_udc.h
new file mode 100644 (file)
index 0000000..cd0d00f
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Platform data definitions for Atmel USBA gadget driver
+ * pieces copied from linux:include/linux/platform_data/atmel.h
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+#ifndef __LINUX_USB_AT91_UDC_H__
+#define __LINUX_USB_AT91_UDC_H__
+
+struct at91_udc_data {
+       int     vbus_pin;               /* high == host powering us */
+       u8      vbus_active_low;        /* vbus polarity */
+       u8      vbus_polled;            /* Use polling, not interrupt */
+       int     pullup_pin;             /* active == D+ pulled up */
+       u8      pullup_active_low;      /* true == pullup_pin is active low */
+       unsigned long   baseaddr;
+};
+
+int at91_udc_probe(struct at91_udc_data *pdata);
+#endif /* __LINUX_USB_AT91_UDC_H__ */
diff --git a/include/memalign.h b/include/memalign.h
new file mode 100644 (file)
index 0000000..a960039
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * Copyright (c) 2015 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ALIGNMEM_H
+#define __ALIGNMEM_H
+
+/*
+ * ARCH_DMA_MINALIGN is defined in asm/cache.h for each architecture.  It
+ * is used to align DMA buffers.
+ */
+#ifndef __ASSEMBLY__
+#include <asm/cache.h>
+#include <malloc.h>
+
+/*
+ * The ALLOC_CACHE_ALIGN_BUFFER macro is used to allocate a buffer on the
+ * stack that meets the minimum architecture alignment requirements for DMA.
+ * Such a buffer is useful for DMA operations where flushing and invalidating
+ * the cache before and after a read and/or write operation is required for
+ * correct operations.
+ *
+ * When called the macro creates an array on the stack that is sized such
+ * that:
+ *
+ * 1) The beginning of the array can be advanced enough to be aligned.
+ *
+ * 2) The size of the aligned portion of the array is a multiple of the minimum
+ *    architecture alignment required for DMA.
+ *
+ * 3) The aligned portion contains enough space for the original number of
+ *    elements requested.
+ *
+ * The macro then creates a pointer to the aligned portion of this array and
+ * assigns to the pointer the address of the first element in the aligned
+ * portion of the array.
+ *
+ * Calling the macro as:
+ *
+ *     ALLOC_CACHE_ALIGN_BUFFER(uint32_t, buffer, 1024);
+ *
+ * Will result in something similar to saying:
+ *
+ *     uint32_t    buffer[1024];
+ *
+ * The following differences exist:
+ *
+ * 1) The resulting buffer is guaranteed to be aligned to the value of
+ *    ARCH_DMA_MINALIGN.
+ *
+ * 2) The buffer variable created by the macro is a pointer to the specified
+ *    type, and NOT an array of the specified type.  This can be very important
+ *    if you want the address of the buffer, which you probably do, to pass it
+ *    to the DMA hardware.  The value of &buffer is different in the two cases.
+ *    In the macro case it will be the address of the pointer, not the address
+ *    of the space reserved for the buffer.  However, in the second case it
+ *    would be the address of the buffer.  So if you are replacing hard coded
+ *    stack buffers with this macro you need to make sure you remove the & from
+ *    the locations where you are taking the address of the buffer.
+ *
+ * Note that the size parameter is the number of array elements to allocate,
+ * not the number of bytes.
+ *
+ * This macro can not be used outside of function scope, or for the creation
+ * of a function scoped static buffer.  It can not be used to create a cache
+ * line aligned global buffer.
+ */
+#define PAD_COUNT(s, pad) (((s) - 1) / (pad) + 1)
+#define PAD_SIZE(s, pad) (PAD_COUNT(s, pad) * pad)
+#define ALLOC_ALIGN_BUFFER_PAD(type, name, size, align, pad)           \
+       char __##name[ROUND(PAD_SIZE((size) * sizeof(type), pad), align)  \
+                     + (align - 1)];                                   \
+                                                                       \
+       type *name = (type *)ALIGN((uintptr_t)__##name, align)
+#define ALLOC_ALIGN_BUFFER(type, name, size, align)            \
+       ALLOC_ALIGN_BUFFER_PAD(type, name, size, align, 1)
+#define ALLOC_CACHE_ALIGN_BUFFER_PAD(type, name, size, pad)            \
+       ALLOC_ALIGN_BUFFER_PAD(type, name, size, ARCH_DMA_MINALIGN, pad)
+#define ALLOC_CACHE_ALIGN_BUFFER(type, name, size)                     \
+       ALLOC_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
+
+/*
+ * DEFINE_CACHE_ALIGN_BUFFER() is similar to ALLOC_CACHE_ALIGN_BUFFER, but it's
+ * purpose is to allow allocating aligned buffers outside of function scope.
+ * Usage of this macro shall be avoided or used with extreme care!
+ */
+#define DEFINE_ALIGN_BUFFER(type, name, size, align)                   \
+       static char __##name[ALIGN(size * sizeof(type), align)] \
+                       __aligned(align);                               \
+                                                                       \
+       static type *name = (type *)__##name
+#define DEFINE_CACHE_ALIGN_BUFFER(type, name, size)                    \
+       DEFINE_ALIGN_BUFFER(type, name, size, ARCH_DMA_MINALIGN)
+
+/**
+ * malloc_cache_aligned() - allocate a memory region aligned to cache line size
+ *
+ * This allocates memory at a cache-line boundary. The amount allocated may
+ * be larger than requested as it is rounded up to the nearest multiple of the
+ * cache-line size. This ensured that subsequent cache operations on this
+ * memory (flush, invalidate) will not affect subsequently allocated regions.
+ *
+ * @size:      Minimum number of bytes to allocate
+ *
+ * @return pointer to new memory region, or NULL if there is no more memory
+ * available.
+ */
+static inline void *malloc_cache_aligned(size_t size)
+{
+       return memalign(ARCH_DMA_MINALIGN, ALIGN(size, ARCH_DMA_MINALIGN));
+}
+#endif
+
+#endif /* __ALIGNMEM_H */
index 04c9ecf3bf1f7ec92fcc67f1ff3d5975545a4668..e6d145d4b25eb5424339e4b5c4a1ae432ff7516f 100644 (file)
 #define MII_KSZ9031_EXT_RGMII_TX_DATA_SKEW     0x6
 #define MII_KSZ9031_EXT_RGMII_CLOCK_SKEW       0x8
 
+/* Registers */
+#define MMD_ACCESS_CONTROL     0xd
+#define MMD_ACCESS_REG_DATA    0xe
+
 struct phy_device;
 int ksz9021_phy_extended_write(struct phy_device *phydev, int regnum, u16 val);
 int ksz9021_phy_extended_read(struct phy_device *phydev, int regnum);
index d09bec9de1560e8c2443269fb2045f95ea84e7f7..f1671e38deaf745224901ec9d252cccf62b179bd 100644 (file)
@@ -813,8 +813,18 @@ void copy_filename(char *dst, const char *src, int size);
 /* get a random source port */
 unsigned int random_port(void);
 
-/* Update U-Boot over TFTP */
-int update_tftp(ulong addr);
+/**
+ * update_tftp - Update firmware over TFTP (via DFU)
+ *
+ * This function updates board's firmware via TFTP
+ *
+ * @param addr - memory address where data is stored
+ * @param interface - the DFU medium name - e.g. "mmc"
+ * @param devstring - the DFU medium number - e.g. "1"
+ *
+ * @return - 0 on success, other value on failure
+ */
+int update_tftp(ulong addr, char *interface, char *devstring);
 
 /**********************************************************************/
 
diff --git a/include/net/tftp.h b/include/net/tftp.h
new file mode 100644 (file)
index 0000000..c411c9b
--- /dev/null
@@ -0,0 +1,30 @@
+/*
+ *     LiMon - BOOTP/TFTP.
+ *
+ *     Copyright 1994, 1995, 2000 Neil Russell.
+ *     Copyright 2011 Comelit Group SpA
+ *                    Luca Ceresoli <luca.ceresoli@comelit.it>
+ *     (See License)
+ */
+
+#ifndef __TFTP_H__
+#define __TFTP_H__
+
+/**********************************************************************/
+/*
+ *     Global functions and variables.
+ */
+
+/* tftp.c */
+void tftp_start(enum proto_t protocol);        /* Begin TFTP get/put */
+
+#ifdef CONFIG_CMD_TFTPSRV
+void tftp_start_server(void);  /* Wait for incoming TFTP put */
+#endif
+
+extern ulong tftp_timeout_ms;
+extern int tftp_timeout_count_max;
+
+/**********************************************************************/
+
+#endif /* __TFTP_H__ */
index 662d1735db0808fb418adbc266524ac58b00f698..3d5a54f2abab06ce9dd46e717ebcd01b32cfc43a 100644 (file)
@@ -70,7 +70,6 @@ int natsemi_initialize(bd_t *bis);
 int ne2k_register(void);
 int npe_initialize(bd_t *bis);
 int ns8382x_initialize(bd_t *bis);
-int pch_gbe_register(bd_t *bis);
 int pcnet_initialize(bd_t *bis);
 int ppc_4xx_eth_initialize (bd_t *bis);
 int rtl8139_initialize(bd_t *bis);
@@ -123,9 +122,6 @@ static inline int pci_eth_init(bd_t *bis)
 #ifdef CONFIG_E1000
        num += e1000_initialize(bis);
 #endif
-#ifdef CONFIG_PCH_GBE
-       num += pch_gbe_register(bis);
-#endif
 #ifdef CONFIG_PCNET
        num += pcnet_initialize(bis);
 #endif
diff --git a/include/nomadik.h b/include/nomadik.h
deleted file mode 100644 (file)
index ea65b2d..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-/* Collection of constants used to access Nomadik registers */
-
-#ifndef __NOMADIK_H__
-#define __NOMADIK_H__
-
-/* Base addresses of our peripherals */
-#define NOMADIK_CLCDC_BASE     0x10120000      /* CLCD Controller */
-#define NOMADIK_SRC_BASE       0x101E0000      /* System and Reset Cnt */
-#define NOMADIK_PMU_BASE       0x101E9000      /* Power Management Unit */
-#define NOMADIK_MPMC_BASE      0x10110000      /* SDRAM Controller */
-#define NOMADIK_FSMC_BASE      0x10100000      /* FSMC Controller */
-#define NOMADIK_1NAND_BASE     0x30000000
-#define NOMADIK_GPIO0_BASE     0x101E4000
-#define NOMADIK_GPIO1_BASE     0x101E5000
-#define NOMADIK_GPIO2_BASE     0x101E6000
-#define NOMADIK_GPIO3_BASE     0x101E7000
-#define NOMADIK_CPLD_BASE      0x36000000
-#define NOMADIK_UART0_BASE     0x101FD000
-#define NOMADIK_UART1_BASE     0x101FB000
-#define NOMADIK_UART2_BASE     0x101F2000
-
-#define NOMADIK_I2C1_BASE      0x101F7000      /* I2C1 interface */
-#define NOMADIK_I2C0_BASE      0x101F8000      /* I2C0 interface */
-
-#define NOMADIK_RTC_BASE       0x101E8000
-#define NOMADIK_ETH0_BASE      0x36800300
-#define NOMADIK_CPLD_UART_BASE 0x36480000
-
-/* Chip select registers ("Flexible Static Memory Controller") */
-
-#define REG_FSMC_BCR0  (NOMADIK_FSMC_BASE + 0x00)
-#define REG_FSMC_BTR0  (NOMADIK_FSMC_BASE + 0x04)
-#define REG_FSMC_BCR1  (NOMADIK_FSMC_BASE + 0x08)
-#define REG_FSMC_BTR1  (NOMADIK_FSMC_BASE + 0x0c)
-#define REG_FSMC_PCR0  (NOMADIK_FSMC_BASE + 0x40)
-#define REG_FSMC_PMEM0 (NOMADIK_FSMC_BASE + 0x48)
-#define REG_FSMC_PATT0 (NOMADIK_FSMC_BASE + 0x4c)
-#define REG_FSMC_ECCR0 (NOMADIK_FSMC_BASE + 0x54)
-
-#endif /* __NOMADIK_H__ */
diff --git a/include/power/act8846_pmic.h b/include/power/act8846_pmic.h
new file mode 100644 (file)
index 0000000..a811f28
--- /dev/null
@@ -0,0 +1,37 @@
+/*
+ * Copyright (C) 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _PMIC_ACT8846_H_
+#define _PMIC_ACT8846_H_
+
+#include <asm/gpio.h>
+
+#define ACT8846_NUM_OF_REGS    12
+
+#define BUCK_VOL_MASK 0x3f
+#define LDO_VOL_MASK 0x3f
+
+#define BUCK_EN_MASK 0x80
+#define LDO_EN_MASK 0x80
+
+#define VOL_MIN_IDX 0x00
+#define VOL_MAX_IDX 0x3f
+
+struct  act8846_reg_table {
+       char    *name;
+       char    reg_ctl;
+       char    reg_vol;
+};
+
+struct pmic_act8846 {
+       struct pmic *pmic;
+       int node;       /*device tree node*/
+       struct gpio_desc pwr_hold;
+       struct udevice *dev;
+};
+
+#endif
diff --git a/include/power/pfuze3000_pmic.h b/include/power/pfuze3000_pmic.h
new file mode 100644 (file)
index 0000000..e8b892b
--- /dev/null
@@ -0,0 +1,78 @@
+/*
+ *  Copyright (C) 2015 Freescale Semiconductor, Inc
+ *  Peng Fan <Peng.Fan@freescale.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+#ifndef __PFUZE3000_PMIC_H_
+#define __PFUZE3000_PMIC_H_
+
+/* PFUZE3000 registers */
+enum {
+       PFUZE3000_DEVICEID      = 0x00,
+
+       PFUZE3000_REVID         = 0x03,
+       PFUZE3000_FABID         = 0x04,
+       PFUZE3000_INTSTAT0      = 0x05,
+       PFUZE3000_INTMASK0      = 0x06,
+       PFUZE3000_INTSENSE0     = 0x07,
+       PFUZE3000_INTSTAT1      = 0x08,
+       PFUZE3000_INTMASK1      = 0x09,
+       PFUZE3000_INTSENSE1     = 0x0A,
+
+       PFUZE3000_INTSTAT3      = 0x0E,
+       PFUZE3000_INTMASK3      = 0x0F,
+       PFUZE3000_INTSENSE3     = 0x10,
+       PFUZE3000_INTSTAT4      = 0x11,
+       PFUZE3000_INTMASK4      = 0x12,
+       PFUZE3000_INTSENSE4     = 0x13,
+
+       PFUZE3000_COINCTL       = 0x1A,
+       PFUZE3000_PWRCTL        = 0x1B,
+       PFUZE3000_MEMA          = 0x1C,
+       PFUZE3000_MEMB          = 0x1D,
+       PFUZE3000_MEMC          = 0x1E,
+       PFUZE3000_MEMD          = 0x1F,
+
+       PFUZE3000_SW1AVOLT      = 0x20,
+       PFUZE3000_SW1ASTBY      = 0x21,
+       PFUZE3000_SW1AOFF       = 0x22,
+       PFUZE3000_SW1AMODE      = 0x23,
+       PFUZE3000_SW1ACONF      = 0x24,
+
+       PFUZE3000_SW1BVOLT      = 0x2E,
+       PFUZE3000_SW1BSTBY      = 0x2F,
+       PFUZE3000_SW1BOFF       = 0x30,
+       PFUZE3000_SW1BMODE      = 0x31,
+       PFUZE3000_SW1BCONF      = 0x32,
+
+       PFUZE3000_SW2VOLT       = 0x35,
+       PFUZE3000_SW2STBY       = 0x36,
+       PFUZE3000_SW2OFF        = 0x37,
+       PFUZE3000_SW2MODE       = 0x38,
+       PFUZE3000_SW2CONF       = 0x39,
+
+       PFUZE3000_SW3VOLT       = 0x3C,
+       PFUZE3000_SW3STBY       = 0x3D,
+       PFUZE3000_SW3OFF        = 0x3E,
+       PFUZE3000_SW3MODE       = 0x3F,
+       PFUZE3000_SW3CONF       = 0x40,
+
+       PFUZE3000_SWBSTCTL      = 0x66,
+
+       PFUZE3000_LDOGCTL       = 0x69,
+       PFUZE3000_VREFDDRCTL    = 0x6A,
+       PFUZE3000_VSNVSCTL      = 0x6B,
+       PFUZE3000_VLDO1CTL      = 0x6C,
+       PFUZE3000_VLDO2CTL      = 0x6D,
+       PFUZE3000_VCC_SDCTL     = 0x6E,
+       PFUZE3000_V33CTL        = 0x6F,
+       PFUZE3000_VLDO3CTL      = 0x70,
+       PFUZE3000_VLD4CTL       = 0x71,
+
+       PMIC_NUM_OF_REGS        = 0x7F,
+};
+
+int power_pfuze3000_init(unsigned char bus);
+
+#endif
index bd8621d60b93d4491d33ee477ccd04b7438c65a7..69fe8d4db05316703ad6e48fa36843185e099f45 100644 (file)
@@ -151,6 +151,7 @@ int rtc_write32(struct udevice *dev, unsigned int reg, u32 value);
 int rtc_get (struct rtc_time *);
 int rtc_set (struct rtc_time *);
 void rtc_reset (void);
+void rtc_enable_32khz_output(void);
 
 /**
  * rtc_read8() - Read an 8-bit register
index a5e35df80ac1b13db6d82137a34c71f8ca63c9d5..f6be18146b23c7cb9ea1b233613f7fd3185bd5aa 100644 (file)
@@ -64,19 +64,6 @@ void status_led_set  (int led, int state);
    * filling this file up with lots of custom board stuff.
    */
 
-/*****  CMI   ********************************************************/
-#elif defined(CONFIG_CMI)
-# define STATUS_LED_DIR                im_mios.mios_mpiosm32ddr
-# define STATUS_LED_DAT                im_mios.mios_mpiosm32dr
-
-# define STATUS_LED_BIT                0x2000          /* Select one of the 16 possible*/
-                                               /* MIOS outputs */
-# define STATUS_LED_PERIOD     (CONFIG_SYS_HZ / 2)     /* Blinking periode is 500 ms */
-# define STATUS_LED_STATE      STATUS_LED_BLINKING
-
-# define STATUS_LED_ACTIVE     1               /* LED on for bit == 0  */
-# define STATUS_LED_BOOT       0               /* LED 0 used for boot status */
-
 #elif defined(CONFIG_V38B)
 
 # define STATUS_LED_BIT                0x0010                  /* Timer7 GPIO */
index 40a1f867627a66209618048257077452ecfa143f..1985d9e60e67475eabf2451a816380b854961ee6 100644 (file)
@@ -7,6 +7,8 @@
 #ifndef __TIS_H
 #define __TIS_H
 
+#ifndef CONFIG_DM_TPM
+
 #include <common.h>
 
 /* Low-level interface to access TPM */
@@ -53,5 +55,6 @@ int tis_close(void);
  */
 int tis_sendrecv(const uint8_t *sendbuf, size_t send_size, uint8_t *recvbuf,
                        size_t *recv_len);
+#endif
 
 #endif /* __TIS_H */
index 88aeba28e33b59637c411325504458ad9e08c10f..086b672718e1dcc98ed157e282e547311cce87d1 100644 (file)
  * Specification for definitions of TPM commands.
  */
 
+#define TPM_HEADER_SIZE                10
+
+enum tpm_duration {
+       TPM_SHORT = 0,
+       TPM_MEDIUM = 1,
+       TPM_LONG = 2,
+       TPM_UNDEFINED,
+
+       TPM_DURATION_COUNT,
+};
+
 enum tpm_startup_type {
        TPM_ST_CLEAR            = 0x0001,
        TPM_ST_STATE            = 0x0002,
@@ -38,6 +49,15 @@ enum tpm_nv_index {
        TPM_NV_INDEX_DIR        = 0x10000001,
 };
 
+#define TPM_NV_PER_GLOBALLOCK          (1U << 15)
+#define TPM_NV_PER_PPWRITE             (1U << 0)
+#define TPM_NV_PER_READ_STCLEAR                (1U << 31)
+#define TPM_NV_PER_WRITE_STCLEAR       (1U << 14)
+
+enum {
+       TPM_PUBEK_SIZE                  = 256,
+};
+
 /**
  * TPM return codes as defined in the TCG Main specification
  * (TPM Main Part 2 Structures; Specification version 1.2)
@@ -152,12 +172,217 @@ enum tpm_return_code {
        TPM_DEFEND_LOCK_RUNNING = TPM_BASE + TPM_NON_FATAL + 3,
 };
 
+struct tpm_permanent_flags {
+       __be16  tag;
+       u8      disable;
+       u8      ownership;
+       u8      deactivated;
+       u8      read_pubek;
+       u8      disable_owner_clear;
+       u8      allow_maintenance;
+       u8      physical_presence_lifetime_lock;
+       u8      physical_presence_hw_enable;
+       u8      physical_presence_cmd_enable;
+       u8      cekp_used;
+       u8      tpm_post;
+       u8      tpm_post_lock;
+       u8      fips;
+       u8      operator;
+       u8      enable_revoke_ek;
+       u8      nv_locked;
+       u8      read_srk_pub;
+       u8      tpm_established;
+       u8      maintenance_done;
+       u8      disable_full_da_logic_info;
+} __packed;
+
+#ifdef CONFIG_DM_TPM
+
+/* Max buffer size supported by our tpm */
+#define TPM_DEV_BUFSIZE                1260
+
+/**
+ * struct tpm_chip_priv - Information about a TPM, stored by the uclass
+ *
+ * These values must be set up by the device's probe() method before
+ * communcation is attempted. If the device has an xfer() method, this is
+ * not needed. There is no need to set up @buf.
+ *
+ * @duration_ms:       Length of each duration type in milliseconds
+ * @retry_time_ms:     Time to wait before retrying receive
+ */
+struct tpm_chip_priv {
+       uint duration_ms[TPM_DURATION_COUNT];
+       uint retry_time_ms;
+       u8 buf[TPM_DEV_BUFSIZE + sizeof(u8)];  /* Max buffer size + addr */
+};
+
+/**
+ * struct tpm_ops - low-level TPM operations
+ *
+ * These are designed to avoid loops and delays in the driver itself. These
+ * should be handled in the uclass.
+ *
+ * In gneral you should implement everything except xfer(). Where you need
+ * complete control of the transfer, then xfer() can be provided and will
+ * override the other methods.
+ *
+ * This interface is for low-level TPM access. It does not understand the
+ * concept of localities or the various TPM messages. That interface is
+ * defined in the functions later on in this file, but they all translate
+ * to bytes which are sent and received.
+ */
+struct tpm_ops {
+       /**
+        * open() - Request access to locality 0 for the caller
+        *
+        * After all commands have been completed the caller should call
+        * close().
+        *
+        * @dev:        Device to close
+        * @return 0 ok OK, -ve on error
+        */
+       int (*open)(struct udevice *dev);
+
+       /**
+        * close() - Close the current session
+        *
+        * Releasing the locked locality. Returns 0 on success, -ve 1 on
+        * failure (in case lock removal did not succeed).
+        *
+        * @dev:        Device to close
+        * @return 0 ok OK, -ve on error
+        */
+       int (*close)(struct udevice *dev);
+
+       /**
+        * get_desc() - Get a text description of the TPM
+        *
+        * @dev:        Device to check
+        * @buf:        Buffer to put the string
+        * @size:       Maximum size of buffer
+        * @return length of string, or -ENOSPC it no space
+        */
+       int (*get_desc)(struct udevice *dev, char *buf, int size);
+
+       /**
+        * send() - send data to the TPM
+        *
+        * @dev:        Device to talk to
+        * @sendbuf:    Buffer of the data to send
+        * @send_size:  Size of the data to send
+        *
+        * Returns 0 on success or -ve on failure.
+        */
+       int (*send)(struct udevice *dev, const uint8_t *sendbuf,
+                   size_t send_size);
+
+       /**
+        * recv() - receive a response from the TPM
+        *
+        * @dev:        Device to talk to
+        * @recvbuf:    Buffer to save the response to
+        * @max_size:   Maximum number of bytes to receive
+        *
+        * Returns number of bytes received on success, -EAGAIN if the TPM
+        * response is not ready, -EINTR if cancelled, or other -ve value on
+        * failure.
+        */
+       int (*recv)(struct udevice *dev, uint8_t *recvbuf, size_t max_size);
+
+       /**
+        * cleanup() - clean up after an operation in progress
+        *
+        * This is called if receiving times out. The TPM may need to abort
+        * the current transaction if it did not complete, and make itself
+        * ready for another.
+        *
+        * @dev:        Device to talk to
+        */
+       int (*cleanup)(struct udevice *dev);
+
+       /**
+        * xfer() - send data to the TPM and get response
+        *
+        * This method is optional. If it exists it is used in preference
+        * to send(), recv() and cleanup(). It should handle all aspects of
+        * TPM communication for a single transfer.
+        *
+        * @dev:        Device to talk to
+        * @sendbuf:    Buffer of the data to send
+        * @send_size:  Size of the data to send
+        * @recvbuf:    Buffer to save the response to
+        * @recv_size:  Pointer to the size of the response buffer
+        *
+        * Returns 0 on success (and places the number of response bytes at
+        * recv_size) or -ve on failure.
+        */
+       int (*xfer)(struct udevice *dev, const uint8_t *sendbuf,
+                   size_t send_size, uint8_t *recvbuf, size_t *recv_size);
+};
+
+#define tpm_get_ops(dev)        ((struct tpm_ops *)device_get_ops(dev))
+
+/**
+ * tpm_open() - Request access to locality 0 for the caller
+ *
+ * After all commands have been completed the caller is supposed to
+ * call tpm_close().
+ *
+ * Returns 0 on success, -ve on failure.
+ */
+int tpm_open(struct udevice *dev);
+
+/**
+ * tpm_close() - Close the current session
+ *
+ * Releasing the locked locality. Returns 0 on success, -ve 1 on
+ * failure (in case lock removal did not succeed).
+ */
+int tpm_close(struct udevice *dev);
+
+/**
+ * tpm_get_desc() - Get a text description of the TPM
+ *
+ * @dev:       Device to check
+ * @buf:       Buffer to put the string
+ * @size:      Maximum size of buffer
+ * @return length of string, or -ENOSPC it no space
+ */
+int tpm_get_desc(struct udevice *dev, char *buf, int size);
+
+/**
+ * tpm_xfer() - send data to the TPM and get response
+ *
+ * This first uses the device's send() method to send the bytes. Then it calls
+ * recv() to get the reply. If recv() returns -EAGAIN then it will delay a
+ * short time and then call recv() again.
+ *
+ * Regardless of whether recv() completes successfully, it will then call
+ * cleanup() to finish the transaction.
+ *
+ * Note that the outgoing data is inspected to determine command type
+ * (ordinal) and a timeout is used for that command type.
+ *
+ * @sendbuf - buffer of the data to send
+ * @send_size size of the data to send
+ * @recvbuf - memory to save the response to
+ * @recv_len - pointer to the size of the response buffer
+ *
+ * Returns 0 on success (and places the number of response bytes at
+ * recv_len) or -ve on failure.
+ */
+int tpm_xfer(struct udevice *dev, const uint8_t *sendbuf, size_t send_size,
+            uint8_t *recvbuf, size_t *recv_size);
+
+#endif /* CONFIG_DM_TPM */
+
 /**
  * Initialize TPM device.  It must be called before any TPM commands.
  *
  * @return 0 on success, non-0 on error.
  */
-uint32_t tpm_init(void);
+int tpm_init(void);
 
 /**
  * Issue a TPM_Startup command.
@@ -359,4 +584,20 @@ uint32_t tpm_load_key2_oiap(uint32_t parent_handle,
 uint32_t tpm_get_pub_key_oiap(uint32_t key_handle, const void *usage_auth,
                void *pubkey, size_t *pubkey_len);
 
+/**
+ * Get the TPM permanent flags value
+ *
+ * @param pflags       Place to put permanent flags
+ * @return return code of the operation
+ */
+uint32_t tpm_get_permanent_flags(struct tpm_permanent_flags *pflags);
+
+/**
+ * Get the TPM permissions
+ *
+ * @param perm         Returns permissions value
+ * @return return code of the operation
+ */
+uint32_t tpm_get_permissions(uint32_t index, uint32_t *perm);
+
 #endif /* __TPM_H */
index 884218a3c667f53877c84b462344cfaa1e651ef5..067307276ecf69229c53d26d994136ec9ff8d9fd 100644 (file)
@@ -54,6 +54,16 @@ source lib/dhry/Kconfig
 
 source lib/rsa/Kconfig
 
+config TPM
+       bool "Trusted Platform Module (TPM) Support"
+       help
+         This enables support for TPMs which can be used to provide security
+         features for your board. The TPM can be connected via LPC or I2C
+         and a sandbox TPM is provided for testing purposes. Use the 'tpm'
+         command to interactive the TPM. Driver model support is provided
+         for the low-level TPM interface, but only one TPM is supported at
+         a time by the TPM library.
+
 menu "Hashing Support"
 
 config SHA1
index 81b54f88e88722eab0458d83fce8684072baaffc..5770094fbfaf40557fd6a3239b6d557a768e9998 100644 (file)
@@ -58,8 +58,6 @@ static const char * const compat_names[COMPAT_COUNT] = {
        COMPAT(MAXIM_MAX77686_PMIC, "maxim,max77686"),
        COMPAT(GENERIC_SPI_FLASH, "spi-flash"),
        COMPAT(MAXIM_98095_CODEC, "maxim,max98095-codec"),
-       COMPAT(INFINEON_SLB9635_TPM, "infineon,slb9635-tpm"),
-       COMPAT(INFINEON_SLB9645_TPM, "infineon,slb9645tt"),
        COMPAT(SAMSUNG_EXYNOS5_I2C, "samsung,exynos5-hsi2c"),
        COMPAT(SANDBOX_LCD_SDL, "sandbox,lcd-sdl"),
        COMPAT(SAMSUNG_EXYNOS_SYSMMU, "samsung,sysmmu-v3.3"),
@@ -76,6 +74,7 @@ static const char * const compat_names[COMPAT_COUNT] = {
        COMPAT(COMPAT_INTEL_PCH, "intel,bd82x6x"),
        COMPAT(COMPAT_INTEL_IRQ_ROUTER, "intel,irq-router"),
        COMPAT(ALTERA_SOCFPGA_DWMAC, "altr,socfpga-stmmac"),
+       COMPAT(ALTERA_SOCFPGA_DWMMC, "altr,socfpga-dw-mshc"),
        COMPAT(COMPAT_INTEL_BAYTRAIL_FSP, "intel,baytrail-fsp"),
        COMPAT(COMPAT_INTEL_BAYTRAIL_FSP_MDP, "intel,baytrail-fsp-mdp"),
 };
index cd8e9fea43dd6eb80f9256604cdf77b90e6b6e32..2c49e4e9ffa0c748abc972fa14263c7047259aad 100644 (file)
@@ -10,6 +10,7 @@
 #include <command.h>
 #include <image.h>
 #include <malloc.h>
+#include <memalign.h>
 #include <u-boot/zlib.h>
 #include "zlib/zutil.h"
 
index d9789b022ab3e9c507f4d2983da1bb6c746c90a9..5d5f707e3721374fddc70d4fe6d2e6ce708be62e 100644 (file)
--- a/lib/tpm.c
+++ b/lib/tpm.c
@@ -6,10 +6,11 @@
  */
 
 #include <common.h>
-#include <stdarg.h>
-#include <u-boot/sha1.h>
+#include <dm.h>
+#include <tis.h>
 #include <tpm.h>
 #include <asm/unaligned.h>
+#include <u-boot/sha1.h>
 
 /* Internal error of TPM command library */
 #define TPM_LIB_ERROR  ((uint32_t)~0u)
@@ -17,7 +18,6 @@
 /* Useful constants */
 enum {
        COMMAND_BUFFER_SIZE             = 256,
-       TPM_PUBEK_SIZE                  = 256,
        TPM_REQUEST_HEADER_LENGTH       = 10,
        TPM_RESPONSE_HEADER_LENGTH      = 10,
        PCR_DIGEST_LENGTH               = 20,
@@ -240,9 +240,20 @@ static uint32_t tpm_sendrecv_command(const void *command,
                response = response_buffer;
                response_length = sizeof(response_buffer);
        }
+#ifdef CONFIG_DM_TPM
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_first_device(UCLASS_TPM, &dev);
+       if (ret)
+               return ret;
+       err = tpm_xfer(dev, command, tpm_command_size(command),
+                      response, &response_length);
+#else
        err = tis_sendrecv(command, tpm_command_size(command),
                        response, &response_length);
-       if (err)
+#endif
+       if (err < 0)
                return TPM_LIB_ERROR;
        if (size_ptr)
                *size_ptr = response_length;
@@ -250,15 +261,24 @@ static uint32_t tpm_sendrecv_command(const void *command,
        return tpm_return_code(response);
 }
 
-uint32_t tpm_init(void)
+int tpm_init(void)
 {
-       uint32_t err;
+       int err;
+
+#ifdef CONFIG_DM_TPM
+       struct udevice *dev;
 
+       err = uclass_first_device(UCLASS_TPM, &dev);
+       if (err)
+               return err;
+       return tpm_open(dev);
+#else
        err = tis_init();
        if (err)
                return err;
 
        return tis_open();
+#endif
 }
 
 uint32_t tpm_startup(enum tpm_startup_type mode)
@@ -589,6 +609,56 @@ uint32_t tpm_get_capability(uint32_t cap_area, uint32_t sub_cap,
        return 0;
 }
 
+uint32_t tpm_get_permanent_flags(struct tpm_permanent_flags *pflags)
+{
+       const uint8_t command[22] = {
+               0x0, 0xc1,              /* TPM_TAG */
+               0x0, 0x0, 0x0, 0x16,    /* parameter size */
+               0x0, 0x0, 0x0, 0x65,    /* TPM_COMMAND_CODE */
+               0x0, 0x0, 0x0, 0x4,     /* TPM_CAP_FLAG_PERM */
+               0x0, 0x0, 0x0, 0x4,     /* subcap size */
+               0x0, 0x0, 0x1, 0x8,     /* subcap value */
+       };
+       uint8_t response[COMMAND_BUFFER_SIZE];
+       size_t response_length = sizeof(response);
+       uint32_t err;
+
+       err = tpm_sendrecv_command(command, response, &response_length);
+       if (err)
+               return err;
+       memcpy(pflags, response + TPM_HEADER_SIZE, sizeof(*pflags));
+
+       return 0;
+}
+
+uint32_t tpm_get_permissions(uint32_t index, uint32_t *perm)
+{
+       const uint8_t command[22] = {
+               0x0, 0xc1,              /* TPM_TAG */
+               0x0, 0x0, 0x0, 0x16,    /* parameter size */
+               0x0, 0x0, 0x0, 0x65,    /* TPM_COMMAND_CODE */
+               0x0, 0x0, 0x0, 0x11,
+               0x0, 0x0, 0x0, 0x4,
+       };
+       const size_t index_offset = 18;
+       const size_t perm_offset = 60;
+       uint8_t buf[COMMAND_BUFFER_SIZE], response[COMMAND_BUFFER_SIZE];
+       size_t response_length = sizeof(response);
+       uint32_t err;
+
+       if (pack_byte_string(buf, sizeof(buf), "d", 0, command, sizeof(command),
+                            index_offset, index))
+               return TPM_LIB_ERROR;
+       err = tpm_sendrecv_command(buf, response, &response_length);
+       if (err)
+               return err;
+       if (unpack_byte_string(response, response_length, "d",
+                              perm_offset, perm))
+               return TPM_LIB_ERROR;
+
+       return 0;
+}
+
 #ifdef CONFIG_TPM_AUTH_SESSIONS
 
 /**
index 173a81d1ea4df76325f2f45cbe82aa8e3e10641c..227343e48d3fb1305a229ac4b72559bda6351b48 100644 (file)
@@ -43,7 +43,9 @@ void z_error (m)
  */
 #ifndef MY_ZCALLOC /* Any system without a special alloc function */
 
-#ifndef __UBOOT__
+#ifdef __UBOOT__
+#include <malloc.h>
+#else
 #ifndef STDC
 extern voidp    malloc OF((uInt size));
 extern voidp    calloc OF((uInt items, uInt size));
index 43466af2f39293f415b9c473e3da060a0e99766d..b2f8ad4ded932ddfdb2aefc86f803e2d4f0d894f 100644 (file)
@@ -11,8 +11,8 @@
 #include <common.h>
 #include <command.h>
 #include <net.h>
+#include <net/tftp.h>
 #include "bootp.h"
-#include "tftp.h"
 #include "nfs.h"
 #ifdef CONFIG_STATUS_LED
 #include <status_led.h>
index d3ec8d64d596d3a8e51336617b8de0032c87812b..26520d303885ea1e77e396b7f175d13f0299417b 100644 (file)
--- a/net/eth.c
+++ b/net/eth.c
@@ -107,7 +107,9 @@ static void eth_common_init(void)
                if (cpu_eth_init(gd->bd) < 0)
                        printf("CPU Net Initialization Failed\n");
        } else {
+#ifndef CONFIG_DM_ETH
                printf("Net Initialization Skipped\n");
+#endif
        }
 }
 
@@ -193,10 +195,11 @@ struct udevice *eth_get_dev_by_name(const char *devname)
        const char *startp = NULL;
        struct udevice *it;
        struct uclass *uc;
+       int len = strlen("eth");
 
        /* Must be longer than 3 to be an alias */
-       if (strlen(devname) > strlen("eth")) {
-               startp = devname + strlen("eth");
+       if (!strncmp(devname, "eth", len) && strlen(devname) > len) {
+               startp = devname + len;
                seq = simple_strtoul(startp, &endp, 10);
        }
 
index 2a6efd85eae2179c97a0f798e0ec881a3d66a3b8..a115ce28927216532179bdcc842d22025e0ee092 100644 (file)
--- a/net/net.c
+++ b/net/net.c
@@ -86,6 +86,7 @@
 #include <environment.h>
 #include <errno.h>
 #include <net.h>
+#include <net/tftp.h>
 #if defined(CONFIG_STATUS_LED)
 #include <miiphy.h>
 #include <status_led.h>
 #if defined(CONFIG_CMD_SNTP)
 #include "sntp.h"
 #endif
-#include "tftp.h"
 
 DECLARE_GLOBAL_DATA_PTR;
 
index 4ce2f37a8a69c2b8ad70e3ea5e0f2605bf589bbc..1fa11b690d218fbda9fd80d26d99746acae10bf9 100644 (file)
@@ -8,10 +8,10 @@
 #include <common.h>
 #include <command.h>
 #include <net.h>
+#include <net/tftp.h>
 #include "nfs.h"
 #include "bootp.h"
 #include "rarp.h"
-#include "tftp.h"
 
 #define TIMEOUT 5000UL /* Milliseconds before trying BOOTP again */
 #ifndef        CONFIG_NET_RETRY_COUNT
index 18ce84c20214ccec75036d135ed0da246e485c5b..1a5113179ac54862b399593ff2419a6745d8ccf9 100644 (file)
@@ -10,7 +10,7 @@
 #include <command.h>
 #include <mapmem.h>
 #include <net.h>
-#include "tftp.h"
+#include <net/tftp.h>
 #include "bootp.h"
 #ifdef CONFIG_SYS_DIRECT_FLASH_TFTP
 #include <flash.h>
 /* Well known TFTP port # */
 #define WELL_KNOWN_PORT        69
 /* Millisecs to timeout for lost pkt */
-#define TIMEOUT                100UL
+#define TIMEOUT                5000UL
 #ifndef        CONFIG_NET_RETRY_COUNT
 /* # of timeouts before giving up */
-# define TIMEOUT_COUNT 1000
+# define TIMEOUT_COUNT 10
 #else
 # define TIMEOUT_COUNT  (CONFIG_NET_RETRY_COUNT * 2)
 #endif
@@ -711,10 +711,10 @@ void tftp_start(enum proto_t protocol)
        if (ep != NULL)
                timeout_ms = simple_strtol(ep, NULL, 10);
 
-       if (timeout_ms < 10) {
-               printf("TFTP timeout (%ld ms) too low, set min = 10 ms\n",
+       if (timeout_ms < 1000) {
+               printf("TFTP timeout (%ld ms) too low, set min = 1000 ms\n",
                       timeout_ms);
-               timeout_ms = 10;
+               timeout_ms = 1000;
        }
 
        debug("TFTP blocksize = %i, timeout = %ld ms\n",
diff --git a/net/tftp.h b/net/tftp.h
deleted file mode 100644 (file)
index c411c9b..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
-/*
- *     LiMon - BOOTP/TFTP.
- *
- *     Copyright 1994, 1995, 2000 Neil Russell.
- *     Copyright 2011 Comelit Group SpA
- *                    Luca Ceresoli <luca.ceresoli@comelit.it>
- *     (See License)
- */
-
-#ifndef __TFTP_H__
-#define __TFTP_H__
-
-/**********************************************************************/
-/*
- *     Global functions and variables.
- */
-
-/* tftp.c */
-void tftp_start(enum proto_t protocol);        /* Begin TFTP get/put */
-
-#ifdef CONFIG_CMD_TFTPSRV
-void tftp_start_server(void);  /* Wait for incoming TFTP put */
-#endif
-
-extern ulong tftp_timeout_ms;
-extern int tftp_timeout_count_max;
-
-/**********************************************************************/
-
-#endif /* __TFTP_H__ */
index 5176aba632cedc96f364e8ac47ac8db04d0edaea..408d5594219a4f3ccd062f70f5c3e3b09bd4b193 100644 (file)
@@ -26,12 +26,19 @@ Example usage:
    setenv dfu_alt_info dfu_test.bin fat 0 6\;dfudummy.bin fat 0 6
    dfu 0 mmc 0
 2. On the host:
-   test/dfu/dfu_gadget_test.sh X Y  [test file name]
+   test/dfu/dfu_gadget_test.sh X Y [test file name] [usb device vendor:product]
    e.g. test/dfu/dfu_gadget_test.sh 0 1
    or
    e.g. test/dfu/dfu_gadget_test.sh 0 1 ./dat_960.img
+   or
+   e.g. test/dfu/dfu_gadget_test.sh 0 1 0451:d022
+   or
+   e.g. test/dfu/dfu_gadget_test.sh 0 1 ./dat_960.img 0451:d022
 
 ... where X and Y are dfu_test.bin's and dfudummy.bin's alt setting numbers.
 They can be obtained from dfu-util -l or $dfu_alt_info.
 It is also possible to pass optional [test file name] to force the script to
 test one particular file.
+If many DFU devices are connected, it may be useful to filter on USB
+vendor/product ID (0451:d022).
+One can get them by running "lsusb" command on a host PC.
index 2f5b7db58d41f20cab39aabec835d00414ef0a68..9c7942257b44f76a7892fcd264a1a559b659b438 100755 (executable)
@@ -45,18 +45,18 @@ dfu_test_file () {
     printf "$COLOUR_GREEN ========================================================================================= $COLOUR_DEFAULT\n"
     printf "File:$COLOUR_GREEN %s $COLOUR_DEFAULT\n" $1
 
-    dfu-util -D $1 -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $?
+    dfu-util $USB_DEV -D $1 -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $?
 
     echo -n "TX: "
     calculate_md5sum $1
 
     MD5_TX=$MD5SUM
 
-    dfu-util -D ${DIR}/dfudummy.bin -a $TARGET_ALT_SETTING_B >> $LOG_FILE 2>&1 || die $?
+    dfu-util $USB_DEV -D ${DIR}/dfudummy.bin -a $TARGET_ALT_SETTING_B >> $LOG_FILE 2>&1 || die $?
 
     N_FILE=$DIR$RCV_DIR${1:2}"_rcv"
 
-    dfu-util -U $N_FILE -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $?
+    dfu-util $USB_DEV -U $N_FILE -a $TARGET_ALT_SETTING >> $LOG_FILE 2>&1 || die $?
 
     echo -n "RX: "
     calculate_md5sum $N_FILE
@@ -89,13 +89,17 @@ fi
 TARGET_ALT_SETTING=$1
 TARGET_ALT_SETTING_B=$2
 
-if [ -n "$3" ]
+file=$3
+[[ $3 == *':'* ]] && USB_DEV="-d $3" && file=""
+[ $# -eq 4 ] && USB_DEV="-d $4"
+
+if [ -n "$file" ]
 then
-       dfu_test_file $3
+       dfu_test_file $file
 else
-       for file in $DIR*.$SUFFIX
+       for f in $DIR*.$SUFFIX
        do
-           dfu_test_file $file
+           dfu_test_file $f
        done
 fi
 
index 700abdddbdd72c953fd5e766818de202737d38db..fcfb3e1ece840a5ed896c10cbeddbce6d69139a9 100644 (file)
@@ -106,6 +106,11 @@ static int _dm_test_eth_rotate2(struct unit_test_state *uts)
        ut_assertok(net_loop(PING));
        ut_asserteq_str("eth@10004000", getenv("ethact"));
 
+       /* Make sure we can handle device name which is not eth# */
+       setenv("ethact", "sbe5");
+       ut_assertok(net_loop(PING));
+       ut_asserteq_str("sbe5", getenv("ethact"));
+
        return 0;
 }
 
index f673258bad5730adda711ec330439d3783d4cb33..9082bda219fc6d93d05637a7fc7959d3681518cf 100644 (file)
@@ -64,6 +64,8 @@ RSA_OBJS-$(CONFIG_FIT_SIGNATURE) := $(addprefix lib/rsa/, \
                                        rsa-sign.o rsa-verify.o rsa-checksum.o \
                                        rsa-mod-exp.o)
 
+ROCKCHIP_OBS = lib/rc4.o rkcommon.o rkimage.o rksd.o
+
 # common objs for dumpimage and mkimage
 dumpimage-mkimage-objs := aisimage.o \
                        atmelimage.o \
@@ -90,6 +92,7 @@ dumpimage-mkimage-objs := aisimage.o \
                        os_support.o \
                        pblimage.o \
                        pbl_crc32.o \
+                       $(ROCKCHIP_OBS) \
                        socfpgaimage.o \
                        lib/sha1.o \
                        lib/sha256.o \
index c7d3c869688dd7a99cd4f3893059205f94086272..141bf6469136aa7f5f18bb6e07701dfcfd5d135d 100644 (file)
@@ -103,6 +103,24 @@ CONFIG_FILENAMES = [
     'u-boot.cfg', 'u-boot-spl.cfg', 'u-boot-tpl.cfg'
 ]
 
+class Config:
+    """Holds information about configuration settings for a board."""
+    def __init__(self, target):
+        self.target = target
+        self.config = {}
+        for fname in CONFIG_FILENAMES:
+            self.config[fname] = {}
+
+    def Add(self, fname, key, value):
+        self.config[fname][key] = value
+
+    def __hash__(self):
+        val = 0
+        for fname in self.config:
+            for key, value in self.config[fname].iteritems():
+                print key, value
+                val = val ^ hash(key) & hash(value)
+        return val
 
 class Builder:
     """Class for building U-Boot for a particular commit.
@@ -659,7 +677,8 @@ class Builder:
                 List containing a summary of warning lines
                 Dict keyed by error line, containing a list of the Board
                     objects with that warning
-                Dictionary keyed by filename - e.g. '.config'. Each
+                Dictionary keyed by board.target. Each value is a dictionary:
+                    key: filename - e.g. '.config'
                     value is itself a dictionary:
                         key: config name
                         value: config value
@@ -678,8 +697,6 @@ class Builder:
         warn_lines_summary = []
         warn_lines_boards = {}
         config = {}
-        for fname in CONFIG_FILENAMES:
-            config[fname] = {}
 
         for board in boards_selected.itervalues():
             outcome = self.GetBuildOutcome(commit_upto, board.target,
@@ -709,11 +726,12 @@ class Builder:
                                     line, board)
                         last_was_warning = is_warning
                         last_func = None
+            tconfig = Config(board.target)
             for fname in CONFIG_FILENAMES:
-                config[fname] = {}
                 if outcome.config:
                     for key, value in outcome.config[fname].iteritems():
-                        config[fname][key] = value
+                        tconfig.Add(fname, key, value)
+            config[board.target] = tconfig
 
         return (board_dict, err_lines_summary, err_lines_boards,
                 warn_lines_summary, warn_lines_boards, config)
@@ -774,9 +792,7 @@ class Builder:
         self._base_warn_lines = []
         self._base_err_line_boards = {}
         self._base_warn_line_boards = {}
-        self._base_config = {}
-        for fname in CONFIG_FILENAMES:
-            self._base_config[fname] = {}
+        self._base_config = None
 
     def PrintFuncSizeDetail(self, fname, old, new):
         grow, shrink, add, remove, up, down = 0, 0, 0, 0, 0, 0
@@ -1051,12 +1067,14 @@ class Builder:
             out = ''
             for key in sorted(config.keys()):
                 out += '%s=%s ' % (key, config[key])
-            return '%5s %s: %s' % (delta, name, out)
+            return '%s %s: %s' % (delta, name, out)
 
-        def _ShowConfig(name, config_plus, config_minus, config_change):
-            """Show changes in configuration
+        def _AddConfig(lines, name, config_plus, config_minus, config_change):
+            """Add changes in configuration to a list
 
             Args:
+                lines: list to add to
+                name: config file name
                 config_plus: configurations added, dictionary
                     key: config name
                     value: config value
@@ -1068,14 +1086,24 @@ class Builder:
                     value: config value
             """
             if config_plus:
-                Print(_CalcConfig('+', name, config_plus),
-                      colour=self.col.GREEN)
+                lines.append(_CalcConfig('+', name, config_plus))
             if config_minus:
-                Print(_CalcConfig('-', name, config_minus),
-                      colour=self.col.RED)
+                lines.append(_CalcConfig('-', name, config_minus))
             if config_change:
-                Print(_CalcConfig('+/-', name, config_change),
-                      colour=self.col.YELLOW)
+                lines.append(_CalcConfig('c', name, config_change))
+
+        def _OutputConfigInfo(lines):
+            for line in lines:
+                if not line:
+                    continue
+                if line[0] == '+':
+                    col = self.col.GREEN
+                elif line[0] == '-':
+                    col = self.col.RED
+                elif line[0] == 'c':
+                    col = self.col.YELLOW
+                Print('   ' + line, newline=True, colour=col)
+
 
         better = []     # List of boards fixed since last commit
         worse = []      # List of new broken boards since last commit
@@ -1137,34 +1165,104 @@ class Builder:
             self.PrintSizeSummary(board_selected, board_dict, show_detail,
                                   show_bloat)
 
-        if show_config:
-            all_config_plus = {}
-            all_config_minus = {}
-            all_config_change = {}
-            for name in CONFIG_FILENAMES:
-                if not config[name]:
+        if show_config and self._base_config:
+            summary = {}
+            arch_config_plus = {}
+            arch_config_minus = {}
+            arch_config_change = {}
+            arch_list = []
+
+            for target in board_dict:
+                if target not in board_selected:
+                    continue
+                arch = board_selected[target].arch
+                if arch not in arch_list:
+                    arch_list.append(arch)
+
+            for arch in arch_list:
+                arch_config_plus[arch] = {}
+                arch_config_minus[arch] = {}
+                arch_config_change[arch] = {}
+                for name in CONFIG_FILENAMES:
+                    arch_config_plus[arch][name] = {}
+                    arch_config_minus[arch][name] = {}
+                    arch_config_change[arch][name] = {}
+
+            for target in board_dict:
+                if target not in board_selected:
                     continue
-                config_plus = {}
-                config_minus = {}
-                config_change = {}
-                base = self._base_config[name]
-                for key, value in config[name].iteritems():
-                    if key not in base:
-                        config_plus[key] = value
-                        all_config_plus[key] = value
-                for key, value in base.iteritems():
-                    if key not in config[name]:
-                        config_minus[key] = value
-                        all_config_minus[key] = value
-                for key, value in base.iteritems():
-                    new_value = base[key]
-                    if key in config[name] and value != new_value:
-                        desc = '%s -> %s' % (value, new_value)
-                        config_change[key] = desc
-                        all_config_change[key] = desc
-                _ShowConfig(name, config_plus, config_minus, config_change)
-            _ShowConfig('all', all_config_plus, all_config_minus,
-                        all_config_change)
+
+                arch = board_selected[target].arch
+
+                all_config_plus = {}
+                all_config_minus = {}
+                all_config_change = {}
+                tbase = self._base_config[target]
+                tconfig = config[target]
+                lines = []
+                for name in CONFIG_FILENAMES:
+                    if not tconfig.config[name]:
+                        continue
+                    config_plus = {}
+                    config_minus = {}
+                    config_change = {}
+                    base = tbase.config[name]
+                    for key, value in tconfig.config[name].iteritems():
+                        if key not in base:
+                            config_plus[key] = value
+                            all_config_plus[key] = value
+                    for key, value in base.iteritems():
+                        if key not in tconfig.config[name]:
+                            config_minus[key] = value
+                            all_config_minus[key] = value
+                    for key, value in base.iteritems():
+                        new_value = tconfig.config.get(key)
+                        if new_value and value != new_value:
+                            desc = '%s -> %s' % (value, new_value)
+                            config_change[key] = desc
+                            all_config_change[key] = desc
+
+                    arch_config_plus[arch][name].update(config_plus)
+                    arch_config_minus[arch][name].update(config_minus)
+                    arch_config_change[arch][name].update(config_change)
+
+                    _AddConfig(lines, name, config_plus, config_minus,
+                               config_change)
+                _AddConfig(lines, 'all', all_config_plus, all_config_minus,
+                           all_config_change)
+                summary[target] = '\n'.join(lines)
+
+            lines_by_target = {}
+            for target, lines in summary.iteritems():
+                if lines in lines_by_target:
+                    lines_by_target[lines].append(target)
+                else:
+                    lines_by_target[lines] = [target]
+
+            for arch in arch_list:
+                lines = []
+                all_plus = {}
+                all_minus = {}
+                all_change = {}
+                for name in CONFIG_FILENAMES:
+                    all_plus.update(arch_config_plus[arch][name])
+                    all_minus.update(arch_config_minus[arch][name])
+                    all_change.update(arch_config_change[arch][name])
+                    _AddConfig(lines, name, arch_config_plus[arch][name],
+                               arch_config_minus[arch][name],
+                               arch_config_change[arch][name])
+                _AddConfig(lines, 'all', all_plus, all_minus, all_change)
+                #arch_summary[target] = '\n'.join(lines)
+                if lines:
+                    Print('%s:' % arch)
+                    _OutputConfigInfo(lines)
+
+            for lines, targets in lines_by_target.iteritems():
+                if not lines:
+                    continue
+                Print('%s :' % ' '.join(sorted(targets)))
+                _OutputConfigInfo(lines.split('\n'))
+
 
         # Save our updated information for the next call to this function
         self._base_board_dict = board_dict
index 1f95203eea9ed12c88ccf7af5aee75c5eee1f098..48059c02b550ee8db3cbfc7c9702b152936a0d4e 100644 (file)
@@ -707,10 +707,12 @@ int inject_region(char *image, int size, int region_type, char *region_fname)
  *                     8MB ROM the start address is 0xfff80000.
  * @write_fname:       Filename to add to the image
  * @offset_uboot_top:  Offset of the top of U-Boot
+ * @offset_uboot_start:        Offset of the start of U-Boot
  * @return number of bytes written if OK, -ve on error
  */
 static int write_data(char *image, int size, unsigned int addr,
-                     const char *write_fname, int offset_uboot_top)
+                     const char *write_fname, int offset_uboot_top,
+                     int offset_uboot_start)
 {
        int write_fd, write_size;
        int offset;
@@ -720,13 +722,25 @@ static int write_data(char *image, int size, unsigned int addr,
                return write_fd;
 
        offset = (uint32_t)(addr + size);
-       if (offset_uboot_top && offset_uboot_top >= offset) {
-               fprintf(stderr, "U-Boot image overlaps with region '%s'\n",
-                       write_fname);
-               fprintf(stderr,
-                       "U-Boot finishes at offset %x, file starts at %x\n",
-                       offset_uboot_top, offset);
-               return -EXDEV;
+       if (offset_uboot_top) {
+               if (offset_uboot_start < offset &&
+                   offset_uboot_top >= offset) {
+                       fprintf(stderr, "U-Boot image overlaps with region '%s'\n",
+                               write_fname);
+                       fprintf(stderr,
+                               "U-Boot finishes at offset %x, file starts at %x\n",
+                               offset_uboot_top, offset);
+                       return -EXDEV;
+               }
+               if (offset_uboot_start > offset &&
+                   offset_uboot_start <= offset + write_size) {
+                       fprintf(stderr, "U-Boot image overlaps with region '%s'\n",
+                               write_fname);
+                       fprintf(stderr,
+                               "U-Boot starts at offset %x, file finishes at %x\n",
+                               offset_uboot_start, offset + write_size);
+                       return -EXDEV;
+               }
        }
        debug("Writing %s to offset %#x\n", write_fname, offset);
 
@@ -927,27 +941,36 @@ static int write_ucode(char *image, int size, struct input_file *fdt,
  */
 static int write_uboot(char *image, int size, struct input_file *uboot,
                       struct input_file *fdt, unsigned int ucode_ptr,
-                      int collate_ucode)
+                      int collate_ucode, int *offset_uboot_top,
+                      int *offset_uboot_start)
 {
-       const void *blob;
        int uboot_size, fdt_size;
+       int uboot_top;
 
-       uboot_size = write_data(image, size, uboot->addr, uboot->fname, 0);
+       uboot_size = write_data(image, size, uboot->addr, uboot->fname, 0, 0);
        if (uboot_size < 0)
                return uboot_size;
        fdt->addr = uboot->addr + uboot_size;
        debug("U-Boot size %#x, FDT at %#x\n", uboot_size, fdt->addr);
-       fdt_size = write_data(image, size, fdt->addr, fdt->fname, 0);
+       fdt_size = write_data(image, size, fdt->addr, fdt->fname, 0, 0);
        if (fdt_size < 0)
                return fdt_size;
-       blob = (void *)image + (uint32_t)(fdt->addr + size);
+
+       uboot_top = (uint32_t)(fdt->addr + size) + fdt_size;
 
        if (ucode_ptr) {
-               return write_ucode(image, size, fdt, fdt_size, ucode_ptr,
-                                  collate_ucode);
+               uboot_top = write_ucode(image, size, fdt, fdt_size, ucode_ptr,
+                                       collate_ucode);
+               if (uboot_top < 0)
+                       return uboot_top;
        }
 
-       return ((char *)blob + fdt_size) - image;
+       if (offset_uboot_top && offset_uboot_start) {
+               *offset_uboot_top = uboot_top;
+               *offset_uboot_start = (uint32_t)(uboot->addr + size);
+       }
+
+       return 0;
 }
 
 static void print_version(void)
@@ -1268,13 +1291,14 @@ int main(int argc, char *argv[])
        }
 
        if (mode_write_descriptor)
-               ret = write_data(image, size, -size, desc_fname, 0);
+               ret = write_data(image, size, -size, desc_fname, 0, 0);
 
        if (mode_inject)
                ret = inject_region(image, size, region_type, inject_fname);
 
        if (mode_write) {
                int offset_uboot_top = 0;
+               int offset_uboot_start = 0;
 
                for (wr_idx = 0; wr_idx < wr_num; wr_idx++) {
                        ifile = &input_file[wr_idx];
@@ -1282,11 +1306,13 @@ int main(int argc, char *argv[])
                                continue;
                        } else if (ifile->type == IF_uboot) {
                                ret = write_uboot(image, size, ifile, fdt,
-                                                 ucode_ptr, collate_ucode);
-                               offset_uboot_top = ret;
+                                                 ucode_ptr, collate_ucode,
+                                                 &offset_uboot_top,
+                                                 &offset_uboot_start);
                        } else {
                                ret = write_data(image, size, ifile->addr,
-                                        ifile->fname, offset_uboot_top);
+                                                ifile->fname, offset_uboot_top,
+                                                offset_uboot_start);
                        }
                        if (ret < 0)
                                break;
index 99bbf2f459e5ae2d66bb69a25b55011a990b84c3..ad2deb58dceae81e97884e0a19cf9c3541a78f6d 100644 (file)
@@ -60,6 +60,7 @@ struct image_tool_params {
        const char *comment;    /* Comment to add to signature node */
        int require_keys;       /* 1 to mark signing keys as 'required' */
        int file_size;          /* Total size of output file */
+       int orig_file_size;     /* Original size for file before padding */
 };
 
 /*
index 909efaba2d16c44eb4ca60682f20fba845dc8149..0da48a733d4296f521cc3cbc8b2a0513e4bf7e69 100644 (file)
@@ -288,7 +288,11 @@ static void set_imx_hdr_v2(struct imx_header *imxhdr, uint32_t dcd_len,
        hdr_base = entry_point - imximage_init_loadsize +
                flash_offset;
        fhdr_v2->self = hdr_base;
-       fhdr_v2->dcd_ptr = hdr_base + offsetof(imx_header_v2_t, dcd_table);
+       if (dcd_len > 0)
+               fhdr_v2->dcd_ptr = hdr_base
+                       + offsetof(imx_header_v2_t, dcd_table);
+       else
+               fhdr_v2->dcd_ptr = 0;
        fhdr_v2->boot_data_ptr = hdr_base
                        + offsetof(imx_header_v2_t, boot_data);
        hdr_v2->boot_data.start = entry_point - imximage_init_loadsize;
index e81d4550835c6763bcab21e0b2b8ab2bf46baba3..c50af0510dc0b997ec5a63d20bca917fe621bed8 100644 (file)
@@ -488,12 +488,6 @@ copy_file (int ifd, const char *datafile, int pad)
        int size;
        struct image_type_params *tparams = imagetool_get_type(params.type);
 
-       if (pad >= sizeof(zeros)) {
-               fprintf(stderr, "%s: Can't pad to %d\n",
-                       params.cmdname, pad);
-               exit(EXIT_FAILURE);
-       }
-
        memset(zeros, 0, sizeof(zeros));
 
        if (params.vflag) {
@@ -563,11 +557,18 @@ copy_file (int ifd, const char *datafile, int pad)
                        exit (EXIT_FAILURE);
                }
        } else if (pad > 1) {
-               if (write(ifd, (char *)&zeros, pad) != pad) {
-                       fprintf(stderr, "%s: Write error on %s: %s\n",
-                               params.cmdname, params.imagefile,
-                               strerror(errno));
-                       exit(EXIT_FAILURE);
+               while (pad > 0) {
+                       int todo = sizeof(zeros);
+
+                       if (todo > pad)
+                               todo = pad;
+                       if (write(ifd, (char *)&zeros, todo) != todo) {
+                               fprintf(stderr, "%s: Write error on %s: %s\n",
+                                       params.cmdname, params.imagefile,
+                                       strerror(errno));
+                               exit(EXIT_FAILURE);
+                       }
+                       pad -= todo;
                }
        }
 
index 3361251c8e7fffcb4ccbc3e29eb5e2e956608b0c..676d392fb4d5a5c505fe505d4ab3d1ce25bc61eb 100644 (file)
@@ -99,7 +99,7 @@ int main(int argc, char *argv[])
                return EXIT_FAILURE;
        }
 
-       memset(img.pad, 0, BLOCK_SIZE);
+       memset(&img, 0, sizeof(img));
 
        /* get input file size */
        file_size = lseek(fd_in, 0, SEEK_END);
index 185b327920189926a6ecb4ce054b525554f9dafb..3434c81792cbcb4827849c87a2f83acd22e8330d 100644 (file)
@@ -7,6 +7,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
+#include <endian.h>
 #include <fcntl.h>
 #include <sys/stat.h>
 #include <sys/types.h>
@@ -271,23 +272,10 @@ static struct mx28_nand_fcb *mx28_nand_get_fcb(uint32_t size)
        fcb->ecc_block_0_size =         512;
        fcb->ecc_block_n_size =         512;
        fcb->metadata_bytes =           10;
-
-       if (nand_writesize == 2048) {
-               fcb->ecc_block_n_ecc_type =             4;
-               fcb->ecc_block_0_ecc_type =             4;
-       } else if (nand_writesize == 4096) {
-               if (nand_oobsize == 128) {
-                       fcb->ecc_block_n_ecc_type =     4;
-                       fcb->ecc_block_0_ecc_type =     4;
-               } else if (nand_oobsize == 218) {
-                       fcb->ecc_block_n_ecc_type =     8;
-                       fcb->ecc_block_0_ecc_type =     8;
-               } else if (nand_oobsize == 224) {
-                       fcb->ecc_block_n_ecc_type =     8;
-                       fcb->ecc_block_0_ecc_type =     8;
-               }
-       }
-
+       fcb->ecc_block_n_ecc_type = mx28_nand_get_ecc_strength(
+                                       nand_writesize, nand_oobsize) >> 1;
+       fcb->ecc_block_0_ecc_type = mx28_nand_get_ecc_strength(
+                                       nand_writesize, nand_oobsize) >> 1;
        if (fcb->ecc_block_n_ecc_type == 0) {
                printf("MX28 NAND: Unsupported NAND geometry\n");
                goto err;
@@ -569,15 +557,15 @@ static int mx28_create_sd_image(int infd, int outfd)
 
        cb = (struct mx28_sd_config_block *)buf;
 
-       cb->signature = 0x00112233;
-       cb->primary_boot_tag = 0x1;
-       cb->secondary_boot_tag = 0x1;
-       cb->num_copies = 1;
-       cb->drv_info[0].chip_num = 0x0;
-       cb->drv_info[0].drive_type = 0x0;
-       cb->drv_info[0].tag = 0x1;
-       cb->drv_info[0].first_sector_number = sd_sector + 4;
-       cb->drv_info[0].sector_count = (size - 4) / 512;
+       cb->signature = htole32(0x00112233);
+       cb->primary_boot_tag = htole32(0x1);
+       cb->secondary_boot_tag = htole32(0x1);
+       cb->num_copies = htole32(1);
+       cb->drv_info[0].chip_num = htole32(0x0);
+       cb->drv_info[0].drive_type = htole32(0x0);
+       cb->drv_info[0].tag = htole32(0x1);
+       cb->drv_info[0].first_sector_number = htole32(sd_sector + 4);
+       cb->drv_info[0].sector_count = htole32((size - 4) / 512);
 
        wr_size = write(outfd, buf, size);
        if (wr_size != size) {
index 67b086bd69c57d458cb878f407aef278fa4df426..9e739d89b6ff7ac261d6bc96b6c66def4b7d2937 100644 (file)
@@ -264,7 +264,7 @@ def CreatePatches(start, count, series):
     """
     if series.get('version'):
         version = '%s ' % series['version']
-    cmd = ['git', 'format-patch', '-D', '-M', '--signoff']
+    cmd = ['git', 'format-patch', '-M', '--signoff']
     if series.get('cover'):
         cmd.append('--cover-letter')
     prefix = series.GetPatchPrefix()
index a17a7d1de7b1a69bd5257cbbc004a84b149c0ca5..3399f2c8ddc34b7e81b7a050c0fda83538c74c14 100644 (file)
@@ -12,7 +12,7 @@ import terminal
 
 # Series-xxx tags that we understand
 valid_series = ['to', 'cc', 'version', 'changes', 'prefix', 'notes', 'name',
-                'cover-cc', 'process_log']
+                'cover_cc', 'process_log']
 
 class Series(dict):
     """Holds information about a patch series, including all tags.
diff --git a/tools/rkcommon.c b/tools/rkcommon.c
new file mode 100644 (file)
index 0000000..4389622
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * (C) Copyright 2015 Google,  Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * Helper functions for Rockchip images
+ */
+
+#include "imagetool.h"
+#include <image.h>
+#include <rc4.h>
+#include "mkimage.h"
+#include "rkcommon.h"
+
+enum {
+       RK_SIGNATURE            = 0x0ff0aa55,
+};
+
+/**
+ * struct header0_info - header block for boot ROM
+ *
+ * This is stored at SD card block 64 (where each block is 512 bytes, or at
+ * the start of SPI flash. It is encoded with RC4.
+ *
+ * @signature:         Signature (must be RKSD_SIGNATURE)
+ * @disable_rc4:       0 to use rc4 for boot image,  1 to use plain binary
+ * @code1_offset:      Offset in blocks of the SPL code from this header
+ *                     block. E.g. 4 means 2KB after the start of this header.
+ * Other fields are not used by U-Boot
+ */
+struct header0_info {
+       uint32_t signature;
+       uint8_t reserved[4];
+       uint32_t disable_rc4;
+       uint16_t code1_offset;
+       uint16_t code2_offset;
+       uint8_t reserved1[490];
+       uint16_t usflashdatasize;
+       uint16_t ucflashbootsize;
+       uint8_t reserved2[2];
+};
+
+static unsigned char rc4_key[16] = {
+       124, 78, 3, 4, 85, 5, 9, 7,
+       45, 44, 123, 56, 23, 13, 23, 17
+};
+
+int rkcommon_set_header(void *buf, uint file_size)
+{
+       struct header0_info *hdr;
+
+       if (file_size > RK_MAX_CODE1_SIZE)
+               return -ENOSPC;
+
+       memset(buf,  '\0', RK_CODE1_OFFSET * RK_BLK_SIZE);
+       hdr = (struct header0_info *)buf;
+       hdr->signature = RK_SIGNATURE;
+       hdr->disable_rc4 = 1;
+       hdr->code1_offset = RK_CODE1_OFFSET;
+       hdr->code2_offset = 8;
+
+       hdr->usflashdatasize = (file_size + RK_BLK_SIZE - 1) / RK_BLK_SIZE;
+       hdr->usflashdatasize = (hdr->usflashdatasize + 3) & ~3;
+       hdr->ucflashbootsize = hdr->usflashdatasize;
+
+       debug("size=%x, %x\n", params->file_size, hdr->usflashdatasize);
+
+       rc4_encode(buf, RK_BLK_SIZE, rc4_key);
+
+       return 0;
+}
diff --git a/tools/rkcommon.h b/tools/rkcommon.h
new file mode 100644 (file)
index 0000000..57fd726
--- /dev/null
@@ -0,0 +1,28 @@
+/*
+ * (C) Copyright 2015 Google,  Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _RKCOMMON_H
+#define _RKCOMMON_H
+
+enum {
+       RK_BLK_SIZE             = 512,
+       RK_CODE1_OFFSET         = 4,
+       RK_MAX_CODE1_SIZE       = 32 << 10,
+};
+
+/**
+ * rkcommon_set_header() - set up the header for a Rockchip boot image
+ *
+ * This sets up a 2KB header which can be interpreted by the Rockchip boot ROM.
+ *
+ * @buf:       Pointer to header place (must be at least 2KB in size)
+ * @file_size: Size of the file we want the boot ROM to load, in bytes
+ * @return 0 if OK, -ENOSPC if too large
+ */
+int rkcommon_set_header(void *buf, uint file_size);
+
+#endif
diff --git a/tools/rkimage.c b/tools/rkimage.c
new file mode 100644 (file)
index 0000000..7b292f4
--- /dev/null
@@ -0,0 +1,65 @@
+/*
+ * (C) Copyright 2015 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * See README.rockchip for details of the rkimage format
+ */
+
+#include "imagetool.h"
+#include <image.h>
+
+static uint32_t header;
+
+static int rkimage_check_params(struct image_tool_params *params)
+{
+       return 0;
+}
+
+static int rkimage_verify_header(unsigned char *buf, int size,
+                                struct image_tool_params *params)
+{
+       return 0;
+}
+
+static void rkimage_print_header(const void *buf)
+{
+}
+
+static void rkimage_set_header(void *buf, struct stat *sbuf, int ifd,
+                              struct image_tool_params *params)
+{
+       memcpy(buf, "RK32", 4);
+}
+
+static int rkimage_extract_subimage(void *buf, struct image_tool_params *params)
+{
+       return 0;
+}
+
+static int rkimage_check_image_type(uint8_t type)
+{
+       if (type == IH_TYPE_RKIMAGE)
+               return EXIT_SUCCESS;
+       else
+               return EXIT_FAILURE;
+}
+
+/*
+ * rk_image parameters
+ */
+U_BOOT_IMAGE_TYPE(
+       rkimage,
+       "Rockchip Boot Image support",
+       4,
+       &header,
+       rkimage_check_params,
+       rkimage_verify_header,
+       rkimage_print_header,
+       rkimage_set_header,
+       rkimage_extract_subimage,
+       rkimage_check_image_type,
+       NULL,
+       NULL
+);
diff --git a/tools/rksd.c b/tools/rksd.c
new file mode 100644 (file)
index 0000000..a8dbe98
--- /dev/null
@@ -0,0 +1,97 @@
+/*
+ * (C) Copyright 2015 Google,  Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * See README.rockchip for details of the rksd format
+ */
+
+#include "imagetool.h"
+#include <image.h>
+#include <rc4.h>
+#include "mkimage.h"
+#include "rkcommon.h"
+
+enum {
+       RKSD_SPL_HDR_START      = RK_CODE1_OFFSET * RK_BLK_SIZE,
+       RKSD_SPL_START          = RKSD_SPL_HDR_START + 4,
+       RKSD_HEADER_LEN         = RKSD_SPL_START,
+};
+
+static char dummy_hdr[RKSD_HEADER_LEN];
+
+static int rksd_check_params(struct image_tool_params *params)
+{
+       return 0;
+}
+
+static int rksd_verify_header(unsigned char *buf,  int size,
+                                struct image_tool_params *params)
+{
+       return 0;
+}
+
+static void rksd_print_header(const void *buf)
+{
+}
+
+static void rksd_set_header(void *buf,  struct stat *sbuf,  int ifd,
+                              struct image_tool_params *params)
+{
+       unsigned int size;
+       int ret;
+
+       size = params->file_size - RKSD_SPL_HDR_START;
+       ret = rkcommon_set_header(buf, size);
+       if (ret) {
+               /* TODO(sjg@chromium.org): This method should return an error */
+               printf("Warning: SPL image is too large (size %#x) and will not boot\n",
+                      size);
+       }
+
+       memcpy(buf + RKSD_SPL_HDR_START, "RK32", 4);
+}
+
+static int rksd_extract_subimage(void *buf,  struct image_tool_params *params)
+{
+       return 0;
+}
+
+static int rksd_check_image_type(uint8_t type)
+{
+       if (type == IH_TYPE_RKSD)
+               return EXIT_SUCCESS;
+       else
+               return EXIT_FAILURE;
+}
+
+/* We pad the file out to a fixed size - this method returns that size */
+static int rksd_vrec_header(struct image_tool_params *params,
+                           struct image_type_params *tparams)
+{
+       int pad_size;
+
+       pad_size = RKSD_SPL_HDR_START + RK_MAX_CODE1_SIZE;
+       debug("pad_size %x\n", pad_size);
+
+       return pad_size - params->file_size;
+}
+
+/*
+ * rk_sd parameters
+ */
+U_BOOT_IMAGE_TYPE(
+       rksd,
+       "Rockchip SD Boot Image support",
+       RKSD_HEADER_LEN,
+       dummy_hdr,
+       rksd_check_params,
+       rksd_verify_header,
+       rksd_print_header,
+       rksd_set_header,
+       rksd_extract_subimage,
+       rksd_check_image_type,
+       NULL,
+       rksd_vrec_header
+);
diff --git a/tools/rkspi.c b/tools/rkspi.c
new file mode 100644 (file)
index 0000000..a3c4c73
--- /dev/null
@@ -0,0 +1,119 @@
+/*
+ * (C) Copyright 2015 Google,  Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * See README.rockchip for details of the rkspi format
+ */
+
+#include "imagetool.h"
+#include <image.h>
+#include <rc4.h>
+#include "mkimage.h"
+#include "rkcommon.h"
+
+enum {
+       RKSPI_SPL_HDR_START     = RK_CODE1_OFFSET * RK_BLK_SIZE,
+       RKSPI_SPL_START         = RKSPI_SPL_HDR_START + 4,
+       RKSPI_HEADER_LEN        = RKSPI_SPL_START,
+       RKSPI_SECT_LEN          = RK_BLK_SIZE * 4,
+};
+
+static char dummy_hdr[RKSPI_HEADER_LEN];
+
+static int rkspi_check_params(struct image_tool_params *params)
+{
+       return 0;
+}
+
+static int rkspi_verify_header(unsigned char *buf, int size,
+                              struct image_tool_params *params)
+{
+       return 0;
+}
+
+static void rkspi_print_header(const void *buf)
+{
+}
+
+static void rkspi_set_header(void *buf, struct stat *sbuf, int ifd,
+                            struct image_tool_params *params)
+{
+       int sector;
+       unsigned int size;
+       int ret;
+
+       size = params->orig_file_size;
+       ret = rkcommon_set_header(buf, size);
+       debug("size %x\n", size);
+       if (ret) {
+               /* TODO(sjg@chromium.org): This method should return an error */
+               printf("Warning: SPL image is too large (size %#x) and will not boot\n",
+                      size);
+       }
+
+       memcpy(buf + RKSPI_SPL_HDR_START, "RK32", 4);
+
+       /*
+        * Spread the image out so we only use the first 2KB of each 4KB
+        * region. This is a feature of the SPI format required by the Rockchip
+        * boot ROM. Its rationale is unknown.
+        */
+       for (sector = size / RKSPI_SECT_LEN - 1; sector >= 0; sector--) {
+               printf("sector %u\n", sector);
+               memmove(buf + sector * RKSPI_SECT_LEN * 2,
+                       buf + sector * RKSPI_SECT_LEN,
+                       RKSPI_SECT_LEN);
+               memset(buf + sector * RKSPI_SECT_LEN * 2 + RKSPI_SECT_LEN,
+                      '\0', RKSPI_SECT_LEN);
+       }
+}
+
+static int rkspi_extract_subimage(void *buf, struct image_tool_params *params)
+{
+       return 0;
+}
+
+static int rkspi_check_image_type(uint8_t type)
+{
+       if (type == IH_TYPE_RKSPI)
+               return EXIT_SUCCESS;
+       else
+               return EXIT_FAILURE;
+}
+
+/* We pad the file out to a fixed size - this method returns that size */
+static int rkspi_vrec_header(struct image_tool_params *params,
+                            struct image_type_params *tparams)
+{
+       int pad_size;
+
+       pad_size = (RK_MAX_CODE1_SIZE + 0x7ff) / 0x800 * 0x800;
+       params->orig_file_size = pad_size;
+
+       /* We will double the image size due to the SPI format */
+       pad_size *= 2;
+       pad_size += RKSPI_SPL_HDR_START;
+       debug("pad_size %x\n", pad_size);
+
+       return pad_size - params->file_size;
+}
+
+/*
+ * rk_spi parameters
+ */
+U_BOOT_IMAGE_TYPE(
+       rkspi,
+       "Rockchip SPI Boot Image support",
+       RKSPI_HEADER_LEN,
+       dummy_hdr,
+       rkspi_check_params,
+       rkspi_verify_header,
+       rkspi_print_header,
+       rkspi_set_header,
+       rkspi_extract_subimage,
+       rkspi_check_image_type,
+       NULL,
+       rkspi_vrec_header
+);