]> git.sur5r.net Git - u-boot/commitdiff
Merge tag 'signed-efi-next' of git://github.com/agraf/u-boot
authorTom Rini <trini@konsulko.com>
Mon, 31 Jul 2017 11:27:45 +0000 (07:27 -0400)
committerTom Rini <trini@konsulko.com>
Mon, 31 Jul 2017 11:27:45 +0000 (07:27 -0400)
Patch queue for efi - 2017-07-29

A lot of EFI greatness this time around. Thanks a lot to the
two amazing new contributors

  Heinrich Schuchardt and
  Rob Clark

we now gain

  - stable objects across multiple bootefi invocations
  - fixes for shim
  - fixes for ipxe
  - protocol installation
  - device path conversion to/from text
  - working "lsefi" support in grub
  - working notifiers
  - various bug fixes

2068 files changed:
Documentation/devicetree/bindings/phy/no-op.txt [new file with mode: 0644]
Documentation/devicetree/bindings/rtc/brcm,brcmstb-waketimer.txt [new file with mode: 0644]
Kconfig
MAINTAINERS
Makefile
README
arch/Kconfig
arch/arm/Kconfig
arch/arm/Makefile
arch/arm/cpu/arm926ejs/mx27/generic.c
arch/arm/cpu/arm926ejs/mxs/mxs.c
arch/arm/cpu/armv7/Makefile
arch/arm/cpu/armv7/mx5/Kconfig [deleted file]
arch/arm/cpu/armv7/mx5/Makefile [deleted file]
arch/arm/cpu/armv7/mx5/clock.c [deleted file]
arch/arm/cpu/armv7/mx5/lowlevel_init.S [deleted file]
arch/arm/cpu/armv7/mx5/soc.c [deleted file]
arch/arm/cpu/armv7/mx6/Kconfig [deleted file]
arch/arm/cpu/armv7/mx6/Makefile [deleted file]
arch/arm/cpu/armv7/mx6/clock.c [deleted file]
arch/arm/cpu/armv7/mx6/ddr.c [deleted file]
arch/arm/cpu/armv7/mx6/litesom.c [deleted file]
arch/arm/cpu/armv7/mx6/mp.c [deleted file]
arch/arm/cpu/armv7/mx6/opos6ul.c [deleted file]
arch/arm/cpu/armv7/mx6/soc.c [deleted file]
arch/arm/cpu/armv7/mx7/Kconfig [deleted file]
arch/arm/cpu/armv7/mx7/Makefile [deleted file]
arch/arm/cpu/armv7/mx7/clock.c [deleted file]
arch/arm/cpu/armv7/mx7/clock_slice.c [deleted file]
arch/arm/cpu/armv7/mx7/psci-mx7.c [deleted file]
arch/arm/cpu/armv7/mx7/psci.S [deleted file]
arch/arm/cpu/armv7/mx7/soc.c [deleted file]
arch/arm/cpu/armv7/mx7ulp/Kconfig [deleted file]
arch/arm/cpu/armv7/mx7ulp/Makefile [deleted file]
arch/arm/cpu/armv7/mx7ulp/clock.c [deleted file]
arch/arm/cpu/armv7/mx7ulp/iomux.c [deleted file]
arch/arm/cpu/armv7/mx7ulp/pcc.c [deleted file]
arch/arm/cpu/armv7/mx7ulp/scg.c [deleted file]
arch/arm/cpu/armv7/mx7ulp/soc.c [deleted file]
arch/arm/cpu/armv7/vf610/generic.c
arch/arm/cpu/armv8/fsl-layerscape/ppa.c
arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/armada-385-turris-omnia.dts [new file with mode: 0644]
arch/arm/dts/meson-gx.dtsi
arch/arm/dts/meson-gxbb-odroidc2.dts
arch/arm/dts/meson-gxbb.dtsi
arch/arm/dts/rk3036-sdk-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/rk3229-evb.dts
arch/arm/dts/rk322x.dtsi
arch/arm/dts/rk3288-phycore-som.dtsi
arch/arm/dts/rk3399-firefly.dts
arch/arm/dts/rk3399-puma.dtsi
arch/arm/dts/stm32f746-disco.dts
arch/arm/dts/stm32f746.dtsi
arch/arm/dts/stm32f769-disco.dts
arch/arm/dts/tegra124-nyan-big.dts
arch/arm/dts/uniphier-ld11-global.dts
arch/arm/dts/uniphier-ld11-ref.dts
arch/arm/dts/uniphier-ld11.dtsi
arch/arm/dts/uniphier-ld20-global.dts
arch/arm/dts/uniphier-ld20-ref.dts
arch/arm/dts/uniphier-ld20.dtsi
arch/arm/imx-common/Kconfig [deleted file]
arch/arm/imx-common/Makefile [deleted file]
arch/arm/imx-common/cache.c [deleted file]
arch/arm/imx-common/cmd_bmode.c [deleted file]
arch/arm/imx-common/cmd_dek.c [deleted file]
arch/arm/imx-common/cmd_hdmidet.c [deleted file]
arch/arm/imx-common/cpu.c [deleted file]
arch/arm/imx-common/ddrmc-vf610.c [deleted file]
arch/arm/imx-common/hab.c [deleted file]
arch/arm/imx-common/i2c-mxv7.c [deleted file]
arch/arm/imx-common/imx_bootaux.c [deleted file]
arch/arm/imx-common/init.c [deleted file]
arch/arm/imx-common/iomux-v3.c [deleted file]
arch/arm/imx-common/misc.c [deleted file]
arch/arm/imx-common/rdc-sema.c [deleted file]
arch/arm/imx-common/sata.c [deleted file]
arch/arm/imx-common/speed.c [deleted file]
arch/arm/imx-common/spl.c [deleted file]
arch/arm/imx-common/spl_sd.cfg [deleted file]
arch/arm/imx-common/syscounter.c [deleted file]
arch/arm/imx-common/timer.c [deleted file]
arch/arm/imx-common/video.c [deleted file]
arch/arm/include/asm/arch-meson/gpio.h [new file with mode: 0644]
arch/arm/include/asm/arch-mx25/gpio.h
arch/arm/include/asm/arch-mx25/iomux-mx25.h
arch/arm/include/asm/arch-mx31/gpio.h
arch/arm/include/asm/arch-mx31/sys_proto.h
arch/arm/include/asm/arch-mx35/gpio.h
arch/arm/include/asm/arch-mx35/iomux-mx35.h
arch/arm/include/asm/arch-mx35/sys_proto.h
arch/arm/include/asm/arch-mx5/gpio.h
arch/arm/include/asm/arch-mx5/iomux-mx51.h
arch/arm/include/asm/arch-mx5/iomux-mx53.h
arch/arm/include/asm/arch-mx5/sys_proto.h
arch/arm/include/asm/arch-mx6/gpio.h
arch/arm/include/asm/arch-mx6/imx-regs.h
arch/arm/include/asm/arch-mx6/mx6-pins.h
arch/arm/include/asm/arch-mx6/mx6sl_pins.h
arch/arm/include/asm/arch-mx6/mx6sll_pins.h
arch/arm/include/asm/arch-mx6/mx6sx_pins.h
arch/arm/include/asm/arch-mx6/mx6ul_pins.h
arch/arm/include/asm/arch-mx6/mx6ull_pins.h
arch/arm/include/asm/arch-mx6/sys_proto.h
arch/arm/include/asm/arch-mx7/gpio.h
arch/arm/include/asm/arch-mx7/imx-regs.h
arch/arm/include/asm/arch-mx7/mx7-pins.h
arch/arm/include/asm/arch-mx7/mx7d_pins.h
arch/arm/include/asm/arch-mx7/sys_proto.h
arch/arm/include/asm/arch-mx7ulp/sys_proto.h
arch/arm/include/asm/arch-mxs/imx-regs.h
arch/arm/include/asm/arch-mxs/regs-clkctrl-mx23.h
arch/arm/include/asm/arch-mxs/regs-clkctrl-mx28.h
arch/arm/include/asm/arch-mxs/regs-digctl.h
arch/arm/include/asm/arch-mxs/regs-i2c.h
arch/arm/include/asm/arch-mxs/regs-lradc.h
arch/arm/include/asm/arch-mxs/regs-ocotp.h
arch/arm/include/asm/arch-mxs/regs-pinctrl.h
arch/arm/include/asm/arch-mxs/regs-power-mx23.h
arch/arm/include/asm/arch-mxs/regs-power-mx28.h
arch/arm/include/asm/arch-mxs/regs-rtc.h
arch/arm/include/asm/arch-mxs/regs-ssp.h
arch/arm/include/asm/arch-mxs/regs-timrot.h
arch/arm/include/asm/arch-mxs/regs-uartapp.h
arch/arm/include/asm/arch-mxs/sys_proto.h
arch/arm/include/asm/arch-rockchip/boot0.h
arch/arm/include/asm/arch-rockchip/cru_rk3368.h
arch/arm/include/asm/arch-rockchip/cru_rk3399.h
arch/arm/include/asm/arch-rockchip/pwm.h
arch/arm/include/asm/arch-rockchip/timer.h
arch/arm/include/asm/arch-stm32f7/fmc.h [deleted file]
arch/arm/include/asm/arch-stm32f7/rcc.h
arch/arm/include/asm/arch-stm32f7/stm32.h
arch/arm/include/asm/arch-stm32f7/stm32_periph.h
arch/arm/include/asm/arch-tegra/clock.h
arch/arm/include/asm/arch-tegra/tegra.h
arch/arm/include/asm/arch-tegra/xusb-padctl.h
arch/arm/include/asm/arch-vf610/iomux-vf610.h
arch/arm/include/asm/ehci-omap.h
arch/arm/include/asm/imx-common/boot_mode.h [deleted file]
arch/arm/include/asm/imx-common/dma.h [deleted file]
arch/arm/include/asm/imx-common/gpio.h [deleted file]
arch/arm/include/asm/imx-common/hab.h [deleted file]
arch/arm/include/asm/imx-common/imximage.cfg [deleted file]
arch/arm/include/asm/imx-common/iomux-v3.h [deleted file]
arch/arm/include/asm/imx-common/mx5_video.h [deleted file]
arch/arm/include/asm/imx-common/mxc_i2c.h [deleted file]
arch/arm/include/asm/imx-common/rdc-sema.h [deleted file]
arch/arm/include/asm/imx-common/regs-apbh.h [deleted file]
arch/arm/include/asm/imx-common/regs-bch.h [deleted file]
arch/arm/include/asm/imx-common/regs-common.h [deleted file]
arch/arm/include/asm/imx-common/regs-gpmi.h [deleted file]
arch/arm/include/asm/imx-common/regs-lcdif.h [deleted file]
arch/arm/include/asm/imx-common/regs-usbphy.h [deleted file]
arch/arm/include/asm/imx-common/sata.h [deleted file]
arch/arm/include/asm/imx-common/spi.h [deleted file]
arch/arm/include/asm/imx-common/sys_proto.h [deleted file]
arch/arm/include/asm/imx-common/syscounter.h [deleted file]
arch/arm/include/asm/imx-common/video.h [deleted file]
arch/arm/include/asm/mach-imx/boot_mode.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/dma.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/gpio.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/hab.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/imximage.cfg [new file with mode: 0644]
arch/arm/include/asm/mach-imx/iomux-v3.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/mx5_video.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/mxc_i2c.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/rdc-sema.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/regs-apbh.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/regs-bch.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/regs-common.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/regs-gpmi.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/regs-lcdif.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/regs-usbphy.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/sata.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/spi.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/sys_proto.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/syscounter.h [new file with mode: 0644]
arch/arm/include/asm/mach-imx/video.h [new file with mode: 0644]
arch/arm/include/asm/omap_common.h
arch/arm/include/asm/omap_sec_common.h
arch/arm/mach-exynos/Kconfig
arch/arm/mach-imx/Kconfig [new file with mode: 0644]
arch/arm/mach-imx/Makefile [new file with mode: 0644]
arch/arm/mach-imx/cache.c [new file with mode: 0644]
arch/arm/mach-imx/cmd_bmode.c [new file with mode: 0644]
arch/arm/mach-imx/cmd_dek.c [new file with mode: 0644]
arch/arm/mach-imx/cmd_hdmidet.c [new file with mode: 0644]
arch/arm/mach-imx/cpu.c [new file with mode: 0644]
arch/arm/mach-imx/ddrmc-vf610.c [new file with mode: 0644]
arch/arm/mach-imx/hab.c [new file with mode: 0644]
arch/arm/mach-imx/i2c-mxv7.c [new file with mode: 0644]
arch/arm/mach-imx/imx_bootaux.c [new file with mode: 0644]
arch/arm/mach-imx/init.c [new file with mode: 0644]
arch/arm/mach-imx/iomux-v3.c [new file with mode: 0644]
arch/arm/mach-imx/misc.c [new file with mode: 0644]
arch/arm/mach-imx/mx5/Kconfig [new file with mode: 0644]
arch/arm/mach-imx/mx5/Makefile [new file with mode: 0644]
arch/arm/mach-imx/mx5/clock.c [new file with mode: 0644]
arch/arm/mach-imx/mx5/lowlevel_init.S [new file with mode: 0644]
arch/arm/mach-imx/mx5/soc.c [new file with mode: 0644]
arch/arm/mach-imx/mx6/Kconfig [new file with mode: 0644]
arch/arm/mach-imx/mx6/Makefile [new file with mode: 0644]
arch/arm/mach-imx/mx6/clock.c [new file with mode: 0644]
arch/arm/mach-imx/mx6/ddr.c [new file with mode: 0644]
arch/arm/mach-imx/mx6/litesom.c [new file with mode: 0644]
arch/arm/mach-imx/mx6/mp.c [new file with mode: 0644]
arch/arm/mach-imx/mx6/opos6ul.c [new file with mode: 0644]
arch/arm/mach-imx/mx6/soc.c [new file with mode: 0644]
arch/arm/mach-imx/mx7/Kconfig [new file with mode: 0644]
arch/arm/mach-imx/mx7/Makefile [new file with mode: 0644]
arch/arm/mach-imx/mx7/clock.c [new file with mode: 0644]
arch/arm/mach-imx/mx7/clock_slice.c [new file with mode: 0644]
arch/arm/mach-imx/mx7/psci-mx7.c [new file with mode: 0644]
arch/arm/mach-imx/mx7/psci.S [new file with mode: 0644]
arch/arm/mach-imx/mx7/soc.c [new file with mode: 0644]
arch/arm/mach-imx/mx7ulp/Kconfig [new file with mode: 0644]
arch/arm/mach-imx/mx7ulp/Makefile [new file with mode: 0644]
arch/arm/mach-imx/mx7ulp/clock.c [new file with mode: 0644]
arch/arm/mach-imx/mx7ulp/iomux.c [new file with mode: 0644]
arch/arm/mach-imx/mx7ulp/pcc.c [new file with mode: 0644]
arch/arm/mach-imx/mx7ulp/scg.c [new file with mode: 0644]
arch/arm/mach-imx/mx7ulp/soc.c [new file with mode: 0644]
arch/arm/mach-imx/rdc-sema.c [new file with mode: 0644]
arch/arm/mach-imx/sata.c [new file with mode: 0644]
arch/arm/mach-imx/speed.c [new file with mode: 0644]
arch/arm/mach-imx/spl.c [new file with mode: 0644]
arch/arm/mach-imx/spl_sd.cfg [new file with mode: 0644]
arch/arm/mach-imx/syscounter.c [new file with mode: 0644]
arch/arm/mach-imx/timer.c [new file with mode: 0644]
arch/arm/mach-imx/video.c [new file with mode: 0644]
arch/arm/mach-integrator/Kconfig
arch/arm/mach-keystone/cmd_mon.c
arch/arm/mach-keystone/include/mach/mon.h
arch/arm/mach-keystone/mon.c
arch/arm/mach-meson/board.c
arch/arm/mach-mvebu/Kconfig
arch/arm/mach-omap2/Kconfig
arch/arm/mach-omap2/Makefile
arch/arm/mach-omap2/am33xx/Makefile
arch/arm/mach-omap2/am33xx/board.c
arch/arm/mach-omap2/am33xx/clock_ti816x.c
arch/arm/mach-omap2/am33xx/fdt.c [new file with mode: 0644]
arch/arm/mach-omap2/fdt-common.c [new file with mode: 0644]
arch/arm/mach-omap2/omap3/board.c
arch/arm/mach-omap2/omap5/Kconfig
arch/arm/mach-omap2/omap5/Makefile
arch/arm/mach-omap2/omap5/fdt.c
arch/arm/mach-omap2/omap5/sec-fxns.c [deleted file]
arch/arm/mach-omap2/sec-common.c
arch/arm/mach-rockchip/Kconfig
arch/arm/mach-rockchip/bootrom.c
arch/arm/mach-rockchip/rk3036-board-spl.c
arch/arm/mach-rockchip/rk_timer.c
arch/arm/mach-socfpga/Makefile
arch/arm/mach-socfpga/include/mach/fpga_manager.h
arch/arm/mach-socfpga/include/mach/fpga_manager_arria10.h [new file with mode: 0644]
arch/arm/mach-socfpga/include/mach/fpga_manager_gen5.h [new file with mode: 0644]
arch/arm/mach-socfpga/include/mach/reset_manager_arria10.h
arch/arm/mach-socfpga/reset_manager_arria10.c
arch/arm/mach-sunxi/Kconfig
arch/arm/mach-tegra/Kconfig
arch/arm/mach-tegra/board2.c
arch/arm/mach-tegra/clock.c
arch/arm/mach-tegra/spl.c
arch/arm/mach-tegra/tegra124/Makefile
arch/arm/mach-tegra/tegra124/pmc.c [new file with mode: 0644]
arch/arm/mach-tegra/tegra124/xusb-padctl.c
arch/arm/mach-tegra/tegra210/xusb-padctl.c
arch/arm/mach-tegra/xusb-padctl-common.c
arch/arm/mach-tegra/xusb-padctl-common.h
arch/arm/mach-tegra/xusb-padctl-dummy.c
arch/arm/mach-uniphier/Kconfig
arch/arm/mach-uniphier/arm64/Makefile
arch/arm/mach-uniphier/arm64/arm-cci500.c [deleted file]
arch/arm/mach-uniphier/arm64/smp.S [deleted file]
arch/arm/mach-uniphier/arm64/smp_kick_cpus.c [deleted file]
arch/arm/mach-uniphier/arm64/timer.c [deleted file]
arch/arm/mach-uniphier/board_init.c
arch/arm/mach-uniphier/boards.c
arch/arm/mach-uniphier/boot-device/Makefile
arch/arm/mach-uniphier/boot-device/spl_board.c [deleted file]
arch/arm/mach-uniphier/clk/Makefile
arch/arm/mach-uniphier/clk/clk-dram-ld11.c [deleted file]
arch/arm/mach-uniphier/clk/clk-dram-ld20.c [deleted file]
arch/arm/mach-uniphier/clk/clk-early-ld11.c [deleted file]
arch/arm/mach-uniphier/clk/dpll-ld11.c [deleted file]
arch/arm/mach-uniphier/clk/dpll-ld20.c [deleted file]
arch/arm/mach-uniphier/cpu-info.c
arch/arm/mach-uniphier/dram/Makefile
arch/arm/mach-uniphier/dram/ddruqphy-regs.h [deleted file]
arch/arm/mach-uniphier/dram/umc-ld11.c [deleted file]
arch/arm/mach-uniphier/dram/umc-ld20.c [deleted file]
arch/arm/mach-uniphier/dram/umc64-regs.h [deleted file]
arch/arm/mach-uniphier/init.h
arch/arm/mach-uniphier/spl_board_init.c
arch/m68k/Kconfig
arch/microblaze/Kconfig
arch/microblaze/cpu/start.S
arch/mips/Kconfig
arch/mips/Makefile.postlink [new file with mode: 0644]
arch/mips/config.mk
arch/mips/cpu/start.S
arch/mips/cpu/u-boot.lds
arch/mips/include/asm/relocs.h [new file with mode: 0644]
arch/mips/include/asm/sections.h
arch/mips/lib/Makefile
arch/mips/lib/bootm.c
arch/mips/lib/reloc.c [new file with mode: 0644]
arch/powerpc/Kconfig
arch/powerpc/cpu/mpc83xx/Kconfig
arch/powerpc/cpu/mpc83xx/start.S
arch/powerpc/cpu/mpc83xx/traps.c
arch/powerpc/cpu/mpc85xx/Kconfig
arch/powerpc/cpu/mpc85xx/cpu.c
arch/powerpc/cpu/mpc85xx/interrupts.c
arch/powerpc/cpu/mpc85xx/start.S
arch/powerpc/cpu/mpc85xx/traps.c
arch/powerpc/cpu/mpc86xx/Kconfig
arch/powerpc/cpu/mpc86xx/cpu.c
arch/powerpc/cpu/mpc86xx/interrupts.c
arch/powerpc/cpu/mpc86xx/start.S
arch/powerpc/cpu/mpc86xx/traps.c
arch/powerpc/cpu/mpc8xx/Makefile
arch/powerpc/cpu/mpc8xx/cache.c [new file with mode: 0644]
arch/powerpc/cpu/mpc8xx/cpu.c
arch/powerpc/cpu/mpc8xx/cpu_init.c
arch/powerpc/cpu/mpc8xx/immap.c
arch/powerpc/cpu/mpc8xx/reginfo.c
arch/powerpc/cpu/mpc8xx/speed.c
arch/powerpc/cpu/mpc8xx/start.S
arch/powerpc/cpu/mpc8xx/traps.c
arch/powerpc/include/asm/cache.h
arch/powerpc/include/asm/ppc.h
arch/powerpc/include/asm/processor.h
arch/powerpc/lib/bootm.c
arch/powerpc/lib/interrupts.c
arch/powerpc/lib/kgdb.c
arch/powerpc/lib/time.c
arch/sandbox/cpu/os.c
arch/sandbox/cpu/start.c
arch/sh/Kconfig
arch/x86/Kconfig
arch/x86/cpu/Makefile
arch/x86/cpu/baytrail/Kconfig
arch/x86/cpu/baytrail/acpi.c
arch/x86/cpu/quark/acpi.c
arch/x86/cpu/tangier/Kconfig [new file with mode: 0644]
arch/x86/cpu/tangier/Makefile [new file with mode: 0644]
arch/x86/cpu/tangier/car.S [new file with mode: 0644]
arch/x86/cpu/tangier/sdram.c [new file with mode: 0644]
arch/x86/cpu/tangier/tangier.c [new file with mode: 0644]
arch/x86/dts/Makefile
arch/x86/dts/conga-qeval20-qa3-e3845.dts
arch/x86/dts/dfi-bt700.dtsi
arch/x86/dts/edison.dts [new file with mode: 0644]
arch/x86/dts/minnowmax.dts
arch/x86/include/asm/acpi_table.h
arch/x86/include/asm/dma-mapping.h [new file with mode: 0644]
arch/x86/include/asm/sfi.h
arch/x86/lib/acpi_table.c
board/BuR/common/common.c
board/CZ.NIC/turris_omnia/Makefile [new file with mode: 0644]
board/CZ.NIC/turris_omnia/kwbimage.cfg [new file with mode: 0644]
board/CZ.NIC/turris_omnia/turris_omnia.c [new file with mode: 0644]
board/Marvell/db-88f6820-amc/db-88f6820-amc.c
board/Marvell/db-88f6820-gp/db-88f6820-gp.c
board/advantech/dms-ba16/dms-ba16.c
board/aries/m28evk/MAINTAINERS
board/aries/m53evk/MAINTAINERS
board/aries/m53evk/imximage.cfg
board/aries/m53evk/m53evk.c
board/aries/ma5d4evk/MAINTAINERS
board/aries/mcvevk/MAINTAINERS
board/aristainetos/aristainetos-v1.c
board/aristainetos/aristainetos-v2.c
board/aristainetos/aristainetos.c
board/armadeus/opos6uldev/Kconfig
board/armadeus/opos6uldev/board.c
board/atmel/at91sam9261ek/at91sam9261ek.c
board/atmel/at91sam9263ek/at91sam9263ek.c
board/atmel/at91sam9m10g45ek/at91sam9m10g45ek.c
board/atmel/at91sam9n12ek/at91sam9n12ek.c
board/atmel/at91sam9rlek/at91sam9rlek.c
board/atmel/at91sam9x5ek/at91sam9x5ek.c
board/atmel/sama5d3xek/sama5d3xek.c
board/atmel/sama5d4_xplained/sama5d4_xplained.c
board/atmel/sama5d4ek/sama5d4ek.c
board/bachmann/ot1200/ot1200.c
board/barco/platinum/platinum.c
board/barco/platinum/platinum_picon.c
board/barco/platinum/platinum_titanium.c
board/barco/platinum/spl_picon.c
board/barco/platinum/spl_titanium.c
board/barco/titanium/titanium.c
board/beckhoff/mx53cx9020/mx53cx9020.c
board/boundary/nitrogen6x/nitrogen6x.c
board/ccv/xpress/xpress.c
board/cei/cei-tk1-som/cei-tk1-som.c
board/compulab/cm_fx6/cm_fx6.c
board/compulab/cm_fx6/common.c
board/compulab/cm_fx6/spl.c
board/congatec/cgtqmx6eval/cgtqmx6eval.c
board/congatec/conga-qeval20-qa3-e3845/Kconfig
board/dfi/dfi-bt700/Kconfig
board/dfi/dfi-bt700/dfi-bt700.c
board/el/el6x/el6x.c
board/embest/mx6boards/mx6boards.c
board/engicam/common/spl.c
board/engicam/geam6ul/geam6ul.c
board/engicam/icorem6/icorem6.c
board/engicam/icorem6_rqs/MAINTAINERS
board/engicam/icorem6_rqs/icorem6_rqs.c
board/engicam/isiotmx6ul/isiotmx6ul.c
board/freescale/common/Kconfig
board/freescale/mx51evk/mx51evk.c
board/freescale/mx53evk/mx53evk.c
board/freescale/mx53loco/mx53loco.c
board/freescale/mx6qarm2/mx6qarm2.c
board/freescale/mx6qsabreauto/Kconfig [deleted file]
board/freescale/mx6qsabreauto/MAINTAINERS [deleted file]
board/freescale/mx6qsabreauto/Makefile [deleted file]
board/freescale/mx6qsabreauto/imximage.cfg [deleted file]
board/freescale/mx6qsabreauto/mx6dl.cfg [deleted file]
board/freescale/mx6qsabreauto/mx6qp.cfg [deleted file]
board/freescale/mx6qsabreauto/mx6qsabreauto.c [deleted file]
board/freescale/mx6sabreauto/Kconfig [new file with mode: 0644]
board/freescale/mx6sabreauto/MAINTAINERS [new file with mode: 0644]
board/freescale/mx6sabreauto/Makefile [new file with mode: 0644]
board/freescale/mx6sabreauto/README [new file with mode: 0644]
board/freescale/mx6sabreauto/mx6sabreauto.c [new file with mode: 0644]
board/freescale/mx6sabresd/mx6sabresd.c
board/freescale/mx6slevk/mx6slevk.c
board/freescale/mx6sllevk/mx6sllevk.c
board/freescale/mx6sxsabreauto/mx6sxsabreauto.c
board/freescale/mx6sxsabresd/mx6sxsabresd.c
board/freescale/mx6ul_14x14_evk/mx6ul_14x14_evk.c
board/freescale/mx6ullevk/mx6ullevk.c
board/freescale/mx7dsabresd/mx7dsabresd.c
board/freescale/s32v234evb/s32v234evb.cfg
board/freescale/vf610twr/imximage.cfg
board/gateworks/gw_ventana/common.c
board/gateworks/gw_ventana/gw_ventana.c
board/gateworks/gw_ventana/gw_ventana_spl.c
board/gdsys/a38x/controlcenterdc.c
board/ge/bx50v3/bx50v3.c
board/grinn/liteboard/board.c
board/intel/Kconfig
board/intel/edison/Kconfig [new file with mode: 0644]
board/intel/edison/MAINTAINERS [new file with mode: 0644]
board/intel/edison/Makefile [new file with mode: 0644]
board/intel/edison/config.mk [new file with mode: 0644]
board/intel/edison/edison.c [new file with mode: 0644]
board/intel/edison/start.S [new file with mode: 0644]
board/keymile/common/ivm.c
board/kosagi/novena/novena.c
board/kosagi/novena/novena_spl.c
board/kosagi/novena/video.c
board/liebherr/mccmon6/mccmon6.c
board/liebherr/mccmon6/spl.c
board/logicpd/imx6/imx6logic.c
board/logicpd/imx6/mx6q_2x_MT41K512M16HA.cfg
board/nvidia/jetson-tk1/jetson-tk1.c
board/nvidia/nyan-big/nyan-big.c
board/phytec/pcm052/imximage.cfg
board/phytec/pcm058/pcm058.c
board/ronetix/pm9261/pm9261.c
board/ronetix/pm9263/pm9263.c
board/samtec/vining_2000/vining_2000.c
board/seco/common/mx6.c
board/seco/mx6quq7/mx6quq7.c
board/solidrun/clearfog/clearfog.c
board/solidrun/clearfog/kwbimage.cfg
board/solidrun/mx6cuboxi/mx6cuboxi.c
board/st/stm32f746-disco/stm32f746-disco.c
board/tbs/tbs2910/tbs2910.c
board/technexion/pico-imx6ul/pico-imx6ul.c
board/technexion/pico-imx7d/pico-imx7d.c
board/technologic/ts4800/ts4800.c
board/theobroma-systems/puma_rk3399/puma-rk3399.c
board/ti/am43xx/board.c
board/ti/am57xx/board.c
board/toradex/apalis-tk1/apalis-tk1.c
board/toradex/apalis_imx6/apalis_imx6.c
board/toradex/apalis_imx6/pf0100.c
board/toradex/colibri_imx6/colibri_imx6.c
board/toradex/colibri_imx6/pf0100.c
board/toradex/colibri_imx7/colibri_imx7.c
board/toradex/colibri_t20/colibri_t20.c
board/toradex/colibri_vf/imximage.cfg
board/toradex/common/tdx-cfg-block.c
board/tqc/tqma6/tqma6.c
board/tqc/tqma6/tqma6_mba6.c
board/tqc/tqma6/tqma6_wru4.c
board/udoo/neo/neo.c
board/udoo/udoo.c
board/udoo/udoo_spl.c
board/wandboard/spl.c
board/wandboard/wandboard.c
board/warp/warp.c
board/warp7/warp7.c
cmd/Kconfig
cmd/bdinfo.c
cmd/bootm.c
cmd/jffs2.c
cmd/mmc.c
cmd/mvebu/bubt.c
cmd/nand.c
cmd/reginfo.c
cmd/scsi.c
cmd/usb.c
common/Kconfig
common/Makefile
common/board_f.c
common/board_r.c
common/console.c
common/dlmalloc.c
common/env_common.c
common/env_mmc.c
common/env_nand.c
common/env_ubi.c
common/fb_nand.c
common/init/board_init.c
common/spl/spl.c
common/spl/spl_mmc.c
common/splash_source.c
common/usb_hub.c
configs/10m50_defconfig
configs/3c120_defconfig
configs/B4420QDS_NAND_defconfig
configs/B4420QDS_SPIFLASH_defconfig
configs/B4420QDS_defconfig
configs/B4860QDS_NAND_defconfig
configs/B4860QDS_SPIFLASH_defconfig
configs/B4860QDS_SRIO_PCIE_BOOT_defconfig
configs/B4860QDS_defconfig
configs/BSC9131RDB_NAND_SYSCLK100_defconfig
configs/BSC9131RDB_NAND_defconfig
configs/BSC9131RDB_SPIFLASH_SYSCLK100_defconfig
configs/BSC9131RDB_SPIFLASH_defconfig
configs/BSC9132QDS_NAND_DDRCLK100_defconfig
configs/BSC9132QDS_NAND_DDRCLK133_defconfig
configs/BSC9132QDS_NOR_DDRCLK100_defconfig
configs/BSC9132QDS_NOR_DDRCLK133_defconfig
configs/BSC9132QDS_SDCARD_DDRCLK100_defconfig
configs/BSC9132QDS_SDCARD_DDRCLK133_defconfig
configs/BSC9132QDS_SPIFLASH_DDRCLK100_defconfig
configs/BSC9132QDS_SPIFLASH_DDRCLK133_defconfig
configs/C29XPCIE_NAND_defconfig
configs/C29XPCIE_SPIFLASH_defconfig
configs/C29XPCIE_defconfig
configs/CHIP_defconfig
configs/CHIP_pro_defconfig
configs/Cyrus_P5020_defconfig
configs/Cyrus_P5040_defconfig
configs/M5208EVBE_defconfig
configs/M52277EVB_defconfig
configs/M52277EVB_stmicro_defconfig
configs/M5235EVB_Flash32_defconfig
configs/M5235EVB_defconfig
configs/M53017EVB_defconfig
configs/M54418TWR_defconfig
configs/M54418TWR_nand_mii_defconfig
configs/M54418TWR_nand_rmii_defconfig
configs/M54418TWR_nand_rmii_lowfreq_defconfig
configs/M54418TWR_serial_mii_defconfig
configs/M54418TWR_serial_rmii_defconfig
configs/M54451EVB_defconfig
configs/M54451EVB_stmicro_defconfig
configs/M54455EVB_a66_defconfig
configs/M54455EVB_defconfig
configs/M54455EVB_i66_defconfig
configs/M54455EVB_intel_defconfig
configs/M54455EVB_stm33_defconfig
configs/MCR3000_defconfig
configs/MPC8308RDB_defconfig
configs/MPC8313ERDB_33_defconfig
configs/MPC8313ERDB_66_defconfig
configs/MPC8313ERDB_NAND_33_defconfig
configs/MPC8313ERDB_NAND_66_defconfig
configs/MPC8315ERDB_defconfig
configs/MPC8323ERDB_defconfig
configs/MPC8349EMDS_defconfig
configs/MPC837XEMDS_HOST_defconfig
configs/MPC837XEMDS_defconfig
configs/MPC837XERDB_defconfig
configs/MPC8536DS_36BIT_defconfig
configs/MPC8536DS_SDCARD_defconfig
configs/MPC8536DS_SPIFLASH_defconfig
configs/MPC8536DS_defconfig
configs/MPC8541CDS_defconfig
configs/MPC8541CDS_legacy_defconfig
configs/MPC8544DS_defconfig
configs/MPC8555CDS_defconfig
configs/MPC8555CDS_legacy_defconfig
configs/MPC8568MDS_defconfig
configs/MPC8569MDS_ATM_defconfig
configs/MPC8569MDS_defconfig
configs/MPC8610HPCD_defconfig
configs/MigoR_defconfig
configs/Nintendo_NES_Classic_Edition_defconfig
configs/P1010RDB-PA_36BIT_NAND_defconfig
configs/P1010RDB-PA_36BIT_NOR_defconfig
configs/P1010RDB-PA_36BIT_SDCARD_defconfig
configs/P1010RDB-PA_36BIT_SPIFLASH_defconfig
configs/P1010RDB-PA_NAND_defconfig
configs/P1010RDB-PA_NOR_defconfig
configs/P1010RDB-PA_SDCARD_defconfig
configs/P1010RDB-PA_SPIFLASH_defconfig
configs/P1010RDB-PB_36BIT_NAND_defconfig
configs/P1010RDB-PB_36BIT_NOR_defconfig
configs/P1010RDB-PB_36BIT_SDCARD_defconfig
configs/P1010RDB-PB_36BIT_SPIFLASH_defconfig
configs/P1010RDB-PB_NAND_defconfig
configs/P1010RDB-PB_NOR_defconfig
configs/P1010RDB-PB_SDCARD_defconfig
configs/P1010RDB-PB_SPIFLASH_defconfig
configs/P1020MBG-PC_36BIT_SDCARD_defconfig
configs/P1020MBG-PC_36BIT_defconfig
configs/P1020MBG-PC_SDCARD_defconfig
configs/P1020MBG-PC_defconfig
configs/P1020RDB-PC_36BIT_NAND_defconfig
configs/P1020RDB-PC_36BIT_SDCARD_defconfig
configs/P1020RDB-PC_36BIT_SPIFLASH_defconfig
configs/P1020RDB-PC_36BIT_defconfig
configs/P1020RDB-PC_NAND_defconfig
configs/P1020RDB-PC_SDCARD_defconfig
configs/P1020RDB-PC_SPIFLASH_defconfig
configs/P1020RDB-PC_defconfig
configs/P1020RDB-PD_NAND_defconfig
configs/P1020RDB-PD_SDCARD_defconfig
configs/P1020RDB-PD_SPIFLASH_defconfig
configs/P1020RDB-PD_defconfig
configs/P1020UTM-PC_36BIT_SDCARD_defconfig
configs/P1020UTM-PC_36BIT_defconfig
configs/P1020UTM-PC_SDCARD_defconfig
configs/P1020UTM-PC_defconfig
configs/P1021RDB-PC_36BIT_NAND_defconfig
configs/P1021RDB-PC_36BIT_SDCARD_defconfig
configs/P1021RDB-PC_36BIT_SPIFLASH_defconfig
configs/P1021RDB-PC_36BIT_defconfig
configs/P1021RDB-PC_NAND_defconfig
configs/P1021RDB-PC_SDCARD_defconfig
configs/P1021RDB-PC_SPIFLASH_defconfig
configs/P1021RDB-PC_defconfig
configs/P1022DS_36BIT_NAND_defconfig
configs/P1022DS_36BIT_SDCARD_defconfig
configs/P1022DS_36BIT_SPIFLASH_defconfig
configs/P1022DS_36BIT_defconfig
configs/P1022DS_NAND_defconfig
configs/P1022DS_SDCARD_defconfig
configs/P1022DS_SPIFLASH_defconfig
configs/P1022DS_defconfig
configs/P1023RDB_defconfig
configs/P1024RDB_36BIT_defconfig
configs/P1024RDB_NAND_defconfig
configs/P1024RDB_SDCARD_defconfig
configs/P1024RDB_SPIFLASH_defconfig
configs/P1024RDB_defconfig
configs/P1025RDB_36BIT_defconfig
configs/P1025RDB_NAND_defconfig
configs/P1025RDB_SDCARD_defconfig
configs/P1025RDB_SPIFLASH_defconfig
configs/P1025RDB_defconfig
configs/P2020RDB-PC_36BIT_NAND_defconfig
configs/P2020RDB-PC_36BIT_SDCARD_defconfig
configs/P2020RDB-PC_36BIT_SPIFLASH_defconfig
configs/P2020RDB-PC_36BIT_defconfig
configs/P2020RDB-PC_NAND_defconfig
configs/P2020RDB-PC_SDCARD_defconfig
configs/P2020RDB-PC_SPIFLASH_defconfig
configs/P2020RDB-PC_defconfig
configs/P2041RDB_NAND_defconfig
configs/P2041RDB_SDCARD_defconfig
configs/P2041RDB_SPIFLASH_defconfig
configs/P2041RDB_SRIO_PCIE_BOOT_defconfig
configs/P2041RDB_defconfig
configs/P3041DS_NAND_defconfig
configs/P3041DS_SDCARD_defconfig
configs/P3041DS_SPIFLASH_defconfig
configs/P3041DS_SRIO_PCIE_BOOT_defconfig
configs/P3041DS_defconfig
configs/P4080DS_SDCARD_defconfig
configs/P4080DS_SPIFLASH_defconfig
configs/P4080DS_SRIO_PCIE_BOOT_defconfig
configs/P4080DS_defconfig
configs/P5020DS_NAND_defconfig
configs/P5020DS_SDCARD_defconfig
configs/P5020DS_SPIFLASH_defconfig
configs/P5020DS_SRIO_PCIE_BOOT_defconfig
configs/P5020DS_defconfig
configs/P5040DS_NAND_defconfig
configs/P5040DS_SDCARD_defconfig
configs/P5040DS_SPIFLASH_defconfig
configs/P5040DS_defconfig
configs/T1023RDB_NAND_defconfig
configs/T1023RDB_SDCARD_defconfig
configs/T1023RDB_SECURE_BOOT_defconfig
configs/T1023RDB_SPIFLASH_defconfig
configs/T1023RDB_defconfig
configs/T1024QDS_DDR4_defconfig
configs/T1024QDS_NAND_defconfig
configs/T1024QDS_SDCARD_defconfig
configs/T1024QDS_SPIFLASH_defconfig
configs/T1024QDS_defconfig
configs/T1024RDB_NAND_defconfig
configs/T1024RDB_SDCARD_defconfig
configs/T1024RDB_SPIFLASH_defconfig
configs/T1024RDB_defconfig
configs/T1040D4RDB_NAND_defconfig
configs/T1040D4RDB_SDCARD_defconfig
configs/T1040D4RDB_SPIFLASH_defconfig
configs/T1040D4RDB_defconfig
configs/T1040QDS_DDR4_defconfig
configs/T1040QDS_defconfig
configs/T1040RDB_NAND_defconfig
configs/T1040RDB_SDCARD_defconfig
configs/T1040RDB_SPIFLASH_defconfig
configs/T1040RDB_defconfig
configs/T1042D4RDB_NAND_defconfig
configs/T1042D4RDB_SDCARD_defconfig
configs/T1042D4RDB_SPIFLASH_defconfig
configs/T1042D4RDB_defconfig
configs/T1042RDB_PI_NAND_defconfig
configs/T1042RDB_PI_SDCARD_defconfig
configs/T1042RDB_PI_SPIFLASH_defconfig
configs/T1042RDB_PI_defconfig
configs/T1042RDB_defconfig
configs/T2080QDS_NAND_defconfig
configs/T2080QDS_SDCARD_defconfig
configs/T2080QDS_SECURE_BOOT_defconfig
configs/T2080QDS_SPIFLASH_defconfig
configs/T2080QDS_SRIO_PCIE_BOOT_defconfig
configs/T2080QDS_defconfig
configs/T2080RDB_NAND_defconfig
configs/T2080RDB_SDCARD_defconfig
configs/T2080RDB_SECURE_BOOT_defconfig
configs/T2080RDB_SPIFLASH_defconfig
configs/T2080RDB_SRIO_PCIE_BOOT_defconfig
configs/T2080RDB_defconfig
configs/T2081QDS_NAND_defconfig
configs/T2081QDS_SDCARD_defconfig
configs/T2081QDS_SPIFLASH_defconfig
configs/T2081QDS_SRIO_PCIE_BOOT_defconfig
configs/T2081QDS_defconfig
configs/T4160QDS_NAND_defconfig
configs/T4160QDS_SDCARD_defconfig
configs/T4160QDS_defconfig
configs/T4160RDB_defconfig
configs/T4240QDS_NAND_defconfig
configs/T4240QDS_SDCARD_defconfig
configs/T4240QDS_SRIO_PCIE_BOOT_defconfig
configs/T4240QDS_defconfig
configs/T4240RDB_SDCARD_defconfig
configs/T4240RDB_defconfig
configs/TQM834x_defconfig
configs/TWR-P1025_defconfig
configs/UCP1020_SPIFLASH_defconfig
configs/UCP1020_defconfig
configs/adp-ae3xx_defconfig
configs/adp-ag101p_defconfig
configs/alt_defconfig
configs/am335x_baltos_defconfig
configs/am335x_boneblack_defconfig
configs/am335x_boneblack_vboot_defconfig
configs/am335x_evm_defconfig
configs/am335x_evm_nor_defconfig
configs/am335x_evm_norboot_defconfig
configs/am335x_evm_spiboot_defconfig
configs/am335x_evm_usbspl_defconfig
configs/am335x_hs_evm_defconfig
configs/am335x_igep003x_defconfig
configs/am335x_shc_defconfig
configs/am335x_shc_ict_defconfig
configs/am335x_shc_netboot_defconfig
configs/am335x_shc_prompt_defconfig
configs/am335x_shc_sdboot_defconfig
configs/am335x_shc_sdboot_prompt_defconfig
configs/am335x_sl50_defconfig
configs/am3517_crane_defconfig
configs/am3517_evm_defconfig
configs/am43xx_evm_defconfig
configs/am43xx_evm_ethboot_defconfig
configs/am43xx_evm_qspiboot_defconfig
configs/am43xx_evm_usbhost_boot_defconfig
configs/am43xx_hs_evm_defconfig
configs/am57xx_evm_defconfig
configs/am57xx_evm_nodt_defconfig
configs/am57xx_hs_evm_defconfig
configs/amcore_defconfig
configs/ap121_defconfig
configs/ap143_defconfig
configs/ap325rxa_defconfig
configs/ap_sh4a_4a_defconfig
configs/apalis-tk1_defconfig
configs/apalis_imx6_defconfig
configs/apalis_imx6_nospl_com_defconfig
configs/apalis_imx6_nospl_it_defconfig
configs/apf27_defconfig
configs/apx4devkit_defconfig
configs/aristainetos2_defconfig
configs/aristainetos2b_defconfig
configs/aristainetos_defconfig
configs/armadillo-800eva_defconfig
configs/arndale_defconfig
configs/aspenite_defconfig
configs/astro_mcf5373l_defconfig
configs/at91rm9200ek_defconfig
configs/at91rm9200ek_ram_defconfig
configs/at91sam9260ek_dataflash_cs0_defconfig
configs/at91sam9260ek_dataflash_cs1_defconfig
configs/at91sam9260ek_nandflash_defconfig
configs/at91sam9261ek_dataflash_cs0_defconfig
configs/at91sam9261ek_dataflash_cs3_defconfig
configs/at91sam9261ek_nandflash_defconfig
configs/at91sam9263ek_dataflash_cs0_defconfig
configs/at91sam9263ek_dataflash_defconfig
configs/at91sam9263ek_nandflash_defconfig
configs/at91sam9263ek_norflash_boot_defconfig
configs/at91sam9263ek_norflash_defconfig
configs/at91sam9g10ek_dataflash_cs0_defconfig
configs/at91sam9g10ek_dataflash_cs3_defconfig
configs/at91sam9g10ek_nandflash_defconfig
configs/at91sam9g20ek_2mmc_defconfig
configs/at91sam9g20ek_2mmc_nandflash_defconfig
configs/at91sam9g20ek_dataflash_cs0_defconfig
configs/at91sam9g20ek_dataflash_cs1_defconfig
configs/at91sam9g20ek_nandflash_defconfig
configs/at91sam9m10g45ek_mmc_defconfig
configs/at91sam9m10g45ek_nandflash_defconfig
configs/at91sam9n12ek_mmc_defconfig
configs/at91sam9n12ek_nandflash_defconfig
configs/at91sam9n12ek_spiflash_defconfig
configs/at91sam9rlek_dataflash_defconfig
configs/at91sam9rlek_mmc_defconfig
configs/at91sam9rlek_nandflash_defconfig
configs/at91sam9x5ek_dataflash_defconfig
configs/at91sam9x5ek_mmc_defconfig
configs/at91sam9x5ek_nandflash_defconfig
configs/at91sam9x5ek_spiflash_defconfig
configs/at91sam9xeek_dataflash_cs0_defconfig
configs/at91sam9xeek_dataflash_cs1_defconfig
configs/at91sam9xeek_nandflash_defconfig
configs/axm_defconfig
configs/axs101_defconfig
configs/axs103_defconfig
configs/bayleybay_defconfig
configs/bcm11130_defconfig
configs/bcm11130_nand_defconfig
configs/bcm23550_w1d_defconfig
configs/bcm28155_ap_defconfig
configs/bcm28155_w1d_defconfig
configs/bcm911360_entphn-ns_defconfig
configs/bcm911360_entphn_defconfig
configs/bcm911360k_defconfig
configs/bcm958300k-ns_defconfig
configs/bcm958300k_defconfig
configs/bcm958305k_defconfig
configs/bcm958622hr_defconfig
configs/bcm958712k_defconfig
configs/beaver_defconfig
configs/bg0900_defconfig
configs/birdland_bav335a_defconfig
configs/birdland_bav335b_defconfig
configs/bk4r1_defconfig
configs/blanche_defconfig
configs/brppt1_mmc_defconfig
configs/brppt1_nand_defconfig
configs/brppt1_spi_defconfig
configs/brxre1_defconfig
configs/caddy2_defconfig
configs/cairo_defconfig
configs/calimain_defconfig
configs/cei-tk1-som_defconfig
configs/cgtqmx6eval_defconfig
configs/chiliboard_defconfig
configs/chromebit_mickey_defconfig
configs/chromebook_jerry_defconfig
configs/chromebook_link64_defconfig
configs/chromebook_link_defconfig
configs/chromebook_minnie_defconfig
configs/chromebook_samus_defconfig
configs/chromebox_panther_defconfig
configs/cl-som-am57x_defconfig
configs/clearfog_defconfig
configs/cm_fx6_defconfig
configs/cm_t335_defconfig
configs/cm_t3517_defconfig
configs/cm_t35_defconfig
configs/cm_t43_defconfig
configs/cm_t54_defconfig
configs/colibri_imx6_defconfig
configs/colibri_imx6_nospl_defconfig
configs/colibri_imx7_defconfig
configs/colibri_pxa270_defconfig
configs/colibri_t20_defconfig
configs/colibri_vf_defconfig
configs/conga-qeval20-qa3-e3845-internal-uart_defconfig
configs/conga-qeval20-qa3-e3845_defconfig
configs/controlcenterd_36BIT_SDCARD_DEVELOP_defconfig
configs/controlcenterd_36BIT_SDCARD_defconfig
configs/controlcenterd_TRAILBLAZER_DEVELOP_defconfig
configs/controlcenterd_TRAILBLAZER_defconfig
configs/controlcenterdc_defconfig
configs/coreboot-x86_defconfig
configs/corvus_defconfig
configs/cougarcanyon2_defconfig
configs/crownbay_defconfig
configs/d2net_v2_defconfig
configs/da850_am18xxevm_defconfig
configs/da850evm_defconfig
configs/da850evm_direct_nor_defconfig
configs/dalmore_defconfig
configs/db-88f6720_defconfig
configs/db-88f6820-amc_defconfig
configs/db-88f6820-gp_defconfig
configs/dbau1000_defconfig
configs/dbau1100_defconfig
configs/dbau1500_defconfig
configs/dbau1550_defconfig
configs/dbau1550_el_defconfig
configs/devkit3250_defconfig
configs/devkit8000_defconfig
configs/dfi-bt700-q7x-151_defconfig
configs/dms-ba16-1g_defconfig
configs/dms-ba16_defconfig
configs/dns325_defconfig
configs/dockstar_defconfig
configs/dra7xx_evm_defconfig
configs/dra7xx_hs_evm_defconfig
configs/draco_defconfig
configs/dragonboard410c_defconfig
configs/dreamplug_defconfig
configs/ds109_defconfig
configs/duovero_defconfig
configs/ea20_defconfig
configs/eco5pk_defconfig
configs/ecovec_defconfig
configs/edb9315a_defconfig
configs/edison_defconfig [new file with mode: 0644]
configs/edminiv2_defconfig
configs/efi-x86_defconfig
configs/espresso7420_defconfig
configs/espt_defconfig
configs/etamin_defconfig
configs/ethernut5_defconfig
configs/evb-ast2500_defconfig
configs/evb-px5_defconfig
configs/evb-rk3036_defconfig
configs/evb-rk3229_defconfig
configs/evb-rk3288_defconfig
configs/evb-rk3328_defconfig
configs/evb-rk3399_defconfig
configs/evb-rv1108_defconfig
configs/fennec-rk3288_defconfig
configs/firefly-rk3288_defconfig
configs/firefly-rk3399_defconfig
configs/flea3_defconfig
configs/galileo_defconfig
configs/ge_b450v3_defconfig
configs/ge_b650v3_defconfig
configs/ge_b850v3_defconfig
configs/geekbox_defconfig
configs/goflexhome_defconfig
configs/gose_defconfig
configs/gplugd_defconfig
configs/gurnard_defconfig
configs/guruplug_defconfig
configs/gwventana_emmc_defconfig
configs/gwventana_gw5904_defconfig
configs/gwventana_nand_defconfig
configs/h2200_defconfig
configs/harmony_defconfig
configs/highbank_defconfig
configs/hikey_defconfig
configs/hrcon_defconfig
configs/hrcon_dh_defconfig
configs/hsdk_defconfig
configs/ib62x0_defconfig
configs/iconnect_defconfig
configs/ids8313_defconfig
configs/igep0020_defconfig
configs/igep0030_defconfig
configs/igep0032_defconfig
configs/imgtec_xilfpga_defconfig
configs/imx31_phycore_defconfig
configs/imx31_phycore_eet_defconfig
configs/imx6q_logic_defconfig
configs/imx6qdl_icore_mmc_defconfig
configs/imx6qdl_icore_nand_defconfig
configs/imx6qdl_icore_rqs_defconfig [new file with mode: 0644]
configs/imx6qdl_icore_rqs_mmc_defconfig [deleted file]
configs/imx6ul_geam_mmc_defconfig
configs/imx6ul_geam_nand_defconfig
configs/imx6ul_isiot_emmc_defconfig
configs/imx6ul_isiot_mmc_defconfig
configs/imx6ul_isiot_nand_defconfig
configs/inetspace_v2_defconfig
configs/integratorap_cm720t_defconfig
configs/integratorap_cm920t_defconfig
configs/integratorap_cm926ejs_defconfig
configs/integratorap_cm946es_defconfig
configs/ipam390_defconfig
configs/jetson-tk1_defconfig
configs/k2e_evm_defconfig
configs/k2e_hs_evm_defconfig
configs/k2g_evm_defconfig
configs/k2g_hs_evm_defconfig
configs/k2hk_evm_defconfig
configs/k2hk_hs_evm_defconfig
configs/k2l_evm_defconfig
configs/kc1_defconfig
configs/km_kirkwood_128m16_defconfig
configs/km_kirkwood_defconfig
configs/km_kirkwood_pci_defconfig
configs/kmcoge4_defconfig
configs/kmcoge5ne_defconfig
configs/kmcoge5un_defconfig
configs/kmeter1_defconfig
configs/kmlion1_defconfig
configs/kmnusa_defconfig
configs/kmopti2_defconfig
configs/kmsugp1_defconfig
configs/kmsupx5_defconfig
configs/kmsuv31_defconfig
configs/kmtegr1_defconfig
configs/kmtepr2_defconfig
configs/kmvect1_defconfig
configs/koelsch_defconfig
configs/kylin-rk3036_defconfig
configs/kzm9g_defconfig
configs/lager_defconfig
configs/legoev3_defconfig
configs/liteboard_defconfig
configs/ls1012afrdm_qspi_defconfig
configs/ls1012aqds_qspi_defconfig
configs/ls1012ardb_qspi_defconfig
configs/ls1021aiot_qspi_defconfig
configs/ls1021aiot_sdcard_defconfig
configs/ls1021aqds_ddr4_nor_defconfig
configs/ls1021aqds_ddr4_nor_lpuart_defconfig
configs/ls1021aqds_nand_defconfig
configs/ls1021aqds_nor_defconfig
configs/ls1021aqds_nor_lpuart_defconfig
configs/ls1021aqds_qspi_defconfig
configs/ls1021aqds_sdcard_ifc_defconfig
configs/ls1021aqds_sdcard_qspi_defconfig
configs/ls1021atwr_nor_defconfig
configs/ls1021atwr_nor_lpuart_defconfig
configs/ls1021atwr_qspi_defconfig
configs/ls1021atwr_sdcard_ifc_defconfig
configs/ls1021atwr_sdcard_qspi_defconfig
configs/ls1043aqds_defconfig
configs/ls1043aqds_lpuart_defconfig
configs/ls1043aqds_nand_defconfig
configs/ls1043aqds_nor_ddr3_defconfig
configs/ls1043aqds_qspi_defconfig
configs/ls1043aqds_sdcard_ifc_defconfig
configs/ls1043aqds_sdcard_qspi_defconfig
configs/ls1043ardb_defconfig
configs/ls1043ardb_nand_defconfig
configs/ls1043ardb_sdcard_defconfig
configs/ls1046aqds_defconfig
configs/ls1046aqds_lpuart_defconfig
configs/ls1046aqds_nand_defconfig
configs/ls1046aqds_qspi_defconfig
configs/ls1046aqds_sdcard_ifc_defconfig
configs/ls1046aqds_sdcard_qspi_defconfig
configs/ls1046ardb_emmc_defconfig
configs/ls1046ardb_qspi_defconfig
configs/ls1046ardb_sdcard_defconfig
configs/ls2080a_emu_defconfig
configs/ls2080a_simu_defconfig
configs/ls2080aqds_defconfig
configs/ls2080aqds_nand_defconfig
configs/ls2080aqds_qspi_defconfig
configs/ls2080aqds_sdcard_defconfig
configs/ls2080ardb_defconfig
configs/ls2080ardb_nand_defconfig
configs/ls2081ardb_defconfig
configs/ls2088ardb_qspi_defconfig
configs/lschlv2_defconfig
configs/lsxhl_defconfig
configs/m28evk_defconfig
configs/m53evk_defconfig
configs/ma5d4evk_defconfig
configs/marsboard_defconfig
configs/mccmon6_nor_defconfig
configs/mccmon6_sd_defconfig
configs/mcx_defconfig
configs/medcom-wide_defconfig
configs/meesc_dataflash_defconfig
configs/meesc_defconfig
configs/mgcoge3un_defconfig
configs/microblaze-generic_defconfig
configs/minnowmax_defconfig
configs/miqi-rk3288_defconfig
configs/mpc8308_p1m_defconfig
configs/ms7722se_defconfig
configs/ms7750se_defconfig
configs/mt_ventoux_defconfig
configs/mvebu_db-88f3720_defconfig
configs/mvebu_db-88f7040-nand_defconfig [deleted file]
configs/mvebu_db-88f7040_defconfig [deleted file]
configs/mvebu_db-88f8040_defconfig [deleted file]
configs/mvebu_db_armada8k_defconfig [new file with mode: 0644]
configs/mvebu_espressobin-88f3720_defconfig
configs/mvebu_mcbin-88f8040_defconfig
configs/mx23_olinuxino_defconfig
configs/mx23evk_defconfig
configs/mx25pdk_defconfig
configs/mx28evk_auart_console_defconfig
configs/mx28evk_defconfig
configs/mx28evk_nand_defconfig
configs/mx28evk_spi_defconfig
configs/mx31ads_defconfig
configs/mx31pdk_defconfig
configs/mx35pdk_defconfig
configs/mx51evk_defconfig
configs/mx53ard_defconfig
configs/mx53cx9020_defconfig
configs/mx53evk_defconfig
configs/mx53loco_defconfig
configs/mx53smd_defconfig
configs/mx6cuboxi_defconfig
configs/mx6dlarm2_defconfig
configs/mx6dlarm2_lpddr2_defconfig
configs/mx6dlsabreauto_defconfig [deleted file]
configs/mx6qarm2_defconfig
configs/mx6qarm2_lpddr2_defconfig
configs/mx6qpsabreauto_defconfig [deleted file]
configs/mx6qsabreauto_defconfig [deleted file]
configs/mx6qsabrelite_defconfig
configs/mx6sabreauto_defconfig [new file with mode: 0644]
configs/mx6sabresd_defconfig
configs/mx6slevk_defconfig
configs/mx6slevk_spinor_defconfig
configs/mx6slevk_spl_defconfig
configs/mx6sllevk_defconfig
configs/mx6sllevk_plugin_defconfig
configs/mx6sxsabresd_spl_defconfig
configs/mx6ul_14x14_evk_defconfig
configs/mx6ul_9x9_evk_defconfig
configs/mx6ull_14x14_evk_defconfig
configs/mx6ull_14x14_evk_plugin_defconfig
configs/mx7ulp_evk_defconfig
configs/mx7ulp_evk_plugin_defconfig
configs/nas220_defconfig
configs/net2big_v2_defconfig
configs/netspace_lite_v2_defconfig
configs/netspace_max_v2_defconfig
configs/netspace_mini_v2_defconfig
configs/netspace_v2_defconfig
configs/nitrogen6dl2g_defconfig
configs/nitrogen6dl_defconfig
configs/nitrogen6q2g_defconfig
configs/nitrogen6q_defconfig
configs/nitrogen6s1g_defconfig
configs/nitrogen6s_defconfig
configs/nokia_rx51_defconfig
configs/novena_defconfig
configs/nsa310s_defconfig
configs/nsim_700_defconfig
configs/nsim_700be_defconfig
configs/nsim_hs38_defconfig
configs/nsim_hs38be_defconfig
configs/nyan-big_defconfig
configs/odroid-c2_defconfig
configs/odroid-xu3_defconfig
configs/omap3_beagle_defconfig
configs/omap3_evm_defconfig
configs/omap3_ha_defconfig
configs/omap3_logic_defconfig
configs/omap3_overo_defconfig
configs/omap3_pandora_defconfig
configs/omap3_zoom1_defconfig
configs/omap4_panda_defconfig
configs/omap4_sdp4430_defconfig
configs/omap5_uevm_defconfig
configs/omapl138_lcdk_defconfig
configs/openrd_base_defconfig
configs/openrd_client_defconfig
configs/openrd_ultimate_defconfig
configs/opos6uldev_defconfig
configs/ot1200_defconfig
configs/ot1200_spl_defconfig
configs/p2371-2180_defconfig
configs/paz00_defconfig
configs/pb1000_defconfig
configs/pcm051_rev1_defconfig
configs/pcm051_rev3_defconfig
configs/pcm052_defconfig
configs/pcm058_defconfig
configs/peach-pi_defconfig
configs/peach-pit_defconfig
configs/pengwyn_defconfig
configs/pepper_defconfig
configs/phycore-rk3288_defconfig
configs/pic32mzdask_defconfig
configs/pico-imx6ul_defconfig
configs/picosam9g45_defconfig
configs/platinum_picon_defconfig
configs/platinum_titanium_defconfig
configs/plutux_defconfig
configs/pm9261_defconfig
configs/pm9263_defconfig
configs/pm9g45_defconfig
configs/pogo_e02_defconfig
configs/poplar_defconfig
configs/popmetal-rk3288_defconfig
configs/porter_defconfig
configs/portl2_defconfig
configs/puma-rk3399_defconfig
configs/pxm2_defconfig
configs/qemu-ppce500_defconfig
configs/qemu-x86_64_defconfig
configs/qemu-x86_defconfig
configs/qemu-x86_efi_payload32_defconfig
configs/qemu-x86_efi_payload64_defconfig
configs/r0p7734_defconfig
configs/r2dplus_defconfig
configs/r7780mp_defconfig
configs/r8a7795_salvator-x_defconfig
configs/r8a7796_salvator-x_defconfig
configs/rastaban_defconfig
configs/riotboard_defconfig
configs/rock2_defconfig
configs/rock_defconfig
configs/rut_defconfig
configs/s32v234evb_defconfig
configs/s5p_goni_defconfig
configs/sama5d2_ptc_nandflash_defconfig
configs/sama5d2_ptc_spiflash_defconfig
configs/sama5d2_xplained_mmc_defconfig
configs/sama5d2_xplained_spiflash_defconfig
configs/sama5d36ek_cmp_mmc_defconfig
configs/sama5d36ek_cmp_nandflash_defconfig
configs/sama5d36ek_cmp_spiflash_defconfig
configs/sama5d3_xplained_mmc_defconfig
configs/sama5d3_xplained_nandflash_defconfig
configs/sama5d3xek_mmc_defconfig
configs/sama5d3xek_nandflash_defconfig
configs/sama5d3xek_spiflash_defconfig
configs/sama5d4_xplained_mmc_defconfig
configs/sama5d4_xplained_nandflash_defconfig
configs/sama5d4_xplained_spiflash_defconfig
configs/sama5d4ek_mmc_defconfig
configs/sama5d4ek_nandflash_defconfig
configs/sama5d4ek_spiflash_defconfig
configs/sandbox_defconfig
configs/sandbox_flattree_defconfig
configs/sandbox_noblk_defconfig
configs/sandbox_spl_defconfig
configs/sansa_fuze_plus_defconfig
configs/sc_sps_1_defconfig
configs/seaboard_defconfig
configs/secomx6quq7_defconfig
configs/sh7752evb_defconfig
configs/sh7753evb_defconfig
configs/sh7757lcr_defconfig
configs/sh7763rdp_defconfig
configs/sh7785lcr_32bit_defconfig
configs/sh7785lcr_defconfig
configs/sheep-rk3368_defconfig
configs/sheevaplug_defconfig
configs/silk_defconfig
configs/smartweb_defconfig
configs/smdk5250_defconfig
configs/smdk5420_defconfig
configs/smdkc100_defconfig
configs/snapper9260_defconfig
configs/snapper9g20_defconfig
configs/sniper_defconfig
configs/snow_defconfig
configs/socfpga_arria10_defconfig
configs/socfpga_arria5_defconfig
configs/socfpga_cyclone5_defconfig
configs/socfpga_de0_nano_soc_defconfig
configs/socfpga_de10_nano_defconfig
configs/socfpga_de1_soc_defconfig
configs/socfpga_is1_defconfig
configs/socfpga_mcvevk_defconfig
configs/socfpga_sockit_defconfig
configs/socfpga_socrates_defconfig
configs/socfpga_sr1500_defconfig
configs/socfpga_vining_fpga_defconfig
configs/socrates_defconfig
configs/som-db5800-som-6867_defconfig
configs/spear300_defconfig
configs/spear300_nand_defconfig
configs/spear300_usbtty_defconfig
configs/spear300_usbtty_nand_defconfig
configs/spear310_defconfig
configs/spear310_nand_defconfig
configs/spear310_pnor_defconfig
configs/spear310_usbtty_defconfig
configs/spear310_usbtty_nand_defconfig
configs/spear310_usbtty_pnor_defconfig
configs/spear320_defconfig
configs/spear320_nand_defconfig
configs/spear320_pnor_defconfig
configs/spear320_usbtty_defconfig
configs/spear320_usbtty_nand_defconfig
configs/spear320_usbtty_pnor_defconfig
configs/spear600_defconfig
configs/spear600_nand_defconfig
configs/spear600_usbtty_defconfig
configs/spear600_usbtty_nand_defconfig
configs/spring_defconfig
configs/stih410-b2260_defconfig
configs/stm32f429-discovery_defconfig
configs/stm32f746-disco_defconfig
configs/stout_defconfig
configs/stv0991_defconfig
configs/suvd3_defconfig
configs/tao3530_defconfig
configs/taurus_defconfig
configs/tb100_defconfig
configs/tbs2910_defconfig
configs/tec_defconfig
configs/theadorable-x86-dfi-bt700_defconfig
configs/theadorable_debug_defconfig
configs/theadorable_defconfig
configs/thuban_defconfig
configs/thunderx_88xx_defconfig
configs/ti814x_evm_defconfig
configs/ti816x_evm_defconfig
configs/tinker-rk3288_defconfig
configs/titanium_defconfig
configs/topic_miami_defconfig
configs/topic_miamilite_defconfig
configs/topic_miamiplus_defconfig
configs/tplink_wdr4300_defconfig
configs/tqma6dl_mba6_mmc_defconfig
configs/tqma6dl_mba6_spi_defconfig
configs/tqma6q_mba6_mmc_defconfig
configs/tqma6q_mba6_spi_defconfig
configs/tqma6s_mba6_mmc_defconfig
configs/tqma6s_mba6_spi_defconfig
configs/tqma6s_wru4_mmc_defconfig
configs/tricorder_defconfig
configs/tricorder_flash_defconfig
configs/trimslice_defconfig
configs/ts4600_defconfig
configs/ts4800_defconfig
configs/tuge1_defconfig
configs/turris_omnia_defconfig [new file with mode: 0644]
configs/tuxx1_defconfig
configs/twister_defconfig
configs/udoo_defconfig
configs/udoo_neo_defconfig
configs/uniphier_ld11_defconfig [deleted file]
configs/uniphier_ld20_defconfig [deleted file]
configs/uniphier_ld4_sld8_defconfig
configs/uniphier_pro4_defconfig
configs/uniphier_pxs2_ld6b_defconfig
configs/uniphier_sld3_defconfig
configs/uniphier_v8_defconfig
configs/usb_a9263_dataflash_defconfig
configs/usbarmory_defconfig
configs/vct_platinum_defconfig
configs/vct_platinum_onenand_defconfig
configs/vct_platinum_onenand_small_defconfig
configs/vct_platinum_small_defconfig
configs/vct_platinumavc_defconfig
configs/vct_platinumavc_onenand_defconfig
configs/vct_platinumavc_onenand_small_defconfig
configs/vct_platinumavc_small_defconfig
configs/vct_premium_defconfig
configs/vct_premium_onenand_defconfig
configs/vct_premium_onenand_small_defconfig
configs/vct_premium_small_defconfig
configs/ve8313_defconfig
configs/ventana_defconfig
configs/vexpress_aemv8a_dram_defconfig
configs/vexpress_aemv8a_juno_defconfig
configs/vexpress_aemv8a_semi_defconfig
configs/vexpress_ca15_tc2_defconfig
configs/vexpress_ca5x2_defconfig
configs/vexpress_ca9x4_defconfig
configs/vf610twr_defconfig
configs/vf610twr_nand_defconfig
configs/vinco_defconfig
configs/vme8349_defconfig
configs/wandboard_defconfig
configs/warp_defconfig
configs/woodburn_defconfig
configs/woodburn_sd_defconfig
configs/work_92105_defconfig
configs/x600_defconfig
configs/xfi3_defconfig
configs/xilinx_zynqmp_ep_defconfig
configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
configs/xilinx_zynqmp_zc1751_xm016_dc2_defconfig
configs/xilinx_zynqmp_zc1751_xm018_dc4_defconfig
configs/xilinx_zynqmp_zc1751_xm019_dc5_defconfig
configs/xilinx_zynqmp_zcu102_defconfig
configs/xilinx_zynqmp_zcu102_revB_defconfig
configs/xpedite550x_defconfig
configs/xpress_defconfig
configs/xpress_spl_defconfig
configs/xtfpga_defconfig
configs/zc5202_defconfig
configs/zc5601_defconfig
configs/zipitz2_defconfig
configs/zmx25_defconfig
configs/zynq_microzed_defconfig
configs/zynq_picozed_defconfig
configs/zynq_zc702_defconfig
configs/zynq_zc706_defconfig
configs/zynq_zc770_xm010_defconfig
configs/zynq_zc770_xm011_defconfig
configs/zynq_zc770_xm012_defconfig
configs/zynq_zc770_xm013_defconfig
configs/zynq_zed_defconfig
configs/zynq_zybo_defconfig
doc/README.fsl-esdhc
doc/README.imximage
doc/README.marvell [new file with mode: 0644]
doc/README.uniphier
doc/README.x86
doc/device-tree-bindings/ram/st,stm32-fmc.txt
doc/uImage.FIT/source_file_format.txt
drivers/Makefile
drivers/ata/ahci.c
drivers/clk/clk-uclass.c
drivers/clk/clk_stm32f7.c
drivers/clk/rockchip/clk_rk3368.c
drivers/core/Kconfig
drivers/core/of_access.c
drivers/core/ofnode.c
drivers/core/read.c
drivers/core/read_extra.c
drivers/ddr/marvell/a38x/ddr3_training.c
drivers/ddr/marvell/a38x/ddr_topology_def.h
drivers/dfu/dfu.c
drivers/dfu/dfu_mmc.c
drivers/dfu/dfu_nand.c
drivers/dfu/dfu_ram.c
drivers/dfu/dfu_sf.c
drivers/dma/apbh_dma.c
drivers/fpga/Kconfig
drivers/fpga/Makefile
drivers/fpga/socfpga.c
drivers/fpga/socfpga_arria10.c [new file with mode: 0644]
drivers/fpga/socfpga_gen5.c [new file with mode: 0644]
drivers/gpio/tegra_gpio.c
drivers/gpio/vybrid_gpio.c
drivers/i2c/muxes/pca954x.c
drivers/i2c/mxc_i2c.c
drivers/i2c/soft_i2c.c
drivers/i2c/tegra_i2c.c
drivers/misc/Kconfig
drivers/misc/Makefile
drivers/misc/atsha204a-i2c.c [new file with mode: 0644]
drivers/misc/mxc_ocotp.c
drivers/misc/rockchip-efuse.c
drivers/mmc/fsl_esdhc.c
drivers/mmc/mxsmmc.c
drivers/mmc/rpmb.c
drivers/mmc/sdhci-cadence.c
drivers/mmc/tegra_mmc.c
drivers/mtd/nand/fsmc_nand.c
drivers/mtd/nand/mxs_nand.c
drivers/mtd/nand/nand.c
drivers/mtd/nand/omap_gpmc.c
drivers/mtd/nand/zynq_nand.c
drivers/mtd/ubi/Kconfig
drivers/net/fec_mxc.c
drivers/net/fm/fm.c
drivers/net/mpc8xx_fec.c
drivers/net/phy/cortina.c
drivers/pci/pci_tegra.c
drivers/phy/Kconfig
drivers/phy/Makefile
drivers/phy/nop-phy.c [new file with mode: 0644]
drivers/phy/phy-uclass.c
drivers/pinctrl/meson/pinctrl-meson-gxbb.c
drivers/pinctrl/meson/pinctrl-meson.c
drivers/pinctrl/meson/pinctrl-meson.h
drivers/pinctrl/rockchip/pinctrl_rk3288.c
drivers/pinctrl/uniphier/pinctrl-uniphier-ld11.c
drivers/pinctrl/uniphier/pinctrl-uniphier-ld20.c
drivers/pinctrl/uniphier/pinctrl-uniphier-pxs3.c
drivers/power/pmic/Makefile
drivers/power/pmic/as3722.c
drivers/power/pmic/as3722_gpio.c [new file with mode: 0644]
drivers/power/regulator/Kconfig
drivers/power/regulator/Makefile
drivers/power/regulator/act8846.c
drivers/power/regulator/as3722_regulator.c [new file with mode: 0644]
drivers/power/regulator/fixed.c
drivers/power/regulator/lp873x_regulator.c
drivers/power/regulator/lp87565_regulator.c
drivers/power/regulator/max77686.c
drivers/power/regulator/palmas_regulator.c
drivers/power/regulator/pfuze100.c
drivers/power/regulator/pwm_regulator.c
drivers/power/regulator/regulator-uclass.c
drivers/power/regulator/rk8xx.c
drivers/power/regulator/s5m8767.c
drivers/power/regulator/sandbox.c
drivers/power/regulator/tps65090_regulator.c
drivers/pwm/rk_pwm.c
drivers/pwm/tegra_pwm.c
drivers/ram/stm32_sdram.c
drivers/reset/reset-uclass.c
drivers/serial/Kconfig
drivers/serial/ns16550.c
drivers/serial/serial-uclass.c
drivers/serial/serial.c
drivers/serial/serial_mxc.c
drivers/serial/serial_stm32x7.c
drivers/serial/serial_stm32x7.h
drivers/spi/mxc_spi.c
drivers/spi/mxs_spi.c
drivers/spi/stm32_qspi.c
drivers/spi/tegra114_spi.c
drivers/spi/tegra20_sflash.c
drivers/spi/tegra20_slink.c
drivers/spi/tegra210_qspi.c
drivers/usb/emul/sandbox_hub.c
drivers/usb/gadget/f_thor.c
drivers/usb/host/Kconfig
drivers/usb/host/ehci-generic.c
drivers/usb/host/ehci-hcd.c
drivers/usb/host/ehci-mx6.c
drivers/usb/host/ehci-tegra.c
drivers/usb/host/ehci-vf.c
drivers/usb/host/ehci.h
drivers/usb/host/ohci-generic.c
drivers/usb/host/usb-uclass.c
drivers/usb/host/xhci-dwc3.c
drivers/usb/host/xhci-mem.c
drivers/usb/host/xhci-pci.c
drivers/usb/host/xhci-ring.c
drivers/usb/host/xhci.c
drivers/usb/host/xhci.h
drivers/video/mxsfb.c
drivers/video/tegra124/display.c
drivers/video/tegra124/dp.c
drivers/video/tegra124/sor.c
drivers/watchdog/Kconfig
drivers/watchdog/Makefile
drivers/watchdog/orion_wdt.c [new file with mode: 0644]
drivers/watchdog/tangier_wdt.c [new file with mode: 0644]
fs/jffs2/jffs2_1pass.c
fs/jffs2/jffs2_nand_1pass.c
fs/yaffs2/yaffs_uboot_glue.c
include/asm-generic/global_data.h
include/atsha204a-i2c.h [new file with mode: 0644]
include/clk.h
include/config_cmd_all.h
include/config_fsl_chain_trust.h
include/configs/10m50_devboard.h
include/configs/3c120_devboard.h
include/configs/B4860QDS.h
include/configs/BSC9131RDB.h
include/configs/BSC9132QDS.h
include/configs/C29XPCIE.h
include/configs/M5208EVBE.h
include/configs/M52277EVB.h
include/configs/M5235EVB.h
include/configs/M5249EVB.h
include/configs/M5253DEMO.h
include/configs/M5253EVBE.h
include/configs/M5272C3.h
include/configs/M5275EVB.h
include/configs/M5282EVB.h
include/configs/M53017EVB.h
include/configs/M5329EVB.h
include/configs/M5373EVB.h
include/configs/M54418TWR.h
include/configs/M54451EVB.h
include/configs/M54455EVB.h
include/configs/M5475EVB.h
include/configs/M5485EVB.h
include/configs/MCR3000.h
include/configs/MPC8308RDB.h
include/configs/MPC8313ERDB.h
include/configs/MPC8315ERDB.h
include/configs/MPC8323ERDB.h
include/configs/MPC832XEMDS.h
include/configs/MPC8349EMDS.h
include/configs/MPC8349ITX.h
include/configs/MPC837XEMDS.h
include/configs/MPC837XERDB.h
include/configs/MPC8536DS.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/MPC8572DS.h
include/configs/MPC8610HPCD.h
include/configs/MPC8641HPCN.h
include/configs/MigoR.h
include/configs/P1010RDB.h
include/configs/P1022DS.h
include/configs/P1023RDB.h
include/configs/P2041RDB.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/T4240QDS.h
include/configs/T4240RDB.h
include/configs/TQM834x.h
include/configs/UCP1020.h
include/configs/adp-ae3xx.h
include/configs/adp-ag101p.h
include/configs/advantech_dms-ba16.h
include/configs/am335x_evm.h
include/configs/am335x_igep003x.h
include/configs/am335x_shc.h
include/configs/am335x_sl50.h
include/configs/am3517_crane.h
include/configs/am3517_evm.h
include/configs/am43xx_evm.h
include/configs/am57xx_evm.h
include/configs/amcore.h
include/configs/ap121.h
include/configs/ap143.h
include/configs/ap325rxa.h
include/configs/ap_sh4a_4a.h
include/configs/apalis-tk1.h
include/configs/apalis_imx6.h
include/configs/apalis_t30.h
include/configs/apf27.h
include/configs/apx4devkit.h
include/configs/aristainetos-common.h
include/configs/armadillo-800eva.h
include/configs/arndale.h
include/configs/aspenite.h
include/configs/astro_mcf5373l.h
include/configs/at91-sama5_common.h
include/configs/at91rm9200ek.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/axs10x.h
include/configs/baltos.h
include/configs/bav335x.h
include/configs/bcm23550_w1d.h
include/configs/bcm28155_ap.h
include/configs/bcm_ep_board.h
include/configs/bcm_northstar2.h
include/configs/beaver.h
include/configs/bg0900.h
include/configs/blanche.h
include/configs/boston.h
include/configs/brppt1.h
include/configs/brxre1.h
include/configs/calimain.h
include/configs/cardhu.h
include/configs/cei-tk1-som.h
include/configs/cgtqmx6eval.h
include/configs/chiliboard.h
include/configs/cl-som-am57x.h
include/configs/clearfog.h
include/configs/cm_fx6.h
include/configs/cm_t335.h
include/configs/cm_t35.h
include/configs/cm_t3517.h
include/configs/cm_t43.h
include/configs/cm_t54.h
include/configs/cobra5272.h
include/configs/colibri_imx6.h
include/configs/colibri_imx7.h
include/configs/colibri_pxa270.h
include/configs/colibri_t20.h
include/configs/colibri_t30.h
include/configs/colibri_vf.h
include/configs/comtrend_ar5387un.h
include/configs/comtrend_ct5361.h
include/configs/comtrend_vr3032u.h
include/configs/controlcenterd.h
include/configs/controlcenterdc.h
include/configs/corenet_ds.h
include/configs/corvus.h
include/configs/cyrus.h
include/configs/da850evm.h
include/configs/dalmore.h
include/configs/db-88f6720.h
include/configs/db-88f6820-amc.h
include/configs/db-88f6820-gp.h
include/configs/db-mv784mp-gp.h
include/configs/dbau1x00.h
include/configs/devkit3250.h
include/configs/devkit8000.h
include/configs/dns325.h
include/configs/dockstar.h
include/configs/dra7xx_evm.h
include/configs/dragonboard410c.h
include/configs/dreamplug.h
include/configs/ds109.h
include/configs/ds414.h
include/configs/duovero.h
include/configs/e2220-1170.h
include/configs/ea20.h
include/configs/eb_cpu5282.h
include/configs/ecovec.h
include/configs/edb93xx.h
include/configs/edison.h [new file with mode: 0644]
include/configs/edminiv2.h
include/configs/efi-x86.h
include/configs/el6x_common.h
include/configs/embestmx6boards.h
include/configs/espresso7420.h
include/configs/espt.h
include/configs/ethernut5.h
include/configs/evb_ast2500.h
include/configs/evb_px5.h
include/configs/evb_rk3229.h
include/configs/evb_rk3288.h
include/configs/evb_rk3328.h
include/configs/evb_rk3399.h
include/configs/exynos4-common.h
include/configs/exynos5-common.h
include/configs/exynos5-dt-common.h
include/configs/fennec_rk3288.h
include/configs/firefly-rk3288.h
include/configs/flea3.h
include/configs/ge_bx50v3.h
include/configs/geekbox.h
include/configs/goflexhome.h
include/configs/gplugd.h
include/configs/guruplug.h
include/configs/gw_ventana.h
include/configs/h2200.h
include/configs/harmony.h
include/configs/highbank.h
include/configs/hikey.h
include/configs/hrcon.h
include/configs/hsdk.h
include/configs/huawei_hg556a.h
include/configs/ib62x0.h
include/configs/iconnect.h
include/configs/ids8313.h
include/configs/imgtec_xilfpga.h
include/configs/imx27lite-common.h
include/configs/imx31_phycore.h
include/configs/imx6-engicam.h
include/configs/imx6_logic.h
include/configs/imx6_spl.h
include/configs/integratorap.h
include/configs/integratorcp.h
include/configs/ipam390.h
include/configs/jetson-tk1.h
include/configs/k2e_evm.h
include/configs/k2g_evm.h
include/configs/k2hk_evm.h
include/configs/k2l_evm.h
include/configs/kc1.h
include/configs/km/keymile-common.h
include/configs/km/km83xx-common.h
include/configs/km/km_arm.h
include/configs/km/kmp204x-common.h
include/configs/kylin_rk3036.h
include/configs/kzm9g.h
include/configs/lacie_kw.h
include/configs/legoev3.h
include/configs/liteboard.h
include/configs/ls1012a_common.h
include/configs/ls1012afrdm.h
include/configs/ls1012aqds.h
include/configs/ls1012ardb.h
include/configs/ls1021aiot.h
include/configs/ls1021aqds.h
include/configs/ls1021atwr.h
include/configs/ls1043aqds.h
include/configs/ls1043ardb.h
include/configs/ls1046aqds.h
include/configs/ls1046ardb.h
include/configs/ls2080a_common.h
include/configs/ls2080a_emu.h
include/configs/ls2080a_simu.h
include/configs/ls2080aqds.h
include/configs/ls2080ardb.h
include/configs/lsxl.h
include/configs/m28evk.h
include/configs/m53evk.h
include/configs/ma5d4evk.h
include/configs/malta.h
include/configs/maxbcm.h
include/configs/mccmon6.h
include/configs/mcx.h
include/configs/medcom-wide.h
include/configs/meesc.h
include/configs/meson-gxbb-common.h
include/configs/microblaze-generic.h
include/configs/minnowmax.h
include/configs/miqi_rk3288.h
include/configs/mpc8308_p1m.h
include/configs/mpr2.h
include/configs/ms7720se.h
include/configs/ms7722se.h
include/configs/ms7750se.h
include/configs/mv-common.h
include/configs/mvebu_armada-37xx.h
include/configs/mvebu_armada-8k.h
include/configs/mx23_olinuxino.h
include/configs/mx23evk.h
include/configs/mx25pdk.h
include/configs/mx28evk.h
include/configs/mx31ads.h
include/configs/mx31pdk.h
include/configs/mx35pdk.h
include/configs/mx51evk.h
include/configs/mx53ard.h
include/configs/mx53cx9020.h
include/configs/mx53evk.h
include/configs/mx53loco.h
include/configs/mx53smd.h
include/configs/mx6_common.h
include/configs/mx6cuboxi.h
include/configs/mx6qarm2.h
include/configs/mx6qsabreauto.h [deleted file]
include/configs/mx6sabre_common.h
include/configs/mx6sabreauto.h [new file with mode: 0644]
include/configs/mx6sabresd.h
include/configs/mx6slevk.h
include/configs/mx6sllevk.h
include/configs/mx6sxsabreauto.h
include/configs/mx6sxsabresd.h
include/configs/mx6ul_14x14_evk.h
include/configs/mx6ullevk.h
include/configs/mx7_common.h
include/configs/mx7dsabresd.h
include/configs/mx7ulp_evk.h
include/configs/nas220.h
include/configs/netgear_cg3100d.h
include/configs/nitrogen6x.h
include/configs/nokia_rx51.h
include/configs/novena.h
include/configs/nsa310s.h
include/configs/nsim.h
include/configs/nyan-big.h
include/configs/odroid.h
include/configs/odroid_xu3.h
include/configs/omap3_beagle.h
include/configs/omap3_cairo.h
include/configs/omap3_evm.h
include/configs/omap3_igep00x0.h
include/configs/omap3_logic.h
include/configs/omap3_overo.h
include/configs/omap3_pandora.h
include/configs/omap3_zoom1.h
include/configs/omap4_panda.h
include/configs/omap4_sdp4430.h
include/configs/omap5_uevm.h
include/configs/omapl138_lcdk.h
include/configs/openrd.h
include/configs/opos6uldev.h
include/configs/origen.h
include/configs/ot1200.h
include/configs/p1_p2_rdb_pc.h
include/configs/p1_twr.h
include/configs/p2371-0000.h
include/configs/p2371-2180.h
include/configs/p2571.h
include/configs/p2771-0000.h
include/configs/paz00.h
include/configs/pb1x00.h
include/configs/pcm051.h
include/configs/pcm052.h
include/configs/pcm058.h
include/configs/pengwyn.h
include/configs/pepper.h
include/configs/phycore_rk3288.h
include/configs/pic32mzdask.h
include/configs/pico-imx6ul.h
include/configs/pico-imx7d.h
include/configs/picosam9g45.h
include/configs/platinum.h
include/configs/plutux.h
include/configs/pm9261.h
include/configs/pm9263.h
include/configs/pm9g45.h
include/configs/pogo_e02.h
include/configs/poplar.h
include/configs/popmetal_rk3288.h
include/configs/puma_rk3399.h
include/configs/qemu-mips.h
include/configs/qemu-mips64.h
include/configs/qemu-ppce500.h
include/configs/qemu-x86.h
include/configs/r0p7734.h
include/configs/r2dplus.h
include/configs/r7780mp.h
include/configs/rcar-gen2-common.h
include/configs/rk3036_common.h
include/configs/rk3328_common.h
include/configs/rk3399_common.h
include/configs/rock.h
include/configs/rock2.h
include/configs/rockchip-common.h
include/configs/rpi.h
include/configs/rsk7203.h
include/configs/rsk7264.h
include/configs/rsk7269.h
include/configs/rv1108_common.h
include/configs/s32v234evb.h
include/configs/s5p_goni.h
include/configs/s5pc210_universal.h
include/configs/sagem_f@st1704.h
include/configs/salvator-x.h
include/configs/sama5d2_ptc.h
include/configs/sama5d3_xplained.h
include/configs/sama5d3xek.h
include/configs/sandbox.h
include/configs/sansa_fuze_plus.h
include/configs/sbc8349.h
include/configs/sbc8548.h
include/configs/sbc8641d.h
include/configs/sc_sps_1.h
include/configs/seaboard.h
include/configs/sfr_nb4_ser.h
include/configs/sh7752evb.h
include/configs/sh7753evb.h
include/configs/sh7757lcr.h
include/configs/sh7763rdp.h
include/configs/sh7785lcr.h
include/configs/sheep_rk3368.h
include/configs/sheevaplug.h
include/configs/shmin.h
include/configs/siemens-am33x-common.h
include/configs/smartweb.h
include/configs/smdkc100.h
include/configs/smdkv310.h
include/configs/snapper9260.h
include/configs/snapper9g45.h
include/configs/sniper.h
include/configs/socfpga_arria10_socdk.h
include/configs/socfpga_arria5_socdk.h
include/configs/socfpga_common.h
include/configs/socfpga_cyclone5_socdk.h
include/configs/socfpga_de0_nano_soc.h
include/configs/socfpga_de10_nano.h
include/configs/socfpga_de1_soc.h
include/configs/socfpga_is1.h
include/configs/socfpga_mcvevk.h
include/configs/socfpga_sockit.h
include/configs/socfpga_socrates.h
include/configs/socfpga_sr1500.h
include/configs/socfpga_vining_fpga.h
include/configs/socrates.h
include/configs/spear3xx_evb.h
include/configs/spear6xx_evb.h
include/configs/stih410-b2260.h
include/configs/stm32f429-discovery.h
include/configs/stm32f746-disco.h
include/configs/strider.h
include/configs/stv0991.h
include/configs/sunxi-common.h
include/configs/tam3517-common.h
include/configs/tao3530.h
include/configs/taurus.h
include/configs/tb100.h
include/configs/tbs2910.h
include/configs/tec-ng.h
include/configs/tec.h
include/configs/tegra114-common.h
include/configs/tegra124-common.h
include/configs/tegra20-common.h
include/configs/tegra210-common.h
include/configs/tegra30-common.h
include/configs/theadorable.h
include/configs/thunderx_88xx.h
include/configs/ti814x_evm.h
include/configs/ti816x_evm.h
include/configs/ti_armv7_common.h
include/configs/ti_armv7_keystone2.h
include/configs/tinker_rk3288.h
include/configs/titanium.h
include/configs/topic_miami.h
include/configs/tplink_wdr4300.h
include/configs/tqma6.h
include/configs/trats.h
include/configs/trats2.h
include/configs/tricorder.h
include/configs/trimslice.h
include/configs/ts4800.h
include/configs/turris_omnia.h [new file with mode: 0644]
include/configs/udoo.h
include/configs/udoo_neo.h
include/configs/uniphier.h
include/configs/usb_a9263.h
include/configs/usbarmory.h
include/configs/vct.h
include/configs/ve8313.h
include/configs/venice2.h
include/configs/ventana.h
include/configs/vexpress_aemv8a.h
include/configs/vexpress_common.h
include/configs/veyron.h
include/configs/vf610twr.h
include/configs/vinco.h
include/configs/vining_2000.h
include/configs/vme8349.h
include/configs/wandboard.h
include/configs/warp.h
include/configs/warp7.h
include/configs/woodburn_common.h
include/configs/work_92105.h
include/configs/x600.h
include/configs/x86-chromebook.h
include/configs/x86-common.h
include/configs/xfi3.h
include/configs/xilinx-ppc.h [deleted file]
include/configs/xilinx_zynqmp.h
include/configs/xpedite517x.h
include/configs/xpedite520x.h
include/configs/xpedite537x.h
include/configs/xpedite550x.h
include/configs/xpress.h
include/configs/xtfpga.h
include/configs/zipitz2.h
include/configs/zmx25.h
include/configs/zynq-common.h
include/dfu.h
include/dm/of_access.h
include/dm/ofnode.h
include/dm/platform_data/serial_stm32x7.h [deleted file]
include/dm/read.h
include/dt-bindings/clock/gxbb-clkc.h
include/dt-bindings/clock/stm32fx-clock.h [new file with mode: 0644]
include/dt-bindings/mfd/stm32f7-rcc.h [new file with mode: 0644]
include/dt-structs.h
include/environment.h
include/fdtdec.h
include/fsl_esdhc.h
include/generic-phy.h
include/ioports.h
include/nand.h
include/ns16550.h
include/os.h
include/power/as3722.h
include/power/regulator.h
include/reset.h
include/usb.h
include/usb_defs.h
lib/Kconfig
lib/asm-offsets.c
lib/efi/efi_app.c
lib/fdtdec.c
scripts/Makefile.lib
scripts/config_whitelist.txt
test/py/tests/test_dfu.py
tools/.gitignore
tools/Makefile
tools/env/fw_env.c
tools/imximage.h
tools/kwbimage.c
tools/kwbimage.h
tools/mips-relocs.c [new file with mode: 0644]
tools/mkimage.h
tools/moveconfig.py

diff --git a/Documentation/devicetree/bindings/phy/no-op.txt b/Documentation/devicetree/bindings/phy/no-op.txt
new file mode 100644 (file)
index 0000000..a338112
--- /dev/null
@@ -0,0 +1,16 @@
+NOP PHY driver
+
+This driver is used to stub PHY operations in a driver (USB, SATA).
+This is useful when the 'client' driver (USB, SATA, ...) uses the PHY framework
+and there is no actual PHY harwdare to drive.
+
+Required properties:
+- compatible     : must contain "nop-phy"
+- #phy-cells     : must contain <0>
+
+Example:
+
+nop_phy {
+       compatible = "nop-phy";
+       #phy-cells = <0>;
+};
diff --git a/Documentation/devicetree/bindings/rtc/brcm,brcmstb-waketimer.txt b/Documentation/devicetree/bindings/rtc/brcm,brcmstb-waketimer.txt
new file mode 100644 (file)
index 0000000..1d990bc
--- /dev/null
@@ -0,0 +1,22 @@
+Broadcom STB wake-up Timer
+
+The Broadcom STB wake-up timer provides a 27Mhz resolution timer, with the
+ability to wake up the system from low-power suspend/standby modes.
+
+Required properties:
+- compatible     : should contain "brcm,brcmstb-waketimer"
+- reg            : the register start and length for the WKTMR block
+- interrupts     : The TIMER interrupt
+- interrupt-parent: The phandle to the Always-On (AON) Power Management (PM) L2
+                    interrupt controller node
+- clocks        : The phandle to the UPG fixed clock (27Mhz domain)
+
+Example:
+
+waketimer@f0411580 {
+       compatible = "brcm,brcmstb-waketimer";
+       reg = <0xf0411580 0x14>;
+       interrupts = <0x3>;
+       interrupt-parent = <&aon_pm_l2_intc>;
+       clocks = <&upg_fixed>;
+};
diff --git a/Kconfig b/Kconfig
index bb80adacf45f00c4ee525e5239edf376a141b0e6..c1451bceda1bdd2f8e76c190a2c9c6fa84026c43 100644 (file)
--- a/Kconfig
+++ b/Kconfig
@@ -95,6 +95,16 @@ config SYS_MALLOC_F_LEN
          particular needs this to operate, so that it can allocate the
          initial serial device and any others that are needed.
 
+config SPL_SYS_MALLOC_F_LEN
+        hex "Size of malloc() pool in spl before relocation"
+        depends on SYS_MALLOC_F
+        default SYS_MALLOC_F_LEN
+        help
+          Before relocation, memory is very limited on many platforms. Still,
+          we can provide a small malloc() pool if needed. Driver model in
+          particular needs this to operate, so that it can allocate the
+          initial serial device and any others that are needed.
+
 menuconfig EXPERT
        bool "Configure standard U-Boot features (expert users)"
        default y
index 1e8d7d9bb625e3d7746d9037809bb826ee629416..f7e6abd6fdc73b192d2839e8f85d2a4cb83df8bb 100644 (file)
@@ -96,11 +96,11 @@ F:  arch/arm/cpu/arm1136/mx*/
 F:     arch/arm/cpu/arm926ejs/mx*/
 F:     arch/arm/cpu/armv7/mx*/
 F:     arch/arm/cpu/armv7/vf610/
-F:     arch/arm/imx-common/
+F:     arch/arm/mach-imx/
 F:     arch/arm/include/asm/arch-imx/
 F:     arch/arm/include/asm/arch-mx*/
 F:     arch/arm/include/asm/arch-vf610/
-F:     arch/arm/include/asm/imx-common/
+F:     arch/arm/include/asm/mach-imx/
 F:     board/freescale/*mx*/
 
 ARM HISILICON
@@ -324,12 +324,6 @@ S: Maintained
 T:     git git://git.denx.de/u-boot-mpc8xx.git
 F:     arch/powerpc/cpu/mpc8xx/
 
-POWERPC MPC82XX
-M:     Wolfgang Denk <wd@denx.de>
-S:     Maintained
-T:     git git://git.denx.de/u-boot-mpc82xx.git
-F:     arch/powerpc/cpu/mpc82*/
-
 POWERPC MPC83XX
 M:     Mario Six <mario.six@gdsys.cc>
 S:     Maintained
@@ -458,6 +452,7 @@ F:  drivers/video/
 
 X86
 M:     Simon Glass <sjg@chromium.org>
+M:     Bin Meng <bmeng.cn@gmail.com>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-x86.git
 F:     arch/x86/
index 4c4c8d86e6d8c1d6245cb3d03d6a040fe0a47ca8..78a5f736874712498a0d50ff83aad1cc829f5c57 100644 (file)
--- a/Makefile
+++ b/Makefile
@@ -349,7 +349,7 @@ OBJDUMP             = $(CROSS_COMPILE)objdump
 AWK            = awk
 PERL           = perl
 PYTHON         ?= python
-DTC            = dtc
+DTC            ?= dtc
 CHECK          = sparse
 
 CHECKFLAGS     := -D__linux__ -Dlinux -D__STDC__ -Dunix -D__unix__ \
@@ -516,6 +516,9 @@ include/config/%.conf: $(KCONFIG_CONFIG) include/config/auto.conf.cmd
        @# Otherwise, 'make silentoldconfig' would be invoked twice.
        $(Q)touch include/config/auto.conf
 
+u-boot.cfg spl/u-boot.cfg tpl/u-boot.cfg: include/config.h FORCE
+       $(Q)$(MAKE) -f $(srctree)/scripts/Makefile.autoconf $(@)
+
 -include include/autoconf.mk
 -include include/autoconf.mk.dep
 
@@ -851,7 +854,7 @@ quiet_cmd_cfgcheck = CFGCHK  $2
 cmd_cfgcheck = $(srctree)/scripts/check-config.sh $2 \
                $(srctree)/scripts/config_whitelist.txt $(srctree)
 
-all:           $(ALL-y)
+all:           $(ALL-y) cfg
 ifeq ($(CONFIG_DM_I2C_COMPAT)$(CONFIG_SANDBOX),y)
        @echo "===================== WARNING ======================"
        @echo "This board uses CONFIG_DM_I2C_COMPAT. Please remove"
@@ -899,7 +902,7 @@ u-boot.bin: u-boot-nodtb.bin FORCE
 endif
 
 %.imx: %.bin
-       $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
+       $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
 
 %.vyb: %.imx
        $(Q)$(MAKE) $(build)=arch/arm/cpu/armv7/vf610 $@
@@ -1064,10 +1067,10 @@ tpl/u-boot-with-tpl.bin: tpl/u-boot-tpl.bin u-boot.bin FORCE
        $(call if_changed,pad_cat)
 
 SPL: spl/u-boot-spl.bin FORCE
-       $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
+       $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
 
 u-boot-with-spl.imx u-boot-with-nand-spl.imx: SPL u-boot.bin FORCE
-       $(Q)$(MAKE) $(build)=arch/arm/imx-common $@
+       $(Q)$(MAKE) $(build)=arch/arm/mach-imx $@
 
 MKIMAGEFLAGS_u-boot.ubl = -n $(UBL_CONFIG) -T ublimage -e $(CONFIG_SYS_TEXT_BASE)
 
@@ -1229,13 +1232,16 @@ u-boot.elf: u-boot.bin
        $(Q)$(OBJCOPY) -I binary $(PLATFORM_ELFFLAGS) $< u-boot-elf.o
        $(call if_changed,u-boot-elf)
 
+ARCH_POSTLINK := $(wildcard $(srctree)/arch/$(ARCH)/Makefile.postlink)
+
 # Rule to link u-boot
 # May be overridden by arch/$(ARCH)/config.mk
 quiet_cmd_u-boot__ ?= LD      $@
       cmd_u-boot__ ?= $(LD) $(LDFLAGS) $(LDFLAGS_u-boot) -o $@ \
       -T u-boot.lds $(u-boot-init)                             \
       --start-group $(u-boot-main) --end-group                 \
-      $(PLATFORM_LIBS) -Map u-boot.map
+      $(PLATFORM_LIBS) -Map u-boot.map;                        \
+      $(if $(ARCH_POSTLINK), $(MAKE) -f $(ARCH_POSTLINK) $@, true)
 
 quiet_cmd_smap = GEN     common/system_map.o
 cmd_smap = \
@@ -1245,7 +1251,7 @@ cmd_smap = \
                -c $(srctree)/common/system_map.c -o common/system_map.o
 
 u-boot:        $(u-boot-init) $(u-boot-main) u-boot.lds FORCE
-       $(call if_changed,u-boot__)
+       +$(call if_changed,u-boot__)
 ifeq ($(CONFIG_KALLSYMS),y)
        $(call cmd,smap)
        $(call cmd,u-boot__) common/system_map.o
@@ -1352,6 +1358,7 @@ define filechk_timestamp.h
                        LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TIME "%T"'; \
                        LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_TZ "%z"'; \
                        LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
+                       LC_ALL=C $${DATE} -u -d "$${SOURCE_DATE}" +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \
                else \
                        return 42; \
                fi; \
@@ -1360,6 +1367,7 @@ define filechk_timestamp.h
                LC_ALL=C date +'#define U_BOOT_TIME "%T"'; \
                LC_ALL=C date +'#define U_BOOT_TZ "%z"'; \
                LC_ALL=C date +'#define U_BOOT_DMI_DATE "%m/%d/%Y"'; \
+               LC_ALL=C date +'#define U_BOOT_BUILD_DATE 0x%Y%m%d'; \
        fi)
 endef
 
diff --git a/README b/README
index c73f6dd57402db9c3e3cdc14fa71e4cbea2504ee..1527dee04063ed71624f87d9c4f7b3d11fd33e24 100644 (file)
--- a/README
+++ b/README
@@ -810,7 +810,6 @@ The following options need to be configured:
                CONFIG_CMD_MISC           Misc functions like sleep etc
                CONFIG_CMD_MMC          * MMC memory mapped support
                CONFIG_CMD_MII          * MII utility commands
-               CONFIG_CMD_MTDPARTS     * MTD partition support
                CONFIG_CMD_NAND         * NAND support
                CONFIG_CMD_NET            bootp, tftpboot, rarpboot
                CONFIG_CMD_NFS            NFS support
@@ -1620,11 +1619,6 @@ The following options need to be configured:
                the malloc area (as defined by CONFIG_SYS_MALLOC_LEN) should
                be at least 4MB.
 
-               CONFIG_LZO
-
-               If this option is set, support for LZO compressed images
-               is included.
-
 - MII/PHY support:
                CONFIG_PHY_ADDR
 
@@ -2796,13 +2790,6 @@ FIT uImage format:
                kernel. Needed for UBI support.
 
 - UBI support
-               CONFIG_CMD_UBI
-
-               Adds commands for interacting with MTD partitions formatted
-               with the UBI flash translation layer
-
-               Requires also defining CONFIG_RBTREE
-
                CONFIG_UBI_SILENCE_MSG
 
                Make the verbose messages from UBI stop printing.  This leaves
@@ -2871,13 +2858,6 @@ FIT uImage format:
                default: 0
 
 - UBIFS support
-               CONFIG_CMD_UBIFS
-
-               Adds commands for interacting with UBI volumes formatted as
-               UBIFS.  UBIFS is read-only in u-boot.
-
-               Requires UBI support as well as CONFIG_LZO
-
                CONFIG_UBIFS_SILENCE_MSG
 
                Make the verbose messages from UBIFS stop printing.  This leaves
@@ -3432,90 +3412,6 @@ following configurations:
        Builds up envcrc with the target environment so that external utils
        may easily extract it and embed it in final U-Boot images.
 
-- CONFIG_ENV_IS_IN_FLASH:
-
-       Define this if the environment is in flash memory.
-
-       a) The environment occupies one whole flash sector, which is
-          "embedded" in the text segment with the U-Boot code. This
-          happens usually with "bottom boot sector" or "top boot
-          sector" type flash chips, which have several smaller
-          sectors at the start or the end. For instance, such a
-          layout can have sector sizes of 8, 2x4, 16, Nx32 kB. In
-          such a case you would place the environment in one of the
-          4 kB sectors - with U-Boot code before and after it. With
-          "top boot sector" type flash chips, you would put the
-          environment in one of the last sectors, leaving a gap
-          between U-Boot and the environment.
-
-       - CONFIG_ENV_OFFSET:
-
-          Offset of environment data (variable area) to the
-          beginning of flash memory; for instance, with bottom boot
-          type flash chips the second sector can be used: the offset
-          for this sector is given here.
-
-          CONFIG_ENV_OFFSET is used relative to CONFIG_SYS_FLASH_BASE.
-
-       - CONFIG_ENV_ADDR:
-
-          This is just another way to specify the start address of
-          the flash sector containing the environment (instead of
-          CONFIG_ENV_OFFSET).
-
-       - CONFIG_ENV_SECT_SIZE:
-
-          Size of the sector containing the environment.
-
-
-       b) Sometimes flash chips have few, equal sized, BIG sectors.
-          In such a case you don't want to spend a whole sector for
-          the environment.
-
-       - CONFIG_ENV_SIZE:
-
-          If you use this in combination with CONFIG_ENV_IS_IN_FLASH
-          and CONFIG_ENV_SECT_SIZE, you can specify to use only a part
-          of this flash sector for the environment. This saves
-          memory for the RAM copy of the environment.
-
-          It may also save flash memory if you decide to use this
-          when your environment is "embedded" within U-Boot code,
-          since then the remainder of the flash sector could be used
-          for U-Boot code. It should be pointed out that this is
-          STRONGLY DISCOURAGED from a robustness point of view:
-          updating the environment in flash makes it always
-          necessary to erase the WHOLE sector. If something goes
-          wrong before the contents has been restored from a copy in
-          RAM, your target system will be dead.
-
-       - CONFIG_ENV_ADDR_REDUND
-         CONFIG_ENV_SIZE_REDUND
-
-          These settings describe a second storage area used to hold
-          a redundant copy of the environment data, so that there is
-          a valid backup copy in case there is a power failure during
-          a "saveenv" operation.
-
-BE CAREFUL! Any changes to the flash layout, and some changes to the
-source code will make it necessary to adapt <board>/u-boot.lds*
-accordingly!
-
-
-- CONFIG_ENV_IS_IN_NVRAM:
-
-       Define this if you have some non-volatile memory device
-       (NVRAM, battery buffered SRAM) which you want to use for the
-       environment.
-
-       - CONFIG_ENV_ADDR:
-       - CONFIG_ENV_SIZE:
-
-         These two #defines are used to determine the memory area you
-         want to use for environment. It is assumed that this memory
-         can just be read and written to, without any special
-         provision.
-
 BE CAREFUL! The first access to the environment happens quite early
 in U-Boot initialization (when we try to get the setting of for the
 console baudrate). You *MUST* have mapped your NVRAM area then, or
@@ -3526,285 +3422,17 @@ environment in RAM: we could work on NVRAM directly, but we want to
 keep settings there always unmodified except somebody uses "saveenv"
 to save the current settings.
 
-
-- CONFIG_ENV_IS_IN_EEPROM:
-
-       Use this if you have an EEPROM or similar serial access
-       device and a driver for it.
-
-       - CONFIG_ENV_OFFSET:
-       - CONFIG_ENV_SIZE:
-
-         These two #defines specify the offset and size of the
-         environment area within the total memory of your EEPROM.
-
-       - CONFIG_SYS_I2C_EEPROM_ADDR:
-         If defined, specified the chip address of the EEPROM device.
-         The default address is zero.
-
-       - CONFIG_SYS_I2C_EEPROM_BUS:
-         If defined, specified the i2c bus of the EEPROM device.
-
-       - CONFIG_SYS_EEPROM_PAGE_WRITE_BITS:
-         If defined, the number of bits used to address bytes in a
-         single page in the EEPROM device.  A 64 byte page, for example
-         would require six bits.
-
-       - CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS:
-         If defined, the number of milliseconds to delay between
-         page writes.  The default is zero milliseconds.
-
-       - CONFIG_SYS_I2C_EEPROM_ADDR_LEN:
-         The length in bytes of the EEPROM memory array address.  Note
-         that this is NOT the chip address length!
-
-       - CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW:
-         EEPROM chips that implement "address overflow" are ones
-         like Catalyst 24WC04/08/16 which has 9/10/11 bits of
-         address and the extra bits end up in the "chip address" bit
-         slots. This makes a 24WC08 (1Kbyte) chip look like four 256
-         byte chips.
-
-         Note that we consider the length of the address field to
-         still be one byte because the extra address bits are hidden
-         in the chip address.
-
-       - CONFIG_SYS_EEPROM_SIZE:
-         The size in bytes of the EEPROM device.
-
-       - CONFIG_ENV_EEPROM_IS_ON_I2C
-         define this, if you have I2C and SPI activated, and your
-         EEPROM, which holds the environment, is on the I2C bus.
-
-       - CONFIG_I2C_ENV_EEPROM_BUS
-         if you have an Environment on an EEPROM reached over
-         I2C muxes, you can define here, how to reach this
-         EEPROM. For example:
-
-         #define CONFIG_I2C_ENV_EEPROM_BUS       1
-
-         EEPROM which holds the environment, is reached over
-         a pca9547 i2c mux with address 0x70, channel 3.
-
-- CONFIG_ENV_IS_IN_DATAFLASH:
-
-       Define this if you have a DataFlash memory device which you
-       want to use for the environment.
-
-       - CONFIG_ENV_OFFSET:
-       - CONFIG_ENV_ADDR:
-       - CONFIG_ENV_SIZE:
-
-         These three #defines specify the offset and size of the
-         environment area within the total memory of your DataFlash placed
-         at the specified address.
-
-- CONFIG_ENV_IS_IN_SPI_FLASH:
-
-       Define this if you have a SPI Flash memory device which you
-       want to use for the environment.
-
-       - CONFIG_ENV_OFFSET:
-       - CONFIG_ENV_SIZE:
-
-         These two #defines specify the offset and size of the
-         environment area within the SPI Flash. CONFIG_ENV_OFFSET must be
-         aligned to an erase sector boundary.
-
-       - CONFIG_ENV_SECT_SIZE:
-
-         Define the SPI flash's sector size.
-
-       - CONFIG_ENV_OFFSET_REDUND (optional):
-
-         This setting describes a second storage area of CONFIG_ENV_SIZE
-         size used to hold a redundant copy of the environment data, so
-         that there is a valid backup copy in case there is a power failure
-         during a "saveenv" operation. CONFIG_ENV_OFFSET_REDUND must be
-         aligned to an erase sector boundary.
-
-       - CONFIG_ENV_SPI_BUS (optional):
-       - CONFIG_ENV_SPI_CS (optional):
-
-         Define the SPI bus and chip select. If not defined they will be 0.
-
-       - CONFIG_ENV_SPI_MAX_HZ (optional):
-
-         Define the SPI max work clock. If not defined then use 1MHz.
-
-       - CONFIG_ENV_SPI_MODE (optional):
-
-         Define the SPI work mode. If not defined then use SPI_MODE_3.
-
-- CONFIG_ENV_IS_IN_REMOTE:
-
-       Define this if you have a remote memory space which you
-       want to use for the local device's environment.
-
-       - CONFIG_ENV_ADDR:
-       - CONFIG_ENV_SIZE:
-
-         These two #defines specify the address and size of the
-         environment area within the remote memory space. The
-         local device can get the environment from remote memory
-         space by SRIO or PCIE links.
-
 BE CAREFUL! For some special cases, the local device can not use
 "saveenv" command. For example, the local device will get the
 environment stored in a remote NOR flash by SRIO or PCIE link,
 but it can not erase, write this NOR flash by SRIO or PCIE interface.
 
-- CONFIG_ENV_IS_IN_NAND:
-
-       Define this if you have a NAND device which you want to use
-       for the environment.
-
-       - CONFIG_ENV_OFFSET:
-       - CONFIG_ENV_SIZE:
-
-         These two #defines specify the offset and size of the environment
-         area within the first NAND device.  CONFIG_ENV_OFFSET must be
-         aligned to an erase block boundary.
-
-       - CONFIG_ENV_OFFSET_REDUND (optional):
-
-         This setting describes a second storage area of CONFIG_ENV_SIZE
-         size used to hold a redundant copy of the environment data, so
-         that there is a valid backup copy in case there is a power failure
-         during a "saveenv" operation.  CONFIG_ENV_OFFSET_REDUND must be
-         aligned to an erase block boundary.
-
-       - CONFIG_ENV_RANGE (optional):
-
-         Specifies the length of the region in which the environment
-         can be written.  This should be a multiple of the NAND device's
-         block size.  Specifying a range with more erase blocks than
-         are needed to hold CONFIG_ENV_SIZE allows bad blocks within
-         the range to be avoided.
-
-       - CONFIG_ENV_OFFSET_OOB (optional):
-
-         Enables support for dynamically retrieving the offset of the
-         environment from block zero's out-of-band data.  The
-         "nand env.oob" command can be used to record this offset.
-         Currently, CONFIG_ENV_OFFSET_REDUND is not supported when
-         using CONFIG_ENV_OFFSET_OOB.
-
 - CONFIG_NAND_ENV_DST
 
        Defines address in RAM to which the nand_spl code should copy the
        environment. If redundant environment is used, it will be copied to
        CONFIG_NAND_ENV_DST + CONFIG_ENV_SIZE.
 
-- CONFIG_ENV_IS_IN_UBI:
-
-       Define this if you have an UBI volume that you want to use for the
-       environment.  This has the benefit of wear-leveling the environment
-       accesses, which is important on NAND.
-
-       - CONFIG_ENV_UBI_PART:
-
-         Define this to a string that is the mtd partition containing the UBI.
-
-       - CONFIG_ENV_UBI_VOLUME:
-
-         Define this to the name of the volume that you want to store the
-         environment in.
-
-       - CONFIG_ENV_UBI_VOLUME_REDUND:
-
-         Define this to the name of another volume to store a second copy of
-         the environment in.  This will enable redundant environments in UBI.
-         It is assumed that both volumes are in the same MTD partition.
-
-       - CONFIG_UBI_SILENCE_MSG
-       - CONFIG_UBIFS_SILENCE_MSG
-
-         You will probably want to define these to avoid a really noisy system
-         when storing the env in UBI.
-
-- CONFIG_ENV_IS_IN_FAT:
-       Define this if you want to use the FAT file system for the environment.
-
-       - FAT_ENV_INTERFACE:
-
-         Define this to a string that is the name of the block device.
-
-       - FAT_ENV_DEVICE_AND_PART:
-
-         Define this to a string to specify the partition of the device. It can
-         be as following:
-
-           "D:P", "D:0", "D", "D:" or "D:auto" (D, P are integers. And P >= 1)
-               - "D:P": device D partition P. Error occurs if device D has no
-                        partition table.
-               - "D:0": device D.
-               - "D" or "D:": device D partition 1 if device D has partition
-                              table, or the whole device D if has no partition
-                              table.
-               - "D:auto": first partition in device D with bootable flag set.
-                           If none, first valid partition in device D. If no
-                           partition table then means device D.
-
-       - FAT_ENV_FILE:
-
-         It's a string of the FAT file name. This file use to store the
-         environment.
-
-       - CONFIG_FAT_WRITE:
-         This must be enabled. Otherwise it cannot save the environment file.
-
-- CONFIG_ENV_IS_IN_MMC:
-
-       Define this if you have an MMC device which you want to use for the
-       environment.
-
-       - CONFIG_SYS_MMC_ENV_DEV:
-
-         Specifies which MMC device the environment is stored in.
-
-       - CONFIG_SYS_MMC_ENV_PART (optional):
-
-         Specifies which MMC partition the environment is stored in. If not
-         set, defaults to partition 0, the user area. Common values might be
-         1 (first MMC boot partition), 2 (second MMC boot partition).
-
-       - CONFIG_ENV_OFFSET:
-       - CONFIG_ENV_SIZE:
-
-         These two #defines specify the offset and size of the environment
-         area within the specified MMC device.
-
-         If offset is positive (the usual case), it is treated as relative to
-         the start of the MMC partition. If offset is negative, it is treated
-         as relative to the end of the MMC partition. This can be useful if
-         your board may be fitted with different MMC devices, which have
-         different sizes for the MMC partitions, and you always want the
-         environment placed at the very end of the partition, to leave the
-         maximum possible space before it, to store other data.
-
-         These two values are in units of bytes, but must be aligned to an
-         MMC sector boundary.
-
-       - CONFIG_ENV_OFFSET_REDUND (optional):
-
-         Specifies a second storage area, of CONFIG_ENV_SIZE size, used to
-         hold a redundant copy of the environment data. This provides a
-         valid backup copy in case the other copy is corrupted, e.g. due
-         to a power failure during a "saveenv" operation.
-
-         This value may also be positive or negative; this is handled in the
-         same way as CONFIG_ENV_OFFSET.
-
-         This value is also in units of bytes, but must also be aligned to
-         an MMC sector boundary.
-
-       - CONFIG_ENV_SIZE_REDUND (optional):
-
-         This value need not be set, even when CONFIG_ENV_OFFSET_REDUND is
-         set. If this value is set, it must be set to the same value as
-         CONFIG_ENV_SIZE.
-
 Please note that the environment is read-only until the monitor
 has been relocated to RAM and a RAM copy of the environment has been
 created; also, when using EEPROM you will have to use getenv_f()
index 7e76abdbf3f06dd4732f8c4b98c78e8ac0a1b770..37016477cf29c34fc03ed449b270f75becc55484 100644 (file)
@@ -66,6 +66,7 @@ config SANDBOX
        select DM_SPI
        select DM_GPIO
        select DM_MMC
+       select LZO
        imply CMD_GETTIME
        imply CMD_HASH
        imply CMD_IO
@@ -93,6 +94,7 @@ config X86
        select DM_GPIO
        select DM_SPI
        select DM_SPI_FLASH
+       select USB
        select USB_EHCI_HCD
        imply CMD_FPGA_LOADMK
        imply CMD_GETTIME
index d43aaac2a029766bf48359f7cf8825d8d2b55030..7f6ab4ac7e6e77238019e146bc1b571bbfc83446 100644 (file)
@@ -488,6 +488,7 @@ config ARCH_BCM283X
        select DM_GPIO
        select OF_CONTROL
        imply FAT_WRITE
+       imply ENV_IS_IN_FAT
 
 config TARGET_VEXPRESS_CA15_TC2
        bool "Support vexpress_ca15_tc2"
@@ -569,6 +570,7 @@ config ARCH_KEYSTONE
        select SUPPORT_SPL
        select SYS_THUMB_BUILD
        select CMD_POWEROFF
+       imply CMD_MTDPARTS
        imply FIT
 
 config ARCH_OMAP2PLUS
@@ -649,6 +651,7 @@ config ARCH_SOCFPGA
        select ARCH_MISC_INIT
        select SYS_MMCSD_RAW_MODE_U_BOOT_USE_PARTITION
        select SYS_THUMB_BUILD
+       imply CMD_MTDPARTS
        imply CRC32_VERIFY
        imply FAT_WRITE
 
@@ -693,6 +696,7 @@ config ARCH_VF610
        bool "Freescale Vybrid"
        select CPU_V7
        select SYS_FSL_ERRATUM_ESDHC111
+       imply CMD_MTDPARTS
 
 config ARCH_ZYNQ
        bool "Xilinx Zynq Platform"
@@ -1019,6 +1023,7 @@ config ARCH_UNIPHIER
        select SPL_PINCTRL if SPL
        select SUPPORT_SPL
        imply FAT_WRITE
+       imply ENV_IS_IN_MMC
        help
          Support for UniPhier SoC family developed by Socionext Inc.
          (formerly, System LSI Business Division of Panasonic Corporation)
@@ -1098,13 +1103,13 @@ source "arch/arm/mach-mvebu/Kconfig"
 
 source "arch/arm/cpu/armv7/ls102xa/Kconfig"
 
-source "arch/arm/cpu/armv7/mx7ulp/Kconfig"
+source "arch/arm/mach-imx/mx7ulp/Kconfig"
 
-source "arch/arm/cpu/armv7/mx7/Kconfig"
+source "arch/arm/mach-imx/mx7/Kconfig"
 
-source "arch/arm/cpu/armv7/mx6/Kconfig"
+source "arch/arm/mach-imx/mx6/Kconfig"
 
-source "arch/arm/cpu/armv7/mx5/Kconfig"
+source "arch/arm/mach-imx/mx5/Kconfig"
 
 source "arch/arm/mach-omap2/Kconfig"
 
@@ -1144,7 +1149,7 @@ source "arch/arm/cpu/armv8/zynqmp/Kconfig"
 
 source "arch/arm/cpu/armv8/Kconfig"
 
-source "arch/arm/imx-common/Kconfig"
+source "arch/arm/mach-imx/Kconfig"
 
 source "board/aries/m28evk/Kconfig"
 source "board/bosch/shc/Kconfig"
index 3e93fd6e6add420a2ee2d778ea2f0353e4115af8..0e0ae77822890bbf51e5335ab55f38b399cfa32d 100644 (file)
@@ -96,11 +96,11 @@ libs-y += arch/arm/lib/
 
 ifeq ($(CONFIG_SPL_BUILD),y)
 ifneq (,$(CONFIG_MX23)$(CONFIG_MX28)$(CONFIG_MX35)$(filter $(SOC), mx25 mx5 mx6 mx7 mx35))
-libs-y += arch/arm/imx-common/
+libs-y += arch/arm/mach-imx/
 endif
 else
 ifneq (,$(filter $(SOC), mx25 mx27 mx5 mx6 mx7 mx7ulp mx31 mx35 mxs vf610))
-libs-y += arch/arm/imx-common/
+libs-y += arch/arm/mach-imx/
 endif
 endif
 
index 3b4326afefa20b4edf8744fb67ce3d24067d731e..86798e3bcbd466cc6a805a1167fc57c393e0e7e4 100644 (file)
@@ -12,7 +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>
+#include <asm/mach-imx/sys_proto.h>
 #ifdef CONFIG_MMC_MXC
 #include <asm/arch/mxcmmc.h>
 #endif
index 840dd9edbd2c68d67d540802bf7b5bf0446d1fe8..7a68a8f3ca74e370491131640d051f97ba338a7c 100644 (file)
@@ -14,7 +14,7 @@
 #include <linux/errno.h>
 #include <asm/io.h>
 #include <asm/arch/clock.h>
-#include <asm/imx-common/dma.h>
+#include <asm/mach-imx/dma.h>
 #include <asm/arch/gpio.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/imx-regs.h>
index 45dd3caec6b316b801afd6810e277b1b7932b1d4..b14ee54519db4a31be6cbd843ff0e398b1819953 100644 (file)
@@ -33,10 +33,6 @@ obj-$(if $(filter bcm281xx,$(SOC)),y) += bcm281xx/
 obj-$(if $(filter bcmcygnus,$(SOC)),y) += bcmcygnus/
 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_ARCH_MX7ULP) += mx7ulp/
 obj-$(CONFIG_RMOBILE) += rmobile/
 obj-$(if $(filter stv0991,$(SOC)),y) += stv0991/
 obj-$(CONFIG_ARCH_SUNXI) += sunxi/
diff --git a/arch/arm/cpu/armv7/mx5/Kconfig b/arch/arm/cpu/armv7/mx5/Kconfig
deleted file mode 100644 (file)
index ef37c35..0000000
+++ /dev/null
@@ -1,76 +0,0 @@
-if ARCH_MX5
-
-config MX5
-       bool
-       default y
-
-config MX51
-       bool
-
-config MX53
-       bool
-
-choice
-       prompt "MX5 board select"
-       optional
-
-config TARGET_M53EVK
-       bool "Support m53evk"
-       select MX53
-       select SUPPORT_SPL
-
-config TARGET_MX51EVK
-       bool "Support mx51evk"
-       select BOARD_LATE_INIT
-       select MX51
-
-config TARGET_MX53ARD
-       bool "Support mx53ard"
-       select MX53
-
-config TARGET_MX53CX9020
-       bool "Support CX9020"
-       select BOARD_LATE_INIT
-       select MX53
-       select DM
-       select DM_SERIAL
-
-config TARGET_MX53EVK
-       bool "Support mx53evk"
-       select BOARD_LATE_INIT
-       select MX53
-
-config TARGET_MX53LOCO
-       bool "Support mx53loco"
-       select BOARD_LATE_INIT
-       select MX53
-
-config TARGET_MX53SMD
-       bool "Support mx53smd"
-       select MX53
-
-config TARGET_TS4800
-       bool "Support TS4800"
-       select MX51
-       select SYS_FSL_ERRATUM_ESDHC_A001
-
-config TARGET_USBARMORY
-       bool "Support USB armory"
-       select MX53
-
-endchoice
-
-config SYS_SOC
-       default "mx5"
-
-source "board/aries/m53evk/Kconfig"
-source "board/beckhoff/mx53cx9020/Kconfig"
-source "board/freescale/mx51evk/Kconfig"
-source "board/freescale/mx53ard/Kconfig"
-source "board/freescale/mx53evk/Kconfig"
-source "board/freescale/mx53loco/Kconfig"
-source "board/freescale/mx53smd/Kconfig"
-source "board/inversepath/usbarmory/Kconfig"
-source "board/technologic/ts4800/Kconfig"
-
-endif
diff --git a/arch/arm/cpu/armv7/mx5/Makefile b/arch/arm/cpu/armv7/mx5/Makefile
deleted file mode 100644 (file)
index d021842..0000000
+++ /dev/null
@@ -1,11 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2009 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y := soc.o clock.o
-obj-y += lowlevel_init.o
diff --git a/arch/arm/cpu/armv7/mx5/clock.c b/arch/arm/cpu/armv7/mx5/clock.c
deleted file mode 100644 (file)
index 610098c..0000000
+++ /dev/null
@@ -1,949 +0,0 @@
-/*
- * (C) Copyright 2007
- * Sascha Hauer, Pengutronix
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <linux/errno.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/crm_regs.h>
-#include <asm/arch/clock.h>
-#include <div64.h>
-#include <asm/arch/sys_proto.h>
-
-enum pll_clocks {
-       PLL1_CLOCK = 0,
-       PLL2_CLOCK,
-       PLL3_CLOCK,
-#ifdef CONFIG_MX53
-       PLL4_CLOCK,
-#endif
-       PLL_CLOCKS,
-};
-
-struct mxc_pll_reg *mxc_plls[PLL_CLOCKS] = {
-       [PLL1_CLOCK] = (struct mxc_pll_reg *)PLL1_BASE_ADDR,
-       [PLL2_CLOCK] = (struct mxc_pll_reg *)PLL2_BASE_ADDR,
-       [PLL3_CLOCK] = (struct mxc_pll_reg *)PLL3_BASE_ADDR,
-#ifdef CONFIG_MX53
-       [PLL4_CLOCK] = (struct mxc_pll_reg *)PLL4_BASE_ADDR,
-#endif
-};
-
-#define AHB_CLK_ROOT    133333333
-#define SZ_DEC_1M       1000000
-#define PLL_PD_MAX      16      /* Actual pd+1 */
-#define PLL_MFI_MAX     15
-#define PLL_MFI_MIN     5
-#define ARM_DIV_MAX     8
-#define IPG_DIV_MAX     4
-#define AHB_DIV_MAX     8
-#define EMI_DIV_MAX     8
-#define NFC_DIV_MAX     8
-
-#define MX5_CBCMR      0x00015154
-#define MX5_CBCDR      0x02888945
-
-struct fixed_pll_mfd {
-       u32 ref_clk_hz;
-       u32 mfd;
-};
-
-const struct fixed_pll_mfd fixed_mfd[] = {
-       {MXC_HCLK, 24 * 16},
-};
-
-struct pll_param {
-       u32 pd;
-       u32 mfi;
-       u32 mfn;
-       u32 mfd;
-};
-
-#define PLL_FREQ_MAX(ref_clk)  (4 * (ref_clk) * PLL_MFI_MAX)
-#define PLL_FREQ_MIN(ref_clk) \
-               ((2 * (ref_clk) * (PLL_MFI_MIN - 1)) / PLL_PD_MAX)
-#define MAX_DDR_CLK     420000000
-#define NFC_CLK_MAX     34000000
-
-struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)MXC_CCM_BASE;
-
-void set_usboh3_clk(void)
-{
-       clrsetbits_le32(&mxc_ccm->cscmr1,
-                       MXC_CCM_CSCMR1_USBOH3_CLK_SEL_MASK,
-                       MXC_CCM_CSCMR1_USBOH3_CLK_SEL(1));
-       clrsetbits_le32(&mxc_ccm->cscdr1,
-                       MXC_CCM_CSCDR1_USBOH3_CLK_PODF_MASK |
-                       MXC_CCM_CSCDR1_USBOH3_CLK_PRED_MASK,
-                       MXC_CCM_CSCDR1_USBOH3_CLK_PRED(4) |
-                       MXC_CCM_CSCDR1_USBOH3_CLK_PODF(1));
-}
-
-void enable_usboh3_clk(bool enable)
-{
-       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
-
-       clrsetbits_le32(&mxc_ccm->CCGR2,
-                       MXC_CCM_CCGR2_USBOH3_60M(MXC_CCM_CCGR_CG_MASK),
-                       MXC_CCM_CCGR2_USBOH3_60M(cg));
-}
-
-#ifdef CONFIG_SYS_I2C_MXC
-/* i2c_num can be from 0, to 1 for i.MX51 and 2 for i.MX53 */
-int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
-{
-       u32 mask;
-
-#if defined(CONFIG_MX51)
-       if (i2c_num > 1)
-#elif defined(CONFIG_MX53)
-       if (i2c_num > 2)
-#endif
-               return -EINVAL;
-       mask = MXC_CCM_CCGR_CG_MASK <<
-                       (MXC_CCM_CCGR1_I2C1_OFFSET + (i2c_num << 1));
-       if (enable)
-               setbits_le32(&mxc_ccm->CCGR1, mask);
-       else
-               clrbits_le32(&mxc_ccm->CCGR1, mask);
-       return 0;
-}
-#endif
-
-void set_usb_phy_clk(void)
-{
-       clrbits_le32(&mxc_ccm->cscmr1, MXC_CCM_CSCMR1_USB_PHY_CLK_SEL);
-}
-
-#if defined(CONFIG_MX51)
-void enable_usb_phy1_clk(bool enable)
-{
-       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
-
-       clrsetbits_le32(&mxc_ccm->CCGR2,
-                       MXC_CCM_CCGR2_USB_PHY(MXC_CCM_CCGR_CG_MASK),
-                       MXC_CCM_CCGR2_USB_PHY(cg));
-}
-
-void enable_usb_phy2_clk(bool enable)
-{
-       /* i.MX51 has a single USB PHY clock, so do nothing here. */
-}
-#elif defined(CONFIG_MX53)
-void enable_usb_phy1_clk(bool enable)
-{
-       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
-
-       clrsetbits_le32(&mxc_ccm->CCGR4,
-                       MXC_CCM_CCGR4_USB_PHY1(MXC_CCM_CCGR_CG_MASK),
-                       MXC_CCM_CCGR4_USB_PHY1(cg));
-}
-
-void enable_usb_phy2_clk(bool enable)
-{
-       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
-
-       clrsetbits_le32(&mxc_ccm->CCGR4,
-                       MXC_CCM_CCGR4_USB_PHY2(MXC_CCM_CCGR_CG_MASK),
-                       MXC_CCM_CCGR4_USB_PHY2(cg));
-}
-#endif
-
-/*
- * Calculate the frequency of PLLn.
- */
-static uint32_t decode_pll(struct mxc_pll_reg *pll, uint32_t infreq)
-{
-       uint32_t ctrl, op, mfd, mfn, mfi, pdf, ret;
-       uint64_t refclk, temp;
-       int32_t mfn_abs;
-
-       ctrl = readl(&pll->ctrl);
-
-       if (ctrl & MXC_DPLLC_CTL_HFSM) {
-               mfn = readl(&pll->hfs_mfn);
-               mfd = readl(&pll->hfs_mfd);
-               op = readl(&pll->hfs_op);
-       } else {
-               mfn = readl(&pll->mfn);
-               mfd = readl(&pll->mfd);
-               op = readl(&pll->op);
-       }
-
-       mfd &= MXC_DPLLC_MFD_MFD_MASK;
-       mfn &= MXC_DPLLC_MFN_MFN_MASK;
-       pdf = op & MXC_DPLLC_OP_PDF_MASK;
-       mfi = MXC_DPLLC_OP_MFI_RD(op);
-
-       /* 21.2.3 */
-       if (mfi < 5)
-               mfi = 5;
-
-       /* Sign extend */
-       if (mfn >= 0x04000000) {
-               mfn |= 0xfc000000;
-               mfn_abs = -mfn;
-       } else
-               mfn_abs = mfn;
-
-       refclk = infreq * 2;
-       if (ctrl & MXC_DPLLC_CTL_DPDCK0_2_EN)
-               refclk *= 2;
-
-       do_div(refclk, pdf + 1);
-       temp = refclk * mfn_abs;
-       do_div(temp, mfd + 1);
-       ret = refclk * mfi;
-
-       if ((int)mfn < 0)
-               ret -= temp;
-       else
-               ret += temp;
-
-       return ret;
-}
-
-#ifdef CONFIG_MX51
-/*
- * This function returns the Frequency Pre-Multiplier clock.
- */
-static u32 get_fpm(void)
-{
-       u32 mult;
-       u32 ccr = readl(&mxc_ccm->ccr);
-
-       if (ccr & MXC_CCM_CCR_FPM_MULT)
-               mult = 1024;
-       else
-               mult = 512;
-
-       return MXC_CLK32 * mult;
-}
-#endif
-
-/*
- * This function returns the low power audio clock.
- */
-static u32 get_lp_apm(void)
-{
-       u32 ret_val = 0;
-       u32 ccsr = readl(&mxc_ccm->ccsr);
-
-       if (ccsr & MXC_CCM_CCSR_LP_APM)
-#if defined(CONFIG_MX51)
-               ret_val = get_fpm();
-#elif defined(CONFIG_MX53)
-               ret_val = decode_pll(mxc_plls[PLL4_CLOCK], MXC_HCLK);
-#endif
-       else
-               ret_val = MXC_HCLK;
-
-       return ret_val;
-}
-
-/*
- * Get mcu main rate
- */
-u32 get_mcu_main_clk(void)
-{
-       u32 reg, freq;
-
-       reg = MXC_CCM_CACRR_ARM_PODF_RD(readl(&mxc_ccm->cacrr));
-       freq = decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
-       return freq / (reg + 1);
-}
-
-/*
- * Get the rate of peripheral's root clock.
- */
-u32 get_periph_clk(void)
-{
-       u32 reg;
-
-       reg = readl(&mxc_ccm->cbcdr);
-       if (!(reg & MXC_CCM_CBCDR_PERIPH_CLK_SEL))
-               return decode_pll(mxc_plls[PLL2_CLOCK], MXC_HCLK);
-       reg = readl(&mxc_ccm->cbcmr);
-       switch (MXC_CCM_CBCMR_PERIPH_CLK_SEL_RD(reg)) {
-       case 0:
-               return decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
-       case 1:
-               return decode_pll(mxc_plls[PLL3_CLOCK], MXC_HCLK);
-       case 2:
-               return get_lp_apm();
-       default:
-               return 0;
-       }
-       /* NOTREACHED */
-}
-
-/*
- * Get the rate of ipg clock.
- */
-static u32 get_ipg_clk(void)
-{
-       uint32_t freq, reg, div;
-
-       freq = get_ahb_clk();
-
-       reg = readl(&mxc_ccm->cbcdr);
-       div = MXC_CCM_CBCDR_IPG_PODF_RD(reg) + 1;
-
-       return freq / div;
-}
-
-/*
- * Get the rate of ipg_per clock.
- */
-static u32 get_ipg_per_clk(void)
-{
-       u32 freq, pred1, pred2, podf;
-
-       if (readl(&mxc_ccm->cbcmr) & MXC_CCM_CBCMR_PERCLK_IPG_CLK_SEL)
-               return get_ipg_clk();
-
-       if (readl(&mxc_ccm->cbcmr) & MXC_CCM_CBCMR_PERCLK_LP_APM_CLK_SEL)
-               freq = get_lp_apm();
-       else
-               freq = get_periph_clk();
-       podf = readl(&mxc_ccm->cbcdr);
-       pred1 = MXC_CCM_CBCDR_PERCLK_PRED1_RD(podf);
-       pred2 = MXC_CCM_CBCDR_PERCLK_PRED2_RD(podf);
-       podf = MXC_CCM_CBCDR_PERCLK_PODF_RD(podf);
-       return freq / ((pred1 + 1) * (pred2 + 1) * (podf + 1));
-}
-
-/* Get the output clock rate of a standard PLL MUX for peripherals. */
-static u32 get_standard_pll_sel_clk(u32 clk_sel)
-{
-       u32 freq = 0;
-
-       switch (clk_sel & 0x3) {
-       case 0:
-               freq = decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
-               break;
-       case 1:
-               freq = decode_pll(mxc_plls[PLL2_CLOCK], MXC_HCLK);
-               break;
-       case 2:
-               freq = decode_pll(mxc_plls[PLL3_CLOCK], MXC_HCLK);
-               break;
-       case 3:
-               freq = get_lp_apm();
-               break;
-       }
-
-       return freq;
-}
-
-/*
- * Get the rate of uart clk.
- */
-static u32 get_uart_clk(void)
-{
-       unsigned int clk_sel, freq, reg, pred, podf;
-
-       reg = readl(&mxc_ccm->cscmr1);
-       clk_sel = MXC_CCM_CSCMR1_UART_CLK_SEL_RD(reg);
-       freq = get_standard_pll_sel_clk(clk_sel);
-
-       reg = readl(&mxc_ccm->cscdr1);
-       pred = MXC_CCM_CSCDR1_UART_CLK_PRED_RD(reg);
-       podf = MXC_CCM_CSCDR1_UART_CLK_PODF_RD(reg);
-       freq /= (pred + 1) * (podf + 1);
-
-       return freq;
-}
-
-/*
- * get cspi clock rate.
- */
-static u32 imx_get_cspiclk(void)
-{
-       u32 ret_val = 0, pdf, pre_pdf, clk_sel, freq;
-       u32 cscmr1 = readl(&mxc_ccm->cscmr1);
-       u32 cscdr2 = readl(&mxc_ccm->cscdr2);
-
-       pre_pdf = MXC_CCM_CSCDR2_CSPI_CLK_PRED_RD(cscdr2);
-       pdf = MXC_CCM_CSCDR2_CSPI_CLK_PODF_RD(cscdr2);
-       clk_sel = MXC_CCM_CSCMR1_CSPI_CLK_SEL_RD(cscmr1);
-       freq = get_standard_pll_sel_clk(clk_sel);
-       ret_val = freq / ((pre_pdf + 1) * (pdf + 1));
-       return ret_val;
-}
-
-/*
- * get esdhc clock rate.
- */
-static u32 get_esdhc_clk(u32 port)
-{
-       u32 clk_sel = 0, pred = 0, podf = 0, freq = 0;
-       u32 cscmr1 = readl(&mxc_ccm->cscmr1);
-       u32 cscdr1 = readl(&mxc_ccm->cscdr1);
-
-       switch (port) {
-       case 0:
-               clk_sel = MXC_CCM_CSCMR1_ESDHC1_MSHC1_CLK_SEL_RD(cscmr1);
-               pred = MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PRED_RD(cscdr1);
-               podf = MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PODF_RD(cscdr1);
-               break;
-       case 1:
-               clk_sel = MXC_CCM_CSCMR1_ESDHC2_MSHC2_CLK_SEL_RD(cscmr1);
-               pred = MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PRED_RD(cscdr1);
-               podf = MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PODF_RD(cscdr1);
-               break;
-       case 2:
-               if (cscmr1 & MXC_CCM_CSCMR1_ESDHC3_CLK_SEL)
-                       return get_esdhc_clk(1);
-               else
-                       return get_esdhc_clk(0);
-       case 3:
-               if (cscmr1 & MXC_CCM_CSCMR1_ESDHC4_CLK_SEL)
-                       return get_esdhc_clk(1);
-               else
-                       return get_esdhc_clk(0);
-       default:
-               break;
-       }
-
-       freq = get_standard_pll_sel_clk(clk_sel) / ((pred + 1) * (podf + 1));
-       return freq;
-}
-
-static u32 get_axi_a_clk(void)
-{
-       u32 cbcdr = readl(&mxc_ccm->cbcdr);
-       u32 pdf = MXC_CCM_CBCDR_AXI_A_PODF_RD(cbcdr);
-
-       return  get_periph_clk() / (pdf + 1);
-}
-
-static u32 get_axi_b_clk(void)
-{
-       u32 cbcdr = readl(&mxc_ccm->cbcdr);
-       u32 pdf = MXC_CCM_CBCDR_AXI_B_PODF_RD(cbcdr);
-
-       return  get_periph_clk() / (pdf + 1);
-}
-
-static u32 get_emi_slow_clk(void)
-{
-       u32 cbcdr = readl(&mxc_ccm->cbcdr);
-       u32 emi_clk_sel = cbcdr & MXC_CCM_CBCDR_EMI_CLK_SEL;
-       u32 pdf = MXC_CCM_CBCDR_EMI_PODF_RD(cbcdr);
-
-       if (emi_clk_sel)
-               return  get_ahb_clk() / (pdf + 1);
-
-       return  get_periph_clk() / (pdf + 1);
-}
-
-static u32 get_ddr_clk(void)
-{
-       u32 ret_val = 0;
-       u32 cbcmr = readl(&mxc_ccm->cbcmr);
-       u32 ddr_clk_sel = MXC_CCM_CBCMR_DDR_CLK_SEL_RD(cbcmr);
-#ifdef CONFIG_MX51
-       u32 cbcdr = readl(&mxc_ccm->cbcdr);
-       if (cbcdr & MXC_CCM_CBCDR_DDR_HIFREQ_SEL) {
-               u32 ddr_clk_podf = MXC_CCM_CBCDR_DDR_PODF_RD(cbcdr);
-
-               ret_val = decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
-               ret_val /= ddr_clk_podf + 1;
-
-               return ret_val;
-       }
-#endif
-       switch (ddr_clk_sel) {
-       case 0:
-               ret_val = get_axi_a_clk();
-               break;
-       case 1:
-               ret_val = get_axi_b_clk();
-               break;
-       case 2:
-               ret_val = get_emi_slow_clk();
-               break;
-       case 3:
-               ret_val = get_ahb_clk();
-               break;
-       default:
-               break;
-       }
-
-       return ret_val;
-}
-
-/*
- * The API of get mxc clocks.
- */
-unsigned int mxc_get_clock(enum mxc_clock clk)
-{
-       switch (clk) {
-       case MXC_ARM_CLK:
-               return get_mcu_main_clk();
-       case MXC_AHB_CLK:
-               return get_ahb_clk();
-       case MXC_IPG_CLK:
-               return get_ipg_clk();
-       case MXC_IPG_PERCLK:
-       case MXC_I2C_CLK:
-               return get_ipg_per_clk();
-       case MXC_UART_CLK:
-               return get_uart_clk();
-       case MXC_CSPI_CLK:
-               return imx_get_cspiclk();
-       case MXC_ESDHC_CLK:
-               return get_esdhc_clk(0);
-       case MXC_ESDHC2_CLK:
-               return get_esdhc_clk(1);
-       case MXC_ESDHC3_CLK:
-               return get_esdhc_clk(2);
-       case MXC_ESDHC4_CLK:
-               return get_esdhc_clk(3);
-       case MXC_FEC_CLK:
-               return get_ipg_clk();
-       case MXC_SATA_CLK:
-               return get_ahb_clk();
-       case MXC_DDR_CLK:
-               return get_ddr_clk();
-       default:
-               break;
-       }
-       return -EINVAL;
-}
-
-u32 imx_get_uartclk(void)
-{
-       return get_uart_clk();
-}
-
-u32 imx_get_fecclk(void)
-{
-       return get_ipg_clk();
-}
-
-static int gcd(int m, int n)
-{
-       int t;
-       while (m > 0) {
-               if (n > m) {
-                       t = m;
-                       m = n;
-                       n = t;
-               } /* swap */
-               m -= n;
-       }
-       return n;
-}
-
-/*
- * This is to calculate various parameters based on reference clock and
- * targeted clock based on the equation:
- *      t_clk = 2*ref_freq*(mfi + mfn/(mfd+1))/(pd+1)
- * This calculation is based on a fixed MFD value for simplicity.
- */
-static int calc_pll_params(u32 ref, u32 target, struct pll_param *pll)
-{
-       u64 pd, mfi = 1, mfn, mfd, t1;
-       u32 n_target = target;
-       u32 n_ref = ref, i;
-
-       /*
-        * Make sure targeted freq is in the valid range.
-        * Otherwise the following calculation might be wrong!!!
-        */
-       if (n_target < PLL_FREQ_MIN(ref) ||
-               n_target > PLL_FREQ_MAX(ref)) {
-               printf("Targeted peripheral clock should be"
-                       "within [%d - %d]\n",
-                       PLL_FREQ_MIN(ref) / SZ_DEC_1M,
-                       PLL_FREQ_MAX(ref) / SZ_DEC_1M);
-               return -EINVAL;
-       }
-
-       for (i = 0; i < ARRAY_SIZE(fixed_mfd); i++) {
-               if (fixed_mfd[i].ref_clk_hz == ref) {
-                       mfd = fixed_mfd[i].mfd;
-                       break;
-               }
-       }
-
-       if (i == ARRAY_SIZE(fixed_mfd))
-               return -EINVAL;
-
-       /* Use n_target and n_ref to avoid overflow */
-       for (pd = 1; pd <= PLL_PD_MAX; pd++) {
-               t1 = n_target * pd;
-               do_div(t1, (4 * n_ref));
-               mfi = t1;
-               if (mfi > PLL_MFI_MAX)
-                       return -EINVAL;
-               else if (mfi < 5)
-                       continue;
-               break;
-       }
-       /*
-        * Now got pd and mfi already
-        *
-        * mfn = (((n_target * pd) / 4 - n_ref * mfi) * mfd) / n_ref;
-        */
-       t1 = n_target * pd;
-       do_div(t1, 4);
-       t1 -= n_ref * mfi;
-       t1 *= mfd;
-       do_div(t1, n_ref);
-       mfn = t1;
-       debug("ref=%d, target=%d, pd=%d," "mfi=%d,mfn=%d, mfd=%d\n",
-               ref, n_target, (u32)pd, (u32)mfi, (u32)mfn, (u32)mfd);
-       i = 1;
-       if (mfn != 0)
-               i = gcd(mfd, mfn);
-       pll->pd = (u32)pd;
-       pll->mfi = (u32)mfi;
-       do_div(mfn, i);
-       pll->mfn = (u32)mfn;
-       do_div(mfd, i);
-       pll->mfd = (u32)mfd;
-
-       return 0;
-}
-
-#define calc_div(tgt_clk, src_clk, limit) ({           \
-               u32 v = 0;                              \
-               if (((src_clk) % (tgt_clk)) <= 100)     \
-                       v = (src_clk) / (tgt_clk);      \
-               else                                    \
-                       v = ((src_clk) / (tgt_clk)) + 1;\
-               if (v > limit)                          \
-                       v = limit;                      \
-               (v - 1);                                \
-       })
-
-#define CHANGE_PLL_SETTINGS(pll, pd, fi, fn, fd) \
-       {       \
-               writel(0x1232, &pll->ctrl);             \
-               writel(0x2, &pll->config);              \
-               writel((((pd) - 1) << 0) | ((fi) << 4), \
-                       &pll->op);                      \
-               writel(fn, &(pll->mfn));                \
-               writel((fd) - 1, &pll->mfd);            \
-               writel((((pd) - 1) << 0) | ((fi) << 4), \
-                       &pll->hfs_op);                  \
-               writel(fn, &pll->hfs_mfn);              \
-               writel((fd) - 1, &pll->hfs_mfd);        \
-               writel(0x1232, &pll->ctrl);             \
-               while (!readl(&pll->ctrl) & 0x1)        \
-                       ;\
-       }
-
-static int config_pll_clk(enum pll_clocks index, struct pll_param *pll_param)
-{
-       u32 ccsr = readl(&mxc_ccm->ccsr);
-       struct mxc_pll_reg *pll = mxc_plls[index];
-
-       switch (index) {
-       case PLL1_CLOCK:
-               /* Switch ARM to PLL2 clock */
-               writel(ccsr | MXC_CCM_CCSR_PLL1_SW_CLK_SEL,
-                               &mxc_ccm->ccsr);
-               CHANGE_PLL_SETTINGS(pll, pll_param->pd,
-                                       pll_param->mfi, pll_param->mfn,
-                                       pll_param->mfd);
-               /* Switch back */
-               writel(ccsr & ~MXC_CCM_CCSR_PLL1_SW_CLK_SEL,
-                               &mxc_ccm->ccsr);
-               break;
-       case PLL2_CLOCK:
-               /* Switch to pll2 bypass clock */
-               writel(ccsr | MXC_CCM_CCSR_PLL2_SW_CLK_SEL,
-                               &mxc_ccm->ccsr);
-               CHANGE_PLL_SETTINGS(pll, pll_param->pd,
-                                       pll_param->mfi, pll_param->mfn,
-                                       pll_param->mfd);
-               /* Switch back */
-               writel(ccsr & ~MXC_CCM_CCSR_PLL2_SW_CLK_SEL,
-                               &mxc_ccm->ccsr);
-               break;
-       case PLL3_CLOCK:
-               /* Switch to pll3 bypass clock */
-               writel(ccsr | MXC_CCM_CCSR_PLL3_SW_CLK_SEL,
-                               &mxc_ccm->ccsr);
-               CHANGE_PLL_SETTINGS(pll, pll_param->pd,
-                                       pll_param->mfi, pll_param->mfn,
-                                       pll_param->mfd);
-               /* Switch back */
-               writel(ccsr & ~MXC_CCM_CCSR_PLL3_SW_CLK_SEL,
-                               &mxc_ccm->ccsr);
-               break;
-#ifdef CONFIG_MX53
-       case PLL4_CLOCK:
-               /* Switch to pll4 bypass clock */
-               writel(ccsr | MXC_CCM_CCSR_PLL4_SW_CLK_SEL,
-                               &mxc_ccm->ccsr);
-               CHANGE_PLL_SETTINGS(pll, pll_param->pd,
-                                       pll_param->mfi, pll_param->mfn,
-                                       pll_param->mfd);
-               /* Switch back */
-               writel(ccsr & ~MXC_CCM_CCSR_PLL4_SW_CLK_SEL,
-                               &mxc_ccm->ccsr);
-               break;
-#endif
-       default:
-               return -EINVAL;
-       }
-
-       return 0;
-}
-
-/* Config CPU clock */
-static int config_core_clk(u32 ref, u32 freq)
-{
-       int ret = 0;
-       struct pll_param pll_param;
-
-       memset(&pll_param, 0, sizeof(struct pll_param));
-
-       /* The case that periph uses PLL1 is not considered here */
-       ret = calc_pll_params(ref, freq, &pll_param);
-       if (ret != 0) {
-               printf("Error:Can't find pll parameters: %d\n", ret);
-               return ret;
-       }
-
-       return config_pll_clk(PLL1_CLOCK, &pll_param);
-}
-
-static int config_nfc_clk(u32 nfc_clk)
-{
-       u32 parent_rate = get_emi_slow_clk();
-       u32 div;
-
-       if (nfc_clk == 0)
-               return -EINVAL;
-       div = parent_rate / nfc_clk;
-       if (div == 0)
-               div++;
-       if (parent_rate / div > NFC_CLK_MAX)
-               div++;
-       clrsetbits_le32(&mxc_ccm->cbcdr,
-                       MXC_CCM_CBCDR_NFC_PODF_MASK,
-                       MXC_CCM_CBCDR_NFC_PODF(div - 1));
-       while (readl(&mxc_ccm->cdhipr) != 0)
-               ;
-       return 0;
-}
-
-void enable_nfc_clk(unsigned char enable)
-{
-       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
-
-       clrsetbits_le32(&mxc_ccm->CCGR5,
-               MXC_CCM_CCGR5_EMI_ENFC(MXC_CCM_CCGR_CG_MASK),
-               MXC_CCM_CCGR5_EMI_ENFC(cg));
-}
-
-#ifdef CONFIG_FSL_IIM
-void enable_efuse_prog_supply(bool enable)
-{
-       if (enable)
-               setbits_le32(&mxc_ccm->cgpr,
-                            MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE);
-       else
-               clrbits_le32(&mxc_ccm->cgpr,
-                            MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE);
-}
-#endif
-
-/* Config main_bus_clock for periphs */
-static int config_periph_clk(u32 ref, u32 freq)
-{
-       int ret = 0;
-       struct pll_param pll_param;
-
-       memset(&pll_param, 0, sizeof(struct pll_param));
-
-       if (readl(&mxc_ccm->cbcdr) & MXC_CCM_CBCDR_PERIPH_CLK_SEL) {
-               ret = calc_pll_params(ref, freq, &pll_param);
-               if (ret != 0) {
-                       printf("Error:Can't find pll parameters: %d\n",
-                               ret);
-                       return ret;
-               }
-               switch (MXC_CCM_CBCMR_PERIPH_CLK_SEL_RD(
-                               readl(&mxc_ccm->cbcmr))) {
-               case 0:
-                       return config_pll_clk(PLL1_CLOCK, &pll_param);
-                       break;
-               case 1:
-                       return config_pll_clk(PLL3_CLOCK, &pll_param);
-                       break;
-               default:
-                       return -EINVAL;
-               }
-       }
-
-       return 0;
-}
-
-static int config_ddr_clk(u32 emi_clk)
-{
-       u32 clk_src;
-       s32 shift = 0, clk_sel, div = 1;
-       u32 cbcmr = readl(&mxc_ccm->cbcmr);
-
-       if (emi_clk > MAX_DDR_CLK) {
-               printf("Warning:DDR clock should not exceed %d MHz\n",
-                       MAX_DDR_CLK / SZ_DEC_1M);
-               emi_clk = MAX_DDR_CLK;
-       }
-
-       clk_src = get_periph_clk();
-       /* Find DDR clock input */
-       clk_sel = MXC_CCM_CBCMR_DDR_CLK_SEL_RD(cbcmr);
-       switch (clk_sel) {
-       case 0:
-               shift = 16;
-               break;
-       case 1:
-               shift = 19;
-               break;
-       case 2:
-               shift = 22;
-               break;
-       case 3:
-               shift = 10;
-               break;
-       default:
-               return -EINVAL;
-       }
-
-       if ((clk_src % emi_clk) < 10000000)
-               div = clk_src / emi_clk;
-       else
-               div = (clk_src / emi_clk) + 1;
-       if (div > 8)
-               div = 8;
-
-       clrsetbits_le32(&mxc_ccm->cbcdr, 0x7 << shift, (div - 1) << shift);
-       while (readl(&mxc_ccm->cdhipr) != 0)
-               ;
-       writel(0x0, &mxc_ccm->ccdr);
-
-       return 0;
-}
-
-/*
- * This function assumes the expected core clock has to be changed by
- * modifying the PLL. This is NOT true always but for most of the times,
- * it is. So it assumes the PLL output freq is the same as the expected
- * core clock (presc=1) unless the core clock is less than PLL_FREQ_MIN.
- * In the latter case, it will try to increase the presc value until
- * (presc*core_clk) is greater than PLL_FREQ_MIN. It then makes call to
- * calc_pll_params() and obtains the values of PD, MFI,MFN, MFD based
- * on the targeted PLL and reference input clock to the PLL. Lastly,
- * it sets the register based on these values along with the dividers.
- * Note 1) There is no value checking for the passed-in divider values
- *         so the caller has to make sure those values are sensible.
- *      2) Also adjust the NFC divider such that the NFC clock doesn't
- *         exceed NFC_CLK_MAX.
- *      3) IPU HSP clock is independent of AHB clock. Even it can go up to
- *         177MHz for higher voltage, this function fixes the max to 133MHz.
- *      4) This function should not have allowed diag_printf() calls since
- *         the serial driver has been stoped. But leave then here to allow
- *         easy debugging by NOT calling the cyg_hal_plf_serial_stop().
- */
-int mxc_set_clock(u32 ref, u32 freq, enum mxc_clock clk)
-{
-       freq *= SZ_DEC_1M;
-
-       switch (clk) {
-       case MXC_ARM_CLK:
-               if (config_core_clk(ref, freq))
-                       return -EINVAL;
-               break;
-       case MXC_PERIPH_CLK:
-               if (config_periph_clk(ref, freq))
-                       return -EINVAL;
-               break;
-       case MXC_DDR_CLK:
-               if (config_ddr_clk(freq))
-                       return -EINVAL;
-               break;
-       case MXC_NFC_CLK:
-               if (config_nfc_clk(freq))
-                       return -EINVAL;
-               break;
-       default:
-               printf("Warning:Unsupported or invalid clock type\n");
-       }
-
-       return 0;
-}
-
-#ifdef CONFIG_MX53
-/*
- * The clock for the external interface can be set to use internal clock
- * if fuse bank 4, row 3, bit 2 is set.
- * This is an undocumented feature and it was confirmed by Freescale's support:
- * Fuses (but not pins) may be used to configure SATA clocks.
- * Particularly the i.MX53 Fuse_Map contains the next information
- * about configuring SATA clocks :  SATA_ALT_REF_CLK[1:0] (offset 0x180C)
- * '00' - 100MHz (External)
- * '01' - 50MHz (External)
- * '10' - 120MHz, internal (USB PHY)
- * '11' - Reserved
-*/
-void mxc_set_sata_internal_clock(void)
-{
-       u32 *tmp_base =
-               (u32 *)(IIM_BASE_ADDR + 0x180c);
-
-       set_usb_phy_clk();
-
-       clrsetbits_le32(tmp_base, 0x6, 0x4);
-}
-#endif
-
-/*
- * Dump some core clockes.
- */
-int do_mx5_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       u32 freq;
-
-       freq = decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
-       printf("PLL1       %8d MHz\n", freq / 1000000);
-       freq = decode_pll(mxc_plls[PLL2_CLOCK], MXC_HCLK);
-       printf("PLL2       %8d MHz\n", freq / 1000000);
-       freq = decode_pll(mxc_plls[PLL3_CLOCK], MXC_HCLK);
-       printf("PLL3       %8d MHz\n", freq / 1000000);
-#ifdef CONFIG_MX53
-       freq = decode_pll(mxc_plls[PLL4_CLOCK], MXC_HCLK);
-       printf("PLL4       %8d MHz\n", freq / 1000000);
-#endif
-
-       printf("\n");
-       printf("AHB        %8d kHz\n", mxc_get_clock(MXC_AHB_CLK) / 1000);
-       printf("IPG        %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000);
-       printf("IPG PERCLK %8d kHz\n", mxc_get_clock(MXC_IPG_PERCLK) / 1000);
-       printf("DDR        %8d kHz\n", mxc_get_clock(MXC_DDR_CLK) / 1000);
-#ifdef CONFIG_MXC_SPI
-       printf("CSPI       %8d kHz\n", mxc_get_clock(MXC_CSPI_CLK) / 1000);
-#endif
-       return 0;
-}
-
-/***************************************************/
-
-U_BOOT_CMD(
-       clocks, CONFIG_SYS_MAXARGS, 1, do_mx5_showclocks,
-       "display clocks",
-       ""
-);
diff --git a/arch/arm/cpu/armv7/mx5/lowlevel_init.S b/arch/arm/cpu/armv7/mx5/lowlevel_init.S
deleted file mode 100644 (file)
index f5bc672..0000000
+++ /dev/null
@@ -1,429 +0,0 @@
-/*
- * Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <config.h>
-#include <asm/arch/imx-regs.h>
-#include <generated/asm-offsets.h>
-#include <linux/linkage.h>
-
-.section ".text.init", "x"
-
-.macro init_arm_erratum
-       /* ARM erratum ID #468414 */
-       mrc 15, 0, r1, c1, c0, 1
-       orr r1, r1, #(1 << 5)    /* enable L1NEON bit */
-       mcr 15, 0, r1, c1, c0, 1
-.endm
-
-/*
- * L2CC Cache setup/invalidation/disable
- */
-.macro init_l2cc
-       /* explicitly disable L2 cache */
-       mrc 15, 0, r0, c1, c0, 1
-       bic r0, r0, #0x2
-       mcr 15, 0, r0, c1, c0, 1
-
-       /* reconfigure L2 cache aux control reg */
-       ldr r0, =0xC0 |                 /* tag RAM */ \
-                0x4 |                  /* data RAM */ \
-                1 << 24 |              /* disable write allocate delay */ \
-                1 << 23 |              /* disable write allocate combine */ \
-                1 << 22                /* disable write allocate */
-
-#if defined(CONFIG_MX51)
-       ldr r3, [r4, #ROM_SI_REV]
-       cmp r3, #0x10
-
-       /* disable write combine for TO 2 and lower revs */
-       orrls r0, r0, #1 << 25
-#endif
-
-       mcr 15, 1, r0, c9, c0, 2
-
-       /* enable L2 cache */
-       mrc 15, 0, r0, c1, c0, 1
-       orr r0, r0, #2
-       mcr 15, 0, r0, c1, c0, 1
-
-.endm /* init_l2cc */
-
-/* AIPS setup - Only setup MPROTx registers.
- * The PACR default values are good.*/
-.macro init_aips
-       /*
-        * Set all MPROTx to be non-bufferable, trusted for R/W,
-        * not forced to user-mode.
-        */
-       ldr r0, =AIPS1_BASE_ADDR
-       ldr r1, =0x77777777
-       str r1, [r0, #0x0]
-       str r1, [r0, #0x4]
-       ldr r0, =AIPS2_BASE_ADDR
-       str r1, [r0, #0x0]
-       str r1, [r0, #0x4]
-       /*
-        * Clear the on and off peripheral modules Supervisor Protect bit
-        * for SDMA to access them. Did not change the AIPS control registers
-        * (offset 0x20) access type
-        */
-.endm /* init_aips */
-
-/* M4IF setup */
-.macro init_m4if
-#ifdef CONFIG_MX51
-       /* VPU and IPU given higher priority (0x4)
-        * IPU accesses with ID=0x1 given highest priority (=0xA)
-        */
-       ldr r0, =M4IF_BASE_ADDR
-
-       ldr r1, =0x00000203
-       str r1, [r0, #0x40]
-
-       str r4, [r0, #0x44]
-
-       ldr r1, =0x00120125
-       str r1, [r0, #0x9C]
-
-       ldr r1, =0x001901A3
-       str r1, [r0, #0x48]
-
-#endif
-.endm /* init_m4if */
-
-.macro setup_pll pll, freq
-       ldr r0, =\pll
-       adr r2, W_DP_\freq
-       bl setup_pll_func
-.endm
-
-#define W_DP_OP                0
-#define W_DP_MFD       4
-#define W_DP_MFN       8
-
-setup_pll_func:
-       ldr r1, =0x00001232
-       str r1, [r0, #PLL_DP_CTL] /* Set DPLL ON (set UPEN bit): BRMO=1 */
-       mov r1, #0x2
-       str r1, [r0, #PLL_DP_CONFIG] /* Enable auto-restart AREN bit */
-
-       ldr r1, [r2, #W_DP_OP]
-       str r1, [r0, #PLL_DP_OP]
-       str r1, [r0, #PLL_DP_HFS_OP]
-
-       ldr r1, [r2, #W_DP_MFD]
-       str r1, [r0, #PLL_DP_MFD]
-       str r1, [r0, #PLL_DP_HFS_MFD]
-
-       ldr r1, [r2, #W_DP_MFN]
-       str r1, [r0, #PLL_DP_MFN]
-       str r1, [r0, #PLL_DP_HFS_MFN]
-
-       ldr r1, =0x00001232
-       str r1, [r0, #PLL_DP_CTL]
-1:     ldr r1, [r0, #PLL_DP_CTL]
-       ands r1, r1, #0x1
-       beq 1b
-
-       /* r10 saved upper lr */
-       mov pc, lr
-
-.macro setup_pll_errata pll, freq
-       ldr r2, =\pll
-       str r4, [r2, #PLL_DP_CONFIG] /* Disable auto-restart AREN bit */
-       ldr r1, =0x00001236
-       str r1, [r2, #PLL_DP_CTL]    /* Restart PLL with PLM=1 */
-1:     ldr r1, [r2, #PLL_DP_CTL]    /* Wait for lock */
-       ands r1, r1, #0x1
-       beq 1b
-
-       ldr r5, \freq
-       str r5, [r2, #PLL_DP_MFN]    /* Modify MFN value */
-       str r5, [r2, #PLL_DP_HFS_MFN]
-
-       mov r1, #0x1
-       str r1, [r2, #PLL_DP_CONFIG] /* Reload MFN value */
-
-2:     ldr r1, [r2, #PLL_DP_CONFIG]
-       tst r1, #1
-       bne 2b
-
-       ldr r1, =100                 /* Wait at least 4 us */
-3:     subs r1, r1, #1
-       bge 3b
-
-       mov r1, #0x2
-       str r1, [r2, #PLL_DP_CONFIG] /* Enable auto-restart AREN bit */
-.endm
-
-.macro init_clock
-#if defined (CONFIG_MX51)
-       ldr r0, =CCM_BASE_ADDR
-
-       /* Gate of clocks to the peripherals first */
-       ldr r1, =0x3FFFFFFF
-       str r1, [r0, #CLKCTL_CCGR0]
-       str r4, [r0, #CLKCTL_CCGR1]
-       str r4, [r0, #CLKCTL_CCGR2]
-       str r4, [r0, #CLKCTL_CCGR3]
-
-       ldr r1, =0x00030000
-       str r1, [r0, #CLKCTL_CCGR4]
-       ldr r1, =0x00FFF030
-       str r1, [r0, #CLKCTL_CCGR5]
-       ldr r1, =0x00000300
-       str r1, [r0, #CLKCTL_CCGR6]
-
-       /* Disable IPU and HSC dividers */
-       mov r1, #0x60000
-       str r1, [r0, #CLKCTL_CCDR]
-
-       /* Make sure to switch the DDR away from PLL 1 */
-       ldr r1, =0x19239145
-       str r1, [r0, #CLKCTL_CBCDR]
-       /* make sure divider effective */
-1:     ldr r1, [r0, #CLKCTL_CDHIPR]
-       cmp r1, #0x0
-       bne 1b
-
-       /* Switch ARM to step clock */
-       mov r1, #0x4
-       str r1, [r0, #CLKCTL_CCSR]
-
-#if defined(CONFIG_MX51_PLL_ERRATA)
-       setup_pll PLL1_BASE_ADDR, 864
-       setup_pll_errata PLL1_BASE_ADDR, W_DP_MFN_800_DIT
-#else
-       setup_pll PLL1_BASE_ADDR, 800
-#endif
-
-       setup_pll PLL3_BASE_ADDR, 665
-
-       /* Switch peripheral to PLL 3 */
-       ldr r0, =CCM_BASE_ADDR
-       ldr r1, =0x000010C0 | CONFIG_SYS_DDR_CLKSEL
-       str r1, [r0, #CLKCTL_CBCMR]
-       ldr r1, =0x13239145
-       str r1, [r0, #CLKCTL_CBCDR]
-       setup_pll PLL2_BASE_ADDR, 665
-
-       /* Switch peripheral to PLL2 */
-       ldr r0, =CCM_BASE_ADDR
-       ldr r1, =0x19239145
-       str r1, [r0, #CLKCTL_CBCDR]
-       ldr r1, =0x000020C0 | CONFIG_SYS_DDR_CLKSEL
-       str r1, [r0, #CLKCTL_CBCMR]
-
-       setup_pll PLL3_BASE_ADDR, 216
-
-       /* Set the platform clock dividers */
-       ldr r0, =ARM_BASE_ADDR
-       ldr r1, =0x00000725
-       str r1, [r0, #0x14]
-
-       ldr r0, =CCM_BASE_ADDR
-
-       /* Run 3.0 at Full speed, for other TO's wait till we increase VDDGP */
-       ldr r3, [r4, #ROM_SI_REV]
-       cmp r3, #0x10
-       movls r1, #0x1
-       movhi r1, #0
-
-       str r1, [r0, #CLKCTL_CACRR]
-
-       /* Switch ARM back to PLL 1 */
-       str r4, [r0, #CLKCTL_CCSR]
-
-       /* setup the rest */
-       /* Use lp_apm (24MHz) source for perclk */
-       ldr r1, =0x000020C2 | CONFIG_SYS_DDR_CLKSEL
-       str r1, [r0, #CLKCTL_CBCMR]
-       /* ddr clock from PLL 1, all perclk dividers are 1 since using 24MHz */
-       ldr r1, =CONFIG_SYS_CLKTL_CBCDR
-       str r1, [r0, #CLKCTL_CBCDR]
-
-       /* Restore the default values in the Gate registers */
-       ldr r1, =0xFFFFFFFF
-       str r1, [r0, #CLKCTL_CCGR0]
-       str r1, [r0, #CLKCTL_CCGR1]
-       str r1, [r0, #CLKCTL_CCGR2]
-       str r1, [r0, #CLKCTL_CCGR3]
-       str r1, [r0, #CLKCTL_CCGR4]
-       str r1, [r0, #CLKCTL_CCGR5]
-       str r1, [r0, #CLKCTL_CCGR6]
-
-       /* Use PLL 2 for UART's, get 66.5MHz from it */
-       ldr r1, =0xA5A2A020
-       str r1, [r0, #CLKCTL_CSCMR1]
-       ldr r1, =0x00C30321
-       str r1, [r0, #CLKCTL_CSCDR1]
-       /* make sure divider effective */
-1:     ldr r1, [r0, #CLKCTL_CDHIPR]
-       cmp r1, #0x0
-       bne 1b
-
-       str r4, [r0, #CLKCTL_CCDR]
-
-       /* for cko - for ARM div by 8 */
-       mov r1, #0x000A0000
-       add r1, r1, #0x00000F0
-       str r1, [r0, #CLKCTL_CCOSR]
-#else  /* CONFIG_MX53 */
-       ldr r0, =CCM_BASE_ADDR
-
-       /* Gate of clocks to the peripherals first */
-       ldr r1, =0x3FFFFFFF
-       str r1, [r0, #CLKCTL_CCGR0]
-       str r4, [r0, #CLKCTL_CCGR1]
-       str r4, [r0, #CLKCTL_CCGR2]
-       str r4, [r0, #CLKCTL_CCGR3]
-       str r4, [r0, #CLKCTL_CCGR7]
-       ldr r1, =0x00030000
-       str r1, [r0, #CLKCTL_CCGR4]
-       ldr r1, =0x00FFF030
-       str r1, [r0, #CLKCTL_CCGR5]
-       ldr r1, =0x0F00030F
-       str r1, [r0, #CLKCTL_CCGR6]
-
-       /* Switch ARM to step clock */
-       mov r1, #0x4
-       str r1, [r0, #CLKCTL_CCSR]
-
-       setup_pll PLL1_BASE_ADDR, 800
-
-       setup_pll PLL3_BASE_ADDR, 400
-
-       /* Switch peripheral to PLL3 */
-       ldr r0, =CCM_BASE_ADDR
-       ldr r1, =0x00015154
-       str r1, [r0, #CLKCTL_CBCMR]
-       ldr r1, =0x02898945
-       str r1, [r0, #CLKCTL_CBCDR]
-       /* make sure change is effective */
-1:      ldr r1, [r0, #CLKCTL_CDHIPR]
-       cmp r1, #0x0
-       bne 1b
-
-       setup_pll PLL2_BASE_ADDR, 400
-
-       /* Switch peripheral to PLL2 */
-       ldr r0, =CCM_BASE_ADDR
-       ldr r1, =0x00888945
-       str r1, [r0, #CLKCTL_CBCDR]
-
-       ldr r1, =0x00016154
-       str r1, [r0, #CLKCTL_CBCMR]
-
-       /*change uart clk parent to pll2*/
-       ldr r1, [r0, #CLKCTL_CSCMR1]
-       and r1, r1, #0xfcffffff
-       orr r1, r1, #0x01000000
-       str r1, [r0, #CLKCTL_CSCMR1]
-
-       /* make sure change is effective */
-1:      ldr r1, [r0, #CLKCTL_CDHIPR]
-       cmp r1, #0x0
-       bne 1b
-
-       setup_pll PLL3_BASE_ADDR, 216
-
-       setup_pll PLL4_BASE_ADDR, 455
-
-       /* Set the platform clock dividers */
-       ldr r0, =ARM_BASE_ADDR
-       ldr r1, =0x00000124
-       str r1, [r0, #0x14]
-
-       ldr r0, =CCM_BASE_ADDR
-       mov r1, #0
-       str r1, [r0, #CLKCTL_CACRR]
-
-       /* Switch ARM back to PLL 1. */
-       mov r1, #0x0
-       str r1, [r0, #CLKCTL_CCSR]
-
-       /* make uart div=6 */
-       ldr r1, [r0, #CLKCTL_CSCDR1]
-       and r1, r1, #0xffffffc0
-       orr r1, r1, #0x0a
-       str r1, [r0, #CLKCTL_CSCDR1]
-
-       /* Restore the default values in the Gate registers */
-       ldr r1, =0xFFFFFFFF
-       str r1, [r0, #CLKCTL_CCGR0]
-       str r1, [r0, #CLKCTL_CCGR1]
-       str r1, [r0, #CLKCTL_CCGR2]
-       str r1, [r0, #CLKCTL_CCGR3]
-       str r1, [r0, #CLKCTL_CCGR4]
-       str r1, [r0, #CLKCTL_CCGR5]
-       str r1, [r0, #CLKCTL_CCGR6]
-       str r1, [r0, #CLKCTL_CCGR7]
-
-       mov r1, #0x00000
-       str r1, [r0, #CLKCTL_CCDR]
-
-       /* for cko - for ARM div by 8 */
-       mov r1, #0x000A0000
-       add r1, r1, #0x00000F0
-       str r1, [r0, #CLKCTL_CCOSR]
-
-#endif /* CONFIG_MX53 */
-.endm
-
-ENTRY(lowlevel_init)
-       mov r10, lr
-       mov r4, #0      /* Fix R4 to 0 */
-
-#if defined(CONFIG_SYS_MAIN_PWR_ON)
-       ldr r0, =GPIO1_BASE_ADDR
-       ldr r1, [r0, #0x0]
-       orr r1, r1, #1 << 23
-       str r1, [r0, #0x0]
-       ldr r1, [r0, #0x4]
-       orr r1, r1, #1 << 23
-       str r1, [r0, #0x4]
-#endif
-
-       init_arm_erratum
-
-       init_l2cc
-
-       init_aips
-
-       init_m4if
-
-       init_clock
-
-       mov pc, r10
-ENDPROC(lowlevel_init)
-
-/* Board level setting value */
-#if defined(CONFIG_MX51_PLL_ERRATA)
-W_DP_864:              .word DP_OP_864
-                       .word DP_MFD_864
-                       .word DP_MFN_864
-W_DP_MFN_800_DIT:      .word DP_MFN_800_DIT
-#else
-W_DP_800:              .word DP_OP_800
-                       .word DP_MFD_800
-                       .word DP_MFN_800
-#endif
-#if defined(CONFIG_MX51)
-W_DP_665:              .word DP_OP_665
-                       .word DP_MFD_665
-                       .word DP_MFN_665
-#endif
-W_DP_216:              .word DP_OP_216
-                       .word DP_MFD_216
-                       .word DP_MFN_216
-W_DP_400:               .word DP_OP_400
-                       .word DP_MFD_400
-                       .word DP_MFN_400
-W_DP_455:               .word DP_OP_455
-                       .word DP_MFD_455
-                       .word DP_MFN_455
diff --git a/arch/arm/cpu/armv7/mx5/soc.c b/arch/arm/cpu/armv7/mx5/soc.c
deleted file mode 100644 (file)
index e6cc7cb..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * (C) Copyright 2007
- * Sascha Hauer, Pengutronix
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/sys_proto.h>
-
-#include <linux/errno.h>
-#include <asm/io.h>
-#include <asm/imx-common/boot_mode.h>
-
-#if !(defined(CONFIG_MX51) || defined(CONFIG_MX53))
-#error "CPU_TYPE not defined"
-#endif
-
-u32 get_cpu_rev(void)
-{
-#ifdef CONFIG_MX51
-       int system_rev = 0x51000;
-#else
-       int system_rev = 0x53000;
-#endif
-       int reg = __raw_readl(ROM_SI_REV);
-
-#if defined(CONFIG_MX51)
-       switch (reg) {
-       case 0x02:
-               system_rev |= CHIP_REV_1_1;
-               break;
-       case 0x10:
-               if ((__raw_readl(GPIO1_BASE_ADDR + 0x0) & (0x1 << 22)) == 0)
-                       system_rev |= CHIP_REV_2_5;
-               else
-                       system_rev |= CHIP_REV_2_0;
-               break;
-       case 0x20:
-               system_rev |= CHIP_REV_3_0;
-               break;
-       default:
-               system_rev |= CHIP_REV_1_0;
-               break;
-       }
-#else
-       if (reg < 0x20)
-               system_rev |= CHIP_REV_1_0;
-       else
-               system_rev |= reg;
-#endif
-       return system_rev;
-}
-
-#ifdef CONFIG_REVISION_TAG
-u32 __weak get_board_rev(void)
-{
-       return get_cpu_rev();
-}
-#endif
-
-#ifndef CONFIG_SYS_DCACHE_OFF
-void enable_caches(void)
-{
-       /* Enable D-cache. I-cache is already enabled in start.S */
-       dcache_enable();
-}
-#endif
-
-#if defined(CONFIG_FEC_MXC)
-void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
-{
-       int i;
-       struct iim_regs *iim = (struct iim_regs *)IMX_IIM_BASE;
-       struct fuse_bank *bank = &iim->bank[1];
-       struct fuse_bank1_regs *fuse =
-                       (struct fuse_bank1_regs *)bank->fuse_regs;
-
-       for (i = 0; i < 6; i++)
-               mac[i] = readl(&fuse->mac_addr[i]) & 0xff;
-}
-#endif
-
-#ifdef CONFIG_MX53
-void boot_mode_apply(unsigned cfg_val)
-{
-       writel(cfg_val, &((struct srtc_regs *)SRTC_BASE_ADDR)->lpgr);
-}
-/*
- * cfg_val will be used for
- * Boot_cfg3[7:0]:Boot_cfg2[7:0]:Boot_cfg1[7:0]
- *
- * If bit 28 of LPGR is set upon watchdog reset,
- * bits[25:0] of LPGR will move to SBMR.
- */
-const struct boot_mode soc_boot_modes[] = {
-       {"normal",      MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)},
-       /* usb or serial download */
-       {"usb",         MAKE_CFGVAL(0x00, 0x00, 0x00, 0x13)},
-       {"sata",        MAKE_CFGVAL(0x28, 0x00, 0x00, 0x12)},
-       {"escpi1:0",    MAKE_CFGVAL(0x38, 0x20, 0x00, 0x12)},
-       {"escpi1:1",    MAKE_CFGVAL(0x38, 0x20, 0x04, 0x12)},
-       {"escpi1:2",    MAKE_CFGVAL(0x38, 0x20, 0x08, 0x12)},
-       {"escpi1:3",    MAKE_CFGVAL(0x38, 0x20, 0x0c, 0x12)},
-       /* 4 bit bus width */
-       {"esdhc1",      MAKE_CFGVAL(0x40, 0x20, 0x00, 0x12)},
-       {"esdhc2",      MAKE_CFGVAL(0x40, 0x20, 0x08, 0x12)},
-       {"esdhc3",      MAKE_CFGVAL(0x40, 0x20, 0x10, 0x12)},
-       {"esdhc4",      MAKE_CFGVAL(0x40, 0x20, 0x18, 0x12)},
-       {NULL,          0},
-};
-#endif
diff --git a/arch/arm/cpu/armv7/mx6/Kconfig b/arch/arm/cpu/armv7/mx6/Kconfig
deleted file mode 100644 (file)
index 1e5dc9a..0000000
+++ /dev/null
@@ -1,446 +0,0 @@
-if ARCH_MX6
-
-config MX6
-       bool
-       default y
-       select ARM_ERRATA_743622 if !MX6UL
-       select ARM_ERRATA_751472 if !MX6UL
-       select ARM_ERRATA_761320 if !MX6UL
-       select ARM_ERRATA_794072 if !MX6UL
-       imply CMD_FUSE
-
-config MX6D
-       bool
-
-config MX6DL
-       bool
-
-config MX6Q
-       bool
-
-config MX6QDL
-       bool
-
-config MX6S
-       bool
-
-config MX6SL
-       bool
-
-config MX6SX
-       select ROM_UNIFIED_SECTIONS
-       bool
-
-config MX6SLL
-       select ROM_UNIFIED_SECTIONS
-       bool
-
-config MX6UL
-       select SYS_L2CACHE_OFF
-       select ROM_UNIFIED_SECTIONS
-       bool
-
-config MX6UL_LITESOM
-       bool
-       select MX6UL
-       select DM
-       select DM_THERMAL
-       select SUPPORT_SPL
-
-config MX6UL_OPOS6UL
-       bool
-       select MX6UL
-       select BOARD_LATE_INIT
-       select DM
-       select DM_GPIO
-       select DM_MMC
-       select DM_THERMAL
-       select SUPPORT_SPL
-
-config MX6ULL
-       bool
-       select MX6UL
-
-config MX6_DDRCAL
-       bool "Include dynamic DDR calibration routines"
-       depends on SPL
-       default n
-       help
-         Say "Y" if your board uses dynamic (per-boot) DDR calibration.
-         If unsure, say N.
-
-choice
-       prompt "MX6 board select"
-       optional
-
-config TARGET_ADVANTECH_DMS_BA16
-       bool "Advantech dms-ba16"
-       select BOARD_LATE_INIT
-       select MX6Q
-       imply CMD_SATA
-
-config TARGET_APALIS_IMX6
-       bool "Toradex Apalis iMX6 board"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-       select DM
-       select DM_SERIAL
-       select DM_THERMAL
-       imply CMD_SATA
-
-config TARGET_ARISTAINETOS
-       bool "aristainetos"
-
-config TARGET_ARISTAINETOS2
-       bool "aristainetos2"
-       select BOARD_LATE_INIT
-
-config TARGET_ARISTAINETOS2B
-       bool "Support aristainetos2-revB"
-       select BOARD_LATE_INIT
-
-config TARGET_CGTQMX6EVAL
-       bool "cgtqmx6eval"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-       select DM
-       select DM_THERMAL
-
-config TARGET_CM_FX6
-       bool "CM-FX6"
-       select SUPPORT_SPL
-       select DM
-       select DM_SERIAL
-       select DM_GPIO
-
-config TARGET_COLIBRI_IMX6
-       bool "Toradex Colibri iMX6 board"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-       select DM
-       select DM_SERIAL
-       select DM_THERMAL
-
-config TARGET_EMBESTMX6BOARDS
-       bool "embestmx6boards"
-       select BOARD_LATE_INIT
-
-config TARGET_GE_B450V3
-       bool "General Electric B450v3"
-       select BOARD_LATE_INIT
-       select MX6Q
-
-config TARGET_GE_B650V3
-       bool "General Electric B650v3"
-       select BOARD_LATE_INIT
-       select MX6Q
-
-config TARGET_GE_B850V3
-       bool "General Electric B850v3"
-       select BOARD_LATE_INIT
-       select MX6Q
-
-config TARGET_GW_VENTANA
-       bool "gw_ventana"
-       select SUPPORT_SPL
-       imply CMD_SATA
-
-config TARGET_KOSAGI_NOVENA
-       bool "Kosagi Novena"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-
-config TARGET_MCCMON6
-       bool "mccmon6"
-       select SUPPORT_SPL
-
-config TARGET_MX6CUBOXI
-       bool "Solid-run mx6 boards"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-
-config TARGET_MX6LOGICPD
-       bool "Logic PD i.MX6 SOM"
-       select BOARD_EARLY_INIT_F
-       select BOARD_LATE_INIT
-       select DM
-       select DM_ETH
-       select DM_GPIO
-       select DM_I2C
-       select DM_MMC
-       select DM_PMIC
-       select DM_REGULATOR
-       select OF_CONTROL
-
-config TARGET_MX6QARM2
-       bool "mx6qarm2"
-
-config TARGET_MX6Q_ICORE
-       bool "Support Engicam i.Core"
-       select BOARD_LATE_INIT
-       select MX6QDL
-       select OF_CONTROL
-       select SPL_OF_LIBFDT
-       select DM
-       select DM_ETH
-       select DM_GPIO
-       select DM_I2C
-       select DM_MMC
-       select DM_THERMAL
-       select SUPPORT_SPL
-       select SPL_LOAD_FIT
-
-config TARGET_MX6Q_ICORE_RQS
-       bool "Support Engicam i.Core RQS"
-       select BOARD_LATE_INIT
-       select MX6QDL
-       select OF_CONTROL
-       select SPL_OF_LIBFDT
-       select DM
-       select DM_ETH
-       select DM_GPIO
-       select DM_I2C
-       select DM_MMC
-       select DM_THERMAL
-       select SUPPORT_SPL
-       select SPL_LOAD_FIT
-
-config TARGET_MX6QSABREAUTO
-       bool "mx6qsabreauto"
-       select BOARD_LATE_INIT
-       select DM
-       select DM_THERMAL
-       select BOARD_EARLY_INIT_F
-
-config TARGET_MX6SABRESD
-       bool "mx6sabresd"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-       select DM
-       select DM_THERMAL
-       select BOARD_EARLY_INIT_F
-
-config TARGET_MX6SLEVK
-       bool "mx6slevk"
-       select SUPPORT_SPL
-
-config TARGET_MX6SLLEVK
-        bool "mx6sll evk"
-       select BOARD_LATE_INIT
-        select MX6SLL
-        select DM
-        select DM_THERMAL
-
-config TARGET_MX6SXSABRESD
-       bool "mx6sxsabresd"
-       select MX6SX
-       select SUPPORT_SPL
-       select DM
-       select DM_THERMAL
-       select BOARD_EARLY_INIT_F
-
-config TARGET_MX6SXSABREAUTO
-        bool "mx6sxsabreauto"
-       select BOARD_LATE_INIT
-       select MX6SX
-        select DM
-        select DM_THERMAL
-       select BOARD_EARLY_INIT_F
-
-config TARGET_MX6UL_9X9_EVK
-       bool "mx6ul_9x9_evk"
-       select BOARD_LATE_INIT
-       select MX6UL
-       select DM
-       select DM_THERMAL
-       select SUPPORT_SPL
-
-config TARGET_MX6UL_14X14_EVK
-       select BOARD_LATE_INIT
-       bool "mx6ul_14x14_evk"
-       select MX6UL
-       select DM
-       select DM_THERMAL
-       select SUPPORT_SPL
-
-config TARGET_MX6UL_GEAM
-       bool "Support Engicam GEAM6UL"
-       select BOARD_LATE_INIT
-       select MX6UL
-       select OF_CONTROL
-       select DM
-       select DM_ETH
-       select DM_GPIO
-       select DM_I2C
-       select DM_MMC
-       select DM_THERMAL
-       select SUPPORT_SPL
-config TARGET_MX6UL_ISIOT
-       bool "Support Engicam Is.IoT MX6UL"
-       select BOARD_LATE_INIT
-       select MX6UL
-       select OF_CONTROL
-       select DM
-       select DM_ETH
-       select DM_GPIO
-       select DM_I2C
-       select DM_MMC
-       select DM_THERMAL
-       select SUPPORT_SPL
-
-config TARGET_MX6ULL_14X14_EVK
-       bool "Support mx6ull_14x14_evk"
-       select BOARD_LATE_INIT
-       select MX6ULL
-       select DM
-       select DM_THERMAL
-
-config TARGET_NITROGEN6X
-       bool "nitrogen6x"
-
-config TARGET_OPOS6ULDEV
-       bool "Armadeus OPOS6ULDev board"
-       select MX6UL_OPOS6UL
-
-config TARGET_OT1200
-       bool "Bachmann OT1200"
-       select SUPPORT_SPL
-       imply CMD_SATA
-
-config TARGET_PICO_IMX6UL
-       bool "PICO-IMX6UL-EMMC"
-       select MX6UL
-
-config TARGET_LITEBOARD
-       bool "Grinn liteBoard (i.MX6UL)"
-       select BOARD_LATE_INIT
-       select MX6UL_LITESOM
-
-config TARGET_PLATINUM_PICON
-       bool "platinum-picon"
-       select SUPPORT_SPL
-
-config TARGET_PLATINUM_TITANIUM
-       bool "platinum-titanium"
-       select SUPPORT_SPL
-
-config TARGET_PCM058
-       bool "Phytec PCM058 i.MX6 Quad"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-
-config TARGET_SECOMX6
-       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"
-       select BOARD_LATE_INIT
-
-config TARGET_UDOO
-       bool "udoo"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-
-config TARGET_UDOO_NEO
-       bool "UDOO Neo"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-       select MX6SX
-       select DM
-       select DM_THERMAL
-
-config TARGET_SAMTEC_VINING_2000
-       bool "samtec VIN|ING 2000"
-       select BOARD_LATE_INIT
-       select MX6SX
-       select DM
-       select DM_THERMAL
-
-config TARGET_WANDBOARD
-       bool "wandboard"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-
-config TARGET_WARP
-       bool "WaRP"
-       select BOARD_LATE_INIT
-
-config TARGET_XPRESS
-       bool "CCV xPress"
-       select BOARD_LATE_INIT
-       select MX6UL
-       select DM
-       select DM_THERMAL
-       select SUPPORT_SPL
-
-config TARGET_ZC5202
-       bool "zc5202"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-       select DM
-       select DM_THERMAL
-
-config TARGET_ZC5601
-       bool "zc5601"
-       select BOARD_LATE_INIT
-       select SUPPORT_SPL
-       select DM
-       select DM_THERMAL
-
-endchoice
-
-config SYS_SOC
-       default "mx6"
-
-source "board/ge/bx50v3/Kconfig"
-source "board/advantech/dms-ba16/Kconfig"
-source "board/aristainetos/Kconfig"
-source "board/armadeus/opos6uldev/Kconfig"
-source "board/bachmann/ot1200/Kconfig"
-source "board/barco/platinum/Kconfig"
-source "board/barco/titanium/Kconfig"
-source "board/boundary/nitrogen6x/Kconfig"
-source "board/ccv/xpress/Kconfig"
-source "board/compulab/cm_fx6/Kconfig"
-source "board/congatec/cgtqmx6eval/Kconfig"
-source "board/el/el6x/Kconfig"
-source "board/embest/mx6boards/Kconfig"
-source "board/engicam/geam6ul/Kconfig"
-source "board/engicam/icorem6/Kconfig"
-source "board/engicam/icorem6_rqs/Kconfig"
-source "board/engicam/isiotmx6ul/Kconfig"
-source "board/freescale/mx6qarm2/Kconfig"
-source "board/freescale/mx6qsabreauto/Kconfig"
-source "board/freescale/mx6sabresd/Kconfig"
-source "board/freescale/mx6slevk/Kconfig"
-source "board/freescale/mx6sllevk/Kconfig"
-source "board/freescale/mx6sxsabresd/Kconfig"
-source "board/freescale/mx6sxsabreauto/Kconfig"
-source "board/freescale/mx6ul_14x14_evk/Kconfig"
-source "board/freescale/mx6ullevk/Kconfig"
-source "board/grinn/liteboard/Kconfig"
-source "board/phytec/pcm058/Kconfig"
-source "board/gateworks/gw_ventana/Kconfig"
-source "board/kosagi/novena/Kconfig"
-source "board/samtec/vining_2000/Kconfig"
-source "board/liebherr/mccmon6/Kconfig"
-source "board/logicpd/imx6/Kconfig"
-source "board/seco/Kconfig"
-source "board/solidrun/mx6cuboxi/Kconfig"
-source "board/technexion/pico-imx6ul/Kconfig"
-source "board/tbs/tbs2910/Kconfig"
-source "board/tqc/tqma6/Kconfig"
-source "board/toradex/apalis_imx6/Kconfig"
-source "board/toradex/colibri_imx6/Kconfig"
-source "board/udoo/Kconfig"
-source "board/udoo/neo/Kconfig"
-source "board/wandboard/Kconfig"
-source "board/warp/Kconfig"
-
-endif
diff --git a/arch/arm/cpu/armv7/mx6/Makefile b/arch/arm/cpu/armv7/mx6/Makefile
deleted file mode 100644 (file)
index c183eb4..0000000
+++ /dev/null
@@ -1,14 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2011 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := soc.o clock.o
-obj-$(CONFIG_SPL_BUILD)             += ddr.o
-obj-$(CONFIG_MP)             += mp.o
-obj-$(CONFIG_MX6UL_LITESOM)  += litesom.o
-obj-$(CONFIG_MX6UL_OPOS6UL)  += opos6ul.o
diff --git a/arch/arm/cpu/armv7/mx6/clock.c b/arch/arm/cpu/armv7/mx6/clock.c
deleted file mode 100644 (file)
index 1f2739e..0000000
+++ /dev/null
@@ -1,1486 +0,0 @@
-/*
- * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <div64.h>
-#include <asm/io.h>
-#include <linux/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>
-
-enum pll_clocks {
-       PLL_SYS,        /* System PLL */
-       PLL_BUS,        /* System Bus PLL*/
-       PLL_USBOTG,     /* OTG USB PLL */
-       PLL_ENET,       /* ENET PLL */
-       PLL_AUDIO,      /* AUDIO PLL */
-       PLL_VIDEO,      /* AUDIO PLL */
-};
-
-struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-
-#ifdef CONFIG_MXC_OCOTP
-void enable_ocotp_clk(unsigned char enable)
-{
-       u32 reg;
-
-       reg = __raw_readl(&imx_ccm->CCGR2);
-       if (enable)
-               reg |= MXC_CCM_CCGR2_OCOTP_CTRL_MASK;
-       else
-               reg &= ~MXC_CCM_CCGR2_OCOTP_CTRL_MASK;
-       __raw_writel(reg, &imx_ccm->CCGR2);
-}
-#endif
-
-#ifdef CONFIG_NAND_MXS
-void setup_gpmi_io_clk(u32 cfg)
-{
-       /* Disable clocks per ERR007177 from MX6 errata */
-       clrbits_le32(&imx_ccm->CCGR4,
-                    MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
-                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
-                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
-                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
-                    MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK);
-
-#if defined(CONFIG_MX6SX)
-       clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK);
-
-       clrsetbits_le32(&imx_ccm->cs2cdr,
-                       MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK |
-                       MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK |
-                       MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK,
-                       cfg);
-
-       setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK);
-#else
-       clrbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
-
-       clrsetbits_le32(&imx_ccm->cs2cdr,
-                       MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK |
-                       MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK |
-                       MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK,
-                       cfg);
-
-       setbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
-#endif
-       setbits_le32(&imx_ccm->CCGR4,
-                    MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
-                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
-                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
-                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
-                    MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK);
-}
-#endif
-
-void enable_usboh3_clk(unsigned char enable)
-{
-       u32 reg;
-
-       reg = __raw_readl(&imx_ccm->CCGR6);
-       if (enable)
-               reg |= MXC_CCM_CCGR6_USBOH3_MASK;
-       else
-               reg &= ~(MXC_CCM_CCGR6_USBOH3_MASK);
-       __raw_writel(reg, &imx_ccm->CCGR6);
-
-}
-
-#if defined(CONFIG_FEC_MXC) && !defined(CONFIG_MX6SX)
-void enable_enet_clk(unsigned char enable)
-{
-       u32 mask, *addr;
-
-       if (is_mx6ull()) {
-               mask = MXC_CCM_CCGR0_ENET_CLK_ENABLE_MASK;
-               addr = &imx_ccm->CCGR0;
-       } else if (is_mx6ul()) {
-               mask = MXC_CCM_CCGR3_ENET_MASK;
-               addr = &imx_ccm->CCGR3;
-       } else {
-               mask = MXC_CCM_CCGR1_ENET_MASK;
-               addr = &imx_ccm->CCGR1;
-       }
-
-       if (enable)
-               setbits_le32(addr, mask);
-       else
-               clrbits_le32(addr, mask);
-}
-#endif
-
-#ifdef CONFIG_MXC_UART
-void enable_uart_clk(unsigned char enable)
-{
-       u32 mask;
-
-       if (is_mx6ul() || is_mx6ull())
-               mask = MXC_CCM_CCGR5_UART_MASK;
-       else
-               mask = MXC_CCM_CCGR5_UART_MASK | MXC_CCM_CCGR5_UART_SERIAL_MASK;
-
-       if (enable)
-               setbits_le32(&imx_ccm->CCGR5, mask);
-       else
-               clrbits_le32(&imx_ccm->CCGR5, mask);
-}
-#endif
-
-#ifdef CONFIG_MMC
-int enable_usdhc_clk(unsigned char enable, unsigned bus_num)
-{
-       u32 mask;
-
-       if (bus_num > 3)
-               return -EINVAL;
-
-       mask = MXC_CCM_CCGR_CG_MASK << (bus_num * 2 + 2);
-       if (enable)
-               setbits_le32(&imx_ccm->CCGR6, mask);
-       else
-               clrbits_le32(&imx_ccm->CCGR6, mask);
-
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_SYS_I2C_MXC
-/* i2c_num can be from 0 - 3 */
-int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
-{
-       u32 reg;
-       u32 mask;
-       u32 *addr;
-
-       if (i2c_num > 3)
-               return -EINVAL;
-       if (i2c_num < 3) {
-               mask = MXC_CCM_CCGR_CG_MASK
-                       << (MXC_CCM_CCGR2_I2C1_SERIAL_OFFSET
-                       + (i2c_num << 1));
-               reg = __raw_readl(&imx_ccm->CCGR2);
-               if (enable)
-                       reg |= mask;
-               else
-                       reg &= ~mask;
-               __raw_writel(reg, &imx_ccm->CCGR2);
-       } else {
-               if (is_mx6sll())
-                       return -EINVAL;
-               if (is_mx6sx() || is_mx6ul() || is_mx6ull()) {
-                       mask = MXC_CCM_CCGR6_I2C4_MASK;
-                       addr = &imx_ccm->CCGR6;
-               } else {
-                       mask = MXC_CCM_CCGR1_I2C4_SERIAL_MASK;
-                       addr = &imx_ccm->CCGR1;
-               }
-               reg = __raw_readl(addr);
-               if (enable)
-                       reg |= mask;
-               else
-                       reg &= ~mask;
-               __raw_writel(reg, addr);
-       }
-       return 0;
-}
-#endif
-
-/* spi_num can be from 0 - SPI_MAX_NUM */
-int enable_spi_clk(unsigned char enable, unsigned spi_num)
-{
-       u32 reg;
-       u32 mask;
-
-       if (spi_num > SPI_MAX_NUM)
-               return -EINVAL;
-
-       mask = MXC_CCM_CCGR_CG_MASK << (spi_num << 1);
-       reg = __raw_readl(&imx_ccm->CCGR1);
-       if (enable)
-               reg |= mask;
-       else
-               reg &= ~mask;
-       __raw_writel(reg, &imx_ccm->CCGR1);
-       return 0;
-}
-static u32 decode_pll(enum pll_clocks pll, u32 infreq)
-{
-       u32 div, test_div, pll_num, pll_denom;
-
-       switch (pll) {
-       case PLL_SYS:
-               div = __raw_readl(&imx_ccm->analog_pll_sys);
-               div &= BM_ANADIG_PLL_SYS_DIV_SELECT;
-
-               return (infreq * div) >> 1;
-       case PLL_BUS:
-               div = __raw_readl(&imx_ccm->analog_pll_528);
-               div &= BM_ANADIG_PLL_528_DIV_SELECT;
-
-               return infreq * (20 + (div << 1));
-       case PLL_USBOTG:
-               div = __raw_readl(&imx_ccm->analog_usb1_pll_480_ctrl);
-               div &= BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT;
-
-               return infreq * (20 + (div << 1));
-       case PLL_ENET:
-               div = __raw_readl(&imx_ccm->analog_pll_enet);
-               div &= BM_ANADIG_PLL_ENET_DIV_SELECT;
-
-               return 25000000 * (div + (div >> 1) + 1);
-       case PLL_AUDIO:
-               div = __raw_readl(&imx_ccm->analog_pll_audio);
-               if (!(div & BM_ANADIG_PLL_AUDIO_ENABLE))
-                       return 0;
-               /* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */
-               if (div & BM_ANADIG_PLL_AUDIO_BYPASS)
-                       return MXC_HCLK;
-               pll_num = __raw_readl(&imx_ccm->analog_pll_audio_num);
-               pll_denom = __raw_readl(&imx_ccm->analog_pll_audio_denom);
-               test_div = (div & BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT) >>
-                       BP_ANADIG_PLL_AUDIO_TEST_DIV_SELECT;
-               div &= BM_ANADIG_PLL_AUDIO_DIV_SELECT;
-               if (test_div == 3) {
-                       debug("Error test_div\n");
-                       return 0;
-               }
-               test_div = 1 << (2 - test_div);
-
-               return infreq * (div + pll_num / pll_denom) / test_div;
-       case PLL_VIDEO:
-               div = __raw_readl(&imx_ccm->analog_pll_video);
-               if (!(div & BM_ANADIG_PLL_VIDEO_ENABLE))
-                       return 0;
-               /* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */
-               if (div & BM_ANADIG_PLL_VIDEO_BYPASS)
-                       return MXC_HCLK;
-               pll_num = __raw_readl(&imx_ccm->analog_pll_video_num);
-               pll_denom = __raw_readl(&imx_ccm->analog_pll_video_denom);
-               test_div = (div & BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT) >>
-                       BP_ANADIG_PLL_VIDEO_POST_DIV_SELECT;
-               div &= BM_ANADIG_PLL_VIDEO_DIV_SELECT;
-               if (test_div == 3) {
-                       debug("Error test_div\n");
-                       return 0;
-               }
-               test_div = 1 << (2 - test_div);
-
-               return infreq * (div + pll_num / pll_denom) / test_div;
-       default:
-               return 0;
-       }
-       /* NOTREACHED */
-}
-static u32 mxc_get_pll_pfd(enum pll_clocks pll, int pfd_num)
-{
-       u32 div;
-       u64 freq;
-
-       switch (pll) {
-       case PLL_BUS:
-               if (!is_mx6ul() && !is_mx6ull()) {
-                       if (pfd_num == 3) {
-                               /* No PFD3 on PLL2 */
-                               return 0;
-                       }
-               }
-               div = __raw_readl(&imx_ccm->analog_pfd_528);
-               freq = (u64)decode_pll(PLL_BUS, MXC_HCLK);
-               break;
-       case PLL_USBOTG:
-               div = __raw_readl(&imx_ccm->analog_pfd_480);
-               freq = (u64)decode_pll(PLL_USBOTG, MXC_HCLK);
-               break;
-       default:
-               /* No PFD on other PLL                                       */
-               return 0;
-       }
-
-       return lldiv(freq * 18, (div & ANATOP_PFD_FRAC_MASK(pfd_num)) >>
-                             ANATOP_PFD_FRAC_SHIFT(pfd_num));
-}
-
-static u32 get_mcu_main_clk(void)
-{
-       u32 reg, freq;
-
-       reg = __raw_readl(&imx_ccm->cacrr);
-       reg &= MXC_CCM_CACRR_ARM_PODF_MASK;
-       reg >>= MXC_CCM_CACRR_ARM_PODF_OFFSET;
-       freq = decode_pll(PLL_SYS, MXC_HCLK);
-
-       return freq / (reg + 1);
-}
-
-u32 get_periph_clk(void)
-{
-       u32 reg, div = 0, freq = 0;
-
-       reg = __raw_readl(&imx_ccm->cbcdr);
-       if (reg & MXC_CCM_CBCDR_PERIPH_CLK_SEL) {
-               div = (reg & MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK) >>
-                      MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET;
-               reg = __raw_readl(&imx_ccm->cbcmr);
-               reg &= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK;
-               reg >>= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET;
-
-               switch (reg) {
-               case 0:
-                       freq = decode_pll(PLL_USBOTG, MXC_HCLK);
-                       break;
-               case 1:
-               case 2:
-                       freq = MXC_HCLK;
-                       break;
-               default:
-                       break;
-               }
-       } else {
-               reg = __raw_readl(&imx_ccm->cbcmr);
-               reg &= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK;
-               reg >>= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET;
-
-               switch (reg) {
-               case 0:
-                       freq = decode_pll(PLL_BUS, MXC_HCLK);
-                       break;
-               case 1:
-                       freq = mxc_get_pll_pfd(PLL_BUS, 2);
-                       break;
-               case 2:
-                       freq = mxc_get_pll_pfd(PLL_BUS, 0);
-                       break;
-               case 3:
-                       /* static / 2 divider */
-                       freq = mxc_get_pll_pfd(PLL_BUS, 2) / 2;
-                       break;
-               default:
-                       break;
-               }
-       }
-
-       return freq / (div + 1);
-}
-
-static u32 get_ipg_clk(void)
-{
-       u32 reg, ipg_podf;
-
-       reg = __raw_readl(&imx_ccm->cbcdr);
-       reg &= MXC_CCM_CBCDR_IPG_PODF_MASK;
-       ipg_podf = reg >> MXC_CCM_CBCDR_IPG_PODF_OFFSET;
-
-       return get_ahb_clk() / (ipg_podf + 1);
-}
-
-static u32 get_ipg_per_clk(void)
-{
-       u32 reg, perclk_podf;
-
-       reg = __raw_readl(&imx_ccm->cscmr1);
-       if (is_mx6sll() || is_mx6sl() || is_mx6sx() ||
-           is_mx6dqp() || is_mx6ul() || is_mx6ull()) {
-               if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK)
-                       return MXC_HCLK; /* OSC 24Mhz */
-       }
-
-       perclk_podf = reg & MXC_CCM_CSCMR1_PERCLK_PODF_MASK;
-
-       return get_ipg_clk() / (perclk_podf + 1);
-}
-
-static u32 get_uart_clk(void)
-{
-       u32 reg, uart_podf;
-       u32 freq = decode_pll(PLL_USBOTG, MXC_HCLK) / 6; /* static divider */
-       reg = __raw_readl(&imx_ccm->cscdr1);
-
-       if (is_mx6sl() || is_mx6sx() || is_mx6dqp() || is_mx6ul() ||
-           is_mx6sll() || is_mx6ull()) {
-               if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL)
-                       freq = MXC_HCLK;
-       }
-
-       reg &= MXC_CCM_CSCDR1_UART_CLK_PODF_MASK;
-       uart_podf = reg >> MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET;
-
-       return freq / (uart_podf + 1);
-}
-
-static u32 get_cspi_clk(void)
-{
-       u32 reg, cspi_podf;
-
-       reg = __raw_readl(&imx_ccm->cscdr2);
-       cspi_podf = (reg & MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK) >>
-                    MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET;
-
-       if (is_mx6dqp() || is_mx6sl() || is_mx6sx() || is_mx6ul() ||
-           is_mx6sll() || is_mx6ull()) {
-               if (reg & MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK)
-                       return MXC_HCLK / (cspi_podf + 1);
-       }
-
-       return  decode_pll(PLL_USBOTG, MXC_HCLK) / (8 * (cspi_podf + 1));
-}
-
-static u32 get_axi_clk(void)
-{
-       u32 root_freq, axi_podf;
-       u32 cbcdr =  __raw_readl(&imx_ccm->cbcdr);
-
-       axi_podf = cbcdr & MXC_CCM_CBCDR_AXI_PODF_MASK;
-       axi_podf >>= MXC_CCM_CBCDR_AXI_PODF_OFFSET;
-
-       if (cbcdr & MXC_CCM_CBCDR_AXI_SEL) {
-               if (cbcdr & MXC_CCM_CBCDR_AXI_ALT_SEL)
-                       root_freq = mxc_get_pll_pfd(PLL_USBOTG, 1);
-               else
-                       root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
-       } else
-               root_freq = get_periph_clk();
-
-       return  root_freq / (axi_podf + 1);
-}
-
-static u32 get_emi_slow_clk(void)
-{
-       u32 emi_clk_sel, emi_slow_podf, cscmr1, root_freq = 0;
-
-       cscmr1 =  __raw_readl(&imx_ccm->cscmr1);
-       emi_clk_sel = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK;
-       emi_clk_sel >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET;
-       emi_slow_podf = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK;
-       emi_slow_podf >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET;
-
-       switch (emi_clk_sel) {
-       case 0:
-               root_freq = get_axi_clk();
-               break;
-       case 1:
-               root_freq = decode_pll(PLL_USBOTG, MXC_HCLK);
-               break;
-       case 2:
-               root_freq =  mxc_get_pll_pfd(PLL_BUS, 2);
-               break;
-       case 3:
-               root_freq =  mxc_get_pll_pfd(PLL_BUS, 0);
-               break;
-       }
-
-       return root_freq / (emi_slow_podf + 1);
-}
-
-static u32 get_mmdc_ch0_clk(void)
-{
-       u32 cbcmr = __raw_readl(&imx_ccm->cbcmr);
-       u32 cbcdr = __raw_readl(&imx_ccm->cbcdr);
-
-       u32 freq, podf, per2_clk2_podf, pmu_misc2_audio_div;
-
-       if (is_mx6sx() || is_mx6ul() || is_mx6ull() || is_mx6sl() ||
-           is_mx6sll()) {
-               podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK) >>
-                       MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET;
-               if (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK_SEL) {
-                       per2_clk2_podf = (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_MASK) >>
-                               MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_OFFSET;
-                       if (is_mx6sl()) {
-                               if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL)
-                                       freq = MXC_HCLK;
-                               else
-                                       freq = decode_pll(PLL_USBOTG, MXC_HCLK);
-                       } else {
-                               if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL)
-                                       freq = decode_pll(PLL_BUS, MXC_HCLK);
-                               else
-                                       freq = decode_pll(PLL_USBOTG, MXC_HCLK);
-                       }
-               } else {
-                       per2_clk2_podf = 0;
-                       switch ((cbcmr &
-                               MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK) >>
-                               MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET) {
-                       case 0:
-                               freq = decode_pll(PLL_BUS, MXC_HCLK);
-                               break;
-                       case 1:
-                               freq = mxc_get_pll_pfd(PLL_BUS, 2);
-                               break;
-                       case 2:
-                               freq = mxc_get_pll_pfd(PLL_BUS, 0);
-                               break;
-                       case 3:
-                               if (is_mx6sl()) {
-                                       freq = mxc_get_pll_pfd(PLL_BUS, 2) >> 1;
-                                       break;
-                               }
-
-                               pmu_misc2_audio_div = PMU_MISC2_AUDIO_DIV(__raw_readl(&imx_ccm->pmu_misc2));
-                               switch (pmu_misc2_audio_div) {
-                               case 0:
-                               case 2:
-                                       pmu_misc2_audio_div = 1;
-                                       break;
-                               case 1:
-                                       pmu_misc2_audio_div = 2;
-                                       break;
-                               case 3:
-                                       pmu_misc2_audio_div = 4;
-                                       break;
-                               }
-                               freq = decode_pll(PLL_AUDIO, MXC_HCLK) /
-                                       pmu_misc2_audio_div;
-                               break;
-                       }
-               }
-               return freq / (podf + 1) / (per2_clk2_podf + 1);
-       } else {
-               podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK) >>
-                       MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET;
-               return get_periph_clk() / (podf + 1);
-       }
-}
-
-#if defined(CONFIG_VIDEO_MXS)
-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 */
-       writel(BM_ANADIG_PLL_VIDEO_POWERDOWN |
-              BM_ANADIG_PLL_VIDEO_BYPASS |
-              BM_ANADIG_PLL_VIDEO_DIV_SELECT |
-              BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT,
-              &imx_ccm->analog_pll_video_clr);
-
-       /* Set div, num and denom */
-       switch (post_div) {
-       case 1:
-               writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
-                      BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x2),
-                      &imx_ccm->analog_pll_video_set);
-               break;
-       case 2:
-               writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
-                      BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x1),
-                      &imx_ccm->analog_pll_video_set);
-               break;
-       case 4:
-               writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
-                      BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x0),
-                      &imx_ccm->analog_pll_video_set);
-               break;
-       default:
-               puts("Wrong test_div!\n");
-               return -EINVAL;
-       }
-
-       writel(BF_ANADIG_PLL_VIDEO_NUM_A(pll_num),
-              &imx_ccm->analog_pll_video_num);
-       writel(BF_ANADIG_PLL_VIDEO_DENOM_B(pll_denom),
-              &imx_ccm->analog_pll_video_denom);
-
-       /* Wait PLL5 lock */
-       start = get_timer(0);   /* Get current timestamp */
-
-       do {
-               reg = readl(&imx_ccm->analog_pll_video);
-               if (reg & BM_ANADIG_PLL_VIDEO_LOCK) {
-                       /* Enable PLL out */
-                       writel(BM_ANADIG_PLL_VIDEO_ENABLE,
-                              &imx_ccm->analog_pll_video_set);
-                       return 0;
-               }
-       } while (get_timer(0) < (start + 10)); /* Wait 10ms */
-
-       puts("Lock PLL5 timeout\n");
-
-       return -ETIME;
-}
-
-/*
- * 24M--> PLL_VIDEO -> LCDIFx_PRED -> LCDIFx_PODF -> LCD
- *
- * 'freq' using KHz as unit, see driver/video/mxsfb.c.
- */
-void mxs_set_lcdclk(u32 base_addr, u32 freq)
-{
-       u32 reg = 0;
-       u32 hck = MXC_HCLK / 1000;
-       /* DIV_SELECT ranges from 27 to 54 */
-       u32 min = hck * 27;
-       u32 max = hck * 54;
-       u32 temp, best = 0;
-       u32 i, j, max_pred = 8, max_postd = 8, pred = 1, postd = 1;
-       u32 pll_div, pll_num, pll_denom, post_div = 1;
-
-       debug("mxs_set_lcdclk, freq = %dKHz\n", freq);
-
-       if (!is_mx6sx() && !is_mx6ul() && !is_mx6ull() && !is_mx6sl() &&
-           !is_mx6sll()) {
-               debug("This chip not support lcd!\n");
-               return;
-       }
-
-       if (!is_mx6sl()) {
-               if (base_addr == LCDIF1_BASE_ADDR) {
-                       reg = readl(&imx_ccm->cscdr2);
-                       /* Can't change clocks when clock not from pre-mux */
-                       if ((reg & MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK) != 0)
-                               return;
-               }
-       }
-
-       if (is_mx6sx()) {
-               reg = readl(&imx_ccm->cscdr2);
-               /* Can't change clocks when clock not from pre-mux */
-               if ((reg & MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK) != 0)
-                       return;
-       }
-
-       temp = freq * max_pred * max_postd;
-       if (temp < min) {
-               /*
-                * Register: PLL_VIDEO
-                * Bit Field: POST_DIV_SELECT
-                * 00 â€” Divide by 4.
-                * 01 â€” Divide by 2.
-                * 10 â€” Divide by 1.
-                * 11 â€” Reserved
-                * No need to check post_div(1)
-                */
-               for (post_div = 2; post_div <= 4; post_div <<= 1) {
-                       if ((temp * post_div) > min) {
-                               freq *= post_div;
-                               break;
-                       }
-               }
-
-               if (post_div > 4) {
-                       printf("Fail to set rate to %dkhz", freq);
-                       return;
-               }
-       }
-
-       /* Choose the best pred and postd to match freq for lcd */
-       for (i = 1; i <= max_pred; i++) {
-               for (j = 1; j <= max_postd; 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;
-
-       /*
-        *                                  pll_num
-        *             (24MHz * (pll_div + --------- ))
-        *                                 pll_denom
-        *freq KHz =  --------------------------------
-        *             post_div * pred * postd * 1000
-        */
-
-       if (base_addr == LCDIF1_BASE_ADDR) {
-               if (enable_pll_video(pll_div, pll_num, pll_denom, post_div))
-                       return;
-
-               enable_lcdif_clock(base_addr, 0);
-               if (!is_mx6sl()) {
-                       /* Select pre-lcd clock to PLL5 and set pre divider */
-                       clrsetbits_le32(&imx_ccm->cscdr2,
-                                       MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_MASK |
-                                       MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_MASK,
-                                       (0x2 << MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_OFFSET) |
-                                       ((pred - 1) <<
-                                        MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_OFFSET));
-
-                       /* Set the post divider */
-                       clrsetbits_le32(&imx_ccm->cbcmr,
-                                       MXC_CCM_CBCMR_LCDIF1_PODF_MASK,
-                                       ((postd - 1) <<
-                                       MXC_CCM_CBCMR_LCDIF1_PODF_OFFSET));
-               } else {
-                       /* Select pre-lcd clock to PLL5 and set pre divider */
-                       clrsetbits_le32(&imx_ccm->cscdr2,
-                                       MXC_CCM_CSCDR2_LCDIF_PIX_CLK_SEL_MASK |
-                                       MXC_CCM_CSCDR2_LCDIF_PIX_PRE_DIV_MASK,
-                                       (0x2 << MXC_CCM_CSCDR2_LCDIF_PIX_CLK_SEL_OFFSET) |
-                                       ((pred - 1) <<
-                                        MXC_CCM_CSCDR2_LCDIF_PIX_PRE_DIV_OFFSET));
-
-                       /* Set the post divider */
-                       clrsetbits_le32(&imx_ccm->cscmr1,
-                                       MXC_CCM_CSCMR1_LCDIF_PIX_PODF_MASK,
-                                       (((postd - 1)^0x6) <<
-                                        MXC_CCM_CSCMR1_LCDIF_PIX_PODF_OFFSET));
-               }
-
-               enable_lcdif_clock(base_addr, 1);
-       } else if (is_mx6sx()) {
-               /* Setting LCDIF2 for i.MX6SX */
-               if (enable_pll_video(pll_div, pll_num, pll_denom, post_div))
-                       return;
-
-               enable_lcdif_clock(base_addr, 0);
-               /* Select pre-lcd clock to PLL5 and set pre divider */
-               clrsetbits_le32(&imx_ccm->cscdr2,
-                               MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_MASK |
-                               MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_MASK,
-                               (0x2 << MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_OFFSET) |
-                               ((pred - 1) <<
-                                MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_OFFSET));
-
-               /* Set the post divider */
-               clrsetbits_le32(&imx_ccm->cscmr1,
-                               MXC_CCM_CSCMR1_LCDIF2_PODF_MASK,
-                               ((postd - 1) <<
-                                MXC_CCM_CSCMR1_LCDIF2_PODF_OFFSET));
-
-               enable_lcdif_clock(base_addr, 1);
-       }
-}
-
-int enable_lcdif_clock(u32 base_addr, bool enable)
-{
-       u32 reg = 0;
-       u32 lcdif_clk_sel_mask, lcdif_ccgr3_mask;
-
-       if (is_mx6sx()) {
-               if ((base_addr != LCDIF1_BASE_ADDR) &&
-                   (base_addr != LCDIF2_BASE_ADDR)) {
-                       puts("Wrong LCD interface!\n");
-                       return -EINVAL;
-               }
-               /* Set to pre-mux clock at default */
-               lcdif_clk_sel_mask = (base_addr == LCDIF2_BASE_ADDR) ?
-                       MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK :
-                       MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK;
-               lcdif_ccgr3_mask = (base_addr == LCDIF2_BASE_ADDR) ?
-                       (MXC_CCM_CCGR3_LCDIF2_PIX_MASK |
-                        MXC_CCM_CCGR3_DISP_AXI_MASK) :
-                       (MXC_CCM_CCGR3_LCDIF1_PIX_MASK |
-                        MXC_CCM_CCGR3_DISP_AXI_MASK);
-       } else if (is_mx6ul() || is_mx6ull() || is_mx6sll()) {
-               if (base_addr != LCDIF1_BASE_ADDR) {
-                       puts("Wrong LCD interface!\n");
-                       return -EINVAL;
-               }
-               /* Set to pre-mux clock at default */
-               lcdif_clk_sel_mask = MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK;
-               lcdif_ccgr3_mask =  MXC_CCM_CCGR3_LCDIF1_PIX_MASK;
-       } else if (is_mx6sl()) {
-               if (base_addr != LCDIF1_BASE_ADDR) {
-                       puts("Wrong LCD interface!\n");
-                       return -EINVAL;
-               }
-
-               reg = readl(&imx_ccm->CCGR3);
-               reg &= ~(MXC_CCM_CCGR3_LCDIF_AXI_MASK |
-                        MXC_CCM_CCGR3_LCDIF_PIX_MASK);
-               writel(reg, &imx_ccm->CCGR3);
-
-               if (enable) {
-                       reg = readl(&imx_ccm->cscdr3);
-                       reg &= ~MXC_CCM_CSCDR3_LCDIF_AXI_CLK_SEL_MASK;
-                       reg |= 1 << MXC_CCM_CSCDR3_LCDIF_AXI_CLK_SEL_OFFSET;
-                       writel(reg, &imx_ccm->cscdr3);
-
-                       reg = readl(&imx_ccm->CCGR3);
-                       reg |= MXC_CCM_CCGR3_LCDIF_AXI_MASK |
-                               MXC_CCM_CCGR3_LCDIF_PIX_MASK;
-                       writel(reg, &imx_ccm->CCGR3);
-               }
-
-               return 0;
-       } else {
-               return 0;
-       }
-
-       /* Gate LCDIF clock first */
-       reg = readl(&imx_ccm->CCGR3);
-       reg &= ~lcdif_ccgr3_mask;
-       writel(reg, &imx_ccm->CCGR3);
-
-       reg = readl(&imx_ccm->CCGR2);
-       reg &= ~MXC_CCM_CCGR2_LCD_MASK;
-       writel(reg, &imx_ccm->CCGR2);
-
-       if (enable) {
-               /* Select pre-mux */
-               reg = readl(&imx_ccm->cscdr2);
-               reg &= ~lcdif_clk_sel_mask;
-               writel(reg, &imx_ccm->cscdr2);
-
-               /* Enable the LCDIF pix clock */
-               reg = readl(&imx_ccm->CCGR3);
-               reg |= lcdif_ccgr3_mask;
-               writel(reg, &imx_ccm->CCGR3);
-
-               reg = readl(&imx_ccm->CCGR2);
-               reg |= MXC_CCM_CCGR2_LCD_MASK;
-               writel(reg, &imx_ccm->CCGR2);
-       }
-
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_FSL_QSPI
-/* qspi_num can be from 0 - 1 */
-void enable_qspi_clk(int qspi_num)
-{
-       u32 reg = 0;
-       /* Enable QuadSPI clock */
-       switch (qspi_num) {
-       case 0:
-               /* disable the clock gate */
-               clrbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK);
-
-               /* set 50M  : (50 = 396 / 2 / 4) */
-               reg = readl(&imx_ccm->cscmr1);
-               reg &= ~(MXC_CCM_CSCMR1_QSPI1_PODF_MASK |
-                        MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK);
-               reg |= ((1 << MXC_CCM_CSCMR1_QSPI1_PODF_OFFSET) |
-                       (2 << MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET));
-               writel(reg, &imx_ccm->cscmr1);
-
-               /* enable the clock gate */
-               setbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK);
-               break;
-       case 1:
-               /*
-                * disable the clock gate
-                * QSPI2 and GPMI_BCH_INPUT_GPMI_IO share the same clock gate,
-                * disable both of them.
-                */
-               clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK |
-                            MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
-
-               /* set 50M  : (50 = 396 / 2 / 4) */
-               reg = readl(&imx_ccm->cs2cdr);
-               reg &= ~(MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK |
-                        MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK |
-                        MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK);
-               reg |= (MXC_CCM_CS2CDR_QSPI2_CLK_PRED(0x1) |
-                       MXC_CCM_CS2CDR_QSPI2_CLK_SEL(0x3));
-               writel(reg, &imx_ccm->cs2cdr);
-
-               /*enable the clock gate*/
-               setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK |
-                            MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
-               break;
-       default:
-               break;
-       }
-}
-#endif
-
-#ifdef CONFIG_FEC_MXC
-int enable_fec_anatop_clock(int fec_id, enum enet_freq freq)
-{
-       u32 reg = 0;
-       s32 timeout = 100000;
-
-       struct anatop_regs __iomem *anatop =
-               (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
-
-       if (freq < ENET_25MHZ || freq > ENET_125MHZ)
-               return -EINVAL;
-
-       reg = readl(&anatop->pll_enet);
-
-       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_mx6sx() || is_mx6ul() || is_mx6ull()))
-                       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))) {
-               reg &= ~BM_ANADIG_PLL_ENET_POWERDOWN;
-               writel(reg, &anatop->pll_enet);
-               while (timeout--) {
-                       if (readl(&anatop->pll_enet) & BM_ANADIG_PLL_ENET_LOCK)
-                               break;
-               }
-               if (timeout < 0)
-                       return -ETIMEDOUT;
-       }
-
-       /* Enable FEC clock */
-       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);
-
-#ifdef CONFIG_MX6SX
-       /* Disable enet system clcok before switching clock parent */
-       reg = readl(&imx_ccm->CCGR3);
-       reg &= ~MXC_CCM_CCGR3_ENET_MASK;
-       writel(reg, &imx_ccm->CCGR3);
-
-       /*
-        * Set enet ahb clock to 200MHz
-        * pll2_pfd2_396m-> ENET_PODF-> ENET_AHB
-        */
-       reg = readl(&imx_ccm->chsccdr);
-       reg &= ~(MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_MASK
-                | MXC_CCM_CHSCCDR_ENET_PODF_MASK
-                | MXC_CCM_CHSCCDR_ENET_CLK_SEL_MASK);
-       /* PLL2 PFD2 */
-       reg |= (4 << MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_OFFSET);
-       /* Div = 2*/
-       reg |= (1 << MXC_CCM_CHSCCDR_ENET_PODF_OFFSET);
-       reg |= (0 << MXC_CCM_CHSCCDR_ENET_CLK_SEL_OFFSET);
-       writel(reg, &imx_ccm->chsccdr);
-
-       /* Enable enet system clock */
-       reg = readl(&imx_ccm->CCGR3);
-       reg |= MXC_CCM_CCGR3_ENET_MASK;
-       writel(reg, &imx_ccm->CCGR3);
-#endif
-       return 0;
-}
-#endif
-
-static u32 get_usdhc_clk(u32 port)
-{
-       u32 root_freq = 0, usdhc_podf = 0, clk_sel = 0;
-       u32 cscmr1 = __raw_readl(&imx_ccm->cscmr1);
-       u32 cscdr1 = __raw_readl(&imx_ccm->cscdr1);
-
-       if (is_mx6ul() || is_mx6ull()) {
-               if (port > 1)
-                       return 0;
-       }
-
-       if (is_mx6sll()) {
-               if (port > 2)
-                       return 0;
-       }
-
-       switch (port) {
-       case 0:
-               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC1_PODF_MASK) >>
-                                       MXC_CCM_CSCDR1_USDHC1_PODF_OFFSET;
-               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC1_CLK_SEL;
-
-               break;
-       case 1:
-               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC2_PODF_MASK) >>
-                                       MXC_CCM_CSCDR1_USDHC2_PODF_OFFSET;
-               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC2_CLK_SEL;
-
-               break;
-       case 2:
-               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC3_PODF_MASK) >>
-                                       MXC_CCM_CSCDR1_USDHC3_PODF_OFFSET;
-               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC3_CLK_SEL;
-
-               break;
-       case 3:
-               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC4_PODF_MASK) >>
-                                       MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET;
-               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC4_CLK_SEL;
-
-               break;
-       default:
-               break;
-       }
-
-       if (clk_sel)
-               root_freq = mxc_get_pll_pfd(PLL_BUS, 0);
-       else
-               root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
-
-       return root_freq / (usdhc_podf + 1);
-}
-
-u32 imx_get_uartclk(void)
-{
-       return get_uart_clk();
-}
-
-u32 imx_get_fecclk(void)
-{
-       return mxc_get_clock(MXC_IPG_CLK);
-}
-
-#if defined(CONFIG_SATA) || defined(CONFIG_PCIE_IMX)
-static int enable_enet_pll(uint32_t en)
-{
-       struct mxc_ccm_reg *const imx_ccm
-               = (struct mxc_ccm_reg *) CCM_BASE_ADDR;
-       s32 timeout = 100000;
-       u32 reg = 0;
-
-       /* Enable PLLs */
-       reg = readl(&imx_ccm->analog_pll_enet);
-       reg &= ~BM_ANADIG_PLL_SYS_POWERDOWN;
-       writel(reg, &imx_ccm->analog_pll_enet);
-       reg |= BM_ANADIG_PLL_SYS_ENABLE;
-       while (timeout--) {
-               if (readl(&imx_ccm->analog_pll_enet) & BM_ANADIG_PLL_SYS_LOCK)
-                       break;
-       }
-       if (timeout <= 0)
-               return -EIO;
-       reg &= ~BM_ANADIG_PLL_SYS_BYPASS;
-       writel(reg, &imx_ccm->analog_pll_enet);
-       reg |= en;
-       writel(reg, &imx_ccm->analog_pll_enet);
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_SATA
-static void ungate_sata_clock(void)
-{
-       struct mxc_ccm_reg *const imx_ccm =
-               (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-
-       /* Enable SATA clock. */
-       setbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK);
-}
-
-int enable_sata_clock(void)
-{
-       ungate_sata_clock();
-       return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA);
-}
-
-void disable_sata_clock(void)
-{
-       struct mxc_ccm_reg *const imx_ccm =
-               (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-
-       clrbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK);
-}
-#endif
-
-#ifdef CONFIG_PCIE_IMX
-static void ungate_pcie_clock(void)
-{
-       struct mxc_ccm_reg *const imx_ccm =
-               (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-
-       /* Enable PCIe clock. */
-       setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_PCIE_MASK);
-}
-
-int enable_pcie_clock(void)
-{
-       struct anatop_regs *anatop_regs =
-               (struct anatop_regs *)ANATOP_BASE_ADDR;
-       struct mxc_ccm_reg *ccm_regs = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       u32 lvds1_clk_sel;
-
-       /*
-        * Here be dragons!
-        *
-        * The register ANATOP_MISC1 is not documented in the Freescale
-        * MX6RM. The register that is mapped in the ANATOP space and
-        * marked as ANATOP_MISC1 is actually documented in the PMU section
-        * of the datasheet as PMU_MISC1.
-        *
-        * Switch LVDS clock source to SATA (0xb) on mx6q/dl or PCI (0xa) on
-        * mx6sx, disable clock INPUT and enable clock OUTPUT. This is important
-        * for PCI express link that is clocked from the i.MX6.
-        */
-#define ANADIG_ANA_MISC1_LVDSCLK1_IBEN         (1 << 12)
-#define ANADIG_ANA_MISC1_LVDSCLK1_OBEN         (1 << 10)
-#define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK    0x0000001F
-#define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_PCIE_REF        0xa
-#define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_SATA_REF        0xb
-
-       if (is_mx6sx())
-               lvds1_clk_sel = ANADIG_ANA_MISC1_LVDS1_CLK_SEL_PCIE_REF;
-       else
-               lvds1_clk_sel = ANADIG_ANA_MISC1_LVDS1_CLK_SEL_SATA_REF;
-
-       clrsetbits_le32(&anatop_regs->ana_misc1,
-                       ANADIG_ANA_MISC1_LVDSCLK1_IBEN |
-                       ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK,
-                       ANADIG_ANA_MISC1_LVDSCLK1_OBEN | lvds1_clk_sel);
-
-       /* PCIe reference clock sourced from AXI. */
-       clrbits_le32(&ccm_regs->cbcmr, MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL);
-
-       /* Party time! Ungate the clock to the PCIe. */
-#ifdef CONFIG_SATA
-       ungate_sata_clock();
-#endif
-       ungate_pcie_clock();
-
-       return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA |
-                              BM_ANADIG_PLL_ENET_ENABLE_PCIE);
-}
-#endif
-
-#ifdef CONFIG_SECURE_BOOT
-void hab_caam_clock_enable(unsigned char enable)
-{
-       u32 reg;
-
-       if (is_mx6ull() || is_mx6sll()) {
-               /* CG5, DCP clock */
-               reg = __raw_readl(&imx_ccm->CCGR0);
-               if (enable)
-                       reg |= MXC_CCM_CCGR0_DCP_CLK_MASK;
-               else
-                       reg &= ~MXC_CCM_CCGR0_DCP_CLK_MASK;
-               __raw_writel(reg, &imx_ccm->CCGR0);
-       } else {
-               /* CG4 ~ CG6, CAAM clocks */
-               reg = __raw_readl(&imx_ccm->CCGR0);
-               if (enable)
-                       reg |= (MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
-                               MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
-                               MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
-               else
-                       reg &= ~(MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
-                               MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
-                               MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
-               __raw_writel(reg, &imx_ccm->CCGR0);
-       }
-
-       /* EMI slow clk */
-       reg = __raw_readl(&imx_ccm->CCGR6);
-       if (enable)
-               reg |= MXC_CCM_CCGR6_EMI_SLOW_MASK;
-       else
-               reg &= ~MXC_CCM_CCGR6_EMI_SLOW_MASK;
-       __raw_writel(reg, &imx_ccm->CCGR6);
-}
-#endif
-
-static void enable_pll3(void)
-{
-       struct anatop_regs __iomem *anatop =
-               (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
-
-       /* make sure pll3 is enabled */
-       if ((readl(&anatop->usb1_pll_480_ctrl) &
-                       BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0) {
-               /* enable pll's power */
-               writel(BM_ANADIG_USB1_PLL_480_CTRL_POWER,
-                      &anatop->usb1_pll_480_ctrl_set);
-               writel(0x80, &anatop->ana_misc2_clr);
-               /* wait for pll lock */
-               while ((readl(&anatop->usb1_pll_480_ctrl) &
-                       BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0)
-                       ;
-               /* disable bypass */
-               writel(BM_ANADIG_USB1_PLL_480_CTRL_BYPASS,
-                      &anatop->usb1_pll_480_ctrl_clr);
-               /* enable pll output */
-               writel(BM_ANADIG_USB1_PLL_480_CTRL_ENABLE,
-                      &anatop->usb1_pll_480_ctrl_set);
-       }
-}
-
-void enable_thermal_clk(void)
-{
-       enable_pll3();
-}
-
-unsigned int mxc_get_clock(enum mxc_clock clk)
-{
-       switch (clk) {
-       case MXC_ARM_CLK:
-               return get_mcu_main_clk();
-       case MXC_PER_CLK:
-               return get_periph_clk();
-       case MXC_AHB_CLK:
-               return get_ahb_clk();
-       case MXC_IPG_CLK:
-               return get_ipg_clk();
-       case MXC_IPG_PERCLK:
-       case MXC_I2C_CLK:
-               return get_ipg_per_clk();
-       case MXC_UART_CLK:
-               return get_uart_clk();
-       case MXC_CSPI_CLK:
-               return get_cspi_clk();
-       case MXC_AXI_CLK:
-               return get_axi_clk();
-       case MXC_EMI_SLOW_CLK:
-               return get_emi_slow_clk();
-       case MXC_DDR_CLK:
-               return get_mmdc_ch0_clk();
-       case MXC_ESDHC_CLK:
-               return get_usdhc_clk(0);
-       case MXC_ESDHC2_CLK:
-               return get_usdhc_clk(1);
-       case MXC_ESDHC3_CLK:
-               return get_usdhc_clk(2);
-       case MXC_ESDHC4_CLK:
-               return get_usdhc_clk(3);
-       case MXC_SATA_CLK:
-               return get_ahb_clk();
-       default:
-               printf("Unsupported MXC CLK: %d\n", clk);
-               break;
-       }
-
-       return 0;
-}
-
-/*
- * Dump some core clockes.
- */
-int do_mx6_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       u32 freq;
-       freq = decode_pll(PLL_SYS, MXC_HCLK);
-       printf("PLL_SYS    %8d MHz\n", freq / 1000000);
-       freq = decode_pll(PLL_BUS, MXC_HCLK);
-       printf("PLL_BUS    %8d MHz\n", freq / 1000000);
-       freq = decode_pll(PLL_USBOTG, MXC_HCLK);
-       printf("PLL_OTG    %8d MHz\n", freq / 1000000);
-       freq = decode_pll(PLL_ENET, MXC_HCLK);
-       printf("PLL_NET    %8d MHz\n", freq / 1000000);
-
-       printf("\n");
-       printf("ARM        %8d kHz\n", mxc_get_clock(MXC_ARM_CLK) / 1000);
-       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);
-       printf("USDHC4     %8d kHz\n", mxc_get_clock(MXC_ESDHC4_CLK) / 1000);
-       printf("EMI SLOW   %8d kHz\n", mxc_get_clock(MXC_EMI_SLOW_CLK) / 1000);
-       printf("IPG PERCLK %8d kHz\n", mxc_get_clock(MXC_IPG_PERCLK) / 1000);
-
-       return 0;
-}
-
-#ifndef CONFIG_MX6SX
-void enable_ipu_clock(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       int reg;
-       reg = readl(&mxc_ccm->CCGR3);
-       reg |= MXC_CCM_CCGR3_IPU1_IPU_MASK;
-       writel(reg, &mxc_ccm->CCGR3);
-
-       if (is_mx6dqp()) {
-               setbits_le32(&mxc_ccm->CCGR6, MXC_CCM_CCGR6_PRG_CLK0_MASK);
-               setbits_le32(&mxc_ccm->CCGR3, MXC_CCM_CCGR3_IPU2_IPU_MASK);
-       }
-}
-#endif
-
-#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6D) || defined(CONFIG_MX6DL) || \
-       defined(CONFIG_MX6S)
-static void disable_ldb_di_clock_sources(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       int reg;
-
-       /* Make sure PFDs are disabled at boot. */
-       reg = readl(&mxc_ccm->analog_pfd_528);
-       /* Cannot disable pll2_pfd2_396M, as it is the MMDC clock in iMX6DL */
-       if (is_mx6sdl())
-               reg |= 0x80008080;
-       else
-               reg |= 0x80808080;
-       writel(reg, &mxc_ccm->analog_pfd_528);
-
-       /* Disable PLL3 PFDs */
-       reg = readl(&mxc_ccm->analog_pfd_480);
-       reg |= 0x80808080;
-       writel(reg, &mxc_ccm->analog_pfd_480);
-
-       /* Disable PLL5 */
-       reg = readl(&mxc_ccm->analog_pll_video);
-       reg &= ~(1 << 13);
-       writel(reg, &mxc_ccm->analog_pll_video);
-}
-
-static void enable_ldb_di_clock_sources(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       int reg;
-
-       reg = readl(&mxc_ccm->analog_pfd_528);
-       if (is_mx6sdl())
-               reg &= ~(0x80008080);
-       else
-               reg &= ~(0x80808080);
-       writel(reg, &mxc_ccm->analog_pfd_528);
-
-       reg = readl(&mxc_ccm->analog_pfd_480);
-       reg &= ~(0x80808080);
-       writel(reg, &mxc_ccm->analog_pfd_480);
-}
-
-/*
- * Try call this function as early in the boot process as possible since the
- * function temporarily disables PLL2 PFD's, PLL3 PFD's and PLL5.
- */
-void select_ldb_di_clock_source(enum ldb_di_clock clk)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       int reg;
-
-       /*
-        * Need to follow a strict procedure when changing the LDB
-        * clock, else we can introduce a glitch. Things to keep in
-        * mind:
-        * 1. The current and new parent clocks must be disabled.
-        * 2. The default clock for ldb_dio_clk is mmdc_ch1 which has
-        * no CG bit.
-        * 3. In the RTL implementation of the LDB_DI_CLK_SEL mux
-        * the top four options are in one mux and the PLL3 option along
-        * with another option is in the second mux. There is third mux
-        * used to decide between the first and second mux.
-        * The code below switches the parent to the bottom mux first
-        * and then manipulates the top mux. This ensures that no glitch
-        * will enter the divider.
-        *
-        * Need to disable MMDC_CH1 clock manually as there is no CG bit
-        * for this clock. The only way to disable this clock is to move
-        * it to pll3_sw_clk and then to disable pll3_sw_clk
-        * Make sure periph2_clk2_sel is set to pll3_sw_clk
-        */
-
-       /* Disable all ldb_di clock parents */
-       disable_ldb_di_clock_sources();
-
-       /* Set MMDC_CH1 mask bit */
-       reg = readl(&mxc_ccm->ccdr);
-       reg |= MXC_CCM_CCDR_MMDC_CH1_HS_MASK;
-       writel(reg, &mxc_ccm->ccdr);
-
-       /* Set periph2_clk2_sel to be sourced from PLL3_sw_clk */
-       reg = readl(&mxc_ccm->cbcmr);
-       reg &= ~MXC_CCM_CBCMR_PERIPH2_CLK2_SEL;
-       writel(reg, &mxc_ccm->cbcmr);
-
-       /*
-        * Set the periph2_clk_sel to the top mux so that
-        * mmdc_ch1 is from pll3_sw_clk.
-        */
-       reg = readl(&mxc_ccm->cbcdr);
-       reg |= MXC_CCM_CBCDR_PERIPH2_CLK_SEL;
-       writel(reg, &mxc_ccm->cbcdr);
-
-       /* Wait for the clock switch */
-       while (readl(&mxc_ccm->cdhipr))
-               ;
-       /* Disable pll3_sw_clk by selecting bypass clock source */
-       reg = readl(&mxc_ccm->ccsr);
-       reg |= MXC_CCM_CCSR_PLL3_SW_CLK_SEL;
-       writel(reg, &mxc_ccm->ccsr);
-
-       /* Set the ldb_di0_clk and ldb_di1_clk to 111b */
-       reg = readl(&mxc_ccm->cs2cdr);
-       reg |= ((7 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET)
-             | (7 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET));
-       writel(reg, &mxc_ccm->cs2cdr);
-
-       /* Set the ldb_di0_clk and ldb_di1_clk to 100b */
-       reg = readl(&mxc_ccm->cs2cdr);
-       reg &= ~(MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK
-             | MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK);
-       reg |= ((4 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET)
-             | (4 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET));
-       writel(reg, &mxc_ccm->cs2cdr);
-
-       /* Set the ldb_di0_clk and ldb_di1_clk to desired source */
-       reg = readl(&mxc_ccm->cs2cdr);
-       reg &= ~(MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK
-             | MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK);
-       reg |= ((clk << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET)
-             | (clk << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET));
-       writel(reg, &mxc_ccm->cs2cdr);
-
-       /* Unbypass pll3_sw_clk */
-       reg = readl(&mxc_ccm->ccsr);
-       reg &= ~MXC_CCM_CCSR_PLL3_SW_CLK_SEL;
-       writel(reg, &mxc_ccm->ccsr);
-
-       /*
-        * Set the periph2_clk_sel back to the bottom mux so that
-        * mmdc_ch1 is from its original parent.
-        */
-       reg = readl(&mxc_ccm->cbcdr);
-       reg &= ~MXC_CCM_CBCDR_PERIPH2_CLK_SEL;
-       writel(reg, &mxc_ccm->cbcdr);
-
-       /* Wait for the clock switch */
-       while (readl(&mxc_ccm->cdhipr))
-               ;
-       /* Clear MMDC_CH1 mask bit */
-       reg = readl(&mxc_ccm->ccdr);
-       reg &= ~MXC_CCM_CCDR_MMDC_CH1_HS_MASK;
-       writel(reg, &mxc_ccm->ccdr);
-
-       enable_ldb_di_clock_sources();
-}
-#endif
-
-#ifdef CONFIG_MTD_NOR_FLASH
-void enable_eim_clk(unsigned char enable)
-{
-       u32 reg;
-
-       reg = __raw_readl(&imx_ccm->CCGR6);
-       if (enable)
-               reg |= MXC_CCM_CCGR6_EMI_SLOW_MASK;
-       else
-               reg &= ~MXC_CCM_CCGR6_EMI_SLOW_MASK;
-       __raw_writel(reg, &imx_ccm->CCGR6);
-}
-#endif
-
-/***************************************************/
-
-U_BOOT_CMD(
-       clocks, CONFIG_SYS_MAXARGS, 1, do_mx6_showclocks,
-       "display clocks",
-       ""
-);
diff --git a/arch/arm/cpu/armv7/mx6/ddr.c b/arch/arm/cpu/armv7/mx6/ddr.c
deleted file mode 100644 (file)
index 0cf391e..0000000
+++ /dev/null
@@ -1,1538 +0,0 @@
-/*
- * Copyright (C) 2014 Gateworks Corporation
- * Author: Tim Harvey <tharvey@gateworks.com>
- *
- * SPDX-License-Identifier:     GPL-2.0+
- */
-
-#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>
-#include <asm/types.h>
-#include <wait_bit.h>
-
-#if defined(CONFIG_MX6_DDRCAL)
-static void reset_read_data_fifos(void)
-{
-       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
-
-       /* Reset data FIFOs twice. */
-       setbits_le32(&mmdc0->mpdgctrl0, 1 << 31);
-       wait_for_bit("MMDC", &mmdc0->mpdgctrl0, 1 << 31, 0, 100, 0);
-
-       setbits_le32(&mmdc0->mpdgctrl0, 1 << 31);
-       wait_for_bit("MMDC", &mmdc0->mpdgctrl0, 1 << 31, 0, 100, 0);
-}
-
-static void precharge_all(const bool cs0_enable, const bool cs1_enable)
-{
-       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
-
-       /*
-        * Issue the Precharge-All command to the DDR device for both
-        * chip selects. Note, CON_REQ bit should also remain set. If
-        * only using one chip select, then precharge only the desired
-        * chip select.
-        */
-       if (cs0_enable) { /* CS0 */
-               writel(0x04008050, &mmdc0->mdscr);
-               wait_for_bit("MMDC", &mmdc0->mdscr, 1 << 14, 1, 100, 0);
-       }
-
-       if (cs1_enable) { /* CS1 */
-               writel(0x04008058, &mmdc0->mdscr);
-               wait_for_bit("MMDC", &mmdc0->mdscr, 1 << 14, 1, 100, 0);
-       }
-}
-
-static void force_delay_measurement(int bus_size)
-{
-       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
-       struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
-
-       writel(0x800, &mmdc0->mpmur0);
-       if (bus_size == 0x2)
-               writel(0x800, &mmdc1->mpmur0);
-}
-
-static void modify_dg_result(u32 *reg_st0, u32 *reg_st1, u32 *reg_ctrl)
-{
-       u32 dg_tmp_val, dg_dl_abs_offset, dg_hc_del, val_ctrl;
-
-       /*
-        * DQS gating absolute offset should be modified from reflecting
-        * (HW_DG_LOWx + HW_DG_UPx)/2 to reflecting (HW_DG_UPx - 0x80)
-        */
-
-       val_ctrl = readl(reg_ctrl);
-       val_ctrl &= 0xf0000000;
-
-       dg_tmp_val = ((readl(reg_st0) & 0x07ff0000) >> 16) - 0xc0;
-       dg_dl_abs_offset = dg_tmp_val & 0x7f;
-       dg_hc_del = (dg_tmp_val & 0x780) << 1;
-
-       val_ctrl |= dg_dl_abs_offset + dg_hc_del;
-
-       dg_tmp_val = ((readl(reg_st1) & 0x07ff0000) >> 16) - 0xc0;
-       dg_dl_abs_offset = dg_tmp_val & 0x7f;
-       dg_hc_del = (dg_tmp_val & 0x780) << 1;
-
-       val_ctrl |= (dg_dl_abs_offset + dg_hc_del) << 16;
-
-       writel(val_ctrl, reg_ctrl);
-}
-
-int mmdc_do_write_level_calibration(struct mx6_ddr_sysinfo const *sysinfo)
-{
-       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
-       struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
-       u32 esdmisc_val, zq_val;
-       u32 errors = 0;
-       u32 ldectrl[4] = {0};
-       u32 ddr_mr1 = 0x4;
-       u32 rwalat_max;
-
-       /*
-        * Stash old values in case calibration fails,
-        * we need to restore them
-        */
-       ldectrl[0] = readl(&mmdc0->mpwldectrl0);
-       ldectrl[1] = readl(&mmdc0->mpwldectrl1);
-       if (sysinfo->dsize == 2) {
-               ldectrl[2] = readl(&mmdc1->mpwldectrl0);
-               ldectrl[3] = readl(&mmdc1->mpwldectrl1);
-       }
-
-       /* disable DDR logic power down timer */
-       clrbits_le32(&mmdc0->mdpdc, 0xff00);
-
-       /* disable Adopt power down timer */
-       setbits_le32(&mmdc0->mapsr, 0x1);
-
-       debug("Starting write leveling calibration.\n");
-
-       /*
-        * 2. disable auto refresh and ZQ calibration
-        * before proceeding with Write Leveling calibration
-        */
-       esdmisc_val = readl(&mmdc0->mdref);
-       writel(0x0000C000, &mmdc0->mdref);
-       zq_val = readl(&mmdc0->mpzqhwctrl);
-       writel(zq_val & ~0x3, &mmdc0->mpzqhwctrl);
-
-       /* 3. increase walat and ralat to maximum */
-       rwalat_max = (1 << 6) | (1 << 7) | (1 << 8) | (1 << 16) | (1 << 17);
-       setbits_le32(&mmdc0->mdmisc, rwalat_max);
-       if (sysinfo->dsize == 2)
-               setbits_le32(&mmdc1->mdmisc, rwalat_max);
-       /*
-        * 4 & 5. Configure the external DDR device to enter write-leveling
-        * mode through Load Mode Register command.
-        * Register setting:
-        * Bits[31:16] MR1 value (0x0080 write leveling enable)
-        * Bit[9] set WL_EN to enable MMDC DQS output
-        * Bits[6:4] set CMD bits for Load Mode Register programming
-        * Bits[2:0] set CMD_BA to 0x1 for DDR MR1 programming
-        */
-       writel(0x00808231, &mmdc0->mdscr);
-
-       /* 6. Activate automatic calibration by setting MPWLGCR[HW_WL_EN] */
-       writel(0x00000001, &mmdc0->mpwlgcr);
-
-       /*
-        * 7. Upon completion of this process the MMDC de-asserts
-        * the MPWLGCR[HW_WL_EN]
-        */
-       wait_for_bit("MMDC", &mmdc0->mpwlgcr, 1 << 0, 0, 100, 0);
-
-       /*
-        * 8. check for any errors: check both PHYs for x64 configuration,
-        * if x32, check only PHY0
-        */
-       if (readl(&mmdc0->mpwlgcr) & 0x00000F00)
-               errors |= 1;
-       if (sysinfo->dsize == 2)
-               if (readl(&mmdc1->mpwlgcr) & 0x00000F00)
-                       errors |= 2;
-
-       debug("Ending write leveling calibration. Error mask: 0x%x\n", errors);
-
-       /* check to see if cal failed */
-       if ((readl(&mmdc0->mpwldectrl0) == 0x001F001F) &&
-           (readl(&mmdc0->mpwldectrl1) == 0x001F001F) &&
-           ((sysinfo->dsize < 2) ||
-            ((readl(&mmdc1->mpwldectrl0) == 0x001F001F) &&
-             (readl(&mmdc1->mpwldectrl1) == 0x001F001F)))) {
-               debug("Cal seems to have soft-failed due to memory not supporting write leveling on all channels. Restoring original write leveling values.\n");
-               writel(ldectrl[0], &mmdc0->mpwldectrl0);
-               writel(ldectrl[1], &mmdc0->mpwldectrl1);
-               if (sysinfo->dsize == 2) {
-                       writel(ldectrl[2], &mmdc1->mpwldectrl0);
-                       writel(ldectrl[3], &mmdc1->mpwldectrl1);
-               }
-               errors |= 4;
-       }
-
-       /*
-        * User should issue MRS command to exit write leveling mode
-        * through Load Mode Register command
-        * Register setting:
-        * Bits[31:16] MR1 value "ddr_mr1" value from initialization
-        * Bit[9] clear WL_EN to disable MMDC DQS output
-        * Bits[6:4] set CMD bits for Load Mode Register programming
-        * Bits[2:0] set CMD_BA to 0x1 for DDR MR1 programming
-        */
-       writel((ddr_mr1 << 16) + 0x8031, &mmdc0->mdscr);
-
-       /* re-enable auto refresh and zq cal */
-       writel(esdmisc_val, &mmdc0->mdref);
-       writel(zq_val, &mmdc0->mpzqhwctrl);
-
-       debug("\tMMDC_MPWLDECTRL0 after write level cal: 0x%08X\n",
-             readl(&mmdc0->mpwldectrl0));
-       debug("\tMMDC_MPWLDECTRL1 after write level cal: 0x%08X\n",
-             readl(&mmdc0->mpwldectrl1));
-       if (sysinfo->dsize == 2) {
-               debug("\tMMDC_MPWLDECTRL0 after write level cal: 0x%08X\n",
-                     readl(&mmdc1->mpwldectrl0));
-               debug("\tMMDC_MPWLDECTRL1 after write level cal: 0x%08X\n",
-                     readl(&mmdc1->mpwldectrl1));
-       }
-
-       /* We must force a readback of these values, to get them to stick */
-       readl(&mmdc0->mpwldectrl0);
-       readl(&mmdc0->mpwldectrl1);
-       if (sysinfo->dsize == 2) {
-               readl(&mmdc1->mpwldectrl0);
-               readl(&mmdc1->mpwldectrl1);
-       }
-
-       /* enable DDR logic power down timer: */
-       setbits_le32(&mmdc0->mdpdc, 0x00005500);
-
-       /* Enable Adopt power down timer: */
-       clrbits_le32(&mmdc0->mapsr, 0x1);
-
-       /* Clear CON_REQ */
-       writel(0, &mmdc0->mdscr);
-
-       return errors;
-}
-
-int mmdc_do_dqs_calibration(struct mx6_ddr_sysinfo const *sysinfo)
-{
-       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
-       struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
-       struct mx6dq_iomux_ddr_regs *mx6_ddr_iomux =
-               (struct mx6dq_iomux_ddr_regs *)MX6DQ_IOM_DDR_BASE;
-       bool cs0_enable;
-       bool cs1_enable;
-       bool cs0_enable_initial;
-       bool cs1_enable_initial;
-       u32 esdmisc_val;
-       u32 temp_ref;
-       u32 pddword = 0x00ffff00; /* best so far, place into MPPDCMPR1 */
-       u32 errors = 0;
-       u32 initdelay = 0x40404040;
-
-       /* check to see which chip selects are enabled */
-       cs0_enable_initial = readl(&mmdc0->mdctl) & 0x80000000;
-       cs1_enable_initial = readl(&mmdc0->mdctl) & 0x40000000;
-
-       /* disable DDR logic power down timer: */
-       clrbits_le32(&mmdc0->mdpdc, 0xff00);
-
-       /* disable Adopt power down timer: */
-       setbits_le32(&mmdc0->mapsr, 0x1);
-
-       /* set DQS pull ups */
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs0, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs1, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs2, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs3, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs4, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs5, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs6, 0x7000);
-       setbits_le32(&mx6_ddr_iomux->dram_sdqs7, 0x7000);
-
-       /* Save old RALAT and WALAT values */
-       esdmisc_val = readl(&mmdc0->mdmisc);
-
-       setbits_le32(&mmdc0->mdmisc,
-                    (1 << 6) | (1 << 7) | (1 << 8) | (1 << 16) | (1 << 17));
-
-       /* Disable auto refresh before proceeding with calibration */
-       temp_ref = readl(&mmdc0->mdref);
-       writel(0x0000c000, &mmdc0->mdref);
-
-       /*
-        * Per the ref manual, issue one refresh cycle MDSCR[CMD]= 0x2,
-        * this also sets the CON_REQ bit.
-        */
-       if (cs0_enable_initial)
-               writel(0x00008020, &mmdc0->mdscr);
-       if (cs1_enable_initial)
-               writel(0x00008028, &mmdc0->mdscr);
-
-       /* poll to make sure the con_ack bit was asserted */
-       wait_for_bit("MMDC", &mmdc0->mdscr, 1 << 14, 1, 100, 0);
-
-       /*
-        * Check MDMISC register CALIB_PER_CS to see which CS calibration
-        * is targeted to (under normal cases, it should be cleared
-        * as this is the default value, indicating calibration is directed
-        * to CS0).
-        * Disable the other chip select not being target for calibration
-        * to avoid any potential issues.  This will get re-enabled at end
-        * of calibration.
-        */
-       if ((readl(&mmdc0->mdmisc) & 0x00100000) == 0)
-               clrbits_le32(&mmdc0->mdctl, 1 << 30);   /* clear SDE_1 */
-       else
-               clrbits_le32(&mmdc0->mdctl, 1 << 31);   /* clear SDE_0 */
-
-       /*
-        * Check to see which chip selects are now enabled for
-        * the remainder of the calibration.
-        */
-       cs0_enable = readl(&mmdc0->mdctl) & 0x80000000;
-       cs1_enable = readl(&mmdc0->mdctl) & 0x40000000;
-
-       precharge_all(cs0_enable, cs1_enable);
-
-       /* Write the pre-defined value into MPPDCMPR1 */
-       writel(pddword, &mmdc0->mppdcmpr1);
-
-       /*
-        * Issue a write access to the external DDR device by setting
-        * the bit SW_DUMMY_WR (bit 0) in the MPSWDAR0 and then poll
-        * this bit until it clears to indicate completion of the write access.
-        */
-       setbits_le32(&mmdc0->mpswdar0, 1);
-       wait_for_bit("MMDC", &mmdc0->mpswdar0, 1 << 0, 0, 100, 0);
-
-       /* Set the RD_DL_ABS# bits to their default values
-        * (will be calibrated later in the read delay-line calibration).
-        * Both PHYs for x64 configuration, if x32, do only PHY0.
-        */
-       writel(initdelay, &mmdc0->mprddlctl);
-       if (sysinfo->dsize == 0x2)
-               writel(initdelay, &mmdc1->mprddlctl);
-
-       /* Force a measurment, for previous delay setup to take effect. */
-       force_delay_measurement(sysinfo->dsize);
-
-       /*
-        * ***************************
-        * Read DQS Gating calibration
-        * ***************************
-        */
-       debug("Starting Read DQS Gating calibration.\n");
-
-       /*
-        * Reset the read data FIFOs (two resets); only need to issue reset
-        * to PHY0 since in x64 mode, the reset will also go to PHY1.
-        */
-       reset_read_data_fifos();
-
-       /*
-        * Start the automatic read DQS gating calibration process by
-        * asserting MPDGCTRL0[HW_DG_EN] and MPDGCTRL0[DG_CMP_CYC]
-        * and then poll MPDGCTRL0[HW_DG_EN]] until this bit clears
-        * to indicate completion.
-        * Also, ensure that MPDGCTRL0[HW_DG_ERR] is clear to indicate
-        * no errors were seen during calibration.
-        */
-
-       /*
-        * Set bit 30: chooses option to wait 32 cycles instead of
-        * 16 before comparing read data.
-        */
-       setbits_le32(&mmdc0->mpdgctrl0, 1 << 30);
-       if (sysinfo->dsize == 2)
-               setbits_le32(&mmdc1->mpdgctrl0, 1 << 30);
-
-       /* Set bit 28 to start automatic read DQS gating calibration */
-       setbits_le32(&mmdc0->mpdgctrl0, 5 << 28);
-
-       /* Poll for completion.  MPDGCTRL0[HW_DG_EN] should be 0 */
-       wait_for_bit("MMDC", &mmdc0->mpdgctrl0, 1 << 28, 0, 100, 0);
-
-       /*
-        * Check to see if any errors were encountered during calibration
-        * (check MPDGCTRL0[HW_DG_ERR]).
-        * Check both PHYs for x64 configuration, if x32, check only PHY0.
-        */
-       if (readl(&mmdc0->mpdgctrl0) & 0x00001000)
-               errors |= 1;
-
-       if ((sysinfo->dsize == 0x2) && (readl(&mmdc1->mpdgctrl0) & 0x00001000))
-               errors |= 2;
-
-       /* now disable mpdgctrl0[DG_CMP_CYC] */
-       clrbits_le32(&mmdc0->mpdgctrl0, 1 << 30);
-       if (sysinfo->dsize == 2)
-               clrbits_le32(&mmdc1->mpdgctrl0, 1 << 30);
-
-       /*
-        * DQS gating absolute offset should be modified from
-        * reflecting (HW_DG_LOWx + HW_DG_UPx)/2 to
-        * reflecting (HW_DG_UPx - 0x80)
-        */
-       modify_dg_result(&mmdc0->mpdghwst0, &mmdc0->mpdghwst1,
-                        &mmdc0->mpdgctrl0);
-       modify_dg_result(&mmdc0->mpdghwst2, &mmdc0->mpdghwst3,
-                        &mmdc0->mpdgctrl1);
-       if (sysinfo->dsize == 0x2) {
-               modify_dg_result(&mmdc1->mpdghwst0, &mmdc1->mpdghwst1,
-                                &mmdc1->mpdgctrl0);
-               modify_dg_result(&mmdc1->mpdghwst2, &mmdc1->mpdghwst3,
-                                &mmdc1->mpdgctrl1);
-       }
-       debug("Ending Read DQS Gating calibration. Error mask: 0x%x\n", errors);
-
-       /*
-        * **********************
-        * Read Delay calibration
-        * **********************
-        */
-       debug("Starting Read Delay calibration.\n");
-
-       reset_read_data_fifos();
-
-       /*
-        * 4. Issue the Precharge-All command to the DDR device for both
-        * chip selects.  If only using one chip select, then precharge
-        * only the desired chip select.
-        */
-       precharge_all(cs0_enable, cs1_enable);
-
-       /*
-        * 9. Read delay-line calibration
-        * Start the automatic read calibration process by asserting
-        * MPRDDLHWCTL[HW_RD_DL_EN].
-        */
-       writel(0x00000030, &mmdc0->mprddlhwctl);
-
-       /*
-        * 10. poll for completion
-        * MMDC indicates that the write data calibration had finished by
-        * setting MPRDDLHWCTL[HW_RD_DL_EN] = 0.   Also, ensure that
-        * no error bits were set.
-        */
-       wait_for_bit("MMDC", &mmdc0->mprddlhwctl, 1 << 4, 0, 100, 0);
-
-       /* check both PHYs for x64 configuration, if x32, check only PHY0 */
-       if (readl(&mmdc0->mprddlhwctl) & 0x0000000f)
-               errors |= 4;
-
-       if ((sysinfo->dsize == 0x2) &&
-           (readl(&mmdc1->mprddlhwctl) & 0x0000000f))
-               errors |= 8;
-
-       debug("Ending Read Delay calibration. Error mask: 0x%x\n", errors);
-
-       /*
-        * ***********************
-        * Write Delay Calibration
-        * ***********************
-        */
-       debug("Starting Write Delay calibration.\n");
-
-       reset_read_data_fifos();
-
-       /*
-        * 4. Issue the Precharge-All command to the DDR device for both
-        * chip selects. If only using one chip select, then precharge
-        * only the desired chip select.
-        */
-       precharge_all(cs0_enable, cs1_enable);
-
-       /*
-        * 8. Set the WR_DL_ABS# bits to their default values.
-        * Both PHYs for x64 configuration, if x32, do only PHY0.
-        */
-       writel(initdelay, &mmdc0->mpwrdlctl);
-       if (sysinfo->dsize == 0x2)
-               writel(initdelay, &mmdc1->mpwrdlctl);
-
-       /*
-        * XXX This isn't in the manual. Force a measurement,
-        * for previous delay setup to effect.
-        */
-       force_delay_measurement(sysinfo->dsize);
-
-       /*
-        * 9. 10. Start the automatic write calibration process
-        * by asserting MPWRDLHWCTL0[HW_WR_DL_EN].
-        */
-       writel(0x00000030, &mmdc0->mpwrdlhwctl);
-
-       /*
-        * Poll for completion.
-        * MMDC indicates that the write data calibration had finished
-        * by setting MPWRDLHWCTL[HW_WR_DL_EN] = 0.
-        * Also, ensure that no error bits were set.
-        */
-       wait_for_bit("MMDC", &mmdc0->mpwrdlhwctl, 1 << 4, 0, 100, 0);
-
-       /* Check both PHYs for x64 configuration, if x32, check only PHY0 */
-       if (readl(&mmdc0->mpwrdlhwctl) & 0x0000000f)
-               errors |= 16;
-
-       if ((sysinfo->dsize == 0x2) &&
-           (readl(&mmdc1->mpwrdlhwctl) & 0x0000000f))
-               errors |= 32;
-
-       debug("Ending Write Delay calibration. Error mask: 0x%x\n", errors);
-
-       reset_read_data_fifos();
-
-       /* Enable DDR logic power down timer */
-       setbits_le32(&mmdc0->mdpdc, 0x00005500);
-
-       /* Enable Adopt power down timer */
-       clrbits_le32(&mmdc0->mapsr, 0x1);
-
-       /* Restore MDMISC value (RALAT, WALAT) to MMDCP1 */
-       writel(esdmisc_val, &mmdc0->mdmisc);
-
-       /* Clear DQS pull ups */
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs0, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs1, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs2, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs3, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs4, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs5, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs6, 0x7000);
-       clrbits_le32(&mx6_ddr_iomux->dram_sdqs7, 0x7000);
-
-       /* Re-enable SDE (chip selects) if they were set initially */
-       if (cs1_enable_initial)
-               /* Set SDE_1 */
-               setbits_le32(&mmdc0->mdctl, 1 << 30);
-
-       if (cs0_enable_initial)
-               /* Set SDE_0 */
-               setbits_le32(&mmdc0->mdctl, 1 << 31);
-
-       /* Re-enable to auto refresh */
-       writel(temp_ref, &mmdc0->mdref);
-
-       /* Clear the MDSCR (including the con_req bit) */
-       writel(0x0, &mmdc0->mdscr);     /* CS0 */
-
-       /* Poll to make sure the con_ack bit is clear */
-       wait_for_bit("MMDC", &mmdc0->mdscr, 1 << 14, 0, 100, 0);
-
-       /*
-        * Print out the registers that were updated as a result
-        * of the calibration process.
-        */
-       debug("MMDC registers updated from calibration\n");
-       debug("Read DQS gating calibration:\n");
-       debug("\tMPDGCTRL0 PHY0 = 0x%08X\n", readl(&mmdc0->mpdgctrl0));
-       debug("\tMPDGCTRL1 PHY0 = 0x%08X\n", readl(&mmdc0->mpdgctrl1));
-       if (sysinfo->dsize == 2) {
-               debug("\tMPDGCTRL0 PHY1 = 0x%08X\n", readl(&mmdc1->mpdgctrl0));
-               debug("\tMPDGCTRL1 PHY1 = 0x%08X\n", readl(&mmdc1->mpdgctrl1));
-       }
-       debug("Read calibration:\n");
-       debug("\tMPRDDLCTL PHY0 = 0x%08X\n", readl(&mmdc0->mprddlctl));
-       if (sysinfo->dsize == 2)
-               debug("\tMPRDDLCTL PHY1 = 0x%08X\n", readl(&mmdc1->mprddlctl));
-       debug("Write calibration:\n");
-       debug("\tMPWRDLCTL PHY0 = 0x%08X\n", readl(&mmdc0->mpwrdlctl));
-       if (sysinfo->dsize == 2)
-               debug("\tMPWRDLCTL PHY1 = 0x%08X\n", readl(&mmdc1->mpwrdlctl));
-
-       /*
-        * Registers below are for debugging purposes.  These print out
-        * the upper and lower boundaries captured during
-        * read DQS gating calibration.
-        */
-       debug("Status registers bounds for read DQS gating:\n");
-       debug("\tMPDGHWST0 PHY0 = 0x%08x\n", readl(&mmdc0->mpdghwst0));
-       debug("\tMPDGHWST1 PHY0 = 0x%08x\n", readl(&mmdc0->mpdghwst1));
-       debug("\tMPDGHWST2 PHY0 = 0x%08x\n", readl(&mmdc0->mpdghwst2));
-       debug("\tMPDGHWST3 PHY0 = 0x%08x\n", readl(&mmdc0->mpdghwst3));
-       if (sysinfo->dsize == 2) {
-               debug("\tMPDGHWST0 PHY1 = 0x%08x\n", readl(&mmdc1->mpdghwst0));
-               debug("\tMPDGHWST1 PHY1 = 0x%08x\n", readl(&mmdc1->mpdghwst1));
-               debug("\tMPDGHWST2 PHY1 = 0x%08x\n", readl(&mmdc1->mpdghwst2));
-               debug("\tMPDGHWST3 PHY1 = 0x%08x\n", readl(&mmdc1->mpdghwst3));
-       }
-
-       debug("Final do_dqs_calibration error mask: 0x%x\n", errors);
-
-       return errors;
-}
-#endif
-
-#if defined(CONFIG_MX6SX)
-/* Configure MX6SX mmdc iomux */
-void mx6sx_dram_iocfg(unsigned width,
-                     const struct mx6sx_iomux_ddr_regs *ddr,
-                     const struct mx6sx_iomux_grp_regs *grp)
-{
-       struct mx6sx_iomux_ddr_regs *mx6_ddr_iomux;
-       struct mx6sx_iomux_grp_regs *mx6_grp_iomux;
-
-       mx6_ddr_iomux = (struct mx6sx_iomux_ddr_regs *)MX6SX_IOM_DDR_BASE;
-       mx6_grp_iomux = (struct mx6sx_iomux_grp_regs *)MX6SX_IOM_GRP_BASE;
-
-       /* DDR IO TYPE */
-       writel(grp->grp_ddr_type, &mx6_grp_iomux->grp_ddr_type);
-       writel(grp->grp_ddrpke, &mx6_grp_iomux->grp_ddrpke);
-
-       /* CLOCK */
-       writel(ddr->dram_sdclk_0, &mx6_ddr_iomux->dram_sdclk_0);
-
-       /* ADDRESS */
-       writel(ddr->dram_cas, &mx6_ddr_iomux->dram_cas);
-       writel(ddr->dram_ras, &mx6_ddr_iomux->dram_ras);
-       writel(grp->grp_addds, &mx6_grp_iomux->grp_addds);
-
-       /* Control */
-       writel(ddr->dram_reset, &mx6_ddr_iomux->dram_reset);
-       writel(ddr->dram_sdba2, &mx6_ddr_iomux->dram_sdba2);
-       writel(ddr->dram_sdcke0, &mx6_ddr_iomux->dram_sdcke0);
-       writel(ddr->dram_sdcke1, &mx6_ddr_iomux->dram_sdcke1);
-       writel(ddr->dram_odt0, &mx6_ddr_iomux->dram_odt0);
-       writel(ddr->dram_odt1, &mx6_ddr_iomux->dram_odt1);
-       writel(grp->grp_ctlds, &mx6_grp_iomux->grp_ctlds);
-
-       /* Data Strobes */
-       writel(grp->grp_ddrmode_ctl, &mx6_grp_iomux->grp_ddrmode_ctl);
-       writel(ddr->dram_sdqs0, &mx6_ddr_iomux->dram_sdqs0);
-       writel(ddr->dram_sdqs1, &mx6_ddr_iomux->dram_sdqs1);
-       if (width >= 32) {
-               writel(ddr->dram_sdqs2, &mx6_ddr_iomux->dram_sdqs2);
-               writel(ddr->dram_sdqs3, &mx6_ddr_iomux->dram_sdqs3);
-       }
-
-       /* Data */
-       writel(grp->grp_ddrmode, &mx6_grp_iomux->grp_ddrmode);
-       writel(grp->grp_b0ds, &mx6_grp_iomux->grp_b0ds);
-       writel(grp->grp_b1ds, &mx6_grp_iomux->grp_b1ds);
-       if (width >= 32) {
-               writel(grp->grp_b2ds, &mx6_grp_iomux->grp_b2ds);
-               writel(grp->grp_b3ds, &mx6_grp_iomux->grp_b3ds);
-       }
-       writel(ddr->dram_dqm0, &mx6_ddr_iomux->dram_dqm0);
-       writel(ddr->dram_dqm1, &mx6_ddr_iomux->dram_dqm1);
-       if (width >= 32) {
-               writel(ddr->dram_dqm2, &mx6_ddr_iomux->dram_dqm2);
-               writel(ddr->dram_dqm3, &mx6_ddr_iomux->dram_dqm3);
-       }
-}
-#endif
-
-#ifdef CONFIG_MX6UL
-void mx6ul_dram_iocfg(unsigned width,
-                     const struct mx6ul_iomux_ddr_regs *ddr,
-                     const struct mx6ul_iomux_grp_regs *grp)
-{
-       struct mx6ul_iomux_ddr_regs *mx6_ddr_iomux;
-       struct mx6ul_iomux_grp_regs *mx6_grp_iomux;
-
-       mx6_ddr_iomux = (struct mx6ul_iomux_ddr_regs *)MX6UL_IOM_DDR_BASE;
-       mx6_grp_iomux = (struct mx6ul_iomux_grp_regs *)MX6UL_IOM_GRP_BASE;
-
-       /* DDR IO TYPE */
-       writel(grp->grp_ddr_type, &mx6_grp_iomux->grp_ddr_type);
-       writel(grp->grp_ddrpke, &mx6_grp_iomux->grp_ddrpke);
-
-       /* CLOCK */
-       writel(ddr->dram_sdclk_0, &mx6_ddr_iomux->dram_sdclk_0);
-
-       /* ADDRESS */
-       writel(ddr->dram_cas, &mx6_ddr_iomux->dram_cas);
-       writel(ddr->dram_ras, &mx6_ddr_iomux->dram_ras);
-       writel(grp->grp_addds, &mx6_grp_iomux->grp_addds);
-
-       /* Control */
-       writel(ddr->dram_reset, &mx6_ddr_iomux->dram_reset);
-       writel(ddr->dram_sdba2, &mx6_ddr_iomux->dram_sdba2);
-       writel(ddr->dram_odt0, &mx6_ddr_iomux->dram_odt0);
-       writel(ddr->dram_odt1, &mx6_ddr_iomux->dram_odt1);
-       writel(grp->grp_ctlds, &mx6_grp_iomux->grp_ctlds);
-
-       /* Data Strobes */
-       writel(grp->grp_ddrmode_ctl, &mx6_grp_iomux->grp_ddrmode_ctl);
-       writel(ddr->dram_sdqs0, &mx6_ddr_iomux->dram_sdqs0);
-       writel(ddr->dram_sdqs1, &mx6_ddr_iomux->dram_sdqs1);
-
-       /* Data */
-       writel(grp->grp_ddrmode, &mx6_grp_iomux->grp_ddrmode);
-       writel(grp->grp_b0ds, &mx6_grp_iomux->grp_b0ds);
-       writel(grp->grp_b1ds, &mx6_grp_iomux->grp_b1ds);
-       writel(ddr->dram_dqm0, &mx6_ddr_iomux->dram_dqm0);
-       writel(ddr->dram_dqm1, &mx6_ddr_iomux->dram_dqm1);
-}
-#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,
-                     const struct mx6dq_iomux_ddr_regs *ddr,
-                     const struct mx6dq_iomux_grp_regs *grp)
-{
-       volatile struct mx6dq_iomux_ddr_regs *mx6_ddr_iomux;
-       volatile struct mx6dq_iomux_grp_regs *mx6_grp_iomux;
-
-       mx6_ddr_iomux = (struct mx6dq_iomux_ddr_regs *)MX6DQ_IOM_DDR_BASE;
-       mx6_grp_iomux = (struct mx6dq_iomux_grp_regs *)MX6DQ_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;
-       mx6_ddr_iomux->dram_sdclk_1 = ddr->dram_sdclk_1;
-
-       /* 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_sdcke0 = ddr->dram_sdcke0;
-       mx6_ddr_iomux->dram_sdcke1 = ddr->dram_sdcke1;
-       mx6_ddr_iomux->dram_sdba2 = ddr->dram_sdba2;
-       mx6_ddr_iomux->dram_sdodt0 = ddr->dram_sdodt0;
-       mx6_ddr_iomux->dram_sdodt1 = ddr->dram_sdodt1;
-       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;
-       }
-       if (width >= 64) {
-               mx6_ddr_iomux->dram_sdqs4 = ddr->dram_sdqs4;
-               mx6_ddr_iomux->dram_sdqs5 = ddr->dram_sdqs5;
-               mx6_ddr_iomux->dram_sdqs6 = ddr->dram_sdqs6;
-               mx6_ddr_iomux->dram_sdqs7 = ddr->dram_sdqs7;
-       }
-
-       /* 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;
-       }
-       if (width >= 64) {
-               mx6_grp_iomux->grp_b4ds = grp->grp_b4ds;
-               mx6_grp_iomux->grp_b5ds = grp->grp_b5ds;
-               mx6_grp_iomux->grp_b6ds = grp->grp_b6ds;
-               mx6_grp_iomux->grp_b7ds = grp->grp_b7ds;
-       }
-       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;
-       }
-       if (width >= 64) {
-               mx6_ddr_iomux->dram_dqm4 = ddr->dram_dqm4;
-               mx6_ddr_iomux->dram_dqm5 = ddr->dram_dqm5;
-               mx6_ddr_iomux->dram_dqm6 = ddr->dram_dqm6;
-               mx6_ddr_iomux->dram_dqm7 = ddr->dram_dqm7;
-       }
-}
-#endif
-
-#if defined(CONFIG_MX6QDL) || defined(CONFIG_MX6DL) || defined(CONFIG_MX6S)
-/* Configure MX6SDL mmdc iomux */
-void mx6sdl_dram_iocfg(unsigned width,
-                      const struct mx6sdl_iomux_ddr_regs *ddr,
-                      const struct mx6sdl_iomux_grp_regs *grp)
-{
-       volatile struct mx6sdl_iomux_ddr_regs *mx6_ddr_iomux;
-       volatile struct mx6sdl_iomux_grp_regs *mx6_grp_iomux;
-
-       mx6_ddr_iomux = (struct mx6sdl_iomux_ddr_regs *)MX6SDL_IOM_DDR_BASE;
-       mx6_grp_iomux = (struct mx6sdl_iomux_grp_regs *)MX6SDL_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;
-       mx6_ddr_iomux->dram_sdclk_1 = ddr->dram_sdclk_1;
-
-       /* 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_sdcke0 = ddr->dram_sdcke0;
-       mx6_ddr_iomux->dram_sdcke1 = ddr->dram_sdcke1;
-       mx6_ddr_iomux->dram_sdba2 = ddr->dram_sdba2;
-       mx6_ddr_iomux->dram_sdodt0 = ddr->dram_sdodt0;
-       mx6_ddr_iomux->dram_sdodt1 = ddr->dram_sdodt1;
-       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;
-       }
-       if (width >= 64) {
-               mx6_ddr_iomux->dram_sdqs4 = ddr->dram_sdqs4;
-               mx6_ddr_iomux->dram_sdqs5 = ddr->dram_sdqs5;
-               mx6_ddr_iomux->dram_sdqs6 = ddr->dram_sdqs6;
-               mx6_ddr_iomux->dram_sdqs7 = ddr->dram_sdqs7;
-       }
-
-       /* 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;
-       }
-       if (width >= 64) {
-               mx6_grp_iomux->grp_b4ds = grp->grp_b4ds;
-               mx6_grp_iomux->grp_b5ds = grp->grp_b5ds;
-               mx6_grp_iomux->grp_b6ds = grp->grp_b6ds;
-               mx6_grp_iomux->grp_b7ds = grp->grp_b7ds;
-       }
-       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;
-       }
-       if (width >= 64) {
-               mx6_ddr_iomux->dram_dqm4 = ddr->dram_dqm4;
-               mx6_ddr_iomux->dram_dqm5 = ddr->dram_dqm5;
-               mx6_ddr_iomux->dram_dqm6 = ddr->dram_dqm6;
-               mx6_ddr_iomux->dram_dqm7 = ddr->dram_dqm7;
-       }
-}
-#endif
-
-/*
- * Configure mx6 mmdc registers based on:
- *  - board-specific memory configuration
- *  - board-specific calibration data
- *  - ddr3/lpddr2 chip details
- *
- * The various calculations here are derived from the Freescale
- * 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
- * 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_mx6sx() && !is_mx6ul() && !is_mx6sl())                    \
-               mmdc1->entry = value;                                     \
-       } while (0)
-
-/*
- * 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 = (sysinfo->refsel << 14) | (sysinfo->refr << 11);
-
-       /* 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)
-{
-       volatile struct mmdc_p_regs *mmdc0;
-       volatile struct mmdc_p_regs *mmdc1;
-       u32 val;
-       u8 tcke, tcksrx, tcksre, txpdll, taofpd, taonpd, trrd;
-       u8 todtlon, taxpd, tanpd, tcwl, txp, tfaw, tcl;
-       u8 todt_idle_off = 0x4; /* from DDR3 Script Aid spreadsheet */
-       u16 trcd, trc, tras, twr, tmrd, trtp, trp, twtr, trfc, txs, txpr;
-       u16 cs0_end;
-       u16 tdllk = 0x1ff; /* DLL locking time: 512 cycles (JEDEC DDR3) */
-       u8 coladdr;
-       int clkper; /* clock period in picoseconds */
-       int clock; /* clock freq in MHz */
-       int cs;
-       u16 mem_speed = ddr3_cfg->mem_speed;
-
-       mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
-       if (!is_mx6sx() && !is_mx6ul() && !is_mx6sl())
-               mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
-
-       /* Limit mem_speed for MX6D/MX6Q */
-       if (is_mx6dq() || is_mx6dqp()) {
-               if (mem_speed > 1066)
-                       mem_speed = 1066; /* 1066 MT/s */
-
-               tcwl = 4;
-       }
-       /* Limit mem_speed for MX6S/MX6DL */
-       else {
-               if (mem_speed > 800)
-                       mem_speed = 800;  /* 800 MT/s */
-
-               tcwl = 3;
-       }
-
-       clock = mem_speed / 2;
-       /*
-        * Data rate of 1066 MT/s requires 533 MHz DDR3 clock, but MX6D/Q supports
-        * up to 528 MHz, so reduce the clock to fit chip specs
-        */
-       if (is_mx6dq() || is_mx6dqp()) {
-               if (clock > 528)
-                       clock = 528; /* 528 MHz */
-       }
-
-       clkper = (1000 * 1000) / clock; /* pico seconds */
-       todtlon = tcwl;
-       taxpd = tcwl;
-       tanpd = tcwl;
-
-       switch (ddr3_cfg->density) {
-       case 1: /* 1Gb per chip */
-               trfc = DIV_ROUND_UP(110000, clkper) - 1;
-               txs = DIV_ROUND_UP(120000, clkper) - 1;
-               break;
-       case 2: /* 2Gb per chip */
-               trfc = DIV_ROUND_UP(160000, clkper) - 1;
-               txs = DIV_ROUND_UP(170000, clkper) - 1;
-               break;
-       case 4: /* 4Gb per chip */
-               trfc = DIV_ROUND_UP(260000, clkper) - 1;
-               txs = DIV_ROUND_UP(270000, clkper) - 1;
-               break;
-       case 8: /* 8Gb per chip */
-               trfc = DIV_ROUND_UP(350000, clkper) - 1;
-               txs = DIV_ROUND_UP(360000, clkper) - 1;
-               break;
-       default:
-               /* invalid density */
-               puts("invalid chip density\n");
-               hang();
-               break;
-       }
-       txpr = txs;
-
-       switch (mem_speed) {
-       case 800:
-               txp = DIV_ROUND_UP(max(3 * clkper, 7500), clkper) - 1;
-               tcke = DIV_ROUND_UP(max(3 * clkper, 7500), clkper) - 1;
-               if (ddr3_cfg->pagesz == 1) {
-                       tfaw = DIV_ROUND_UP(40000, clkper) - 1;
-                       trrd = DIV_ROUND_UP(max(4 * clkper, 10000), clkper) - 1;
-               } else {
-                       tfaw = DIV_ROUND_UP(50000, clkper) - 1;
-                       trrd = DIV_ROUND_UP(max(4 * clkper, 10000), clkper) - 1;
-               }
-               break;
-       case 1066:
-               txp = DIV_ROUND_UP(max(3 * clkper, 7500), clkper) - 1;
-               tcke = DIV_ROUND_UP(max(3 * clkper, 5625), clkper) - 1;
-               if (ddr3_cfg->pagesz == 1) {
-                       tfaw = DIV_ROUND_UP(37500, clkper) - 1;
-                       trrd = DIV_ROUND_UP(max(4 * clkper, 7500), clkper) - 1;
-               } else {
-                       tfaw = DIV_ROUND_UP(50000, clkper) - 1;
-                       trrd = DIV_ROUND_UP(max(4 * clkper, 10000), clkper) - 1;
-               }
-               break;
-       default:
-               puts("invalid memory speed\n");
-               hang();
-               break;
-       }
-       txpdll = DIV_ROUND_UP(max(10 * clkper, 24000), clkper) - 1;
-       tcksre = DIV_ROUND_UP(max(5 * clkper, 10000), clkper);
-       taonpd = DIV_ROUND_UP(2000, clkper) - 1;
-       tcksrx = tcksre;
-       taofpd = taonpd;
-       twr  = DIV_ROUND_UP(15000, clkper) - 1;
-       tmrd = DIV_ROUND_UP(max(12 * clkper, 15000), clkper) - 1;
-       trc  = DIV_ROUND_UP(ddr3_cfg->trcmin, clkper / 10) - 1;
-       tras = DIV_ROUND_UP(ddr3_cfg->trasmin, clkper / 10) - 1;
-       tcl  = DIV_ROUND_UP(ddr3_cfg->trcd, clkper / 10) - 3;
-       trp  = DIV_ROUND_UP(ddr3_cfg->trcd, clkper / 10) - 1;
-       twtr = ROUND(max(4 * clkper, 7500) / clkper, 1) - 1;
-       trcd = trp;
-       trtp = twtr;
-       cs0_end = 4 * sysinfo->cs_density - 1;
-
-       debug("density:%d Gb (%d Gb per chip)\n",
-             sysinfo->cs_density, ddr3_cfg->density);
-       debug("clock: %dMHz (%d ps)\n", clock, clkper);
-       debug("memspd:%d\n", mem_speed);
-       debug("tcke=%d\n", tcke);
-       debug("tcksrx=%d\n", tcksrx);
-       debug("tcksre=%d\n", tcksre);
-       debug("taofpd=%d\n", taofpd);
-       debug("taonpd=%d\n", taonpd);
-       debug("todtlon=%d\n", todtlon);
-       debug("tanpd=%d\n", tanpd);
-       debug("taxpd=%d\n", taxpd);
-       debug("trfc=%d\n", trfc);
-       debug("txs=%d\n", txs);
-       debug("txp=%d\n", txp);
-       debug("txpdll=%d\n", txpdll);
-       debug("tfaw=%d\n", tfaw);
-       debug("tcl=%d\n", tcl);
-       debug("trcd=%d\n", trcd);
-       debug("trp=%d\n", trp);
-       debug("trc=%d\n", trc);
-       debug("tras=%d\n", tras);
-       debug("twr=%d\n", twr);
-       debug("tmrd=%d\n", tmrd);
-       debug("tcwl=%d\n", tcwl);
-       debug("tdllk=%d\n", tdllk);
-       debug("trtp=%d\n", trtp);
-       debug("twtr=%d\n", twtr);
-       debug("trrd=%d\n", trrd);
-       debug("txpr=%d\n", txpr);
-       debug("cs0_end=%d\n", cs0_end);
-       debug("ncs=%d\n", sysinfo->ncs);
-       debug("Rtt_wr=%d\n", sysinfo->rtt_wr);
-       debug("Rtt_nom=%d\n", sysinfo->rtt_nom);
-       debug("SRT=%d\n", ddr3_cfg->SRT);
-       debug("twr=%d\n", twr);
-
-       /*
-        * board-specific configuration:
-        *  These values are determined empirically and vary per board layout
-        *  see:
-        *   appnote, ddr3 spreadsheet
-        */
-       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;
-       if (sysinfo->dsize > 1) {
-               MMDC1(mpwldectrl0, calib->p1_mpwldectrl0);
-               MMDC1(mpwldectrl1, calib->p1_mpwldectrl1);
-               MMDC1(mpdgctrl0, calib->p1_mpdgctrl0);
-               MMDC1(mpdgctrl1, calib->p1_mpdgctrl1);
-               MMDC1(mprddlctl, calib->p1_mprddlctl);
-               MMDC1(mpwrdlctl, calib->p1_mpwrdlctl);
-       }
-
-       /* Read data DQ Byte0-3 delay */
-       mmdc0->mprddqby0dl = 0x33333333;
-       mmdc0->mprddqby1dl = 0x33333333;
-       if (sysinfo->dsize > 0) {
-               mmdc0->mprddqby2dl = 0x33333333;
-               mmdc0->mprddqby3dl = 0x33333333;
-       }
-
-       if (sysinfo->dsize > 1) {
-               MMDC1(mprddqby0dl, 0x33333333);
-               MMDC1(mprddqby1dl, 0x33333333);
-               MMDC1(mprddqby2dl, 0x33333333);
-               MMDC1(mprddqby3dl, 0x33333333);
-       }
-
-       /* MMDC Termination: rtt_nom:2 RZQ/2(120ohm), rtt_nom:1 RZQ/4(60ohm) */
-       val = (sysinfo->rtt_nom == 2) ? 0x00011117 : 0x00022227;
-       mmdc0->mpodtctrl = val;
-       if (sysinfo->dsize > 1)
-               MMDC1(mpodtctrl, val);
-
-       /* complete calibration */
-       val = (1 << 11); /* Force measurement on delay-lines */
-       mmdc0->mpmur0 = val;
-       if (sysinfo->dsize > 1)
-               MMDC1(mpmur0, val);
-
-       /* Step 1: configuration request */
-       mmdc0->mdscr = (u32)(1 << 15); /* config request */
-
-       /* Step 2: Timing configuration */
-       mmdc0->mdcfg0 = (trfc << 24) | (txs << 16) | (txp << 13) |
-                       (txpdll << 9) | (tfaw << 4) | tcl;
-       mmdc0->mdcfg1 = (trcd << 29) | (trp << 26) | (trc << 21) |
-                       (tras << 16) | (1 << 15) /* trpa */ |
-                       (twr << 9) | (tmrd << 5) | tcwl;
-       mmdc0->mdcfg2 = (tdllk << 16) | (trtp << 6) | (twtr << 3) | trrd;
-       mmdc0->mdotc = (taofpd << 27) | (taonpd << 24) | (tanpd << 20) |
-                      (taxpd << 16) | (todtlon << 12) | (todt_idle_off << 4);
-       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);
-
-       /* Step 4: Configure delay while leaving reset */
-       mmdc0->mdor = (txpr << 16) | (sysinfo->sde_to_rst << 8) |
-                     (sysinfo->rst_to_cke << 0);
-
-       /* Step 5: Configure DDR physical parameters (density and burst len) */
-       coladdr = ddr3_cfg->coladdr;
-       if (ddr3_cfg->coladdr == 8)             /* 8-bit COL is 0x3 */
-               coladdr += 4;
-       else if (ddr3_cfg->coladdr == 12)       /* 12-bit COL is 0x4 */
-               coladdr += 1;
-       mmdc0->mdctl =  (ddr3_cfg->rowaddr - 11) << 24 |        /* ROW */
-                       (coladdr - 9) << 20 |                   /* COL */
-                       (1 << 19) |             /* Burst Length = 8 for DDR3 */
-                       (sysinfo->dsize << 16);         /* DDR data bus size */
-
-       /* Step 6: Perform ZQ calibration */
-       val = 0xa1390001; /* one-time HW ZQ calib */
-       mmdc0->mpzqhwctrl = val;
-       if (sysinfo->dsize > 1)
-               MMDC1(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 DDR3 devices */
-       for (cs = 0; cs < sysinfo->ncs; cs++) {
-               /* MR2 */
-               val = (sysinfo->rtt_wr & 3) << 9 | (ddr3_cfg->SRT & 1) << 7 |
-                     ((tcwl - 3) & 3) << 3;
-               debug("MR2 CS%d: 0x%08x\n", cs, (u32)MR(val, 2, 3, cs));
-               mmdc0->mdscr = MR(val, 2, 3, cs);
-               /* MR3 */
-               debug("MR3 CS%d: 0x%08x\n", cs, (u32)MR(0, 3, 3, cs));
-               mmdc0->mdscr = MR(0, 3, 3, cs);
-               /* MR1 */
-               val = ((sysinfo->rtt_nom & 1) ? 1 : 0) << 2 |
-                     ((sysinfo->rtt_nom & 2) ? 1 : 0) << 6;
-               debug("MR1 CS%d: 0x%08x\n", cs, (u32)MR(val, 1, 3, cs));
-               mmdc0->mdscr = MR(val, 1, 3, cs);
-               /* MR0 */
-               val = ((tcl - 1) << 4) |        /* CAS */
-                     (1 << 8)   |              /* DLL Reset */
-                     ((twr - 3) << 9) |        /* Write Recovery */
-                     (sysinfo->pd_fast_exit << 12); /* Precharge PD PLL on */
-               debug("MR0 CS%d: 0x%08x\n", cs, (u32)MR(val, 0, 3, cs));
-               mmdc0->mdscr = MR(val, 0, 3, cs);
-               /* ZQ calibration */
-               val = (1 << 10);
-               mmdc0->mdscr = MR(val, 0, 4, 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);
-       if (!sysinfo->pd_fast_exit)
-               mmdc0->mdpdc |= (1 << 7); /* SLOW_PD */
-       mmdc0->mapsr = 0x00001006; /* ADOPT power down enabled */
-
-       /* Step 11: Configure ZQ calibration: one-time and periodic 1ms */
-       val = 0xa1390003;
-       mmdc0->mpzqhwctrl = val;
-       if (sysinfo->dsize > 1)
-               MMDC1(mpzqhwctrl, val);
-
-       /* Step 12: Configure and activate periodic refresh */
-       mmdc0->mdref = (sysinfo->refsel << 14) | (sysinfo->refr << 11);
-
-       /* Step 13: Deassert config request - init complete */
-       mmdc0->mdscr = 0x00000000;
-
-       /* wait for auto-ZQ calibration to complete */
-       mdelay(1);
-}
-
-void mmdc_read_calibration(struct mx6_ddr_sysinfo const *sysinfo,
-                           struct mx6_mmdc_calibration *calib)
-{
-       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
-       struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
-
-       calib->p0_mpwldectrl0 = readl(&mmdc0->mpwldectrl0);
-       calib->p0_mpwldectrl1 = readl(&mmdc0->mpwldectrl1);
-       calib->p0_mpdgctrl0 = readl(&mmdc0->mpdgctrl0);
-       calib->p0_mpdgctrl1 = readl(&mmdc0->mpdgctrl1);
-       calib->p0_mprddlctl = readl(&mmdc0->mprddlctl);
-       calib->p0_mpwrdlctl = readl(&mmdc0->mpwrdlctl);
-
-       if (sysinfo->dsize == 2) {
-               calib->p1_mpwldectrl0 = readl(&mmdc1->mpwldectrl0);
-               calib->p1_mpwldectrl1 = readl(&mmdc1->mpwldectrl1);
-               calib->p1_mpdgctrl0 = readl(&mmdc1->mpdgctrl0);
-               calib->p1_mpdgctrl1 = readl(&mmdc1->mpdgctrl1);
-               calib->p1_mprddlctl = readl(&mmdc1->mprddlctl);
-               calib->p1_mpwrdlctl = readl(&mmdc1->mpwrdlctl);
-       }
-}
-
-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();
-       }
-}
diff --git a/arch/arm/cpu/armv7/mx6/litesom.c b/arch/arm/cpu/armv7/mx6/litesom.c
deleted file mode 100644 (file)
index ac2eccf..0000000
+++ /dev/null
@@ -1,200 +0,0 @@
-/*
- * Copyright (C) 2015-2016 Freescale Semiconductor, Inc.
- * Copyright (C) 2016 Grinn
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm/arch/clock.h>
-#include <asm/arch/iomux.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/crm_regs.h>
-#include <asm/arch/mx6ul_pins.h>
-#include <asm/arch/mx6-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 <common.h>
-#include <fsl_esdhc.h>
-#include <linux/sizes.h>
-#include <mmc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |            \
-       PAD_CTL_PUS_22K_UP  | PAD_CTL_SPEED_LOW |               \
-       PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
-
-int dram_init(void)
-{
-       gd->ram_size = imx_ddr_size();
-
-       return 0;
-}
-
-static iomux_v3_cfg_t const emmc_pads[] = {
-       MX6_PAD_NAND_RE_B__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_WE_B__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_DATA00__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_DATA01__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_DATA02__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_DATA03__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_DATA04__USDHC2_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_DATA05__USDHC2_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_DATA06__USDHC2_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_DATA07__USDHC2_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-
-       /* RST_B */
-       MX6_PAD_NAND_ALE__GPIO4_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-#ifdef CONFIG_FSL_ESDHC
-static struct fsl_esdhc_cfg emmc_cfg = {USDHC2_BASE_ADDR, 0, 8};
-
-#define EMMC_PWR_GPIO  IMX_GPIO_NR(4, 10)
-
-int litesom_mmc_init(bd_t *bis)
-{
-       int ret;
-
-       /* eMMC */
-       imx_iomux_v3_setup_multiple_pads(emmc_pads, ARRAY_SIZE(emmc_pads));
-       gpio_direction_output(EMMC_PWR_GPIO, 0);
-       udelay(500);
-       gpio_direction_output(EMMC_PWR_GPIO, 1);
-       emmc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
-
-       ret = fsl_esdhc_initialize(bis, &emmc_cfg);
-       if (ret) {
-               printf("Warning: failed to initialize mmc dev 1 (eMMC)\n");
-               return ret;
-       }
-
-       return 0;
-}
-#endif
-
-#ifdef CONFIG_SPL_BUILD
-#include <libfdt.h>
-#include <spl.h>
-#include <asm/arch/mx6-ddr.h>
-
-
-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,
-       .grp_ddr_type = 0x000c0000,
-};
-
-static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
-       .dram_dqm0 = 0x00000030,
-       .dram_dqm1 = 0x00000030,
-       .dram_ras = 0x00000030,
-       .dram_cas = 0x00000030,
-       .dram_odt0 = 0x00000030,
-       .dram_odt1 = 0x00000030,
-       .dram_sdba2 = 0x00000000,
-       .dram_sdclk_0 = 0x00000030,
-       .dram_sdqs0 = 0x00000030,
-       .dram_sdqs1 = 0x00000030,
-       .dram_reset = 0x00000030,
-};
-
-static struct mx6_mmdc_calibration mx6_mmcd_calib = {
-       .p0_mpwldectrl0 = 0x00000000,
-       .p0_mpdgctrl0 = 0x41570155,
-       .p0_mprddlctl = 0x4040474A,
-       .p0_mpwrdlctl = 0x40405550,
-};
-
-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 = 0,             /* 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,
-       .refsel = 0,            /* Refresh cycles at 64KHz */
-       .refr = 1,              /* 2 refresh commands per refresh cycle */
-};
-
-static struct mx6_ddr3_cfg mem_ddr = {
-       .mem_speed = 800,
-       .density = 4,
-       .width = 16,
-       .banks = 8,
-       .rowaddr = 15,
-       .coladdr = 10,
-       .pagesz = 2,
-       .trcd = 1375,
-       .trcmin = 4875,
-       .trasmin = 3500,
-};
-
-static void ccgr_init(void)
-{
-       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-
-       writel(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(0xFFFFFFFF, &ccm->CCGR7);
-}
-
-static void spl_dram_init(void)
-{
-       unsigned long ram_size;
-
-       mx6ul_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs);
-       mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr);
-
-       /*
-        * Get actual RAM size, so we can adjust DDR row size for <512M
-        * memories
-        */
-       ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, SZ_512M);
-       if (ram_size < SZ_512M) {
-               mem_ddr.rowaddr = 14;
-               mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr);
-       }
-}
-
-void litesom_init_f(void)
-{
-       ccgr_init();
-
-       /* setup AIPS and disable watchdog */
-       arch_cpu_init();
-
-#ifdef CONFIG_BOARD_EARLY_INIT_F
-       board_early_init_f();
-#endif
-
-       /* setup GP timer */
-       timer_init();
-
-       /* UART clocks enabled and gd valid - init serial console */
-       preloader_console_init();
-
-       /* DDR initialization */
-       spl_dram_init();
-}
-#endif
diff --git a/arch/arm/cpu/armv7/mx6/mp.c b/arch/arm/cpu/armv7/mx6/mp.c
deleted file mode 100644 (file)
index e28018b..0000000
+++ /dev/null
@@ -1,87 +0,0 @@
-/*
- * (C) Copyright 2014
- * Gabriel Huau <contact@huau-gabriel.fr>
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <linux/errno.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/imx-regs.h>
-
-#define MAX_CPUS 4
-static struct src *src = (struct src *)SRC_BASE_ADDR;
-
-static uint32_t cpu_reset_mask[MAX_CPUS] = {
-       0, /* We don't really want to modify the cpu0 */
-       SRC_SCR_CORE_1_RESET_MASK,
-       SRC_SCR_CORE_2_RESET_MASK,
-       SRC_SCR_CORE_3_RESET_MASK
-};
-
-static uint32_t cpu_ctrl_mask[MAX_CPUS] = {
-       0, /* We don't really want to modify the cpu0 */
-       SRC_SCR_CORE_1_ENABLE_MASK,
-       SRC_SCR_CORE_2_ENABLE_MASK,
-       SRC_SCR_CORE_3_ENABLE_MASK
-};
-
-int cpu_reset(int nr)
-{
-       /* Software reset of the CPU N */
-       src->scr |= cpu_reset_mask[nr];
-       return 0;
-}
-
-int cpu_status(int nr)
-{
-       printf("core %d => %d\n", nr, !!(src->scr & cpu_ctrl_mask[nr]));
-       return 0;
-}
-
-int cpu_release(int nr, int argc, char *const argv[])
-{
-       uint32_t boot_addr;
-
-       boot_addr = simple_strtoul(argv[0], NULL, 16);
-
-       switch (nr) {
-       case 1:
-               src->gpr3 = boot_addr;
-               break;
-       case 2:
-               src->gpr5 = boot_addr;
-               break;
-       case 3:
-               src->gpr7 = boot_addr;
-               break;
-       default:
-               return 1;
-       }
-
-       /* CPU N is ready to start */
-       src->scr |= cpu_ctrl_mask[nr];
-
-       return 0;
-}
-
-int is_core_valid(unsigned int core)
-{
-       uint32_t nr_cores = get_nr_cpus();
-
-       if (core > nr_cores)
-               return 0;
-
-       return 1;
-}
-
-int cpu_disable(int nr)
-{
-       /* Disable the CPU N */
-       src->scr &= ~cpu_ctrl_mask[nr];
-       return 0;
-}
diff --git a/arch/arm/cpu/armv7/mx6/opos6ul.c b/arch/arm/cpu/armv7/mx6/opos6ul.c
deleted file mode 100644 (file)
index ea2f0ec..0000000
+++ /dev/null
@@ -1,302 +0,0 @@
-/*
- * Copyright (C) 2017 Armadeus Systems
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm/arch/clock.h>
-#include <asm/arch/crm_regs.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/iomux.h>
-#include <asm/arch/mx6-pins.h>
-#include <asm/arch/mx6ul_pins.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/io.h>
-#include <common.h>
-#include <environment.h>
-#include <fsl_esdhc.h>
-#include <mmc.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#ifdef CONFIG_FEC_MXC
-#include <miiphy.h>
-
-#define MDIO_PAD_CTRL ( \
-       PAD_CTL_HYS | PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
-       PAD_CTL_DSE_40ohm \
-)
-
-#define ENET_PAD_CTRL_PU ( \
-       PAD_CTL_HYS | PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
-       PAD_CTL_DSE_40ohm \
-)
-
-#define ENET_PAD_CTRL_PD ( \
-       PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_SPEED_MED | \
-       PAD_CTL_DSE_40ohm \
-)
-
-#define ENET_CLK_PAD_CTRL ( \
-       PAD_CTL_HYS | PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_LOW | \
-       PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST \
-)
-
-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(MDIO_PAD_CTRL),
-       MX6_PAD_ENET1_RX_ER__ENET1_RX_ER      | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
-       MX6_PAD_ENET1_RX_EN__ENET1_RX_EN      | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
-       MX6_PAD_ENET1_RX_DATA1__ENET1_RDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
-       MX6_PAD_ENET1_RX_DATA0__ENET1_RDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
-       MX6_PAD_ENET1_TX_DATA0__ENET1_TDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL_PU),
-       MX6_PAD_ENET1_TX_DATA1__ENET1_TDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL_PU),
-       MX6_PAD_ENET1_TX_EN__ENET1_TX_EN      | MUX_PAD_CTRL(ENET_PAD_CTRL_PU),
-       /* PHY Int */
-       MX6_PAD_NAND_DQS__GPIO4_IO16          | MUX_PAD_CTRL(ENET_PAD_CTRL_PU),
-       /* PHY Reset */
-       MX6_PAD_NAND_DATA00__GPIO4_IO02       | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
-       MX6_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
-};
-
-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;
-}
-
-int board_eth_init(bd_t *bis)
-{
-       struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       struct gpio_desc rst;
-       int ret;
-
-       /* 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);
-
-       ret = enable_fec_anatop_clock(0, ENET_50MHZ);
-       if (ret)
-               return ret;
-
-       enable_enet_clk(1);
-
-       imx_iomux_v3_setup_multiple_pads(fec1_pads, ARRAY_SIZE(fec1_pads));
-
-       ret = dm_gpio_lookup_name("GPIO4_2", &rst);
-       if (ret) {
-               printf("Cannot get GPIO4_2\n");
-               return ret;
-       }
-
-       ret = dm_gpio_request(&rst, "phy-rst");
-       if (ret) {
-               printf("Cannot request GPIO4_2\n");
-               return ret;
-       }
-
-       dm_gpio_set_dir_flags(&rst, GPIOD_IS_OUT);
-       dm_gpio_set_value(&rst, 0);
-       udelay(1000);
-       dm_gpio_set_value(&rst, 1);
-
-       return fecmxc_initialize(bis);
-}
-#endif /* CONFIG_FEC_MXC */
-
-int board_init(void)
-{
-       /* Address of boot parameters */
-       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
-
-       return 0;
-}
-
-int __weak opos6ul_board_late_init(void)
-{
-       return 0;
-}
-
-int board_late_init(void)
-{
-       struct src *psrc = (struct src *)SRC_BASE_ADDR;
-       unsigned reg = readl(&psrc->sbmr2);
-
-       /* In bootstrap don't use the env vars */
-       if (((reg & 0x3000000) >> 24) == 0x1) {
-               set_default_env(NULL);
-               setenv("preboot", "");
-       }
-
-       return opos6ul_board_late_init();
-}
-
-int board_mmc_getcd(struct mmc *mmc)
-{
-       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
-       return cfg->esdhc_base == USDHC1_BASE_ADDR;
-}
-
-int dram_init(void)
-{
-       gd->ram_size = imx_ddr_size();
-
-       return 0;
-}
-
-#ifdef CONFIG_SPL_BUILD
-#include <asm/arch/mx6-ddr.h>
-#include <asm/arch/opos6ul.h>
-#include <libfdt.h>
-#include <spl.h>
-
-#define USDHC_PAD_CTRL (                                       \
-       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_MED | \
-       PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST                   \
-)
-
-struct fsl_esdhc_cfg usdhc_cfg[1] = {
-       {USDHC1_BASE_ADDR, 0, 8},
-};
-
-static iomux_v3_cfg_t const usdhc1_pads[] = {
-       MX6_PAD_SD1_CLK__USDHC1_CLK        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_CMD__USDHC1_CMD        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_DATA0__USDHC1_DATA0    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_DATA1__USDHC1_DATA1    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_DATA2__USDHC1_DATA2    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD1_DATA3__USDHC1_DATA3    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_READY_B__USDHC1_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_CE0_B__USDHC1_DATA5   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_CE1_B__USDHC1_DATA6   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NAND_CLE__USDHC1_DATA7     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-};
-
-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,
-       .grp_ddr_type = 0x000c0000,
-};
-
-static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
-       .dram_dqm0 = 0x00000030,
-       .dram_dqm1 = 0x00000030,
-       .dram_ras = 0x00000030,
-       .dram_cas = 0x00000030,
-       .dram_odt0 = 0x00000030,
-       .dram_odt1 = 0x00000030,
-       .dram_sdba2 = 0x00000000,
-       .dram_sdclk_0 = 0x00000008,
-       .dram_sdqs0 = 0x00000038,
-       .dram_sdqs1 = 0x00000030,
-       .dram_reset = 0x00000030,
-};
-
-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 = 2,
-       .width = 16,
-       .banks = 8,
-       .rowaddr = 14,
-       .coladdr = 10,
-       .pagesz = 2,
-       .trcd = 1500,
-       .trcmin = 5250,
-       .trasmin = 3750,
-};
-
-int board_mmc_init(bd_t *bis)
-{
-       imx_iomux_v3_setup_multiple_pads(usdhc1_pads, ARRAY_SIZE(usdhc1_pads));
-       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
-}
-
-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(0xFFFFFFFF, &ccm->CCGR7);
-}
-
-static void spl_dram_init(void)
-{
-       struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
-       struct fuse_bank *bank = &ocotp->bank[4];
-       struct fuse_bank4_regs *fuse =
-               (struct fuse_bank4_regs *)bank->fuse_regs;
-       int reg = readl(&fuse->gp1);
-
-       /* 512MB of RAM */
-       if (reg & 0x1) {
-               mem_ddr.density = 4;
-               mem_ddr.rowaddr = 15;
-               mem_ddr.trcd = 1375;
-               mem_ddr.trcmin = 4875;
-               mem_ddr.trasmin = 3500;
-       }
-
-       mx6ul_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs);
-       mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr);
-}
-
-void board_init_f(ulong dummy)
-{
-       ccgr_init();
-
-       /* setup AIPS and disable watchdog */
-       arch_cpu_init();
-
-       /* setup GP timer */
-       timer_init();
-
-       /* UART clocks enabled and gd valid - init serial console */
-       opos6ul_setup_uart_debug();
-       preloader_console_init();
-
-       /* DDR initialization */
-       spl_dram_init();
-}
-#endif /* CONFIG_SPL_BUILD */
diff --git a/arch/arm/cpu/armv7/mx6/soc.c b/arch/arm/cpu/armv7/mx6/soc.c
deleted file mode 100644 (file)
index 2bedbdb..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-/*
- * (C) Copyright 2007
- * Sascha Hauer, Pengutronix
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/errno.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/imx-common/hab.h>
-#include <stdbool.h>
-#include <asm/arch/mxc_hdmi.h>
-#include <asm/arch/crm_regs.h>
-#include <dm.h>
-#include <imx_thermal.h>
-#include <mmc.h>
-
-enum ldo_reg {
-       LDO_ARM,
-       LDO_SOC,
-       LDO_PU,
-};
-
-struct scu_regs {
-       u32     ctrl;
-       u32     config;
-       u32     status;
-       u32     invalidate;
-       u32     fpga_rev;
-};
-
-#if defined(CONFIG_IMX_THERMAL)
-static const struct imx_thermal_plat imx6_thermal_plat = {
-       .regs = (void *)ANATOP_BASE_ADDR,
-       .fuse_bank = 1,
-       .fuse_word = 6,
-};
-
-U_BOOT_DEVICE(imx6_thermal) = {
-       .name = "imx_thermal",
-       .platdata = &imx6_thermal_plat,
-};
-#endif
-
-#if defined(CONFIG_SECURE_BOOT)
-struct imx_sec_config_fuse_t const imx_sec_config_fuse = {
-       .bank = 0,
-       .word = 6,
-};
-#endif
-
-u32 get_nr_cpus(void)
-{
-       struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR;
-       return readl(&scu->config) & 3;
-}
-
-u32 get_cpu_rev(void)
-{
-       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
-       u32 reg = readl(&anatop->digprog_sololite);
-       u32 type = ((reg >> 16) & 0xff);
-       u32 major, cfg = 0;
-
-       if (type != MXC_CPU_MX6SL) {
-               reg = readl(&anatop->digprog);
-               struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR;
-               cfg = readl(&scu->config) & 3;
-               type = ((reg >> 16) & 0xff);
-               if (type == MXC_CPU_MX6DL) {
-                       if (!cfg)
-                               type = MXC_CPU_MX6SOLO;
-               }
-
-               if (type == MXC_CPU_MX6Q) {
-                       if (cfg == 1)
-                               type = MXC_CPU_MX6D;
-               }
-
-       }
-       major = ((reg >> 8) & 0xff);
-       if ((major >= 1) &&
-           ((type == MXC_CPU_MX6Q) || (type == MXC_CPU_MX6D))) {
-               major--;
-               type = MXC_CPU_MX6QP;
-               if (cfg == 1)
-                       type = MXC_CPU_MX6DP;
-       }
-       reg &= 0xff;            /* mx6 silicon revision */
-       return (type << 12) | (reg + (0x10 * (major + 1)));
-}
-
-/*
- * OCOTP_CFG3[17:16] (see Fusemap Description Table offset 0x440)
- * defines a 2-bit SPEED_GRADING
- */
-#define OCOTP_CFG3_SPEED_SHIFT 16
-#define OCOTP_CFG3_SPEED_800MHZ        0
-#define OCOTP_CFG3_SPEED_850MHZ        1
-#define OCOTP_CFG3_SPEED_1GHZ  2
-#define OCOTP_CFG3_SPEED_1P2GHZ        3
-
-/*
- * For i.MX6UL
- */
-#define OCOTP_CFG3_SPEED_528MHZ 1
-#define OCOTP_CFG3_SPEED_696MHZ 2
-
-u32 get_cpu_speed_grade_hz(void)
-{
-       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;
-       uint32_t val;
-
-       val = readl(&fuse->cfg3);
-       val >>= OCOTP_CFG3_SPEED_SHIFT;
-       val &= 0x3;
-
-       if (is_mx6ul() || is_mx6ull()) {
-               if (val == OCOTP_CFG3_SPEED_528MHZ)
-                       return 528000000;
-               else if (val == OCOTP_CFG3_SPEED_696MHZ)
-                       return 69600000;
-               else
-                       return 0;
-       }
-
-       switch (val) {
-       /* Valid for IMX6DQ */
-       case OCOTP_CFG3_SPEED_1P2GHZ:
-               if (is_mx6dq() || is_mx6dqp())
-                       return 1200000000;
-       /* Valid for IMX6SX/IMX6SDL/IMX6DQ */
-       case OCOTP_CFG3_SPEED_1GHZ:
-               return 996000000;
-       /* Valid for IMX6DQ */
-       case OCOTP_CFG3_SPEED_850MHZ:
-               if (is_mx6dq() || is_mx6dqp())
-                       return 852000000;
-       /* Valid for IMX6SX/IMX6SDL/IMX6DQ */
-       case OCOTP_CFG3_SPEED_800MHZ:
-               return 792000000;
-       }
-       return 0;
-}
-
-/*
- * OCOTP_MEM0[7:6] (see Fusemap Description Table offset 0x480)
- * defines a 2-bit Temperature Grade
- *
- * return temperature grade and min/max temperature in Celsius
- */
-#define OCOTP_MEM0_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->mem0);
-       val >>= OCOTP_MEM0_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;
-}
-
-#ifdef CONFIG_REVISION_TAG
-u32 __weak get_board_rev(void)
-{
-       u32 cpurev = get_cpu_rev();
-       u32 type = ((cpurev >> 12) & 0xff);
-       if (type == MXC_CPU_MX6SOLO)
-               cpurev = (MXC_CPU_MX6DL) << 12 | (cpurev & 0xFFF);
-
-       if (type == MXC_CPU_MX6D)
-               cpurev = (MXC_CPU_MX6Q) << 12 | (cpurev & 0xFFF);
-
-       return cpurev;
-}
-#endif
-
-static void clear_ldo_ramp(void)
-{
-       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
-       int reg;
-
-       /* ROM may modify LDO ramp up time according to fuse setting, so in
-        * order to be in the safe side we neeed to reset these settings to
-        * match the reset value: 0'b00
-        */
-       reg = readl(&anatop->ana_misc2);
-       reg &= ~(0x3f << 24);
-       writel(reg, &anatop->ana_misc2);
-}
-
-/*
- * Set the PMU_REG_CORE register
- *
- * Set LDO_SOC/PU/ARM regulators to the specified millivolt level.
- * Possible values are from 0.725V to 1.450V in steps of
- * 0.025V (25mV).
- */
-static int set_ldo_voltage(enum ldo_reg ldo, u32 mv)
-{
-       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
-       u32 val, step, old, reg = readl(&anatop->reg_core);
-       u8 shift;
-
-       if (mv < 725)
-               val = 0x00;     /* Power gated off */
-       else if (mv > 1450)
-               val = 0x1F;     /* Power FET switched full on. No regulation */
-       else
-               val = (mv - 700) / 25;
-
-       clear_ldo_ramp();
-
-       switch (ldo) {
-       case LDO_SOC:
-               shift = 18;
-               break;
-       case LDO_PU:
-               shift = 9;
-               break;
-       case LDO_ARM:
-               shift = 0;
-               break;
-       default:
-               return -EINVAL;
-       }
-
-       old = (reg & (0x1F << shift)) >> shift;
-       step = abs(val - old);
-       if (step == 0)
-               return 0;
-
-       reg = (reg & ~(0x1F << shift)) | (val << shift);
-       writel(reg, &anatop->reg_core);
-
-       /*
-        * The LDO ramp-up is based on 64 clock cycles of 24 MHz = 2.6 us per
-        * step
-        */
-       udelay(3 * step);
-
-       return 0;
-}
-
-static void set_ahb_rate(u32 val)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       u32 reg, div;
-
-       div = get_periph_clk() / val - 1;
-       reg = readl(&mxc_ccm->cbcdr);
-
-       writel((reg & (~MXC_CCM_CBCDR_AHB_PODF_MASK)) |
-               (div << MXC_CCM_CBCDR_AHB_PODF_OFFSET), &mxc_ccm->cbcdr);
-}
-
-static void clear_mmdc_ch_mask(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       u32 reg;
-       reg = readl(&mxc_ccm->ccdr);
-
-       /* Clear MMDC channel mask */
-       if (is_mx6sx() || is_mx6ul() || is_mx6ull() || is_mx6sl())
-               reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK);
-       else
-               reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK | MXC_CCM_CCDR_MMDC_CH0_HS_MASK);
-       writel(reg, &mxc_ccm->ccdr);
-}
-
-#define OCOTP_MEM0_REFTOP_TRIM_SHIFT          8
-
-static void init_bandgap(void)
-{
-       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
-       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;
-
-       /*
-        * Ensure the bandgap has stabilized.
-        */
-       while (!(readl(&anatop->ana_misc0) & 0x80))
-               ;
-       /*
-        * For best noise performance of the analog blocks using the
-        * outputs of the bandgap, the reftop_selfbiasoff bit should
-        * be set.
-        */
-       writel(BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF, &anatop->ana_misc0_set);
-       /*
-        * On i.MX6ULL,we need to set VBGADJ bits according to the
-        * REFTOP_TRIM[3:0] in fuse table
-        *      000 - set REFTOP_VBGADJ[2:0] to 3b'110,
-        *      110 - set REFTOP_VBGADJ[2:0] to 3b'000,
-        *      001 - set REFTOP_VBGADJ[2:0] to 3b'001,
-        *      010 - set REFTOP_VBGADJ[2:0] to 3b'010,
-        *      011 - set REFTOP_VBGADJ[2:0] to 3b'011,
-        *      100 - set REFTOP_VBGADJ[2:0] to 3b'100,
-        *      101 - set REFTOP_VBGADJ[2:0] to 3b'101,
-        *      111 - set REFTOP_VBGADJ[2:0] to 3b'111,
-        */
-       if (is_mx6ull()) {
-               val = readl(&fuse->mem0);
-               val >>= OCOTP_MEM0_REFTOP_TRIM_SHIFT;
-               val &= 0x7;
-
-               writel(val << BM_ANADIG_ANA_MISC0_REFTOP_VBGADJ_SHIFT,
-                      &anatop->ana_misc0_set);
-       }
-}
-
-#ifdef CONFIG_MX6SL
-static void set_preclk_from_osc(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       u32 reg;
-
-       reg = readl(&mxc_ccm->cscmr1);
-       reg |= MXC_CCM_CSCMR1_PER_CLK_SEL_MASK;
-       writel(reg, &mxc_ccm->cscmr1);
-}
-#endif
-
-int arch_cpu_init(void)
-{
-       init_aips();
-
-       /* Need to clear MMDC_CHx_MASK to make warm reset work. */
-       clear_mmdc_ch_mask();
-
-       /*
-        * Disable self-bias circuit in the analog bandap.
-        * The self-bias circuit is used by the bandgap during startup.
-        * This bit should be set after the bandgap has initialized.
-        */
-       init_bandgap();
-
-       if (!is_mx6ul() && !is_mx6ull()) {
-               /*
-                * When low freq boot is enabled, ROM will not set AHB
-                * freq, so we need to ensure AHB freq is 132MHz in such
-                * scenario.
-                *
-                * To i.MX6UL, when power up, default ARM core and
-                * AHB rate is 396M and 132M.
-                */
-               if (mxc_get_clock(MXC_ARM_CLK) == 396000000)
-                       set_ahb_rate(132000000);
-       }
-
-       if (is_mx6ul()) {
-               if (is_soc_rev(CHIP_REV_1_0) == 0) {
-                       /*
-                        * According to the design team's requirement on
-                        * i.MX6UL,the PMIC_STBY_REQ PAD should be configured
-                        * as open drain 100K (0x0000b8a0).
-                        * Only exists on TO1.0
-                        */
-                       writel(0x0000b8a0, IOMUXC_BASE_ADDR + 0x29c);
-               } else {
-                       /*
-                        * From TO1.1, SNVS adds internal pull up control
-                        * for POR_B, the register filed is GPBIT[1:0],
-                        * after system boot up, it can be set to 2b'01
-                        * to disable internal pull up.It can save about
-                        * 30uA power in SNVS mode.
-                        */
-                       writel((readl(MX6UL_SNVS_LP_BASE_ADDR + 0x10) &
-                              (~0x1400)) | 0x400,
-                              MX6UL_SNVS_LP_BASE_ADDR + 0x10);
-               }
-       }
-
-       if (is_mx6ull()) {
-               /*
-                * GPBIT[1:0] is suggested to set to 2'b11:
-                * 2'b00 : always PUP100K
-                * 2'b01 : PUP100K when PMIC_ON_REQ or SOC_NOT_FAIL
-                * 2'b10 : always disable PUP100K
-                * 2'b11 : PDN100K when SOC_FAIL, PUP100K when SOC_NOT_FAIL
-                * register offset is different from i.MX6UL, since
-                * i.MX6UL is fixed by ECO.
-                */
-               writel(readl(MX6UL_SNVS_LP_BASE_ADDR) |
-                       0x3, MX6UL_SNVS_LP_BASE_ADDR);
-       }
-
-       /* Set perclk to source from OSC 24MHz */
-#if defined(CONFIG_MX6SL)
-       set_preclk_from_osc();
-#endif
-
-       imx_set_wdog_powerdown(false); /* Disable PDE bit of WMCR register */
-
-#ifdef CONFIG_APBH_DMA
-       /* Start APBH DMA */
-       mxs_dma_init();
-#endif
-
-       init_src();
-
-       return 0;
-}
-
-#ifdef CONFIG_ENV_IS_IN_MMC
-__weak int board_mmc_get_env_dev(int devno)
-{
-       return CONFIG_SYS_MMC_ENV_DEV;
-}
-
-static int mmc_get_boot_dev(void)
-{
-       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
-       u32 soc_sbmr = readl(&src_regs->sbmr1);
-       u32 bootsel;
-       int devno;
-
-       /*
-        * Refer to
-        * "i.MX 6Dual/6Quad Applications Processor Reference Manual"
-        * Chapter "8.5.3.1 Expansion Device eFUSE Configuration"
-        * i.MX6SL/SX/UL has same layout.
-        */
-       bootsel = (soc_sbmr & 0x000000FF) >> 6;
-
-       /* No boot from sd/mmc */
-       if (bootsel != 1)
-               return -1;
-
-       /* BOOT_CFG2[3] and BOOT_CFG2[4] */
-       devno = (soc_sbmr & 0x00001800) >> 11;
-
-       return devno;
-}
-
-int mmc_get_env_dev(void)
-{
-       int devno = mmc_get_boot_dev();
-
-       /* If not boot from sd/mmc, use default value */
-       if (devno < 0)
-               return CONFIG_SYS_MMC_ENV_DEV;
-
-       return board_mmc_get_env_dev(devno);
-}
-
-#ifdef CONFIG_SYS_MMC_ENV_PART
-__weak int board_mmc_get_env_part(int devno)
-{
-       return CONFIG_SYS_MMC_ENV_PART;
-}
-
-uint mmc_get_env_part(struct mmc *mmc)
-{
-       int devno = mmc_get_boot_dev();
-
-       /* If not boot from sd/mmc, use default value */
-       if (devno < 0)
-               return CONFIG_SYS_MMC_ENV_PART;
-
-       return board_mmc_get_env_part(devno);
-}
-#endif
-#endif
-
-int board_postclk_init(void)
-{
-       set_ldo_voltage(LDO_SOC, 1175); /* Set VDDSOC to 1.175V */
-
-       return 0;
-}
-
-#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[4];
-       struct fuse_bank4_regs *fuse =
-                       (struct fuse_bank4_regs *)bank->fuse_regs;
-
-       if ((is_mx6sx() || is_mx6ul() || is_mx6ull()) && dev_id == 1) {
-               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 ;
-               
-       } else {
-               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 ;
-       }
-
-}
-#endif
-
-/*
- * 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 use GPR9[25:0]
- * instead of SBMR1 to determine the boot device.
- */
-const struct boot_mode soc_boot_modes[] = {
-       {"normal",      MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)},
-       /* reserved value should start rom usb */
-       {"usb",         MAKE_CFGVAL(0x10, 0x00, 0x00, 0x00)},
-       {"sata",        MAKE_CFGVAL(0x20, 0x00, 0x00, 0x00)},
-       {"ecspi1:0",    MAKE_CFGVAL(0x30, 0x00, 0x00, 0x08)},
-       {"ecspi1:1",    MAKE_CFGVAL(0x30, 0x00, 0x00, 0x18)},
-       {"ecspi1:2",    MAKE_CFGVAL(0x30, 0x00, 0x00, 0x28)},
-       {"ecspi1:3",    MAKE_CFGVAL(0x30, 0x00, 0x00, 0x38)},
-       /* 4 bit bus width */
-       {"esdhc1",      MAKE_CFGVAL(0x40, 0x20, 0x00, 0x00)},
-       {"esdhc2",      MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
-       {"esdhc3",      MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)},
-       {"esdhc4",      MAKE_CFGVAL(0x40, 0x38, 0x00, 0x00)},
-       {NULL,          0},
-};
-
-void reset_misc(void)
-{
-#ifdef CONFIG_VIDEO_MXS
-       lcdif_power_down();
-#endif
-}
-
-void s_init(void)
-{
-       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
-       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       u32 mask480;
-       u32 mask528;
-       u32 reg, periph1, periph2;
-
-       if (is_mx6sx() || is_mx6ul() || is_mx6ull())
-               return;
-
-       /* Due to hardware limitation, on MX6Q we need to gate/ungate all PFDs
-        * to make sure PFD is working right, otherwise, PFDs may
-        * not output clock after reset, MX6DL and MX6SL have added 396M pfd
-        * workaround in ROM code, as bus clock need it
-        */
-
-       mask480 = ANATOP_PFD_CLKGATE_MASK(0) |
-               ANATOP_PFD_CLKGATE_MASK(1) |
-               ANATOP_PFD_CLKGATE_MASK(2) |
-               ANATOP_PFD_CLKGATE_MASK(3);
-       mask528 = ANATOP_PFD_CLKGATE_MASK(1) |
-               ANATOP_PFD_CLKGATE_MASK(3);
-
-       reg = readl(&ccm->cbcmr);
-       periph2 = ((reg & MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK)
-               >> MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET);
-       periph1 = ((reg & MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK)
-               >> MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET);
-
-       /* Checking if PLL2 PFD0 or PLL2 PFD2 is using for periph clock */
-       if ((periph2 != 0x2) && (periph1 != 0x2))
-               mask528 |= ANATOP_PFD_CLKGATE_MASK(0);
-
-       if ((periph2 != 0x1) && (periph1 != 0x1) &&
-               (periph2 != 0x3) && (periph1 != 0x3))
-               mask528 |= ANATOP_PFD_CLKGATE_MASK(2);
-
-       writel(mask480, &anatop->pfd_480_set);
-       writel(mask528, &anatop->pfd_528_set);
-       writel(mask480, &anatop->pfd_480_clr);
-       writel(mask528, &anatop->pfd_528_clr);
-}
-
-#ifdef CONFIG_IMX_HDMI
-void imx_enable_hdmi_phy(void)
-{
-       struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
-       u8 reg;
-       reg = readb(&hdmi->phy_conf0);
-       reg |= HDMI_PHY_CONF0_PDZ_MASK;
-       writeb(reg, &hdmi->phy_conf0);
-       udelay(3000);
-       reg |= HDMI_PHY_CONF0_ENTMDS_MASK;
-       writeb(reg, &hdmi->phy_conf0);
-       udelay(3000);
-       reg |= HDMI_PHY_CONF0_GEN2_TXPWRON_MASK;
-       writeb(reg, &hdmi->phy_conf0);
-       writeb(HDMI_MC_PHYRSTZ_ASSERT, &hdmi->mc_phyrstz);
-}
-
-void imx_setup_hdmi(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
-       int reg, count;
-       u8 val;
-
-       /* Turn on HDMI PHY clock */
-       reg = readl(&mxc_ccm->CCGR2);
-       reg |=  MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_MASK|
-                MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_MASK;
-       writel(reg, &mxc_ccm->CCGR2);
-       writeb(HDMI_MC_PHYRSTZ_DEASSERT, &hdmi->mc_phyrstz);
-       reg = readl(&mxc_ccm->chsccdr);
-       reg &= ~(MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK|
-                MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK|
-                MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK);
-       reg |= (CHSCCDR_PODF_DIVIDE_BY_3
-                << MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET)
-                |(CHSCCDR_IPU_PRE_CLK_540M_PFD
-                << MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET);
-       writel(reg, &mxc_ccm->chsccdr);
-
-       /* Clear the overflow condition */
-       if (readb(&hdmi->ih_fc_stat2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK) {
-               /* TMDS software reset */
-               writeb((u8)~HDMI_MC_SWRSTZ_TMDSSWRST_REQ, &hdmi->mc_swrstz);
-               val = readb(&hdmi->fc_invidconf);
-               /* Need minimum 3 times to write to clear the register */
-               for (count = 0 ; count < 5 ; count++)
-                       writeb(val, &hdmi->fc_invidconf);
-       }
-}
-#endif
-
-#ifdef CONFIG_IMX_BOOTAUX
-int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
-{
-       struct src *src_reg;
-       u32 stack, pc;
-
-       if (!boot_private_data)
-               return -EINVAL;
-
-       stack = *(u32 *)boot_private_data;
-       pc = *(u32 *)(boot_private_data + 4);
-
-       /* Set the stack and pc to M4 bootROM */
-       writel(stack, M4_BOOTROM_BASE_ADDR);
-       writel(pc, M4_BOOTROM_BASE_ADDR + 4);
-
-       /* Enable M4 */
-       src_reg = (struct src *)SRC_BASE_ADDR;
-       clrsetbits_le32(&src_reg->scr, SRC_SCR_M4C_NON_SCLR_RST_MASK,
-                       SRC_SCR_M4_ENABLE_MASK);
-
-       return 0;
-}
-
-int arch_auxiliary_core_check_up(u32 core_id)
-{
-       struct src *src_reg = (struct src *)SRC_BASE_ADDR;
-       unsigned val;
-
-       val = readl(&src_reg->scr);
-
-       if (val & SRC_SCR_M4C_NON_SCLR_RST_MASK)
-               return 0;  /* assert in reset */
-
-       return 1;
-}
-#endif
diff --git a/arch/arm/cpu/armv7/mx7/Kconfig b/arch/arm/cpu/armv7/mx7/Kconfig
deleted file mode 100644 (file)
index aea8526..0000000
+++ /dev/null
@@ -1,59 +0,0 @@
-if ARCH_MX7
-
-config MX7
-       bool
-       select ROM_UNIFIED_SECTIONS
-       select CPU_V7_HAS_VIRT
-       select CPU_V7_HAS_NONSEC
-       select ARCH_SUPPORT_PSCI
-       imply CMD_FUSE
-       default y
-
-config MX7D
-       select ROM_UNIFIED_SECTIONS
-       imply CMD_FUSE
-       bool
-
-choice
-       prompt "MX7 board select"
-       optional
-
-config TARGET_MX7DSABRESD
-       bool "mx7dsabresd"
-       select BOARD_LATE_INIT
-       select MX7D
-       select DM
-       select DM_THERMAL
-
-config TARGET_PICO_IMX7D
-       bool "pico-imx7d"
-       select BOARD_LATE_INIT
-       select MX7D
-       select DM
-       select DM_THERMAL
-
-config TARGET_WARP7
-       bool "warp7"
-       select BOARD_LATE_INIT
-       select MX7D
-       select DM
-       select DM_THERMAL
-
-config TARGET_COLIBRI_IMX7
-       bool "Support Colibri iMX7S/iMX7D modules"
-       select BOARD_LATE_INIT
-       select DM
-       select DM_SERIAL
-       select DM_THERMAL
-
-endchoice
-
-config SYS_SOC
-       default "mx7"
-
-source "board/freescale/mx7dsabresd/Kconfig"
-source "board/technexion/pico-imx7d/Kconfig"
-source "board/toradex/colibri_imx7/Kconfig"
-source "board/warp7/Kconfig"
-
-endif
diff --git a/arch/arm/cpu/armv7/mx7/Makefile b/arch/arm/cpu/armv7/mx7/Makefile
deleted file mode 100644 (file)
index d21f87f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-#
-# (C) Copyright 2015 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-#
-
-obj-y  := soc.o clock.o clock_slice.o
-
-ifdef CONFIG_ARMV7_PSCI
-obj-y  += psci-mx7.o psci.o
-endif
diff --git a/arch/arm/cpu/armv7/mx7/clock.c b/arch/arm/cpu/armv7/mx7/clock.c
deleted file mode 100644 (file)
index 2cfde46..0000000
+++ /dev/null
@@ -1,1133 +0,0 @@
-/*
- * 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 <linux/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
-
-       if (IS_ENABLED(CONFIG_IMX_RDC)) {
-               clock_enable(CCGR_RDC, 1);
-               clock_enable(CCGR_SEMA1, 1);
-               clock_enable(CCGR_SEMA2, 1);
-       }
-}
-
-#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
deleted file mode 100644 (file)
index 68a7005..0000000
+++ /dev/null
@@ -1,757 +0,0 @@
-/*
- * 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 <linux/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_270M_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/psci-mx7.c b/arch/arm/cpu/armv7/mx7/psci-mx7.c
deleted file mode 100644 (file)
index 502552d..0000000
+++ /dev/null
@@ -1,69 +0,0 @@
-#include <asm/io.h>
-#include <asm/psci.h>
-#include <asm/secure.h>
-#include <asm/arch/imx-regs.h>
-#include <common.h>
-
-
-#define GPC_CPU_PGC_SW_PDN_REQ 0xfc
-#define GPC_CPU_PGC_SW_PUP_REQ 0xf0
-#define GPC_PGC_C1             0x840
-
-#define BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7     0x2
-
-/* below is for i.MX7D */
-#define SRC_GPR1_MX7D          0x074
-#define SRC_A7RCR0             0x004
-#define SRC_A7RCR1             0x008
-
-#define BP_SRC_A7RCR0_A7_CORE_RESET0   0
-#define BP_SRC_A7RCR1_A7_CORE1_ENABLE  1
-
-static inline void imx_gpcv2_set_m_core_pgc(bool enable, u32 offset)
-{
-       writel(enable, GPC_IPS_BASE_ADDR + offset);
-}
-
-__secure void imx_gpcv2_set_core1_power(bool pdn)
-{
-       u32 reg = pdn ? GPC_CPU_PGC_SW_PUP_REQ : GPC_CPU_PGC_SW_PDN_REQ;
-       u32 val;
-
-       imx_gpcv2_set_m_core_pgc(true, GPC_PGC_C1);
-
-       val = readl(GPC_IPS_BASE_ADDR + reg);
-       val |= BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7;
-       writel(val, GPC_IPS_BASE_ADDR + reg);
-
-       while ((readl(GPC_IPS_BASE_ADDR + reg) &
-              BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7) != 0)
-               ;
-
-       imx_gpcv2_set_m_core_pgc(false, GPC_PGC_C1);
-}
-
-__secure void imx_enable_cpu_ca7(int cpu, bool enable)
-{
-       u32 mask, val;
-
-       mask = 1 << (BP_SRC_A7RCR1_A7_CORE1_ENABLE + cpu - 1);
-       val = readl(SRC_BASE_ADDR + SRC_A7RCR1);
-       val = enable ? val | mask : val & ~mask;
-       writel(val, SRC_BASE_ADDR + SRC_A7RCR1);
-}
-
-__secure int imx_cpu_on(int fn, int cpu, int pc)
-{
-       writel(pc, SRC_BASE_ADDR + cpu * 8 + SRC_GPR1_MX7D);
-       imx_gpcv2_set_core1_power(true);
-       imx_enable_cpu_ca7(cpu, true);
-       return 0;
-}
-
-__secure int imx_cpu_off(int cpu)
-{
-       imx_enable_cpu_ca7(cpu, false);
-       imx_gpcv2_set_core1_power(false);
-       writel(0, SRC_BASE_ADDR + cpu * 8 + SRC_GPR1_MX7D + 4);
-       return 0;
-}
diff --git a/arch/arm/cpu/armv7/mx7/psci.S b/arch/arm/cpu/armv7/mx7/psci.S
deleted file mode 100644 (file)
index 96e88d6..0000000
+++ /dev/null
@@ -1,39 +0,0 @@
-#include <config.h>
-#include <linux/linkage.h>
-
-#include <asm/armv7.h>
-#include <asm/arch-armv7/generictimer.h>
-#include <asm/psci.h>
-
-       .pushsection ._secure.text, "ax"
-
-       .arch_extension sec
-
-.globl psci_cpu_on
-psci_cpu_on:
-       push    {r4, r5, lr}
-
-       mov     r4, r0
-       mov     r5, r1
-       mov     r0, r1
-       mov     r1, r2
-       bl      psci_save_target_pc
-
-       mov     r0, r4
-       mov     r1, r5
-       ldr     r2, =psci_cpu_entry
-       bl      imx_cpu_on
-
-       pop     {r4, r5, pc}
-
-.globl psci_cpu_off
-psci_cpu_off:
-
-       bl      psci_cpu_off_common
-       bl      psci_get_cpu_id
-       bl      imx_cpu_off
-
-1:     wfi
-       b 1b
-
-       .popsection
diff --git a/arch/arm/cpu/armv7/mx7/soc.c b/arch/arm/cpu/armv7/mx7/soc.c
deleted file mode 100644 (file)
index 8422f24..0000000
+++ /dev/null
@@ -1,468 +0,0 @@
-/*
- * 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/imx-common/hab.h>
-#include <asm/imx-common/rdc-sema.h>
-#include <asm/arch/imx-rdc.h>
-#include <asm/arch/crm_regs.h>
-#include <dm.h>
-#include <imx_thermal.h>
-
-#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
-
-#ifdef CONFIG_IMX_RDC
-/*
- * In current design, if any peripheral was assigned to both A7 and M4,
- * it will receive ipg_stop or ipg_wait when any of the 2 platforms enter
- * low power mode. So M4 sleep will cause some peripherals fail to work
- * at A7 core side. At default, all resources are in domain 0 - 3.
- *
- * There are 26 peripherals impacted by this IC issue:
- * SIM2(sim2/emvsim2)
- * SIM1(sim1/emvsim1)
- * UART1/UART2/UART3/UART4/UART5/UART6/UART7
- * SAI1/SAI2/SAI3
- * WDOG1/WDOG2/WDOG3/WDOG4
- * GPT1/GPT2/GPT3/GPT4
- * PWM1/PWM2/PWM3/PWM4
- * ENET1/ENET2
- * Software Workaround:
- * Here we setup some resources to domain 0 where M4 codes will move
- * the M4 out of this domain. Then M4 is not able to access them any longer.
- * This is a workaround for ic issue. So the peripherals are not shared
- * by them. This way requires the uboot implemented the RDC driver and
- * set the 26 IPs above to domain 0 only. M4 code will assign resource
- * to its own domain, if it want to use the resource.
- */
-static rdc_peri_cfg_t const resources[] = {
-       (RDC_PER_SIM1 | RDC_DOMAIN(0)),
-       (RDC_PER_SIM2 | RDC_DOMAIN(0)),
-       (RDC_PER_UART1 | RDC_DOMAIN(0)),
-       (RDC_PER_UART2 | RDC_DOMAIN(0)),
-       (RDC_PER_UART3 | RDC_DOMAIN(0)),
-       (RDC_PER_UART4 | RDC_DOMAIN(0)),
-       (RDC_PER_UART5 | RDC_DOMAIN(0)),
-       (RDC_PER_UART6 | RDC_DOMAIN(0)),
-       (RDC_PER_UART7 | RDC_DOMAIN(0)),
-       (RDC_PER_SAI1 | RDC_DOMAIN(0)),
-       (RDC_PER_SAI2 | RDC_DOMAIN(0)),
-       (RDC_PER_SAI3 | RDC_DOMAIN(0)),
-       (RDC_PER_WDOG1 | RDC_DOMAIN(0)),
-       (RDC_PER_WDOG2 | RDC_DOMAIN(0)),
-       (RDC_PER_WDOG3 | RDC_DOMAIN(0)),
-       (RDC_PER_WDOG4 | RDC_DOMAIN(0)),
-       (RDC_PER_GPT1 | RDC_DOMAIN(0)),
-       (RDC_PER_GPT2 | RDC_DOMAIN(0)),
-       (RDC_PER_GPT3 | RDC_DOMAIN(0)),
-       (RDC_PER_GPT4 | RDC_DOMAIN(0)),
-       (RDC_PER_PWM1 | RDC_DOMAIN(0)),
-       (RDC_PER_PWM2 | RDC_DOMAIN(0)),
-       (RDC_PER_PWM3 | RDC_DOMAIN(0)),
-       (RDC_PER_PWM4 | RDC_DOMAIN(0)),
-       (RDC_PER_ENET1 | RDC_DOMAIN(0)),
-       (RDC_PER_ENET2 | RDC_DOMAIN(0)),
-};
-
-static void isolate_resource(void)
-{
-       imx_rdc_setup_peripherals(resources, ARRAY_SIZE(resources));
-}
-#endif
-
-#if defined(CONFIG_SECURE_BOOT)
-struct imx_sec_config_fuse_t const imx_sec_config_fuse = {
-       .bank = 1,
-       .word = 3,
-};
-#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_500MHZ     1
-#define OCOTP_TESTER3_SPEED_1GHZ       2
-#define OCOTP_TESTER3_SPEED_1P2GHZ     3
-
-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 800000000;
-       case OCOTP_TESTER3_SPEED_500MHZ:
-               return 500000000;
-       case OCOTP_TESTER3_SPEED_1GHZ:
-               return 1000000000;
-       case OCOTP_TESTER3_SPEED_1P2GHZ:
-               return 1200000000;
-       }
-       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;
-}
-
-static bool is_mx7d(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;
-       int val;
-
-       val = readl(&fuse->tester4);
-       if (val & 1)
-               return false;
-       else
-               return true;
-}
-
-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;
-
-       if (!is_mx7d())
-               type = MXC_CPU_MX7S;
-
-       reg &= 0xff;
-       return (type << 12) | reg;
-}
-
-#ifdef CONFIG_REVISION_TAG
-u32 __weak get_board_rev(void)
-{
-       return get_cpu_rev();
-}
-#endif
-
-/* enable all periherial can be accessed in nosec mode */
-static void init_csu(void)
-{
-       int i = 0;
-       for (i = 0; i < CSU_NUM_REGS; i++)
-               writel(CSU_INIT_SEC_LEVEL0, CSU_IPS_BASE_ADDR + i * 4);
-}
-
-static void imx_enet_mdio_fixup(void)
-{
-       struct iomuxc_gpr_base_regs *gpr_regs =
-               (struct iomuxc_gpr_base_regs *)IOMUXC_GPR_BASE_ADDR;
-
-       /*
-        * The management data input/output (MDIO) requires open-drain,
-        * i.MX7D TO1.0 ENET MDIO pin has no open drain, but TO1.1 supports
-        * this feature. So to TO1.1, need to enable open drain by setting
-        * bits GPR0[8:7].
-        */
-
-       if (soc_rev() >= CHIP_REV_1_1) {
-               setbits_le32(&gpr_regs->gpr[0],
-                            IOMUXC_GPR_GPR0_ENET_MDIO_OPEN_DRAIN_MASK);
-       }
-}
-
-int arch_cpu_init(void)
-{
-       init_aips();
-
-       init_csu();
-       /* Disable PDE bit of WMCR register */
-       imx_set_wdog_powerdown(false);
-
-       imx_enet_mdio_fixup();
-
-#ifdef CONFIG_APBH_DMA
-       /* Start APBH DMA */
-       mxs_dma_init();
-#endif
-
-       if (IS_ENABLED(CONFIG_IMX_RDC))
-               isolate_resource();
-
-       return 0;
-}
-
-#ifdef CONFIG_ARCH_MISC_INIT
-int arch_misc_init(void)
-{
-#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
-       if (is_mx7d())
-               setenv("soc", "imx7d");
-       else
-               setenv("soc", "imx7s");
-#endif
-
-       return 0;
-}
-#endif
-
-#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
-
-#ifdef CONFIG_IMX_BOOTAUX
-int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
-{
-       u32 stack, pc;
-       struct src *src_reg = (struct src *)SRC_BASE_ADDR;
-
-       if (!boot_private_data)
-               return 1;
-
-       stack = *(u32 *)boot_private_data;
-       pc = *(u32 *)(boot_private_data + 4);
-
-       /* Set the stack and pc to M4 bootROM */
-       writel(stack, M4_BOOTROM_BASE_ADDR);
-       writel(pc, M4_BOOTROM_BASE_ADDR + 4);
-
-       /* Enable M4 */
-       clrsetbits_le32(&src_reg->m4rcr, SRC_M4RCR_M4C_NON_SCLR_RST_MASK,
-                       SRC_M4RCR_ENABLE_M4_MASK);
-
-       return 0;
-}
-
-int arch_auxiliary_core_check_up(u32 core_id)
-{
-       uint32_t val;
-       struct src *src_reg = (struct src *)SRC_BASE_ADDR;
-
-       val = readl(&src_reg->m4rcr);
-       if (val & 0x00000001)
-               return 0; /* assert in reset */
-
-       return 1;
-}
-#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;
-}
-
-#ifdef CONFIG_ENV_IS_IN_MMC
-__weak int board_mmc_get_env_dev(int devno)
-{
-       return CONFIG_SYS_MMC_ENV_DEV;
-}
-
-int mmc_get_env_dev(void)
-{
-       struct bootrom_sw_info **p =
-               (struct bootrom_sw_info **)ROM_SW_INFO_ADDR;
-       int devno = (*p)->boot_dev_instance;
-       u8 boot_type = (*p)->boot_dev_type;
-
-       /* 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;
-
-       return board_mmc_get_env_dev(devno);
-}
-#endif
-
-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;
-}
-
-void reset_misc(void)
-{
-#ifdef CONFIG_VIDEO_MXS
-       lcdif_power_down();
-#endif
-}
-
diff --git a/arch/arm/cpu/armv7/mx7ulp/Kconfig b/arch/arm/cpu/armv7/mx7ulp/Kconfig
deleted file mode 100644 (file)
index 1bdc85a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-if ARCH_MX7ULP
-
-config SYS_SOC
-       default "mx7ulp"
-
-choice
-       prompt "MX7ULP board select"
-       optional
-
-config TARGET_MX7ULP_EVK
-        bool "Support mx7ulp EVK board"
-
-endchoice
-
-source "board/freescale/mx7ulp_evk/Kconfig"
-
-endif
diff --git a/arch/arm/cpu/armv7/mx7ulp/Makefile b/arch/arm/cpu/armv7/mx7ulp/Makefile
deleted file mode 100644 (file)
index 0248ea8..0000000
+++ /dev/null
@@ -1,8 +0,0 @@
-#
-# (C) Copyright 2016 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-#
-
-obj-y  := soc.o clock.o iomux.o pcc.o scg.o
diff --git a/arch/arm/cpu/armv7/mx7ulp/clock.c b/arch/arm/cpu/armv7/mx7ulp/clock.c
deleted file mode 100644 (file)
index 77b282a..0000000
+++ /dev/null
@@ -1,365 +0,0 @@
-/*
- * Copyright (C) 2016 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <div64.h>
-#include <asm/io.h>
-#include <errno.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/sys_proto.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-int get_clocks(void)
-{
-#ifdef CONFIG_FSL_ESDHC
-#if CONFIG_SYS_FSL_ESDHC_ADDR == USDHC0_RBASE
-       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-#elif CONFIG_SYS_FSL_ESDHC_ADDR == USDHC1_RBASE
-       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
-#endif
-#endif
-       return 0;
-}
-
-static u32 get_fast_plat_clk(void)
-{
-       return scg_clk_get_rate(SCG_NIC0_CLK);
-}
-
-static u32 get_slow_plat_clk(void)
-{
-       return scg_clk_get_rate(SCG_NIC1_CLK);
-}
-
-static u32 get_ipg_clk(void)
-{
-       return scg_clk_get_rate(SCG_NIC1_BUS_CLK);
-}
-
-u32 get_lpuart_clk(void)
-{
-       int index = 0;
-
-       const u32 lpuart_array[] = {
-               LPUART0_RBASE,
-               LPUART1_RBASE,
-               LPUART2_RBASE,
-               LPUART3_RBASE,
-               LPUART4_RBASE,
-               LPUART5_RBASE,
-               LPUART6_RBASE,
-               LPUART7_RBASE,
-       };
-
-       const enum pcc_clk lpuart_pcc_clks[] = {
-               PER_CLK_LPUART4,
-               PER_CLK_LPUART5,
-               PER_CLK_LPUART6,
-               PER_CLK_LPUART7,
-       };
-
-       for (index = 0; index < 8; index++) {
-               if (lpuart_array[index] == LPUART_BASE)
-                       break;
-       }
-
-       if (index < 4 || index > 7)
-               return 0;
-
-       return pcc_clock_get_rate(lpuart_pcc_clks[index - 4]);
-}
-
-#ifdef CONFIG_SYS_LPI2C_IMX
-int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
-{
-       /* Set parent to FIRC DIV2 clock */
-       const enum pcc_clk lpi2c_pcc_clks[] = {
-               PER_CLK_LPI2C4,
-               PER_CLK_LPI2C5,
-               PER_CLK_LPI2C6,
-               PER_CLK_LPI2C7,
-       };
-
-       if (i2c_num < 4 || i2c_num > 7)
-               return -EINVAL;
-
-       if (enable) {
-               pcc_clock_enable(lpi2c_pcc_clks[i2c_num - 4], false);
-               pcc_clock_sel(lpi2c_pcc_clks[i2c_num - 4], SCG_FIRC_DIV2_CLK);
-               pcc_clock_enable(lpi2c_pcc_clks[i2c_num - 4], true);
-       } else {
-               pcc_clock_enable(lpi2c_pcc_clks[i2c_num - 4], false);
-       }
-       return 0;
-}
-
-u32 imx_get_i2cclk(unsigned i2c_num)
-{
-       const enum pcc_clk lpi2c_pcc_clks[] = {
-               PER_CLK_LPI2C4,
-               PER_CLK_LPI2C5,
-               PER_CLK_LPI2C6,
-               PER_CLK_LPI2C7,
-       };
-
-       if (i2c_num < 4 || i2c_num > 7)
-               return 0;
-
-       return pcc_clock_get_rate(lpi2c_pcc_clks[i2c_num - 4]);
-}
-#endif
-
-unsigned int mxc_get_clock(enum mxc_clock clk)
-{
-       switch (clk) {
-       case MXC_ARM_CLK:
-               return scg_clk_get_rate(SCG_CORE_CLK);
-       case MXC_AXI_CLK:
-               return get_fast_plat_clk();
-       case MXC_AHB_CLK:
-               return get_slow_plat_clk();
-       case MXC_IPG_CLK:
-               return get_ipg_clk();
-       case MXC_I2C_CLK:
-               return pcc_clock_get_rate(PER_CLK_LPI2C4);
-       case MXC_UART_CLK:
-               return get_lpuart_clk();
-       case MXC_ESDHC_CLK:
-               return pcc_clock_get_rate(PER_CLK_USDHC0);
-       case MXC_ESDHC2_CLK:
-               return pcc_clock_get_rate(PER_CLK_USDHC1);
-       case MXC_DDR_CLK:
-               return scg_clk_get_rate(SCG_DDR_CLK);
-       default:
-               printf("Unsupported mxc_clock %d\n", clk);
-               break;
-       }
-
-       return 0;
-}
-
-void init_clk_usdhc(u32 index)
-{
-       switch (index) {
-       case 0:
-               /*Disable the clock before configure it */
-               pcc_clock_enable(PER_CLK_USDHC0, false);
-
-               /* 158MHz / 1 = 158MHz */
-               pcc_clock_sel(PER_CLK_USDHC0, SCG_NIC1_CLK);
-               pcc_clock_div_config(PER_CLK_USDHC0, false, 1);
-               pcc_clock_enable(PER_CLK_USDHC0, true);
-               break;
-       case 1:
-               /*Disable the clock before configure it */
-               pcc_clock_enable(PER_CLK_USDHC1, false);
-
-               /* 158MHz / 1 = 158MHz */
-               pcc_clock_sel(PER_CLK_USDHC1, SCG_NIC1_CLK);
-               pcc_clock_div_config(PER_CLK_USDHC1, false, 1);
-               pcc_clock_enable(PER_CLK_USDHC1, true);
-               break;
-       default:
-               printf("Invalid index for USDHC %d\n", index);
-               break;
-       }
-}
-
-#ifdef CONFIG_MXC_OCOTP
-
-#define OCOTP_CTRL_PCC1_SLOT           (38)
-#define OCOTP_CTRL_HIGH4K_PCC1_SLOT    (39)
-
-void enable_ocotp_clk(unsigned char enable)
-{
-       u32 val;
-
-       /*
-        * Seems the OCOTP CLOCKs have been enabled at default,
-        * check its inuse flag
-        */
-
-       val = readl(PCC1_RBASE + 4 * OCOTP_CTRL_PCC1_SLOT);
-       if (!(val & PCC_INUSE_MASK))
-               writel(PCC_CGC_MASK, (PCC1_RBASE + 4 * OCOTP_CTRL_PCC1_SLOT));
-
-       val = readl(PCC1_RBASE + 4 * OCOTP_CTRL_HIGH4K_PCC1_SLOT);
-       if (!(val & PCC_INUSE_MASK))
-               writel(PCC_CGC_MASK,
-                      (PCC1_RBASE + 4 * OCOTP_CTRL_HIGH4K_PCC1_SLOT));
-}
-#endif
-
-void enable_usboh3_clk(unsigned char enable)
-{
-       if (enable) {
-               pcc_clock_enable(PER_CLK_USB0, false);
-               pcc_clock_sel(PER_CLK_USB0, SCG_NIC1_BUS_CLK);
-               pcc_clock_enable(PER_CLK_USB0, true);
-
-#ifdef CONFIG_USB_MAX_CONTROLLER_COUNT
-               if (CONFIG_USB_MAX_CONTROLLER_COUNT > 1) {
-                       pcc_clock_enable(PER_CLK_USB1, false);
-                       pcc_clock_sel(PER_CLK_USB1, SCG_NIC1_BUS_CLK);
-                       pcc_clock_enable(PER_CLK_USB1, true);
-               }
-#endif
-
-               pcc_clock_enable(PER_CLK_USB_PHY, true);
-               pcc_clock_enable(PER_CLK_USB_PL301, true);
-       } else {
-               pcc_clock_enable(PER_CLK_USB0, false);
-               pcc_clock_enable(PER_CLK_USB1, false);
-               pcc_clock_enable(PER_CLK_USB_PHY, false);
-               pcc_clock_enable(PER_CLK_USB_PL301, false);
-       }
-}
-
-static void lpuart_set_clk(uint32_t index, enum scg_clk clk)
-{
-       const enum pcc_clk lpuart_pcc_clks[] = {
-               PER_CLK_LPUART4,
-               PER_CLK_LPUART5,
-               PER_CLK_LPUART6,
-               PER_CLK_LPUART7,
-       };
-
-       if (index < 4 || index > 7)
-               return;
-
-#ifndef CONFIG_CLK_DEBUG
-       pcc_clock_enable(lpuart_pcc_clks[index - 4], false);
-#endif
-       pcc_clock_sel(lpuart_pcc_clks[index - 4], clk);
-       pcc_clock_enable(lpuart_pcc_clks[index - 4], true);
-}
-
-static void init_clk_lpuart(void)
-{
-       u32 index = 0, i;
-
-       const u32 lpuart_array[] = {
-               LPUART0_RBASE,
-               LPUART1_RBASE,
-               LPUART2_RBASE,
-               LPUART3_RBASE,
-               LPUART4_RBASE,
-               LPUART5_RBASE,
-               LPUART6_RBASE,
-               LPUART7_RBASE,
-       };
-
-       for (i = 0; i < 8; i++) {
-               if (lpuart_array[i] == LPUART_BASE) {
-                       index = i;
-                       break;
-               }
-       }
-
-       lpuart_set_clk(index, SCG_SOSC_DIV2_CLK);
-}
-
-static void init_clk_rgpio2p(void)
-{
-       /*Enable RGPIO2P1 clock */
-       pcc_clock_enable(PER_CLK_RGPIO2P1, true);
-
-       /*
-        * Hard code to enable RGPIO2P0 clock since it is not
-        * in clock frame for A7 domain
-        */
-       writel(PCC_CGC_MASK, (PCC0_RBASE + 0x3C));
-}
-
-/* Configure PLL/PFD freq */
-void clock_init(void)
-{
-       /*
-        * ROM has enabled clocks:
-        * A4 side: SIRC 16Mhz (DIV1-3 off),  FIRC 48Mhz (DIV1-2 on),
-        *          Non-LP-boot:  SOSC, SPLL PFD0 (scs selected)
-        * A7 side:  SPLL PFD0 (scs selected, 413Mhz),
-        *           APLL PFD0 (352Mhz), DDRCLK, all NIC clocks
-        *           A7 Plat0 (NIC0) = 176Mhz, Plat1 (NIC1) = 176Mhz,
-        *           IP BUS (NIC1_BUS) = 58.6Mhz
-        *
-        * In u-boot:
-        * 1. Enable PFD1-3 of APLL for A7 side. Enable FIRC and DIVs.
-        * 2. Enable USB PLL
-        * 3. Init the clocks of peripherals used in u-boot bu
-        *    without set rate interface.The clocks for these
-        *    peripherals are enabled in this intialization.
-        * 4.Other peripherals with set clock rate interface
-        *   does not be set in this function.
-        */
-
-       scg_a7_firc_init();
-
-       scg_a7_soscdiv_init();
-
-       /* APLL PFD1 = 270Mhz, PFD2=480Mhz, PFD3=800Mhz */
-       scg_enable_pll_pfd(SCG_APLL_PFD1_CLK, 35);
-       scg_enable_pll_pfd(SCG_APLL_PFD2_CLK, 20);
-       scg_enable_pll_pfd(SCG_APLL_PFD3_CLK, 12);
-
-       init_clk_lpuart();
-
-       init_clk_rgpio2p();
-
-       enable_usboh3_clk(1);
-}
-
-#ifdef CONFIG_SECURE_BOOT
-void hab_caam_clock_enable(unsigned char enable)
-{
-       if (enable)
-              pcc_clock_enable(PER_CLK_CAAM, true);
-       else
-              pcc_clock_enable(PER_CLK_CAAM, false);
-}
-#endif
-
-/*
- * Dump some core clockes.
- */
-int do_mx7_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       u32 addr = 0;
-       u32 freq;
-       freq = decode_pll(PLL_A7_SPLL);
-       printf("PLL_A7_SPLL    %8d MHz\n", freq / 1000000);
-
-       freq = decode_pll(PLL_A7_APLL);
-       printf("PLL_A7_APLL    %8d MHz\n", freq / 1000000);
-
-       freq = decode_pll(PLL_USB);
-       printf("PLL_USB    %8d MHz\n", freq / 1000000);
-
-       printf("\n");
-
-       printf("CORE       %8d kHz\n", scg_clk_get_rate(SCG_CORE_CLK) / 1000);
-       printf("IPG        %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000);
-       printf("UART       %8d kHz\n", mxc_get_clock(MXC_UART_CLK) / 1000);
-       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("I2C4       %8d kHz\n", mxc_get_clock(MXC_I2C_CLK) / 1000);
-
-       addr = (u32) clock_init;
-       printf("[%s] addr = 0x%08X\r\n", __func__, addr);
-       scg_a7_info();
-
-       return 0;
-}
-
-U_BOOT_CMD(
-       clocks, CONFIG_SYS_MAXARGS, 1, do_mx7_showclocks,
-       "display clocks",
-       ""
-);
diff --git a/arch/arm/cpu/armv7/mx7ulp/iomux.c b/arch/arm/cpu/armv7/mx7ulp/iomux.c
deleted file mode 100644 (file)
index 1eba24e..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-/*
- * Copyright (C) 2016 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/iomux.h>
-
-static void *base = (void *)IOMUXC_BASE_ADDR;
-
-/*
- * iomuxc0 base address. In imx7ulp-pins.h,
- * the offsets of pins in iomuxc0 are from 0xD000,
- * so we set the base address to (0x4103D000 - 0xD000 = 0x41030000)
- */
-static void *base_mports = (void *)(AIPS0_BASE + 0x30000);
-
-/*
- * configures a single pad in the iomuxer
- */
-void mx7ulp_iomux_setup_pad(iomux_cfg_t pad)
-{
-       u32 mux_ctrl_ofs = (pad & MUX_CTRL_OFS_MASK) >> MUX_CTRL_OFS_SHIFT;
-       u32 mux_mode = (pad & MUX_MODE_MASK) >> MUX_MODE_SHIFT;
-       u32 sel_input_ofs =
-               (pad & MUX_SEL_INPUT_OFS_MASK) >> MUX_SEL_INPUT_OFS_SHIFT;
-       u32 sel_input =
-               (pad & MUX_SEL_INPUT_MASK) >> MUX_SEL_INPUT_SHIFT;
-       u32 pad_ctrl_ofs = mux_ctrl_ofs;
-       u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT;
-
-       debug("[PAD CFG] = 0x%16llX \r\n\tmux_ctl = 0x%X(0x%X) sel_input = 0x%X(0x%X) pad_ctrl = 0x%X(0x%X)\r\n",
-             pad, mux_ctrl_ofs, mux_mode, sel_input_ofs, sel_input,
-             pad_ctrl_ofs, pad_ctrl);
-
-       if (mux_mode & IOMUX_CONFIG_MPORTS) {
-               mux_mode &= ~IOMUX_CONFIG_MPORTS;
-               base = base_mports;
-       } else {
-               base = (void *)IOMUXC_BASE_ADDR;
-       }
-
-       __raw_writel(((mux_mode << IOMUXC_PCR_MUX_ALT_SHIFT) &
-                    IOMUXC_PCR_MUX_ALT_MASK), base + mux_ctrl_ofs);
-
-       if (sel_input_ofs)
-               __raw_writel((sel_input << IOMUXC_PSMI_IMUX_ALT_SHIFT),
-                       base + sel_input_ofs);
-
-       if (!(pad_ctrl & NO_PAD_CTRL))
-               __raw_writel(((mux_mode << IOMUXC_PCR_MUX_ALT_SHIFT) &
-                            IOMUXC_PCR_MUX_ALT_MASK) |
-                            (pad_ctrl & (~IOMUXC_PCR_MUX_ALT_MASK)),
-                            base + pad_ctrl_ofs);
-}
-
-/* configures a list of pads within declared with IOMUX_PADS macro */
-void mx7ulp_iomux_setup_multiple_pads(iomux_cfg_t const *pad_list,
-                                     unsigned count)
-{
-       iomux_cfg_t const *p = pad_list;
-       int i;
-
-       for (i = 0; i < count; i++) {
-               mx7ulp_iomux_setup_pad(*p);
-               p++;
-       }
-}
diff --git a/arch/arm/cpu/armv7/mx7ulp/pcc.c b/arch/arm/cpu/armv7/mx7ulp/pcc.c
deleted file mode 100644 (file)
index edd84e5..0000000
+++ /dev/null
@@ -1,286 +0,0 @@
-/*
- * Copyright (C) 2016 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <div64.h>
-#include <asm/io.h>
-#include <errno.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/pcc.h>
-#include <asm/arch/sys_proto.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define PCC_CLKSRC_TYPES 2
-#define PCC_CLKSRC_NUM 7
-
-static enum scg_clk pcc_clksrc[PCC_CLKSRC_TYPES][PCC_CLKSRC_NUM] = {
-       {       SCG_NIC1_BUS_CLK,
-               SCG_NIC1_CLK,
-               SCG_DDR_CLK,
-               SCG_APLL_PFD2_CLK,
-               SCG_APLL_PFD1_CLK,
-               SCG_APLL_PFD0_CLK,
-               USB_PLL_OUT,
-       },
-       {       SCG_SOSC_DIV2_CLK,  /* SOSC BUS clock */
-               MIPI_PLL_OUT,
-               SCG_FIRC_DIV2_CLK,  /* FIRC BUS clock */
-               SCG_ROSC_CLK,
-               SCG_NIC1_BUS_CLK,
-               SCG_NIC1_CLK,
-               SCG_APLL_PFD3_CLK,
-       },
-};
-
-static struct pcc_entry pcc_arrays[] = {
-       {PCC2_RBASE, DMA1_PCC2_SLOT,            CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, RGPIO1_PCC2_SLOT,          CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, FLEXBUS0_PCC2_SLOT,        CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, SEMA42_1_PCC2_SLOT,        CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, DMA1_CH_MUX0_PCC2_SLOT,    CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, SNVS_PCC2_SLOT,            CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, CAAM_PCC2_SLOT,            CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, LPTPM4_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, LPTPM5_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, LPIT1_PCC2_SLOT,           CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, LPSPI2_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, LPSPI3_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, LPI2C4_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, LPI2C5_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, LPUART4_PCC2_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, LPUART5_PCC2_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, FLEXIO1_PCC2_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC2_RBASE, USBOTG0_PCC2_SLOT,         CLKSRC_PER_PLAT, PCC_HAS_DIV},
-       {PCC2_RBASE, USBOTG1_PCC2_SLOT,         CLKSRC_PER_PLAT, PCC_HAS_DIV},
-       {PCC2_RBASE, USBPHY_PCC2_SLOT,          CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, USB_PL301_PCC2_SLOT,       CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC2_RBASE, USDHC0_PCC2_SLOT,          CLKSRC_PER_PLAT, PCC_HAS_DIV},
-       {PCC2_RBASE, USDHC1_PCC2_SLOT,          CLKSRC_PER_PLAT, PCC_HAS_DIV},
-       {PCC2_RBASE, WDG1_PCC2_SLOT,            CLKSRC_PER_BUS, PCC_HAS_DIV},
-       {PCC2_RBASE, WDG2_PCC2_SLOT,            CLKSRC_PER_BUS, PCC_HAS_DIV},
-
-       {PCC3_RBASE, LPTPM6_PCC3_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC3_RBASE, LPTPM7_PCC3_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC3_RBASE, LPI2C6_PCC3_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC3_RBASE, LPI2C7_PCC3_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC3_RBASE, LPUART6_PCC3_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC3_RBASE, LPUART7_PCC3_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
-       {PCC3_RBASE, VIU0_PCC3_SLOT,            CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC3_RBASE, DSI0_PCC3_SLOT,            CLKSRC_PER_BUS, PCC_HAS_DIV},
-       {PCC3_RBASE, LCDIF0_PCC3_SLOT,          CLKSRC_PER_PLAT, PCC_HAS_DIV},
-       {PCC3_RBASE, MMDC0_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC3_RBASE, PORTC_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC3_RBASE, PORTD_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC3_RBASE, PORTE_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC3_RBASE, PORTF_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
-       {PCC3_RBASE, GPU3D_PCC3_SLOT,           CLKSRC_PER_PLAT, PCC_NO_DIV},
-       {PCC3_RBASE, GPU2D_PCC3_SLOT,           CLKSRC_PER_PLAT, PCC_NO_DIV},
-};
-
-int pcc_clock_enable(enum pcc_clk clk, bool enable)
-{
-       u32 reg, val;
-
-       if (clk >= ARRAY_SIZE(pcc_arrays))
-               return -EINVAL;
-
-       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
-
-       val = readl(reg);
-
-       clk_debug("pcc_clock_enable: clk %d, reg 0x%x, val 0x%x, enable %d\n",
-                 clk, reg, val, enable);
-
-       if (!(val & PCC_PR_MASK) || (val & PCC_INUSE_MASK))
-               return -EPERM;
-
-       if (enable)
-               val |= PCC_CGC_MASK;
-       else
-               val &= ~PCC_CGC_MASK;
-
-       writel(val, reg);
-
-       clk_debug("pcc_clock_enable: val 0x%x\n", val);
-
-       return 0;
-}
-
-/* The clock source select needs clock is disabled */
-int pcc_clock_sel(enum pcc_clk clk, enum scg_clk src)
-{
-       u32 reg, val, i, clksrc_type;
-
-       if (clk >= ARRAY_SIZE(pcc_arrays))
-               return -EINVAL;
-
-       clksrc_type = pcc_arrays[clk].clksrc;
-       if (clksrc_type >= CLKSRC_NO_PCS) {
-               printf("No PCS field for the PCC %d, clksrc type %d\n",
-                      clk, clksrc_type);
-               return -EPERM;
-       }
-
-       for (i = 0; i < PCC_CLKSRC_NUM; i++) {
-               if (pcc_clksrc[clksrc_type][i] == src) {
-                       /* Find the clock src, then set it to PCS */
-                       break;
-               }
-       }
-
-       if (i == PCC_CLKSRC_NUM) {
-               printf("Not find the parent scg_clk in PCS of PCC %d, invalid scg_clk %d\n", clk, src);
-               return -EINVAL;
-       }
-
-       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
-
-       val = readl(reg);
-
-       clk_debug("pcc_clock_sel: clk %d, reg 0x%x, val 0x%x, clksrc_type %d\n",
-                 clk, reg, val, clksrc_type);
-
-       if (!(val & PCC_PR_MASK) || (val & PCC_INUSE_MASK) ||
-           (val & PCC_CGC_MASK)) {
-               printf("Not permit to select clock source val = 0x%x\n", val);
-               return -EPERM;
-       }
-
-       val &= ~PCC_PCS_MASK;
-       val |= ((i + 1) << PCC_PCS_OFFSET);
-
-       writel(val, reg);
-
-       clk_debug("pcc_clock_sel: val 0x%x\n", val);
-
-       return 0;
-}
-
-int pcc_clock_div_config(enum pcc_clk clk, bool frac, u8 div)
-{
-       u32 reg, val;
-
-       if (clk >= ARRAY_SIZE(pcc_arrays) || div > 8 ||
-           (div == 1 && frac != 0))
-               return -EINVAL;
-
-       if (pcc_arrays[clk].div >= PCC_NO_DIV) {
-               printf("No DIV/FRAC field for the PCC %d\n", clk);
-               return -EPERM;
-       }
-
-       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
-
-       val = readl(reg);
-
-       if (!(val & PCC_PR_MASK) || (val & PCC_INUSE_MASK) ||
-           (val & PCC_CGC_MASK)) {
-               printf("Not permit to set div/frac val = 0x%x\n", val);
-               return -EPERM;
-       }
-
-       if (frac)
-               val |= PCC_FRAC_MASK;
-       else
-               val &= ~PCC_FRAC_MASK;
-
-       val &= ~PCC_PCD_MASK;
-       val |= (div - 1) & PCC_PCD_MASK;
-
-       writel(val, reg);
-
-       return 0;
-}
-
-bool pcc_clock_is_enable(enum pcc_clk clk)
-{
-       u32 reg, val;
-
-       if (clk >= ARRAY_SIZE(pcc_arrays))
-               return -EINVAL;
-
-       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
-       val = readl(reg);
-
-       if ((val & PCC_INUSE_MASK) || (val & PCC_CGC_MASK))
-               return true;
-
-       return false;
-}
-
-int pcc_clock_get_clksrc(enum pcc_clk clk, enum scg_clk *src)
-{
-       u32 reg, val, clksrc_type;
-
-       if (clk >= ARRAY_SIZE(pcc_arrays))
-               return -EINVAL;
-
-       clksrc_type = pcc_arrays[clk].clksrc;
-       if (clksrc_type >= CLKSRC_NO_PCS) {
-               printf("No PCS field for the PCC %d, clksrc type %d\n",
-                      clk, clksrc_type);
-               return -EPERM;
-       }
-
-       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
-
-       val = readl(reg);
-
-       clk_debug("pcc_clock_get_clksrc: clk %d, reg 0x%x, val 0x%x, type %d\n",
-                 clk, reg, val, clksrc_type);
-
-       if (!(val & PCC_PR_MASK)) {
-               printf("This pcc slot is not present = 0x%x\n", val);
-               return -EPERM;
-       }
-
-       val &= PCC_PCS_MASK;
-       val = (val >> PCC_PCS_OFFSET);
-
-       if (!val) {
-               printf("Clock source is off\n");
-               return -EIO;
-       }
-
-       *src = pcc_clksrc[clksrc_type][val - 1];
-
-       clk_debug("pcc_clock_get_clksrc: parent scg clk %d\n", *src);
-
-       return 0;
-}
-
-u32 pcc_clock_get_rate(enum pcc_clk clk)
-{
-       u32 reg, val, rate, frac, div;
-       enum scg_clk parent;
-       int ret;
-
-       ret = pcc_clock_get_clksrc(clk, &parent);
-       if (ret)
-               return 0;
-
-       rate = scg_clk_get_rate(parent);
-
-       clk_debug("pcc_clock_get_rate: parent rate %u\n", rate);
-
-       if (pcc_arrays[clk].div == PCC_HAS_DIV) {
-               reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
-               val = readl(reg);
-
-               frac = (val & PCC_FRAC_MASK) >> PCC_FRAC_OFFSET;
-               div = (val & PCC_PCD_MASK) >> PCC_PCD_OFFSET;
-
-               /*
-                * Theoretically don't have overflow in the calc,
-                * the rate won't exceed 2G
-                */
-               rate = rate * (frac + 1) / (div + 1);
-       }
-
-       clk_debug("pcc_clock_get_rate: rate %u\n", rate);
-       return rate;
-}
diff --git a/arch/arm/cpu/armv7/mx7ulp/scg.c b/arch/arm/cpu/armv7/mx7ulp/scg.c
deleted file mode 100644 (file)
index c117af0..0000000
+++ /dev/null
@@ -1,1090 +0,0 @@
-/*
- * Copyright (C) 2016 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <div64.h>
-#include <asm/io.h>
-#include <errno.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/pcc.h>
-#include <asm/arch/sys_proto.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-scg_p scg1_regs = (scg_p)SCG1_RBASE;
-
-static u32 scg_src_get_rate(enum scg_clk clksrc)
-{
-       u32 reg;
-
-       switch (clksrc) {
-       case SCG_SOSC_CLK:
-               reg = readl(&scg1_regs->sosccsr);
-               if (!(reg & SCG_SOSC_CSR_SOSCVLD_MASK))
-                       return 0;
-
-               return 24000000;
-       case SCG_FIRC_CLK:
-               reg = readl(&scg1_regs->firccsr);
-               if (!(reg & SCG_FIRC_CSR_FIRCVLD_MASK))
-                       return 0;
-
-               return 48000000;
-       case SCG_SIRC_CLK:
-               reg = readl(&scg1_regs->sirccsr);
-               if (!(reg & SCG_SIRC_CSR_SIRCVLD_MASK))
-                       return 0;
-
-               return 16000000;
-       case SCG_ROSC_CLK:
-               reg = readl(&scg1_regs->rtccsr);
-               if (!(reg & SCG_ROSC_CSR_ROSCVLD_MASK))
-                       return 0;
-
-               return 32768;
-       default:
-               break;
-       }
-
-       return 0;
-}
-
-static u32 scg_sircdiv_get_rate(enum scg_clk clk)
-{
-       u32 reg, val, rate;
-       u32 shift, mask;
-
-       switch (clk) {
-       case SCG_SIRC_DIV1_CLK:
-               mask = SCG_SIRCDIV_DIV1_MASK;
-               shift = SCG_SIRCDIV_DIV1_SHIFT;
-               break;
-       case SCG_SIRC_DIV2_CLK:
-               mask = SCG_SIRCDIV_DIV2_MASK;
-               shift = SCG_SIRCDIV_DIV2_SHIFT;
-               break;
-       case SCG_SIRC_DIV3_CLK:
-               mask = SCG_SIRCDIV_DIV3_MASK;
-               shift = SCG_SIRCDIV_DIV3_SHIFT;
-               break;
-       default:
-               return 0;
-       }
-
-       reg = readl(&scg1_regs->sirccsr);
-       if (!(reg & SCG_SIRC_CSR_SIRCVLD_MASK))
-               return 0;
-
-       reg = readl(&scg1_regs->sircdiv);
-       val = (reg & mask) >> shift;
-
-       if (!val) /*clock disabled*/
-               return 0;
-
-       rate = scg_src_get_rate(SCG_SIRC_CLK);
-       rate = rate / (1 << (val - 1));
-
-       return rate;
-}
-
-static u32 scg_fircdiv_get_rate(enum scg_clk clk)
-{
-       u32 reg, val, rate;
-       u32 shift, mask;
-
-       switch (clk) {
-       case SCG_FIRC_DIV1_CLK:
-               mask = SCG_FIRCDIV_DIV1_MASK;
-               shift = SCG_FIRCDIV_DIV1_SHIFT;
-               break;
-       case SCG_FIRC_DIV2_CLK:
-               mask = SCG_FIRCDIV_DIV2_MASK;
-               shift = SCG_FIRCDIV_DIV2_SHIFT;
-               break;
-       case SCG_FIRC_DIV3_CLK:
-               mask = SCG_FIRCDIV_DIV3_MASK;
-               shift = SCG_FIRCDIV_DIV3_SHIFT;
-               break;
-       default:
-               return 0;
-       }
-
-       reg = readl(&scg1_regs->firccsr);
-       if (!(reg & SCG_FIRC_CSR_FIRCVLD_MASK))
-               return 0;
-
-       reg = readl(&scg1_regs->fircdiv);
-       val = (reg & mask) >> shift;
-
-       if (!val) /*clock disabled*/
-               return 0;
-
-       rate = scg_src_get_rate(SCG_FIRC_CLK);
-       rate = rate / (1 << (val - 1));
-
-       return rate;
-}
-
-static u32 scg_soscdiv_get_rate(enum scg_clk clk)
-{
-       u32 reg, val, rate;
-       u32 shift, mask;
-
-       switch (clk) {
-       case SCG_SOSC_DIV1_CLK:
-               mask = SCG_SOSCDIV_DIV1_MASK;
-               shift = SCG_SOSCDIV_DIV1_SHIFT;
-               break;
-       case SCG_SOSC_DIV2_CLK:
-               mask = SCG_SOSCDIV_DIV2_MASK;
-               shift = SCG_SOSCDIV_DIV2_SHIFT;
-               break;
-       case SCG_SOSC_DIV3_CLK:
-               mask = SCG_SOSCDIV_DIV3_MASK;
-               shift = SCG_SOSCDIV_DIV3_SHIFT;
-               break;
-       default:
-               return 0;
-       }
-
-       reg = readl(&scg1_regs->sosccsr);
-       if (!(reg & SCG_SOSC_CSR_SOSCVLD_MASK))
-               return 0;
-
-       reg = readl(&scg1_regs->soscdiv);
-       val = (reg & mask) >> shift;
-
-       if (!val) /*clock disabled*/
-               return 0;
-
-       rate = scg_src_get_rate(SCG_SOSC_CLK);
-       rate = rate / (1 << (val - 1));
-
-       return rate;
-}
-
-static u32 scg_apll_pfd_get_rate(enum scg_clk clk)
-{
-       u32 reg, val, rate;
-       u32 shift, mask, gate, valid;
-
-       switch (clk) {
-       case SCG_APLL_PFD0_CLK:
-               gate = SCG_PLL_PFD0_GATE_MASK;
-               valid = SCG_PLL_PFD0_VALID_MASK;
-               mask = SCG_PLL_PFD0_FRAC_MASK;
-               shift = SCG_PLL_PFD0_FRAC_SHIFT;
-               break;
-       case SCG_APLL_PFD1_CLK:
-               gate = SCG_PLL_PFD1_GATE_MASK;
-               valid = SCG_PLL_PFD1_VALID_MASK;
-               mask = SCG_PLL_PFD1_FRAC_MASK;
-               shift = SCG_PLL_PFD1_FRAC_SHIFT;
-               break;
-       case SCG_APLL_PFD2_CLK:
-               gate = SCG_PLL_PFD2_GATE_MASK;
-               valid = SCG_PLL_PFD2_VALID_MASK;
-               mask = SCG_PLL_PFD2_FRAC_MASK;
-               shift = SCG_PLL_PFD2_FRAC_SHIFT;
-               break;
-       case SCG_APLL_PFD3_CLK:
-               gate = SCG_PLL_PFD3_GATE_MASK;
-               valid = SCG_PLL_PFD3_VALID_MASK;
-               mask = SCG_PLL_PFD3_FRAC_MASK;
-               shift = SCG_PLL_PFD3_FRAC_SHIFT;
-               break;
-       default:
-               return 0;
-       }
-
-       reg = readl(&scg1_regs->apllpfd);
-       if (reg & gate || !(reg & valid))
-               return 0;
-
-       clk_debug("scg_apll_pfd_get_rate reg 0x%x\n", reg);
-
-       val = (reg & mask) >> shift;
-       rate = decode_pll(PLL_A7_APLL);
-
-       rate = rate / val * 18;
-
-       clk_debug("scg_apll_pfd_get_rate rate %u\n", rate);
-
-       return rate;
-}
-
-static u32 scg_spll_pfd_get_rate(enum scg_clk clk)
-{
-       u32 reg, val, rate;
-       u32 shift, mask, gate, valid;
-
-       switch (clk) {
-       case SCG_SPLL_PFD0_CLK:
-               gate = SCG_PLL_PFD0_GATE_MASK;
-               valid = SCG_PLL_PFD0_VALID_MASK;
-               mask = SCG_PLL_PFD0_FRAC_MASK;
-               shift = SCG_PLL_PFD0_FRAC_SHIFT;
-               break;
-       case SCG_SPLL_PFD1_CLK:
-               gate = SCG_PLL_PFD1_GATE_MASK;
-               valid = SCG_PLL_PFD1_VALID_MASK;
-               mask = SCG_PLL_PFD1_FRAC_MASK;
-               shift = SCG_PLL_PFD1_FRAC_SHIFT;
-               break;
-       case SCG_SPLL_PFD2_CLK:
-               gate = SCG_PLL_PFD2_GATE_MASK;
-               valid = SCG_PLL_PFD2_VALID_MASK;
-               mask = SCG_PLL_PFD2_FRAC_MASK;
-               shift = SCG_PLL_PFD2_FRAC_SHIFT;
-               break;
-       case SCG_SPLL_PFD3_CLK:
-               gate = SCG_PLL_PFD3_GATE_MASK;
-               valid = SCG_PLL_PFD3_VALID_MASK;
-               mask = SCG_PLL_PFD3_FRAC_MASK;
-               shift = SCG_PLL_PFD3_FRAC_SHIFT;
-               break;
-       default:
-               return 0;
-       }
-
-       reg = readl(&scg1_regs->spllpfd);
-       if (reg & gate || !(reg & valid))
-               return 0;
-
-       clk_debug("scg_spll_pfd_get_rate reg 0x%x\n", reg);
-
-       val = (reg & mask) >> shift;
-       rate = decode_pll(PLL_A7_SPLL);
-
-       rate = rate / val * 18;
-
-       clk_debug("scg_spll_pfd_get_rate rate %u\n", rate);
-
-       return rate;
-}
-
-static u32 scg_apll_get_rate(void)
-{
-       u32 reg, val, rate;
-
-       reg = readl(&scg1_regs->apllcfg);
-       val = (reg & SCG_PLL_CFG_PLLSEL_MASK) >> SCG_PLL_CFG_PLLSEL_SHIFT;
-
-       if (!val) {
-               /* APLL clock after two dividers */
-               rate = decode_pll(PLL_A7_APLL);
-
-               val = (reg & SCG_PLL_CFG_POSTDIV1_MASK) >>
-                       SCG_PLL_CFG_POSTDIV1_SHIFT;
-               rate = rate / (val + 1);
-
-               val = (reg & SCG_PLL_CFG_POSTDIV2_MASK) >>
-                       SCG_PLL_CFG_POSTDIV2_SHIFT;
-               rate = rate / (val + 1);
-       } else {
-               /* APLL PFD clock */
-               val = (reg & SCG_PLL_CFG_PFDSEL_MASK) >>
-                       SCG_PLL_CFG_PFDSEL_SHIFT;
-               rate = scg_apll_pfd_get_rate(SCG_APLL_PFD0_CLK + val);
-       }
-
-       return rate;
-}
-
-static u32 scg_spll_get_rate(void)
-{
-       u32 reg, val, rate;
-
-       reg = readl(&scg1_regs->spllcfg);
-       val = (reg & SCG_PLL_CFG_PLLSEL_MASK) >> SCG_PLL_CFG_PLLSEL_SHIFT;
-
-       clk_debug("scg_spll_get_rate reg 0x%x\n", reg);
-
-       if (!val) {
-               /* APLL clock after two dividers */
-               rate = decode_pll(PLL_A7_SPLL);
-
-               val = (reg & SCG_PLL_CFG_POSTDIV1_MASK) >>
-                       SCG_PLL_CFG_POSTDIV1_SHIFT;
-               rate = rate / (val + 1);
-
-               val = (reg & SCG_PLL_CFG_POSTDIV2_MASK) >>
-                       SCG_PLL_CFG_POSTDIV2_SHIFT;
-               rate = rate / (val + 1);
-
-               clk_debug("scg_spll_get_rate SPLL %u\n", rate);
-
-       } else {
-               /* APLL PFD clock */
-               val = (reg & SCG_PLL_CFG_PFDSEL_MASK) >>
-                       SCG_PLL_CFG_PFDSEL_SHIFT;
-               rate = scg_spll_pfd_get_rate(SCG_SPLL_PFD0_CLK + val);
-
-               clk_debug("scg_spll_get_rate PFD %u\n", rate);
-       }
-
-       return rate;
-}
-
-static u32 scg_ddr_get_rate(void)
-{
-       u32 reg, val, rate, div;
-
-       reg = readl(&scg1_regs->ddrccr);
-       val = (reg & SCG_DDRCCR_DDRCS_MASK) >> SCG_DDRCCR_DDRCS_SHIFT;
-       div = (reg & SCG_DDRCCR_DDRDIV_MASK) >> SCG_DDRCCR_DDRDIV_SHIFT;
-
-       if (!div)
-               return 0;
-
-       if (!val) {
-               reg = readl(&scg1_regs->apllcfg);
-               val = (reg & SCG_PLL_CFG_PFDSEL_MASK) >>
-                       SCG_PLL_CFG_PFDSEL_SHIFT;
-               rate = scg_apll_pfd_get_rate(SCG_APLL_PFD0_CLK + val);
-       } else {
-               rate = decode_pll(PLL_USB);
-       }
-
-       rate = rate / (1 << (div - 1));
-       return rate;
-}
-
-static u32 scg_nic_get_rate(enum scg_clk clk)
-{
-       u32 reg, val, rate;
-       u32 shift, mask;
-
-       reg = readl(&scg1_regs->niccsr);
-       val = (reg & SCG_NICCSR_NICCS_MASK) >> SCG_NICCSR_NICCS_SHIFT;
-
-       clk_debug("scg_nic_get_rate niccsr 0x%x\n", reg);
-
-       if (!val)
-               rate = scg_src_get_rate(SCG_FIRC_CLK);
-       else
-               rate = scg_ddr_get_rate();
-
-       clk_debug("scg_nic_get_rate parent rate %u\n", rate);
-
-       val = (reg & SCG_NICCSR_NIC0DIV_MASK) >> SCG_NICCSR_NIC0DIV_SHIFT;
-
-       rate = rate / (val + 1);
-
-       clk_debug("scg_nic_get_rate NIC0 rate %u\n", rate);
-
-       switch (clk) {
-       case SCG_NIC0_CLK:
-               return rate;
-       case SCG_GPU_CLK:
-               mask = SCG_NICCSR_GPUDIV_MASK;
-               shift = SCG_NICCSR_GPUDIV_SHIFT;
-               break;
-       case SCG_NIC1_EXT_CLK:
-       case SCG_NIC1_BUS_CLK:
-       case SCG_NIC1_CLK:
-               mask = SCG_NICCSR_NIC1DIV_MASK;
-               shift = SCG_NICCSR_NIC1DIV_SHIFT;
-               break;
-       default:
-               return 0;
-       }
-
-       val = (reg & mask) >> shift;
-       rate = rate / (val + 1);
-
-       clk_debug("scg_nic_get_rate NIC1 rate %u\n", rate);
-
-       switch (clk) {
-       case SCG_GPU_CLK:
-       case SCG_NIC1_CLK:
-               return rate;
-       case SCG_NIC1_EXT_CLK:
-               mask = SCG_NICCSR_NIC1EXTDIV_MASK;
-               shift = SCG_NICCSR_NIC1EXTDIV_SHIFT;
-               break;
-       case SCG_NIC1_BUS_CLK:
-               mask = SCG_NICCSR_NIC1BUSDIV_MASK;
-               shift = SCG_NICCSR_NIC1BUSDIV_SHIFT;
-               break;
-       default:
-               return 0;
-       }
-
-       val = (reg & mask) >> shift;
-       rate = rate / (val + 1);
-
-       clk_debug("scg_nic_get_rate NIC1 bus rate %u\n", rate);
-       return rate;
-}
-
-
-static enum scg_clk scg_scs_array[4] = {
-       SCG_SOSC_CLK, SCG_SIRC_CLK, SCG_FIRC_CLK, SCG_ROSC_CLK,
-};
-
-static u32 scg_sys_get_rate(enum scg_clk clk)
-{
-       u32 reg, val, rate;
-
-       if (clk != SCG_CORE_CLK && clk != SCG_BUS_CLK)
-               return 0;
-
-       reg = readl(&scg1_regs->csr);
-       val = (reg & SCG_CCR_SCS_MASK) >> SCG_CCR_SCS_SHIFT;
-
-       clk_debug("scg_sys_get_rate reg 0x%x\n", reg);
-
-       switch (val) {
-       case SCG_SCS_SYS_OSC:
-       case SCG_SCS_SLOW_IRC:
-       case SCG_SCS_FAST_IRC:
-       case SCG_SCS_RTC_OSC:
-               rate = scg_src_get_rate(scg_scs_array[val]);
-               break;
-       case 5:
-               rate = scg_apll_get_rate();
-               break;
-       case 6:
-               rate = scg_spll_get_rate();
-               break;
-       default:
-               return 0;
-       }
-
-       clk_debug("scg_sys_get_rate parent rate %u\n", rate);
-
-       val = (reg & SCG_CCR_DIVCORE_MASK) >> SCG_CCR_DIVCORE_SHIFT;
-
-       rate = rate / (val + 1);
-
-       if (clk == SCG_BUS_CLK) {
-               val = (reg & SCG_CCR_DIVBUS_MASK) >> SCG_CCR_DIVBUS_SHIFT;
-               rate = rate / (val + 1);
-       }
-
-       return rate;
-}
-
-u32 decode_pll(enum pll_clocks pll)
-{
-       u32 reg,  pre_div, infreq, mult;
-       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_A7_SPLL:
-               reg = readl(&scg1_regs->spllcsr);
-
-               if (!(reg & SCG_SPLL_CSR_SPLLVLD_MASK))
-                       return 0;
-
-               reg = readl(&scg1_regs->spllcfg);
-
-               pre_div = (reg & SCG_PLL_CFG_PREDIV_MASK) >>
-                          SCG_PLL_CFG_PREDIV_SHIFT;
-               pre_div += 1;
-
-               mult = (reg & SCG1_SPLL_CFG_MULT_MASK) >>
-                          SCG_PLL_CFG_MULT_SHIFT;
-
-               infreq = (reg & SCG_PLL_CFG_CLKSRC_MASK) >>
-                          SCG_PLL_CFG_CLKSRC_SHIFT;
-               if (!infreq)
-                       infreq = scg_src_get_rate(SCG_SOSC_CLK);
-               else
-                       infreq = scg_src_get_rate(SCG_FIRC_CLK);
-
-               num = readl(&scg1_regs->spllnum);
-               denom = readl(&scg1_regs->splldenom);
-
-               infreq = infreq / pre_div;
-
-               return infreq * mult + infreq * num / denom;
-
-       case PLL_A7_APLL:
-               reg = readl(&scg1_regs->apllcsr);
-
-               if (!(reg & SCG_APLL_CSR_APLLVLD_MASK))
-                       return 0;
-
-               reg = readl(&scg1_regs->apllcfg);
-
-               pre_div = (reg & SCG_PLL_CFG_PREDIV_MASK) >>
-                          SCG_PLL_CFG_PREDIV_SHIFT;
-               pre_div += 1;
-
-               mult = (reg & SCG_APLL_CFG_MULT_MASK) >>
-                          SCG_PLL_CFG_MULT_SHIFT;
-
-               infreq = (reg & SCG_PLL_CFG_CLKSRC_MASK) >>
-                          SCG_PLL_CFG_CLKSRC_SHIFT;
-               if (!infreq)
-                       infreq = scg_src_get_rate(SCG_SOSC_CLK);
-               else
-                       infreq = scg_src_get_rate(SCG_FIRC_CLK);
-
-               num = readl(&scg1_regs->apllnum);
-               denom = readl(&scg1_regs->aplldenom);
-
-               infreq = infreq / pre_div;
-
-               return infreq * mult + infreq * num / denom;
-
-       case PLL_USB:
-               reg = readl(&scg1_regs->upllcsr);
-
-               if (!(reg & SCG_UPLL_CSR_UPLLVLD_MASK))
-                       return 0;
-
-               return 480000000u;
-
-       case PLL_MIPI:
-               return 480000000u;
-       default:
-               printf("Unsupported pll clocks %d\n", pll);
-               break;
-       }
-
-       return 0;
-}
-
-u32 scg_clk_get_rate(enum scg_clk clk)
-{
-       switch (clk) {
-       case SCG_SIRC_DIV1_CLK:
-       case SCG_SIRC_DIV2_CLK:
-       case SCG_SIRC_DIV3_CLK:
-               return scg_sircdiv_get_rate(clk);
-
-       case SCG_FIRC_DIV1_CLK:
-       case SCG_FIRC_DIV2_CLK:
-       case SCG_FIRC_DIV3_CLK:
-               return scg_fircdiv_get_rate(clk);
-
-       case SCG_SOSC_DIV1_CLK:
-       case SCG_SOSC_DIV2_CLK:
-       case SCG_SOSC_DIV3_CLK:
-               return scg_soscdiv_get_rate(clk);
-
-       case SCG_CORE_CLK:
-       case SCG_BUS_CLK:
-               return scg_sys_get_rate(clk);
-
-       case SCG_SPLL_PFD0_CLK:
-       case SCG_SPLL_PFD1_CLK:
-       case SCG_SPLL_PFD2_CLK:
-       case SCG_SPLL_PFD3_CLK:
-               return scg_spll_pfd_get_rate(clk);
-
-       case SCG_APLL_PFD0_CLK:
-       case SCG_APLL_PFD1_CLK:
-       case SCG_APLL_PFD2_CLK:
-       case SCG_APLL_PFD3_CLK:
-               return scg_apll_pfd_get_rate(clk);
-
-       case SCG_DDR_CLK:
-               return scg_ddr_get_rate();
-
-       case SCG_NIC0_CLK:
-       case SCG_GPU_CLK:
-       case SCG_NIC1_CLK:
-       case SCG_NIC1_BUS_CLK:
-       case SCG_NIC1_EXT_CLK:
-               return scg_nic_get_rate(clk);
-
-       case USB_PLL_OUT:
-               return decode_pll(PLL_USB);
-
-       case MIPI_PLL_OUT:
-               return decode_pll(PLL_MIPI);
-
-       case SCG_SOSC_CLK:
-       case SCG_FIRC_CLK:
-       case SCG_SIRC_CLK:
-       case SCG_ROSC_CLK:
-               return scg_src_get_rate(clk);
-       default:
-               return 0;
-       }
-}
-
-int scg_enable_pll_pfd(enum scg_clk clk, u32 frac)
-{
-       u32 reg;
-       u32 shift, mask, gate, valid;
-       u32 addr;
-
-       if (frac < 12 || frac > 35)
-               return -EINVAL;
-
-       switch (clk) {
-       case SCG_SPLL_PFD0_CLK:
-       case SCG_APLL_PFD0_CLK:
-               gate = SCG_PLL_PFD0_GATE_MASK;
-               valid = SCG_PLL_PFD0_VALID_MASK;
-               mask = SCG_PLL_PFD0_FRAC_MASK;
-               shift = SCG_PLL_PFD0_FRAC_SHIFT;
-
-               if (clk == SCG_SPLL_PFD0_CLK)
-                       addr = (u32)(&scg1_regs->spllpfd);
-               else
-                       addr = (u32)(&scg1_regs->apllpfd);
-               break;
-       case SCG_SPLL_PFD1_CLK:
-       case SCG_APLL_PFD1_CLK:
-               gate = SCG_PLL_PFD1_GATE_MASK;
-               valid = SCG_PLL_PFD1_VALID_MASK;
-               mask = SCG_PLL_PFD1_FRAC_MASK;
-               shift = SCG_PLL_PFD1_FRAC_SHIFT;
-
-               if (clk == SCG_SPLL_PFD1_CLK)
-                       addr = (u32)(&scg1_regs->spllpfd);
-               else
-                       addr = (u32)(&scg1_regs->apllpfd);
-               break;
-       case SCG_SPLL_PFD2_CLK:
-       case SCG_APLL_PFD2_CLK:
-               gate = SCG_PLL_PFD2_GATE_MASK;
-               valid = SCG_PLL_PFD2_VALID_MASK;
-               mask = SCG_PLL_PFD2_FRAC_MASK;
-               shift = SCG_PLL_PFD2_FRAC_SHIFT;
-
-               if (clk == SCG_SPLL_PFD2_CLK)
-                       addr = (u32)(&scg1_regs->spllpfd);
-               else
-                       addr = (u32)(&scg1_regs->apllpfd);
-               break;
-       case SCG_SPLL_PFD3_CLK:
-       case SCG_APLL_PFD3_CLK:
-               gate = SCG_PLL_PFD3_GATE_MASK;
-               valid = SCG_PLL_PFD3_VALID_MASK;
-               mask = SCG_PLL_PFD3_FRAC_MASK;
-               shift = SCG_PLL_PFD3_FRAC_SHIFT;
-
-               if (clk == SCG_SPLL_PFD3_CLK)
-                       addr = (u32)(&scg1_regs->spllpfd);
-               else
-                       addr = (u32)(&scg1_regs->apllpfd);
-               break;
-       default:
-               return -EINVAL;
-       }
-
-       /* Gate the PFD */
-       reg = readl(addr);
-       reg |= gate;
-       writel(reg, addr);
-
-       /* Write Frac divider */
-       reg &= ~mask;
-       reg |= (frac << shift) & mask;
-       writel(reg, addr);
-
-       /*
-        * Un-gate the PFD
-        * (Need un-gate before checking valid, not align with RM)
-        */
-       reg &= ~gate;
-       writel(reg, addr);
-
-       /* Wait for PFD clock being valid */
-       do {
-               reg = readl(addr);
-       } while (!(reg & valid));
-
-       return 0;
-}
-
-#define SIM_MISC_CTRL0_USB_PLL_EN_MASK (0x1 << 2)
-int scg_enable_usb_pll(bool usb_control)
-{
-       u32 sosc_rate;
-       s32 timeout = 1000000;
-       u32 reg;
-
-       struct usbphy_regs *usbphy =
-               (struct usbphy_regs *)USBPHY_RBASE;
-
-       sosc_rate = scg_src_get_rate(SCG_SOSC_CLK);
-       if (!sosc_rate)
-               return -EPERM;
-
-       reg = readl(SIM0_RBASE + 0x3C);
-       if (usb_control)
-               reg &= ~SIM_MISC_CTRL0_USB_PLL_EN_MASK;
-       else
-               reg |= SIM_MISC_CTRL0_USB_PLL_EN_MASK;
-       writel(reg, SIM0_RBASE + 0x3C);
-
-       if (!(readl(&usbphy->usb1_pll_480_ctrl) & PLL_USB_LOCK_MASK)) {
-               writel(0x1c00000, &usbphy->usb1_pll_480_ctrl_clr);
-
-               switch (sosc_rate) {
-               case 24000000:
-                       writel(0xc00000, &usbphy->usb1_pll_480_ctrl_set);
-                       break;
-
-               case 30000000:
-                       writel(0x800000, &usbphy->usb1_pll_480_ctrl_set);
-                       break;
-
-               case 19200000:
-                       writel(0x1400000, &usbphy->usb1_pll_480_ctrl_set);
-                       break;
-
-               default:
-                       writel(0xc00000, &usbphy->usb1_pll_480_ctrl_set);
-                       break;
-               }
-
-               /* Enable the regulator first */
-               writel(PLL_USB_REG_ENABLE_MASK,
-                      &usbphy->usb1_pll_480_ctrl_set);
-
-               /* Wait at least 15us */
-               udelay(15);
-
-               /* Enable the power */
-               writel(PLL_USB_PWR_MASK, &usbphy->usb1_pll_480_ctrl_set);
-
-               /* Wait lock */
-               while (timeout--) {
-                       if (readl(&usbphy->usb1_pll_480_ctrl) &
-                           PLL_USB_LOCK_MASK)
-                               break;
-               }
-
-               if (timeout <= 0) {
-                       /* If timeout, we power down the pll */
-                       writel(PLL_USB_PWR_MASK,
-                              &usbphy->usb1_pll_480_ctrl_clr);
-                       return -ETIME;
-               }
-       }
-
-       /* Clear the bypass */
-       writel(PLL_USB_BYPASS_MASK, &usbphy->usb1_pll_480_ctrl_clr);
-
-       /* Enable the PLL clock out to USB */
-       writel((PLL_USB_EN_USB_CLKS_MASK | PLL_USB_ENABLE_MASK),
-              &usbphy->usb1_pll_480_ctrl_set);
-
-       if (!usb_control) {
-               while (timeout--) {
-                       if (readl(&scg1_regs->upllcsr) &
-                           SCG_UPLL_CSR_UPLLVLD_MASK)
-                               break;
-               }
-
-               if (timeout <= 0) {
-                       reg = readl(SIM0_RBASE + 0x3C);
-                       reg &= ~SIM_MISC_CTRL0_USB_PLL_EN_MASK;
-                       writel(reg, SIM0_RBASE + 0x3C);
-                       return -ETIME;
-               }
-       }
-
-       return 0;
-}
-
-
-/* A7 domain system clock source is SPLL */
-#define SCG1_RCCR_SCS_NUM      ((SCG_SCS_SYS_PLL) << SCG_CCR_SCS_SHIFT)
-
-/* A7 Core clck = SPLL PFD0 / 1 = 500MHz / 1 = 500MHz */
-#define SCG1_RCCR_DIVCORE_NUM  ((0x0)  << SCG_CCR_DIVCORE_SHIFT)
-#define SCG1_RCCR_CFG_MASK     (SCG_CCR_SCS_MASK | SCG_CCR_DIVBUS_MASK)
-
-/* A7 Plat clck = A7 Core Clock / 2 = 250MHz / 1 = 250MHz */
-#define SCG1_RCCR_DIVBUS_NUM   ((0x1)  << SCG_CCR_DIVBUS_SHIFT)
-#define SCG1_RCCR_CFG_NUM      (SCG1_RCCR_SCS_NUM | SCG1_RCCR_DIVBUS_NUM)
-
-void scg_a7_rccr_init(void)
-{
-       u32 rccr_reg_val = 0;
-
-       rccr_reg_val = readl(&scg1_regs->rccr);
-
-       rccr_reg_val &= (~SCG1_RCCR_CFG_MASK);
-       rccr_reg_val |= (SCG1_RCCR_CFG_NUM);
-
-       writel(rccr_reg_val, &scg1_regs->rccr);
-}
-
-/* POSTDIV2 = 1 */
-#define SCG1_SPLL_CFG_POSTDIV2_NUM     ((0x0)  << SCG_PLL_CFG_POSTDIV2_SHIFT)
-/* POSTDIV1 = 1 */
-#define SCG1_SPLL_CFG_POSTDIV1_NUM     ((0x0)  << SCG_PLL_CFG_POSTDIV1_SHIFT)
-
-/* MULT = 22 */
-#define SCG1_SPLL_CFG_MULT_NUM         ((22)   << SCG_PLL_CFG_MULT_SHIFT)
-
-/* PFD0 output clock selected */
-#define SCG1_SPLL_CFG_PFDSEL_NUM       ((0) << SCG_PLL_CFG_PFDSEL_SHIFT)
-/* PREDIV = 1 */
-#define SCG1_SPLL_CFG_PREDIV_NUM       ((0x0)  << SCG_PLL_CFG_PREDIV_SHIFT)
-/* SPLL output clocks (including PFD outputs) selected */
-#define SCG1_SPLL_CFG_BYPASS_NUM       ((0x0)  << SCG_PLL_CFG_BYPASS_SHIFT)
-/* SPLL PFD output clock selected */
-#define SCG1_SPLL_CFG_PLLSEL_NUM       ((0x1)  << SCG_PLL_CFG_PLLSEL_SHIFT)
-/* Clock source is System OSC */
-#define SCG1_SPLL_CFG_CLKSRC_NUM       ((0x0)  << SCG_PLL_CFG_CLKSRC_SHIFT)
-#define SCG1_SPLL_CFG_NUM_24M_OSC      (SCG1_SPLL_CFG_POSTDIV2_NUM     | \
-                                        SCG1_SPLL_CFG_POSTDIV1_NUM     | \
-                                        (22 << SCG_PLL_CFG_MULT_SHIFT) | \
-                                        SCG1_SPLL_CFG_PFDSEL_NUM       | \
-                                        SCG1_SPLL_CFG_PREDIV_NUM       | \
-                                        SCG1_SPLL_CFG_BYPASS_NUM       | \
-                                        SCG1_SPLL_CFG_PLLSEL_NUM       | \
-                                        SCG1_SPLL_CFG_CLKSRC_NUM)
-/*413Mhz = A7 SPLL(528MHz) * 18/23 */
-#define SCG1_SPLL_PFD0_FRAC_NUM                ((23) << SCG_PLL_PFD0_FRAC_SHIFT)
-
-void scg_a7_spll_init(void)
-{
-       u32 val = 0;
-
-       /* Disable A7 System PLL */
-       val = readl(&scg1_regs->spllcsr);
-       val &= ~SCG_SPLL_CSR_SPLLEN_MASK;
-       writel(val, &scg1_regs->spllcsr);
-
-       /*
-        * Per block guide,
-        * "When changing PFD values, it is recommneded PFDx clock
-        * gets gated first by writing a value of 1 to PFDx_CLKGATE register,
-        * then program the new PFD value, then poll the PFDx_VALID
-        * flag to set before writing a value of 0 to PFDx_CLKGATE
-        * to ungate the PFDx clock and allow PFDx clock to run"
-        */
-
-       /* Gate off A7 SPLL PFD0 ~ PDF4  */
-       val = readl(&scg1_regs->spllpfd);
-       val |= (SCG_PLL_PFD3_GATE_MASK |
-                       SCG_PLL_PFD2_GATE_MASK |
-                       SCG_PLL_PFD1_GATE_MASK |
-                       SCG_PLL_PFD0_GATE_MASK);
-       writel(val, &scg1_regs->spllpfd);
-
-       /* ================ A7 SPLL Configuration Start ============== */
-
-       /* Configure A7 System PLL */
-       writel(SCG1_SPLL_CFG_NUM_24M_OSC, &scg1_regs->spllcfg);
-
-       /* Enable A7 System PLL */
-       val = readl(&scg1_regs->spllcsr);
-       val |= SCG_SPLL_CSR_SPLLEN_MASK;
-       writel(val, &scg1_regs->spllcsr);
-
-       /* Wait for A7 SPLL clock ready */
-       while (!(readl(&scg1_regs->spllcsr) & SCG_SPLL_CSR_SPLLVLD_MASK))
-               ;
-
-       /* Configure A7 SPLL PFD0 */
-       val = readl(&scg1_regs->spllpfd);
-       val &= ~SCG_PLL_PFD0_FRAC_MASK;
-       val |= SCG1_SPLL_PFD0_FRAC_NUM;
-       writel(val, &scg1_regs->spllpfd);
-
-       /* Un-gate A7 SPLL PFD0 */
-       val = readl(&scg1_regs->spllpfd);
-       val &= ~SCG_PLL_PFD0_GATE_MASK;
-       writel(val, &scg1_regs->spllpfd);
-
-       /* Wait for A7 SPLL PFD0 clock being valid */
-       while (!(readl(&scg1_regs->spllpfd) & SCG_PLL_PFD0_VALID_MASK))
-               ;
-
-       /* ================ A7 SPLL Configuration End ============== */
-}
-
-/* DDR clock source is APLL PFD0 (396MHz) */
-#define SCG1_DDRCCR_DDRCS_NUM          ((0x0) << SCG_DDRCCR_DDRCS_SHIFT)
-/* DDR clock = APLL PFD0 / 1 = 396MHz / 1 = 396MHz */
-#define SCG1_DDRCCR_DDRDIV_NUM         ((0x1) << SCG_DDRCCR_DDRDIV_SHIFT)
-/* DDR clock = APLL PFD0 / 2 = 396MHz / 2 = 198MHz */
-#define SCG1_DDRCCR_DDRDIV_LF_NUM      ((0x2) << SCG_DDRCCR_DDRDIV_SHIFT)
-#define SCG1_DDRCCR_CFG_NUM            (SCG1_DDRCCR_DDRCS_NUM  | \
-                                        SCG1_DDRCCR_DDRDIV_NUM)
-#define SCG1_DDRCCR_CFG_LF_NUM         (SCG1_DDRCCR_DDRCS_NUM  | \
-                                        SCG1_DDRCCR_DDRDIV_LF_NUM)
-void scg_a7_ddrclk_init(void)
-{
-       writel(SCG1_DDRCCR_CFG_NUM, &scg1_regs->ddrccr);
-}
-
-/* SCG1(A7) APLLCFG configurations */
-/* divide by 1 <<28 */
-#define SCG1_APLL_CFG_POSTDIV2_NUM      ((0x0) << SCG_PLL_CFG_POSTDIV2_SHIFT)
-/* divide by 1 <<24 */
-#define SCG1_APLL_CFG_POSTDIV1_NUM      ((0x0) << SCG_PLL_CFG_POSTDIV1_SHIFT)
-/* MULT is 22  <<16 */
-#define SCG1_APLL_CFG_MULT_NUM          ((22)  << SCG_PLL_CFG_MULT_SHIFT)
-/* PFD0 output clock selected  <<14 */
-#define SCG1_APLL_CFG_PFDSEL_NUM        ((0) << SCG_PLL_CFG_PFDSEL_SHIFT)
-/* PREDIV = 1  <<8 */
-#define SCG1_APLL_CFG_PREDIV_NUM        ((0x0) << SCG_PLL_CFG_PREDIV_SHIFT)
-/* APLL output clocks (including PFD outputs) selected <<2 */
-#define SCG1_APLL_CFG_BYPASS_NUM        ((0x0) << SCG_PLL_CFG_BYPASS_SHIFT)
-/* APLL PFD output clock selected <<1 */
-#define SCG1_APLL_CFG_PLLSEL_NUM        ((0x0) << SCG_PLL_CFG_PLLSEL_SHIFT)
-/* Clock source is System OSC <<0 */
-#define SCG1_APLL_CFG_CLKSRC_NUM        ((0x0) << SCG_PLL_CFG_CLKSRC_SHIFT)
-
-/*
- * A7 APLL = 24MHz / 1 * 22 / 1 / 1 = 528MHz,
- * system PLL is sourced from APLL,
- * APLL clock source is system OSC (24MHz)
- */
-#define SCG1_APLL_CFG_NUM_24M_OSC (SCG1_APLL_CFG_POSTDIV2_NUM     |   \
-                                  SCG1_APLL_CFG_POSTDIV1_NUM     |   \
-                                  (22 << SCG_PLL_CFG_MULT_SHIFT) |   \
-                                  SCG1_APLL_CFG_PFDSEL_NUM       |   \
-                                  SCG1_APLL_CFG_PREDIV_NUM       |   \
-                                  SCG1_APLL_CFG_BYPASS_NUM       |   \
-                                  SCG1_APLL_CFG_PLLSEL_NUM       |   \
-                                  SCG1_APLL_CFG_CLKSRC_NUM)
-
-/* PFD0 Freq = A7 APLL(528MHz) * 18 / 27 = 352MHz */
-#define SCG1_APLL_PFD0_FRAC_NUM (27)
-
-
-void scg_a7_apll_init(void)
-{
-       u32 val = 0;
-
-       /* Disable A7 Auxiliary PLL */
-       val = readl(&scg1_regs->apllcsr);
-       val &= ~SCG_APLL_CSR_APLLEN_MASK;
-       writel(val, &scg1_regs->apllcsr);
-
-       /* Gate off A7 APLL PFD0 ~ PDF4  */
-       val = readl(&scg1_regs->apllpfd);
-       val |= 0x80808080;
-       writel(val, &scg1_regs->apllpfd);
-
-       /* ================ A7 APLL Configuration Start ============== */
-       /* Configure A7 Auxiliary PLL */
-       writel(SCG1_APLL_CFG_NUM_24M_OSC, &scg1_regs->apllcfg);
-
-       /* Enable A7 Auxiliary PLL */
-       val = readl(&scg1_regs->apllcsr);
-       val |= SCG_APLL_CSR_APLLEN_MASK;
-       writel(val, &scg1_regs->apllcsr);
-
-       /* Wait for A7 APLL clock ready */
-       while (!(readl(&scg1_regs->apllcsr) & SCG_APLL_CSR_APLLVLD_MASK))
-               ;
-
-       /* Configure A7 APLL PFD0 */
-       val = readl(&scg1_regs->apllpfd);
-       val &= ~SCG_PLL_PFD0_FRAC_MASK;
-       val |= SCG1_APLL_PFD0_FRAC_NUM;
-       writel(val, &scg1_regs->apllpfd);
-
-       /* Un-gate A7 APLL PFD0 */
-       val = readl(&scg1_regs->apllpfd);
-       val &= ~SCG_PLL_PFD0_GATE_MASK;
-       writel(val, &scg1_regs->apllpfd);
-
-       /* Wait for A7 APLL PFD0 clock being valid */
-       while (!(readl(&scg1_regs->apllpfd) & SCG_PLL_PFD0_VALID_MASK))
-               ;
-}
-
-/* SCG1(A7) FIRC DIV configurations */
-/* Disable FIRC DIV3 */
-#define SCG1_FIRCDIV_DIV3_NUM           ((0x0) << SCG_FIRCDIV_DIV3_SHIFT)
-/* FIRC DIV2 = 48MHz / 1 = 48MHz */
-#define SCG1_FIRCDIV_DIV2_NUM           ((0x1) << SCG_FIRCDIV_DIV2_SHIFT)
-/* Disable FIRC DIV1 */
-#define SCG1_FIRCDIV_DIV1_NUM           ((0x0) << SCG_FIRCDIV_DIV1_SHIFT)
-
-void scg_a7_firc_init(void)
-{
-       /* Wait for FIRC clock ready */
-       while (!(readl(&scg1_regs->firccsr) & SCG_FIRC_CSR_FIRCVLD_MASK))
-               ;
-
-       /* Configure A7 FIRC DIV1 ~ DIV3 */
-       writel((SCG1_FIRCDIV_DIV3_NUM |
-                       SCG1_FIRCDIV_DIV2_NUM |
-                       SCG1_FIRCDIV_DIV1_NUM), &scg1_regs->fircdiv);
-}
-
-/* SCG1(A7) NICCCR configurations */
-/* NIC clock source is DDR clock (396/198MHz) */
-#define SCG1_NICCCR_NICCS_NUM          ((0x1) << SCG_NICCCR_NICCS_SHIFT)
-
-/* NIC0 clock = DDR Clock / 2 = 396MHz / 2 = 198MHz */
-#define SCG1_NICCCR_NIC0_DIV_NUM       ((0x1) << SCG_NICCCR_NIC0_DIV_SHIFT)
-/* NIC0 clock = DDR Clock / 1 = 198MHz / 1 = 198MHz */
-#define SCG1_NICCCR_NIC0_DIV_LF_NUM    ((0x0) << SCG_NICCCR_NIC0_DIV_SHIFT)
-/* NIC1 clock = NIC0 Clock / 1 = 198MHz / 2 = 198MHz */
-#define SCG1_NICCCR_NIC1_DIV_NUM       ((0x0) << SCG_NICCCR_NIC1_DIV_SHIFT)
-/* NIC1 bus clock = NIC1 Clock / 3 = 198MHz / 3 = 66MHz */
-#define SCG1_NICCCR_NIC1_DIVBUS_NUM    ((0x2) << SCG_NICCCR_NIC1_DIVBUS_SHIFT)
-#define SCG1_NICCCR_CFG_NUM            (SCG1_NICCCR_NICCS_NUM      | \
-                                        SCG1_NICCCR_NIC0_DIV_NUM   | \
-                                        SCG1_NICCCR_NIC1_DIV_NUM   | \
-                                        SCG1_NICCCR_NIC1_DIVBUS_NUM)
-
-void scg_a7_nicclk_init(void)
-{
-       writel(SCG1_NICCCR_CFG_NUM, &scg1_regs->nicccr);
-}
-
-/* SCG1(A7) FIRC DIV configurations */
-/* Enable FIRC DIV3 */
-#define SCG1_SOSCDIV_DIV3_NUM          ((0x1) << SCG_SOSCDIV_DIV3_SHIFT)
-/* FIRC DIV2 = 48MHz / 1 = 48MHz */
-#define SCG1_SOSCDIV_DIV2_NUM          ((0x1) << SCG_SOSCDIV_DIV2_SHIFT)
-/* Enable FIRC DIV1 */
-#define SCG1_SOSCDIV_DIV1_NUM          ((0x1) << SCG_SOSCDIV_DIV1_SHIFT)
-
-void scg_a7_soscdiv_init(void)
-{
-       /* Wait for FIRC clock ready */
-       while (!(readl(&scg1_regs->sosccsr) & SCG_SOSC_CSR_SOSCVLD_MASK))
-               ;
-
-       /* Configure A7 FIRC DIV1 ~ DIV3 */
-       writel((SCG1_SOSCDIV_DIV3_NUM | SCG1_SOSCDIV_DIV2_NUM |
-              SCG1_SOSCDIV_DIV1_NUM), &scg1_regs->soscdiv);
-}
-
-void scg_a7_sys_clk_sel(enum scg_sys_src clk)
-{
-       u32 rccr_reg_val = 0;
-
-       clk_debug("%s: system clock selected as %s\n", "[SCG]",
-                 clk == SCG_SCS_SYS_OSC ? "SYS_OSC" :
-                 clk == SCG_SCS_SLOW_IRC  ? "SLOW_IRC" :
-                 clk == SCG_SCS_FAST_IRC  ? "FAST_IRC" :
-                 clk == SCG_SCS_RTC_OSC   ? "RTC_OSC" :
-                 clk == SCG_SCS_AUX_PLL   ? "AUX_PLL" :
-                 clk == SCG_SCS_SYS_PLL   ? "SYS_PLL" :
-                 clk == SCG_SCS_USBPHY_PLL ? "USBPHY_PLL" :
-                 "Invalid source"
-       );
-
-       rccr_reg_val = readl(&scg1_regs->rccr);
-       rccr_reg_val &= ~SCG_CCR_SCS_MASK;
-       rccr_reg_val |= (clk << SCG_CCR_SCS_SHIFT);
-       writel(rccr_reg_val, &scg1_regs->rccr);
-}
-
-void scg_a7_info(void)
-{
-       debug("SCG Version: 0x%x\n", readl(&scg1_regs->verid));
-       debug("SCG Parameter: 0x%x\n", readl(&scg1_regs->param));
-       debug("SCG RCCR Value: 0x%x\n", readl(&scg1_regs->rccr));
-       debug("SCG Clock Status: 0x%x\n", readl(&scg1_regs->csr));
-}
diff --git a/arch/arm/cpu/armv7/mx7ulp/soc.c b/arch/arm/cpu/armv7/mx7ulp/soc.c
deleted file mode 100644 (file)
index 4fd4c3a..0000000
+++ /dev/null
@@ -1,247 +0,0 @@
-/*
- * Copyright (C) 2016 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/imx-common/hab.h>
-
-static char *get_reset_cause(char *);
-
-#if defined(CONFIG_SECURE_BOOT)
-struct imx_sec_config_fuse_t const imx_sec_config_fuse = {
-       .bank = 29,
-       .word = 6,
-};
-#endif
-
-u32 get_cpu_rev(void)
-{
-       /* Temporally hard code the CPU rev to 0x73, rev 1.0. Fix it later */
-       return (MXC_CPU_MX7ULP << 12) | (1 << 4);
-}
-
-#ifdef CONFIG_REVISION_TAG
-u32 __weak get_board_rev(void)
-{
-       return get_cpu_rev();
-}
-#endif
-
-enum bt_mode get_boot_mode(void)
-{
-       u32 bt0_cfg = 0;
-
-       bt0_cfg = readl(CMC0_RBASE + 0x40);
-       bt0_cfg &= (BT0CFG_LPBOOT_MASK | BT0CFG_DUALBOOT_MASK);
-
-       if (!(bt0_cfg & BT0CFG_LPBOOT_MASK)) {
-               /* No low power boot */
-               if (bt0_cfg & BT0CFG_DUALBOOT_MASK)
-                       return DUAL_BOOT;
-               else
-                       return SINGLE_BOOT;
-       }
-
-       return LOW_POWER_BOOT;
-}
-
-int arch_cpu_init(void)
-{
-       return 0;
-}
-
-#ifdef CONFIG_BOARD_POSTCLK_INIT
-int board_postclk_init(void)
-{
-       return 0;
-}
-#endif
-
-#define UNLOCK_WORD0 0xC520 /* 1st unlock word */
-#define UNLOCK_WORD1 0xD928 /* 2nd unlock word */
-#define REFRESH_WORD0 0xA602 /* 1st refresh word */
-#define REFRESH_WORD1 0xB480 /* 2nd refresh word */
-
-static void disable_wdog(u32 wdog_base)
-{
-       writel(UNLOCK_WORD0, (wdog_base + 0x04));
-       writel(UNLOCK_WORD1, (wdog_base + 0x04));
-       writel(0x0, (wdog_base + 0x0C)); /* Set WIN to 0 */
-       writel(0x400, (wdog_base + 0x08)); /* Set timeout to default 0x400 */
-       writel(0x120, (wdog_base + 0x00)); /* Disable it and set update */
-
-       writel(REFRESH_WORD0, (wdog_base + 0x04)); /* Refresh the CNT */
-       writel(REFRESH_WORD1, (wdog_base + 0x04));
-}
-
-void init_wdog(void)
-{
-       /*
-        * ROM will configure WDOG1, disable it or enable it
-        * depending on FUSE. The update bit is set for reconfigurable.
-        * We have to use unlock sequence to reconfigure it.
-        * WDOG2 is not touched by ROM, so it will have default value
-        * which is enabled. We can directly configure it.
-        * To simplify the codes, we still use same reconfigure
-        * process as WDOG1. Because the update bit is not set for
-        * WDOG2, the unlock sequence won't take effect really.
-        * It actually directly configure the wdog.
-        * In this function, we will disable both WDOG1 and WDOG2,
-        * and set update bit for both. So that kernel can reconfigure them.
-        */
-       disable_wdog(WDG1_RBASE);
-       disable_wdog(WDG2_RBASE);
-}
-
-
-void s_init(void)
-{
-       /* Disable wdog */
-       init_wdog();
-
-       /* clock configuration. */
-       clock_init();
-
-       return;
-}
-
-#ifndef CONFIG_ULP_WATCHDOG
-void reset_cpu(ulong addr)
-{
-       setbits_le32(SIM0_RBASE, SIM_SOPT1_A7_SW_RESET);
-       while (1)
-               ;
-}
-#endif
-
-#if defined(CONFIG_DISPLAY_CPUINFO)
-const char *get_imx_type(u32 imxtype)
-{
-       return "7ULP";
-}
-
-int print_cpuinfo(void)
-{
-       u32 cpurev;
-       char cause[18];
-
-       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("Reset cause: %s\n", get_reset_cause(cause));
-
-       printf("Boot mode: ");
-       switch (get_boot_mode()) {
-       case LOW_POWER_BOOT:
-               printf("Low power boot\n");
-               break;
-       case DUAL_BOOT:
-               printf("Dual boot\n");
-               break;
-       case SINGLE_BOOT:
-       default:
-               printf("Single boot\n");
-               break;
-       }
-
-       return 0;
-}
-#endif
-
-#define CMC_SRS_TAMPER                    (1 << 31)
-#define CMC_SRS_SECURITY                  (1 << 30)
-#define CMC_SRS_TZWDG                     (1 << 29)
-#define CMC_SRS_JTAG_RST                  (1 << 28)
-#define CMC_SRS_CORE1                     (1 << 16)
-#define CMC_SRS_LOCKUP                    (1 << 15)
-#define CMC_SRS_SW                        (1 << 14)
-#define CMC_SRS_WDG                       (1 << 13)
-#define CMC_SRS_PIN_RESET                 (1 << 8)
-#define CMC_SRS_WARM                      (1 << 4)
-#define CMC_SRS_HVD                       (1 << 3)
-#define CMC_SRS_LVD                       (1 << 2)
-#define CMC_SRS_POR                       (1 << 1)
-#define CMC_SRS_WUP                       (1 << 0)
-
-static u32 reset_cause = -1;
-
-static char *get_reset_cause(char *ret)
-{
-       u32 cause1, cause = 0, srs = 0;
-       u32 *reg_ssrs = (u32 *)(SRC_BASE_ADDR + 0x28);
-       u32 *reg_srs = (u32 *)(SRC_BASE_ADDR + 0x20);
-
-       if (!ret)
-               return "null";
-
-       srs = readl(reg_srs);
-       cause1 = readl(reg_ssrs);
-       writel(cause1, reg_ssrs);
-
-       reset_cause = cause1;
-
-       cause = cause1 & (CMC_SRS_POR | CMC_SRS_WUP | CMC_SRS_WARM);
-
-       switch (cause) {
-       case CMC_SRS_POR:
-               sprintf(ret, "%s", "POR");
-               break;
-       case CMC_SRS_WUP:
-               sprintf(ret, "%s", "WUP");
-               break;
-       case CMC_SRS_WARM:
-               cause = cause1 & (CMC_SRS_WDG | CMC_SRS_SW |
-                       CMC_SRS_JTAG_RST);
-               switch (cause) {
-               case CMC_SRS_WDG:
-                       sprintf(ret, "%s", "WARM-WDG");
-                       break;
-               case CMC_SRS_SW:
-                       sprintf(ret, "%s", "WARM-SW");
-                       break;
-               case CMC_SRS_JTAG_RST:
-                       sprintf(ret, "%s", "WARM-JTAG");
-                       break;
-               default:
-                       sprintf(ret, "%s", "WARM-UNKN");
-                       break;
-               }
-               break;
-       default:
-               sprintf(ret, "%s-%X", "UNKN", cause1);
-               break;
-       }
-
-       debug("[%X] SRS[%X] %X - ", cause1, srs, srs^cause1);
-       return ret;
-}
-
-#ifdef CONFIG_ENV_IS_IN_MMC
-__weak int board_mmc_get_env_dev(int devno)
-{
-       return CONFIG_SYS_MMC_ENV_DEV;
-}
-
-int mmc_get_env_dev(void)
-{
-       int devno = 0;
-       u32 bt1_cfg = 0;
-
-       /* If not boot from sd/mmc, use default value */
-       if (get_boot_mode() == LOW_POWER_BOOT)
-               return CONFIG_SYS_MMC_ENV_DEV;
-
-       bt1_cfg = readl(CMC1_RBASE + 0x40);
-       devno = (bt1_cfg >> 9) & 0x7;
-
-       return board_mmc_get_env_dev(devno);
-}
-#endif
index 0328096afd05fe5c9a215a42b8b16cda06863d3c..ac2d8d1a3f83280011170fafda3032f3f7bc3dae 100644 (file)
@@ -9,7 +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 <asm/mach-imx/sys_proto.h>
 #include <netdev.h>
 #ifdef CONFIG_FSL_ESDHC
 #include <fsl_esdhc.h>
index 35c612df05181ea7301a578cb7db30d7de202100..24ddb5d991e3ba9fb2da89908e7fad59dd9f2001 100644 (file)
@@ -173,8 +173,9 @@ int ppa_init(void)
        debug("%s: PPA image load from NAND\n", __func__);
 
        nand_init();
-       ret = nand_read(nand_info[0], (loff_t)CONFIG_SYS_LS_PPA_FW_ADDR,
-                      &fdt_header_len, (u_char *)&fit);
+       ret = nand_read(get_nand_dev_by_index(0),
+                       (loff_t)CONFIG_SYS_LS_PPA_FW_ADDR,
+                       &fdt_header_len, (u_char *)&fit);
        if (ret == -EUCLEAN) {
                printf("NAND read of PPA FIT header at offset 0x%x failed\n",
                       CONFIG_SYS_LS_PPA_FW_ADDR);
@@ -196,8 +197,9 @@ int ppa_init(void)
 
        fw_length = CONFIG_LS_PPA_ESBC_HDR_SIZE;
 
-       ret = nand_read(nand_info[0], (loff_t)CONFIG_SYS_LS_PPA_ESBC_ADDR,
-                      &fw_length, (u_char *)ppa_hdr_ddr);
+       ret = nand_read(get_nand_dev_by_index(0),
+                       (loff_t)CONFIG_SYS_LS_PPA_ESBC_ADDR,
+                       &fw_length, (u_char *)ppa_hdr_ddr);
        if (ret == -EUCLEAN) {
                free(ppa_hdr_ddr);
                printf("NAND read of PPA firmware at offset 0x%x failed\n",
@@ -221,8 +223,9 @@ int ppa_init(void)
                return -ENOMEM;
        }
 
-       ret = nand_read(nand_info[0], (loff_t)CONFIG_SYS_LS_PPA_FW_ADDR,
-                      &fw_length, (u_char *)ppa_fit_addr);
+       ret = nand_read(get_nand_dev_by_index(0),
+                       (loff_t)CONFIG_SYS_LS_PPA_FW_ADDR,
+                       &fw_length, (u_char *)ppa_fit_addr);
        if (ret == -EUCLEAN) {
                free(ppa_fit_addr);
                printf("NAND read of PPA firmware at offset 0x%x failed\n",
diff --git a/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi b/arch/arm/dts/armada-385-turris-omnia-u-boot.dtsi
new file mode 100644 (file)
index 0000000..22caf35
--- /dev/null
@@ -0,0 +1,55 @@
+/*
+ * Copyright (C) 2017 Marek Behun <marek.behun@nic.cz>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+/ {
+       aliases {
+               i2c0 = &i2c0;
+               i2c1 = &i2cmux;
+               spi0 = &spi0;
+       };
+};
+
+&i2c0 {
+       u-boot,dm-pre-reloc;
+
+       i2cmux: i2cmux@70 {
+               u-boot,dm-pre-reloc;
+
+               i2c@0 {
+                       u-boot,dm-pre-reloc;
+               };
+
+               i2c@1 {
+                       u-boot,dm-pre-reloc;
+               };
+
+               i2c@5 {
+                       u-boot,dm-pre-reloc;
+
+                       /* ATSHA204A at address 0x64 */
+                       atsha204a@64 {
+                               u-boot,dm-pre-reloc;
+                               compatible = "atmel,atsha204a";
+                               reg = <0x64>;
+                       };
+               };
+       };
+};
+
+&spi0 {
+       u-boot,dm-pre-reloc;
+
+       spi-flash@0 {
+               compatible = "spi-flash";
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+               u-boot,dm-pre-reloc;
+       };
+};
+
+&uart0 {
+       u-boot,dm-pre-reloc;
+};
diff --git a/arch/arm/dts/armada-385-turris-omnia.dts b/arch/arm/dts/armada-385-turris-omnia.dts
new file mode 100644 (file)
index 0000000..28eede1
--- /dev/null
@@ -0,0 +1,392 @@
+/*
+ * Device Tree file for the Turris Omnia
+ *
+ * Copyright (C) 2016 Uwe Kleine-König <uwe@kleine-koenig.org>
+ * Copyright (C) 2016 Tomas Hlavacek <tmshlvkc@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 licensed under the terms of the GNU General Public
+ *     License version 2.  This program is licensed "as is" without
+ *     any warranty of any kind, whether express or implied.
+ *
+ * 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.
+ */
+
+/*
+ * Schematic available at https://www.turris.cz/doc/_media/rtrom01-schema.pdf
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/gpio.h>
+#include <dt-bindings/input/input.h>
+#include "armada-385.dtsi"
+
+/ {
+       model = "Turris Omnia";
+       compatible = "cznic,turris-omnia", "marvell,armada385", "marvell,armada380";
+
+       chosen {
+               stdout-path = &uart0;
+       };
+
+       memory {
+               device_type = "memory";
+               reg = <0x00000000 0x40000000>; /* 1024 MB */
+       };
+
+       soc {
+               ranges = <MBUS_ID(0xf0, 0x01) 0 0xf1000000 0x100000
+                         MBUS_ID(0x01, 0x1d) 0 0xfff00000 0x100000
+                         MBUS_ID(0x09, 0x19) 0 0xf1100000 0x10000
+                         MBUS_ID(0x09, 0x15) 0 0xf1110000 0x10000>;
+
+               internal-regs {
+
+                       /* USB part of the PCIe2/USB 2.0 port */
+                       usb@58000 {
+                               status = "okay";
+                       };
+
+                       sata@a8000 {
+                               status = "okay";
+                       };
+
+                       sdhci@d8000 {
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&sdhci_pins>;
+                               status = "okay";
+
+                               bus-width = <8>;
+                               no-1-8-v;
+                               non-removable;
+                       };
+
+                       usb3@f0000 {
+                               status = "okay";
+                       };
+
+                       usb3@f8000 {
+                               status = "okay";
+                       };
+               };
+
+               pcie-controller {
+                       status = "okay";
+
+                       pcie@1,0 {
+                               /* Port 0, Lane 0 */
+                               status = "okay";
+                       };
+
+                       pcie@2,0 {
+                               /* Port 1, Lane 0 */
+                               status = "okay";
+                       };
+
+                       pcie@3,0 {
+                               /* Port 2, Lane 0 */
+                               status = "okay";
+                       };
+               };
+       };
+};
+
+/* Connected to 88E6176 switch, port 6 */
+&eth0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&ge0_rgmii_pins>;
+       status = "okay";
+       phy-mode = "rgmii";
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+/* Connected to 88E6176 switch, port 5 */
+&eth1 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&ge1_rgmii_pins>;
+       status = "okay";
+       phy-mode = "rgmii";
+
+       fixed-link {
+               speed = <1000>;
+               full-duplex;
+       };
+};
+
+/* WAN port */
+&eth2 {
+       status = "okay";
+       phy-mode = "sgmii";
+       phy = <&phy1>;
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+       status = "okay";
+
+       i2cmux@70 {
+               compatible = "nxp,pca9547";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               reg = <0x70>;
+               status = "okay";
+
+               i2c@0 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <0>;
+
+                       /* STM32F0 command interface at address 0x2a */
+                       /* leds device (in STM32F0) at address 0x2b */
+
+                       eeprom@54 {
+                               compatible = "at,24c64";
+                               reg = <0x54>;
+
+                               /* The EEPROM contains data for bootloader.
+                                * Contents:
+                                *      struct omnia_eeprom {
+                                *              u32 magic; (=0x0341a034 in LE)
+                                *              u32 ramsize; (in GiB)
+                                *              char regdomain[4];
+                                *              u32 crc32;
+                                *      };
+                                */
+                       };
+               };
+
+               i2c@1 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <1>;
+
+                       /* routed to PCIe0/mSATA connector (CN7A) */
+               };
+
+               i2c@2 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <2>;
+
+                       /* routed to PCIe1/USB2 connector (CN61A) */
+               };
+
+               i2c@3 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <3>;
+
+                       /* routed to PCIe2 connector (CN62A) */
+               };
+
+               i2c@4 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <4>;
+
+                       /* routed to SFP+ */
+               };
+
+               i2c@5 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <5>;
+
+                       /* ATSHA204A at address 0x64 */
+               };
+
+               i2c@6 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <6>;
+
+                       /* exposed on pin header */
+               };
+
+               i2c@7 {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       reg = <7>;
+
+                       pcawan: gpio@71 {
+                               /*
+                                * GPIO expander for SFP+ signals and
+                                * and phy irq
+                                */
+                               compatible = "nxp,pca9538";
+                               reg = <0x71>;
+
+                               pinctrl-names = "default";
+                               pinctrl-0 = <&pcawan_pins>;
+
+                               interrupt-parent = <&gpio1>;
+                               interrupts = <14 IRQ_TYPE_LEVEL_LOW>;
+
+                               gpio-controller;
+                               #gpio-cells = <2>;
+                       };
+               };
+       };
+};
+
+&mdio {
+       pinctrl-names = "default";
+       pinctrl-0 = <&mdio_pins>;
+       status = "okay";
+
+       phy1: phy@1 {
+               status = "okay";
+               compatible = "ethernet-phy-id0141.0DD1", "ethernet-phy-ieee802.3-c22";
+               reg = <1>;
+
+               /* irq is connected to &pcawan pin 7 */
+       };
+
+       /* Switch MV88E6176 at address 0x10 */
+       switch@10 {
+               compatible = "marvell,mv88e6085";
+               #address-cells = <1>;
+               #size-cells = <0>;
+               dsa,member = <0 0>;
+
+               reg = <0x10>;
+
+               ports {
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+
+                       ports@0 {
+                               reg = <0>;
+                               label = "lan0";
+                       };
+
+                       ports@1 {
+                               reg = <1>;
+                               label = "lan1";
+                       };
+
+                       ports@2 {
+                               reg = <2>;
+                               label = "lan2";
+                       };
+
+                       ports@3 {
+                               reg = <3>;
+                               label = "lan3";
+                       };
+
+                       ports@4 {
+                               reg = <4>;
+                               label = "lan4";
+                       };
+
+                       ports@5 {
+                               reg = <5>;
+                               label = "cpu";
+                               ethernet = <&eth1>;
+                               phy-mode = "rgmii-id";
+
+                               fixed-link {
+                                       speed = <1000>;
+                                       full-duplex;
+                               };
+                       };
+
+                       /* port 6 is connected to eth0 */
+               };
+       };
+};
+
+&pinctrl {
+       pcawan_pins: pcawan-pins {
+               marvell,pins = "mpp46";
+               marvell,function = "gpio";
+       };
+
+       spi0cs0_pins: spi0cs0-pins {
+               marvell,pins = "mpp25";
+               marvell,function = "spi0";
+       };
+
+       spi0cs1_pins: spi0cs1-pins {
+               marvell,pins = "mpp26";
+               marvell,function = "spi0";
+       };
+};
+
+&spi0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&spi0_pins &spi0cs0_pins>;
+       status = "okay";
+
+       spi-nor@0 {
+               compatible = "spansion,s25fl164k", "jedec,spi-nor";
+               #address-cells = <1>;
+               #size-cells = <1>;
+               reg = <0>;
+               spi-max-frequency = <40000000>;
+
+               partitions {
+                       compatible = "fixed-partitions";
+                       #address-cells = <1>;
+                       #size-cells = <1>;
+
+                       partition@0 {
+                               reg = <0x0 0x00100000>;
+                               label = "U-Boot";
+                       };
+
+                       partition@100000 {
+                               reg = <0x00100000 0x00700000>;
+                               label = "Rescue system";
+                       };
+               };
+       };
+
+       /* MISO, MOSI, SCLK and CS1 are routed to pin header CN11 */
+};
+
+&uart0 {
+       /* Pin header CN10 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+       status = "okay";
+};
+
+&uart1 {
+       /* Pin header CN11 */
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart1_pins>;
+       status = "okay";
+};
index c1291007b37c2b12fff2cb1c5cf8739682e8d667..436b875060e708340beb6b8332655f259d63e450 100644 (file)
                        reg = <0x0 0x10000000 0x0 0x200000>;
                        no-map;
                };
+
+               linux,cma {
+                       compatible = "shared-dma-pool";
+                       reusable;
+                       size = <0x0 0xbc00000>;
+                       alignment = <0x0 0x400000>;
+                       linux,cma-default;
+               };
        };
 
        cpus {
                        };
 
                        i2c_A: i2c@8500 {
-                               compatible = "amlogic,meson-gxbb-i2c";
+                               compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c";
                                reg = <0x0 0x08500 0x0 0x20>;
                                interrupts = <GIC_SPI 21 IRQ_TYPE_EDGE_RISING>;
                                #address-cells = <1>;
                                status = "disabled";
                        };
 
+                       saradc: adc@8680 {
+                               compatible = "amlogic,meson-saradc";
+                               reg = <0x0 0x8680 0x0 0x34>;
+                               #io-channel-cells = <1>;
+                               interrupts = <GIC_SPI 73 IRQ_TYPE_EDGE_RISING>;
+                               status = "disabled";
+                       };
+
                        pwm_ef: pwm@86c0 {
                                compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm";
                                reg = <0x0 0x086c0 0x0 0x10>;
                        };
 
                        i2c_B: i2c@87c0 {
-                               compatible = "amlogic,meson-gxbb-i2c";
+                               compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c";
                                reg = <0x0 0x087c0 0x0 0x20>;
                                interrupts = <GIC_SPI 214 IRQ_TYPE_EDGE_RISING>;
                                #address-cells = <1>;
                        };
 
                        i2c_C: i2c@87e0 {
-                               compatible = "amlogic,meson-gxbb-i2c";
+                               compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c";
                                reg = <0x0 0x087e0 0x0 0x20>;
                                interrupts = <GIC_SPI 215 IRQ_TYPE_EDGE_RISING>;
                                #address-cells = <1>;
                                status = "disabled";
                        };
 
+                       spifc: spi@8c80 {
+                               compatible = "amlogic,meson-gx-spifc", "amlogic,meson-gxbb-spifc";
+                               reg = <0x0 0x08c80 0x0 0x80>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
                        watchdog@98d0 {
                                compatible = "amlogic,meson-gx-wdt", "amlogic,meson-gxbb-wdt";
                                reg = <0x0 0x098d0 0x0 0x10>;
                };
 
                sram: sram@c8000000 {
-                       compatible = "amlogic,meson-gxbb-sram", "mmio-sram";
+                       compatible = "amlogic,meson-gx-sram", "amlogic,meson-gxbb-sram", "mmio-sram";
                        reg = <0x0 0xc8000000 0x0 0x14000>;
 
                        #address-cells = <1>;
                        ranges = <0 0x0 0xc8000000 0x14000>;
 
                        cpu_scp_lpri: scp-shmem@0 {
-                               compatible = "amlogic,meson-gxbb-scp-shmem";
+                               compatible = "amlogic,meson-gx-scp-shmem", "amlogic,meson-gxbb-scp-shmem";
                                reg = <0x13000 0x400>;
                        };
 
                        cpu_scp_hpri: scp-shmem@200 {
-                               compatible = "amlogic,meson-gxbb-scp-shmem";
+                               compatible = "amlogic,meson-gx-scp-shmem", "amlogic,meson-gxbb-scp-shmem";
                                reg = <0x13400 0x400>;
                        };
                };
                        #size-cells = <2>;
                        ranges = <0x0 0x0 0x0 0xc8100000 0x0 0x100000>;
 
+                       clkc_AO: clock-controller@040 {
+                               compatible = "amlogic,gx-aoclkc", "amlogic,gxbb-aoclkc";
+                               reg = <0x0 0x00040 0x0 0x4>;
+                               #clock-cells = <1>;
+                               #reset-cells = <1>;
+                       };
+
                        uart_AO: serial@4c0 {
                                compatible = "amlogic,meson-uart";
                                reg = <0x0 0x004c0 0x0 0x14>;
                                status = "disabled";
                        };
 
+                       i2c_AO: i2c@500 {
+                               compatible = "amlogic,meson-gx-i2c", "amlogic,meson-gxbb-i2c";
+                               reg = <0x0 0x500 0x0 0x20>;
+                               interrupts = <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>;
+                               #address-cells = <1>;
+                               #size-cells = <0>;
+                               status = "disabled";
+                       };
+
+                       pwm_AO_ab: pwm@550 {
+                               compatible = "amlogic,meson-gx-pwm", "amlogic,meson-gxbb-pwm";
+                               reg = <0x0 0x00550 0x0 0x10>;
+                               #pwm-cells = <3>;
+                               status = "disabled";
+                       };
+
                        ir: ir@580 {
-                               compatible = "amlogic,meson-gxbb-ir";
+                               compatible = "amlogic,meson-gx-ir", "amlogic,meson-gxbb-ir";
                                reg = <0x0 0x00580 0x0 0x40>;
                                interrupts = <GIC_SPI 196 IRQ_TYPE_EDGE_RISING>;
                                status = "disabled";
                        #size-cells = <2>;
                        ranges = <0x0 0x0 0x0 0xc8834000 0x0 0x2000>;
 
-                       rng {
+                       hwrng: rng {
                                compatible = "amlogic,meson-rng";
                                reg = <0x0 0x0 0x0 0x4>;
                        };
                };
 
-
                hiubus: hiubus@c883c000 {
                        compatible = "simple-bus";
                        reg = <0x0 0xc883c000 0x0 0x2000>;
                               0x0 0xc8834540 0x0 0x4>;
                        interrupts = <0 8 1>;
                        interrupt-names = "macirq";
-                       phy-mode = "rgmii";
                        status = "disabled";
                };
 
                        cvbs_vdac_port: port@0 {
                                reg = <0>;
                        };
+
+                       /* HDMI-TX output port */
+                       hdmi_tx_port: port@1 {
+                               reg = <1>;
+
+                               hdmi_tx_out: endpoint {
+                                       remote-endpoint = <&hdmi_tx_in>;
+                               };
+                       };
+               };
+
+               hdmi_tx: hdmi-tx@c883a000 {
+                       compatible = "amlogic,meson-gx-dw-hdmi";
+                       reg = <0x0 0xc883a000 0x0 0x1c>;
+                       interrupts = <GIC_SPI 57 IRQ_TYPE_EDGE_RISING>;
+                       #address-cells = <1>;
+                       #size-cells = <0>;
+                       status = "disabled";
+
+                       /* VPU VENC Input */
+                       hdmi_tx_venc_port: port@0 {
+                               reg = <0>;
+
+                               hdmi_tx_in: endpoint {
+                                       remote-endpoint = <&hdmi_tx_out>;
+                               };
+                       };
+
+                       /* TMDS Output */
+                       hdmi_tx_tmds_port: port@1 {
+                               reg = <1>;
+                       };
                };
        };
 };
index c737183a294721b49ed9064704a444efcf312a65..54a9c6a6b3923cda35270c3719a274882bc56ef5 100644 (file)
@@ -50,7 +50,7 @@
 / {
        compatible = "hardkernel,odroid-c2", "amlogic,meson-gxbb";
        model = "Hardkernel ODROID-C2";
-
+       
        aliases {
                serial0 = &uart_AO;
        };
@@ -96,7 +96,7 @@
                regulator-min-microvolt = <3300000>;
                regulator-max-microvolt = <3300000>;
 
-               gpio = <&gpio_ao GPIOAO_12 GPIO_ACTIVE_HIGH>;
+               gpio = <&gpio GPIOY_12 GPIO_ACTIVE_HIGH>;
                enable-active-high;
        };
 
        pinctrl-0 = <&eth_rgmii_pins>;
        pinctrl-names = "default";
        phy-handle = <&eth_phy0>;
+       phy-mode = "rgmii";
+
+       snps,reset-gpio = <&gpio GPIOZ_14 0>;
+       snps,reset-delays-us = <0 10000 1000000>;
+       snps,reset-active-low;
+
+       amlogic,tx-delay-ns = <2>;
 
        mdio {
                compatible = "snps,dwmac-mdio";
        };
 };
 
+&pinctrl_aobus {
+       gpio-line-names = "UART TX", "UART RX", "VCCK En", "TF 3V3/1V8 En",
+                         "USB HUB nRESET", "USB OTG Power En",
+                         "J7 Header Pin2", "IR In", "J7 Header Pin4",
+                         "J7 Header Pin6", "J7 Header Pin5", "J7 Header Pin7",
+                         "HDMI CEC", "SYS LED";
+};
+
+&pinctrl_periphs {
+       gpio-line-names = /* Bank GPIOZ */
+                         "Eth MDIO", "Eth MDC", "Eth RGMII RX Clk",
+                         "Eth RX DV", "Eth RX D0", "Eth RX D1", "Eth RX D2",
+                         "Eth RX D3", "Eth RGMII TX Clk", "Eth TX En",
+                         "Eth TX D0", "Eth TX D1", "Eth TX D2", "Eth TX D3",
+                         "Eth PHY nRESET", "Eth PHY Intc",
+                         /* Bank GPIOH */
+                         "HDMI HPD", "HDMI DDC SDA", "HDMI DDC SCL", "",
+                         /* Bank BOOT */
+                         "eMMC D0", "eMMC D1", "eMMC D2", "eMMC D3", "eMMC D4",
+                         "eMMC D5", "eMMC D6", "eMMC D7", "eMMC Clk",
+                         "eMMC Reset", "eMMC CMD",
+                         "", "", "", "", "", "", "",
+                         /* Bank CARD */
+                         "SDCard D1", "SDCard D0", "SDCard CLK", "SDCard CMD",
+                         "SDCard D3", "SDCard D2", "SDCard Det",
+                         /* Bank GPIODV */
+                         "", "", "", "", "", "", "", "", "", "", "", "", "",
+                         "", "", "", "", "", "", "", "", "", "", "",
+                         "I2C A SDA", "I2C A SCK", "I2C B SDA", "I2C B SCK",
+                         "PWM D", "PWM B",
+                         /* Bank GPIOY */
+                         "Revision Bit0", "Revision Bit1", "",
+                         "J2 Header Pin35", "", "", "", "J2 Header Pin36",
+                         "J2 Header Pin31", "", "", "", "TF VDD En",
+                         "J2 Header Pin32", "J2 Header Pin26", "", "",
+                         /* Bank GPIOX */
+                         "J2 Header Pin29", "J2 Header Pin24",
+                         "J2 Header Pin23", "J2 Header Pin22",
+                         "J2 Header Pin21", "J2 Header Pin18",
+                         "J2 Header Pin33", "J2 Header Pin19",
+                         "J2 Header Pin16", "J2 Header Pin15",
+                         "J2 Header Pin12", "J2 Header Pin13",
+                         "J2 Header Pin8", "J2 Header Pin10",
+                         "", "", "", "", "",
+                         "J2 Header Pin11", "", "J2 Header Pin7",
+                         /* Bank GPIOCLK */
+                         "", "", "", "",
+                         /* GPIO_TEST_N */
+                         "";
+};
+
 &ir {
        status = "okay";
        pinctrl-0 = <&remote_input_ao_pins>;
        pinctrl-names = "default";
 };
 
+&gpio_ao {
+       /*
+        * WARNING: The USB Hub on the Odroid-C2 needs a reset signal
+        * to be turned high in order to be detected by the USB Controller
+        * This signal should be handled by a USB specific power sequence
+        * in order to reset the Hub when USB bus is powered down.
+        */
+       usb-hub {
+               gpio-hog;
+               gpios = <GPIOAO_4 GPIO_ACTIVE_HIGH>;
+               output-high;
+               line-name = "usb-hub-reset";
+       };
+};
+
 &usb0_phy {
        status = "okay";
        phy-supply = <&usb_otg_pwr>;
        status = "okay";
 };
 
+&saradc {
+       status = "okay";
+       vref-supply = <&vcc1v8>;
+};
+
 /* SD */
 &sd_emmc_b {
        status = "okay";
index 39a774ad83ce13c246bbf8ea417e8c904fd10bdb..86105a69690aa8c66342e7e22e6846a6140203cb 100644 (file)
        };
 };
 
-&cbus {
-       spifc: spi@8c80 {
-               compatible = "amlogic,meson-gxbb-spifc";
-               reg = <0x0 0x08c80 0x0 0x80>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               clocks = <&clkc CLKID_SPI>;
-               status = "disabled";
-       };
-};
-
 &ethmac {
        clocks = <&clkc CLKID_ETH>,
                 <&clkc CLKID_FCLK_DIV2>,
                        reg-names = "mux", "pull", "gpio";
                        gpio-controller;
                        #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_aobus 0 0 14>;
                };
 
                uart_ao_a_pins: uart_ao_a {
                                function = "pwm_ao_b";
                        };
                };
-       };
 
-       clkc_AO: clock-controller@040 {
-               compatible = "amlogic,gxbb-aoclkc";
-               reg = <0x0 0x00040 0x0 0x4>;
-               #clock-cells = <1>;
-               #reset-cells = <1>;
-       };
+               i2s_am_clk_pins: i2s_am_clk {
+                       mux {
+                               groups = "i2s_am_clk";
+                               function = "i2s_out_ao";
+                       };
+               };
 
-       pwm_ab_AO: pwm@550 {
-               compatible = "amlogic,meson-gxbb-pwm";
-               reg = <0x0 0x0550 0x0 0x10>;
-               #pwm-cells = <3>;
-               status = "disabled";
-       };
+               i2s_out_ao_clk_pins: i2s_out_ao_clk {
+                       mux {
+                               groups = "i2s_out_ao_clk";
+                               function = "i2s_out_ao";
+                       };
+               };
+
+               i2s_out_lr_clk_pins: i2s_out_lr_clk {
+                       mux {
+                               groups = "i2s_out_lr_clk";
+                               function = "i2s_out_ao";
+                       };
+               };
+
+               i2s_out_ch01_ao_pins: i2s_out_ch01_ao {
+                       mux {
+                               groups = "i2s_out_ch01_ao";
+                               function = "i2s_out_ao";
+                       };
+               };
+
+               i2s_out_ch23_ao_pins: i2s_out_ch23_ao {
+                       mux {
+                               groups = "i2s_out_ch23_ao";
+                               function = "i2s_out_ao";
+                       };
+               };
+
+               i2s_out_ch45_ao_pins: i2s_out_ch45_ao {
+                       mux {
+                               groups = "i2s_out_ch45_ao";
+                               function = "i2s_out_ao";
+                       };
+               };
+
+               spdif_out_ao_6_pins: spdif_out_ao_6 {
+                       mux {
+                               groups = "spdif_out_ao_6";
+                               function = "spdif_out_ao";
+                       };
+               };
 
-       i2c_AO: i2c@500 {
-               compatible = "amlogic,meson-gxbb-i2c";
-               reg = <0x0 0x500 0x0 0x20>;
-               interrupts = <GIC_SPI 195 IRQ_TYPE_EDGE_RISING>;
-               clocks = <&clkc CLKID_AO_I2C>;
-               #address-cells = <1>;
-               #size-cells = <0>;
-               status = "disabled";
+               spdif_out_ao_13_pins: spdif_out_ao_13 {
+                       mux {
+                               groups = "spdif_out_ao_13";
+                               function = "spdif_out_ao";
+                       };
+               };
        };
 };
 
                        reg-names = "mux", "pull", "pull-enable", "gpio";
                        gpio-controller;
                        #gpio-cells = <2>;
+                       gpio-ranges = <&pinctrl_periphs 0 14 120>;
                };
 
                emmc_pins: emmc {
                                function = "hdmi_i2c";
                        };
                };
+
+               i2sout_ch23_y_pins: i2sout_ch23_y {
+                       mux {
+                               groups = "i2sout_ch23_y";
+                               function = "i2s_out";
+                       };
+               };
+
+               i2sout_ch45_y_pins: i2sout_ch45_y {
+                       mux {
+                               groups = "i2sout_ch45_y";
+                               function = "i2s_out";
+                       };
+               };
+
+               i2sout_ch67_y_pins: i2sout_ch67_y {
+                       mux {
+                               groups = "i2sout_ch67_y";
+                               function = "i2s_out";
+                       };
+               };
+
+               spdif_out_y_pins: spdif_out_y {
+                       mux {
+                               groups = "spdif_out_y";
+                               function = "spdif_out";
+                       };
+               };
        };
 };
 
        };
 };
 
+&apb {
+       mali: gpu@c0000 {
+               compatible = "amlogic,meson-gxbb-mali", "arm,mali-450";
+               reg = <0x0 0xc0000 0x0 0x40000>;
+               interrupts = <GIC_SPI 160 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 161 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 162 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 163 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 164 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 165 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 166 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 167 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 168 IRQ_TYPE_LEVEL_HIGH>,
+                            <GIC_SPI 169 IRQ_TYPE_LEVEL_HIGH>;
+               interrupt-names = "gp", "gpmmu", "pp", "pmu",
+                       "pp0", "ppmmu0", "pp1", "ppmmu1",
+                       "pp2", "ppmmu2";
+               clocks = <&clkc CLKID_CLK81>, <&clkc CLKID_MALI>;
+               clock-names = "bus", "core";
+
+               /*
+                * Mali clocking is provided by two identical clock paths
+                * MALI_0 and MALI_1 muxed to a single clock by a glitch
+                * free mux to safely change frequency while running.
+                */
+               assigned-clocks = <&clkc CLKID_MALI_0_SEL>,
+                                 <&clkc CLKID_MALI_0>,
+                                 <&clkc CLKID_MALI>; /* Glitch free mux */
+               assigned-clock-parents = <&clkc CLKID_FCLK_DIV3>,
+                                        <0>, /* Do Nothing */
+                                        <&clkc CLKID_MALI_0>;
+               assigned-clock-rates = <0>, /* Do Nothing */
+                                      <666666666>,
+                                      <0>; /* Do Nothing */
+       };
+};
+
 &i2c_A {
        clocks = <&clkc CLKID_I2C>;
 };
 
+&i2c_AO {
+       clocks = <&clkc CLKID_AO_I2C>;
+};
+
 &i2c_B {
        clocks = <&clkc CLKID_I2C>;
 };
        clocks = <&clkc CLKID_I2C>;
 };
 
+&saradc {
+       compatible = "amlogic,meson-gxbb-saradc", "amlogic,meson-saradc";
+       clocks = <&xtal>,
+                <&clkc CLKID_SAR_ADC>,
+                <&clkc CLKID_SANA>,
+                <&clkc CLKID_SAR_ADC_CLK>,
+                <&clkc CLKID_SAR_ADC_SEL>;
+       clock-names = "clkin", "core", "sana", "adc_clk", "adc_sel";
+};
+
 &sd_emmc_a {
        clocks = <&clkc CLKID_SD_EMMC_A>,
                 <&xtal>,
        clock-names = "core", "clkin0", "clkin1";
 };
 
+&spifc {
+       clocks = <&clkc CLKID_SPI>;
+};
+
 &vpu {
        compatible = "amlogic,meson-gxbb-vpu", "amlogic,meson-gx-vpu";
 };
+
+&hwrng {
+       clocks = <&clkc CLKID_RNG0>;
+       clock-names = "core";
+};
+
+&hdmi_tx {
+       compatible = "amlogic,meson-gxbb-dw-hdmi", "amlogic,meson-gx-dw-hdmi";
+       resets = <&reset RESET_HDMITX_CAPB3>,
+                <&reset RESET_HDMI_SYSTEM_RESET>,
+                <&reset RESET_HDMI_TX>;
+       reset-names = "hdmitx_apb", "hdmitx", "hdmitx_phy";
+       clocks = <&clkc CLKID_HDMI_PCLK>,
+                <&clkc CLKID_CLK81>,
+                <&clkc CLKID_GCLK_VENCI_INT0>;
+       clock-names = "isfr", "iahb", "venci";
+};
diff --git a/arch/arm/dts/rk3036-sdk-u-boot.dtsi b/arch/arm/dts/rk3036-sdk-u-boot.dtsi
new file mode 100644 (file)
index 0000000..6f15f4a
--- /dev/null
@@ -0,0 +1,11 @@
+&uart2 {
+       u-boot,dm-pre-reloc;
+};
+
+&grf {
+       u-boot,dm-pre-reloc;
+};
+
+&pinctrl {
+       u-boot,dm-pre-reloc;
+};
index ccdac1c79a92a3f93dd77c4b279c886d12ae7380..37137c2e520bfdce2c961c64c5a701c7663bcc71 100644 (file)
@@ -75,3 +75,7 @@
 &uart2 {
        status = "okay";
 };
+
+&usb20_otg {
+       status = "okay";
+};
index 7237da431d3a7620cba589b93d9e246142d8973f..4f2a1f6a157f620c472fdf3baebd8ee8a3ccec33 100644 (file)
                status = "disabled";
        };
 
+       usb20_otg: usb@30040000 {
+               compatible = "rockchip,rk3229-usb", "rockchip,rk3288-usb",
+                            "snps,dwc2";
+               reg = <0x30040000 0x40000>;
+               interrupts = <GIC_SPI 23 IRQ_TYPE_LEVEL_HIGH>;
+               hnp-srp-disable;
+               dr_mode = "otg";
+               status = "disabled";
+       };
+
        gmac: ethernet@30200000 {
                compatible = "rockchip,rk3228-gmac";
                reg = <0x30200000 0x10000>;
index fd463f4d9825547d021854d0bdf51d6df0fe6446..02d11968cb34d01d02142cc5a1acc5325ce28068 100644 (file)
@@ -61,6 +61,7 @@
        aliases {
                rtc0 = &i2c_rtc;
                rtc1 = &rk818;
+               eeprom0 = &i2c_eeprom_id;
        };
 
        ext_gmac: external-gmac-clock {
                pagesize = <32>;
        };
 
+       /* M24C32-D Identification page */
+       i2c_eeprom_id: eeprom@58 {
+               compatible = "atmel,24c32";
+               reg = <0x58>;
+               pagesize = <32>;
+       };
+
        vdd_cpu: regulator@60 {
                compatible = "fcs,fan53555";
                reg = <0x60>;
index 91d3193c8556a0bb11c78734da3250db7d616925..3d3f5079345a13f17441aff28d1ca67aad873c9f 100644 (file)
@@ -8,7 +8,7 @@
 #include <dt-bindings/pwm/pwm.h>
 #include <dt-bindings/pinctrl/rockchip.h>
 #include "rk3399.dtsi"
-#include "rk3399-sdram-ddr3-1333.dtsi"
+#include "rk3399-sdram-ddr3-1600.dtsi"
 
 / {
        model = "Firefly-RK3399 Board";
                regulator-name = "vdd_log";
                regulator-always-on;
                regulator-boot-on;
-               regulator-min-microvolt = <800000>;
+               regulator-min-microvolt = <430000>;
                regulator-max-microvolt = <1400000>;
+               regulator-init-microvolt = <950000>;
        };
 
        vccadc_ref: vccadc-ref {
index 1aad6c508e41f5b25898a2452068f4b3c4d1aa72..dd1baea70407c188e934dd284212b7369357c8ed 100644 (file)
@@ -12,7 +12,9 @@
        compatible = "tsd,rk3399-q7", "tsd,puma", "rockchip,rk3399";
 
        config {
-               u-boot,spl-payload-offset = <0x40000>; /* 256kbyte */
+               u-boot,spl-payload-offset = <0x40000>; /* @ 256KB */
+               u-boot,mmc-env-offset = <0x4000>;      /* @  16KB */
+               u-boot,efi-partition-entries-offset = <0x200000>; /* 2MB */
                u-boot,boot-led = "module_led";
        };
 
index 2c7fa799bf24f656348180d61f74a6c1285023ff..c92c2e20e8a3e55959f2bdcb17a822271f100307 100644 (file)
        pinctrl-names = "default";
        status = "okay";
 
-       mr-nbanks = <1>;
        /* Memory configuration from sdram datasheet MT48LC_4M32_B2B5-6A */
        bank1: bank@0 {
               st,sdram-control = /bits/ 8 <NO_COL_8 NO_ROW_12 MWIDTH_16 BANKS_4
index 54f5bc7a54e5f124ee02c135c1dc0c490e773f56..783d4e734e5873f428d6f3a992d2fde24d68a388 100644 (file)
@@ -47,6 +47,8 @@
 
 #include "armv7-m.dtsi"
 #include <dt-bindings/pinctrl/stm32f746-pinfunc.h>
+#include <dt-bindings/clock/stm32fx-clock.h>
+#include <dt-bindings/mfd/stm32f7-rcc.h>
 
 / {
        clocks {
@@ -74,7 +76,7 @@
                fmc: fmc@A0000000 {
                        compatible = "st,stm32-fmc";
                        reg = <0xA0000000 0x1000>;
-                       clocks = <&rcc 0 64>;
+                       clocks = <&rcc 0 STM32F7_AHB3_CLOCK(FMC)>;
                        u-boot,dm-pre-reloc;
                };
 
                        reg-names = "QuadSPI", "QuadSPI-memory";
                        interrupts = <92>;
                        spi-max-frequency = <108000000>;
-                       clocks = <&rcc 0 65>;
+                       clocks = <&rcc 0 STM32F7_AHB3_CLOCK(QSPI)>;
                        status = "disabled";
                };
                usart1: serial@40011000 {
                        compatible = "st,stm32f7-usart", "st,stm32f7-uart";
                        reg = <0x40011000 0x400>;
                        interrupts = <37>;
-                       clocks = <&rcc 0 164>;
+                       clocks = <&rcc 0 STM32F7_APB2_CLOCK(USART1)>;
                        status = "disabled";
                        u-boot,dm-pre-reloc;
                };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x0 0x400>;
-                               clocks = <&rcc 0 0>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOA)>;
                                st,bank-name = "GPIOA";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x400 0x400>;
-                               clocks = <&rcc 0 1>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOB)>;
                                st,bank-name = "GPIOB";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x800 0x400>;
-                               clocks = <&rcc 0 2>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOC)>;
                                st,bank-name = "GPIOC";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0xc00 0x400>;
-                               clocks = <&rcc 0 3>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOD)>;
                                st,bank-name = "GPIOD";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x1000 0x400>;
-                               clocks = <&rcc 0 4>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOE)>;
                                st,bank-name = "GPIOE";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x1400 0x400>;
-                               clocks = <&rcc 0 5>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOF)>;
                                st,bank-name = "GPIOF";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x1800 0x400>;
-                               clocks = <&rcc 0 6>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOG)>;
                                st,bank-name = "GPIOG";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x1c00 0x400>;
-                               clocks = <&rcc 0 7>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOH)>;
                                st,bank-name = "GPIOH";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x2000 0x400>;
-                               clocks = <&rcc 0 8>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOI)>;
                                st,bank-name = "GPIOI";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x2400 0x400>;
-                               clocks = <&rcc 0 9>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOJ)>;
                                st,bank-name = "GPIOJ";
                                u-boot,dm-pre-reloc;
                        };
                                #gpio-cells = <2>;
                                compatible = "st,stm32-gpio";
                                reg = <0x2800 0x400>;
-                               clocks = <&rcc 0 10>;
+                               clocks = <&rcc 0 STM32F7_AHB1_CLOCK(GPIOK)>;
                                st,bank-name = "GPIOK";
                                u-boot,dm-pre-reloc;
                        };
index 6591cc8110a555f6235d1af444ea68ae7ecca31a..f34ffcc21de8613dff02064e4094751c03fe1f01 100644 (file)
        pinctrl-names = "default";
        status = "okay";
 
-       mr-nbanks = <1>;
        /* Memory configuration from sdram datasheet MT48LC_4M32_B2B5-6A */
        bank1: bank@0 {
               st,sdram-control = /bits/ 8 <NO_COL_8 NO_ROW_12 MWIDTH_32 BANKS_4
index 62f89d0f1a866ce6890ae8d3646e843008099c38..f1c97052a847e648e5ca2aecaadaa5dd33c73c12 100644 (file)
@@ -8,7 +8,6 @@
 
        aliases {
                console = &uarta;
-               stdout-path = &uarta;
                i2c0 = "/i2c@7000d000";
                i2c1 = "/i2c@7000c000";
                i2c2 = "/i2c@7000c400";
                usb2 = "/usb@7d004000";
        };
 
+       chosen {
+               stdout-path = &uarta;
+       };
+
        host1x@50000000 {
                dc@54200000 {
                        display-timings {
index 2ed13606b505e5e1d72c5b3acfc1b093ead1414b..7a650a02486acc0001060f7cc6f40c3780e13cdc 100644 (file)
 &usb2 {
        status = "okay";
 };
-
-/* for U-Boot only */
-&serial0 {
-       u-boot,dm-pre-reloc;
-};
-
-&pinctrl_uart0 {
-       u-boot,dm-pre-reloc;
-};
index 4bdf1121d6785e74c61d4761683bc4a4694bae87..cc8ebe34c27cd35e131e7a05f66a5c5a63dca7e4 100644 (file)
 &usb2 {
        status = "okay";
 };
-
-/* for U-Boot only */
-&serial0 {
-       u-boot,dm-pre-reloc;
-};
-
-&pinctrl_uart0 {
-       u-boot,dm-pre-reloc;
-};
index 75dfd1ff3b6b25ff60094e31f6d6c3774be19052..74f8f721a88891378a9992331f2c9adfad4cbdc5 100644 (file)
                #address-cells = <1>;
                #size-cells = <1>;
                ranges = <0 0 0 0xffffffff>;
-               u-boot,dm-pre-reloc;
 
                serial0: serial@54006800 {
                        compatible = "socionext,uniphier-uart";
                        compatible = "socionext,uniphier-ld11-soc-glue",
                                     "simple-mfd", "syscon";
                        reg = <0x5f800000 0x2000>;
-                       u-boot,dm-pre-reloc;
 
                        pinctrl: pinctrl {
                                compatible = "socionext,uniphier-ld11-pinctrl";
-                               u-boot,dm-pre-reloc;
                        };
                };
 
index 535c0eeed5455067c213fa418894c12e0f949396..9f620d4101b54fa0a1d2aecee398813598891c41 100644 (file)
 &i2c0 {
        status = "okay";
 };
-
-/* for U-Boot only */
-&serial0 {
-       u-boot,dm-pre-reloc;
-};
-
-&pinctrl_uart0 {
-       u-boot,dm-pre-reloc;
-};
index 2bcab967f7f870febd15133ff44f5863fc0ebb71..494166aee24ce3c304045075c1a0938f6fdf43f2 100644 (file)
 &i2c0 {
        status = "okay";
 };
-
-/* for U-Boot only */
-&serial0 {
-       u-boot,dm-pre-reloc;
-};
-
-&pinctrl_uart0 {
-       u-boot,dm-pre-reloc;
-};
index ab031f2cab585f905039f85a09c25b2c71256e30..927340fa48d2b5bcfd25d9a5bb3288c3a7fe992c 100644 (file)
                #address-cells = <1>;
                #size-cells = <1>;
                ranges = <0 0 0 0xffffffff>;
-               u-boot,dm-pre-reloc;
 
                serial0: serial@54006800 {
                        compatible = "socionext,uniphier-uart";
                        compatible = "socionext,uniphier-ld20-soc-glue",
                                     "simple-mfd", "syscon";
                        reg = <0x5f800000 0x2000>;
-                       u-boot,dm-pre-reloc;
 
                        pinctrl: pinctrl {
                                compatible = "socionext,uniphier-ld20-pinctrl";
-                               u-boot,dm-pre-reloc;
                        };
                };
 
diff --git a/arch/arm/imx-common/Kconfig b/arch/arm/imx-common/Kconfig
deleted file mode 100644 (file)
index cd8b8d2..0000000
+++ /dev/null
@@ -1,63 +0,0 @@
-config IMX_CONFIG
-       string
-
-config ROM_UNIFIED_SECTIONS
-       bool
-
-config IMX_RDC
-       bool "i.MX Resource domain controller driver"
-       depends on ARCH_MX6 || ARCH_MX7
-       help
-         i.MX Resource domain controller is used to assign masters
-         and peripherals to differet domains. This can be used to
-         isolate resources.
-
-config IMX_BOOTAUX
-       bool "Support boot auxiliary core"
-       depends on ARCH_MX7 || ARCH_MX6
-       help
-         bootaux [addr] to boot auxiliary core.
-
-config USE_IMXIMG_PLUGIN
-       bool "Use imximage plugin code"
-       depends on ARCH_MX7 || ARCH_MX6
-       help
-         i.MX6/7 supports DCD and Plugin. Enable this configuration
-         to use Plugin, otherwise DCD will be used.
-
-config SECURE_BOOT
-       bool "Support i.MX HAB features"
-       depends on ARCH_MX7 || ARCH_MX6 || ARCH_MX5
-       select FSL_CAAM
-       imply CMD_DEKBLOB
-       help
-         This option enables the support for secure boot (HAB).
-         See doc/README.mxc_hab for more details.
-
-config CMD_BMODE
-       bool "Support the 'bmode' command"
-       default y
-       depends on ARCH_MX7 || ARCH_MX6 || ARCH_MX5
-       help
-         This enables the 'bmode' (bootmode) command for forcing
-         a boot from specific media.
-
-         This is useful for forcing the ROM's usb downloader to
-         activate upon a watchdog reset which is nice when iterating
-         on U-Boot.  Using the reset button or running bmode normal
-         will set it back to normal.  This command currently
-         supports i.MX53 and i.MX6.
-
-config CMD_DEKBLOB
-       bool "Support the 'dek_blob' command"
-       help
-         This enables the 'dek_blob' command which is used with the
-         Freescale secure boot mechanism. This command encapsulates and
-         creates a blob of data. See also CMD_BLOB and doc/README.mxc_hab for
-         more information.
-
-config CMD_HDMIDETECT
-       bool "Support the 'hdmidet' command"
-       help
-         This enables the 'hdmidet' command which detects if an HDMI monitor
-         is connected.
diff --git a/arch/arm/imx-common/Makefile b/arch/arm/imx-common/Makefile
deleted file mode 100644 (file)
index fc69172..0000000
+++ /dev/null
@@ -1,122 +0,0 @@
-#
-# (C) Copyright 2000-2006
-# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
-#
-# (C) Copyright 2011 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-ifeq ($(SOC),$(filter $(SOC),mx25 mx35 mx5 mx6 mx7 vf610))
-obj-y  = iomux-v3.o
-endif
-ifeq ($(SOC),$(filter $(SOC),mx5 mx6))
-obj-y  += timer.o cpu.o speed.o
-obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o
-endif
-ifeq ($(SOC),$(filter $(SOC),mx7 mx6 mxs))
-obj-y  += misc.o
-obj-$(CONFIG_SPL_BUILD)        += spl.o
-endif
-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_SATA) += sata.o
-obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o
-obj-$(CONFIG_IMX_RDC) += rdc-sema.o
-obj-$(CONFIG_IMX_BOOTAUX) += imx_bootaux.o
-obj-$(CONFIG_SECURE_BOOT)    += hab.o
-endif
-ifeq ($(SOC),$(filter $(SOC),mx7ulp))
-obj-y  += cache.o
-obj-$(CONFIG_SECURE_BOOT) += hab.o
-endif
-ifeq ($(SOC),$(filter $(SOC),vf610))
-obj-y += ddrmc-vf610.o
-endif
-ifneq ($(CONFIG_SPL_BUILD),y)
-obj-$(CONFIG_CMD_BMODE) += cmd_bmode.o
-obj-$(CONFIG_CMD_HDMIDETECT) += cmd_hdmidet.o
-obj-$(CONFIG_CMD_DEKBLOB) += cmd_dek.o
-endif
-
-PLUGIN = board/$(BOARDDIR)/plugin
-
-ifeq ($(CONFIG_USE_IMXIMG_PLUGIN),y)
-
-$(PLUGIN).o: $(PLUGIN).S FORCE
-       $(Q)mkdir -p $(dir $@)
-       $(call if_changed_dep,as_o_S)
-
-$(PLUGIN).bin: $(PLUGIN).o FORCE
-       $(Q)mkdir -p $(dir $@)
-       $(OBJCOPY) -O binary --gap-fill 0xff $< $@
-else
-
-$(PLUGIN).bin:
-
-endif
-
-quiet_cmd_cpp_cfg = CFGS    $@
-      cmd_cpp_cfg = $(CPP) $(cpp_flags) -x c -o $@ $<
-
-IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%).cfgtmp
-
-$(IMX_CONFIG): %.cfgtmp: % FORCE
-       $(Q)mkdir -p $(dir $@)
-       $(call if_changed_dep,cpp_cfg)
-
-MKIMAGEFLAGS_u-boot.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \
-       -e $(CONFIG_SYS_TEXT_BASE)
-u-boot.imx: MKIMAGEOUTPUT = u-boot.imx.log
-
-u-boot.imx: u-boot.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
-       $(call if_changed,mkimage)
-
-ifeq ($(CONFIG_OF_SEPARATE),y)
-MKIMAGEFLAGS_u-boot-dtb.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \
-       -e $(CONFIG_SYS_TEXT_BASE)
-u-boot-dtb.imx: MKIMAGEOUTPUT = u-boot-dtb.imx.log
-
-u-boot-dtb.imx: u-boot-dtb.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
-       $(call if_changed,mkimage)
-endif
-
-MKIMAGEFLAGS_SPL = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \
-       -e $(CONFIG_SPL_TEXT_BASE)
-
-SPL: MKIMAGEOUTPUT = SPL.log
-
-SPL: spl/u-boot-spl.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
-       $(call if_changed,mkimage)
-
-MKIMAGEFLAGS_u-boot.uim = -A arm -O U-Boot -a $(CONFIG_SYS_TEXT_BASE) \
-               -e $(CONFIG_SYS_TEXT_BASE) -C none -T firmware
-
-u-boot.uim: u-boot.bin FORCE
-       $(call if_changed,mkimage)
-
-OBJCOPYFLAGS += -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
-append = cat $(filter-out $< $(PHONY), $^) >> $@
-
-quiet_cmd_pad_cat = CAT     $@
-cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
-
-u-boot-with-spl.imx: SPL u-boot.uim FORCE
-       $(call if_changed,pad_cat)
-
-u-boot-with-nand-spl.imx: spl/u-boot-nand-spl.imx u-boot.uim FORCE
-       $(call if_changed,pad_cat)
-
-quiet_cmd_u-boot-nand-spl_imx = GEN     $@
-cmd_u-boot-nand-spl_imx = (printf '\000\000\000\000\106\103\102\040\001' && \
-       dd bs=1015 count=1 if=/dev/zero 2>/dev/null) | cat - $< > $@
-
-spl/u-boot-nand-spl.imx: SPL FORCE
-       $(call if_changed,u-boot-nand-spl_imx)
-
-targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx)
diff --git a/arch/arm/imx-common/cache.c b/arch/arm/imx-common/cache.c
deleted file mode 100644 (file)
index 1c4a9a2..0000000
+++ /dev/null
@@ -1,107 +0,0 @@
-/*
- * 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>
-#include <asm/imx-common/sys_proto.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;
-       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       unsigned int val;
-
-
-       /*
-        * Must disable the L2 before changing the latency parameters
-        * and auxiliary control register.
-        */
-       clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
-
-       /*
-        * 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 (is_mx6sl() || is_mx6sll()) {
-               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]);
-               }
-       }
-
-       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 */
diff --git a/arch/arm/imx-common/cmd_bmode.c b/arch/arm/imx-common/cmd_bmode.c
deleted file mode 100644 (file)
index b0868aa..0000000
+++ /dev/null
@@ -1,106 +0,0 @@
-/*
- * Copyright (C) 2012 Boundary Devices Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <linux/errno.h>
-#include <asm/io.h>
-#include <asm/imx-common/boot_mode.h>
-#include <malloc.h>
-#include <command.h>
-
-static const struct boot_mode *modes[2];
-
-static const struct boot_mode *search_modes(char *arg)
-{
-       int i;
-
-       for (i = 0; i < ARRAY_SIZE(modes); i++) {
-               const struct boot_mode *p = modes[i];
-               if (p) {
-                       while (p->name) {
-                               if (!strcmp(p->name, arg))
-                                       return p;
-                               p++;
-                       }
-               }
-       }
-       return NULL;
-}
-
-static int create_usage(char *dest)
-{
-       int i;
-       int size = 0;
-
-       for (i = 0; i < ARRAY_SIZE(modes); i++) {
-               const struct boot_mode *p = modes[i];
-               if (p) {
-                       while (p->name) {
-                               int len = strlen(p->name);
-                               if (dest) {
-                                       memcpy(dest, p->name, len);
-                                       dest += len;
-                                       *dest++ = '|';
-                               }
-                               size += len + 1;
-                               p++;
-                       }
-               }
-       }
-       if (dest)
-               memcpy(dest - 1, " [noreset]", 11);     /* include trailing 0 */
-       size += 10;
-       return size;
-}
-
-static int do_boot_mode(cmd_tbl_t *cmdtp, int flag, int argc,
-               char * const argv[])
-{
-       const struct boot_mode *p;
-       int reset_requested = 1;
-
-       if (argc < 2)
-               return CMD_RET_USAGE;
-       p = search_modes(argv[1]);
-       if (!p)
-               return CMD_RET_USAGE;
-       if (argc == 3) {
-               if (strcmp(argv[2], "noreset"))
-                       return CMD_RET_USAGE;
-               reset_requested = 0;
-       }
-
-       boot_mode_apply(p->cfg_val);
-       if (reset_requested && p->cfg_val)
-               do_reset(NULL, 0, 0, NULL);
-       return 0;
-}
-
-U_BOOT_CMD(
-       bmode, 3, 0, do_boot_mode,
-       NULL,
-       "");
-
-void add_board_boot_modes(const struct boot_mode *p)
-{
-       int size;
-       char *dest;
-
-       cmd_tbl_t *entry = ll_entry_get(cmd_tbl_t, bmode, cmd);
-
-       if (entry->usage) {
-               free(entry->usage);
-               entry->usage = NULL;
-       }
-
-       modes[0] = p;
-       modes[1] = soc_boot_modes;
-       size = create_usage(NULL);
-       dest = malloc(size);
-       if (dest) {
-               create_usage(dest);
-               entry->usage = dest;
-       }
-}
diff --git a/arch/arm/imx-common/cmd_dek.c b/arch/arm/imx-common/cmd_dek.c
deleted file mode 100644 (file)
index ada8adf..0000000
+++ /dev/null
@@ -1,92 +0,0 @@
-/*
- * Copyright 2008-2015 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier: GPL-2.0+
- *
- * Command for encapsulating DEK blob
- */
-
-#include <common.h>
-#include <command.h>
-#include <environment.h>
-#include <malloc.h>
-#include <asm/byteorder.h>
-#include <linux/compiler.h>
-#include <fsl_sec.h>
-#include <asm/arch/clock.h>
-#include <mapmem.h>
-
-DECLARE_GLOBAL_DATA_PTR;
-
-/**
-* blob_dek() - Encapsulate the DEK as a blob using CAM's Key
-* @src: - Address of data to be encapsulated
-* @dst: - Desination address of encapsulated data
-* @len: - Size of data to be encapsulated
-*
-* Returns zero on success,and negative on error.
-*/
-static int blob_encap_dek(const u8 *src, u8 *dst, u32 len)
-{
-       int ret = 0;
-       u32 jr_size = 4;
-
-       u32 out_jr_size = sec_in32(CONFIG_SYS_FSL_JR0_ADDR + 0x102c);
-       if (out_jr_size != jr_size) {
-               hab_caam_clock_enable(1);
-               sec_init();
-       }
-
-       if (!((len == 128) | (len == 192) | (len == 256))) {
-               debug("Invalid DEK size. Valid sizes are 128, 192 and 256b\n");
-               return -1;
-       }
-
-       len /= 8;
-       ret = blob_dek(src, dst, len);
-
-       return ret;
-}
-
-/**
- * do_dek_blob() - Handle the "dek_blob" command-line command
- * @cmdtp:  Command data struct pointer
- * @flag:   Command flag
- * @argc:   Command-line argument count
- * @argv:   Array of command-line arguments
- *
- * Returns zero on success, CMD_RET_USAGE in case of misuse and negative
- * on error.
- */
-static int do_dek_blob(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
-{
-       uint32_t src_addr, dst_addr, len;
-       uint8_t *src_ptr, *dst_ptr;
-       int ret = 0;
-
-       if (argc != 4)
-               return CMD_RET_USAGE;
-
-       src_addr = simple_strtoul(argv[1], NULL, 16);
-       dst_addr = simple_strtoul(argv[2], NULL, 16);
-       len = simple_strtoul(argv[3], NULL, 10);
-
-       src_ptr = map_sysmem(src_addr, len/8);
-       dst_ptr = map_sysmem(dst_addr, BLOB_SIZE(len/8));
-
-       ret = blob_encap_dek(src_ptr, dst_ptr, len);
-
-       return ret;
-}
-
-/***************************************************/
-static char dek_blob_help_text[] =
-       "src dst len            - Encapsulate and create blob of data\n"
-       "                         $len bits long at address $src and\n"
-       "                         store the result at address $dst.\n";
-
-U_BOOT_CMD(
-       dek_blob, 4, 1, do_dek_blob,
-       "Data Encryption Key blob encapsulation",
-       dek_blob_help_text
-);
diff --git a/arch/arm/imx-common/cmd_hdmidet.c b/arch/arm/imx-common/cmd_hdmidet.c
deleted file mode 100644 (file)
index e9fd955..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2012 Boundary Devices Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/mxc_hdmi.h>
-#include <asm/io.h>
-
-static int do_hdmidet(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
-       return (readb(&hdmi->phy_stat0) & HDMI_DVI_STAT) ? 0 : 1;
-}
-
-U_BOOT_CMD(hdmidet, 1, 1, do_hdmidet,
-       "detect HDMI monitor",
-       ""
-);
diff --git a/arch/arm/imx-common/cpu.c b/arch/arm/imx-common/cpu.c
deleted file mode 100644 (file)
index 9e83b42..0000000
+++ /dev/null
@@ -1,325 +0,0 @@
-/*
- * (C) Copyright 2007
- * Sascha Hauer, Pengutronix
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <bootm.h>
-#include <common.h>
-#include <netdev.h>
-#include <linux/errno.h>
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/crm_regs.h>
-#include <imx_thermal.h>
-#include <ipu_pixfmt.h>
-#include <thermal.h>
-#include <sata.h>
-
-#ifdef CONFIG_FSL_ESDHC
-#include <fsl_esdhc.h>
-#endif
-
-#if defined(CONFIG_DISPLAY_CPUINFO)
-static u32 reset_cause = -1;
-
-static char *get_reset_cause(void)
-{
-       u32 cause;
-       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
-
-       cause = readl(&src_regs->srsr);
-       writel(cause, &src_regs->srsr);
-       reset_cause = cause;
-
-       switch (cause) {
-       case 0x00001:
-       case 0x00011:
-               return "POR";
-       case 0x00004:
-               return "CSU";
-       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";
-       }
-}
-
-u32 get_imx_reset_cause(void)
-{
-       return reset_cause;
-}
-#endif
-
-#if defined(CONFIG_MX53) || defined(CONFIG_MX6)
-#if defined(CONFIG_MX53)
-#define MEMCTL_BASE    ESDCTL_BASE_ADDR
-#else
-#define MEMCTL_BASE    MMDC_P0_BASE_ADDR
-#endif
-static const unsigned char col_lookup[] = {9, 10, 11, 8, 12, 9, 9, 9};
-static const unsigned char bank_lookup[] = {3, 2};
-
-/* these MMDC registers are common to the IMX53 and IMX6 */
-struct esd_mmdc_regs {
-       uint32_t        ctl;
-       uint32_t        pdc;
-       uint32_t        otc;
-       uint32_t        cfg0;
-       uint32_t        cfg1;
-       uint32_t        cfg2;
-       uint32_t        misc;
-};
-
-#define ESD_MMDC_CTL_GET_ROW(mdctl)    ((ctl >> 24) & 7)
-#define ESD_MMDC_CTL_GET_COLUMN(mdctl) ((ctl >> 20) & 7)
-#define ESD_MMDC_CTL_GET_WIDTH(mdctl)  ((ctl >> 16) & 3)
-#define ESD_MMDC_CTL_GET_CS1(mdctl)    ((ctl >> 30) & 1)
-#define ESD_MMDC_MISC_GET_BANK(mdmisc) ((misc >> 5) & 1)
-
-/*
- * imx_ddr_size - return size in bytes of DRAM according MMDC config
- * The MMDC MDCTL register holds the number of bits for row, col, and data
- * width and the MMDC MDMISC register holds the number of banks. Combine
- * all these bits to determine the meme size the MMDC has been configured for
- */
-unsigned imx_ddr_size(void)
-{
-       struct esd_mmdc_regs *mem = (struct esd_mmdc_regs *)MEMCTL_BASE;
-       unsigned ctl = readl(&mem->ctl);
-       unsigned misc = readl(&mem->misc);
-       int bits = 11 + 0 + 0 + 1;      /* row + col + bank + width */
-
-       bits += ESD_MMDC_CTL_GET_ROW(ctl);
-       bits += col_lookup[ESD_MMDC_CTL_GET_COLUMN(ctl)];
-       bits += bank_lookup[ESD_MMDC_MISC_GET_BANK(misc)];
-       bits += ESD_MMDC_CTL_GET_WIDTH(ctl);
-       bits += ESD_MMDC_CTL_GET_CS1(ctl);
-
-       /* The MX6 can do only 3840 MiB of DRAM */
-       if (bits == 32)
-               return 0xf0000000;
-
-       return 1 << bits;
-}
-#endif
-
-#if defined(CONFIG_DISPLAY_CPUINFO)
-
-const char *get_imx_type(u32 imxtype)
-{
-       switch (imxtype) {
-       case MXC_CPU_MX7S:
-               return "7S";    /* Single-core version of the mx7 */
-       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:
-               return "6DP";   /* Dual-Plus version of the mx6 */
-       case MXC_CPU_MX6Q:
-               return "6Q";    /* Quad-core version of the mx6 */
-       case MXC_CPU_MX6D:
-               return "6D";    /* Dual-core version of the mx6 */
-       case MXC_CPU_MX6DL:
-               return "6DL";   /* Dual Lite version of the mx6 */
-       case MXC_CPU_MX6SOLO:
-               return "6SOLO"; /* Solo version of the mx6 */
-       case MXC_CPU_MX6SL:
-               return "6SL";   /* Solo-Lite version of the mx6 */
-       case MXC_CPU_MX6SLL:
-               return "6SLL";  /* SLL version of the mx6 */
-       case MXC_CPU_MX6SX:
-               return "6SX";   /* SoloX version of the mx6 */
-       case MXC_CPU_MX6UL:
-               return "6UL";   /* Ultra-Lite version of the mx6 */
-       case MXC_CPU_MX6ULL:
-               return "6ULL";  /* ULL version of the mx6 */
-       case MXC_CPU_MX51:
-               return "51";
-       case MXC_CPU_MX53:
-               return "53";
-       default:
-               return "??";
-       }
-}
-
-int print_cpuinfo(void)
-{
-       u32 cpurev;
-       __maybe_unused u32 max_freq;
-
-       cpurev = get_cpu_rev();
-
-#if defined(CONFIG_IMX_THERMAL)
-       struct udevice *thermal_dev;
-       int cpu_tmp, minc, maxc, ret;
-
-       printf("CPU:   Freescale i.MX%s rev%d.%d",
-              get_imx_type((cpurev & 0xFF000) >> 12),
-              (cpurev & 0x000F0) >> 4,
-              (cpurev & 0x0000F) >> 0);
-       max_freq = get_cpu_speed_grade_hz();
-       if (!max_freq || max_freq == mxc_get_clock(MXC_ARM_CLK)) {
-               printf(" at %dMHz\n", mxc_get_clock(MXC_ARM_CLK) / 1000000);
-       } else {
-               printf(" %d MHz (running at %d MHz)\n", max_freq / 1000000,
-                      mxc_get_clock(MXC_ARM_CLK) / 1000000);
-       }
-#else
-       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);
-#endif
-
-#if defined(CONFIG_IMX_THERMAL)
-       puts("CPU:   ");
-       switch (get_cpu_temp_grade(&minc, &maxc)) {
-       case TEMP_AUTOMOTIVE:
-               puts("Automotive temperature grade ");
-               break;
-       case TEMP_INDUSTRIAL:
-               puts("Industrial temperature grade ");
-               break;
-       case TEMP_EXTCOMMERCIAL:
-               puts("Extended Commercial temperature grade ");
-               break;
-       default:
-               puts("Commercial temperature grade ");
-               break;
-       }
-       printf("(%dC to %dC)", minc, maxc);
-       ret = uclass_get_device(UCLASS_THERMAL, 0, &thermal_dev);
-       if (!ret) {
-               ret = thermal_get_temp(thermal_dev, &cpu_tmp);
-
-               if (!ret)
-                       printf(" at %dC\n", cpu_tmp);
-               else
-                       debug(" - invalid sensor data\n");
-       } else {
-               debug(" - invalid sensor device\n");
-       }
-#endif
-
-       printf("Reset cause: %s\n", get_reset_cause());
-       return 0;
-}
-#endif
-
-int cpu_eth_init(bd_t *bis)
-{
-       int rc = -ENODEV;
-
-#if defined(CONFIG_FEC_MXC)
-       rc = fecmxc_initialize(bis);
-#endif
-
-       return rc;
-}
-
-#ifdef CONFIG_FSL_ESDHC
-/*
- * Initializes on-chip MMC controllers.
- * to override, implement board_mmc_init()
- */
-int cpu_mmc_init(bd_t *bis)
-{
-       return fsl_esdhc_mmc_init(bis);
-}
-#endif
-
-#ifndef CONFIG_MX7
-u32 get_ahb_clk(void)
-{
-       struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       u32 reg, ahb_podf;
-
-       reg = __raw_readl(&imx_ccm->cbcdr);
-       reg &= MXC_CCM_CBCDR_AHB_PODF_MASK;
-       ahb_podf = reg >> MXC_CCM_CBCDR_AHB_PODF_OFFSET;
-
-       return get_periph_clk() / (ahb_podf + 1);
-}
-#endif
-
-void arch_preboot_os(void)
-{
-#if defined(CONFIG_PCIE_IMX)
-       imx_pcie_remove();
-#endif
-#if defined(CONFIG_SATA)
-       sata_stop();
-#if defined(CONFIG_MX6)
-       disable_sata_clock();
-#endif
-#endif
-#if defined(CONFIG_VIDEO_IPUV3)
-       /* disable video before launching O/S */
-       ipuv3_fb_shutdown();
-#endif
-#if defined(CONFIG_VIDEO_MXS)
-       lcdif_power_down();
-#endif
-}
-
-void set_chipselect_size(int const cs_size)
-{
-       unsigned int reg;
-       struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       reg = readl(&iomuxc_regs->gpr[1]);
-
-       switch (cs_size) {
-       case CS0_128:
-               reg &= ~0x7;    /* CS0=128MB, CS1=0, CS2=0, CS3=0 */
-               reg |= 0x5;
-               break;
-       case CS0_64M_CS1_64M:
-               reg &= ~0x3F;   /* CS0=64MB, CS1=64MB, CS2=0, CS3=0 */
-               reg |= 0x1B;
-               break;
-       case CS0_64M_CS1_32M_CS2_32M:
-               reg &= ~0x1FF;  /* CS0=64MB, CS1=32MB, CS2=32MB, CS3=0 */
-               reg |= 0x4B;
-               break;
-       case CS0_32M_CS1_32M_CS2_32M_CS3_32M:
-               reg &= ~0xFFF;  /* CS0=32MB, CS1=32MB, CS2=32MB, CS3=32MB */
-               reg |= 0x249;
-               break;
-       default:
-               printf("Unknown chip select size: %d\n", cs_size);
-               break;
-       }
-
-       writel(reg, &iomuxc_regs->gpr[1]);
-}
diff --git a/arch/arm/imx-common/ddrmc-vf610.c b/arch/arm/imx-common/ddrmc-vf610.c
deleted file mode 100644 (file)
index 9bc56f6..0000000
+++ /dev/null
@@ -1,237 +0,0 @@
-/*
- * Copyright 2015 Toradex, Inc.
- *
- * Based on vf610twr:
- * Copyright 2013 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/iomux-vf610.h>
-#include <asm/arch/ddrmc-vf610.h>
-
-void ddrmc_setup_iomux(const iomux_v3_cfg_t *pads, int pads_count)
-{
-       static const iomux_v3_cfg_t default_pads[] = {
-               VF610_PAD_DDR_A15__DDR_A_15,
-               VF610_PAD_DDR_A14__DDR_A_14,
-               VF610_PAD_DDR_A13__DDR_A_13,
-               VF610_PAD_DDR_A12__DDR_A_12,
-               VF610_PAD_DDR_A11__DDR_A_11,
-               VF610_PAD_DDR_A10__DDR_A_10,
-               VF610_PAD_DDR_A9__DDR_A_9,
-               VF610_PAD_DDR_A8__DDR_A_8,
-               VF610_PAD_DDR_A7__DDR_A_7,
-               VF610_PAD_DDR_A6__DDR_A_6,
-               VF610_PAD_DDR_A5__DDR_A_5,
-               VF610_PAD_DDR_A4__DDR_A_4,
-               VF610_PAD_DDR_A3__DDR_A_3,
-               VF610_PAD_DDR_A2__DDR_A_2,
-               VF610_PAD_DDR_A1__DDR_A_1,
-               VF610_PAD_DDR_A0__DDR_A_0,
-               VF610_PAD_DDR_BA2__DDR_BA_2,
-               VF610_PAD_DDR_BA1__DDR_BA_1,
-               VF610_PAD_DDR_BA0__DDR_BA_0,
-               VF610_PAD_DDR_CAS__DDR_CAS_B,
-               VF610_PAD_DDR_CKE__DDR_CKE_0,
-               VF610_PAD_DDR_CLK__DDR_CLK_0,
-               VF610_PAD_DDR_CS__DDR_CS_B_0,
-               VF610_PAD_DDR_D15__DDR_D_15,
-               VF610_PAD_DDR_D14__DDR_D_14,
-               VF610_PAD_DDR_D13__DDR_D_13,
-               VF610_PAD_DDR_D12__DDR_D_12,
-               VF610_PAD_DDR_D11__DDR_D_11,
-               VF610_PAD_DDR_D10__DDR_D_10,
-               VF610_PAD_DDR_D9__DDR_D_9,
-               VF610_PAD_DDR_D8__DDR_D_8,
-               VF610_PAD_DDR_D7__DDR_D_7,
-               VF610_PAD_DDR_D6__DDR_D_6,
-               VF610_PAD_DDR_D5__DDR_D_5,
-               VF610_PAD_DDR_D4__DDR_D_4,
-               VF610_PAD_DDR_D3__DDR_D_3,
-               VF610_PAD_DDR_D2__DDR_D_2,
-               VF610_PAD_DDR_D1__DDR_D_1,
-               VF610_PAD_DDR_D0__DDR_D_0,
-               VF610_PAD_DDR_DQM1__DDR_DQM_1,
-               VF610_PAD_DDR_DQM0__DDR_DQM_0,
-               VF610_PAD_DDR_DQS1__DDR_DQS_1,
-               VF610_PAD_DDR_DQS0__DDR_DQS_0,
-               VF610_PAD_DDR_RAS__DDR_RAS_B,
-               VF610_PAD_DDR_WE__DDR_WE_B,
-               VF610_PAD_DDR_ODT1__DDR_ODT_0,
-               VF610_PAD_DDR_ODT0__DDR_ODT_1,
-               VF610_PAD_DDR_RESETB,
-       };
-
-       if ((pads == NULL) || (pads_count == 0)) {
-               pads = default_pads;
-               pads_count = ARRAY_SIZE(default_pads);
-       }
-
-       imx_iomux_v3_setup_multiple_pads(pads, pads_count);
-}
-
-static struct ddrmc_phy_setting default_phy_settings[] = {
-       { DDRMC_PHY_DQ_TIMING,  0 },
-       { DDRMC_PHY_DQ_TIMING, 16 },
-       { DDRMC_PHY_DQ_TIMING, 32 },
-
-       { DDRMC_PHY_DQS_TIMING,  1 },
-       { DDRMC_PHY_DQS_TIMING, 17 },
-
-       { DDRMC_PHY_CTRL,  2 },
-       { DDRMC_PHY_CTRL, 18 },
-       { DDRMC_PHY_CTRL, 34 },
-
-       { DDRMC_PHY_MASTER_CTRL,  3 },
-       { DDRMC_PHY_MASTER_CTRL, 19 },
-       { DDRMC_PHY_MASTER_CTRL, 35 },
-
-       { DDRMC_PHY_SLAVE_CTRL,  4 },
-       { DDRMC_PHY_SLAVE_CTRL, 20 },
-       { DDRMC_PHY_SLAVE_CTRL, 36 },
-
-       /* LPDDR2 only parameter */
-       { DDRMC_PHY_OFF, 49 },
-
-       { DDRMC_PHY50_DDR3_MODE | DDRMC_PHY50_EN_SW_HALF_CYCLE, 50 },
-
-       /* Processor Pad ODT settings */
-       { DDRMC_PHY_PROC_PAD_ODT, 52 },
-
-       /* end marker */
-       { 0, -1 }
-};
-
-void ddrmc_ctrl_init_ddr3(struct ddr3_jedec_timings const *timings,
-                         struct ddrmc_cr_setting *board_cr_settings,
-                         struct ddrmc_phy_setting *board_phy_settings,
-                         int col_diff, int row_diff)
-{
-       struct ddrmr_regs *ddrmr = (struct ddrmr_regs *)DDR_BASE_ADDR;
-       struct ddrmc_cr_setting *cr_setting;
-       struct ddrmc_phy_setting *phy_setting;
-
-       writel(DDRMC_CR00_DRAM_CLASS_DDR3, &ddrmr->cr[0]);
-       writel(DDRMC_CR02_DRAM_TINIT(timings->tinit), &ddrmr->cr[2]);
-       writel(DDRMC_CR10_TRST_PWRON(timings->trst_pwron), &ddrmr->cr[10]);
-
-       writel(DDRMC_CR11_CKE_INACTIVE(timings->cke_inactive), &ddrmr->cr[11]);
-       writel(DDRMC_CR12_WRLAT(timings->wrlat) |
-                  DDRMC_CR12_CASLAT_LIN(timings->caslat_lin), &ddrmr->cr[12]);
-       writel(DDRMC_CR13_TRC(timings->trc) | DDRMC_CR13_TRRD(timings->trrd) |
-                  DDRMC_CR13_TCCD(timings->tccd) |
-                  DDRMC_CR13_TBST_INT_INTERVAL(timings->tbst_int_interval),
-                  &ddrmr->cr[13]);
-       writel(DDRMC_CR14_TFAW(timings->tfaw) | DDRMC_CR14_TRP(timings->trp) |
-                  DDRMC_CR14_TWTR(timings->twtr) |
-                  DDRMC_CR14_TRAS_MIN(timings->tras_min), &ddrmr->cr[14]);
-       writel(DDRMC_CR16_TMRD(timings->tmrd) |
-                  DDRMC_CR16_TRTP(timings->trtp), &ddrmr->cr[16]);
-       writel(DDRMC_CR17_TRAS_MAX(timings->tras_max) |
-                  DDRMC_CR17_TMOD(timings->tmod), &ddrmr->cr[17]);
-       writel(DDRMC_CR18_TCKESR(timings->tckesr) |
-                  DDRMC_CR18_TCKE(timings->tcke), &ddrmr->cr[18]);
-
-       writel(DDRMC_CR20_AP_EN, &ddrmr->cr[20]);
-       writel(DDRMC_CR21_TRCD_INT(timings->trcd_int) | DDRMC_CR21_CCMAP_EN |
-                  DDRMC_CR21_TRAS_LOCKOUT(timings->tras_lockout),
-                  &ddrmr->cr[21]);
-
-       writel(DDRMC_CR22_TDAL(timings->tdal), &ddrmr->cr[22]);
-       writel(DDRMC_CR23_BSTLEN(timings->bstlen) |
-                  DDRMC_CR23_TDLL(timings->tdll), &ddrmr->cr[23]);
-       writel(DDRMC_CR24_TRP_AB(timings->trp_ab), &ddrmr->cr[24]);
-
-       writel(DDRMC_CR25_TREF_EN, &ddrmr->cr[25]);
-       writel(DDRMC_CR26_TREF(timings->tref) |
-                  DDRMC_CR26_TRFC(timings->trfc), &ddrmr->cr[26]);
-       writel(DDRMC_CR28_TREF_INT(timings->tref_int), &ddrmr->cr[28]);
-       writel(DDRMC_CR29_TPDEX(timings->tpdex), &ddrmr->cr[29]);
-
-       writel(DDRMC_CR30_TXPDLL(timings->txpdll), &ddrmr->cr[30]);
-       writel(DDRMC_CR31_TXSNR(timings->txsnr) |
-                  DDRMC_CR31_TXSR(timings->txsr), &ddrmr->cr[31]);
-       writel(DDRMC_CR33_EN_QK_SREF, &ddrmr->cr[33]);
-       writel(DDRMC_CR34_CKSRX(timings->cksrx) |
-                  DDRMC_CR34_CKSRE(timings->cksre), &ddrmr->cr[34]);
-
-       writel(DDRMC_CR38_FREQ_CHG_EN(timings->freq_chg_en), &ddrmr->cr[38]);
-       writel(DDRMC_CR39_PHY_INI_COM(1024) | DDRMC_CR39_PHY_INI_STA(16) |
-                  DDRMC_CR39_FRQ_CH_DLLOFF(2), &ddrmr->cr[39]);
-
-       writel(DDRMC_CR41_PHY_INI_STRT_INI_DIS, &ddrmr->cr[41]);
-       writel(DDRMC_CR48_MR1_DA_0(70) |
-                  DDRMC_CR48_MR0_DA_0(1056), &ddrmr->cr[48]);
-
-       writel(DDRMC_CR66_ZQCL(timings->zqcl) |
-                  DDRMC_CR66_ZQINIT(timings->zqinit), &ddrmr->cr[66]);
-       writel(DDRMC_CR67_ZQCS(timings->zqcs), &ddrmr->cr[67]);
-       writel(DDRMC_CR69_ZQ_ON_SREF_EX(2), &ddrmr->cr[69]);
-
-       writel(DDRMC_CR70_REF_PER_ZQ(timings->ref_per_zq), &ddrmr->cr[70]);
-       writel(DDRMC_CR72_ZQCS_ROTATE(timings->zqcs_rotate), &ddrmr->cr[72]);
-
-       writel(DDRMC_CR73_APREBIT(timings->aprebit) |
-                  DDRMC_CR73_COL_DIFF(col_diff) |
-                  DDRMC_CR73_ROW_DIFF(row_diff), &ddrmr->cr[73]);
-       writel(DDRMC_CR74_BANKSPLT_EN | DDRMC_CR74_ADDR_CMP_EN |
-                  DDRMC_CR74_CMD_AGE_CNT(timings->cmd_age_cnt) |
-                  DDRMC_CR74_AGE_CNT(timings->age_cnt),
-                  &ddrmr->cr[74]);
-       writel(DDRMC_CR75_RW_PG_EN | DDRMC_CR75_RW_EN | DDRMC_CR75_PRI_EN |
-                  DDRMC_CR75_PLEN, &ddrmr->cr[75]);
-       writel(DDRMC_CR76_NQENT_ACTDIS(3) | DDRMC_CR76_D_RW_G_BKCN(3) |
-                  DDRMC_CR76_W2R_SPLT_EN, &ddrmr->cr[76]);
-       writel(DDRMC_CR77_CS_MAP | DDRMC_CR77_DI_RD_INTLEAVE |
-                  DDRMC_CR77_SWAP_EN, &ddrmr->cr[77]);
-       writel(DDRMC_CR78_Q_FULLNESS(timings->q_fullness) |
-                  DDRMC_CR78_BUR_ON_FLY_BIT(12), &ddrmr->cr[78]);
-       writel(DDRMC_CR79_CTLUPD_AREF(0), &ddrmr->cr[79]);
-
-       writel(DDRMC_CR82_INT_MASK, &ddrmr->cr[82]);
-
-       writel(DDRMC_CR87_ODT_RD_MAPCS0(timings->odt_rd_mapcs0) |
-                  DDRMC_CR87_ODT_WR_MAPCS0(timings->odt_wr_mapcs0),
-                  &ddrmr->cr[87]);
-       writel(DDRMC_CR88_TODTL_CMD(4), &ddrmr->cr[88]);
-       writel(DDRMC_CR89_AODT_RWSMCS(2), &ddrmr->cr[89]);
-
-       writel(DDRMC_CR91_R2W_SMCSDL(2), &ddrmr->cr[91]);
-       writel(DDRMC_CR96_WLMRD(timings->wlmrd) |
-                  DDRMC_CR96_WLDQSEN(timings->wldqsen), &ddrmr->cr[96]);
-
-       /* execute custom CR setting sequence (may be NULL) */
-       cr_setting = board_cr_settings;
-       if (cr_setting != NULL)
-               while (cr_setting->cr_rnum >= 0) {
-                       writel(cr_setting->setting,
-                              &ddrmr->cr[cr_setting->cr_rnum]);
-                       cr_setting++;
-               }
-
-       /* perform default PHY settings (may be overridden by custom settings */
-       phy_setting = default_phy_settings;
-       while (phy_setting->phy_rnum >= 0) {
-               writel(phy_setting->setting,
-                      &ddrmr->phy[phy_setting->phy_rnum]);
-               phy_setting++;
-       }
-
-       /* execute custom PHY setting sequence (may be NULL) */
-       phy_setting = board_phy_settings;
-       if (phy_setting != NULL)
-               while (phy_setting->phy_rnum >= 0) {
-                       writel(phy_setting->setting,
-                              &ddrmr->phy[phy_setting->phy_rnum]);
-                       phy_setting++;
-               }
-
-       /* all inits done, start the DDR controller */
-       writel(DDRMC_CR00_DRAM_CLASS_DDR3 | DDRMC_CR00_START, &ddrmr->cr[0]);
-
-       while (!(readl(&ddrmr->cr[80]) && 0x100))
-               udelay(10);
-}
diff --git a/arch/arm/imx-common/hab.c b/arch/arm/imx-common/hab.c
deleted file mode 100644 (file)
index 523d0e3..0000000
+++ /dev/null
@@ -1,516 +0,0 @@
-/*
- * Copyright (C) 2010-2015 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <config.h>
-#include <fuse.h>
-#include <asm/io.h>
-#include <asm/system.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/imx-common/hab.h>
-
-/* -------- start of HAB API updates ------------*/
-
-#define hab_rvt_report_event_p                                 \
-(                                                              \
-       (is_mx6dqp()) ?                                         \
-       ((hab_rvt_report_event_t *)HAB_RVT_REPORT_EVENT_NEW) :  \
-       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
-       ((hab_rvt_report_event_t *)HAB_RVT_REPORT_EVENT_NEW) :  \
-       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
-       ((hab_rvt_report_event_t *)HAB_RVT_REPORT_EVENT_NEW) :  \
-       ((hab_rvt_report_event_t *)HAB_RVT_REPORT_EVENT)        \
-)
-
-#define hab_rvt_report_status_p                                        \
-(                                                              \
-       (is_mx6dqp()) ?                                         \
-       ((hab_rvt_report_status_t *)HAB_RVT_REPORT_STATUS_NEW) :\
-       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
-       ((hab_rvt_report_status_t *)HAB_RVT_REPORT_STATUS_NEW) :\
-       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
-       ((hab_rvt_report_status_t *)HAB_RVT_REPORT_STATUS_NEW) :\
-       ((hab_rvt_report_status_t *)HAB_RVT_REPORT_STATUS)      \
-)
-
-#define hab_rvt_authenticate_image_p                           \
-(                                                              \
-       (is_mx6dqp()) ?                                         \
-       ((hab_rvt_authenticate_image_t *)HAB_RVT_AUTHENTICATE_IMAGE_NEW) : \
-       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
-       ((hab_rvt_authenticate_image_t *)HAB_RVT_AUTHENTICATE_IMAGE_NEW) : \
-       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
-       ((hab_rvt_authenticate_image_t *)HAB_RVT_AUTHENTICATE_IMAGE_NEW) : \
-       ((hab_rvt_authenticate_image_t *)HAB_RVT_AUTHENTICATE_IMAGE)    \
-)
-
-#define hab_rvt_entry_p                                                \
-(                                                              \
-       (is_mx6dqp()) ?                                         \
-       ((hab_rvt_entry_t *)HAB_RVT_ENTRY_NEW) :                \
-       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
-       ((hab_rvt_entry_t *)HAB_RVT_ENTRY_NEW) :                \
-       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
-       ((hab_rvt_entry_t *)HAB_RVT_ENTRY_NEW) :                \
-       ((hab_rvt_entry_t *)HAB_RVT_ENTRY)                      \
-)
-
-#define hab_rvt_exit_p                                         \
-(                                                              \
-       (is_mx6dqp()) ?                                         \
-       ((hab_rvt_exit_t *)HAB_RVT_EXIT_NEW) :                  \
-       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
-       ((hab_rvt_exit_t *)HAB_RVT_EXIT_NEW) :                  \
-       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
-       ((hab_rvt_exit_t *)HAB_RVT_EXIT_NEW) :                  \
-       ((hab_rvt_exit_t *)HAB_RVT_EXIT)                        \
-)
-
-#define IVT_SIZE               0x20
-#define ALIGN_SIZE             0x1000
-#define CSF_PAD_SIZE           0x2000
-#define MX6DQ_PU_IROM_MMU_EN_VAR       0x009024a8
-#define MX6DLS_PU_IROM_MMU_EN_VAR      0x00901dd0
-#define MX6SL_PU_IROM_MMU_EN_VAR       0x00900a18
-#define IS_HAB_ENABLED_BIT \
-       (is_soc_type(MXC_SOC_MX7ULP) ? 0x80000000 :     \
-        (is_soc_type(MXC_SOC_MX7) ? 0x2000000 : 0x2))
-
-/*
- * +------------+  0x0 (DDR_UIMAGE_START) -
- * |   Header   |                          |
- * +------------+  0x40                    |
- * |            |                          |
- * |            |                          |
- * |            |                          |
- * |            |                          |
- * | Image Data |                          |
- * .            |                          |
- * .            |                           > Stuff to be authenticated ----+
- * .            |                          |                                |
- * |            |                          |                                |
- * |            |                          |                                |
- * +------------+                          |                                |
- * |            |                          |                                |
- * | Fill Data  |                          |                                |
- * |            |                          |                                |
- * +------------+ Align to ALIGN_SIZE      |                                |
- * |    IVT     |                          |                                |
- * +------------+ + IVT_SIZE              -                                 |
- * |            |                                                           |
- * |  CSF DATA  | <---------------------------------------------------------+
- * |            |
- * +------------+
- * |            |
- * | Fill Data  |
- * |            |
- * +------------+ + CSF_PAD_SIZE
- */
-
-static bool is_hab_enabled(void);
-
-#if !defined(CONFIG_SPL_BUILD)
-
-#define MAX_RECORD_BYTES     (8*1024) /* 4 kbytes */
-
-struct record {
-       uint8_t  tag;                                           /* Tag */
-       uint8_t  len[2];                                        /* Length */
-       uint8_t  par;                                           /* Version */
-       uint8_t  contents[MAX_RECORD_BYTES];/* Record Data */
-       bool     any_rec_flag;
-};
-
-char *rsn_str[] = {"RSN = HAB_RSN_ANY (0x00)\n",
-                                  "RSN = HAB_ENG_FAIL (0x30)\n",
-                                  "RSN = HAB_INV_ADDRESS (0x22)\n",
-                                  "RSN = HAB_INV_ASSERTION (0x0C)\n",
-                                  "RSN = HAB_INV_CALL (0x28)\n",
-                                  "RSN = HAB_INV_CERTIFICATE (0x21)\n",
-                                  "RSN = HAB_INV_COMMAND (0x06)\n",
-                                  "RSN = HAB_INV_CSF (0x11)\n",
-                                  "RSN = HAB_INV_DCD (0x27)\n",
-                                  "RSN = HAB_INV_INDEX (0x0F)\n",
-                                  "RSN = HAB_INV_IVT (0x05)\n",
-                                  "RSN = HAB_INV_KEY (0x1D)\n",
-                                  "RSN = HAB_INV_RETURN (0x1E)\n",
-                                  "RSN = HAB_INV_SIGNATURE (0x18)\n",
-                                  "RSN = HAB_INV_SIZE (0x17)\n",
-                                  "RSN = HAB_MEM_FAIL (0x2E)\n",
-                                  "RSN = HAB_OVR_COUNT (0x2B)\n",
-                                  "RSN = HAB_OVR_STORAGE (0x2D)\n",
-                                  "RSN = HAB_UNS_ALGORITHM (0x12)\n",
-                                  "RSN = HAB_UNS_COMMAND (0x03)\n",
-                                  "RSN = HAB_UNS_ENGINE (0x0A)\n",
-                                  "RSN = HAB_UNS_ITEM (0x24)\n",
-                                  "RSN = HAB_UNS_KEY (0x1B)\n",
-                                  "RSN = HAB_UNS_PROTOCOL (0x14)\n",
-                                  "RSN = HAB_UNS_STATE (0x09)\n",
-                                  "RSN = INVALID\n",
-                                  NULL};
-
-char *sts_str[] = {"STS = HAB_SUCCESS (0xF0)\n",
-                                  "STS = HAB_FAILURE (0x33)\n",
-                                  "STS = HAB_WARNING (0x69)\n",
-                                  "STS = INVALID\n",
-                                  NULL};
-
-char *eng_str[] = {"ENG = HAB_ENG_ANY (0x00)\n",
-                                  "ENG = HAB_ENG_SCC (0x03)\n",
-                                  "ENG = HAB_ENG_RTIC (0x05)\n",
-                                  "ENG = HAB_ENG_SAHARA (0x06)\n",
-                                  "ENG = HAB_ENG_CSU (0x0A)\n",
-                                  "ENG = HAB_ENG_SRTC (0x0C)\n",
-                                  "ENG = HAB_ENG_DCP (0x1B)\n",
-                                  "ENG = HAB_ENG_CAAM (0x1D)\n",
-                                  "ENG = HAB_ENG_SNVS (0x1E)\n",
-                                  "ENG = HAB_ENG_OCOTP (0x21)\n",
-                                  "ENG = HAB_ENG_DTCP (0x22)\n",
-                                  "ENG = HAB_ENG_ROM (0x36)\n",
-                                  "ENG = HAB_ENG_HDCP (0x24)\n",
-                                  "ENG = HAB_ENG_RTL (0x77)\n",
-                                  "ENG = HAB_ENG_SW (0xFF)\n",
-                                  "ENG = INVALID\n",
-                                  NULL};
-
-char *ctx_str[] = {"CTX = HAB_CTX_ANY(0x00)\n",
-                                  "CTX = HAB_CTX_FAB (0xFF)\n",
-                                  "CTX = HAB_CTX_ENTRY (0xE1)\n",
-                                  "CTX = HAB_CTX_TARGET (0x33)\n",
-                                  "CTX = HAB_CTX_AUTHENTICATE (0x0A)\n",
-                                  "CTX = HAB_CTX_DCD (0xDD)\n",
-                                  "CTX = HAB_CTX_CSF (0xCF)\n",
-                                  "CTX = HAB_CTX_COMMAND (0xC0)\n",
-                                  "CTX = HAB_CTX_AUT_DAT (0xDB)\n",
-                                  "CTX = HAB_CTX_ASSERT (0xA0)\n",
-                                  "CTX = HAB_CTX_EXIT (0xEE)\n",
-                                  "CTX = INVALID\n",
-                                  NULL};
-
-uint8_t hab_statuses[5] = {
-       HAB_STS_ANY,
-       HAB_FAILURE,
-       HAB_WARNING,
-       HAB_SUCCESS,
-       -1
-};
-
-uint8_t hab_reasons[26] = {
-       HAB_RSN_ANY,
-       HAB_ENG_FAIL,
-       HAB_INV_ADDRESS,
-       HAB_INV_ASSERTION,
-       HAB_INV_CALL,
-       HAB_INV_CERTIFICATE,
-       HAB_INV_COMMAND,
-       HAB_INV_CSF,
-       HAB_INV_DCD,
-       HAB_INV_INDEX,
-       HAB_INV_IVT,
-       HAB_INV_KEY,
-       HAB_INV_RETURN,
-       HAB_INV_SIGNATURE,
-       HAB_INV_SIZE,
-       HAB_MEM_FAIL,
-       HAB_OVR_COUNT,
-       HAB_OVR_STORAGE,
-       HAB_UNS_ALGORITHM,
-       HAB_UNS_COMMAND,
-       HAB_UNS_ENGINE,
-       HAB_UNS_ITEM,
-       HAB_UNS_KEY,
-       HAB_UNS_PROTOCOL,
-       HAB_UNS_STATE,
-       -1
-};
-
-uint8_t hab_contexts[12] = {
-       HAB_CTX_ANY,
-       HAB_CTX_FAB,
-       HAB_CTX_ENTRY,
-       HAB_CTX_TARGET,
-       HAB_CTX_AUTHENTICATE,
-       HAB_CTX_DCD,
-       HAB_CTX_CSF,
-       HAB_CTX_COMMAND,
-       HAB_CTX_AUT_DAT,
-       HAB_CTX_ASSERT,
-       HAB_CTX_EXIT,
-       -1
-};
-
-uint8_t hab_engines[16] = {
-       HAB_ENG_ANY,
-       HAB_ENG_SCC,
-       HAB_ENG_RTIC,
-       HAB_ENG_SAHARA,
-       HAB_ENG_CSU,
-       HAB_ENG_SRTC,
-       HAB_ENG_DCP,
-       HAB_ENG_CAAM,
-       HAB_ENG_SNVS,
-       HAB_ENG_OCOTP,
-       HAB_ENG_DTCP,
-       HAB_ENG_ROM,
-       HAB_ENG_HDCP,
-       HAB_ENG_RTL,
-       HAB_ENG_SW,
-       -1
-};
-
-static inline uint8_t get_idx(uint8_t *list, uint8_t tgt)
-{
-       uint8_t idx = 0;
-       uint8_t element = list[idx];
-       while (element != -1) {
-               if (element == tgt)
-                       return idx;
-               element = list[++idx];
-       }
-       return -1;
-}
-
-void process_event_record(uint8_t *event_data, size_t bytes)
-{
-       struct record *rec = (struct record *)event_data;
-
-       printf("\n\n%s", sts_str[get_idx(hab_statuses, rec->contents[0])]);
-       printf("%s", rsn_str[get_idx(hab_reasons, rec->contents[1])]);
-       printf("%s", ctx_str[get_idx(hab_contexts, rec->contents[2])]);
-       printf("%s", eng_str[get_idx(hab_engines, rec->contents[3])]);
-}
-
-void display_event(uint8_t *event_data, size_t bytes)
-{
-       uint32_t i;
-
-       if (!(event_data && bytes > 0))
-               return;
-
-       for (i = 0; i < bytes; i++) {
-               if (i == 0)
-                       printf("\t0x%02x", event_data[i]);
-               else if ((i % 8) == 0)
-                       printf("\n\t0x%02x", event_data[i]);
-               else
-                       printf(" 0x%02x", event_data[i]);
-       }
-
-       process_event_record(event_data, bytes);
-}
-
-int get_hab_status(void)
-{
-       uint32_t index = 0; /* Loop index */
-       uint8_t event_data[128]; /* Event data buffer */
-       size_t bytes = sizeof(event_data); /* Event size in bytes */
-       enum hab_config config = 0;
-       enum hab_state state = 0;
-       hab_rvt_report_event_t *hab_rvt_report_event;
-       hab_rvt_report_status_t *hab_rvt_report_status;
-
-       hab_rvt_report_event = hab_rvt_report_event_p;
-       hab_rvt_report_status = hab_rvt_report_status_p;
-
-       if (is_hab_enabled())
-               puts("\nSecure boot enabled\n");
-       else
-               puts("\nSecure boot disabled\n");
-
-       /* Check HAB status */
-       if (hab_rvt_report_status(&config, &state) != HAB_SUCCESS) {
-               printf("\nHAB Configuration: 0x%02x, HAB State: 0x%02x\n",
-                      config, state);
-
-               /* Display HAB Error events */
-               while (hab_rvt_report_event(HAB_FAILURE, index, event_data,
-                                       &bytes) == HAB_SUCCESS) {
-                       puts("\n");
-                       printf("--------- HAB Event %d -----------------\n",
-                              index + 1);
-                       puts("event data:\n");
-                       display_event(event_data, bytes);
-                       puts("\n");
-                       bytes = sizeof(event_data);
-                       index++;
-               }
-       }
-       /* Display message if no HAB events are found */
-       else {
-               printf("\nHAB Configuration: 0x%02x, HAB State: 0x%02x\n",
-                      config, state);
-               puts("No HAB Events Found!\n\n");
-       }
-       return 0;
-}
-
-int do_hab_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       if ((argc != 1)) {
-               cmd_usage(cmdtp);
-               return 1;
-       }
-
-       get_hab_status();
-
-       return 0;
-}
-
-static int do_authenticate_image(cmd_tbl_t *cmdtp, int flag, int argc,
-                               char * const argv[])
-{
-       ulong   addr, ivt_offset;
-       int     rcode = 0;
-
-       if (argc < 3)
-               return CMD_RET_USAGE;
-
-       addr = simple_strtoul(argv[1], NULL, 16);
-       ivt_offset = simple_strtoul(argv[2], NULL, 16);
-
-       rcode = authenticate_image(addr, ivt_offset);
-
-       return rcode;
-}
-
-U_BOOT_CMD(
-               hab_status, CONFIG_SYS_MAXARGS, 1, do_hab_status,
-               "display HAB status",
-               ""
-         );
-
-U_BOOT_CMD(
-               hab_auth_img, 3, 0, do_authenticate_image,
-               "authenticate image via HAB",
-               "addr ivt_offset\n"
-               "addr - image hex address\n"
-               "ivt_offset - hex offset of IVT in the image"
-         );
-
-
-#endif /* !defined(CONFIG_SPL_BUILD) */
-
-static bool is_hab_enabled(void)
-{
-       struct imx_sec_config_fuse_t *fuse =
-               (struct imx_sec_config_fuse_t *)&imx_sec_config_fuse;
-       uint32_t reg;
-       int ret;
-
-       ret = fuse_read(fuse->bank, fuse->word, &reg);
-       if (ret) {
-               puts("\nSecure boot fuse read error\n");
-               return ret;
-       }
-
-       return (reg & IS_HAB_ENABLED_BIT) == IS_HAB_ENABLED_BIT;
-}
-
-uint32_t authenticate_image(uint32_t ddr_start, uint32_t image_size)
-{
-       uint32_t load_addr = 0;
-       size_t bytes;
-       ptrdiff_t ivt_offset = 0;
-       int result = 0;
-       ulong start;
-       hab_rvt_authenticate_image_t *hab_rvt_authenticate_image;
-       hab_rvt_entry_t *hab_rvt_entry;
-       hab_rvt_exit_t *hab_rvt_exit;
-
-       hab_rvt_authenticate_image = hab_rvt_authenticate_image_p;
-       hab_rvt_entry = hab_rvt_entry_p;
-       hab_rvt_exit = hab_rvt_exit_p;
-
-       if (is_hab_enabled()) {
-               printf("\nAuthenticate image from DDR location 0x%x...\n",
-                      ddr_start);
-
-               hab_caam_clock_enable(1);
-
-               if (hab_rvt_entry() == HAB_SUCCESS) {
-                       /* If not already aligned, Align to ALIGN_SIZE */
-                       ivt_offset = (image_size + ALIGN_SIZE - 1) &
-                                       ~(ALIGN_SIZE - 1);
-
-                       start = ddr_start;
-                       bytes = ivt_offset + IVT_SIZE + CSF_PAD_SIZE;
-#ifdef DEBUG
-                       printf("\nivt_offset = 0x%x, ivt addr = 0x%x\n",
-                              ivt_offset, ddr_start + ivt_offset);
-                       puts("Dumping IVT\n");
-                       print_buffer(ddr_start + ivt_offset,
-                                    (void *)(ddr_start + ivt_offset),
-                                    4, 0x8, 0);
-
-                       puts("Dumping CSF Header\n");
-                       print_buffer(ddr_start + ivt_offset+IVT_SIZE,
-                                    (void *)(ddr_start + ivt_offset+IVT_SIZE),
-                                    4, 0x10, 0);
-
-#if  !defined(CONFIG_SPL_BUILD)
-                       get_hab_status();
-#endif
-
-                       puts("\nCalling authenticate_image in ROM\n");
-                       printf("\tivt_offset = 0x%x\n", ivt_offset);
-                       printf("\tstart = 0x%08lx\n", start);
-                       printf("\tbytes = 0x%x\n", bytes);
-#endif
-                       /*
-                        * If the MMU is enabled, we have to notify the ROM
-                        * code, or it won't flush the caches when needed.
-                        * This is done, by setting the "pu_irom_mmu_enabled"
-                        * word to 1. You can find its address by looking in
-                        * the ROM map. This is critical for
-                        * authenticate_image(). If MMU is enabled, without
-                        * setting this bit, authentication will fail and may
-                        * crash.
-                        */
-                       /* Check MMU enabled */
-                       if (is_soc_type(MXC_SOC_MX6) && get_cr() & CR_M) {
-                               if (is_mx6dq()) {
-                                       /*
-                                        * This won't work on Rev 1.0.0 of
-                                        * i.MX6Q/D, since their ROM doesn't
-                                        * do cache flushes. don't think any
-                                        * exist, so we ignore them.
-                                        */
-                                       if (!is_mx6dqp())
-                                               writel(1, MX6DQ_PU_IROM_MMU_EN_VAR);
-                               } else if (is_mx6sdl()) {
-                                       writel(1, MX6DLS_PU_IROM_MMU_EN_VAR);
-                               } else if (is_mx6sl()) {
-                                       writel(1, MX6SL_PU_IROM_MMU_EN_VAR);
-                               }
-                       }
-
-                       load_addr = (uint32_t)hab_rvt_authenticate_image(
-                                       HAB_CID_UBOOT,
-                                       ivt_offset, (void **)&start,
-                                       (size_t *)&bytes, NULL);
-                       if (hab_rvt_exit() != HAB_SUCCESS) {
-                               puts("hab exit function fail\n");
-                               load_addr = 0;
-                       }
-               } else {
-                       puts("hab entry function fail\n");
-               }
-
-               hab_caam_clock_enable(0);
-
-#if !defined(CONFIG_SPL_BUILD)
-               get_hab_status();
-#endif
-       } else {
-               puts("hab fuse not enabled\n");
-       }
-
-       if ((!is_hab_enabled()) || (load_addr != 0))
-               result = 1;
-
-       return result;
-}
diff --git a/arch/arm/imx-common/i2c-mxv7.c b/arch/arm/imx-common/i2c-mxv7.c
deleted file mode 100644 (file)
index ae8809c..0000000
+++ /dev/null
@@ -1,118 +0,0 @@
-/*
- * Copyright (C) 2012 Boundary Devices Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <malloc.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/imx-regs.h>
-#include <linux/errno.h>
-#include <asm/gpio.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <watchdog.h>
-
-int force_idle_bus(void *priv)
-{
-       int i;
-       int sda, scl;
-       ulong elapsed, start_time;
-       struct i2c_pads_info *p = (struct i2c_pads_info *)priv;
-       int ret = 0;
-
-       gpio_direction_input(p->sda.gp);
-       gpio_direction_input(p->scl.gp);
-
-       imx_iomux_v3_setup_pad(p->sda.gpio_mode);
-       imx_iomux_v3_setup_pad(p->scl.gpio_mode);
-
-       sda = gpio_get_value(p->sda.gp);
-       scl = gpio_get_value(p->scl.gp);
-       if ((sda & scl) == 1)
-               goto exit;              /* Bus is idle already */
-
-       printf("%s: sda=%d scl=%d sda.gp=0x%x scl.gp=0x%x\n", __func__,
-               sda, scl, p->sda.gp, p->scl.gp);
-       /* Send high and low on the SCL line */
-       for (i = 0; i < 9; i++) {
-               gpio_direction_output(p->scl.gp, 0);
-               udelay(50);
-               gpio_direction_input(p->scl.gp);
-               udelay(50);
-       }
-       start_time = get_timer(0);
-       for (;;) {
-               sda = gpio_get_value(p->sda.gp);
-               scl = gpio_get_value(p->scl.gp);
-               if ((sda & scl) == 1)
-                       break;
-               WATCHDOG_RESET();
-               elapsed = get_timer(start_time);
-               if (elapsed > (CONFIG_SYS_HZ / 5)) {    /* .2 seconds */
-                       ret = -EBUSY;
-                       printf("%s: failed to clear bus, sda=%d scl=%d\n",
-                                       __func__, sda, scl);
-                       break;
-               }
-       }
-exit:
-       imx_iomux_v3_setup_pad(p->sda.i2c_mode);
-       imx_iomux_v3_setup_pad(p->scl.i2c_mode);
-       return ret;
-}
-
-static void * const i2c_bases[] = {
-       (void *)I2C1_BASE_ADDR,
-       (void *)I2C2_BASE_ADDR,
-#ifdef I2C3_BASE_ADDR
-       (void *)I2C3_BASE_ADDR,
-#endif
-#ifdef I2C4_BASE_ADDR
-       (void *)I2C4_BASE_ADDR,
-#endif
-};
-
-/* i2c_index can be from 0 - 3 */
-int setup_i2c(unsigned i2c_index, int speed, int slave_addr,
-             struct i2c_pads_info *p)
-{
-       char name[9];
-       int ret;
-
-       if (i2c_index >= ARRAY_SIZE(i2c_bases))
-               return -EINVAL;
-
-       snprintf(name, sizeof(name), "i2c_sda%01d", i2c_index);
-       ret = gpio_request(p->sda.gp, name);
-       if (ret)
-               return ret;
-
-       snprintf(name, sizeof(name), "i2c_scl%01d", i2c_index);
-       ret = gpio_request(p->scl.gp, name);
-       if (ret)
-               goto err_req;
-
-       /* Enable i2c clock */
-       ret = enable_i2c_clk(1, i2c_index);
-       if (ret)
-               goto err_clk;
-
-       /* Make sure bus is idle */
-       ret = force_idle_bus(p);
-       if (ret)
-               goto err_idle;
-
-#ifndef CONFIG_DM_I2C
-       bus_i2c_init(i2c_index, speed, slave_addr, force_idle_bus, p);
-#endif
-
-       return 0;
-
-err_idle:
-err_clk:
-       gpio_free(p->scl.gp);
-err_req:
-       gpio_free(p->sda.gp);
-
-       return ret;
-}
diff --git a/arch/arm/imx-common/imx_bootaux.c b/arch/arm/imx-common/imx_bootaux.c
deleted file mode 100644 (file)
index 69026df..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-/*
- * Copyright (C) 2016 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <command.h>
-
-/* Allow for arch specific config before we boot */
-static int __arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
-{
-       /* please define platform specific arch_auxiliary_core_up() */
-       return CMD_RET_FAILURE;
-}
-
-int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
-       __attribute__((weak, alias("__arch_auxiliary_core_up")));
-
-/* Allow for arch specific config before we boot */
-static int __arch_auxiliary_core_check_up(u32 core_id)
-{
-       /* please define platform specific arch_auxiliary_core_check_up() */
-       return 0;
-}
-
-int arch_auxiliary_core_check_up(u32 core_id)
-       __attribute__((weak, alias("__arch_auxiliary_core_check_up")));
-
-/*
- * To i.MX6SX and i.MX7D, the image supported by bootaux needs
- * the reset vector at the head for the image, with SP and PC
- * as the first two words.
- *
- * Per the cortex-M reference manual, the reset vector of M4 needs
- * to exist at 0x0 (TCMUL). The PC and SP are the first two addresses
- * of that vector.  So to boot M4, the A core must build the M4's reset
- * vector with getting the PC and SP from image and filling them to
- * TCMUL. When M4 is kicked, it will load the PC and SP by itself.
- * The TCMUL is mapped to (M4_BOOTROM_BASE_ADDR) at A core side for
- * accessing the M4 TCMUL.
- */
-int do_bootaux(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
-{
-       ulong addr;
-       int ret, up;
-
-       if (argc < 2)
-               return CMD_RET_USAGE;
-
-       up = arch_auxiliary_core_check_up(0);
-       if (up) {
-               printf("## Auxiliary core is already up\n");
-               return CMD_RET_SUCCESS;
-       }
-
-       addr = simple_strtoul(argv[1], NULL, 16);
-
-       printf("## Starting auxiliary core at 0x%08lX ...\n", addr);
-
-       ret = arch_auxiliary_core_up(0, addr);
-       if (ret)
-               return CMD_RET_FAILURE;
-
-       return CMD_RET_SUCCESS;
-}
-
-U_BOOT_CMD(
-       bootaux, CONFIG_SYS_MAXARGS, 1, do_bootaux,
-       "Start auxiliary core",
-       ""
-);
diff --git a/arch/arm/imx-common/init.c b/arch/arm/imx-common/init.c
deleted file mode 100644 (file)
index 5b4f828..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-/*
- * 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_mx6ull() || is_mx6sx() || is_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_mx6sx() || is_mx6ul() || is_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);
-}
-
-#ifdef CONFIG_CMD_BMODE
-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);
-}
-#endif
-
-#if defined(CONFIG_MX6)
-u32 imx6_src_get_boot_mode(void)
-{
-       if (imx6_is_bmode_from_gpr9())
-               return readl(&src_base->gpr9);
-       else
-               return readl(&src_base->sbmr1);
-}
-#endif
diff --git a/arch/arm/imx-common/iomux-v3.c b/arch/arm/imx-common/iomux-v3.c
deleted file mode 100644 (file)
index c9a3bf2..0000000
+++ /dev/null
@@ -1,149 +0,0 @@
-/*
- * Based on the iomux-v3.c from Linux kernel:
- * Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
- * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
- *                       <armlinux@phytec.de>
- *
- * Copyright (C) 2004-2011 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/sys_proto.h>
-
-static void *base = (void *)IOMUXC_BASE_ADDR;
-
-/*
- * configures a single pad in the iomuxer
- */
-void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
-{
-       u32 mux_ctrl_ofs = (pad & MUX_CTRL_OFS_MASK) >> MUX_CTRL_OFS_SHIFT;
-       u32 mux_mode = (pad & MUX_MODE_MASK) >> MUX_MODE_SHIFT;
-       u32 sel_input_ofs =
-               (pad & MUX_SEL_INPUT_OFS_MASK) >> MUX_SEL_INPUT_OFS_SHIFT;
-       u32 sel_input =
-               (pad & MUX_SEL_INPUT_MASK) >> MUX_SEL_INPUT_SHIFT;
-       u32 pad_ctrl_ofs =
-               (pad & MUX_PAD_CTRL_OFS_MASK) >> MUX_PAD_CTRL_OFS_SHIFT;
-       u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT;
-
-#if defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)
-       /* Check whether LVE bit needs to be set */
-       if (pad_ctrl & PAD_CTL_LVE) {
-               pad_ctrl &= ~PAD_CTL_LVE;
-               pad_ctrl |= PAD_CTL_LVE_BIT;
-       }
-#endif
-
-#ifdef CONFIG_IOMUX_LPSR
-       u32 lpsr = (pad & MUX_MODE_LPSR) >> MUX_MODE_SHIFT;
-
-#ifdef CONFIG_MX7
-       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;
-       }
-#else
-       if (is_mx6ull() || is_mx6sll()) {
-               if (lpsr == IOMUX_CONFIG_LPSR) {
-                       base = (void *)IOMUXC_SNVS_BASE_ADDR;
-                       mux_mode &= ~IOMUX_CONFIG_LPSR;
-               }
-       }
-#endif
-#endif
-
-       if (is_mx7() || is_mx6ull() || is_mx6sll() || mux_ctrl_ofs)
-               __raw_writel(mux_mode, base + mux_ctrl_ofs);
-
-       if (sel_input_ofs)
-               __raw_writel(sel_input, base + sel_input_ofs);
-
-#ifdef CONFIG_IOMUX_SHARE_CONF_REG
-       if (!(pad_ctrl & NO_PAD_CTRL))
-               __raw_writel((mux_mode << PAD_MUX_MODE_SHIFT) | pad_ctrl,
-                       base + pad_ctrl_ofs);
-#else
-       if (!(pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs)
-               __raw_writel(pad_ctrl, base + pad_ctrl_ofs);
-#if defined(CONFIG_MX6SLL)
-       else if ((pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs)
-               clrbits_le32(base + pad_ctrl_ofs, PAD_CTL_IPD_BIT);
-#endif
-#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 */
-void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
-                                     unsigned count)
-{
-       iomux_v3_cfg_t const *p = pad_list;
-       int stride;
-       int i;
-
-#if defined(CONFIG_MX6QDL)
-       stride = 2;
-       if (!is_mx6dq() && !is_mx6dqp())
-               p += 1;
-#else
-       stride = 1;
-#endif
-       for (i = 0; i < count; i++) {
-               imx_iomux_v3_setup_pad(*p);
-               p += stride;
-       }
-}
-
-void imx_iomux_set_gpr_register(int group, int start_bit,
-                                       int num_bits, int value)
-{
-       int i = 0;
-       u32 reg;
-       reg = readl(base + group * 4);
-       while (num_bits) {
-               reg &= ~(1<<(start_bit + i));
-               i++;
-               num_bits--;
-       }
-       reg |= (value << start_bit);
-       writel(reg, base + group * 4);
-}
-
-#ifdef CONFIG_IOMUX_SHARE_CONF_REG
-void imx_iomux_gpio_set_direction(unsigned int gpio,
-                               unsigned int direction)
-{
-       u32 reg;
-       /*
-        * Only on Vybrid the input/output buffer enable flags
-        * are part of the shared mux/conf register.
-        */
-       reg = readl(base + (gpio << 2));
-
-       if (direction)
-               reg |= 0x2;
-       else
-               reg &= ~0x2;
-
-       writel(reg, base + (gpio << 2));
-}
-
-void imx_iomux_gpio_get_function(unsigned int gpio, u32 *gpio_state)
-{
-       *gpio_state = readl(base + (gpio << 2)) &
-               ((0X07 << PAD_MUX_MODE_SHIFT) | PAD_CTL_OBE_IBE_ENABLE);
-}
-#endif
diff --git a/arch/arm/imx-common/misc.c b/arch/arm/imx-common/misc.c
deleted file mode 100644 (file)
index 1b0f18d..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * Copyright 2013 Stefan Roese <sr@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/sys_proto.h>
-#include <linux/errno.h>
-#include <asm/io.h>
-#include <asm/imx-common/regs-common.h>
-
-/* 1 second delay should be plenty of time for block reset. */
-#define        RESET_MAX_TIMEOUT       1000000
-
-#define        MXS_BLOCK_SFTRST        (1 << 31)
-#define        MXS_BLOCK_CLKGATE       (1 << 30)
-
-int mxs_wait_mask_set(struct mxs_register_32 *reg, uint32_t mask, unsigned
-                                                               int timeout)
-{
-       while (--timeout) {
-               if ((readl(&reg->reg) & mask) == mask)
-                       break;
-               udelay(1);
-       }
-
-       return !timeout;
-}
-
-int mxs_wait_mask_clr(struct mxs_register_32 *reg, uint32_t mask, unsigned
-                                                               int timeout)
-{
-       while (--timeout) {
-               if ((readl(&reg->reg) & mask) == 0)
-                       break;
-               udelay(1);
-       }
-
-       return !timeout;
-}
-
-int mxs_reset_block(struct mxs_register_32 *reg)
-{
-       /* Clear SFTRST */
-       writel(MXS_BLOCK_SFTRST, &reg->reg_clr);
-
-       if (mxs_wait_mask_clr(reg, MXS_BLOCK_SFTRST, RESET_MAX_TIMEOUT))
-               return 1;
-
-       /* Clear CLKGATE */
-       writel(MXS_BLOCK_CLKGATE, &reg->reg_clr);
-
-       /* Set SFTRST */
-       writel(MXS_BLOCK_SFTRST, &reg->reg_set);
-
-       /* Wait for CLKGATE being set */
-       if (mxs_wait_mask_set(reg, MXS_BLOCK_CLKGATE, RESET_MAX_TIMEOUT))
-               return 1;
-
-       /* Clear SFTRST */
-       writel(MXS_BLOCK_SFTRST, &reg->reg_clr);
-
-       if (mxs_wait_mask_clr(reg, MXS_BLOCK_SFTRST, RESET_MAX_TIMEOUT))
-               return 1;
-
-       /* Clear CLKGATE */
-       writel(MXS_BLOCK_CLKGATE, &reg->reg_clr);
-
-       if (mxs_wait_mask_clr(reg, MXS_BLOCK_CLKGATE, RESET_MAX_TIMEOUT))
-               return 1;
-
-       return 0;
-}
diff --git a/arch/arm/imx-common/rdc-sema.c b/arch/arm/imx-common/rdc-sema.c
deleted file mode 100644 (file)
index 1d97ac8..0000000
+++ /dev/null
@@ -1,183 +0,0 @@
-/*
- * Copyright (C) 2016 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:  GPL-2.0+
- */
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/imx-common/rdc-sema.h>
-#include <asm/arch/imx-rdc.h>
-#include <linux/errno.h>
-
-/*
- * Check if the RDC Semaphore is required for this peripheral.
- */
-static inline int imx_rdc_check_sema_required(int per_id)
-{
-       struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
-       u32 reg;
-
-       reg = readl(&imx_rdc->pdap[per_id]);
-       /*
-        * No semaphore:
-        * Intial value or this peripheral is assigned to only one domain
-        */
-       if (!(reg & RDC_PDAP_SREQ_MASK))
-               return -ENOENT;
-
-       return 0;
-}
-
-/*
- * Check the peripheral read / write access permission on Domain [dom_id].
- */
-int imx_rdc_check_permission(int per_id, int dom_id)
-{
-       struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
-       u32 reg;
-
-       reg = readl(&imx_rdc->pdap[per_id]);
-       if (!(reg & RDC_PDAP_DRW_MASK(dom_id)))
-               return -EACCES;  /*No access*/
-
-       return 0;
-}
-
-/*
- * Lock up the RDC semaphore for this peripheral if semaphore is required.
- */
-int imx_rdc_sema_lock(int per_id)
-{
-       struct rdc_sema_regs *imx_rdc_sema;
-       int ret;
-       u8 reg;
-
-       ret = imx_rdc_check_sema_required(per_id);
-       if (ret)
-               return ret;
-
-       if (per_id < SEMA_GATES_NUM)
-               imx_rdc_sema  = (struct rdc_sema_regs *)SEMAPHORE1_BASE_ADDR;
-       else
-               imx_rdc_sema  = (struct rdc_sema_regs *)SEMAPHORE2_BASE_ADDR;
-
-       do {
-               writeb(RDC_SEMA_PROC_ID,
-                      &imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
-               reg = readb(&imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
-               if ((reg & RDC_SEMA_GATE_GTFSM_MASK) == RDC_SEMA_PROC_ID)
-                       break;  /* Get the Semaphore*/
-       } while (1);
-
-       return 0;
-}
-
-/*
- * Unlock the RDC semaphore for this peripheral if main CPU is the
- * semaphore owner.
- */
-int imx_rdc_sema_unlock(int per_id)
-{
-       struct rdc_sema_regs *imx_rdc_sema;
-       int ret;
-       u8 reg;
-
-       ret = imx_rdc_check_sema_required(per_id);
-       if (ret)
-               return ret;
-
-       if (per_id < SEMA_GATES_NUM)
-               imx_rdc_sema  = (struct rdc_sema_regs *)SEMAPHORE1_BASE_ADDR;
-       else
-               imx_rdc_sema  = (struct rdc_sema_regs *)SEMAPHORE2_BASE_ADDR;
-
-       reg = readb(&imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
-       if ((reg & RDC_SEMA_GATE_GTFSM_MASK) != RDC_SEMA_PROC_ID)
-               return -EACCES; /*Not the semaphore owner */
-
-       writeb(0x0, &imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
-
-       return 0;
-}
-
-/*
- * Setup RDC setting for one peripheral
- */
-int imx_rdc_setup_peri(rdc_peri_cfg_t p)
-{
-       struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
-       u32 reg = 0;
-       u32 share_count = 0;
-       u32 peri_id = p & RDC_PERI_MASK;
-       u32 domain = (p & RDC_DOMAIN_MASK) >> RDC_DOMAIN_SHIFT_BASE;
-
-       /* No domain assigned */
-       if (domain == 0)
-               return -EINVAL;
-
-       reg |= domain;
-
-       share_count = (domain & 0x3)
-               + ((domain >> 2) & 0x3)
-               + ((domain >> 4) & 0x3)
-               + ((domain >> 6) & 0x3);
-
-       if (share_count > 0x3)
-               reg |= RDC_PDAP_SREQ_MASK;
-
-       writel(reg, &imx_rdc->pdap[peri_id]);
-
-       return 0;
-}
-
-/*
- * Setup RDC settings for multiple peripherals
- */
-int imx_rdc_setup_peripherals(rdc_peri_cfg_t const *peripherals_list,
-                                    unsigned count)
-{
-       rdc_peri_cfg_t const *p = peripherals_list;
-       int i, ret;
-
-       for (i = 0; i < count; i++) {
-               ret = imx_rdc_setup_peri(*p);
-               if (ret)
-                       return ret;
-               p++;
-       }
-
-       return 0;
-}
-
-/*
- * Setup RDC setting for one master
- */
-int imx_rdc_setup_ma(rdc_ma_cfg_t p)
-{
-       struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
-       u32 master_id = (p & RDC_MASTER_MASK) >> RDC_MASTER_SHIFT;
-       u32 domain = (p & RDC_DOMAIN_MASK) >> RDC_DOMAIN_SHIFT_BASE;
-
-       writel((domain & RDC_MDA_DID_MASK), &imx_rdc->mda[master_id]);
-
-       return 0;
-}
-
-/*
- * Setup RDC settings for multiple masters
- */
-int imx_rdc_setup_masters(rdc_ma_cfg_t const *masters_list, unsigned count)
-{
-       rdc_ma_cfg_t const *p = masters_list;
-       int i, ret;
-
-       for (i = 0; i < count; i++) {
-               ret = imx_rdc_setup_ma(*p);
-               if (ret)
-                       return ret;
-               p++;
-       }
-
-       return 0;
-}
diff --git a/arch/arm/imx-common/sata.c b/arch/arm/imx-common/sata.c
deleted file mode 100644 (file)
index acf9831..0000000
+++ /dev/null
@@ -1,38 +0,0 @@
-/*
- * Copyright 2011 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/arch/iomux.h>
-#include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/sys_proto.h>
-
-int setup_sata(void)
-{
-       struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       int ret;
-
-       if (!is_mx6dq() && !is_mx6dqp())
-               return 1;
-
-       ret = enable_sata_clock();
-       if (ret)
-               return ret;
-
-       clrsetbits_le32(&iomuxc_regs->gpr[13],
-                       IOMUXC_GPR13_SATA_MASK,
-                       IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P0DB
-                       |IOMUXC_GPR13_SATA_PHY_7_SATA2M
-                       |IOMUXC_GPR13_SATA_SPEED_3G
-                       |(3<<IOMUXC_GPR13_SATA_PHY_6_SHIFT)
-                       |IOMUXC_GPR13_SATA_SATA_PHY_5_SS_DISABLED
-                       |IOMUXC_GPR13_SATA_SATA_PHY_4_ATTEN_9_16
-                       |IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P00_DB
-                       |IOMUXC_GPR13_SATA_PHY_2_TX_1P104V
-                       |IOMUXC_GPR13_SATA_PHY_1_SLOW);
-
-       return 0;
-}
diff --git a/arch/arm/imx-common/speed.c b/arch/arm/imx-common/speed.c
deleted file mode 100644 (file)
index 26132bf..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-/*
- * (C) Copyright 2000-2003
- * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
- *
- * Copyright (C) 2004-2007 Freescale Semiconductor, Inc.
- * TsiChung Liew (Tsi-Chung.Liew@freescale.com)
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/clock.h>
-
-#ifdef CONFIG_FSL_ESDHC
-DECLARE_GLOBAL_DATA_PTR;
-#endif
-
-int get_clocks(void)
-{
-#ifdef CONFIG_FSL_ESDHC
-#ifdef CONFIG_FSL_USDHC
-#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);
-#elif CONFIG_SYS_FSL_ESDHC_ADDR == USDHC4_BASE_ADDR
-       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
-#else
-       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-#endif
-#else
-#if CONFIG_SYS_FSL_ESDHC_ADDR == MMC_SDHC2_BASE_ADDR
-       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
-#elif CONFIG_SYS_FSL_ESDHC_ADDR == MMC_SDHC3_BASE_ADDR
-       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
-#elif CONFIG_SYS_FSL_ESDHC_ADDR == MMC_SDHC4_BASE_ADDR
-       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
-#else
-       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
-#endif
-#endif
-#endif
-       return 0;
-}
diff --git a/arch/arm/imx-common/spl.c b/arch/arm/imx-common/spl.c
deleted file mode 100644 (file)
index f392941..0000000
+++ /dev/null
@@ -1,128 +0,0 @@
-/*
- * Copyright (C) 2014 Gateworks Corporation
- * Copyright (C) 2011-2012 Freescale Semiconductor, Inc.
- *
- * Author: Tim Harvey <tharvey@gateworks.com>
- *
- * 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/spl.h>
-#include <spl.h>
-#include <asm/imx-common/hab.h>
-
-#if defined(CONFIG_MX6)
-/* determine boot device from SRC_SBMR1 (BOOT_CFG[4:1]) or SRC_GPR9 register */
-u32 spl_boot_device(void)
-{
-       unsigned int bmode = readl(&src_base->sbmr2);
-       u32 reg = imx6_src_get_boot_mode();
-
-       /*
-        * Check for BMODE if serial downloader is enabled
-        * BOOT_MODE - see IMX6DQRM Table 8-1
-        */
-       if (((bmode >> 24) & 0x03) == 0x01) /* Serial Downloader */
-               return BOOT_DEVICE_UART;
-
-       /* BOOT_CFG1[7:4] - see IMX6DQRM Table 8-8 */
-       switch ((reg & IMX6_BMODE_MASK) >> IMX6_BMODE_SHIFT) {
-        /* EIM: See 8.5.1, Table 8-9 */
-       case IMX6_BMODE_EMI:
-               /* BOOT_CFG1[3]: NOR/OneNAND Selection */
-               switch ((reg & IMX6_BMODE_EMI_MASK) >> IMX6_BMODE_EMI_SHIFT) {
-               case IMX6_BMODE_ONENAND:
-                       return BOOT_DEVICE_ONENAND;
-               case IMX6_BMODE_NOR:
-                       return BOOT_DEVICE_NOR;
-               break;
-               }
-       /* Reserved: Used to force Serial Downloader */
-       case IMX6_BMODE_UART:
-               return BOOT_DEVICE_UART;
-       /* SATA: See 8.5.4, Table 8-20 */
-       case IMX6_BMODE_SATA:
-               return BOOT_DEVICE_SATA;
-       /* Serial ROM: See 8.5.5.1, Table 8-22 */
-       case IMX6_BMODE_SERIAL_ROM:
-               /* BOOT_CFG4[2:0] */
-               switch ((reg & IMX6_BMODE_SERIAL_ROM_MASK) >>
-                       IMX6_BMODE_SERIAL_ROM_SHIFT) {
-               case IMX6_BMODE_ECSPI1:
-               case IMX6_BMODE_ECSPI2:
-               case IMX6_BMODE_ECSPI3:
-               case IMX6_BMODE_ECSPI4:
-               case IMX6_BMODE_ECSPI5:
-                       return BOOT_DEVICE_SPI;
-               case IMX6_BMODE_I2C1:
-               case IMX6_BMODE_I2C2:
-               case IMX6_BMODE_I2C3:
-                       return BOOT_DEVICE_I2C;
-               }
-               break;
-       /* SD/eSD: 8.5.3, Table 8-15  */
-       case IMX6_BMODE_SD:
-       case IMX6_BMODE_ESD:
-               return BOOT_DEVICE_MMC1;
-       /* MMC/eMMC: 8.5.3 */
-       case IMX6_BMODE_MMC:
-       case IMX6_BMODE_EMMC:
-               return BOOT_DEVICE_MMC1;
-       /* NAND Flash: 8.5.2, Table 8-10 */
-       case IMX6_BMODE_NAND:
-               return BOOT_DEVICE_NAND;
-       }
-       return BOOT_DEVICE_NONE;
-}
-#endif
-
-#if defined(CONFIG_SPL_MMC_SUPPORT)
-/* called from spl_mmc to see type of boot mode for storage (RAW or FAT) */
-u32 spl_boot_mode(const u32 boot_device)
-{
-       switch (spl_boot_device()) {
-       /* for MMC return either RAW or FAT mode */
-       case BOOT_DEVICE_MMC1:
-       case BOOT_DEVICE_MMC2:
-#if defined(CONFIG_SPL_FAT_SUPPORT)
-               return MMCSD_MODE_FS;
-#elif defined(CONFIG_SUPPORT_EMMC_BOOT)
-               return MMCSD_MODE_EMMCBOOT;
-#else
-               return MMCSD_MODE_RAW;
-#endif
-               break;
-       default:
-               puts("spl: ERROR:  unsupported device\n");
-               hang();
-       }
-}
-#endif
-
-#if defined(CONFIG_SECURE_BOOT)
-
-__weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
-{
-       typedef void __noreturn (*image_entry_noargs_t)(void);
-
-       image_entry_noargs_t image_entry =
-               (image_entry_noargs_t)(unsigned long)spl_image->entry_point;
-
-       debug("image entry point: 0x%lX\n", spl_image->entry_point);
-
-       /* HAB looks for the CSF at the end of the authenticated data therefore,
-        * we need to subtract the size of the CSF from the actual filesize */
-       if (authenticate_image(spl_image->load_addr,
-                              spl_image->size - CONFIG_CSF_SIZE)) {
-               image_entry();
-       } else {
-               puts("spl: ERROR:  image authentication unsuccessful\n");
-               hang();
-       }
-}
-
-#endif
diff --git a/arch/arm/imx-common/spl_sd.cfg b/arch/arm/imx-common/spl_sd.cfg
deleted file mode 100644 (file)
index 14c135c..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#define __ASSEMBLY__
-#include <config.h>
-
-IMAGE_VERSION  2
-BOOT_FROM      sd
-
-/*
- * Secure boot support
- */
-#ifdef CONFIG_SECURE_BOOT
-CSF CONFIG_CSF_SIZE
-#endif
\ No newline at end of file
diff --git a/arch/arm/imx-common/syscounter.c b/arch/arm/imx-common/syscounter.c
deleted file mode 100644 (file)
index e00fef2..0000000
+++ /dev/null
@@ -1,126 +0,0 @@
-/*
- * 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;
-}
diff --git a/arch/arm/imx-common/timer.c b/arch/arm/imx-common/timer.c
deleted file mode 100644 (file)
index 9b01114..0000000
+++ /dev/null
@@ -1,139 +0,0 @@
-/*
- * (C) Copyright 2007
- * Sascha Hauer, Pengutronix
- *
- * (C) Copyright 2009 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <div64.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/sys_proto.h>
-
-/* General purpose timers registers */
-struct mxc_gpt {
-       unsigned int control;
-       unsigned int prescaler;
-       unsigned int status;
-       unsigned int nouse[6];
-       unsigned int counter;
-};
-
-static struct mxc_gpt *cur_gpt = (struct mxc_gpt *)GPT1_BASE_ADDR;
-
-/* General purpose timers bitfields */
-#define GPTCR_SWR              (1 << 15)       /* Software reset */
-#define GPTCR_24MEN        (1 << 10)   /* Enable 24MHz clock input */
-#define GPTCR_FRR              (1 << 9)        /* Freerun / restart */
-#define GPTCR_CLKSOURCE_32     (4 << 6)        /* Clock source 32khz */
-#define GPTCR_CLKSOURCE_OSC    (5 << 6)        /* Clock source OSC */
-#define GPTCR_CLKSOURCE_PRE    (1 << 6)        /* Clock source PRECLK */
-#define GPTCR_CLKSOURCE_MASK (0x7 << 6)
-#define GPTCR_TEN              1               /* Timer enable */
-
-#define GPTPR_PRESCALER24M_SHIFT 12
-#define GPTPR_PRESCALER24M_MASK (0xF << GPTPR_PRESCALER24M_SHIFT)
-
-DECLARE_GLOBAL_DATA_PTR;
-
-static inline int gpt_has_clk_source_osc(void)
-{
-#if defined(CONFIG_MX6)
-       if (((is_mx6dq()) && (soc_rev() > CHIP_REV_1_0)) ||
-           is_mx6dqp() || is_mx6sdl() || is_mx6sx() || is_mx6ul() ||
-           is_mx6ull() || is_mx6sll())
-               return 1;
-
-       return 0;
-#else
-       return 0;
-#endif
-}
-
-static inline ulong gpt_get_clk(void)
-{
-#ifdef CONFIG_MXC_GPT_HCLK
-       if (gpt_has_clk_source_osc())
-               return MXC_HCLK >> 3;
-       else
-               return mxc_get_clock(MXC_IPG_PERCLK);
-#else
-       return MXC_CLK32;
-#endif
-}
-
-int timer_init(void)
-{
-       int i;
-
-       /* setup GP Timer 1 */
-       __raw_writel(GPTCR_SWR, &cur_gpt->control);
-
-       /* We have no udelay by now */
-       for (i = 0; i < 100; i++)
-               __raw_writel(0, &cur_gpt->control);
-
-       i = __raw_readl(&cur_gpt->control);
-       i &= ~GPTCR_CLKSOURCE_MASK;
-
-#ifdef CONFIG_MXC_GPT_HCLK
-       if (gpt_has_clk_source_osc()) {
-               i |= GPTCR_CLKSOURCE_OSC | GPTCR_TEN;
-
-               /*
-                * For DL/S, SX, UL, ULL, SLL set 24Mhz OSC
-                * Enable bit and prescaler
-                */
-               if (is_mx6sdl() || is_mx6sx() || is_mx6ul() || is_mx6ull() ||
-                   is_mx6sll()) {
-                       i |= GPTCR_24MEN;
-
-                       /* Produce 3Mhz clock */
-                       __raw_writel((7 << GPTPR_PRESCALER24M_SHIFT),
-                                    &cur_gpt->prescaler);
-               }
-       } else {
-               i |= GPTCR_CLKSOURCE_PRE | GPTCR_TEN;
-       }
-#else
-       __raw_writel(0, &cur_gpt->prescaler); /* 32Khz */
-       i |= GPTCR_CLKSOURCE_32 | GPTCR_TEN;
-#endif
-       __raw_writel(i, &cur_gpt->control);
-
-       return 0;
-}
-
-unsigned long timer_read_counter(void)
-{
-       return __raw_readl(&cur_gpt->counter); /* current tick value */
-}
-
-/*
- * This function is derived from PowerPC code (timebase clock frequency).
- * On ARM it returns the number of timer ticks per second.
- */
-ulong get_tbclk(void)
-{
-       return gpt_get_clk();
-}
-
-/*
- * 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)
-{
-       unsigned long long usec = _usec;
-
-       usec *= get_tbclk();
-       usec += 999999;
-       do_div(usec, 1000000);
-
-       return usec;
-}
diff --git a/arch/arm/imx-common/video.c b/arch/arm/imx-common/video.c
deleted file mode 100644 (file)
index 549bf9d..0000000
+++ /dev/null
@@ -1,66 +0,0 @@
-/*
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/errno.h>
-#include <asm/imx-common/video.h>
-
-int board_video_skip(void)
-{
-       int i;
-       int ret;
-       char const *panel = getenv("panel");
-
-       if (!panel) {
-               for (i = 0; i < display_count; i++) {
-                       struct display_info_t const *dev = displays+i;
-                       if (dev->detect && dev->detect(dev)) {
-                               panel = dev->mode.name;
-                               printf("auto-detected panel %s\n", panel);
-                               break;
-                       }
-               }
-               if (!panel) {
-                       panel = displays[0].mode.name;
-                       printf("No panel detected: default to %s\n", panel);
-                       i = 0;
-               }
-       } else {
-               for (i = 0; i < display_count; i++) {
-                       if (!strcmp(panel, displays[i].mode.name))
-                               break;
-               }
-       }
-
-       if (i < display_count) {
-               ret = ipuv3_fb_init(&displays[i].mode, displays[i].di ? 1 : 0,
-                                   displays[i].pixfmt);
-               if (!ret) {
-                       if (displays[i].enable)
-                               displays[i].enable(displays + i);
-
-                       printf("Display: %s (%ux%u)\n",
-                              displays[i].mode.name,
-                              displays[i].mode.xres,
-                              displays[i].mode.yres);
-               } else
-                       printf("LCD %s cannot be configured: %d\n",
-                              displays[i].mode.name, ret);
-       } else {
-               printf("unsupported panel %s\n", panel);
-               return -EINVAL;
-       }
-
-       return 0;
-}
-
-#ifdef CONFIG_IMX_HDMI
-#include <asm/arch/mxc_hdmi.h>
-#include <asm/io.h>
-int detect_hdmi(struct display_info_t const *dev)
-{
-       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
-       return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
-}
-#endif
diff --git a/arch/arm/include/asm/arch-meson/gpio.h b/arch/arm/include/asm/arch-meson/gpio.h
new file mode 100644 (file)
index 0000000..7079ab3
--- /dev/null
@@ -0,0 +1,11 @@
+/*
+ * (C) Copyright 2017 - Beniamino Galvani <b.galvani@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_ARCH_MESON_GPIO_H
+#define __ASM_ARCH_MESON_GPIO_H
+
+
+#endif /* __ASM_ARCH_MESON_GPIO_H */
index 81d95ea48580b05821cccaa4c569f5aae318f6ad..ef88d837cc666b64360bc9302b247109bce3ad58 100644 (file)
@@ -9,6 +9,6 @@
 #ifndef __ASM_ARCH_MX25_GPIO_H
 #define __ASM_ARCH_MX25_GPIO_H
 
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #endif
index 220cf4ef2e94aa69482557852ed0cc0690a79cec..5b2863e62e10d0bfcc8c9ec7cac18307533fcd4d 100644 (file)
@@ -16,7 +16,7 @@
 #ifndef __IOMUX_MX25_H__
 #define __IOMUX_MX25_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 /* Pad control groupings */
 #define MX25_KPP_ROW_PAD_CTRL  PAD_CTL_PUS_100K_UP
index 14e9b85c8ba729d9b1ea017d0af32438f09dc69f..8e4b9a8a602f90c3f75260fd5a3f832a1413fc77 100644 (file)
@@ -9,6 +9,6 @@
 #ifndef __ASM_ARCH_MX31_GPIO_H
 #define __ASM_ARCH_MX31_GPIO_H
 
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #endif
index 674b25cff40ad55ce17d6966fa3f220050e2c503..5b9fa9cc0b85d8c2ca05fea27a2da121b9cf1a98 100644 (file)
@@ -8,7 +8,7 @@
 #ifndef _MX31_SYS_PROTO_H_
 #define _MX31_SYS_PROTO_H_
 
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
 
 struct mxc_weimcs {
        u32 upper;
index f3572a402f9545b7b200a768eaf467037a55b140..5570ec739ea51a0c6062d37c58dd75b51cf9b4f8 100644 (file)
@@ -9,6 +9,6 @@
 #ifndef __ASM_ARCH_MX35_GPIO_H
 #define __ASM_ARCH_MX35_GPIO_H
 
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #endif
index 5898b46f4720088b18882e21d0d2424fff987ab5..4ec9da241c089b92d378169970163ff410f4d099 100644 (file)
@@ -11,7 +11,7 @@
 #ifndef __IOMUX_MX35_H__
 #define __IOMUX_MX35_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 /*
  * The naming convention for the pad modes is MX35_PAD_<padname>__<padmode>
index 0979fda48764d6b5aa8cafd05f9bb086051f35a3..735e1353f7d8c50af5c575b2eaca9a7af5b5ef17 100644 (file)
@@ -8,7 +8,7 @@
 #ifndef _MX35_SYS_PROTO_H_
 #define _MX35_SYS_PROTO_H_
 
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
 
 void mx3_setup_sdram_bank(u32 start_address, u32 ddr2_config, u32 row,
                          u32 col, u32 dsize, u32 refresh);
index e2a5bc97a3f945e022af511f509c7ab668d3e909..06658ff6be9f7a2b2866a18f6ec8dcf4116f9551 100644 (file)
@@ -9,6 +9,6 @@
 #ifndef __ASM_ARCH_MX5_GPIO_H
 #define __ASM_ARCH_MX5_GPIO_H
 
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #endif
index b7b169505f91c4a213be59efca47e8a5aed770e7..5c636acc03de69015390460e0280fa42fd9131f4 100644 (file)
@@ -19,7 +19,7 @@
 #ifndef __IOMUX_MX51_H__
 #define __IOMUX_MX51_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 /* Pad control groupings */
 #define MX51_UART_PAD_CTRL     (PAD_CTL_PUS_100K_DOWN | PAD_CTL_DSE_HIGH | \
index 1b75fd1cfd13e697a622f36dbcd102743c6afd12..1572af7bf87f38b61b3aedf37dc85c74e90353c0 100644 (file)
@@ -11,7 +11,7 @@
 #ifndef __IOMUX_MX53_H__
 #define __IOMUX_MX53_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 /* Pad control groupings */
 #define MX53_UART_PAD_CTRL     (PAD_CTL_PUS_100K_DOWN | PAD_CTL_DSE_HIGH | \
index 16c9b766d9a7df8fec7332c1c4084a2eea283ca9..14f5d948c9f65ddaf0cae4f30389caf3f1187173 100644 (file)
@@ -5,4 +5,4 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
index e6640f39a1eea6ffcf7c0bbd37618245e06129b8..baecbb4a8c20e25b3e960e23966a0a878b5c345b 100644 (file)
@@ -9,6 +9,6 @@
 #ifndef __ASM_ARCH_MX6_GPIO_H
 #define __ASM_ARCH_MX6_GPIO_H
 
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #endif /* __ASM_ARCH_MX6_GPIO_H */
index 646013d7899bec40e83fc806d959697083744848..86e267087ad98ce15d847176ea956f6441dc7d34 100644 (file)
 #endif
 #define FEC_QUIRK_ENET_MAC
 
-#include <asm/imx-common/regs-lcdif.h>
+#include <asm/mach-imx/regs-lcdif.h>
 #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
 #include <asm/types.h>
 
index 2934b121c0678950a056724dfcd2c70173997499..c2ce9532069a316aa8af45074278b8f764eb3d97 100644 (file)
@@ -6,7 +6,7 @@
 #ifndef __ASM_ARCH_MX6_PINS_H__
 #define __ASM_ARCH_MX6_PINS_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 #define MX6_PAD_DECLARE(prefix, name, pco, mc, mm, sio, si, pc) \
        prefix##name = IOMUX_PAD(pco, mc, mm, sio, si, pc)
index 919d83dd90cf6ac53d204d7e40a063d37a60dd51..158e47cd3bc0e71ed010d49e1a359ba4c8d1b0f5 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef __ASM_ARCH_MX6_MX6SL_PINS_H__
 #define __ASM_ARCH_MX6_MX6SL_PINS_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 enum {
        MX6_PAD_ECSPI1_MISO__ECSPI_MISO                         = IOMUX_PAD(0x0358, 0x0068, 0, 0x0684, 0, 0),
index 1ecb7ceec1aac42b07fce1be0aae624899ca3bae..37ed45a77bb98cc257ab14d3953eabc86ed553ff 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef __ASM_ARCH_IMX6SLL_PINS_H__
 #define __ASM_ARCH_IMX6SLL_PINS_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 enum {
        MX6_PAD_WDOG_B__WDOG1_B                               = IOMUX_PAD(0x02DC, 0x0014, 0, 0x0000, 0, 0),
index 5dd9a50fdfafd6e91332e5026cd62366f77306e7..86e69fd0e8d1bda430350cc6c08861a610734604 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef __ASM_ARCH_MX6_MX6_PINS_H__
 #define __ASM_ARCH_MX6_MX6_PINS_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 enum {
         MX6_PAD_GPIO1_IO00__I2C1_SCL                           = IOMUX_PAD(0x035C, 0x0014, IOMUX_CONFIG_SION | 0, 0x07A8, 1, 0),
index c92b4f09526df189c6a1257352b33cfb4aea57a1..900e062de41c6a888306e08fbf83c2550f5318b1 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef __ASM_ARCH_IMX6UL_PINS_H__
 #define __ASM_ARCH_IMX6UL_PINS_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 enum {
 
index 682430e9077a920e384f0d107ebff6279d45600b..9c0390a2497421e010796b05962eb62237543991 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef __ASM_ARCH_IMX6ULL_PINS_H__
 #define __ASM_ARCH_IMX6ULL_PINS_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 enum {
        MX6_PAD_BOOT_MODE0__GPIO5_IO10                         = IOMUX_PAD(0x0044, 0x0000, IOMUX_CONFIG_LPSR | 5, 0x0000, 0, 0),
index 16c9b766d9a7df8fec7332c1c4084a2eea283ca9..14f5d948c9f65ddaf0cae4f30389caf3f1187173 100644 (file)
@@ -5,4 +5,4 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
index b7890c2903acff70e2e1e80819ee124e3f951fdc..af57bb9c4e91fbadf6392d7ce4b5e17403a09820 100644 (file)
@@ -7,6 +7,6 @@
 #ifndef __ASM_ARCH_MX7_GPIO_H
 #define __ASM_ARCH_MX7_GPIO_H
 
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #endif /* __ASM_ARCH_MX7_GPIO_H */
index d33be313c6ee22876b4216ceca2ab42af706a6d0..aab3a9a7a6c8a3b29913d95e907367363cd96bbe 100644 (file)
                                         CONFIG_SYS_FSL_JR0_OFFSET)
 #define CONFIG_SYS_FSL_MAX_NUM_OF_SEC   1
 #if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
-#include <asm/imx-common/regs-lcdif.h>
+#include <asm/mach-imx/regs-lcdif.h>
 #include <asm/types.h>
 
 extern void imx_get_mac_from_fuse(int dev_id, unsigned char *mac);
index 164c2be8acccfa038134957e2b34d2a2e3c40a5d..9df81f70b96473839106a74fbba44c232e9ae268 100644 (file)
@@ -6,7 +6,7 @@
 #ifndef __ASM_ARCH_MX7_PINS_H__
 #define __ASM_ARCH_MX7_PINS_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 #if defined(CONFIG_MX7D)
 #include "mx7d_pins.h"
index 0ab1246de85219eda30db3a40bbbf2e6fb9e1eed..7e926d163a5f111abadb7e1cd4634dc94f557933 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef __ASM_ARCH_IMX7D_PINS_H__
 #define __ASM_ARCH_IMX7D_PINS_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 enum {
        MX7D_PAD_GPIO1_IO00__GPIO1_IO0                           = IOMUX_PAD(0x0030, 0x0000, IOMUX_CONFIG_LPSR | 0, 0x0000, 0, 0),
index ca7608bd56b7b9b71e47f0968fcf3523b3e01cf8..15e24d44b382377fbf2d7de61bb763c0f15e74db 100644 (file)
@@ -4,6 +4,6 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
 
 void set_wdog_reset(struct wdog_regs *wdog);
index d01748fd2384ba04f7543a2b3572d25b3b8b0f8d..d53bfcc12a5395629b7fc047352d8ef4304eaa82 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef _SYS_PROTO_MX7ULP_H_
 #define _SYS_PROTO_MX7ULP_H_
 
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
 
 #define BT0CFG_LPBOOT_MASK 0x1
 #define BT0CFG_DUALBOOT_MASK 0x2
index 88724381224776b1dfc2cef7a316979bbb7104de..6e35f2d43b845e56f5c8d3db0ac8898332b66f71 100644 (file)
 #ifndef __IMX_REGS_H__
 #define __IMX_REGS_H__
 
-#include <asm/imx-common/regs-apbh.h>
+#include <asm/mach-imx/regs-apbh.h>
 #include <asm/arch/regs-base.h>
-#include <asm/imx-common/regs-bch.h>
+#include <asm/mach-imx/regs-bch.h>
 #include <asm/arch/regs-digctl.h>
-#include <asm/imx-common/regs-gpmi.h>
-#include <asm/imx-common/regs-lcdif.h>
+#include <asm/mach-imx/regs-gpmi.h>
+#include <asm/mach-imx/regs-lcdif.h>
 #include <asm/arch/regs-i2c.h>
 #include <asm/arch/regs-lradc.h>
 #include <asm/arch/regs-ocotp.h>
index d155e3a5d8d7c9affb3685ede539f871f6de7002..6a86055bab435e0a371a830e612e7dde1111f78d 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef __MX23_REGS_CLKCTRL_H__
 #define __MX23_REGS_CLKCTRL_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_clkctrl_regs {
index 1490ffd520e52a9e023929fbd90f82ba60a8d36f..16447ae269e6b291a74d0648fcf8fa745e6542fc 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef __MX28_REGS_CLKCTRL_H__
 #define __MX28_REGS_CLKCTRL_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_clkctrl_regs {
index 860be9e28f4561fab2dfba7be5e5dc328bd3ea80..e8ba1dd26f0720555714de0c20c3a6461d0c9d01 100644 (file)
@@ -9,7 +9,7 @@
 #ifndef __MX28_REGS_DIGCTL_H__
 #define __MX28_REGS_DIGCTL_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_digctl_regs {
index a58303efb8d9578cbac308feea0c2dc8561946df..6d10e4bc20b981d70dd7dc838162621b9c0dccbd 100644 (file)
@@ -10,7 +10,7 @@
 #ifndef __MX28_REGS_I2C_H__
 #define __MX28_REGS_I2C_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_i2c_regs {
index 74f9f7670788e9d879474dfe4f94c209d930d898..a00d6a424958c6d39e0af0c44b6d495a44982179 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef __MX28_REGS_LRADC_H__
 #define __MX28_REGS_LRADC_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_lradc_regs {
index bd80ac77fc1e7307e88532dc0993cb4cff2a8471..7c51031b9a8cbb24bacfb2aca7270fc46122e665 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef __MX28_REGS_OCOTP_H__
 #define __MX28_REGS_OCOTP_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_ocotp_regs {
index 251fe6616d020e01cc69ee7a96089cfe5392bb65..b107dec31d368ae9ff90ebbe85148458bc614a7a 100644 (file)
@@ -13,7 +13,7 @@
 #ifndef __MX28_REGS_PINCTRL_H__
 #define __MX28_REGS_PINCTRL_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_pinctrl_regs {
index ce2f425c1c8b7de120ef1b972bc85af29a2379ac..d05fccf72938b10b4c1f7e3c8622056177febc20 100644 (file)
@@ -9,7 +9,7 @@
 #ifndef __MX23_REGS_POWER_H__
 #define __MX23_REGS_POWER_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_power_regs {
index 9528e3ce9ad805ec30a1c0595924dbddb296c50f..f6bb30107f5efc5229776e113772e61556110186 100644 (file)
@@ -9,7 +9,7 @@
 #ifndef __MX28_REGS_POWER_H__
 #define __MX28_REGS_POWER_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_power_regs {
index 03e2e5dd62881cc7cc3b20a1b6731abd8d644c7a..dfa4dd078f119b20ca823ad40b3985333736e3ff 100644 (file)
@@ -10,7 +10,7 @@
 #ifndef __MX28_REGS_RTC_H__
 #define __MX28_REGS_RTC_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_rtc_regs {
index e991216d0bd4bda0bbed9bbb8421027af67a122c..12a5dab73aec8b443a7bde3b38a708e8fbccd757 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef __MX28_REGS_SSP_H__
 #define __MX28_REGS_SSP_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 #if defined(CONFIG_MX23)
index 713c630dcc3e3199ff029f3e2eee675ab1a3e2d6..260d7d7f2babe47da5b556dba8c6f369f98de51e 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef __MX28_REGS_TIMROT_H__
 #define __MX28_REGS_TIMROT_H__
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef        __ASSEMBLY__
 struct mxs_timrot_regs {
index 7ceb810dc627231acf2bbcbe66820e863e4f0809..608182af7b09df16e88fbbf74f3eb680ca65f2bb 100644 (file)
@@ -12,7 +12,7 @@
 #ifndef __ARCH_ARM___MXS_UARTAPP_H
 #define __ARCH_ARM___MXS_UARTAPP_H
 
-#include <asm/imx-common/regs-common.h>
+#include <asm/mach-imx/regs-common.h>
 
 #ifndef __ASSEMBLY__
 struct mxs_uartapp_regs {
index f2b075e14ffbbcd8325574894585793b525ef373..609676375b55b93fb3e534f3d491ef31f45256b9 100644 (file)
@@ -10,7 +10,7 @@
 #ifndef __MXS_SYS_PROTO_H__
 #define __MXS_SYS_PROTO_H__
 
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
 
 int mxsmmc_initialize(bd_t *bis, int id, int (*wp)(int), int (*cd)(int));
 
index 7346876dc21a486b4ea2e07fbb603c1e5b57c115..72d264bcbe9523670a0c8af106de49e3c3c90246 100644 (file)
@@ -1,3 +1,4 @@
+
 /*
  * Copyright 2017 Theobroma Systems Design und Consulting GmbH
  *
  */
 
 #ifdef CONFIG_SPL_BUILD
-       .space 0x4         /* space for the 'RK33' */
+       /*
+        * We need to add 4 bytes of space for the 'RK33' at the
+        * beginning of the executable.  However, as we want to keep
+        * this generic and make it applicable to builds that are like
+        * the RK3368 (TPL needs this, SPL doesn't) or the RK3399 (no
+        * TPL, but extra space needed in the SPL), we simply repeat
+        * the 'b reset' with the expectation that the first one will
+        * be overwritten, if this is the first stage contained in the
+        * final image created with mkimage)...
+        */
+       b reset  /* may be overwritten --- should be 'nop' or a 'b reset' */
 #endif
        b reset
 
index 4910ee7387a02dc1b50f1948206d061d6842ab62..24a9cc052517c0f78fdd39e9b4d7b5a24f0ea284 100644 (file)
@@ -51,8 +51,6 @@ check_member(rk3368_cru, emmc_con[1], 0x41c);
 
 struct rk3368_clk_priv {
        struct rk3368_cru *cru;
-       ulong rate;
-       bool has_bwadj;
 };
 
 enum {
index cf830d04ead7055f94adf7029ba52fc94e2c459b..033f067122d341f177989747e9a35f5bbcaae7a2 100644 (file)
 /* Private data for the clock driver - used by rockchip_get_cru() */
 struct rk3399_clk_priv {
        struct rk3399_cru *cru;
-       ulong rate;
 };
 
 struct rk3399_pmuclk_priv {
        struct rk3399_pmucru *pmucru;
-       ulong rate;
 };
 
 struct rk3399_pmucru {
index 08ff94591c9aec33adaded1839563d7425cc8a05..b1d8047691e77804a7f67e5bf2c0b653c19f2d58 100644 (file)
@@ -25,9 +25,11 @@ check_member(rk3288_pwm, ctrl, 0xc);
 
 #define PWM_DUTY_POSTIVE                (1 << 3)
 #define PWM_DUTY_NEGATIVE               (0 << 3)
+#define PWM_DUTY_MASK                  (1 << 3)
 
 #define PWM_INACTIVE_POSTIVE            (1 << 4)
 #define PWM_INACTIVE_NEGATIVE           (0 << 4)
+#define PWM_INACTIVE_MASK              (1 << 4)
 
 #define PWM_OUTPUT_LEFT                 (0 << 5)
 #define PWM_OUTPUT_CENTER               (1 << 5)
index 1d044bbda5b90f2bc93308a461c939d650f96a25..c23c5093b72968314b4c0d0245faba25cddb503c 100644 (file)
@@ -8,12 +8,12 @@
 #define __ASM_ARCH_TIMER_H
 
 struct rk_timer {
-       unsigned int timer_load_count0;
-       unsigned int timer_load_count1;
-       unsigned int timer_curr_value0;
-       unsigned int timer_curr_value1;
-       unsigned int timer_ctrl_reg;
-       unsigned int timer_int_status;
+       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 rockchip_timer_init(void);
diff --git a/arch/arm/include/asm/arch-stm32f7/fmc.h b/arch/arm/include/asm/arch-stm32f7/fmc.h
deleted file mode 100644 (file)
index 4741e5a..0000000
+++ /dev/null
@@ -1,74 +0,0 @@
-/*
- * (C) Copyright 2013
- * Pavel Boldin, Emcraft Systems, paboldin@emcraft.com
- *
- * (C) Copyright 2015
- * Kamil Lulko, <kamil.lulko@gmail.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _MACH_FMC_H_
-#define _MACH_FMC_H_
-
-struct stm32_fmc_regs {
-       u32 sdcr1;      /* Control register 1 */
-       u32 sdcr2;      /* Control register 2 */
-       u32 sdtr1;      /* Timing register 1 */
-       u32 sdtr2;      /* Timing register 2 */
-       u32 sdcmr;      /* Mode register */
-       u32 sdrtr;      /* Refresh timing register */
-       u32 sdsr;       /* Status register */
-};
-
-/*
- * FMC registers base
- */
-#define STM32_SDRAM_FMC                ((struct stm32_fmc_regs *)SDRAM_FMC_BASE)
-
-/* Control register SDCR */
-#define FMC_SDCR_RPIPE_SHIFT   13      /* RPIPE bit shift */
-#define FMC_SDCR_RBURST_SHIFT  12      /* RBURST bit shift */
-#define FMC_SDCR_SDCLK_SHIFT   10      /* SDRAM clock divisor shift */
-#define FMC_SDCR_WP_SHIFT      9       /* Write protection shift */
-#define FMC_SDCR_CAS_SHIFT     7       /* CAS latency shift */
-#define FMC_SDCR_NB_SHIFT      6       /* Number of banks shift */
-#define FMC_SDCR_MWID_SHIFT    4       /* Memory width shift */
-#define FMC_SDCR_NR_SHIFT      2       /* Number of row address bits shift */
-#define FMC_SDCR_NC_SHIFT      0       /* Number of col address bits shift */
-
-/* Timings register SDTR */
-#define FMC_SDTR_TMRD_SHIFT    0       /* Load mode register to active */
-#define FMC_SDTR_TXSR_SHIFT    4       /* Exit self-refresh time */
-#define FMC_SDTR_TRAS_SHIFT    8       /* Self-refresh time */
-#define FMC_SDTR_TRC_SHIFT     12      /* Row cycle delay */
-#define FMC_SDTR_TWR_SHIFT     16      /* Recovery delay */
-#define FMC_SDTR_TRP_SHIFT     20      /* Row precharge delay */
-#define FMC_SDTR_TRCD_SHIFT    24      /* Row-to-column delay */
-
-
-#define FMC_SDCMR_NRFS_SHIFT   5
-
-#define FMC_SDCMR_MODE_NORMAL          0
-#define FMC_SDCMR_MODE_START_CLOCK     1
-#define FMC_SDCMR_MODE_PRECHARGE       2
-#define FMC_SDCMR_MODE_AUTOREFRESH     3
-#define FMC_SDCMR_MODE_WRITE_MODE      4
-#define FMC_SDCMR_MODE_SELFREFRESH     5
-#define FMC_SDCMR_MODE_POWERDOWN       6
-
-#define FMC_SDCMR_BANK_1               BIT(4)
-#define FMC_SDCMR_BANK_2               BIT(3)
-
-#define FMC_SDCMR_MODE_REGISTER_SHIFT  9
-
-#define FMC_SDSR_BUSY                  BIT(5)
-
-#define FMC_BUSY_WAIT()                do { \
-               __asm__ __volatile__ ("dsb" : : : "memory"); \
-               while (STM32_SDRAM_FMC->sdsr & FMC_SDSR_BUSY) \
-                       ; \
-       } while (0)
-
-
-#endif /* _MACH_FMC_H_ */
index 0f8d50b4c6140a11a3313bb2cd4f203166ef09c0..a33f8cf9bc3cf377de98e91d7d85a30929af63ce 100644 (file)
@@ -8,44 +8,24 @@
 #ifndef _STM32_RCC_H
 #define _STM32_RCC_H
 
+#include <dt-bindings/mfd/stm32f7-rcc.h>
+
 /*
  * RCC AHB1ENR specific definitions
  */
-#define RCC_AHB1ENR_GPIO_A_EN          BIT(0)
-#define RCC_AHB1ENR_GPIO_B_EN          BIT(1)
-#define RCC_AHB1ENR_GPIO_C_EN          BIT(2)
-#define RCC_AHB1ENR_GPIO_D_EN          BIT(3)
-#define RCC_AHB1ENR_GPIO_E_EN          BIT(4)
-#define RCC_AHB1ENR_GPIO_F_EN          BIT(5)
-#define RCC_AHB1ENR_GPIO_G_EN          BIT(6)
-#define RCC_AHB1ENR_GPIO_H_EN          BIT(7)
-#define RCC_AHB1ENR_GPIO_I_EN          BIT(8)
-#define RCC_AHB1ENR_GPIO_J_EN          BIT(9)
-#define RCC_AHB1ENR_GPIO_K_EN          BIT(10)
 #define RCC_AHB1ENR_ETHMAC_EN          BIT(25)
 #define RCC_AHB1ENR_ETHMAC_TX_EN       BIT(26)
 #define RCC_AHB1ENR_ETHMAC_RX_EN       BIT(27)
-#define RCC_AHB1ENR_ETHMAC_PTP_EN      BIT(28)
-
-/*
- * RCC AHB3ENR specific definitions
- */
-#define RCC_AHB3ENR_FMC_EN             BIT(0)
-#define RCC_AHB3ENR_QSPI_EN             BIT(1)
 
 /*
  * RCC APB1ENR specific definitions
  */
 #define RCC_APB1ENR_TIM2EN             BIT(0)
-#define RCC_APB1ENR_USART2EN           BIT(17)
-#define RCC_APB1ENR_USART3EN           BIT(18)
 #define RCC_APB1ENR_PWREN              BIT(28)
 
 /*
  * RCC APB2ENR specific definitions
  */
-#define RCC_APB2ENR_USART1EN           BIT(4)
-#define RCC_APB2ENR_USART6EN           BIT(5)
 #define RCC_APB2ENR_SYSCFGEN           BIT(14)
 
 #endif
index 14e3398768a0e58d79d4d75471d256224c382085..87aee6057b283aca37d73ce342ba5530522feac4 100644 (file)
@@ -57,12 +57,6 @@ static const u32 sect_sz_kb[CONFIG_SYS_MAX_FLASH_SECT] = {
        [5 ... 7] =     256 * 1024
 };
 
-enum clock {
-       CLOCK_CORE,
-       CLOCK_AHB,
-       CLOCK_APB1,
-       CLOCK_APB2
-};
 #define STM32_BUS_MASK         GENMASK(31, 16)
 
 struct stm32_rcc_regs {
@@ -101,11 +95,6 @@ struct stm32_rcc_regs {
 };
 #define STM32_RCC              ((struct stm32_rcc_regs *)RCC_BASE)
 
-struct stm32_rcc_ext_f7_regs {
-       u32 dckcfgr2;   /* dedicated clocks configuration register */
-};
-#define STM32_RCC_EXT_F7       ((struct stm32_rcc_ext_f7_regs *) (RCC_BASE + sizeof(struct stm32_rcc_regs)))
-
 struct stm32_pwr_regs {
        u32 cr1;   /* power control register 1 */
        u32 csr1;  /* power control/status register 2 */
@@ -114,8 +103,6 @@ struct stm32_pwr_regs {
 };
 #define STM32_PWR              ((struct stm32_pwr_regs *)PWR_BASE)
 
-int configure_clocks(void);
-unsigned long clock_get(enum clock clck);
 void stm32_flash_latency_cfg(int latency);
 
 #endif /* _ASM_ARCH_HARDWARE_H */
index 3c5604ae29ad2d4caeab73de4bcf59f59286d480..9c1ec022332a494f725f854d011080f49fdf7b9d 100644 (file)
@@ -21,24 +21,9 @@ enum periph_id {
 };
 
 enum periph_clock {
-       USART1_CLOCK_CFG = 0,
-       USART2_CLOCK_CFG,
-       GPIO_A_CLOCK_CFG,
-       GPIO_B_CLOCK_CFG,
-       GPIO_C_CLOCK_CFG,
-       GPIO_D_CLOCK_CFG,
-       GPIO_E_CLOCK_CFG,
-       GPIO_F_CLOCK_CFG,
-       GPIO_G_CLOCK_CFG,
-       GPIO_H_CLOCK_CFG,
-       GPIO_I_CLOCK_CFG,
-       GPIO_J_CLOCK_CFG,
-       GPIO_K_CLOCK_CFG,
        SYSCFG_CLOCK_CFG,
        TIMER2_CLOCK_CFG,
-       FMC_CLOCK_CFG,
        STMMAC_CLOCK_CFG,
-       QSPI_CLOCK_CFG,
 };
 
 #endif /* __ASM_ARM_ARCH_PERIPH_H */
index f62b2a43788fa7ee2798c42e6c9309fc5d9ffc4e..92180db321e37fb5dccf88fd90139738ab2670d1 100644 (file)
@@ -266,7 +266,7 @@ void clock_ll_start_uart(enum periph_id periph_id);
  * @param node         Node to look at
  * @return peripheral ID, or PERIPH_ID_NONE if none
  */
-enum periph_id clock_decode_periph_id(const void *blob, int node);
+int clock_decode_periph_id(struct udevice *dev);
 
 /**
  * Checks if the oscillator bypass is enabled (XOBP bit)
index 3add1b3c09bbdf63b8508e584a467c44340bc2a3..3b9711d28ef1088868cd3964d8924f4e8605266b 100644 (file)
@@ -97,6 +97,11 @@ enum {
        TEGRA_SOC_UNKNOWN       = -1,
 };
 
+/* Tegra system controller (SYSCON) devices */
+enum {
+       TEGRA_SYSCON_PMC,
+};
+
 #else  /* __ASSEMBLY__ */
 #define PRM_RSTCTRL            NV_PA_PMC_BASE
 #endif
index b4b4c8ba4d1022451a0e454cd9cb4d84302ec3c1..deccdf455d9b195724cec6287ac419dd18ddd296 100644 (file)
@@ -15,7 +15,7 @@ struct tegra_xusb_phy;
  */
 struct tegra_xusb_phy *tegra_xusb_phy_get(unsigned int type);
 
-void tegra_xusb_padctl_init(const void *fdt);
+void tegra_xusb_padctl_init(void);
 int tegra_xusb_phy_prepare(struct tegra_xusb_phy *phy);
 int tegra_xusb_phy_enable(struct tegra_xusb_phy *phy);
 int tegra_xusb_phy_disable(struct tegra_xusb_phy *phy);
index 5af071a4db953a57f4673a4aec24d9aeabe88f60..506e584fa5937ff44d171924b91b362e02e5faff 100644 (file)
@@ -7,7 +7,7 @@
 #ifndef __IOMUX_VF610_H__
 #define __IOMUX_VF610_H__
 
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 /* Pad control groupings */
 #define VF610_UART_PAD_CTRL    (PAD_CTL_PUS_100K_UP | PAD_CTL_DSE_25ohm | \
index 5a53e403a602d96744c33f5449b3f9ac16e51a06..9dbb2c4c66a036ed1459431a227e411018e1d5ec 100644 (file)
@@ -19,11 +19,7 @@ enum usbhs_omap_port_mode {
        OMAP_EHCI_PORT_MODE_HSIC,
 };
 
-#ifdef CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS
-#define OMAP_HS_USB_PORTS      CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS
-#else
 #define OMAP_HS_USB_PORTS      3
-#endif
 
 #define is_ehci_phy_mode(x)    ((x) == OMAP_EHCI_PORT_MODE_PHY)
 #define is_ehci_tll_mode(x)    ((x) == OMAP_EHCI_PORT_MODE_TLL)
diff --git a/arch/arm/include/asm/imx-common/boot_mode.h b/arch/arm/include/asm/imx-common/boot_mode.h
deleted file mode 100644 (file)
index a8239f2..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-/*
- * Copyright (C) 2012 Boundary Devices Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _ASM_BOOT_MODE_H
-#define _ASM_BOOT_MODE_H
-#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;
-};
-
-void add_board_boot_modes(const struct boot_mode *p);
-void boot_mode_apply(unsigned cfg_val);
-extern const struct boot_mode soc_boot_modes[];
-#endif
diff --git a/arch/arm/include/asm/imx-common/dma.h b/arch/arm/include/asm/imx-common/dma.h
deleted file mode 100644 (file)
index 0244947..0000000
+++ /dev/null
@@ -1,161 +0,0 @@
-/*
- * Freescale i.MX28 APBH DMA
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __DMA_H__
-#define __DMA_H__
-
-#include <linux/list.h>
-#include <linux/compiler.h>
-
-#define DMA_PIO_WORDS          15
-#define MXS_DMA_ALIGNMENT      ARCH_DMA_MINALIGN
-
-/*
- * MXS DMA channels
- */
-#if defined(CONFIG_MX23)
-enum {
-       MXS_DMA_CHANNEL_AHB_APBH_LCDIF = 0,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP0,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP1,
-       MXS_DMA_CHANNEL_AHB_APBH_RESERVED0,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI0,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
-       MXS_MAX_DMA_CHANNELS,
-};
-#elif defined(CONFIG_MX28)
-enum {
-       MXS_DMA_CHANNEL_AHB_APBH_SSP0 = 0,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP1,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP2,
-       MXS_DMA_CHANNEL_AHB_APBH_SSP3,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI0,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI4,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI5,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI6,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI7,
-       MXS_DMA_CHANNEL_AHB_APBH_HSADC,
-       MXS_DMA_CHANNEL_AHB_APBH_LCDIF,
-       MXS_DMA_CHANNEL_AHB_APBH_RESERVED0,
-       MXS_DMA_CHANNEL_AHB_APBH_RESERVED1,
-       MXS_MAX_DMA_CHANNELS,
-};
-#elif defined(CONFIG_MX6) || defined(CONFIG_MX7)
-enum {
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI0 = 0,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI4,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI5,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI6,
-       MXS_DMA_CHANNEL_AHB_APBH_GPMI7,
-       MXS_MAX_DMA_CHANNELS,
-};
-#endif
-
-/*
- * MXS DMA hardware command.
- *
- * This structure describes the in-memory layout of an entire DMA command,
- * including space for the maximum number of PIO accesses. See the appropriate
- * reference manual for a detailed description of what these fields mean to the
- * DMA hardware.
- */
-#define        MXS_DMA_DESC_COMMAND_MASK       0x3
-#define        MXS_DMA_DESC_COMMAND_OFFSET     0
-#define        MXS_DMA_DESC_COMMAND_NO_DMAXFER 0x0
-#define        MXS_DMA_DESC_COMMAND_DMA_WRITE  0x1
-#define        MXS_DMA_DESC_COMMAND_DMA_READ   0x2
-#define        MXS_DMA_DESC_COMMAND_DMA_SENSE  0x3
-#define        MXS_DMA_DESC_CHAIN              (1 << 2)
-#define        MXS_DMA_DESC_IRQ                (1 << 3)
-#define        MXS_DMA_DESC_NAND_LOCK          (1 << 4)
-#define        MXS_DMA_DESC_NAND_WAIT_4_READY  (1 << 5)
-#define        MXS_DMA_DESC_DEC_SEM            (1 << 6)
-#define        MXS_DMA_DESC_WAIT4END           (1 << 7)
-#define        MXS_DMA_DESC_HALT_ON_TERMINATE  (1 << 8)
-#define        MXS_DMA_DESC_TERMINATE_FLUSH    (1 << 9)
-#define        MXS_DMA_DESC_PIO_WORDS_MASK     (0xf << 12)
-#define        MXS_DMA_DESC_PIO_WORDS_OFFSET   12
-#define        MXS_DMA_DESC_BYTES_MASK         (0xffff << 16)
-#define        MXS_DMA_DESC_BYTES_OFFSET       16
-
-struct mxs_dma_cmd {
-       unsigned long           next;
-       unsigned long           data;
-       union {
-               dma_addr_t      address;
-               unsigned long   alternate;
-       };
-       unsigned long           pio_words[DMA_PIO_WORDS];
-};
-
-/*
- * MXS DMA command descriptor.
- *
- * This structure incorporates an MXS DMA hardware command structure, along
- * with metadata.
- */
-#define        MXS_DMA_DESC_FIRST      (1 << 0)
-#define        MXS_DMA_DESC_LAST       (1 << 1)
-#define        MXS_DMA_DESC_READY      (1 << 31)
-
-struct mxs_dma_desc {
-       struct mxs_dma_cmd      cmd;
-       unsigned int            flags;
-       dma_addr_t              address;
-       void                    *buffer;
-       struct list_head        node;
-} __aligned(MXS_DMA_ALIGNMENT);
-
-/**
- * MXS DMA channel
- *
- * This structure represents a single DMA channel. The MXS platform code
- * maintains an array of these structures to represent every DMA channel in the
- * system (see mxs_dma_channels).
- */
-#define        MXS_DMA_FLAGS_IDLE      0
-#define        MXS_DMA_FLAGS_BUSY      (1 << 0)
-#define        MXS_DMA_FLAGS_FREE      0
-#define        MXS_DMA_FLAGS_ALLOCATED (1 << 16)
-#define        MXS_DMA_FLAGS_VALID     (1 << 31)
-
-struct mxs_dma_chan {
-       const char *name;
-       unsigned long dev;
-       struct mxs_dma_device *dma;
-       unsigned int flags;
-       unsigned int active_num;
-       unsigned int pending_num;
-       struct list_head active;
-       struct list_head done;
-};
-
-struct mxs_dma_desc *mxs_dma_desc_alloc(void);
-void mxs_dma_desc_free(struct mxs_dma_desc *);
-int mxs_dma_desc_append(int channel, struct mxs_dma_desc *pdesc);
-
-int mxs_dma_go(int chan);
-void mxs_dma_init(void);
-int mxs_dma_init_channel(int chan);
-int mxs_dma_release(int chan);
-
-void mxs_dma_circ_start(int chan, struct mxs_dma_desc *pdesc);
-
-#endif /* __DMA_H__ */
diff --git a/arch/arm/include/asm/imx-common/gpio.h b/arch/arm/include/asm/imx-common/gpio.h
deleted file mode 100644 (file)
index 26b296b..0000000
+++ /dev/null
@@ -1,23 +0,0 @@
-/*
- * Copyright (C) 2011
- * Stefano Babic, DENX Software Engineering, <sbabic@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-
-#ifndef __ASM_ARCH_IMX_GPIO_H
-#define __ASM_ARCH_IMX_GPIO_H
-
-#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
-/* GPIO registers */
-struct gpio_regs {
-       u32 gpio_dr;    /* data */
-       u32 gpio_dir;   /* direction */
-       u32 gpio_psr;   /* pad satus */
-};
-#endif
-
-#define IMX_GPIO_NR(port, index)               ((((port)-1)*32)+((index)&31))
-
-#endif
diff --git a/arch/arm/include/asm/imx-common/hab.h b/arch/arm/include/asm/imx-common/hab.h
deleted file mode 100644 (file)
index e0ff459..0000000
+++ /dev/null
@@ -1,150 +0,0 @@
-/*
- * Copyright (C) 2012-2015 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- *
-*/
-
-#ifndef __SECURE_MX6Q_H__
-#define __SECURE_MX6Q_H__
-
-#include <linux/types.h>
-
-/* -------- start of HAB API updates ------------*/
-/* The following are taken from HAB4 SIS */
-
-/* Status definitions */
-enum hab_status {
-       HAB_STS_ANY = 0x00,
-       HAB_FAILURE = 0x33,
-       HAB_WARNING = 0x69,
-       HAB_SUCCESS = 0xf0
-};
-
-/* Security Configuration definitions */
-enum hab_config {
-       HAB_CFG_RETURN = 0x33,  /* < Field Return IC */
-       HAB_CFG_OPEN = 0xf0,    /* < Non-secure IC */
-       HAB_CFG_CLOSED = 0xcc   /* < Secure IC */
-};
-
-/* State definitions */
-enum hab_state {
-       HAB_STATE_INITIAL = 0x33,       /* Initialising state (transitory) */
-       HAB_STATE_CHECK = 0x55,         /* Check state (non-secure) */
-       HAB_STATE_NONSECURE = 0x66,     /* Non-secure state */
-       HAB_STATE_TRUSTED = 0x99,       /* Trusted state */
-       HAB_STATE_SECURE = 0xaa,        /* Secure state */
-       HAB_STATE_FAIL_SOFT = 0xcc, /* Soft fail state */
-       HAB_STATE_FAIL_HARD = 0xff, /* Hard fail state (terminal) */
-       HAB_STATE_NONE = 0xf0,          /* No security state machine */
-       HAB_STATE_MAX
-};
-
-enum hab_reason {
-       HAB_RSN_ANY = 0x00,                     /* Match any reason */
-       HAB_ENG_FAIL = 0x30,            /* Engine failure */
-       HAB_INV_ADDRESS = 0x22,         /* Invalid address: access denied */
-       HAB_INV_ASSERTION = 0x0c,   /* Invalid assertion */
-       HAB_INV_CALL = 0x28,            /* Function called out of sequence */
-       HAB_INV_CERTIFICATE = 0x21, /* Invalid certificate */
-       HAB_INV_COMMAND = 0x06,     /* Invalid command: command malformed */
-       HAB_INV_CSF = 0x11,                     /* Invalid csf */
-       HAB_INV_DCD = 0x27,                     /* Invalid dcd */
-       HAB_INV_INDEX = 0x0f,           /* Invalid index: access denied */
-       HAB_INV_IVT = 0x05,                     /* Invalid ivt */
-       HAB_INV_KEY = 0x1d,                     /* Invalid key */
-       HAB_INV_RETURN = 0x1e,          /* Failed callback function */
-       HAB_INV_SIGNATURE = 0x18,   /* Invalid signature */
-       HAB_INV_SIZE = 0x17,            /* Invalid data size */
-       HAB_MEM_FAIL = 0x2e,            /* Memory failure */
-       HAB_OVR_COUNT = 0x2b,           /* Expired poll count */
-       HAB_OVR_STORAGE = 0x2d,         /* Exhausted storage region */
-       HAB_UNS_ALGORITHM = 0x12,   /* Unsupported algorithm */
-       HAB_UNS_COMMAND = 0x03,         /* Unsupported command */
-       HAB_UNS_ENGINE = 0x0a,          /* Unsupported engine */
-       HAB_UNS_ITEM = 0x24,            /* Unsupported configuration item */
-       HAB_UNS_KEY = 0x1b,             /* Unsupported key type/parameters */
-       HAB_UNS_PROTOCOL = 0x14,        /* Unsupported protocol */
-       HAB_UNS_STATE = 0x09,           /* Unsuitable state */
-       HAB_RSN_MAX
-};
-
-enum hab_context {
-       HAB_CTX_ANY = 0x00,                     /* Match any context */
-       HAB_CTX_FAB = 0xff,                 /* Event logged in hab_fab_test() */
-       HAB_CTX_ENTRY = 0xe1,           /* Event logged in hab_rvt.entry() */
-       HAB_CTX_TARGET = 0x33,      /* Event logged in hab_rvt.check_target() */
-       HAB_CTX_AUTHENTICATE = 0x0a,/* Logged in hab_rvt.authenticate_image() */
-       HAB_CTX_DCD = 0xdd,         /* Event logged in hab_rvt.run_dcd() */
-       HAB_CTX_CSF = 0xcf,         /* Event logged in hab_rvt.run_csf() */
-       HAB_CTX_COMMAND = 0xc0,     /* Event logged executing csf/dcd command */
-       HAB_CTX_AUT_DAT = 0xdb,         /* Authenticated data block */
-       HAB_CTX_ASSERT = 0xa0,          /* Event logged in hab_rvt.assert() */
-       HAB_CTX_EXIT = 0xee,            /* Event logged in hab_rvt.exit() */
-       HAB_CTX_MAX
-};
-
-struct imx_sec_config_fuse_t {
-       int bank;
-       int word;
-};
-
-#if defined(CONFIG_SECURE_BOOT)
-extern struct imx_sec_config_fuse_t const imx_sec_config_fuse;
-#endif
-
-/*Function prototype description*/
-typedef enum hab_status hab_rvt_report_event_t(enum hab_status, uint32_t,
-               uint8_t* , size_t*);
-typedef enum hab_status hab_rvt_report_status_t(enum hab_config *,
-               enum hab_state *);
-typedef enum hab_status hab_loader_callback_f_t(void**, size_t*, const void*);
-typedef enum hab_status hab_rvt_entry_t(void);
-typedef enum hab_status hab_rvt_exit_t(void);
-typedef void *hab_rvt_authenticate_image_t(uint8_t, ptrdiff_t,
-               void **, size_t *, hab_loader_callback_f_t);
-typedef void hapi_clock_init_t(void);
-
-#define HAB_ENG_ANY            0x00   /* Select first compatible engine */
-#define HAB_ENG_SCC            0x03   /* Security controller */
-#define HAB_ENG_RTIC   0x05   /* Run-time integrity checker */
-#define HAB_ENG_SAHARA  0x06   /* Crypto accelerator */
-#define HAB_ENG_CSU            0x0a   /* Central Security Unit */
-#define HAB_ENG_SRTC   0x0c   /* Secure clock */
-#define HAB_ENG_DCP            0x1b   /* Data Co-Processor */
-#define HAB_ENG_CAAM   0x1d   /* CAAM */
-#define HAB_ENG_SNVS   0x1e   /* Secure Non-Volatile Storage */
-#define HAB_ENG_OCOTP  0x21   /* Fuse controller */
-#define HAB_ENG_DTCP   0x22   /* DTCP co-processor */
-#define HAB_ENG_ROM            0x36   /* Protected ROM area */
-#define HAB_ENG_HDCP   0x24   /* HDCP co-processor */
-#define HAB_ENG_RTL            0x77   /* RTL simulation engine */
-#define HAB_ENG_SW             0xff   /* Software engine */
-
-#ifdef CONFIG_ROM_UNIFIED_SECTIONS
-#define HAB_RVT_BASE                   0x00000100
-#else
-#define HAB_RVT_BASE                   0x00000094
-#endif
-
-#define HAB_RVT_ENTRY                  (*(uint32_t *)(HAB_RVT_BASE + 0x04))
-#define HAB_RVT_EXIT                   (*(uint32_t *)(HAB_RVT_BASE + 0x08))
-#define HAB_RVT_AUTHENTICATE_IMAGE     (*(uint32_t *)(HAB_RVT_BASE + 0x10))
-#define HAB_RVT_REPORT_EVENT           (*(uint32_t *)(HAB_RVT_BASE + 0x20))
-#define HAB_RVT_REPORT_STATUS          (*(uint32_t *)(HAB_RVT_BASE + 0x24))
-
-#define HAB_RVT_REPORT_EVENT_NEW               (*(uint32_t *)0x000000B8)
-#define HAB_RVT_REPORT_STATUS_NEW              (*(uint32_t *)0x000000BC)
-#define HAB_RVT_AUTHENTICATE_IMAGE_NEW         (*(uint32_t *)0x000000A8)
-#define HAB_RVT_ENTRY_NEW                      (*(uint32_t *)0x0000009C)
-#define HAB_RVT_EXIT_NEW                       (*(uint32_t *)0x000000A0)
-
-#define HAB_CID_ROM 0 /**< ROM Caller ID */
-#define HAB_CID_UBOOT 1 /**< UBOOT Caller ID*/
-
-/* ----------- end of HAB API updates ------------*/
-
-uint32_t authenticate_image(uint32_t ddr_start, uint32_t image_size);
-
-#endif
diff --git a/arch/arm/include/asm/imx-common/imximage.cfg b/arch/arm/include/asm/imx-common/imximage.cfg
deleted file mode 100644 (file)
index d62166f..0000000
+++ /dev/null
@@ -1,24 +0,0 @@
-/*
- * i.MX image header offset values
- * Copyright (C) 2013 Marek Vasut <marex@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-/*
- * NOTE: This file must be kept in sync with tools/imximage.h because
- *       tools/imximage.c can not cross-include headers from arch/arm/
- *       and vice-versa.
- */
-
-#ifndef __ASM_IMX_COMMON_IMXIMAGE_CFG__
-#define __ASM_IMX_COMMON_IMXIMAGE_CFG__
-
-/* Standard image header offset for NAND, SATA, SD, SPI flash. */
-#define FLASH_OFFSET_STANDARD  0x400
-/* Specific image header offset for booting from OneNAND. */
-#define FLASH_OFFSET_ONENAND   0x100
-/* Specific image header offset for booting from memory-mapped NOR. */
-#define FLASH_OFFSET_NOR       0x1000
-
-#endif  /* __ASM_IMX_COMMON_IMXIMAGE_CFG__ */
diff --git a/arch/arm/include/asm/imx-common/iomux-v3.h b/arch/arm/include/asm/imx-common/iomux-v3.h
deleted file mode 100644 (file)
index ad35e01..0000000
+++ /dev/null
@@ -1,270 +0,0 @@
-/*
- * Based on Linux i.MX iomux-v3.h file:
- * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
- *                     <armlinux@phytec.de>
- *
- * Copyright (C) 2011 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MACH_IOMUX_V3_H__
-#define __MACH_IOMUX_V3_H__
-
-#include <common.h>
-
-/*
- *     build IOMUX_PAD structure
- *
- * This iomux scheme is based around pads, which are the physical balls
- * on the processor.
- *
- * - Each pad has a pad control register (IOMUXC_SW_PAD_CTRL_x) which controls
- *   things like driving strength and pullup/pulldown.
- * - Each pad can have but not necessarily does have an output routing register
- *   (IOMUXC_SW_MUX_CTL_PAD_x).
- * - Each pad can have but not necessarily does have an input routing register
- *   (IOMUXC_x_SELECT_INPUT)
- *
- * The three register sets do not have a fixed offset to each other,
- * hence we order this table by pad control registers (which all pads
- * have) and put the optional i/o routing registers into additional
- * fields.
- *
- * The naming convention for the pad modes is SOC_PAD_<padname>__<padmode>
- * If <padname> or <padmode> refers to a GPIO, it is named GPIO_<unit>_<num>
- *
- * IOMUX/PAD Bit field definitions
- *
- * MUX_CTRL_OFS:           0..11 (12)
- * PAD_CTRL_OFS:          12..23 (12)
- * SEL_INPUT_OFS:         24..35 (12)
- * MUX_MODE + SION + LPSR: 36..41  (6)
- * PAD_CTRL + NO_PAD_CTRL: 42..59 (18)
- * SEL_INP:               60..63  (4)
-*/
-
-typedef u64 iomux_v3_cfg_t;
-
-#define MUX_CTRL_OFS_SHIFT     0
-#define MUX_CTRL_OFS_MASK      ((iomux_v3_cfg_t)0xfff << MUX_CTRL_OFS_SHIFT)
-#define MUX_PAD_CTRL_OFS_SHIFT 12
-#define MUX_PAD_CTRL_OFS_MASK  ((iomux_v3_cfg_t)0xfff << \
-       MUX_PAD_CTRL_OFS_SHIFT)
-#define MUX_SEL_INPUT_OFS_SHIFT        24
-#define MUX_SEL_INPUT_OFS_MASK ((iomux_v3_cfg_t)0xfff << \
-       MUX_SEL_INPUT_OFS_SHIFT)
-
-#define MUX_MODE_SHIFT         36
-#define MUX_MODE_MASK          ((iomux_v3_cfg_t)0x3f << MUX_MODE_SHIFT)
-#define MUX_PAD_CTRL_SHIFT     42
-#define MUX_PAD_CTRL_MASK      ((iomux_v3_cfg_t)0x3ffff << MUX_PAD_CTRL_SHIFT)
-#define MUX_SEL_INPUT_SHIFT    60
-#define MUX_SEL_INPUT_MASK     ((iomux_v3_cfg_t)0xf << MUX_SEL_INPUT_SHIFT)
-
-#define MUX_MODE_SION          ((iomux_v3_cfg_t)IOMUX_CONFIG_SION << \
-       MUX_MODE_SHIFT)
-#define MUX_PAD_CTRL(x)                ((iomux_v3_cfg_t)(x) << MUX_PAD_CTRL_SHIFT)
-
-#define IOMUX_PAD(pad_ctrl_ofs, mux_ctrl_ofs, mux_mode, sel_input_ofs, \
-               sel_input, pad_ctrl)                                    \
-       (((iomux_v3_cfg_t)(mux_ctrl_ofs) << MUX_CTRL_OFS_SHIFT)     |   \
-       ((iomux_v3_cfg_t)(mux_mode)      << MUX_MODE_SHIFT)         |   \
-       ((iomux_v3_cfg_t)(pad_ctrl_ofs)  << MUX_PAD_CTRL_OFS_SHIFT) |   \
-       ((iomux_v3_cfg_t)(pad_ctrl)      << MUX_PAD_CTRL_SHIFT)     |   \
-       ((iomux_v3_cfg_t)(sel_input_ofs) << MUX_SEL_INPUT_OFS_SHIFT)|   \
-       ((iomux_v3_cfg_t)(sel_input)     << MUX_SEL_INPUT_SHIFT))
-
-#define NEW_PAD_CTRL(cfg, pad) (((cfg) & ~MUX_PAD_CTRL_MASK) | \
-                                       MUX_PAD_CTRL(pad))
-
-#define __NA_                  0x000
-#define NO_MUX_I               0
-#define NO_PAD_I               0
-
-#define NO_PAD_CTRL            (1 << 17)
-
-#define IOMUX_CONFIG_LPSR       0x20
-#define MUX_MODE_LPSR           ((iomux_v3_cfg_t)IOMUX_CONFIG_LPSR << \
-                               MUX_MODE_SHIFT)
-#ifdef CONFIG_MX7
-
-#define IOMUX_LPSR_SEL_INPUT_OFS 0x70000
-
-#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)
-
-#define PAD_CTL_PUS_100K_DOWN  (0 << 14 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_47K_UP     (1 << 14 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_100K_UP    (2 << 14 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_22K_UP     (3 << 14 | PAD_CTL_PUE)
-#define PAD_CTL_PUE            (1 << 13 | PAD_CTL_PKE)
-#define PAD_CTL_PKE            (1 << 12)
-
-#define PAD_CTL_ODE            (1 << 11)
-
-#if defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)
-#define PAD_CTL_SPEED_LOW      (0 << 6)
-#else
-#define PAD_CTL_SPEED_LOW      (1 << 6)
-#endif
-#define PAD_CTL_SPEED_MED      (2 << 6)
-#define PAD_CTL_SPEED_HIGH     (3 << 6)
-
-#define PAD_CTL_DSE_DISABLE    (0 << 3)
-#define PAD_CTL_DSE_240ohm     (1 << 3)
-#define PAD_CTL_DSE_120ohm     (2 << 3)
-#define PAD_CTL_DSE_80ohm      (3 << 3)
-#define PAD_CTL_DSE_60ohm      (4 << 3)
-#define PAD_CTL_DSE_48ohm      (5 << 3)
-#define PAD_CTL_DSE_40ohm      (6 << 3)
-#define PAD_CTL_DSE_34ohm      (7 << 3)
-
-/* i.MX6SL/SLL */
-#define PAD_CTL_LVE            (1 << 1)
-#define PAD_CTL_LVE_BIT                (1 << 22)
-
-/* i.MX6SLL */
-#define PAD_CTL_IPD_BIT                (1 << 27)
-
-#elif defined(CONFIG_VF610)
-
-#define PAD_MUX_MODE_SHIFT     20
-
-#define PAD_CTL_INPUT_DIFFERENTIAL (1 << 16)
-
-#define PAD_CTL_SPEED_MED      (1 << 12)
-#define PAD_CTL_SPEED_HIGH     (3 << 12)
-
-#define PAD_CTL_SRE            (1 << 11)
-
-#define PAD_CTL_ODE            (1 << 10)
-
-#define PAD_CTL_DSE_150ohm     (1 << 6)
-#define PAD_CTL_DSE_75ohm      (2 << 6)
-#define PAD_CTL_DSE_50ohm      (3 << 6)
-#define PAD_CTL_DSE_37ohm      (4 << 6)
-#define PAD_CTL_DSE_30ohm      (5 << 6)
-#define PAD_CTL_DSE_25ohm      (6 << 6)
-#define PAD_CTL_DSE_20ohm      (7 << 6)
-
-#define PAD_CTL_PUS_47K_UP     (1 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_100K_UP    (2 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_22K_UP     (3 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PKE            (1 << 3)
-#define PAD_CTL_PUE            (1 << 2 | PAD_CTL_PKE)
-
-#define PAD_CTL_OBE_IBE_ENABLE (3 << 0)
-#define PAD_CTL_OBE_ENABLE     (1 << 1)
-#define PAD_CTL_IBE_ENABLE     (1 << 0)
-
-#else
-
-#define PAD_CTL_DVS            (1 << 13)
-#define PAD_CTL_INPUT_DDR      (1 << 9)
-#define PAD_CTL_HYS            (1 << 8)
-
-#define PAD_CTL_PKE            (1 << 7)
-#define PAD_CTL_PUE            (1 << 6 | PAD_CTL_PKE)
-#define PAD_CTL_PUS_100K_DOWN  (0 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_47K_UP     (1 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_100K_UP    (2 << 4 | PAD_CTL_PUE)
-#define PAD_CTL_PUS_22K_UP     (3 << 4 | PAD_CTL_PUE)
-
-#define PAD_CTL_ODE            (1 << 3)
-
-#define PAD_CTL_DSE_LOW                (0 << 1)
-#define PAD_CTL_DSE_MED                (1 << 1)
-#define PAD_CTL_DSE_HIGH       (2 << 1)
-#define PAD_CTL_DSE_MAX                (3 << 1)
-
-#endif
-
-#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
-#define GPIO_PORT_SHIFT                5
-#define GPIO_PORT_MASK         (0x7 << GPIO_PORT_SHIFT)
-#define GPIO_PORTA             (0 << GPIO_PORT_SHIFT)
-#define GPIO_PORTB             (1 << GPIO_PORT_SHIFT)
-#define GPIO_PORTC             (2 << GPIO_PORT_SHIFT)
-#define GPIO_PORTD             (3 << GPIO_PORT_SHIFT)
-#define GPIO_PORTE             (4 << GPIO_PORT_SHIFT)
-#define GPIO_PORTF             (5 << GPIO_PORT_SHIFT)
-
-void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad);
-void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
-                                    unsigned count);
-/*
-* Set bits for general purpose registers
-*/
-void imx_iomux_set_gpr_register(int group, int start_bit,
-                                        int num_bits, int value);
-#ifdef CONFIG_IOMUX_SHARE_CONF_REG
-void imx_iomux_gpio_set_direction(unsigned int gpio,
-                               unsigned int direction);
-void imx_iomux_gpio_get_function(unsigned int gpio,
-                               u32 *gpio_state);
-#endif
-
-/* macros for declaring and using pinmux array */
-#if defined(CONFIG_MX6QDL)
-#define IOMUX_PADS(x) (MX6Q_##x), (MX6DL_##x)
-#define SETUP_IOMUX_PAD(def)                                   \
-if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) {                          \
-       imx_iomux_v3_setup_pad(MX6Q_##def);                     \
-} else {                                                       \
-       imx_iomux_v3_setup_pad(MX6DL_##def);                    \
-}
-#define SETUP_IOMUX_PADS(x)                                    \
-       imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x)/2)
-#elif defined(CONFIG_MX6Q) || defined(CONFIG_MX6D)
-#define IOMUX_PADS(x) MX6Q_##x
-#define SETUP_IOMUX_PAD(def)                                   \
-       imx_iomux_v3_setup_pad(MX6Q_##def);
-#define SETUP_IOMUX_PADS(x)                                    \
-       imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x))
-#elif defined(CONFIG_MX6UL)
-#define IOMUX_PADS(x) MX6_##x
-#define SETUP_IOMUX_PAD(def)                                   \
-       imx_iomux_v3_setup_pad(MX6_##def);
-#define SETUP_IOMUX_PADS(x)                                    \
-       imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x))
-#else
-#define IOMUX_PADS(x) MX6DL_##x
-#define SETUP_IOMUX_PAD(def)                                   \
-       imx_iomux_v3_setup_pad(MX6DL_##def);
-#define SETUP_IOMUX_PADS(x)                                    \
-       imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x))
-#endif
-
-#endif /* __MACH_IOMUX_V3_H__*/
diff --git a/arch/arm/include/asm/imx-common/mx5_video.h b/arch/arm/include/asm/imx-common/mx5_video.h
deleted file mode 100644 (file)
index ccaf010..0000000
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
- * Copyright (C) 2012
- * Anatolij Gustschin, DENX Software Engineering, <agust@denx.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#ifndef __MX5_VIDEO_H
-#define __MX5_VIDEO_H
-
-#ifdef CONFIG_VIDEO
-void lcd_enable(void);
-void setup_iomux_lcd(void);
-#else
-static inline void lcd_enable(void) { }
-static inline void setup_iomux_lcd(void) { }
-#endif
-
-#endif
diff --git a/arch/arm/include/asm/imx-common/mxc_i2c.h b/arch/arm/include/asm/imx-common/mxc_i2c.h
deleted file mode 100644 (file)
index b0b6d61..0000000
+++ /dev/null
@@ -1,101 +0,0 @@
-/*
- * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-#ifndef __ASM_ARCH_MXC_MXC_I2C_H__
-#define __ASM_ARCH_MXC_MXC_I2C_H__
-#include <asm-generic/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-
-struct i2c_pin_ctrl {
-       iomux_v3_cfg_t i2c_mode;
-       iomux_v3_cfg_t gpio_mode;
-       unsigned char gp;
-       unsigned char spare;
-};
-
-struct i2c_pads_info {
-       struct i2c_pin_ctrl scl;
-       struct i2c_pin_ctrl sda;
-};
-
-/*
- * Information about i2c controller
- * struct mxc_i2c_bus - information about the i2c[x] bus
- * @index: i2c bus index
- * @base: Address of I2C bus controller
- * @driver_data: Flags for different platforms, such as I2C_QUIRK_FLAG.
- * @speed: Speed of I2C bus
- * @pads_info: pinctrl info for this i2c bus, will be used when pinctrl is ok.
- * The following two is only to be compatible with non-DM part.
- * @idle_bus_fn: function to force bus idle
- * @idle_bus_data: parameter for idle_bus_fun
- * For DM:
- * bus: The device structure for i2c bus controller
- * scl-gpio: specify the gpio related to SCL pin
- * sda-gpio: specify the gpio related to SDA pin
- */
-struct mxc_i2c_bus {
-       /*
-        * board file can use this index to locate which i2c_pads_info is for
-        * i2c_idle_bus. When pinmux is implement, this entry can be
-        * discarded. Here we do not use dev->seq, because we do not want to
-        * export device to board file.
-        */
-       int index;
-       ulong base;
-       ulong driver_data;
-       int speed;
-       struct i2c_pads_info *pads_info;
-#ifndef CONFIG_DM_I2C
-       int (*idle_bus_fn)(void *p);
-       void *idle_bus_data;
-#else
-       struct udevice *bus;
-       /* Use gpio to force bus idle when bus state is abnormal */
-       struct gpio_desc scl_gpio;
-       struct gpio_desc sda_gpio;
-#endif
-};
-
-#if defined(CONFIG_MX6QDL)
-#define I2C_PADS(name, scl_i2c, scl_gpio, scl_gp, sda_i2c, sda_gpio, sda_gp) \
-       struct i2c_pads_info mx6q_##name = {            \
-               .scl = {                                \
-                       .i2c_mode = MX6Q_##scl_i2c,     \
-                       .gpio_mode = MX6Q_##scl_gpio,   \
-                       .gp = scl_gp,                   \
-               },                                      \
-               .sda = {                                \
-                       .i2c_mode = MX6Q_##sda_i2c,     \
-                       .gpio_mode = MX6Q_##sda_gpio,   \
-                       .gp = sda_gp,                   \
-               }                                       \
-       };                                              \
-       struct i2c_pads_info mx6s_##name = {            \
-               .scl = {                                \
-                       .i2c_mode = MX6DL_##scl_i2c,    \
-                       .gpio_mode = MX6DL_##scl_gpio,  \
-                       .gp = scl_gp,                   \
-               },                                      \
-               .sda = {                                \
-                       .i2c_mode = MX6DL_##sda_i2c,    \
-                       .gpio_mode = MX6DL_##sda_gpio,  \
-                       .gp = sda_gp,                   \
-               }                                       \
-       };
-
-
-#define I2C_PADS_INFO(name)    \
-       (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) ? \
-                                       &mx6q_##name : &mx6s_##name
-#endif
-
-int setup_i2c(unsigned i2c_index, int speed, int slave_addr,
-             struct i2c_pads_info *p);
-void bus_i2c_init(int index, int speed, int slave_addr,
-               int (*idle_bus_fn)(void *p), void *p);
-int force_idle_bus(void *priv);
-int i2c_idle_bus(struct mxc_i2c_bus *i2c_bus);
-#endif
diff --git a/arch/arm/include/asm/imx-common/rdc-sema.h b/arch/arm/include/asm/imx-common/rdc-sema.h
deleted file mode 100644 (file)
index 2c61e56..0000000
+++ /dev/null
@@ -1,100 +0,0 @@
-/*
- * Copyright (C) 2016 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:  GPL-2.0+
- */
-
-#ifndef __RDC_SEMA_H__
-#define __RDC_SEMA_H__
-
-/*
- * rdc_peri_cfg_t and rdc_ma_cft_t use the same layout.
- *
- *   [ 23 22 | 21 20 | 19 18 | 17 16 ] | [ 15 - 8 ] | [ 7 - 0 ]
- *      d3      d2      d1       d0    | master id  |  peri id
- *   d[x] means domain[x], x can be [3 - 0].
- */
-typedef u32 rdc_peri_cfg_t;
-typedef u32 rdc_ma_cfg_t;
-
-#define RDC_PERI_SHIFT         0
-#define RDC_PERI_MASK          0xFF
-
-#define RDC_DOMAIN_SHIFT_BASE  16
-#define RDC_DOMAIN_MASK                0xFF0000
-#define RDC_DOMAIN_SHIFT(x)    (RDC_DOMAIN_SHIFT_BASE + ((x << 1)))
-#define RDC_DOMAIN(x)          ((rdc_peri_cfg_t)(0x3 << RDC_DOMAIN_SHIFT(x)))
-
-#define RDC_MASTER_SHIFT       8
-#define RDC_MASTER_MASK                0xFF00
-#define RDC_MASTER_CFG(master_id, domain_id) (rdc_ma_cfg_t)((master_id << 8) | \
-                                       (domain_id << RDC_DOMAIN_SHIFT_BASE))
-
-/* The Following macro definitions are common to i.MX6SX and i.MX7D */
-#define SEMA_GATES_NUM         64
-
-#define RDC_MDA_DID_SHIFT      0
-#define RDC_MDA_DID_MASK       (0x3 << RDC_MDA_DID_SHIFT)
-#define RDC_MDA_LCK_SHIFT      31
-#define RDC_MDA_LCK_MASK       (0x1 << RDC_MDA_LCK_SHIFT)
-
-#define RDC_PDAP_DW_SHIFT(domain)      ((domain) << 1)
-#define RDC_PDAP_DR_SHIFT(domain)      (1 + RDC_PDAP_DW_SHIFT(domain))
-#define RDC_PDAP_DW_MASK(domain)       (1 << RDC_PDAP_DW_SHIFT(domain))
-#define RDC_PDAP_DR_MASK(domain)       (1 << RDC_PDAP_DR_SHIFT(domain))
-#define RDC_PDAP_DRW_MASK(domain)      (RDC_PDAP_DW_MASK(domain) | \
-                                        RDC_PDAP_DR_MASK(domain))
-
-#define RDC_PDAP_SREQ_SHIFT    30
-#define RDC_PDAP_SREQ_MASK     (0x1 << RDC_PDAP_SREQ_SHIFT)
-#define RDC_PDAP_LCK_SHIFT     31
-#define RDC_PDAP_LCK_MASK      (0x1 << RDC_PDAP_LCK_SHIFT)
-
-#define RDC_MRSA_SADR_SHIFT    7
-#define RDC_MRSA_SADR_MASK     (0x1ffffff << RDC_MRSA_SADR_SHIFT)
-
-#define RDC_MREA_EADR_SHIFT    7
-#define RDC_MREA_EADR_MASK     (0x1ffffff << RDC_MREA_EADR_SHIFT)
-
-#define RDC_MRC_DW_SHIFT(domain)       (domain)
-#define RDC_MRC_DR_SHIFT(domain)       (1 + RDC_MRC_DW_SHIFT(domain))
-#define RDC_MRC_DW_MASK(domain)                (1 << RDC_MRC_DW_SHIFT(domain))
-#define RDC_MRC_DR_MASK(domain)                (1 << RDC_MRC_DR_SHIFT(domain))
-#define RDC_MRC_DRW_MASK(domain)       (RDC_MRC_DW_MASK(domain) | \
-                                        RDC_MRC_DR_MASK(domain))
-#define RDC_MRC_ENA_SHIFT      30
-#define RDC_MRC_ENA_MASK       (0x1 << RDC_MRC_ENA_SHIFT)
-#define RDC_MRC_LCK_SHIFT      31
-#define RDC_MRC_LCK_MASK       (0x1 << RDC_MRC_LCK_SHIFT)
-
-#define RDC_MRVS_VDID_SHIFT    0
-#define RDC_MRVS_VDID_MASK     (0x3 << RDC_MRVS_VDID_SHIFT)
-#define RDC_MRVS_AD_SHIFT      4
-#define RDC_MRVS_AD_MASK       (0x1 << RDC_MRVS_AD_SHIFT)
-#define RDC_MRVS_VADDR_SHIFT   5
-#define RDC_MRVS_VADDR_MASK    (0x7ffffff << RDC_MRVS_VADDR_SHIFT)
-
-#define RDC_SEMA_GATE_GTFSM_SHIFT      0
-#define RDC_SEMA_GATE_GTFSM_MASK       (0xf << RDC_SEMA_GATE_GTFSM_SHIFT)
-#define RDC_SEMA_GATE_LDOM_SHIFT       5
-#define RDC_SEMA_GATE_LDOM_MASK                (0x3 << RDC_SEMA_GATE_LDOM_SHIFT)
-
-#define RDC_SEMA_RSTGT_RSTGDP_SHIFT    0
-#define RDC_SEMA_RSTGT_RSTGDP_MASK     (0xff << RDC_SEMA_RSTGT_RSTGDP_SHIFT)
-#define RDC_SEMA_RSTGT_RSTGSM_SHIFT    2
-#define RDC_SEMA_RSTGT_RSTGSM_MASK     (0x3 << RDC_SEMA_RSTGT_RSTGSM_SHIFT)
-#define RDC_SEMA_RSTGT_RSTGMS_SHIFT    4
-#define RDC_SEMA_RSTGT_RSTGMS_MASK     (0xf << RDC_SEMA_RSTGT_RSTGMS_SHIFT)
-#define RDC_SEMA_RSTGT_RSTGTN_SHIFT    8
-#define RDC_SEMA_RSTGT_RSTGTN_MASK     (0xff << RDC_SEMA_RSTGT_RSTGTN_SHIFT)
-
-int imx_rdc_check_permission(int per_id, int dom_id);
-int imx_rdc_sema_lock(int per_id);
-int imx_rdc_sema_unlock(int per_id);
-int imx_rdc_setup_peri(rdc_peri_cfg_t p);
-int imx_rdc_setup_peripherals(rdc_peri_cfg_t const *peripherals_list,
-                             unsigned count);
-int imx_rdc_setup_ma(rdc_ma_cfg_t p);
-int imx_rdc_setup_masters(rdc_ma_cfg_t const *masters_list, unsigned count);
-
-#endif /* __RDC_SEMA_H__*/
diff --git a/arch/arm/include/asm/imx-common/regs-apbh.h b/arch/arm/include/asm/imx-common/regs-apbh.h
deleted file mode 100644 (file)
index 391452c..0000000
+++ /dev/null
@@ -1,589 +0,0 @@
-/*
- * Freescale i.MX28 APBH Register Definitions
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __REGS_APBH_H__
-#define __REGS_APBH_H__
-
-#include <asm/imx-common/regs-common.h>
-
-#ifndef        __ASSEMBLY__
-
-#if defined(CONFIG_MX23)
-struct mxs_apbh_regs {
-       mxs_reg_32(hw_apbh_ctrl0)
-       mxs_reg_32(hw_apbh_ctrl1)
-       mxs_reg_32(hw_apbh_ctrl2)
-       mxs_reg_32(hw_apbh_channel_ctrl)
-
-       union {
-       struct {
-               mxs_reg_32(hw_apbh_ch_curcmdar)
-               mxs_reg_32(hw_apbh_ch_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch_cmd)
-               mxs_reg_32(hw_apbh_ch_bar)
-               mxs_reg_32(hw_apbh_ch_sema)
-               mxs_reg_32(hw_apbh_ch_debug1)
-               mxs_reg_32(hw_apbh_ch_debug2)
-       } ch[8];
-       struct {
-               mxs_reg_32(hw_apbh_ch0_curcmdar)
-               mxs_reg_32(hw_apbh_ch0_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch0_cmd)
-               mxs_reg_32(hw_apbh_ch0_bar)
-               mxs_reg_32(hw_apbh_ch0_sema)
-               mxs_reg_32(hw_apbh_ch0_debug1)
-               mxs_reg_32(hw_apbh_ch0_debug2)
-               mxs_reg_32(hw_apbh_ch1_curcmdar)
-               mxs_reg_32(hw_apbh_ch1_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch1_cmd)
-               mxs_reg_32(hw_apbh_ch1_bar)
-               mxs_reg_32(hw_apbh_ch1_sema)
-               mxs_reg_32(hw_apbh_ch1_debug1)
-               mxs_reg_32(hw_apbh_ch1_debug2)
-               mxs_reg_32(hw_apbh_ch2_curcmdar)
-               mxs_reg_32(hw_apbh_ch2_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch2_cmd)
-               mxs_reg_32(hw_apbh_ch2_bar)
-               mxs_reg_32(hw_apbh_ch2_sema)
-               mxs_reg_32(hw_apbh_ch2_debug1)
-               mxs_reg_32(hw_apbh_ch2_debug2)
-               mxs_reg_32(hw_apbh_ch3_curcmdar)
-               mxs_reg_32(hw_apbh_ch3_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch3_cmd)
-               mxs_reg_32(hw_apbh_ch3_bar)
-               mxs_reg_32(hw_apbh_ch3_sema)
-               mxs_reg_32(hw_apbh_ch3_debug1)
-               mxs_reg_32(hw_apbh_ch3_debug2)
-               mxs_reg_32(hw_apbh_ch4_curcmdar)
-               mxs_reg_32(hw_apbh_ch4_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch4_cmd)
-               mxs_reg_32(hw_apbh_ch4_bar)
-               mxs_reg_32(hw_apbh_ch4_sema)
-               mxs_reg_32(hw_apbh_ch4_debug1)
-               mxs_reg_32(hw_apbh_ch4_debug2)
-               mxs_reg_32(hw_apbh_ch5_curcmdar)
-               mxs_reg_32(hw_apbh_ch5_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch5_cmd)
-               mxs_reg_32(hw_apbh_ch5_bar)
-               mxs_reg_32(hw_apbh_ch5_sema)
-               mxs_reg_32(hw_apbh_ch5_debug1)
-               mxs_reg_32(hw_apbh_ch5_debug2)
-               mxs_reg_32(hw_apbh_ch6_curcmdar)
-               mxs_reg_32(hw_apbh_ch6_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch6_cmd)
-               mxs_reg_32(hw_apbh_ch6_bar)
-               mxs_reg_32(hw_apbh_ch6_sema)
-               mxs_reg_32(hw_apbh_ch6_debug1)
-               mxs_reg_32(hw_apbh_ch6_debug2)
-               mxs_reg_32(hw_apbh_ch7_curcmdar)
-               mxs_reg_32(hw_apbh_ch7_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch7_cmd)
-               mxs_reg_32(hw_apbh_ch7_bar)
-               mxs_reg_32(hw_apbh_ch7_sema)
-               mxs_reg_32(hw_apbh_ch7_debug1)
-               mxs_reg_32(hw_apbh_ch7_debug2)
-       };
-       };
-       mxs_reg_32(hw_apbh_version)
-};
-
-#elif (defined(CONFIG_MX28) || defined(CONFIG_MX6) || defined(CONFIG_MX7))
-struct mxs_apbh_regs {
-       mxs_reg_32(hw_apbh_ctrl0)
-       mxs_reg_32(hw_apbh_ctrl1)
-       mxs_reg_32(hw_apbh_ctrl2)
-       mxs_reg_32(hw_apbh_channel_ctrl)
-       mxs_reg_32(hw_apbh_devsel)
-       mxs_reg_32(hw_apbh_dma_burst_size)
-       mxs_reg_32(hw_apbh_debug)
-
-       uint32_t        reserved[36];
-
-       union {
-       struct {
-               mxs_reg_32(hw_apbh_ch_curcmdar)
-               mxs_reg_32(hw_apbh_ch_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch_cmd)
-               mxs_reg_32(hw_apbh_ch_bar)
-               mxs_reg_32(hw_apbh_ch_sema)
-               mxs_reg_32(hw_apbh_ch_debug1)
-               mxs_reg_32(hw_apbh_ch_debug2)
-       } ch[16];
-       struct {
-               mxs_reg_32(hw_apbh_ch0_curcmdar)
-               mxs_reg_32(hw_apbh_ch0_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch0_cmd)
-               mxs_reg_32(hw_apbh_ch0_bar)
-               mxs_reg_32(hw_apbh_ch0_sema)
-               mxs_reg_32(hw_apbh_ch0_debug1)
-               mxs_reg_32(hw_apbh_ch0_debug2)
-               mxs_reg_32(hw_apbh_ch1_curcmdar)
-               mxs_reg_32(hw_apbh_ch1_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch1_cmd)
-               mxs_reg_32(hw_apbh_ch1_bar)
-               mxs_reg_32(hw_apbh_ch1_sema)
-               mxs_reg_32(hw_apbh_ch1_debug1)
-               mxs_reg_32(hw_apbh_ch1_debug2)
-               mxs_reg_32(hw_apbh_ch2_curcmdar)
-               mxs_reg_32(hw_apbh_ch2_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch2_cmd)
-               mxs_reg_32(hw_apbh_ch2_bar)
-               mxs_reg_32(hw_apbh_ch2_sema)
-               mxs_reg_32(hw_apbh_ch2_debug1)
-               mxs_reg_32(hw_apbh_ch2_debug2)
-               mxs_reg_32(hw_apbh_ch3_curcmdar)
-               mxs_reg_32(hw_apbh_ch3_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch3_cmd)
-               mxs_reg_32(hw_apbh_ch3_bar)
-               mxs_reg_32(hw_apbh_ch3_sema)
-               mxs_reg_32(hw_apbh_ch3_debug1)
-               mxs_reg_32(hw_apbh_ch3_debug2)
-               mxs_reg_32(hw_apbh_ch4_curcmdar)
-               mxs_reg_32(hw_apbh_ch4_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch4_cmd)
-               mxs_reg_32(hw_apbh_ch4_bar)
-               mxs_reg_32(hw_apbh_ch4_sema)
-               mxs_reg_32(hw_apbh_ch4_debug1)
-               mxs_reg_32(hw_apbh_ch4_debug2)
-               mxs_reg_32(hw_apbh_ch5_curcmdar)
-               mxs_reg_32(hw_apbh_ch5_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch5_cmd)
-               mxs_reg_32(hw_apbh_ch5_bar)
-               mxs_reg_32(hw_apbh_ch5_sema)
-               mxs_reg_32(hw_apbh_ch5_debug1)
-               mxs_reg_32(hw_apbh_ch5_debug2)
-               mxs_reg_32(hw_apbh_ch6_curcmdar)
-               mxs_reg_32(hw_apbh_ch6_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch6_cmd)
-               mxs_reg_32(hw_apbh_ch6_bar)
-               mxs_reg_32(hw_apbh_ch6_sema)
-               mxs_reg_32(hw_apbh_ch6_debug1)
-               mxs_reg_32(hw_apbh_ch6_debug2)
-               mxs_reg_32(hw_apbh_ch7_curcmdar)
-               mxs_reg_32(hw_apbh_ch7_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch7_cmd)
-               mxs_reg_32(hw_apbh_ch7_bar)
-               mxs_reg_32(hw_apbh_ch7_sema)
-               mxs_reg_32(hw_apbh_ch7_debug1)
-               mxs_reg_32(hw_apbh_ch7_debug2)
-               mxs_reg_32(hw_apbh_ch8_curcmdar)
-               mxs_reg_32(hw_apbh_ch8_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch8_cmd)
-               mxs_reg_32(hw_apbh_ch8_bar)
-               mxs_reg_32(hw_apbh_ch8_sema)
-               mxs_reg_32(hw_apbh_ch8_debug1)
-               mxs_reg_32(hw_apbh_ch8_debug2)
-               mxs_reg_32(hw_apbh_ch9_curcmdar)
-               mxs_reg_32(hw_apbh_ch9_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch9_cmd)
-               mxs_reg_32(hw_apbh_ch9_bar)
-               mxs_reg_32(hw_apbh_ch9_sema)
-               mxs_reg_32(hw_apbh_ch9_debug1)
-               mxs_reg_32(hw_apbh_ch9_debug2)
-               mxs_reg_32(hw_apbh_ch10_curcmdar)
-               mxs_reg_32(hw_apbh_ch10_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch10_cmd)
-               mxs_reg_32(hw_apbh_ch10_bar)
-               mxs_reg_32(hw_apbh_ch10_sema)
-               mxs_reg_32(hw_apbh_ch10_debug1)
-               mxs_reg_32(hw_apbh_ch10_debug2)
-               mxs_reg_32(hw_apbh_ch11_curcmdar)
-               mxs_reg_32(hw_apbh_ch11_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch11_cmd)
-               mxs_reg_32(hw_apbh_ch11_bar)
-               mxs_reg_32(hw_apbh_ch11_sema)
-               mxs_reg_32(hw_apbh_ch11_debug1)
-               mxs_reg_32(hw_apbh_ch11_debug2)
-               mxs_reg_32(hw_apbh_ch12_curcmdar)
-               mxs_reg_32(hw_apbh_ch12_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch12_cmd)
-               mxs_reg_32(hw_apbh_ch12_bar)
-               mxs_reg_32(hw_apbh_ch12_sema)
-               mxs_reg_32(hw_apbh_ch12_debug1)
-               mxs_reg_32(hw_apbh_ch12_debug2)
-               mxs_reg_32(hw_apbh_ch13_curcmdar)
-               mxs_reg_32(hw_apbh_ch13_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch13_cmd)
-               mxs_reg_32(hw_apbh_ch13_bar)
-               mxs_reg_32(hw_apbh_ch13_sema)
-               mxs_reg_32(hw_apbh_ch13_debug1)
-               mxs_reg_32(hw_apbh_ch13_debug2)
-               mxs_reg_32(hw_apbh_ch14_curcmdar)
-               mxs_reg_32(hw_apbh_ch14_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch14_cmd)
-               mxs_reg_32(hw_apbh_ch14_bar)
-               mxs_reg_32(hw_apbh_ch14_sema)
-               mxs_reg_32(hw_apbh_ch14_debug1)
-               mxs_reg_32(hw_apbh_ch14_debug2)
-               mxs_reg_32(hw_apbh_ch15_curcmdar)
-               mxs_reg_32(hw_apbh_ch15_nxtcmdar)
-               mxs_reg_32(hw_apbh_ch15_cmd)
-               mxs_reg_32(hw_apbh_ch15_bar)
-               mxs_reg_32(hw_apbh_ch15_sema)
-               mxs_reg_32(hw_apbh_ch15_debug1)
-               mxs_reg_32(hw_apbh_ch15_debug2)
-       };
-       };
-       mxs_reg_32(hw_apbh_version)
-};
-#endif
-
-#endif
-
-#define        APBH_CTRL0_SFTRST                               (1 << 31)
-#define        APBH_CTRL0_CLKGATE                              (1 << 30)
-#define        APBH_CTRL0_AHB_BURST8_EN                        (1 << 29)
-#define        APBH_CTRL0_APB_BURST_EN                         (1 << 28)
-#if defined(CONFIG_MX23)
-#define        APBH_CTRL0_RSVD0_MASK                           (0xf << 24)
-#define        APBH_CTRL0_RSVD0_OFFSET                         24
-#define        APBH_CTRL0_RESET_CHANNEL_MASK                   (0xff << 16)
-#define        APBH_CTRL0_RESET_CHANNEL_OFFSET                 16
-#define        APBH_CTRL0_CLKGATE_CHANNEL_MASK                 (0xff << 8)
-#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               8
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP0                 0x02
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP1                 0x04
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x10
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x20
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x40
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x80
-#elif defined(CONFIG_MX28)
-#define        APBH_CTRL0_RSVD0_MASK                           (0xfff << 16)
-#define        APBH_CTRL0_RSVD0_OFFSET                         16
-#define        APBH_CTRL0_CLKGATE_CHANNEL_MASK                 0xffff
-#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               0
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP0                 0x0001
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP1                 0x0002
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP2                 0x0004
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP3                 0x0008
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x0010
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x0020
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x0040
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x0080
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND4                0x0100
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND5                0x0200
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND6                0x0400
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND7                0x0800
-#define        APBH_CTRL0_CLKGATE_CHANNEL_HSADC                0x1000
-#define        APBH_CTRL0_CLKGATE_CHANNEL_LCDIF                0x2000
-#elif (defined(CONFIG_MX6) || defined(CONFIG_MX7))
-#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               0
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x0001
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x0002
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x0004
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x0008
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND4                0x0010
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND5                0x0020
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND6                0x0040
-#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND7                0x0080
-#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP                  0x0100
-#endif
-
-#define        APBH_CTRL1_CH15_CMDCMPLT_IRQ_EN                 (1 << 31)
-#define        APBH_CTRL1_CH14_CMDCMPLT_IRQ_EN                 (1 << 30)
-#define        APBH_CTRL1_CH13_CMDCMPLT_IRQ_EN                 (1 << 29)
-#define        APBH_CTRL1_CH12_CMDCMPLT_IRQ_EN                 (1 << 28)
-#define        APBH_CTRL1_CH11_CMDCMPLT_IRQ_EN                 (1 << 27)
-#define        APBH_CTRL1_CH10_CMDCMPLT_IRQ_EN                 (1 << 26)
-#define        APBH_CTRL1_CH9_CMDCMPLT_IRQ_EN                  (1 << 25)
-#define        APBH_CTRL1_CH8_CMDCMPLT_IRQ_EN                  (1 << 24)
-#define        APBH_CTRL1_CH7_CMDCMPLT_IRQ_EN                  (1 << 23)
-#define        APBH_CTRL1_CH6_CMDCMPLT_IRQ_EN                  (1 << 22)
-#define        APBH_CTRL1_CH5_CMDCMPLT_IRQ_EN                  (1 << 21)
-#define        APBH_CTRL1_CH4_CMDCMPLT_IRQ_EN                  (1 << 20)
-#define        APBH_CTRL1_CH3_CMDCMPLT_IRQ_EN                  (1 << 19)
-#define        APBH_CTRL1_CH2_CMDCMPLT_IRQ_EN                  (1 << 18)
-#define        APBH_CTRL1_CH1_CMDCMPLT_IRQ_EN                  (1 << 17)
-#define        APBH_CTRL1_CH0_CMDCMPLT_IRQ_EN                  (1 << 16)
-#define        APBH_CTRL1_CH_CMDCMPLT_IRQ_EN_OFFSET            16
-#define        APBH_CTRL1_CH_CMDCMPLT_IRQ_EN_MASK              (0xffff << 16)
-#define        APBH_CTRL1_CH15_CMDCMPLT_IRQ                    (1 << 15)
-#define        APBH_CTRL1_CH14_CMDCMPLT_IRQ                    (1 << 14)
-#define        APBH_CTRL1_CH13_CMDCMPLT_IRQ                    (1 << 13)
-#define        APBH_CTRL1_CH12_CMDCMPLT_IRQ                    (1 << 12)
-#define        APBH_CTRL1_CH11_CMDCMPLT_IRQ                    (1 << 11)
-#define        APBH_CTRL1_CH10_CMDCMPLT_IRQ                    (1 << 10)
-#define        APBH_CTRL1_CH9_CMDCMPLT_IRQ                     (1 << 9)
-#define        APBH_CTRL1_CH8_CMDCMPLT_IRQ                     (1 << 8)
-#define        APBH_CTRL1_CH7_CMDCMPLT_IRQ                     (1 << 7)
-#define        APBH_CTRL1_CH6_CMDCMPLT_IRQ                     (1 << 6)
-#define        APBH_CTRL1_CH5_CMDCMPLT_IRQ                     (1 << 5)
-#define        APBH_CTRL1_CH4_CMDCMPLT_IRQ                     (1 << 4)
-#define        APBH_CTRL1_CH3_CMDCMPLT_IRQ                     (1 << 3)
-#define        APBH_CTRL1_CH2_CMDCMPLT_IRQ                     (1 << 2)
-#define        APBH_CTRL1_CH1_CMDCMPLT_IRQ                     (1 << 1)
-#define        APBH_CTRL1_CH0_CMDCMPLT_IRQ                     (1 << 0)
-
-#define        APBH_CTRL2_CH15_ERROR_STATUS                    (1 << 31)
-#define        APBH_CTRL2_CH14_ERROR_STATUS                    (1 << 30)
-#define        APBH_CTRL2_CH13_ERROR_STATUS                    (1 << 29)
-#define        APBH_CTRL2_CH12_ERROR_STATUS                    (1 << 28)
-#define        APBH_CTRL2_CH11_ERROR_STATUS                    (1 << 27)
-#define        APBH_CTRL2_CH10_ERROR_STATUS                    (1 << 26)
-#define        APBH_CTRL2_CH9_ERROR_STATUS                     (1 << 25)
-#define        APBH_CTRL2_CH8_ERROR_STATUS                     (1 << 24)
-#define        APBH_CTRL2_CH7_ERROR_STATUS                     (1 << 23)
-#define        APBH_CTRL2_CH6_ERROR_STATUS                     (1 << 22)
-#define        APBH_CTRL2_CH5_ERROR_STATUS                     (1 << 21)
-#define        APBH_CTRL2_CH4_ERROR_STATUS                     (1 << 20)
-#define        APBH_CTRL2_CH3_ERROR_STATUS                     (1 << 19)
-#define        APBH_CTRL2_CH2_ERROR_STATUS                     (1 << 18)
-#define        APBH_CTRL2_CH1_ERROR_STATUS                     (1 << 17)
-#define        APBH_CTRL2_CH0_ERROR_STATUS                     (1 << 16)
-#define        APBH_CTRL2_CH15_ERROR_IRQ                       (1 << 15)
-#define        APBH_CTRL2_CH14_ERROR_IRQ                       (1 << 14)
-#define        APBH_CTRL2_CH13_ERROR_IRQ                       (1 << 13)
-#define        APBH_CTRL2_CH12_ERROR_IRQ                       (1 << 12)
-#define        APBH_CTRL2_CH11_ERROR_IRQ                       (1 << 11)
-#define        APBH_CTRL2_CH10_ERROR_IRQ                       (1 << 10)
-#define        APBH_CTRL2_CH9_ERROR_IRQ                        (1 << 9)
-#define        APBH_CTRL2_CH8_ERROR_IRQ                        (1 << 8)
-#define        APBH_CTRL2_CH7_ERROR_IRQ                        (1 << 7)
-#define        APBH_CTRL2_CH6_ERROR_IRQ                        (1 << 6)
-#define        APBH_CTRL2_CH5_ERROR_IRQ                        (1 << 5)
-#define        APBH_CTRL2_CH4_ERROR_IRQ                        (1 << 4)
-#define        APBH_CTRL2_CH3_ERROR_IRQ                        (1 << 3)
-#define        APBH_CTRL2_CH2_ERROR_IRQ                        (1 << 2)
-#define        APBH_CTRL2_CH1_ERROR_IRQ                        (1 << 1)
-#define        APBH_CTRL2_CH0_ERROR_IRQ                        (1 << 0)
-
-#if defined(CONFIG_MX28)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_MASK            (0xffff << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_OFFSET          16
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP0            (0x0001 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP1            (0x0002 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP2            (0x0004 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP3            (0x0008 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND0           (0x0010 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND1           (0x0020 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND2           (0x0040 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND3           (0x0080 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND4           (0x0100 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND5           (0x0200 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND6           (0x0400 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND7           (0x0800 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_HSADC           (0x1000 << 16)
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_LCDIF           (0x2000 << 16)
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_MASK           0xffff
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_OFFSET         0
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP0           0x0001
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP1           0x0002
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP2           0x0004
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP3           0x0008
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND0          0x0010
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND1          0x0020
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND2          0x0040
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND3          0x0080
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND4          0x0100
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND5          0x0200
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND6          0x0400
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND7          0x0800
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_HSADC          0x1000
-#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_LCDIF          0x2000
-#endif
-
-#if (defined(CONFIG_MX6) || defined(CONFIG_MX7))
-#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_OFFSET          16
-#endif
-
-#if defined(CONFIG_MX23)
-#define        APBH_DEVSEL_CH7_MASK                            (0xf << 28)
-#define        APBH_DEVSEL_CH7_OFFSET                          28
-#define        APBH_DEVSEL_CH6_MASK                            (0xf << 24)
-#define        APBH_DEVSEL_CH6_OFFSET                          24
-#define        APBH_DEVSEL_CH5_MASK                            (0xf << 20)
-#define        APBH_DEVSEL_CH5_OFFSET                          20
-#define        APBH_DEVSEL_CH4_MASK                            (0xf << 16)
-#define        APBH_DEVSEL_CH4_OFFSET                          16
-#define        APBH_DEVSEL_CH3_MASK                            (0xf << 12)
-#define        APBH_DEVSEL_CH3_OFFSET                          12
-#define        APBH_DEVSEL_CH2_MASK                            (0xf << 8)
-#define        APBH_DEVSEL_CH2_OFFSET                          8
-#define        APBH_DEVSEL_CH1_MASK                            (0xf << 4)
-#define        APBH_DEVSEL_CH1_OFFSET                          4
-#define        APBH_DEVSEL_CH0_MASK                            (0xf << 0)
-#define        APBH_DEVSEL_CH0_OFFSET                          0
-#elif defined(CONFIG_MX28)
-#define        APBH_DEVSEL_CH15_MASK                           (0x3 << 30)
-#define        APBH_DEVSEL_CH15_OFFSET                         30
-#define        APBH_DEVSEL_CH14_MASK                           (0x3 << 28)
-#define        APBH_DEVSEL_CH14_OFFSET                         28
-#define        APBH_DEVSEL_CH13_MASK                           (0x3 << 26)
-#define        APBH_DEVSEL_CH13_OFFSET                         26
-#define        APBH_DEVSEL_CH12_MASK                           (0x3 << 24)
-#define        APBH_DEVSEL_CH12_OFFSET                         24
-#define        APBH_DEVSEL_CH11_MASK                           (0x3 << 22)
-#define        APBH_DEVSEL_CH11_OFFSET                         22
-#define        APBH_DEVSEL_CH10_MASK                           (0x3 << 20)
-#define        APBH_DEVSEL_CH10_OFFSET                         20
-#define        APBH_DEVSEL_CH9_MASK                            (0x3 << 18)
-#define        APBH_DEVSEL_CH9_OFFSET                          18
-#define        APBH_DEVSEL_CH8_MASK                            (0x3 << 16)
-#define        APBH_DEVSEL_CH8_OFFSET                          16
-#define        APBH_DEVSEL_CH7_MASK                            (0x3 << 14)
-#define        APBH_DEVSEL_CH7_OFFSET                          14
-#define        APBH_DEVSEL_CH6_MASK                            (0x3 << 12)
-#define        APBH_DEVSEL_CH6_OFFSET                          12
-#define        APBH_DEVSEL_CH5_MASK                            (0x3 << 10)
-#define        APBH_DEVSEL_CH5_OFFSET                          10
-#define        APBH_DEVSEL_CH4_MASK                            (0x3 << 8)
-#define        APBH_DEVSEL_CH4_OFFSET                          8
-#define        APBH_DEVSEL_CH3_MASK                            (0x3 << 6)
-#define        APBH_DEVSEL_CH3_OFFSET                          6
-#define        APBH_DEVSEL_CH2_MASK                            (0x3 << 4)
-#define        APBH_DEVSEL_CH2_OFFSET                          4
-#define        APBH_DEVSEL_CH1_MASK                            (0x3 << 2)
-#define        APBH_DEVSEL_CH1_OFFSET                          2
-#define        APBH_DEVSEL_CH0_MASK                            (0x3 << 0)
-#define        APBH_DEVSEL_CH0_OFFSET                          0
-#endif
-
-#if defined(CONFIG_MX28)
-#define        APBH_DMA_BURST_SIZE_CH15_MASK                   (0x3 << 30)
-#define        APBH_DMA_BURST_SIZE_CH15_OFFSET                 30
-#define        APBH_DMA_BURST_SIZE_CH14_MASK                   (0x3 << 28)
-#define        APBH_DMA_BURST_SIZE_CH14_OFFSET                 28
-#define        APBH_DMA_BURST_SIZE_CH13_MASK                   (0x3 << 26)
-#define        APBH_DMA_BURST_SIZE_CH13_OFFSET                 26
-#define        APBH_DMA_BURST_SIZE_CH12_MASK                   (0x3 << 24)
-#define        APBH_DMA_BURST_SIZE_CH12_OFFSET                 24
-#define        APBH_DMA_BURST_SIZE_CH11_MASK                   (0x3 << 22)
-#define        APBH_DMA_BURST_SIZE_CH11_OFFSET                 22
-#define        APBH_DMA_BURST_SIZE_CH10_MASK                   (0x3 << 20)
-#define        APBH_DMA_BURST_SIZE_CH10_OFFSET                 20
-#define        APBH_DMA_BURST_SIZE_CH9_MASK                    (0x3 << 18)
-#define        APBH_DMA_BURST_SIZE_CH9_OFFSET                  18
-#define        APBH_DMA_BURST_SIZE_CH8_MASK                    (0x3 << 16)
-#define        APBH_DMA_BURST_SIZE_CH8_OFFSET                  16
-#define        APBH_DMA_BURST_SIZE_CH8_BURST0                  (0x0 << 16)
-#define        APBH_DMA_BURST_SIZE_CH8_BURST4                  (0x1 << 16)
-#define        APBH_DMA_BURST_SIZE_CH8_BURST8                  (0x2 << 16)
-#define        APBH_DMA_BURST_SIZE_CH7_MASK                    (0x3 << 14)
-#define        APBH_DMA_BURST_SIZE_CH7_OFFSET                  14
-#define        APBH_DMA_BURST_SIZE_CH6_MASK                    (0x3 << 12)
-#define        APBH_DMA_BURST_SIZE_CH6_OFFSET                  12
-#define        APBH_DMA_BURST_SIZE_CH5_MASK                    (0x3 << 10)
-#define        APBH_DMA_BURST_SIZE_CH5_OFFSET                  10
-#define        APBH_DMA_BURST_SIZE_CH4_MASK                    (0x3 << 8)
-#define        APBH_DMA_BURST_SIZE_CH4_OFFSET                  8
-#define        APBH_DMA_BURST_SIZE_CH3_MASK                    (0x3 << 6)
-#define        APBH_DMA_BURST_SIZE_CH3_OFFSET                  6
-#define        APBH_DMA_BURST_SIZE_CH3_BURST0                  (0x0 << 6)
-#define        APBH_DMA_BURST_SIZE_CH3_BURST4                  (0x1 << 6)
-#define        APBH_DMA_BURST_SIZE_CH3_BURST8                  (0x2 << 6)
-
-#define        APBH_DMA_BURST_SIZE_CH2_MASK                    (0x3 << 4)
-#define        APBH_DMA_BURST_SIZE_CH2_OFFSET                  4
-#define        APBH_DMA_BURST_SIZE_CH2_BURST0                  (0x0 << 4)
-#define        APBH_DMA_BURST_SIZE_CH2_BURST4                  (0x1 << 4)
-#define        APBH_DMA_BURST_SIZE_CH2_BURST8                  (0x2 << 4)
-#define        APBH_DMA_BURST_SIZE_CH1_MASK                    (0x3 << 2)
-#define        APBH_DMA_BURST_SIZE_CH1_OFFSET                  2
-#define        APBH_DMA_BURST_SIZE_CH1_BURST0                  (0x0 << 2)
-#define        APBH_DMA_BURST_SIZE_CH1_BURST4                  (0x1 << 2)
-#define        APBH_DMA_BURST_SIZE_CH1_BURST8                  (0x2 << 2)
-
-#define        APBH_DMA_BURST_SIZE_CH0_MASK                    0x3
-#define        APBH_DMA_BURST_SIZE_CH0_OFFSET                  0
-#define        APBH_DMA_BURST_SIZE_CH0_BURST0                  0x0
-#define        APBH_DMA_BURST_SIZE_CH0_BURST4                  0x1
-#define        APBH_DMA_BURST_SIZE_CH0_BURST8                  0x2
-
-#define        APBH_DEBUG_GPMI_ONE_FIFO                        (1 << 0)
-#endif
-
-#define        APBH_CHn_CURCMDAR_CMD_ADDR_MASK                 0xffffffff
-#define        APBH_CHn_CURCMDAR_CMD_ADDR_OFFSET               0
-
-#define        APBH_CHn_NXTCMDAR_CMD_ADDR_MASK                 0xffffffff
-#define        APBH_CHn_NXTCMDAR_CMD_ADDR_OFFSET               0
-
-#define        APBH_CHn_CMD_XFER_COUNT_MASK                    (0xffff << 16)
-#define        APBH_CHn_CMD_XFER_COUNT_OFFSET                  16
-#define        APBH_CHn_CMD_CMDWORDS_MASK                      (0xf << 12)
-#define        APBH_CHn_CMD_CMDWORDS_OFFSET                    12
-#define        APBH_CHn_CMD_HALTONTERMINATE                    (1 << 8)
-#define        APBH_CHn_CMD_WAIT4ENDCMD                        (1 << 7)
-#define        APBH_CHn_CMD_SEMAPHORE                          (1 << 6)
-#define        APBH_CHn_CMD_NANDWAIT4READY                     (1 << 5)
-#define        APBH_CHn_CMD_NANDLOCK                           (1 << 4)
-#define        APBH_CHn_CMD_IRQONCMPLT                         (1 << 3)
-#define        APBH_CHn_CMD_CHAIN                              (1 << 2)
-#define        APBH_CHn_CMD_COMMAND_MASK                       0x3
-#define        APBH_CHn_CMD_COMMAND_OFFSET                     0
-#define        APBH_CHn_CMD_COMMAND_NO_DMA_XFER                0x0
-#define        APBH_CHn_CMD_COMMAND_DMA_WRITE                  0x1
-#define        APBH_CHn_CMD_COMMAND_DMA_READ                   0x2
-#define        APBH_CHn_CMD_COMMAND_DMA_SENSE                  0x3
-
-#define        APBH_CHn_BAR_ADDRESS_MASK                       0xffffffff
-#define        APBH_CHn_BAR_ADDRESS_OFFSET                     0
-
-#define        APBH_CHn_SEMA_RSVD2_MASK                        (0xff << 24)
-#define        APBH_CHn_SEMA_RSVD2_OFFSET                      24
-#define        APBH_CHn_SEMA_PHORE_MASK                        (0xff << 16)
-#define        APBH_CHn_SEMA_PHORE_OFFSET                      16
-#define        APBH_CHn_SEMA_RSVD1_MASK                        (0xff << 8)
-#define        APBH_CHn_SEMA_RSVD1_OFFSET                      8
-#define        APBH_CHn_SEMA_INCREMENT_SEMA_MASK               (0xff << 0)
-#define        APBH_CHn_SEMA_INCREMENT_SEMA_OFFSET             0
-
-#define        APBH_CHn_DEBUG1_REQ                             (1 << 31)
-#define        APBH_CHn_DEBUG1_BURST                           (1 << 30)
-#define        APBH_CHn_DEBUG1_KICK                            (1 << 29)
-#define        APBH_CHn_DEBUG1_END                             (1 << 28)
-#define        APBH_CHn_DEBUG1_SENSE                           (1 << 27)
-#define        APBH_CHn_DEBUG1_READY                           (1 << 26)
-#define        APBH_CHn_DEBUG1_LOCK                            (1 << 25)
-#define        APBH_CHn_DEBUG1_NEXTCMDADDRVALID                (1 << 24)
-#define        APBH_CHn_DEBUG1_RD_FIFO_EMPTY                   (1 << 23)
-#define        APBH_CHn_DEBUG1_RD_FIFO_FULL                    (1 << 22)
-#define        APBH_CHn_DEBUG1_WR_FIFO_EMPTY                   (1 << 21)
-#define        APBH_CHn_DEBUG1_WR_FIFO_FULL                    (1 << 20)
-#define        APBH_CHn_DEBUG1_RSVD1_MASK                      (0x7fff << 5)
-#define        APBH_CHn_DEBUG1_RSVD1_OFFSET                    5
-#define        APBH_CHn_DEBUG1_STATEMACHINE_MASK               0x1f
-#define        APBH_CHn_DEBUG1_STATEMACHINE_OFFSET             0
-#define        APBH_CHn_DEBUG1_STATEMACHINE_IDLE               0x00
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD1           0x01
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD3           0x02
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD2           0x03
-#define        APBH_CHn_DEBUG1_STATEMACHINE_XFER_DECODE        0x04
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_WAIT           0x05
-#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD4           0x06
-#define        APBH_CHn_DEBUG1_STATEMACHINE_PIO_REQ            0x07
-#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_FLUSH         0x08
-#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_WAIT          0x09
-#define        APBH_CHn_DEBUG1_STATEMACHINE_WRITE              0x0c
-#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_REQ           0x0d
-#define        APBH_CHn_DEBUG1_STATEMACHINE_CHECK_CHAIN        0x0e
-#define        APBH_CHn_DEBUG1_STATEMACHINE_XFER_COMPLETE      0x0f
-#define        APBH_CHn_DEBUG1_STATEMACHINE_TERMINATE          0x14
-#define        APBH_CHn_DEBUG1_STATEMACHINE_WAIT_END           0x15
-#define        APBH_CHn_DEBUG1_STATEMACHINE_WRITE_WAIT         0x1c
-#define        APBH_CHn_DEBUG1_STATEMACHINE_HALT_AFTER_TERM    0x1d
-#define        APBH_CHn_DEBUG1_STATEMACHINE_CHECK_WAIT         0x1e
-#define        APBH_CHn_DEBUG1_STATEMACHINE_WAIT_READY         0x1f
-
-#define        APBH_CHn_DEBUG2_APB_BYTES_MASK                  (0xffff << 16)
-#define        APBH_CHn_DEBUG2_APB_BYTES_OFFSET                16
-#define        APBH_CHn_DEBUG2_AHB_BYTES_MASK                  0xffff
-#define        APBH_CHn_DEBUG2_AHB_BYTES_OFFSET                0
-
-#define        APBH_VERSION_MAJOR_MASK                         (0xff << 24)
-#define        APBH_VERSION_MAJOR_OFFSET                       24
-#define        APBH_VERSION_MINOR_MASK                         (0xff << 16)
-#define        APBH_VERSION_MINOR_OFFSET                       16
-#define        APBH_VERSION_STEP_MASK                          0xffff
-#define        APBH_VERSION_STEP_OFFSET                        0
-
-#endif /* __REGS_APBH_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-bch.h b/arch/arm/include/asm/imx-common/regs-bch.h
deleted file mode 100644 (file)
index adfbace..0000000
+++ /dev/null
@@ -1,229 +0,0 @@
-/*
- * Freescale i.MX28 BCH Register Definitions
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MX28_REGS_BCH_H__
-#define __MX28_REGS_BCH_H__
-
-#include <asm/imx-common/regs-common.h>
-
-#ifndef        __ASSEMBLY__
-struct mxs_bch_regs {
-       mxs_reg_32(hw_bch_ctrl)
-       mxs_reg_32(hw_bch_status0)
-       mxs_reg_32(hw_bch_mode)
-       mxs_reg_32(hw_bch_encodeptr)
-       mxs_reg_32(hw_bch_dataptr)
-       mxs_reg_32(hw_bch_metaptr)
-
-       uint32_t        reserved[4];
-
-       mxs_reg_32(hw_bch_layoutselect)
-       mxs_reg_32(hw_bch_flash0layout0)
-       mxs_reg_32(hw_bch_flash0layout1)
-       mxs_reg_32(hw_bch_flash1layout0)
-       mxs_reg_32(hw_bch_flash1layout1)
-       mxs_reg_32(hw_bch_flash2layout0)
-       mxs_reg_32(hw_bch_flash2layout1)
-       mxs_reg_32(hw_bch_flash3layout0)
-       mxs_reg_32(hw_bch_flash3layout1)
-       mxs_reg_32(hw_bch_dbgkesread)
-       mxs_reg_32(hw_bch_dbgcsferead)
-       mxs_reg_32(hw_bch_dbgsyndegread)
-       mxs_reg_32(hw_bch_dbgahbmread)
-       mxs_reg_32(hw_bch_blockname)
-       mxs_reg_32(hw_bch_version)
-};
-#endif
-
-#define        BCH_CTRL_SFTRST                                 (1 << 31)
-#define        BCH_CTRL_CLKGATE                                (1 << 30)
-#define        BCH_CTRL_DEBUGSYNDROME                          (1 << 22)
-#define        BCH_CTRL_M2M_LAYOUT_MASK                        (0x3 << 18)
-#define        BCH_CTRL_M2M_LAYOUT_OFFSET                      18
-#define        BCH_CTRL_M2M_ENCODE                             (1 << 17)
-#define        BCH_CTRL_M2M_ENABLE                             (1 << 16)
-#define        BCH_CTRL_DEBUG_STALL_IRQ_EN                     (1 << 10)
-#define        BCH_CTRL_COMPLETE_IRQ_EN                        (1 << 8)
-#define        BCH_CTRL_BM_ERROR_IRQ                           (1 << 3)
-#define        BCH_CTRL_DEBUG_STALL_IRQ                        (1 << 2)
-#define        BCH_CTRL_COMPLETE_IRQ                           (1 << 0)
-
-#define        BCH_STATUS0_HANDLE_MASK                         (0xfff << 20)
-#define        BCH_STATUS0_HANDLE_OFFSET                       20
-#define        BCH_STATUS0_COMPLETED_CE_MASK                   (0xf << 16)
-#define        BCH_STATUS0_COMPLETED_CE_OFFSET                 16
-#define        BCH_STATUS0_STATUS_BLK0_MASK                    (0xff << 8)
-#define        BCH_STATUS0_STATUS_BLK0_OFFSET                  8
-#define        BCH_STATUS0_STATUS_BLK0_ZERO                    (0x00 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERROR1                  (0x01 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERROR2                  (0x02 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERROR3                  (0x03 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERROR4                  (0x04 << 8)
-#define        BCH_STATUS0_STATUS_BLK0_UNCORRECTABLE           (0xfe << 8)
-#define        BCH_STATUS0_STATUS_BLK0_ERASED                  (0xff << 8)
-#define        BCH_STATUS0_ALLONES                             (1 << 4)
-#define        BCH_STATUS0_CORRECTED                           (1 << 3)
-#define        BCH_STATUS0_UNCORRECTABLE                       (1 << 2)
-
-#define        BCH_MODE_ERASE_THRESHOLD_MASK                   0xff
-#define        BCH_MODE_ERASE_THRESHOLD_OFFSET                 0
-
-#define        BCH_ENCODEPTR_ADDR_MASK                         0xffffffff
-#define        BCH_ENCODEPTR_ADDR_OFFSET                       0
-
-#define        BCH_DATAPTR_ADDR_MASK                           0xffffffff
-#define        BCH_DATAPTR_ADDR_OFFSET                         0
-
-#define        BCH_METAPTR_ADDR_MASK                           0xffffffff
-#define        BCH_METAPTR_ADDR_OFFSET                         0
-
-#define        BCH_LAYOUTSELECT_CS15_SELECT_MASK               (0x3 << 30)
-#define        BCH_LAYOUTSELECT_CS15_SELECT_OFFSET             30
-#define        BCH_LAYOUTSELECT_CS14_SELECT_MASK               (0x3 << 28)
-#define        BCH_LAYOUTSELECT_CS14_SELECT_OFFSET             28
-#define        BCH_LAYOUTSELECT_CS13_SELECT_MASK               (0x3 << 26)
-#define        BCH_LAYOUTSELECT_CS13_SELECT_OFFSET             26
-#define        BCH_LAYOUTSELECT_CS12_SELECT_MASK               (0x3 << 24)
-#define        BCH_LAYOUTSELECT_CS12_SELECT_OFFSET             24
-#define        BCH_LAYOUTSELECT_CS11_SELECT_MASK               (0x3 << 22)
-#define        BCH_LAYOUTSELECT_CS11_SELECT_OFFSET             22
-#define        BCH_LAYOUTSELECT_CS10_SELECT_MASK               (0x3 << 20)
-#define        BCH_LAYOUTSELECT_CS10_SELECT_OFFSET             20
-#define        BCH_LAYOUTSELECT_CS9_SELECT_MASK                (0x3 << 18)
-#define        BCH_LAYOUTSELECT_CS9_SELECT_OFFSET              18
-#define        BCH_LAYOUTSELECT_CS8_SELECT_MASK                (0x3 << 16)
-#define        BCH_LAYOUTSELECT_CS8_SELECT_OFFSET              16
-#define        BCH_LAYOUTSELECT_CS7_SELECT_MASK                (0x3 << 14)
-#define        BCH_LAYOUTSELECT_CS7_SELECT_OFFSET              14
-#define        BCH_LAYOUTSELECT_CS6_SELECT_MASK                (0x3 << 12)
-#define        BCH_LAYOUTSELECT_CS6_SELECT_OFFSET              12
-#define        BCH_LAYOUTSELECT_CS5_SELECT_MASK                (0x3 << 10)
-#define        BCH_LAYOUTSELECT_CS5_SELECT_OFFSET              10
-#define        BCH_LAYOUTSELECT_CS4_SELECT_MASK                (0x3 << 8)
-#define        BCH_LAYOUTSELECT_CS4_SELECT_OFFSET              8
-#define        BCH_LAYOUTSELECT_CS3_SELECT_MASK                (0x3 << 6)
-#define        BCH_LAYOUTSELECT_CS3_SELECT_OFFSET              6
-#define        BCH_LAYOUTSELECT_CS2_SELECT_MASK                (0x3 << 4)
-#define        BCH_LAYOUTSELECT_CS2_SELECT_OFFSET              4
-#define        BCH_LAYOUTSELECT_CS1_SELECT_MASK                (0x3 << 2)
-#define        BCH_LAYOUTSELECT_CS1_SELECT_OFFSET              2
-#define        BCH_LAYOUTSELECT_CS0_SELECT_MASK                (0x3 << 0)
-#define        BCH_LAYOUTSELECT_CS0_SELECT_OFFSET              0
-
-#define        BCH_FLASHLAYOUT0_NBLOCKS_MASK                   (0xff << 24)
-#define        BCH_FLASHLAYOUT0_NBLOCKS_OFFSET                 24
-#define        BCH_FLASHLAYOUT0_META_SIZE_MASK                 (0xff << 16)
-#define        BCH_FLASHLAYOUT0_META_SIZE_OFFSET               16
-#if (defined(CONFIG_MX6) || defined(CONFIG_MX7))
-#define        BCH_FLASHLAYOUT0_ECC0_MASK                      (0x1f << 11)
-#define        BCH_FLASHLAYOUT0_ECC0_OFFSET                    11
-#else
-#define        BCH_FLASHLAYOUT0_ECC0_MASK                      (0xf << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_OFFSET                    12
-#endif
-#define        BCH_FLASHLAYOUT0_ECC0_NONE                      (0x0 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC2                      (0x1 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC4                      (0x2 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC6                      (0x3 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC8                      (0x4 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC10                     (0x5 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC12                     (0x6 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC14                     (0x7 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC16                     (0x8 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC18                     (0x9 << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC20                     (0xa << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC22                     (0xb << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC24                     (0xc << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC26                     (0xd << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC28                     (0xe << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC30                     (0xf << 12)
-#define        BCH_FLASHLAYOUT0_ECC0_ECC32                     (0x10 << 12)
-#define        BCH_FLASHLAYOUT0_GF13_0_GF14_1                  (1 << 10)
-#define        BCH_FLASHLAYOUT0_GF13_0_GF14_1_OFFSET           10
-#define        BCH_FLASHLAYOUT0_DATA0_SIZE_MASK                0xfff
-#define        BCH_FLASHLAYOUT0_DATA0_SIZE_OFFSET              0
-
-#define        BCH_FLASHLAYOUT1_PAGE_SIZE_MASK                 (0xffff << 16)
-#define        BCH_FLASHLAYOUT1_PAGE_SIZE_OFFSET               16
-#if (defined(CONFIG_MX6) || defined(CONFIG_MX7))
-#define        BCH_FLASHLAYOUT1_ECCN_MASK                      (0x1f << 11)
-#define        BCH_FLASHLAYOUT1_ECCN_OFFSET                    11
-#else
-#define        BCH_FLASHLAYOUT1_ECCN_MASK                      (0xf << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_OFFSET                    12
-#endif
-#define        BCH_FLASHLAYOUT1_ECCN_NONE                      (0x0 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC2                      (0x1 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC4                      (0x2 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC6                      (0x3 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC8                      (0x4 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC10                     (0x5 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC12                     (0x6 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC14                     (0x7 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC16                     (0x8 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC18                     (0x9 << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC20                     (0xa << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC22                     (0xb << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC24                     (0xc << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC26                     (0xd << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC28                     (0xe << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC30                     (0xf << 12)
-#define        BCH_FLASHLAYOUT1_ECCN_ECC32                     (0x10 << 12)
-#define        BCH_FLASHLAYOUT1_GF13_0_GF14_1                  (1 << 10)
-#define        BCH_FLASHLAYOUT1_GF13_0_GF14_1_OFFSET           10
-#define        BCH_FLASHLAYOUT1_DATAN_SIZE_MASK                0xfff
-#define        BCH_FLASHLAYOUT1_DATAN_SIZE_OFFSET              0
-
-#define        BCH_DEBUG0_RSVD1_MASK                           (0x1f << 27)
-#define        BCH_DEBUG0_RSVD1_OFFSET                         27
-#define        BCH_DEBUG0_ROM_BIST_ENABLE                      (1 << 26)
-#define        BCH_DEBUG0_ROM_BIST_COMPLETE                    (1 << 25)
-#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_MASK       (0x1ff << 16)
-#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_OFFSET     16
-#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_NORMAL     (0x0 << 16)
-#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_TEST_MODE  (0x1 << 16)
-#define        BCH_DEBUG0_KES_DEBUG_SHIFT_SYND                 (1 << 15)
-#define        BCH_DEBUG0_KES_DEBUG_PAYLOAD_FLAG               (1 << 14)
-#define        BCH_DEBUG0_KES_DEBUG_MODE4K                     (1 << 13)
-#define        BCH_DEBUG0_KES_DEBUG_KICK                       (1 << 12)
-#define        BCH_DEBUG0_KES_STANDALONE                       (1 << 11)
-#define        BCH_DEBUG0_KES_DEBUG_STEP                       (1 << 10)
-#define        BCH_DEBUG0_KES_DEBUG_STALL                      (1 << 9)
-#define        BCH_DEBUG0_BM_KES_TEST_BYPASS                   (1 << 8)
-#define        BCH_DEBUG0_RSVD0_MASK                           (0x3 << 6)
-#define        BCH_DEBUG0_RSVD0_OFFSET                         6
-#define        BCH_DEBUG0_DEBUG_REG_SELECT_MASK                0x3f
-#define        BCH_DEBUG0_DEBUG_REG_SELECT_OFFSET              0
-
-#define        BCH_DBGKESREAD_VALUES_MASK                      0xffffffff
-#define        BCH_DBGKESREAD_VALUES_OFFSET                    0
-
-#define        BCH_DBGCSFEREAD_VALUES_MASK                     0xffffffff
-#define        BCH_DBGCSFEREAD_VALUES_OFFSET                   0
-
-#define        BCH_DBGSYNDGENREAD_VALUES_MASK                  0xffffffff
-#define        BCH_DBGSYNDGENREAD_VALUES_OFFSET                0
-
-#define        BCH_DBGAHBMREAD_VALUES_MASK                     0xffffffff
-#define        BCH_DBGAHBMREAD_VALUES_OFFSET                   0
-
-#define        BCH_BLOCKNAME_NAME_MASK                         0xffffffff
-#define        BCH_BLOCKNAME_NAME_OFFSET                       0
-
-#define        BCH_VERSION_MAJOR_MASK                          (0xff << 24)
-#define        BCH_VERSION_MAJOR_OFFSET                        24
-#define        BCH_VERSION_MINOR_MASK                          (0xff << 16)
-#define        BCH_VERSION_MINOR_OFFSET                        16
-#define        BCH_VERSION_STEP_MASK                           0xffff
-#define        BCH_VERSION_STEP_OFFSET                         0
-
-#endif /* __MX28_REGS_BCH_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-common.h b/arch/arm/include/asm/imx-common/regs-common.h
deleted file mode 100644 (file)
index 7382674..0000000
+++ /dev/null
@@ -1,71 +0,0 @@
-/*
- * Freescale i.MXS Register Accessors
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MXS_REGS_COMMON_H__
-#define __MXS_REGS_COMMON_H__
-
-#include <linux/types.h>
-
-/*
- * The i.MXS has interesting feature when it comes to register access. There
- * are four kinds of access to one particular register. Those are:
- *
- * 1) Common read/write access. To use this mode, just write to the address of
- *    the register.
- * 2) Set bits only access. To set bits, write which bits you want to set to the
- *    address of the register + 0x4.
- * 3) Clear bits only access. To clear bits, write which bits you want to clear
- *    to the address of the register + 0x8.
- * 4) Toggle bits only access. To toggle bits, write which bits you want to
- *    toggle to the address of the register + 0xc.
- *
- * IMPORTANT NOTE: Not all registers support accesses 2-4! Also, not all bits
- * can be set/cleared by pure write as in access type 1, some need to be
- * explicitly set/cleared by using access type 2-3.
- *
- * The following macros and structures allow the user to either access the
- * register in all aforementioned modes (by accessing reg_name, reg_name_set,
- * reg_name_clr, reg_name_tog) or pass the register structure further into
- * various functions with correct type information (by accessing reg_name_reg).
- *
- */
-
-#define        __mxs_reg_8(name)               \
-       uint8_t name[4];                \
-       uint8_t name##_set[4];          \
-       uint8_t name##_clr[4];          \
-       uint8_t name##_tog[4];          \
-
-#define        __mxs_reg_32(name)              \
-       uint32_t name;                  \
-       uint32_t name##_set;            \
-       uint32_t name##_clr;            \
-       uint32_t name##_tog;
-
-struct mxs_register_8 {
-       __mxs_reg_8(reg)
-};
-
-struct mxs_register_32 {
-       __mxs_reg_32(reg)
-};
-
-#define        mxs_reg_8(name)                         \
-       union {                                         \
-               struct { __mxs_reg_8(name) };           \
-               struct mxs_register_8 name##_reg;       \
-       };
-
-#define        mxs_reg_32(name)                                \
-       union {                                         \
-               struct { __mxs_reg_32(name) };          \
-               struct mxs_register_32 name##_reg;      \
-       };
-
-#endif /* __MXS_REGS_COMMON_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-gpmi.h b/arch/arm/include/asm/imx-common/regs-gpmi.h
deleted file mode 100644 (file)
index b93bfe5..0000000
+++ /dev/null
@@ -1,209 +0,0 @@
-/*
- * Freescale i.MX28 GPMI Register Definitions
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MX28_REGS_GPMI_H__
-#define __MX28_REGS_GPMI_H__
-
-#include <asm/imx-common/regs-common.h>
-
-#ifndef        __ASSEMBLY__
-struct mxs_gpmi_regs {
-       mxs_reg_32(hw_gpmi_ctrl0)
-       mxs_reg_32(hw_gpmi_compare)
-       mxs_reg_32(hw_gpmi_eccctrl)
-       mxs_reg_32(hw_gpmi_ecccount)
-       mxs_reg_32(hw_gpmi_payload)
-       mxs_reg_32(hw_gpmi_auxiliary)
-       mxs_reg_32(hw_gpmi_ctrl1)
-       mxs_reg_32(hw_gpmi_timing0)
-       mxs_reg_32(hw_gpmi_timing1)
-
-       uint32_t        reserved[4];
-
-       mxs_reg_32(hw_gpmi_data)
-       mxs_reg_32(hw_gpmi_stat)
-       mxs_reg_32(hw_gpmi_debug)
-       mxs_reg_32(hw_gpmi_version)
-};
-#endif
-
-#define        GPMI_CTRL0_SFTRST                               (1 << 31)
-#define        GPMI_CTRL0_CLKGATE                              (1 << 30)
-#define        GPMI_CTRL0_RUN                                  (1 << 29)
-#define        GPMI_CTRL0_DEV_IRQ_EN                           (1 << 28)
-#define        GPMI_CTRL0_LOCK_CS                              (1 << 27)
-#define        GPMI_CTRL0_UDMA                                 (1 << 26)
-#define        GPMI_CTRL0_COMMAND_MODE_MASK                    (0x3 << 24)
-#define        GPMI_CTRL0_COMMAND_MODE_OFFSET                  24
-#define        GPMI_CTRL0_COMMAND_MODE_WRITE                   (0x0 << 24)
-#define        GPMI_CTRL0_COMMAND_MODE_READ                    (0x1 << 24)
-#define        GPMI_CTRL0_COMMAND_MODE_READ_AND_COMPARE        (0x2 << 24)
-#define        GPMI_CTRL0_COMMAND_MODE_WAIT_FOR_READY          (0x3 << 24)
-#define        GPMI_CTRL0_WORD_LENGTH                          (1 << 23)
-#define        GPMI_CTRL0_CS_MASK                              (0x7 << 20)
-#define        GPMI_CTRL0_CS_OFFSET                            20
-#define        GPMI_CTRL0_ADDRESS_MASK                         (0x7 << 17)
-#define        GPMI_CTRL0_ADDRESS_OFFSET                       17
-#define        GPMI_CTRL0_ADDRESS_NAND_DATA                    (0x0 << 17)
-#define        GPMI_CTRL0_ADDRESS_NAND_CLE                     (0x1 << 17)
-#define        GPMI_CTRL0_ADDRESS_NAND_ALE                     (0x2 << 17)
-#define        GPMI_CTRL0_ADDRESS_INCREMENT                    (1 << 16)
-#define        GPMI_CTRL0_XFER_COUNT_MASK                      0xffff
-#define        GPMI_CTRL0_XFER_COUNT_OFFSET                    0
-
-#define        GPMI_COMPARE_MASK_MASK                          (0xffff << 16)
-#define        GPMI_COMPARE_MASK_OFFSET                        16
-#define        GPMI_COMPARE_REFERENCE_MASK                     0xffff
-#define        GPMI_COMPARE_REFERENCE_OFFSET                   0
-
-#define        GPMI_ECCCTRL_HANDLE_MASK                        (0xffff << 16)
-#define        GPMI_ECCCTRL_HANDLE_OFFSET                      16
-#define        GPMI_ECCCTRL_ECC_CMD_MASK                       (0x3 << 13)
-#define        GPMI_ECCCTRL_ECC_CMD_OFFSET                     13
-#define        GPMI_ECCCTRL_ECC_CMD_DECODE                     (0x0 << 13)
-#define        GPMI_ECCCTRL_ECC_CMD_ENCODE                     (0x1 << 13)
-#define        GPMI_ECCCTRL_ENABLE_ECC                         (1 << 12)
-#define        GPMI_ECCCTRL_BUFFER_MASK_MASK                   0x1ff
-#define        GPMI_ECCCTRL_BUFFER_MASK_OFFSET                 0
-#define        GPMI_ECCCTRL_BUFFER_MASK_BCH_AUXONLY            0x100
-#define        GPMI_ECCCTRL_BUFFER_MASK_BCH_PAGE               0x1ff
-
-#define        GPMI_ECCCOUNT_COUNT_MASK                        0xffff
-#define        GPMI_ECCCOUNT_COUNT_OFFSET                      0
-
-#define        GPMI_PAYLOAD_ADDRESS_MASK                       (0x3fffffff << 2)
-#define        GPMI_PAYLOAD_ADDRESS_OFFSET                     2
-
-#define        GPMI_AUXILIARY_ADDRESS_MASK                     (0x3fffffff << 2)
-#define        GPMI_AUXILIARY_ADDRESS_OFFSET                   2
-
-#define        GPMI_CTRL1_DECOUPLE_CS                          (1 << 24)
-#define        GPMI_CTRL1_WRN_DLY_SEL_MASK                     (0x3 << 22)
-#define        GPMI_CTRL1_WRN_DLY_SEL_OFFSET                   22
-#define        GPMI_CTRL1_TIMEOUT_IRQ_EN                       (1 << 20)
-#define        GPMI_CTRL1_GANGED_RDYBUSY                       (1 << 19)
-#define        GPMI_CTRL1_BCH_MODE                             (1 << 18)
-#define        GPMI_CTRL1_DLL_ENABLE                           (1 << 17)
-#define        GPMI_CTRL1_HALF_PERIOD                          (1 << 16)
-#define        GPMI_CTRL1_RDN_DELAY_MASK                       (0xf << 12)
-#define        GPMI_CTRL1_RDN_DELAY_OFFSET                     12
-#define        GPMI_CTRL1_DMA2ECC_MODE                         (1 << 11)
-#define        GPMI_CTRL1_DEV_IRQ                              (1 << 10)
-#define        GPMI_CTRL1_TIMEOUT_IRQ                          (1 << 9)
-#define        GPMI_CTRL1_BURST_EN                             (1 << 8)
-#define        GPMI_CTRL1_ABORT_WAIT_REQUEST                   (1 << 7)
-#define        GPMI_CTRL1_ABORT_WAIT_FOR_READY_CHANNEL_MASK    (0x7 << 4)
-#define        GPMI_CTRL1_ABORT_WAIT_FOR_READY_CHANNEL_OFFSET  4
-#define        GPMI_CTRL1_DEV_RESET                            (1 << 3)
-#define        GPMI_CTRL1_ATA_IRQRDY_POLARITY                  (1 << 2)
-#define        GPMI_CTRL1_CAMERA_MODE                          (1 << 1)
-#define        GPMI_CTRL1_GPMI_MODE                            (1 << 0)
-
-#define        GPMI_TIMING0_ADDRESS_SETUP_MASK                 (0xff << 16)
-#define        GPMI_TIMING0_ADDRESS_SETUP_OFFSET               16
-#define        GPMI_TIMING0_DATA_HOLD_MASK                     (0xff << 8)
-#define        GPMI_TIMING0_DATA_HOLD_OFFSET                   8
-#define        GPMI_TIMING0_DATA_SETUP_MASK                    0xff
-#define        GPMI_TIMING0_DATA_SETUP_OFFSET                  0
-
-#define        GPMI_TIMING1_DEVICE_BUSY_TIMEOUT_MASK           (0xffff << 16)
-#define        GPMI_TIMING1_DEVICE_BUSY_TIMEOUT_OFFSET         16
-
-#define        GPMI_TIMING2_UDMA_TRP_MASK                      (0xff << 24)
-#define        GPMI_TIMING2_UDMA_TRP_OFFSET                    24
-#define        GPMI_TIMING2_UDMA_ENV_MASK                      (0xff << 16)
-#define        GPMI_TIMING2_UDMA_ENV_OFFSET                    16
-#define        GPMI_TIMING2_UDMA_HOLD_MASK                     (0xff << 8)
-#define        GPMI_TIMING2_UDMA_HOLD_OFFSET                   8
-#define        GPMI_TIMING2_UDMA_SETUP_MASK                    0xff
-#define        GPMI_TIMING2_UDMA_SETUP_OFFSET                  0
-
-#define        GPMI_DATA_DATA_MASK                             0xffffffff
-#define        GPMI_DATA_DATA_OFFSET                           0
-
-#define        GPMI_STAT_READY_BUSY_MASK                       (0xff << 24)
-#define        GPMI_STAT_READY_BUSY_OFFSET                     24
-#define        GPMI_STAT_RDY_TIMEOUT_MASK                      (0xff << 16)
-#define        GPMI_STAT_RDY_TIMEOUT_OFFSET                    16
-#define        GPMI_STAT_DEV7_ERROR                            (1 << 15)
-#define        GPMI_STAT_DEV6_ERROR                            (1 << 14)
-#define        GPMI_STAT_DEV5_ERROR                            (1 << 13)
-#define        GPMI_STAT_DEV4_ERROR                            (1 << 12)
-#define        GPMI_STAT_DEV3_ERROR                            (1 << 11)
-#define        GPMI_STAT_DEV2_ERROR                            (1 << 10)
-#define        GPMI_STAT_DEV1_ERROR                            (1 << 9)
-#define        GPMI_STAT_DEV0_ERROR                            (1 << 8)
-#define        GPMI_STAT_ATA_IRQ                               (1 << 4)
-#define        GPMI_STAT_INVALID_BUFFER_MASK                   (1 << 3)
-#define        GPMI_STAT_FIFO_EMPTY                            (1 << 2)
-#define        GPMI_STAT_FIFO_FULL                             (1 << 1)
-#define        GPMI_STAT_PRESENT                               (1 << 0)
-
-#define        GPMI_DEBUG_WAIT_FOR_READY_END_MASK              (0xff << 24)
-#define        GPMI_DEBUG_WAIT_FOR_READY_END_OFFSET            24
-#define        GPMI_DEBUG_DMA_SENSE_MASK                       (0xff << 16)
-#define        GPMI_DEBUG_DMA_SENSE_OFFSET                     16
-#define        GPMI_DEBUG_DMAREQ_MASK                          (0xff << 8)
-#define        GPMI_DEBUG_DMAREQ_OFFSET                        8
-#define        GPMI_DEBUG_CMD_END_MASK                         0xff
-#define        GPMI_DEBUG_CMD_END_OFFSET                       0
-
-#define        GPMI_VERSION_MAJOR_MASK                         (0xff << 24)
-#define        GPMI_VERSION_MAJOR_OFFSET                       24
-#define        GPMI_VERSION_MINOR_MASK                         (0xff << 16)
-#define        GPMI_VERSION_MINOR_OFFSET                       16
-#define        GPMI_VERSION_STEP_MASK                          0xffff
-#define        GPMI_VERSION_STEP_OFFSET                        0
-
-#define        GPMI_DEBUG2_UDMA_STATE_MASK                     (0xf << 24)
-#define        GPMI_DEBUG2_UDMA_STATE_OFFSET                   24
-#define        GPMI_DEBUG2_BUSY                                (1 << 23)
-#define        GPMI_DEBUG2_PIN_STATE_MASK                      (0x7 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_OFFSET                    20
-#define        GPMI_DEBUG2_PIN_STATE_PSM_IDLE                  (0x0 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_BYTCNT                (0x1 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_ADDR                  (0x2 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_STALL                 (0x3 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_STROBE                (0x4 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_ATARDY                (0x5 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_DHOLD                 (0x6 << 20)
-#define        GPMI_DEBUG2_PIN_STATE_PSM_DONE                  (0x7 << 20)
-#define        GPMI_DEBUG2_MAIN_STATE_MASK                     (0xf << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_OFFSET                   16
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_IDLE                 (0x0 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_BYTCNT               (0x1 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFE               (0x2 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFR               (0x3 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_DMAREQ               (0x4 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_DMAACK               (0x5 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFF               (0x6 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_LDFIFO               (0x7 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_LDDMAR               (0x8 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_RDCMP                (0x9 << 16)
-#define        GPMI_DEBUG2_MAIN_STATE_MSM_DONE                 (0xa << 16)
-#define        GPMI_DEBUG2_SYND2GPMI_BE_MASK                   (0xf << 12)
-#define        GPMI_DEBUG2_SYND2GPMI_BE_OFFSET                 12
-#define        GPMI_DEBUG2_GPMI2SYND_VALID                     (1 << 11)
-#define        GPMI_DEBUG2_GPMI2SYND_READY                     (1 << 10)
-#define        GPMI_DEBUG2_SYND2GPMI_VALID                     (1 << 9)
-#define        GPMI_DEBUG2_SYND2GPMI_READY                     (1 << 8)
-#define        GPMI_DEBUG2_VIEW_DELAYED_RDN                    (1 << 7)
-#define        GPMI_DEBUG2_UPDATE_WINDOW                       (1 << 6)
-#define        GPMI_DEBUG2_RDN_TAP_MASK                        0x3f
-#define        GPMI_DEBUG2_RDN_TAP_OFFSET                      0
-
-#define        GPMI_DEBUG3_APB_WORD_CNTR_MASK                  (0xffff << 16)
-#define        GPMI_DEBUG3_APB_WORD_CNTR_OFFSET                16
-#define        GPMI_DEBUG3_DEV_WORD_CNTR_MASK                  0xffff
-#define        GPMI_DEBUG3_DEV_WORD_CNTR_OFFSET                0
-
-#endif /* __MX28_REGS_GPMI_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-lcdif.h b/arch/arm/include/asm/imx-common/regs-lcdif.h
deleted file mode 100644 (file)
index ab147b5..0000000
+++ /dev/null
@@ -1,232 +0,0 @@
-/*
- * Freescale i.MX28/6SX/6UL/7D LCDIF Register Definitions
- *
- * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
- * on behalf of DENX Software Engineering GmbH
- *
- * Based on code from LTIB:
- * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __IMX_REGS_LCDIF_H__
-#define __IMX_REGS_LCDIF_H__
-
-#ifndef        __ASSEMBLY__
-#include <asm/imx-common/regs-common.h>
-
-struct mxs_lcdif_regs {
-       mxs_reg_32(hw_lcdif_ctrl)               /* 0x00 */
-       mxs_reg_32(hw_lcdif_ctrl1)              /* 0x10 */
-#if defined(CONFIG_MX28) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || \
-       defined(CONFIG_MX7) || defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)
-       mxs_reg_32(hw_lcdif_ctrl2)              /* 0x20 */
-#endif
-       mxs_reg_32(hw_lcdif_transfer_count)     /* 0x20/0x30 */
-       mxs_reg_32(hw_lcdif_cur_buf)            /* 0x30/0x40 */
-       mxs_reg_32(hw_lcdif_next_buf)           /* 0x40/0x50 */
-
-#if defined(CONFIG_MX23)
-       uint32_t        reserved1[4];
-#endif
-
-       mxs_reg_32(hw_lcdif_timing)             /* 0x60 */
-       mxs_reg_32(hw_lcdif_vdctrl0)            /* 0x70 */
-       mxs_reg_32(hw_lcdif_vdctrl1)            /* 0x80 */
-       mxs_reg_32(hw_lcdif_vdctrl2)            /* 0x90 */
-       mxs_reg_32(hw_lcdif_vdctrl3)            /* 0xa0 */
-       mxs_reg_32(hw_lcdif_vdctrl4)            /* 0xb0 */
-       mxs_reg_32(hw_lcdif_dvictrl0)           /* 0xc0 */
-       mxs_reg_32(hw_lcdif_dvictrl1)           /* 0xd0 */
-       mxs_reg_32(hw_lcdif_dvictrl2)           /* 0xe0 */
-       mxs_reg_32(hw_lcdif_dvictrl3)           /* 0xf0 */
-       mxs_reg_32(hw_lcdif_dvictrl4)           /* 0x100 */
-       mxs_reg_32(hw_lcdif_csc_coeffctrl0)     /* 0x110 */
-       mxs_reg_32(hw_lcdif_csc_coeffctrl1)     /* 0x120 */
-       mxs_reg_32(hw_lcdif_csc_coeffctrl2)     /* 0x130 */
-       mxs_reg_32(hw_lcdif_csc_coeffctrl3)     /* 0x140 */
-       mxs_reg_32(hw_lcdif_csc_coeffctrl4)     /* 0x150 */
-       mxs_reg_32(hw_lcdif_csc_offset) /* 0x160 */
-       mxs_reg_32(hw_lcdif_csc_limit)          /* 0x170 */
-
-#if defined(CONFIG_MX23)
-       uint32_t        reserved2[12];
-#endif
-       mxs_reg_32(hw_lcdif_data)               /* 0x1b0/0x180 */
-       mxs_reg_32(hw_lcdif_bm_error_stat)      /* 0x1c0/0x190 */
-#if defined(CONFIG_MX28) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || \
-       defined(CONFIG_MX7) || defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)
-       mxs_reg_32(hw_lcdif_crc_stat)           /* 0x1a0 */
-#endif
-       mxs_reg_32(hw_lcdif_lcdif_stat)         /* 0x1d0/0x1b0 */
-       mxs_reg_32(hw_lcdif_version)            /* 0x1e0/0x1c0 */
-       mxs_reg_32(hw_lcdif_debug0)             /* 0x1f0/0x1d0 */
-       mxs_reg_32(hw_lcdif_debug1)             /* 0x200/0x1e0 */
-       mxs_reg_32(hw_lcdif_debug2)             /* 0x1f0 */
-#if defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || defined(CONFIG_MX7) || \
-       defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)
-       mxs_reg_32(hw_lcdif_thres)
-       mxs_reg_32(hw_lcdif_as_ctrl)
-       mxs_reg_32(hw_lcdif_as_buf)
-       mxs_reg_32(hw_lcdif_as_next_buf)
-       mxs_reg_32(hw_lcdif_as_clrkeylow)
-       mxs_reg_32(hw_lcdif_as_clrkeyhigh)
-       mxs_reg_32(hw_lcdif_as_sync_delay)
-       mxs_reg_32(hw_lcdif_as_debug3)
-       mxs_reg_32(hw_lcdif_as_debug4)
-       mxs_reg_32(hw_lcdif_as_debug5)
-#endif
-};
-#endif
-
-#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
-
-#if defined(CONFIG_MX23)
-#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_MASK                    (0xff << 24)
-#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_OFFSET                  24
-#else
-#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_MASK                    (0x3fff << 18)
-#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_OFFSET                  18
-#endif
-#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
-
-#endif /* __IMX_REGS_LCDIF_H__ */
diff --git a/arch/arm/include/asm/imx-common/regs-usbphy.h b/arch/arm/include/asm/imx-common/regs-usbphy.h
deleted file mode 100644 (file)
index 220e45f..0000000
+++ /dev/null
@@ -1,26 +0,0 @@
-/*
- * Freescale USB PHY Register Definitions
- *
- * SPDX-License-Identifier: GPL-2.0+
- *
- */
-
-#ifndef __REGS_USBPHY_H__
-#define __REGS_USBPHY_H__
-
-#define USBPHY_CTRL                                            0x00000030
-#define USBPHY_CTRL_SET                                        0x00000034
-#define USBPHY_CTRL_CLR                                        0x00000038
-#define USBPHY_CTRL_TOG                                        0x0000003C
-#define USBPHY_PWD                                             0x00000000
-#define USBPHY_TX                                              0x00000010
-#define USBPHY_RX                                              0x00000020
-#define USBPHY_DEBUG                                   0x00000050
-
-#define USBPHY_CTRL_ENUTMILEVEL2               (1 << 14)
-#define USBPHY_CTRL_ENUTMILEVEL3               (1 << 15)
-#define USBPHY_CTRL_OTG_ID                             (1 << 27)
-#define USBPHY_CTRL_CLKGATE                            (1 << 30)
-#define USBPHY_CTRL_SFTRST                             (1 << 31)
-
-#endif /* __REGS_USBPHY_H__ */
diff --git a/arch/arm/include/asm/imx-common/sata.h b/arch/arm/include/asm/imx-common/sata.h
deleted file mode 100644 (file)
index 6b864cb..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright 2011 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __IMX_SATA_H_
-#define __IMX_SATA_H_
-
-/*
- * SATA setup for i.mx6 quad based platform
- */
-
-int setup_sata(void);
-
-#endif
diff --git a/arch/arm/include/asm/imx-common/spi.h b/arch/arm/include/asm/imx-common/spi.h
deleted file mode 100644 (file)
index 1d4473a..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * Copyright 2011 Freescale Semiconductor, Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MXC_SPI_H_
-#define __MXC_SPI_H_
-
-/*
- * Board-level chip-select callback
- * Should return GPIO # to be used for chip-select
- */
-
-int board_spi_cs_gpio(unsigned bus, unsigned cs);
-
-#endif
diff --git a/arch/arm/include/asm/imx-common/sys_proto.h b/arch/arm/include/asm/imx-common/sys_proto.h
deleted file mode 100644 (file)
index a07061b..0000000
+++ /dev/null
@@ -1,116 +0,0 @@
-/*
- * (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/io.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_mx6() (is_soc_type(MXC_SOC_MX6))
-#define is_mx7() (is_soc_type(MXC_SOC_MX7))
-
-#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
-#define is_mx6dq() (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D))
-#define is_mx6sdl() (is_cpu_type(MXC_CPU_MX6SOLO) || is_cpu_type(MXC_CPU_MX6DL))
-#define is_mx6dl() (is_cpu_type(MXC_CPU_MX6DL))
-#define is_mx6sx() (is_cpu_type(MXC_CPU_MX6SX))
-#define is_mx6sl() (is_cpu_type(MXC_CPU_MX6SL))
-#define is_mx6solo() (is_cpu_type(MXC_CPU_MX6SOLO))
-#define is_mx6ul() (is_cpu_type(MXC_CPU_MX6UL))
-#define is_mx6ull() (is_cpu_type(MXC_CPU_MX6ULL))
-#define is_mx6sll() (is_cpu_type(MXC_CPU_MX6SLL))
-
-#define is_mx7ulp() (is_cpu_type(MXC_CPU_MX7ULP))
-
-#ifdef CONFIG_MX6
-#define IMX6_SRC_GPR10_BMODE           BIT(28)
-
-#define IMX6_BMODE_MASK                        GENMASK(7, 0)
-#define        IMX6_BMODE_SHIFT                4
-#define IMX6_BMODE_EMI_MASK            BIT(3)
-#define IMX6_BMODE_EMI_SHIFT           3
-#define IMX6_BMODE_SERIAL_ROM_MASK     GENMASK(26, 24)
-#define IMX6_BMODE_SERIAL_ROM_SHIFT    24
-
-enum imx6_bmode_serial_rom {
-       IMX6_BMODE_ECSPI1,
-       IMX6_BMODE_ECSPI2,
-       IMX6_BMODE_ECSPI3,
-       IMX6_BMODE_ECSPI4,
-       IMX6_BMODE_ECSPI5,
-       IMX6_BMODE_I2C1,
-       IMX6_BMODE_I2C2,
-       IMX6_BMODE_I2C3,
-};
-
-enum imx6_bmode_emi {
-       IMX6_BMODE_ONENAND,
-       IMX6_BMODE_NOR,
-};
-
-enum imx6_bmode {
-       IMX6_BMODE_EMI,
-       IMX6_BMODE_UART,
-       IMX6_BMODE_SATA,
-       IMX6_BMODE_SERIAL_ROM,
-       IMX6_BMODE_SD,
-       IMX6_BMODE_ESD,
-       IMX6_BMODE_MMC,
-       IMX6_BMODE_EMMC,
-       IMX6_BMODE_NAND,
-};
-
-static inline u8 imx6_is_bmode_from_gpr9(void)
-{
-       return readl(&src_base->gpr10) & IMX6_SRC_GPR10_BMODE;
-}
-
-u32 imx6_src_get_boot_mode(void);
-#endif /* CONFIG_MX6 */
-
-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);
-
-void lcdif_power_down(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
deleted file mode 100644 (file)
index bdbe26c..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
- * 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
diff --git a/arch/arm/include/asm/imx-common/video.h b/arch/arm/include/asm/imx-common/video.h
deleted file mode 100644 (file)
index 941a031..0000000
+++ /dev/null
@@ -1,31 +0,0 @@
-/*
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __IMX_VIDEO_H_
-#define __IMX_VIDEO_H_
-
-#include <linux/fb.h>
-#include <ipu_pixfmt.h>
-
-struct display_info_t {
-       int     bus;
-       int     addr;
-       int     pixfmt;
-       int     di;
-       int     (*detect)(struct display_info_t const *dev);
-       void    (*enable)(struct display_info_t const *dev);
-       struct  fb_videomode mode;
-};
-
-#ifdef CONFIG_IMX_HDMI
-extern int detect_hdmi(struct display_info_t const *dev);
-#endif
-
-#ifdef CONFIG_IMX_VIDEO_SKIP
-extern struct display_info_t const displays[];
-extern size_t display_count;
-#endif
-
-int ipu_set_ldb_clock(int rate);
-#endif
diff --git a/arch/arm/include/asm/mach-imx/boot_mode.h b/arch/arm/include/asm/mach-imx/boot_mode.h
new file mode 100644 (file)
index 0000000..a8239f2
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * Copyright (C) 2012 Boundary Devices Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _ASM_BOOT_MODE_H
+#define _ASM_BOOT_MODE_H
+#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;
+};
+
+void add_board_boot_modes(const struct boot_mode *p);
+void boot_mode_apply(unsigned cfg_val);
+extern const struct boot_mode soc_boot_modes[];
+#endif
diff --git a/arch/arm/include/asm/mach-imx/dma.h b/arch/arm/include/asm/mach-imx/dma.h
new file mode 100644 (file)
index 0000000..0244947
--- /dev/null
@@ -0,0 +1,161 @@
+/*
+ * Freescale i.MX28 APBH DMA
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __DMA_H__
+#define __DMA_H__
+
+#include <linux/list.h>
+#include <linux/compiler.h>
+
+#define DMA_PIO_WORDS          15
+#define MXS_DMA_ALIGNMENT      ARCH_DMA_MINALIGN
+
+/*
+ * MXS DMA channels
+ */
+#if defined(CONFIG_MX23)
+enum {
+       MXS_DMA_CHANNEL_AHB_APBH_LCDIF = 0,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP0,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP1,
+       MXS_DMA_CHANNEL_AHB_APBH_RESERVED0,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI0,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
+       MXS_MAX_DMA_CHANNELS,
+};
+#elif defined(CONFIG_MX28)
+enum {
+       MXS_DMA_CHANNEL_AHB_APBH_SSP0 = 0,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP1,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP2,
+       MXS_DMA_CHANNEL_AHB_APBH_SSP3,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI0,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI4,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI5,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI6,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI7,
+       MXS_DMA_CHANNEL_AHB_APBH_HSADC,
+       MXS_DMA_CHANNEL_AHB_APBH_LCDIF,
+       MXS_DMA_CHANNEL_AHB_APBH_RESERVED0,
+       MXS_DMA_CHANNEL_AHB_APBH_RESERVED1,
+       MXS_MAX_DMA_CHANNELS,
+};
+#elif defined(CONFIG_MX6) || defined(CONFIG_MX7)
+enum {
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI0 = 0,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI1,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI2,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI3,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI4,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI5,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI6,
+       MXS_DMA_CHANNEL_AHB_APBH_GPMI7,
+       MXS_MAX_DMA_CHANNELS,
+};
+#endif
+
+/*
+ * MXS DMA hardware command.
+ *
+ * This structure describes the in-memory layout of an entire DMA command,
+ * including space for the maximum number of PIO accesses. See the appropriate
+ * reference manual for a detailed description of what these fields mean to the
+ * DMA hardware.
+ */
+#define        MXS_DMA_DESC_COMMAND_MASK       0x3
+#define        MXS_DMA_DESC_COMMAND_OFFSET     0
+#define        MXS_DMA_DESC_COMMAND_NO_DMAXFER 0x0
+#define        MXS_DMA_DESC_COMMAND_DMA_WRITE  0x1
+#define        MXS_DMA_DESC_COMMAND_DMA_READ   0x2
+#define        MXS_DMA_DESC_COMMAND_DMA_SENSE  0x3
+#define        MXS_DMA_DESC_CHAIN              (1 << 2)
+#define        MXS_DMA_DESC_IRQ                (1 << 3)
+#define        MXS_DMA_DESC_NAND_LOCK          (1 << 4)
+#define        MXS_DMA_DESC_NAND_WAIT_4_READY  (1 << 5)
+#define        MXS_DMA_DESC_DEC_SEM            (1 << 6)
+#define        MXS_DMA_DESC_WAIT4END           (1 << 7)
+#define        MXS_DMA_DESC_HALT_ON_TERMINATE  (1 << 8)
+#define        MXS_DMA_DESC_TERMINATE_FLUSH    (1 << 9)
+#define        MXS_DMA_DESC_PIO_WORDS_MASK     (0xf << 12)
+#define        MXS_DMA_DESC_PIO_WORDS_OFFSET   12
+#define        MXS_DMA_DESC_BYTES_MASK         (0xffff << 16)
+#define        MXS_DMA_DESC_BYTES_OFFSET       16
+
+struct mxs_dma_cmd {
+       unsigned long           next;
+       unsigned long           data;
+       union {
+               dma_addr_t      address;
+               unsigned long   alternate;
+       };
+       unsigned long           pio_words[DMA_PIO_WORDS];
+};
+
+/*
+ * MXS DMA command descriptor.
+ *
+ * This structure incorporates an MXS DMA hardware command structure, along
+ * with metadata.
+ */
+#define        MXS_DMA_DESC_FIRST      (1 << 0)
+#define        MXS_DMA_DESC_LAST       (1 << 1)
+#define        MXS_DMA_DESC_READY      (1 << 31)
+
+struct mxs_dma_desc {
+       struct mxs_dma_cmd      cmd;
+       unsigned int            flags;
+       dma_addr_t              address;
+       void                    *buffer;
+       struct list_head        node;
+} __aligned(MXS_DMA_ALIGNMENT);
+
+/**
+ * MXS DMA channel
+ *
+ * This structure represents a single DMA channel. The MXS platform code
+ * maintains an array of these structures to represent every DMA channel in the
+ * system (see mxs_dma_channels).
+ */
+#define        MXS_DMA_FLAGS_IDLE      0
+#define        MXS_DMA_FLAGS_BUSY      (1 << 0)
+#define        MXS_DMA_FLAGS_FREE      0
+#define        MXS_DMA_FLAGS_ALLOCATED (1 << 16)
+#define        MXS_DMA_FLAGS_VALID     (1 << 31)
+
+struct mxs_dma_chan {
+       const char *name;
+       unsigned long dev;
+       struct mxs_dma_device *dma;
+       unsigned int flags;
+       unsigned int active_num;
+       unsigned int pending_num;
+       struct list_head active;
+       struct list_head done;
+};
+
+struct mxs_dma_desc *mxs_dma_desc_alloc(void);
+void mxs_dma_desc_free(struct mxs_dma_desc *);
+int mxs_dma_desc_append(int channel, struct mxs_dma_desc *pdesc);
+
+int mxs_dma_go(int chan);
+void mxs_dma_init(void);
+int mxs_dma_init_channel(int chan);
+int mxs_dma_release(int chan);
+
+void mxs_dma_circ_start(int chan, struct mxs_dma_desc *pdesc);
+
+#endif /* __DMA_H__ */
diff --git a/arch/arm/include/asm/mach-imx/gpio.h b/arch/arm/include/asm/mach-imx/gpio.h
new file mode 100644 (file)
index 0000000..26b296b
--- /dev/null
@@ -0,0 +1,23 @@
+/*
+ * Copyright (C) 2011
+ * Stefano Babic, DENX Software Engineering, <sbabic@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+
+#ifndef __ASM_ARCH_IMX_GPIO_H
+#define __ASM_ARCH_IMX_GPIO_H
+
+#if !(defined(__KERNEL_STRICT_NAMES) || defined(__ASSEMBLY__))
+/* GPIO registers */
+struct gpio_regs {
+       u32 gpio_dr;    /* data */
+       u32 gpio_dir;   /* direction */
+       u32 gpio_psr;   /* pad satus */
+};
+#endif
+
+#define IMX_GPIO_NR(port, index)               ((((port)-1)*32)+((index)&31))
+
+#endif
diff --git a/arch/arm/include/asm/mach-imx/hab.h b/arch/arm/include/asm/mach-imx/hab.h
new file mode 100644 (file)
index 0000000..e0ff459
--- /dev/null
@@ -0,0 +1,150 @@
+/*
+ * Copyright (C) 2012-2015 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+*/
+
+#ifndef __SECURE_MX6Q_H__
+#define __SECURE_MX6Q_H__
+
+#include <linux/types.h>
+
+/* -------- start of HAB API updates ------------*/
+/* The following are taken from HAB4 SIS */
+
+/* Status definitions */
+enum hab_status {
+       HAB_STS_ANY = 0x00,
+       HAB_FAILURE = 0x33,
+       HAB_WARNING = 0x69,
+       HAB_SUCCESS = 0xf0
+};
+
+/* Security Configuration definitions */
+enum hab_config {
+       HAB_CFG_RETURN = 0x33,  /* < Field Return IC */
+       HAB_CFG_OPEN = 0xf0,    /* < Non-secure IC */
+       HAB_CFG_CLOSED = 0xcc   /* < Secure IC */
+};
+
+/* State definitions */
+enum hab_state {
+       HAB_STATE_INITIAL = 0x33,       /* Initialising state (transitory) */
+       HAB_STATE_CHECK = 0x55,         /* Check state (non-secure) */
+       HAB_STATE_NONSECURE = 0x66,     /* Non-secure state */
+       HAB_STATE_TRUSTED = 0x99,       /* Trusted state */
+       HAB_STATE_SECURE = 0xaa,        /* Secure state */
+       HAB_STATE_FAIL_SOFT = 0xcc, /* Soft fail state */
+       HAB_STATE_FAIL_HARD = 0xff, /* Hard fail state (terminal) */
+       HAB_STATE_NONE = 0xf0,          /* No security state machine */
+       HAB_STATE_MAX
+};
+
+enum hab_reason {
+       HAB_RSN_ANY = 0x00,                     /* Match any reason */
+       HAB_ENG_FAIL = 0x30,            /* Engine failure */
+       HAB_INV_ADDRESS = 0x22,         /* Invalid address: access denied */
+       HAB_INV_ASSERTION = 0x0c,   /* Invalid assertion */
+       HAB_INV_CALL = 0x28,            /* Function called out of sequence */
+       HAB_INV_CERTIFICATE = 0x21, /* Invalid certificate */
+       HAB_INV_COMMAND = 0x06,     /* Invalid command: command malformed */
+       HAB_INV_CSF = 0x11,                     /* Invalid csf */
+       HAB_INV_DCD = 0x27,                     /* Invalid dcd */
+       HAB_INV_INDEX = 0x0f,           /* Invalid index: access denied */
+       HAB_INV_IVT = 0x05,                     /* Invalid ivt */
+       HAB_INV_KEY = 0x1d,                     /* Invalid key */
+       HAB_INV_RETURN = 0x1e,          /* Failed callback function */
+       HAB_INV_SIGNATURE = 0x18,   /* Invalid signature */
+       HAB_INV_SIZE = 0x17,            /* Invalid data size */
+       HAB_MEM_FAIL = 0x2e,            /* Memory failure */
+       HAB_OVR_COUNT = 0x2b,           /* Expired poll count */
+       HAB_OVR_STORAGE = 0x2d,         /* Exhausted storage region */
+       HAB_UNS_ALGORITHM = 0x12,   /* Unsupported algorithm */
+       HAB_UNS_COMMAND = 0x03,         /* Unsupported command */
+       HAB_UNS_ENGINE = 0x0a,          /* Unsupported engine */
+       HAB_UNS_ITEM = 0x24,            /* Unsupported configuration item */
+       HAB_UNS_KEY = 0x1b,             /* Unsupported key type/parameters */
+       HAB_UNS_PROTOCOL = 0x14,        /* Unsupported protocol */
+       HAB_UNS_STATE = 0x09,           /* Unsuitable state */
+       HAB_RSN_MAX
+};
+
+enum hab_context {
+       HAB_CTX_ANY = 0x00,                     /* Match any context */
+       HAB_CTX_FAB = 0xff,                 /* Event logged in hab_fab_test() */
+       HAB_CTX_ENTRY = 0xe1,           /* Event logged in hab_rvt.entry() */
+       HAB_CTX_TARGET = 0x33,      /* Event logged in hab_rvt.check_target() */
+       HAB_CTX_AUTHENTICATE = 0x0a,/* Logged in hab_rvt.authenticate_image() */
+       HAB_CTX_DCD = 0xdd,         /* Event logged in hab_rvt.run_dcd() */
+       HAB_CTX_CSF = 0xcf,         /* Event logged in hab_rvt.run_csf() */
+       HAB_CTX_COMMAND = 0xc0,     /* Event logged executing csf/dcd command */
+       HAB_CTX_AUT_DAT = 0xdb,         /* Authenticated data block */
+       HAB_CTX_ASSERT = 0xa0,          /* Event logged in hab_rvt.assert() */
+       HAB_CTX_EXIT = 0xee,            /* Event logged in hab_rvt.exit() */
+       HAB_CTX_MAX
+};
+
+struct imx_sec_config_fuse_t {
+       int bank;
+       int word;
+};
+
+#if defined(CONFIG_SECURE_BOOT)
+extern struct imx_sec_config_fuse_t const imx_sec_config_fuse;
+#endif
+
+/*Function prototype description*/
+typedef enum hab_status hab_rvt_report_event_t(enum hab_status, uint32_t,
+               uint8_t* , size_t*);
+typedef enum hab_status hab_rvt_report_status_t(enum hab_config *,
+               enum hab_state *);
+typedef enum hab_status hab_loader_callback_f_t(void**, size_t*, const void*);
+typedef enum hab_status hab_rvt_entry_t(void);
+typedef enum hab_status hab_rvt_exit_t(void);
+typedef void *hab_rvt_authenticate_image_t(uint8_t, ptrdiff_t,
+               void **, size_t *, hab_loader_callback_f_t);
+typedef void hapi_clock_init_t(void);
+
+#define HAB_ENG_ANY            0x00   /* Select first compatible engine */
+#define HAB_ENG_SCC            0x03   /* Security controller */
+#define HAB_ENG_RTIC   0x05   /* Run-time integrity checker */
+#define HAB_ENG_SAHARA  0x06   /* Crypto accelerator */
+#define HAB_ENG_CSU            0x0a   /* Central Security Unit */
+#define HAB_ENG_SRTC   0x0c   /* Secure clock */
+#define HAB_ENG_DCP            0x1b   /* Data Co-Processor */
+#define HAB_ENG_CAAM   0x1d   /* CAAM */
+#define HAB_ENG_SNVS   0x1e   /* Secure Non-Volatile Storage */
+#define HAB_ENG_OCOTP  0x21   /* Fuse controller */
+#define HAB_ENG_DTCP   0x22   /* DTCP co-processor */
+#define HAB_ENG_ROM            0x36   /* Protected ROM area */
+#define HAB_ENG_HDCP   0x24   /* HDCP co-processor */
+#define HAB_ENG_RTL            0x77   /* RTL simulation engine */
+#define HAB_ENG_SW             0xff   /* Software engine */
+
+#ifdef CONFIG_ROM_UNIFIED_SECTIONS
+#define HAB_RVT_BASE                   0x00000100
+#else
+#define HAB_RVT_BASE                   0x00000094
+#endif
+
+#define HAB_RVT_ENTRY                  (*(uint32_t *)(HAB_RVT_BASE + 0x04))
+#define HAB_RVT_EXIT                   (*(uint32_t *)(HAB_RVT_BASE + 0x08))
+#define HAB_RVT_AUTHENTICATE_IMAGE     (*(uint32_t *)(HAB_RVT_BASE + 0x10))
+#define HAB_RVT_REPORT_EVENT           (*(uint32_t *)(HAB_RVT_BASE + 0x20))
+#define HAB_RVT_REPORT_STATUS          (*(uint32_t *)(HAB_RVT_BASE + 0x24))
+
+#define HAB_RVT_REPORT_EVENT_NEW               (*(uint32_t *)0x000000B8)
+#define HAB_RVT_REPORT_STATUS_NEW              (*(uint32_t *)0x000000BC)
+#define HAB_RVT_AUTHENTICATE_IMAGE_NEW         (*(uint32_t *)0x000000A8)
+#define HAB_RVT_ENTRY_NEW                      (*(uint32_t *)0x0000009C)
+#define HAB_RVT_EXIT_NEW                       (*(uint32_t *)0x000000A0)
+
+#define HAB_CID_ROM 0 /**< ROM Caller ID */
+#define HAB_CID_UBOOT 1 /**< UBOOT Caller ID*/
+
+/* ----------- end of HAB API updates ------------*/
+
+uint32_t authenticate_image(uint32_t ddr_start, uint32_t image_size);
+
+#endif
diff --git a/arch/arm/include/asm/mach-imx/imximage.cfg b/arch/arm/include/asm/mach-imx/imximage.cfg
new file mode 100644 (file)
index 0000000..d62166f
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * i.MX image header offset values
+ * Copyright (C) 2013 Marek Vasut <marex@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/*
+ * NOTE: This file must be kept in sync with tools/imximage.h because
+ *       tools/imximage.c can not cross-include headers from arch/arm/
+ *       and vice-versa.
+ */
+
+#ifndef __ASM_IMX_COMMON_IMXIMAGE_CFG__
+#define __ASM_IMX_COMMON_IMXIMAGE_CFG__
+
+/* Standard image header offset for NAND, SATA, SD, SPI flash. */
+#define FLASH_OFFSET_STANDARD  0x400
+/* Specific image header offset for booting from OneNAND. */
+#define FLASH_OFFSET_ONENAND   0x100
+/* Specific image header offset for booting from memory-mapped NOR. */
+#define FLASH_OFFSET_NOR       0x1000
+
+#endif  /* __ASM_IMX_COMMON_IMXIMAGE_CFG__ */
diff --git a/arch/arm/include/asm/mach-imx/iomux-v3.h b/arch/arm/include/asm/mach-imx/iomux-v3.h
new file mode 100644 (file)
index 0000000..ad35e01
--- /dev/null
@@ -0,0 +1,270 @@
+/*
+ * Based on Linux i.MX iomux-v3.h file:
+ * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
+ *                     <armlinux@phytec.de>
+ *
+ * Copyright (C) 2011 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __MACH_IOMUX_V3_H__
+#define __MACH_IOMUX_V3_H__
+
+#include <common.h>
+
+/*
+ *     build IOMUX_PAD structure
+ *
+ * This iomux scheme is based around pads, which are the physical balls
+ * on the processor.
+ *
+ * - Each pad has a pad control register (IOMUXC_SW_PAD_CTRL_x) which controls
+ *   things like driving strength and pullup/pulldown.
+ * - Each pad can have but not necessarily does have an output routing register
+ *   (IOMUXC_SW_MUX_CTL_PAD_x).
+ * - Each pad can have but not necessarily does have an input routing register
+ *   (IOMUXC_x_SELECT_INPUT)
+ *
+ * The three register sets do not have a fixed offset to each other,
+ * hence we order this table by pad control registers (which all pads
+ * have) and put the optional i/o routing registers into additional
+ * fields.
+ *
+ * The naming convention for the pad modes is SOC_PAD_<padname>__<padmode>
+ * If <padname> or <padmode> refers to a GPIO, it is named GPIO_<unit>_<num>
+ *
+ * IOMUX/PAD Bit field definitions
+ *
+ * MUX_CTRL_OFS:           0..11 (12)
+ * PAD_CTRL_OFS:          12..23 (12)
+ * SEL_INPUT_OFS:         24..35 (12)
+ * MUX_MODE + SION + LPSR: 36..41  (6)
+ * PAD_CTRL + NO_PAD_CTRL: 42..59 (18)
+ * SEL_INP:               60..63  (4)
+*/
+
+typedef u64 iomux_v3_cfg_t;
+
+#define MUX_CTRL_OFS_SHIFT     0
+#define MUX_CTRL_OFS_MASK      ((iomux_v3_cfg_t)0xfff << MUX_CTRL_OFS_SHIFT)
+#define MUX_PAD_CTRL_OFS_SHIFT 12
+#define MUX_PAD_CTRL_OFS_MASK  ((iomux_v3_cfg_t)0xfff << \
+       MUX_PAD_CTRL_OFS_SHIFT)
+#define MUX_SEL_INPUT_OFS_SHIFT        24
+#define MUX_SEL_INPUT_OFS_MASK ((iomux_v3_cfg_t)0xfff << \
+       MUX_SEL_INPUT_OFS_SHIFT)
+
+#define MUX_MODE_SHIFT         36
+#define MUX_MODE_MASK          ((iomux_v3_cfg_t)0x3f << MUX_MODE_SHIFT)
+#define MUX_PAD_CTRL_SHIFT     42
+#define MUX_PAD_CTRL_MASK      ((iomux_v3_cfg_t)0x3ffff << MUX_PAD_CTRL_SHIFT)
+#define MUX_SEL_INPUT_SHIFT    60
+#define MUX_SEL_INPUT_MASK     ((iomux_v3_cfg_t)0xf << MUX_SEL_INPUT_SHIFT)
+
+#define MUX_MODE_SION          ((iomux_v3_cfg_t)IOMUX_CONFIG_SION << \
+       MUX_MODE_SHIFT)
+#define MUX_PAD_CTRL(x)                ((iomux_v3_cfg_t)(x) << MUX_PAD_CTRL_SHIFT)
+
+#define IOMUX_PAD(pad_ctrl_ofs, mux_ctrl_ofs, mux_mode, sel_input_ofs, \
+               sel_input, pad_ctrl)                                    \
+       (((iomux_v3_cfg_t)(mux_ctrl_ofs) << MUX_CTRL_OFS_SHIFT)     |   \
+       ((iomux_v3_cfg_t)(mux_mode)      << MUX_MODE_SHIFT)         |   \
+       ((iomux_v3_cfg_t)(pad_ctrl_ofs)  << MUX_PAD_CTRL_OFS_SHIFT) |   \
+       ((iomux_v3_cfg_t)(pad_ctrl)      << MUX_PAD_CTRL_SHIFT)     |   \
+       ((iomux_v3_cfg_t)(sel_input_ofs) << MUX_SEL_INPUT_OFS_SHIFT)|   \
+       ((iomux_v3_cfg_t)(sel_input)     << MUX_SEL_INPUT_SHIFT))
+
+#define NEW_PAD_CTRL(cfg, pad) (((cfg) & ~MUX_PAD_CTRL_MASK) | \
+                                       MUX_PAD_CTRL(pad))
+
+#define __NA_                  0x000
+#define NO_MUX_I               0
+#define NO_PAD_I               0
+
+#define NO_PAD_CTRL            (1 << 17)
+
+#define IOMUX_CONFIG_LPSR       0x20
+#define MUX_MODE_LPSR           ((iomux_v3_cfg_t)IOMUX_CONFIG_LPSR << \
+                               MUX_MODE_SHIFT)
+#ifdef CONFIG_MX7
+
+#define IOMUX_LPSR_SEL_INPUT_OFS 0x70000
+
+#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)
+
+#define PAD_CTL_PUS_100K_DOWN  (0 << 14 | PAD_CTL_PUE)
+#define PAD_CTL_PUS_47K_UP     (1 << 14 | PAD_CTL_PUE)
+#define PAD_CTL_PUS_100K_UP    (2 << 14 | PAD_CTL_PUE)
+#define PAD_CTL_PUS_22K_UP     (3 << 14 | PAD_CTL_PUE)
+#define PAD_CTL_PUE            (1 << 13 | PAD_CTL_PKE)
+#define PAD_CTL_PKE            (1 << 12)
+
+#define PAD_CTL_ODE            (1 << 11)
+
+#if defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL)
+#define PAD_CTL_SPEED_LOW      (0 << 6)
+#else
+#define PAD_CTL_SPEED_LOW      (1 << 6)
+#endif
+#define PAD_CTL_SPEED_MED      (2 << 6)
+#define PAD_CTL_SPEED_HIGH     (3 << 6)
+
+#define PAD_CTL_DSE_DISABLE    (0 << 3)
+#define PAD_CTL_DSE_240ohm     (1 << 3)
+#define PAD_CTL_DSE_120ohm     (2 << 3)
+#define PAD_CTL_DSE_80ohm      (3 << 3)
+#define PAD_CTL_DSE_60ohm      (4 << 3)
+#define PAD_CTL_DSE_48ohm      (5 << 3)
+#define PAD_CTL_DSE_40ohm      (6 << 3)
+#define PAD_CTL_DSE_34ohm      (7 << 3)
+
+/* i.MX6SL/SLL */
+#define PAD_CTL_LVE            (1 << 1)
+#define PAD_CTL_LVE_BIT                (1 << 22)
+
+/* i.MX6SLL */
+#define PAD_CTL_IPD_BIT                (1 << 27)
+
+#elif defined(CONFIG_VF610)
+
+#define PAD_MUX_MODE_SHIFT     20
+
+#define PAD_CTL_INPUT_DIFFERENTIAL (1 << 16)
+
+#define PAD_CTL_SPEED_MED      (1 << 12)
+#define PAD_CTL_SPEED_HIGH     (3 << 12)
+
+#define PAD_CTL_SRE            (1 << 11)
+
+#define PAD_CTL_ODE            (1 << 10)
+
+#define PAD_CTL_DSE_150ohm     (1 << 6)
+#define PAD_CTL_DSE_75ohm      (2 << 6)
+#define PAD_CTL_DSE_50ohm      (3 << 6)
+#define PAD_CTL_DSE_37ohm      (4 << 6)
+#define PAD_CTL_DSE_30ohm      (5 << 6)
+#define PAD_CTL_DSE_25ohm      (6 << 6)
+#define PAD_CTL_DSE_20ohm      (7 << 6)
+
+#define PAD_CTL_PUS_47K_UP     (1 << 4 | PAD_CTL_PUE)
+#define PAD_CTL_PUS_100K_UP    (2 << 4 | PAD_CTL_PUE)
+#define PAD_CTL_PUS_22K_UP     (3 << 4 | PAD_CTL_PUE)
+#define PAD_CTL_PKE            (1 << 3)
+#define PAD_CTL_PUE            (1 << 2 | PAD_CTL_PKE)
+
+#define PAD_CTL_OBE_IBE_ENABLE (3 << 0)
+#define PAD_CTL_OBE_ENABLE     (1 << 1)
+#define PAD_CTL_IBE_ENABLE     (1 << 0)
+
+#else
+
+#define PAD_CTL_DVS            (1 << 13)
+#define PAD_CTL_INPUT_DDR      (1 << 9)
+#define PAD_CTL_HYS            (1 << 8)
+
+#define PAD_CTL_PKE            (1 << 7)
+#define PAD_CTL_PUE            (1 << 6 | PAD_CTL_PKE)
+#define PAD_CTL_PUS_100K_DOWN  (0 << 4 | PAD_CTL_PUE)
+#define PAD_CTL_PUS_47K_UP     (1 << 4 | PAD_CTL_PUE)
+#define PAD_CTL_PUS_100K_UP    (2 << 4 | PAD_CTL_PUE)
+#define PAD_CTL_PUS_22K_UP     (3 << 4 | PAD_CTL_PUE)
+
+#define PAD_CTL_ODE            (1 << 3)
+
+#define PAD_CTL_DSE_LOW                (0 << 1)
+#define PAD_CTL_DSE_MED                (1 << 1)
+#define PAD_CTL_DSE_HIGH       (2 << 1)
+#define PAD_CTL_DSE_MAX                (3 << 1)
+
+#endif
+
+#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
+#define GPIO_PORT_SHIFT                5
+#define GPIO_PORT_MASK         (0x7 << GPIO_PORT_SHIFT)
+#define GPIO_PORTA             (0 << GPIO_PORT_SHIFT)
+#define GPIO_PORTB             (1 << GPIO_PORT_SHIFT)
+#define GPIO_PORTC             (2 << GPIO_PORT_SHIFT)
+#define GPIO_PORTD             (3 << GPIO_PORT_SHIFT)
+#define GPIO_PORTE             (4 << GPIO_PORT_SHIFT)
+#define GPIO_PORTF             (5 << GPIO_PORT_SHIFT)
+
+void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad);
+void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
+                                    unsigned count);
+/*
+* Set bits for general purpose registers
+*/
+void imx_iomux_set_gpr_register(int group, int start_bit,
+                                        int num_bits, int value);
+#ifdef CONFIG_IOMUX_SHARE_CONF_REG
+void imx_iomux_gpio_set_direction(unsigned int gpio,
+                               unsigned int direction);
+void imx_iomux_gpio_get_function(unsigned int gpio,
+                               u32 *gpio_state);
+#endif
+
+/* macros for declaring and using pinmux array */
+#if defined(CONFIG_MX6QDL)
+#define IOMUX_PADS(x) (MX6Q_##x), (MX6DL_##x)
+#define SETUP_IOMUX_PAD(def)                                   \
+if (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) {                          \
+       imx_iomux_v3_setup_pad(MX6Q_##def);                     \
+} else {                                                       \
+       imx_iomux_v3_setup_pad(MX6DL_##def);                    \
+}
+#define SETUP_IOMUX_PADS(x)                                    \
+       imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x)/2)
+#elif defined(CONFIG_MX6Q) || defined(CONFIG_MX6D)
+#define IOMUX_PADS(x) MX6Q_##x
+#define SETUP_IOMUX_PAD(def)                                   \
+       imx_iomux_v3_setup_pad(MX6Q_##def);
+#define SETUP_IOMUX_PADS(x)                                    \
+       imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x))
+#elif defined(CONFIG_MX6UL)
+#define IOMUX_PADS(x) MX6_##x
+#define SETUP_IOMUX_PAD(def)                                   \
+       imx_iomux_v3_setup_pad(MX6_##def);
+#define SETUP_IOMUX_PADS(x)                                    \
+       imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x))
+#else
+#define IOMUX_PADS(x) MX6DL_##x
+#define SETUP_IOMUX_PAD(def)                                   \
+       imx_iomux_v3_setup_pad(MX6DL_##def);
+#define SETUP_IOMUX_PADS(x)                                    \
+       imx_iomux_v3_setup_multiple_pads(x, ARRAY_SIZE(x))
+#endif
+
+#endif /* __MACH_IOMUX_V3_H__*/
diff --git a/arch/arm/include/asm/mach-imx/mx5_video.h b/arch/arm/include/asm/mach-imx/mx5_video.h
new file mode 100644 (file)
index 0000000..ccaf010
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2012
+ * Anatolij Gustschin, DENX Software Engineering, <agust@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __MX5_VIDEO_H
+#define __MX5_VIDEO_H
+
+#ifdef CONFIG_VIDEO
+void lcd_enable(void);
+void setup_iomux_lcd(void);
+#else
+static inline void lcd_enable(void) { }
+static inline void setup_iomux_lcd(void) { }
+#endif
+
+#endif
diff --git a/arch/arm/include/asm/mach-imx/mxc_i2c.h b/arch/arm/include/asm/mach-imx/mxc_i2c.h
new file mode 100644 (file)
index 0000000..292bf0c
--- /dev/null
@@ -0,0 +1,101 @@
+/*
+ * Copyright (C) 2011 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __ASM_ARCH_MXC_MXC_I2C_H__
+#define __ASM_ARCH_MXC_MXC_I2C_H__
+#include <asm-generic/gpio.h>
+#include <asm/mach-imx/iomux-v3.h>
+
+struct i2c_pin_ctrl {
+       iomux_v3_cfg_t i2c_mode;
+       iomux_v3_cfg_t gpio_mode;
+       unsigned char gp;
+       unsigned char spare;
+};
+
+struct i2c_pads_info {
+       struct i2c_pin_ctrl scl;
+       struct i2c_pin_ctrl sda;
+};
+
+/*
+ * Information about i2c controller
+ * struct mxc_i2c_bus - information about the i2c[x] bus
+ * @index: i2c bus index
+ * @base: Address of I2C bus controller
+ * @driver_data: Flags for different platforms, such as I2C_QUIRK_FLAG.
+ * @speed: Speed of I2C bus
+ * @pads_info: pinctrl info for this i2c bus, will be used when pinctrl is ok.
+ * The following two is only to be compatible with non-DM part.
+ * @idle_bus_fn: function to force bus idle
+ * @idle_bus_data: parameter for idle_bus_fun
+ * For DM:
+ * bus: The device structure for i2c bus controller
+ * scl-gpio: specify the gpio related to SCL pin
+ * sda-gpio: specify the gpio related to SDA pin
+ */
+struct mxc_i2c_bus {
+       /*
+        * board file can use this index to locate which i2c_pads_info is for
+        * i2c_idle_bus. When pinmux is implement, this entry can be
+        * discarded. Here we do not use dev->seq, because we do not want to
+        * export device to board file.
+        */
+       int index;
+       ulong base;
+       ulong driver_data;
+       int speed;
+       struct i2c_pads_info *pads_info;
+#ifndef CONFIG_DM_I2C
+       int (*idle_bus_fn)(void *p);
+       void *idle_bus_data;
+#else
+       struct udevice *bus;
+       /* Use gpio to force bus idle when bus state is abnormal */
+       struct gpio_desc scl_gpio;
+       struct gpio_desc sda_gpio;
+#endif
+};
+
+#if defined(CONFIG_MX6QDL)
+#define I2C_PADS(name, scl_i2c, scl_gpio, scl_gp, sda_i2c, sda_gpio, sda_gp) \
+       struct i2c_pads_info mx6q_##name = {            \
+               .scl = {                                \
+                       .i2c_mode = MX6Q_##scl_i2c,     \
+                       .gpio_mode = MX6Q_##scl_gpio,   \
+                       .gp = scl_gp,                   \
+               },                                      \
+               .sda = {                                \
+                       .i2c_mode = MX6Q_##sda_i2c,     \
+                       .gpio_mode = MX6Q_##sda_gpio,   \
+                       .gp = sda_gp,                   \
+               }                                       \
+       };                                              \
+       struct i2c_pads_info mx6s_##name = {            \
+               .scl = {                                \
+                       .i2c_mode = MX6DL_##scl_i2c,    \
+                       .gpio_mode = MX6DL_##scl_gpio,  \
+                       .gp = scl_gp,                   \
+               },                                      \
+               .sda = {                                \
+                       .i2c_mode = MX6DL_##sda_i2c,    \
+                       .gpio_mode = MX6DL_##sda_gpio,  \
+                       .gp = sda_gp,                   \
+               }                                       \
+       };
+
+
+#define I2C_PADS_INFO(name)    \
+       (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D)) ? \
+                                       &mx6q_##name : &mx6s_##name
+#endif
+
+int setup_i2c(unsigned i2c_index, int speed, int slave_addr,
+             struct i2c_pads_info *p);
+void bus_i2c_init(int index, int speed, int slave_addr,
+               int (*idle_bus_fn)(void *p), void *p);
+int force_idle_bus(void *priv);
+int i2c_idle_bus(struct mxc_i2c_bus *i2c_bus);
+#endif
diff --git a/arch/arm/include/asm/mach-imx/rdc-sema.h b/arch/arm/include/asm/mach-imx/rdc-sema.h
new file mode 100644 (file)
index 0000000..2c61e56
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:  GPL-2.0+
+ */
+
+#ifndef __RDC_SEMA_H__
+#define __RDC_SEMA_H__
+
+/*
+ * rdc_peri_cfg_t and rdc_ma_cft_t use the same layout.
+ *
+ *   [ 23 22 | 21 20 | 19 18 | 17 16 ] | [ 15 - 8 ] | [ 7 - 0 ]
+ *      d3      d2      d1       d0    | master id  |  peri id
+ *   d[x] means domain[x], x can be [3 - 0].
+ */
+typedef u32 rdc_peri_cfg_t;
+typedef u32 rdc_ma_cfg_t;
+
+#define RDC_PERI_SHIFT         0
+#define RDC_PERI_MASK          0xFF
+
+#define RDC_DOMAIN_SHIFT_BASE  16
+#define RDC_DOMAIN_MASK                0xFF0000
+#define RDC_DOMAIN_SHIFT(x)    (RDC_DOMAIN_SHIFT_BASE + ((x << 1)))
+#define RDC_DOMAIN(x)          ((rdc_peri_cfg_t)(0x3 << RDC_DOMAIN_SHIFT(x)))
+
+#define RDC_MASTER_SHIFT       8
+#define RDC_MASTER_MASK                0xFF00
+#define RDC_MASTER_CFG(master_id, domain_id) (rdc_ma_cfg_t)((master_id << 8) | \
+                                       (domain_id << RDC_DOMAIN_SHIFT_BASE))
+
+/* The Following macro definitions are common to i.MX6SX and i.MX7D */
+#define SEMA_GATES_NUM         64
+
+#define RDC_MDA_DID_SHIFT      0
+#define RDC_MDA_DID_MASK       (0x3 << RDC_MDA_DID_SHIFT)
+#define RDC_MDA_LCK_SHIFT      31
+#define RDC_MDA_LCK_MASK       (0x1 << RDC_MDA_LCK_SHIFT)
+
+#define RDC_PDAP_DW_SHIFT(domain)      ((domain) << 1)
+#define RDC_PDAP_DR_SHIFT(domain)      (1 + RDC_PDAP_DW_SHIFT(domain))
+#define RDC_PDAP_DW_MASK(domain)       (1 << RDC_PDAP_DW_SHIFT(domain))
+#define RDC_PDAP_DR_MASK(domain)       (1 << RDC_PDAP_DR_SHIFT(domain))
+#define RDC_PDAP_DRW_MASK(domain)      (RDC_PDAP_DW_MASK(domain) | \
+                                        RDC_PDAP_DR_MASK(domain))
+
+#define RDC_PDAP_SREQ_SHIFT    30
+#define RDC_PDAP_SREQ_MASK     (0x1 << RDC_PDAP_SREQ_SHIFT)
+#define RDC_PDAP_LCK_SHIFT     31
+#define RDC_PDAP_LCK_MASK      (0x1 << RDC_PDAP_LCK_SHIFT)
+
+#define RDC_MRSA_SADR_SHIFT    7
+#define RDC_MRSA_SADR_MASK     (0x1ffffff << RDC_MRSA_SADR_SHIFT)
+
+#define RDC_MREA_EADR_SHIFT    7
+#define RDC_MREA_EADR_MASK     (0x1ffffff << RDC_MREA_EADR_SHIFT)
+
+#define RDC_MRC_DW_SHIFT(domain)       (domain)
+#define RDC_MRC_DR_SHIFT(domain)       (1 + RDC_MRC_DW_SHIFT(domain))
+#define RDC_MRC_DW_MASK(domain)                (1 << RDC_MRC_DW_SHIFT(domain))
+#define RDC_MRC_DR_MASK(domain)                (1 << RDC_MRC_DR_SHIFT(domain))
+#define RDC_MRC_DRW_MASK(domain)       (RDC_MRC_DW_MASK(domain) | \
+                                        RDC_MRC_DR_MASK(domain))
+#define RDC_MRC_ENA_SHIFT      30
+#define RDC_MRC_ENA_MASK       (0x1 << RDC_MRC_ENA_SHIFT)
+#define RDC_MRC_LCK_SHIFT      31
+#define RDC_MRC_LCK_MASK       (0x1 << RDC_MRC_LCK_SHIFT)
+
+#define RDC_MRVS_VDID_SHIFT    0
+#define RDC_MRVS_VDID_MASK     (0x3 << RDC_MRVS_VDID_SHIFT)
+#define RDC_MRVS_AD_SHIFT      4
+#define RDC_MRVS_AD_MASK       (0x1 << RDC_MRVS_AD_SHIFT)
+#define RDC_MRVS_VADDR_SHIFT   5
+#define RDC_MRVS_VADDR_MASK    (0x7ffffff << RDC_MRVS_VADDR_SHIFT)
+
+#define RDC_SEMA_GATE_GTFSM_SHIFT      0
+#define RDC_SEMA_GATE_GTFSM_MASK       (0xf << RDC_SEMA_GATE_GTFSM_SHIFT)
+#define RDC_SEMA_GATE_LDOM_SHIFT       5
+#define RDC_SEMA_GATE_LDOM_MASK                (0x3 << RDC_SEMA_GATE_LDOM_SHIFT)
+
+#define RDC_SEMA_RSTGT_RSTGDP_SHIFT    0
+#define RDC_SEMA_RSTGT_RSTGDP_MASK     (0xff << RDC_SEMA_RSTGT_RSTGDP_SHIFT)
+#define RDC_SEMA_RSTGT_RSTGSM_SHIFT    2
+#define RDC_SEMA_RSTGT_RSTGSM_MASK     (0x3 << RDC_SEMA_RSTGT_RSTGSM_SHIFT)
+#define RDC_SEMA_RSTGT_RSTGMS_SHIFT    4
+#define RDC_SEMA_RSTGT_RSTGMS_MASK     (0xf << RDC_SEMA_RSTGT_RSTGMS_SHIFT)
+#define RDC_SEMA_RSTGT_RSTGTN_SHIFT    8
+#define RDC_SEMA_RSTGT_RSTGTN_MASK     (0xff << RDC_SEMA_RSTGT_RSTGTN_SHIFT)
+
+int imx_rdc_check_permission(int per_id, int dom_id);
+int imx_rdc_sema_lock(int per_id);
+int imx_rdc_sema_unlock(int per_id);
+int imx_rdc_setup_peri(rdc_peri_cfg_t p);
+int imx_rdc_setup_peripherals(rdc_peri_cfg_t const *peripherals_list,
+                             unsigned count);
+int imx_rdc_setup_ma(rdc_ma_cfg_t p);
+int imx_rdc_setup_masters(rdc_ma_cfg_t const *masters_list, unsigned count);
+
+#endif /* __RDC_SEMA_H__*/
diff --git a/arch/arm/include/asm/mach-imx/regs-apbh.h b/arch/arm/include/asm/mach-imx/regs-apbh.h
new file mode 100644 (file)
index 0000000..4cc4aba
--- /dev/null
@@ -0,0 +1,589 @@
+/*
+ * Freescale i.MX28 APBH Register Definitions
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __REGS_APBH_H__
+#define __REGS_APBH_H__
+
+#include <asm/mach-imx/regs-common.h>
+
+#ifndef        __ASSEMBLY__
+
+#if defined(CONFIG_MX23)
+struct mxs_apbh_regs {
+       mxs_reg_32(hw_apbh_ctrl0)
+       mxs_reg_32(hw_apbh_ctrl1)
+       mxs_reg_32(hw_apbh_ctrl2)
+       mxs_reg_32(hw_apbh_channel_ctrl)
+
+       union {
+       struct {
+               mxs_reg_32(hw_apbh_ch_curcmdar)
+               mxs_reg_32(hw_apbh_ch_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch_cmd)
+               mxs_reg_32(hw_apbh_ch_bar)
+               mxs_reg_32(hw_apbh_ch_sema)
+               mxs_reg_32(hw_apbh_ch_debug1)
+               mxs_reg_32(hw_apbh_ch_debug2)
+       } ch[8];
+       struct {
+               mxs_reg_32(hw_apbh_ch0_curcmdar)
+               mxs_reg_32(hw_apbh_ch0_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch0_cmd)
+               mxs_reg_32(hw_apbh_ch0_bar)
+               mxs_reg_32(hw_apbh_ch0_sema)
+               mxs_reg_32(hw_apbh_ch0_debug1)
+               mxs_reg_32(hw_apbh_ch0_debug2)
+               mxs_reg_32(hw_apbh_ch1_curcmdar)
+               mxs_reg_32(hw_apbh_ch1_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch1_cmd)
+               mxs_reg_32(hw_apbh_ch1_bar)
+               mxs_reg_32(hw_apbh_ch1_sema)
+               mxs_reg_32(hw_apbh_ch1_debug1)
+               mxs_reg_32(hw_apbh_ch1_debug2)
+               mxs_reg_32(hw_apbh_ch2_curcmdar)
+               mxs_reg_32(hw_apbh_ch2_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch2_cmd)
+               mxs_reg_32(hw_apbh_ch2_bar)
+               mxs_reg_32(hw_apbh_ch2_sema)
+               mxs_reg_32(hw_apbh_ch2_debug1)
+               mxs_reg_32(hw_apbh_ch2_debug2)
+               mxs_reg_32(hw_apbh_ch3_curcmdar)
+               mxs_reg_32(hw_apbh_ch3_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch3_cmd)
+               mxs_reg_32(hw_apbh_ch3_bar)
+               mxs_reg_32(hw_apbh_ch3_sema)
+               mxs_reg_32(hw_apbh_ch3_debug1)
+               mxs_reg_32(hw_apbh_ch3_debug2)
+               mxs_reg_32(hw_apbh_ch4_curcmdar)
+               mxs_reg_32(hw_apbh_ch4_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch4_cmd)
+               mxs_reg_32(hw_apbh_ch4_bar)
+               mxs_reg_32(hw_apbh_ch4_sema)
+               mxs_reg_32(hw_apbh_ch4_debug1)
+               mxs_reg_32(hw_apbh_ch4_debug2)
+               mxs_reg_32(hw_apbh_ch5_curcmdar)
+               mxs_reg_32(hw_apbh_ch5_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch5_cmd)
+               mxs_reg_32(hw_apbh_ch5_bar)
+               mxs_reg_32(hw_apbh_ch5_sema)
+               mxs_reg_32(hw_apbh_ch5_debug1)
+               mxs_reg_32(hw_apbh_ch5_debug2)
+               mxs_reg_32(hw_apbh_ch6_curcmdar)
+               mxs_reg_32(hw_apbh_ch6_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch6_cmd)
+               mxs_reg_32(hw_apbh_ch6_bar)
+               mxs_reg_32(hw_apbh_ch6_sema)
+               mxs_reg_32(hw_apbh_ch6_debug1)
+               mxs_reg_32(hw_apbh_ch6_debug2)
+               mxs_reg_32(hw_apbh_ch7_curcmdar)
+               mxs_reg_32(hw_apbh_ch7_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch7_cmd)
+               mxs_reg_32(hw_apbh_ch7_bar)
+               mxs_reg_32(hw_apbh_ch7_sema)
+               mxs_reg_32(hw_apbh_ch7_debug1)
+               mxs_reg_32(hw_apbh_ch7_debug2)
+       };
+       };
+       mxs_reg_32(hw_apbh_version)
+};
+
+#elif (defined(CONFIG_MX28) || defined(CONFIG_MX6) || defined(CONFIG_MX7))
+struct mxs_apbh_regs {
+       mxs_reg_32(hw_apbh_ctrl0)
+       mxs_reg_32(hw_apbh_ctrl1)
+       mxs_reg_32(hw_apbh_ctrl2)
+       mxs_reg_32(hw_apbh_channel_ctrl)
+       mxs_reg_32(hw_apbh_devsel)
+       mxs_reg_32(hw_apbh_dma_burst_size)
+       mxs_reg_32(hw_apbh_debug)
+
+       uint32_t        reserved[36];
+
+       union {
+       struct {
+               mxs_reg_32(hw_apbh_ch_curcmdar)
+               mxs_reg_32(hw_apbh_ch_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch_cmd)
+               mxs_reg_32(hw_apbh_ch_bar)
+               mxs_reg_32(hw_apbh_ch_sema)
+               mxs_reg_32(hw_apbh_ch_debug1)
+               mxs_reg_32(hw_apbh_ch_debug2)
+       } ch[16];
+       struct {
+               mxs_reg_32(hw_apbh_ch0_curcmdar)
+               mxs_reg_32(hw_apbh_ch0_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch0_cmd)
+               mxs_reg_32(hw_apbh_ch0_bar)
+               mxs_reg_32(hw_apbh_ch0_sema)
+               mxs_reg_32(hw_apbh_ch0_debug1)
+               mxs_reg_32(hw_apbh_ch0_debug2)
+               mxs_reg_32(hw_apbh_ch1_curcmdar)
+               mxs_reg_32(hw_apbh_ch1_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch1_cmd)
+               mxs_reg_32(hw_apbh_ch1_bar)
+               mxs_reg_32(hw_apbh_ch1_sema)
+               mxs_reg_32(hw_apbh_ch1_debug1)
+               mxs_reg_32(hw_apbh_ch1_debug2)
+               mxs_reg_32(hw_apbh_ch2_curcmdar)
+               mxs_reg_32(hw_apbh_ch2_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch2_cmd)
+               mxs_reg_32(hw_apbh_ch2_bar)
+               mxs_reg_32(hw_apbh_ch2_sema)
+               mxs_reg_32(hw_apbh_ch2_debug1)
+               mxs_reg_32(hw_apbh_ch2_debug2)
+               mxs_reg_32(hw_apbh_ch3_curcmdar)
+               mxs_reg_32(hw_apbh_ch3_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch3_cmd)
+               mxs_reg_32(hw_apbh_ch3_bar)
+               mxs_reg_32(hw_apbh_ch3_sema)
+               mxs_reg_32(hw_apbh_ch3_debug1)
+               mxs_reg_32(hw_apbh_ch3_debug2)
+               mxs_reg_32(hw_apbh_ch4_curcmdar)
+               mxs_reg_32(hw_apbh_ch4_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch4_cmd)
+               mxs_reg_32(hw_apbh_ch4_bar)
+               mxs_reg_32(hw_apbh_ch4_sema)
+               mxs_reg_32(hw_apbh_ch4_debug1)
+               mxs_reg_32(hw_apbh_ch4_debug2)
+               mxs_reg_32(hw_apbh_ch5_curcmdar)
+               mxs_reg_32(hw_apbh_ch5_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch5_cmd)
+               mxs_reg_32(hw_apbh_ch5_bar)
+               mxs_reg_32(hw_apbh_ch5_sema)
+               mxs_reg_32(hw_apbh_ch5_debug1)
+               mxs_reg_32(hw_apbh_ch5_debug2)
+               mxs_reg_32(hw_apbh_ch6_curcmdar)
+               mxs_reg_32(hw_apbh_ch6_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch6_cmd)
+               mxs_reg_32(hw_apbh_ch6_bar)
+               mxs_reg_32(hw_apbh_ch6_sema)
+               mxs_reg_32(hw_apbh_ch6_debug1)
+               mxs_reg_32(hw_apbh_ch6_debug2)
+               mxs_reg_32(hw_apbh_ch7_curcmdar)
+               mxs_reg_32(hw_apbh_ch7_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch7_cmd)
+               mxs_reg_32(hw_apbh_ch7_bar)
+               mxs_reg_32(hw_apbh_ch7_sema)
+               mxs_reg_32(hw_apbh_ch7_debug1)
+               mxs_reg_32(hw_apbh_ch7_debug2)
+               mxs_reg_32(hw_apbh_ch8_curcmdar)
+               mxs_reg_32(hw_apbh_ch8_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch8_cmd)
+               mxs_reg_32(hw_apbh_ch8_bar)
+               mxs_reg_32(hw_apbh_ch8_sema)
+               mxs_reg_32(hw_apbh_ch8_debug1)
+               mxs_reg_32(hw_apbh_ch8_debug2)
+               mxs_reg_32(hw_apbh_ch9_curcmdar)
+               mxs_reg_32(hw_apbh_ch9_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch9_cmd)
+               mxs_reg_32(hw_apbh_ch9_bar)
+               mxs_reg_32(hw_apbh_ch9_sema)
+               mxs_reg_32(hw_apbh_ch9_debug1)
+               mxs_reg_32(hw_apbh_ch9_debug2)
+               mxs_reg_32(hw_apbh_ch10_curcmdar)
+               mxs_reg_32(hw_apbh_ch10_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch10_cmd)
+               mxs_reg_32(hw_apbh_ch10_bar)
+               mxs_reg_32(hw_apbh_ch10_sema)
+               mxs_reg_32(hw_apbh_ch10_debug1)
+               mxs_reg_32(hw_apbh_ch10_debug2)
+               mxs_reg_32(hw_apbh_ch11_curcmdar)
+               mxs_reg_32(hw_apbh_ch11_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch11_cmd)
+               mxs_reg_32(hw_apbh_ch11_bar)
+               mxs_reg_32(hw_apbh_ch11_sema)
+               mxs_reg_32(hw_apbh_ch11_debug1)
+               mxs_reg_32(hw_apbh_ch11_debug2)
+               mxs_reg_32(hw_apbh_ch12_curcmdar)
+               mxs_reg_32(hw_apbh_ch12_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch12_cmd)
+               mxs_reg_32(hw_apbh_ch12_bar)
+               mxs_reg_32(hw_apbh_ch12_sema)
+               mxs_reg_32(hw_apbh_ch12_debug1)
+               mxs_reg_32(hw_apbh_ch12_debug2)
+               mxs_reg_32(hw_apbh_ch13_curcmdar)
+               mxs_reg_32(hw_apbh_ch13_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch13_cmd)
+               mxs_reg_32(hw_apbh_ch13_bar)
+               mxs_reg_32(hw_apbh_ch13_sema)
+               mxs_reg_32(hw_apbh_ch13_debug1)
+               mxs_reg_32(hw_apbh_ch13_debug2)
+               mxs_reg_32(hw_apbh_ch14_curcmdar)
+               mxs_reg_32(hw_apbh_ch14_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch14_cmd)
+               mxs_reg_32(hw_apbh_ch14_bar)
+               mxs_reg_32(hw_apbh_ch14_sema)
+               mxs_reg_32(hw_apbh_ch14_debug1)
+               mxs_reg_32(hw_apbh_ch14_debug2)
+               mxs_reg_32(hw_apbh_ch15_curcmdar)
+               mxs_reg_32(hw_apbh_ch15_nxtcmdar)
+               mxs_reg_32(hw_apbh_ch15_cmd)
+               mxs_reg_32(hw_apbh_ch15_bar)
+               mxs_reg_32(hw_apbh_ch15_sema)
+               mxs_reg_32(hw_apbh_ch15_debug1)
+               mxs_reg_32(hw_apbh_ch15_debug2)
+       };
+       };
+       mxs_reg_32(hw_apbh_version)
+};
+#endif
+
+#endif
+
+#define        APBH_CTRL0_SFTRST                               (1 << 31)
+#define        APBH_CTRL0_CLKGATE                              (1 << 30)
+#define        APBH_CTRL0_AHB_BURST8_EN                        (1 << 29)
+#define        APBH_CTRL0_APB_BURST_EN                         (1 << 28)
+#if defined(CONFIG_MX23)
+#define        APBH_CTRL0_RSVD0_MASK                           (0xf << 24)
+#define        APBH_CTRL0_RSVD0_OFFSET                         24
+#define        APBH_CTRL0_RESET_CHANNEL_MASK                   (0xff << 16)
+#define        APBH_CTRL0_RESET_CHANNEL_OFFSET                 16
+#define        APBH_CTRL0_CLKGATE_CHANNEL_MASK                 (0xff << 8)
+#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               8
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP0                 0x02
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP1                 0x04
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x10
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x20
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x40
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x80
+#elif defined(CONFIG_MX28)
+#define        APBH_CTRL0_RSVD0_MASK                           (0xfff << 16)
+#define        APBH_CTRL0_RSVD0_OFFSET                         16
+#define        APBH_CTRL0_CLKGATE_CHANNEL_MASK                 0xffff
+#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               0
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP0                 0x0001
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP1                 0x0002
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP2                 0x0004
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP3                 0x0008
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x0010
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x0020
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x0040
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x0080
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND4                0x0100
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND5                0x0200
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND6                0x0400
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND7                0x0800
+#define        APBH_CTRL0_CLKGATE_CHANNEL_HSADC                0x1000
+#define        APBH_CTRL0_CLKGATE_CHANNEL_LCDIF                0x2000
+#elif (defined(CONFIG_MX6) || defined(CONFIG_MX7))
+#define        APBH_CTRL0_CLKGATE_CHANNEL_OFFSET               0
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND0                0x0001
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND1                0x0002
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND2                0x0004
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND3                0x0008
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND4                0x0010
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND5                0x0020
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND6                0x0040
+#define        APBH_CTRL0_CLKGATE_CHANNEL_NAND7                0x0080
+#define        APBH_CTRL0_CLKGATE_CHANNEL_SSP                  0x0100
+#endif
+
+#define        APBH_CTRL1_CH15_CMDCMPLT_IRQ_EN                 (1 << 31)
+#define        APBH_CTRL1_CH14_CMDCMPLT_IRQ_EN                 (1 << 30)
+#define        APBH_CTRL1_CH13_CMDCMPLT_IRQ_EN                 (1 << 29)
+#define        APBH_CTRL1_CH12_CMDCMPLT_IRQ_EN                 (1 << 28)
+#define        APBH_CTRL1_CH11_CMDCMPLT_IRQ_EN                 (1 << 27)
+#define        APBH_CTRL1_CH10_CMDCMPLT_IRQ_EN                 (1 << 26)
+#define        APBH_CTRL1_CH9_CMDCMPLT_IRQ_EN                  (1 << 25)
+#define        APBH_CTRL1_CH8_CMDCMPLT_IRQ_EN                  (1 << 24)
+#define        APBH_CTRL1_CH7_CMDCMPLT_IRQ_EN                  (1 << 23)
+#define        APBH_CTRL1_CH6_CMDCMPLT_IRQ_EN                  (1 << 22)
+#define        APBH_CTRL1_CH5_CMDCMPLT_IRQ_EN                  (1 << 21)
+#define        APBH_CTRL1_CH4_CMDCMPLT_IRQ_EN                  (1 << 20)
+#define        APBH_CTRL1_CH3_CMDCMPLT_IRQ_EN                  (1 << 19)
+#define        APBH_CTRL1_CH2_CMDCMPLT_IRQ_EN                  (1 << 18)
+#define        APBH_CTRL1_CH1_CMDCMPLT_IRQ_EN                  (1 << 17)
+#define        APBH_CTRL1_CH0_CMDCMPLT_IRQ_EN                  (1 << 16)
+#define        APBH_CTRL1_CH_CMDCMPLT_IRQ_EN_OFFSET            16
+#define        APBH_CTRL1_CH_CMDCMPLT_IRQ_EN_MASK              (0xffff << 16)
+#define        APBH_CTRL1_CH15_CMDCMPLT_IRQ                    (1 << 15)
+#define        APBH_CTRL1_CH14_CMDCMPLT_IRQ                    (1 << 14)
+#define        APBH_CTRL1_CH13_CMDCMPLT_IRQ                    (1 << 13)
+#define        APBH_CTRL1_CH12_CMDCMPLT_IRQ                    (1 << 12)
+#define        APBH_CTRL1_CH11_CMDCMPLT_IRQ                    (1 << 11)
+#define        APBH_CTRL1_CH10_CMDCMPLT_IRQ                    (1 << 10)
+#define        APBH_CTRL1_CH9_CMDCMPLT_IRQ                     (1 << 9)
+#define        APBH_CTRL1_CH8_CMDCMPLT_IRQ                     (1 << 8)
+#define        APBH_CTRL1_CH7_CMDCMPLT_IRQ                     (1 << 7)
+#define        APBH_CTRL1_CH6_CMDCMPLT_IRQ                     (1 << 6)
+#define        APBH_CTRL1_CH5_CMDCMPLT_IRQ                     (1 << 5)
+#define        APBH_CTRL1_CH4_CMDCMPLT_IRQ                     (1 << 4)
+#define        APBH_CTRL1_CH3_CMDCMPLT_IRQ                     (1 << 3)
+#define        APBH_CTRL1_CH2_CMDCMPLT_IRQ                     (1 << 2)
+#define        APBH_CTRL1_CH1_CMDCMPLT_IRQ                     (1 << 1)
+#define        APBH_CTRL1_CH0_CMDCMPLT_IRQ                     (1 << 0)
+
+#define        APBH_CTRL2_CH15_ERROR_STATUS                    (1 << 31)
+#define        APBH_CTRL2_CH14_ERROR_STATUS                    (1 << 30)
+#define        APBH_CTRL2_CH13_ERROR_STATUS                    (1 << 29)
+#define        APBH_CTRL2_CH12_ERROR_STATUS                    (1 << 28)
+#define        APBH_CTRL2_CH11_ERROR_STATUS                    (1 << 27)
+#define        APBH_CTRL2_CH10_ERROR_STATUS                    (1 << 26)
+#define        APBH_CTRL2_CH9_ERROR_STATUS                     (1 << 25)
+#define        APBH_CTRL2_CH8_ERROR_STATUS                     (1 << 24)
+#define        APBH_CTRL2_CH7_ERROR_STATUS                     (1 << 23)
+#define        APBH_CTRL2_CH6_ERROR_STATUS                     (1 << 22)
+#define        APBH_CTRL2_CH5_ERROR_STATUS                     (1 << 21)
+#define        APBH_CTRL2_CH4_ERROR_STATUS                     (1 << 20)
+#define        APBH_CTRL2_CH3_ERROR_STATUS                     (1 << 19)
+#define        APBH_CTRL2_CH2_ERROR_STATUS                     (1 << 18)
+#define        APBH_CTRL2_CH1_ERROR_STATUS                     (1 << 17)
+#define        APBH_CTRL2_CH0_ERROR_STATUS                     (1 << 16)
+#define        APBH_CTRL2_CH15_ERROR_IRQ                       (1 << 15)
+#define        APBH_CTRL2_CH14_ERROR_IRQ                       (1 << 14)
+#define        APBH_CTRL2_CH13_ERROR_IRQ                       (1 << 13)
+#define        APBH_CTRL2_CH12_ERROR_IRQ                       (1 << 12)
+#define        APBH_CTRL2_CH11_ERROR_IRQ                       (1 << 11)
+#define        APBH_CTRL2_CH10_ERROR_IRQ                       (1 << 10)
+#define        APBH_CTRL2_CH9_ERROR_IRQ                        (1 << 9)
+#define        APBH_CTRL2_CH8_ERROR_IRQ                        (1 << 8)
+#define        APBH_CTRL2_CH7_ERROR_IRQ                        (1 << 7)
+#define        APBH_CTRL2_CH6_ERROR_IRQ                        (1 << 6)
+#define        APBH_CTRL2_CH5_ERROR_IRQ                        (1 << 5)
+#define        APBH_CTRL2_CH4_ERROR_IRQ                        (1 << 4)
+#define        APBH_CTRL2_CH3_ERROR_IRQ                        (1 << 3)
+#define        APBH_CTRL2_CH2_ERROR_IRQ                        (1 << 2)
+#define        APBH_CTRL2_CH1_ERROR_IRQ                        (1 << 1)
+#define        APBH_CTRL2_CH0_ERROR_IRQ                        (1 << 0)
+
+#if defined(CONFIG_MX28)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_MASK            (0xffff << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_OFFSET          16
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP0            (0x0001 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP1            (0x0002 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP2            (0x0004 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_SSP3            (0x0008 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND0           (0x0010 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND1           (0x0020 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND2           (0x0040 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND3           (0x0080 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND4           (0x0100 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND5           (0x0200 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND6           (0x0400 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_NAND7           (0x0800 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_HSADC           (0x1000 << 16)
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_LCDIF           (0x2000 << 16)
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_MASK           0xffff
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_OFFSET         0
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP0           0x0001
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP1           0x0002
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP2           0x0004
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_SSP3           0x0008
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND0          0x0010
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND1          0x0020
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND2          0x0040
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND3          0x0080
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND4          0x0100
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND5          0x0200
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND6          0x0400
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_NAND7          0x0800
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_HSADC          0x1000
+#define        APBH_CHANNEL_CTRL_FREEZE_CHANNEL_LCDIF          0x2000
+#endif
+
+#if (defined(CONFIG_MX6) || defined(CONFIG_MX7))
+#define        APBH_CHANNEL_CTRL_RESET_CHANNEL_OFFSET          16
+#endif
+
+#if defined(CONFIG_MX23)
+#define        APBH_DEVSEL_CH7_MASK                            (0xf << 28)
+#define        APBH_DEVSEL_CH7_OFFSET                          28
+#define        APBH_DEVSEL_CH6_MASK                            (0xf << 24)
+#define        APBH_DEVSEL_CH6_OFFSET                          24
+#define        APBH_DEVSEL_CH5_MASK                            (0xf << 20)
+#define        APBH_DEVSEL_CH5_OFFSET                          20
+#define        APBH_DEVSEL_CH4_MASK                            (0xf << 16)
+#define        APBH_DEVSEL_CH4_OFFSET                          16
+#define        APBH_DEVSEL_CH3_MASK                            (0xf << 12)
+#define        APBH_DEVSEL_CH3_OFFSET                          12
+#define        APBH_DEVSEL_CH2_MASK                            (0xf << 8)
+#define        APBH_DEVSEL_CH2_OFFSET                          8
+#define        APBH_DEVSEL_CH1_MASK                            (0xf << 4)
+#define        APBH_DEVSEL_CH1_OFFSET                          4
+#define        APBH_DEVSEL_CH0_MASK                            (0xf << 0)
+#define        APBH_DEVSEL_CH0_OFFSET                          0
+#elif defined(CONFIG_MX28)
+#define        APBH_DEVSEL_CH15_MASK                           (0x3 << 30)
+#define        APBH_DEVSEL_CH15_OFFSET                         30
+#define        APBH_DEVSEL_CH14_MASK                           (0x3 << 28)
+#define        APBH_DEVSEL_CH14_OFFSET                         28
+#define        APBH_DEVSEL_CH13_MASK                           (0x3 << 26)
+#define        APBH_DEVSEL_CH13_OFFSET                         26
+#define        APBH_DEVSEL_CH12_MASK                           (0x3 << 24)
+#define        APBH_DEVSEL_CH12_OFFSET                         24
+#define        APBH_DEVSEL_CH11_MASK                           (0x3 << 22)
+#define        APBH_DEVSEL_CH11_OFFSET                         22
+#define        APBH_DEVSEL_CH10_MASK                           (0x3 << 20)
+#define        APBH_DEVSEL_CH10_OFFSET                         20
+#define        APBH_DEVSEL_CH9_MASK                            (0x3 << 18)
+#define        APBH_DEVSEL_CH9_OFFSET                          18
+#define        APBH_DEVSEL_CH8_MASK                            (0x3 << 16)
+#define        APBH_DEVSEL_CH8_OFFSET                          16
+#define        APBH_DEVSEL_CH7_MASK                            (0x3 << 14)
+#define        APBH_DEVSEL_CH7_OFFSET                          14
+#define        APBH_DEVSEL_CH6_MASK                            (0x3 << 12)
+#define        APBH_DEVSEL_CH6_OFFSET                          12
+#define        APBH_DEVSEL_CH5_MASK                            (0x3 << 10)
+#define        APBH_DEVSEL_CH5_OFFSET                          10
+#define        APBH_DEVSEL_CH4_MASK                            (0x3 << 8)
+#define        APBH_DEVSEL_CH4_OFFSET                          8
+#define        APBH_DEVSEL_CH3_MASK                            (0x3 << 6)
+#define        APBH_DEVSEL_CH3_OFFSET                          6
+#define        APBH_DEVSEL_CH2_MASK                            (0x3 << 4)
+#define        APBH_DEVSEL_CH2_OFFSET                          4
+#define        APBH_DEVSEL_CH1_MASK                            (0x3 << 2)
+#define        APBH_DEVSEL_CH1_OFFSET                          2
+#define        APBH_DEVSEL_CH0_MASK                            (0x3 << 0)
+#define        APBH_DEVSEL_CH0_OFFSET                          0
+#endif
+
+#if defined(CONFIG_MX28)
+#define        APBH_DMA_BURST_SIZE_CH15_MASK                   (0x3 << 30)
+#define        APBH_DMA_BURST_SIZE_CH15_OFFSET                 30
+#define        APBH_DMA_BURST_SIZE_CH14_MASK                   (0x3 << 28)
+#define        APBH_DMA_BURST_SIZE_CH14_OFFSET                 28
+#define        APBH_DMA_BURST_SIZE_CH13_MASK                   (0x3 << 26)
+#define        APBH_DMA_BURST_SIZE_CH13_OFFSET                 26
+#define        APBH_DMA_BURST_SIZE_CH12_MASK                   (0x3 << 24)
+#define        APBH_DMA_BURST_SIZE_CH12_OFFSET                 24
+#define        APBH_DMA_BURST_SIZE_CH11_MASK                   (0x3 << 22)
+#define        APBH_DMA_BURST_SIZE_CH11_OFFSET                 22
+#define        APBH_DMA_BURST_SIZE_CH10_MASK                   (0x3 << 20)
+#define        APBH_DMA_BURST_SIZE_CH10_OFFSET                 20
+#define        APBH_DMA_BURST_SIZE_CH9_MASK                    (0x3 << 18)
+#define        APBH_DMA_BURST_SIZE_CH9_OFFSET                  18
+#define        APBH_DMA_BURST_SIZE_CH8_MASK                    (0x3 << 16)
+#define        APBH_DMA_BURST_SIZE_CH8_OFFSET                  16
+#define        APBH_DMA_BURST_SIZE_CH8_BURST0                  (0x0 << 16)
+#define        APBH_DMA_BURST_SIZE_CH8_BURST4                  (0x1 << 16)
+#define        APBH_DMA_BURST_SIZE_CH8_BURST8                  (0x2 << 16)
+#define        APBH_DMA_BURST_SIZE_CH7_MASK                    (0x3 << 14)
+#define        APBH_DMA_BURST_SIZE_CH7_OFFSET                  14
+#define        APBH_DMA_BURST_SIZE_CH6_MASK                    (0x3 << 12)
+#define        APBH_DMA_BURST_SIZE_CH6_OFFSET                  12
+#define        APBH_DMA_BURST_SIZE_CH5_MASK                    (0x3 << 10)
+#define        APBH_DMA_BURST_SIZE_CH5_OFFSET                  10
+#define        APBH_DMA_BURST_SIZE_CH4_MASK                    (0x3 << 8)
+#define        APBH_DMA_BURST_SIZE_CH4_OFFSET                  8
+#define        APBH_DMA_BURST_SIZE_CH3_MASK                    (0x3 << 6)
+#define        APBH_DMA_BURST_SIZE_CH3_OFFSET                  6
+#define        APBH_DMA_BURST_SIZE_CH3_BURST0                  (0x0 << 6)
+#define        APBH_DMA_BURST_SIZE_CH3_BURST4                  (0x1 << 6)
+#define        APBH_DMA_BURST_SIZE_CH3_BURST8                  (0x2 << 6)
+
+#define        APBH_DMA_BURST_SIZE_CH2_MASK                    (0x3 << 4)
+#define        APBH_DMA_BURST_SIZE_CH2_OFFSET                  4
+#define        APBH_DMA_BURST_SIZE_CH2_BURST0                  (0x0 << 4)
+#define        APBH_DMA_BURST_SIZE_CH2_BURST4                  (0x1 << 4)
+#define        APBH_DMA_BURST_SIZE_CH2_BURST8                  (0x2 << 4)
+#define        APBH_DMA_BURST_SIZE_CH1_MASK                    (0x3 << 2)
+#define        APBH_DMA_BURST_SIZE_CH1_OFFSET                  2
+#define        APBH_DMA_BURST_SIZE_CH1_BURST0                  (0x0 << 2)
+#define        APBH_DMA_BURST_SIZE_CH1_BURST4                  (0x1 << 2)
+#define        APBH_DMA_BURST_SIZE_CH1_BURST8                  (0x2 << 2)
+
+#define        APBH_DMA_BURST_SIZE_CH0_MASK                    0x3
+#define        APBH_DMA_BURST_SIZE_CH0_OFFSET                  0
+#define        APBH_DMA_BURST_SIZE_CH0_BURST0                  0x0
+#define        APBH_DMA_BURST_SIZE_CH0_BURST4                  0x1
+#define        APBH_DMA_BURST_SIZE_CH0_BURST8                  0x2
+
+#define        APBH_DEBUG_GPMI_ONE_FIFO                        (1 << 0)
+#endif
+
+#define        APBH_CHn_CURCMDAR_CMD_ADDR_MASK                 0xffffffff
+#define        APBH_CHn_CURCMDAR_CMD_ADDR_OFFSET               0
+
+#define        APBH_CHn_NXTCMDAR_CMD_ADDR_MASK                 0xffffffff
+#define        APBH_CHn_NXTCMDAR_CMD_ADDR_OFFSET               0
+
+#define        APBH_CHn_CMD_XFER_COUNT_MASK                    (0xffff << 16)
+#define        APBH_CHn_CMD_XFER_COUNT_OFFSET                  16
+#define        APBH_CHn_CMD_CMDWORDS_MASK                      (0xf << 12)
+#define        APBH_CHn_CMD_CMDWORDS_OFFSET                    12
+#define        APBH_CHn_CMD_HALTONTERMINATE                    (1 << 8)
+#define        APBH_CHn_CMD_WAIT4ENDCMD                        (1 << 7)
+#define        APBH_CHn_CMD_SEMAPHORE                          (1 << 6)
+#define        APBH_CHn_CMD_NANDWAIT4READY                     (1 << 5)
+#define        APBH_CHn_CMD_NANDLOCK                           (1 << 4)
+#define        APBH_CHn_CMD_IRQONCMPLT                         (1 << 3)
+#define        APBH_CHn_CMD_CHAIN                              (1 << 2)
+#define        APBH_CHn_CMD_COMMAND_MASK                       0x3
+#define        APBH_CHn_CMD_COMMAND_OFFSET                     0
+#define        APBH_CHn_CMD_COMMAND_NO_DMA_XFER                0x0
+#define        APBH_CHn_CMD_COMMAND_DMA_WRITE                  0x1
+#define        APBH_CHn_CMD_COMMAND_DMA_READ                   0x2
+#define        APBH_CHn_CMD_COMMAND_DMA_SENSE                  0x3
+
+#define        APBH_CHn_BAR_ADDRESS_MASK                       0xffffffff
+#define        APBH_CHn_BAR_ADDRESS_OFFSET                     0
+
+#define        APBH_CHn_SEMA_RSVD2_MASK                        (0xff << 24)
+#define        APBH_CHn_SEMA_RSVD2_OFFSET                      24
+#define        APBH_CHn_SEMA_PHORE_MASK                        (0xff << 16)
+#define        APBH_CHn_SEMA_PHORE_OFFSET                      16
+#define        APBH_CHn_SEMA_RSVD1_MASK                        (0xff << 8)
+#define        APBH_CHn_SEMA_RSVD1_OFFSET                      8
+#define        APBH_CHn_SEMA_INCREMENT_SEMA_MASK               (0xff << 0)
+#define        APBH_CHn_SEMA_INCREMENT_SEMA_OFFSET             0
+
+#define        APBH_CHn_DEBUG1_REQ                             (1 << 31)
+#define        APBH_CHn_DEBUG1_BURST                           (1 << 30)
+#define        APBH_CHn_DEBUG1_KICK                            (1 << 29)
+#define        APBH_CHn_DEBUG1_END                             (1 << 28)
+#define        APBH_CHn_DEBUG1_SENSE                           (1 << 27)
+#define        APBH_CHn_DEBUG1_READY                           (1 << 26)
+#define        APBH_CHn_DEBUG1_LOCK                            (1 << 25)
+#define        APBH_CHn_DEBUG1_NEXTCMDADDRVALID                (1 << 24)
+#define        APBH_CHn_DEBUG1_RD_FIFO_EMPTY                   (1 << 23)
+#define        APBH_CHn_DEBUG1_RD_FIFO_FULL                    (1 << 22)
+#define        APBH_CHn_DEBUG1_WR_FIFO_EMPTY                   (1 << 21)
+#define        APBH_CHn_DEBUG1_WR_FIFO_FULL                    (1 << 20)
+#define        APBH_CHn_DEBUG1_RSVD1_MASK                      (0x7fff << 5)
+#define        APBH_CHn_DEBUG1_RSVD1_OFFSET                    5
+#define        APBH_CHn_DEBUG1_STATEMACHINE_MASK               0x1f
+#define        APBH_CHn_DEBUG1_STATEMACHINE_OFFSET             0
+#define        APBH_CHn_DEBUG1_STATEMACHINE_IDLE               0x00
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD1           0x01
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD3           0x02
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD2           0x03
+#define        APBH_CHn_DEBUG1_STATEMACHINE_XFER_DECODE        0x04
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_WAIT           0x05
+#define        APBH_CHn_DEBUG1_STATEMACHINE_REQ_CMD4           0x06
+#define        APBH_CHn_DEBUG1_STATEMACHINE_PIO_REQ            0x07
+#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_FLUSH         0x08
+#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_WAIT          0x09
+#define        APBH_CHn_DEBUG1_STATEMACHINE_WRITE              0x0c
+#define        APBH_CHn_DEBUG1_STATEMACHINE_READ_REQ           0x0d
+#define        APBH_CHn_DEBUG1_STATEMACHINE_CHECK_CHAIN        0x0e
+#define        APBH_CHn_DEBUG1_STATEMACHINE_XFER_COMPLETE      0x0f
+#define        APBH_CHn_DEBUG1_STATEMACHINE_TERMINATE          0x14
+#define        APBH_CHn_DEBUG1_STATEMACHINE_WAIT_END           0x15
+#define        APBH_CHn_DEBUG1_STATEMACHINE_WRITE_WAIT         0x1c
+#define        APBH_CHn_DEBUG1_STATEMACHINE_HALT_AFTER_TERM    0x1d
+#define        APBH_CHn_DEBUG1_STATEMACHINE_CHECK_WAIT         0x1e
+#define        APBH_CHn_DEBUG1_STATEMACHINE_WAIT_READY         0x1f
+
+#define        APBH_CHn_DEBUG2_APB_BYTES_MASK                  (0xffff << 16)
+#define        APBH_CHn_DEBUG2_APB_BYTES_OFFSET                16
+#define        APBH_CHn_DEBUG2_AHB_BYTES_MASK                  0xffff
+#define        APBH_CHn_DEBUG2_AHB_BYTES_OFFSET                0
+
+#define        APBH_VERSION_MAJOR_MASK                         (0xff << 24)
+#define        APBH_VERSION_MAJOR_OFFSET                       24
+#define        APBH_VERSION_MINOR_MASK                         (0xff << 16)
+#define        APBH_VERSION_MINOR_OFFSET                       16
+#define        APBH_VERSION_STEP_MASK                          0xffff
+#define        APBH_VERSION_STEP_OFFSET                        0
+
+#endif /* __REGS_APBH_H__ */
diff --git a/arch/arm/include/asm/mach-imx/regs-bch.h b/arch/arm/include/asm/mach-imx/regs-bch.h
new file mode 100644 (file)
index 0000000..c0f673c
--- /dev/null
@@ -0,0 +1,229 @@
+/*
+ * Freescale i.MX28 BCH Register Definitions
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __MX28_REGS_BCH_H__
+#define __MX28_REGS_BCH_H__
+
+#include <asm/mach-imx/regs-common.h>
+
+#ifndef        __ASSEMBLY__
+struct mxs_bch_regs {
+       mxs_reg_32(hw_bch_ctrl)
+       mxs_reg_32(hw_bch_status0)
+       mxs_reg_32(hw_bch_mode)
+       mxs_reg_32(hw_bch_encodeptr)
+       mxs_reg_32(hw_bch_dataptr)
+       mxs_reg_32(hw_bch_metaptr)
+
+       uint32_t        reserved[4];
+
+       mxs_reg_32(hw_bch_layoutselect)
+       mxs_reg_32(hw_bch_flash0layout0)
+       mxs_reg_32(hw_bch_flash0layout1)
+       mxs_reg_32(hw_bch_flash1layout0)
+       mxs_reg_32(hw_bch_flash1layout1)
+       mxs_reg_32(hw_bch_flash2layout0)
+       mxs_reg_32(hw_bch_flash2layout1)
+       mxs_reg_32(hw_bch_flash3layout0)
+       mxs_reg_32(hw_bch_flash3layout1)
+       mxs_reg_32(hw_bch_dbgkesread)
+       mxs_reg_32(hw_bch_dbgcsferead)
+       mxs_reg_32(hw_bch_dbgsyndegread)
+       mxs_reg_32(hw_bch_dbgahbmread)
+       mxs_reg_32(hw_bch_blockname)
+       mxs_reg_32(hw_bch_version)
+};
+#endif
+
+#define        BCH_CTRL_SFTRST                                 (1 << 31)
+#define        BCH_CTRL_CLKGATE                                (1 << 30)
+#define        BCH_CTRL_DEBUGSYNDROME                          (1 << 22)
+#define        BCH_CTRL_M2M_LAYOUT_MASK                        (0x3 << 18)
+#define        BCH_CTRL_M2M_LAYOUT_OFFSET                      18
+#define        BCH_CTRL_M2M_ENCODE                             (1 << 17)
+#define        BCH_CTRL_M2M_ENABLE                             (1 << 16)
+#define        BCH_CTRL_DEBUG_STALL_IRQ_EN                     (1 << 10)
+#define        BCH_CTRL_COMPLETE_IRQ_EN                        (1 << 8)
+#define        BCH_CTRL_BM_ERROR_IRQ                           (1 << 3)
+#define        BCH_CTRL_DEBUG_STALL_IRQ                        (1 << 2)
+#define        BCH_CTRL_COMPLETE_IRQ                           (1 << 0)
+
+#define        BCH_STATUS0_HANDLE_MASK                         (0xfff << 20)
+#define        BCH_STATUS0_HANDLE_OFFSET                       20
+#define        BCH_STATUS0_COMPLETED_CE_MASK                   (0xf << 16)
+#define        BCH_STATUS0_COMPLETED_CE_OFFSET                 16
+#define        BCH_STATUS0_STATUS_BLK0_MASK                    (0xff << 8)
+#define        BCH_STATUS0_STATUS_BLK0_OFFSET                  8
+#define        BCH_STATUS0_STATUS_BLK0_ZERO                    (0x00 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERROR1                  (0x01 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERROR2                  (0x02 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERROR3                  (0x03 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERROR4                  (0x04 << 8)
+#define        BCH_STATUS0_STATUS_BLK0_UNCORRECTABLE           (0xfe << 8)
+#define        BCH_STATUS0_STATUS_BLK0_ERASED                  (0xff << 8)
+#define        BCH_STATUS0_ALLONES                             (1 << 4)
+#define        BCH_STATUS0_CORRECTED                           (1 << 3)
+#define        BCH_STATUS0_UNCORRECTABLE                       (1 << 2)
+
+#define        BCH_MODE_ERASE_THRESHOLD_MASK                   0xff
+#define        BCH_MODE_ERASE_THRESHOLD_OFFSET                 0
+
+#define        BCH_ENCODEPTR_ADDR_MASK                         0xffffffff
+#define        BCH_ENCODEPTR_ADDR_OFFSET                       0
+
+#define        BCH_DATAPTR_ADDR_MASK                           0xffffffff
+#define        BCH_DATAPTR_ADDR_OFFSET                         0
+
+#define        BCH_METAPTR_ADDR_MASK                           0xffffffff
+#define        BCH_METAPTR_ADDR_OFFSET                         0
+
+#define        BCH_LAYOUTSELECT_CS15_SELECT_MASK               (0x3 << 30)
+#define        BCH_LAYOUTSELECT_CS15_SELECT_OFFSET             30
+#define        BCH_LAYOUTSELECT_CS14_SELECT_MASK               (0x3 << 28)
+#define        BCH_LAYOUTSELECT_CS14_SELECT_OFFSET             28
+#define        BCH_LAYOUTSELECT_CS13_SELECT_MASK               (0x3 << 26)
+#define        BCH_LAYOUTSELECT_CS13_SELECT_OFFSET             26
+#define        BCH_LAYOUTSELECT_CS12_SELECT_MASK               (0x3 << 24)
+#define        BCH_LAYOUTSELECT_CS12_SELECT_OFFSET             24
+#define        BCH_LAYOUTSELECT_CS11_SELECT_MASK               (0x3 << 22)
+#define        BCH_LAYOUTSELECT_CS11_SELECT_OFFSET             22
+#define        BCH_LAYOUTSELECT_CS10_SELECT_MASK               (0x3 << 20)
+#define        BCH_LAYOUTSELECT_CS10_SELECT_OFFSET             20
+#define        BCH_LAYOUTSELECT_CS9_SELECT_MASK                (0x3 << 18)
+#define        BCH_LAYOUTSELECT_CS9_SELECT_OFFSET              18
+#define        BCH_LAYOUTSELECT_CS8_SELECT_MASK                (0x3 << 16)
+#define        BCH_LAYOUTSELECT_CS8_SELECT_OFFSET              16
+#define        BCH_LAYOUTSELECT_CS7_SELECT_MASK                (0x3 << 14)
+#define        BCH_LAYOUTSELECT_CS7_SELECT_OFFSET              14
+#define        BCH_LAYOUTSELECT_CS6_SELECT_MASK                (0x3 << 12)
+#define        BCH_LAYOUTSELECT_CS6_SELECT_OFFSET              12
+#define        BCH_LAYOUTSELECT_CS5_SELECT_MASK                (0x3 << 10)
+#define        BCH_LAYOUTSELECT_CS5_SELECT_OFFSET              10
+#define        BCH_LAYOUTSELECT_CS4_SELECT_MASK                (0x3 << 8)
+#define        BCH_LAYOUTSELECT_CS4_SELECT_OFFSET              8
+#define        BCH_LAYOUTSELECT_CS3_SELECT_MASK                (0x3 << 6)
+#define        BCH_LAYOUTSELECT_CS3_SELECT_OFFSET              6
+#define        BCH_LAYOUTSELECT_CS2_SELECT_MASK                (0x3 << 4)
+#define        BCH_LAYOUTSELECT_CS2_SELECT_OFFSET              4
+#define        BCH_LAYOUTSELECT_CS1_SELECT_MASK                (0x3 << 2)
+#define        BCH_LAYOUTSELECT_CS1_SELECT_OFFSET              2
+#define        BCH_LAYOUTSELECT_CS0_SELECT_MASK                (0x3 << 0)
+#define        BCH_LAYOUTSELECT_CS0_SELECT_OFFSET              0
+
+#define        BCH_FLASHLAYOUT0_NBLOCKS_MASK                   (0xff << 24)
+#define        BCH_FLASHLAYOUT0_NBLOCKS_OFFSET                 24
+#define        BCH_FLASHLAYOUT0_META_SIZE_MASK                 (0xff << 16)
+#define        BCH_FLASHLAYOUT0_META_SIZE_OFFSET               16
+#if (defined(CONFIG_MX6) || defined(CONFIG_MX7))
+#define        BCH_FLASHLAYOUT0_ECC0_MASK                      (0x1f << 11)
+#define        BCH_FLASHLAYOUT0_ECC0_OFFSET                    11
+#else
+#define        BCH_FLASHLAYOUT0_ECC0_MASK                      (0xf << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_OFFSET                    12
+#endif
+#define        BCH_FLASHLAYOUT0_ECC0_NONE                      (0x0 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC2                      (0x1 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC4                      (0x2 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC6                      (0x3 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC8                      (0x4 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC10                     (0x5 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC12                     (0x6 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC14                     (0x7 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC16                     (0x8 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC18                     (0x9 << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC20                     (0xa << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC22                     (0xb << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC24                     (0xc << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC26                     (0xd << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC28                     (0xe << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC30                     (0xf << 12)
+#define        BCH_FLASHLAYOUT0_ECC0_ECC32                     (0x10 << 12)
+#define        BCH_FLASHLAYOUT0_GF13_0_GF14_1                  (1 << 10)
+#define        BCH_FLASHLAYOUT0_GF13_0_GF14_1_OFFSET           10
+#define        BCH_FLASHLAYOUT0_DATA0_SIZE_MASK                0xfff
+#define        BCH_FLASHLAYOUT0_DATA0_SIZE_OFFSET              0
+
+#define        BCH_FLASHLAYOUT1_PAGE_SIZE_MASK                 (0xffff << 16)
+#define        BCH_FLASHLAYOUT1_PAGE_SIZE_OFFSET               16
+#if (defined(CONFIG_MX6) || defined(CONFIG_MX7))
+#define        BCH_FLASHLAYOUT1_ECCN_MASK                      (0x1f << 11)
+#define        BCH_FLASHLAYOUT1_ECCN_OFFSET                    11
+#else
+#define        BCH_FLASHLAYOUT1_ECCN_MASK                      (0xf << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_OFFSET                    12
+#endif
+#define        BCH_FLASHLAYOUT1_ECCN_NONE                      (0x0 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC2                      (0x1 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC4                      (0x2 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC6                      (0x3 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC8                      (0x4 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC10                     (0x5 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC12                     (0x6 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC14                     (0x7 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC16                     (0x8 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC18                     (0x9 << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC20                     (0xa << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC22                     (0xb << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC24                     (0xc << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC26                     (0xd << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC28                     (0xe << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC30                     (0xf << 12)
+#define        BCH_FLASHLAYOUT1_ECCN_ECC32                     (0x10 << 12)
+#define        BCH_FLASHLAYOUT1_GF13_0_GF14_1                  (1 << 10)
+#define        BCH_FLASHLAYOUT1_GF13_0_GF14_1_OFFSET           10
+#define        BCH_FLASHLAYOUT1_DATAN_SIZE_MASK                0xfff
+#define        BCH_FLASHLAYOUT1_DATAN_SIZE_OFFSET              0
+
+#define        BCH_DEBUG0_RSVD1_MASK                           (0x1f << 27)
+#define        BCH_DEBUG0_RSVD1_OFFSET                         27
+#define        BCH_DEBUG0_ROM_BIST_ENABLE                      (1 << 26)
+#define        BCH_DEBUG0_ROM_BIST_COMPLETE                    (1 << 25)
+#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_MASK       (0x1ff << 16)
+#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_OFFSET     16
+#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_NORMAL     (0x0 << 16)
+#define        BCH_DEBUG0_KES_DEBUG_SYNDROME_SYMBOL_TEST_MODE  (0x1 << 16)
+#define        BCH_DEBUG0_KES_DEBUG_SHIFT_SYND                 (1 << 15)
+#define        BCH_DEBUG0_KES_DEBUG_PAYLOAD_FLAG               (1 << 14)
+#define        BCH_DEBUG0_KES_DEBUG_MODE4K                     (1 << 13)
+#define        BCH_DEBUG0_KES_DEBUG_KICK                       (1 << 12)
+#define        BCH_DEBUG0_KES_STANDALONE                       (1 << 11)
+#define        BCH_DEBUG0_KES_DEBUG_STEP                       (1 << 10)
+#define        BCH_DEBUG0_KES_DEBUG_STALL                      (1 << 9)
+#define        BCH_DEBUG0_BM_KES_TEST_BYPASS                   (1 << 8)
+#define        BCH_DEBUG0_RSVD0_MASK                           (0x3 << 6)
+#define        BCH_DEBUG0_RSVD0_OFFSET                         6
+#define        BCH_DEBUG0_DEBUG_REG_SELECT_MASK                0x3f
+#define        BCH_DEBUG0_DEBUG_REG_SELECT_OFFSET              0
+
+#define        BCH_DBGKESREAD_VALUES_MASK                      0xffffffff
+#define        BCH_DBGKESREAD_VALUES_OFFSET                    0
+
+#define        BCH_DBGCSFEREAD_VALUES_MASK                     0xffffffff
+#define        BCH_DBGCSFEREAD_VALUES_OFFSET                   0
+
+#define        BCH_DBGSYNDGENREAD_VALUES_MASK                  0xffffffff
+#define        BCH_DBGSYNDGENREAD_VALUES_OFFSET                0
+
+#define        BCH_DBGAHBMREAD_VALUES_MASK                     0xffffffff
+#define        BCH_DBGAHBMREAD_VALUES_OFFSET                   0
+
+#define        BCH_BLOCKNAME_NAME_MASK                         0xffffffff
+#define        BCH_BLOCKNAME_NAME_OFFSET                       0
+
+#define        BCH_VERSION_MAJOR_MASK                          (0xff << 24)
+#define        BCH_VERSION_MAJOR_OFFSET                        24
+#define        BCH_VERSION_MINOR_MASK                          (0xff << 16)
+#define        BCH_VERSION_MINOR_OFFSET                        16
+#define        BCH_VERSION_STEP_MASK                           0xffff
+#define        BCH_VERSION_STEP_OFFSET                         0
+
+#endif /* __MX28_REGS_BCH_H__ */
diff --git a/arch/arm/include/asm/mach-imx/regs-common.h b/arch/arm/include/asm/mach-imx/regs-common.h
new file mode 100644 (file)
index 0000000..7382674
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Freescale i.MXS Register Accessors
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __MXS_REGS_COMMON_H__
+#define __MXS_REGS_COMMON_H__
+
+#include <linux/types.h>
+
+/*
+ * The i.MXS has interesting feature when it comes to register access. There
+ * are four kinds of access to one particular register. Those are:
+ *
+ * 1) Common read/write access. To use this mode, just write to the address of
+ *    the register.
+ * 2) Set bits only access. To set bits, write which bits you want to set to the
+ *    address of the register + 0x4.
+ * 3) Clear bits only access. To clear bits, write which bits you want to clear
+ *    to the address of the register + 0x8.
+ * 4) Toggle bits only access. To toggle bits, write which bits you want to
+ *    toggle to the address of the register + 0xc.
+ *
+ * IMPORTANT NOTE: Not all registers support accesses 2-4! Also, not all bits
+ * can be set/cleared by pure write as in access type 1, some need to be
+ * explicitly set/cleared by using access type 2-3.
+ *
+ * The following macros and structures allow the user to either access the
+ * register in all aforementioned modes (by accessing reg_name, reg_name_set,
+ * reg_name_clr, reg_name_tog) or pass the register structure further into
+ * various functions with correct type information (by accessing reg_name_reg).
+ *
+ */
+
+#define        __mxs_reg_8(name)               \
+       uint8_t name[4];                \
+       uint8_t name##_set[4];          \
+       uint8_t name##_clr[4];          \
+       uint8_t name##_tog[4];          \
+
+#define        __mxs_reg_32(name)              \
+       uint32_t name;                  \
+       uint32_t name##_set;            \
+       uint32_t name##_clr;            \
+       uint32_t name##_tog;
+
+struct mxs_register_8 {
+       __mxs_reg_8(reg)
+};
+
+struct mxs_register_32 {
+       __mxs_reg_32(reg)
+};
+
+#define        mxs_reg_8(name)                         \
+       union {                                         \
+               struct { __mxs_reg_8(name) };           \
+               struct mxs_register_8 name##_reg;       \
+       };
+
+#define        mxs_reg_32(name)                                \
+       union {                                         \
+               struct { __mxs_reg_32(name) };          \
+               struct mxs_register_32 name##_reg;      \
+       };
+
+#endif /* __MXS_REGS_COMMON_H__ */
diff --git a/arch/arm/include/asm/mach-imx/regs-gpmi.h b/arch/arm/include/asm/mach-imx/regs-gpmi.h
new file mode 100644 (file)
index 0000000..9ff646b
--- /dev/null
@@ -0,0 +1,209 @@
+/*
+ * Freescale i.MX28 GPMI Register Definitions
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __MX28_REGS_GPMI_H__
+#define __MX28_REGS_GPMI_H__
+
+#include <asm/mach-imx/regs-common.h>
+
+#ifndef        __ASSEMBLY__
+struct mxs_gpmi_regs {
+       mxs_reg_32(hw_gpmi_ctrl0)
+       mxs_reg_32(hw_gpmi_compare)
+       mxs_reg_32(hw_gpmi_eccctrl)
+       mxs_reg_32(hw_gpmi_ecccount)
+       mxs_reg_32(hw_gpmi_payload)
+       mxs_reg_32(hw_gpmi_auxiliary)
+       mxs_reg_32(hw_gpmi_ctrl1)
+       mxs_reg_32(hw_gpmi_timing0)
+       mxs_reg_32(hw_gpmi_timing1)
+
+       uint32_t        reserved[4];
+
+       mxs_reg_32(hw_gpmi_data)
+       mxs_reg_32(hw_gpmi_stat)
+       mxs_reg_32(hw_gpmi_debug)
+       mxs_reg_32(hw_gpmi_version)
+};
+#endif
+
+#define        GPMI_CTRL0_SFTRST                               (1 << 31)
+#define        GPMI_CTRL0_CLKGATE                              (1 << 30)
+#define        GPMI_CTRL0_RUN                                  (1 << 29)
+#define        GPMI_CTRL0_DEV_IRQ_EN                           (1 << 28)
+#define        GPMI_CTRL0_LOCK_CS                              (1 << 27)
+#define        GPMI_CTRL0_UDMA                                 (1 << 26)
+#define        GPMI_CTRL0_COMMAND_MODE_MASK                    (0x3 << 24)
+#define        GPMI_CTRL0_COMMAND_MODE_OFFSET                  24
+#define        GPMI_CTRL0_COMMAND_MODE_WRITE                   (0x0 << 24)
+#define        GPMI_CTRL0_COMMAND_MODE_READ                    (0x1 << 24)
+#define        GPMI_CTRL0_COMMAND_MODE_READ_AND_COMPARE        (0x2 << 24)
+#define        GPMI_CTRL0_COMMAND_MODE_WAIT_FOR_READY          (0x3 << 24)
+#define        GPMI_CTRL0_WORD_LENGTH                          (1 << 23)
+#define        GPMI_CTRL0_CS_MASK                              (0x7 << 20)
+#define        GPMI_CTRL0_CS_OFFSET                            20
+#define        GPMI_CTRL0_ADDRESS_MASK                         (0x7 << 17)
+#define        GPMI_CTRL0_ADDRESS_OFFSET                       17
+#define        GPMI_CTRL0_ADDRESS_NAND_DATA                    (0x0 << 17)
+#define        GPMI_CTRL0_ADDRESS_NAND_CLE                     (0x1 << 17)
+#define        GPMI_CTRL0_ADDRESS_NAND_ALE                     (0x2 << 17)
+#define        GPMI_CTRL0_ADDRESS_INCREMENT                    (1 << 16)
+#define        GPMI_CTRL0_XFER_COUNT_MASK                      0xffff
+#define        GPMI_CTRL0_XFER_COUNT_OFFSET                    0
+
+#define        GPMI_COMPARE_MASK_MASK                          (0xffff << 16)
+#define        GPMI_COMPARE_MASK_OFFSET                        16
+#define        GPMI_COMPARE_REFERENCE_MASK                     0xffff
+#define        GPMI_COMPARE_REFERENCE_OFFSET                   0
+
+#define        GPMI_ECCCTRL_HANDLE_MASK                        (0xffff << 16)
+#define        GPMI_ECCCTRL_HANDLE_OFFSET                      16
+#define        GPMI_ECCCTRL_ECC_CMD_MASK                       (0x3 << 13)
+#define        GPMI_ECCCTRL_ECC_CMD_OFFSET                     13
+#define        GPMI_ECCCTRL_ECC_CMD_DECODE                     (0x0 << 13)
+#define        GPMI_ECCCTRL_ECC_CMD_ENCODE                     (0x1 << 13)
+#define        GPMI_ECCCTRL_ENABLE_ECC                         (1 << 12)
+#define        GPMI_ECCCTRL_BUFFER_MASK_MASK                   0x1ff
+#define        GPMI_ECCCTRL_BUFFER_MASK_OFFSET                 0
+#define        GPMI_ECCCTRL_BUFFER_MASK_BCH_AUXONLY            0x100
+#define        GPMI_ECCCTRL_BUFFER_MASK_BCH_PAGE               0x1ff
+
+#define        GPMI_ECCCOUNT_COUNT_MASK                        0xffff
+#define        GPMI_ECCCOUNT_COUNT_OFFSET                      0
+
+#define        GPMI_PAYLOAD_ADDRESS_MASK                       (0x3fffffff << 2)
+#define        GPMI_PAYLOAD_ADDRESS_OFFSET                     2
+
+#define        GPMI_AUXILIARY_ADDRESS_MASK                     (0x3fffffff << 2)
+#define        GPMI_AUXILIARY_ADDRESS_OFFSET                   2
+
+#define        GPMI_CTRL1_DECOUPLE_CS                          (1 << 24)
+#define        GPMI_CTRL1_WRN_DLY_SEL_MASK                     (0x3 << 22)
+#define        GPMI_CTRL1_WRN_DLY_SEL_OFFSET                   22
+#define        GPMI_CTRL1_TIMEOUT_IRQ_EN                       (1 << 20)
+#define        GPMI_CTRL1_GANGED_RDYBUSY                       (1 << 19)
+#define        GPMI_CTRL1_BCH_MODE                             (1 << 18)
+#define        GPMI_CTRL1_DLL_ENABLE                           (1 << 17)
+#define        GPMI_CTRL1_HALF_PERIOD                          (1 << 16)
+#define        GPMI_CTRL1_RDN_DELAY_MASK                       (0xf << 12)
+#define        GPMI_CTRL1_RDN_DELAY_OFFSET                     12
+#define        GPMI_CTRL1_DMA2ECC_MODE                         (1 << 11)
+#define        GPMI_CTRL1_DEV_IRQ                              (1 << 10)
+#define        GPMI_CTRL1_TIMEOUT_IRQ                          (1 << 9)
+#define        GPMI_CTRL1_BURST_EN                             (1 << 8)
+#define        GPMI_CTRL1_ABORT_WAIT_REQUEST                   (1 << 7)
+#define        GPMI_CTRL1_ABORT_WAIT_FOR_READY_CHANNEL_MASK    (0x7 << 4)
+#define        GPMI_CTRL1_ABORT_WAIT_FOR_READY_CHANNEL_OFFSET  4
+#define        GPMI_CTRL1_DEV_RESET                            (1 << 3)
+#define        GPMI_CTRL1_ATA_IRQRDY_POLARITY                  (1 << 2)
+#define        GPMI_CTRL1_CAMERA_MODE                          (1 << 1)
+#define        GPMI_CTRL1_GPMI_MODE                            (1 << 0)
+
+#define        GPMI_TIMING0_ADDRESS_SETUP_MASK                 (0xff << 16)
+#define        GPMI_TIMING0_ADDRESS_SETUP_OFFSET               16
+#define        GPMI_TIMING0_DATA_HOLD_MASK                     (0xff << 8)
+#define        GPMI_TIMING0_DATA_HOLD_OFFSET                   8
+#define        GPMI_TIMING0_DATA_SETUP_MASK                    0xff
+#define        GPMI_TIMING0_DATA_SETUP_OFFSET                  0
+
+#define        GPMI_TIMING1_DEVICE_BUSY_TIMEOUT_MASK           (0xffff << 16)
+#define        GPMI_TIMING1_DEVICE_BUSY_TIMEOUT_OFFSET         16
+
+#define        GPMI_TIMING2_UDMA_TRP_MASK                      (0xff << 24)
+#define        GPMI_TIMING2_UDMA_TRP_OFFSET                    24
+#define        GPMI_TIMING2_UDMA_ENV_MASK                      (0xff << 16)
+#define        GPMI_TIMING2_UDMA_ENV_OFFSET                    16
+#define        GPMI_TIMING2_UDMA_HOLD_MASK                     (0xff << 8)
+#define        GPMI_TIMING2_UDMA_HOLD_OFFSET                   8
+#define        GPMI_TIMING2_UDMA_SETUP_MASK                    0xff
+#define        GPMI_TIMING2_UDMA_SETUP_OFFSET                  0
+
+#define        GPMI_DATA_DATA_MASK                             0xffffffff
+#define        GPMI_DATA_DATA_OFFSET                           0
+
+#define        GPMI_STAT_READY_BUSY_MASK                       (0xff << 24)
+#define        GPMI_STAT_READY_BUSY_OFFSET                     24
+#define        GPMI_STAT_RDY_TIMEOUT_MASK                      (0xff << 16)
+#define        GPMI_STAT_RDY_TIMEOUT_OFFSET                    16
+#define        GPMI_STAT_DEV7_ERROR                            (1 << 15)
+#define        GPMI_STAT_DEV6_ERROR                            (1 << 14)
+#define        GPMI_STAT_DEV5_ERROR                            (1 << 13)
+#define        GPMI_STAT_DEV4_ERROR                            (1 << 12)
+#define        GPMI_STAT_DEV3_ERROR                            (1 << 11)
+#define        GPMI_STAT_DEV2_ERROR                            (1 << 10)
+#define        GPMI_STAT_DEV1_ERROR                            (1 << 9)
+#define        GPMI_STAT_DEV0_ERROR                            (1 << 8)
+#define        GPMI_STAT_ATA_IRQ                               (1 << 4)
+#define        GPMI_STAT_INVALID_BUFFER_MASK                   (1 << 3)
+#define        GPMI_STAT_FIFO_EMPTY                            (1 << 2)
+#define        GPMI_STAT_FIFO_FULL                             (1 << 1)
+#define        GPMI_STAT_PRESENT                               (1 << 0)
+
+#define        GPMI_DEBUG_WAIT_FOR_READY_END_MASK              (0xff << 24)
+#define        GPMI_DEBUG_WAIT_FOR_READY_END_OFFSET            24
+#define        GPMI_DEBUG_DMA_SENSE_MASK                       (0xff << 16)
+#define        GPMI_DEBUG_DMA_SENSE_OFFSET                     16
+#define        GPMI_DEBUG_DMAREQ_MASK                          (0xff << 8)
+#define        GPMI_DEBUG_DMAREQ_OFFSET                        8
+#define        GPMI_DEBUG_CMD_END_MASK                         0xff
+#define        GPMI_DEBUG_CMD_END_OFFSET                       0
+
+#define        GPMI_VERSION_MAJOR_MASK                         (0xff << 24)
+#define        GPMI_VERSION_MAJOR_OFFSET                       24
+#define        GPMI_VERSION_MINOR_MASK                         (0xff << 16)
+#define        GPMI_VERSION_MINOR_OFFSET                       16
+#define        GPMI_VERSION_STEP_MASK                          0xffff
+#define        GPMI_VERSION_STEP_OFFSET                        0
+
+#define        GPMI_DEBUG2_UDMA_STATE_MASK                     (0xf << 24)
+#define        GPMI_DEBUG2_UDMA_STATE_OFFSET                   24
+#define        GPMI_DEBUG2_BUSY                                (1 << 23)
+#define        GPMI_DEBUG2_PIN_STATE_MASK                      (0x7 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_OFFSET                    20
+#define        GPMI_DEBUG2_PIN_STATE_PSM_IDLE                  (0x0 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_BYTCNT                (0x1 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_ADDR                  (0x2 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_STALL                 (0x3 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_STROBE                (0x4 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_ATARDY                (0x5 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_DHOLD                 (0x6 << 20)
+#define        GPMI_DEBUG2_PIN_STATE_PSM_DONE                  (0x7 << 20)
+#define        GPMI_DEBUG2_MAIN_STATE_MASK                     (0xf << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_OFFSET                   16
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_IDLE                 (0x0 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_BYTCNT               (0x1 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFE               (0x2 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFR               (0x3 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_DMAREQ               (0x4 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_DMAACK               (0x5 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_WAITFF               (0x6 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_LDFIFO               (0x7 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_LDDMAR               (0x8 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_RDCMP                (0x9 << 16)
+#define        GPMI_DEBUG2_MAIN_STATE_MSM_DONE                 (0xa << 16)
+#define        GPMI_DEBUG2_SYND2GPMI_BE_MASK                   (0xf << 12)
+#define        GPMI_DEBUG2_SYND2GPMI_BE_OFFSET                 12
+#define        GPMI_DEBUG2_GPMI2SYND_VALID                     (1 << 11)
+#define        GPMI_DEBUG2_GPMI2SYND_READY                     (1 << 10)
+#define        GPMI_DEBUG2_SYND2GPMI_VALID                     (1 << 9)
+#define        GPMI_DEBUG2_SYND2GPMI_READY                     (1 << 8)
+#define        GPMI_DEBUG2_VIEW_DELAYED_RDN                    (1 << 7)
+#define        GPMI_DEBUG2_UPDATE_WINDOW                       (1 << 6)
+#define        GPMI_DEBUG2_RDN_TAP_MASK                        0x3f
+#define        GPMI_DEBUG2_RDN_TAP_OFFSET                      0
+
+#define        GPMI_DEBUG3_APB_WORD_CNTR_MASK                  (0xffff << 16)
+#define        GPMI_DEBUG3_APB_WORD_CNTR_OFFSET                16
+#define        GPMI_DEBUG3_DEV_WORD_CNTR_MASK                  0xffff
+#define        GPMI_DEBUG3_DEV_WORD_CNTR_OFFSET                0
+
+#endif /* __MX28_REGS_GPMI_H__ */
diff --git a/arch/arm/include/asm/mach-imx/regs-lcdif.h b/arch/arm/include/asm/mach-imx/regs-lcdif.h
new file mode 100644 (file)
index 0000000..4de401b
--- /dev/null
@@ -0,0 +1,232 @@
+/*
+ * Freescale i.MX28/6SX/6UL/7D LCDIF Register Definitions
+ *
+ * Copyright (C) 2011 Marek Vasut <marek.vasut@gmail.com>
+ * on behalf of DENX Software Engineering GmbH
+ *
+ * Based on code from LTIB:
+ * Copyright 2008-2010 Freescale Semiconductor, Inc. All Rights Reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __IMX_REGS_LCDIF_H__
+#define __IMX_REGS_LCDIF_H__
+
+#ifndef        __ASSEMBLY__
+#include <asm/mach-imx/regs-common.h>
+
+struct mxs_lcdif_regs {
+       mxs_reg_32(hw_lcdif_ctrl)               /* 0x00 */
+       mxs_reg_32(hw_lcdif_ctrl1)              /* 0x10 */
+#if defined(CONFIG_MX28) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || \
+       defined(CONFIG_MX7) || defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)
+       mxs_reg_32(hw_lcdif_ctrl2)              /* 0x20 */
+#endif
+       mxs_reg_32(hw_lcdif_transfer_count)     /* 0x20/0x30 */
+       mxs_reg_32(hw_lcdif_cur_buf)            /* 0x30/0x40 */
+       mxs_reg_32(hw_lcdif_next_buf)           /* 0x40/0x50 */
+
+#if defined(CONFIG_MX23)
+       uint32_t        reserved1[4];
+#endif
+
+       mxs_reg_32(hw_lcdif_timing)             /* 0x60 */
+       mxs_reg_32(hw_lcdif_vdctrl0)            /* 0x70 */
+       mxs_reg_32(hw_lcdif_vdctrl1)            /* 0x80 */
+       mxs_reg_32(hw_lcdif_vdctrl2)            /* 0x90 */
+       mxs_reg_32(hw_lcdif_vdctrl3)            /* 0xa0 */
+       mxs_reg_32(hw_lcdif_vdctrl4)            /* 0xb0 */
+       mxs_reg_32(hw_lcdif_dvictrl0)           /* 0xc0 */
+       mxs_reg_32(hw_lcdif_dvictrl1)           /* 0xd0 */
+       mxs_reg_32(hw_lcdif_dvictrl2)           /* 0xe0 */
+       mxs_reg_32(hw_lcdif_dvictrl3)           /* 0xf0 */
+       mxs_reg_32(hw_lcdif_dvictrl4)           /* 0x100 */
+       mxs_reg_32(hw_lcdif_csc_coeffctrl0)     /* 0x110 */
+       mxs_reg_32(hw_lcdif_csc_coeffctrl1)     /* 0x120 */
+       mxs_reg_32(hw_lcdif_csc_coeffctrl2)     /* 0x130 */
+       mxs_reg_32(hw_lcdif_csc_coeffctrl3)     /* 0x140 */
+       mxs_reg_32(hw_lcdif_csc_coeffctrl4)     /* 0x150 */
+       mxs_reg_32(hw_lcdif_csc_offset) /* 0x160 */
+       mxs_reg_32(hw_lcdif_csc_limit)          /* 0x170 */
+
+#if defined(CONFIG_MX23)
+       uint32_t        reserved2[12];
+#endif
+       mxs_reg_32(hw_lcdif_data)               /* 0x1b0/0x180 */
+       mxs_reg_32(hw_lcdif_bm_error_stat)      /* 0x1c0/0x190 */
+#if defined(CONFIG_MX28) || defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || \
+       defined(CONFIG_MX7) || defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)
+       mxs_reg_32(hw_lcdif_crc_stat)           /* 0x1a0 */
+#endif
+       mxs_reg_32(hw_lcdif_lcdif_stat)         /* 0x1d0/0x1b0 */
+       mxs_reg_32(hw_lcdif_version)            /* 0x1e0/0x1c0 */
+       mxs_reg_32(hw_lcdif_debug0)             /* 0x1f0/0x1d0 */
+       mxs_reg_32(hw_lcdif_debug1)             /* 0x200/0x1e0 */
+       mxs_reg_32(hw_lcdif_debug2)             /* 0x1f0 */
+#if defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || defined(CONFIG_MX7) || \
+       defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)
+       mxs_reg_32(hw_lcdif_thres)
+       mxs_reg_32(hw_lcdif_as_ctrl)
+       mxs_reg_32(hw_lcdif_as_buf)
+       mxs_reg_32(hw_lcdif_as_next_buf)
+       mxs_reg_32(hw_lcdif_as_clrkeylow)
+       mxs_reg_32(hw_lcdif_as_clrkeyhigh)
+       mxs_reg_32(hw_lcdif_as_sync_delay)
+       mxs_reg_32(hw_lcdif_as_debug3)
+       mxs_reg_32(hw_lcdif_as_debug4)
+       mxs_reg_32(hw_lcdif_as_debug5)
+#endif
+};
+#endif
+
+#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
+
+#if defined(CONFIG_MX23)
+#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_MASK                    (0xff << 24)
+#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_OFFSET                  24
+#else
+#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_MASK                    (0x3fff << 18)
+#define        LCDIF_VDCTRL2_HSYNC_PULSE_WIDTH_OFFSET                  18
+#endif
+#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
+
+#endif /* __IMX_REGS_LCDIF_H__ */
diff --git a/arch/arm/include/asm/mach-imx/regs-usbphy.h b/arch/arm/include/asm/mach-imx/regs-usbphy.h
new file mode 100644 (file)
index 0000000..220e45f
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Freescale USB PHY Register Definitions
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ */
+
+#ifndef __REGS_USBPHY_H__
+#define __REGS_USBPHY_H__
+
+#define USBPHY_CTRL                                            0x00000030
+#define USBPHY_CTRL_SET                                        0x00000034
+#define USBPHY_CTRL_CLR                                        0x00000038
+#define USBPHY_CTRL_TOG                                        0x0000003C
+#define USBPHY_PWD                                             0x00000000
+#define USBPHY_TX                                              0x00000010
+#define USBPHY_RX                                              0x00000020
+#define USBPHY_DEBUG                                   0x00000050
+
+#define USBPHY_CTRL_ENUTMILEVEL2               (1 << 14)
+#define USBPHY_CTRL_ENUTMILEVEL3               (1 << 15)
+#define USBPHY_CTRL_OTG_ID                             (1 << 27)
+#define USBPHY_CTRL_CLKGATE                            (1 << 30)
+#define USBPHY_CTRL_SFTRST                             (1 << 31)
+
+#endif /* __REGS_USBPHY_H__ */
diff --git a/arch/arm/include/asm/mach-imx/sata.h b/arch/arm/include/asm/mach-imx/sata.h
new file mode 100644 (file)
index 0000000..6b864cb
--- /dev/null
@@ -0,0 +1,16 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __IMX_SATA_H_
+#define __IMX_SATA_H_
+
+/*
+ * SATA setup for i.mx6 quad based platform
+ */
+
+int setup_sata(void);
+
+#endif
diff --git a/arch/arm/include/asm/mach-imx/spi.h b/arch/arm/include/asm/mach-imx/spi.h
new file mode 100644 (file)
index 0000000..1d4473a
--- /dev/null
@@ -0,0 +1,17 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __MXC_SPI_H_
+#define __MXC_SPI_H_
+
+/*
+ * Board-level chip-select callback
+ * Should return GPIO # to be used for chip-select
+ */
+
+int board_spi_cs_gpio(unsigned bus, unsigned cs);
+
+#endif
diff --git a/arch/arm/include/asm/mach-imx/sys_proto.h b/arch/arm/include/asm/mach-imx/sys_proto.h
new file mode 100644 (file)
index 0000000..046df62
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * (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/io.h>
+#include <asm/mach-imx/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_mx6() (is_soc_type(MXC_SOC_MX6))
+#define is_mx7() (is_soc_type(MXC_SOC_MX7))
+
+#define is_mx6dqp() (is_cpu_type(MXC_CPU_MX6QP) || is_cpu_type(MXC_CPU_MX6DP))
+#define is_mx6dq() (is_cpu_type(MXC_CPU_MX6Q) || is_cpu_type(MXC_CPU_MX6D))
+#define is_mx6sdl() (is_cpu_type(MXC_CPU_MX6SOLO) || is_cpu_type(MXC_CPU_MX6DL))
+#define is_mx6dl() (is_cpu_type(MXC_CPU_MX6DL))
+#define is_mx6sx() (is_cpu_type(MXC_CPU_MX6SX))
+#define is_mx6sl() (is_cpu_type(MXC_CPU_MX6SL))
+#define is_mx6solo() (is_cpu_type(MXC_CPU_MX6SOLO))
+#define is_mx6ul() (is_cpu_type(MXC_CPU_MX6UL))
+#define is_mx6ull() (is_cpu_type(MXC_CPU_MX6ULL))
+#define is_mx6sll() (is_cpu_type(MXC_CPU_MX6SLL))
+
+#define is_mx7ulp() (is_cpu_type(MXC_CPU_MX7ULP))
+
+#ifdef CONFIG_MX6
+#define IMX6_SRC_GPR10_BMODE           BIT(28)
+
+#define IMX6_BMODE_MASK                        GENMASK(7, 0)
+#define        IMX6_BMODE_SHIFT                4
+#define IMX6_BMODE_EMI_MASK            BIT(3)
+#define IMX6_BMODE_EMI_SHIFT           3
+#define IMX6_BMODE_SERIAL_ROM_MASK     GENMASK(26, 24)
+#define IMX6_BMODE_SERIAL_ROM_SHIFT    24
+
+enum imx6_bmode_serial_rom {
+       IMX6_BMODE_ECSPI1,
+       IMX6_BMODE_ECSPI2,
+       IMX6_BMODE_ECSPI3,
+       IMX6_BMODE_ECSPI4,
+       IMX6_BMODE_ECSPI5,
+       IMX6_BMODE_I2C1,
+       IMX6_BMODE_I2C2,
+       IMX6_BMODE_I2C3,
+};
+
+enum imx6_bmode_emi {
+       IMX6_BMODE_ONENAND,
+       IMX6_BMODE_NOR,
+};
+
+enum imx6_bmode {
+       IMX6_BMODE_EMI,
+       IMX6_BMODE_UART,
+       IMX6_BMODE_SATA,
+       IMX6_BMODE_SERIAL_ROM,
+       IMX6_BMODE_SD,
+       IMX6_BMODE_ESD,
+       IMX6_BMODE_MMC,
+       IMX6_BMODE_EMMC,
+       IMX6_BMODE_NAND,
+};
+
+static inline u8 imx6_is_bmode_from_gpr9(void)
+{
+       return readl(&src_base->gpr10) & IMX6_SRC_GPR10_BMODE;
+}
+
+u32 imx6_src_get_boot_mode(void);
+#endif /* CONFIG_MX6 */
+
+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);
+
+void lcdif_power_down(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/mach-imx/syscounter.h b/arch/arm/include/asm/mach-imx/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
diff --git a/arch/arm/include/asm/mach-imx/video.h b/arch/arm/include/asm/mach-imx/video.h
new file mode 100644 (file)
index 0000000..941a031
--- /dev/null
@@ -0,0 +1,31 @@
+/*
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __IMX_VIDEO_H_
+#define __IMX_VIDEO_H_
+
+#include <linux/fb.h>
+#include <ipu_pixfmt.h>
+
+struct display_info_t {
+       int     bus;
+       int     addr;
+       int     pixfmt;
+       int     di;
+       int     (*detect)(struct display_info_t const *dev);
+       void    (*enable)(struct display_info_t const *dev);
+       struct  fb_videomode mode;
+};
+
+#ifdef CONFIG_IMX_HDMI
+extern int detect_hdmi(struct display_info_t const *dev);
+#endif
+
+#ifdef CONFIG_IMX_VIDEO_SKIP
+extern struct display_info_t const displays[];
+extern size_t display_count;
+#endif
+
+int ipu_set_ldb_clock(int rate);
+#endif
index d2ca2777721a9b6a4334bf0b8ea71686b658e0a8..ef5c481349f6f4dd169a04b44cda8849478f0e42 100644 (file)
@@ -680,6 +680,11 @@ void omap_die_id(unsigned int *die_id);
 /* Initialize general purpose I2C(0) on the SoC */
 void gpi2c_init(void);
 
+/* Common FDT Fixups */
+int ft_hs_disable_rng(void *fdt, bd_t *bd);
+int ft_hs_fixup_dram(void *fdt, bd_t *bd);
+int ft_hs_add_tee(void *fdt, bd_t *bd);
+
 /* ABB */
 #define OMAP_ABB_NOMINAL_OPP           0
 #define OMAP_ABB_FAST_OPP              1
index 79f1fbd2c156ee87ddf0dfde8c4a48892fba9ee8..76d0862270322787f7f1e9bda3daafabb87bd1aa 100644 (file)
@@ -27,6 +27,12 @@ u32 secure_rom_call(u32 service, u32 proc_id, u32 flag, ...);
  */
 int secure_boot_verify_image(void **p_image, size_t *p_size);
 
+/*
+ * Return the start of secure reserved RAM, if a default start address has
+ * not been configured then return a region at the end of the external DRAM.
+ */
+u32 get_sec_mem_start(void);
+
 /*
  * Invoke a secure HAL API that allows configuration of the external memory
  * firewall regions.
index c57935e44d1d2135b17a46c5f8c4581526b6db55..d1aa68db20def848a092d37c7ee779694867de84 100644 (file)
@@ -8,6 +8,7 @@ config ARCH_EXYNOS4
        bool "Exynos4 SoC family"
        select CPU_V7
        select BOARD_EARLY_INIT_F
+       imply ENV_IS_IN_MMC
        help
          Samsung Exynos4 SoC family are based on ARM Cortex-A9 CPU. There
          are multiple SoCs in this family including Exynos4210, Exynos4412,
diff --git a/arch/arm/mach-imx/Kconfig b/arch/arm/mach-imx/Kconfig
new file mode 100644 (file)
index 0000000..cd8b8d2
--- /dev/null
@@ -0,0 +1,63 @@
+config IMX_CONFIG
+       string
+
+config ROM_UNIFIED_SECTIONS
+       bool
+
+config IMX_RDC
+       bool "i.MX Resource domain controller driver"
+       depends on ARCH_MX6 || ARCH_MX7
+       help
+         i.MX Resource domain controller is used to assign masters
+         and peripherals to differet domains. This can be used to
+         isolate resources.
+
+config IMX_BOOTAUX
+       bool "Support boot auxiliary core"
+       depends on ARCH_MX7 || ARCH_MX6
+       help
+         bootaux [addr] to boot auxiliary core.
+
+config USE_IMXIMG_PLUGIN
+       bool "Use imximage plugin code"
+       depends on ARCH_MX7 || ARCH_MX6
+       help
+         i.MX6/7 supports DCD and Plugin. Enable this configuration
+         to use Plugin, otherwise DCD will be used.
+
+config SECURE_BOOT
+       bool "Support i.MX HAB features"
+       depends on ARCH_MX7 || ARCH_MX6 || ARCH_MX5
+       select FSL_CAAM
+       imply CMD_DEKBLOB
+       help
+         This option enables the support for secure boot (HAB).
+         See doc/README.mxc_hab for more details.
+
+config CMD_BMODE
+       bool "Support the 'bmode' command"
+       default y
+       depends on ARCH_MX7 || ARCH_MX6 || ARCH_MX5
+       help
+         This enables the 'bmode' (bootmode) command for forcing
+         a boot from specific media.
+
+         This is useful for forcing the ROM's usb downloader to
+         activate upon a watchdog reset which is nice when iterating
+         on U-Boot.  Using the reset button or running bmode normal
+         will set it back to normal.  This command currently
+         supports i.MX53 and i.MX6.
+
+config CMD_DEKBLOB
+       bool "Support the 'dek_blob' command"
+       help
+         This enables the 'dek_blob' command which is used with the
+         Freescale secure boot mechanism. This command encapsulates and
+         creates a blob of data. See also CMD_BLOB and doc/README.mxc_hab for
+         more information.
+
+config CMD_HDMIDETECT
+       bool "Support the 'hdmidet' command"
+       help
+         This enables the 'hdmidet' command which detects if an HDMI monitor
+         is connected.
diff --git a/arch/arm/mach-imx/Makefile b/arch/arm/mach-imx/Makefile
new file mode 100644 (file)
index 0000000..d77c10e
--- /dev/null
@@ -0,0 +1,128 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+ifeq ($(SOC),$(filter $(SOC),mx25 mx35 mx5 mx6 mx7 vf610))
+obj-y  = iomux-v3.o
+endif
+ifeq ($(SOC),$(filter $(SOC),mx5 mx6))
+obj-y  += timer.o cpu.o speed.o
+obj-$(CONFIG_SYS_I2C_MXC) += i2c-mxv7.o
+endif
+ifeq ($(SOC),$(filter $(SOC),mx7 mx6 mxs))
+obj-y  += misc.o
+obj-$(CONFIG_SPL_BUILD)        += spl.o
+endif
+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_SATA) += sata.o
+obj-$(CONFIG_IMX_VIDEO_SKIP) += video.o
+obj-$(CONFIG_IMX_RDC) += rdc-sema.o
+obj-$(CONFIG_IMX_BOOTAUX) += imx_bootaux.o
+obj-$(CONFIG_SECURE_BOOT)    += hab.o
+endif
+ifeq ($(SOC),$(filter $(SOC),mx7ulp))
+obj-y  += cache.o
+obj-$(CONFIG_SECURE_BOOT) += hab.o
+endif
+ifeq ($(SOC),$(filter $(SOC),vf610))
+obj-y += ddrmc-vf610.o
+endif
+ifneq ($(CONFIG_SPL_BUILD),y)
+obj-$(CONFIG_CMD_BMODE) += cmd_bmode.o
+obj-$(CONFIG_CMD_HDMIDETECT) += cmd_hdmidet.o
+obj-$(CONFIG_CMD_DEKBLOB) += cmd_dek.o
+endif
+
+PLUGIN = board/$(BOARDDIR)/plugin
+
+ifeq ($(CONFIG_USE_IMXIMG_PLUGIN),y)
+
+$(PLUGIN).o: $(PLUGIN).S FORCE
+       $(Q)mkdir -p $(dir $@)
+       $(call if_changed_dep,as_o_S)
+
+$(PLUGIN).bin: $(PLUGIN).o FORCE
+       $(Q)mkdir -p $(dir $@)
+       $(OBJCOPY) -O binary --gap-fill 0xff $< $@
+else
+
+$(PLUGIN).bin:
+
+endif
+
+quiet_cmd_cpp_cfg = CFGS    $@
+      cmd_cpp_cfg = $(CPP) $(cpp_flags) -x c -o $@ $<
+
+IMX_CONFIG = $(CONFIG_IMX_CONFIG:"%"=%).cfgtmp
+
+$(IMX_CONFIG): %.cfgtmp: % FORCE
+       $(Q)mkdir -p $(dir $@)
+       $(call if_changed_dep,cpp_cfg)
+
+MKIMAGEFLAGS_u-boot.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \
+       -e $(CONFIG_SYS_TEXT_BASE)
+u-boot.imx: MKIMAGEOUTPUT = u-boot.imx.log
+
+u-boot.imx: u-boot.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+       $(call if_changed,mkimage)
+
+ifeq ($(CONFIG_OF_SEPARATE),y)
+MKIMAGEFLAGS_u-boot-dtb.imx = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \
+       -e $(CONFIG_SYS_TEXT_BASE)
+u-boot-dtb.imx: MKIMAGEOUTPUT = u-boot-dtb.imx.log
+
+u-boot-dtb.imx: u-boot-dtb.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+       $(call if_changed,mkimage)
+endif
+
+MKIMAGEFLAGS_SPL = -n $(filter-out $(PLUGIN).bin $< $(PHONY),$^) -T imximage \
+       -e $(CONFIG_SPL_TEXT_BASE)
+
+SPL: MKIMAGEOUTPUT = SPL.log
+
+SPL: spl/u-boot-spl.bin $(IMX_CONFIG) $(PLUGIN).bin FORCE
+       $(call if_changed,mkimage)
+
+MKIMAGEFLAGS_u-boot.uim = -A arm -O U-Boot -a $(CONFIG_SYS_TEXT_BASE) \
+               -e $(CONFIG_SYS_TEXT_BASE) -C none -T firmware
+
+u-boot.uim: u-boot.bin FORCE
+       $(call if_changed,mkimage)
+
+OBJCOPYFLAGS += -I binary -O binary --pad-to=$(CONFIG_SPL_PAD_TO)
+append = cat $(filter-out $< $(PHONY), $^) >> $@
+
+quiet_cmd_pad_cat = CAT     $@
+cmd_pad_cat = $(cmd_objcopy) && $(append) || rm -f $@
+
+u-boot-with-spl.imx: SPL u-boot.uim FORCE
+       $(call if_changed,pad_cat)
+
+u-boot-with-nand-spl.imx: spl/u-boot-nand-spl.imx u-boot.uim FORCE
+       $(call if_changed,pad_cat)
+
+quiet_cmd_u-boot-nand-spl_imx = GEN     $@
+cmd_u-boot-nand-spl_imx = (printf '\000\000\000\000\106\103\102\040\001' && \
+       dd bs=1015 count=1 if=/dev/zero 2>/dev/null) | cat - $< > $@
+
+spl/u-boot-nand-spl.imx: SPL FORCE
+       $(call if_changed,u-boot-nand-spl_imx)
+
+targets += $(addprefix ../../../,$(IMX_CONFIG) SPL u-boot.uim spl/u-boot-nand-spl.imx)
+
+obj-$(CONFIG_MX5) += mx5/
+obj-$(CONFIG_MX6) += mx6/
+obj-$(CONFIG_MX7) += mx7/
+obj-$(CONFIG_ARCH_MX7ULP) += mx7ulp/
+
diff --git a/arch/arm/mach-imx/cache.c b/arch/arm/mach-imx/cache.c
new file mode 100644 (file)
index 0000000..c5279a7
--- /dev/null
@@ -0,0 +1,107 @@
+/*
+ * 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>
+#include <asm/mach-imx/sys_proto.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;
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       unsigned int val;
+
+
+       /*
+        * Must disable the L2 before changing the latency parameters
+        * and auxiliary control register.
+        */
+       clrbits_le32(&pl310->pl310_ctrl, L2X0_CTRL_EN);
+
+       /*
+        * 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 (is_mx6sl() || is_mx6sll()) {
+               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]);
+               }
+       }
+
+       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 */
diff --git a/arch/arm/mach-imx/cmd_bmode.c b/arch/arm/mach-imx/cmd_bmode.c
new file mode 100644 (file)
index 0000000..4ee514f
--- /dev/null
@@ -0,0 +1,106 @@
+/*
+ * Copyright (C) 2012 Boundary Devices Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <linux/errno.h>
+#include <asm/io.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <malloc.h>
+#include <command.h>
+
+static const struct boot_mode *modes[2];
+
+static const struct boot_mode *search_modes(char *arg)
+{
+       int i;
+
+       for (i = 0; i < ARRAY_SIZE(modes); i++) {
+               const struct boot_mode *p = modes[i];
+               if (p) {
+                       while (p->name) {
+                               if (!strcmp(p->name, arg))
+                                       return p;
+                               p++;
+                       }
+               }
+       }
+       return NULL;
+}
+
+static int create_usage(char *dest)
+{
+       int i;
+       int size = 0;
+
+       for (i = 0; i < ARRAY_SIZE(modes); i++) {
+               const struct boot_mode *p = modes[i];
+               if (p) {
+                       while (p->name) {
+                               int len = strlen(p->name);
+                               if (dest) {
+                                       memcpy(dest, p->name, len);
+                                       dest += len;
+                                       *dest++ = '|';
+                               }
+                               size += len + 1;
+                               p++;
+                       }
+               }
+       }
+       if (dest)
+               memcpy(dest - 1, " [noreset]", 11);     /* include trailing 0 */
+       size += 10;
+       return size;
+}
+
+static int do_boot_mode(cmd_tbl_t *cmdtp, int flag, int argc,
+               char * const argv[])
+{
+       const struct boot_mode *p;
+       int reset_requested = 1;
+
+       if (argc < 2)
+               return CMD_RET_USAGE;
+       p = search_modes(argv[1]);
+       if (!p)
+               return CMD_RET_USAGE;
+       if (argc == 3) {
+               if (strcmp(argv[2], "noreset"))
+                       return CMD_RET_USAGE;
+               reset_requested = 0;
+       }
+
+       boot_mode_apply(p->cfg_val);
+       if (reset_requested && p->cfg_val)
+               do_reset(NULL, 0, 0, NULL);
+       return 0;
+}
+
+U_BOOT_CMD(
+       bmode, 3, 0, do_boot_mode,
+       NULL,
+       "");
+
+void add_board_boot_modes(const struct boot_mode *p)
+{
+       int size;
+       char *dest;
+
+       cmd_tbl_t *entry = ll_entry_get(cmd_tbl_t, bmode, cmd);
+
+       if (entry->usage) {
+               free(entry->usage);
+               entry->usage = NULL;
+       }
+
+       modes[0] = p;
+       modes[1] = soc_boot_modes;
+       size = create_usage(NULL);
+       dest = malloc(size);
+       if (dest) {
+               create_usage(dest);
+               entry->usage = dest;
+       }
+}
diff --git a/arch/arm/mach-imx/cmd_dek.c b/arch/arm/mach-imx/cmd_dek.c
new file mode 100644 (file)
index 0000000..ada8adf
--- /dev/null
@@ -0,0 +1,92 @@
+/*
+ * Copyright 2008-2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ *
+ * Command for encapsulating DEK blob
+ */
+
+#include <common.h>
+#include <command.h>
+#include <environment.h>
+#include <malloc.h>
+#include <asm/byteorder.h>
+#include <linux/compiler.h>
+#include <fsl_sec.h>
+#include <asm/arch/clock.h>
+#include <mapmem.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/**
+* blob_dek() - Encapsulate the DEK as a blob using CAM's Key
+* @src: - Address of data to be encapsulated
+* @dst: - Desination address of encapsulated data
+* @len: - Size of data to be encapsulated
+*
+* Returns zero on success,and negative on error.
+*/
+static int blob_encap_dek(const u8 *src, u8 *dst, u32 len)
+{
+       int ret = 0;
+       u32 jr_size = 4;
+
+       u32 out_jr_size = sec_in32(CONFIG_SYS_FSL_JR0_ADDR + 0x102c);
+       if (out_jr_size != jr_size) {
+               hab_caam_clock_enable(1);
+               sec_init();
+       }
+
+       if (!((len == 128) | (len == 192) | (len == 256))) {
+               debug("Invalid DEK size. Valid sizes are 128, 192 and 256b\n");
+               return -1;
+       }
+
+       len /= 8;
+       ret = blob_dek(src, dst, len);
+
+       return ret;
+}
+
+/**
+ * do_dek_blob() - Handle the "dek_blob" command-line command
+ * @cmdtp:  Command data struct pointer
+ * @flag:   Command flag
+ * @argc:   Command-line argument count
+ * @argv:   Array of command-line arguments
+ *
+ * Returns zero on success, CMD_RET_USAGE in case of misuse and negative
+ * on error.
+ */
+static int do_dek_blob(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
+{
+       uint32_t src_addr, dst_addr, len;
+       uint8_t *src_ptr, *dst_ptr;
+       int ret = 0;
+
+       if (argc != 4)
+               return CMD_RET_USAGE;
+
+       src_addr = simple_strtoul(argv[1], NULL, 16);
+       dst_addr = simple_strtoul(argv[2], NULL, 16);
+       len = simple_strtoul(argv[3], NULL, 10);
+
+       src_ptr = map_sysmem(src_addr, len/8);
+       dst_ptr = map_sysmem(dst_addr, BLOB_SIZE(len/8));
+
+       ret = blob_encap_dek(src_ptr, dst_ptr, len);
+
+       return ret;
+}
+
+/***************************************************/
+static char dek_blob_help_text[] =
+       "src dst len            - Encapsulate and create blob of data\n"
+       "                         $len bits long at address $src and\n"
+       "                         store the result at address $dst.\n";
+
+U_BOOT_CMD(
+       dek_blob, 4, 1, do_dek_blob,
+       "Data Encryption Key blob encapsulation",
+       dek_blob_help_text
+);
diff --git a/arch/arm/mach-imx/cmd_hdmidet.c b/arch/arm/mach-imx/cmd_hdmidet.c
new file mode 100644 (file)
index 0000000..e9fd955
--- /dev/null
@@ -0,0 +1,20 @@
+/*
+ * Copyright (C) 2012 Boundary Devices Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/io.h>
+
+static int do_hdmidet(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
+       return (readb(&hdmi->phy_stat0) & HDMI_DVI_STAT) ? 0 : 1;
+}
+
+U_BOOT_CMD(hdmidet, 1, 1, do_hdmidet,
+       "detect HDMI monitor",
+       ""
+);
diff --git a/arch/arm/mach-imx/cpu.c b/arch/arm/mach-imx/cpu.c
new file mode 100644 (file)
index 0000000..9e83b42
--- /dev/null
@@ -0,0 +1,325 @@
+/*
+ * (C) Copyright 2007
+ * Sascha Hauer, Pengutronix
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <bootm.h>
+#include <common.h>
+#include <netdev.h>
+#include <linux/errno.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/crm_regs.h>
+#include <imx_thermal.h>
+#include <ipu_pixfmt.h>
+#include <thermal.h>
+#include <sata.h>
+
+#ifdef CONFIG_FSL_ESDHC
+#include <fsl_esdhc.h>
+#endif
+
+#if defined(CONFIG_DISPLAY_CPUINFO)
+static u32 reset_cause = -1;
+
+static char *get_reset_cause(void)
+{
+       u32 cause;
+       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
+
+       cause = readl(&src_regs->srsr);
+       writel(cause, &src_regs->srsr);
+       reset_cause = cause;
+
+       switch (cause) {
+       case 0x00001:
+       case 0x00011:
+               return "POR";
+       case 0x00004:
+               return "CSU";
+       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";
+       }
+}
+
+u32 get_imx_reset_cause(void)
+{
+       return reset_cause;
+}
+#endif
+
+#if defined(CONFIG_MX53) || defined(CONFIG_MX6)
+#if defined(CONFIG_MX53)
+#define MEMCTL_BASE    ESDCTL_BASE_ADDR
+#else
+#define MEMCTL_BASE    MMDC_P0_BASE_ADDR
+#endif
+static const unsigned char col_lookup[] = {9, 10, 11, 8, 12, 9, 9, 9};
+static const unsigned char bank_lookup[] = {3, 2};
+
+/* these MMDC registers are common to the IMX53 and IMX6 */
+struct esd_mmdc_regs {
+       uint32_t        ctl;
+       uint32_t        pdc;
+       uint32_t        otc;
+       uint32_t        cfg0;
+       uint32_t        cfg1;
+       uint32_t        cfg2;
+       uint32_t        misc;
+};
+
+#define ESD_MMDC_CTL_GET_ROW(mdctl)    ((ctl >> 24) & 7)
+#define ESD_MMDC_CTL_GET_COLUMN(mdctl) ((ctl >> 20) & 7)
+#define ESD_MMDC_CTL_GET_WIDTH(mdctl)  ((ctl >> 16) & 3)
+#define ESD_MMDC_CTL_GET_CS1(mdctl)    ((ctl >> 30) & 1)
+#define ESD_MMDC_MISC_GET_BANK(mdmisc) ((misc >> 5) & 1)
+
+/*
+ * imx_ddr_size - return size in bytes of DRAM according MMDC config
+ * The MMDC MDCTL register holds the number of bits for row, col, and data
+ * width and the MMDC MDMISC register holds the number of banks. Combine
+ * all these bits to determine the meme size the MMDC has been configured for
+ */
+unsigned imx_ddr_size(void)
+{
+       struct esd_mmdc_regs *mem = (struct esd_mmdc_regs *)MEMCTL_BASE;
+       unsigned ctl = readl(&mem->ctl);
+       unsigned misc = readl(&mem->misc);
+       int bits = 11 + 0 + 0 + 1;      /* row + col + bank + width */
+
+       bits += ESD_MMDC_CTL_GET_ROW(ctl);
+       bits += col_lookup[ESD_MMDC_CTL_GET_COLUMN(ctl)];
+       bits += bank_lookup[ESD_MMDC_MISC_GET_BANK(misc)];
+       bits += ESD_MMDC_CTL_GET_WIDTH(ctl);
+       bits += ESD_MMDC_CTL_GET_CS1(ctl);
+
+       /* The MX6 can do only 3840 MiB of DRAM */
+       if (bits == 32)
+               return 0xf0000000;
+
+       return 1 << bits;
+}
+#endif
+
+#if defined(CONFIG_DISPLAY_CPUINFO)
+
+const char *get_imx_type(u32 imxtype)
+{
+       switch (imxtype) {
+       case MXC_CPU_MX7S:
+               return "7S";    /* Single-core version of the mx7 */
+       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:
+               return "6DP";   /* Dual-Plus version of the mx6 */
+       case MXC_CPU_MX6Q:
+               return "6Q";    /* Quad-core version of the mx6 */
+       case MXC_CPU_MX6D:
+               return "6D";    /* Dual-core version of the mx6 */
+       case MXC_CPU_MX6DL:
+               return "6DL";   /* Dual Lite version of the mx6 */
+       case MXC_CPU_MX6SOLO:
+               return "6SOLO"; /* Solo version of the mx6 */
+       case MXC_CPU_MX6SL:
+               return "6SL";   /* Solo-Lite version of the mx6 */
+       case MXC_CPU_MX6SLL:
+               return "6SLL";  /* SLL version of the mx6 */
+       case MXC_CPU_MX6SX:
+               return "6SX";   /* SoloX version of the mx6 */
+       case MXC_CPU_MX6UL:
+               return "6UL";   /* Ultra-Lite version of the mx6 */
+       case MXC_CPU_MX6ULL:
+               return "6ULL";  /* ULL version of the mx6 */
+       case MXC_CPU_MX51:
+               return "51";
+       case MXC_CPU_MX53:
+               return "53";
+       default:
+               return "??";
+       }
+}
+
+int print_cpuinfo(void)
+{
+       u32 cpurev;
+       __maybe_unused u32 max_freq;
+
+       cpurev = get_cpu_rev();
+
+#if defined(CONFIG_IMX_THERMAL)
+       struct udevice *thermal_dev;
+       int cpu_tmp, minc, maxc, ret;
+
+       printf("CPU:   Freescale i.MX%s rev%d.%d",
+              get_imx_type((cpurev & 0xFF000) >> 12),
+              (cpurev & 0x000F0) >> 4,
+              (cpurev & 0x0000F) >> 0);
+       max_freq = get_cpu_speed_grade_hz();
+       if (!max_freq || max_freq == mxc_get_clock(MXC_ARM_CLK)) {
+               printf(" at %dMHz\n", mxc_get_clock(MXC_ARM_CLK) / 1000000);
+       } else {
+               printf(" %d MHz (running at %d MHz)\n", max_freq / 1000000,
+                      mxc_get_clock(MXC_ARM_CLK) / 1000000);
+       }
+#else
+       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);
+#endif
+
+#if defined(CONFIG_IMX_THERMAL)
+       puts("CPU:   ");
+       switch (get_cpu_temp_grade(&minc, &maxc)) {
+       case TEMP_AUTOMOTIVE:
+               puts("Automotive temperature grade ");
+               break;
+       case TEMP_INDUSTRIAL:
+               puts("Industrial temperature grade ");
+               break;
+       case TEMP_EXTCOMMERCIAL:
+               puts("Extended Commercial temperature grade ");
+               break;
+       default:
+               puts("Commercial temperature grade ");
+               break;
+       }
+       printf("(%dC to %dC)", minc, maxc);
+       ret = uclass_get_device(UCLASS_THERMAL, 0, &thermal_dev);
+       if (!ret) {
+               ret = thermal_get_temp(thermal_dev, &cpu_tmp);
+
+               if (!ret)
+                       printf(" at %dC\n", cpu_tmp);
+               else
+                       debug(" - invalid sensor data\n");
+       } else {
+               debug(" - invalid sensor device\n");
+       }
+#endif
+
+       printf("Reset cause: %s\n", get_reset_cause());
+       return 0;
+}
+#endif
+
+int cpu_eth_init(bd_t *bis)
+{
+       int rc = -ENODEV;
+
+#if defined(CONFIG_FEC_MXC)
+       rc = fecmxc_initialize(bis);
+#endif
+
+       return rc;
+}
+
+#ifdef CONFIG_FSL_ESDHC
+/*
+ * Initializes on-chip MMC controllers.
+ * to override, implement board_mmc_init()
+ */
+int cpu_mmc_init(bd_t *bis)
+{
+       return fsl_esdhc_mmc_init(bis);
+}
+#endif
+
+#ifndef CONFIG_MX7
+u32 get_ahb_clk(void)
+{
+       struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       u32 reg, ahb_podf;
+
+       reg = __raw_readl(&imx_ccm->cbcdr);
+       reg &= MXC_CCM_CBCDR_AHB_PODF_MASK;
+       ahb_podf = reg >> MXC_CCM_CBCDR_AHB_PODF_OFFSET;
+
+       return get_periph_clk() / (ahb_podf + 1);
+}
+#endif
+
+void arch_preboot_os(void)
+{
+#if defined(CONFIG_PCIE_IMX)
+       imx_pcie_remove();
+#endif
+#if defined(CONFIG_SATA)
+       sata_stop();
+#if defined(CONFIG_MX6)
+       disable_sata_clock();
+#endif
+#endif
+#if defined(CONFIG_VIDEO_IPUV3)
+       /* disable video before launching O/S */
+       ipuv3_fb_shutdown();
+#endif
+#if defined(CONFIG_VIDEO_MXS)
+       lcdif_power_down();
+#endif
+}
+
+void set_chipselect_size(int const cs_size)
+{
+       unsigned int reg;
+       struct iomuxc *iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       reg = readl(&iomuxc_regs->gpr[1]);
+
+       switch (cs_size) {
+       case CS0_128:
+               reg &= ~0x7;    /* CS0=128MB, CS1=0, CS2=0, CS3=0 */
+               reg |= 0x5;
+               break;
+       case CS0_64M_CS1_64M:
+               reg &= ~0x3F;   /* CS0=64MB, CS1=64MB, CS2=0, CS3=0 */
+               reg |= 0x1B;
+               break;
+       case CS0_64M_CS1_32M_CS2_32M:
+               reg &= ~0x1FF;  /* CS0=64MB, CS1=32MB, CS2=32MB, CS3=0 */
+               reg |= 0x4B;
+               break;
+       case CS0_32M_CS1_32M_CS2_32M_CS3_32M:
+               reg &= ~0xFFF;  /* CS0=32MB, CS1=32MB, CS2=32MB, CS3=32MB */
+               reg |= 0x249;
+               break;
+       default:
+               printf("Unknown chip select size: %d\n", cs_size);
+               break;
+       }
+
+       writel(reg, &iomuxc_regs->gpr[1]);
+}
diff --git a/arch/arm/mach-imx/ddrmc-vf610.c b/arch/arm/mach-imx/ddrmc-vf610.c
new file mode 100644 (file)
index 0000000..9bc56f6
--- /dev/null
@@ -0,0 +1,237 @@
+/*
+ * Copyright 2015 Toradex, Inc.
+ *
+ * Based on vf610twr:
+ * Copyright 2013 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux-vf610.h>
+#include <asm/arch/ddrmc-vf610.h>
+
+void ddrmc_setup_iomux(const iomux_v3_cfg_t *pads, int pads_count)
+{
+       static const iomux_v3_cfg_t default_pads[] = {
+               VF610_PAD_DDR_A15__DDR_A_15,
+               VF610_PAD_DDR_A14__DDR_A_14,
+               VF610_PAD_DDR_A13__DDR_A_13,
+               VF610_PAD_DDR_A12__DDR_A_12,
+               VF610_PAD_DDR_A11__DDR_A_11,
+               VF610_PAD_DDR_A10__DDR_A_10,
+               VF610_PAD_DDR_A9__DDR_A_9,
+               VF610_PAD_DDR_A8__DDR_A_8,
+               VF610_PAD_DDR_A7__DDR_A_7,
+               VF610_PAD_DDR_A6__DDR_A_6,
+               VF610_PAD_DDR_A5__DDR_A_5,
+               VF610_PAD_DDR_A4__DDR_A_4,
+               VF610_PAD_DDR_A3__DDR_A_3,
+               VF610_PAD_DDR_A2__DDR_A_2,
+               VF610_PAD_DDR_A1__DDR_A_1,
+               VF610_PAD_DDR_A0__DDR_A_0,
+               VF610_PAD_DDR_BA2__DDR_BA_2,
+               VF610_PAD_DDR_BA1__DDR_BA_1,
+               VF610_PAD_DDR_BA0__DDR_BA_0,
+               VF610_PAD_DDR_CAS__DDR_CAS_B,
+               VF610_PAD_DDR_CKE__DDR_CKE_0,
+               VF610_PAD_DDR_CLK__DDR_CLK_0,
+               VF610_PAD_DDR_CS__DDR_CS_B_0,
+               VF610_PAD_DDR_D15__DDR_D_15,
+               VF610_PAD_DDR_D14__DDR_D_14,
+               VF610_PAD_DDR_D13__DDR_D_13,
+               VF610_PAD_DDR_D12__DDR_D_12,
+               VF610_PAD_DDR_D11__DDR_D_11,
+               VF610_PAD_DDR_D10__DDR_D_10,
+               VF610_PAD_DDR_D9__DDR_D_9,
+               VF610_PAD_DDR_D8__DDR_D_8,
+               VF610_PAD_DDR_D7__DDR_D_7,
+               VF610_PAD_DDR_D6__DDR_D_6,
+               VF610_PAD_DDR_D5__DDR_D_5,
+               VF610_PAD_DDR_D4__DDR_D_4,
+               VF610_PAD_DDR_D3__DDR_D_3,
+               VF610_PAD_DDR_D2__DDR_D_2,
+               VF610_PAD_DDR_D1__DDR_D_1,
+               VF610_PAD_DDR_D0__DDR_D_0,
+               VF610_PAD_DDR_DQM1__DDR_DQM_1,
+               VF610_PAD_DDR_DQM0__DDR_DQM_0,
+               VF610_PAD_DDR_DQS1__DDR_DQS_1,
+               VF610_PAD_DDR_DQS0__DDR_DQS_0,
+               VF610_PAD_DDR_RAS__DDR_RAS_B,
+               VF610_PAD_DDR_WE__DDR_WE_B,
+               VF610_PAD_DDR_ODT1__DDR_ODT_0,
+               VF610_PAD_DDR_ODT0__DDR_ODT_1,
+               VF610_PAD_DDR_RESETB,
+       };
+
+       if ((pads == NULL) || (pads_count == 0)) {
+               pads = default_pads;
+               pads_count = ARRAY_SIZE(default_pads);
+       }
+
+       imx_iomux_v3_setup_multiple_pads(pads, pads_count);
+}
+
+static struct ddrmc_phy_setting default_phy_settings[] = {
+       { DDRMC_PHY_DQ_TIMING,  0 },
+       { DDRMC_PHY_DQ_TIMING, 16 },
+       { DDRMC_PHY_DQ_TIMING, 32 },
+
+       { DDRMC_PHY_DQS_TIMING,  1 },
+       { DDRMC_PHY_DQS_TIMING, 17 },
+
+       { DDRMC_PHY_CTRL,  2 },
+       { DDRMC_PHY_CTRL, 18 },
+       { DDRMC_PHY_CTRL, 34 },
+
+       { DDRMC_PHY_MASTER_CTRL,  3 },
+       { DDRMC_PHY_MASTER_CTRL, 19 },
+       { DDRMC_PHY_MASTER_CTRL, 35 },
+
+       { DDRMC_PHY_SLAVE_CTRL,  4 },
+       { DDRMC_PHY_SLAVE_CTRL, 20 },
+       { DDRMC_PHY_SLAVE_CTRL, 36 },
+
+       /* LPDDR2 only parameter */
+       { DDRMC_PHY_OFF, 49 },
+
+       { DDRMC_PHY50_DDR3_MODE | DDRMC_PHY50_EN_SW_HALF_CYCLE, 50 },
+
+       /* Processor Pad ODT settings */
+       { DDRMC_PHY_PROC_PAD_ODT, 52 },
+
+       /* end marker */
+       { 0, -1 }
+};
+
+void ddrmc_ctrl_init_ddr3(struct ddr3_jedec_timings const *timings,
+                         struct ddrmc_cr_setting *board_cr_settings,
+                         struct ddrmc_phy_setting *board_phy_settings,
+                         int col_diff, int row_diff)
+{
+       struct ddrmr_regs *ddrmr = (struct ddrmr_regs *)DDR_BASE_ADDR;
+       struct ddrmc_cr_setting *cr_setting;
+       struct ddrmc_phy_setting *phy_setting;
+
+       writel(DDRMC_CR00_DRAM_CLASS_DDR3, &ddrmr->cr[0]);
+       writel(DDRMC_CR02_DRAM_TINIT(timings->tinit), &ddrmr->cr[2]);
+       writel(DDRMC_CR10_TRST_PWRON(timings->trst_pwron), &ddrmr->cr[10]);
+
+       writel(DDRMC_CR11_CKE_INACTIVE(timings->cke_inactive), &ddrmr->cr[11]);
+       writel(DDRMC_CR12_WRLAT(timings->wrlat) |
+                  DDRMC_CR12_CASLAT_LIN(timings->caslat_lin), &ddrmr->cr[12]);
+       writel(DDRMC_CR13_TRC(timings->trc) | DDRMC_CR13_TRRD(timings->trrd) |
+                  DDRMC_CR13_TCCD(timings->tccd) |
+                  DDRMC_CR13_TBST_INT_INTERVAL(timings->tbst_int_interval),
+                  &ddrmr->cr[13]);
+       writel(DDRMC_CR14_TFAW(timings->tfaw) | DDRMC_CR14_TRP(timings->trp) |
+                  DDRMC_CR14_TWTR(timings->twtr) |
+                  DDRMC_CR14_TRAS_MIN(timings->tras_min), &ddrmr->cr[14]);
+       writel(DDRMC_CR16_TMRD(timings->tmrd) |
+                  DDRMC_CR16_TRTP(timings->trtp), &ddrmr->cr[16]);
+       writel(DDRMC_CR17_TRAS_MAX(timings->tras_max) |
+                  DDRMC_CR17_TMOD(timings->tmod), &ddrmr->cr[17]);
+       writel(DDRMC_CR18_TCKESR(timings->tckesr) |
+                  DDRMC_CR18_TCKE(timings->tcke), &ddrmr->cr[18]);
+
+       writel(DDRMC_CR20_AP_EN, &ddrmr->cr[20]);
+       writel(DDRMC_CR21_TRCD_INT(timings->trcd_int) | DDRMC_CR21_CCMAP_EN |
+                  DDRMC_CR21_TRAS_LOCKOUT(timings->tras_lockout),
+                  &ddrmr->cr[21]);
+
+       writel(DDRMC_CR22_TDAL(timings->tdal), &ddrmr->cr[22]);
+       writel(DDRMC_CR23_BSTLEN(timings->bstlen) |
+                  DDRMC_CR23_TDLL(timings->tdll), &ddrmr->cr[23]);
+       writel(DDRMC_CR24_TRP_AB(timings->trp_ab), &ddrmr->cr[24]);
+
+       writel(DDRMC_CR25_TREF_EN, &ddrmr->cr[25]);
+       writel(DDRMC_CR26_TREF(timings->tref) |
+                  DDRMC_CR26_TRFC(timings->trfc), &ddrmr->cr[26]);
+       writel(DDRMC_CR28_TREF_INT(timings->tref_int), &ddrmr->cr[28]);
+       writel(DDRMC_CR29_TPDEX(timings->tpdex), &ddrmr->cr[29]);
+
+       writel(DDRMC_CR30_TXPDLL(timings->txpdll), &ddrmr->cr[30]);
+       writel(DDRMC_CR31_TXSNR(timings->txsnr) |
+                  DDRMC_CR31_TXSR(timings->txsr), &ddrmr->cr[31]);
+       writel(DDRMC_CR33_EN_QK_SREF, &ddrmr->cr[33]);
+       writel(DDRMC_CR34_CKSRX(timings->cksrx) |
+                  DDRMC_CR34_CKSRE(timings->cksre), &ddrmr->cr[34]);
+
+       writel(DDRMC_CR38_FREQ_CHG_EN(timings->freq_chg_en), &ddrmr->cr[38]);
+       writel(DDRMC_CR39_PHY_INI_COM(1024) | DDRMC_CR39_PHY_INI_STA(16) |
+                  DDRMC_CR39_FRQ_CH_DLLOFF(2), &ddrmr->cr[39]);
+
+       writel(DDRMC_CR41_PHY_INI_STRT_INI_DIS, &ddrmr->cr[41]);
+       writel(DDRMC_CR48_MR1_DA_0(70) |
+                  DDRMC_CR48_MR0_DA_0(1056), &ddrmr->cr[48]);
+
+       writel(DDRMC_CR66_ZQCL(timings->zqcl) |
+                  DDRMC_CR66_ZQINIT(timings->zqinit), &ddrmr->cr[66]);
+       writel(DDRMC_CR67_ZQCS(timings->zqcs), &ddrmr->cr[67]);
+       writel(DDRMC_CR69_ZQ_ON_SREF_EX(2), &ddrmr->cr[69]);
+
+       writel(DDRMC_CR70_REF_PER_ZQ(timings->ref_per_zq), &ddrmr->cr[70]);
+       writel(DDRMC_CR72_ZQCS_ROTATE(timings->zqcs_rotate), &ddrmr->cr[72]);
+
+       writel(DDRMC_CR73_APREBIT(timings->aprebit) |
+                  DDRMC_CR73_COL_DIFF(col_diff) |
+                  DDRMC_CR73_ROW_DIFF(row_diff), &ddrmr->cr[73]);
+       writel(DDRMC_CR74_BANKSPLT_EN | DDRMC_CR74_ADDR_CMP_EN |
+                  DDRMC_CR74_CMD_AGE_CNT(timings->cmd_age_cnt) |
+                  DDRMC_CR74_AGE_CNT(timings->age_cnt),
+                  &ddrmr->cr[74]);
+       writel(DDRMC_CR75_RW_PG_EN | DDRMC_CR75_RW_EN | DDRMC_CR75_PRI_EN |
+                  DDRMC_CR75_PLEN, &ddrmr->cr[75]);
+       writel(DDRMC_CR76_NQENT_ACTDIS(3) | DDRMC_CR76_D_RW_G_BKCN(3) |
+                  DDRMC_CR76_W2R_SPLT_EN, &ddrmr->cr[76]);
+       writel(DDRMC_CR77_CS_MAP | DDRMC_CR77_DI_RD_INTLEAVE |
+                  DDRMC_CR77_SWAP_EN, &ddrmr->cr[77]);
+       writel(DDRMC_CR78_Q_FULLNESS(timings->q_fullness) |
+                  DDRMC_CR78_BUR_ON_FLY_BIT(12), &ddrmr->cr[78]);
+       writel(DDRMC_CR79_CTLUPD_AREF(0), &ddrmr->cr[79]);
+
+       writel(DDRMC_CR82_INT_MASK, &ddrmr->cr[82]);
+
+       writel(DDRMC_CR87_ODT_RD_MAPCS0(timings->odt_rd_mapcs0) |
+                  DDRMC_CR87_ODT_WR_MAPCS0(timings->odt_wr_mapcs0),
+                  &ddrmr->cr[87]);
+       writel(DDRMC_CR88_TODTL_CMD(4), &ddrmr->cr[88]);
+       writel(DDRMC_CR89_AODT_RWSMCS(2), &ddrmr->cr[89]);
+
+       writel(DDRMC_CR91_R2W_SMCSDL(2), &ddrmr->cr[91]);
+       writel(DDRMC_CR96_WLMRD(timings->wlmrd) |
+                  DDRMC_CR96_WLDQSEN(timings->wldqsen), &ddrmr->cr[96]);
+
+       /* execute custom CR setting sequence (may be NULL) */
+       cr_setting = board_cr_settings;
+       if (cr_setting != NULL)
+               while (cr_setting->cr_rnum >= 0) {
+                       writel(cr_setting->setting,
+                              &ddrmr->cr[cr_setting->cr_rnum]);
+                       cr_setting++;
+               }
+
+       /* perform default PHY settings (may be overridden by custom settings */
+       phy_setting = default_phy_settings;
+       while (phy_setting->phy_rnum >= 0) {
+               writel(phy_setting->setting,
+                      &ddrmr->phy[phy_setting->phy_rnum]);
+               phy_setting++;
+       }
+
+       /* execute custom PHY setting sequence (may be NULL) */
+       phy_setting = board_phy_settings;
+       if (phy_setting != NULL)
+               while (phy_setting->phy_rnum >= 0) {
+                       writel(phy_setting->setting,
+                              &ddrmr->phy[phy_setting->phy_rnum]);
+                       phy_setting++;
+               }
+
+       /* all inits done, start the DDR controller */
+       writel(DDRMC_CR00_DRAM_CLASS_DDR3 | DDRMC_CR00_START, &ddrmr->cr[0]);
+
+       while (!(readl(&ddrmr->cr[80]) && 0x100))
+               udelay(10);
+}
diff --git a/arch/arm/mach-imx/hab.c b/arch/arm/mach-imx/hab.c
new file mode 100644 (file)
index 0000000..02c7ae4
--- /dev/null
@@ -0,0 +1,516 @@
+/*
+ * Copyright (C) 2010-2015 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <config.h>
+#include <fuse.h>
+#include <asm/io.h>
+#include <asm/system.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/mach-imx/hab.h>
+
+/* -------- start of HAB API updates ------------*/
+
+#define hab_rvt_report_event_p                                 \
+(                                                              \
+       (is_mx6dqp()) ?                                         \
+       ((hab_rvt_report_event_t *)HAB_RVT_REPORT_EVENT_NEW) :  \
+       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
+       ((hab_rvt_report_event_t *)HAB_RVT_REPORT_EVENT_NEW) :  \
+       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
+       ((hab_rvt_report_event_t *)HAB_RVT_REPORT_EVENT_NEW) :  \
+       ((hab_rvt_report_event_t *)HAB_RVT_REPORT_EVENT)        \
+)
+
+#define hab_rvt_report_status_p                                        \
+(                                                              \
+       (is_mx6dqp()) ?                                         \
+       ((hab_rvt_report_status_t *)HAB_RVT_REPORT_STATUS_NEW) :\
+       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
+       ((hab_rvt_report_status_t *)HAB_RVT_REPORT_STATUS_NEW) :\
+       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
+       ((hab_rvt_report_status_t *)HAB_RVT_REPORT_STATUS_NEW) :\
+       ((hab_rvt_report_status_t *)HAB_RVT_REPORT_STATUS)      \
+)
+
+#define hab_rvt_authenticate_image_p                           \
+(                                                              \
+       (is_mx6dqp()) ?                                         \
+       ((hab_rvt_authenticate_image_t *)HAB_RVT_AUTHENTICATE_IMAGE_NEW) : \
+       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
+       ((hab_rvt_authenticate_image_t *)HAB_RVT_AUTHENTICATE_IMAGE_NEW) : \
+       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
+       ((hab_rvt_authenticate_image_t *)HAB_RVT_AUTHENTICATE_IMAGE_NEW) : \
+       ((hab_rvt_authenticate_image_t *)HAB_RVT_AUTHENTICATE_IMAGE)    \
+)
+
+#define hab_rvt_entry_p                                                \
+(                                                              \
+       (is_mx6dqp()) ?                                         \
+       ((hab_rvt_entry_t *)HAB_RVT_ENTRY_NEW) :                \
+       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
+       ((hab_rvt_entry_t *)HAB_RVT_ENTRY_NEW) :                \
+       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
+       ((hab_rvt_entry_t *)HAB_RVT_ENTRY_NEW) :                \
+       ((hab_rvt_entry_t *)HAB_RVT_ENTRY)                      \
+)
+
+#define hab_rvt_exit_p                                         \
+(                                                              \
+       (is_mx6dqp()) ?                                         \
+       ((hab_rvt_exit_t *)HAB_RVT_EXIT_NEW) :                  \
+       (is_mx6dq() && (soc_rev() >= CHIP_REV_1_5)) ?           \
+       ((hab_rvt_exit_t *)HAB_RVT_EXIT_NEW) :                  \
+       (is_mx6sdl() && (soc_rev() >= CHIP_REV_1_2)) ?          \
+       ((hab_rvt_exit_t *)HAB_RVT_EXIT_NEW) :                  \
+       ((hab_rvt_exit_t *)HAB_RVT_EXIT)                        \
+)
+
+#define IVT_SIZE               0x20
+#define ALIGN_SIZE             0x1000
+#define CSF_PAD_SIZE           0x2000
+#define MX6DQ_PU_IROM_MMU_EN_VAR       0x009024a8
+#define MX6DLS_PU_IROM_MMU_EN_VAR      0x00901dd0
+#define MX6SL_PU_IROM_MMU_EN_VAR       0x00900a18
+#define IS_HAB_ENABLED_BIT \
+       (is_soc_type(MXC_SOC_MX7ULP) ? 0x80000000 :     \
+        (is_soc_type(MXC_SOC_MX7) ? 0x2000000 : 0x2))
+
+/*
+ * +------------+  0x0 (DDR_UIMAGE_START) -
+ * |   Header   |                          |
+ * +------------+  0x40                    |
+ * |            |                          |
+ * |            |                          |
+ * |            |                          |
+ * |            |                          |
+ * | Image Data |                          |
+ * .            |                          |
+ * .            |                           > Stuff to be authenticated ----+
+ * .            |                          |                                |
+ * |            |                          |                                |
+ * |            |                          |                                |
+ * +------------+                          |                                |
+ * |            |                          |                                |
+ * | Fill Data  |                          |                                |
+ * |            |                          |                                |
+ * +------------+ Align to ALIGN_SIZE      |                                |
+ * |    IVT     |                          |                                |
+ * +------------+ + IVT_SIZE              -                                 |
+ * |            |                                                           |
+ * |  CSF DATA  | <---------------------------------------------------------+
+ * |            |
+ * +------------+
+ * |            |
+ * | Fill Data  |
+ * |            |
+ * +------------+ + CSF_PAD_SIZE
+ */
+
+static bool is_hab_enabled(void);
+
+#if !defined(CONFIG_SPL_BUILD)
+
+#define MAX_RECORD_BYTES     (8*1024) /* 4 kbytes */
+
+struct record {
+       uint8_t  tag;                                           /* Tag */
+       uint8_t  len[2];                                        /* Length */
+       uint8_t  par;                                           /* Version */
+       uint8_t  contents[MAX_RECORD_BYTES];/* Record Data */
+       bool     any_rec_flag;
+};
+
+char *rsn_str[] = {"RSN = HAB_RSN_ANY (0x00)\n",
+                                  "RSN = HAB_ENG_FAIL (0x30)\n",
+                                  "RSN = HAB_INV_ADDRESS (0x22)\n",
+                                  "RSN = HAB_INV_ASSERTION (0x0C)\n",
+                                  "RSN = HAB_INV_CALL (0x28)\n",
+                                  "RSN = HAB_INV_CERTIFICATE (0x21)\n",
+                                  "RSN = HAB_INV_COMMAND (0x06)\n",
+                                  "RSN = HAB_INV_CSF (0x11)\n",
+                                  "RSN = HAB_INV_DCD (0x27)\n",
+                                  "RSN = HAB_INV_INDEX (0x0F)\n",
+                                  "RSN = HAB_INV_IVT (0x05)\n",
+                                  "RSN = HAB_INV_KEY (0x1D)\n",
+                                  "RSN = HAB_INV_RETURN (0x1E)\n",
+                                  "RSN = HAB_INV_SIGNATURE (0x18)\n",
+                                  "RSN = HAB_INV_SIZE (0x17)\n",
+                                  "RSN = HAB_MEM_FAIL (0x2E)\n",
+                                  "RSN = HAB_OVR_COUNT (0x2B)\n",
+                                  "RSN = HAB_OVR_STORAGE (0x2D)\n",
+                                  "RSN = HAB_UNS_ALGORITHM (0x12)\n",
+                                  "RSN = HAB_UNS_COMMAND (0x03)\n",
+                                  "RSN = HAB_UNS_ENGINE (0x0A)\n",
+                                  "RSN = HAB_UNS_ITEM (0x24)\n",
+                                  "RSN = HAB_UNS_KEY (0x1B)\n",
+                                  "RSN = HAB_UNS_PROTOCOL (0x14)\n",
+                                  "RSN = HAB_UNS_STATE (0x09)\n",
+                                  "RSN = INVALID\n",
+                                  NULL};
+
+char *sts_str[] = {"STS = HAB_SUCCESS (0xF0)\n",
+                                  "STS = HAB_FAILURE (0x33)\n",
+                                  "STS = HAB_WARNING (0x69)\n",
+                                  "STS = INVALID\n",
+                                  NULL};
+
+char *eng_str[] = {"ENG = HAB_ENG_ANY (0x00)\n",
+                                  "ENG = HAB_ENG_SCC (0x03)\n",
+                                  "ENG = HAB_ENG_RTIC (0x05)\n",
+                                  "ENG = HAB_ENG_SAHARA (0x06)\n",
+                                  "ENG = HAB_ENG_CSU (0x0A)\n",
+                                  "ENG = HAB_ENG_SRTC (0x0C)\n",
+                                  "ENG = HAB_ENG_DCP (0x1B)\n",
+                                  "ENG = HAB_ENG_CAAM (0x1D)\n",
+                                  "ENG = HAB_ENG_SNVS (0x1E)\n",
+                                  "ENG = HAB_ENG_OCOTP (0x21)\n",
+                                  "ENG = HAB_ENG_DTCP (0x22)\n",
+                                  "ENG = HAB_ENG_ROM (0x36)\n",
+                                  "ENG = HAB_ENG_HDCP (0x24)\n",
+                                  "ENG = HAB_ENG_RTL (0x77)\n",
+                                  "ENG = HAB_ENG_SW (0xFF)\n",
+                                  "ENG = INVALID\n",
+                                  NULL};
+
+char *ctx_str[] = {"CTX = HAB_CTX_ANY(0x00)\n",
+                                  "CTX = HAB_CTX_FAB (0xFF)\n",
+                                  "CTX = HAB_CTX_ENTRY (0xE1)\n",
+                                  "CTX = HAB_CTX_TARGET (0x33)\n",
+                                  "CTX = HAB_CTX_AUTHENTICATE (0x0A)\n",
+                                  "CTX = HAB_CTX_DCD (0xDD)\n",
+                                  "CTX = HAB_CTX_CSF (0xCF)\n",
+                                  "CTX = HAB_CTX_COMMAND (0xC0)\n",
+                                  "CTX = HAB_CTX_AUT_DAT (0xDB)\n",
+                                  "CTX = HAB_CTX_ASSERT (0xA0)\n",
+                                  "CTX = HAB_CTX_EXIT (0xEE)\n",
+                                  "CTX = INVALID\n",
+                                  NULL};
+
+uint8_t hab_statuses[5] = {
+       HAB_STS_ANY,
+       HAB_FAILURE,
+       HAB_WARNING,
+       HAB_SUCCESS,
+       -1
+};
+
+uint8_t hab_reasons[26] = {
+       HAB_RSN_ANY,
+       HAB_ENG_FAIL,
+       HAB_INV_ADDRESS,
+       HAB_INV_ASSERTION,
+       HAB_INV_CALL,
+       HAB_INV_CERTIFICATE,
+       HAB_INV_COMMAND,
+       HAB_INV_CSF,
+       HAB_INV_DCD,
+       HAB_INV_INDEX,
+       HAB_INV_IVT,
+       HAB_INV_KEY,
+       HAB_INV_RETURN,
+       HAB_INV_SIGNATURE,
+       HAB_INV_SIZE,
+       HAB_MEM_FAIL,
+       HAB_OVR_COUNT,
+       HAB_OVR_STORAGE,
+       HAB_UNS_ALGORITHM,
+       HAB_UNS_COMMAND,
+       HAB_UNS_ENGINE,
+       HAB_UNS_ITEM,
+       HAB_UNS_KEY,
+       HAB_UNS_PROTOCOL,
+       HAB_UNS_STATE,
+       -1
+};
+
+uint8_t hab_contexts[12] = {
+       HAB_CTX_ANY,
+       HAB_CTX_FAB,
+       HAB_CTX_ENTRY,
+       HAB_CTX_TARGET,
+       HAB_CTX_AUTHENTICATE,
+       HAB_CTX_DCD,
+       HAB_CTX_CSF,
+       HAB_CTX_COMMAND,
+       HAB_CTX_AUT_DAT,
+       HAB_CTX_ASSERT,
+       HAB_CTX_EXIT,
+       -1
+};
+
+uint8_t hab_engines[16] = {
+       HAB_ENG_ANY,
+       HAB_ENG_SCC,
+       HAB_ENG_RTIC,
+       HAB_ENG_SAHARA,
+       HAB_ENG_CSU,
+       HAB_ENG_SRTC,
+       HAB_ENG_DCP,
+       HAB_ENG_CAAM,
+       HAB_ENG_SNVS,
+       HAB_ENG_OCOTP,
+       HAB_ENG_DTCP,
+       HAB_ENG_ROM,
+       HAB_ENG_HDCP,
+       HAB_ENG_RTL,
+       HAB_ENG_SW,
+       -1
+};
+
+static inline uint8_t get_idx(uint8_t *list, uint8_t tgt)
+{
+       uint8_t idx = 0;
+       uint8_t element = list[idx];
+       while (element != -1) {
+               if (element == tgt)
+                       return idx;
+               element = list[++idx];
+       }
+       return -1;
+}
+
+void process_event_record(uint8_t *event_data, size_t bytes)
+{
+       struct record *rec = (struct record *)event_data;
+
+       printf("\n\n%s", sts_str[get_idx(hab_statuses, rec->contents[0])]);
+       printf("%s", rsn_str[get_idx(hab_reasons, rec->contents[1])]);
+       printf("%s", ctx_str[get_idx(hab_contexts, rec->contents[2])]);
+       printf("%s", eng_str[get_idx(hab_engines, rec->contents[3])]);
+}
+
+void display_event(uint8_t *event_data, size_t bytes)
+{
+       uint32_t i;
+
+       if (!(event_data && bytes > 0))
+               return;
+
+       for (i = 0; i < bytes; i++) {
+               if (i == 0)
+                       printf("\t0x%02x", event_data[i]);
+               else if ((i % 8) == 0)
+                       printf("\n\t0x%02x", event_data[i]);
+               else
+                       printf(" 0x%02x", event_data[i]);
+       }
+
+       process_event_record(event_data, bytes);
+}
+
+int get_hab_status(void)
+{
+       uint32_t index = 0; /* Loop index */
+       uint8_t event_data[128]; /* Event data buffer */
+       size_t bytes = sizeof(event_data); /* Event size in bytes */
+       enum hab_config config = 0;
+       enum hab_state state = 0;
+       hab_rvt_report_event_t *hab_rvt_report_event;
+       hab_rvt_report_status_t *hab_rvt_report_status;
+
+       hab_rvt_report_event = hab_rvt_report_event_p;
+       hab_rvt_report_status = hab_rvt_report_status_p;
+
+       if (is_hab_enabled())
+               puts("\nSecure boot enabled\n");
+       else
+               puts("\nSecure boot disabled\n");
+
+       /* Check HAB status */
+       if (hab_rvt_report_status(&config, &state) != HAB_SUCCESS) {
+               printf("\nHAB Configuration: 0x%02x, HAB State: 0x%02x\n",
+                      config, state);
+
+               /* Display HAB Error events */
+               while (hab_rvt_report_event(HAB_FAILURE, index, event_data,
+                                       &bytes) == HAB_SUCCESS) {
+                       puts("\n");
+                       printf("--------- HAB Event %d -----------------\n",
+                              index + 1);
+                       puts("event data:\n");
+                       display_event(event_data, bytes);
+                       puts("\n");
+                       bytes = sizeof(event_data);
+                       index++;
+               }
+       }
+       /* Display message if no HAB events are found */
+       else {
+               printf("\nHAB Configuration: 0x%02x, HAB State: 0x%02x\n",
+                      config, state);
+               puts("No HAB Events Found!\n\n");
+       }
+       return 0;
+}
+
+int do_hab_status(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       if ((argc != 1)) {
+               cmd_usage(cmdtp);
+               return 1;
+       }
+
+       get_hab_status();
+
+       return 0;
+}
+
+static int do_authenticate_image(cmd_tbl_t *cmdtp, int flag, int argc,
+                               char * const argv[])
+{
+       ulong   addr, ivt_offset;
+       int     rcode = 0;
+
+       if (argc < 3)
+               return CMD_RET_USAGE;
+
+       addr = simple_strtoul(argv[1], NULL, 16);
+       ivt_offset = simple_strtoul(argv[2], NULL, 16);
+
+       rcode = authenticate_image(addr, ivt_offset);
+
+       return rcode;
+}
+
+U_BOOT_CMD(
+               hab_status, CONFIG_SYS_MAXARGS, 1, do_hab_status,
+               "display HAB status",
+               ""
+         );
+
+U_BOOT_CMD(
+               hab_auth_img, 3, 0, do_authenticate_image,
+               "authenticate image via HAB",
+               "addr ivt_offset\n"
+               "addr - image hex address\n"
+               "ivt_offset - hex offset of IVT in the image"
+         );
+
+
+#endif /* !defined(CONFIG_SPL_BUILD) */
+
+static bool is_hab_enabled(void)
+{
+       struct imx_sec_config_fuse_t *fuse =
+               (struct imx_sec_config_fuse_t *)&imx_sec_config_fuse;
+       uint32_t reg;
+       int ret;
+
+       ret = fuse_read(fuse->bank, fuse->word, &reg);
+       if (ret) {
+               puts("\nSecure boot fuse read error\n");
+               return ret;
+       }
+
+       return (reg & IS_HAB_ENABLED_BIT) == IS_HAB_ENABLED_BIT;
+}
+
+uint32_t authenticate_image(uint32_t ddr_start, uint32_t image_size)
+{
+       uint32_t load_addr = 0;
+       size_t bytes;
+       ptrdiff_t ivt_offset = 0;
+       int result = 0;
+       ulong start;
+       hab_rvt_authenticate_image_t *hab_rvt_authenticate_image;
+       hab_rvt_entry_t *hab_rvt_entry;
+       hab_rvt_exit_t *hab_rvt_exit;
+
+       hab_rvt_authenticate_image = hab_rvt_authenticate_image_p;
+       hab_rvt_entry = hab_rvt_entry_p;
+       hab_rvt_exit = hab_rvt_exit_p;
+
+       if (is_hab_enabled()) {
+               printf("\nAuthenticate image from DDR location 0x%x...\n",
+                      ddr_start);
+
+               hab_caam_clock_enable(1);
+
+               if (hab_rvt_entry() == HAB_SUCCESS) {
+                       /* If not already aligned, Align to ALIGN_SIZE */
+                       ivt_offset = (image_size + ALIGN_SIZE - 1) &
+                                       ~(ALIGN_SIZE - 1);
+
+                       start = ddr_start;
+                       bytes = ivt_offset + IVT_SIZE + CSF_PAD_SIZE;
+#ifdef DEBUG
+                       printf("\nivt_offset = 0x%x, ivt addr = 0x%x\n",
+                              ivt_offset, ddr_start + ivt_offset);
+                       puts("Dumping IVT\n");
+                       print_buffer(ddr_start + ivt_offset,
+                                    (void *)(ddr_start + ivt_offset),
+                                    4, 0x8, 0);
+
+                       puts("Dumping CSF Header\n");
+                       print_buffer(ddr_start + ivt_offset+IVT_SIZE,
+                                    (void *)(ddr_start + ivt_offset+IVT_SIZE),
+                                    4, 0x10, 0);
+
+#if  !defined(CONFIG_SPL_BUILD)
+                       get_hab_status();
+#endif
+
+                       puts("\nCalling authenticate_image in ROM\n");
+                       printf("\tivt_offset = 0x%x\n", ivt_offset);
+                       printf("\tstart = 0x%08lx\n", start);
+                       printf("\tbytes = 0x%x\n", bytes);
+#endif
+                       /*
+                        * If the MMU is enabled, we have to notify the ROM
+                        * code, or it won't flush the caches when needed.
+                        * This is done, by setting the "pu_irom_mmu_enabled"
+                        * word to 1. You can find its address by looking in
+                        * the ROM map. This is critical for
+                        * authenticate_image(). If MMU is enabled, without
+                        * setting this bit, authentication will fail and may
+                        * crash.
+                        */
+                       /* Check MMU enabled */
+                       if (is_soc_type(MXC_SOC_MX6) && get_cr() & CR_M) {
+                               if (is_mx6dq()) {
+                                       /*
+                                        * This won't work on Rev 1.0.0 of
+                                        * i.MX6Q/D, since their ROM doesn't
+                                        * do cache flushes. don't think any
+                                        * exist, so we ignore them.
+                                        */
+                                       if (!is_mx6dqp())
+                                               writel(1, MX6DQ_PU_IROM_MMU_EN_VAR);
+                               } else if (is_mx6sdl()) {
+                                       writel(1, MX6DLS_PU_IROM_MMU_EN_VAR);
+                               } else if (is_mx6sl()) {
+                                       writel(1, MX6SL_PU_IROM_MMU_EN_VAR);
+                               }
+                       }
+
+                       load_addr = (uint32_t)hab_rvt_authenticate_image(
+                                       HAB_CID_UBOOT,
+                                       ivt_offset, (void **)&start,
+                                       (size_t *)&bytes, NULL);
+                       if (hab_rvt_exit() != HAB_SUCCESS) {
+                               puts("hab exit function fail\n");
+                               load_addr = 0;
+                       }
+               } else {
+                       puts("hab entry function fail\n");
+               }
+
+               hab_caam_clock_enable(0);
+
+#if !defined(CONFIG_SPL_BUILD)
+               get_hab_status();
+#endif
+       } else {
+               puts("hab fuse not enabled\n");
+       }
+
+       if ((!is_hab_enabled()) || (load_addr != 0))
+               result = 1;
+
+       return result;
+}
diff --git a/arch/arm/mach-imx/i2c-mxv7.c b/arch/arm/mach-imx/i2c-mxv7.c
new file mode 100644 (file)
index 0000000..dfb5c1e
--- /dev/null
@@ -0,0 +1,118 @@
+/*
+ * Copyright (C) 2012 Boundary Devices Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <malloc.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/imx-regs.h>
+#include <linux/errno.h>
+#include <asm/gpio.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <watchdog.h>
+
+int force_idle_bus(void *priv)
+{
+       int i;
+       int sda, scl;
+       ulong elapsed, start_time;
+       struct i2c_pads_info *p = (struct i2c_pads_info *)priv;
+       int ret = 0;
+
+       gpio_direction_input(p->sda.gp);
+       gpio_direction_input(p->scl.gp);
+
+       imx_iomux_v3_setup_pad(p->sda.gpio_mode);
+       imx_iomux_v3_setup_pad(p->scl.gpio_mode);
+
+       sda = gpio_get_value(p->sda.gp);
+       scl = gpio_get_value(p->scl.gp);
+       if ((sda & scl) == 1)
+               goto exit;              /* Bus is idle already */
+
+       printf("%s: sda=%d scl=%d sda.gp=0x%x scl.gp=0x%x\n", __func__,
+               sda, scl, p->sda.gp, p->scl.gp);
+       /* Send high and low on the SCL line */
+       for (i = 0; i < 9; i++) {
+               gpio_direction_output(p->scl.gp, 0);
+               udelay(50);
+               gpio_direction_input(p->scl.gp);
+               udelay(50);
+       }
+       start_time = get_timer(0);
+       for (;;) {
+               sda = gpio_get_value(p->sda.gp);
+               scl = gpio_get_value(p->scl.gp);
+               if ((sda & scl) == 1)
+                       break;
+               WATCHDOG_RESET();
+               elapsed = get_timer(start_time);
+               if (elapsed > (CONFIG_SYS_HZ / 5)) {    /* .2 seconds */
+                       ret = -EBUSY;
+                       printf("%s: failed to clear bus, sda=%d scl=%d\n",
+                                       __func__, sda, scl);
+                       break;
+               }
+       }
+exit:
+       imx_iomux_v3_setup_pad(p->sda.i2c_mode);
+       imx_iomux_v3_setup_pad(p->scl.i2c_mode);
+       return ret;
+}
+
+static void * const i2c_bases[] = {
+       (void *)I2C1_BASE_ADDR,
+       (void *)I2C2_BASE_ADDR,
+#ifdef I2C3_BASE_ADDR
+       (void *)I2C3_BASE_ADDR,
+#endif
+#ifdef I2C4_BASE_ADDR
+       (void *)I2C4_BASE_ADDR,
+#endif
+};
+
+/* i2c_index can be from 0 - 3 */
+int setup_i2c(unsigned i2c_index, int speed, int slave_addr,
+             struct i2c_pads_info *p)
+{
+       char name[9];
+       int ret;
+
+       if (i2c_index >= ARRAY_SIZE(i2c_bases))
+               return -EINVAL;
+
+       snprintf(name, sizeof(name), "i2c_sda%01d", i2c_index);
+       ret = gpio_request(p->sda.gp, name);
+       if (ret)
+               return ret;
+
+       snprintf(name, sizeof(name), "i2c_scl%01d", i2c_index);
+       ret = gpio_request(p->scl.gp, name);
+       if (ret)
+               goto err_req;
+
+       /* Enable i2c clock */
+       ret = enable_i2c_clk(1, i2c_index);
+       if (ret)
+               goto err_clk;
+
+       /* Make sure bus is idle */
+       ret = force_idle_bus(p);
+       if (ret)
+               goto err_idle;
+
+#ifndef CONFIG_DM_I2C
+       bus_i2c_init(i2c_index, speed, slave_addr, force_idle_bus, p);
+#endif
+
+       return 0;
+
+err_idle:
+err_clk:
+       gpio_free(p->scl.gp);
+err_req:
+       gpio_free(p->sda.gp);
+
+       return ret;
+}
diff --git a/arch/arm/mach-imx/imx_bootaux.c b/arch/arm/mach-imx/imx_bootaux.c
new file mode 100644 (file)
index 0000000..69026df
--- /dev/null
@@ -0,0 +1,72 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <command.h>
+
+/* Allow for arch specific config before we boot */
+static int __arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
+{
+       /* please define platform specific arch_auxiliary_core_up() */
+       return CMD_RET_FAILURE;
+}
+
+int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
+       __attribute__((weak, alias("__arch_auxiliary_core_up")));
+
+/* Allow for arch specific config before we boot */
+static int __arch_auxiliary_core_check_up(u32 core_id)
+{
+       /* please define platform specific arch_auxiliary_core_check_up() */
+       return 0;
+}
+
+int arch_auxiliary_core_check_up(u32 core_id)
+       __attribute__((weak, alias("__arch_auxiliary_core_check_up")));
+
+/*
+ * To i.MX6SX and i.MX7D, the image supported by bootaux needs
+ * the reset vector at the head for the image, with SP and PC
+ * as the first two words.
+ *
+ * Per the cortex-M reference manual, the reset vector of M4 needs
+ * to exist at 0x0 (TCMUL). The PC and SP are the first two addresses
+ * of that vector.  So to boot M4, the A core must build the M4's reset
+ * vector with getting the PC and SP from image and filling them to
+ * TCMUL. When M4 is kicked, it will load the PC and SP by itself.
+ * The TCMUL is mapped to (M4_BOOTROM_BASE_ADDR) at A core side for
+ * accessing the M4 TCMUL.
+ */
+int do_bootaux(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       ulong addr;
+       int ret, up;
+
+       if (argc < 2)
+               return CMD_RET_USAGE;
+
+       up = arch_auxiliary_core_check_up(0);
+       if (up) {
+               printf("## Auxiliary core is already up\n");
+               return CMD_RET_SUCCESS;
+       }
+
+       addr = simple_strtoul(argv[1], NULL, 16);
+
+       printf("## Starting auxiliary core at 0x%08lX ...\n", addr);
+
+       ret = arch_auxiliary_core_up(0, addr);
+       if (ret)
+               return CMD_RET_FAILURE;
+
+       return CMD_RET_SUCCESS;
+}
+
+U_BOOT_CMD(
+       bootaux, CONFIG_SYS_MAXARGS, 1, do_bootaux,
+       "Start auxiliary core",
+       ""
+);
diff --git a/arch/arm/mach-imx/init.c b/arch/arm/mach-imx/init.c
new file mode 100644 (file)
index 0000000..720ad67
--- /dev/null
@@ -0,0 +1,127 @@
+/*
+ * 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/mach-imx/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_mx6ull() || is_mx6sx() || is_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_mx6sx() || is_mx6ul() || is_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);
+}
+
+#ifdef CONFIG_CMD_BMODE
+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);
+}
+#endif
+
+#if defined(CONFIG_MX6)
+u32 imx6_src_get_boot_mode(void)
+{
+       if (imx6_is_bmode_from_gpr9())
+               return readl(&src_base->gpr9);
+       else
+               return readl(&src_base->sbmr1);
+}
+#endif
diff --git a/arch/arm/mach-imx/iomux-v3.c b/arch/arm/mach-imx/iomux-v3.c
new file mode 100644 (file)
index 0000000..94d6600
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Based on the iomux-v3.c from Linux kernel:
+ * Copyright (C) 2008 by Sascha Hauer <kernel@pengutronix.de>
+ * Copyright (C) 2009 by Jan Weitzel Phytec Messtechnik GmbH,
+ *                       <armlinux@phytec.de>
+ *
+ * Copyright (C) 2004-2011 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/sys_proto.h>
+
+static void *base = (void *)IOMUXC_BASE_ADDR;
+
+/*
+ * configures a single pad in the iomuxer
+ */
+void imx_iomux_v3_setup_pad(iomux_v3_cfg_t pad)
+{
+       u32 mux_ctrl_ofs = (pad & MUX_CTRL_OFS_MASK) >> MUX_CTRL_OFS_SHIFT;
+       u32 mux_mode = (pad & MUX_MODE_MASK) >> MUX_MODE_SHIFT;
+       u32 sel_input_ofs =
+               (pad & MUX_SEL_INPUT_OFS_MASK) >> MUX_SEL_INPUT_OFS_SHIFT;
+       u32 sel_input =
+               (pad & MUX_SEL_INPUT_MASK) >> MUX_SEL_INPUT_SHIFT;
+       u32 pad_ctrl_ofs =
+               (pad & MUX_PAD_CTRL_OFS_MASK) >> MUX_PAD_CTRL_OFS_SHIFT;
+       u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT;
+
+#if defined(CONFIG_MX6SL) || defined(CONFIG_MX6SLL)
+       /* Check whether LVE bit needs to be set */
+       if (pad_ctrl & PAD_CTL_LVE) {
+               pad_ctrl &= ~PAD_CTL_LVE;
+               pad_ctrl |= PAD_CTL_LVE_BIT;
+       }
+#endif
+
+#ifdef CONFIG_IOMUX_LPSR
+       u32 lpsr = (pad & MUX_MODE_LPSR) >> MUX_MODE_SHIFT;
+
+#ifdef CONFIG_MX7
+       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;
+       }
+#else
+       if (is_mx6ull() || is_mx6sll()) {
+               if (lpsr == IOMUX_CONFIG_LPSR) {
+                       base = (void *)IOMUXC_SNVS_BASE_ADDR;
+                       mux_mode &= ~IOMUX_CONFIG_LPSR;
+               }
+       }
+#endif
+#endif
+
+       if (is_mx7() || is_mx6ull() || is_mx6sll() || mux_ctrl_ofs)
+               __raw_writel(mux_mode, base + mux_ctrl_ofs);
+
+       if (sel_input_ofs)
+               __raw_writel(sel_input, base + sel_input_ofs);
+
+#ifdef CONFIG_IOMUX_SHARE_CONF_REG
+       if (!(pad_ctrl & NO_PAD_CTRL))
+               __raw_writel((mux_mode << PAD_MUX_MODE_SHIFT) | pad_ctrl,
+                       base + pad_ctrl_ofs);
+#else
+       if (!(pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs)
+               __raw_writel(pad_ctrl, base + pad_ctrl_ofs);
+#if defined(CONFIG_MX6SLL)
+       else if ((pad_ctrl & NO_PAD_CTRL) && pad_ctrl_ofs)
+               clrbits_le32(base + pad_ctrl_ofs, PAD_CTL_IPD_BIT);
+#endif
+#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 */
+void imx_iomux_v3_setup_multiple_pads(iomux_v3_cfg_t const *pad_list,
+                                     unsigned count)
+{
+       iomux_v3_cfg_t const *p = pad_list;
+       int stride;
+       int i;
+
+#if defined(CONFIG_MX6QDL)
+       stride = 2;
+       if (!is_mx6dq() && !is_mx6dqp())
+               p += 1;
+#else
+       stride = 1;
+#endif
+       for (i = 0; i < count; i++) {
+               imx_iomux_v3_setup_pad(*p);
+               p += stride;
+       }
+}
+
+void imx_iomux_set_gpr_register(int group, int start_bit,
+                                       int num_bits, int value)
+{
+       int i = 0;
+       u32 reg;
+       reg = readl(base + group * 4);
+       while (num_bits) {
+               reg &= ~(1<<(start_bit + i));
+               i++;
+               num_bits--;
+       }
+       reg |= (value << start_bit);
+       writel(reg, base + group * 4);
+}
+
+#ifdef CONFIG_IOMUX_SHARE_CONF_REG
+void imx_iomux_gpio_set_direction(unsigned int gpio,
+                               unsigned int direction)
+{
+       u32 reg;
+       /*
+        * Only on Vybrid the input/output buffer enable flags
+        * are part of the shared mux/conf register.
+        */
+       reg = readl(base + (gpio << 2));
+
+       if (direction)
+               reg |= 0x2;
+       else
+               reg &= ~0x2;
+
+       writel(reg, base + (gpio << 2));
+}
+
+void imx_iomux_gpio_get_function(unsigned int gpio, u32 *gpio_state)
+{
+       *gpio_state = readl(base + (gpio << 2)) &
+               ((0X07 << PAD_MUX_MODE_SHIFT) | PAD_CTL_OBE_IBE_ENABLE);
+}
+#endif
diff --git a/arch/arm/mach-imx/misc.c b/arch/arm/mach-imx/misc.c
new file mode 100644 (file)
index 0000000..c644183
--- /dev/null
@@ -0,0 +1,74 @@
+/*
+ * Copyright 2013 Stefan Roese <sr@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/sys_proto.h>
+#include <linux/errno.h>
+#include <asm/io.h>
+#include <asm/mach-imx/regs-common.h>
+
+/* 1 second delay should be plenty of time for block reset. */
+#define        RESET_MAX_TIMEOUT       1000000
+
+#define        MXS_BLOCK_SFTRST        (1 << 31)
+#define        MXS_BLOCK_CLKGATE       (1 << 30)
+
+int mxs_wait_mask_set(struct mxs_register_32 *reg, uint32_t mask, unsigned
+                                                               int timeout)
+{
+       while (--timeout) {
+               if ((readl(&reg->reg) & mask) == mask)
+                       break;
+               udelay(1);
+       }
+
+       return !timeout;
+}
+
+int mxs_wait_mask_clr(struct mxs_register_32 *reg, uint32_t mask, unsigned
+                                                               int timeout)
+{
+       while (--timeout) {
+               if ((readl(&reg->reg) & mask) == 0)
+                       break;
+               udelay(1);
+       }
+
+       return !timeout;
+}
+
+int mxs_reset_block(struct mxs_register_32 *reg)
+{
+       /* Clear SFTRST */
+       writel(MXS_BLOCK_SFTRST, &reg->reg_clr);
+
+       if (mxs_wait_mask_clr(reg, MXS_BLOCK_SFTRST, RESET_MAX_TIMEOUT))
+               return 1;
+
+       /* Clear CLKGATE */
+       writel(MXS_BLOCK_CLKGATE, &reg->reg_clr);
+
+       /* Set SFTRST */
+       writel(MXS_BLOCK_SFTRST, &reg->reg_set);
+
+       /* Wait for CLKGATE being set */
+       if (mxs_wait_mask_set(reg, MXS_BLOCK_CLKGATE, RESET_MAX_TIMEOUT))
+               return 1;
+
+       /* Clear SFTRST */
+       writel(MXS_BLOCK_SFTRST, &reg->reg_clr);
+
+       if (mxs_wait_mask_clr(reg, MXS_BLOCK_SFTRST, RESET_MAX_TIMEOUT))
+               return 1;
+
+       /* Clear CLKGATE */
+       writel(MXS_BLOCK_CLKGATE, &reg->reg_clr);
+
+       if (mxs_wait_mask_clr(reg, MXS_BLOCK_CLKGATE, RESET_MAX_TIMEOUT))
+               return 1;
+
+       return 0;
+}
diff --git a/arch/arm/mach-imx/mx5/Kconfig b/arch/arm/mach-imx/mx5/Kconfig
new file mode 100644 (file)
index 0000000..ef37c35
--- /dev/null
@@ -0,0 +1,76 @@
+if ARCH_MX5
+
+config MX5
+       bool
+       default y
+
+config MX51
+       bool
+
+config MX53
+       bool
+
+choice
+       prompt "MX5 board select"
+       optional
+
+config TARGET_M53EVK
+       bool "Support m53evk"
+       select MX53
+       select SUPPORT_SPL
+
+config TARGET_MX51EVK
+       bool "Support mx51evk"
+       select BOARD_LATE_INIT
+       select MX51
+
+config TARGET_MX53ARD
+       bool "Support mx53ard"
+       select MX53
+
+config TARGET_MX53CX9020
+       bool "Support CX9020"
+       select BOARD_LATE_INIT
+       select MX53
+       select DM
+       select DM_SERIAL
+
+config TARGET_MX53EVK
+       bool "Support mx53evk"
+       select BOARD_LATE_INIT
+       select MX53
+
+config TARGET_MX53LOCO
+       bool "Support mx53loco"
+       select BOARD_LATE_INIT
+       select MX53
+
+config TARGET_MX53SMD
+       bool "Support mx53smd"
+       select MX53
+
+config TARGET_TS4800
+       bool "Support TS4800"
+       select MX51
+       select SYS_FSL_ERRATUM_ESDHC_A001
+
+config TARGET_USBARMORY
+       bool "Support USB armory"
+       select MX53
+
+endchoice
+
+config SYS_SOC
+       default "mx5"
+
+source "board/aries/m53evk/Kconfig"
+source "board/beckhoff/mx53cx9020/Kconfig"
+source "board/freescale/mx51evk/Kconfig"
+source "board/freescale/mx53ard/Kconfig"
+source "board/freescale/mx53evk/Kconfig"
+source "board/freescale/mx53loco/Kconfig"
+source "board/freescale/mx53smd/Kconfig"
+source "board/inversepath/usbarmory/Kconfig"
+source "board/technologic/ts4800/Kconfig"
+
+endif
diff --git a/arch/arm/mach-imx/mx5/Makefile b/arch/arm/mach-imx/mx5/Makefile
new file mode 100644 (file)
index 0000000..d021842
--- /dev/null
@@ -0,0 +1,11 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# (C) Copyright 2009 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y := soc.o clock.o
+obj-y += lowlevel_init.o
diff --git a/arch/arm/mach-imx/mx5/clock.c b/arch/arm/mach-imx/mx5/clock.c
new file mode 100644 (file)
index 0000000..610098c
--- /dev/null
@@ -0,0 +1,949 @@
+/*
+ * (C) Copyright 2007
+ * Sascha Hauer, Pengutronix
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <linux/errno.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/arch/clock.h>
+#include <div64.h>
+#include <asm/arch/sys_proto.h>
+
+enum pll_clocks {
+       PLL1_CLOCK = 0,
+       PLL2_CLOCK,
+       PLL3_CLOCK,
+#ifdef CONFIG_MX53
+       PLL4_CLOCK,
+#endif
+       PLL_CLOCKS,
+};
+
+struct mxc_pll_reg *mxc_plls[PLL_CLOCKS] = {
+       [PLL1_CLOCK] = (struct mxc_pll_reg *)PLL1_BASE_ADDR,
+       [PLL2_CLOCK] = (struct mxc_pll_reg *)PLL2_BASE_ADDR,
+       [PLL3_CLOCK] = (struct mxc_pll_reg *)PLL3_BASE_ADDR,
+#ifdef CONFIG_MX53
+       [PLL4_CLOCK] = (struct mxc_pll_reg *)PLL4_BASE_ADDR,
+#endif
+};
+
+#define AHB_CLK_ROOT    133333333
+#define SZ_DEC_1M       1000000
+#define PLL_PD_MAX      16      /* Actual pd+1 */
+#define PLL_MFI_MAX     15
+#define PLL_MFI_MIN     5
+#define ARM_DIV_MAX     8
+#define IPG_DIV_MAX     4
+#define AHB_DIV_MAX     8
+#define EMI_DIV_MAX     8
+#define NFC_DIV_MAX     8
+
+#define MX5_CBCMR      0x00015154
+#define MX5_CBCDR      0x02888945
+
+struct fixed_pll_mfd {
+       u32 ref_clk_hz;
+       u32 mfd;
+};
+
+const struct fixed_pll_mfd fixed_mfd[] = {
+       {MXC_HCLK, 24 * 16},
+};
+
+struct pll_param {
+       u32 pd;
+       u32 mfi;
+       u32 mfn;
+       u32 mfd;
+};
+
+#define PLL_FREQ_MAX(ref_clk)  (4 * (ref_clk) * PLL_MFI_MAX)
+#define PLL_FREQ_MIN(ref_clk) \
+               ((2 * (ref_clk) * (PLL_MFI_MIN - 1)) / PLL_PD_MAX)
+#define MAX_DDR_CLK     420000000
+#define NFC_CLK_MAX     34000000
+
+struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)MXC_CCM_BASE;
+
+void set_usboh3_clk(void)
+{
+       clrsetbits_le32(&mxc_ccm->cscmr1,
+                       MXC_CCM_CSCMR1_USBOH3_CLK_SEL_MASK,
+                       MXC_CCM_CSCMR1_USBOH3_CLK_SEL(1));
+       clrsetbits_le32(&mxc_ccm->cscdr1,
+                       MXC_CCM_CSCDR1_USBOH3_CLK_PODF_MASK |
+                       MXC_CCM_CSCDR1_USBOH3_CLK_PRED_MASK,
+                       MXC_CCM_CSCDR1_USBOH3_CLK_PRED(4) |
+                       MXC_CCM_CSCDR1_USBOH3_CLK_PODF(1));
+}
+
+void enable_usboh3_clk(bool enable)
+{
+       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
+
+       clrsetbits_le32(&mxc_ccm->CCGR2,
+                       MXC_CCM_CCGR2_USBOH3_60M(MXC_CCM_CCGR_CG_MASK),
+                       MXC_CCM_CCGR2_USBOH3_60M(cg));
+}
+
+#ifdef CONFIG_SYS_I2C_MXC
+/* i2c_num can be from 0, to 1 for i.MX51 and 2 for i.MX53 */
+int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
+{
+       u32 mask;
+
+#if defined(CONFIG_MX51)
+       if (i2c_num > 1)
+#elif defined(CONFIG_MX53)
+       if (i2c_num > 2)
+#endif
+               return -EINVAL;
+       mask = MXC_CCM_CCGR_CG_MASK <<
+                       (MXC_CCM_CCGR1_I2C1_OFFSET + (i2c_num << 1));
+       if (enable)
+               setbits_le32(&mxc_ccm->CCGR1, mask);
+       else
+               clrbits_le32(&mxc_ccm->CCGR1, mask);
+       return 0;
+}
+#endif
+
+void set_usb_phy_clk(void)
+{
+       clrbits_le32(&mxc_ccm->cscmr1, MXC_CCM_CSCMR1_USB_PHY_CLK_SEL);
+}
+
+#if defined(CONFIG_MX51)
+void enable_usb_phy1_clk(bool enable)
+{
+       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
+
+       clrsetbits_le32(&mxc_ccm->CCGR2,
+                       MXC_CCM_CCGR2_USB_PHY(MXC_CCM_CCGR_CG_MASK),
+                       MXC_CCM_CCGR2_USB_PHY(cg));
+}
+
+void enable_usb_phy2_clk(bool enable)
+{
+       /* i.MX51 has a single USB PHY clock, so do nothing here. */
+}
+#elif defined(CONFIG_MX53)
+void enable_usb_phy1_clk(bool enable)
+{
+       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
+
+       clrsetbits_le32(&mxc_ccm->CCGR4,
+                       MXC_CCM_CCGR4_USB_PHY1(MXC_CCM_CCGR_CG_MASK),
+                       MXC_CCM_CCGR4_USB_PHY1(cg));
+}
+
+void enable_usb_phy2_clk(bool enable)
+{
+       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
+
+       clrsetbits_le32(&mxc_ccm->CCGR4,
+                       MXC_CCM_CCGR4_USB_PHY2(MXC_CCM_CCGR_CG_MASK),
+                       MXC_CCM_CCGR4_USB_PHY2(cg));
+}
+#endif
+
+/*
+ * Calculate the frequency of PLLn.
+ */
+static uint32_t decode_pll(struct mxc_pll_reg *pll, uint32_t infreq)
+{
+       uint32_t ctrl, op, mfd, mfn, mfi, pdf, ret;
+       uint64_t refclk, temp;
+       int32_t mfn_abs;
+
+       ctrl = readl(&pll->ctrl);
+
+       if (ctrl & MXC_DPLLC_CTL_HFSM) {
+               mfn = readl(&pll->hfs_mfn);
+               mfd = readl(&pll->hfs_mfd);
+               op = readl(&pll->hfs_op);
+       } else {
+               mfn = readl(&pll->mfn);
+               mfd = readl(&pll->mfd);
+               op = readl(&pll->op);
+       }
+
+       mfd &= MXC_DPLLC_MFD_MFD_MASK;
+       mfn &= MXC_DPLLC_MFN_MFN_MASK;
+       pdf = op & MXC_DPLLC_OP_PDF_MASK;
+       mfi = MXC_DPLLC_OP_MFI_RD(op);
+
+       /* 21.2.3 */
+       if (mfi < 5)
+               mfi = 5;
+
+       /* Sign extend */
+       if (mfn >= 0x04000000) {
+               mfn |= 0xfc000000;
+               mfn_abs = -mfn;
+       } else
+               mfn_abs = mfn;
+
+       refclk = infreq * 2;
+       if (ctrl & MXC_DPLLC_CTL_DPDCK0_2_EN)
+               refclk *= 2;
+
+       do_div(refclk, pdf + 1);
+       temp = refclk * mfn_abs;
+       do_div(temp, mfd + 1);
+       ret = refclk * mfi;
+
+       if ((int)mfn < 0)
+               ret -= temp;
+       else
+               ret += temp;
+
+       return ret;
+}
+
+#ifdef CONFIG_MX51
+/*
+ * This function returns the Frequency Pre-Multiplier clock.
+ */
+static u32 get_fpm(void)
+{
+       u32 mult;
+       u32 ccr = readl(&mxc_ccm->ccr);
+
+       if (ccr & MXC_CCM_CCR_FPM_MULT)
+               mult = 1024;
+       else
+               mult = 512;
+
+       return MXC_CLK32 * mult;
+}
+#endif
+
+/*
+ * This function returns the low power audio clock.
+ */
+static u32 get_lp_apm(void)
+{
+       u32 ret_val = 0;
+       u32 ccsr = readl(&mxc_ccm->ccsr);
+
+       if (ccsr & MXC_CCM_CCSR_LP_APM)
+#if defined(CONFIG_MX51)
+               ret_val = get_fpm();
+#elif defined(CONFIG_MX53)
+               ret_val = decode_pll(mxc_plls[PLL4_CLOCK], MXC_HCLK);
+#endif
+       else
+               ret_val = MXC_HCLK;
+
+       return ret_val;
+}
+
+/*
+ * Get mcu main rate
+ */
+u32 get_mcu_main_clk(void)
+{
+       u32 reg, freq;
+
+       reg = MXC_CCM_CACRR_ARM_PODF_RD(readl(&mxc_ccm->cacrr));
+       freq = decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
+       return freq / (reg + 1);
+}
+
+/*
+ * Get the rate of peripheral's root clock.
+ */
+u32 get_periph_clk(void)
+{
+       u32 reg;
+
+       reg = readl(&mxc_ccm->cbcdr);
+       if (!(reg & MXC_CCM_CBCDR_PERIPH_CLK_SEL))
+               return decode_pll(mxc_plls[PLL2_CLOCK], MXC_HCLK);
+       reg = readl(&mxc_ccm->cbcmr);
+       switch (MXC_CCM_CBCMR_PERIPH_CLK_SEL_RD(reg)) {
+       case 0:
+               return decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
+       case 1:
+               return decode_pll(mxc_plls[PLL3_CLOCK], MXC_HCLK);
+       case 2:
+               return get_lp_apm();
+       default:
+               return 0;
+       }
+       /* NOTREACHED */
+}
+
+/*
+ * Get the rate of ipg clock.
+ */
+static u32 get_ipg_clk(void)
+{
+       uint32_t freq, reg, div;
+
+       freq = get_ahb_clk();
+
+       reg = readl(&mxc_ccm->cbcdr);
+       div = MXC_CCM_CBCDR_IPG_PODF_RD(reg) + 1;
+
+       return freq / div;
+}
+
+/*
+ * Get the rate of ipg_per clock.
+ */
+static u32 get_ipg_per_clk(void)
+{
+       u32 freq, pred1, pred2, podf;
+
+       if (readl(&mxc_ccm->cbcmr) & MXC_CCM_CBCMR_PERCLK_IPG_CLK_SEL)
+               return get_ipg_clk();
+
+       if (readl(&mxc_ccm->cbcmr) & MXC_CCM_CBCMR_PERCLK_LP_APM_CLK_SEL)
+               freq = get_lp_apm();
+       else
+               freq = get_periph_clk();
+       podf = readl(&mxc_ccm->cbcdr);
+       pred1 = MXC_CCM_CBCDR_PERCLK_PRED1_RD(podf);
+       pred2 = MXC_CCM_CBCDR_PERCLK_PRED2_RD(podf);
+       podf = MXC_CCM_CBCDR_PERCLK_PODF_RD(podf);
+       return freq / ((pred1 + 1) * (pred2 + 1) * (podf + 1));
+}
+
+/* Get the output clock rate of a standard PLL MUX for peripherals. */
+static u32 get_standard_pll_sel_clk(u32 clk_sel)
+{
+       u32 freq = 0;
+
+       switch (clk_sel & 0x3) {
+       case 0:
+               freq = decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
+               break;
+       case 1:
+               freq = decode_pll(mxc_plls[PLL2_CLOCK], MXC_HCLK);
+               break;
+       case 2:
+               freq = decode_pll(mxc_plls[PLL3_CLOCK], MXC_HCLK);
+               break;
+       case 3:
+               freq = get_lp_apm();
+               break;
+       }
+
+       return freq;
+}
+
+/*
+ * Get the rate of uart clk.
+ */
+static u32 get_uart_clk(void)
+{
+       unsigned int clk_sel, freq, reg, pred, podf;
+
+       reg = readl(&mxc_ccm->cscmr1);
+       clk_sel = MXC_CCM_CSCMR1_UART_CLK_SEL_RD(reg);
+       freq = get_standard_pll_sel_clk(clk_sel);
+
+       reg = readl(&mxc_ccm->cscdr1);
+       pred = MXC_CCM_CSCDR1_UART_CLK_PRED_RD(reg);
+       podf = MXC_CCM_CSCDR1_UART_CLK_PODF_RD(reg);
+       freq /= (pred + 1) * (podf + 1);
+
+       return freq;
+}
+
+/*
+ * get cspi clock rate.
+ */
+static u32 imx_get_cspiclk(void)
+{
+       u32 ret_val = 0, pdf, pre_pdf, clk_sel, freq;
+       u32 cscmr1 = readl(&mxc_ccm->cscmr1);
+       u32 cscdr2 = readl(&mxc_ccm->cscdr2);
+
+       pre_pdf = MXC_CCM_CSCDR2_CSPI_CLK_PRED_RD(cscdr2);
+       pdf = MXC_CCM_CSCDR2_CSPI_CLK_PODF_RD(cscdr2);
+       clk_sel = MXC_CCM_CSCMR1_CSPI_CLK_SEL_RD(cscmr1);
+       freq = get_standard_pll_sel_clk(clk_sel);
+       ret_val = freq / ((pre_pdf + 1) * (pdf + 1));
+       return ret_val;
+}
+
+/*
+ * get esdhc clock rate.
+ */
+static u32 get_esdhc_clk(u32 port)
+{
+       u32 clk_sel = 0, pred = 0, podf = 0, freq = 0;
+       u32 cscmr1 = readl(&mxc_ccm->cscmr1);
+       u32 cscdr1 = readl(&mxc_ccm->cscdr1);
+
+       switch (port) {
+       case 0:
+               clk_sel = MXC_CCM_CSCMR1_ESDHC1_MSHC1_CLK_SEL_RD(cscmr1);
+               pred = MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PRED_RD(cscdr1);
+               podf = MXC_CCM_CSCDR1_ESDHC1_MSHC1_CLK_PODF_RD(cscdr1);
+               break;
+       case 1:
+               clk_sel = MXC_CCM_CSCMR1_ESDHC2_MSHC2_CLK_SEL_RD(cscmr1);
+               pred = MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PRED_RD(cscdr1);
+               podf = MXC_CCM_CSCDR1_ESDHC2_MSHC2_CLK_PODF_RD(cscdr1);
+               break;
+       case 2:
+               if (cscmr1 & MXC_CCM_CSCMR1_ESDHC3_CLK_SEL)
+                       return get_esdhc_clk(1);
+               else
+                       return get_esdhc_clk(0);
+       case 3:
+               if (cscmr1 & MXC_CCM_CSCMR1_ESDHC4_CLK_SEL)
+                       return get_esdhc_clk(1);
+               else
+                       return get_esdhc_clk(0);
+       default:
+               break;
+       }
+
+       freq = get_standard_pll_sel_clk(clk_sel) / ((pred + 1) * (podf + 1));
+       return freq;
+}
+
+static u32 get_axi_a_clk(void)
+{
+       u32 cbcdr = readl(&mxc_ccm->cbcdr);
+       u32 pdf = MXC_CCM_CBCDR_AXI_A_PODF_RD(cbcdr);
+
+       return  get_periph_clk() / (pdf + 1);
+}
+
+static u32 get_axi_b_clk(void)
+{
+       u32 cbcdr = readl(&mxc_ccm->cbcdr);
+       u32 pdf = MXC_CCM_CBCDR_AXI_B_PODF_RD(cbcdr);
+
+       return  get_periph_clk() / (pdf + 1);
+}
+
+static u32 get_emi_slow_clk(void)
+{
+       u32 cbcdr = readl(&mxc_ccm->cbcdr);
+       u32 emi_clk_sel = cbcdr & MXC_CCM_CBCDR_EMI_CLK_SEL;
+       u32 pdf = MXC_CCM_CBCDR_EMI_PODF_RD(cbcdr);
+
+       if (emi_clk_sel)
+               return  get_ahb_clk() / (pdf + 1);
+
+       return  get_periph_clk() / (pdf + 1);
+}
+
+static u32 get_ddr_clk(void)
+{
+       u32 ret_val = 0;
+       u32 cbcmr = readl(&mxc_ccm->cbcmr);
+       u32 ddr_clk_sel = MXC_CCM_CBCMR_DDR_CLK_SEL_RD(cbcmr);
+#ifdef CONFIG_MX51
+       u32 cbcdr = readl(&mxc_ccm->cbcdr);
+       if (cbcdr & MXC_CCM_CBCDR_DDR_HIFREQ_SEL) {
+               u32 ddr_clk_podf = MXC_CCM_CBCDR_DDR_PODF_RD(cbcdr);
+
+               ret_val = decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
+               ret_val /= ddr_clk_podf + 1;
+
+               return ret_val;
+       }
+#endif
+       switch (ddr_clk_sel) {
+       case 0:
+               ret_val = get_axi_a_clk();
+               break;
+       case 1:
+               ret_val = get_axi_b_clk();
+               break;
+       case 2:
+               ret_val = get_emi_slow_clk();
+               break;
+       case 3:
+               ret_val = get_ahb_clk();
+               break;
+       default:
+               break;
+       }
+
+       return ret_val;
+}
+
+/*
+ * The API of get mxc clocks.
+ */
+unsigned int mxc_get_clock(enum mxc_clock clk)
+{
+       switch (clk) {
+       case MXC_ARM_CLK:
+               return get_mcu_main_clk();
+       case MXC_AHB_CLK:
+               return get_ahb_clk();
+       case MXC_IPG_CLK:
+               return get_ipg_clk();
+       case MXC_IPG_PERCLK:
+       case MXC_I2C_CLK:
+               return get_ipg_per_clk();
+       case MXC_UART_CLK:
+               return get_uart_clk();
+       case MXC_CSPI_CLK:
+               return imx_get_cspiclk();
+       case MXC_ESDHC_CLK:
+               return get_esdhc_clk(0);
+       case MXC_ESDHC2_CLK:
+               return get_esdhc_clk(1);
+       case MXC_ESDHC3_CLK:
+               return get_esdhc_clk(2);
+       case MXC_ESDHC4_CLK:
+               return get_esdhc_clk(3);
+       case MXC_FEC_CLK:
+               return get_ipg_clk();
+       case MXC_SATA_CLK:
+               return get_ahb_clk();
+       case MXC_DDR_CLK:
+               return get_ddr_clk();
+       default:
+               break;
+       }
+       return -EINVAL;
+}
+
+u32 imx_get_uartclk(void)
+{
+       return get_uart_clk();
+}
+
+u32 imx_get_fecclk(void)
+{
+       return get_ipg_clk();
+}
+
+static int gcd(int m, int n)
+{
+       int t;
+       while (m > 0) {
+               if (n > m) {
+                       t = m;
+                       m = n;
+                       n = t;
+               } /* swap */
+               m -= n;
+       }
+       return n;
+}
+
+/*
+ * This is to calculate various parameters based on reference clock and
+ * targeted clock based on the equation:
+ *      t_clk = 2*ref_freq*(mfi + mfn/(mfd+1))/(pd+1)
+ * This calculation is based on a fixed MFD value for simplicity.
+ */
+static int calc_pll_params(u32 ref, u32 target, struct pll_param *pll)
+{
+       u64 pd, mfi = 1, mfn, mfd, t1;
+       u32 n_target = target;
+       u32 n_ref = ref, i;
+
+       /*
+        * Make sure targeted freq is in the valid range.
+        * Otherwise the following calculation might be wrong!!!
+        */
+       if (n_target < PLL_FREQ_MIN(ref) ||
+               n_target > PLL_FREQ_MAX(ref)) {
+               printf("Targeted peripheral clock should be"
+                       "within [%d - %d]\n",
+                       PLL_FREQ_MIN(ref) / SZ_DEC_1M,
+                       PLL_FREQ_MAX(ref) / SZ_DEC_1M);
+               return -EINVAL;
+       }
+
+       for (i = 0; i < ARRAY_SIZE(fixed_mfd); i++) {
+               if (fixed_mfd[i].ref_clk_hz == ref) {
+                       mfd = fixed_mfd[i].mfd;
+                       break;
+               }
+       }
+
+       if (i == ARRAY_SIZE(fixed_mfd))
+               return -EINVAL;
+
+       /* Use n_target and n_ref to avoid overflow */
+       for (pd = 1; pd <= PLL_PD_MAX; pd++) {
+               t1 = n_target * pd;
+               do_div(t1, (4 * n_ref));
+               mfi = t1;
+               if (mfi > PLL_MFI_MAX)
+                       return -EINVAL;
+               else if (mfi < 5)
+                       continue;
+               break;
+       }
+       /*
+        * Now got pd and mfi already
+        *
+        * mfn = (((n_target * pd) / 4 - n_ref * mfi) * mfd) / n_ref;
+        */
+       t1 = n_target * pd;
+       do_div(t1, 4);
+       t1 -= n_ref * mfi;
+       t1 *= mfd;
+       do_div(t1, n_ref);
+       mfn = t1;
+       debug("ref=%d, target=%d, pd=%d," "mfi=%d,mfn=%d, mfd=%d\n",
+               ref, n_target, (u32)pd, (u32)mfi, (u32)mfn, (u32)mfd);
+       i = 1;
+       if (mfn != 0)
+               i = gcd(mfd, mfn);
+       pll->pd = (u32)pd;
+       pll->mfi = (u32)mfi;
+       do_div(mfn, i);
+       pll->mfn = (u32)mfn;
+       do_div(mfd, i);
+       pll->mfd = (u32)mfd;
+
+       return 0;
+}
+
+#define calc_div(tgt_clk, src_clk, limit) ({           \
+               u32 v = 0;                              \
+               if (((src_clk) % (tgt_clk)) <= 100)     \
+                       v = (src_clk) / (tgt_clk);      \
+               else                                    \
+                       v = ((src_clk) / (tgt_clk)) + 1;\
+               if (v > limit)                          \
+                       v = limit;                      \
+               (v - 1);                                \
+       })
+
+#define CHANGE_PLL_SETTINGS(pll, pd, fi, fn, fd) \
+       {       \
+               writel(0x1232, &pll->ctrl);             \
+               writel(0x2, &pll->config);              \
+               writel((((pd) - 1) << 0) | ((fi) << 4), \
+                       &pll->op);                      \
+               writel(fn, &(pll->mfn));                \
+               writel((fd) - 1, &pll->mfd);            \
+               writel((((pd) - 1) << 0) | ((fi) << 4), \
+                       &pll->hfs_op);                  \
+               writel(fn, &pll->hfs_mfn);              \
+               writel((fd) - 1, &pll->hfs_mfd);        \
+               writel(0x1232, &pll->ctrl);             \
+               while (!readl(&pll->ctrl) & 0x1)        \
+                       ;\
+       }
+
+static int config_pll_clk(enum pll_clocks index, struct pll_param *pll_param)
+{
+       u32 ccsr = readl(&mxc_ccm->ccsr);
+       struct mxc_pll_reg *pll = mxc_plls[index];
+
+       switch (index) {
+       case PLL1_CLOCK:
+               /* Switch ARM to PLL2 clock */
+               writel(ccsr | MXC_CCM_CCSR_PLL1_SW_CLK_SEL,
+                               &mxc_ccm->ccsr);
+               CHANGE_PLL_SETTINGS(pll, pll_param->pd,
+                                       pll_param->mfi, pll_param->mfn,
+                                       pll_param->mfd);
+               /* Switch back */
+               writel(ccsr & ~MXC_CCM_CCSR_PLL1_SW_CLK_SEL,
+                               &mxc_ccm->ccsr);
+               break;
+       case PLL2_CLOCK:
+               /* Switch to pll2 bypass clock */
+               writel(ccsr | MXC_CCM_CCSR_PLL2_SW_CLK_SEL,
+                               &mxc_ccm->ccsr);
+               CHANGE_PLL_SETTINGS(pll, pll_param->pd,
+                                       pll_param->mfi, pll_param->mfn,
+                                       pll_param->mfd);
+               /* Switch back */
+               writel(ccsr & ~MXC_CCM_CCSR_PLL2_SW_CLK_SEL,
+                               &mxc_ccm->ccsr);
+               break;
+       case PLL3_CLOCK:
+               /* Switch to pll3 bypass clock */
+               writel(ccsr | MXC_CCM_CCSR_PLL3_SW_CLK_SEL,
+                               &mxc_ccm->ccsr);
+               CHANGE_PLL_SETTINGS(pll, pll_param->pd,
+                                       pll_param->mfi, pll_param->mfn,
+                                       pll_param->mfd);
+               /* Switch back */
+               writel(ccsr & ~MXC_CCM_CCSR_PLL3_SW_CLK_SEL,
+                               &mxc_ccm->ccsr);
+               break;
+#ifdef CONFIG_MX53
+       case PLL4_CLOCK:
+               /* Switch to pll4 bypass clock */
+               writel(ccsr | MXC_CCM_CCSR_PLL4_SW_CLK_SEL,
+                               &mxc_ccm->ccsr);
+               CHANGE_PLL_SETTINGS(pll, pll_param->pd,
+                                       pll_param->mfi, pll_param->mfn,
+                                       pll_param->mfd);
+               /* Switch back */
+               writel(ccsr & ~MXC_CCM_CCSR_PLL4_SW_CLK_SEL,
+                               &mxc_ccm->ccsr);
+               break;
+#endif
+       default:
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+/* Config CPU clock */
+static int config_core_clk(u32 ref, u32 freq)
+{
+       int ret = 0;
+       struct pll_param pll_param;
+
+       memset(&pll_param, 0, sizeof(struct pll_param));
+
+       /* The case that periph uses PLL1 is not considered here */
+       ret = calc_pll_params(ref, freq, &pll_param);
+       if (ret != 0) {
+               printf("Error:Can't find pll parameters: %d\n", ret);
+               return ret;
+       }
+
+       return config_pll_clk(PLL1_CLOCK, &pll_param);
+}
+
+static int config_nfc_clk(u32 nfc_clk)
+{
+       u32 parent_rate = get_emi_slow_clk();
+       u32 div;
+
+       if (nfc_clk == 0)
+               return -EINVAL;
+       div = parent_rate / nfc_clk;
+       if (div == 0)
+               div++;
+       if (parent_rate / div > NFC_CLK_MAX)
+               div++;
+       clrsetbits_le32(&mxc_ccm->cbcdr,
+                       MXC_CCM_CBCDR_NFC_PODF_MASK,
+                       MXC_CCM_CBCDR_NFC_PODF(div - 1));
+       while (readl(&mxc_ccm->cdhipr) != 0)
+               ;
+       return 0;
+}
+
+void enable_nfc_clk(unsigned char enable)
+{
+       unsigned int cg = enable ? MXC_CCM_CCGR_CG_ON : MXC_CCM_CCGR_CG_OFF;
+
+       clrsetbits_le32(&mxc_ccm->CCGR5,
+               MXC_CCM_CCGR5_EMI_ENFC(MXC_CCM_CCGR_CG_MASK),
+               MXC_CCM_CCGR5_EMI_ENFC(cg));
+}
+
+#ifdef CONFIG_FSL_IIM
+void enable_efuse_prog_supply(bool enable)
+{
+       if (enable)
+               setbits_le32(&mxc_ccm->cgpr,
+                            MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE);
+       else
+               clrbits_le32(&mxc_ccm->cgpr,
+                            MXC_CCM_CGPR_EFUSE_PROG_SUPPLY_GATE);
+}
+#endif
+
+/* Config main_bus_clock for periphs */
+static int config_periph_clk(u32 ref, u32 freq)
+{
+       int ret = 0;
+       struct pll_param pll_param;
+
+       memset(&pll_param, 0, sizeof(struct pll_param));
+
+       if (readl(&mxc_ccm->cbcdr) & MXC_CCM_CBCDR_PERIPH_CLK_SEL) {
+               ret = calc_pll_params(ref, freq, &pll_param);
+               if (ret != 0) {
+                       printf("Error:Can't find pll parameters: %d\n",
+                               ret);
+                       return ret;
+               }
+               switch (MXC_CCM_CBCMR_PERIPH_CLK_SEL_RD(
+                               readl(&mxc_ccm->cbcmr))) {
+               case 0:
+                       return config_pll_clk(PLL1_CLOCK, &pll_param);
+                       break;
+               case 1:
+                       return config_pll_clk(PLL3_CLOCK, &pll_param);
+                       break;
+               default:
+                       return -EINVAL;
+               }
+       }
+
+       return 0;
+}
+
+static int config_ddr_clk(u32 emi_clk)
+{
+       u32 clk_src;
+       s32 shift = 0, clk_sel, div = 1;
+       u32 cbcmr = readl(&mxc_ccm->cbcmr);
+
+       if (emi_clk > MAX_DDR_CLK) {
+               printf("Warning:DDR clock should not exceed %d MHz\n",
+                       MAX_DDR_CLK / SZ_DEC_1M);
+               emi_clk = MAX_DDR_CLK;
+       }
+
+       clk_src = get_periph_clk();
+       /* Find DDR clock input */
+       clk_sel = MXC_CCM_CBCMR_DDR_CLK_SEL_RD(cbcmr);
+       switch (clk_sel) {
+       case 0:
+               shift = 16;
+               break;
+       case 1:
+               shift = 19;
+               break;
+       case 2:
+               shift = 22;
+               break;
+       case 3:
+               shift = 10;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       if ((clk_src % emi_clk) < 10000000)
+               div = clk_src / emi_clk;
+       else
+               div = (clk_src / emi_clk) + 1;
+       if (div > 8)
+               div = 8;
+
+       clrsetbits_le32(&mxc_ccm->cbcdr, 0x7 << shift, (div - 1) << shift);
+       while (readl(&mxc_ccm->cdhipr) != 0)
+               ;
+       writel(0x0, &mxc_ccm->ccdr);
+
+       return 0;
+}
+
+/*
+ * This function assumes the expected core clock has to be changed by
+ * modifying the PLL. This is NOT true always but for most of the times,
+ * it is. So it assumes the PLL output freq is the same as the expected
+ * core clock (presc=1) unless the core clock is less than PLL_FREQ_MIN.
+ * In the latter case, it will try to increase the presc value until
+ * (presc*core_clk) is greater than PLL_FREQ_MIN. It then makes call to
+ * calc_pll_params() and obtains the values of PD, MFI,MFN, MFD based
+ * on the targeted PLL and reference input clock to the PLL. Lastly,
+ * it sets the register based on these values along with the dividers.
+ * Note 1) There is no value checking for the passed-in divider values
+ *         so the caller has to make sure those values are sensible.
+ *      2) Also adjust the NFC divider such that the NFC clock doesn't
+ *         exceed NFC_CLK_MAX.
+ *      3) IPU HSP clock is independent of AHB clock. Even it can go up to
+ *         177MHz for higher voltage, this function fixes the max to 133MHz.
+ *      4) This function should not have allowed diag_printf() calls since
+ *         the serial driver has been stoped. But leave then here to allow
+ *         easy debugging by NOT calling the cyg_hal_plf_serial_stop().
+ */
+int mxc_set_clock(u32 ref, u32 freq, enum mxc_clock clk)
+{
+       freq *= SZ_DEC_1M;
+
+       switch (clk) {
+       case MXC_ARM_CLK:
+               if (config_core_clk(ref, freq))
+                       return -EINVAL;
+               break;
+       case MXC_PERIPH_CLK:
+               if (config_periph_clk(ref, freq))
+                       return -EINVAL;
+               break;
+       case MXC_DDR_CLK:
+               if (config_ddr_clk(freq))
+                       return -EINVAL;
+               break;
+       case MXC_NFC_CLK:
+               if (config_nfc_clk(freq))
+                       return -EINVAL;
+               break;
+       default:
+               printf("Warning:Unsupported or invalid clock type\n");
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_MX53
+/*
+ * The clock for the external interface can be set to use internal clock
+ * if fuse bank 4, row 3, bit 2 is set.
+ * This is an undocumented feature and it was confirmed by Freescale's support:
+ * Fuses (but not pins) may be used to configure SATA clocks.
+ * Particularly the i.MX53 Fuse_Map contains the next information
+ * about configuring SATA clocks :  SATA_ALT_REF_CLK[1:0] (offset 0x180C)
+ * '00' - 100MHz (External)
+ * '01' - 50MHz (External)
+ * '10' - 120MHz, internal (USB PHY)
+ * '11' - Reserved
+*/
+void mxc_set_sata_internal_clock(void)
+{
+       u32 *tmp_base =
+               (u32 *)(IIM_BASE_ADDR + 0x180c);
+
+       set_usb_phy_clk();
+
+       clrsetbits_le32(tmp_base, 0x6, 0x4);
+}
+#endif
+
+/*
+ * Dump some core clockes.
+ */
+int do_mx5_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       u32 freq;
+
+       freq = decode_pll(mxc_plls[PLL1_CLOCK], MXC_HCLK);
+       printf("PLL1       %8d MHz\n", freq / 1000000);
+       freq = decode_pll(mxc_plls[PLL2_CLOCK], MXC_HCLK);
+       printf("PLL2       %8d MHz\n", freq / 1000000);
+       freq = decode_pll(mxc_plls[PLL3_CLOCK], MXC_HCLK);
+       printf("PLL3       %8d MHz\n", freq / 1000000);
+#ifdef CONFIG_MX53
+       freq = decode_pll(mxc_plls[PLL4_CLOCK], MXC_HCLK);
+       printf("PLL4       %8d MHz\n", freq / 1000000);
+#endif
+
+       printf("\n");
+       printf("AHB        %8d kHz\n", mxc_get_clock(MXC_AHB_CLK) / 1000);
+       printf("IPG        %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000);
+       printf("IPG PERCLK %8d kHz\n", mxc_get_clock(MXC_IPG_PERCLK) / 1000);
+       printf("DDR        %8d kHz\n", mxc_get_clock(MXC_DDR_CLK) / 1000);
+#ifdef CONFIG_MXC_SPI
+       printf("CSPI       %8d kHz\n", mxc_get_clock(MXC_CSPI_CLK) / 1000);
+#endif
+       return 0;
+}
+
+/***************************************************/
+
+U_BOOT_CMD(
+       clocks, CONFIG_SYS_MAXARGS, 1, do_mx5_showclocks,
+       "display clocks",
+       ""
+);
diff --git a/arch/arm/mach-imx/mx5/lowlevel_init.S b/arch/arm/mach-imx/mx5/lowlevel_init.S
new file mode 100644 (file)
index 0000000..f5bc672
--- /dev/null
@@ -0,0 +1,429 @@
+/*
+ * Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <config.h>
+#include <asm/arch/imx-regs.h>
+#include <generated/asm-offsets.h>
+#include <linux/linkage.h>
+
+.section ".text.init", "x"
+
+.macro init_arm_erratum
+       /* ARM erratum ID #468414 */
+       mrc 15, 0, r1, c1, c0, 1
+       orr r1, r1, #(1 << 5)    /* enable L1NEON bit */
+       mcr 15, 0, r1, c1, c0, 1
+.endm
+
+/*
+ * L2CC Cache setup/invalidation/disable
+ */
+.macro init_l2cc
+       /* explicitly disable L2 cache */
+       mrc 15, 0, r0, c1, c0, 1
+       bic r0, r0, #0x2
+       mcr 15, 0, r0, c1, c0, 1
+
+       /* reconfigure L2 cache aux control reg */
+       ldr r0, =0xC0 |                 /* tag RAM */ \
+                0x4 |                  /* data RAM */ \
+                1 << 24 |              /* disable write allocate delay */ \
+                1 << 23 |              /* disable write allocate combine */ \
+                1 << 22                /* disable write allocate */
+
+#if defined(CONFIG_MX51)
+       ldr r3, [r4, #ROM_SI_REV]
+       cmp r3, #0x10
+
+       /* disable write combine for TO 2 and lower revs */
+       orrls r0, r0, #1 << 25
+#endif
+
+       mcr 15, 1, r0, c9, c0, 2
+
+       /* enable L2 cache */
+       mrc 15, 0, r0, c1, c0, 1
+       orr r0, r0, #2
+       mcr 15, 0, r0, c1, c0, 1
+
+.endm /* init_l2cc */
+
+/* AIPS setup - Only setup MPROTx registers.
+ * The PACR default values are good.*/
+.macro init_aips
+       /*
+        * Set all MPROTx to be non-bufferable, trusted for R/W,
+        * not forced to user-mode.
+        */
+       ldr r0, =AIPS1_BASE_ADDR
+       ldr r1, =0x77777777
+       str r1, [r0, #0x0]
+       str r1, [r0, #0x4]
+       ldr r0, =AIPS2_BASE_ADDR
+       str r1, [r0, #0x0]
+       str r1, [r0, #0x4]
+       /*
+        * Clear the on and off peripheral modules Supervisor Protect bit
+        * for SDMA to access them. Did not change the AIPS control registers
+        * (offset 0x20) access type
+        */
+.endm /* init_aips */
+
+/* M4IF setup */
+.macro init_m4if
+#ifdef CONFIG_MX51
+       /* VPU and IPU given higher priority (0x4)
+        * IPU accesses with ID=0x1 given highest priority (=0xA)
+        */
+       ldr r0, =M4IF_BASE_ADDR
+
+       ldr r1, =0x00000203
+       str r1, [r0, #0x40]
+
+       str r4, [r0, #0x44]
+
+       ldr r1, =0x00120125
+       str r1, [r0, #0x9C]
+
+       ldr r1, =0x001901A3
+       str r1, [r0, #0x48]
+
+#endif
+.endm /* init_m4if */
+
+.macro setup_pll pll, freq
+       ldr r0, =\pll
+       adr r2, W_DP_\freq
+       bl setup_pll_func
+.endm
+
+#define W_DP_OP                0
+#define W_DP_MFD       4
+#define W_DP_MFN       8
+
+setup_pll_func:
+       ldr r1, =0x00001232
+       str r1, [r0, #PLL_DP_CTL] /* Set DPLL ON (set UPEN bit): BRMO=1 */
+       mov r1, #0x2
+       str r1, [r0, #PLL_DP_CONFIG] /* Enable auto-restart AREN bit */
+
+       ldr r1, [r2, #W_DP_OP]
+       str r1, [r0, #PLL_DP_OP]
+       str r1, [r0, #PLL_DP_HFS_OP]
+
+       ldr r1, [r2, #W_DP_MFD]
+       str r1, [r0, #PLL_DP_MFD]
+       str r1, [r0, #PLL_DP_HFS_MFD]
+
+       ldr r1, [r2, #W_DP_MFN]
+       str r1, [r0, #PLL_DP_MFN]
+       str r1, [r0, #PLL_DP_HFS_MFN]
+
+       ldr r1, =0x00001232
+       str r1, [r0, #PLL_DP_CTL]
+1:     ldr r1, [r0, #PLL_DP_CTL]
+       ands r1, r1, #0x1
+       beq 1b
+
+       /* r10 saved upper lr */
+       mov pc, lr
+
+.macro setup_pll_errata pll, freq
+       ldr r2, =\pll
+       str r4, [r2, #PLL_DP_CONFIG] /* Disable auto-restart AREN bit */
+       ldr r1, =0x00001236
+       str r1, [r2, #PLL_DP_CTL]    /* Restart PLL with PLM=1 */
+1:     ldr r1, [r2, #PLL_DP_CTL]    /* Wait for lock */
+       ands r1, r1, #0x1
+       beq 1b
+
+       ldr r5, \freq
+       str r5, [r2, #PLL_DP_MFN]    /* Modify MFN value */
+       str r5, [r2, #PLL_DP_HFS_MFN]
+
+       mov r1, #0x1
+       str r1, [r2, #PLL_DP_CONFIG] /* Reload MFN value */
+
+2:     ldr r1, [r2, #PLL_DP_CONFIG]
+       tst r1, #1
+       bne 2b
+
+       ldr r1, =100                 /* Wait at least 4 us */
+3:     subs r1, r1, #1
+       bge 3b
+
+       mov r1, #0x2
+       str r1, [r2, #PLL_DP_CONFIG] /* Enable auto-restart AREN bit */
+.endm
+
+.macro init_clock
+#if defined (CONFIG_MX51)
+       ldr r0, =CCM_BASE_ADDR
+
+       /* Gate of clocks to the peripherals first */
+       ldr r1, =0x3FFFFFFF
+       str r1, [r0, #CLKCTL_CCGR0]
+       str r4, [r0, #CLKCTL_CCGR1]
+       str r4, [r0, #CLKCTL_CCGR2]
+       str r4, [r0, #CLKCTL_CCGR3]
+
+       ldr r1, =0x00030000
+       str r1, [r0, #CLKCTL_CCGR4]
+       ldr r1, =0x00FFF030
+       str r1, [r0, #CLKCTL_CCGR5]
+       ldr r1, =0x00000300
+       str r1, [r0, #CLKCTL_CCGR6]
+
+       /* Disable IPU and HSC dividers */
+       mov r1, #0x60000
+       str r1, [r0, #CLKCTL_CCDR]
+
+       /* Make sure to switch the DDR away from PLL 1 */
+       ldr r1, =0x19239145
+       str r1, [r0, #CLKCTL_CBCDR]
+       /* make sure divider effective */
+1:     ldr r1, [r0, #CLKCTL_CDHIPR]
+       cmp r1, #0x0
+       bne 1b
+
+       /* Switch ARM to step clock */
+       mov r1, #0x4
+       str r1, [r0, #CLKCTL_CCSR]
+
+#if defined(CONFIG_MX51_PLL_ERRATA)
+       setup_pll PLL1_BASE_ADDR, 864
+       setup_pll_errata PLL1_BASE_ADDR, W_DP_MFN_800_DIT
+#else
+       setup_pll PLL1_BASE_ADDR, 800
+#endif
+
+       setup_pll PLL3_BASE_ADDR, 665
+
+       /* Switch peripheral to PLL 3 */
+       ldr r0, =CCM_BASE_ADDR
+       ldr r1, =0x000010C0 | CONFIG_SYS_DDR_CLKSEL
+       str r1, [r0, #CLKCTL_CBCMR]
+       ldr r1, =0x13239145
+       str r1, [r0, #CLKCTL_CBCDR]
+       setup_pll PLL2_BASE_ADDR, 665
+
+       /* Switch peripheral to PLL2 */
+       ldr r0, =CCM_BASE_ADDR
+       ldr r1, =0x19239145
+       str r1, [r0, #CLKCTL_CBCDR]
+       ldr r1, =0x000020C0 | CONFIG_SYS_DDR_CLKSEL
+       str r1, [r0, #CLKCTL_CBCMR]
+
+       setup_pll PLL3_BASE_ADDR, 216
+
+       /* Set the platform clock dividers */
+       ldr r0, =ARM_BASE_ADDR
+       ldr r1, =0x00000725
+       str r1, [r0, #0x14]
+
+       ldr r0, =CCM_BASE_ADDR
+
+       /* Run 3.0 at Full speed, for other TO's wait till we increase VDDGP */
+       ldr r3, [r4, #ROM_SI_REV]
+       cmp r3, #0x10
+       movls r1, #0x1
+       movhi r1, #0
+
+       str r1, [r0, #CLKCTL_CACRR]
+
+       /* Switch ARM back to PLL 1 */
+       str r4, [r0, #CLKCTL_CCSR]
+
+       /* setup the rest */
+       /* Use lp_apm (24MHz) source for perclk */
+       ldr r1, =0x000020C2 | CONFIG_SYS_DDR_CLKSEL
+       str r1, [r0, #CLKCTL_CBCMR]
+       /* ddr clock from PLL 1, all perclk dividers are 1 since using 24MHz */
+       ldr r1, =CONFIG_SYS_CLKTL_CBCDR
+       str r1, [r0, #CLKCTL_CBCDR]
+
+       /* Restore the default values in the Gate registers */
+       ldr r1, =0xFFFFFFFF
+       str r1, [r0, #CLKCTL_CCGR0]
+       str r1, [r0, #CLKCTL_CCGR1]
+       str r1, [r0, #CLKCTL_CCGR2]
+       str r1, [r0, #CLKCTL_CCGR3]
+       str r1, [r0, #CLKCTL_CCGR4]
+       str r1, [r0, #CLKCTL_CCGR5]
+       str r1, [r0, #CLKCTL_CCGR6]
+
+       /* Use PLL 2 for UART's, get 66.5MHz from it */
+       ldr r1, =0xA5A2A020
+       str r1, [r0, #CLKCTL_CSCMR1]
+       ldr r1, =0x00C30321
+       str r1, [r0, #CLKCTL_CSCDR1]
+       /* make sure divider effective */
+1:     ldr r1, [r0, #CLKCTL_CDHIPR]
+       cmp r1, #0x0
+       bne 1b
+
+       str r4, [r0, #CLKCTL_CCDR]
+
+       /* for cko - for ARM div by 8 */
+       mov r1, #0x000A0000
+       add r1, r1, #0x00000F0
+       str r1, [r0, #CLKCTL_CCOSR]
+#else  /* CONFIG_MX53 */
+       ldr r0, =CCM_BASE_ADDR
+
+       /* Gate of clocks to the peripherals first */
+       ldr r1, =0x3FFFFFFF
+       str r1, [r0, #CLKCTL_CCGR0]
+       str r4, [r0, #CLKCTL_CCGR1]
+       str r4, [r0, #CLKCTL_CCGR2]
+       str r4, [r0, #CLKCTL_CCGR3]
+       str r4, [r0, #CLKCTL_CCGR7]
+       ldr r1, =0x00030000
+       str r1, [r0, #CLKCTL_CCGR4]
+       ldr r1, =0x00FFF030
+       str r1, [r0, #CLKCTL_CCGR5]
+       ldr r1, =0x0F00030F
+       str r1, [r0, #CLKCTL_CCGR6]
+
+       /* Switch ARM to step clock */
+       mov r1, #0x4
+       str r1, [r0, #CLKCTL_CCSR]
+
+       setup_pll PLL1_BASE_ADDR, 800
+
+       setup_pll PLL3_BASE_ADDR, 400
+
+       /* Switch peripheral to PLL3 */
+       ldr r0, =CCM_BASE_ADDR
+       ldr r1, =0x00015154
+       str r1, [r0, #CLKCTL_CBCMR]
+       ldr r1, =0x02898945
+       str r1, [r0, #CLKCTL_CBCDR]
+       /* make sure change is effective */
+1:      ldr r1, [r0, #CLKCTL_CDHIPR]
+       cmp r1, #0x0
+       bne 1b
+
+       setup_pll PLL2_BASE_ADDR, 400
+
+       /* Switch peripheral to PLL2 */
+       ldr r0, =CCM_BASE_ADDR
+       ldr r1, =0x00888945
+       str r1, [r0, #CLKCTL_CBCDR]
+
+       ldr r1, =0x00016154
+       str r1, [r0, #CLKCTL_CBCMR]
+
+       /*change uart clk parent to pll2*/
+       ldr r1, [r0, #CLKCTL_CSCMR1]
+       and r1, r1, #0xfcffffff
+       orr r1, r1, #0x01000000
+       str r1, [r0, #CLKCTL_CSCMR1]
+
+       /* make sure change is effective */
+1:      ldr r1, [r0, #CLKCTL_CDHIPR]
+       cmp r1, #0x0
+       bne 1b
+
+       setup_pll PLL3_BASE_ADDR, 216
+
+       setup_pll PLL4_BASE_ADDR, 455
+
+       /* Set the platform clock dividers */
+       ldr r0, =ARM_BASE_ADDR
+       ldr r1, =0x00000124
+       str r1, [r0, #0x14]
+
+       ldr r0, =CCM_BASE_ADDR
+       mov r1, #0
+       str r1, [r0, #CLKCTL_CACRR]
+
+       /* Switch ARM back to PLL 1. */
+       mov r1, #0x0
+       str r1, [r0, #CLKCTL_CCSR]
+
+       /* make uart div=6 */
+       ldr r1, [r0, #CLKCTL_CSCDR1]
+       and r1, r1, #0xffffffc0
+       orr r1, r1, #0x0a
+       str r1, [r0, #CLKCTL_CSCDR1]
+
+       /* Restore the default values in the Gate registers */
+       ldr r1, =0xFFFFFFFF
+       str r1, [r0, #CLKCTL_CCGR0]
+       str r1, [r0, #CLKCTL_CCGR1]
+       str r1, [r0, #CLKCTL_CCGR2]
+       str r1, [r0, #CLKCTL_CCGR3]
+       str r1, [r0, #CLKCTL_CCGR4]
+       str r1, [r0, #CLKCTL_CCGR5]
+       str r1, [r0, #CLKCTL_CCGR6]
+       str r1, [r0, #CLKCTL_CCGR7]
+
+       mov r1, #0x00000
+       str r1, [r0, #CLKCTL_CCDR]
+
+       /* for cko - for ARM div by 8 */
+       mov r1, #0x000A0000
+       add r1, r1, #0x00000F0
+       str r1, [r0, #CLKCTL_CCOSR]
+
+#endif /* CONFIG_MX53 */
+.endm
+
+ENTRY(lowlevel_init)
+       mov r10, lr
+       mov r4, #0      /* Fix R4 to 0 */
+
+#if defined(CONFIG_SYS_MAIN_PWR_ON)
+       ldr r0, =GPIO1_BASE_ADDR
+       ldr r1, [r0, #0x0]
+       orr r1, r1, #1 << 23
+       str r1, [r0, #0x0]
+       ldr r1, [r0, #0x4]
+       orr r1, r1, #1 << 23
+       str r1, [r0, #0x4]
+#endif
+
+       init_arm_erratum
+
+       init_l2cc
+
+       init_aips
+
+       init_m4if
+
+       init_clock
+
+       mov pc, r10
+ENDPROC(lowlevel_init)
+
+/* Board level setting value */
+#if defined(CONFIG_MX51_PLL_ERRATA)
+W_DP_864:              .word DP_OP_864
+                       .word DP_MFD_864
+                       .word DP_MFN_864
+W_DP_MFN_800_DIT:      .word DP_MFN_800_DIT
+#else
+W_DP_800:              .word DP_OP_800
+                       .word DP_MFD_800
+                       .word DP_MFN_800
+#endif
+#if defined(CONFIG_MX51)
+W_DP_665:              .word DP_OP_665
+                       .word DP_MFD_665
+                       .word DP_MFN_665
+#endif
+W_DP_216:              .word DP_OP_216
+                       .word DP_MFD_216
+                       .word DP_MFN_216
+W_DP_400:               .word DP_OP_400
+                       .word DP_MFD_400
+                       .word DP_MFN_400
+W_DP_455:               .word DP_OP_455
+                       .word DP_MFD_455
+                       .word DP_MFN_455
diff --git a/arch/arm/mach-imx/mx5/soc.c b/arch/arm/mach-imx/mx5/soc.c
new file mode 100644 (file)
index 0000000..2b63871
--- /dev/null
@@ -0,0 +1,116 @@
+/*
+ * (C) Copyright 2007
+ * Sascha Hauer, Pengutronix
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+#include <linux/errno.h>
+#include <asm/io.h>
+#include <asm/mach-imx/boot_mode.h>
+
+#if !(defined(CONFIG_MX51) || defined(CONFIG_MX53))
+#error "CPU_TYPE not defined"
+#endif
+
+u32 get_cpu_rev(void)
+{
+#ifdef CONFIG_MX51
+       int system_rev = 0x51000;
+#else
+       int system_rev = 0x53000;
+#endif
+       int reg = __raw_readl(ROM_SI_REV);
+
+#if defined(CONFIG_MX51)
+       switch (reg) {
+       case 0x02:
+               system_rev |= CHIP_REV_1_1;
+               break;
+       case 0x10:
+               if ((__raw_readl(GPIO1_BASE_ADDR + 0x0) & (0x1 << 22)) == 0)
+                       system_rev |= CHIP_REV_2_5;
+               else
+                       system_rev |= CHIP_REV_2_0;
+               break;
+       case 0x20:
+               system_rev |= CHIP_REV_3_0;
+               break;
+       default:
+               system_rev |= CHIP_REV_1_0;
+               break;
+       }
+#else
+       if (reg < 0x20)
+               system_rev |= CHIP_REV_1_0;
+       else
+               system_rev |= reg;
+#endif
+       return system_rev;
+}
+
+#ifdef CONFIG_REVISION_TAG
+u32 __weak get_board_rev(void)
+{
+       return get_cpu_rev();
+}
+#endif
+
+#ifndef CONFIG_SYS_DCACHE_OFF
+void enable_caches(void)
+{
+       /* Enable D-cache. I-cache is already enabled in start.S */
+       dcache_enable();
+}
+#endif
+
+#if defined(CONFIG_FEC_MXC)
+void imx_get_mac_from_fuse(int dev_id, unsigned char *mac)
+{
+       int i;
+       struct iim_regs *iim = (struct iim_regs *)IMX_IIM_BASE;
+       struct fuse_bank *bank = &iim->bank[1];
+       struct fuse_bank1_regs *fuse =
+                       (struct fuse_bank1_regs *)bank->fuse_regs;
+
+       for (i = 0; i < 6; i++)
+               mac[i] = readl(&fuse->mac_addr[i]) & 0xff;
+}
+#endif
+
+#ifdef CONFIG_MX53
+void boot_mode_apply(unsigned cfg_val)
+{
+       writel(cfg_val, &((struct srtc_regs *)SRTC_BASE_ADDR)->lpgr);
+}
+/*
+ * cfg_val will be used for
+ * Boot_cfg3[7:0]:Boot_cfg2[7:0]:Boot_cfg1[7:0]
+ *
+ * If bit 28 of LPGR is set upon watchdog reset,
+ * bits[25:0] of LPGR will move to SBMR.
+ */
+const struct boot_mode soc_boot_modes[] = {
+       {"normal",      MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)},
+       /* usb or serial download */
+       {"usb",         MAKE_CFGVAL(0x00, 0x00, 0x00, 0x13)},
+       {"sata",        MAKE_CFGVAL(0x28, 0x00, 0x00, 0x12)},
+       {"escpi1:0",    MAKE_CFGVAL(0x38, 0x20, 0x00, 0x12)},
+       {"escpi1:1",    MAKE_CFGVAL(0x38, 0x20, 0x04, 0x12)},
+       {"escpi1:2",    MAKE_CFGVAL(0x38, 0x20, 0x08, 0x12)},
+       {"escpi1:3",    MAKE_CFGVAL(0x38, 0x20, 0x0c, 0x12)},
+       /* 4 bit bus width */
+       {"esdhc1",      MAKE_CFGVAL(0x40, 0x20, 0x00, 0x12)},
+       {"esdhc2",      MAKE_CFGVAL(0x40, 0x20, 0x08, 0x12)},
+       {"esdhc3",      MAKE_CFGVAL(0x40, 0x20, 0x10, 0x12)},
+       {"esdhc4",      MAKE_CFGVAL(0x40, 0x20, 0x18, 0x12)},
+       {NULL,          0},
+};
+#endif
diff --git a/arch/arm/mach-imx/mx6/Kconfig b/arch/arm/mach-imx/mx6/Kconfig
new file mode 100644 (file)
index 0000000..bb2ce33
--- /dev/null
@@ -0,0 +1,448 @@
+if ARCH_MX6
+
+config MX6
+       bool
+       default y
+       select ARM_ERRATA_743622 if !MX6UL
+       select ARM_ERRATA_751472 if !MX6UL
+       select ARM_ERRATA_761320 if !MX6UL
+       select ARM_ERRATA_794072 if !MX6UL
+       imply CMD_FUSE
+
+config MX6D
+       bool
+
+config MX6DL
+       bool
+
+config MX6Q
+       bool
+
+config MX6QDL
+       bool
+
+config MX6S
+       bool
+
+config MX6SL
+       bool
+
+config MX6SX
+       select ROM_UNIFIED_SECTIONS
+       bool
+       imply ENV_IS_IN_MMC
+
+config MX6SLL
+       select ROM_UNIFIED_SECTIONS
+       bool
+
+config MX6UL
+       select SYS_L2CACHE_OFF
+       select ROM_UNIFIED_SECTIONS
+       bool
+
+config MX6UL_LITESOM
+       bool
+       select MX6UL
+       select DM
+       select DM_THERMAL
+       select SUPPORT_SPL
+
+config MX6UL_OPOS6UL
+       bool
+       select MX6UL
+       select BOARD_LATE_INIT
+       select DM
+       select DM_GPIO
+       select DM_MMC
+       select DM_THERMAL
+       select SUPPORT_SPL
+
+config MX6ULL
+       bool
+       select MX6UL
+
+config MX6_DDRCAL
+       bool "Include dynamic DDR calibration routines"
+       depends on SPL
+       default n
+       help
+         Say "Y" if your board uses dynamic (per-boot) DDR calibration.
+         If unsure, say N.
+
+choice
+       prompt "MX6 board select"
+       optional
+
+config TARGET_ADVANTECH_DMS_BA16
+       bool "Advantech dms-ba16"
+       select BOARD_LATE_INIT
+       select MX6Q
+       imply CMD_SATA
+
+config TARGET_APALIS_IMX6
+       bool "Toradex Apalis iMX6 board"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+       select DM
+       select DM_SERIAL
+       select DM_THERMAL
+       imply CMD_SATA
+
+config TARGET_ARISTAINETOS
+       bool "aristainetos"
+
+config TARGET_ARISTAINETOS2
+       bool "aristainetos2"
+       select BOARD_LATE_INIT
+
+config TARGET_ARISTAINETOS2B
+       bool "Support aristainetos2-revB"
+       select BOARD_LATE_INIT
+
+config TARGET_CGTQMX6EVAL
+       bool "cgtqmx6eval"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+       select DM
+       select DM_THERMAL
+
+config TARGET_CM_FX6
+       bool "CM-FX6"
+       select SUPPORT_SPL
+       select DM
+       select DM_SERIAL
+       select DM_GPIO
+
+config TARGET_COLIBRI_IMX6
+       bool "Toradex Colibri iMX6 board"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+       select DM
+       select DM_SERIAL
+       select DM_THERMAL
+
+config TARGET_EMBESTMX6BOARDS
+       bool "embestmx6boards"
+       select BOARD_LATE_INIT
+
+config TARGET_GE_B450V3
+       bool "General Electric B450v3"
+       select BOARD_LATE_INIT
+       select MX6Q
+
+config TARGET_GE_B650V3
+       bool "General Electric B650v3"
+       select BOARD_LATE_INIT
+       select MX6Q
+
+config TARGET_GE_B850V3
+       bool "General Electric B850v3"
+       select BOARD_LATE_INIT
+       select MX6Q
+
+config TARGET_GW_VENTANA
+       bool "gw_ventana"
+       select SUPPORT_SPL
+       imply CMD_SATA
+
+config TARGET_KOSAGI_NOVENA
+       bool "Kosagi Novena"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+
+config TARGET_MCCMON6
+       bool "mccmon6"
+       select SUPPORT_SPL
+
+config TARGET_MX6CUBOXI
+       bool "Solid-run mx6 boards"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+
+config TARGET_MX6LOGICPD
+       bool "Logic PD i.MX6 SOM"
+       select BOARD_EARLY_INIT_F
+       select BOARD_LATE_INIT
+       select DM
+       select DM_ETH
+       select DM_GPIO
+       select DM_I2C
+       select DM_MMC
+       select DM_PMIC
+       select DM_REGULATOR
+       select OF_CONTROL
+
+config TARGET_MX6QARM2
+       bool "mx6qarm2"
+
+config TARGET_MX6Q_ICORE
+       bool "Support Engicam i.Core"
+       select BOARD_LATE_INIT
+       select MX6QDL
+       select OF_CONTROL
+       select SPL_OF_LIBFDT
+       select DM
+       select DM_ETH
+       select DM_GPIO
+       select DM_I2C
+       select DM_MMC
+       select DM_THERMAL
+       select SUPPORT_SPL
+       select SPL_LOAD_FIT
+
+config TARGET_MX6Q_ICORE_RQS
+       bool "Support Engicam i.Core RQS"
+       select BOARD_LATE_INIT
+       select MX6QDL
+       select OF_CONTROL
+       select SPL_OF_LIBFDT
+       select DM
+       select DM_ETH
+       select DM_GPIO
+       select DM_I2C
+       select DM_MMC
+       select DM_THERMAL
+       select SUPPORT_SPL
+       select SPL_LOAD_FIT
+
+config TARGET_MX6SABREAUTO
+       bool "mx6sabreauto"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+       select DM
+       select DM_THERMAL
+       select BOARD_EARLY_INIT_F
+
+config TARGET_MX6SABRESD
+       bool "mx6sabresd"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+       select DM
+       select DM_THERMAL
+       select BOARD_EARLY_INIT_F
+
+config TARGET_MX6SLEVK
+       bool "mx6slevk"
+       select SUPPORT_SPL
+
+config TARGET_MX6SLLEVK
+        bool "mx6sll evk"
+       select BOARD_LATE_INIT
+        select MX6SLL
+        select DM
+        select DM_THERMAL
+
+config TARGET_MX6SXSABRESD
+       bool "mx6sxsabresd"
+       select MX6SX
+       select SUPPORT_SPL
+       select DM
+       select DM_THERMAL
+       select BOARD_EARLY_INIT_F
+
+config TARGET_MX6SXSABREAUTO
+        bool "mx6sxsabreauto"
+       select BOARD_LATE_INIT
+       select MX6SX
+        select DM
+        select DM_THERMAL
+       select BOARD_EARLY_INIT_F
+
+config TARGET_MX6UL_9X9_EVK
+       bool "mx6ul_9x9_evk"
+       select BOARD_LATE_INIT
+       select MX6UL
+       select DM
+       select DM_THERMAL
+       select SUPPORT_SPL
+
+config TARGET_MX6UL_14X14_EVK
+       select BOARD_LATE_INIT
+       bool "mx6ul_14x14_evk"
+       select MX6UL
+       select DM
+       select DM_THERMAL
+       select SUPPORT_SPL
+
+config TARGET_MX6UL_GEAM
+       bool "Support Engicam GEAM6UL"
+       select BOARD_LATE_INIT
+       select MX6UL
+       select OF_CONTROL
+       select DM
+       select DM_ETH
+       select DM_GPIO
+       select DM_I2C
+       select DM_MMC
+       select DM_THERMAL
+       select SUPPORT_SPL
+config TARGET_MX6UL_ISIOT
+       bool "Support Engicam Is.IoT MX6UL"
+       select BOARD_LATE_INIT
+       select MX6UL
+       select OF_CONTROL
+       select DM
+       select DM_ETH
+       select DM_GPIO
+       select DM_I2C
+       select DM_MMC
+       select DM_THERMAL
+       select SUPPORT_SPL
+
+config TARGET_MX6ULL_14X14_EVK
+       bool "Support mx6ull_14x14_evk"
+       select BOARD_LATE_INIT
+       select MX6ULL
+       select DM
+       select DM_THERMAL
+
+config TARGET_NITROGEN6X
+       bool "nitrogen6x"
+
+config TARGET_OPOS6ULDEV
+       bool "Armadeus OPOS6ULDev board"
+       select MX6UL_OPOS6UL
+
+config TARGET_OT1200
+       bool "Bachmann OT1200"
+       select SUPPORT_SPL
+       imply CMD_SATA
+
+config TARGET_PICO_IMX6UL
+       bool "PICO-IMX6UL-EMMC"
+       select MX6UL
+
+config TARGET_LITEBOARD
+       bool "Grinn liteBoard (i.MX6UL)"
+       select BOARD_LATE_INIT
+       select MX6UL_LITESOM
+
+config TARGET_PLATINUM_PICON
+       bool "platinum-picon"
+       select SUPPORT_SPL
+
+config TARGET_PLATINUM_TITANIUM
+       bool "platinum-titanium"
+       select SUPPORT_SPL
+
+config TARGET_PCM058
+       bool "Phytec PCM058 i.MX6 Quad"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+
+config TARGET_SECOMX6
+       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"
+       select BOARD_LATE_INIT
+
+config TARGET_UDOO
+       bool "udoo"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+
+config TARGET_UDOO_NEO
+       bool "UDOO Neo"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+       select MX6SX
+       select DM
+       select DM_THERMAL
+
+config TARGET_SAMTEC_VINING_2000
+       bool "samtec VIN|ING 2000"
+       select BOARD_LATE_INIT
+       select MX6SX
+       select DM
+       select DM_THERMAL
+
+config TARGET_WANDBOARD
+       bool "wandboard"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+
+config TARGET_WARP
+       bool "WaRP"
+       select BOARD_LATE_INIT
+
+config TARGET_XPRESS
+       bool "CCV xPress"
+       select BOARD_LATE_INIT
+       select MX6UL
+       select DM
+       select DM_THERMAL
+       select SUPPORT_SPL
+
+config TARGET_ZC5202
+       bool "zc5202"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+       select DM
+       select DM_THERMAL
+
+config TARGET_ZC5601
+       bool "zc5601"
+       select BOARD_LATE_INIT
+       select SUPPORT_SPL
+       select DM
+       select DM_THERMAL
+
+endchoice
+
+config SYS_SOC
+       default "mx6"
+
+source "board/ge/bx50v3/Kconfig"
+source "board/advantech/dms-ba16/Kconfig"
+source "board/aristainetos/Kconfig"
+source "board/armadeus/opos6uldev/Kconfig"
+source "board/bachmann/ot1200/Kconfig"
+source "board/barco/platinum/Kconfig"
+source "board/barco/titanium/Kconfig"
+source "board/boundary/nitrogen6x/Kconfig"
+source "board/ccv/xpress/Kconfig"
+source "board/compulab/cm_fx6/Kconfig"
+source "board/congatec/cgtqmx6eval/Kconfig"
+source "board/el/el6x/Kconfig"
+source "board/embest/mx6boards/Kconfig"
+source "board/engicam/geam6ul/Kconfig"
+source "board/engicam/icorem6/Kconfig"
+source "board/engicam/icorem6_rqs/Kconfig"
+source "board/engicam/isiotmx6ul/Kconfig"
+source "board/freescale/mx6qarm2/Kconfig"
+source "board/freescale/mx6sabreauto/Kconfig"
+source "board/freescale/mx6sabresd/Kconfig"
+source "board/freescale/mx6slevk/Kconfig"
+source "board/freescale/mx6sllevk/Kconfig"
+source "board/freescale/mx6sxsabresd/Kconfig"
+source "board/freescale/mx6sxsabreauto/Kconfig"
+source "board/freescale/mx6ul_14x14_evk/Kconfig"
+source "board/freescale/mx6ullevk/Kconfig"
+source "board/grinn/liteboard/Kconfig"
+source "board/phytec/pcm058/Kconfig"
+source "board/gateworks/gw_ventana/Kconfig"
+source "board/kosagi/novena/Kconfig"
+source "board/samtec/vining_2000/Kconfig"
+source "board/liebherr/mccmon6/Kconfig"
+source "board/logicpd/imx6/Kconfig"
+source "board/seco/Kconfig"
+source "board/solidrun/mx6cuboxi/Kconfig"
+source "board/technexion/pico-imx6ul/Kconfig"
+source "board/tbs/tbs2910/Kconfig"
+source "board/tqc/tqma6/Kconfig"
+source "board/toradex/apalis_imx6/Kconfig"
+source "board/toradex/colibri_imx6/Kconfig"
+source "board/udoo/Kconfig"
+source "board/udoo/neo/Kconfig"
+source "board/wandboard/Kconfig"
+source "board/warp/Kconfig"
+
+endif
diff --git a/arch/arm/mach-imx/mx6/Makefile b/arch/arm/mach-imx/mx6/Makefile
new file mode 100644 (file)
index 0000000..c183eb4
--- /dev/null
@@ -0,0 +1,14 @@
+#
+# (C) Copyright 2000-2006
+# Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := soc.o clock.o
+obj-$(CONFIG_SPL_BUILD)             += ddr.o
+obj-$(CONFIG_MP)             += mp.o
+obj-$(CONFIG_MX6UL_LITESOM)  += litesom.o
+obj-$(CONFIG_MX6UL_OPOS6UL)  += opos6ul.o
diff --git a/arch/arm/mach-imx/mx6/clock.c b/arch/arm/mach-imx/mx6/clock.c
new file mode 100644 (file)
index 0000000..1f2739e
--- /dev/null
@@ -0,0 +1,1486 @@
+/*
+ * Copyright (C) 2010-2011 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <div64.h>
+#include <asm/io.h>
+#include <linux/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>
+
+enum pll_clocks {
+       PLL_SYS,        /* System PLL */
+       PLL_BUS,        /* System Bus PLL*/
+       PLL_USBOTG,     /* OTG USB PLL */
+       PLL_ENET,       /* ENET PLL */
+       PLL_AUDIO,      /* AUDIO PLL */
+       PLL_VIDEO,      /* AUDIO PLL */
+};
+
+struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+#ifdef CONFIG_MXC_OCOTP
+void enable_ocotp_clk(unsigned char enable)
+{
+       u32 reg;
+
+       reg = __raw_readl(&imx_ccm->CCGR2);
+       if (enable)
+               reg |= MXC_CCM_CCGR2_OCOTP_CTRL_MASK;
+       else
+               reg &= ~MXC_CCM_CCGR2_OCOTP_CTRL_MASK;
+       __raw_writel(reg, &imx_ccm->CCGR2);
+}
+#endif
+
+#ifdef CONFIG_NAND_MXS
+void setup_gpmi_io_clk(u32 cfg)
+{
+       /* Disable clocks per ERR007177 from MX6 errata */
+       clrbits_le32(&imx_ccm->CCGR4,
+                    MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
+                    MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK);
+
+#if defined(CONFIG_MX6SX)
+       clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK);
+
+       clrsetbits_le32(&imx_ccm->cs2cdr,
+                       MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK |
+                       MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK |
+                       MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK,
+                       cfg);
+
+       setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK);
+#else
+       clrbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
+
+       clrsetbits_le32(&imx_ccm->cs2cdr,
+                       MXC_CCM_CS2CDR_ENFC_CLK_PODF_MASK |
+                       MXC_CCM_CS2CDR_ENFC_CLK_PRED_MASK |
+                       MXC_CCM_CS2CDR_ENFC_CLK_SEL_MASK,
+                       cfg);
+
+       setbits_le32(&imx_ccm->CCGR2, MXC_CCM_CCGR2_IOMUX_IPT_CLK_IO_MASK);
+#endif
+       setbits_le32(&imx_ccm->CCGR4,
+                    MXC_CCM_CCGR4_RAWNAND_U_BCH_INPUT_APB_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_BCH_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK |
+                    MXC_CCM_CCGR4_RAWNAND_U_GPMI_INPUT_APB_MASK |
+                    MXC_CCM_CCGR4_PL301_MX6QPER1_BCH_MASK);
+}
+#endif
+
+void enable_usboh3_clk(unsigned char enable)
+{
+       u32 reg;
+
+       reg = __raw_readl(&imx_ccm->CCGR6);
+       if (enable)
+               reg |= MXC_CCM_CCGR6_USBOH3_MASK;
+       else
+               reg &= ~(MXC_CCM_CCGR6_USBOH3_MASK);
+       __raw_writel(reg, &imx_ccm->CCGR6);
+
+}
+
+#if defined(CONFIG_FEC_MXC) && !defined(CONFIG_MX6SX)
+void enable_enet_clk(unsigned char enable)
+{
+       u32 mask, *addr;
+
+       if (is_mx6ull()) {
+               mask = MXC_CCM_CCGR0_ENET_CLK_ENABLE_MASK;
+               addr = &imx_ccm->CCGR0;
+       } else if (is_mx6ul()) {
+               mask = MXC_CCM_CCGR3_ENET_MASK;
+               addr = &imx_ccm->CCGR3;
+       } else {
+               mask = MXC_CCM_CCGR1_ENET_MASK;
+               addr = &imx_ccm->CCGR1;
+       }
+
+       if (enable)
+               setbits_le32(addr, mask);
+       else
+               clrbits_le32(addr, mask);
+}
+#endif
+
+#ifdef CONFIG_MXC_UART
+void enable_uart_clk(unsigned char enable)
+{
+       u32 mask;
+
+       if (is_mx6ul() || is_mx6ull())
+               mask = MXC_CCM_CCGR5_UART_MASK;
+       else
+               mask = MXC_CCM_CCGR5_UART_MASK | MXC_CCM_CCGR5_UART_SERIAL_MASK;
+
+       if (enable)
+               setbits_le32(&imx_ccm->CCGR5, mask);
+       else
+               clrbits_le32(&imx_ccm->CCGR5, mask);
+}
+#endif
+
+#ifdef CONFIG_MMC
+int enable_usdhc_clk(unsigned char enable, unsigned bus_num)
+{
+       u32 mask;
+
+       if (bus_num > 3)
+               return -EINVAL;
+
+       mask = MXC_CCM_CCGR_CG_MASK << (bus_num * 2 + 2);
+       if (enable)
+               setbits_le32(&imx_ccm->CCGR6, mask);
+       else
+               clrbits_le32(&imx_ccm->CCGR6, mask);
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_SYS_I2C_MXC
+/* i2c_num can be from 0 - 3 */
+int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
+{
+       u32 reg;
+       u32 mask;
+       u32 *addr;
+
+       if (i2c_num > 3)
+               return -EINVAL;
+       if (i2c_num < 3) {
+               mask = MXC_CCM_CCGR_CG_MASK
+                       << (MXC_CCM_CCGR2_I2C1_SERIAL_OFFSET
+                       + (i2c_num << 1));
+               reg = __raw_readl(&imx_ccm->CCGR2);
+               if (enable)
+                       reg |= mask;
+               else
+                       reg &= ~mask;
+               __raw_writel(reg, &imx_ccm->CCGR2);
+       } else {
+               if (is_mx6sll())
+                       return -EINVAL;
+               if (is_mx6sx() || is_mx6ul() || is_mx6ull()) {
+                       mask = MXC_CCM_CCGR6_I2C4_MASK;
+                       addr = &imx_ccm->CCGR6;
+               } else {
+                       mask = MXC_CCM_CCGR1_I2C4_SERIAL_MASK;
+                       addr = &imx_ccm->CCGR1;
+               }
+               reg = __raw_readl(addr);
+               if (enable)
+                       reg |= mask;
+               else
+                       reg &= ~mask;
+               __raw_writel(reg, addr);
+       }
+       return 0;
+}
+#endif
+
+/* spi_num can be from 0 - SPI_MAX_NUM */
+int enable_spi_clk(unsigned char enable, unsigned spi_num)
+{
+       u32 reg;
+       u32 mask;
+
+       if (spi_num > SPI_MAX_NUM)
+               return -EINVAL;
+
+       mask = MXC_CCM_CCGR_CG_MASK << (spi_num << 1);
+       reg = __raw_readl(&imx_ccm->CCGR1);
+       if (enable)
+               reg |= mask;
+       else
+               reg &= ~mask;
+       __raw_writel(reg, &imx_ccm->CCGR1);
+       return 0;
+}
+static u32 decode_pll(enum pll_clocks pll, u32 infreq)
+{
+       u32 div, test_div, pll_num, pll_denom;
+
+       switch (pll) {
+       case PLL_SYS:
+               div = __raw_readl(&imx_ccm->analog_pll_sys);
+               div &= BM_ANADIG_PLL_SYS_DIV_SELECT;
+
+               return (infreq * div) >> 1;
+       case PLL_BUS:
+               div = __raw_readl(&imx_ccm->analog_pll_528);
+               div &= BM_ANADIG_PLL_528_DIV_SELECT;
+
+               return infreq * (20 + (div << 1));
+       case PLL_USBOTG:
+               div = __raw_readl(&imx_ccm->analog_usb1_pll_480_ctrl);
+               div &= BM_ANADIG_USB1_PLL_480_CTRL_DIV_SELECT;
+
+               return infreq * (20 + (div << 1));
+       case PLL_ENET:
+               div = __raw_readl(&imx_ccm->analog_pll_enet);
+               div &= BM_ANADIG_PLL_ENET_DIV_SELECT;
+
+               return 25000000 * (div + (div >> 1) + 1);
+       case PLL_AUDIO:
+               div = __raw_readl(&imx_ccm->analog_pll_audio);
+               if (!(div & BM_ANADIG_PLL_AUDIO_ENABLE))
+                       return 0;
+               /* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */
+               if (div & BM_ANADIG_PLL_AUDIO_BYPASS)
+                       return MXC_HCLK;
+               pll_num = __raw_readl(&imx_ccm->analog_pll_audio_num);
+               pll_denom = __raw_readl(&imx_ccm->analog_pll_audio_denom);
+               test_div = (div & BM_ANADIG_PLL_AUDIO_TEST_DIV_SELECT) >>
+                       BP_ANADIG_PLL_AUDIO_TEST_DIV_SELECT;
+               div &= BM_ANADIG_PLL_AUDIO_DIV_SELECT;
+               if (test_div == 3) {
+                       debug("Error test_div\n");
+                       return 0;
+               }
+               test_div = 1 << (2 - test_div);
+
+               return infreq * (div + pll_num / pll_denom) / test_div;
+       case PLL_VIDEO:
+               div = __raw_readl(&imx_ccm->analog_pll_video);
+               if (!(div & BM_ANADIG_PLL_VIDEO_ENABLE))
+                       return 0;
+               /* BM_ANADIG_PLL_AUDIO_BYPASS_CLK_SRC is ignored */
+               if (div & BM_ANADIG_PLL_VIDEO_BYPASS)
+                       return MXC_HCLK;
+               pll_num = __raw_readl(&imx_ccm->analog_pll_video_num);
+               pll_denom = __raw_readl(&imx_ccm->analog_pll_video_denom);
+               test_div = (div & BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT) >>
+                       BP_ANADIG_PLL_VIDEO_POST_DIV_SELECT;
+               div &= BM_ANADIG_PLL_VIDEO_DIV_SELECT;
+               if (test_div == 3) {
+                       debug("Error test_div\n");
+                       return 0;
+               }
+               test_div = 1 << (2 - test_div);
+
+               return infreq * (div + pll_num / pll_denom) / test_div;
+       default:
+               return 0;
+       }
+       /* NOTREACHED */
+}
+static u32 mxc_get_pll_pfd(enum pll_clocks pll, int pfd_num)
+{
+       u32 div;
+       u64 freq;
+
+       switch (pll) {
+       case PLL_BUS:
+               if (!is_mx6ul() && !is_mx6ull()) {
+                       if (pfd_num == 3) {
+                               /* No PFD3 on PLL2 */
+                               return 0;
+                       }
+               }
+               div = __raw_readl(&imx_ccm->analog_pfd_528);
+               freq = (u64)decode_pll(PLL_BUS, MXC_HCLK);
+               break;
+       case PLL_USBOTG:
+               div = __raw_readl(&imx_ccm->analog_pfd_480);
+               freq = (u64)decode_pll(PLL_USBOTG, MXC_HCLK);
+               break;
+       default:
+               /* No PFD on other PLL                                       */
+               return 0;
+       }
+
+       return lldiv(freq * 18, (div & ANATOP_PFD_FRAC_MASK(pfd_num)) >>
+                             ANATOP_PFD_FRAC_SHIFT(pfd_num));
+}
+
+static u32 get_mcu_main_clk(void)
+{
+       u32 reg, freq;
+
+       reg = __raw_readl(&imx_ccm->cacrr);
+       reg &= MXC_CCM_CACRR_ARM_PODF_MASK;
+       reg >>= MXC_CCM_CACRR_ARM_PODF_OFFSET;
+       freq = decode_pll(PLL_SYS, MXC_HCLK);
+
+       return freq / (reg + 1);
+}
+
+u32 get_periph_clk(void)
+{
+       u32 reg, div = 0, freq = 0;
+
+       reg = __raw_readl(&imx_ccm->cbcdr);
+       if (reg & MXC_CCM_CBCDR_PERIPH_CLK_SEL) {
+               div = (reg & MXC_CCM_CBCDR_PERIPH_CLK2_PODF_MASK) >>
+                      MXC_CCM_CBCDR_PERIPH_CLK2_PODF_OFFSET;
+               reg = __raw_readl(&imx_ccm->cbcmr);
+               reg &= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_MASK;
+               reg >>= MXC_CCM_CBCMR_PERIPH_CLK2_SEL_OFFSET;
+
+               switch (reg) {
+               case 0:
+                       freq = decode_pll(PLL_USBOTG, MXC_HCLK);
+                       break;
+               case 1:
+               case 2:
+                       freq = MXC_HCLK;
+                       break;
+               default:
+                       break;
+               }
+       } else {
+               reg = __raw_readl(&imx_ccm->cbcmr);
+               reg &= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK;
+               reg >>= MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET;
+
+               switch (reg) {
+               case 0:
+                       freq = decode_pll(PLL_BUS, MXC_HCLK);
+                       break;
+               case 1:
+                       freq = mxc_get_pll_pfd(PLL_BUS, 2);
+                       break;
+               case 2:
+                       freq = mxc_get_pll_pfd(PLL_BUS, 0);
+                       break;
+               case 3:
+                       /* static / 2 divider */
+                       freq = mxc_get_pll_pfd(PLL_BUS, 2) / 2;
+                       break;
+               default:
+                       break;
+               }
+       }
+
+       return freq / (div + 1);
+}
+
+static u32 get_ipg_clk(void)
+{
+       u32 reg, ipg_podf;
+
+       reg = __raw_readl(&imx_ccm->cbcdr);
+       reg &= MXC_CCM_CBCDR_IPG_PODF_MASK;
+       ipg_podf = reg >> MXC_CCM_CBCDR_IPG_PODF_OFFSET;
+
+       return get_ahb_clk() / (ipg_podf + 1);
+}
+
+static u32 get_ipg_per_clk(void)
+{
+       u32 reg, perclk_podf;
+
+       reg = __raw_readl(&imx_ccm->cscmr1);
+       if (is_mx6sll() || is_mx6sl() || is_mx6sx() ||
+           is_mx6dqp() || is_mx6ul() || is_mx6ull()) {
+               if (reg & MXC_CCM_CSCMR1_PER_CLK_SEL_MASK)
+                       return MXC_HCLK; /* OSC 24Mhz */
+       }
+
+       perclk_podf = reg & MXC_CCM_CSCMR1_PERCLK_PODF_MASK;
+
+       return get_ipg_clk() / (perclk_podf + 1);
+}
+
+static u32 get_uart_clk(void)
+{
+       u32 reg, uart_podf;
+       u32 freq = decode_pll(PLL_USBOTG, MXC_HCLK) / 6; /* static divider */
+       reg = __raw_readl(&imx_ccm->cscdr1);
+
+       if (is_mx6sl() || is_mx6sx() || is_mx6dqp() || is_mx6ul() ||
+           is_mx6sll() || is_mx6ull()) {
+               if (reg & MXC_CCM_CSCDR1_UART_CLK_SEL)
+                       freq = MXC_HCLK;
+       }
+
+       reg &= MXC_CCM_CSCDR1_UART_CLK_PODF_MASK;
+       uart_podf = reg >> MXC_CCM_CSCDR1_UART_CLK_PODF_OFFSET;
+
+       return freq / (uart_podf + 1);
+}
+
+static u32 get_cspi_clk(void)
+{
+       u32 reg, cspi_podf;
+
+       reg = __raw_readl(&imx_ccm->cscdr2);
+       cspi_podf = (reg & MXC_CCM_CSCDR2_ECSPI_CLK_PODF_MASK) >>
+                    MXC_CCM_CSCDR2_ECSPI_CLK_PODF_OFFSET;
+
+       if (is_mx6dqp() || is_mx6sl() || is_mx6sx() || is_mx6ul() ||
+           is_mx6sll() || is_mx6ull()) {
+               if (reg & MXC_CCM_CSCDR2_ECSPI_CLK_SEL_MASK)
+                       return MXC_HCLK / (cspi_podf + 1);
+       }
+
+       return  decode_pll(PLL_USBOTG, MXC_HCLK) / (8 * (cspi_podf + 1));
+}
+
+static u32 get_axi_clk(void)
+{
+       u32 root_freq, axi_podf;
+       u32 cbcdr =  __raw_readl(&imx_ccm->cbcdr);
+
+       axi_podf = cbcdr & MXC_CCM_CBCDR_AXI_PODF_MASK;
+       axi_podf >>= MXC_CCM_CBCDR_AXI_PODF_OFFSET;
+
+       if (cbcdr & MXC_CCM_CBCDR_AXI_SEL) {
+               if (cbcdr & MXC_CCM_CBCDR_AXI_ALT_SEL)
+                       root_freq = mxc_get_pll_pfd(PLL_USBOTG, 1);
+               else
+                       root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
+       } else
+               root_freq = get_periph_clk();
+
+       return  root_freq / (axi_podf + 1);
+}
+
+static u32 get_emi_slow_clk(void)
+{
+       u32 emi_clk_sel, emi_slow_podf, cscmr1, root_freq = 0;
+
+       cscmr1 =  __raw_readl(&imx_ccm->cscmr1);
+       emi_clk_sel = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK;
+       emi_clk_sel >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_OFFSET;
+       emi_slow_podf = cscmr1 & MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK;
+       emi_slow_podf >>= MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET;
+
+       switch (emi_clk_sel) {
+       case 0:
+               root_freq = get_axi_clk();
+               break;
+       case 1:
+               root_freq = decode_pll(PLL_USBOTG, MXC_HCLK);
+               break;
+       case 2:
+               root_freq =  mxc_get_pll_pfd(PLL_BUS, 2);
+               break;
+       case 3:
+               root_freq =  mxc_get_pll_pfd(PLL_BUS, 0);
+               break;
+       }
+
+       return root_freq / (emi_slow_podf + 1);
+}
+
+static u32 get_mmdc_ch0_clk(void)
+{
+       u32 cbcmr = __raw_readl(&imx_ccm->cbcmr);
+       u32 cbcdr = __raw_readl(&imx_ccm->cbcdr);
+
+       u32 freq, podf, per2_clk2_podf, pmu_misc2_audio_div;
+
+       if (is_mx6sx() || is_mx6ul() || is_mx6ull() || is_mx6sl() ||
+           is_mx6sll()) {
+               podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH1_PODF_MASK) >>
+                       MXC_CCM_CBCDR_MMDC_CH1_PODF_OFFSET;
+               if (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK_SEL) {
+                       per2_clk2_podf = (cbcdr & MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_MASK) >>
+                               MXC_CCM_CBCDR_PERIPH2_CLK2_PODF_OFFSET;
+                       if (is_mx6sl()) {
+                               if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL)
+                                       freq = MXC_HCLK;
+                               else
+                                       freq = decode_pll(PLL_USBOTG, MXC_HCLK);
+                       } else {
+                               if (cbcmr & MXC_CCM_CBCMR_PERIPH2_CLK2_SEL)
+                                       freq = decode_pll(PLL_BUS, MXC_HCLK);
+                               else
+                                       freq = decode_pll(PLL_USBOTG, MXC_HCLK);
+                       }
+               } else {
+                       per2_clk2_podf = 0;
+                       switch ((cbcmr &
+                               MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK) >>
+                               MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET) {
+                       case 0:
+                               freq = decode_pll(PLL_BUS, MXC_HCLK);
+                               break;
+                       case 1:
+                               freq = mxc_get_pll_pfd(PLL_BUS, 2);
+                               break;
+                       case 2:
+                               freq = mxc_get_pll_pfd(PLL_BUS, 0);
+                               break;
+                       case 3:
+                               if (is_mx6sl()) {
+                                       freq = mxc_get_pll_pfd(PLL_BUS, 2) >> 1;
+                                       break;
+                               }
+
+                               pmu_misc2_audio_div = PMU_MISC2_AUDIO_DIV(__raw_readl(&imx_ccm->pmu_misc2));
+                               switch (pmu_misc2_audio_div) {
+                               case 0:
+                               case 2:
+                                       pmu_misc2_audio_div = 1;
+                                       break;
+                               case 1:
+                                       pmu_misc2_audio_div = 2;
+                                       break;
+                               case 3:
+                                       pmu_misc2_audio_div = 4;
+                                       break;
+                               }
+                               freq = decode_pll(PLL_AUDIO, MXC_HCLK) /
+                                       pmu_misc2_audio_div;
+                               break;
+                       }
+               }
+               return freq / (podf + 1) / (per2_clk2_podf + 1);
+       } else {
+               podf = (cbcdr & MXC_CCM_CBCDR_MMDC_CH0_PODF_MASK) >>
+                       MXC_CCM_CBCDR_MMDC_CH0_PODF_OFFSET;
+               return get_periph_clk() / (podf + 1);
+       }
+}
+
+#if defined(CONFIG_VIDEO_MXS)
+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 */
+       writel(BM_ANADIG_PLL_VIDEO_POWERDOWN |
+              BM_ANADIG_PLL_VIDEO_BYPASS |
+              BM_ANADIG_PLL_VIDEO_DIV_SELECT |
+              BM_ANADIG_PLL_VIDEO_POST_DIV_SELECT,
+              &imx_ccm->analog_pll_video_clr);
+
+       /* Set div, num and denom */
+       switch (post_div) {
+       case 1:
+               writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
+                      BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x2),
+                      &imx_ccm->analog_pll_video_set);
+               break;
+       case 2:
+               writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
+                      BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x1),
+                      &imx_ccm->analog_pll_video_set);
+               break;
+       case 4:
+               writel(BF_ANADIG_PLL_VIDEO_DIV_SELECT(pll_div) |
+                      BF_ANADIG_PLL_VIDEO_POST_DIV_SELECT(0x0),
+                      &imx_ccm->analog_pll_video_set);
+               break;
+       default:
+               puts("Wrong test_div!\n");
+               return -EINVAL;
+       }
+
+       writel(BF_ANADIG_PLL_VIDEO_NUM_A(pll_num),
+              &imx_ccm->analog_pll_video_num);
+       writel(BF_ANADIG_PLL_VIDEO_DENOM_B(pll_denom),
+              &imx_ccm->analog_pll_video_denom);
+
+       /* Wait PLL5 lock */
+       start = get_timer(0);   /* Get current timestamp */
+
+       do {
+               reg = readl(&imx_ccm->analog_pll_video);
+               if (reg & BM_ANADIG_PLL_VIDEO_LOCK) {
+                       /* Enable PLL out */
+                       writel(BM_ANADIG_PLL_VIDEO_ENABLE,
+                              &imx_ccm->analog_pll_video_set);
+                       return 0;
+               }
+       } while (get_timer(0) < (start + 10)); /* Wait 10ms */
+
+       puts("Lock PLL5 timeout\n");
+
+       return -ETIME;
+}
+
+/*
+ * 24M--> PLL_VIDEO -> LCDIFx_PRED -> LCDIFx_PODF -> LCD
+ *
+ * 'freq' using KHz as unit, see driver/video/mxsfb.c.
+ */
+void mxs_set_lcdclk(u32 base_addr, u32 freq)
+{
+       u32 reg = 0;
+       u32 hck = MXC_HCLK / 1000;
+       /* DIV_SELECT ranges from 27 to 54 */
+       u32 min = hck * 27;
+       u32 max = hck * 54;
+       u32 temp, best = 0;
+       u32 i, j, max_pred = 8, max_postd = 8, pred = 1, postd = 1;
+       u32 pll_div, pll_num, pll_denom, post_div = 1;
+
+       debug("mxs_set_lcdclk, freq = %dKHz\n", freq);
+
+       if (!is_mx6sx() && !is_mx6ul() && !is_mx6ull() && !is_mx6sl() &&
+           !is_mx6sll()) {
+               debug("This chip not support lcd!\n");
+               return;
+       }
+
+       if (!is_mx6sl()) {
+               if (base_addr == LCDIF1_BASE_ADDR) {
+                       reg = readl(&imx_ccm->cscdr2);
+                       /* Can't change clocks when clock not from pre-mux */
+                       if ((reg & MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK) != 0)
+                               return;
+               }
+       }
+
+       if (is_mx6sx()) {
+               reg = readl(&imx_ccm->cscdr2);
+               /* Can't change clocks when clock not from pre-mux */
+               if ((reg & MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK) != 0)
+                       return;
+       }
+
+       temp = freq * max_pred * max_postd;
+       if (temp < min) {
+               /*
+                * Register: PLL_VIDEO
+                * Bit Field: POST_DIV_SELECT
+                * 00 â€” Divide by 4.
+                * 01 â€” Divide by 2.
+                * 10 â€” Divide by 1.
+                * 11 â€” Reserved
+                * No need to check post_div(1)
+                */
+               for (post_div = 2; post_div <= 4; post_div <<= 1) {
+                       if ((temp * post_div) > min) {
+                               freq *= post_div;
+                               break;
+                       }
+               }
+
+               if (post_div > 4) {
+                       printf("Fail to set rate to %dkhz", freq);
+                       return;
+               }
+       }
+
+       /* Choose the best pred and postd to match freq for lcd */
+       for (i = 1; i <= max_pred; i++) {
+               for (j = 1; j <= max_postd; 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;
+
+       /*
+        *                                  pll_num
+        *             (24MHz * (pll_div + --------- ))
+        *                                 pll_denom
+        *freq KHz =  --------------------------------
+        *             post_div * pred * postd * 1000
+        */
+
+       if (base_addr == LCDIF1_BASE_ADDR) {
+               if (enable_pll_video(pll_div, pll_num, pll_denom, post_div))
+                       return;
+
+               enable_lcdif_clock(base_addr, 0);
+               if (!is_mx6sl()) {
+                       /* Select pre-lcd clock to PLL5 and set pre divider */
+                       clrsetbits_le32(&imx_ccm->cscdr2,
+                                       MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_MASK |
+                                       MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_MASK,
+                                       (0x2 << MXC_CCM_CSCDR2_LCDIF1_PRED_SEL_OFFSET) |
+                                       ((pred - 1) <<
+                                        MXC_CCM_CSCDR2_LCDIF1_PRE_DIV_OFFSET));
+
+                       /* Set the post divider */
+                       clrsetbits_le32(&imx_ccm->cbcmr,
+                                       MXC_CCM_CBCMR_LCDIF1_PODF_MASK,
+                                       ((postd - 1) <<
+                                       MXC_CCM_CBCMR_LCDIF1_PODF_OFFSET));
+               } else {
+                       /* Select pre-lcd clock to PLL5 and set pre divider */
+                       clrsetbits_le32(&imx_ccm->cscdr2,
+                                       MXC_CCM_CSCDR2_LCDIF_PIX_CLK_SEL_MASK |
+                                       MXC_CCM_CSCDR2_LCDIF_PIX_PRE_DIV_MASK,
+                                       (0x2 << MXC_CCM_CSCDR2_LCDIF_PIX_CLK_SEL_OFFSET) |
+                                       ((pred - 1) <<
+                                        MXC_CCM_CSCDR2_LCDIF_PIX_PRE_DIV_OFFSET));
+
+                       /* Set the post divider */
+                       clrsetbits_le32(&imx_ccm->cscmr1,
+                                       MXC_CCM_CSCMR1_LCDIF_PIX_PODF_MASK,
+                                       (((postd - 1)^0x6) <<
+                                        MXC_CCM_CSCMR1_LCDIF_PIX_PODF_OFFSET));
+               }
+
+               enable_lcdif_clock(base_addr, 1);
+       } else if (is_mx6sx()) {
+               /* Setting LCDIF2 for i.MX6SX */
+               if (enable_pll_video(pll_div, pll_num, pll_denom, post_div))
+                       return;
+
+               enable_lcdif_clock(base_addr, 0);
+               /* Select pre-lcd clock to PLL5 and set pre divider */
+               clrsetbits_le32(&imx_ccm->cscdr2,
+                               MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_MASK |
+                               MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_MASK,
+                               (0x2 << MXC_CCM_CSCDR2_LCDIF2_PRED_SEL_OFFSET) |
+                               ((pred - 1) <<
+                                MXC_CCM_CSCDR2_LCDIF2_PRE_DIV_OFFSET));
+
+               /* Set the post divider */
+               clrsetbits_le32(&imx_ccm->cscmr1,
+                               MXC_CCM_CSCMR1_LCDIF2_PODF_MASK,
+                               ((postd - 1) <<
+                                MXC_CCM_CSCMR1_LCDIF2_PODF_OFFSET));
+
+               enable_lcdif_clock(base_addr, 1);
+       }
+}
+
+int enable_lcdif_clock(u32 base_addr, bool enable)
+{
+       u32 reg = 0;
+       u32 lcdif_clk_sel_mask, lcdif_ccgr3_mask;
+
+       if (is_mx6sx()) {
+               if ((base_addr != LCDIF1_BASE_ADDR) &&
+                   (base_addr != LCDIF2_BASE_ADDR)) {
+                       puts("Wrong LCD interface!\n");
+                       return -EINVAL;
+               }
+               /* Set to pre-mux clock at default */
+               lcdif_clk_sel_mask = (base_addr == LCDIF2_BASE_ADDR) ?
+                       MXC_CCM_CSCDR2_LCDIF2_CLK_SEL_MASK :
+                       MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK;
+               lcdif_ccgr3_mask = (base_addr == LCDIF2_BASE_ADDR) ?
+                       (MXC_CCM_CCGR3_LCDIF2_PIX_MASK |
+                        MXC_CCM_CCGR3_DISP_AXI_MASK) :
+                       (MXC_CCM_CCGR3_LCDIF1_PIX_MASK |
+                        MXC_CCM_CCGR3_DISP_AXI_MASK);
+       } else if (is_mx6ul() || is_mx6ull() || is_mx6sll()) {
+               if (base_addr != LCDIF1_BASE_ADDR) {
+                       puts("Wrong LCD interface!\n");
+                       return -EINVAL;
+               }
+               /* Set to pre-mux clock at default */
+               lcdif_clk_sel_mask = MXC_CCM_CSCDR2_LCDIF1_CLK_SEL_MASK;
+               lcdif_ccgr3_mask =  MXC_CCM_CCGR3_LCDIF1_PIX_MASK;
+       } else if (is_mx6sl()) {
+               if (base_addr != LCDIF1_BASE_ADDR) {
+                       puts("Wrong LCD interface!\n");
+                       return -EINVAL;
+               }
+
+               reg = readl(&imx_ccm->CCGR3);
+               reg &= ~(MXC_CCM_CCGR3_LCDIF_AXI_MASK |
+                        MXC_CCM_CCGR3_LCDIF_PIX_MASK);
+               writel(reg, &imx_ccm->CCGR3);
+
+               if (enable) {
+                       reg = readl(&imx_ccm->cscdr3);
+                       reg &= ~MXC_CCM_CSCDR3_LCDIF_AXI_CLK_SEL_MASK;
+                       reg |= 1 << MXC_CCM_CSCDR3_LCDIF_AXI_CLK_SEL_OFFSET;
+                       writel(reg, &imx_ccm->cscdr3);
+
+                       reg = readl(&imx_ccm->CCGR3);
+                       reg |= MXC_CCM_CCGR3_LCDIF_AXI_MASK |
+                               MXC_CCM_CCGR3_LCDIF_PIX_MASK;
+                       writel(reg, &imx_ccm->CCGR3);
+               }
+
+               return 0;
+       } else {
+               return 0;
+       }
+
+       /* Gate LCDIF clock first */
+       reg = readl(&imx_ccm->CCGR3);
+       reg &= ~lcdif_ccgr3_mask;
+       writel(reg, &imx_ccm->CCGR3);
+
+       reg = readl(&imx_ccm->CCGR2);
+       reg &= ~MXC_CCM_CCGR2_LCD_MASK;
+       writel(reg, &imx_ccm->CCGR2);
+
+       if (enable) {
+               /* Select pre-mux */
+               reg = readl(&imx_ccm->cscdr2);
+               reg &= ~lcdif_clk_sel_mask;
+               writel(reg, &imx_ccm->cscdr2);
+
+               /* Enable the LCDIF pix clock */
+               reg = readl(&imx_ccm->CCGR3);
+               reg |= lcdif_ccgr3_mask;
+               writel(reg, &imx_ccm->CCGR3);
+
+               reg = readl(&imx_ccm->CCGR2);
+               reg |= MXC_CCM_CCGR2_LCD_MASK;
+               writel(reg, &imx_ccm->CCGR2);
+       }
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_FSL_QSPI
+/* qspi_num can be from 0 - 1 */
+void enable_qspi_clk(int qspi_num)
+{
+       u32 reg = 0;
+       /* Enable QuadSPI clock */
+       switch (qspi_num) {
+       case 0:
+               /* disable the clock gate */
+               clrbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK);
+
+               /* set 50M  : (50 = 396 / 2 / 4) */
+               reg = readl(&imx_ccm->cscmr1);
+               reg &= ~(MXC_CCM_CSCMR1_QSPI1_PODF_MASK |
+                        MXC_CCM_CSCMR1_QSPI1_CLK_SEL_MASK);
+               reg |= ((1 << MXC_CCM_CSCMR1_QSPI1_PODF_OFFSET) |
+                       (2 << MXC_CCM_CSCMR1_QSPI1_CLK_SEL_OFFSET));
+               writel(reg, &imx_ccm->cscmr1);
+
+               /* enable the clock gate */
+               setbits_le32(&imx_ccm->CCGR3, MXC_CCM_CCGR3_QSPI1_MASK);
+               break;
+       case 1:
+               /*
+                * disable the clock gate
+                * QSPI2 and GPMI_BCH_INPUT_GPMI_IO share the same clock gate,
+                * disable both of them.
+                */
+               clrbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK |
+                            MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
+
+               /* set 50M  : (50 = 396 / 2 / 4) */
+               reg = readl(&imx_ccm->cs2cdr);
+               reg &= ~(MXC_CCM_CS2CDR_QSPI2_CLK_PODF_MASK |
+                        MXC_CCM_CS2CDR_QSPI2_CLK_PRED_MASK |
+                        MXC_CCM_CS2CDR_QSPI2_CLK_SEL_MASK);
+               reg |= (MXC_CCM_CS2CDR_QSPI2_CLK_PRED(0x1) |
+                       MXC_CCM_CS2CDR_QSPI2_CLK_SEL(0x3));
+               writel(reg, &imx_ccm->cs2cdr);
+
+               /*enable the clock gate*/
+               setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_QSPI2_ENFC_MASK |
+                            MXC_CCM_CCGR4_RAWNAND_U_GPMI_BCH_INPUT_GPMI_IO_MASK);
+               break;
+       default:
+               break;
+       }
+}
+#endif
+
+#ifdef CONFIG_FEC_MXC
+int enable_fec_anatop_clock(int fec_id, enum enet_freq freq)
+{
+       u32 reg = 0;
+       s32 timeout = 100000;
+
+       struct anatop_regs __iomem *anatop =
+               (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
+
+       if (freq < ENET_25MHZ || freq > ENET_125MHZ)
+               return -EINVAL;
+
+       reg = readl(&anatop->pll_enet);
+
+       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_mx6sx() || is_mx6ul() || is_mx6ull()))
+                       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))) {
+               reg &= ~BM_ANADIG_PLL_ENET_POWERDOWN;
+               writel(reg, &anatop->pll_enet);
+               while (timeout--) {
+                       if (readl(&anatop->pll_enet) & BM_ANADIG_PLL_ENET_LOCK)
+                               break;
+               }
+               if (timeout < 0)
+                       return -ETIMEDOUT;
+       }
+
+       /* Enable FEC clock */
+       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);
+
+#ifdef CONFIG_MX6SX
+       /* Disable enet system clcok before switching clock parent */
+       reg = readl(&imx_ccm->CCGR3);
+       reg &= ~MXC_CCM_CCGR3_ENET_MASK;
+       writel(reg, &imx_ccm->CCGR3);
+
+       /*
+        * Set enet ahb clock to 200MHz
+        * pll2_pfd2_396m-> ENET_PODF-> ENET_AHB
+        */
+       reg = readl(&imx_ccm->chsccdr);
+       reg &= ~(MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_MASK
+                | MXC_CCM_CHSCCDR_ENET_PODF_MASK
+                | MXC_CCM_CHSCCDR_ENET_CLK_SEL_MASK);
+       /* PLL2 PFD2 */
+       reg |= (4 << MXC_CCM_CHSCCDR_ENET_PRE_CLK_SEL_OFFSET);
+       /* Div = 2*/
+       reg |= (1 << MXC_CCM_CHSCCDR_ENET_PODF_OFFSET);
+       reg |= (0 << MXC_CCM_CHSCCDR_ENET_CLK_SEL_OFFSET);
+       writel(reg, &imx_ccm->chsccdr);
+
+       /* Enable enet system clock */
+       reg = readl(&imx_ccm->CCGR3);
+       reg |= MXC_CCM_CCGR3_ENET_MASK;
+       writel(reg, &imx_ccm->CCGR3);
+#endif
+       return 0;
+}
+#endif
+
+static u32 get_usdhc_clk(u32 port)
+{
+       u32 root_freq = 0, usdhc_podf = 0, clk_sel = 0;
+       u32 cscmr1 = __raw_readl(&imx_ccm->cscmr1);
+       u32 cscdr1 = __raw_readl(&imx_ccm->cscdr1);
+
+       if (is_mx6ul() || is_mx6ull()) {
+               if (port > 1)
+                       return 0;
+       }
+
+       if (is_mx6sll()) {
+               if (port > 2)
+                       return 0;
+       }
+
+       switch (port) {
+       case 0:
+               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC1_PODF_MASK) >>
+                                       MXC_CCM_CSCDR1_USDHC1_PODF_OFFSET;
+               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC1_CLK_SEL;
+
+               break;
+       case 1:
+               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC2_PODF_MASK) >>
+                                       MXC_CCM_CSCDR1_USDHC2_PODF_OFFSET;
+               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC2_CLK_SEL;
+
+               break;
+       case 2:
+               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC3_PODF_MASK) >>
+                                       MXC_CCM_CSCDR1_USDHC3_PODF_OFFSET;
+               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC3_CLK_SEL;
+
+               break;
+       case 3:
+               usdhc_podf = (cscdr1 & MXC_CCM_CSCDR1_USDHC4_PODF_MASK) >>
+                                       MXC_CCM_CSCDR1_USDHC4_PODF_OFFSET;
+               clk_sel = cscmr1 & MXC_CCM_CSCMR1_USDHC4_CLK_SEL;
+
+               break;
+       default:
+               break;
+       }
+
+       if (clk_sel)
+               root_freq = mxc_get_pll_pfd(PLL_BUS, 0);
+       else
+               root_freq = mxc_get_pll_pfd(PLL_BUS, 2);
+
+       return root_freq / (usdhc_podf + 1);
+}
+
+u32 imx_get_uartclk(void)
+{
+       return get_uart_clk();
+}
+
+u32 imx_get_fecclk(void)
+{
+       return mxc_get_clock(MXC_IPG_CLK);
+}
+
+#if defined(CONFIG_SATA) || defined(CONFIG_PCIE_IMX)
+static int enable_enet_pll(uint32_t en)
+{
+       struct mxc_ccm_reg *const imx_ccm
+               = (struct mxc_ccm_reg *) CCM_BASE_ADDR;
+       s32 timeout = 100000;
+       u32 reg = 0;
+
+       /* Enable PLLs */
+       reg = readl(&imx_ccm->analog_pll_enet);
+       reg &= ~BM_ANADIG_PLL_SYS_POWERDOWN;
+       writel(reg, &imx_ccm->analog_pll_enet);
+       reg |= BM_ANADIG_PLL_SYS_ENABLE;
+       while (timeout--) {
+               if (readl(&imx_ccm->analog_pll_enet) & BM_ANADIG_PLL_SYS_LOCK)
+                       break;
+       }
+       if (timeout <= 0)
+               return -EIO;
+       reg &= ~BM_ANADIG_PLL_SYS_BYPASS;
+       writel(reg, &imx_ccm->analog_pll_enet);
+       reg |= en;
+       writel(reg, &imx_ccm->analog_pll_enet);
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_SATA
+static void ungate_sata_clock(void)
+{
+       struct mxc_ccm_reg *const imx_ccm =
+               (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       /* Enable SATA clock. */
+       setbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK);
+}
+
+int enable_sata_clock(void)
+{
+       ungate_sata_clock();
+       return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA);
+}
+
+void disable_sata_clock(void)
+{
+       struct mxc_ccm_reg *const imx_ccm =
+               (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       clrbits_le32(&imx_ccm->CCGR5, MXC_CCM_CCGR5_SATA_MASK);
+}
+#endif
+
+#ifdef CONFIG_PCIE_IMX
+static void ungate_pcie_clock(void)
+{
+       struct mxc_ccm_reg *const imx_ccm =
+               (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       /* Enable PCIe clock. */
+       setbits_le32(&imx_ccm->CCGR4, MXC_CCM_CCGR4_PCIE_MASK);
+}
+
+int enable_pcie_clock(void)
+{
+       struct anatop_regs *anatop_regs =
+               (struct anatop_regs *)ANATOP_BASE_ADDR;
+       struct mxc_ccm_reg *ccm_regs = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       u32 lvds1_clk_sel;
+
+       /*
+        * Here be dragons!
+        *
+        * The register ANATOP_MISC1 is not documented in the Freescale
+        * MX6RM. The register that is mapped in the ANATOP space and
+        * marked as ANATOP_MISC1 is actually documented in the PMU section
+        * of the datasheet as PMU_MISC1.
+        *
+        * Switch LVDS clock source to SATA (0xb) on mx6q/dl or PCI (0xa) on
+        * mx6sx, disable clock INPUT and enable clock OUTPUT. This is important
+        * for PCI express link that is clocked from the i.MX6.
+        */
+#define ANADIG_ANA_MISC1_LVDSCLK1_IBEN         (1 << 12)
+#define ANADIG_ANA_MISC1_LVDSCLK1_OBEN         (1 << 10)
+#define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK    0x0000001F
+#define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_PCIE_REF        0xa
+#define ANADIG_ANA_MISC1_LVDS1_CLK_SEL_SATA_REF        0xb
+
+       if (is_mx6sx())
+               lvds1_clk_sel = ANADIG_ANA_MISC1_LVDS1_CLK_SEL_PCIE_REF;
+       else
+               lvds1_clk_sel = ANADIG_ANA_MISC1_LVDS1_CLK_SEL_SATA_REF;
+
+       clrsetbits_le32(&anatop_regs->ana_misc1,
+                       ANADIG_ANA_MISC1_LVDSCLK1_IBEN |
+                       ANADIG_ANA_MISC1_LVDS1_CLK_SEL_MASK,
+                       ANADIG_ANA_MISC1_LVDSCLK1_OBEN | lvds1_clk_sel);
+
+       /* PCIe reference clock sourced from AXI. */
+       clrbits_le32(&ccm_regs->cbcmr, MXC_CCM_CBCMR_PCIE_AXI_CLK_SEL);
+
+       /* Party time! Ungate the clock to the PCIe. */
+#ifdef CONFIG_SATA
+       ungate_sata_clock();
+#endif
+       ungate_pcie_clock();
+
+       return enable_enet_pll(BM_ANADIG_PLL_ENET_ENABLE_SATA |
+                              BM_ANADIG_PLL_ENET_ENABLE_PCIE);
+}
+#endif
+
+#ifdef CONFIG_SECURE_BOOT
+void hab_caam_clock_enable(unsigned char enable)
+{
+       u32 reg;
+
+       if (is_mx6ull() || is_mx6sll()) {
+               /* CG5, DCP clock */
+               reg = __raw_readl(&imx_ccm->CCGR0);
+               if (enable)
+                       reg |= MXC_CCM_CCGR0_DCP_CLK_MASK;
+               else
+                       reg &= ~MXC_CCM_CCGR0_DCP_CLK_MASK;
+               __raw_writel(reg, &imx_ccm->CCGR0);
+       } else {
+               /* CG4 ~ CG6, CAAM clocks */
+               reg = __raw_readl(&imx_ccm->CCGR0);
+               if (enable)
+                       reg |= (MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
+                               MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
+                               MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
+               else
+                       reg &= ~(MXC_CCM_CCGR0_CAAM_WRAPPER_IPG_MASK |
+                               MXC_CCM_CCGR0_CAAM_WRAPPER_ACLK_MASK |
+                               MXC_CCM_CCGR0_CAAM_SECURE_MEM_MASK);
+               __raw_writel(reg, &imx_ccm->CCGR0);
+       }
+
+       /* EMI slow clk */
+       reg = __raw_readl(&imx_ccm->CCGR6);
+       if (enable)
+               reg |= MXC_CCM_CCGR6_EMI_SLOW_MASK;
+       else
+               reg &= ~MXC_CCM_CCGR6_EMI_SLOW_MASK;
+       __raw_writel(reg, &imx_ccm->CCGR6);
+}
+#endif
+
+static void enable_pll3(void)
+{
+       struct anatop_regs __iomem *anatop =
+               (struct anatop_regs __iomem *)ANATOP_BASE_ADDR;
+
+       /* make sure pll3 is enabled */
+       if ((readl(&anatop->usb1_pll_480_ctrl) &
+                       BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0) {
+               /* enable pll's power */
+               writel(BM_ANADIG_USB1_PLL_480_CTRL_POWER,
+                      &anatop->usb1_pll_480_ctrl_set);
+               writel(0x80, &anatop->ana_misc2_clr);
+               /* wait for pll lock */
+               while ((readl(&anatop->usb1_pll_480_ctrl) &
+                       BM_ANADIG_USB1_PLL_480_CTRL_LOCK) == 0)
+                       ;
+               /* disable bypass */
+               writel(BM_ANADIG_USB1_PLL_480_CTRL_BYPASS,
+                      &anatop->usb1_pll_480_ctrl_clr);
+               /* enable pll output */
+               writel(BM_ANADIG_USB1_PLL_480_CTRL_ENABLE,
+                      &anatop->usb1_pll_480_ctrl_set);
+       }
+}
+
+void enable_thermal_clk(void)
+{
+       enable_pll3();
+}
+
+unsigned int mxc_get_clock(enum mxc_clock clk)
+{
+       switch (clk) {
+       case MXC_ARM_CLK:
+               return get_mcu_main_clk();
+       case MXC_PER_CLK:
+               return get_periph_clk();
+       case MXC_AHB_CLK:
+               return get_ahb_clk();
+       case MXC_IPG_CLK:
+               return get_ipg_clk();
+       case MXC_IPG_PERCLK:
+       case MXC_I2C_CLK:
+               return get_ipg_per_clk();
+       case MXC_UART_CLK:
+               return get_uart_clk();
+       case MXC_CSPI_CLK:
+               return get_cspi_clk();
+       case MXC_AXI_CLK:
+               return get_axi_clk();
+       case MXC_EMI_SLOW_CLK:
+               return get_emi_slow_clk();
+       case MXC_DDR_CLK:
+               return get_mmdc_ch0_clk();
+       case MXC_ESDHC_CLK:
+               return get_usdhc_clk(0);
+       case MXC_ESDHC2_CLK:
+               return get_usdhc_clk(1);
+       case MXC_ESDHC3_CLK:
+               return get_usdhc_clk(2);
+       case MXC_ESDHC4_CLK:
+               return get_usdhc_clk(3);
+       case MXC_SATA_CLK:
+               return get_ahb_clk();
+       default:
+               printf("Unsupported MXC CLK: %d\n", clk);
+               break;
+       }
+
+       return 0;
+}
+
+/*
+ * Dump some core clockes.
+ */
+int do_mx6_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       u32 freq;
+       freq = decode_pll(PLL_SYS, MXC_HCLK);
+       printf("PLL_SYS    %8d MHz\n", freq / 1000000);
+       freq = decode_pll(PLL_BUS, MXC_HCLK);
+       printf("PLL_BUS    %8d MHz\n", freq / 1000000);
+       freq = decode_pll(PLL_USBOTG, MXC_HCLK);
+       printf("PLL_OTG    %8d MHz\n", freq / 1000000);
+       freq = decode_pll(PLL_ENET, MXC_HCLK);
+       printf("PLL_NET    %8d MHz\n", freq / 1000000);
+
+       printf("\n");
+       printf("ARM        %8d kHz\n", mxc_get_clock(MXC_ARM_CLK) / 1000);
+       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);
+       printf("USDHC4     %8d kHz\n", mxc_get_clock(MXC_ESDHC4_CLK) / 1000);
+       printf("EMI SLOW   %8d kHz\n", mxc_get_clock(MXC_EMI_SLOW_CLK) / 1000);
+       printf("IPG PERCLK %8d kHz\n", mxc_get_clock(MXC_IPG_PERCLK) / 1000);
+
+       return 0;
+}
+
+#ifndef CONFIG_MX6SX
+void enable_ipu_clock(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int reg;
+       reg = readl(&mxc_ccm->CCGR3);
+       reg |= MXC_CCM_CCGR3_IPU1_IPU_MASK;
+       writel(reg, &mxc_ccm->CCGR3);
+
+       if (is_mx6dqp()) {
+               setbits_le32(&mxc_ccm->CCGR6, MXC_CCM_CCGR6_PRG_CLK0_MASK);
+               setbits_le32(&mxc_ccm->CCGR3, MXC_CCM_CCGR3_IPU2_IPU_MASK);
+       }
+}
+#endif
+
+#if defined(CONFIG_MX6Q) || defined(CONFIG_MX6D) || defined(CONFIG_MX6DL) || \
+       defined(CONFIG_MX6S)
+static void disable_ldb_di_clock_sources(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int reg;
+
+       /* Make sure PFDs are disabled at boot. */
+       reg = readl(&mxc_ccm->analog_pfd_528);
+       /* Cannot disable pll2_pfd2_396M, as it is the MMDC clock in iMX6DL */
+       if (is_mx6sdl())
+               reg |= 0x80008080;
+       else
+               reg |= 0x80808080;
+       writel(reg, &mxc_ccm->analog_pfd_528);
+
+       /* Disable PLL3 PFDs */
+       reg = readl(&mxc_ccm->analog_pfd_480);
+       reg |= 0x80808080;
+       writel(reg, &mxc_ccm->analog_pfd_480);
+
+       /* Disable PLL5 */
+       reg = readl(&mxc_ccm->analog_pll_video);
+       reg &= ~(1 << 13);
+       writel(reg, &mxc_ccm->analog_pll_video);
+}
+
+static void enable_ldb_di_clock_sources(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int reg;
+
+       reg = readl(&mxc_ccm->analog_pfd_528);
+       if (is_mx6sdl())
+               reg &= ~(0x80008080);
+       else
+               reg &= ~(0x80808080);
+       writel(reg, &mxc_ccm->analog_pfd_528);
+
+       reg = readl(&mxc_ccm->analog_pfd_480);
+       reg &= ~(0x80808080);
+       writel(reg, &mxc_ccm->analog_pfd_480);
+}
+
+/*
+ * Try call this function as early in the boot process as possible since the
+ * function temporarily disables PLL2 PFD's, PLL3 PFD's and PLL5.
+ */
+void select_ldb_di_clock_source(enum ldb_di_clock clk)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int reg;
+
+       /*
+        * Need to follow a strict procedure when changing the LDB
+        * clock, else we can introduce a glitch. Things to keep in
+        * mind:
+        * 1. The current and new parent clocks must be disabled.
+        * 2. The default clock for ldb_dio_clk is mmdc_ch1 which has
+        * no CG bit.
+        * 3. In the RTL implementation of the LDB_DI_CLK_SEL mux
+        * the top four options are in one mux and the PLL3 option along
+        * with another option is in the second mux. There is third mux
+        * used to decide between the first and second mux.
+        * The code below switches the parent to the bottom mux first
+        * and then manipulates the top mux. This ensures that no glitch
+        * will enter the divider.
+        *
+        * Need to disable MMDC_CH1 clock manually as there is no CG bit
+        * for this clock. The only way to disable this clock is to move
+        * it to pll3_sw_clk and then to disable pll3_sw_clk
+        * Make sure periph2_clk2_sel is set to pll3_sw_clk
+        */
+
+       /* Disable all ldb_di clock parents */
+       disable_ldb_di_clock_sources();
+
+       /* Set MMDC_CH1 mask bit */
+       reg = readl(&mxc_ccm->ccdr);
+       reg |= MXC_CCM_CCDR_MMDC_CH1_HS_MASK;
+       writel(reg, &mxc_ccm->ccdr);
+
+       /* Set periph2_clk2_sel to be sourced from PLL3_sw_clk */
+       reg = readl(&mxc_ccm->cbcmr);
+       reg &= ~MXC_CCM_CBCMR_PERIPH2_CLK2_SEL;
+       writel(reg, &mxc_ccm->cbcmr);
+
+       /*
+        * Set the periph2_clk_sel to the top mux so that
+        * mmdc_ch1 is from pll3_sw_clk.
+        */
+       reg = readl(&mxc_ccm->cbcdr);
+       reg |= MXC_CCM_CBCDR_PERIPH2_CLK_SEL;
+       writel(reg, &mxc_ccm->cbcdr);
+
+       /* Wait for the clock switch */
+       while (readl(&mxc_ccm->cdhipr))
+               ;
+       /* Disable pll3_sw_clk by selecting bypass clock source */
+       reg = readl(&mxc_ccm->ccsr);
+       reg |= MXC_CCM_CCSR_PLL3_SW_CLK_SEL;
+       writel(reg, &mxc_ccm->ccsr);
+
+       /* Set the ldb_di0_clk and ldb_di1_clk to 111b */
+       reg = readl(&mxc_ccm->cs2cdr);
+       reg |= ((7 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET)
+             | (7 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET));
+       writel(reg, &mxc_ccm->cs2cdr);
+
+       /* Set the ldb_di0_clk and ldb_di1_clk to 100b */
+       reg = readl(&mxc_ccm->cs2cdr);
+       reg &= ~(MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK
+             | MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK);
+       reg |= ((4 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET)
+             | (4 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET));
+       writel(reg, &mxc_ccm->cs2cdr);
+
+       /* Set the ldb_di0_clk and ldb_di1_clk to desired source */
+       reg = readl(&mxc_ccm->cs2cdr);
+       reg &= ~(MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK
+             | MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK);
+       reg |= ((clk << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET)
+             | (clk << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET));
+       writel(reg, &mxc_ccm->cs2cdr);
+
+       /* Unbypass pll3_sw_clk */
+       reg = readl(&mxc_ccm->ccsr);
+       reg &= ~MXC_CCM_CCSR_PLL3_SW_CLK_SEL;
+       writel(reg, &mxc_ccm->ccsr);
+
+       /*
+        * Set the periph2_clk_sel back to the bottom mux so that
+        * mmdc_ch1 is from its original parent.
+        */
+       reg = readl(&mxc_ccm->cbcdr);
+       reg &= ~MXC_CCM_CBCDR_PERIPH2_CLK_SEL;
+       writel(reg, &mxc_ccm->cbcdr);
+
+       /* Wait for the clock switch */
+       while (readl(&mxc_ccm->cdhipr))
+               ;
+       /* Clear MMDC_CH1 mask bit */
+       reg = readl(&mxc_ccm->ccdr);
+       reg &= ~MXC_CCM_CCDR_MMDC_CH1_HS_MASK;
+       writel(reg, &mxc_ccm->ccdr);
+
+       enable_ldb_di_clock_sources();
+}
+#endif
+
+#ifdef CONFIG_MTD_NOR_FLASH
+void enable_eim_clk(unsigned char enable)
+{
+       u32 reg;
+
+       reg = __raw_readl(&imx_ccm->CCGR6);
+       if (enable)
+               reg |= MXC_CCM_CCGR6_EMI_SLOW_MASK;
+       else
+               reg &= ~MXC_CCM_CCGR6_EMI_SLOW_MASK;
+       __raw_writel(reg, &imx_ccm->CCGR6);
+}
+#endif
+
+/***************************************************/
+
+U_BOOT_CMD(
+       clocks, CONFIG_SYS_MAXARGS, 1, do_mx6_showclocks,
+       "display clocks",
+       ""
+);
diff --git a/arch/arm/mach-imx/mx6/ddr.c b/arch/arm/mach-imx/mx6/ddr.c
new file mode 100644 (file)
index 0000000..0cf391e
--- /dev/null
@@ -0,0 +1,1538 @@
+/*
+ * Copyright (C) 2014 Gateworks Corporation
+ * Author: Tim Harvey <tharvey@gateworks.com>
+ *
+ * SPDX-License-Identifier:     GPL-2.0+
+ */
+
+#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>
+#include <asm/types.h>
+#include <wait_bit.h>
+
+#if defined(CONFIG_MX6_DDRCAL)
+static void reset_read_data_fifos(void)
+{
+       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
+
+       /* Reset data FIFOs twice. */
+       setbits_le32(&mmdc0->mpdgctrl0, 1 << 31);
+       wait_for_bit("MMDC", &mmdc0->mpdgctrl0, 1 << 31, 0, 100, 0);
+
+       setbits_le32(&mmdc0->mpdgctrl0, 1 << 31);
+       wait_for_bit("MMDC", &mmdc0->mpdgctrl0, 1 << 31, 0, 100, 0);
+}
+
+static void precharge_all(const bool cs0_enable, const bool cs1_enable)
+{
+       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
+
+       /*
+        * Issue the Precharge-All command to the DDR device for both
+        * chip selects. Note, CON_REQ bit should also remain set. If
+        * only using one chip select, then precharge only the desired
+        * chip select.
+        */
+       if (cs0_enable) { /* CS0 */
+               writel(0x04008050, &mmdc0->mdscr);
+               wait_for_bit("MMDC", &mmdc0->mdscr, 1 << 14, 1, 100, 0);
+       }
+
+       if (cs1_enable) { /* CS1 */
+               writel(0x04008058, &mmdc0->mdscr);
+               wait_for_bit("MMDC", &mmdc0->mdscr, 1 << 14, 1, 100, 0);
+       }
+}
+
+static void force_delay_measurement(int bus_size)
+{
+       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
+       struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
+
+       writel(0x800, &mmdc0->mpmur0);
+       if (bus_size == 0x2)
+               writel(0x800, &mmdc1->mpmur0);
+}
+
+static void modify_dg_result(u32 *reg_st0, u32 *reg_st1, u32 *reg_ctrl)
+{
+       u32 dg_tmp_val, dg_dl_abs_offset, dg_hc_del, val_ctrl;
+
+       /*
+        * DQS gating absolute offset should be modified from reflecting
+        * (HW_DG_LOWx + HW_DG_UPx)/2 to reflecting (HW_DG_UPx - 0x80)
+        */
+
+       val_ctrl = readl(reg_ctrl);
+       val_ctrl &= 0xf0000000;
+
+       dg_tmp_val = ((readl(reg_st0) & 0x07ff0000) >> 16) - 0xc0;
+       dg_dl_abs_offset = dg_tmp_val & 0x7f;
+       dg_hc_del = (dg_tmp_val & 0x780) << 1;
+
+       val_ctrl |= dg_dl_abs_offset + dg_hc_del;
+
+       dg_tmp_val = ((readl(reg_st1) & 0x07ff0000) >> 16) - 0xc0;
+       dg_dl_abs_offset = dg_tmp_val & 0x7f;
+       dg_hc_del = (dg_tmp_val & 0x780) << 1;
+
+       val_ctrl |= (dg_dl_abs_offset + dg_hc_del) << 16;
+
+       writel(val_ctrl, reg_ctrl);
+}
+
+int mmdc_do_write_level_calibration(struct mx6_ddr_sysinfo const *sysinfo)
+{
+       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
+       struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
+       u32 esdmisc_val, zq_val;
+       u32 errors = 0;
+       u32 ldectrl[4] = {0};
+       u32 ddr_mr1 = 0x4;
+       u32 rwalat_max;
+
+       /*
+        * Stash old values in case calibration fails,
+        * we need to restore them
+        */
+       ldectrl[0] = readl(&mmdc0->mpwldectrl0);
+       ldectrl[1] = readl(&mmdc0->mpwldectrl1);
+       if (sysinfo->dsize == 2) {
+               ldectrl[2] = readl(&mmdc1->mpwldectrl0);
+               ldectrl[3] = readl(&mmdc1->mpwldectrl1);
+       }
+
+       /* disable DDR logic power down timer */
+       clrbits_le32(&mmdc0->mdpdc, 0xff00);
+
+       /* disable Adopt power down timer */
+       setbits_le32(&mmdc0->mapsr, 0x1);
+
+       debug("Starting write leveling calibration.\n");
+
+       /*
+        * 2. disable auto refresh and ZQ calibration
+        * before proceeding with Write Leveling calibration
+        */
+       esdmisc_val = readl(&mmdc0->mdref);
+       writel(0x0000C000, &mmdc0->mdref);
+       zq_val = readl(&mmdc0->mpzqhwctrl);
+       writel(zq_val & ~0x3, &mmdc0->mpzqhwctrl);
+
+       /* 3. increase walat and ralat to maximum */
+       rwalat_max = (1 << 6) | (1 << 7) | (1 << 8) | (1 << 16) | (1 << 17);
+       setbits_le32(&mmdc0->mdmisc, rwalat_max);
+       if (sysinfo->dsize == 2)
+               setbits_le32(&mmdc1->mdmisc, rwalat_max);
+       /*
+        * 4 & 5. Configure the external DDR device to enter write-leveling
+        * mode through Load Mode Register command.
+        * Register setting:
+        * Bits[31:16] MR1 value (0x0080 write leveling enable)
+        * Bit[9] set WL_EN to enable MMDC DQS output
+        * Bits[6:4] set CMD bits for Load Mode Register programming
+        * Bits[2:0] set CMD_BA to 0x1 for DDR MR1 programming
+        */
+       writel(0x00808231, &mmdc0->mdscr);
+
+       /* 6. Activate automatic calibration by setting MPWLGCR[HW_WL_EN] */
+       writel(0x00000001, &mmdc0->mpwlgcr);
+
+       /*
+        * 7. Upon completion of this process the MMDC de-asserts
+        * the MPWLGCR[HW_WL_EN]
+        */
+       wait_for_bit("MMDC", &mmdc0->mpwlgcr, 1 << 0, 0, 100, 0);
+
+       /*
+        * 8. check for any errors: check both PHYs for x64 configuration,
+        * if x32, check only PHY0
+        */
+       if (readl(&mmdc0->mpwlgcr) & 0x00000F00)
+               errors |= 1;
+       if (sysinfo->dsize == 2)
+               if (readl(&mmdc1->mpwlgcr) & 0x00000F00)
+                       errors |= 2;
+
+       debug("Ending write leveling calibration. Error mask: 0x%x\n", errors);
+
+       /* check to see if cal failed */
+       if ((readl(&mmdc0->mpwldectrl0) == 0x001F001F) &&
+           (readl(&mmdc0->mpwldectrl1) == 0x001F001F) &&
+           ((sysinfo->dsize < 2) ||
+            ((readl(&mmdc1->mpwldectrl0) == 0x001F001F) &&
+             (readl(&mmdc1->mpwldectrl1) == 0x001F001F)))) {
+               debug("Cal seems to have soft-failed due to memory not supporting write leveling on all channels. Restoring original write leveling values.\n");
+               writel(ldectrl[0], &mmdc0->mpwldectrl0);
+               writel(ldectrl[1], &mmdc0->mpwldectrl1);
+               if (sysinfo->dsize == 2) {
+                       writel(ldectrl[2], &mmdc1->mpwldectrl0);
+                       writel(ldectrl[3], &mmdc1->mpwldectrl1);
+               }
+               errors |= 4;
+       }
+
+       /*
+        * User should issue MRS command to exit write leveling mode
+        * through Load Mode Register command
+        * Register setting:
+        * Bits[31:16] MR1 value "ddr_mr1" value from initialization
+        * Bit[9] clear WL_EN to disable MMDC DQS output
+        * Bits[6:4] set CMD bits for Load Mode Register programming
+        * Bits[2:0] set CMD_BA to 0x1 for DDR MR1 programming
+        */
+       writel((ddr_mr1 << 16) + 0x8031, &mmdc0->mdscr);
+
+       /* re-enable auto refresh and zq cal */
+       writel(esdmisc_val, &mmdc0->mdref);
+       writel(zq_val, &mmdc0->mpzqhwctrl);
+
+       debug("\tMMDC_MPWLDECTRL0 after write level cal: 0x%08X\n",
+             readl(&mmdc0->mpwldectrl0));
+       debug("\tMMDC_MPWLDECTRL1 after write level cal: 0x%08X\n",
+             readl(&mmdc0->mpwldectrl1));
+       if (sysinfo->dsize == 2) {
+               debug("\tMMDC_MPWLDECTRL0 after write level cal: 0x%08X\n",
+                     readl(&mmdc1->mpwldectrl0));
+               debug("\tMMDC_MPWLDECTRL1 after write level cal: 0x%08X\n",
+                     readl(&mmdc1->mpwldectrl1));
+       }
+
+       /* We must force a readback of these values, to get them to stick */
+       readl(&mmdc0->mpwldectrl0);
+       readl(&mmdc0->mpwldectrl1);
+       if (sysinfo->dsize == 2) {
+               readl(&mmdc1->mpwldectrl0);
+               readl(&mmdc1->mpwldectrl1);
+       }
+
+       /* enable DDR logic power down timer: */
+       setbits_le32(&mmdc0->mdpdc, 0x00005500);
+
+       /* Enable Adopt power down timer: */
+       clrbits_le32(&mmdc0->mapsr, 0x1);
+
+       /* Clear CON_REQ */
+       writel(0, &mmdc0->mdscr);
+
+       return errors;
+}
+
+int mmdc_do_dqs_calibration(struct mx6_ddr_sysinfo const *sysinfo)
+{
+       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
+       struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
+       struct mx6dq_iomux_ddr_regs *mx6_ddr_iomux =
+               (struct mx6dq_iomux_ddr_regs *)MX6DQ_IOM_DDR_BASE;
+       bool cs0_enable;
+       bool cs1_enable;
+       bool cs0_enable_initial;
+       bool cs1_enable_initial;
+       u32 esdmisc_val;
+       u32 temp_ref;
+       u32 pddword = 0x00ffff00; /* best so far, place into MPPDCMPR1 */
+       u32 errors = 0;
+       u32 initdelay = 0x40404040;
+
+       /* check to see which chip selects are enabled */
+       cs0_enable_initial = readl(&mmdc0->mdctl) & 0x80000000;
+       cs1_enable_initial = readl(&mmdc0->mdctl) & 0x40000000;
+
+       /* disable DDR logic power down timer: */
+       clrbits_le32(&mmdc0->mdpdc, 0xff00);
+
+       /* disable Adopt power down timer: */
+       setbits_le32(&mmdc0->mapsr, 0x1);
+
+       /* set DQS pull ups */
+       setbits_le32(&mx6_ddr_iomux->dram_sdqs0, 0x7000);
+       setbits_le32(&mx6_ddr_iomux->dram_sdqs1, 0x7000);
+       setbits_le32(&mx6_ddr_iomux->dram_sdqs2, 0x7000);
+       setbits_le32(&mx6_ddr_iomux->dram_sdqs3, 0x7000);
+       setbits_le32(&mx6_ddr_iomux->dram_sdqs4, 0x7000);
+       setbits_le32(&mx6_ddr_iomux->dram_sdqs5, 0x7000);
+       setbits_le32(&mx6_ddr_iomux->dram_sdqs6, 0x7000);
+       setbits_le32(&mx6_ddr_iomux->dram_sdqs7, 0x7000);
+
+       /* Save old RALAT and WALAT values */
+       esdmisc_val = readl(&mmdc0->mdmisc);
+
+       setbits_le32(&mmdc0->mdmisc,
+                    (1 << 6) | (1 << 7) | (1 << 8) | (1 << 16) | (1 << 17));
+
+       /* Disable auto refresh before proceeding with calibration */
+       temp_ref = readl(&mmdc0->mdref);
+       writel(0x0000c000, &mmdc0->mdref);
+
+       /*
+        * Per the ref manual, issue one refresh cycle MDSCR[CMD]= 0x2,
+        * this also sets the CON_REQ bit.
+        */
+       if (cs0_enable_initial)
+               writel(0x00008020, &mmdc0->mdscr);
+       if (cs1_enable_initial)
+               writel(0x00008028, &mmdc0->mdscr);
+
+       /* poll to make sure the con_ack bit was asserted */
+       wait_for_bit("MMDC", &mmdc0->mdscr, 1 << 14, 1, 100, 0);
+
+       /*
+        * Check MDMISC register CALIB_PER_CS to see which CS calibration
+        * is targeted to (under normal cases, it should be cleared
+        * as this is the default value, indicating calibration is directed
+        * to CS0).
+        * Disable the other chip select not being target for calibration
+        * to avoid any potential issues.  This will get re-enabled at end
+        * of calibration.
+        */
+       if ((readl(&mmdc0->mdmisc) & 0x00100000) == 0)
+               clrbits_le32(&mmdc0->mdctl, 1 << 30);   /* clear SDE_1 */
+       else
+               clrbits_le32(&mmdc0->mdctl, 1 << 31);   /* clear SDE_0 */
+
+       /*
+        * Check to see which chip selects are now enabled for
+        * the remainder of the calibration.
+        */
+       cs0_enable = readl(&mmdc0->mdctl) & 0x80000000;
+       cs1_enable = readl(&mmdc0->mdctl) & 0x40000000;
+
+       precharge_all(cs0_enable, cs1_enable);
+
+       /* Write the pre-defined value into MPPDCMPR1 */
+       writel(pddword, &mmdc0->mppdcmpr1);
+
+       /*
+        * Issue a write access to the external DDR device by setting
+        * the bit SW_DUMMY_WR (bit 0) in the MPSWDAR0 and then poll
+        * this bit until it clears to indicate completion of the write access.
+        */
+       setbits_le32(&mmdc0->mpswdar0, 1);
+       wait_for_bit("MMDC", &mmdc0->mpswdar0, 1 << 0, 0, 100, 0);
+
+       /* Set the RD_DL_ABS# bits to their default values
+        * (will be calibrated later in the read delay-line calibration).
+        * Both PHYs for x64 configuration, if x32, do only PHY0.
+        */
+       writel(initdelay, &mmdc0->mprddlctl);
+       if (sysinfo->dsize == 0x2)
+               writel(initdelay, &mmdc1->mprddlctl);
+
+       /* Force a measurment, for previous delay setup to take effect. */
+       force_delay_measurement(sysinfo->dsize);
+
+       /*
+        * ***************************
+        * Read DQS Gating calibration
+        * ***************************
+        */
+       debug("Starting Read DQS Gating calibration.\n");
+
+       /*
+        * Reset the read data FIFOs (two resets); only need to issue reset
+        * to PHY0 since in x64 mode, the reset will also go to PHY1.
+        */
+       reset_read_data_fifos();
+
+       /*
+        * Start the automatic read DQS gating calibration process by
+        * asserting MPDGCTRL0[HW_DG_EN] and MPDGCTRL0[DG_CMP_CYC]
+        * and then poll MPDGCTRL0[HW_DG_EN]] until this bit clears
+        * to indicate completion.
+        * Also, ensure that MPDGCTRL0[HW_DG_ERR] is clear to indicate
+        * no errors were seen during calibration.
+        */
+
+       /*
+        * Set bit 30: chooses option to wait 32 cycles instead of
+        * 16 before comparing read data.
+        */
+       setbits_le32(&mmdc0->mpdgctrl0, 1 << 30);
+       if (sysinfo->dsize == 2)
+               setbits_le32(&mmdc1->mpdgctrl0, 1 << 30);
+
+       /* Set bit 28 to start automatic read DQS gating calibration */
+       setbits_le32(&mmdc0->mpdgctrl0, 5 << 28);
+
+       /* Poll for completion.  MPDGCTRL0[HW_DG_EN] should be 0 */
+       wait_for_bit("MMDC", &mmdc0->mpdgctrl0, 1 << 28, 0, 100, 0);
+
+       /*
+        * Check to see if any errors were encountered during calibration
+        * (check MPDGCTRL0[HW_DG_ERR]).
+        * Check both PHYs for x64 configuration, if x32, check only PHY0.
+        */
+       if (readl(&mmdc0->mpdgctrl0) & 0x00001000)
+               errors |= 1;
+
+       if ((sysinfo->dsize == 0x2) && (readl(&mmdc1->mpdgctrl0) & 0x00001000))
+               errors |= 2;
+
+       /* now disable mpdgctrl0[DG_CMP_CYC] */
+       clrbits_le32(&mmdc0->mpdgctrl0, 1 << 30);
+       if (sysinfo->dsize == 2)
+               clrbits_le32(&mmdc1->mpdgctrl0, 1 << 30);
+
+       /*
+        * DQS gating absolute offset should be modified from
+        * reflecting (HW_DG_LOWx + HW_DG_UPx)/2 to
+        * reflecting (HW_DG_UPx - 0x80)
+        */
+       modify_dg_result(&mmdc0->mpdghwst0, &mmdc0->mpdghwst1,
+                        &mmdc0->mpdgctrl0);
+       modify_dg_result(&mmdc0->mpdghwst2, &mmdc0->mpdghwst3,
+                        &mmdc0->mpdgctrl1);
+       if (sysinfo->dsize == 0x2) {
+               modify_dg_result(&mmdc1->mpdghwst0, &mmdc1->mpdghwst1,
+                                &mmdc1->mpdgctrl0);
+               modify_dg_result(&mmdc1->mpdghwst2, &mmdc1->mpdghwst3,
+                                &mmdc1->mpdgctrl1);
+       }
+       debug("Ending Read DQS Gating calibration. Error mask: 0x%x\n", errors);
+
+       /*
+        * **********************
+        * Read Delay calibration
+        * **********************
+        */
+       debug("Starting Read Delay calibration.\n");
+
+       reset_read_data_fifos();
+
+       /*
+        * 4. Issue the Precharge-All command to the DDR device for both
+        * chip selects.  If only using one chip select, then precharge
+        * only the desired chip select.
+        */
+       precharge_all(cs0_enable, cs1_enable);
+
+       /*
+        * 9. Read delay-line calibration
+        * Start the automatic read calibration process by asserting
+        * MPRDDLHWCTL[HW_RD_DL_EN].
+        */
+       writel(0x00000030, &mmdc0->mprddlhwctl);
+
+       /*
+        * 10. poll for completion
+        * MMDC indicates that the write data calibration had finished by
+        * setting MPRDDLHWCTL[HW_RD_DL_EN] = 0.   Also, ensure that
+        * no error bits were set.
+        */
+       wait_for_bit("MMDC", &mmdc0->mprddlhwctl, 1 << 4, 0, 100, 0);
+
+       /* check both PHYs for x64 configuration, if x32, check only PHY0 */
+       if (readl(&mmdc0->mprddlhwctl) & 0x0000000f)
+               errors |= 4;
+
+       if ((sysinfo->dsize == 0x2) &&
+           (readl(&mmdc1->mprddlhwctl) & 0x0000000f))
+               errors |= 8;
+
+       debug("Ending Read Delay calibration. Error mask: 0x%x\n", errors);
+
+       /*
+        * ***********************
+        * Write Delay Calibration
+        * ***********************
+        */
+       debug("Starting Write Delay calibration.\n");
+
+       reset_read_data_fifos();
+
+       /*
+        * 4. Issue the Precharge-All command to the DDR device for both
+        * chip selects. If only using one chip select, then precharge
+        * only the desired chip select.
+        */
+       precharge_all(cs0_enable, cs1_enable);
+
+       /*
+        * 8. Set the WR_DL_ABS# bits to their default values.
+        * Both PHYs for x64 configuration, if x32, do only PHY0.
+        */
+       writel(initdelay, &mmdc0->mpwrdlctl);
+       if (sysinfo->dsize == 0x2)
+               writel(initdelay, &mmdc1->mpwrdlctl);
+
+       /*
+        * XXX This isn't in the manual. Force a measurement,
+        * for previous delay setup to effect.
+        */
+       force_delay_measurement(sysinfo->dsize);
+
+       /*
+        * 9. 10. Start the automatic write calibration process
+        * by asserting MPWRDLHWCTL0[HW_WR_DL_EN].
+        */
+       writel(0x00000030, &mmdc0->mpwrdlhwctl);
+
+       /*
+        * Poll for completion.
+        * MMDC indicates that the write data calibration had finished
+        * by setting MPWRDLHWCTL[HW_WR_DL_EN] = 0.
+        * Also, ensure that no error bits were set.
+        */
+       wait_for_bit("MMDC", &mmdc0->mpwrdlhwctl, 1 << 4, 0, 100, 0);
+
+       /* Check both PHYs for x64 configuration, if x32, check only PHY0 */
+       if (readl(&mmdc0->mpwrdlhwctl) & 0x0000000f)
+               errors |= 16;
+
+       if ((sysinfo->dsize == 0x2) &&
+           (readl(&mmdc1->mpwrdlhwctl) & 0x0000000f))
+               errors |= 32;
+
+       debug("Ending Write Delay calibration. Error mask: 0x%x\n", errors);
+
+       reset_read_data_fifos();
+
+       /* Enable DDR logic power down timer */
+       setbits_le32(&mmdc0->mdpdc, 0x00005500);
+
+       /* Enable Adopt power down timer */
+       clrbits_le32(&mmdc0->mapsr, 0x1);
+
+       /* Restore MDMISC value (RALAT, WALAT) to MMDCP1 */
+       writel(esdmisc_val, &mmdc0->mdmisc);
+
+       /* Clear DQS pull ups */
+       clrbits_le32(&mx6_ddr_iomux->dram_sdqs0, 0x7000);
+       clrbits_le32(&mx6_ddr_iomux->dram_sdqs1, 0x7000);
+       clrbits_le32(&mx6_ddr_iomux->dram_sdqs2, 0x7000);
+       clrbits_le32(&mx6_ddr_iomux->dram_sdqs3, 0x7000);
+       clrbits_le32(&mx6_ddr_iomux->dram_sdqs4, 0x7000);
+       clrbits_le32(&mx6_ddr_iomux->dram_sdqs5, 0x7000);
+       clrbits_le32(&mx6_ddr_iomux->dram_sdqs6, 0x7000);
+       clrbits_le32(&mx6_ddr_iomux->dram_sdqs7, 0x7000);
+
+       /* Re-enable SDE (chip selects) if they were set initially */
+       if (cs1_enable_initial)
+               /* Set SDE_1 */
+               setbits_le32(&mmdc0->mdctl, 1 << 30);
+
+       if (cs0_enable_initial)
+               /* Set SDE_0 */
+               setbits_le32(&mmdc0->mdctl, 1 << 31);
+
+       /* Re-enable to auto refresh */
+       writel(temp_ref, &mmdc0->mdref);
+
+       /* Clear the MDSCR (including the con_req bit) */
+       writel(0x0, &mmdc0->mdscr);     /* CS0 */
+
+       /* Poll to make sure the con_ack bit is clear */
+       wait_for_bit("MMDC", &mmdc0->mdscr, 1 << 14, 0, 100, 0);
+
+       /*
+        * Print out the registers that were updated as a result
+        * of the calibration process.
+        */
+       debug("MMDC registers updated from calibration\n");
+       debug("Read DQS gating calibration:\n");
+       debug("\tMPDGCTRL0 PHY0 = 0x%08X\n", readl(&mmdc0->mpdgctrl0));
+       debug("\tMPDGCTRL1 PHY0 = 0x%08X\n", readl(&mmdc0->mpdgctrl1));
+       if (sysinfo->dsize == 2) {
+               debug("\tMPDGCTRL0 PHY1 = 0x%08X\n", readl(&mmdc1->mpdgctrl0));
+               debug("\tMPDGCTRL1 PHY1 = 0x%08X\n", readl(&mmdc1->mpdgctrl1));
+       }
+       debug("Read calibration:\n");
+       debug("\tMPRDDLCTL PHY0 = 0x%08X\n", readl(&mmdc0->mprddlctl));
+       if (sysinfo->dsize == 2)
+               debug("\tMPRDDLCTL PHY1 = 0x%08X\n", readl(&mmdc1->mprddlctl));
+       debug("Write calibration:\n");
+       debug("\tMPWRDLCTL PHY0 = 0x%08X\n", readl(&mmdc0->mpwrdlctl));
+       if (sysinfo->dsize == 2)
+               debug("\tMPWRDLCTL PHY1 = 0x%08X\n", readl(&mmdc1->mpwrdlctl));
+
+       /*
+        * Registers below are for debugging purposes.  These print out
+        * the upper and lower boundaries captured during
+        * read DQS gating calibration.
+        */
+       debug("Status registers bounds for read DQS gating:\n");
+       debug("\tMPDGHWST0 PHY0 = 0x%08x\n", readl(&mmdc0->mpdghwst0));
+       debug("\tMPDGHWST1 PHY0 = 0x%08x\n", readl(&mmdc0->mpdghwst1));
+       debug("\tMPDGHWST2 PHY0 = 0x%08x\n", readl(&mmdc0->mpdghwst2));
+       debug("\tMPDGHWST3 PHY0 = 0x%08x\n", readl(&mmdc0->mpdghwst3));
+       if (sysinfo->dsize == 2) {
+               debug("\tMPDGHWST0 PHY1 = 0x%08x\n", readl(&mmdc1->mpdghwst0));
+               debug("\tMPDGHWST1 PHY1 = 0x%08x\n", readl(&mmdc1->mpdghwst1));
+               debug("\tMPDGHWST2 PHY1 = 0x%08x\n", readl(&mmdc1->mpdghwst2));
+               debug("\tMPDGHWST3 PHY1 = 0x%08x\n", readl(&mmdc1->mpdghwst3));
+       }
+
+       debug("Final do_dqs_calibration error mask: 0x%x\n", errors);
+
+       return errors;
+}
+#endif
+
+#if defined(CONFIG_MX6SX)
+/* Configure MX6SX mmdc iomux */
+void mx6sx_dram_iocfg(unsigned width,
+                     const struct mx6sx_iomux_ddr_regs *ddr,
+                     const struct mx6sx_iomux_grp_regs *grp)
+{
+       struct mx6sx_iomux_ddr_regs *mx6_ddr_iomux;
+       struct mx6sx_iomux_grp_regs *mx6_grp_iomux;
+
+       mx6_ddr_iomux = (struct mx6sx_iomux_ddr_regs *)MX6SX_IOM_DDR_BASE;
+       mx6_grp_iomux = (struct mx6sx_iomux_grp_regs *)MX6SX_IOM_GRP_BASE;
+
+       /* DDR IO TYPE */
+       writel(grp->grp_ddr_type, &mx6_grp_iomux->grp_ddr_type);
+       writel(grp->grp_ddrpke, &mx6_grp_iomux->grp_ddrpke);
+
+       /* CLOCK */
+       writel(ddr->dram_sdclk_0, &mx6_ddr_iomux->dram_sdclk_0);
+
+       /* ADDRESS */
+       writel(ddr->dram_cas, &mx6_ddr_iomux->dram_cas);
+       writel(ddr->dram_ras, &mx6_ddr_iomux->dram_ras);
+       writel(grp->grp_addds, &mx6_grp_iomux->grp_addds);
+
+       /* Control */
+       writel(ddr->dram_reset, &mx6_ddr_iomux->dram_reset);
+       writel(ddr->dram_sdba2, &mx6_ddr_iomux->dram_sdba2);
+       writel(ddr->dram_sdcke0, &mx6_ddr_iomux->dram_sdcke0);
+       writel(ddr->dram_sdcke1, &mx6_ddr_iomux->dram_sdcke1);
+       writel(ddr->dram_odt0, &mx6_ddr_iomux->dram_odt0);
+       writel(ddr->dram_odt1, &mx6_ddr_iomux->dram_odt1);
+       writel(grp->grp_ctlds, &mx6_grp_iomux->grp_ctlds);
+
+       /* Data Strobes */
+       writel(grp->grp_ddrmode_ctl, &mx6_grp_iomux->grp_ddrmode_ctl);
+       writel(ddr->dram_sdqs0, &mx6_ddr_iomux->dram_sdqs0);
+       writel(ddr->dram_sdqs1, &mx6_ddr_iomux->dram_sdqs1);
+       if (width >= 32) {
+               writel(ddr->dram_sdqs2, &mx6_ddr_iomux->dram_sdqs2);
+               writel(ddr->dram_sdqs3, &mx6_ddr_iomux->dram_sdqs3);
+       }
+
+       /* Data */
+       writel(grp->grp_ddrmode, &mx6_grp_iomux->grp_ddrmode);
+       writel(grp->grp_b0ds, &mx6_grp_iomux->grp_b0ds);
+       writel(grp->grp_b1ds, &mx6_grp_iomux->grp_b1ds);
+       if (width >= 32) {
+               writel(grp->grp_b2ds, &mx6_grp_iomux->grp_b2ds);
+               writel(grp->grp_b3ds, &mx6_grp_iomux->grp_b3ds);
+       }
+       writel(ddr->dram_dqm0, &mx6_ddr_iomux->dram_dqm0);
+       writel(ddr->dram_dqm1, &mx6_ddr_iomux->dram_dqm1);
+       if (width >= 32) {
+               writel(ddr->dram_dqm2, &mx6_ddr_iomux->dram_dqm2);
+               writel(ddr->dram_dqm3, &mx6_ddr_iomux->dram_dqm3);
+       }
+}
+#endif
+
+#ifdef CONFIG_MX6UL
+void mx6ul_dram_iocfg(unsigned width,
+                     const struct mx6ul_iomux_ddr_regs *ddr,
+                     const struct mx6ul_iomux_grp_regs *grp)
+{
+       struct mx6ul_iomux_ddr_regs *mx6_ddr_iomux;
+       struct mx6ul_iomux_grp_regs *mx6_grp_iomux;
+
+       mx6_ddr_iomux = (struct mx6ul_iomux_ddr_regs *)MX6UL_IOM_DDR_BASE;
+       mx6_grp_iomux = (struct mx6ul_iomux_grp_regs *)MX6UL_IOM_GRP_BASE;
+
+       /* DDR IO TYPE */
+       writel(grp->grp_ddr_type, &mx6_grp_iomux->grp_ddr_type);
+       writel(grp->grp_ddrpke, &mx6_grp_iomux->grp_ddrpke);
+
+       /* CLOCK */
+       writel(ddr->dram_sdclk_0, &mx6_ddr_iomux->dram_sdclk_0);
+
+       /* ADDRESS */
+       writel(ddr->dram_cas, &mx6_ddr_iomux->dram_cas);
+       writel(ddr->dram_ras, &mx6_ddr_iomux->dram_ras);
+       writel(grp->grp_addds, &mx6_grp_iomux->grp_addds);
+
+       /* Control */
+       writel(ddr->dram_reset, &mx6_ddr_iomux->dram_reset);
+       writel(ddr->dram_sdba2, &mx6_ddr_iomux->dram_sdba2);
+       writel(ddr->dram_odt0, &mx6_ddr_iomux->dram_odt0);
+       writel(ddr->dram_odt1, &mx6_ddr_iomux->dram_odt1);
+       writel(grp->grp_ctlds, &mx6_grp_iomux->grp_ctlds);
+
+       /* Data Strobes */
+       writel(grp->grp_ddrmode_ctl, &mx6_grp_iomux->grp_ddrmode_ctl);
+       writel(ddr->dram_sdqs0, &mx6_ddr_iomux->dram_sdqs0);
+       writel(ddr->dram_sdqs1, &mx6_ddr_iomux->dram_sdqs1);
+
+       /* Data */
+       writel(grp->grp_ddrmode, &mx6_grp_iomux->grp_ddrmode);
+       writel(grp->grp_b0ds, &mx6_grp_iomux->grp_b0ds);
+       writel(grp->grp_b1ds, &mx6_grp_iomux->grp_b1ds);
+       writel(ddr->dram_dqm0, &mx6_ddr_iomux->dram_dqm0);
+       writel(ddr->dram_dqm1, &mx6_ddr_iomux->dram_dqm1);
+}
+#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,
+                     const struct mx6dq_iomux_ddr_regs *ddr,
+                     const struct mx6dq_iomux_grp_regs *grp)
+{
+       volatile struct mx6dq_iomux_ddr_regs *mx6_ddr_iomux;
+       volatile struct mx6dq_iomux_grp_regs *mx6_grp_iomux;
+
+       mx6_ddr_iomux = (struct mx6dq_iomux_ddr_regs *)MX6DQ_IOM_DDR_BASE;
+       mx6_grp_iomux = (struct mx6dq_iomux_grp_regs *)MX6DQ_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;
+       mx6_ddr_iomux->dram_sdclk_1 = ddr->dram_sdclk_1;
+
+       /* 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_sdcke0 = ddr->dram_sdcke0;
+       mx6_ddr_iomux->dram_sdcke1 = ddr->dram_sdcke1;
+       mx6_ddr_iomux->dram_sdba2 = ddr->dram_sdba2;
+       mx6_ddr_iomux->dram_sdodt0 = ddr->dram_sdodt0;
+       mx6_ddr_iomux->dram_sdodt1 = ddr->dram_sdodt1;
+       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;
+       }
+       if (width >= 64) {
+               mx6_ddr_iomux->dram_sdqs4 = ddr->dram_sdqs4;
+               mx6_ddr_iomux->dram_sdqs5 = ddr->dram_sdqs5;
+               mx6_ddr_iomux->dram_sdqs6 = ddr->dram_sdqs6;
+               mx6_ddr_iomux->dram_sdqs7 = ddr->dram_sdqs7;
+       }
+
+       /* 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;
+       }
+       if (width >= 64) {
+               mx6_grp_iomux->grp_b4ds = grp->grp_b4ds;
+               mx6_grp_iomux->grp_b5ds = grp->grp_b5ds;
+               mx6_grp_iomux->grp_b6ds = grp->grp_b6ds;
+               mx6_grp_iomux->grp_b7ds = grp->grp_b7ds;
+       }
+       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;
+       }
+       if (width >= 64) {
+               mx6_ddr_iomux->dram_dqm4 = ddr->dram_dqm4;
+               mx6_ddr_iomux->dram_dqm5 = ddr->dram_dqm5;
+               mx6_ddr_iomux->dram_dqm6 = ddr->dram_dqm6;
+               mx6_ddr_iomux->dram_dqm7 = ddr->dram_dqm7;
+       }
+}
+#endif
+
+#if defined(CONFIG_MX6QDL) || defined(CONFIG_MX6DL) || defined(CONFIG_MX6S)
+/* Configure MX6SDL mmdc iomux */
+void mx6sdl_dram_iocfg(unsigned width,
+                      const struct mx6sdl_iomux_ddr_regs *ddr,
+                      const struct mx6sdl_iomux_grp_regs *grp)
+{
+       volatile struct mx6sdl_iomux_ddr_regs *mx6_ddr_iomux;
+       volatile struct mx6sdl_iomux_grp_regs *mx6_grp_iomux;
+
+       mx6_ddr_iomux = (struct mx6sdl_iomux_ddr_regs *)MX6SDL_IOM_DDR_BASE;
+       mx6_grp_iomux = (struct mx6sdl_iomux_grp_regs *)MX6SDL_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;
+       mx6_ddr_iomux->dram_sdclk_1 = ddr->dram_sdclk_1;
+
+       /* 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_sdcke0 = ddr->dram_sdcke0;
+       mx6_ddr_iomux->dram_sdcke1 = ddr->dram_sdcke1;
+       mx6_ddr_iomux->dram_sdba2 = ddr->dram_sdba2;
+       mx6_ddr_iomux->dram_sdodt0 = ddr->dram_sdodt0;
+       mx6_ddr_iomux->dram_sdodt1 = ddr->dram_sdodt1;
+       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;
+       }
+       if (width >= 64) {
+               mx6_ddr_iomux->dram_sdqs4 = ddr->dram_sdqs4;
+               mx6_ddr_iomux->dram_sdqs5 = ddr->dram_sdqs5;
+               mx6_ddr_iomux->dram_sdqs6 = ddr->dram_sdqs6;
+               mx6_ddr_iomux->dram_sdqs7 = ddr->dram_sdqs7;
+       }
+
+       /* 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;
+       }
+       if (width >= 64) {
+               mx6_grp_iomux->grp_b4ds = grp->grp_b4ds;
+               mx6_grp_iomux->grp_b5ds = grp->grp_b5ds;
+               mx6_grp_iomux->grp_b6ds = grp->grp_b6ds;
+               mx6_grp_iomux->grp_b7ds = grp->grp_b7ds;
+       }
+       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;
+       }
+       if (width >= 64) {
+               mx6_ddr_iomux->dram_dqm4 = ddr->dram_dqm4;
+               mx6_ddr_iomux->dram_dqm5 = ddr->dram_dqm5;
+               mx6_ddr_iomux->dram_dqm6 = ddr->dram_dqm6;
+               mx6_ddr_iomux->dram_dqm7 = ddr->dram_dqm7;
+       }
+}
+#endif
+
+/*
+ * Configure mx6 mmdc registers based on:
+ *  - board-specific memory configuration
+ *  - board-specific calibration data
+ *  - ddr3/lpddr2 chip details
+ *
+ * The various calculations here are derived from the Freescale
+ * 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
+ * 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_mx6sx() && !is_mx6ul() && !is_mx6sl())                    \
+               mmdc1->entry = value;                                     \
+       } while (0)
+
+/*
+ * 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 = (sysinfo->refsel << 14) | (sysinfo->refr << 11);
+
+       /* 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)
+{
+       volatile struct mmdc_p_regs *mmdc0;
+       volatile struct mmdc_p_regs *mmdc1;
+       u32 val;
+       u8 tcke, tcksrx, tcksre, txpdll, taofpd, taonpd, trrd;
+       u8 todtlon, taxpd, tanpd, tcwl, txp, tfaw, tcl;
+       u8 todt_idle_off = 0x4; /* from DDR3 Script Aid spreadsheet */
+       u16 trcd, trc, tras, twr, tmrd, trtp, trp, twtr, trfc, txs, txpr;
+       u16 cs0_end;
+       u16 tdllk = 0x1ff; /* DLL locking time: 512 cycles (JEDEC DDR3) */
+       u8 coladdr;
+       int clkper; /* clock period in picoseconds */
+       int clock; /* clock freq in MHz */
+       int cs;
+       u16 mem_speed = ddr3_cfg->mem_speed;
+
+       mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
+       if (!is_mx6sx() && !is_mx6ul() && !is_mx6sl())
+               mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
+
+       /* Limit mem_speed for MX6D/MX6Q */
+       if (is_mx6dq() || is_mx6dqp()) {
+               if (mem_speed > 1066)
+                       mem_speed = 1066; /* 1066 MT/s */
+
+               tcwl = 4;
+       }
+       /* Limit mem_speed for MX6S/MX6DL */
+       else {
+               if (mem_speed > 800)
+                       mem_speed = 800;  /* 800 MT/s */
+
+               tcwl = 3;
+       }
+
+       clock = mem_speed / 2;
+       /*
+        * Data rate of 1066 MT/s requires 533 MHz DDR3 clock, but MX6D/Q supports
+        * up to 528 MHz, so reduce the clock to fit chip specs
+        */
+       if (is_mx6dq() || is_mx6dqp()) {
+               if (clock > 528)
+                       clock = 528; /* 528 MHz */
+       }
+
+       clkper = (1000 * 1000) / clock; /* pico seconds */
+       todtlon = tcwl;
+       taxpd = tcwl;
+       tanpd = tcwl;
+
+       switch (ddr3_cfg->density) {
+       case 1: /* 1Gb per chip */
+               trfc = DIV_ROUND_UP(110000, clkper) - 1;
+               txs = DIV_ROUND_UP(120000, clkper) - 1;
+               break;
+       case 2: /* 2Gb per chip */
+               trfc = DIV_ROUND_UP(160000, clkper) - 1;
+               txs = DIV_ROUND_UP(170000, clkper) - 1;
+               break;
+       case 4: /* 4Gb per chip */
+               trfc = DIV_ROUND_UP(260000, clkper) - 1;
+               txs = DIV_ROUND_UP(270000, clkper) - 1;
+               break;
+       case 8: /* 8Gb per chip */
+               trfc = DIV_ROUND_UP(350000, clkper) - 1;
+               txs = DIV_ROUND_UP(360000, clkper) - 1;
+               break;
+       default:
+               /* invalid density */
+               puts("invalid chip density\n");
+               hang();
+               break;
+       }
+       txpr = txs;
+
+       switch (mem_speed) {
+       case 800:
+               txp = DIV_ROUND_UP(max(3 * clkper, 7500), clkper) - 1;
+               tcke = DIV_ROUND_UP(max(3 * clkper, 7500), clkper) - 1;
+               if (ddr3_cfg->pagesz == 1) {
+                       tfaw = DIV_ROUND_UP(40000, clkper) - 1;
+                       trrd = DIV_ROUND_UP(max(4 * clkper, 10000), clkper) - 1;
+               } else {
+                       tfaw = DIV_ROUND_UP(50000, clkper) - 1;
+                       trrd = DIV_ROUND_UP(max(4 * clkper, 10000), clkper) - 1;
+               }
+               break;
+       case 1066:
+               txp = DIV_ROUND_UP(max(3 * clkper, 7500), clkper) - 1;
+               tcke = DIV_ROUND_UP(max(3 * clkper, 5625), clkper) - 1;
+               if (ddr3_cfg->pagesz == 1) {
+                       tfaw = DIV_ROUND_UP(37500, clkper) - 1;
+                       trrd = DIV_ROUND_UP(max(4 * clkper, 7500), clkper) - 1;
+               } else {
+                       tfaw = DIV_ROUND_UP(50000, clkper) - 1;
+                       trrd = DIV_ROUND_UP(max(4 * clkper, 10000), clkper) - 1;
+               }
+               break;
+       default:
+               puts("invalid memory speed\n");
+               hang();
+               break;
+       }
+       txpdll = DIV_ROUND_UP(max(10 * clkper, 24000), clkper) - 1;
+       tcksre = DIV_ROUND_UP(max(5 * clkper, 10000), clkper);
+       taonpd = DIV_ROUND_UP(2000, clkper) - 1;
+       tcksrx = tcksre;
+       taofpd = taonpd;
+       twr  = DIV_ROUND_UP(15000, clkper) - 1;
+       tmrd = DIV_ROUND_UP(max(12 * clkper, 15000), clkper) - 1;
+       trc  = DIV_ROUND_UP(ddr3_cfg->trcmin, clkper / 10) - 1;
+       tras = DIV_ROUND_UP(ddr3_cfg->trasmin, clkper / 10) - 1;
+       tcl  = DIV_ROUND_UP(ddr3_cfg->trcd, clkper / 10) - 3;
+       trp  = DIV_ROUND_UP(ddr3_cfg->trcd, clkper / 10) - 1;
+       twtr = ROUND(max(4 * clkper, 7500) / clkper, 1) - 1;
+       trcd = trp;
+       trtp = twtr;
+       cs0_end = 4 * sysinfo->cs_density - 1;
+
+       debug("density:%d Gb (%d Gb per chip)\n",
+             sysinfo->cs_density, ddr3_cfg->density);
+       debug("clock: %dMHz (%d ps)\n", clock, clkper);
+       debug("memspd:%d\n", mem_speed);
+       debug("tcke=%d\n", tcke);
+       debug("tcksrx=%d\n", tcksrx);
+       debug("tcksre=%d\n", tcksre);
+       debug("taofpd=%d\n", taofpd);
+       debug("taonpd=%d\n", taonpd);
+       debug("todtlon=%d\n", todtlon);
+       debug("tanpd=%d\n", tanpd);
+       debug("taxpd=%d\n", taxpd);
+       debug("trfc=%d\n", trfc);
+       debug("txs=%d\n", txs);
+       debug("txp=%d\n", txp);
+       debug("txpdll=%d\n", txpdll);
+       debug("tfaw=%d\n", tfaw);
+       debug("tcl=%d\n", tcl);
+       debug("trcd=%d\n", trcd);
+       debug("trp=%d\n", trp);
+       debug("trc=%d\n", trc);
+       debug("tras=%d\n", tras);
+       debug("twr=%d\n", twr);
+       debug("tmrd=%d\n", tmrd);
+       debug("tcwl=%d\n", tcwl);
+       debug("tdllk=%d\n", tdllk);
+       debug("trtp=%d\n", trtp);
+       debug("twtr=%d\n", twtr);
+       debug("trrd=%d\n", trrd);
+       debug("txpr=%d\n", txpr);
+       debug("cs0_end=%d\n", cs0_end);
+       debug("ncs=%d\n", sysinfo->ncs);
+       debug("Rtt_wr=%d\n", sysinfo->rtt_wr);
+       debug("Rtt_nom=%d\n", sysinfo->rtt_nom);
+       debug("SRT=%d\n", ddr3_cfg->SRT);
+       debug("twr=%d\n", twr);
+
+       /*
+        * board-specific configuration:
+        *  These values are determined empirically and vary per board layout
+        *  see:
+        *   appnote, ddr3 spreadsheet
+        */
+       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;
+       if (sysinfo->dsize > 1) {
+               MMDC1(mpwldectrl0, calib->p1_mpwldectrl0);
+               MMDC1(mpwldectrl1, calib->p1_mpwldectrl1);
+               MMDC1(mpdgctrl0, calib->p1_mpdgctrl0);
+               MMDC1(mpdgctrl1, calib->p1_mpdgctrl1);
+               MMDC1(mprddlctl, calib->p1_mprddlctl);
+               MMDC1(mpwrdlctl, calib->p1_mpwrdlctl);
+       }
+
+       /* Read data DQ Byte0-3 delay */
+       mmdc0->mprddqby0dl = 0x33333333;
+       mmdc0->mprddqby1dl = 0x33333333;
+       if (sysinfo->dsize > 0) {
+               mmdc0->mprddqby2dl = 0x33333333;
+               mmdc0->mprddqby3dl = 0x33333333;
+       }
+
+       if (sysinfo->dsize > 1) {
+               MMDC1(mprddqby0dl, 0x33333333);
+               MMDC1(mprddqby1dl, 0x33333333);
+               MMDC1(mprddqby2dl, 0x33333333);
+               MMDC1(mprddqby3dl, 0x33333333);
+       }
+
+       /* MMDC Termination: rtt_nom:2 RZQ/2(120ohm), rtt_nom:1 RZQ/4(60ohm) */
+       val = (sysinfo->rtt_nom == 2) ? 0x00011117 : 0x00022227;
+       mmdc0->mpodtctrl = val;
+       if (sysinfo->dsize > 1)
+               MMDC1(mpodtctrl, val);
+
+       /* complete calibration */
+       val = (1 << 11); /* Force measurement on delay-lines */
+       mmdc0->mpmur0 = val;
+       if (sysinfo->dsize > 1)
+               MMDC1(mpmur0, val);
+
+       /* Step 1: configuration request */
+       mmdc0->mdscr = (u32)(1 << 15); /* config request */
+
+       /* Step 2: Timing configuration */
+       mmdc0->mdcfg0 = (trfc << 24) | (txs << 16) | (txp << 13) |
+                       (txpdll << 9) | (tfaw << 4) | tcl;
+       mmdc0->mdcfg1 = (trcd << 29) | (trp << 26) | (trc << 21) |
+                       (tras << 16) | (1 << 15) /* trpa */ |
+                       (twr << 9) | (tmrd << 5) | tcwl;
+       mmdc0->mdcfg2 = (tdllk << 16) | (trtp << 6) | (twtr << 3) | trrd;
+       mmdc0->mdotc = (taofpd << 27) | (taonpd << 24) | (tanpd << 20) |
+                      (taxpd << 16) | (todtlon << 12) | (todt_idle_off << 4);
+       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);
+
+       /* Step 4: Configure delay while leaving reset */
+       mmdc0->mdor = (txpr << 16) | (sysinfo->sde_to_rst << 8) |
+                     (sysinfo->rst_to_cke << 0);
+
+       /* Step 5: Configure DDR physical parameters (density and burst len) */
+       coladdr = ddr3_cfg->coladdr;
+       if (ddr3_cfg->coladdr == 8)             /* 8-bit COL is 0x3 */
+               coladdr += 4;
+       else if (ddr3_cfg->coladdr == 12)       /* 12-bit COL is 0x4 */
+               coladdr += 1;
+       mmdc0->mdctl =  (ddr3_cfg->rowaddr - 11) << 24 |        /* ROW */
+                       (coladdr - 9) << 20 |                   /* COL */
+                       (1 << 19) |             /* Burst Length = 8 for DDR3 */
+                       (sysinfo->dsize << 16);         /* DDR data bus size */
+
+       /* Step 6: Perform ZQ calibration */
+       val = 0xa1390001; /* one-time HW ZQ calib */
+       mmdc0->mpzqhwctrl = val;
+       if (sysinfo->dsize > 1)
+               MMDC1(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 DDR3 devices */
+       for (cs = 0; cs < sysinfo->ncs; cs++) {
+               /* MR2 */
+               val = (sysinfo->rtt_wr & 3) << 9 | (ddr3_cfg->SRT & 1) << 7 |
+                     ((tcwl - 3) & 3) << 3;
+               debug("MR2 CS%d: 0x%08x\n", cs, (u32)MR(val, 2, 3, cs));
+               mmdc0->mdscr = MR(val, 2, 3, cs);
+               /* MR3 */
+               debug("MR3 CS%d: 0x%08x\n", cs, (u32)MR(0, 3, 3, cs));
+               mmdc0->mdscr = MR(0, 3, 3, cs);
+               /* MR1 */
+               val = ((sysinfo->rtt_nom & 1) ? 1 : 0) << 2 |
+                     ((sysinfo->rtt_nom & 2) ? 1 : 0) << 6;
+               debug("MR1 CS%d: 0x%08x\n", cs, (u32)MR(val, 1, 3, cs));
+               mmdc0->mdscr = MR(val, 1, 3, cs);
+               /* MR0 */
+               val = ((tcl - 1) << 4) |        /* CAS */
+                     (1 << 8)   |              /* DLL Reset */
+                     ((twr - 3) << 9) |        /* Write Recovery */
+                     (sysinfo->pd_fast_exit << 12); /* Precharge PD PLL on */
+               debug("MR0 CS%d: 0x%08x\n", cs, (u32)MR(val, 0, 3, cs));
+               mmdc0->mdscr = MR(val, 0, 3, cs);
+               /* ZQ calibration */
+               val = (1 << 10);
+               mmdc0->mdscr = MR(val, 0, 4, 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);
+       if (!sysinfo->pd_fast_exit)
+               mmdc0->mdpdc |= (1 << 7); /* SLOW_PD */
+       mmdc0->mapsr = 0x00001006; /* ADOPT power down enabled */
+
+       /* Step 11: Configure ZQ calibration: one-time and periodic 1ms */
+       val = 0xa1390003;
+       mmdc0->mpzqhwctrl = val;
+       if (sysinfo->dsize > 1)
+               MMDC1(mpzqhwctrl, val);
+
+       /* Step 12: Configure and activate periodic refresh */
+       mmdc0->mdref = (sysinfo->refsel << 14) | (sysinfo->refr << 11);
+
+       /* Step 13: Deassert config request - init complete */
+       mmdc0->mdscr = 0x00000000;
+
+       /* wait for auto-ZQ calibration to complete */
+       mdelay(1);
+}
+
+void mmdc_read_calibration(struct mx6_ddr_sysinfo const *sysinfo,
+                           struct mx6_mmdc_calibration *calib)
+{
+       struct mmdc_p_regs *mmdc0 = (struct mmdc_p_regs *)MMDC_P0_BASE_ADDR;
+       struct mmdc_p_regs *mmdc1 = (struct mmdc_p_regs *)MMDC_P1_BASE_ADDR;
+
+       calib->p0_mpwldectrl0 = readl(&mmdc0->mpwldectrl0);
+       calib->p0_mpwldectrl1 = readl(&mmdc0->mpwldectrl1);
+       calib->p0_mpdgctrl0 = readl(&mmdc0->mpdgctrl0);
+       calib->p0_mpdgctrl1 = readl(&mmdc0->mpdgctrl1);
+       calib->p0_mprddlctl = readl(&mmdc0->mprddlctl);
+       calib->p0_mpwrdlctl = readl(&mmdc0->mpwrdlctl);
+
+       if (sysinfo->dsize == 2) {
+               calib->p1_mpwldectrl0 = readl(&mmdc1->mpwldectrl0);
+               calib->p1_mpwldectrl1 = readl(&mmdc1->mpwldectrl1);
+               calib->p1_mpdgctrl0 = readl(&mmdc1->mpdgctrl0);
+               calib->p1_mpdgctrl1 = readl(&mmdc1->mpdgctrl1);
+               calib->p1_mprddlctl = readl(&mmdc1->mprddlctl);
+               calib->p1_mpwrdlctl = readl(&mmdc1->mpwrdlctl);
+       }
+}
+
+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();
+       }
+}
diff --git a/arch/arm/mach-imx/mx6/litesom.c b/arch/arm/mach-imx/mx6/litesom.c
new file mode 100644 (file)
index 0000000..590e92f
--- /dev/null
@@ -0,0 +1,200 @@
+/*
+ * Copyright (C) 2015-2016 Freescale Semiconductor, Inc.
+ * Copyright (C) 2016 Grinn
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/arch/clock.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/arch/mx6ul_pins.h>
+#include <asm/arch/mx6-pins.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/gpio.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/io.h>
+#include <common.h>
+#include <fsl_esdhc.h>
+#include <linux/sizes.h>
+#include <mmc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define USDHC_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |            \
+       PAD_CTL_PUS_22K_UP  | PAD_CTL_SPEED_LOW |               \
+       PAD_CTL_DSE_80ohm   | PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+int dram_init(void)
+{
+       gd->ram_size = imx_ddr_size();
+
+       return 0;
+}
+
+static iomux_v3_cfg_t const emmc_pads[] = {
+       MX6_PAD_NAND_RE_B__USDHC2_CLK | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_WE_B__USDHC2_CMD | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_DATA00__USDHC2_DATA0 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_DATA01__USDHC2_DATA1 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_DATA02__USDHC2_DATA2 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_DATA03__USDHC2_DATA3 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_DATA04__USDHC2_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_DATA05__USDHC2_DATA5 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_DATA06__USDHC2_DATA6 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_DATA07__USDHC2_DATA7 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+
+       /* RST_B */
+       MX6_PAD_NAND_ALE__GPIO4_IO10 | MUX_PAD_CTRL(NO_PAD_CTRL),
+};
+
+#ifdef CONFIG_FSL_ESDHC
+static struct fsl_esdhc_cfg emmc_cfg = {USDHC2_BASE_ADDR, 0, 8};
+
+#define EMMC_PWR_GPIO  IMX_GPIO_NR(4, 10)
+
+int litesom_mmc_init(bd_t *bis)
+{
+       int ret;
+
+       /* eMMC */
+       imx_iomux_v3_setup_multiple_pads(emmc_pads, ARRAY_SIZE(emmc_pads));
+       gpio_direction_output(EMMC_PWR_GPIO, 0);
+       udelay(500);
+       gpio_direction_output(EMMC_PWR_GPIO, 1);
+       emmc_cfg.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+
+       ret = fsl_esdhc_initialize(bis, &emmc_cfg);
+       if (ret) {
+               printf("Warning: failed to initialize mmc dev 1 (eMMC)\n");
+               return ret;
+       }
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_SPL_BUILD
+#include <libfdt.h>
+#include <spl.h>
+#include <asm/arch/mx6-ddr.h>
+
+
+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,
+       .grp_ddr_type = 0x000c0000,
+};
+
+static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
+       .dram_dqm0 = 0x00000030,
+       .dram_dqm1 = 0x00000030,
+       .dram_ras = 0x00000030,
+       .dram_cas = 0x00000030,
+       .dram_odt0 = 0x00000030,
+       .dram_odt1 = 0x00000030,
+       .dram_sdba2 = 0x00000000,
+       .dram_sdclk_0 = 0x00000030,
+       .dram_sdqs0 = 0x00000030,
+       .dram_sdqs1 = 0x00000030,
+       .dram_reset = 0x00000030,
+};
+
+static struct mx6_mmdc_calibration mx6_mmcd_calib = {
+       .p0_mpwldectrl0 = 0x00000000,
+       .p0_mpdgctrl0 = 0x41570155,
+       .p0_mprddlctl = 0x4040474A,
+       .p0_mpwrdlctl = 0x40405550,
+};
+
+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 = 0,             /* 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,
+       .refsel = 0,            /* Refresh cycles at 64KHz */
+       .refr = 1,              /* 2 refresh commands per refresh cycle */
+};
+
+static struct mx6_ddr3_cfg mem_ddr = {
+       .mem_speed = 800,
+       .density = 4,
+       .width = 16,
+       .banks = 8,
+       .rowaddr = 15,
+       .coladdr = 10,
+       .pagesz = 2,
+       .trcd = 1375,
+       .trcmin = 4875,
+       .trasmin = 3500,
+};
+
+static void ccgr_init(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       writel(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(0xFFFFFFFF, &ccm->CCGR7);
+}
+
+static void spl_dram_init(void)
+{
+       unsigned long ram_size;
+
+       mx6ul_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs);
+       mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr);
+
+       /*
+        * Get actual RAM size, so we can adjust DDR row size for <512M
+        * memories
+        */
+       ram_size = get_ram_size((void *)CONFIG_SYS_SDRAM_BASE, SZ_512M);
+       if (ram_size < SZ_512M) {
+               mem_ddr.rowaddr = 14;
+               mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr);
+       }
+}
+
+void litesom_init_f(void)
+{
+       ccgr_init();
+
+       /* setup AIPS and disable watchdog */
+       arch_cpu_init();
+
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+       board_early_init_f();
+#endif
+
+       /* setup GP timer */
+       timer_init();
+
+       /* UART clocks enabled and gd valid - init serial console */
+       preloader_console_init();
+
+       /* DDR initialization */
+       spl_dram_init();
+}
+#endif
diff --git a/arch/arm/mach-imx/mx6/mp.c b/arch/arm/mach-imx/mx6/mp.c
new file mode 100644 (file)
index 0000000..e28018b
--- /dev/null
@@ -0,0 +1,87 @@
+/*
+ * (C) Copyright 2014
+ * Gabriel Huau <contact@huau-gabriel.fr>
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <linux/errno.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/arch/imx-regs.h>
+
+#define MAX_CPUS 4
+static struct src *src = (struct src *)SRC_BASE_ADDR;
+
+static uint32_t cpu_reset_mask[MAX_CPUS] = {
+       0, /* We don't really want to modify the cpu0 */
+       SRC_SCR_CORE_1_RESET_MASK,
+       SRC_SCR_CORE_2_RESET_MASK,
+       SRC_SCR_CORE_3_RESET_MASK
+};
+
+static uint32_t cpu_ctrl_mask[MAX_CPUS] = {
+       0, /* We don't really want to modify the cpu0 */
+       SRC_SCR_CORE_1_ENABLE_MASK,
+       SRC_SCR_CORE_2_ENABLE_MASK,
+       SRC_SCR_CORE_3_ENABLE_MASK
+};
+
+int cpu_reset(int nr)
+{
+       /* Software reset of the CPU N */
+       src->scr |= cpu_reset_mask[nr];
+       return 0;
+}
+
+int cpu_status(int nr)
+{
+       printf("core %d => %d\n", nr, !!(src->scr & cpu_ctrl_mask[nr]));
+       return 0;
+}
+
+int cpu_release(int nr, int argc, char *const argv[])
+{
+       uint32_t boot_addr;
+
+       boot_addr = simple_strtoul(argv[0], NULL, 16);
+
+       switch (nr) {
+       case 1:
+               src->gpr3 = boot_addr;
+               break;
+       case 2:
+               src->gpr5 = boot_addr;
+               break;
+       case 3:
+               src->gpr7 = boot_addr;
+               break;
+       default:
+               return 1;
+       }
+
+       /* CPU N is ready to start */
+       src->scr |= cpu_ctrl_mask[nr];
+
+       return 0;
+}
+
+int is_core_valid(unsigned int core)
+{
+       uint32_t nr_cores = get_nr_cpus();
+
+       if (core > nr_cores)
+               return 0;
+
+       return 1;
+}
+
+int cpu_disable(int nr)
+{
+       /* Disable the CPU N */
+       src->scr &= ~cpu_ctrl_mask[nr];
+       return 0;
+}
diff --git a/arch/arm/mach-imx/mx6/opos6ul.c b/arch/arm/mach-imx/mx6/opos6ul.c
new file mode 100644 (file)
index 0000000..22b2440
--- /dev/null
@@ -0,0 +1,302 @@
+/*
+ * Copyright (C) 2017 Armadeus Systems
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/arch/clock.h>
+#include <asm/arch/crm_regs.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/mx6-pins.h>
+#include <asm/arch/mx6ul_pins.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/gpio.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/io.h>
+#include <common.h>
+#include <environment.h>
+#include <fsl_esdhc.h>
+#include <mmc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#ifdef CONFIG_FEC_MXC
+#include <miiphy.h>
+
+#define MDIO_PAD_CTRL ( \
+       PAD_CTL_HYS | PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
+       PAD_CTL_DSE_40ohm \
+)
+
+#define ENET_PAD_CTRL_PU ( \
+       PAD_CTL_HYS | PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED | \
+       PAD_CTL_DSE_40ohm \
+)
+
+#define ENET_PAD_CTRL_PD ( \
+       PAD_CTL_HYS | PAD_CTL_PUS_100K_DOWN | PAD_CTL_SPEED_MED | \
+       PAD_CTL_DSE_40ohm \
+)
+
+#define ENET_CLK_PAD_CTRL ( \
+       PAD_CTL_HYS | PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_LOW | \
+       PAD_CTL_DSE_40ohm | PAD_CTL_SRE_FAST \
+)
+
+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(MDIO_PAD_CTRL),
+       MX6_PAD_ENET1_RX_ER__ENET1_RX_ER      | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       MX6_PAD_ENET1_RX_EN__ENET1_RX_EN      | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       MX6_PAD_ENET1_RX_DATA1__ENET1_RDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       MX6_PAD_ENET1_RX_DATA0__ENET1_RDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       MX6_PAD_ENET1_TX_DATA0__ENET1_TDATA00 | MUX_PAD_CTRL(ENET_PAD_CTRL_PU),
+       MX6_PAD_ENET1_TX_DATA1__ENET1_TDATA01 | MUX_PAD_CTRL(ENET_PAD_CTRL_PU),
+       MX6_PAD_ENET1_TX_EN__ENET1_TX_EN      | MUX_PAD_CTRL(ENET_PAD_CTRL_PU),
+       /* PHY Int */
+       MX6_PAD_NAND_DQS__GPIO4_IO16          | MUX_PAD_CTRL(ENET_PAD_CTRL_PU),
+       /* PHY Reset */
+       MX6_PAD_NAND_DATA00__GPIO4_IO02       | MUX_PAD_CTRL(ENET_PAD_CTRL_PD),
+       MX6_PAD_ENET1_TX_CLK__ENET1_REF_CLK1  | MUX_PAD_CTRL(ENET_CLK_PAD_CTRL),
+};
+
+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;
+}
+
+int board_eth_init(bd_t *bis)
+{
+       struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       struct gpio_desc rst;
+       int ret;
+
+       /* 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);
+
+       ret = enable_fec_anatop_clock(0, ENET_50MHZ);
+       if (ret)
+               return ret;
+
+       enable_enet_clk(1);
+
+       imx_iomux_v3_setup_multiple_pads(fec1_pads, ARRAY_SIZE(fec1_pads));
+
+       ret = dm_gpio_lookup_name("GPIO4_2", &rst);
+       if (ret) {
+               printf("Cannot get GPIO4_2\n");
+               return ret;
+       }
+
+       ret = dm_gpio_request(&rst, "phy-rst");
+       if (ret) {
+               printf("Cannot request GPIO4_2\n");
+               return ret;
+       }
+
+       dm_gpio_set_dir_flags(&rst, GPIOD_IS_OUT);
+       dm_gpio_set_value(&rst, 0);
+       udelay(1000);
+       dm_gpio_set_value(&rst, 1);
+
+       return fecmxc_initialize(bis);
+}
+#endif /* CONFIG_FEC_MXC */
+
+int board_init(void)
+{
+       /* Address of boot parameters */
+       gd->bd->bi_boot_params = CONFIG_SYS_SDRAM_BASE + 0x100;
+
+       return 0;
+}
+
+int __weak opos6ul_board_late_init(void)
+{
+       return 0;
+}
+
+int board_late_init(void)
+{
+       struct src *psrc = (struct src *)SRC_BASE_ADDR;
+       unsigned reg = readl(&psrc->sbmr2);
+
+       /* In bootstrap don't use the env vars */
+       if (((reg & 0x3000000) >> 24) == 0x1) {
+               set_default_env(NULL);
+               setenv("preboot", "");
+       }
+
+       return opos6ul_board_late_init();
+}
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+       struct fsl_esdhc_cfg *cfg = (struct fsl_esdhc_cfg *)mmc->priv;
+       return cfg->esdhc_base == USDHC1_BASE_ADDR;
+}
+
+int dram_init(void)
+{
+       gd->ram_size = imx_ddr_size();
+
+       return 0;
+}
+
+#ifdef CONFIG_SPL_BUILD
+#include <asm/arch/mx6-ddr.h>
+#include <asm/arch/opos6ul.h>
+#include <libfdt.h>
+#include <spl.h>
+
+#define USDHC_PAD_CTRL (                                       \
+       PAD_CTL_HYS | PAD_CTL_PUS_47K_UP | PAD_CTL_SPEED_MED | \
+       PAD_CTL_DSE_80ohm | PAD_CTL_SRE_FAST                   \
+)
+
+struct fsl_esdhc_cfg usdhc_cfg[1] = {
+       {USDHC1_BASE_ADDR, 0, 8},
+};
+
+static iomux_v3_cfg_t const usdhc1_pads[] = {
+       MX6_PAD_SD1_CLK__USDHC1_CLK        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_CMD__USDHC1_CMD        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DATA0__USDHC1_DATA0    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DATA1__USDHC1_DATA1    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DATA2__USDHC1_DATA2    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_SD1_DATA3__USDHC1_DATA3    | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_READY_B__USDHC1_DATA4 | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_CE0_B__USDHC1_DATA5   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_CE1_B__USDHC1_DATA6   | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+       MX6_PAD_NAND_CLE__USDHC1_DATA7     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
+};
+
+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,
+       .grp_ddr_type = 0x000c0000,
+};
+
+static struct mx6ul_iomux_ddr_regs mx6_ddr_ioregs = {
+       .dram_dqm0 = 0x00000030,
+       .dram_dqm1 = 0x00000030,
+       .dram_ras = 0x00000030,
+       .dram_cas = 0x00000030,
+       .dram_odt0 = 0x00000030,
+       .dram_odt1 = 0x00000030,
+       .dram_sdba2 = 0x00000000,
+       .dram_sdclk_0 = 0x00000008,
+       .dram_sdqs0 = 0x00000038,
+       .dram_sdqs1 = 0x00000030,
+       .dram_reset = 0x00000030,
+};
+
+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 = 2,
+       .width = 16,
+       .banks = 8,
+       .rowaddr = 14,
+       .coladdr = 10,
+       .pagesz = 2,
+       .trcd = 1500,
+       .trcmin = 5250,
+       .trasmin = 3750,
+};
+
+int board_mmc_init(bd_t *bis)
+{
+       imx_iomux_v3_setup_multiple_pads(usdhc1_pads, ARRAY_SIZE(usdhc1_pads));
+       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+}
+
+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(0xFFFFFFFF, &ccm->CCGR7);
+}
+
+static void spl_dram_init(void)
+{
+       struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
+       struct fuse_bank *bank = &ocotp->bank[4];
+       struct fuse_bank4_regs *fuse =
+               (struct fuse_bank4_regs *)bank->fuse_regs;
+       int reg = readl(&fuse->gp1);
+
+       /* 512MB of RAM */
+       if (reg & 0x1) {
+               mem_ddr.density = 4;
+               mem_ddr.rowaddr = 15;
+               mem_ddr.trcd = 1375;
+               mem_ddr.trcmin = 4875;
+               mem_ddr.trasmin = 3500;
+       }
+
+       mx6ul_dram_iocfg(mem_ddr.width, &mx6_ddr_ioregs, &mx6_grp_ioregs);
+       mx6_dram_cfg(&ddr_sysinfo, &mx6_mmcd_calib, &mem_ddr);
+}
+
+void board_init_f(ulong dummy)
+{
+       ccgr_init();
+
+       /* setup AIPS and disable watchdog */
+       arch_cpu_init();
+
+       /* setup GP timer */
+       timer_init();
+
+       /* UART clocks enabled and gd valid - init serial console */
+       opos6ul_setup_uart_debug();
+       preloader_console_init();
+
+       /* DDR initialization */
+       spl_dram_init();
+}
+#endif /* CONFIG_SPL_BUILD */
diff --git a/arch/arm/mach-imx/mx6/soc.c b/arch/arm/mach-imx/mx6/soc.c
new file mode 100644 (file)
index 0000000..af31673
--- /dev/null
@@ -0,0 +1,703 @@
+/*
+ * (C) Copyright 2007
+ * Sascha Hauer, Pengutronix
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/errno.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/dma.h>
+#include <asm/mach-imx/hab.h>
+#include <stdbool.h>
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/arch/crm_regs.h>
+#include <dm.h>
+#include <imx_thermal.h>
+#include <mmc.h>
+
+enum ldo_reg {
+       LDO_ARM,
+       LDO_SOC,
+       LDO_PU,
+};
+
+struct scu_regs {
+       u32     ctrl;
+       u32     config;
+       u32     status;
+       u32     invalidate;
+       u32     fpga_rev;
+};
+
+#if defined(CONFIG_IMX_THERMAL)
+static const struct imx_thermal_plat imx6_thermal_plat = {
+       .regs = (void *)ANATOP_BASE_ADDR,
+       .fuse_bank = 1,
+       .fuse_word = 6,
+};
+
+U_BOOT_DEVICE(imx6_thermal) = {
+       .name = "imx_thermal",
+       .platdata = &imx6_thermal_plat,
+};
+#endif
+
+#if defined(CONFIG_SECURE_BOOT)
+struct imx_sec_config_fuse_t const imx_sec_config_fuse = {
+       .bank = 0,
+       .word = 6,
+};
+#endif
+
+u32 get_nr_cpus(void)
+{
+       struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR;
+       return readl(&scu->config) & 3;
+}
+
+u32 get_cpu_rev(void)
+{
+       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
+       u32 reg = readl(&anatop->digprog_sololite);
+       u32 type = ((reg >> 16) & 0xff);
+       u32 major, cfg = 0;
+
+       if (type != MXC_CPU_MX6SL) {
+               reg = readl(&anatop->digprog);
+               struct scu_regs *scu = (struct scu_regs *)SCU_BASE_ADDR;
+               cfg = readl(&scu->config) & 3;
+               type = ((reg >> 16) & 0xff);
+               if (type == MXC_CPU_MX6DL) {
+                       if (!cfg)
+                               type = MXC_CPU_MX6SOLO;
+               }
+
+               if (type == MXC_CPU_MX6Q) {
+                       if (cfg == 1)
+                               type = MXC_CPU_MX6D;
+               }
+
+       }
+       major = ((reg >> 8) & 0xff);
+       if ((major >= 1) &&
+           ((type == MXC_CPU_MX6Q) || (type == MXC_CPU_MX6D))) {
+               major--;
+               type = MXC_CPU_MX6QP;
+               if (cfg == 1)
+                       type = MXC_CPU_MX6DP;
+       }
+       reg &= 0xff;            /* mx6 silicon revision */
+       return (type << 12) | (reg + (0x10 * (major + 1)));
+}
+
+/*
+ * OCOTP_CFG3[17:16] (see Fusemap Description Table offset 0x440)
+ * defines a 2-bit SPEED_GRADING
+ */
+#define OCOTP_CFG3_SPEED_SHIFT 16
+#define OCOTP_CFG3_SPEED_800MHZ        0
+#define OCOTP_CFG3_SPEED_850MHZ        1
+#define OCOTP_CFG3_SPEED_1GHZ  2
+#define OCOTP_CFG3_SPEED_1P2GHZ        3
+
+/*
+ * For i.MX6UL
+ */
+#define OCOTP_CFG3_SPEED_528MHZ 1
+#define OCOTP_CFG3_SPEED_696MHZ 2
+
+u32 get_cpu_speed_grade_hz(void)
+{
+       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;
+       uint32_t val;
+
+       val = readl(&fuse->cfg3);
+       val >>= OCOTP_CFG3_SPEED_SHIFT;
+       val &= 0x3;
+
+       if (is_mx6ul() || is_mx6ull()) {
+               if (val == OCOTP_CFG3_SPEED_528MHZ)
+                       return 528000000;
+               else if (val == OCOTP_CFG3_SPEED_696MHZ)
+                       return 69600000;
+               else
+                       return 0;
+       }
+
+       switch (val) {
+       /* Valid for IMX6DQ */
+       case OCOTP_CFG3_SPEED_1P2GHZ:
+               if (is_mx6dq() || is_mx6dqp())
+                       return 1200000000;
+       /* Valid for IMX6SX/IMX6SDL/IMX6DQ */
+       case OCOTP_CFG3_SPEED_1GHZ:
+               return 996000000;
+       /* Valid for IMX6DQ */
+       case OCOTP_CFG3_SPEED_850MHZ:
+               if (is_mx6dq() || is_mx6dqp())
+                       return 852000000;
+       /* Valid for IMX6SX/IMX6SDL/IMX6DQ */
+       case OCOTP_CFG3_SPEED_800MHZ:
+               return 792000000;
+       }
+       return 0;
+}
+
+/*
+ * OCOTP_MEM0[7:6] (see Fusemap Description Table offset 0x480)
+ * defines a 2-bit Temperature Grade
+ *
+ * return temperature grade and min/max temperature in Celsius
+ */
+#define OCOTP_MEM0_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->mem0);
+       val >>= OCOTP_MEM0_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;
+}
+
+#ifdef CONFIG_REVISION_TAG
+u32 __weak get_board_rev(void)
+{
+       u32 cpurev = get_cpu_rev();
+       u32 type = ((cpurev >> 12) & 0xff);
+       if (type == MXC_CPU_MX6SOLO)
+               cpurev = (MXC_CPU_MX6DL) << 12 | (cpurev & 0xFFF);
+
+       if (type == MXC_CPU_MX6D)
+               cpurev = (MXC_CPU_MX6Q) << 12 | (cpurev & 0xFFF);
+
+       return cpurev;
+}
+#endif
+
+static void clear_ldo_ramp(void)
+{
+       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
+       int reg;
+
+       /* ROM may modify LDO ramp up time according to fuse setting, so in
+        * order to be in the safe side we neeed to reset these settings to
+        * match the reset value: 0'b00
+        */
+       reg = readl(&anatop->ana_misc2);
+       reg &= ~(0x3f << 24);
+       writel(reg, &anatop->ana_misc2);
+}
+
+/*
+ * Set the PMU_REG_CORE register
+ *
+ * Set LDO_SOC/PU/ARM regulators to the specified millivolt level.
+ * Possible values are from 0.725V to 1.450V in steps of
+ * 0.025V (25mV).
+ */
+static int set_ldo_voltage(enum ldo_reg ldo, u32 mv)
+{
+       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
+       u32 val, step, old, reg = readl(&anatop->reg_core);
+       u8 shift;
+
+       if (mv < 725)
+               val = 0x00;     /* Power gated off */
+       else if (mv > 1450)
+               val = 0x1F;     /* Power FET switched full on. No regulation */
+       else
+               val = (mv - 700) / 25;
+
+       clear_ldo_ramp();
+
+       switch (ldo) {
+       case LDO_SOC:
+               shift = 18;
+               break;
+       case LDO_PU:
+               shift = 9;
+               break;
+       case LDO_ARM:
+               shift = 0;
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       old = (reg & (0x1F << shift)) >> shift;
+       step = abs(val - old);
+       if (step == 0)
+               return 0;
+
+       reg = (reg & ~(0x1F << shift)) | (val << shift);
+       writel(reg, &anatop->reg_core);
+
+       /*
+        * The LDO ramp-up is based on 64 clock cycles of 24 MHz = 2.6 us per
+        * step
+        */
+       udelay(3 * step);
+
+       return 0;
+}
+
+static void set_ahb_rate(u32 val)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       u32 reg, div;
+
+       div = get_periph_clk() / val - 1;
+       reg = readl(&mxc_ccm->cbcdr);
+
+       writel((reg & (~MXC_CCM_CBCDR_AHB_PODF_MASK)) |
+               (div << MXC_CCM_CBCDR_AHB_PODF_OFFSET), &mxc_ccm->cbcdr);
+}
+
+static void clear_mmdc_ch_mask(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       u32 reg;
+       reg = readl(&mxc_ccm->ccdr);
+
+       /* Clear MMDC channel mask */
+       if (is_mx6sx() || is_mx6ul() || is_mx6ull() || is_mx6sl())
+               reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK);
+       else
+               reg &= ~(MXC_CCM_CCDR_MMDC_CH1_HS_MASK | MXC_CCM_CCDR_MMDC_CH0_HS_MASK);
+       writel(reg, &mxc_ccm->ccdr);
+}
+
+#define OCOTP_MEM0_REFTOP_TRIM_SHIFT          8
+
+static void init_bandgap(void)
+{
+       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
+       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;
+
+       /*
+        * Ensure the bandgap has stabilized.
+        */
+       while (!(readl(&anatop->ana_misc0) & 0x80))
+               ;
+       /*
+        * For best noise performance of the analog blocks using the
+        * outputs of the bandgap, the reftop_selfbiasoff bit should
+        * be set.
+        */
+       writel(BM_ANADIG_ANA_MISC0_REFTOP_SELBIASOFF, &anatop->ana_misc0_set);
+       /*
+        * On i.MX6ULL,we need to set VBGADJ bits according to the
+        * REFTOP_TRIM[3:0] in fuse table
+        *      000 - set REFTOP_VBGADJ[2:0] to 3b'110,
+        *      110 - set REFTOP_VBGADJ[2:0] to 3b'000,
+        *      001 - set REFTOP_VBGADJ[2:0] to 3b'001,
+        *      010 - set REFTOP_VBGADJ[2:0] to 3b'010,
+        *      011 - set REFTOP_VBGADJ[2:0] to 3b'011,
+        *      100 - set REFTOP_VBGADJ[2:0] to 3b'100,
+        *      101 - set REFTOP_VBGADJ[2:0] to 3b'101,
+        *      111 - set REFTOP_VBGADJ[2:0] to 3b'111,
+        */
+       if (is_mx6ull()) {
+               val = readl(&fuse->mem0);
+               val >>= OCOTP_MEM0_REFTOP_TRIM_SHIFT;
+               val &= 0x7;
+
+               writel(val << BM_ANADIG_ANA_MISC0_REFTOP_VBGADJ_SHIFT,
+                      &anatop->ana_misc0_set);
+       }
+}
+
+#ifdef CONFIG_MX6SL
+static void set_preclk_from_osc(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       u32 reg;
+
+       reg = readl(&mxc_ccm->cscmr1);
+       reg |= MXC_CCM_CSCMR1_PER_CLK_SEL_MASK;
+       writel(reg, &mxc_ccm->cscmr1);
+}
+#endif
+
+int arch_cpu_init(void)
+{
+       init_aips();
+
+       /* Need to clear MMDC_CHx_MASK to make warm reset work. */
+       clear_mmdc_ch_mask();
+
+       /*
+        * Disable self-bias circuit in the analog bandap.
+        * The self-bias circuit is used by the bandgap during startup.
+        * This bit should be set after the bandgap has initialized.
+        */
+       init_bandgap();
+
+       if (!is_mx6ul() && !is_mx6ull()) {
+               /*
+                * When low freq boot is enabled, ROM will not set AHB
+                * freq, so we need to ensure AHB freq is 132MHz in such
+                * scenario.
+                *
+                * To i.MX6UL, when power up, default ARM core and
+                * AHB rate is 396M and 132M.
+                */
+               if (mxc_get_clock(MXC_ARM_CLK) == 396000000)
+                       set_ahb_rate(132000000);
+       }
+
+       if (is_mx6ul()) {
+               if (is_soc_rev(CHIP_REV_1_0) == 0) {
+                       /*
+                        * According to the design team's requirement on
+                        * i.MX6UL,the PMIC_STBY_REQ PAD should be configured
+                        * as open drain 100K (0x0000b8a0).
+                        * Only exists on TO1.0
+                        */
+                       writel(0x0000b8a0, IOMUXC_BASE_ADDR + 0x29c);
+               } else {
+                       /*
+                        * From TO1.1, SNVS adds internal pull up control
+                        * for POR_B, the register filed is GPBIT[1:0],
+                        * after system boot up, it can be set to 2b'01
+                        * to disable internal pull up.It can save about
+                        * 30uA power in SNVS mode.
+                        */
+                       writel((readl(MX6UL_SNVS_LP_BASE_ADDR + 0x10) &
+                              (~0x1400)) | 0x400,
+                              MX6UL_SNVS_LP_BASE_ADDR + 0x10);
+               }
+       }
+
+       if (is_mx6ull()) {
+               /*
+                * GPBIT[1:0] is suggested to set to 2'b11:
+                * 2'b00 : always PUP100K
+                * 2'b01 : PUP100K when PMIC_ON_REQ or SOC_NOT_FAIL
+                * 2'b10 : always disable PUP100K
+                * 2'b11 : PDN100K when SOC_FAIL, PUP100K when SOC_NOT_FAIL
+                * register offset is different from i.MX6UL, since
+                * i.MX6UL is fixed by ECO.
+                */
+               writel(readl(MX6UL_SNVS_LP_BASE_ADDR) |
+                       0x3, MX6UL_SNVS_LP_BASE_ADDR);
+       }
+
+       /* Set perclk to source from OSC 24MHz */
+#if defined(CONFIG_MX6SL)
+       set_preclk_from_osc();
+#endif
+
+       imx_set_wdog_powerdown(false); /* Disable PDE bit of WMCR register */
+
+       init_src();
+
+       return 0;
+}
+
+#ifdef CONFIG_ENV_IS_IN_MMC
+__weak int board_mmc_get_env_dev(int devno)
+{
+       return CONFIG_SYS_MMC_ENV_DEV;
+}
+
+static int mmc_get_boot_dev(void)
+{
+       struct src *src_regs = (struct src *)SRC_BASE_ADDR;
+       u32 soc_sbmr = readl(&src_regs->sbmr1);
+       u32 bootsel;
+       int devno;
+
+       /*
+        * Refer to
+        * "i.MX 6Dual/6Quad Applications Processor Reference Manual"
+        * Chapter "8.5.3.1 Expansion Device eFUSE Configuration"
+        * i.MX6SL/SX/UL has same layout.
+        */
+       bootsel = (soc_sbmr & 0x000000FF) >> 6;
+
+       /* No boot from sd/mmc */
+       if (bootsel != 1)
+               return -1;
+
+       /* BOOT_CFG2[3] and BOOT_CFG2[4] */
+       devno = (soc_sbmr & 0x00001800) >> 11;
+
+       return devno;
+}
+
+int mmc_get_env_dev(void)
+{
+       int devno = mmc_get_boot_dev();
+
+       /* If not boot from sd/mmc, use default value */
+       if (devno < 0)
+               return CONFIG_SYS_MMC_ENV_DEV;
+
+       return board_mmc_get_env_dev(devno);
+}
+
+#ifdef CONFIG_SYS_MMC_ENV_PART
+__weak int board_mmc_get_env_part(int devno)
+{
+       return CONFIG_SYS_MMC_ENV_PART;
+}
+
+uint mmc_get_env_part(struct mmc *mmc)
+{
+       int devno = mmc_get_boot_dev();
+
+       /* If not boot from sd/mmc, use default value */
+       if (devno < 0)
+               return CONFIG_SYS_MMC_ENV_PART;
+
+       return board_mmc_get_env_part(devno);
+}
+#endif
+#endif
+
+int board_postclk_init(void)
+{
+       set_ldo_voltage(LDO_SOC, 1175); /* Set VDDSOC to 1.175V */
+
+       return 0;
+}
+
+#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[4];
+       struct fuse_bank4_regs *fuse =
+                       (struct fuse_bank4_regs *)bank->fuse_regs;
+
+       if ((is_mx6sx() || is_mx6ul() || is_mx6ull()) && dev_id == 1) {
+               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 ;
+               
+       } else {
+               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 ;
+       }
+
+}
+#endif
+
+/*
+ * 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 use GPR9[25:0]
+ * instead of SBMR1 to determine the boot device.
+ */
+const struct boot_mode soc_boot_modes[] = {
+       {"normal",      MAKE_CFGVAL(0x00, 0x00, 0x00, 0x00)},
+       /* reserved value should start rom usb */
+#if defined(CONFIG_MX6UL) || defined(CONFIG_MX6ULL)
+       {"usb",         MAKE_CFGVAL(0x20, 0x00, 0x00, 0x00)},
+#else
+       {"usb",         MAKE_CFGVAL(0x10, 0x00, 0x00, 0x00)},
+#endif
+       {"sata",        MAKE_CFGVAL(0x20, 0x00, 0x00, 0x00)},
+       {"ecspi1:0",    MAKE_CFGVAL(0x30, 0x00, 0x00, 0x08)},
+       {"ecspi1:1",    MAKE_CFGVAL(0x30, 0x00, 0x00, 0x18)},
+       {"ecspi1:2",    MAKE_CFGVAL(0x30, 0x00, 0x00, 0x28)},
+       {"ecspi1:3",    MAKE_CFGVAL(0x30, 0x00, 0x00, 0x38)},
+       /* 4 bit bus width */
+       {"esdhc1",      MAKE_CFGVAL(0x40, 0x20, 0x00, 0x00)},
+       {"esdhc2",      MAKE_CFGVAL(0x40, 0x28, 0x00, 0x00)},
+       {"esdhc3",      MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)},
+       {"esdhc4",      MAKE_CFGVAL(0x40, 0x38, 0x00, 0x00)},
+       {NULL,          0},
+};
+
+void reset_misc(void)
+{
+#ifdef CONFIG_VIDEO_MXS
+       lcdif_power_down();
+#endif
+}
+
+void s_init(void)
+{
+       struct anatop_regs *anatop = (struct anatop_regs *)ANATOP_BASE_ADDR;
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       u32 mask480;
+       u32 mask528;
+       u32 reg, periph1, periph2;
+
+       if (is_mx6sx() || is_mx6ul() || is_mx6ull())
+               return;
+
+       /* Due to hardware limitation, on MX6Q we need to gate/ungate all PFDs
+        * to make sure PFD is working right, otherwise, PFDs may
+        * not output clock after reset, MX6DL and MX6SL have added 396M pfd
+        * workaround in ROM code, as bus clock need it
+        */
+
+       mask480 = ANATOP_PFD_CLKGATE_MASK(0) |
+               ANATOP_PFD_CLKGATE_MASK(1) |
+               ANATOP_PFD_CLKGATE_MASK(2) |
+               ANATOP_PFD_CLKGATE_MASK(3);
+       mask528 = ANATOP_PFD_CLKGATE_MASK(1) |
+               ANATOP_PFD_CLKGATE_MASK(3);
+
+       reg = readl(&ccm->cbcmr);
+       periph2 = ((reg & MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_MASK)
+               >> MXC_CCM_CBCMR_PRE_PERIPH2_CLK_SEL_OFFSET);
+       periph1 = ((reg & MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_MASK)
+               >> MXC_CCM_CBCMR_PRE_PERIPH_CLK_SEL_OFFSET);
+
+       /* Checking if PLL2 PFD0 or PLL2 PFD2 is using for periph clock */
+       if ((periph2 != 0x2) && (periph1 != 0x2))
+               mask528 |= ANATOP_PFD_CLKGATE_MASK(0);
+
+       if ((periph2 != 0x1) && (periph1 != 0x1) &&
+               (periph2 != 0x3) && (periph1 != 0x3))
+               mask528 |= ANATOP_PFD_CLKGATE_MASK(2);
+
+       writel(mask480, &anatop->pfd_480_set);
+       writel(mask528, &anatop->pfd_528_set);
+       writel(mask480, &anatop->pfd_480_clr);
+       writel(mask528, &anatop->pfd_528_clr);
+}
+
+#ifdef CONFIG_IMX_HDMI
+void imx_enable_hdmi_phy(void)
+{
+       struct hdmi_regs *hdmi = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
+       u8 reg;
+       reg = readb(&hdmi->phy_conf0);
+       reg |= HDMI_PHY_CONF0_PDZ_MASK;
+       writeb(reg, &hdmi->phy_conf0);
+       udelay(3000);
+       reg |= HDMI_PHY_CONF0_ENTMDS_MASK;
+       writeb(reg, &hdmi->phy_conf0);
+       udelay(3000);
+       reg |= HDMI_PHY_CONF0_GEN2_TXPWRON_MASK;
+       writeb(reg, &hdmi->phy_conf0);
+       writeb(HDMI_MC_PHYRSTZ_ASSERT, &hdmi->mc_phyrstz);
+}
+
+void imx_setup_hdmi(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
+       int reg, count;
+       u8 val;
+
+       /* Turn on HDMI PHY clock */
+       reg = readl(&mxc_ccm->CCGR2);
+       reg |=  MXC_CCM_CCGR2_HDMI_TX_IAHBCLK_MASK|
+                MXC_CCM_CCGR2_HDMI_TX_ISFRCLK_MASK;
+       writel(reg, &mxc_ccm->CCGR2);
+       writeb(HDMI_MC_PHYRSTZ_DEASSERT, &hdmi->mc_phyrstz);
+       reg = readl(&mxc_ccm->chsccdr);
+       reg &= ~(MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_MASK|
+                MXC_CCM_CHSCCDR_IPU1_DI0_PODF_MASK|
+                MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_MASK);
+       reg |= (CHSCCDR_PODF_DIVIDE_BY_3
+                << MXC_CCM_CHSCCDR_IPU1_DI0_PODF_OFFSET)
+                |(CHSCCDR_IPU_PRE_CLK_540M_PFD
+                << MXC_CCM_CHSCCDR_IPU1_DI0_PRE_CLK_SEL_OFFSET);
+       writel(reg, &mxc_ccm->chsccdr);
+
+       /* Clear the overflow condition */
+       if (readb(&hdmi->ih_fc_stat2) & HDMI_IH_FC_STAT2_OVERFLOW_MASK) {
+               /* TMDS software reset */
+               writeb((u8)~HDMI_MC_SWRSTZ_TMDSSWRST_REQ, &hdmi->mc_swrstz);
+               val = readb(&hdmi->fc_invidconf);
+               /* Need minimum 3 times to write to clear the register */
+               for (count = 0 ; count < 5 ; count++)
+                       writeb(val, &hdmi->fc_invidconf);
+       }
+}
+#endif
+
+#ifdef CONFIG_IMX_BOOTAUX
+int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
+{
+       struct src *src_reg;
+       u32 stack, pc;
+
+       if (!boot_private_data)
+               return -EINVAL;
+
+       stack = *(u32 *)boot_private_data;
+       pc = *(u32 *)(boot_private_data + 4);
+
+       /* Set the stack and pc to M4 bootROM */
+       writel(stack, M4_BOOTROM_BASE_ADDR);
+       writel(pc, M4_BOOTROM_BASE_ADDR + 4);
+
+       /* Enable M4 */
+       src_reg = (struct src *)SRC_BASE_ADDR;
+       clrsetbits_le32(&src_reg->scr, SRC_SCR_M4C_NON_SCLR_RST_MASK,
+                       SRC_SCR_M4_ENABLE_MASK);
+
+       return 0;
+}
+
+int arch_auxiliary_core_check_up(u32 core_id)
+{
+       struct src *src_reg = (struct src *)SRC_BASE_ADDR;
+       unsigned val;
+
+       val = readl(&src_reg->scr);
+
+       if (val & SRC_SCR_M4C_NON_SCLR_RST_MASK)
+               return 0;  /* assert in reset */
+
+       return 1;
+}
+#endif
diff --git a/arch/arm/mach-imx/mx7/Kconfig b/arch/arm/mach-imx/mx7/Kconfig
new file mode 100644 (file)
index 0000000..7053697
--- /dev/null
@@ -0,0 +1,60 @@
+if ARCH_MX7
+
+config MX7
+       bool
+       select ROM_UNIFIED_SECTIONS
+       select CPU_V7_HAS_VIRT
+       select CPU_V7_HAS_NONSEC
+       select ARCH_SUPPORT_PSCI
+       imply CMD_FUSE
+       default y
+
+config MX7D
+       select ROM_UNIFIED_SECTIONS
+       imply CMD_FUSE
+       bool
+       imply ENV_IS_IN_MMC
+
+choice
+       prompt "MX7 board select"
+       optional
+
+config TARGET_MX7DSABRESD
+       bool "mx7dsabresd"
+       select BOARD_LATE_INIT
+       select MX7D
+       select DM
+       select DM_THERMAL
+
+config TARGET_PICO_IMX7D
+       bool "pico-imx7d"
+       select BOARD_LATE_INIT
+       select MX7D
+       select DM
+       select DM_THERMAL
+
+config TARGET_WARP7
+       bool "warp7"
+       select BOARD_LATE_INIT
+       select MX7D
+       select DM
+       select DM_THERMAL
+
+config TARGET_COLIBRI_IMX7
+       bool "Support Colibri iMX7S/iMX7D modules"
+       select BOARD_LATE_INIT
+       select DM
+       select DM_SERIAL
+       select DM_THERMAL
+
+endchoice
+
+config SYS_SOC
+       default "mx7"
+
+source "board/freescale/mx7dsabresd/Kconfig"
+source "board/technexion/pico-imx7d/Kconfig"
+source "board/toradex/colibri_imx7/Kconfig"
+source "board/warp7/Kconfig"
+
+endif
diff --git a/arch/arm/mach-imx/mx7/Makefile b/arch/arm/mach-imx/mx7/Makefile
new file mode 100644 (file)
index 0000000..d21f87f
--- /dev/null
@@ -0,0 +1,12 @@
+#
+# (C) Copyright 2015 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+#
+
+obj-y  := soc.o clock.o clock_slice.o
+
+ifdef CONFIG_ARMV7_PSCI
+obj-y  += psci-mx7.o psci.o
+endif
diff --git a/arch/arm/mach-imx/mx7/clock.c b/arch/arm/mach-imx/mx7/clock.c
new file mode 100644 (file)
index 0000000..2cfde46
--- /dev/null
@@ -0,0 +1,1133 @@
+/*
+ * 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 <linux/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
+
+       if (IS_ENABLED(CONFIG_IMX_RDC)) {
+               clock_enable(CCGR_RDC, 1);
+               clock_enable(CCGR_SEMA1, 1);
+               clock_enable(CCGR_SEMA2, 1);
+       }
+}
+
+#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/mach-imx/mx7/clock_slice.c b/arch/arm/mach-imx/mx7/clock_slice.c
new file mode 100644 (file)
index 0000000..68a7005
--- /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 <linux/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_270M_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/mach-imx/mx7/psci-mx7.c b/arch/arm/mach-imx/mx7/psci-mx7.c
new file mode 100644 (file)
index 0000000..502552d
--- /dev/null
@@ -0,0 +1,69 @@
+#include <asm/io.h>
+#include <asm/psci.h>
+#include <asm/secure.h>
+#include <asm/arch/imx-regs.h>
+#include <common.h>
+
+
+#define GPC_CPU_PGC_SW_PDN_REQ 0xfc
+#define GPC_CPU_PGC_SW_PUP_REQ 0xf0
+#define GPC_PGC_C1             0x840
+
+#define BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7     0x2
+
+/* below is for i.MX7D */
+#define SRC_GPR1_MX7D          0x074
+#define SRC_A7RCR0             0x004
+#define SRC_A7RCR1             0x008
+
+#define BP_SRC_A7RCR0_A7_CORE_RESET0   0
+#define BP_SRC_A7RCR1_A7_CORE1_ENABLE  1
+
+static inline void imx_gpcv2_set_m_core_pgc(bool enable, u32 offset)
+{
+       writel(enable, GPC_IPS_BASE_ADDR + offset);
+}
+
+__secure void imx_gpcv2_set_core1_power(bool pdn)
+{
+       u32 reg = pdn ? GPC_CPU_PGC_SW_PUP_REQ : GPC_CPU_PGC_SW_PDN_REQ;
+       u32 val;
+
+       imx_gpcv2_set_m_core_pgc(true, GPC_PGC_C1);
+
+       val = readl(GPC_IPS_BASE_ADDR + reg);
+       val |= BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7;
+       writel(val, GPC_IPS_BASE_ADDR + reg);
+
+       while ((readl(GPC_IPS_BASE_ADDR + reg) &
+              BM_CPU_PGC_SW_PDN_PUP_REQ_CORE1_A7) != 0)
+               ;
+
+       imx_gpcv2_set_m_core_pgc(false, GPC_PGC_C1);
+}
+
+__secure void imx_enable_cpu_ca7(int cpu, bool enable)
+{
+       u32 mask, val;
+
+       mask = 1 << (BP_SRC_A7RCR1_A7_CORE1_ENABLE + cpu - 1);
+       val = readl(SRC_BASE_ADDR + SRC_A7RCR1);
+       val = enable ? val | mask : val & ~mask;
+       writel(val, SRC_BASE_ADDR + SRC_A7RCR1);
+}
+
+__secure int imx_cpu_on(int fn, int cpu, int pc)
+{
+       writel(pc, SRC_BASE_ADDR + cpu * 8 + SRC_GPR1_MX7D);
+       imx_gpcv2_set_core1_power(true);
+       imx_enable_cpu_ca7(cpu, true);
+       return 0;
+}
+
+__secure int imx_cpu_off(int cpu)
+{
+       imx_enable_cpu_ca7(cpu, false);
+       imx_gpcv2_set_core1_power(false);
+       writel(0, SRC_BASE_ADDR + cpu * 8 + SRC_GPR1_MX7D + 4);
+       return 0;
+}
diff --git a/arch/arm/mach-imx/mx7/psci.S b/arch/arm/mach-imx/mx7/psci.S
new file mode 100644 (file)
index 0000000..96e88d6
--- /dev/null
@@ -0,0 +1,39 @@
+#include <config.h>
+#include <linux/linkage.h>
+
+#include <asm/armv7.h>
+#include <asm/arch-armv7/generictimer.h>
+#include <asm/psci.h>
+
+       .pushsection ._secure.text, "ax"
+
+       .arch_extension sec
+
+.globl psci_cpu_on
+psci_cpu_on:
+       push    {r4, r5, lr}
+
+       mov     r4, r0
+       mov     r5, r1
+       mov     r0, r1
+       mov     r1, r2
+       bl      psci_save_target_pc
+
+       mov     r0, r4
+       mov     r1, r5
+       ldr     r2, =psci_cpu_entry
+       bl      imx_cpu_on
+
+       pop     {r4, r5, pc}
+
+.globl psci_cpu_off
+psci_cpu_off:
+
+       bl      psci_cpu_off_common
+       bl      psci_get_cpu_id
+       bl      imx_cpu_off
+
+1:     wfi
+       b 1b
+
+       .popsection
diff --git a/arch/arm/mach-imx/mx7/soc.c b/arch/arm/mach-imx/mx7/soc.c
new file mode 100644 (file)
index 0000000..4cf977e
--- /dev/null
@@ -0,0 +1,468 @@
+/*
+ * 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/mach-imx/boot_mode.h>
+#include <asm/mach-imx/dma.h>
+#include <asm/mach-imx/hab.h>
+#include <asm/mach-imx/rdc-sema.h>
+#include <asm/arch/imx-rdc.h>
+#include <asm/arch/crm_regs.h>
+#include <dm.h>
+#include <imx_thermal.h>
+
+#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
+
+#ifdef CONFIG_IMX_RDC
+/*
+ * In current design, if any peripheral was assigned to both A7 and M4,
+ * it will receive ipg_stop or ipg_wait when any of the 2 platforms enter
+ * low power mode. So M4 sleep will cause some peripherals fail to work
+ * at A7 core side. At default, all resources are in domain 0 - 3.
+ *
+ * There are 26 peripherals impacted by this IC issue:
+ * SIM2(sim2/emvsim2)
+ * SIM1(sim1/emvsim1)
+ * UART1/UART2/UART3/UART4/UART5/UART6/UART7
+ * SAI1/SAI2/SAI3
+ * WDOG1/WDOG2/WDOG3/WDOG4
+ * GPT1/GPT2/GPT3/GPT4
+ * PWM1/PWM2/PWM3/PWM4
+ * ENET1/ENET2
+ * Software Workaround:
+ * Here we setup some resources to domain 0 where M4 codes will move
+ * the M4 out of this domain. Then M4 is not able to access them any longer.
+ * This is a workaround for ic issue. So the peripherals are not shared
+ * by them. This way requires the uboot implemented the RDC driver and
+ * set the 26 IPs above to domain 0 only. M4 code will assign resource
+ * to its own domain, if it want to use the resource.
+ */
+static rdc_peri_cfg_t const resources[] = {
+       (RDC_PER_SIM1 | RDC_DOMAIN(0)),
+       (RDC_PER_SIM2 | RDC_DOMAIN(0)),
+       (RDC_PER_UART1 | RDC_DOMAIN(0)),
+       (RDC_PER_UART2 | RDC_DOMAIN(0)),
+       (RDC_PER_UART3 | RDC_DOMAIN(0)),
+       (RDC_PER_UART4 | RDC_DOMAIN(0)),
+       (RDC_PER_UART5 | RDC_DOMAIN(0)),
+       (RDC_PER_UART6 | RDC_DOMAIN(0)),
+       (RDC_PER_UART7 | RDC_DOMAIN(0)),
+       (RDC_PER_SAI1 | RDC_DOMAIN(0)),
+       (RDC_PER_SAI2 | RDC_DOMAIN(0)),
+       (RDC_PER_SAI3 | RDC_DOMAIN(0)),
+       (RDC_PER_WDOG1 | RDC_DOMAIN(0)),
+       (RDC_PER_WDOG2 | RDC_DOMAIN(0)),
+       (RDC_PER_WDOG3 | RDC_DOMAIN(0)),
+       (RDC_PER_WDOG4 | RDC_DOMAIN(0)),
+       (RDC_PER_GPT1 | RDC_DOMAIN(0)),
+       (RDC_PER_GPT2 | RDC_DOMAIN(0)),
+       (RDC_PER_GPT3 | RDC_DOMAIN(0)),
+       (RDC_PER_GPT4 | RDC_DOMAIN(0)),
+       (RDC_PER_PWM1 | RDC_DOMAIN(0)),
+       (RDC_PER_PWM2 | RDC_DOMAIN(0)),
+       (RDC_PER_PWM3 | RDC_DOMAIN(0)),
+       (RDC_PER_PWM4 | RDC_DOMAIN(0)),
+       (RDC_PER_ENET1 | RDC_DOMAIN(0)),
+       (RDC_PER_ENET2 | RDC_DOMAIN(0)),
+};
+
+static void isolate_resource(void)
+{
+       imx_rdc_setup_peripherals(resources, ARRAY_SIZE(resources));
+}
+#endif
+
+#if defined(CONFIG_SECURE_BOOT)
+struct imx_sec_config_fuse_t const imx_sec_config_fuse = {
+       .bank = 1,
+       .word = 3,
+};
+#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_500MHZ     1
+#define OCOTP_TESTER3_SPEED_1GHZ       2
+#define OCOTP_TESTER3_SPEED_1P2GHZ     3
+
+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 800000000;
+       case OCOTP_TESTER3_SPEED_500MHZ:
+               return 500000000;
+       case OCOTP_TESTER3_SPEED_1GHZ:
+               return 1000000000;
+       case OCOTP_TESTER3_SPEED_1P2GHZ:
+               return 1200000000;
+       }
+       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;
+}
+
+static bool is_mx7d(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;
+       int val;
+
+       val = readl(&fuse->tester4);
+       if (val & 1)
+               return false;
+       else
+               return true;
+}
+
+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;
+
+       if (!is_mx7d())
+               type = MXC_CPU_MX7S;
+
+       reg &= 0xff;
+       return (type << 12) | reg;
+}
+
+#ifdef CONFIG_REVISION_TAG
+u32 __weak get_board_rev(void)
+{
+       return get_cpu_rev();
+}
+#endif
+
+/* enable all periherial can be accessed in nosec mode */
+static void init_csu(void)
+{
+       int i = 0;
+       for (i = 0; i < CSU_NUM_REGS; i++)
+               writel(CSU_INIT_SEC_LEVEL0, CSU_IPS_BASE_ADDR + i * 4);
+}
+
+static void imx_enet_mdio_fixup(void)
+{
+       struct iomuxc_gpr_base_regs *gpr_regs =
+               (struct iomuxc_gpr_base_regs *)IOMUXC_GPR_BASE_ADDR;
+
+       /*
+        * The management data input/output (MDIO) requires open-drain,
+        * i.MX7D TO1.0 ENET MDIO pin has no open drain, but TO1.1 supports
+        * this feature. So to TO1.1, need to enable open drain by setting
+        * bits GPR0[8:7].
+        */
+
+       if (soc_rev() >= CHIP_REV_1_1) {
+               setbits_le32(&gpr_regs->gpr[0],
+                            IOMUXC_GPR_GPR0_ENET_MDIO_OPEN_DRAIN_MASK);
+       }
+}
+
+int arch_cpu_init(void)
+{
+       init_aips();
+
+       init_csu();
+       /* Disable PDE bit of WMCR register */
+       imx_set_wdog_powerdown(false);
+
+       imx_enet_mdio_fixup();
+
+#ifdef CONFIG_APBH_DMA
+       /* Start APBH DMA */
+       mxs_dma_init();
+#endif
+
+       if (IS_ENABLED(CONFIG_IMX_RDC))
+               isolate_resource();
+
+       return 0;
+}
+
+#ifdef CONFIG_ARCH_MISC_INIT
+int arch_misc_init(void)
+{
+#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+       if (is_mx7d())
+               setenv("soc", "imx7d");
+       else
+               setenv("soc", "imx7s");
+#endif
+
+       return 0;
+}
+#endif
+
+#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
+
+#ifdef CONFIG_IMX_BOOTAUX
+int arch_auxiliary_core_up(u32 core_id, u32 boot_private_data)
+{
+       u32 stack, pc;
+       struct src *src_reg = (struct src *)SRC_BASE_ADDR;
+
+       if (!boot_private_data)
+               return 1;
+
+       stack = *(u32 *)boot_private_data;
+       pc = *(u32 *)(boot_private_data + 4);
+
+       /* Set the stack and pc to M4 bootROM */
+       writel(stack, M4_BOOTROM_BASE_ADDR);
+       writel(pc, M4_BOOTROM_BASE_ADDR + 4);
+
+       /* Enable M4 */
+       clrsetbits_le32(&src_reg->m4rcr, SRC_M4RCR_M4C_NON_SCLR_RST_MASK,
+                       SRC_M4RCR_ENABLE_M4_MASK);
+
+       return 0;
+}
+
+int arch_auxiliary_core_check_up(u32 core_id)
+{
+       uint32_t val;
+       struct src *src_reg = (struct src *)SRC_BASE_ADDR;
+
+       val = readl(&src_reg->m4rcr);
+       if (val & 0x00000001)
+               return 0; /* assert in reset */
+
+       return 1;
+}
+#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;
+}
+
+#ifdef CONFIG_ENV_IS_IN_MMC
+__weak int board_mmc_get_env_dev(int devno)
+{
+       return CONFIG_SYS_MMC_ENV_DEV;
+}
+
+int mmc_get_env_dev(void)
+{
+       struct bootrom_sw_info **p =
+               (struct bootrom_sw_info **)ROM_SW_INFO_ADDR;
+       int devno = (*p)->boot_dev_instance;
+       u8 boot_type = (*p)->boot_dev_type;
+
+       /* 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;
+
+       return board_mmc_get_env_dev(devno);
+}
+#endif
+
+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;
+}
+
+void reset_misc(void)
+{
+#ifdef CONFIG_VIDEO_MXS
+       lcdif_power_down();
+#endif
+}
+
diff --git a/arch/arm/mach-imx/mx7ulp/Kconfig b/arch/arm/mach-imx/mx7ulp/Kconfig
new file mode 100644 (file)
index 0000000..1bdc85a
--- /dev/null
@@ -0,0 +1,17 @@
+if ARCH_MX7ULP
+
+config SYS_SOC
+       default "mx7ulp"
+
+choice
+       prompt "MX7ULP board select"
+       optional
+
+config TARGET_MX7ULP_EVK
+        bool "Support mx7ulp EVK board"
+
+endchoice
+
+source "board/freescale/mx7ulp_evk/Kconfig"
+
+endif
diff --git a/arch/arm/mach-imx/mx7ulp/Makefile b/arch/arm/mach-imx/mx7ulp/Makefile
new file mode 100644 (file)
index 0000000..0248ea8
--- /dev/null
@@ -0,0 +1,8 @@
+#
+# (C) Copyright 2016 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+#
+
+obj-y  := soc.o clock.o iomux.o pcc.o scg.o
diff --git a/arch/arm/mach-imx/mx7ulp/clock.c b/arch/arm/mach-imx/mx7ulp/clock.c
new file mode 100644 (file)
index 0000000..77b282a
--- /dev/null
@@ -0,0 +1,365 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <div64.h>
+#include <asm/io.h>
+#include <errno.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+int get_clocks(void)
+{
+#ifdef CONFIG_FSL_ESDHC
+#if CONFIG_SYS_FSL_ESDHC_ADDR == USDHC0_RBASE
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+#elif CONFIG_SYS_FSL_ESDHC_ADDR == USDHC1_RBASE
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+#endif
+#endif
+       return 0;
+}
+
+static u32 get_fast_plat_clk(void)
+{
+       return scg_clk_get_rate(SCG_NIC0_CLK);
+}
+
+static u32 get_slow_plat_clk(void)
+{
+       return scg_clk_get_rate(SCG_NIC1_CLK);
+}
+
+static u32 get_ipg_clk(void)
+{
+       return scg_clk_get_rate(SCG_NIC1_BUS_CLK);
+}
+
+u32 get_lpuart_clk(void)
+{
+       int index = 0;
+
+       const u32 lpuart_array[] = {
+               LPUART0_RBASE,
+               LPUART1_RBASE,
+               LPUART2_RBASE,
+               LPUART3_RBASE,
+               LPUART4_RBASE,
+               LPUART5_RBASE,
+               LPUART6_RBASE,
+               LPUART7_RBASE,
+       };
+
+       const enum pcc_clk lpuart_pcc_clks[] = {
+               PER_CLK_LPUART4,
+               PER_CLK_LPUART5,
+               PER_CLK_LPUART6,
+               PER_CLK_LPUART7,
+       };
+
+       for (index = 0; index < 8; index++) {
+               if (lpuart_array[index] == LPUART_BASE)
+                       break;
+       }
+
+       if (index < 4 || index > 7)
+               return 0;
+
+       return pcc_clock_get_rate(lpuart_pcc_clks[index - 4]);
+}
+
+#ifdef CONFIG_SYS_LPI2C_IMX
+int enable_i2c_clk(unsigned char enable, unsigned i2c_num)
+{
+       /* Set parent to FIRC DIV2 clock */
+       const enum pcc_clk lpi2c_pcc_clks[] = {
+               PER_CLK_LPI2C4,
+               PER_CLK_LPI2C5,
+               PER_CLK_LPI2C6,
+               PER_CLK_LPI2C7,
+       };
+
+       if (i2c_num < 4 || i2c_num > 7)
+               return -EINVAL;
+
+       if (enable) {
+               pcc_clock_enable(lpi2c_pcc_clks[i2c_num - 4], false);
+               pcc_clock_sel(lpi2c_pcc_clks[i2c_num - 4], SCG_FIRC_DIV2_CLK);
+               pcc_clock_enable(lpi2c_pcc_clks[i2c_num - 4], true);
+       } else {
+               pcc_clock_enable(lpi2c_pcc_clks[i2c_num - 4], false);
+       }
+       return 0;
+}
+
+u32 imx_get_i2cclk(unsigned i2c_num)
+{
+       const enum pcc_clk lpi2c_pcc_clks[] = {
+               PER_CLK_LPI2C4,
+               PER_CLK_LPI2C5,
+               PER_CLK_LPI2C6,
+               PER_CLK_LPI2C7,
+       };
+
+       if (i2c_num < 4 || i2c_num > 7)
+               return 0;
+
+       return pcc_clock_get_rate(lpi2c_pcc_clks[i2c_num - 4]);
+}
+#endif
+
+unsigned int mxc_get_clock(enum mxc_clock clk)
+{
+       switch (clk) {
+       case MXC_ARM_CLK:
+               return scg_clk_get_rate(SCG_CORE_CLK);
+       case MXC_AXI_CLK:
+               return get_fast_plat_clk();
+       case MXC_AHB_CLK:
+               return get_slow_plat_clk();
+       case MXC_IPG_CLK:
+               return get_ipg_clk();
+       case MXC_I2C_CLK:
+               return pcc_clock_get_rate(PER_CLK_LPI2C4);
+       case MXC_UART_CLK:
+               return get_lpuart_clk();
+       case MXC_ESDHC_CLK:
+               return pcc_clock_get_rate(PER_CLK_USDHC0);
+       case MXC_ESDHC2_CLK:
+               return pcc_clock_get_rate(PER_CLK_USDHC1);
+       case MXC_DDR_CLK:
+               return scg_clk_get_rate(SCG_DDR_CLK);
+       default:
+               printf("Unsupported mxc_clock %d\n", clk);
+               break;
+       }
+
+       return 0;
+}
+
+void init_clk_usdhc(u32 index)
+{
+       switch (index) {
+       case 0:
+               /*Disable the clock before configure it */
+               pcc_clock_enable(PER_CLK_USDHC0, false);
+
+               /* 158MHz / 1 = 158MHz */
+               pcc_clock_sel(PER_CLK_USDHC0, SCG_NIC1_CLK);
+               pcc_clock_div_config(PER_CLK_USDHC0, false, 1);
+               pcc_clock_enable(PER_CLK_USDHC0, true);
+               break;
+       case 1:
+               /*Disable the clock before configure it */
+               pcc_clock_enable(PER_CLK_USDHC1, false);
+
+               /* 158MHz / 1 = 158MHz */
+               pcc_clock_sel(PER_CLK_USDHC1, SCG_NIC1_CLK);
+               pcc_clock_div_config(PER_CLK_USDHC1, false, 1);
+               pcc_clock_enable(PER_CLK_USDHC1, true);
+               break;
+       default:
+               printf("Invalid index for USDHC %d\n", index);
+               break;
+       }
+}
+
+#ifdef CONFIG_MXC_OCOTP
+
+#define OCOTP_CTRL_PCC1_SLOT           (38)
+#define OCOTP_CTRL_HIGH4K_PCC1_SLOT    (39)
+
+void enable_ocotp_clk(unsigned char enable)
+{
+       u32 val;
+
+       /*
+        * Seems the OCOTP CLOCKs have been enabled at default,
+        * check its inuse flag
+        */
+
+       val = readl(PCC1_RBASE + 4 * OCOTP_CTRL_PCC1_SLOT);
+       if (!(val & PCC_INUSE_MASK))
+               writel(PCC_CGC_MASK, (PCC1_RBASE + 4 * OCOTP_CTRL_PCC1_SLOT));
+
+       val = readl(PCC1_RBASE + 4 * OCOTP_CTRL_HIGH4K_PCC1_SLOT);
+       if (!(val & PCC_INUSE_MASK))
+               writel(PCC_CGC_MASK,
+                      (PCC1_RBASE + 4 * OCOTP_CTRL_HIGH4K_PCC1_SLOT));
+}
+#endif
+
+void enable_usboh3_clk(unsigned char enable)
+{
+       if (enable) {
+               pcc_clock_enable(PER_CLK_USB0, false);
+               pcc_clock_sel(PER_CLK_USB0, SCG_NIC1_BUS_CLK);
+               pcc_clock_enable(PER_CLK_USB0, true);
+
+#ifdef CONFIG_USB_MAX_CONTROLLER_COUNT
+               if (CONFIG_USB_MAX_CONTROLLER_COUNT > 1) {
+                       pcc_clock_enable(PER_CLK_USB1, false);
+                       pcc_clock_sel(PER_CLK_USB1, SCG_NIC1_BUS_CLK);
+                       pcc_clock_enable(PER_CLK_USB1, true);
+               }
+#endif
+
+               pcc_clock_enable(PER_CLK_USB_PHY, true);
+               pcc_clock_enable(PER_CLK_USB_PL301, true);
+       } else {
+               pcc_clock_enable(PER_CLK_USB0, false);
+               pcc_clock_enable(PER_CLK_USB1, false);
+               pcc_clock_enable(PER_CLK_USB_PHY, false);
+               pcc_clock_enable(PER_CLK_USB_PL301, false);
+       }
+}
+
+static void lpuart_set_clk(uint32_t index, enum scg_clk clk)
+{
+       const enum pcc_clk lpuart_pcc_clks[] = {
+               PER_CLK_LPUART4,
+               PER_CLK_LPUART5,
+               PER_CLK_LPUART6,
+               PER_CLK_LPUART7,
+       };
+
+       if (index < 4 || index > 7)
+               return;
+
+#ifndef CONFIG_CLK_DEBUG
+       pcc_clock_enable(lpuart_pcc_clks[index - 4], false);
+#endif
+       pcc_clock_sel(lpuart_pcc_clks[index - 4], clk);
+       pcc_clock_enable(lpuart_pcc_clks[index - 4], true);
+}
+
+static void init_clk_lpuart(void)
+{
+       u32 index = 0, i;
+
+       const u32 lpuart_array[] = {
+               LPUART0_RBASE,
+               LPUART1_RBASE,
+               LPUART2_RBASE,
+               LPUART3_RBASE,
+               LPUART4_RBASE,
+               LPUART5_RBASE,
+               LPUART6_RBASE,
+               LPUART7_RBASE,
+       };
+
+       for (i = 0; i < 8; i++) {
+               if (lpuart_array[i] == LPUART_BASE) {
+                       index = i;
+                       break;
+               }
+       }
+
+       lpuart_set_clk(index, SCG_SOSC_DIV2_CLK);
+}
+
+static void init_clk_rgpio2p(void)
+{
+       /*Enable RGPIO2P1 clock */
+       pcc_clock_enable(PER_CLK_RGPIO2P1, true);
+
+       /*
+        * Hard code to enable RGPIO2P0 clock since it is not
+        * in clock frame for A7 domain
+        */
+       writel(PCC_CGC_MASK, (PCC0_RBASE + 0x3C));
+}
+
+/* Configure PLL/PFD freq */
+void clock_init(void)
+{
+       /*
+        * ROM has enabled clocks:
+        * A4 side: SIRC 16Mhz (DIV1-3 off),  FIRC 48Mhz (DIV1-2 on),
+        *          Non-LP-boot:  SOSC, SPLL PFD0 (scs selected)
+        * A7 side:  SPLL PFD0 (scs selected, 413Mhz),
+        *           APLL PFD0 (352Mhz), DDRCLK, all NIC clocks
+        *           A7 Plat0 (NIC0) = 176Mhz, Plat1 (NIC1) = 176Mhz,
+        *           IP BUS (NIC1_BUS) = 58.6Mhz
+        *
+        * In u-boot:
+        * 1. Enable PFD1-3 of APLL for A7 side. Enable FIRC and DIVs.
+        * 2. Enable USB PLL
+        * 3. Init the clocks of peripherals used in u-boot bu
+        *    without set rate interface.The clocks for these
+        *    peripherals are enabled in this intialization.
+        * 4.Other peripherals with set clock rate interface
+        *   does not be set in this function.
+        */
+
+       scg_a7_firc_init();
+
+       scg_a7_soscdiv_init();
+
+       /* APLL PFD1 = 270Mhz, PFD2=480Mhz, PFD3=800Mhz */
+       scg_enable_pll_pfd(SCG_APLL_PFD1_CLK, 35);
+       scg_enable_pll_pfd(SCG_APLL_PFD2_CLK, 20);
+       scg_enable_pll_pfd(SCG_APLL_PFD3_CLK, 12);
+
+       init_clk_lpuart();
+
+       init_clk_rgpio2p();
+
+       enable_usboh3_clk(1);
+}
+
+#ifdef CONFIG_SECURE_BOOT
+void hab_caam_clock_enable(unsigned char enable)
+{
+       if (enable)
+              pcc_clock_enable(PER_CLK_CAAM, true);
+       else
+              pcc_clock_enable(PER_CLK_CAAM, false);
+}
+#endif
+
+/*
+ * Dump some core clockes.
+ */
+int do_mx7_showclocks(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+{
+       u32 addr = 0;
+       u32 freq;
+       freq = decode_pll(PLL_A7_SPLL);
+       printf("PLL_A7_SPLL    %8d MHz\n", freq / 1000000);
+
+       freq = decode_pll(PLL_A7_APLL);
+       printf("PLL_A7_APLL    %8d MHz\n", freq / 1000000);
+
+       freq = decode_pll(PLL_USB);
+       printf("PLL_USB    %8d MHz\n", freq / 1000000);
+
+       printf("\n");
+
+       printf("CORE       %8d kHz\n", scg_clk_get_rate(SCG_CORE_CLK) / 1000);
+       printf("IPG        %8d kHz\n", mxc_get_clock(MXC_IPG_CLK) / 1000);
+       printf("UART       %8d kHz\n", mxc_get_clock(MXC_UART_CLK) / 1000);
+       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("I2C4       %8d kHz\n", mxc_get_clock(MXC_I2C_CLK) / 1000);
+
+       addr = (u32) clock_init;
+       printf("[%s] addr = 0x%08X\r\n", __func__, addr);
+       scg_a7_info();
+
+       return 0;
+}
+
+U_BOOT_CMD(
+       clocks, CONFIG_SYS_MAXARGS, 1, do_mx7_showclocks,
+       "display clocks",
+       ""
+);
diff --git a/arch/arm/mach-imx/mx7ulp/iomux.c b/arch/arm/mach-imx/mx7ulp/iomux.c
new file mode 100644 (file)
index 0000000..1eba24e
--- /dev/null
@@ -0,0 +1,70 @@
+/*
+ * Copyright (C) 2016 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/iomux.h>
+
+static void *base = (void *)IOMUXC_BASE_ADDR;
+
+/*
+ * iomuxc0 base address. In imx7ulp-pins.h,
+ * the offsets of pins in iomuxc0 are from 0xD000,
+ * so we set the base address to (0x4103D000 - 0xD000 = 0x41030000)
+ */
+static void *base_mports = (void *)(AIPS0_BASE + 0x30000);
+
+/*
+ * configures a single pad in the iomuxer
+ */
+void mx7ulp_iomux_setup_pad(iomux_cfg_t pad)
+{
+       u32 mux_ctrl_ofs = (pad & MUX_CTRL_OFS_MASK) >> MUX_CTRL_OFS_SHIFT;
+       u32 mux_mode = (pad & MUX_MODE_MASK) >> MUX_MODE_SHIFT;
+       u32 sel_input_ofs =
+               (pad & MUX_SEL_INPUT_OFS_MASK) >> MUX_SEL_INPUT_OFS_SHIFT;
+       u32 sel_input =
+               (pad & MUX_SEL_INPUT_MASK) >> MUX_SEL_INPUT_SHIFT;
+       u32 pad_ctrl_ofs = mux_ctrl_ofs;
+       u32 pad_ctrl = (pad & MUX_PAD_CTRL_MASK) >> MUX_PAD_CTRL_SHIFT;
+
+       debug("[PAD CFG] = 0x%16llX \r\n\tmux_ctl = 0x%X(0x%X) sel_input = 0x%X(0x%X) pad_ctrl = 0x%X(0x%X)\r\n",
+             pad, mux_ctrl_ofs, mux_mode, sel_input_ofs, sel_input,
+             pad_ctrl_ofs, pad_ctrl);
+
+       if (mux_mode & IOMUX_CONFIG_MPORTS) {
+               mux_mode &= ~IOMUX_CONFIG_MPORTS;
+               base = base_mports;
+       } else {
+               base = (void *)IOMUXC_BASE_ADDR;
+       }
+
+       __raw_writel(((mux_mode << IOMUXC_PCR_MUX_ALT_SHIFT) &
+                    IOMUXC_PCR_MUX_ALT_MASK), base + mux_ctrl_ofs);
+
+       if (sel_input_ofs)
+               __raw_writel((sel_input << IOMUXC_PSMI_IMUX_ALT_SHIFT),
+                       base + sel_input_ofs);
+
+       if (!(pad_ctrl & NO_PAD_CTRL))
+               __raw_writel(((mux_mode << IOMUXC_PCR_MUX_ALT_SHIFT) &
+                            IOMUXC_PCR_MUX_ALT_MASK) |
+                            (pad_ctrl & (~IOMUXC_PCR_MUX_ALT_MASK)),
+                            base + pad_ctrl_ofs);
+}
+
+/* configures a list of pads within declared with IOMUX_PADS macro */
+void mx7ulp_iomux_setup_multiple_pads(iomux_cfg_t const *pad_list,
+                                     unsigned count)
+{
+       iomux_cfg_t const *p = pad_list;
+       int i;
+
+       for (i = 0; i < count; i++) {
+               mx7ulp_iomux_setup_pad(*p);
+               p++;
+       }
+}
diff --git a/arch/arm/mach-imx/mx7ulp/pcc.c b/arch/arm/mach-imx/mx7ulp/pcc.c
new file mode 100644 (file)
index 0000000..edd84e5
--- /dev/null
@@ -0,0 +1,286 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <div64.h>
+#include <asm/io.h>
+#include <errno.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/pcc.h>
+#include <asm/arch/sys_proto.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define PCC_CLKSRC_TYPES 2
+#define PCC_CLKSRC_NUM 7
+
+static enum scg_clk pcc_clksrc[PCC_CLKSRC_TYPES][PCC_CLKSRC_NUM] = {
+       {       SCG_NIC1_BUS_CLK,
+               SCG_NIC1_CLK,
+               SCG_DDR_CLK,
+               SCG_APLL_PFD2_CLK,
+               SCG_APLL_PFD1_CLK,
+               SCG_APLL_PFD0_CLK,
+               USB_PLL_OUT,
+       },
+       {       SCG_SOSC_DIV2_CLK,  /* SOSC BUS clock */
+               MIPI_PLL_OUT,
+               SCG_FIRC_DIV2_CLK,  /* FIRC BUS clock */
+               SCG_ROSC_CLK,
+               SCG_NIC1_BUS_CLK,
+               SCG_NIC1_CLK,
+               SCG_APLL_PFD3_CLK,
+       },
+};
+
+static struct pcc_entry pcc_arrays[] = {
+       {PCC2_RBASE, DMA1_PCC2_SLOT,            CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, RGPIO1_PCC2_SLOT,          CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, FLEXBUS0_PCC2_SLOT,        CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, SEMA42_1_PCC2_SLOT,        CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, DMA1_CH_MUX0_PCC2_SLOT,    CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, SNVS_PCC2_SLOT,            CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, CAAM_PCC2_SLOT,            CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, LPTPM4_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, LPTPM5_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, LPIT1_PCC2_SLOT,           CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, LPSPI2_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, LPSPI3_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, LPI2C4_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, LPI2C5_PCC2_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, LPUART4_PCC2_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, LPUART5_PCC2_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, FLEXIO1_PCC2_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC2_RBASE, USBOTG0_PCC2_SLOT,         CLKSRC_PER_PLAT, PCC_HAS_DIV},
+       {PCC2_RBASE, USBOTG1_PCC2_SLOT,         CLKSRC_PER_PLAT, PCC_HAS_DIV},
+       {PCC2_RBASE, USBPHY_PCC2_SLOT,          CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, USB_PL301_PCC2_SLOT,       CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC2_RBASE, USDHC0_PCC2_SLOT,          CLKSRC_PER_PLAT, PCC_HAS_DIV},
+       {PCC2_RBASE, USDHC1_PCC2_SLOT,          CLKSRC_PER_PLAT, PCC_HAS_DIV},
+       {PCC2_RBASE, WDG1_PCC2_SLOT,            CLKSRC_PER_BUS, PCC_HAS_DIV},
+       {PCC2_RBASE, WDG2_PCC2_SLOT,            CLKSRC_PER_BUS, PCC_HAS_DIV},
+
+       {PCC3_RBASE, LPTPM6_PCC3_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC3_RBASE, LPTPM7_PCC3_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC3_RBASE, LPI2C6_PCC3_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC3_RBASE, LPI2C7_PCC3_SLOT,          CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC3_RBASE, LPUART6_PCC3_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC3_RBASE, LPUART7_PCC3_SLOT,         CLKSRC_PER_BUS, PCC_NO_DIV},
+       {PCC3_RBASE, VIU0_PCC3_SLOT,            CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC3_RBASE, DSI0_PCC3_SLOT,            CLKSRC_PER_BUS, PCC_HAS_DIV},
+       {PCC3_RBASE, LCDIF0_PCC3_SLOT,          CLKSRC_PER_PLAT, PCC_HAS_DIV},
+       {PCC3_RBASE, MMDC0_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC3_RBASE, PORTC_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC3_RBASE, PORTD_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC3_RBASE, PORTE_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC3_RBASE, PORTF_PCC3_SLOT,           CLKSRC_NO_PCS, PCC_NO_DIV},
+       {PCC3_RBASE, GPU3D_PCC3_SLOT,           CLKSRC_PER_PLAT, PCC_NO_DIV},
+       {PCC3_RBASE, GPU2D_PCC3_SLOT,           CLKSRC_PER_PLAT, PCC_NO_DIV},
+};
+
+int pcc_clock_enable(enum pcc_clk clk, bool enable)
+{
+       u32 reg, val;
+
+       if (clk >= ARRAY_SIZE(pcc_arrays))
+               return -EINVAL;
+
+       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
+
+       val = readl(reg);
+
+       clk_debug("pcc_clock_enable: clk %d, reg 0x%x, val 0x%x, enable %d\n",
+                 clk, reg, val, enable);
+
+       if (!(val & PCC_PR_MASK) || (val & PCC_INUSE_MASK))
+               return -EPERM;
+
+       if (enable)
+               val |= PCC_CGC_MASK;
+       else
+               val &= ~PCC_CGC_MASK;
+
+       writel(val, reg);
+
+       clk_debug("pcc_clock_enable: val 0x%x\n", val);
+
+       return 0;
+}
+
+/* The clock source select needs clock is disabled */
+int pcc_clock_sel(enum pcc_clk clk, enum scg_clk src)
+{
+       u32 reg, val, i, clksrc_type;
+
+       if (clk >= ARRAY_SIZE(pcc_arrays))
+               return -EINVAL;
+
+       clksrc_type = pcc_arrays[clk].clksrc;
+       if (clksrc_type >= CLKSRC_NO_PCS) {
+               printf("No PCS field for the PCC %d, clksrc type %d\n",
+                      clk, clksrc_type);
+               return -EPERM;
+       }
+
+       for (i = 0; i < PCC_CLKSRC_NUM; i++) {
+               if (pcc_clksrc[clksrc_type][i] == src) {
+                       /* Find the clock src, then set it to PCS */
+                       break;
+               }
+       }
+
+       if (i == PCC_CLKSRC_NUM) {
+               printf("Not find the parent scg_clk in PCS of PCC %d, invalid scg_clk %d\n", clk, src);
+               return -EINVAL;
+       }
+
+       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
+
+       val = readl(reg);
+
+       clk_debug("pcc_clock_sel: clk %d, reg 0x%x, val 0x%x, clksrc_type %d\n",
+                 clk, reg, val, clksrc_type);
+
+       if (!(val & PCC_PR_MASK) || (val & PCC_INUSE_MASK) ||
+           (val & PCC_CGC_MASK)) {
+               printf("Not permit to select clock source val = 0x%x\n", val);
+               return -EPERM;
+       }
+
+       val &= ~PCC_PCS_MASK;
+       val |= ((i + 1) << PCC_PCS_OFFSET);
+
+       writel(val, reg);
+
+       clk_debug("pcc_clock_sel: val 0x%x\n", val);
+
+       return 0;
+}
+
+int pcc_clock_div_config(enum pcc_clk clk, bool frac, u8 div)
+{
+       u32 reg, val;
+
+       if (clk >= ARRAY_SIZE(pcc_arrays) || div > 8 ||
+           (div == 1 && frac != 0))
+               return -EINVAL;
+
+       if (pcc_arrays[clk].div >= PCC_NO_DIV) {
+               printf("No DIV/FRAC field for the PCC %d\n", clk);
+               return -EPERM;
+       }
+
+       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
+
+       val = readl(reg);
+
+       if (!(val & PCC_PR_MASK) || (val & PCC_INUSE_MASK) ||
+           (val & PCC_CGC_MASK)) {
+               printf("Not permit to set div/frac val = 0x%x\n", val);
+               return -EPERM;
+       }
+
+       if (frac)
+               val |= PCC_FRAC_MASK;
+       else
+               val &= ~PCC_FRAC_MASK;
+
+       val &= ~PCC_PCD_MASK;
+       val |= (div - 1) & PCC_PCD_MASK;
+
+       writel(val, reg);
+
+       return 0;
+}
+
+bool pcc_clock_is_enable(enum pcc_clk clk)
+{
+       u32 reg, val;
+
+       if (clk >= ARRAY_SIZE(pcc_arrays))
+               return -EINVAL;
+
+       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
+       val = readl(reg);
+
+       if ((val & PCC_INUSE_MASK) || (val & PCC_CGC_MASK))
+               return true;
+
+       return false;
+}
+
+int pcc_clock_get_clksrc(enum pcc_clk clk, enum scg_clk *src)
+{
+       u32 reg, val, clksrc_type;
+
+       if (clk >= ARRAY_SIZE(pcc_arrays))
+               return -EINVAL;
+
+       clksrc_type = pcc_arrays[clk].clksrc;
+       if (clksrc_type >= CLKSRC_NO_PCS) {
+               printf("No PCS field for the PCC %d, clksrc type %d\n",
+                      clk, clksrc_type);
+               return -EPERM;
+       }
+
+       reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
+
+       val = readl(reg);
+
+       clk_debug("pcc_clock_get_clksrc: clk %d, reg 0x%x, val 0x%x, type %d\n",
+                 clk, reg, val, clksrc_type);
+
+       if (!(val & PCC_PR_MASK)) {
+               printf("This pcc slot is not present = 0x%x\n", val);
+               return -EPERM;
+       }
+
+       val &= PCC_PCS_MASK;
+       val = (val >> PCC_PCS_OFFSET);
+
+       if (!val) {
+               printf("Clock source is off\n");
+               return -EIO;
+       }
+
+       *src = pcc_clksrc[clksrc_type][val - 1];
+
+       clk_debug("pcc_clock_get_clksrc: parent scg clk %d\n", *src);
+
+       return 0;
+}
+
+u32 pcc_clock_get_rate(enum pcc_clk clk)
+{
+       u32 reg, val, rate, frac, div;
+       enum scg_clk parent;
+       int ret;
+
+       ret = pcc_clock_get_clksrc(clk, &parent);
+       if (ret)
+               return 0;
+
+       rate = scg_clk_get_rate(parent);
+
+       clk_debug("pcc_clock_get_rate: parent rate %u\n", rate);
+
+       if (pcc_arrays[clk].div == PCC_HAS_DIV) {
+               reg = pcc_arrays[clk].pcc_base + pcc_arrays[clk].pcc_slot * 4;
+               val = readl(reg);
+
+               frac = (val & PCC_FRAC_MASK) >> PCC_FRAC_OFFSET;
+               div = (val & PCC_PCD_MASK) >> PCC_PCD_OFFSET;
+
+               /*
+                * Theoretically don't have overflow in the calc,
+                * the rate won't exceed 2G
+                */
+               rate = rate * (frac + 1) / (div + 1);
+       }
+
+       clk_debug("pcc_clock_get_rate: rate %u\n", rate);
+       return rate;
+}
diff --git a/arch/arm/mach-imx/mx7ulp/scg.c b/arch/arm/mach-imx/mx7ulp/scg.c
new file mode 100644 (file)
index 0000000..c117af0
--- /dev/null
@@ -0,0 +1,1090 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <div64.h>
+#include <asm/io.h>
+#include <errno.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/pcc.h>
+#include <asm/arch/sys_proto.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+scg_p scg1_regs = (scg_p)SCG1_RBASE;
+
+static u32 scg_src_get_rate(enum scg_clk clksrc)
+{
+       u32 reg;
+
+       switch (clksrc) {
+       case SCG_SOSC_CLK:
+               reg = readl(&scg1_regs->sosccsr);
+               if (!(reg & SCG_SOSC_CSR_SOSCVLD_MASK))
+                       return 0;
+
+               return 24000000;
+       case SCG_FIRC_CLK:
+               reg = readl(&scg1_regs->firccsr);
+               if (!(reg & SCG_FIRC_CSR_FIRCVLD_MASK))
+                       return 0;
+
+               return 48000000;
+       case SCG_SIRC_CLK:
+               reg = readl(&scg1_regs->sirccsr);
+               if (!(reg & SCG_SIRC_CSR_SIRCVLD_MASK))
+                       return 0;
+
+               return 16000000;
+       case SCG_ROSC_CLK:
+               reg = readl(&scg1_regs->rtccsr);
+               if (!(reg & SCG_ROSC_CSR_ROSCVLD_MASK))
+                       return 0;
+
+               return 32768;
+       default:
+               break;
+       }
+
+       return 0;
+}
+
+static u32 scg_sircdiv_get_rate(enum scg_clk clk)
+{
+       u32 reg, val, rate;
+       u32 shift, mask;
+
+       switch (clk) {
+       case SCG_SIRC_DIV1_CLK:
+               mask = SCG_SIRCDIV_DIV1_MASK;
+               shift = SCG_SIRCDIV_DIV1_SHIFT;
+               break;
+       case SCG_SIRC_DIV2_CLK:
+               mask = SCG_SIRCDIV_DIV2_MASK;
+               shift = SCG_SIRCDIV_DIV2_SHIFT;
+               break;
+       case SCG_SIRC_DIV3_CLK:
+               mask = SCG_SIRCDIV_DIV3_MASK;
+               shift = SCG_SIRCDIV_DIV3_SHIFT;
+               break;
+       default:
+               return 0;
+       }
+
+       reg = readl(&scg1_regs->sirccsr);
+       if (!(reg & SCG_SIRC_CSR_SIRCVLD_MASK))
+               return 0;
+
+       reg = readl(&scg1_regs->sircdiv);
+       val = (reg & mask) >> shift;
+
+       if (!val) /*clock disabled*/
+               return 0;
+
+       rate = scg_src_get_rate(SCG_SIRC_CLK);
+       rate = rate / (1 << (val - 1));
+
+       return rate;
+}
+
+static u32 scg_fircdiv_get_rate(enum scg_clk clk)
+{
+       u32 reg, val, rate;
+       u32 shift, mask;
+
+       switch (clk) {
+       case SCG_FIRC_DIV1_CLK:
+               mask = SCG_FIRCDIV_DIV1_MASK;
+               shift = SCG_FIRCDIV_DIV1_SHIFT;
+               break;
+       case SCG_FIRC_DIV2_CLK:
+               mask = SCG_FIRCDIV_DIV2_MASK;
+               shift = SCG_FIRCDIV_DIV2_SHIFT;
+               break;
+       case SCG_FIRC_DIV3_CLK:
+               mask = SCG_FIRCDIV_DIV3_MASK;
+               shift = SCG_FIRCDIV_DIV3_SHIFT;
+               break;
+       default:
+               return 0;
+       }
+
+       reg = readl(&scg1_regs->firccsr);
+       if (!(reg & SCG_FIRC_CSR_FIRCVLD_MASK))
+               return 0;
+
+       reg = readl(&scg1_regs->fircdiv);
+       val = (reg & mask) >> shift;
+
+       if (!val) /*clock disabled*/
+               return 0;
+
+       rate = scg_src_get_rate(SCG_FIRC_CLK);
+       rate = rate / (1 << (val - 1));
+
+       return rate;
+}
+
+static u32 scg_soscdiv_get_rate(enum scg_clk clk)
+{
+       u32 reg, val, rate;
+       u32 shift, mask;
+
+       switch (clk) {
+       case SCG_SOSC_DIV1_CLK:
+               mask = SCG_SOSCDIV_DIV1_MASK;
+               shift = SCG_SOSCDIV_DIV1_SHIFT;
+               break;
+       case SCG_SOSC_DIV2_CLK:
+               mask = SCG_SOSCDIV_DIV2_MASK;
+               shift = SCG_SOSCDIV_DIV2_SHIFT;
+               break;
+       case SCG_SOSC_DIV3_CLK:
+               mask = SCG_SOSCDIV_DIV3_MASK;
+               shift = SCG_SOSCDIV_DIV3_SHIFT;
+               break;
+       default:
+               return 0;
+       }
+
+       reg = readl(&scg1_regs->sosccsr);
+       if (!(reg & SCG_SOSC_CSR_SOSCVLD_MASK))
+               return 0;
+
+       reg = readl(&scg1_regs->soscdiv);
+       val = (reg & mask) >> shift;
+
+       if (!val) /*clock disabled*/
+               return 0;
+
+       rate = scg_src_get_rate(SCG_SOSC_CLK);
+       rate = rate / (1 << (val - 1));
+
+       return rate;
+}
+
+static u32 scg_apll_pfd_get_rate(enum scg_clk clk)
+{
+       u32 reg, val, rate;
+       u32 shift, mask, gate, valid;
+
+       switch (clk) {
+       case SCG_APLL_PFD0_CLK:
+               gate = SCG_PLL_PFD0_GATE_MASK;
+               valid = SCG_PLL_PFD0_VALID_MASK;
+               mask = SCG_PLL_PFD0_FRAC_MASK;
+               shift = SCG_PLL_PFD0_FRAC_SHIFT;
+               break;
+       case SCG_APLL_PFD1_CLK:
+               gate = SCG_PLL_PFD1_GATE_MASK;
+               valid = SCG_PLL_PFD1_VALID_MASK;
+               mask = SCG_PLL_PFD1_FRAC_MASK;
+               shift = SCG_PLL_PFD1_FRAC_SHIFT;
+               break;
+       case SCG_APLL_PFD2_CLK:
+               gate = SCG_PLL_PFD2_GATE_MASK;
+               valid = SCG_PLL_PFD2_VALID_MASK;
+               mask = SCG_PLL_PFD2_FRAC_MASK;
+               shift = SCG_PLL_PFD2_FRAC_SHIFT;
+               break;
+       case SCG_APLL_PFD3_CLK:
+               gate = SCG_PLL_PFD3_GATE_MASK;
+               valid = SCG_PLL_PFD3_VALID_MASK;
+               mask = SCG_PLL_PFD3_FRAC_MASK;
+               shift = SCG_PLL_PFD3_FRAC_SHIFT;
+               break;
+       default:
+               return 0;
+       }
+
+       reg = readl(&scg1_regs->apllpfd);
+       if (reg & gate || !(reg & valid))
+               return 0;
+
+       clk_debug("scg_apll_pfd_get_rate reg 0x%x\n", reg);
+
+       val = (reg & mask) >> shift;
+       rate = decode_pll(PLL_A7_APLL);
+
+       rate = rate / val * 18;
+
+       clk_debug("scg_apll_pfd_get_rate rate %u\n", rate);
+
+       return rate;
+}
+
+static u32 scg_spll_pfd_get_rate(enum scg_clk clk)
+{
+       u32 reg, val, rate;
+       u32 shift, mask, gate, valid;
+
+       switch (clk) {
+       case SCG_SPLL_PFD0_CLK:
+               gate = SCG_PLL_PFD0_GATE_MASK;
+               valid = SCG_PLL_PFD0_VALID_MASK;
+               mask = SCG_PLL_PFD0_FRAC_MASK;
+               shift = SCG_PLL_PFD0_FRAC_SHIFT;
+               break;
+       case SCG_SPLL_PFD1_CLK:
+               gate = SCG_PLL_PFD1_GATE_MASK;
+               valid = SCG_PLL_PFD1_VALID_MASK;
+               mask = SCG_PLL_PFD1_FRAC_MASK;
+               shift = SCG_PLL_PFD1_FRAC_SHIFT;
+               break;
+       case SCG_SPLL_PFD2_CLK:
+               gate = SCG_PLL_PFD2_GATE_MASK;
+               valid = SCG_PLL_PFD2_VALID_MASK;
+               mask = SCG_PLL_PFD2_FRAC_MASK;
+               shift = SCG_PLL_PFD2_FRAC_SHIFT;
+               break;
+       case SCG_SPLL_PFD3_CLK:
+               gate = SCG_PLL_PFD3_GATE_MASK;
+               valid = SCG_PLL_PFD3_VALID_MASK;
+               mask = SCG_PLL_PFD3_FRAC_MASK;
+               shift = SCG_PLL_PFD3_FRAC_SHIFT;
+               break;
+       default:
+               return 0;
+       }
+
+       reg = readl(&scg1_regs->spllpfd);
+       if (reg & gate || !(reg & valid))
+               return 0;
+
+       clk_debug("scg_spll_pfd_get_rate reg 0x%x\n", reg);
+
+       val = (reg & mask) >> shift;
+       rate = decode_pll(PLL_A7_SPLL);
+
+       rate = rate / val * 18;
+
+       clk_debug("scg_spll_pfd_get_rate rate %u\n", rate);
+
+       return rate;
+}
+
+static u32 scg_apll_get_rate(void)
+{
+       u32 reg, val, rate;
+
+       reg = readl(&scg1_regs->apllcfg);
+       val = (reg & SCG_PLL_CFG_PLLSEL_MASK) >> SCG_PLL_CFG_PLLSEL_SHIFT;
+
+       if (!val) {
+               /* APLL clock after two dividers */
+               rate = decode_pll(PLL_A7_APLL);
+
+               val = (reg & SCG_PLL_CFG_POSTDIV1_MASK) >>
+                       SCG_PLL_CFG_POSTDIV1_SHIFT;
+               rate = rate / (val + 1);
+
+               val = (reg & SCG_PLL_CFG_POSTDIV2_MASK) >>
+                       SCG_PLL_CFG_POSTDIV2_SHIFT;
+               rate = rate / (val + 1);
+       } else {
+               /* APLL PFD clock */
+               val = (reg & SCG_PLL_CFG_PFDSEL_MASK) >>
+                       SCG_PLL_CFG_PFDSEL_SHIFT;
+               rate = scg_apll_pfd_get_rate(SCG_APLL_PFD0_CLK + val);
+       }
+
+       return rate;
+}
+
+static u32 scg_spll_get_rate(void)
+{
+       u32 reg, val, rate;
+
+       reg = readl(&scg1_regs->spllcfg);
+       val = (reg & SCG_PLL_CFG_PLLSEL_MASK) >> SCG_PLL_CFG_PLLSEL_SHIFT;
+
+       clk_debug("scg_spll_get_rate reg 0x%x\n", reg);
+
+       if (!val) {
+               /* APLL clock after two dividers */
+               rate = decode_pll(PLL_A7_SPLL);
+
+               val = (reg & SCG_PLL_CFG_POSTDIV1_MASK) >>
+                       SCG_PLL_CFG_POSTDIV1_SHIFT;
+               rate = rate / (val + 1);
+
+               val = (reg & SCG_PLL_CFG_POSTDIV2_MASK) >>
+                       SCG_PLL_CFG_POSTDIV2_SHIFT;
+               rate = rate / (val + 1);
+
+               clk_debug("scg_spll_get_rate SPLL %u\n", rate);
+
+       } else {
+               /* APLL PFD clock */
+               val = (reg & SCG_PLL_CFG_PFDSEL_MASK) >>
+                       SCG_PLL_CFG_PFDSEL_SHIFT;
+               rate = scg_spll_pfd_get_rate(SCG_SPLL_PFD0_CLK + val);
+
+               clk_debug("scg_spll_get_rate PFD %u\n", rate);
+       }
+
+       return rate;
+}
+
+static u32 scg_ddr_get_rate(void)
+{
+       u32 reg, val, rate, div;
+
+       reg = readl(&scg1_regs->ddrccr);
+       val = (reg & SCG_DDRCCR_DDRCS_MASK) >> SCG_DDRCCR_DDRCS_SHIFT;
+       div = (reg & SCG_DDRCCR_DDRDIV_MASK) >> SCG_DDRCCR_DDRDIV_SHIFT;
+
+       if (!div)
+               return 0;
+
+       if (!val) {
+               reg = readl(&scg1_regs->apllcfg);
+               val = (reg & SCG_PLL_CFG_PFDSEL_MASK) >>
+                       SCG_PLL_CFG_PFDSEL_SHIFT;
+               rate = scg_apll_pfd_get_rate(SCG_APLL_PFD0_CLK + val);
+       } else {
+               rate = decode_pll(PLL_USB);
+       }
+
+       rate = rate / (1 << (div - 1));
+       return rate;
+}
+
+static u32 scg_nic_get_rate(enum scg_clk clk)
+{
+       u32 reg, val, rate;
+       u32 shift, mask;
+
+       reg = readl(&scg1_regs->niccsr);
+       val = (reg & SCG_NICCSR_NICCS_MASK) >> SCG_NICCSR_NICCS_SHIFT;
+
+       clk_debug("scg_nic_get_rate niccsr 0x%x\n", reg);
+
+       if (!val)
+               rate = scg_src_get_rate(SCG_FIRC_CLK);
+       else
+               rate = scg_ddr_get_rate();
+
+       clk_debug("scg_nic_get_rate parent rate %u\n", rate);
+
+       val = (reg & SCG_NICCSR_NIC0DIV_MASK) >> SCG_NICCSR_NIC0DIV_SHIFT;
+
+       rate = rate / (val + 1);
+
+       clk_debug("scg_nic_get_rate NIC0 rate %u\n", rate);
+
+       switch (clk) {
+       case SCG_NIC0_CLK:
+               return rate;
+       case SCG_GPU_CLK:
+               mask = SCG_NICCSR_GPUDIV_MASK;
+               shift = SCG_NICCSR_GPUDIV_SHIFT;
+               break;
+       case SCG_NIC1_EXT_CLK:
+       case SCG_NIC1_BUS_CLK:
+       case SCG_NIC1_CLK:
+               mask = SCG_NICCSR_NIC1DIV_MASK;
+               shift = SCG_NICCSR_NIC1DIV_SHIFT;
+               break;
+       default:
+               return 0;
+       }
+
+       val = (reg & mask) >> shift;
+       rate = rate / (val + 1);
+
+       clk_debug("scg_nic_get_rate NIC1 rate %u\n", rate);
+
+       switch (clk) {
+       case SCG_GPU_CLK:
+       case SCG_NIC1_CLK:
+               return rate;
+       case SCG_NIC1_EXT_CLK:
+               mask = SCG_NICCSR_NIC1EXTDIV_MASK;
+               shift = SCG_NICCSR_NIC1EXTDIV_SHIFT;
+               break;
+       case SCG_NIC1_BUS_CLK:
+               mask = SCG_NICCSR_NIC1BUSDIV_MASK;
+               shift = SCG_NICCSR_NIC1BUSDIV_SHIFT;
+               break;
+       default:
+               return 0;
+       }
+
+       val = (reg & mask) >> shift;
+       rate = rate / (val + 1);
+
+       clk_debug("scg_nic_get_rate NIC1 bus rate %u\n", rate);
+       return rate;
+}
+
+
+static enum scg_clk scg_scs_array[4] = {
+       SCG_SOSC_CLK, SCG_SIRC_CLK, SCG_FIRC_CLK, SCG_ROSC_CLK,
+};
+
+static u32 scg_sys_get_rate(enum scg_clk clk)
+{
+       u32 reg, val, rate;
+
+       if (clk != SCG_CORE_CLK && clk != SCG_BUS_CLK)
+               return 0;
+
+       reg = readl(&scg1_regs->csr);
+       val = (reg & SCG_CCR_SCS_MASK) >> SCG_CCR_SCS_SHIFT;
+
+       clk_debug("scg_sys_get_rate reg 0x%x\n", reg);
+
+       switch (val) {
+       case SCG_SCS_SYS_OSC:
+       case SCG_SCS_SLOW_IRC:
+       case SCG_SCS_FAST_IRC:
+       case SCG_SCS_RTC_OSC:
+               rate = scg_src_get_rate(scg_scs_array[val]);
+               break;
+       case 5:
+               rate = scg_apll_get_rate();
+               break;
+       case 6:
+               rate = scg_spll_get_rate();
+               break;
+       default:
+               return 0;
+       }
+
+       clk_debug("scg_sys_get_rate parent rate %u\n", rate);
+
+       val = (reg & SCG_CCR_DIVCORE_MASK) >> SCG_CCR_DIVCORE_SHIFT;
+
+       rate = rate / (val + 1);
+
+       if (clk == SCG_BUS_CLK) {
+               val = (reg & SCG_CCR_DIVBUS_MASK) >> SCG_CCR_DIVBUS_SHIFT;
+               rate = rate / (val + 1);
+       }
+
+       return rate;
+}
+
+u32 decode_pll(enum pll_clocks pll)
+{
+       u32 reg,  pre_div, infreq, mult;
+       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_A7_SPLL:
+               reg = readl(&scg1_regs->spllcsr);
+
+               if (!(reg & SCG_SPLL_CSR_SPLLVLD_MASK))
+                       return 0;
+
+               reg = readl(&scg1_regs->spllcfg);
+
+               pre_div = (reg & SCG_PLL_CFG_PREDIV_MASK) >>
+                          SCG_PLL_CFG_PREDIV_SHIFT;
+               pre_div += 1;
+
+               mult = (reg & SCG1_SPLL_CFG_MULT_MASK) >>
+                          SCG_PLL_CFG_MULT_SHIFT;
+
+               infreq = (reg & SCG_PLL_CFG_CLKSRC_MASK) >>
+                          SCG_PLL_CFG_CLKSRC_SHIFT;
+               if (!infreq)
+                       infreq = scg_src_get_rate(SCG_SOSC_CLK);
+               else
+                       infreq = scg_src_get_rate(SCG_FIRC_CLK);
+
+               num = readl(&scg1_regs->spllnum);
+               denom = readl(&scg1_regs->splldenom);
+
+               infreq = infreq / pre_div;
+
+               return infreq * mult + infreq * num / denom;
+
+       case PLL_A7_APLL:
+               reg = readl(&scg1_regs->apllcsr);
+
+               if (!(reg & SCG_APLL_CSR_APLLVLD_MASK))
+                       return 0;
+
+               reg = readl(&scg1_regs->apllcfg);
+
+               pre_div = (reg & SCG_PLL_CFG_PREDIV_MASK) >>
+                          SCG_PLL_CFG_PREDIV_SHIFT;
+               pre_div += 1;
+
+               mult = (reg & SCG_APLL_CFG_MULT_MASK) >>
+                          SCG_PLL_CFG_MULT_SHIFT;
+
+               infreq = (reg & SCG_PLL_CFG_CLKSRC_MASK) >>
+                          SCG_PLL_CFG_CLKSRC_SHIFT;
+               if (!infreq)
+                       infreq = scg_src_get_rate(SCG_SOSC_CLK);
+               else
+                       infreq = scg_src_get_rate(SCG_FIRC_CLK);
+
+               num = readl(&scg1_regs->apllnum);
+               denom = readl(&scg1_regs->aplldenom);
+
+               infreq = infreq / pre_div;
+
+               return infreq * mult + infreq * num / denom;
+
+       case PLL_USB:
+               reg = readl(&scg1_regs->upllcsr);
+
+               if (!(reg & SCG_UPLL_CSR_UPLLVLD_MASK))
+                       return 0;
+
+               return 480000000u;
+
+       case PLL_MIPI:
+               return 480000000u;
+       default:
+               printf("Unsupported pll clocks %d\n", pll);
+               break;
+       }
+
+       return 0;
+}
+
+u32 scg_clk_get_rate(enum scg_clk clk)
+{
+       switch (clk) {
+       case SCG_SIRC_DIV1_CLK:
+       case SCG_SIRC_DIV2_CLK:
+       case SCG_SIRC_DIV3_CLK:
+               return scg_sircdiv_get_rate(clk);
+
+       case SCG_FIRC_DIV1_CLK:
+       case SCG_FIRC_DIV2_CLK:
+       case SCG_FIRC_DIV3_CLK:
+               return scg_fircdiv_get_rate(clk);
+
+       case SCG_SOSC_DIV1_CLK:
+       case SCG_SOSC_DIV2_CLK:
+       case SCG_SOSC_DIV3_CLK:
+               return scg_soscdiv_get_rate(clk);
+
+       case SCG_CORE_CLK:
+       case SCG_BUS_CLK:
+               return scg_sys_get_rate(clk);
+
+       case SCG_SPLL_PFD0_CLK:
+       case SCG_SPLL_PFD1_CLK:
+       case SCG_SPLL_PFD2_CLK:
+       case SCG_SPLL_PFD3_CLK:
+               return scg_spll_pfd_get_rate(clk);
+
+       case SCG_APLL_PFD0_CLK:
+       case SCG_APLL_PFD1_CLK:
+       case SCG_APLL_PFD2_CLK:
+       case SCG_APLL_PFD3_CLK:
+               return scg_apll_pfd_get_rate(clk);
+
+       case SCG_DDR_CLK:
+               return scg_ddr_get_rate();
+
+       case SCG_NIC0_CLK:
+       case SCG_GPU_CLK:
+       case SCG_NIC1_CLK:
+       case SCG_NIC1_BUS_CLK:
+       case SCG_NIC1_EXT_CLK:
+               return scg_nic_get_rate(clk);
+
+       case USB_PLL_OUT:
+               return decode_pll(PLL_USB);
+
+       case MIPI_PLL_OUT:
+               return decode_pll(PLL_MIPI);
+
+       case SCG_SOSC_CLK:
+       case SCG_FIRC_CLK:
+       case SCG_SIRC_CLK:
+       case SCG_ROSC_CLK:
+               return scg_src_get_rate(clk);
+       default:
+               return 0;
+       }
+}
+
+int scg_enable_pll_pfd(enum scg_clk clk, u32 frac)
+{
+       u32 reg;
+       u32 shift, mask, gate, valid;
+       u32 addr;
+
+       if (frac < 12 || frac > 35)
+               return -EINVAL;
+
+       switch (clk) {
+       case SCG_SPLL_PFD0_CLK:
+       case SCG_APLL_PFD0_CLK:
+               gate = SCG_PLL_PFD0_GATE_MASK;
+               valid = SCG_PLL_PFD0_VALID_MASK;
+               mask = SCG_PLL_PFD0_FRAC_MASK;
+               shift = SCG_PLL_PFD0_FRAC_SHIFT;
+
+               if (clk == SCG_SPLL_PFD0_CLK)
+                       addr = (u32)(&scg1_regs->spllpfd);
+               else
+                       addr = (u32)(&scg1_regs->apllpfd);
+               break;
+       case SCG_SPLL_PFD1_CLK:
+       case SCG_APLL_PFD1_CLK:
+               gate = SCG_PLL_PFD1_GATE_MASK;
+               valid = SCG_PLL_PFD1_VALID_MASK;
+               mask = SCG_PLL_PFD1_FRAC_MASK;
+               shift = SCG_PLL_PFD1_FRAC_SHIFT;
+
+               if (clk == SCG_SPLL_PFD1_CLK)
+                       addr = (u32)(&scg1_regs->spllpfd);
+               else
+                       addr = (u32)(&scg1_regs->apllpfd);
+               break;
+       case SCG_SPLL_PFD2_CLK:
+       case SCG_APLL_PFD2_CLK:
+               gate = SCG_PLL_PFD2_GATE_MASK;
+               valid = SCG_PLL_PFD2_VALID_MASK;
+               mask = SCG_PLL_PFD2_FRAC_MASK;
+               shift = SCG_PLL_PFD2_FRAC_SHIFT;
+
+               if (clk == SCG_SPLL_PFD2_CLK)
+                       addr = (u32)(&scg1_regs->spllpfd);
+               else
+                       addr = (u32)(&scg1_regs->apllpfd);
+               break;
+       case SCG_SPLL_PFD3_CLK:
+       case SCG_APLL_PFD3_CLK:
+               gate = SCG_PLL_PFD3_GATE_MASK;
+               valid = SCG_PLL_PFD3_VALID_MASK;
+               mask = SCG_PLL_PFD3_FRAC_MASK;
+               shift = SCG_PLL_PFD3_FRAC_SHIFT;
+
+               if (clk == SCG_SPLL_PFD3_CLK)
+                       addr = (u32)(&scg1_regs->spllpfd);
+               else
+                       addr = (u32)(&scg1_regs->apllpfd);
+               break;
+       default:
+               return -EINVAL;
+       }
+
+       /* Gate the PFD */
+       reg = readl(addr);
+       reg |= gate;
+       writel(reg, addr);
+
+       /* Write Frac divider */
+       reg &= ~mask;
+       reg |= (frac << shift) & mask;
+       writel(reg, addr);
+
+       /*
+        * Un-gate the PFD
+        * (Need un-gate before checking valid, not align with RM)
+        */
+       reg &= ~gate;
+       writel(reg, addr);
+
+       /* Wait for PFD clock being valid */
+       do {
+               reg = readl(addr);
+       } while (!(reg & valid));
+
+       return 0;
+}
+
+#define SIM_MISC_CTRL0_USB_PLL_EN_MASK (0x1 << 2)
+int scg_enable_usb_pll(bool usb_control)
+{
+       u32 sosc_rate;
+       s32 timeout = 1000000;
+       u32 reg;
+
+       struct usbphy_regs *usbphy =
+               (struct usbphy_regs *)USBPHY_RBASE;
+
+       sosc_rate = scg_src_get_rate(SCG_SOSC_CLK);
+       if (!sosc_rate)
+               return -EPERM;
+
+       reg = readl(SIM0_RBASE + 0x3C);
+       if (usb_control)
+               reg &= ~SIM_MISC_CTRL0_USB_PLL_EN_MASK;
+       else
+               reg |= SIM_MISC_CTRL0_USB_PLL_EN_MASK;
+       writel(reg, SIM0_RBASE + 0x3C);
+
+       if (!(readl(&usbphy->usb1_pll_480_ctrl) & PLL_USB_LOCK_MASK)) {
+               writel(0x1c00000, &usbphy->usb1_pll_480_ctrl_clr);
+
+               switch (sosc_rate) {
+               case 24000000:
+                       writel(0xc00000, &usbphy->usb1_pll_480_ctrl_set);
+                       break;
+
+               case 30000000:
+                       writel(0x800000, &usbphy->usb1_pll_480_ctrl_set);
+                       break;
+
+               case 19200000:
+                       writel(0x1400000, &usbphy->usb1_pll_480_ctrl_set);
+                       break;
+
+               default:
+                       writel(0xc00000, &usbphy->usb1_pll_480_ctrl_set);
+                       break;
+               }
+
+               /* Enable the regulator first */
+               writel(PLL_USB_REG_ENABLE_MASK,
+                      &usbphy->usb1_pll_480_ctrl_set);
+
+               /* Wait at least 15us */
+               udelay(15);
+
+               /* Enable the power */
+               writel(PLL_USB_PWR_MASK, &usbphy->usb1_pll_480_ctrl_set);
+
+               /* Wait lock */
+               while (timeout--) {
+                       if (readl(&usbphy->usb1_pll_480_ctrl) &
+                           PLL_USB_LOCK_MASK)
+                               break;
+               }
+
+               if (timeout <= 0) {
+                       /* If timeout, we power down the pll */
+                       writel(PLL_USB_PWR_MASK,
+                              &usbphy->usb1_pll_480_ctrl_clr);
+                       return -ETIME;
+               }
+       }
+
+       /* Clear the bypass */
+       writel(PLL_USB_BYPASS_MASK, &usbphy->usb1_pll_480_ctrl_clr);
+
+       /* Enable the PLL clock out to USB */
+       writel((PLL_USB_EN_USB_CLKS_MASK | PLL_USB_ENABLE_MASK),
+              &usbphy->usb1_pll_480_ctrl_set);
+
+       if (!usb_control) {
+               while (timeout--) {
+                       if (readl(&scg1_regs->upllcsr) &
+                           SCG_UPLL_CSR_UPLLVLD_MASK)
+                               break;
+               }
+
+               if (timeout <= 0) {
+                       reg = readl(SIM0_RBASE + 0x3C);
+                       reg &= ~SIM_MISC_CTRL0_USB_PLL_EN_MASK;
+                       writel(reg, SIM0_RBASE + 0x3C);
+                       return -ETIME;
+               }
+       }
+
+       return 0;
+}
+
+
+/* A7 domain system clock source is SPLL */
+#define SCG1_RCCR_SCS_NUM      ((SCG_SCS_SYS_PLL) << SCG_CCR_SCS_SHIFT)
+
+/* A7 Core clck = SPLL PFD0 / 1 = 500MHz / 1 = 500MHz */
+#define SCG1_RCCR_DIVCORE_NUM  ((0x0)  << SCG_CCR_DIVCORE_SHIFT)
+#define SCG1_RCCR_CFG_MASK     (SCG_CCR_SCS_MASK | SCG_CCR_DIVBUS_MASK)
+
+/* A7 Plat clck = A7 Core Clock / 2 = 250MHz / 1 = 250MHz */
+#define SCG1_RCCR_DIVBUS_NUM   ((0x1)  << SCG_CCR_DIVBUS_SHIFT)
+#define SCG1_RCCR_CFG_NUM      (SCG1_RCCR_SCS_NUM | SCG1_RCCR_DIVBUS_NUM)
+
+void scg_a7_rccr_init(void)
+{
+       u32 rccr_reg_val = 0;
+
+       rccr_reg_val = readl(&scg1_regs->rccr);
+
+       rccr_reg_val &= (~SCG1_RCCR_CFG_MASK);
+       rccr_reg_val |= (SCG1_RCCR_CFG_NUM);
+
+       writel(rccr_reg_val, &scg1_regs->rccr);
+}
+
+/* POSTDIV2 = 1 */
+#define SCG1_SPLL_CFG_POSTDIV2_NUM     ((0x0)  << SCG_PLL_CFG_POSTDIV2_SHIFT)
+/* POSTDIV1 = 1 */
+#define SCG1_SPLL_CFG_POSTDIV1_NUM     ((0x0)  << SCG_PLL_CFG_POSTDIV1_SHIFT)
+
+/* MULT = 22 */
+#define SCG1_SPLL_CFG_MULT_NUM         ((22)   << SCG_PLL_CFG_MULT_SHIFT)
+
+/* PFD0 output clock selected */
+#define SCG1_SPLL_CFG_PFDSEL_NUM       ((0) << SCG_PLL_CFG_PFDSEL_SHIFT)
+/* PREDIV = 1 */
+#define SCG1_SPLL_CFG_PREDIV_NUM       ((0x0)  << SCG_PLL_CFG_PREDIV_SHIFT)
+/* SPLL output clocks (including PFD outputs) selected */
+#define SCG1_SPLL_CFG_BYPASS_NUM       ((0x0)  << SCG_PLL_CFG_BYPASS_SHIFT)
+/* SPLL PFD output clock selected */
+#define SCG1_SPLL_CFG_PLLSEL_NUM       ((0x1)  << SCG_PLL_CFG_PLLSEL_SHIFT)
+/* Clock source is System OSC */
+#define SCG1_SPLL_CFG_CLKSRC_NUM       ((0x0)  << SCG_PLL_CFG_CLKSRC_SHIFT)
+#define SCG1_SPLL_CFG_NUM_24M_OSC      (SCG1_SPLL_CFG_POSTDIV2_NUM     | \
+                                        SCG1_SPLL_CFG_POSTDIV1_NUM     | \
+                                        (22 << SCG_PLL_CFG_MULT_SHIFT) | \
+                                        SCG1_SPLL_CFG_PFDSEL_NUM       | \
+                                        SCG1_SPLL_CFG_PREDIV_NUM       | \
+                                        SCG1_SPLL_CFG_BYPASS_NUM       | \
+                                        SCG1_SPLL_CFG_PLLSEL_NUM       | \
+                                        SCG1_SPLL_CFG_CLKSRC_NUM)
+/*413Mhz = A7 SPLL(528MHz) * 18/23 */
+#define SCG1_SPLL_PFD0_FRAC_NUM                ((23) << SCG_PLL_PFD0_FRAC_SHIFT)
+
+void scg_a7_spll_init(void)
+{
+       u32 val = 0;
+
+       /* Disable A7 System PLL */
+       val = readl(&scg1_regs->spllcsr);
+       val &= ~SCG_SPLL_CSR_SPLLEN_MASK;
+       writel(val, &scg1_regs->spllcsr);
+
+       /*
+        * Per block guide,
+        * "When changing PFD values, it is recommneded PFDx clock
+        * gets gated first by writing a value of 1 to PFDx_CLKGATE register,
+        * then program the new PFD value, then poll the PFDx_VALID
+        * flag to set before writing a value of 0 to PFDx_CLKGATE
+        * to ungate the PFDx clock and allow PFDx clock to run"
+        */
+
+       /* Gate off A7 SPLL PFD0 ~ PDF4  */
+       val = readl(&scg1_regs->spllpfd);
+       val |= (SCG_PLL_PFD3_GATE_MASK |
+                       SCG_PLL_PFD2_GATE_MASK |
+                       SCG_PLL_PFD1_GATE_MASK |
+                       SCG_PLL_PFD0_GATE_MASK);
+       writel(val, &scg1_regs->spllpfd);
+
+       /* ================ A7 SPLL Configuration Start ============== */
+
+       /* Configure A7 System PLL */
+       writel(SCG1_SPLL_CFG_NUM_24M_OSC, &scg1_regs->spllcfg);
+
+       /* Enable A7 System PLL */
+       val = readl(&scg1_regs->spllcsr);
+       val |= SCG_SPLL_CSR_SPLLEN_MASK;
+       writel(val, &scg1_regs->spllcsr);
+
+       /* Wait for A7 SPLL clock ready */
+       while (!(readl(&scg1_regs->spllcsr) & SCG_SPLL_CSR_SPLLVLD_MASK))
+               ;
+
+       /* Configure A7 SPLL PFD0 */
+       val = readl(&scg1_regs->spllpfd);
+       val &= ~SCG_PLL_PFD0_FRAC_MASK;
+       val |= SCG1_SPLL_PFD0_FRAC_NUM;
+       writel(val, &scg1_regs->spllpfd);
+
+       /* Un-gate A7 SPLL PFD0 */
+       val = readl(&scg1_regs->spllpfd);
+       val &= ~SCG_PLL_PFD0_GATE_MASK;
+       writel(val, &scg1_regs->spllpfd);
+
+       /* Wait for A7 SPLL PFD0 clock being valid */
+       while (!(readl(&scg1_regs->spllpfd) & SCG_PLL_PFD0_VALID_MASK))
+               ;
+
+       /* ================ A7 SPLL Configuration End ============== */
+}
+
+/* DDR clock source is APLL PFD0 (396MHz) */
+#define SCG1_DDRCCR_DDRCS_NUM          ((0x0) << SCG_DDRCCR_DDRCS_SHIFT)
+/* DDR clock = APLL PFD0 / 1 = 396MHz / 1 = 396MHz */
+#define SCG1_DDRCCR_DDRDIV_NUM         ((0x1) << SCG_DDRCCR_DDRDIV_SHIFT)
+/* DDR clock = APLL PFD0 / 2 = 396MHz / 2 = 198MHz */
+#define SCG1_DDRCCR_DDRDIV_LF_NUM      ((0x2) << SCG_DDRCCR_DDRDIV_SHIFT)
+#define SCG1_DDRCCR_CFG_NUM            (SCG1_DDRCCR_DDRCS_NUM  | \
+                                        SCG1_DDRCCR_DDRDIV_NUM)
+#define SCG1_DDRCCR_CFG_LF_NUM         (SCG1_DDRCCR_DDRCS_NUM  | \
+                                        SCG1_DDRCCR_DDRDIV_LF_NUM)
+void scg_a7_ddrclk_init(void)
+{
+       writel(SCG1_DDRCCR_CFG_NUM, &scg1_regs->ddrccr);
+}
+
+/* SCG1(A7) APLLCFG configurations */
+/* divide by 1 <<28 */
+#define SCG1_APLL_CFG_POSTDIV2_NUM      ((0x0) << SCG_PLL_CFG_POSTDIV2_SHIFT)
+/* divide by 1 <<24 */
+#define SCG1_APLL_CFG_POSTDIV1_NUM      ((0x0) << SCG_PLL_CFG_POSTDIV1_SHIFT)
+/* MULT is 22  <<16 */
+#define SCG1_APLL_CFG_MULT_NUM          ((22)  << SCG_PLL_CFG_MULT_SHIFT)
+/* PFD0 output clock selected  <<14 */
+#define SCG1_APLL_CFG_PFDSEL_NUM        ((0) << SCG_PLL_CFG_PFDSEL_SHIFT)
+/* PREDIV = 1  <<8 */
+#define SCG1_APLL_CFG_PREDIV_NUM        ((0x0) << SCG_PLL_CFG_PREDIV_SHIFT)
+/* APLL output clocks (including PFD outputs) selected <<2 */
+#define SCG1_APLL_CFG_BYPASS_NUM        ((0x0) << SCG_PLL_CFG_BYPASS_SHIFT)
+/* APLL PFD output clock selected <<1 */
+#define SCG1_APLL_CFG_PLLSEL_NUM        ((0x0) << SCG_PLL_CFG_PLLSEL_SHIFT)
+/* Clock source is System OSC <<0 */
+#define SCG1_APLL_CFG_CLKSRC_NUM        ((0x0) << SCG_PLL_CFG_CLKSRC_SHIFT)
+
+/*
+ * A7 APLL = 24MHz / 1 * 22 / 1 / 1 = 528MHz,
+ * system PLL is sourced from APLL,
+ * APLL clock source is system OSC (24MHz)
+ */
+#define SCG1_APLL_CFG_NUM_24M_OSC (SCG1_APLL_CFG_POSTDIV2_NUM     |   \
+                                  SCG1_APLL_CFG_POSTDIV1_NUM     |   \
+                                  (22 << SCG_PLL_CFG_MULT_SHIFT) |   \
+                                  SCG1_APLL_CFG_PFDSEL_NUM       |   \
+                                  SCG1_APLL_CFG_PREDIV_NUM       |   \
+                                  SCG1_APLL_CFG_BYPASS_NUM       |   \
+                                  SCG1_APLL_CFG_PLLSEL_NUM       |   \
+                                  SCG1_APLL_CFG_CLKSRC_NUM)
+
+/* PFD0 Freq = A7 APLL(528MHz) * 18 / 27 = 352MHz */
+#define SCG1_APLL_PFD0_FRAC_NUM (27)
+
+
+void scg_a7_apll_init(void)
+{
+       u32 val = 0;
+
+       /* Disable A7 Auxiliary PLL */
+       val = readl(&scg1_regs->apllcsr);
+       val &= ~SCG_APLL_CSR_APLLEN_MASK;
+       writel(val, &scg1_regs->apllcsr);
+
+       /* Gate off A7 APLL PFD0 ~ PDF4  */
+       val = readl(&scg1_regs->apllpfd);
+       val |= 0x80808080;
+       writel(val, &scg1_regs->apllpfd);
+
+       /* ================ A7 APLL Configuration Start ============== */
+       /* Configure A7 Auxiliary PLL */
+       writel(SCG1_APLL_CFG_NUM_24M_OSC, &scg1_regs->apllcfg);
+
+       /* Enable A7 Auxiliary PLL */
+       val = readl(&scg1_regs->apllcsr);
+       val |= SCG_APLL_CSR_APLLEN_MASK;
+       writel(val, &scg1_regs->apllcsr);
+
+       /* Wait for A7 APLL clock ready */
+       while (!(readl(&scg1_regs->apllcsr) & SCG_APLL_CSR_APLLVLD_MASK))
+               ;
+
+       /* Configure A7 APLL PFD0 */
+       val = readl(&scg1_regs->apllpfd);
+       val &= ~SCG_PLL_PFD0_FRAC_MASK;
+       val |= SCG1_APLL_PFD0_FRAC_NUM;
+       writel(val, &scg1_regs->apllpfd);
+
+       /* Un-gate A7 APLL PFD0 */
+       val = readl(&scg1_regs->apllpfd);
+       val &= ~SCG_PLL_PFD0_GATE_MASK;
+       writel(val, &scg1_regs->apllpfd);
+
+       /* Wait for A7 APLL PFD0 clock being valid */
+       while (!(readl(&scg1_regs->apllpfd) & SCG_PLL_PFD0_VALID_MASK))
+               ;
+}
+
+/* SCG1(A7) FIRC DIV configurations */
+/* Disable FIRC DIV3 */
+#define SCG1_FIRCDIV_DIV3_NUM           ((0x0) << SCG_FIRCDIV_DIV3_SHIFT)
+/* FIRC DIV2 = 48MHz / 1 = 48MHz */
+#define SCG1_FIRCDIV_DIV2_NUM           ((0x1) << SCG_FIRCDIV_DIV2_SHIFT)
+/* Disable FIRC DIV1 */
+#define SCG1_FIRCDIV_DIV1_NUM           ((0x0) << SCG_FIRCDIV_DIV1_SHIFT)
+
+void scg_a7_firc_init(void)
+{
+       /* Wait for FIRC clock ready */
+       while (!(readl(&scg1_regs->firccsr) & SCG_FIRC_CSR_FIRCVLD_MASK))
+               ;
+
+       /* Configure A7 FIRC DIV1 ~ DIV3 */
+       writel((SCG1_FIRCDIV_DIV3_NUM |
+                       SCG1_FIRCDIV_DIV2_NUM |
+                       SCG1_FIRCDIV_DIV1_NUM), &scg1_regs->fircdiv);
+}
+
+/* SCG1(A7) NICCCR configurations */
+/* NIC clock source is DDR clock (396/198MHz) */
+#define SCG1_NICCCR_NICCS_NUM          ((0x1) << SCG_NICCCR_NICCS_SHIFT)
+
+/* NIC0 clock = DDR Clock / 2 = 396MHz / 2 = 198MHz */
+#define SCG1_NICCCR_NIC0_DIV_NUM       ((0x1) << SCG_NICCCR_NIC0_DIV_SHIFT)
+/* NIC0 clock = DDR Clock / 1 = 198MHz / 1 = 198MHz */
+#define SCG1_NICCCR_NIC0_DIV_LF_NUM    ((0x0) << SCG_NICCCR_NIC0_DIV_SHIFT)
+/* NIC1 clock = NIC0 Clock / 1 = 198MHz / 2 = 198MHz */
+#define SCG1_NICCCR_NIC1_DIV_NUM       ((0x0) << SCG_NICCCR_NIC1_DIV_SHIFT)
+/* NIC1 bus clock = NIC1 Clock / 3 = 198MHz / 3 = 66MHz */
+#define SCG1_NICCCR_NIC1_DIVBUS_NUM    ((0x2) << SCG_NICCCR_NIC1_DIVBUS_SHIFT)
+#define SCG1_NICCCR_CFG_NUM            (SCG1_NICCCR_NICCS_NUM      | \
+                                        SCG1_NICCCR_NIC0_DIV_NUM   | \
+                                        SCG1_NICCCR_NIC1_DIV_NUM   | \
+                                        SCG1_NICCCR_NIC1_DIVBUS_NUM)
+
+void scg_a7_nicclk_init(void)
+{
+       writel(SCG1_NICCCR_CFG_NUM, &scg1_regs->nicccr);
+}
+
+/* SCG1(A7) FIRC DIV configurations */
+/* Enable FIRC DIV3 */
+#define SCG1_SOSCDIV_DIV3_NUM          ((0x1) << SCG_SOSCDIV_DIV3_SHIFT)
+/* FIRC DIV2 = 48MHz / 1 = 48MHz */
+#define SCG1_SOSCDIV_DIV2_NUM          ((0x1) << SCG_SOSCDIV_DIV2_SHIFT)
+/* Enable FIRC DIV1 */
+#define SCG1_SOSCDIV_DIV1_NUM          ((0x1) << SCG_SOSCDIV_DIV1_SHIFT)
+
+void scg_a7_soscdiv_init(void)
+{
+       /* Wait for FIRC clock ready */
+       while (!(readl(&scg1_regs->sosccsr) & SCG_SOSC_CSR_SOSCVLD_MASK))
+               ;
+
+       /* Configure A7 FIRC DIV1 ~ DIV3 */
+       writel((SCG1_SOSCDIV_DIV3_NUM | SCG1_SOSCDIV_DIV2_NUM |
+              SCG1_SOSCDIV_DIV1_NUM), &scg1_regs->soscdiv);
+}
+
+void scg_a7_sys_clk_sel(enum scg_sys_src clk)
+{
+       u32 rccr_reg_val = 0;
+
+       clk_debug("%s: system clock selected as %s\n", "[SCG]",
+                 clk == SCG_SCS_SYS_OSC ? "SYS_OSC" :
+                 clk == SCG_SCS_SLOW_IRC  ? "SLOW_IRC" :
+                 clk == SCG_SCS_FAST_IRC  ? "FAST_IRC" :
+                 clk == SCG_SCS_RTC_OSC   ? "RTC_OSC" :
+                 clk == SCG_SCS_AUX_PLL   ? "AUX_PLL" :
+                 clk == SCG_SCS_SYS_PLL   ? "SYS_PLL" :
+                 clk == SCG_SCS_USBPHY_PLL ? "USBPHY_PLL" :
+                 "Invalid source"
+       );
+
+       rccr_reg_val = readl(&scg1_regs->rccr);
+       rccr_reg_val &= ~SCG_CCR_SCS_MASK;
+       rccr_reg_val |= (clk << SCG_CCR_SCS_SHIFT);
+       writel(rccr_reg_val, &scg1_regs->rccr);
+}
+
+void scg_a7_info(void)
+{
+       debug("SCG Version: 0x%x\n", readl(&scg1_regs->verid));
+       debug("SCG Parameter: 0x%x\n", readl(&scg1_regs->param));
+       debug("SCG RCCR Value: 0x%x\n", readl(&scg1_regs->rccr));
+       debug("SCG Clock Status: 0x%x\n", readl(&scg1_regs->csr));
+}
diff --git a/arch/arm/mach-imx/mx7ulp/soc.c b/arch/arm/mach-imx/mx7ulp/soc.c
new file mode 100644 (file)
index 0000000..454665a
--- /dev/null
@@ -0,0 +1,247 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/sys_proto.h>
+#include <asm/mach-imx/hab.h>
+
+static char *get_reset_cause(char *);
+
+#if defined(CONFIG_SECURE_BOOT)
+struct imx_sec_config_fuse_t const imx_sec_config_fuse = {
+       .bank = 29,
+       .word = 6,
+};
+#endif
+
+u32 get_cpu_rev(void)
+{
+       /* Temporally hard code the CPU rev to 0x73, rev 1.0. Fix it later */
+       return (MXC_CPU_MX7ULP << 12) | (1 << 4);
+}
+
+#ifdef CONFIG_REVISION_TAG
+u32 __weak get_board_rev(void)
+{
+       return get_cpu_rev();
+}
+#endif
+
+enum bt_mode get_boot_mode(void)
+{
+       u32 bt0_cfg = 0;
+
+       bt0_cfg = readl(CMC0_RBASE + 0x40);
+       bt0_cfg &= (BT0CFG_LPBOOT_MASK | BT0CFG_DUALBOOT_MASK);
+
+       if (!(bt0_cfg & BT0CFG_LPBOOT_MASK)) {
+               /* No low power boot */
+               if (bt0_cfg & BT0CFG_DUALBOOT_MASK)
+                       return DUAL_BOOT;
+               else
+                       return SINGLE_BOOT;
+       }
+
+       return LOW_POWER_BOOT;
+}
+
+int arch_cpu_init(void)
+{
+       return 0;
+}
+
+#ifdef CONFIG_BOARD_POSTCLK_INIT
+int board_postclk_init(void)
+{
+       return 0;
+}
+#endif
+
+#define UNLOCK_WORD0 0xC520 /* 1st unlock word */
+#define UNLOCK_WORD1 0xD928 /* 2nd unlock word */
+#define REFRESH_WORD0 0xA602 /* 1st refresh word */
+#define REFRESH_WORD1 0xB480 /* 2nd refresh word */
+
+static void disable_wdog(u32 wdog_base)
+{
+       writel(UNLOCK_WORD0, (wdog_base + 0x04));
+       writel(UNLOCK_WORD1, (wdog_base + 0x04));
+       writel(0x0, (wdog_base + 0x0C)); /* Set WIN to 0 */
+       writel(0x400, (wdog_base + 0x08)); /* Set timeout to default 0x400 */
+       writel(0x120, (wdog_base + 0x00)); /* Disable it and set update */
+
+       writel(REFRESH_WORD0, (wdog_base + 0x04)); /* Refresh the CNT */
+       writel(REFRESH_WORD1, (wdog_base + 0x04));
+}
+
+void init_wdog(void)
+{
+       /*
+        * ROM will configure WDOG1, disable it or enable it
+        * depending on FUSE. The update bit is set for reconfigurable.
+        * We have to use unlock sequence to reconfigure it.
+        * WDOG2 is not touched by ROM, so it will have default value
+        * which is enabled. We can directly configure it.
+        * To simplify the codes, we still use same reconfigure
+        * process as WDOG1. Because the update bit is not set for
+        * WDOG2, the unlock sequence won't take effect really.
+        * It actually directly configure the wdog.
+        * In this function, we will disable both WDOG1 and WDOG2,
+        * and set update bit for both. So that kernel can reconfigure them.
+        */
+       disable_wdog(WDG1_RBASE);
+       disable_wdog(WDG2_RBASE);
+}
+
+
+void s_init(void)
+{
+       /* Disable wdog */
+       init_wdog();
+
+       /* clock configuration. */
+       clock_init();
+
+       return;
+}
+
+#ifndef CONFIG_ULP_WATCHDOG
+void reset_cpu(ulong addr)
+{
+       setbits_le32(SIM0_RBASE, SIM_SOPT1_A7_SW_RESET);
+       while (1)
+               ;
+}
+#endif
+
+#if defined(CONFIG_DISPLAY_CPUINFO)
+const char *get_imx_type(u32 imxtype)
+{
+       return "7ULP";
+}
+
+int print_cpuinfo(void)
+{
+       u32 cpurev;
+       char cause[18];
+
+       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("Reset cause: %s\n", get_reset_cause(cause));
+
+       printf("Boot mode: ");
+       switch (get_boot_mode()) {
+       case LOW_POWER_BOOT:
+               printf("Low power boot\n");
+               break;
+       case DUAL_BOOT:
+               printf("Dual boot\n");
+               break;
+       case SINGLE_BOOT:
+       default:
+               printf("Single boot\n");
+               break;
+       }
+
+       return 0;
+}
+#endif
+
+#define CMC_SRS_TAMPER                    (1 << 31)
+#define CMC_SRS_SECURITY                  (1 << 30)
+#define CMC_SRS_TZWDG                     (1 << 29)
+#define CMC_SRS_JTAG_RST                  (1 << 28)
+#define CMC_SRS_CORE1                     (1 << 16)
+#define CMC_SRS_LOCKUP                    (1 << 15)
+#define CMC_SRS_SW                        (1 << 14)
+#define CMC_SRS_WDG                       (1 << 13)
+#define CMC_SRS_PIN_RESET                 (1 << 8)
+#define CMC_SRS_WARM                      (1 << 4)
+#define CMC_SRS_HVD                       (1 << 3)
+#define CMC_SRS_LVD                       (1 << 2)
+#define CMC_SRS_POR                       (1 << 1)
+#define CMC_SRS_WUP                       (1 << 0)
+
+static u32 reset_cause = -1;
+
+static char *get_reset_cause(char *ret)
+{
+       u32 cause1, cause = 0, srs = 0;
+       u32 *reg_ssrs = (u32 *)(SRC_BASE_ADDR + 0x28);
+       u32 *reg_srs = (u32 *)(SRC_BASE_ADDR + 0x20);
+
+       if (!ret)
+               return "null";
+
+       srs = readl(reg_srs);
+       cause1 = readl(reg_ssrs);
+       writel(cause1, reg_ssrs);
+
+       reset_cause = cause1;
+
+       cause = cause1 & (CMC_SRS_POR | CMC_SRS_WUP | CMC_SRS_WARM);
+
+       switch (cause) {
+       case CMC_SRS_POR:
+               sprintf(ret, "%s", "POR");
+               break;
+       case CMC_SRS_WUP:
+               sprintf(ret, "%s", "WUP");
+               break;
+       case CMC_SRS_WARM:
+               cause = cause1 & (CMC_SRS_WDG | CMC_SRS_SW |
+                       CMC_SRS_JTAG_RST);
+               switch (cause) {
+               case CMC_SRS_WDG:
+                       sprintf(ret, "%s", "WARM-WDG");
+                       break;
+               case CMC_SRS_SW:
+                       sprintf(ret, "%s", "WARM-SW");
+                       break;
+               case CMC_SRS_JTAG_RST:
+                       sprintf(ret, "%s", "WARM-JTAG");
+                       break;
+               default:
+                       sprintf(ret, "%s", "WARM-UNKN");
+                       break;
+               }
+               break;
+       default:
+               sprintf(ret, "%s-%X", "UNKN", cause1);
+               break;
+       }
+
+       debug("[%X] SRS[%X] %X - ", cause1, srs, srs^cause1);
+       return ret;
+}
+
+#ifdef CONFIG_ENV_IS_IN_MMC
+__weak int board_mmc_get_env_dev(int devno)
+{
+       return CONFIG_SYS_MMC_ENV_DEV;
+}
+
+int mmc_get_env_dev(void)
+{
+       int devno = 0;
+       u32 bt1_cfg = 0;
+
+       /* If not boot from sd/mmc, use default value */
+       if (get_boot_mode() == LOW_POWER_BOOT)
+               return CONFIG_SYS_MMC_ENV_DEV;
+
+       bt1_cfg = readl(CMC1_RBASE + 0x40);
+       devno = (bt1_cfg >> 9) & 0x7;
+
+       return board_mmc_get_env_dev(devno);
+}
+#endif
diff --git a/arch/arm/mach-imx/rdc-sema.c b/arch/arm/mach-imx/rdc-sema.c
new file mode 100644 (file)
index 0000000..cffd4e8
--- /dev/null
@@ -0,0 +1,183 @@
+/*
+ * Copyright (C) 2016 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:  GPL-2.0+
+ */
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/mach-imx/rdc-sema.h>
+#include <asm/arch/imx-rdc.h>
+#include <linux/errno.h>
+
+/*
+ * Check if the RDC Semaphore is required for this peripheral.
+ */
+static inline int imx_rdc_check_sema_required(int per_id)
+{
+       struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
+       u32 reg;
+
+       reg = readl(&imx_rdc->pdap[per_id]);
+       /*
+        * No semaphore:
+        * Intial value or this peripheral is assigned to only one domain
+        */
+       if (!(reg & RDC_PDAP_SREQ_MASK))
+               return -ENOENT;
+
+       return 0;
+}
+
+/*
+ * Check the peripheral read / write access permission on Domain [dom_id].
+ */
+int imx_rdc_check_permission(int per_id, int dom_id)
+{
+       struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
+       u32 reg;
+
+       reg = readl(&imx_rdc->pdap[per_id]);
+       if (!(reg & RDC_PDAP_DRW_MASK(dom_id)))
+               return -EACCES;  /*No access*/
+
+       return 0;
+}
+
+/*
+ * Lock up the RDC semaphore for this peripheral if semaphore is required.
+ */
+int imx_rdc_sema_lock(int per_id)
+{
+       struct rdc_sema_regs *imx_rdc_sema;
+       int ret;
+       u8 reg;
+
+       ret = imx_rdc_check_sema_required(per_id);
+       if (ret)
+               return ret;
+
+       if (per_id < SEMA_GATES_NUM)
+               imx_rdc_sema  = (struct rdc_sema_regs *)SEMAPHORE1_BASE_ADDR;
+       else
+               imx_rdc_sema  = (struct rdc_sema_regs *)SEMAPHORE2_BASE_ADDR;
+
+       do {
+               writeb(RDC_SEMA_PROC_ID,
+                      &imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
+               reg = readb(&imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
+               if ((reg & RDC_SEMA_GATE_GTFSM_MASK) == RDC_SEMA_PROC_ID)
+                       break;  /* Get the Semaphore*/
+       } while (1);
+
+       return 0;
+}
+
+/*
+ * Unlock the RDC semaphore for this peripheral if main CPU is the
+ * semaphore owner.
+ */
+int imx_rdc_sema_unlock(int per_id)
+{
+       struct rdc_sema_regs *imx_rdc_sema;
+       int ret;
+       u8 reg;
+
+       ret = imx_rdc_check_sema_required(per_id);
+       if (ret)
+               return ret;
+
+       if (per_id < SEMA_GATES_NUM)
+               imx_rdc_sema  = (struct rdc_sema_regs *)SEMAPHORE1_BASE_ADDR;
+       else
+               imx_rdc_sema  = (struct rdc_sema_regs *)SEMAPHORE2_BASE_ADDR;
+
+       reg = readb(&imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
+       if ((reg & RDC_SEMA_GATE_GTFSM_MASK) != RDC_SEMA_PROC_ID)
+               return -EACCES; /*Not the semaphore owner */
+
+       writeb(0x0, &imx_rdc_sema->gate[per_id % SEMA_GATES_NUM]);
+
+       return 0;
+}
+
+/*
+ * Setup RDC setting for one peripheral
+ */
+int imx_rdc_setup_peri(rdc_peri_cfg_t p)
+{
+       struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
+       u32 reg = 0;
+       u32 share_count = 0;
+       u32 peri_id = p & RDC_PERI_MASK;
+       u32 domain = (p & RDC_DOMAIN_MASK) >> RDC_DOMAIN_SHIFT_BASE;
+
+       /* No domain assigned */
+       if (domain == 0)
+               return -EINVAL;
+
+       reg |= domain;
+
+       share_count = (domain & 0x3)
+               + ((domain >> 2) & 0x3)
+               + ((domain >> 4) & 0x3)
+               + ((domain >> 6) & 0x3);
+
+       if (share_count > 0x3)
+               reg |= RDC_PDAP_SREQ_MASK;
+
+       writel(reg, &imx_rdc->pdap[peri_id]);
+
+       return 0;
+}
+
+/*
+ * Setup RDC settings for multiple peripherals
+ */
+int imx_rdc_setup_peripherals(rdc_peri_cfg_t const *peripherals_list,
+                                    unsigned count)
+{
+       rdc_peri_cfg_t const *p = peripherals_list;
+       int i, ret;
+
+       for (i = 0; i < count; i++) {
+               ret = imx_rdc_setup_peri(*p);
+               if (ret)
+                       return ret;
+               p++;
+       }
+
+       return 0;
+}
+
+/*
+ * Setup RDC setting for one master
+ */
+int imx_rdc_setup_ma(rdc_ma_cfg_t p)
+{
+       struct rdc_regs *imx_rdc = (struct rdc_regs *)RDC_BASE_ADDR;
+       u32 master_id = (p & RDC_MASTER_MASK) >> RDC_MASTER_SHIFT;
+       u32 domain = (p & RDC_DOMAIN_MASK) >> RDC_DOMAIN_SHIFT_BASE;
+
+       writel((domain & RDC_MDA_DID_MASK), &imx_rdc->mda[master_id]);
+
+       return 0;
+}
+
+/*
+ * Setup RDC settings for multiple masters
+ */
+int imx_rdc_setup_masters(rdc_ma_cfg_t const *masters_list, unsigned count)
+{
+       rdc_ma_cfg_t const *p = masters_list;
+       int i, ret;
+
+       for (i = 0; i < count; i++) {
+               ret = imx_rdc_setup_ma(*p);
+               if (ret)
+                       return ret;
+               p++;
+       }
+
+       return 0;
+}
diff --git a/arch/arm/mach-imx/sata.c b/arch/arm/mach-imx/sata.c
new file mode 100644 (file)
index 0000000..142a7f4
--- /dev/null
@@ -0,0 +1,38 @@
+/*
+ * Copyright 2011 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/arch/iomux.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+int setup_sata(void)
+{
+       struct iomuxc *const iomuxc_regs = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       int ret;
+
+       if (!is_mx6dq() && !is_mx6dqp())
+               return 1;
+
+       ret = enable_sata_clock();
+       if (ret)
+               return ret;
+
+       clrsetbits_le32(&iomuxc_regs->gpr[13],
+                       IOMUXC_GPR13_SATA_MASK,
+                       IOMUXC_GPR13_SATA_PHY_8_RXEQ_3P0DB
+                       |IOMUXC_GPR13_SATA_PHY_7_SATA2M
+                       |IOMUXC_GPR13_SATA_SPEED_3G
+                       |(3<<IOMUXC_GPR13_SATA_PHY_6_SHIFT)
+                       |IOMUXC_GPR13_SATA_SATA_PHY_5_SS_DISABLED
+                       |IOMUXC_GPR13_SATA_SATA_PHY_4_ATTEN_9_16
+                       |IOMUXC_GPR13_SATA_PHY_3_TXBOOST_0P00_DB
+                       |IOMUXC_GPR13_SATA_PHY_2_TX_1P104V
+                       |IOMUXC_GPR13_SATA_PHY_1_SLOW);
+
+       return 0;
+}
diff --git a/arch/arm/mach-imx/speed.c b/arch/arm/mach-imx/speed.c
new file mode 100644 (file)
index 0000000..26132bf
--- /dev/null
@@ -0,0 +1,45 @@
+/*
+ * (C) Copyright 2000-2003
+ * Wolfgang Denk, DENX Software Engineering, wd@denx.de.
+ *
+ * Copyright (C) 2004-2007 Freescale Semiconductor, Inc.
+ * TsiChung Liew (Tsi-Chung.Liew@freescale.com)
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+
+#ifdef CONFIG_FSL_ESDHC
+DECLARE_GLOBAL_DATA_PTR;
+#endif
+
+int get_clocks(void)
+{
+#ifdef CONFIG_FSL_ESDHC
+#ifdef CONFIG_FSL_USDHC
+#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);
+#elif CONFIG_SYS_FSL_ESDHC_ADDR == USDHC4_BASE_ADDR
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
+#else
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+#endif
+#else
+#if CONFIG_SYS_FSL_ESDHC_ADDR == MMC_SDHC2_BASE_ADDR
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC2_CLK);
+#elif CONFIG_SYS_FSL_ESDHC_ADDR == MMC_SDHC3_BASE_ADDR
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+#elif CONFIG_SYS_FSL_ESDHC_ADDR == MMC_SDHC4_BASE_ADDR
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC4_CLK);
+#else
+       gd->arch.sdhc_clk = mxc_get_clock(MXC_ESDHC_CLK);
+#endif
+#endif
+#endif
+       return 0;
+}
diff --git a/arch/arm/mach-imx/spl.c b/arch/arm/mach-imx/spl.c
new file mode 100644 (file)
index 0000000..75698c4
--- /dev/null
@@ -0,0 +1,128 @@
+/*
+ * Copyright (C) 2014 Gateworks Corporation
+ * Copyright (C) 2011-2012 Freescale Semiconductor, Inc.
+ *
+ * Author: Tim Harvey <tharvey@gateworks.com>
+ *
+ * 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/spl.h>
+#include <spl.h>
+#include <asm/mach-imx/hab.h>
+
+#if defined(CONFIG_MX6)
+/* determine boot device from SRC_SBMR1 (BOOT_CFG[4:1]) or SRC_GPR9 register */
+u32 spl_boot_device(void)
+{
+       unsigned int bmode = readl(&src_base->sbmr2);
+       u32 reg = imx6_src_get_boot_mode();
+
+       /*
+        * Check for BMODE if serial downloader is enabled
+        * BOOT_MODE - see IMX6DQRM Table 8-1
+        */
+       if (((bmode >> 24) & 0x03) == 0x01) /* Serial Downloader */
+               return BOOT_DEVICE_UART;
+
+       /* BOOT_CFG1[7:4] - see IMX6DQRM Table 8-8 */
+       switch ((reg & IMX6_BMODE_MASK) >> IMX6_BMODE_SHIFT) {
+        /* EIM: See 8.5.1, Table 8-9 */
+       case IMX6_BMODE_EMI:
+               /* BOOT_CFG1[3]: NOR/OneNAND Selection */
+               switch ((reg & IMX6_BMODE_EMI_MASK) >> IMX6_BMODE_EMI_SHIFT) {
+               case IMX6_BMODE_ONENAND:
+                       return BOOT_DEVICE_ONENAND;
+               case IMX6_BMODE_NOR:
+                       return BOOT_DEVICE_NOR;
+               break;
+               }
+       /* Reserved: Used to force Serial Downloader */
+       case IMX6_BMODE_UART:
+               return BOOT_DEVICE_UART;
+       /* SATA: See 8.5.4, Table 8-20 */
+       case IMX6_BMODE_SATA:
+               return BOOT_DEVICE_SATA;
+       /* Serial ROM: See 8.5.5.1, Table 8-22 */
+       case IMX6_BMODE_SERIAL_ROM:
+               /* BOOT_CFG4[2:0] */
+               switch ((reg & IMX6_BMODE_SERIAL_ROM_MASK) >>
+                       IMX6_BMODE_SERIAL_ROM_SHIFT) {
+               case IMX6_BMODE_ECSPI1:
+               case IMX6_BMODE_ECSPI2:
+               case IMX6_BMODE_ECSPI3:
+               case IMX6_BMODE_ECSPI4:
+               case IMX6_BMODE_ECSPI5:
+                       return BOOT_DEVICE_SPI;
+               case IMX6_BMODE_I2C1:
+               case IMX6_BMODE_I2C2:
+               case IMX6_BMODE_I2C3:
+                       return BOOT_DEVICE_I2C;
+               }
+               break;
+       /* SD/eSD: 8.5.3, Table 8-15  */
+       case IMX6_BMODE_SD:
+       case IMX6_BMODE_ESD:
+               return BOOT_DEVICE_MMC1;
+       /* MMC/eMMC: 8.5.3 */
+       case IMX6_BMODE_MMC:
+       case IMX6_BMODE_EMMC:
+               return BOOT_DEVICE_MMC1;
+       /* NAND Flash: 8.5.2, Table 8-10 */
+       case IMX6_BMODE_NAND:
+               return BOOT_DEVICE_NAND;
+       }
+       return BOOT_DEVICE_NONE;
+}
+#endif
+
+#if defined(CONFIG_SPL_MMC_SUPPORT)
+/* called from spl_mmc to see type of boot mode for storage (RAW or FAT) */
+u32 spl_boot_mode(const u32 boot_device)
+{
+       switch (spl_boot_device()) {
+       /* for MMC return either RAW or FAT mode */
+       case BOOT_DEVICE_MMC1:
+       case BOOT_DEVICE_MMC2:
+#if defined(CONFIG_SPL_FAT_SUPPORT)
+               return MMCSD_MODE_FS;
+#elif defined(CONFIG_SUPPORT_EMMC_BOOT)
+               return MMCSD_MODE_EMMCBOOT;
+#else
+               return MMCSD_MODE_RAW;
+#endif
+               break;
+       default:
+               puts("spl: ERROR:  unsupported device\n");
+               hang();
+       }
+}
+#endif
+
+#if defined(CONFIG_SECURE_BOOT)
+
+__weak void __noreturn jump_to_image_no_args(struct spl_image_info *spl_image)
+{
+       typedef void __noreturn (*image_entry_noargs_t)(void);
+
+       image_entry_noargs_t image_entry =
+               (image_entry_noargs_t)(unsigned long)spl_image->entry_point;
+
+       debug("image entry point: 0x%lX\n", spl_image->entry_point);
+
+       /* HAB looks for the CSF at the end of the authenticated data therefore,
+        * we need to subtract the size of the CSF from the actual filesize */
+       if (authenticate_image(spl_image->load_addr,
+                              spl_image->size - CONFIG_CSF_SIZE)) {
+               image_entry();
+       } else {
+               puts("spl: ERROR:  image authentication unsuccessful\n");
+               hang();
+       }
+}
+
+#endif
diff --git a/arch/arm/mach-imx/spl_sd.cfg b/arch/arm/mach-imx/spl_sd.cfg
new file mode 100644 (file)
index 0000000..14c135c
--- /dev/null
@@ -0,0 +1,18 @@
+/*
+ * Copyright (C) 2014, Compulab Ltd - http://compulab.co.il/
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#define __ASSEMBLY__
+#include <config.h>
+
+IMAGE_VERSION  2
+BOOT_FROM      sd
+
+/*
+ * Secure boot support
+ */
+#ifdef CONFIG_SECURE_BOOT
+CSF CONFIG_CSF_SIZE
+#endif
\ No newline at end of file
diff --git a/arch/arm/mach-imx/syscounter.c b/arch/arm/mach-imx/syscounter.c
new file mode 100644 (file)
index 0000000..9290918
--- /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/mach-imx/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;
+}
diff --git a/arch/arm/mach-imx/timer.c b/arch/arm/mach-imx/timer.c
new file mode 100644 (file)
index 0000000..9b01114
--- /dev/null
@@ -0,0 +1,139 @@
+/*
+ * (C) Copyright 2007
+ * Sascha Hauer, Pengutronix
+ *
+ * (C) Copyright 2009 Freescale Semiconductor, Inc.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <div64.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/sys_proto.h>
+
+/* General purpose timers registers */
+struct mxc_gpt {
+       unsigned int control;
+       unsigned int prescaler;
+       unsigned int status;
+       unsigned int nouse[6];
+       unsigned int counter;
+};
+
+static struct mxc_gpt *cur_gpt = (struct mxc_gpt *)GPT1_BASE_ADDR;
+
+/* General purpose timers bitfields */
+#define GPTCR_SWR              (1 << 15)       /* Software reset */
+#define GPTCR_24MEN        (1 << 10)   /* Enable 24MHz clock input */
+#define GPTCR_FRR              (1 << 9)        /* Freerun / restart */
+#define GPTCR_CLKSOURCE_32     (4 << 6)        /* Clock source 32khz */
+#define GPTCR_CLKSOURCE_OSC    (5 << 6)        /* Clock source OSC */
+#define GPTCR_CLKSOURCE_PRE    (1 << 6)        /* Clock source PRECLK */
+#define GPTCR_CLKSOURCE_MASK (0x7 << 6)
+#define GPTCR_TEN              1               /* Timer enable */
+
+#define GPTPR_PRESCALER24M_SHIFT 12
+#define GPTPR_PRESCALER24M_MASK (0xF << GPTPR_PRESCALER24M_SHIFT)
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static inline int gpt_has_clk_source_osc(void)
+{
+#if defined(CONFIG_MX6)
+       if (((is_mx6dq()) && (soc_rev() > CHIP_REV_1_0)) ||
+           is_mx6dqp() || is_mx6sdl() || is_mx6sx() || is_mx6ul() ||
+           is_mx6ull() || is_mx6sll())
+               return 1;
+
+       return 0;
+#else
+       return 0;
+#endif
+}
+
+static inline ulong gpt_get_clk(void)
+{
+#ifdef CONFIG_MXC_GPT_HCLK
+       if (gpt_has_clk_source_osc())
+               return MXC_HCLK >> 3;
+       else
+               return mxc_get_clock(MXC_IPG_PERCLK);
+#else
+       return MXC_CLK32;
+#endif
+}
+
+int timer_init(void)
+{
+       int i;
+
+       /* setup GP Timer 1 */
+       __raw_writel(GPTCR_SWR, &cur_gpt->control);
+
+       /* We have no udelay by now */
+       for (i = 0; i < 100; i++)
+               __raw_writel(0, &cur_gpt->control);
+
+       i = __raw_readl(&cur_gpt->control);
+       i &= ~GPTCR_CLKSOURCE_MASK;
+
+#ifdef CONFIG_MXC_GPT_HCLK
+       if (gpt_has_clk_source_osc()) {
+               i |= GPTCR_CLKSOURCE_OSC | GPTCR_TEN;
+
+               /*
+                * For DL/S, SX, UL, ULL, SLL set 24Mhz OSC
+                * Enable bit and prescaler
+                */
+               if (is_mx6sdl() || is_mx6sx() || is_mx6ul() || is_mx6ull() ||
+                   is_mx6sll()) {
+                       i |= GPTCR_24MEN;
+
+                       /* Produce 3Mhz clock */
+                       __raw_writel((7 << GPTPR_PRESCALER24M_SHIFT),
+                                    &cur_gpt->prescaler);
+               }
+       } else {
+               i |= GPTCR_CLKSOURCE_PRE | GPTCR_TEN;
+       }
+#else
+       __raw_writel(0, &cur_gpt->prescaler); /* 32Khz */
+       i |= GPTCR_CLKSOURCE_32 | GPTCR_TEN;
+#endif
+       __raw_writel(i, &cur_gpt->control);
+
+       return 0;
+}
+
+unsigned long timer_read_counter(void)
+{
+       return __raw_readl(&cur_gpt->counter); /* current tick value */
+}
+
+/*
+ * This function is derived from PowerPC code (timebase clock frequency).
+ * On ARM it returns the number of timer ticks per second.
+ */
+ulong get_tbclk(void)
+{
+       return gpt_get_clk();
+}
+
+/*
+ * 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)
+{
+       unsigned long long usec = _usec;
+
+       usec *= get_tbclk();
+       usec += 999999;
+       do_div(usec, 1000000);
+
+       return usec;
+}
diff --git a/arch/arm/mach-imx/video.c b/arch/arm/mach-imx/video.c
new file mode 100644 (file)
index 0000000..55242f0
--- /dev/null
@@ -0,0 +1,66 @@
+/*
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <linux/errno.h>
+#include <asm/mach-imx/video.h>
+
+int board_video_skip(void)
+{
+       int i;
+       int ret;
+       char const *panel = getenv("panel");
+
+       if (!panel) {
+               for (i = 0; i < display_count; i++) {
+                       struct display_info_t const *dev = displays+i;
+                       if (dev->detect && dev->detect(dev)) {
+                               panel = dev->mode.name;
+                               printf("auto-detected panel %s\n", panel);
+                               break;
+                       }
+               }
+               if (!panel) {
+                       panel = displays[0].mode.name;
+                       printf("No panel detected: default to %s\n", panel);
+                       i = 0;
+               }
+       } else {
+               for (i = 0; i < display_count; i++) {
+                       if (!strcmp(panel, displays[i].mode.name))
+                               break;
+               }
+       }
+
+       if (i < display_count) {
+               ret = ipuv3_fb_init(&displays[i].mode, displays[i].di ? 1 : 0,
+                                   displays[i].pixfmt);
+               if (!ret) {
+                       if (displays[i].enable)
+                               displays[i].enable(displays + i);
+
+                       printf("Display: %s (%ux%u)\n",
+                              displays[i].mode.name,
+                              displays[i].mode.xres,
+                              displays[i].mode.yres);
+               } else
+                       printf("LCD %s cannot be configured: %d\n",
+                              displays[i].mode.name, ret);
+       } else {
+               printf("unsupported panel %s\n", panel);
+               return -EINVAL;
+       }
+
+       return 0;
+}
+
+#ifdef CONFIG_IMX_HDMI
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/io.h>
+int detect_hdmi(struct display_info_t const *dev)
+{
+       struct hdmi_regs *hdmi  = (struct hdmi_regs *)HDMI_ARB_BASE_ADDR;
+       return readb(&hdmi->phy_stat0) & HDMI_DVI_STAT;
+}
+#endif
index d506ee5b39cda6eb051c396259b0800df6f986ac..5146e51f9cab1452a1e03e8a9652434fe02d9377 100644 (file)
@@ -11,11 +11,13 @@ config ARCH_INTEGRATOR_AP
 config ARCH_INTEGRATOR_CP
        bool "Support Integrator/CP platform"
        select ARCH_CINTEGRATOR
+       imply ENV_IS_IN_FLASH
 
 endchoice
 
 config ARCH_CINTEGRATOR
        bool
+       imply ENV_IS_IN_FLASH
 
 choice
        prompt "Integrator core module select"
index 591e75826b02a75707dc019f90f8b56c779688a3..c2525bd75663d3cfb7a1c31cdcfc260c438c04db 100644 (file)
@@ -19,6 +19,7 @@ static int do_mon_install(cmd_tbl_t *cmdtp, int flag, int argc,
        u32 addr, dpsc_base = 0x1E80000, freq, load_addr, size;
        int     rcode = 0;
        struct image_header *header;
+       u32 ecrypt_bm_addr = 0;
 
        if (argc < 2)
                return CMD_RET_USAGE;
@@ -39,14 +40,17 @@ static int do_mon_install(cmd_tbl_t *cmdtp, int flag, int argc,
        memcpy((void *)load_addr, (void *)(addr + sizeof(struct image_header)),
               size);
 
-       rcode = mon_install(load_addr, dpsc_base, freq);
+       if (argc >=  3)
+               ecrypt_bm_addr = simple_strtoul(argv[2], NULL, 16);
+
+       rcode = mon_install(load_addr, dpsc_base, freq, ecrypt_bm_addr);
        printf("## installed monitor @ 0x%x, freq [%d], status %d\n",
               load_addr, freq, rcode);
 
        return 0;
 }
 
-U_BOOT_CMD(mon_install, 2, 0, do_mon_install,
+U_BOOT_CMD(mon_install, 3, 0, do_mon_install,
           "Install boot kernel at 'addr'",
           ""
 );
index eb7aa938af0239076b282fd441a7c30ba8149fb8..30c57e0f8ff5ef8df063f10ffd0d1d42ef6980b8 100644 (file)
@@ -10,7 +10,7 @@
 #ifndef _MACH_MON_H_
 #define _MACH_MON_H_
 
-int mon_install(u32 addr, u32 dpsc, u32 freq);
+int mon_install(u32 addr, u32 dpsc, u32 freq, u32 bm_addr);
 int mon_power_on(int core_id, void *ep);
 int mon_power_off(int core_id);
 
index ebfb483a1bccd48d2988ed1218451d7bf89f1fc2..dd446ab011d15cca719f8e149410dbbaf56edfcf 100644 (file)
@@ -13,7 +13,7 @@
 #include <spl.h>
 asm(".arch_extension sec\n\t");
 
-int mon_install(u32 addr, u32 dpsc, u32 freq)
+int mon_install(u32 addr, u32 dpsc, u32 freq, u32 bm_addr)
 {
        int result;
 
@@ -22,11 +22,13 @@ int mon_install(u32 addr, u32 dpsc, u32 freq)
                "mov r0, %1\n"
                "mov r1, %2\n"
                "mov r2, %3\n"
+               "mov r3, %4\n"
                "blx r0\n"
+               "mov %0, r0\n"
                "ldmfd r13!, {lr}\n"
                : "=&r" (result)
-               : "r" (addr), "r" (dpsc), "r" (freq)
-               : "cc", "r0", "r1", "r2", "memory");
+               : "r" (addr), "r" (dpsc), "r" (freq), "r" (bm_addr)
+               : "cc", "r0", "r1", "r2", "r3", "memory");
        return result;
 }
 
@@ -40,6 +42,7 @@ int mon_power_on(int core_id, void *ep)
                "mov r2, %2\n"
                "mov r0, #0\n"
                "smc    #0\n"
+               "mov %0, r0\n"
                "ldmfd  r13!, {lr}\n"
                : "=&r" (result)
                : "r" (core_id), "r" (ep)
@@ -56,6 +59,7 @@ int mon_power_off(int core_id)
                "mov r1, %1\n"
                "mov r0, #1\n"
                "smc    #1\n"
+               "mov %0, r0\n"
                "ldmfd  r13!, {lr}\n"
                : "=&r" (result)
                : "r" (core_id)
@@ -89,6 +93,7 @@ static int k2_hs_bm_auth(int cmd, void *arg1)
                "mov r0, %1\n"
                "mov r1, %2\n"
                "smc #2\n"
+               "mov %0, r0\n"
                "ldmfd r13!, {r4-r12, lr}\n"
                : "=&r" (result)
                : "r" (cmd), "r" (arg1)
index 273dbeb02081f1c5005e32b9e09b3eeaaec7cae5..e89c6aace98d6e021ee5b86030ac7529623aafc5 100644 (file)
@@ -37,9 +37,11 @@ int dram_init(void)
 int dram_init_banksize(void)
 {
        /* Reserve first 16 MiB of RAM for firmware */
-       gd->bd->bi_dram[0].start = CONFIG_SYS_SDRAM_BASE + (16 * 1024 * 1024);
-       gd->bd->bi_dram[0].size = gd->ram_size - (16 * 1024 * 1024);
-
+       gd->bd->bi_dram[0].start = 0x1000000;
+       gd->bd->bi_dram[0].size  = 0xf000000;
+       /* Reserve 2 MiB for ARM Trusted Firmware (BL31) */
+       gd->bd->bi_dram[1].start = 0x10000000;
+       gd->bd->bi_dram[1].size  = gd->ram_size - 0x10200000;
        return 0;
 }
 
index 3e48d58fcc787ab678c0684a9acd199f00a761d6..1b12b330608e8f4aeb3710ecf08f67843e68df3d 100644 (file)
@@ -32,6 +32,7 @@ config ARMADA_38X
 config ARMADA_XP
        bool
        select ARMADA_32BIT
+       imply ENV_IS_IN_SPI_FLASH
 
 # ARMv8 SoCs...
 config ARMADA_3700
@@ -92,6 +93,10 @@ config TARGET_DB_88F6820_AMC
        bool "Support DB-88F6820-AMC"
        select 88F6820
 
+config TARGET_TURRIS_OMNIA
+       bool "Support Turris Omnia"
+       select 88F6820
+
 config TARGET_MVEBU_ARMADA_8K
        bool "Support Armada 7k/8k platforms"
        select ARMADA_8K
@@ -128,6 +133,7 @@ config SYS_BOARD
        default "db-88f6720" if TARGET_DB_88F6720
        default "db-88f6820-gp" if TARGET_DB_88F6820_GP
        default "db-88f6820-amc" if TARGET_DB_88F6820_AMC
+       default "turris_omnia" if TARGET_TURRIS_OMNIA
        default "mvebu_armada-8k" if TARGET_MVEBU_ARMADA_8K
        default "db-mv784mp-gp" if TARGET_DB_MV784MP_GP
        default "ds414" if TARGET_DS414
@@ -145,6 +151,7 @@ config SYS_CONFIG_NAME
        default "ds414" if TARGET_DS414
        default "maxbcm" if TARGET_MAXBCM
        default "theadorable" if TARGET_THEADORABLE
+       default "turris_omnia" if TARGET_TURRIS_OMNIA
 
 config SYS_VENDOR
        default "Marvell" if TARGET_DB_MV784MP_GP
@@ -155,10 +162,26 @@ config SYS_VENDOR
        default "Marvell" if TARGET_MVEBU_ARMADA_8K
        default "solidrun" if TARGET_CLEARFOG
        default "Synology" if TARGET_DS414
+       default "CZ.NIC" if TARGET_TURRIS_OMNIA
 
 config SYS_SOC
        default "mvebu"
 
+if TARGET_TURRIS_OMNIA
+
+choice
+       prompt "Turris Omnia boot method"
+
+config TURRIS_OMNIA_SPL_BOOT_DEVICE_SPI
+       bool "SPI NOR flash"
+
+config TURRIS_OMNIA_SPL_BOOT_DEVICE_MMC
+       bool "SDIO/MMC card"
+
+endchoice
+
+endif
+
 config MVEBU_EFUSE
        bool "Enable eFuse support"
        default n
index 683cdb92963dbab52b59ae3ba1620e25df396c27..013586edd97fbf98935f46e4b8bfed07e1c87d6f 100644 (file)
@@ -119,6 +119,32 @@ config TI_SECURE_DEVICE
          authenticated) and the code. See the doc/README.ti-secure
          file for further details.
 
+config TI_SECURE_EMIF_REGION_START
+       hex "Reserved EMIF region start address"
+       depends on TI_SECURE_DEVICE
+       default 0x0
+       help
+         Reserved EMIF region start address. Set to "0" to auto-select
+         to be at the end of the external memory region.
+
+config TI_SECURE_EMIF_TOTAL_REGION_SIZE
+       hex "Reserved EMIF region size"
+       depends on TI_SECURE_DEVICE
+       default 0x0
+       help
+         Total reserved EMIF region size. Default is 0, which means no reserved EMIF
+         region on secure devices.
+
+config TI_SECURE_EMIF_PROTECTED_REGION_SIZE
+       hex "Size of protected region within reserved EMIF region"
+       depends on TI_SECURE_DEVICE
+       default 0x0
+       help
+         This config option is used to specify the size of the portion of the total
+         reserved EMIF region set aside for secure OS needs that will  be protected
+         using hardware memory firewalls. This value must be smaller than the
+         TI_SECURE_EMIF_TOTAL_REGION_SIZE value.
+
 source "arch/arm/mach-omap2/omap3/Kconfig"
 
 source "arch/arm/mach-omap2/omap4/Kconfig"
index d43085ca98b210b2e1f22c6f4707419c2bc6809d..d86643db34a7afa308785ec32504a9553431eba8 100644 (file)
@@ -45,4 +45,6 @@ obj-y += lowlevel_init.o
 
 obj-y  += mem-common.o
 
+obj-y  += fdt-common.o
+
 obj-$(CONFIG_TI_SECURE_DEVICE) += sec-common.o
index b2f8158e7334118150e622c1c29356c771f66bbe..9d4f83cb75acb5a394c95ac076b76f6efc2b5261 100644 (file)
@@ -23,6 +23,7 @@ obj-y += board.o
 obj-y  += mux.o
 obj-y  += prcm-regs.o
 obj-y  += hw_data.o
+obj-y  += fdt.o
 
 obj-$(CONFIG_CLOCK_SYNTHESIZER)        += clk_synthesizer.o
 
index db757d91fbfea2752744b8ff1f5f712672bd0733..913a44ad64b4f0ece107a4c88ad17e13cc431504 100644 (file)
@@ -213,11 +213,9 @@ static struct musb_hdrc_platform_data otg1_plat = {
        .board_data     = &otg1_board_data,
 };
 #endif
-#endif
 
 int arch_misc_init(void)
 {
-#ifndef CONFIG_DM_USB
 #ifdef CONFIG_AM335X_USB0
        musb_register(&otg0_plat, &otg0_board_data,
                (void *)USB0_OTG_BASE);
@@ -226,7 +224,13 @@ int arch_misc_init(void)
        musb_register(&otg1_plat, &otg1_board_data,
                (void *)USB1_OTG_BASE);
 #endif
-#else
+       return 0;
+}
+
+#else  /* CONFIG_USB_MUSB_* && CONFIG_AM335X_USB* && !CONFIG_DM_USB */
+
+int arch_misc_init(void)
+{
        struct udevice *dev;
        int ret;
 
@@ -241,10 +245,12 @@ int arch_misc_init(void)
                return ret;
        }
 #endif
-#endif
+
        return 0;
 }
 
+#endif /* CONFIG_USB_MUSB_* && CONFIG_AM335X_USB* && !CONFIG_DM_USB */
+
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
 /*
  * In the case of non-SPL based booting we'll want to call these
index 967623d467b03ff1a4e9dfcc1f48eef30cd17b9b..e9c7b2d99690576653288af028582f1a59df6628 100644 (file)
@@ -335,7 +335,13 @@ static void peripheral_enable(void)
        writel(PRCM_MOD_EN, &cmalwon->gpio0clkctrl);
        while (readl(&cmalwon->gpio0clkctrl) != PRCM_MOD_EN)
                ;
-       writel((BIT(8)), &cmalwon->gpio0clkctrl);
+       writel((BIT(1) | BIT(8)), &cmalwon->gpio0clkctrl);
+
+       /* Enable gpio1 */
+       writel(PRCM_MOD_EN, &cmalwon->gpio1clkctrl);
+       while (readl(&cmalwon->gpio1clkctrl) != PRCM_MOD_EN)
+               ;
+       writel((BIT(1) | BIT(8)), &cmalwon->gpio1clkctrl);
 
        /* Enable spi */
        writel(PRCM_MOD_EN, &cmalwon->spiclkctrl);
diff --git a/arch/arm/mach-omap2/am33xx/fdt.c b/arch/arm/mach-omap2/am33xx/fdt.c
new file mode 100644 (file)
index 0000000..02e8243
--- /dev/null
@@ -0,0 +1,43 @@
+/*
+ * Copyright 2017 Texas Instruments, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+#include <malloc.h>
+
+#include <asm/omap_common.h>
+#include <asm/arch-am33xx/sys_proto.h>
+
+#ifdef CONFIG_TI_SECURE_DEVICE
+
+static void ft_hs_fixups(void *fdt, bd_t *bd)
+{
+       /* Check we are running on an HS/EMU device type */
+       if (GP_DEVICE != get_device_type()) {
+               if ((ft_hs_disable_rng(fdt, bd) == 0) &&
+                   (ft_hs_fixup_dram(fdt, bd) == 0) &&
+                   (ft_hs_add_tee(fdt, bd) == 0))
+                       return;
+       } else {
+               printf("ERROR: Incorrect device type (GP) detected!");
+       }
+       /* Fixup failed or wrong device type */
+       hang();
+}
+#else
+static void ft_hs_fixups(void *fdt, bd_t *bd) { }
+#endif /* #ifdef CONFIG_TI_SECURE_DEVICE */
+
+/*
+ * Place for general cpu/SoC FDT fixups. Board specific
+ * fixups should remain in the board files which is where
+ * this function should be called from.
+ */
+void ft_cpu_setup(void *fdt, bd_t *bd)
+{
+       ft_hs_fixups(fdt, bd);
+}
diff --git a/arch/arm/mach-omap2/fdt-common.c b/arch/arm/mach-omap2/fdt-common.c
new file mode 100644 (file)
index 0000000..9297e9d
--- /dev/null
@@ -0,0 +1,168 @@
+/*
+ * Copyright 2016-2017 Texas Instruments, Inc.
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <libfdt.h>
+#include <fdt_support.h>
+
+#include <asm/omap_common.h>
+#include <asm/omap_sec_common.h>
+
+#ifdef CONFIG_TI_SECURE_DEVICE
+
+/* Give zero values if not already defined */
+#ifndef TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ
+#define TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ (0)
+#endif
+#ifndef CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ
+#define CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ (0)
+#endif
+
+int ft_hs_disable_rng(void *fdt, bd_t *bd)
+{
+       const char *path;
+       int offs;
+       int ret;
+
+       /* Make HW RNG reserved for secure world use */
+       path = "/ocp/rng";
+       offs = fdt_path_offset(fdt, path);
+       if (offs < 0) {
+               debug("Node %s not found.\n", path);
+               return 0;
+       }
+       ret = fdt_setprop_string(fdt, offs,
+                                "status", "disabled");
+       if (ret < 0) {
+               printf("Could not add status property to node %s: %s\n",
+                      path, fdt_strerror(ret));
+               return ret;
+       }
+       return 0;
+}
+
+#if (CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE != 0)
+/*
+ * fdt_pack_reg - pack address and size array into the "reg"-suitable stream
+ */
+static int fdt_pack_reg(const void *fdt, void *buf, u64 address, u64 size)
+{
+       int address_cells = fdt_address_cells(fdt, 0);
+       int size_cells = fdt_size_cells(fdt, 0);
+       char *p = buf;
+
+       if (address_cells == 2)
+               *(fdt64_t *)p = cpu_to_fdt64(address);
+       else
+               *(fdt32_t *)p = cpu_to_fdt32(address);
+       p += 4 * address_cells;
+
+       if (size_cells == 2)
+               *(fdt64_t *)p = cpu_to_fdt64(size);
+       else
+               *(fdt32_t *)p = cpu_to_fdt32(size);
+       p += 4 * size_cells;
+
+       return p - (char *)buf;
+}
+
+int ft_hs_fixup_dram(void *fdt, bd_t *bd)
+{
+       const char *path, *subpath;
+       int offs, len;
+       u32 sec_mem_start = get_sec_mem_start();
+       u32 sec_mem_size = CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE;
+       fdt32_t address_cells = cpu_to_fdt32(fdt_address_cells(fdt, 0));
+       fdt32_t size_cells = cpu_to_fdt32(fdt_size_cells(fdt, 0));
+       u8 temp[16]; /* Up to 64-bit address + 64-bit size */
+
+       /* Delete any original secure_reserved node */
+       path = "/reserved-memory/secure_reserved";
+       offs = fdt_path_offset(fdt, path);
+       if (offs >= 0)
+               fdt_del_node(fdt, offs);
+
+       /* Add new secure_reserved node */
+       path = "/reserved-memory";
+       offs = fdt_path_offset(fdt, path);
+       if (offs < 0) {
+               debug("Node %s not found\n", path);
+               path = "/";
+               subpath = "reserved-memory";
+               offs = fdt_path_offset(fdt, path);
+               offs = fdt_add_subnode(fdt, offs, subpath);
+               if (offs < 0) {
+                       printf("Could not create %s%s node.\n", path, subpath);
+                       return 1;
+               }
+               path = "/reserved-memory";
+               offs = fdt_path_offset(fdt, path);
+
+               fdt_setprop(fdt, offs, "#address-cells", &address_cells, sizeof(address_cells));
+               fdt_setprop(fdt, offs, "#size-cells", &size_cells, sizeof(size_cells));
+               fdt_setprop(fdt, offs, "ranges", NULL, 0);
+       }
+
+       subpath = "secure_reserved";
+       offs = fdt_add_subnode(fdt, offs, subpath);
+       if (offs < 0) {
+               printf("Could not create %s%s node.\n", path, subpath);
+               return 1;
+       }
+
+       fdt_setprop_string(fdt, offs, "compatible", "ti,secure-memory");
+       fdt_setprop_string(fdt, offs, "status", "okay");
+       fdt_setprop(fdt, offs, "no-map", NULL, 0);
+       len = fdt_pack_reg(fdt, temp, sec_mem_start, sec_mem_size);
+       fdt_setprop(fdt, offs, "reg", temp, len);
+
+       return 0;
+}
+#else
+int ft_hs_fixup_dram(void *fdt, bd_t *bd) { return 0; }
+#endif
+
+int ft_hs_add_tee(void *fdt, bd_t *bd)
+{
+       const char *path, *subpath;
+       int offs;
+
+       extern int tee_loaded;
+       if (!tee_loaded)
+               return 0;
+
+       path = "/firmware";
+       offs = fdt_path_offset(fdt, path);
+       if (offs < 0) {
+               path = "/";
+               offs = fdt_path_offset(fdt, path);
+               if (offs < 0) {
+                       printf("Could not find root node.\n");
+                       return 1;
+               }
+
+               subpath = "firmware";
+               offs = fdt_add_subnode(fdt, offs, subpath);
+               if (offs < 0) {
+                       printf("Could not create %s node.\n", subpath);
+                       return 1;
+               }
+       }
+
+       subpath = "optee";
+       offs = fdt_add_subnode(fdt, offs, subpath);
+       if (offs < 0) {
+               printf("Could not create %s node.\n", subpath);
+               return 1;
+       }
+
+       fdt_setprop_string(fdt, offs, "compatible", "linaro,optee-tz");
+       fdt_setprop_string(fdt, offs, "method", "smc");
+
+       return 0;
+}
+
+#endif
index cd8e302272913414e4438a555d08a2151580d969..a61b9331450e31155f78f82050f91a61758522da 100644 (file)
@@ -212,6 +212,12 @@ void board_init_f(ulong dummy)
 {
        early_system_init();
        mem_init();
+       /*
+       * Save the boot parameters passed from romcode.
+       * We cannot delay the saving further than this,
+       * to prevent overwrites.
+       */
+       save_omap_boot_params();
 }
 #endif
 
index 08f45bc8688b430e6cc69520688466d38ed95926..30a9ff9c7b7e0eb966958f516a0beb6673693e9e 100644 (file)
@@ -39,32 +39,6 @@ endchoice
 config SYS_SOC
        default "omap5"
 
-config TI_SECURE_EMIF_REGION_START
-       hex "Reserved EMIF region start address"
-       depends on TI_SECURE_DEVICE
-       default 0x0
-       help
-         Reserved EMIF region start address. Set to "0" to auto-select
-         to be at the end of the external memory region.
-
-config TI_SECURE_EMIF_TOTAL_REGION_SIZE
-       hex "Reserved EMIF region size"
-       depends on TI_SECURE_DEVICE
-       default 0x0
-       help
-         Total reserved EMIF region size. Default is 0, which means no reserved EMIF
-         region on secure devices.
-
-config TI_SECURE_EMIF_PROTECTED_REGION_SIZE
-       hex "Size of protected region within reserved EMIF region"
-       depends on TI_SECURE_DEVICE
-       default 0x0
-       help
-         This config option is used to specify the size of the portion of the total
-         reserved EMIF region set aside for secure OS needs that will  be protected
-         using hardware memory firewalls. This value must be smaller than the
-         TI_SECURE_EMIF_TOTAL_REGION_SIZE value.
-
 config OMAP_PLATFORM_RESET_TIME_MAX_USEC
        int "Something"
        range 0  31219
index af17a3deab173aab9b67e0a764f53b3b5cba8ea0..a6a5d17ff63d242c63ba1ecfda038a7c068a0629 100644 (file)
@@ -14,5 +14,4 @@ obj-y += hw_data.o
 obj-y  += abb.o
 obj-y  += fdt.o
 obj-$(CONFIG_IODELAY_RECALIBRATION) += dra7xx_iodelay.o
-obj-$(CONFIG_TI_SECURE_DEVICE) += sec-fxns.o
 obj-$(CONFIG_DRA7XX) += sec_entry_cpu1.o
index 7a3a8db5179408bd7c06f6a8ebe8d2c7569494b6..1e556da9beefb4e76f74d9c2f75228b61bcca0e0 100644 (file)
@@ -90,29 +90,6 @@ static int ft_hs_fixup_crossbar(void *fdt, bd_t *bd)
        return 0;
 }
 
-static int ft_hs_disable_rng(void *fdt, bd_t *bd)
-{
-       const char *path;
-       int offs;
-       int ret;
-
-       /* Make HW RNG reserved for secure world use */
-       path = "/ocp/rng";
-       offs = fdt_path_offset(fdt, path);
-       if (offs < 0) {
-               debug("Node %s not found.\n", path);
-               return 0;
-       }
-       ret = fdt_setprop_string(fdt, offs,
-                                "status", "disabled");
-       if (ret < 0) {
-               printf("Could not add status property to node %s: %s\n",
-                      path, fdt_strerror(ret));
-               return ret;
-       }
-       return 0;
-}
-
 #if ((TI_OMAP5_SECURE_BOOT_RESV_SRAM_SZ != 0) || \
     (CONFIG_SECURE_RUNTIME_RESV_SRAM_SZ != 0))
 static int ft_hs_fixup_sram(void *fdt, bd_t *bd)
@@ -153,102 +130,6 @@ static int ft_hs_fixup_sram(void *fdt, bd_t *bd)
 static int ft_hs_fixup_sram(void *fdt, bd_t *bd) { return 0; }
 #endif
 
-#if (CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE != 0)
-static int ft_hs_fixup_dram(void *fdt, bd_t *bd)
-{
-       const char *path, *subpath;
-       int offs;
-       u32 sec_mem_start = CONFIG_TI_SECURE_EMIF_REGION_START;
-       u32 sec_mem_size = CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE;
-       fdt64_t temp[2];
-       fdt32_t two;
-
-       /* If start address is zero, place at end of DRAM */
-       if (0 == sec_mem_start)
-               sec_mem_start =
-                       (CONFIG_SYS_SDRAM_BASE +
-                       (omap_sdram_size() - sec_mem_size));
-
-       /* Delete any original secure_reserved node */
-       path = "/reserved-memory/secure_reserved";
-       offs = fdt_path_offset(fdt, path);
-       if (offs >= 0)
-               fdt_del_node(fdt, offs);
-
-       /* Add new secure_reserved node */
-       path = "/reserved-memory";
-       offs = fdt_path_offset(fdt, path);
-       if (offs < 0) {
-               debug("Node %s not found\n", path);
-               path = "/";
-               subpath = "reserved-memory";
-               offs = fdt_path_offset(fdt, path);
-               offs = fdt_add_subnode(fdt, offs, subpath);
-               if (offs < 0) {
-                       printf("Could not create %s%s node.\n", path, subpath);
-                       return 1;
-               }
-               path = "/reserved-memory";
-               offs = fdt_path_offset(fdt, path);
-               two = cpu_to_fdt32(2);
-               fdt_setprop(fdt, offs, "#address-cells", &two, sizeof(two));
-               fdt_setprop(fdt, offs, "#size-cells", &two, sizeof(two));
-               fdt_setprop(fdt, offs, "ranges", NULL, 0);
-       }
-
-       subpath = "secure_reserved";
-       offs = fdt_add_subnode(fdt, offs, subpath);
-       if (offs < 0) {
-               printf("Could not create %s%s node.\n", path, subpath);
-               return 1;
-       }
-
-       temp[0] = cpu_to_fdt64(((u64)sec_mem_start));
-       temp[1] = cpu_to_fdt64(((u64)sec_mem_size));
-       fdt_setprop_string(fdt, offs, "compatible",
-                          "ti,dra7-secure-memory");
-       fdt_setprop_string(fdt, offs, "status", "okay");
-       fdt_setprop(fdt, offs, "no-map", NULL, 0);
-       fdt_setprop(fdt, offs, "reg", temp, sizeof(temp));
-
-       return 0;
-}
-#else
-static int ft_hs_fixup_dram(void *fdt, bd_t *bd) { return 0; }
-#endif
-
-static int ft_hs_add_tee(void *fdt, bd_t *bd)
-{
-       const char *path, *subpath;
-       int offs;
-
-       extern int tee_loaded;
-       if (!tee_loaded)
-               return 0;
-
-       path = "/";
-       offs = fdt_path_offset(fdt, path);
-
-       subpath = "firmware";
-       offs = fdt_add_subnode(fdt, offs, subpath);
-       if (offs < 0) {
-               printf("Could not create %s node.\n", subpath);
-               return 1;
-       }
-
-       subpath = "optee";
-       offs = fdt_add_subnode(fdt, offs, subpath);
-       if (offs < 0) {
-               printf("Could not create %s node.\n", subpath);
-               return 1;
-       }
-
-       fdt_setprop_string(fdt, offs, "compatible", "linaro,optee-tz");
-       fdt_setprop_string(fdt, offs, "method", "smc");
-
-       return 0;
-}
-
 static void ft_hs_fixups(void *fdt, bd_t *bd)
 {
        /* Check we are running on an HS/EMU device type */
diff --git a/arch/arm/mach-omap2/omap5/sec-fxns.c b/arch/arm/mach-omap2/omap5/sec-fxns.c
deleted file mode 100644 (file)
index 7fab575..0000000
+++ /dev/null
@@ -1,234 +0,0 @@
-/*
- *
- * Security related functions for OMAP5 class devices
- *
- * (C) Copyright 2016
- * Texas Instruments, <www.ti.com>
- *
- * Daniel Allred <d-allred@ti.com>
- * Harinarayan Bhatta <harinarayan@ti.com>
- *
- * SPDX-License-Identifier: GPL-2.0+
- */
-
-#include <common.h>
-#include <stdarg.h>
-
-#include <asm/arch/sys_proto.h>
-#include <asm/omap_common.h>
-#include <asm/omap_sec_common.h>
-#include <asm/spl.h>
-#include <spl.h>
-#include <asm/cache.h>
-#include <mapmem.h>
-#include <tee/optee.h>
-
-/* Index for signature PPA-based TI HAL APIs */
-#define PPA_HAL_SERVICES_START_INDEX        (0x200)
-#define PPA_SERV_HAL_TEE_LOAD_MASTER        (PPA_HAL_SERVICES_START_INDEX + 23)
-#define PPA_SERV_HAL_TEE_LOAD_SLAVE         (PPA_HAL_SERVICES_START_INDEX + 24)
-#define PPA_SERV_HAL_SETUP_SEC_RESVD_REGION (PPA_HAL_SERVICES_START_INDEX + 25)
-#define PPA_SERV_HAL_SETUP_EMIF_FW_REGION   (PPA_HAL_SERVICES_START_INDEX + 26)
-#define PPA_SERV_HAL_LOCK_EMIF_FW           (PPA_HAL_SERVICES_START_INDEX + 27)
-
-int tee_loaded = 0;
-
-/* Argument for PPA_SERV_HAL_TEE_LOAD_MASTER */
-struct ppa_tee_load_info {
-       u32 tee_sec_mem_start; /* Physical start address reserved for TEE */
-       u32 tee_sec_mem_size;  /* Size of the memory reserved for TEE */
-       u32 tee_cert_start;    /* Address where signed TEE binary is loaded */
-       u32 tee_cert_size;     /* Size of TEE certificate (signed binary) */
-       u32 tee_jump_addr;     /* Address to jump to start TEE execution */
-       u32 tee_arg0;          /* argument to TEE jump function, in r0 */
-};
-
-static u32 get_sec_mem_start(void)
-{
-       u32 sec_mem_start = CONFIG_TI_SECURE_EMIF_REGION_START;
-       u32 sec_mem_size = CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE;
-       /*
-        * Total reserved region is all contiguous with protected
-        * region coming first, followed by the non-secure region.
-        * If 0x0 start address is given, we simply put the reserved
-        * region at the end of the external DRAM.
-        */
-       if (sec_mem_start == 0)
-               sec_mem_start =
-                       (CONFIG_SYS_SDRAM_BASE +
-                       (omap_sdram_size() - sec_mem_size));
-       return sec_mem_start;
-}
-
-int secure_emif_firewall_setup(uint8_t region_num, uint32_t start_addr,
-                              uint32_t size, uint32_t access_perm,
-                              uint32_t initiator_perm)
-{
-       int result = 1;
-
-       /*
-        * Call PPA HAL API to do any other general firewall
-        * configuration for regions 1-6 of the EMIF firewall.
-        */
-       debug("%s: regionNum = %x, startAddr = %x, size = %x", __func__,
-             region_num, start_addr, size);
-
-       result = secure_rom_call(
-                       PPA_SERV_HAL_SETUP_EMIF_FW_REGION, 0, 0, 4,
-                       (start_addr & 0xFFFFFFF0) | (region_num & 0x0F),
-                       size, access_perm, initiator_perm);
-
-       if (result != 0) {
-               puts("Secure EMIF Firewall Setup failed!\n");
-               debug("Return Value = %x\n", result);
-       }
-
-       return result;
-}
-
-#if    (CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE <  \
-       CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE)
-#error "TI Secure EMIF: Protected size cannot be larger than total size."
-#endif
-int secure_emif_reserve(void)
-{
-       int result = 1;
-       u32 sec_mem_start = get_sec_mem_start();
-       u32 sec_prot_size = CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE;
-
-       /* If there is no protected region, there is no reservation to make */
-       if (sec_prot_size == 0)
-               return 0;
-
-       /*
-        * Call PPA HAL API to reserve a chunk of EMIF SDRAM
-        * for secure world use. This region should be carved out
-        * from use by any public code. EMIF firewall region 7
-        * will be used to protect this block of memory.
-        */
-       result = secure_rom_call(
-                       PPA_SERV_HAL_SETUP_SEC_RESVD_REGION,
-                       0, 0, 2, sec_mem_start, sec_prot_size);
-
-       if (result != 0) {
-               puts("SDRAM Firewall: Secure memory reservation failed!\n");
-               debug("Return Value = %x\n", result);
-       }
-
-       return result;
-}
-
-int secure_emif_firewall_lock(void)
-{
-       int result = 1;
-
-       /*
-        * Call PPA HAL API to lock the EMIF firewall configurations.
-        * After this API is called, none of the PPA HAL APIs for
-        * configuring the EMIF firewalls will be usable again (that
-        * is, calls to those APIs will return failure and have no
-        * effect).
-        */
-
-       result = secure_rom_call(
-                       PPA_SERV_HAL_LOCK_EMIF_FW,
-                       0, 0, 0);
-
-       if (result != 0) {
-               puts("Secure EMIF Firewall Lock failed!\n");
-               debug("Return Value = %x\n", result);
-       }
-
-       return result;
-}
-
-static struct ppa_tee_load_info tee_info __aligned(ARCH_DMA_MINALIGN);
-
-int secure_tee_install(u32 addr)
-{
-       struct optee_header *hdr;
-       void *loadptr;
-       u32 tee_file_size;
-       u32 sec_mem_start = get_sec_mem_start();
-       const u32 size = CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE;
-       u32 *smc_cpu1_params;
-       u32 ret;
-
-       /* If there is no protected region, there is no place to put the TEE */
-       if (size == 0) {
-               printf("Error loading TEE, no protected memory region available\n");
-               return -ENOBUFS;
-       }
-
-       hdr = (struct optee_header *)map_sysmem(addr, sizeof(struct optee_header));
-       /* 280 bytes = size of signature */
-       tee_file_size = hdr->init_size + hdr->paged_size +
-                       sizeof(struct optee_header) + 280;
-
-       if ((hdr->magic != OPTEE_MAGIC) ||
-           (hdr->version != OPTEE_VERSION) ||
-           (hdr->init_load_addr_hi != 0) ||
-           (hdr->init_load_addr_lo < (sec_mem_start + sizeof(struct optee_header))) ||
-           (tee_file_size > size) ||
-           ((hdr->init_load_addr_lo + tee_file_size - 1) >
-            (sec_mem_start + size - 1))) {
-               printf("Error in TEE header. Check load address and sizes\n");
-               unmap_sysmem(hdr);
-               return CMD_RET_FAILURE;
-       }
-
-       tee_info.tee_sec_mem_start = sec_mem_start;
-       tee_info.tee_sec_mem_size = size;
-       tee_info.tee_jump_addr = hdr->init_load_addr_lo;
-       tee_info.tee_cert_start = addr;
-       tee_info.tee_cert_size = tee_file_size;
-       tee_info.tee_arg0 = hdr->init_size + tee_info.tee_jump_addr;
-       unmap_sysmem(hdr);
-       loadptr = map_sysmem(addr, tee_file_size);
-
-       debug("tee_info.tee_sec_mem_start= %08X\n", tee_info.tee_sec_mem_start);
-       debug("tee_info.tee_sec_mem_size = %08X\n", tee_info.tee_sec_mem_size);
-       debug("tee_info.tee_jump_addr = %08X\n", tee_info.tee_jump_addr);
-       debug("tee_info.tee_cert_start = %08X\n", tee_info.tee_cert_start);
-       debug("tee_info.tee_cert_size = %08X\n", tee_info.tee_cert_size);
-       debug("tee_info.tee_arg0 = %08X\n", tee_info.tee_arg0);
-       debug("tee_file_size = %d\n", tee_file_size);
-
-#if !defined(CONFIG_SYS_DCACHE_OFF)
-       flush_dcache_range(
-               rounddown((u32)loadptr, ARCH_DMA_MINALIGN),
-               roundup((u32)loadptr + tee_file_size, ARCH_DMA_MINALIGN));
-
-       flush_dcache_range((u32)&tee_info, (u32)&tee_info +
-                       roundup(sizeof(tee_info), ARCH_DMA_MINALIGN));
-#endif
-       unmap_sysmem(loadptr);
-
-       ret = secure_rom_call(PPA_SERV_HAL_TEE_LOAD_MASTER, 0, 0, 1, &tee_info);
-       if (ret) {
-               printf("TEE_LOAD_MASTER Failed\n");
-               return ret;
-       }
-       printf("TEE_LOAD_MASTER Done\n");
-
-       if (!is_dra72x()) {
-               /* Reuse the tee_info buffer for SMC params */
-               smc_cpu1_params = (u32 *)&tee_info;
-               smc_cpu1_params[0] = 0;
-#if !defined(CONFIG_SYS_DCACHE_OFF)
-               flush_dcache_range((u32)smc_cpu1_params, (u32)smc_cpu1_params +
-                               roundup(sizeof(u32), ARCH_DMA_MINALIGN));
-#endif
-               ret = omap_smc_sec_cpu1(PPA_SERV_HAL_TEE_LOAD_SLAVE, 0, 0,
-                               smc_cpu1_params);
-               if (ret) {
-                       printf("TEE_LOAD_SLAVE Failed\n");
-                       return ret;
-               }
-               printf("TEE_LOAD_SLAVE Done\n");
-       }
-
-       tee_loaded = 1;
-
-       return 0;
-}
index ec1ffa556ad1c0c3022198104a07c738c8b47884..030b36f332a7338db3b9020eedffca8be53a635c 100644 (file)
@@ -2,11 +2,13 @@
  *
  * Common security related functions for OMAP devices
  *
- * (C) Copyright 2016
+ * (C) Copyright 2016-2017
  * Texas Instruments, <www.ti.com>
  *
  * Daniel Allred <d-allred@ti.com>
  * Andreas Dannenberg <dannenberg@ti.com>
+ * Harinarayan Bhatta <harinarayan@ti.com>
+ * Andrew F. Davis <afd@ti.com>
  *
  * SPDX-License-Identifier: GPL-2.0+
  */
 #include <stdarg.h>
 
 #include <asm/arch/sys_proto.h>
+#include <asm/cache.h>
 #include <asm/omap_common.h>
 #include <asm/omap_sec_common.h>
 #include <asm/spl.h>
+#include <asm/ti-common/sys_proto.h>
+#include <mapmem.h>
 #include <spl.h>
+#include <tee/optee.h>
 
 /* Index for signature verify ROM API */
 #ifdef CONFIG_AM33XX
 #define API_HAL_KM_VERIFYCERTIFICATESIGNATURE_INDEX    (0x0000000E)
 #endif
 
+/* Index for signature PPA-based TI HAL APIs */
+#define PPA_HAL_SERVICES_START_INDEX        (0x200)
+#define PPA_SERV_HAL_TEE_LOAD_MASTER        (PPA_HAL_SERVICES_START_INDEX + 23)
+#define PPA_SERV_HAL_TEE_LOAD_SLAVE         (PPA_HAL_SERVICES_START_INDEX + 24)
+#define PPA_SERV_HAL_SETUP_SEC_RESVD_REGION (PPA_HAL_SERVICES_START_INDEX + 25)
+#define PPA_SERV_HAL_SETUP_EMIF_FW_REGION   (PPA_HAL_SERVICES_START_INDEX + 26)
+#define PPA_SERV_HAL_LOCK_EMIF_FW           (PPA_HAL_SERVICES_START_INDEX + 27)
+
+int tee_loaded = 0;
+
+/* Argument for PPA_SERV_HAL_TEE_LOAD_MASTER */
+struct ppa_tee_load_info {
+       u32 tee_sec_mem_start; /* Physical start address reserved for TEE */
+       u32 tee_sec_mem_size;  /* Size of the memory reserved for TEE */
+       u32 tee_cert_start;    /* Address where signed TEE binary is loaded */
+       u32 tee_cert_size;     /* Size of TEE certificate (signed binary) */
+       u32 tee_jump_addr;     /* Address to jump to start TEE execution */
+       u32 tee_arg0;          /* argument to TEE jump function, in r0 */
+};
+
 static uint32_t secure_rom_call_args[5] __aligned(ARCH_DMA_MINALIGN);
 
 u32 secure_rom_call(u32 service, u32 proc_id, u32 flag, ...)
@@ -149,3 +175,201 @@ auth_exit:
 
        return result;
 }
+
+u32 get_sec_mem_start(void)
+{
+       u32 sec_mem_start = CONFIG_TI_SECURE_EMIF_REGION_START;
+       u32 sec_mem_size = CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE;
+       /*
+        * Total reserved region is all contiguous with protected
+        * region coming first, followed by the non-secure region.
+        * If 0x0 start address is given, we simply put the reserved
+        * region at the end of the external DRAM.
+        */
+       if (sec_mem_start == 0)
+               sec_mem_start =
+                       (CONFIG_SYS_SDRAM_BASE + (
+#if defined(CONFIG_OMAP54XX)
+                       omap_sdram_size()
+#else
+                       get_ram_size((void *)CONFIG_SYS_SDRAM_BASE,
+                                    CONFIG_MAX_RAM_BANK_SIZE)
+#endif
+                       - sec_mem_size));
+       return sec_mem_start;
+}
+
+int secure_emif_firewall_setup(uint8_t region_num, uint32_t start_addr,
+                              uint32_t size, uint32_t access_perm,
+                              uint32_t initiator_perm)
+{
+       int result = 1;
+
+       /*
+        * Call PPA HAL API to do any other general firewall
+        * configuration for regions 1-6 of the EMIF firewall.
+        */
+       debug("%s: regionNum = %x, startAddr = %x, size = %x", __func__,
+             region_num, start_addr, size);
+
+       result = secure_rom_call(
+                       PPA_SERV_HAL_SETUP_EMIF_FW_REGION, 0, 0, 4,
+                       (start_addr & 0xFFFFFFF0) | (region_num & 0x0F),
+                       size, access_perm, initiator_perm);
+
+       if (result != 0) {
+               puts("Secure EMIF Firewall Setup failed!\n");
+               debug("Return Value = %x\n", result);
+       }
+
+       return result;
+}
+
+#if    (CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE <  \
+       CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE)
+#error "TI Secure EMIF: Protected size cannot be larger than total size."
+#endif
+int secure_emif_reserve(void)
+{
+       int result = 1;
+       u32 sec_mem_start = get_sec_mem_start();
+       u32 sec_prot_size = CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE;
+
+       /* If there is no protected region, there is no reservation to make */
+       if (sec_prot_size == 0)
+               return 0;
+
+       /*
+        * Call PPA HAL API to reserve a chunk of EMIF SDRAM
+        * for secure world use. This region should be carved out
+        * from use by any public code. EMIF firewall region 7
+        * will be used to protect this block of memory.
+        */
+       result = secure_rom_call(
+                       PPA_SERV_HAL_SETUP_SEC_RESVD_REGION,
+                       0, 0, 2, sec_mem_start, sec_prot_size);
+
+       if (result != 0) {
+               puts("SDRAM Firewall: Secure memory reservation failed!\n");
+               debug("Return Value = %x\n", result);
+       }
+
+       return result;
+}
+
+int secure_emif_firewall_lock(void)
+{
+       int result = 1;
+
+       /*
+        * Call PPA HAL API to lock the EMIF firewall configurations.
+        * After this API is called, none of the PPA HAL APIs for
+        * configuring the EMIF firewalls will be usable again (that
+        * is, calls to those APIs will return failure and have no
+        * effect).
+        */
+
+       result = secure_rom_call(
+                       PPA_SERV_HAL_LOCK_EMIF_FW,
+                       0, 0, 0);
+
+       if (result != 0) {
+               puts("Secure EMIF Firewall Lock failed!\n");
+               debug("Return Value = %x\n", result);
+       }
+
+       return result;
+}
+
+static struct ppa_tee_load_info tee_info __aligned(ARCH_DMA_MINALIGN);
+
+int secure_tee_install(u32 addr)
+{
+       struct optee_header *hdr;
+       void *loadptr;
+       u32 tee_file_size;
+       u32 sec_mem_start = get_sec_mem_start();
+       const u32 size = CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE;
+       u32 ret;
+
+       /* If there is no protected region, there is no place to put the TEE */
+       if (size == 0) {
+               printf("Error loading TEE, no protected memory region available\n");
+               return -ENOBUFS;
+       }
+
+       hdr = (struct optee_header *)map_sysmem(addr, sizeof(struct optee_header));
+       /* 280 bytes = size of signature */
+       tee_file_size = hdr->init_size + hdr->paged_size +
+                       sizeof(struct optee_header) + 280;
+
+       if ((hdr->magic != OPTEE_MAGIC) ||
+           (hdr->version != OPTEE_VERSION) ||
+           (hdr->init_load_addr_hi != 0) ||
+           (hdr->init_load_addr_lo < (sec_mem_start + sizeof(struct optee_header))) ||
+           (tee_file_size > size) ||
+           ((hdr->init_load_addr_lo + tee_file_size - 1) >
+            (sec_mem_start + size - 1))) {
+               printf("Error in TEE header. Check load address and sizes\n");
+               unmap_sysmem(hdr);
+               return CMD_RET_FAILURE;
+       }
+
+       tee_info.tee_sec_mem_start = sec_mem_start;
+       tee_info.tee_sec_mem_size = size;
+       tee_info.tee_jump_addr = hdr->init_load_addr_lo;
+       tee_info.tee_cert_start = addr;
+       tee_info.tee_cert_size = tee_file_size;
+       tee_info.tee_arg0 = hdr->init_size + tee_info.tee_jump_addr;
+       unmap_sysmem(hdr);
+       loadptr = map_sysmem(addr, tee_file_size);
+
+       debug("tee_info.tee_sec_mem_start= %08X\n", tee_info.tee_sec_mem_start);
+       debug("tee_info.tee_sec_mem_size = %08X\n", tee_info.tee_sec_mem_size);
+       debug("tee_info.tee_jump_addr = %08X\n", tee_info.tee_jump_addr);
+       debug("tee_info.tee_cert_start = %08X\n", tee_info.tee_cert_start);
+       debug("tee_info.tee_cert_size = %08X\n", tee_info.tee_cert_size);
+       debug("tee_info.tee_arg0 = %08X\n", tee_info.tee_arg0);
+       debug("tee_file_size = %d\n", tee_file_size);
+
+#if !defined(CONFIG_SYS_DCACHE_OFF)
+       flush_dcache_range(
+               rounddown((u32)loadptr, ARCH_DMA_MINALIGN),
+               roundup((u32)loadptr + tee_file_size, ARCH_DMA_MINALIGN));
+
+       flush_dcache_range((u32)&tee_info, (u32)&tee_info +
+                       roundup(sizeof(tee_info), ARCH_DMA_MINALIGN));
+#endif
+       unmap_sysmem(loadptr);
+
+       ret = secure_rom_call(PPA_SERV_HAL_TEE_LOAD_MASTER, 0, 0, 1, &tee_info);
+       if (ret) {
+               printf("TEE_LOAD_MASTER Failed\n");
+               return ret;
+       }
+       printf("TEE_LOAD_MASTER Done\n");
+
+#if defined(CONFIG_OMAP54XX)
+       if (!is_dra72x()) {
+               u32 *smc_cpu1_params;
+               /* Reuse the tee_info buffer for SMC params */
+               smc_cpu1_params = (u32 *)&tee_info;
+               smc_cpu1_params[0] = 0;
+#if !defined(CONFIG_SYS_DCACHE_OFF)
+               flush_dcache_range((u32)smc_cpu1_params, (u32)smc_cpu1_params +
+                               roundup(sizeof(u32), ARCH_DMA_MINALIGN));
+#endif
+               ret = omap_smc_sec_cpu1(PPA_SERV_HAL_TEE_LOAD_SLAVE, 0, 0,
+                               smc_cpu1_params);
+               if (ret) {
+                       printf("TEE_LOAD_SLAVE Failed\n");
+                       return ret;
+               }
+               printf("TEE_LOAD_SLAVE Done\n");
+       }
+#endif
+
+       tee_loaded = 1;
+
+       return 0;
+}
index bb44c61566405371c70de2463de28298b766a936..c9246132e097250fbeb4d9b078d4432313b12780 100644 (file)
@@ -82,6 +82,8 @@ config ROCKCHIP_RK3399
        select SUPPORT_SPL
        select SPL
        select SPL_SEPARATE_BSS
+       select SPL_SERIAL_SUPPORT
+       select SPL_DRIVERS_MISC_SUPPORT
        select ENABLE_ARM_SOC_BOOT0_HOOK
        select DEBUG_UART_BOARD_INIT
        help
index da36f9269729c02b3721691d982653ea786a0b83..4ca996231015a38cd0a5c05e288d28be73c4b284 100644 (file)
@@ -9,8 +9,8 @@
 
 void back_to_bootrom(void)
 {
-#if defined(CONFIG_SPL_LIBGENERIC_SUPPORT) && !defined(CONFIG_TPL_BUILD)
-       printf("Returning to boot ROM...");
+#if defined(CONFIG_SPL_LIBCOMMON_SUPPORT) && !defined(CONFIG_TPL_BUILD)
+       puts("Returning to boot ROM...");
 #endif
        _back_to_bootrom_s();
 }
index 7b8d0ee653f8290f685f262e694ef8babb42bcc1..9458201bd395a9899935e46401a15b662f564539 100644 (file)
@@ -53,9 +53,3 @@ void board_init_r(gd_t *id, ulong dest_addr)
        while (1)
                ;
 }
-
-void hang(void)
-{
-       while (1)
-               ;
-}
index ae5123d73b555b814867cdc6acf67a8d4ad6fb0f..853b98664696ff078873430a39489280c1cd0fc1 100644 (file)
@@ -4,9 +4,9 @@
  * SPDX-License-Identifier:     GPL-2.0+
  */
 
+#include <common.h>
 #include <asm/arch/timer.h>
 #include <asm/io.h>
-#include <common.h>
 #include <linux/types.h>
 
 struct rk_timer * const timer_ptr = (void *)CONFIG_SYS_TIMER_BASE;
index 41b779c5ca9ba44d74f0ae0c015d426dc490e8ef..286bfef8ca29083cb5d440979098fc653e6c99bb 100644 (file)
@@ -9,7 +9,6 @@
 
 obj-y  += board.o
 obj-y  += clock_manager.o
-obj-y  += fpga_manager.o
 obj-y  += misc.o
 obj-y  += reset_manager.o
 obj-y  += timer.o
@@ -21,6 +20,7 @@ obj-y += reset_manager_gen5.o
 obj-y  += scan_manager.o
 obj-y  += system_manager_gen5.o
 obj-y  += wrap_pll_config.o
+obj-y  += fpga_manager.o
 endif
 
 ifdef CONFIG_TARGET_SOCFPGA_ARRIA10
index a077e2284e65eb7642a41270a8237466f2d9133e..a21c71665c1a3b11faf76c7d02257252205e21b7 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright (C) 2012 Altera Corporation <www.altera.com>
+ * Copyright (C) 2012-2017 Altera Corporation <www.altera.com>
  * All rights reserved.
  *
  * SPDX-License-Identifier:    BSD-3-Clause
 
 #include <altera.h>
 
-struct socfpga_fpga_manager {
-       /* FPGA Manager Module */
-       u32     stat;                   /* 0x00 */
-       u32     ctrl;
-       u32     dclkcnt;
-       u32     dclkstat;
-       u32     gpo;                    /* 0x10 */
-       u32     gpi;
-       u32     misci;                  /* 0x18 */
-       u32     _pad_0x1c_0x82c[517];
-
-       /* Configuration Monitor (MON) Registers */
-       u32     gpio_inten;             /* 0x830 */
-       u32     gpio_intmask;
-       u32     gpio_inttype_level;
-       u32     gpio_int_polarity;
-       u32     gpio_intstatus;         /* 0x840 */
-       u32     gpio_raw_intstatus;
-       u32     _pad_0x848;
-       u32     gpio_porta_eoi;
-       u32     gpio_ext_porta;         /* 0x850 */
-       u32     _pad_0x854_0x85c[3];
-       u32     gpio_1s_sync;           /* 0x860 */
-       u32     _pad_0x864_0x868[2];
-       u32     gpio_ver_id_code;
-       u32     gpio_config_reg2;       /* 0x870 */
-       u32     gpio_config_reg1;
-};
-
-#define FPGAMGRREGS_STAT_MODE_MASK             0x7
-#define FPGAMGRREGS_STAT_MSEL_MASK             0xf8
-#define FPGAMGRREGS_STAT_MSEL_LSB              3
-
-#define FPGAMGRREGS_CTRL_CFGWDTH_MASK          0x200
-#define FPGAMGRREGS_CTRL_AXICFGEN_MASK         0x100
-#define FPGAMGRREGS_CTRL_NCONFIGPULL_MASK      0x4
-#define FPGAMGRREGS_CTRL_NCE_MASK              0x2
-#define FPGAMGRREGS_CTRL_EN_MASK               0x1
-#define FPGAMGRREGS_CTRL_CDRATIO_LSB           6
-
-#define FPGAMGRREGS_MON_GPIO_EXT_PORTA_CRC_MASK        0x8
-#define FPGAMGRREGS_MON_GPIO_EXT_PORTA_ID_MASK 0x4
-#define FPGAMGRREGS_MON_GPIO_EXT_PORTA_CD_MASK 0x2
-#define FPGAMGRREGS_MON_GPIO_EXT_PORTA_NS_MASK 0x1
-
-/* FPGA Mode */
-#define FPGAMGRREGS_MODE_FPGAOFF               0x0
-#define FPGAMGRREGS_MODE_RESETPHASE            0x1
-#define FPGAMGRREGS_MODE_CFGPHASE              0x2
-#define FPGAMGRREGS_MODE_INITPHASE             0x3
-#define FPGAMGRREGS_MODE_USERMODE              0x4
-#define FPGAMGRREGS_MODE_UNKNOWN               0x5
+#if defined(CONFIG_TARGET_SOCFPGA_GEN5)
+#include <asm/arch/fpga_manager_gen5.h>
+#elif defined(CONFIG_TARGET_SOCFPGA_ARRIA10)
+#include <asm/arch/fpga_manager_arria10.h>
+#endif
 
 /* FPGA CD Ratio Value */
 #define CDRATIO_x1                             0x0
@@ -69,9 +22,14 @@ struct socfpga_fpga_manager {
 #define CDRATIO_x4                             0x2
 #define CDRATIO_x8                             0x3
 
-/* SoCFPGA support functions */
-int fpgamgr_test_fpga_ready(void);
-int fpgamgr_poll_fpga_ready(void);
+#ifndef __ASSEMBLY__
+
+/* Common prototypes */
 int fpgamgr_get_mode(void);
+int fpgamgr_poll_fpga_ready(void);
+void fpgamgr_program_write(const void *rbf_data, size_t rbf_size);
+int fpgamgr_test_fpga_ready(void);
+int fpgamgr_dclkcnt_set(unsigned long cnt);
 
+#endif /* __ASSEMBLY__ */
 #endif /* _FPGA_MANAGER_H_ */
diff --git a/arch/arm/mach-socfpga/include/mach/fpga_manager_arria10.h b/arch/arm/mach-socfpga/include/mach/fpga_manager_arria10.h
new file mode 100644 (file)
index 0000000..9cbf696
--- /dev/null
@@ -0,0 +1,100 @@
+/*
+ * Copyright (C) 2017 Intel Corporation <www.intel.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#ifndef _FPGA_MANAGER_ARRIA10_H_
+#define _FPGA_MANAGER_ARRIA10_H_
+
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_CRC_ERROR_SET_MSK          BIT(0)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_EARLY_USERMODE_SET_MSK     BIT(1)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_USERMODE_SET_MSK           BIT(2)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_INITDONE_OE_SET_MSK        BIT(3)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_NSTATUS_PIN_SET_MSK                BIT(4)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_NSTATUS_OE_SET_MSK         BIT(5)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_CONDONE_PIN_SET_MSK                BIT(6)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_CONDONE_OE_SET_MSK         BIT(7)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_CVP_CONF_DONE_SET_MSK      BIT(8)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_PR_READY_SET_MSK           BIT(9)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_PR_DONE_SET_MSK            BIT(10)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_PR_ERROR_SET_MSK           BIT(11)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_NCONFIG_PIN_SET_MSK                BIT(12)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_NCEO_OE_SET_MSK            BIT(13)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL0_SET_MSK              BIT(16)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL1_SET_MSK              BIT(17)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL2_SET_MSK              BIT(18)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL_SET_MSD (\
+       ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL0_SET_MSK |\
+       ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL1_SET_MSK |\
+       ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL2_SET_MSK)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_IMGCFG_FIFOEMPTY_SET_MSK   BIT(24)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_IMGCFG_FIFOFULL_SET_MSK    BIT(25)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_JTAGM_SET_MSK              BIT(28)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_EMR_SET_MSK                        BIT(29)
+#define ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL0_LSB                  16
+
+#define ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NENABLE_NCONFIG_SET_MSK  BIT(0)
+#define ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NENABLE_NSTATUS_SET_MSK  BIT(1)
+#define ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NENABLE_CONDONE_SET_MSK  BIT(2)
+#define ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NCONFIG_SET_MSK          BIT(8)
+#define ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NSTATUS_OE_SET_MSK       BIT(16)
+#define ALT_FPGAMGR_IMGCFG_CTL_00_S2F_CONDONE_OE_SET_MSK       BIT(24)
+
+#define ALT_FPGAMGR_IMGCFG_CTL_01_S2F_NENABLE_CONFIG_SET_MSK   BIT(0)
+#define ALT_FPGAMGR_IMGCFG_CTL_01_S2F_PR_REQUEST_SET_MSK       BIT(16)
+#define ALT_FPGAMGR_IMGCFG_CTL_01_S2F_NCE_SET_MSK              BIT(24)
+
+#define ALT_FPGAMGR_IMGCFG_CTL_02_EN_CFG_CTRL_SET_MSK          BIT(0)
+#define ALT_FPGAMGR_IMGCFG_CTL_02_EN_CFG_DATA_SET_MSK          BIT(8)
+#define ALT_FPGAMGR_IMGCFG_CTL_02_CDRATIO_SET_MSK              0x00030000
+#define ALT_FPGAMGR_IMGCFG_CTL_02_CFGWIDTH_SET_MSK             BIT(24)
+#define ALT_FPGAMGR_IMGCFG_CTL_02_CDRATIO_LSB                  16
+
+#ifndef __ASSEMBLY__
+
+struct socfpga_fpga_manager {
+       u32  _pad_0x0_0x7[2];
+       u32  dclkcnt;
+       u32  dclkstat;
+       u32  gpo;
+       u32  gpi;
+       u32  misci;
+       u32  _pad_0x1c_0x2f[5];
+       u32  emr_data0;
+       u32  emr_data1;
+       u32  emr_data2;
+       u32  emr_data3;
+       u32  emr_data4;
+       u32  emr_data5;
+       u32  emr_valid;
+       u32  emr_en;
+       u32  jtag_config;
+       u32  jtag_status;
+       u32  jtag_kick;
+       u32  _pad_0x5c_0x5f;
+       u32  jtag_data_w;
+       u32  jtag_data_r;
+       u32  _pad_0x68_0x6f[2];
+       u32  imgcfg_ctrl_00;
+       u32  imgcfg_ctrl_01;
+       u32  imgcfg_ctrl_02;
+       u32  _pad_0x7c_0x7f;
+       u32  imgcfg_stat;
+       u32  intr_masked_status;
+       u32  intr_mask;
+       u32  intr_polarity;
+       u32  dma_config;
+       u32  imgcfg_fifo_status;
+};
+
+/* Functions */
+int fpgamgr_program_init(u32 * rbf_data, size_t rbf_size);
+int fpgamgr_program_finish(void);
+int is_fpgamgr_user_mode(void);
+int fpgamgr_wait_early_user_mode(void);
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _FPGA_MANAGER_ARRIA10_H_ */
diff --git a/arch/arm/mach-socfpga/include/mach/fpga_manager_gen5.h b/arch/arm/mach-socfpga/include/mach/fpga_manager_gen5.h
new file mode 100644 (file)
index 0000000..2de7a11
--- /dev/null
@@ -0,0 +1,68 @@
+/*
+ * Copyright (C) 2012-2017 Altera Corporation <www.altera.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#ifndef _FPGA_MANAGER_GEN5_H_
+#define _FPGA_MANAGER_GEN5_H_
+
+#define FPGAMGRREGS_STAT_MODE_MASK             0x7
+#define FPGAMGRREGS_STAT_MSEL_MASK             0xf8
+#define FPGAMGRREGS_STAT_MSEL_LSB              3
+
+#define FPGAMGRREGS_CTRL_CFGWDTH_MASK          BIT(9)
+#define FPGAMGRREGS_CTRL_AXICFGEN_MASK         BIT(8)
+#define FPGAMGRREGS_CTRL_NCONFIGPULL_MASK      BIT(2)
+#define FPGAMGRREGS_CTRL_NCE_MASK              BIT(1)
+#define FPGAMGRREGS_CTRL_EN_MASK               BIT(0)
+#define FPGAMGRREGS_CTRL_CDRATIO_LSB           6
+
+#define FPGAMGRREGS_MON_GPIO_EXT_PORTA_CRC_MASK        BIT(3)
+#define FPGAMGRREGS_MON_GPIO_EXT_PORTA_ID_MASK BIT(2)
+#define FPGAMGRREGS_MON_GPIO_EXT_PORTA_CD_MASK BIT(1)
+#define FPGAMGRREGS_MON_GPIO_EXT_PORTA_NS_MASK BIT(0)
+
+/* FPGA Mode */
+#define FPGAMGRREGS_MODE_FPGAOFF               0x0
+#define FPGAMGRREGS_MODE_RESETPHASE            0x1
+#define FPGAMGRREGS_MODE_CFGPHASE              0x2
+#define FPGAMGRREGS_MODE_INITPHASE             0x3
+#define FPGAMGRREGS_MODE_USERMODE              0x4
+#define FPGAMGRREGS_MODE_UNKNOWN               0x5
+
+#ifndef __ASSEMBLY__
+
+struct socfpga_fpga_manager {
+       /* FPGA Manager Module */
+       u32     stat;                   /* 0x00 */
+       u32     ctrl;
+       u32     dclkcnt;
+       u32     dclkstat;
+       u32     gpo;                    /* 0x10 */
+       u32     gpi;
+       u32     misci;                  /* 0x18 */
+       u32     _pad_0x1c_0x82c[517];
+
+       /* Configuration Monitor (MON) Registers */
+       u32     gpio_inten;             /* 0x830 */
+       u32     gpio_intmask;
+       u32     gpio_inttype_level;
+       u32     gpio_int_polarity;
+       u32     gpio_intstatus;         /* 0x840 */
+       u32     gpio_raw_intstatus;
+       u32     _pad_0x848;
+       u32     gpio_porta_eoi;
+       u32     gpio_ext_porta;         /* 0x850 */
+       u32     _pad_0x854_0x85c[3];
+       u32     gpio_1s_sync;           /* 0x860 */
+       u32     _pad_0x864_0x868[2];
+       u32     gpio_ver_id_code;
+       u32     gpio_config_reg2;       /* 0x870 */
+       u32     gpio_config_reg1;
+};
+
+#endif /* __ASSEMBLY__ */
+
+#endif /* _FPGA_MANAGER_GEN5_H_ */
index 7922db815ce94afec05051221904cb25cdc59f2b..b6d7f4f6f96c31710504fa3640adb2f754bd7948 100644 (file)
@@ -17,7 +17,7 @@ int socfpga_reset_deassert_bridges_handoff(void);
 void socfpga_reset_assert_fpga_connected_peripherals(void);
 void socfpga_reset_deassert_osc1wd0(void);
 void socfpga_reset_uart(int assert);
-int socfpga_bridges_reset(int enable);
+int socfpga_bridges_reset(void);
 
 struct socfpga_reset_manager {
        u32     stat;
index d8c858c833bdf6717be768073125e18121e8c89c..66f1ec21f132eee1f5d9c57fdb1bd916e0af3830 100644 (file)
@@ -318,13 +318,13 @@ void socfpga_per_reset_all(void)
 }
 
 #if defined(CONFIG_SOCFPGA_VIRTUAL_TARGET)
-int socfpga_bridges_reset(int enable)
+int socfpga_bridges_reset(void)
 {
        /* For SoCFPGA-VT, this is NOP. */
        return 0;
 }
 #else
-int socfpga_bridges_reset(int enable)
+int socfpga_bridges_reset(void)
 {
        int ret;
 
index bd3e7d3b3f20a315be98f91a6bf2f41ede989aa6..94412bac0c1df717216e1412c1f286391257cd80 100644 (file)
@@ -59,6 +59,7 @@ config MACH_SUNXI_H3_H5
        select SUNXI_DRAM_DW_32BIT
        select SUNXI_GEN_SUN6I
        select SUPPORT_SPL
+       imply ENV_IS_IN_MMC
 
 choice
        prompt "Sunxi SoC Variant"
@@ -70,6 +71,7 @@ config MACH_SUN4I
        select ARM_CORTEX_CPU_IS_UP
        select SUNXI_GEN_SUN4I
        select SUPPORT_SPL
+       imply ENV_IS_IN_MMC
 
 config MACH_SUN5I
        bool "sun5i (Allwinner A13)"
@@ -87,6 +89,7 @@ config MACH_SUN6I
        select SUNXI_GEN_SUN6I
        select SUPPORT_SPL
        select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+       imply ENV_IS_IN_MMC
 
 config MACH_SUN7I
        bool "sun7i (Allwinner A20)"
@@ -97,6 +100,7 @@ config MACH_SUN7I
        select SUNXI_GEN_SUN4I
        select SUPPORT_SPL
        select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+       imply ENV_IS_IN_MMC
 
 config MACH_SUN8I_A23
        bool "sun8i (Allwinner A23)"
@@ -107,6 +111,7 @@ config MACH_SUN8I_A23
        select SUNXI_GEN_SUN6I
        select SUPPORT_SPL
        select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+       imply ENV_IS_IN_MMC
 
 config MACH_SUN8I_A33
        bool "sun8i (Allwinner A33)"
@@ -132,6 +137,7 @@ config MACH_SUN8I_H3
        select ARCH_SUPPORT_PSCI
        select MACH_SUNXI_H3_H5
        select ARMV7_BOOT_SEC_DEFAULT if OLD_SUNXI_KERNEL_COMPAT
+       imply ENV_IS_IN_MMC
 
 config MACH_SUN8I_R40
        bool "sun8i (Allwinner R40)"
index 89d2a499e48b1f711b4f726cd487525e0f726916..58085dc0a36b8f5eec3fe276db78f23eaa3a5dd1 100644 (file)
@@ -60,6 +60,7 @@ config TEGRA_ARMV8_COMMON
        bool "Tegra 64-bit common options"
        select ARM64
        select TEGRA_COMMON
+       imply ENV_IS_IN_MMC
 
 choice
        prompt "Tegra SoC select"
@@ -77,6 +78,7 @@ config TEGRA30
        select ARM_ERRATA_743622
        select ARM_ERRATA_751472
        select TEGRA_ARMV7_COMMON
+       imply ENV_IS_IN_MMC
 
 config TEGRA114
        bool "Tegra114 family"
@@ -85,6 +87,9 @@ config TEGRA114
 config TEGRA124
        bool "Tegra124 family"
        select TEGRA_ARMV7_COMMON
+       imply ENV_IS_IN_MMC
+       imply REGMAP
+       imply SYSCON
 
 config TEGRA210
        bool "Tegra210 family"
index 6b5fa7df6245645bc4f43107a2fc29b504dad7d0..bd137969f07b20b386e08a3c8a06115aac132661 100644 (file)
@@ -29,7 +29,6 @@
 #ifdef CONFIG_TEGRA_CLOCK_SCALING
 #include <asm/arch/emc.h>
 #endif
-#include <power/as3722.h>
 #include "emc.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -142,11 +141,6 @@ int board_init(void)
                debug("Memory controller init failed: %d\n", err);
 #  endif
 # endif /* CONFIG_TEGRA_PMU */
-#ifdef CONFIG_PMIC_AS3722
-       err = as3722_init(NULL);
-       if (err && err != -ENODEV)
-               return err;
-#endif
 #endif /* CONFIG_SYS_I2C_TEGRA */
 
 #ifdef CONFIG_USB_EHCI_TEGRA
@@ -166,7 +160,7 @@ int board_init(void)
        pin_mux_nand();
 #endif
 
-       tegra_xusb_padctl_init(gd->fdt_blob);
+       tegra_xusb_padctl_init();
 
 #ifdef CONFIG_TEGRA_LP0
        /* save Sdram params to PMC 2, 4, and 24 for WB0 */
index 668bbd20c13d3600471ccf8543a8460f2614c3b1..dc58b3027dd508e405b042defe8869b21650cc7f 100644 (file)
@@ -655,14 +655,13 @@ void clock_ll_start_uart(enum periph_id periph_id)
 }
 
 #if CONFIG_IS_ENABLED(OF_CONTROL)
-int clock_decode_periph_id(const void *blob, int node)
+int clock_decode_periph_id(struct udevice *dev)
 {
        enum periph_id id;
        u32 cell[2];
        int err;
 
-       err = fdtdec_get_int_array(blob, node, "clocks", cell,
-                                  ARRAY_SIZE(cell));
+       err = dev_read_u32_array(dev, "clocks", cell, ARRAY_SIZE(cell));
        if (err)
                return -1;
        id = clk_id_to_periph_id(cell[1]);
index 41c88cb2b4518b3a0e0e026b3a2e2a314759e65c..189b3da0265437920ff87855ad045df370cfd12f 100644 (file)
@@ -7,6 +7,7 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 #include <common.h>
+#include <debug_uart.h>
 #include <spl.h>
 
 #include <asm/io.h>
@@ -32,6 +33,9 @@ void spl_board_init(void)
        gpio_early_init_uart();
 
        clock_early_init();
+#ifdef CONFIG_DEBUG_UART
+       debug_uart_init();
+#endif
        preloader_console_init();
 }
 
index c00de6151e2d97d4d39302b646c908871caa63e5..d275dafdc4f85a5f754d23bd70be1f230e7f09b0 100644 (file)
@@ -10,6 +10,7 @@ obj-$(CONFIG_SPL_BUILD) += cpu.o
 obj-y  += clock.o
 obj-y  += funcmux.o
 obj-y  += pinmux.o
+obj-y  += pmc.o
 obj-y  += xusb-padctl.o
 obj-y  += ../xusb-padctl-common.o
 
diff --git a/arch/arm/mach-tegra/tegra124/pmc.c b/arch/arm/mach-tegra/tegra124/pmc.c
new file mode 100644 (file)
index 0000000..be82acf
--- /dev/null
@@ -0,0 +1,19 @@
+/*
+ * Copyright (C) 2017 Google, Inc
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <syscon.h>
+
+static const struct udevice_id tegra124_syscon_ids[] = {
+       { .compatible = "nvidia,tegra124-pmc", .data = TEGRA_SYSCON_PMC },
+};
+
+U_BOOT_DRIVER(syscon_tegra124) = {
+       .name = "tegra124_syscon",
+       .id = UCLASS_SYSCON,
+       .of_match = tegra124_syscon_ids,
+};
index 76af924b948d5a201d1f4e9f841afe24916b16f3..d326a6ae570191e6b8aaa11f57f0b90290188495 100644 (file)
@@ -8,6 +8,8 @@
 
 #include <common.h>
 #include <errno.h>
+#include <dm/of_access.h>
+#include <dm/ofnode.h>
 
 #include "../xusb-padctl-common.h"
 
@@ -317,13 +319,33 @@ static const struct tegra_xusb_padctl_soc tegra124_socdata = {
        .num_phys = ARRAY_SIZE(tegra124_phys),
 };
 
-void tegra_xusb_padctl_init(const void *fdt)
+void tegra_xusb_padctl_init(void)
 {
-       int count, nodes[1];
+       ofnode nodes[1];
+       int count = 0;
+       int ret;
+
+       debug("%s: start\n", __func__);
+       if (of_live_active()) {
+               struct device_node *np = of_find_compatible_node(NULL, NULL,
+                                               "nvidia,tegra124-xusb-padctl");
+
+               debug("np=%p\n", np);
+               if (np) {
+                       nodes[0] = np_to_ofnode(np);
+                       count = 1;
+               }
+       } else {
+               int node_offsets[1];
+               int i;
+
+               count = fdtdec_find_aliases_for_id(gd->fdt_blob, "padctl",
+                               COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL,
+                               node_offsets, ARRAY_SIZE(node_offsets));
+               for (i = 0; i < count; i++)
+                       nodes[i] = offset_to_ofnode(node_offsets[i]);
+       }
 
-       count = fdtdec_find_aliases_for_id(fdt, "padctl",
-                                          COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL,
-                                          nodes, ARRAY_SIZE(nodes));
-       if (tegra_xusb_process_nodes(fdt, nodes, count, &tegra124_socdata))
-               return;
+       ret = tegra_xusb_process_nodes(nodes, count, &tegra124_socdata);
+       debug("%s: done, ret=%d\n", __func__, ret);
 }
index 9ec93e7c4c4c0ce4ad14f2feaaedb4c6e9f296c6..bf85e075de2f648bfe2c3ebac3e87d0195e5e6ac 100644 (file)
@@ -8,6 +8,8 @@
 
 #include <common.h>
 #include <errno.h>
+#include <dm/of_access.h>
+#include <dm/ofnode.h>
 
 #include "../xusb-padctl-common.h"
 
@@ -15,6 +17,8 @@
 
 #include <dt-bindings/pinctrl/pinctrl-tegra-xusb.h>
 
+DECLARE_GLOBAL_DATA_PTR;
+
 enum tegra210_function {
        TEGRA210_FUNC_SNPS,
        TEGRA210_FUNC_XUSB,
@@ -421,17 +425,33 @@ static const struct tegra_xusb_padctl_soc tegra210_socdata = {
        .num_phys = ARRAY_SIZE(tegra210_phys),
 };
 
-void tegra_xusb_padctl_init(const void *fdt)
+void tegra_xusb_padctl_init(void)
 {
-       int count, nodes[1];
-
-       debug("> %s(fdt=%p)\n", __func__, fdt);
-
-       count = fdtdec_find_aliases_for_id(fdt, "padctl",
-                                          COMPAT_NVIDIA_TEGRA210_XUSB_PADCTL,
-                                          nodes, ARRAY_SIZE(nodes));
-       if (tegra_xusb_process_nodes(fdt, nodes, count, &tegra210_socdata))
-               return;
+       ofnode nodes[1];
+       int count = 0;
+       int ret;
+
+       debug("%s: start\n", __func__);
+       if (of_live_active()) {
+               struct device_node *np = of_find_compatible_node(NULL, NULL,
+                                               "nvidia,tegra210-xusb-padctl");
+
+               debug("np=%p\n", np);
+               if (np) {
+                       nodes[0] = np_to_ofnode(np);
+                       count = 1;
+               }
+       } else {
+               int node_offsets[1];
+               int i;
+
+               count = fdtdec_find_aliases_for_id(gd->fdt_blob, "padctl",
+                               COMPAT_NVIDIA_TEGRA210_XUSB_PADCTL,
+                               node_offsets, ARRAY_SIZE(node_offsets));
+               for (i = 0; i < count; i++)
+                       nodes[i] = offset_to_ofnode(node_offsets[i]);
+       }
 
-       debug("< %s()\n", __func__);
+       ret = tegra_xusb_process_nodes(nodes, count, &tegra210_socdata);
+       debug("%s: done, ret=%d\n", __func__, ret);
 }
index 43f5bb7da63939bac53a437c29a1527ea3c3ec21..37b5b8fb5b9920b3758259729cc52d912b44989f 100644 (file)
@@ -75,14 +75,14 @@ tegra_xusb_padctl_find_lane(struct tegra_xusb_padctl *padctl, const char *name)
 static int
 tegra_xusb_padctl_group_parse_dt(struct tegra_xusb_padctl *padctl,
                                 struct tegra_xusb_padctl_group *group,
-                                const void *fdt, int node)
+                                ofnode node)
 {
        unsigned int i;
-       int len;
+       int len, ret;
 
-       group->name = fdt_get_name(fdt, node, &len);
+       group->name = ofnode_get_name(node);
 
-       len = fdt_stringlist_count(fdt, node, "nvidia,lanes");
+       len = ofnode_read_string_count(node, "nvidia,lanes");
        if (len < 0) {
                error("failed to parse \"nvidia,lanes\" property");
                return -EINVAL;
@@ -91,9 +91,9 @@ tegra_xusb_padctl_group_parse_dt(struct tegra_xusb_padctl *padctl,
        group->num_pins = len;
 
        for (i = 0; i < group->num_pins; i++) {
-               group->pins[i] = fdt_stringlist_get(fdt, node, "nvidia,lanes",
-                                                   i, NULL);
-               if (!group->pins[i]) {
+               ret = ofnode_read_string_index(node, "nvidia,lanes", i,
+                                              &group->pins[i]);
+               if (ret) {
                        error("failed to read string from \"nvidia,lanes\" property");
                        return -EINVAL;
                }
@@ -101,13 +101,14 @@ tegra_xusb_padctl_group_parse_dt(struct tegra_xusb_padctl *padctl,
 
        group->num_pins = len;
 
-       group->func = fdt_stringlist_get(fdt, node, "nvidia,function", 0, NULL);
-       if (!group->func) {
+       ret = ofnode_read_string_index(node, "nvidia,function", 0,
+                                      &group->func);
+       if (ret) {
                error("failed to parse \"nvidia,func\" property");
                return -EINVAL;
        }
 
-       group->iddq = fdtdec_get_int(fdt, node, "nvidia,iddq", -1);
+       group->iddq = ofnode_read_u32_default(node, "nvidia,iddq", -1);
 
        return 0;
 }
@@ -217,20 +218,21 @@ tegra_xusb_padctl_config_apply(struct tegra_xusb_padctl *padctl,
 static int
 tegra_xusb_padctl_config_parse_dt(struct tegra_xusb_padctl *padctl,
                                  struct tegra_xusb_padctl_config *config,
-                                 const void *fdt, int node)
+                                 ofnode node)
 {
-       int subnode;
+       ofnode subnode;
 
-       config->name = fdt_get_name(fdt, node, NULL);
+       config->name = ofnode_get_name(node);
 
-       fdt_for_each_subnode(subnode, fdt, node) {
+       for (subnode = ofnode_first_subnode(node);
+            ofnode_valid(subnode);
+            subnode = ofnode_next_subnode(subnode)) {
                struct tegra_xusb_padctl_group *group;
                int err;
 
                group = &config->groups[config->num_groups];
 
-               err = tegra_xusb_padctl_group_parse_dt(padctl, group, fdt,
-                                                      subnode);
+               err = tegra_xusb_padctl_group_parse_dt(padctl, group, subnode);
                if (err < 0) {
                        error("failed to parse group %s", group->name);
                        return err;
@@ -243,20 +245,24 @@ tegra_xusb_padctl_config_parse_dt(struct tegra_xusb_padctl *padctl,
 }
 
 static int tegra_xusb_padctl_parse_dt(struct tegra_xusb_padctl *padctl,
-                                     const void *fdt, int node)
+                                     ofnode node)
 {
-       int subnode, err;
+       ofnode subnode;
+       int err;
 
-       err = fdt_get_resource(fdt, node, "reg", 0, &padctl->regs);
+       err = ofnode_read_resource(node, 0, &padctl->regs);
        if (err < 0) {
                error("registers not found");
                return err;
        }
 
-       fdt_for_each_subnode(subnode, fdt, node) {
+       for (subnode = ofnode_first_subnode(node);
+            ofnode_valid(subnode);
+            subnode = ofnode_next_subnode(subnode)) {
                struct tegra_xusb_padctl_config *config = &padctl->config;
 
-               err = tegra_xusb_padctl_config_parse_dt(padctl, config, fdt,
+               debug("%s: subnode=%s\n", __func__, ofnode_get_name(subnode));
+               err = tegra_xusb_padctl_config_parse_dt(padctl, config,
                                                        subnode);
                if (err < 0) {
                        error("failed to parse entry %s: %d",
@@ -264,25 +270,28 @@ static int tegra_xusb_padctl_parse_dt(struct tegra_xusb_padctl *padctl,
                        continue;
                }
        }
+       debug("%s: done\n", __func__);
 
        return 0;
 }
 
 struct tegra_xusb_padctl padctl;
 
-int tegra_xusb_process_nodes(const void *fdt, int nodes[], unsigned int count,
-       const struct tegra_xusb_padctl_soc *socdata)
+int tegra_xusb_process_nodes(ofnode nodes[], unsigned int count,
+                            const struct tegra_xusb_padctl_soc *socdata)
 {
        unsigned int i;
        int err;
 
+       debug("%s: count=%d\n", __func__, count);
        for (i = 0; i < count; i++) {
-               if (!fdtdec_get_is_enabled(fdt, nodes[i]))
+               debug("%s: i=%d, node=%p\n", __func__, i, nodes[i].np);
+               if (!ofnode_is_available(nodes[i]))
                        continue;
 
                padctl.socdata = socdata;
 
-               err = tegra_xusb_padctl_parse_dt(&padctl, fdt, nodes[i]);
+               err = tegra_xusb_padctl_parse_dt(&padctl, nodes[i]);
                if (err < 0) {
                        error("failed to parse DT: %d", err);
                        continue;
@@ -300,6 +309,7 @@ int tegra_xusb_process_nodes(const void *fdt, int nodes[], unsigned int count,
                /* only a single instance is supported */
                break;
        }
+       debug("%s: done\n", __func__);
 
        return 0;
 }
index f44790a65004e8a5192dbc8fc094a236c3d2adc3..68365883c7811f9b7780fa1263ce81e335443baa 100644 (file)
@@ -9,9 +9,11 @@
 
 #include <common.h>
 #include <fdtdec.h>
+#include <dm/ofnode.h>
 
 #include <asm/io.h>
 #include <asm/arch-tegra/xusb-padctl.h>
+#include <linux/ioport.h>
 
 struct tegra_xusb_padctl_lane {
        const char *name;
@@ -77,7 +79,7 @@ struct tegra_xusb_padctl_config {
 struct tegra_xusb_padctl {
        const struct tegra_xusb_padctl_soc *socdata;
        struct tegra_xusb_padctl_config config;
-       struct fdt_resource regs;
+       struct resource regs;
        unsigned int enable;
 
 };
@@ -95,7 +97,7 @@ static inline void padctl_writel(struct tegra_xusb_padctl *padctl,
        writel(value, padctl->regs.start + offset);
 }
 
-int tegra_xusb_process_nodes(const void *fdt, int nodes[], unsigned int count,
-       const struct tegra_xusb_padctl_soc *socdata);
+int tegra_xusb_process_nodes(ofnode nodes[], unsigned int count,
+                            const struct tegra_xusb_padctl_soc *socdata);
 
 #endif
index 65f8d2ea967abaa5756be14ffca67fa13729f356..856d71251226219138b038f856093ecf2fa5297d 100644 (file)
@@ -34,6 +34,6 @@ int __weak tegra_xusb_phy_unprepare(struct tegra_xusb_phy *phy)
        return -ENOSYS;
 }
 
-void __weak tegra_xusb_padctl_init(const void *fdt)
+void __weak tegra_xusb_padctl_init(void)
 {
 }
index 5739325da71b91004a4b168970647525120670c7..1aed55a539bddb162053634ef6d6a9ee7335891f 100644 (file)
@@ -10,14 +10,6 @@ config ARCH_UNIPHIER_32BIT
        select ARMV7_NONSEC
        select ARCH_SUPPORT_PSCI
 
-config ARCH_UNIPHIER_64BIT
-       bool
-       select ARM64
-       select CMD_UNZIP
-       select SPL_SEPARATE_BSS if SPL
-       select ARMV8_MULTIENTRY if SPL
-       select ARMV8_SPIN_TABLE if SPL
-
 choice
         prompt "UniPhier SoC select"
         default ARCH_UNIPHIER_PRO4
@@ -38,18 +30,11 @@ config ARCH_UNIPHIER_PRO5_PXS2_LD6B
        bool "UniPhier Pro5/PXs2/LD6b SoCs"
        select ARCH_UNIPHIER_32BIT
 
-config ARCH_UNIPHIER_LD11_SINGLE
-       bool "UniPhier LD11 SoC"
-       select ARCH_UNIPHIER_64BIT
-
-config ARCH_UNIPHIER_LD20_SINGLE
-       bool "UniPhier LD20 SoC"
-       select ARCH_UNIPHIER_64BIT
-
 config ARCH_UNIPHIER_V8_MULTI
        bool "UniPhier V8 SoCs"
        depends on !SPL
-       select ARCH_UNIPHIER_64BIT
+       select ARM64
+       select CMD_UNZIP
 
 endchoice
 
@@ -79,13 +64,13 @@ config ARCH_UNIPHIER_LD6B
        default y
 
 config ARCH_UNIPHIER_LD11
-       bool "Enable UniPhier LD11 SoC support" if ARCH_UNIPHIER_V8_MULTI
-       depends on ARCH_UNIPHIER_LD11_SINGLE || ARCH_UNIPHIER_V8_MULTI
+       bool "Enable UniPhier LD11 SoC support"
+       depends on ARCH_UNIPHIER_V8_MULTI
        default y
 
 config ARCH_UNIPHIER_LD20
-       bool "Enable UniPhier LD20 SoC support" if ARCH_UNIPHIER_V8_MULTI
-       depends on ARCH_UNIPHIER_LD20_SINGLE || ARCH_UNIPHIER_V8_MULTI
+       bool "Enable UniPhier LD20 SoC support"
+       depends on ARCH_UNIPHIER_V8_MULTI
        select OF_BOARD_SETUP
        default y
 
index 06072f23bd8c478e49ef6dfc613775e29b7f57fe..12d91e0491e8e5e299315bdc90e272c1112723df 100644 (file)
@@ -2,14 +2,5 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-ifdef CONFIG_SPL_BUILD
-obj-y += timer.o
-else
 obj-y += mem_map.o
-ifdef CONFIG_ARMV8_MULTIENTRY
-obj-y += smp.o smp_kick_cpus.o
-obj-$(CONFIG_ARCH_UNIPHIER_LD20) += arm-cci500.o
-else
 obj-$(CONFIG_ARCH_UNIPHIER_LD20) += lowlevel_init.o
-endif
-endif
diff --git a/arch/arm/mach-uniphier/arm64/arm-cci500.c b/arch/arm/mach-uniphier/arm64/arm-cci500.c
deleted file mode 100644 (file)
index bf0fad4..0000000
+++ /dev/null
@@ -1,42 +0,0 @@
-/*
- * Initialization of ARM Corelink CCI-500 Cache Coherency Interconnect
- *
- * Copyright (C) 2016 Socionext Inc.
- *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/bitops.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-
-#include "../init.h"
-
-#define CCI500_BASE                    0x5FD00000
-#define CCI500_SLAVE_OFFSET            0x1000
-
-#define CCI500_SNOOP_CTRL
-#define   CCI500_SNOOP_CTRL_EN_DVM     BIT(1)
-#define   CCI500_SNOOP_CTRL_EN_SNOOP   BIT(0)
-
-void cci500_init(unsigned int nr_slaves)
-{
-       unsigned long slave_base = CCI500_BASE + CCI500_SLAVE_OFFSET;
-       int i;
-
-       for (i = 0; i < nr_slaves; i++) {
-               void __iomem *base;
-               u32 tmp;
-
-               base = ioremap(slave_base, SZ_4K);
-
-               tmp = readl(base);
-               tmp |= CCI500_SNOOP_CTRL_EN_DVM | CCI500_SNOOP_CTRL_EN_SNOOP;
-               writel(tmp, base);
-
-               iounmap(base);
-
-               slave_base += CCI500_SLAVE_OFFSET;
-       }
-}
diff --git a/arch/arm/mach-uniphier/arm64/smp.S b/arch/arm/mach-uniphier/arm64/smp.S
deleted file mode 100644 (file)
index 9348ec9..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (C) 2016 Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/linkage.h>
-
-ENTRY(uniphier_smp_setup)
-       mrs     x0, s3_1_c15_c2_1       /* CPUECTLR_EL1 */
-       orr     x0, x0, #(1 << 6)       /* SMPEN */
-       msr     s3_1_c15_c2_1, x0
-       ret
-ENDPROC(uniphier_smp_setup)
-
-ENTRY(uniphier_secondary_startup)
-       bl      uniphier_smp_setup
-       b       _start
-ENDPROC(uniphier_secondary_startup)
diff --git a/arch/arm/mach-uniphier/arm64/smp_kick_cpus.c b/arch/arm/mach-uniphier/arm64/smp_kick_cpus.c
deleted file mode 100644 (file)
index 8e5b198..0000000
+++ /dev/null
@@ -1,32 +0,0 @@
-/*
- * Copyright (C) 2016 Socionext Inc.
- *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-#include <linux/sizes.h>
-
-#include "../init.h"
-
-#define UNIPHIER_SMPCTRL_ROM_RSV0      0x59801200
-
-void uniphier_smp_setup(void);
-void uniphier_secondary_startup(void);
-
-void uniphier_smp_kick_all_cpus(void)
-{
-       void __iomem *rom_boot_rsv0;
-
-       rom_boot_rsv0 = ioremap(UNIPHIER_SMPCTRL_ROM_RSV0, SZ_8);
-
-       writeq((u64)uniphier_secondary_startup, rom_boot_rsv0);
-
-       iounmap(rom_boot_rsv0);
-
-       uniphier_smp_setup();
-
-       asm("dsb        ishst\n" /* Ensure the write to ROM_RSV0 is visible */
-           "sev"); /* Bring up all secondary CPUs from Boot ROM into U-Boot */
-}
diff --git a/arch/arm/mach-uniphier/arm64/timer.c b/arch/arm/mach-uniphier/arm64/timer.c
deleted file mode 100644 (file)
index c10903a..0000000
+++ /dev/null
@@ -1,37 +0,0 @@
-/*
- * Copyright (C) 2016 Socionext Inc.
- *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/bitops.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-
-#define CNT_CONTROL_BASE       0x60E00000
-
-#define CNTCR                  0x000
-#define   CNTCR_EN                     BIT(0)
-
-/* setup ARMv8 Generic Timer */
-int timer_init(void)
-{
-       void __iomem *base;
-       u32 tmp;
-
-       base = ioremap(CNT_CONTROL_BASE, SZ_4K);
-
-       /*
-        * Note:
-        * In a system that implements both Secure and Non-secure states,
-        * this register is only writable in Secure state.
-        */
-       tmp = readl(base + CNTCR);
-       tmp |= CNTCR_EN;
-       writel(tmp, base + CNTCR);
-
-       iounmap(base);
-
-       return 0;
-}
index ca910f6d725450362c809a233e94f0492cb8684e..884bc67654d46dd64cfcc75ad511219ca2d954a7 100644 (file)
@@ -73,9 +73,6 @@ static void uniphier_ld20_misc_init(void)
                writel(0x0000b500, 0x6184e024);
                writel(0x00000001, 0x6184e000);
        }
-#ifdef CONFIG_ARMV8_MULTIENTRY
-       cci500_init(2);
-#endif
 }
 #endif
 
@@ -230,12 +227,6 @@ int board_init(void)
 
        support_card_late_init();
 
-       led_puts("U6");
-
-#ifdef CONFIG_ARMV8_MULTIENTRY
-       uniphier_smp_kick_all_cpus();
-#endif
-
        led_puts("Uboo");
 
        return 0;
index e3b933502230489e374354b127eb0cc0355bee58..78de256a01e54d3d05a9f75dc62148cf636ac676 100644 (file)
@@ -140,69 +140,6 @@ static const struct uniphier_board_data uniphier_ld6b_data = {
 };
 #endif
 
-#if defined(CONFIG_ARCH_UNIPHIER_LD11)
-static const struct uniphier_board_data uniphier_ld11_data = {
-       .dram_freq = 1600,
-       .dram_ch[0] = {
-               .size = 0x20000000,
-               .width = 16,
-       },
-       .dram_ch[1] = {
-               .size = 0x20000000,
-               .width = 16,
-       },
-};
-#endif
-
-#if defined(CONFIG_ARCH_UNIPHIER_LD20)
-static const struct uniphier_board_data uniphier_ld20_ref_data = {
-       .dram_freq = 1866,
-       .dram_ch[0] = {
-               .size = 0x40000000,
-               .width = 32,
-       },
-       .dram_ch[1] = {
-               .size = 0x40000000,
-               .width = 32,
-       },
-       .dram_ch[2] = {
-               .size = 0x40000000,
-               .width = 32,
-       },
-       .flags = UNIPHIER_BD_BOARD_LD20_REF,
-};
-
-static const struct uniphier_board_data uniphier_ld20_data = {
-       .dram_freq = 1866,
-       .dram_ch[0] = {
-               .size = 0x40000000,
-               .width = 32,
-       },
-       .dram_ch[1] = {
-               .size = 0x40000000,
-               .width = 32,
-       },
-       .dram_ch[2] = {
-               .size = 0x40000000,
-               .width = 32,
-       },
-       .flags = UNIPHIER_BD_BOARD_LD20_GLOBAL,
-};
-
-static const struct uniphier_board_data uniphier_ld21_data = {
-       .dram_freq = 1866,
-       .dram_ch[0] = {
-               .size = 0x20000000,
-               .width = 32,
-       },
-       .dram_ch[1] = {
-               .size = 0x40000000,
-               .width = 32,
-       },
-       .flags = UNIPHIER_BD_DRAM_SPARSE | UNIPHIER_BD_BOARD_LD21_GLOBAL,
-};
-#endif
-
 struct uniphier_board_id {
        const char *compatible;
        const struct uniphier_board_data *param;
@@ -232,14 +169,6 @@ static const struct uniphier_board_id uniphier_boards[] = {
 #if defined(CONFIG_ARCH_UNIPHIER_LD6B)
        { "socionext,uniphier-ld6b", &uniphier_ld6b_data, },
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_LD11)
-       { "socionext,uniphier-ld11", &uniphier_ld11_data, },
-#endif
-#if defined(CONFIG_ARCH_UNIPHIER_LD20)
-       { "socionext,uniphier-ld21", &uniphier_ld21_data, },
-       { "socionext,uniphier-ld20-ref", &uniphier_ld20_ref_data, },
-       { "socionext,uniphier-ld20", &uniphier_ld20_data, },
-#endif
 };
 
 const struct uniphier_board_data *uniphier_get_board_param(void)
index abb58a729aa31eda3ff193860426baa2f663c5b1..b35729213032ff74aa796beefcd640b16a19796f 100644 (file)
@@ -14,7 +14,3 @@ obj-$(CONFIG_ARCH_UNIPHIER_LD6B)      += boot-device-pxs2.o
 obj-$(CONFIG_ARCH_UNIPHIER_LD11)       += boot-device-ld11.o
 obj-$(CONFIG_ARCH_UNIPHIER_LD20)       += boot-device-ld11.o
 obj-$(CONFIG_ARCH_UNIPHIER_PXS3)       += boot-device-pxs3.o
-
-ifdef CONFIG_SPL_BUILD
-obj-$(CONFIG_SPL_BOARD_LOAD_IMAGE)     += spl_board.o
-endif
diff --git a/arch/arm/mach-uniphier/boot-device/spl_board.c b/arch/arm/mach-uniphier/boot-device/spl_board.c
deleted file mode 100644 (file)
index bd47ac8..0000000
+++ /dev/null
@@ -1,262 +0,0 @@
-/*
- * Copyright (C) 2017 Socionext Inc.
- *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <spl.h>
-#include <linux/bitops.h>
-#include <linux/compat.h>
-#include <linux/io.h>
-#include <asm/processor.h>
-
-#include "../soc-info.h"
-
-#define MMC_CMD_SWITCH                 6
-#define MMC_CMD_SELECT_CARD            7
-#define MMC_CMD_SEND_CSD               9
-#define MMC_CMD_READ_MULTIPLE_BLOCK    18
-
-#define EXT_CSD_PART_CONF              179     /* R/W */
-
-#define MMC_RSP_PRESENT BIT(0)
-#define MMC_RSP_136    BIT(1)          /* 136 bit response */
-#define MMC_RSP_CRC    BIT(2)          /* expect valid crc */
-#define MMC_RSP_BUSY   BIT(3)          /* card may send busy */
-#define MMC_RSP_OPCODE BIT(4)          /* response contains opcode */
-
-#define MMC_RSP_NONE   (0)
-#define MMC_RSP_R1     (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE)
-#define MMC_RSP_R1b    (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE | \
-                       MMC_RSP_BUSY)
-#define MMC_RSP_R2     (MMC_RSP_PRESENT | MMC_RSP_136 | MMC_RSP_CRC)
-#define MMC_RSP_R3     (MMC_RSP_PRESENT)
-#define MMC_RSP_R4     (MMC_RSP_PRESENT)
-#define MMC_RSP_R5     (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE)
-#define MMC_RSP_R6     (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE)
-#define MMC_RSP_R7     (MMC_RSP_PRESENT | MMC_RSP_CRC | MMC_RSP_OPCODE)
-
-#define SDHCI_DMA_ADDRESS      0x00
-#define SDHCI_BLOCK_SIZE       0x04
-#define  SDHCI_MAKE_BLKSZ(dma, blksz) ((((dma) & 0x7) << 12) | ((blksz) & 0xFFF))
-#define SDHCI_BLOCK_COUNT      0x06
-#define SDHCI_ARGUMENT         0x08
-#define SDHCI_TRANSFER_MODE    0x0C
-#define  SDHCI_TRNS_DMA                BIT(0)
-#define  SDHCI_TRNS_BLK_CNT_EN BIT(1)
-#define  SDHCI_TRNS_ACMD12     BIT(2)
-#define  SDHCI_TRNS_READ       BIT(4)
-#define  SDHCI_TRNS_MULTI      BIT(5)
-#define SDHCI_COMMAND          0x0E
-#define  SDHCI_CMD_RESP_MASK   0x03
-#define  SDHCI_CMD_CRC         0x08
-#define  SDHCI_CMD_INDEX       0x10
-#define  SDHCI_CMD_DATA                0x20
-#define  SDHCI_CMD_ABORTCMD    0xC0
-#define  SDHCI_CMD_RESP_NONE   0x00
-#define  SDHCI_CMD_RESP_LONG   0x01
-#define  SDHCI_CMD_RESP_SHORT  0x02
-#define  SDHCI_CMD_RESP_SHORT_BUSY 0x03
-#define  SDHCI_MAKE_CMD(c, f) ((((c) & 0xff) << 8) | ((f) & 0xff))
-#define SDHCI_RESPONSE         0x10
-#define SDHCI_HOST_CONTROL     0x28
-#define  SDHCI_CTRL_DMA_MASK   0x18
-#define   SDHCI_CTRL_SDMA      0x00
-#define SDHCI_BLOCK_GAP_CONTROL        0x2A
-#define SDHCI_SOFTWARE_RESET   0x2F
-#define  SDHCI_RESET_CMD       0x02
-#define  SDHCI_RESET_DATA      0x04
-#define SDHCI_INT_STATUS       0x30
-#define  SDHCI_INT_RESPONSE    BIT(0)
-#define  SDHCI_INT_DATA_END    BIT(1)
-#define  SDHCI_INT_ERROR       BIT(15)
-#define SDHCI_SIGNAL_ENABLE    0x38
-
-/* RCA assigned by Boot ROM */
-#define UNIPHIER_EMMC_RCA      0x1000
-
-struct uniphier_mmc_cmd {
-       unsigned int cmdidx;
-       unsigned int resp_type;
-       unsigned int cmdarg;
-       unsigned int is_data;
-};
-
-static int uniphier_emmc_send_cmd(void __iomem *host_base,
-                                 struct uniphier_mmc_cmd *cmd)
-{
-       u32 mode = 0;
-       u32 mask = SDHCI_INT_RESPONSE;
-       u32 stat, flags;
-
-       writel(U32_MAX, host_base + SDHCI_INT_STATUS);
-       writel(0, host_base + SDHCI_SIGNAL_ENABLE);
-       writel(cmd->cmdarg, host_base + SDHCI_ARGUMENT);
-
-       if (cmd->is_data)
-               mode = SDHCI_TRNS_DMA | SDHCI_TRNS_BLK_CNT_EN |
-                       SDHCI_TRNS_ACMD12 | SDHCI_TRNS_READ |
-                       SDHCI_TRNS_MULTI;
-
-       writew(mode, host_base + SDHCI_TRANSFER_MODE);
-
-       if (!(cmd->resp_type & MMC_RSP_PRESENT))
-               flags = SDHCI_CMD_RESP_NONE;
-       else if (cmd->resp_type & MMC_RSP_136)
-               flags = SDHCI_CMD_RESP_LONG;
-       else if (cmd->resp_type & MMC_RSP_BUSY)
-               flags = SDHCI_CMD_RESP_SHORT_BUSY;
-       else
-               flags = SDHCI_CMD_RESP_SHORT;
-
-       if (cmd->resp_type & MMC_RSP_CRC)
-               flags |= SDHCI_CMD_CRC;
-       if (cmd->resp_type & MMC_RSP_OPCODE)
-               flags |= SDHCI_CMD_INDEX;
-       if (cmd->is_data)
-               flags |= SDHCI_CMD_DATA;
-
-       if (cmd->resp_type & MMC_RSP_BUSY || cmd->is_data)
-               mask |= SDHCI_INT_DATA_END;
-
-       writew(SDHCI_MAKE_CMD(cmd->cmdidx, flags), host_base + SDHCI_COMMAND);
-
-       do {
-               stat = readl(host_base + SDHCI_INT_STATUS);
-               if (stat & SDHCI_INT_ERROR)
-                       return -EIO;
-
-       } while ((stat & mask) != mask);
-
-       return 0;
-}
-
-static int uniphier_emmc_switch_part(void __iomem *host_base, int part_num)
-{
-       struct uniphier_mmc_cmd cmd = {};
-
-       cmd.cmdidx = MMC_CMD_SWITCH;
-       cmd.resp_type = MMC_RSP_R1b;
-       cmd.cmdarg = (EXT_CSD_PART_CONF << 16) | (part_num << 8) | (3 << 24);
-
-       return uniphier_emmc_send_cmd(host_base, &cmd);
-}
-
-static int uniphier_emmc_is_over_2gb(void __iomem *host_base)
-{
-       struct uniphier_mmc_cmd cmd = {};
-       u32 csd40, csd72;       /* CSD[71:40], CSD[103:72] */
-       int ret;
-
-       cmd.cmdidx = MMC_CMD_SEND_CSD;
-       cmd.resp_type = MMC_RSP_R2;
-       cmd.cmdarg = UNIPHIER_EMMC_RCA << 16;
-
-       ret = uniphier_emmc_send_cmd(host_base, &cmd);
-       if (ret)
-               return ret;
-
-       csd40 = readl(host_base + SDHCI_RESPONSE + 4);
-       csd72 = readl(host_base + SDHCI_RESPONSE + 8);
-
-       return !(~csd40 & 0xffc00380) && !(~csd72 & 0x3);
-}
-
-static int uniphier_emmc_load_image(void __iomem *host_base, u32 dev_addr,
-                                   unsigned long load_addr, u32 block_cnt)
-{
-       struct uniphier_mmc_cmd cmd = {};
-       u8 tmp;
-
-       WARN_ON(load_addr >> 32);
-
-       writel(load_addr, host_base + SDHCI_DMA_ADDRESS);
-       writew(SDHCI_MAKE_BLKSZ(7, 512), host_base + SDHCI_BLOCK_SIZE);
-       writew(block_cnt, host_base + SDHCI_BLOCK_COUNT);
-
-       tmp = readb(host_base + SDHCI_HOST_CONTROL);
-       tmp &= ~SDHCI_CTRL_DMA_MASK;
-       tmp |= SDHCI_CTRL_SDMA;
-       writeb(tmp, host_base + SDHCI_HOST_CONTROL);
-
-       tmp = readb(host_base + SDHCI_BLOCK_GAP_CONTROL);
-       tmp &= ~1;              /* clear Stop At Block Gap Request */
-       writeb(tmp, host_base + SDHCI_BLOCK_GAP_CONTROL);
-
-       cmd.cmdidx = MMC_CMD_READ_MULTIPLE_BLOCK;
-       cmd.resp_type = MMC_RSP_R1;
-       cmd.cmdarg = dev_addr;
-       cmd.is_data = 1;
-
-       return uniphier_emmc_send_cmd(host_base, &cmd);
-}
-
-static int spl_board_load_image(struct spl_image_info *spl_image,
-                               struct spl_boot_device *bootdev)
-{
-       u32 dev_addr = CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR;
-       void __iomem *host_base = (void __iomem *)0x5a000200;
-       struct uniphier_mmc_cmd cmd = {};
-       int ret;
-
-       /*
-        * deselect card before SEND_CSD command.
-        * Do not check the return code.  It fails, but it is OK.
-        */
-       cmd.cmdidx = MMC_CMD_SELECT_CARD;
-       cmd.resp_type = MMC_RSP_R1;
-
-       uniphier_emmc_send_cmd(host_base, &cmd); /* CMD7 (arg=0) */
-
-       /* reset CMD Line */
-       writeb(SDHCI_RESET_CMD | SDHCI_RESET_DATA,
-              host_base + SDHCI_SOFTWARE_RESET);
-       while (readb(host_base + SDHCI_SOFTWARE_RESET))
-               cpu_relax();
-
-       ret = uniphier_emmc_is_over_2gb(host_base);
-       if (ret < 0)
-               return ret;
-       if (ret) {
-               debug("card is block addressing\n");
-       } else {
-               debug("card is byte addressing\n");
-               dev_addr *= 512;
-       }
-
-       cmd.cmdarg = UNIPHIER_EMMC_RCA << 16;
-
-       /* select card again */
-       ret = uniphier_emmc_send_cmd(host_base, &cmd);
-       if (ret)
-               printf("failed to select card\n");
-
-       /* Switch to Boot Partition 1 */
-       ret = uniphier_emmc_switch_part(host_base, 1);
-       if (ret)
-               printf("failed to switch partition\n");
-
-       ret = uniphier_emmc_load_image(host_base, dev_addr,
-                                      CONFIG_SYS_TEXT_BASE, 1);
-       if (ret) {
-               printf("failed to load image\n");
-               return ret;
-       }
-
-       ret = spl_parse_image_header(spl_image, (void *)CONFIG_SYS_TEXT_BASE);
-       if (ret)
-               return ret;
-
-       ret = uniphier_emmc_load_image(host_base, dev_addr,
-                                      spl_image->load_addr,
-                                      spl_image->size / 512);
-       if (ret) {
-               printf("failed to load image\n");
-               return ret;
-       }
-
-       return 0;
-}
-SPL_LOAD_IMAGE_METHOD("eMMC", 0, BOOT_DEVICE_BOARD, spl_board_load_image);
index dad035d03a88841586cb09bc41362101cefe37c7..1680dddd6e68c007c8a1d430ea47edba86d0d47e 100644 (file)
@@ -11,8 +11,6 @@ obj-$(CONFIG_ARCH_UNIPHIER_SLD8)      += clk-early-sld3.o clk-dram-sld3.o dpll-sld8.o
 obj-$(CONFIG_ARCH_UNIPHIER_PRO5)       += clk-early-sld3.o clk-dram-pro5.o dpll-pro5.o
 obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += clk-early-sld3.o clk-dram-pxs2.o dpll-pxs2.o
 obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += clk-early-sld3.o clk-dram-pxs2.o dpll-pxs2.o
-obj-$(CONFIG_ARCH_UNIPHIER_LD11)       += clk-early-ld11.o clk-dram-ld11.o dpll-ld11.o
-obj-$(CONFIG_ARCH_UNIPHIER_LD20)       += clk-early-ld11.o clk-dram-ld20.o dpll-ld20.o
 
 else
 
diff --git a/arch/arm/mach-uniphier/clk/clk-dram-ld11.c b/arch/arm/mach-uniphier/clk/clk-dram-ld11.c
deleted file mode 100644 (file)
index 593e11a..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-/*
- * Copyright (C) 2016-2017 Socionext Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc64-regs.h"
-
-void uniphier_ld11_dram_clk_init(void)
-{
-       u32 tmp;
-
-       /* deassert reset */
-       tmp = readl(SC_RSTCTRL7);
-       tmp |= SC_RSTCTRL7_UMC31 | SC_RSTCTRL7_UMC30;
-       writel(tmp, SC_RSTCTRL7);
-
-       /* provide clocks */
-       tmp = readl(SC_CLKCTRL7);
-       tmp |= SC_CLKCTRL7_UMC31 | SC_CLKCTRL7_UMC30;
-       writel(tmp, SC_CLKCTRL7);
-}
diff --git a/arch/arm/mach-uniphier/clk/clk-dram-ld20.c b/arch/arm/mach-uniphier/clk/clk-dram-ld20.c
deleted file mode 100644 (file)
index 62e5acd..0000000
+++ /dev/null
@@ -1,28 +0,0 @@
-/*
- * Copyright (C) 2016-2017 Socionext Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc64-regs.h"
-
-void uniphier_ld20_dram_clk_init(void)
-{
-       u32 tmp;
-
-       /* deassert reset */
-       tmp = readl(SC_RSTCTRL7);
-       tmp |= SC_RSTCTRL7_UMCSB | SC_RSTCTRL7_UMCA2 | SC_RSTCTRL7_UMCA1 |
-               SC_RSTCTRL7_UMCA0 | SC_RSTCTRL7_UMC32 | SC_RSTCTRL7_UMC31 |
-               SC_RSTCTRL7_UMC30;
-       writel(tmp, SC_RSTCTRL7);
-
-       /* provide clocks */
-       tmp = readl(SC_CLKCTRL7);
-       tmp |= SC_CLKCTRL7_UMCSB | SC_CLKCTRL7_UMC32 | SC_CLKCTRL7_UMC31 |
-                                                       SC_CLKCTRL7_UMC30;
-       writel(tmp, SC_CLKCTRL7);
-}
diff --git a/arch/arm/mach-uniphier/clk/clk-early-ld11.c b/arch/arm/mach-uniphier/clk/clk-early-ld11.c
deleted file mode 100644 (file)
index bb6f7a4..0000000
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
- * Copyright (C) 2016-2017 Socionext Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <linux/io.h>
-
-#include "../init.h"
-#include "../sc64-regs.h"
-
-void uniphier_ld11_early_clk_init(void)
-{
-       u32 tmp;
-
-       /* provide clocks */
-       tmp = readl(SC_CLKCTRL4);
-       tmp |= SC_CLKCTRL4_PERI;
-       writel(tmp, SC_CLKCTRL4);
-}
diff --git a/arch/arm/mach-uniphier/clk/dpll-ld11.c b/arch/arm/mach-uniphier/clk/dpll-ld11.c
deleted file mode 100644 (file)
index 7f0677c..0000000
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
- * Copyright (C) 2016 Socionext Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include "../init.h"
-#include "../sc64-regs.h"
-#include "pll.h"
-
-int uniphier_ld11_dpll_init(const struct uniphier_board_data *bd)
-{
-       uniphier_ld20_sscpll_init(SC_DPLLCTRL, UNIPHIER_PLL_FREQ_DEFAULT, 0, 2);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/clk/dpll-ld20.c b/arch/arm/mach-uniphier/clk/dpll-ld20.c
deleted file mode 100644 (file)
index 86e99c4..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
- * Copyright (C) 2016 Socionext Inc.
- *   Author: Masahiro Yamada <yamada.masahiro@socionext.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include "../init.h"
-#include "../sc64-regs.h"
-#include "pll.h"
-
-int uniphier_ld20_dpll_init(const struct uniphier_board_data *bd)
-{
-       uniphier_ld20_sscpll_init(SC_DPLL0CTRL, UNIPHIER_PLL_FREQ_DEFAULT, 0, 2);
-       uniphier_ld20_sscpll_init(SC_DPLL1CTRL, UNIPHIER_PLL_FREQ_DEFAULT, 0, 2);
-       uniphier_ld20_sscpll_init(SC_DPLL2CTRL, UNIPHIER_PLL_FREQ_DEFAULT, 0, 2);
-
-       return 0;
-}
index 94dce7c90d8a9b36037ea1d6f8042f297ab8494d..2ce73c5af8889ed5ce4398d39829e3fb24761309 100644 (file)
@@ -20,37 +20,37 @@ int print_cpuinfo(void)
        model = uniphier_get_soc_model();
        rev = uniphier_get_soc_revision();
 
-       puts("CPU:   ");
+       puts("SoC:   ");
 
        switch (id) {
        case UNIPHIER_SLD3_ID:
-               puts("sLD3 (MN2WS0220)");
+               puts("sLD3");
                required_model = 2;
                break;
        case UNIPHIER_LD4_ID:
-               puts("LD4 (MN2WS0250)");
+               puts("LD4");
                required_rev = 2;
                break;
        case UNIPHIER_PRO4_ID:
-               puts("Pro4 (MN2WS0230)");
+               puts("Pro4");
                break;
        case UNIPHIER_SLD8_ID:
-               puts("sLD8 (MN2WS0270)");
+               puts("sLD8");
                break;
        case UNIPHIER_PRO5_ID:
-               puts("Pro5 (MN2WS0300)");
+               puts("Pro5");
                break;
        case UNIPHIER_PXS2_ID:
-               puts("PXs2 (MN2WS0310)");
+               puts("PXs2");
                break;
        case UNIPHIER_LD6B_ID:
-               puts("LD6b (MN2WS0320)");
+               puts("LD6b");
                break;
        case UNIPHIER_LD11_ID:
-               puts("LD11 (SC1405AP1)");
+               puts("LD11");
                break;
        case UNIPHIER_LD20_ID:
-               puts("LD20 (SC1401AJ1)");
+               puts("LD20");
                break;
        case UNIPHIER_PXS3_ID:
                puts("PXs3");
@@ -60,7 +60,7 @@ int print_cpuinfo(void)
                return -ENOTSUPP;
        }
 
-       printf(" model %d (revision %d)\n", model, rev);
+       printf(" (model %d, revision %d)\n", model, rev);
 
        if (model < required_model) {
                printf("Only model %d or newer is supported.\n",
index 2ce6199988a4cc9201678ca647903518390257b6..1da33f6d80a169970aa3efc459d744a301839a26 100644 (file)
@@ -14,8 +14,6 @@ obj-$(CONFIG_ARCH_UNIPHIER_SLD8)      += umc-sld8.o \
 obj-$(CONFIG_ARCH_UNIPHIER_PRO5)       += umc-pro5.o
 obj-$(CONFIG_ARCH_UNIPHIER_PXS2)       += umc-pxs2.o
 obj-$(CONFIG_ARCH_UNIPHIER_LD6B)       += umc-pxs2.o
-obj-$(CONFIG_ARCH_UNIPHIER_LD11)       += umc-ld11.o
-obj-$(CONFIG_ARCH_UNIPHIER_LD20)       += umc-ld20.o
 
 else
 
diff --git a/arch/arm/mach-uniphier/dram/ddruqphy-regs.h b/arch/arm/mach-uniphier/dram/ddruqphy-regs.h
deleted file mode 100644 (file)
index e496af5..0000000
+++ /dev/null
@@ -1,79 +0,0 @@
-/*
- * Copyright (C) 2016 Socionext Inc.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef _DDRUQPHY_REGS_H
-#define _DDRUQPHY_REGS_H
-
-#include <linux/bitops.h>
-
-#define PHY_REG_SHIFT                  2
-#define PHY_SLV_DLY_WIDTH              6
-#define PHY_BITLVL_DLY_WIDTH           6
-#define PHY_MAS_DLY_WIDTH              8
-
-#define PHY_SCL_START                  (0x40 << (PHY_REG_SHIFT))
-#define   PHY_SCL_START_GO_DONE                BIT(28)
-#define PHY_SCL_DATA_0                 (0x41 << (PHY_REG_SHIFT))
-#define PHY_SCL_DATA_1                 (0x42 << (PHY_REG_SHIFT))
-#define PHY_SCL_LATENCY                        (0x43 << (PHY_REG_SHIFT))
-#define PHY_SCL_CONFIG_1               (0x46 << (PHY_REG_SHIFT))
-#define PHY_SCL_CONFIG_2               (0x47 << (PHY_REG_SHIFT))
-#define PHY_PAD_CTRL                   (0x48 << (PHY_REG_SHIFT))
-#define PHY_DLL_RECALIB                        (0x49 << (PHY_REG_SHIFT))
-#define   PHY_DLL_RECALIB_TRIM_MASK    GENMASK(PHY_SLV_DLY_WIDTH - 1, 0)
-#define   PHY_DLL_RECALIB_INCR         BIT(27)
-#define PHY_DLL_ADRCTRL                        (0x4A << (PHY_REG_SHIFT))
-#define   PHY_DLL_ADRCTRL_TRIM_MASK    GENMASK(PHY_SLV_DLY_WIDTH - 1, 0)
-#define   PHY_DLL_ADRCTRL_INCR         BIT(9)
-#define   PHY_DLL_ADRCTRL_MDL_SHIFT    24
-#define   PHY_DLL_ADRCTRL_MDL_MASK     (GENMASK(PHY_MAS_DLY_WIDTH - 1, 0) << \
-                                               PHY_DLL_ADRCTRL_MDL_SHIFT)
-#define PHY_LANE_SEL                   (0x4B << (PHY_REG_SHIFT))
-#define   PHY_LANE_SEL_LANE_SHIFT      0
-#define   PHY_LANE_SEL_LANE_WIDTH      8
-#define   PHY_LANE_SEL_BIT_SHIFT       8
-#define   PHY_LANE_SEL_BIT_WIDTH       4
-#define PHY_DLL_TRIM_1                 (0x4C << (PHY_REG_SHIFT))
-#define PHY_DLL_TRIM_2                 (0x4D << (PHY_REG_SHIFT))
-#define PHY_DLL_TRIM_3                 (0x4E << (PHY_REG_SHIFT))
-#define PHY_SCL_MAIN_CLK_DELTA         (0x50 << (PHY_REG_SHIFT))
-#define PHY_WRLVL_AUTOINC_TRIM         (0x53 << (PHY_REG_SHIFT))
-#define PHY_WRLVL_DYN_ODT              (0x54 << (PHY_REG_SHIFT))
-#define PHY_WRLVL_ON_OFF               (0x55 << (PHY_REG_SHIFT))
-#define PHY_UNQ_ANALOG_DLL_1           (0x57 << (PHY_REG_SHIFT))
-#define PHY_UNQ_ANALOG_DLL_2           (0x58 << (PHY_REG_SHIFT))
-#define PHY_DLL_INCR_TRIM_1            (0x59 << (PHY_REG_SHIFT))
-#define PHY_DLL_INCR_TRIM_3            (0x5A << (PHY_REG_SHIFT))
-#define PHY_SCL_CONFIG_3               (0x5B << (PHY_REG_SHIFT))
-#define PHY_UNIQUIFY_TSMC_IO_1         (0x5C << (PHY_REG_SHIFT))
-#define PHY_SCL_START_ADDR             (0x62 << (PHY_REG_SHIFT))
-#define PHY_IP_DQ_DQS_BITWISE_TRIM     (0x65 << (PHY_REG_SHIFT))
-#define   PHY_IP_DQ_DQS_BITWISE_TRIM_MASK      \
-                                       GENMASK(PHY_BITLVL_DLY_WIDTH - 1, 0)
-#define   PHY_IP_DQ_DQS_BITWISE_TRIM_INC       \
-                                       BIT(PHY_BITLVL_DLY_WIDTH)
-#define   PHY_IP_DQ_DQS_BITWISE_TRIM_OVERRIDE  \
-                                       BIT(PHY_BITLVL_DLY_WIDTH + 1)
-#define PHY_DSCL_CNT                   (0x67 << (PHY_REG_SHIFT))
-#define PHY_OP_DQ_DM_DQS_BITWISE_TRIM  (0x68 << (PHY_REG_SHIFT))
-#define   PHY_OP_DQ_DM_DQS_BITWISE_TRIM_MASK   \
-                                       GENMASK(PHY_BITLVL_DLY_WIDTH - 1, 0)
-#define   PHY_OP_DQ_DM_DQS_BITWISE_TRIM_INC    \
-                                       BIT(PHY_BITLVL_DLY_WIDTH)
-#define   PHY_OP_DQ_DM_DQS_BITWISE_TRIM_OVERRIDE       \
-                                       BIT(PHY_BITLVL_DLY_WIDTH + 1)
-#define PHY_DLL_TRIM_CLK               (0x69 << (PHY_REG_SHIFT))
-#define   PHY_DLL_TRIM_CLK_MASK                GENMASK(PHY_SLV_DLY_WIDTH, 0)
-#define   PHY_DLL_TRIM_CLK_INCR                BIT(PHY_SLV_DLY_WIDTH + 1)
-#define PHY_DYNAMIC_BIT_LVL            (0x6B << (PHY_REG_SHIFT))
-#define PHY_SCL_WINDOW_TRIM            (0x6D << (PHY_REG_SHIFT))
-#define PHY_DISABLE_GATING_FOR_SCL     (0x6E << (PHY_REG_SHIFT))
-#define PHY_SCL_CONFIG_4               (0x6F << (PHY_REG_SHIFT))
-#define PHY_DYNAMIC_WRITE_BIT_LVL      (0x70 << (PHY_REG_SHIFT))
-#define PHY_VREF_TRAINING              (0x72 << (PHY_REG_SHIFT))
-#define PHY_SCL_GATE_TIMING            (0x78 << (PHY_REG_SHIFT))
-
-#endif /* _DDRUQPHY_REGS_H */
diff --git a/arch/arm/mach-uniphier/dram/umc-ld11.c b/arch/arm/mach-uniphier/dram/umc-ld11.c
deleted file mode 100644 (file)
index 9e2021a..0000000
+++ /dev/null
@@ -1,491 +0,0 @@
-/*
- * Copyright (C) 2016 Socionext Inc.
- */
-
-#include <common.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-#include <asm/processor.h>
-
-#include "../init.h"
-#include "ddrphy-regs.h"
-#include "umc64-regs.h"
-
-#define DDR_FREQ               1600
-
-#define DRAM_CH_NR     2
-#define RANK_BLOCKS_TR 2
-
-enum dram_freq {
-       DRAM_FREQ_1600M,
-       DRAM_FREQ_NR,
-};
-
-enum dram_size {
-       DRAM_SZ_256M,
-       DRAM_SZ_512M,
-       DRAM_SZ_NR,
-};
-
-/* PHY */
-static const int rof_pos_shift_pre[RANK_BLOCKS_TR][2] = { {0, 0}, {0, 0} };
-static const int rof_neg_shift_pre[RANK_BLOCKS_TR][2] = { {0, 0}, {0, 0} };
-static const int rof_pos_shift[RANK_BLOCKS_TR][2] = { {-35, -35}, {-35, -35} };
-static const int rof_neg_shift[RANK_BLOCKS_TR][2] = { {-17, -17}, {-17, -17} };
-static const int tof_shift[RANK_BLOCKS_TR][2] = { {-50, -50}, {-50, -50} };
-
-/* Register address */
-#define PHY_ZQ0CR1     0x00000184
-#define PHY_ZQ1CR1     0x00000194
-#define PHY_ZQ2CR1     0x000001A4
-#define PHY_DX0GCR     0x000001C0
-#define PHY_DX0GTR     0x000001F0
-#define PHY_DX1GCR     0x00000200
-#define PHY_DX1GTR     0x00000230
-#define PHY_DX2GCR     0x00000240
-#define PHY_DX2GTR     0x00000270
-#define PHY_DX3GCR     0x00000280
-#define PHY_DX3GTR     0x000002B0
-
-#define PHY_DXMDLR(dx)         (0x000001EC + 0x40 * (dx))
-#define PHY_DXLCDLR0(dx)       (0x000001E0 + 0x40 * (dx))
-#define PHY_DXLCDLR1(dx)       (0x000001E4 + 0x40 * (dx))
-#define PHY_DXLCDLR2(dx)       (0x000001E8 + 0x40 * (dx))
-#define PHY_DXBDLR1(dx)                (0x000001D0 + 0x40 * (dx))
-#define PHY_DXBDLR2(dx)                (0x000001D4 + 0x40 * (dx))
-
-/* MASK */
-#define PHY_ACBD_MASK          0x00FC0000
-#define PHY_CK0BD_MASK         0x0000003F
-#define PHY_CK1BD_MASK         0x00000FC0
-#define PHY_IPRD_MASK          0x000000FF
-#define PHY_WLD_MASK(rank)     (0xFF << (8 * (rank)))
-#define PHY_DQSGD_MASK(rank)   (0xFF << (8 * (rank)))
-#define PHY_DQSGX_MASK         BIT(6)
-#define PHY_DSWBD_MASK         0x3F000000      /* bit[29:24] */
-#define PHY_DSDQOE_MASK                0x00000FFF
-
-static void ddrphy_maskwritel(u32 data, u32 mask, void __iomem *addr)
-{
-       u32 value;
-
-       value = (readl(addr) & ~(mask)) | (data & mask);
-       writel(value, addr);
-}
-
-static u32 ddrphy_maskreadl(u32 mask, void __iomem *addr)
-{
-       return readl(addr) & mask;
-}
-
-/* step of 0.5T  for PUB-byte */
-static u8 ddrphy_get_mdl(int dx, void __iomem *phy_base)
-{
-       return ddrphy_maskreadl(PHY_IPRD_MASK, phy_base + PHY_DXMDLR(dx));
-}
-
-/* Calculating step for PUB-byte */
-static int ddrphy_hpstep(int delay, int dx, void __iomem *phy_base)
-{
-       return delay * ddrphy_get_mdl(dx, phy_base) * DDR_FREQ / 1000000;
-}
-
-static void ddrphy_vt_ctrl(void __iomem *phy_base, int enable)
-{
-       u32 tmp;
-
-       tmp = readl(phy_base + PHY_PGCR1);
-
-       if (enable)
-               tmp &= ~PHY_PGCR1_INHVT;
-       else
-               tmp |= PHY_PGCR1_INHVT;
-
-       writel(tmp, phy_base + PHY_PGCR1);
-
-       if (!enable) {
-               while (!(readl(phy_base + PHY_PGSR1) & PHY_PGSR1_VTSTOP))
-                       cpu_relax();
-       }
-}
-
-static void ddrphy_set_ckoffset_qoffset(int delay_ckoffset0, int delay_ckoffset1,
-                                       int delay_qoffset, int enable,
-                                       void __iomem *phy_base)
-{
-       u8 ck_step0, ck_step1;  /* ckoffset_step for clock */
-       u8 q_step;      /*  qoffset_step for clock */
-       int dx;
-
-       dx = 2; /* use dx2 in sLD11 */
-
-       ck_step0 = ddrphy_hpstep(delay_ckoffset0, dx, phy_base);     /* CK-Offset */
-       ck_step1 = ddrphy_hpstep(delay_ckoffset1, dx, phy_base);     /* CK-Offset */
-       q_step = ddrphy_hpstep(delay_qoffset, dx, phy_base);     /*  Q-Offset */
-
-       ddrphy_vt_ctrl(phy_base, 0);
-
-       /* Q->[23:18], CK1->[11:6], CK0->bit[5:0] */
-       if (enable == 1)
-               ddrphy_maskwritel((q_step << 18) + (ck_step1 << 6) + ck_step0,
-                                 PHY_ACBD_MASK | PHY_CK1BD_MASK | PHY_CK0BD_MASK,
-                                 phy_base + PHY_ACBDLR);
-
-       ddrphy_vt_ctrl(phy_base, 1);
-}
-
-static void ddrphy_set_wl_delay_dx(int dx, int r0_delay, int r1_delay,
-                                  int enable, void __iomem *phy_base)
-{
-       int rank;
-       int delay_wl[4];
-       u32 wl_mask  = 0;   /* WriteLeveling's Mask  */
-       u32 wl_value = 0;   /* WriteLeveling's Value */
-
-       delay_wl[0] = r0_delay & 0xfff;
-       delay_wl[1] = r1_delay & 0xfff;
-       delay_wl[2] = 0;
-       delay_wl[3] = 0;
-
-       ddrphy_vt_ctrl(phy_base, 0);
-
-       for (rank = 0; rank < 4; rank++) {
-               wl_mask  |= PHY_WLD_MASK(rank);
-               /*  WriteLeveling's delay */
-               wl_value |= ddrphy_hpstep(delay_wl[rank], dx, phy_base) << (8 * rank);
-       }
-
-       if (enable == 1)
-               ddrphy_maskwritel(wl_value, wl_mask, phy_base + PHY_DXLCDLR0(dx));
-
-       ddrphy_vt_ctrl(phy_base, 1);
-}
-
-static void ddrphy_set_dqsg_delay_dx(int dx, int r0_delay, int r1_delay,
-                                    int enable, void __iomem *phy_base)
-{
-       int rank;
-       int delay_dqsg[4];
-       u32 dqsg_mask  = 0;   /* DQSGating_LCDL_delay's Mask  */
-       u32 dqsg_value = 0;   /* DQSGating_LCDL_delay's Value */
-
-       delay_dqsg[0] = r0_delay;
-       delay_dqsg[1] = r1_delay;
-       delay_dqsg[2] = 0;
-       delay_dqsg[3] = 0;
-
-       ddrphy_vt_ctrl(phy_base, 0);
-
-       for (rank = 0; rank < 4; rank++)  {
-               dqsg_mask  |= PHY_DQSGD_MASK(rank);
-                /* DQSGating's delay */
-               dqsg_value |= ddrphy_hpstep(delay_dqsg[rank], dx, phy_base) << (8 * rank);
-       }
-
-       if (enable == 1)
-               ddrphy_maskwritel(dqsg_value, dqsg_mask, phy_base + PHY_DXLCDLR2(dx));
-
-       ddrphy_vt_ctrl(phy_base, 1);
-}
-
-static void ddrphy_set_dswb_delay_dx(int dx, int delay, int enable, void __iomem *phy_base)
-{
-       u8 dswb_step;
-
-       ddrphy_vt_ctrl(phy_base, 0);
-
-       dswb_step = ddrphy_hpstep(delay, dx, phy_base);     /* DQS-BDL's delay */
-
-       if (enable == 1)
-               ddrphy_maskwritel(dswb_step << 24, PHY_DSWBD_MASK, phy_base + PHY_DXBDLR1(dx));
-
-       ddrphy_vt_ctrl(phy_base, 1);
-}
-
-static void ddrphy_set_oe_delay_dx(int dx, int dqs_delay, int dq_delay,
-                                  int enable, void __iomem *phy_base)
-{
-       u8 dqs_oe_step, dq_oe_step;
-       u32 wdata;
-
-       ddrphy_vt_ctrl(phy_base, 0);
-
-       /* OE(DQS,DQ) */
-       dqs_oe_step = ddrphy_hpstep(dqs_delay, dx, phy_base);     /* DQS-oe's delay */
-       dq_oe_step = ddrphy_hpstep(dq_delay, dx, phy_base);     /* DQ-oe's delay */
-       wdata = ((dq_oe_step<<6) + dqs_oe_step) & 0xFFF;
-
-       if (enable == 1)
-               ddrphy_maskwritel(wdata, PHY_DSDQOE_MASK, phy_base + PHY_DXBDLR2(dx));
-
-       ddrphy_vt_ctrl(phy_base, 1);
-}
-
-static void ddrphy_ext_dqsgt(void __iomem *phy_base)
-{
-       /* Extend DQSGating_window   min:+1T  max:+1T */
-       ddrphy_maskwritel(PHY_DQSGX_MASK, PHY_DQSGX_MASK, phy_base + PHY_DSGCR);
-}
-
-static void ddrphy_shift_tof_hws(void __iomem *phy_base, const int shift[][2])
-{
-       int dx, block, byte;
-       u32 lcdlr1, wdqd;
-
-       ddrphy_vt_ctrl(phy_base, 0);
-
-       for (block = 0; block < RANK_BLOCKS_TR; block++) {
-               for (byte = 0; byte < 2; byte++) {
-                       dx = block * 2 + byte;
-                       lcdlr1 = readl(phy_base + PHY_DXLCDLR1(dx));
-                       wdqd = lcdlr1 & 0xff;
-                       wdqd = clamp(wdqd + ddrphy_hpstep(shift[block][byte], dx, phy_base),
-                                    0U, 0xffU);
-                       lcdlr1 = (lcdlr1 & ~0xff) | wdqd;
-                       writel(lcdlr1, phy_base + PHY_DXLCDLR1(dx));
-                       readl(phy_base + PHY_DXLCDLR1(dx)); /* relax */
-               }
-       }
-
-       ddrphy_vt_ctrl(phy_base, 1);
-}
-
-static void ddrphy_shift_rof_hws(void __iomem *phy_base, const int pos_shift[][2],
-                                const int neg_shift[][2])
-{
-       int dx, block, byte;
-       u32 lcdlr1, rdqsd, rdqnsd;
-
-       ddrphy_vt_ctrl(phy_base, 0);
-
-       for (block = 0; block < RANK_BLOCKS_TR; block++) {
-               for (byte = 0; byte < 2; byte++) {
-                       dx = block * 2 + byte;
-                       lcdlr1 = readl(phy_base + PHY_DXLCDLR1(dx));
-
-                       /*  DQS LCDL  RDQNSD->[23:16]  RDQSD->[15:8] */
-                       rdqsd  = (lcdlr1 >> 8) & 0xff;
-                       rdqnsd = (lcdlr1 >> 16) & 0xff;
-                       rdqsd  = clamp(rdqsd + ddrphy_hpstep(pos_shift[block][byte], dx, phy_base),
-                                      0U, 0xffU);
-                       rdqnsd = clamp(rdqnsd + ddrphy_hpstep(neg_shift[block][byte], dx, phy_base),
-                                      0U, 0xffU);
-                       lcdlr1 = (lcdlr1 & ~(0xffff << 8)) | (rdqsd << 8) | (rdqnsd << 16);
-                       writel(lcdlr1, phy_base + PHY_DXLCDLR1(dx));
-                       readl(phy_base + PHY_DXLCDLR1(dx)); /* relax */
-               }
-       }
-
-       ddrphy_vt_ctrl(phy_base, 1);
-}
-
-static void ddrphy_boot_run_hws(void __iomem *phy_base)
-{
-       /* Hard Training for DIO */
-       writel(0x0000f401, phy_base + PHY_PIR);
-       while (!(readl(phy_base + PHY_PGSR0) & PHY_PGSR0_IDONE))
-               cpu_relax();
-}
-
-static void ddrphy_training(void __iomem *phy_base)
-{
-       /* DIO roffset shift before hard training */
-       ddrphy_shift_rof_hws(phy_base, rof_pos_shift_pre, rof_neg_shift_pre);
-
-       /* Hard Training for each CH */
-       ddrphy_boot_run_hws(phy_base);
-
-       /* DIO toffset shift after training */
-       ddrphy_shift_tof_hws(phy_base, tof_shift);
-
-       /* DIO roffset shift after training */
-       ddrphy_shift_rof_hws(phy_base, rof_pos_shift, rof_neg_shift);
-
-       /* Extend DQSGating window  min:+1T  max:+1T */
-       ddrphy_ext_dqsgt(phy_base);
-}
-
-static void ddrphy_init(void __iomem *phy_base, enum dram_freq freq)
-{
-       writel(0x40000000, phy_base + PHY_PIR);
-       writel(0x0300C4F1, phy_base + PHY_PGCR1);
-       writel(0x0C807D04, phy_base + PHY_PTR0);
-       writel(0x27100578, phy_base + PHY_PTR1);
-       writel(0x00083DEF, phy_base + PHY_PTR2);
-       writel(0x12061A80, phy_base + PHY_PTR3);
-       writel(0x08027100, phy_base + PHY_PTR4);
-       writel(0x9D9CBB66, phy_base + PHY_DTPR0);
-       writel(0x1a878400, phy_base + PHY_DTPR1);
-       writel(0x50025200, phy_base + PHY_DTPR2);
-       writel(0xF004641A, phy_base + PHY_DSGCR);
-       writel(0x0000040B, phy_base + PHY_DCR);
-       writel(0x00000d71, phy_base + PHY_MR0);
-       writel(0x00000006, phy_base + PHY_MR1);
-       writel(0x00000098, phy_base + PHY_MR2);
-       writel(0x00000000, phy_base + PHY_MR3);
-
-       while (!(readl(phy_base + PHY_PGSR0) & PHY_PGSR0_IDONE))
-               cpu_relax();
-
-       writel(0x00000059, phy_base + PHY_ZQ0CR1);
-       writel(0x00000019, phy_base + PHY_ZQ1CR1);
-       writel(0x00000019, phy_base + PHY_ZQ2CR1);
-       writel(0x30FC6C20, phy_base + PHY_PGCR2);
-
-       ddrphy_set_ckoffset_qoffset(119, 0, 0, 1, phy_base);
-       ddrphy_set_wl_delay_dx(0, 220, 220, 1, phy_base);
-       ddrphy_set_wl_delay_dx(1, 160, 160, 1, phy_base);
-       ddrphy_set_wl_delay_dx(2, 190, 190, 1, phy_base);
-       ddrphy_set_wl_delay_dx(3, 150, 150, 1, phy_base);
-       ddrphy_set_dqsg_delay_dx(0, 750, 750, 1, phy_base);
-       ddrphy_set_dqsg_delay_dx(1, 750, 750, 1, phy_base);
-       ddrphy_set_dqsg_delay_dx(2, 750, 750, 1, phy_base);
-       ddrphy_set_dqsg_delay_dx(3, 750, 750, 1, phy_base);
-       ddrphy_set_dswb_delay_dx(0, 0, 1, phy_base);
-       ddrphy_set_dswb_delay_dx(1, 0, 1, phy_base);
-       ddrphy_set_dswb_delay_dx(2, 0, 1, phy_base);
-       ddrphy_set_dswb_delay_dx(3, 0, 1, phy_base);
-       ddrphy_set_oe_delay_dx(0, 0, 0, 1, phy_base);
-       ddrphy_set_oe_delay_dx(1, 0, 0, 1, phy_base);
-       ddrphy_set_oe_delay_dx(2, 0, 0, 1, phy_base);
-       ddrphy_set_oe_delay_dx(3, 0, 0, 1, phy_base);
-
-       writel(0x44000E81, phy_base + PHY_DX0GCR);
-       writel(0x44000E81, phy_base + PHY_DX1GCR);
-       writel(0x44000E81, phy_base + PHY_DX2GCR);
-       writel(0x44000E81, phy_base + PHY_DX3GCR);
-       writel(0x00055002, phy_base + PHY_DX0GTR);
-       writel(0x00055002, phy_base + PHY_DX1GTR);
-       writel(0x00055010, phy_base + PHY_DX2GTR);
-       writel(0x00055010, phy_base + PHY_DX3GTR);
-       writel(0x930035C7, phy_base + PHY_DTCR);
-       writel(0x00000003, phy_base + PHY_PIR);
-       readl(phy_base + PHY_PIR);
-       while (!(readl(phy_base + PHY_PGSR0) & PHY_PGSR0_IDONE))
-               cpu_relax();
-
-       writel(0x00000181, phy_base + PHY_PIR);
-       readl(phy_base + PHY_PIR);
-       while (!(readl(phy_base + PHY_PGSR0) & PHY_PGSR0_IDONE))
-               cpu_relax();
-
-       writel(0x44181884, phy_base + PHY_DXCCR);
-       writel(0x00000001, phy_base + PHY_GPR1);
-}
-
-/* UMC */
-static const u32 umc_cmdctla[DRAM_FREQ_NR] = {0x060B0B1C};
-static const u32 umc_cmdctlb[DRAM_FREQ_NR] = {0x27201806};
-static const u32 umc_cmdctlc[DRAM_FREQ_NR] = {0x00120B04};
-static const u32 umc_cmdctle[DRAM_FREQ_NR] = {0x00680607};
-static const u32 umc_cmdctlf[DRAM_FREQ_NR] = {0x02000200};
-static const u32 umc_cmdctlg[DRAM_FREQ_NR] = {0x08080808};
-
-static const u32 umc_rdatactl[DRAM_FREQ_NR] = {0x00000810};
-static const u32 umc_wdatactl[DRAM_FREQ_NR] = {0x00000004};
-static const u32 umc_odtctl[DRAM_FREQ_NR]   = {0x02000002};
-static const u32 umc_acssetb[DRAM_CH_NR] = {0x00000200, 0x00000203};
-
-static const u32 umc_memconfch[DRAM_FREQ_NR] = {0x00023605};
-
-static int umc_dc_init(void __iomem *dc_base, enum dram_freq freq,
-                      unsigned long size, int ch)
-{
-       /* Wait for PHY Init Complete */
-       writel(umc_cmdctla[freq], dc_base + UMC_CMDCTLA);
-       writel(umc_cmdctlb[freq], dc_base + UMC_CMDCTLB);
-       writel(umc_cmdctlc[freq], dc_base + UMC_CMDCTLC);
-       writel(umc_cmdctle[freq], dc_base + UMC_CMDCTLE);
-       writel(umc_cmdctlf[freq], dc_base + UMC_CMDCTLF);
-       writel(umc_cmdctlg[freq], dc_base + UMC_CMDCTLG);
-
-       writel(umc_rdatactl[freq], dc_base + UMC_RDATACTL_D0);
-       writel(umc_rdatactl[freq], dc_base + UMC_RDATACTL_D1);
-
-       writel(umc_wdatactl[freq], dc_base + UMC_WDATACTL_D0);
-       writel(umc_wdatactl[freq], dc_base + UMC_WDATACTL_D1);
-
-       writel(umc_odtctl[freq], dc_base + UMC_ODTCTL_D0);
-       writel(umc_odtctl[freq], dc_base + UMC_ODTCTL_D1);
-
-       writel(0x00000003, dc_base + UMC_ACSSETA);
-       writel(0x00000103, dc_base + UMC_FLOWCTLG);
-       writel(umc_acssetb[ch], dc_base + UMC_ACSSETB);
-       writel(0x02020200, dc_base + UMC_SPCSETB);
-       writel(umc_memconfch[freq], dc_base + UMC_MEMCONFCH);
-       writel(0x00000002, dc_base + UMC_ACFETCHCTRL);
-
-       return 0;
-}
-
-static int umc_ch_init(void __iomem *umc_ch_base,
-                      enum dram_freq freq, unsigned long size, int ch)
-{
-       void __iomem *dc_base  = umc_ch_base;
-
-       return umc_dc_init(dc_base, freq, size, ch);
-}
-
-static void um_init(void __iomem *um_base)
-{
-       writel(0x00000001, um_base + UMC_SIORST);
-       writel(0x00000001, um_base + UMC_VO0RST);
-       writel(0x00000001, um_base + UMC_VPERST);
-       writel(0x00000001, um_base + UMC_RGLRST);
-       writel(0x00000001, um_base + UMC_A2DRST);
-       writel(0x00000001, um_base + UMC_DMDRST);
-}
-
-int uniphier_ld11_umc_init(const struct uniphier_board_data *bd)
-{
-       void __iomem *um_base = (void __iomem *)0x5B800000;
-       void __iomem *umc_ch_base = (void __iomem *)0x5BC00000;
-       void __iomem *phy_base = (void __iomem *)0x5BC01000;
-       enum dram_freq freq;
-       int ch, ret;
-
-       switch (bd->dram_freq) {
-       case 1600:
-               freq = DRAM_FREQ_1600M;
-               break;
-       default:
-               pr_err("unsupported DRAM frequency %d MHz\n", bd->dram_freq);
-               return -EINVAL;
-       }
-
-       writel(0x00000101, umc_ch_base + UMC_DIOCTLA);
-       while (!(readl(phy_base + PHY_PGSR0) & PHY_PGSR0_IDONE))
-               cpu_relax();
-
-       writel(0x00000000, umc_ch_base + UMC_DIOCTLA);
-       writel(0x00000001, umc_ch_base + UMC_DEBUGC);
-       writel(0x00000101, umc_ch_base + UMC_DIOCTLA);
-
-       writel(0x00000100, umc_ch_base + UMC_INITSET);
-       while (readl(umc_ch_base + UMC_INITSTAT) & BIT(8))
-               cpu_relax();
-
-       writel(0x00000100, umc_ch_base + 0x00200000 + UMC_INITSET);
-       while (readl(umc_ch_base + 0x00200000 + UMC_INITSTAT) & BIT(8))
-               cpu_relax();
-
-       ddrphy_init(phy_base, freq);
-
-       for (ch = 0; ch < DRAM_CH_NR; ch++) {
-               unsigned long size = bd->dram_ch[ch].size;
-               unsigned int width = bd->dram_ch[ch].width;
-
-               ret = umc_ch_init(umc_ch_base, freq, size / (width / 16), ch);
-               if (ret) {
-                       pr_err("failed to initialize UMC ch%d\n", ch);
-                       return ret;
-               }
-
-               umc_ch_base += 0x00200000;
-       }
-       ddrphy_training(phy_base);
-
-       um_init(um_base);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/dram/umc-ld20.c b/arch/arm/mach-uniphier/dram/umc-ld20.c
deleted file mode 100644 (file)
index 500c1c1..0000000
+++ /dev/null
@@ -1,636 +0,0 @@
-/*
- * Copyright (C) 2016-2017 Socionext Inc.
- *
- * based on commit 5ffd75ecd4929f22361ef65a35f0331d2fbc0f35 of Diag
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <linux/bitops.h>
-#include <linux/compat.h>
-#include <linux/errno.h>
-#include <linux/io.h>
-#include <linux/sizes.h>
-#include <asm/processor.h>
-
-#include "../init.h"
-#include "ddruqphy-regs.h"
-#include "umc64-regs.h"
-
-#define DRAM_CH_NR     3
-
-enum dram_freq {
-       DRAM_FREQ_1866M,
-       DRAM_FREQ_NR,
-};
-
-enum dram_size {
-       DRAM_SZ_256M,
-       DRAM_SZ_512M,
-       DRAM_SZ_NR,
-};
-
-enum dram_board {              /* board type */
-       DRAM_BOARD_LD20_REF,    /* LD20 reference */
-       DRAM_BOARD_LD20_GLOBAL, /* LD20 TV */
-       DRAM_BOARD_LD20_C1,     /* LD20 TV C1 */
-       DRAM_BOARD_LD21_REF,    /* LD21 reference */
-       DRAM_BOARD_LD21_GLOBAL, /* LD21 TV */
-       DRAM_BOARD_NR,
-};
-
-/* PHY */
-static const int ddrphy_adrctrl[DRAM_BOARD_NR][DRAM_CH_NR] = {
-       {268 - 262, 268 - 263, 268 - 378},      /* LD20 reference */
-       {268 - 262, 268 - 263, 268 - 378},      /* LD20 TV */
-       {268 - 262, 268 - 263, 268 - 378},      /* LD20 TV C1 */
-       {268 - 212, 268 - 268, /* No CH2 */},   /* LD21 reference */
-       {268 - 212, 268 - 268, /* No CH2 */},   /* LD21 TV */
-};
-
-static const int ddrphy_dlltrimclk[DRAM_BOARD_NR][DRAM_CH_NR] = {
-       {268, 268, 268},                        /* LD20 reference */
-       {268, 268, 268},                        /* LD20 TV */
-       {189, 189, 189},                        /* LD20 TV C1 */
-       {268, 268 + 252, /* No CH2 */},         /* LD21 reference */
-       {268, 268 + 202, /* No CH2 */},         /* LD21 TV */
-};
-
-static const int ddrphy_dllrecalib[DRAM_BOARD_NR][DRAM_CH_NR] = {
-       {268 - 378, 268 - 263, 268 - 378},      /* LD20 reference */
-       {268 - 378, 268 - 263, 268 - 378},      /* LD20 TV */
-       {268 - 378, 268 - 263, 268 - 378},      /* LD20 TV C1 */
-       {268 - 212, 268 - 536, /* No CH2 */},   /* LD21 reference */
-       {268 - 212, 268 - 536, /* No CH2 */},   /* LD21 TV */
-};
-
-static const u32 ddrphy_phy_pad_ctrl[DRAM_BOARD_NR][DRAM_CH_NR] = {
-       {0x50B840B1, 0x50B840B1, 0x50B840B1},   /* LD20 reference */
-       {0x50BB40B1, 0x50BB40B1, 0x50BB40B1},   /* LD20 TV */
-       {0x50BB40B1, 0x50BB40B1, 0x50BB40B1},   /* LD20 TV C1 */
-       {0x50BB40B4, 0x50B840B1, /* No CH2 */}, /* LD21 reference */
-       {0x50BB40B4, 0x50B840B1, /* No CH2 */}, /* LD21 TV */
-};
-
-static const u32 ddrphy_scl_gate_timing[DRAM_CH_NR] = {
-       0x00000140, 0x00000180, 0x00000140
-};
-
-static const short ddrphy_op_dq_shift_val_ld20[DRAM_CH_NR][32] = {
-       {
-               2, 1, 0, 1, 2, 1, 1, 1,
-               2, 1, 1, 2, 1, 1, 1, 1,
-               1, 2, 1, 1, 1, 2, 1, 1,
-               2, 2, 0, 1, 1, 2, 2, 1,
-       },
-       {
-               1, 1, 0, 1, 2, 2, 1, 1,
-               1, 1, 1, 1, 1, 1, 1, 1,
-               1, 1, 0, 0, 1, 1, 0, 0,
-               0, 1, 1, 1, 2, 1, 2, 1,
-       },
-       {
-               2, 2, 0, 2, 1, 1, 2, 1,
-               1, 1, 0, 1, 1, -1, 1, 1,
-               2, 2, 2, 2, 1, 1, 1, 1,
-               1, 1, 1, 0, 2, 2, 1, 2,
-       },
-};
-
-static const short ddrphy_op_dq_shift_val_ld21[DRAM_CH_NR][32] = {
-       {
-               1, 1, 0, 1, 1, 1, 1, 1,
-               1, 0, 0, 0, 1, 1, 0, 2,
-               1, 1, 0, 0, 1, 1, 1, 1,
-               1, 0, 0, 0, 1, 0, 0, 1,
-       },
-       {       1, 0, 2, 1, 1, 1, 1, 0,
-               1, 0, 0, 1, 0, 1, 0, 0,
-               1, 0, 1, 0, 1, 1, 1, 0,
-               1, 1, 1, 1, 0, 1, 0, 0,
-       },
-       /* No CH2 */
-};
-
-static const short (* const ddrphy_op_dq_shift_val[DRAM_BOARD_NR])[32] = {
-       ddrphy_op_dq_shift_val_ld20,    /* LD20 reference */
-       ddrphy_op_dq_shift_val_ld20,    /* LD20 TV */
-       ddrphy_op_dq_shift_val_ld20,    /* LD20 TV C */
-       ddrphy_op_dq_shift_val_ld21,    /* LD21 reference */
-       ddrphy_op_dq_shift_val_ld21,    /* LD21 TV */
-};
-
-static const short ddrphy_ip_dq_shift_val_ld20[DRAM_CH_NR][32] = {
-       {
-               3, 3, 3, 2, 3, 2, 0, 2,
-               2, 3, 3, 1, 2, 2, 2, 2,
-               2, 2, 2, 2, 0, 1, 1, 1,
-               2, 2, 2, 2, 3, 0, 2, 2,
-       },
-       {
-               2, 2, 1, 1, -1, 1, 1, 1,
-               2, 0, 2, 2, 2, 1, 0, 2,
-               2, 1, 2, 1, 0, 1, 1, 1,
-               2, 2, 2, 2, 2, 2, 2, 2,
-       },
-       {
-               2, 2, 3, 2, 1, 2, 2, 2,
-               2, 3, 4, 2, 3, 4, 3, 3,
-               2, 2, 1, 2, 1, 1, 1, 1,
-               2, 2, 2, 2, 1, 2, 2, 1,
-       },
-};
-
-static const short ddrphy_ip_dq_shift_val_ld21[DRAM_CH_NR][32] = {
-       {
-               2, 2, 2, 2, 1, 2, 2, 2,
-               2, 3, 3, 2, 2, 2, 2, 2,
-               2, 1, 2, 2, 1, 1, 1, 1,
-               2, 2, 2, 3, 1, 2, 2, 2,
-       },
-       {
-               3, 4, 4, 1, 0, 1, 1, 1,
-               1, 2, 1, 2, 2, 3, 3, 2,
-               1, 0, 2, 1, 1, 0, 1, 0,
-               0, 1, 0, 0, 1, 1, 0, 1,
-       },
-       /* No CH2 */
-};
-
-static const short (* const ddrphy_ip_dq_shift_val[DRAM_BOARD_NR])[32] = {
-       ddrphy_ip_dq_shift_val_ld20,    /* LD20 reference */
-       ddrphy_ip_dq_shift_val_ld20,    /* LD20 TV */
-       ddrphy_ip_dq_shift_val_ld20,    /* LD20 TV C */
-       ddrphy_ip_dq_shift_val_ld21,    /* LD21 reference */
-       ddrphy_ip_dq_shift_val_ld21,    /* LD21 TV */
-};
-
-static void ddrphy_select_lane(void __iomem *phy_base, unsigned int lane,
-                              unsigned int bit)
-{
-       WARN_ON(lane >= 1 << PHY_LANE_SEL_LANE_WIDTH);
-       WARN_ON(bit >= 1 << PHY_LANE_SEL_BIT_WIDTH);
-
-       writel((bit << PHY_LANE_SEL_BIT_SHIFT) |
-              (lane << PHY_LANE_SEL_LANE_SHIFT),
-              phy_base + PHY_LANE_SEL);
-}
-
-#define DDRPHY_EFUSEMON                (void *)0x5f900118
-
-static void ddrphy_init(void __iomem *phy_base, enum dram_board board, int ch)
-{
-       writel(0x0C001001, phy_base + PHY_UNIQUIFY_TSMC_IO_1);
-       while (!(readl(phy_base + PHY_UNIQUIFY_TSMC_IO_1) & BIT(1)))
-               cpu_relax();
-
-       if (readl(DDRPHY_EFUSEMON) & BIT(ch))
-               writel(0x00000000, phy_base + PHY_UNIQUIFY_TSMC_IO_1);
-       else
-               writel(0x0C001000, phy_base + PHY_UNIQUIFY_TSMC_IO_1);
-
-       writel(0x00000000, phy_base + PHY_DLL_INCR_TRIM_3);
-       writel(0x00000000, phy_base + PHY_DLL_INCR_TRIM_1);
-       ddrphy_select_lane(phy_base, 0, 0);
-       writel(0x00000005, phy_base + PHY_DLL_TRIM_1);
-       writel(0x0000000a, phy_base + PHY_DLL_TRIM_3);
-       ddrphy_select_lane(phy_base, 6, 0);
-       writel(0x00000005, phy_base + PHY_DLL_TRIM_1);
-       writel(0x0000000a, phy_base + PHY_DLL_TRIM_3);
-       ddrphy_select_lane(phy_base, 12, 0);
-       writel(0x00000005, phy_base + PHY_DLL_TRIM_1);
-       writel(0x0000000a, phy_base + PHY_DLL_TRIM_3);
-       ddrphy_select_lane(phy_base, 18, 0);
-       writel(0x00000005, phy_base + PHY_DLL_TRIM_1);
-       writel(0x0000000a, phy_base + PHY_DLL_TRIM_3);
-       writel(0x00000001, phy_base + PHY_SCL_WINDOW_TRIM);
-       writel(0x00000000, phy_base + PHY_UNQ_ANALOG_DLL_1);
-       writel(ddrphy_phy_pad_ctrl[board][ch], phy_base + PHY_PAD_CTRL);
-       writel(0x00000070, phy_base + PHY_VREF_TRAINING);
-       writel(0x01000075, phy_base + PHY_SCL_CONFIG_1);
-       writel(0x00000501, phy_base + PHY_SCL_CONFIG_2);
-       writel(0x00000000, phy_base + PHY_SCL_CONFIG_3);
-       writel(0x000261c0, phy_base + PHY_DYNAMIC_WRITE_BIT_LVL);
-       writel(0x00000000, phy_base + PHY_SCL_CONFIG_4);
-       writel(ddrphy_scl_gate_timing[ch], phy_base + PHY_SCL_GATE_TIMING);
-       writel(0x02a000a0, phy_base + PHY_WRLVL_DYN_ODT);
-       writel(0x00840004, phy_base + PHY_WRLVL_ON_OFF);
-       writel(0x0000020d, phy_base + PHY_DLL_ADRCTRL);
-       ddrphy_select_lane(phy_base, 0, 0);
-       writel(0x0000008d, phy_base + PHY_DLL_TRIM_CLK);
-       writel(0xa800100d, phy_base + PHY_DLL_RECALIB);
-       writel(0x00005076, phy_base + PHY_SCL_LATENCY);
-}
-
-static int ddrphy_to_dly_step(void __iomem *phy_base, unsigned int freq,
-                             int delay)
-{
-       int mdl;
-
-       mdl = (readl(phy_base + PHY_DLL_ADRCTRL) & PHY_DLL_ADRCTRL_MDL_MASK) >>
-                                               PHY_DLL_ADRCTRL_MDL_SHIFT;
-
-       return DIV_ROUND_CLOSEST((long)freq * delay * mdl, 2 * 1000000L);
-}
-
-static void ddrphy_set_delay(void __iomem *phy_base, unsigned int reg,
-                            u32 mask, u32 incr, int dly_step)
-{
-       u32 tmp;
-
-       tmp = readl(phy_base + reg);
-       tmp &= ~mask;
-       tmp |= min_t(u32, abs(dly_step), mask);
-
-       if (dly_step >= 0)
-               tmp |= incr;
-       else
-               tmp &= ~incr;
-
-       writel(tmp, phy_base + reg);
-}
-
-static void ddrphy_set_dll_recalib(void __iomem *phy_base, int dly_step)
-{
-       ddrphy_set_delay(phy_base, PHY_DLL_RECALIB,
-                        PHY_DLL_RECALIB_TRIM_MASK, PHY_DLL_RECALIB_INCR,
-                        dly_step);
-}
-
-static void ddrphy_set_dll_adrctrl(void __iomem *phy_base, int dly_step)
-{
-       ddrphy_set_delay(phy_base, PHY_DLL_ADRCTRL,
-                        PHY_DLL_ADRCTRL_TRIM_MASK, PHY_DLL_ADRCTRL_INCR,
-                        dly_step);
-}
-
-static void ddrphy_set_dll_trim_clk(void __iomem *phy_base, int dly_step)
-{
-       ddrphy_select_lane(phy_base, 0, 0);
-
-       ddrphy_set_delay(phy_base, PHY_DLL_TRIM_CLK,
-                        PHY_DLL_TRIM_CLK_MASK, PHY_DLL_TRIM_CLK_INCR,
-                        dly_step);
-}
-
-static void ddrphy_init_tail(void __iomem *phy_base, enum dram_board board,
-                            unsigned int freq, int ch)
-{
-       int step;
-
-       step = ddrphy_to_dly_step(phy_base, freq, ddrphy_adrctrl[board][ch]);
-       ddrphy_set_dll_adrctrl(phy_base, step);
-
-       step = ddrphy_to_dly_step(phy_base, freq, ddrphy_dlltrimclk[board][ch]);
-       ddrphy_set_dll_trim_clk(phy_base, step);
-
-       step = ddrphy_to_dly_step(phy_base, freq, ddrphy_dllrecalib[board][ch]);
-       ddrphy_set_dll_recalib(phy_base, step);
-}
-
-static void ddrphy_shift_one_dq(void __iomem *phy_base, unsigned int reg,
-                               u32 mask, u32 incr, short shift_val)
-{
-       u32 tmp;
-       int val;
-
-       tmp = readl(phy_base + reg);
-
-       val = tmp & mask;
-       if (!(tmp & incr))
-               val = -val;
-
-       val += shift_val;
-
-       tmp &= ~(incr | mask);
-       tmp |= min_t(u32, abs(val), mask);
-       if (val >= 0)
-               tmp |= incr;
-
-       writel(tmp, phy_base + reg);
-}
-
-static void ddrphy_shift_dq(void __iomem *phy_base, unsigned int reg,
-                           u32 mask, u32 incr, u32 override,
-                           const short *shift_val_array)
-{
-       u32 tmp;
-       int dx, bit;
-
-       tmp = readl(phy_base + reg);
-       tmp |= override;
-       writel(tmp, phy_base + reg);
-
-       for (dx = 0; dx < 4; dx++) {
-               for (bit = 0; bit < 8; bit++) {
-                       ddrphy_select_lane(phy_base,
-                                          (PHY_BITLVL_DLY_WIDTH + 1) * dx,
-                                          bit);
-
-                       ddrphy_shift_one_dq(phy_base, reg, mask, incr,
-                                           shift_val_array[dx * 8 + bit]);
-               }
-       }
-
-       ddrphy_select_lane(phy_base, 0, 0);
-}
-
-static int ddrphy_training(void __iomem *phy_base, enum dram_board board,
-                          int ch)
-{
-       writel(0x0000000f, phy_base + PHY_WRLVL_AUTOINC_TRIM);
-       writel(0x00010000, phy_base + PHY_DLL_TRIM_2);
-       writel(0x50000000, phy_base + PHY_SCL_START);
-
-       while (readl(phy_base + PHY_SCL_START) & PHY_SCL_START_GO_DONE)
-               cpu_relax();
-
-       writel(0x00000000, phy_base + PHY_DISABLE_GATING_FOR_SCL);
-       writel(0xff00ff00, phy_base + PHY_SCL_DATA_0);
-       writel(0xff00ff00, phy_base + PHY_SCL_DATA_1);
-       writel(0xFBF8FFFF, phy_base + PHY_SCL_START_ADDR);
-       writel(0x11000000, phy_base + PHY_SCL_START);
-
-       while (readl(phy_base + PHY_SCL_START) & PHY_SCL_START_GO_DONE)
-               cpu_relax();
-
-       writel(0xFBF0FFFF, phy_base + PHY_SCL_START_ADDR);
-       writel(0x30500000, phy_base + PHY_SCL_START);
-
-       while (readl(phy_base + PHY_SCL_START) & PHY_SCL_START_GO_DONE)
-               cpu_relax();
-
-       writel(0x00000001, phy_base + PHY_DISABLE_GATING_FOR_SCL);
-       writel(0x00000010, phy_base + PHY_SCL_MAIN_CLK_DELTA);
-       writel(0x789b3de0, phy_base + PHY_SCL_DATA_0);
-       writel(0xf10e4a56, phy_base + PHY_SCL_DATA_1);
-       writel(0x11000000, phy_base + PHY_SCL_START);
-
-       while (readl(phy_base + PHY_SCL_START) & PHY_SCL_START_GO_DONE)
-               cpu_relax();
-
-       writel(0x34000000, phy_base + PHY_SCL_START);
-
-       while (readl(phy_base + PHY_SCL_START) & PHY_SCL_START_GO_DONE)
-               cpu_relax();
-
-       writel(0x00000003, phy_base + PHY_DISABLE_GATING_FOR_SCL);
-
-       writel(0x000261c0, phy_base + PHY_DYNAMIC_WRITE_BIT_LVL);
-       writel(0x00003270, phy_base + PHY_DYNAMIC_BIT_LVL);
-       writel(0x011BD0C4, phy_base + PHY_DSCL_CNT);
-
-       /* shift ip_dq trim */
-       ddrphy_shift_dq(phy_base,
-                       PHY_IP_DQ_DQS_BITWISE_TRIM,
-                       PHY_IP_DQ_DQS_BITWISE_TRIM_MASK,
-                       PHY_IP_DQ_DQS_BITWISE_TRIM_INC,
-                       PHY_IP_DQ_DQS_BITWISE_TRIM_OVERRIDE,
-                       ddrphy_ip_dq_shift_val[board][ch]);
-
-       /* shift op_dq trim */
-       ddrphy_shift_dq(phy_base,
-                       PHY_OP_DQ_DM_DQS_BITWISE_TRIM,
-                       PHY_OP_DQ_DM_DQS_BITWISE_TRIM_MASK,
-                       PHY_OP_DQ_DM_DQS_BITWISE_TRIM_INC,
-                       PHY_OP_DQ_DM_DQS_BITWISE_TRIM_OVERRIDE,
-                       ddrphy_op_dq_shift_val[board][ch]);
-
-       return 0;
-}
-
-/* UMC */
-static const u32 umc_initctla[DRAM_FREQ_NR] = {0x71016D11};
-static const u32 umc_initctlb[DRAM_FREQ_NR] = {0x07E390AC};
-static const u32 umc_initctlc[DRAM_FREQ_NR] = {0x00FF00FF};
-static const u32 umc_drmmr0[DRAM_FREQ_NR] = {0x00000114};
-static const u32 umc_drmmr2[DRAM_FREQ_NR] = {0x000002a0};
-
-static const u32 umc_memconf0a[DRAM_FREQ_NR][DRAM_SZ_NR] = {
-       /*  256MB       512MB */
-       {0x00000601, 0x00000801},       /* 1866 MHz */
-};
-
-static const u32 umc_memconf0b[DRAM_FREQ_NR][DRAM_SZ_NR] = {
-       /*  256MB       512MB */
-       {0x00000120, 0x00000130},       /* 1866 MHz */
-};
-
-static const u32 umc_memconfch[DRAM_FREQ_NR][DRAM_SZ_NR] = {
-       /*  256MB       512MB */
-       {0x00033603, 0x00033803},       /* 1866 MHz */
-};
-
-static const u32 umc_cmdctla[DRAM_FREQ_NR] = {0x060D0D20};
-static const u32 umc_cmdctlb[DRAM_FREQ_NR] = {0x2D211C08};
-static const u32 umc_cmdctlc[DRAM_FREQ_NR] = {0x00150C04};
-static const u32 umc_cmdctle[DRAM_FREQ_NR][DRAM_SZ_NR] = {
-       /*  256MB       512MB */
-       {0x0049071D, 0x0078071D},       /* 1866 MHz */
-};
-
-static const u32 umc_rdatactl[DRAM_FREQ_NR] = {0x00000610};
-static const u32 umc_wdatactl[DRAM_FREQ_NR] = {0x00000204};
-static const u32 umc_odtctl[DRAM_FREQ_NR] = {0x02000002};
-static const u32 umc_dataset[DRAM_FREQ_NR] = {0x04000000};
-
-static const u32 umc_flowctla[DRAM_FREQ_NR] = {0x0081E01E};
-static const u32 umc_directbusctrla[DRAM_CH_NR] = {
-       0x00000000, 0x00000001, 0x00000001
-};
-
-static void umc_poll_phy_init_complete(void __iomem *dc_base)
-{
-       /* Wait for PHY Init Complete */
-       while (!(readl(dc_base + UMC_DFISTCTLC) & BIT(0)))
-               cpu_relax();
-}
-
-static int umc_dc_init(void __iomem *dc_base, unsigned int freq,
-                      unsigned long size, int ch)
-{
-       enum dram_freq freq_e;
-       enum dram_size size_e;
-
-       switch (freq) {
-       case 1866:
-               freq_e = DRAM_FREQ_1866M;
-               break;
-       default:
-               pr_err("unsupported DRAM frequency %ud MHz\n", freq);
-               return -EINVAL;
-       }
-
-       switch (size) {
-       case 0:
-               return 0;
-       case SZ_256M:
-               size_e = DRAM_SZ_256M;
-               break;
-       case SZ_512M:
-               size_e = DRAM_SZ_512M;
-               break;
-       default:
-               pr_err("unsupported DRAM size 0x%08lx (per 16bit) for ch%d\n",
-                      size, ch);
-               return -EINVAL;
-       }
-
-       writel(0x00000001, dc_base + UMC_DFICSOVRRD);
-       writel(0x00000000, dc_base + UMC_DFITURNOFF);
-
-       writel(umc_initctla[freq_e], dc_base + UMC_INITCTLA);
-       writel(umc_initctlb[freq_e], dc_base + UMC_INITCTLB);
-       writel(umc_initctlc[freq_e], dc_base + UMC_INITCTLC);
-
-       writel(umc_drmmr0[freq_e], dc_base + UMC_DRMMR0);
-       writel(0x00000004, dc_base + UMC_DRMMR1);
-       writel(umc_drmmr2[freq_e], dc_base + UMC_DRMMR2);
-       writel(0x00000000, dc_base + UMC_DRMMR3);
-
-       writel(umc_memconf0a[freq_e][size_e], dc_base + UMC_MEMCONF0A);
-       writel(umc_memconf0b[freq_e][size_e], dc_base + UMC_MEMCONF0B);
-       writel(umc_memconfch[freq_e][size_e], dc_base + UMC_MEMCONFCH);
-       writel(0x00000000, dc_base + UMC_MEMMAPSET);
-
-       writel(umc_cmdctla[freq_e], dc_base + UMC_CMDCTLA);
-       writel(umc_cmdctlb[freq_e], dc_base + UMC_CMDCTLB);
-       writel(umc_cmdctlc[freq_e], dc_base + UMC_CMDCTLC);
-       writel(umc_cmdctle[freq_e][size_e], dc_base + UMC_CMDCTLE);
-
-       writel(umc_rdatactl[freq_e], dc_base + UMC_RDATACTL_D0);
-       writel(umc_rdatactl[freq_e], dc_base + UMC_RDATACTL_D1);
-
-       writel(umc_wdatactl[freq_e], dc_base + UMC_WDATACTL_D0);
-       writel(umc_wdatactl[freq_e], dc_base + UMC_WDATACTL_D1);
-       writel(umc_odtctl[freq_e], dc_base + UMC_ODTCTL_D0);
-       writel(umc_odtctl[freq_e], dc_base + UMC_ODTCTL_D1);
-       writel(umc_dataset[freq_e], dc_base + UMC_DATASET);
-
-       writel(0x00400020, dc_base + UMC_DCCGCTL);
-       writel(0x00000003, dc_base + UMC_ACSSETA);
-       writel(0x00000103, dc_base + UMC_FLOWCTLG);
-       writel(0x00010200, dc_base + UMC_ACSSETB);
-
-       writel(umc_flowctla[freq_e], dc_base + UMC_FLOWCTLA);
-       writel(0x00004444, dc_base + UMC_FLOWCTLC);
-       writel(0x00000000, dc_base + UMC_DFICUPDCTLA);
-
-       writel(0x00202000, dc_base + UMC_FLOWCTLB);
-       writel(0x00000000, dc_base + UMC_BSICMAPSET);
-       writel(0x00000000, dc_base + UMC_ERRMASKA);
-       writel(0x00000000, dc_base + UMC_ERRMASKB);
-
-       writel(umc_directbusctrla[ch], dc_base + UMC_DIRECTBUSCTRLA);
-
-       writel(0x00000001, dc_base + UMC_INITSET);
-       /* Wait for PHY Init Complete */
-       while (readl(dc_base + UMC_INITSTAT) & BIT(0))
-               cpu_relax();
-
-       writel(0x2A0A0A00, dc_base + UMC_SPCSETB);
-       writel(0x00000000, dc_base + UMC_DFICSOVRRD);
-
-       return 0;
-}
-
-static int umc_ch_init(void __iomem *umc_ch_base, void __iomem *phy_ch_base,
-                      enum dram_board board, unsigned int freq,
-                      unsigned long size, int ch)
-{
-       void __iomem *dc_base = umc_ch_base + 0x00011000;
-       void __iomem *phy_base = phy_ch_base;
-       int ret;
-
-       /* PHY Update Mode (ON) */
-       writel(0x8000003f, dc_base + UMC_DFIPUPDCTLA);
-
-       /* deassert PHY reset signals */
-       writel(UMC_DIOCTLA_CTL_NRST | UMC_DIOCTLA_CFG_NRST,
-              dc_base + UMC_DIOCTLA);
-
-       ddrphy_init(phy_base, board, ch);
-
-       umc_poll_phy_init_complete(dc_base);
-
-       ddrphy_init_tail(phy_base, board, freq, ch);
-
-       ret = umc_dc_init(dc_base, freq, size, ch);
-       if (ret)
-               return ret;
-
-       ret = ddrphy_training(phy_base, board, ch);
-       if (ret)
-               return ret;
-
-       return 0;
-}
-
-static void um_init(void __iomem *um_base)
-{
-       writel(0x000000ff, um_base + UMC_MBUS0);
-       writel(0x000000ff, um_base + UMC_MBUS1);
-       writel(0x000000ff, um_base + UMC_MBUS2);
-       writel(0x00000001, um_base + UMC_MBUS3);
-       writel(0x00000001, um_base + UMC_MBUS4);
-       writel(0x00000001, um_base + UMC_MBUS5);
-       writel(0x00000001, um_base + UMC_MBUS6);
-       writel(0x00000001, um_base + UMC_MBUS7);
-       writel(0x00000001, um_base + UMC_MBUS8);
-       writel(0x00000001, um_base + UMC_MBUS9);
-       writel(0x00000001, um_base + UMC_MBUS10);
-}
-
-int uniphier_ld20_umc_init(const struct uniphier_board_data *bd)
-{
-       void __iomem *um_base = (void __iomem *)0x5b600000;
-       void __iomem *umc_ch_base = (void __iomem *)0x5b800000;
-       void __iomem *phy_ch_base = (void __iomem *)0x6e200000;
-       enum dram_board board;
-       int ch, ret;
-
-       switch (UNIPHIER_BD_BOARD_GET_TYPE(bd->flags)) {
-       case UNIPHIER_BD_BOARD_LD20_REF:
-               board = DRAM_BOARD_LD20_REF;
-               break;
-       case UNIPHIER_BD_BOARD_LD20_GLOBAL:
-               board = DRAM_BOARD_LD20_GLOBAL;
-               break;
-       case UNIPHIER_BD_BOARD_LD20_C1:
-               board = DRAM_BOARD_LD20_C1;
-               break;
-       case UNIPHIER_BD_BOARD_LD21_REF:
-               board = DRAM_BOARD_LD21_REF;
-               break;
-       case UNIPHIER_BD_BOARD_LD21_GLOBAL:
-               board = DRAM_BOARD_LD21_GLOBAL;
-               break;
-       default:
-               pr_err("unsupported board type %d\n",
-                      UNIPHIER_BD_BOARD_GET_TYPE(bd->flags));
-               return -EINVAL;
-       }
-
-       for (ch = 0; ch < DRAM_CH_NR; ch++) {
-               unsigned long size = bd->dram_ch[ch].size;
-               unsigned int width = bd->dram_ch[ch].width;
-
-               if (size) {
-                       ret = umc_ch_init(umc_ch_base, phy_ch_base, board,
-                                         bd->dram_freq, size / (width / 16),
-                                         ch);
-                       if (ret) {
-                               pr_err("failed to initialize UMC ch%d\n", ch);
-                               return ret;
-                       }
-               }
-
-               umc_ch_base += 0x00200000;
-               phy_ch_base += 0x00004000;
-       }
-
-       um_init(um_base);
-
-       return 0;
-}
diff --git a/arch/arm/mach-uniphier/dram/umc64-regs.h b/arch/arm/mach-uniphier/dram/umc64-regs.h
deleted file mode 100644 (file)
index 860d04e..0000000
+++ /dev/null
@@ -1,85 +0,0 @@
-/*
- * Copyright (C) 2016 Socionext Inc.
- */
-
-#ifndef UMC_LD20_REGS_H
-#define UMC_LD20_REGS_H
-
-#define UMC_CMDCTLA            0x00000000
-#define UMC_CMDCTLB            0x00000004
-#define UMC_CMDCTLC            0x00000008
-#define UMC_INITCTLA           0x00000020
-#define UMC_INITCTLB           0x00000024
-#define UMC_INITCTLC           0x00000028
-#define UMC_DRMMR0             0x00000030
-#define UMC_DRMMR1             0x00000034
-#define UMC_DRMMR2             0x00000038
-#define UMC_DRMMR3             0x0000003C
-#define UMC_INITSET            0x00000040
-#define UMC_INITSTAT           0x00000044
-#define UMC_CMDCTLE            0x00000050
-#define UMC_CMDCTLF            0x00000054
-#define UMC_CMDCTLG            0x00000058
-#define UMC_SPCSETB            0x00000084
-#define   UMC_SPCSETB_AREFMD_MASK      (0x3)   /* Auto Refresh Mode */
-#define   UMC_SPCSETB_AREFMD_ARB       (0x0)   /* control by arbitor */
-#define   UMC_SPCSETB_AREFMD_CONT      (0x1)   /* control by DRAMCONT */
-#define   UMC_SPCSETB_AREFMD_REG       (0x2)   /* control by register */
-#define UMC_ACSSETA            0x000000C0
-#define UMC_ACSSETB            0x000000C4
-#define UMC_MEMCONF0A          0x00000200
-#define UMC_MEMCONF0B          0x00000204
-#define UMC_MEMCONFCH          0x00000240
-#define UMC_MEMMAPSET          0x00000250
-#define UMC_FLOWCTLA           0x00000400
-#define UMC_FLOWCTLB           0x00000404
-#define UMC_FLOWCTLC           0x00000408
-#define UMC_ACFETCHCTRL                0x00000460
-#define UMC_FLOWCTLG           0x00000508
-#define UMC_RDATACTL_D0                0x00000600
-#define UMC_WDATACTL_D0                0x00000604
-#define UMC_RDATACTL_D1                0x00000608
-#define UMC_WDATACTL_D1                0x0000060C
-#define UMC_DATASET            0x00000610
-#define UMC_ODTCTL_D0          0x00000618
-#define UMC_ODTCTL_D1          0x0000061C
-#define UMC_RESPCTL            0x00000624
-#define UMC_DIRECTBUSCTRLA     0x00000680
-#define UMC_DEBUGC             0x00000718
-#define UMC_DCCGCTL            0x00000720
-#define UMC_DICGCTLA           0x00000724
-#define UMC_DICGCTLB           0x00000728
-#define UMC_ERRMASKA           0x00000958
-#define UMC_ERRMASKB           0x0000095C
-#define UMC_BSICMAPSET         0x00000988
-#define UMC_DIOCTLA            0x00000C00
-#define   UMC_DIOCTLA_CTL_NRST         BIT(8)  /* ctl_rst_n */
-#define   UMC_DIOCTLA_CFG_NRST         BIT(0)  /* cfg_rst_n */
-#define UMC_DFISTCTLC          0x00000C18
-#define UMC_DFICUPDCTLA                0x00000C20
-#define UMC_DFIPUPDCTLA                0x00000C30
-#define UMC_DFICSOVRRD         0x00000C84
-#define UMC_DFITURNOFF          0x00000C88
-
-/* UM registers */
-#define UMC_MBUS0              0x00080004
-#define UMC_MBUS1              0x00081004
-#define UMC_MBUS2              0x00082004
-#define UMC_MBUS3              0x00000C78
-#define UMC_MBUS4              0x00000CF8
-#define UMC_MBUS5              0x00000E78
-#define UMC_MBUS6              0x00000EF8
-#define UMC_MBUS7              0x00001278
-#define UMC_MBUS8              0x000012F8
-#define UMC_MBUS9              0x00002478
-#define UMC_MBUS10             0x000024F8
-
-/* UMC1 register */
-#define UMC_SIORST             0x00000728
-#define UMC_VO0RST             0x0000073c
-#define UMC_VPERST             0x00000744
-#define UMC_RGLRST             0x00000750
-#define UMC_A2DRST             0x00000764
-#define UMC_DMDRST             0x00000770
-
-#endif /* UMC_LD20_REGS_H */
index 56f514e297f5d5ca20480f6491d4978b9d760ab3..b322628eedfa74e1e933392f7551cbaaadf26416 100644 (file)
@@ -24,13 +24,6 @@ struct uniphier_board_data {
 
 #define UNIPHIER_BD_DRAM_SPARSE                        BIT(9)
 #define UNIPHIER_BD_DDR3PLUS                   BIT(8)
-
-#define UNIPHIER_BD_BOARD_GET_TYPE(f)          ((f) & 0x7)
-#define UNIPHIER_BD_BOARD_LD20_REF             0       /* LD20 reference */
-#define UNIPHIER_BD_BOARD_LD20_GLOBAL          1       /* LD20 TV Set */
-#define UNIPHIER_BD_BOARD_LD20_C1              2       /* LD20 TV Set C1 */
-#define UNIPHIER_BD_BOARD_LD21_REF             3       /* LD21 reference */
-#define UNIPHIER_BD_BOARD_LD21_GLOBAL          4       /* LD21 TV Set */
 };
 
 const struct uniphier_board_data *uniphier_get_board_param(void);
@@ -41,8 +34,6 @@ int uniphier_pro4_init(const struct uniphier_board_data *bd);
 int uniphier_sld8_init(const struct uniphier_board_data *bd);
 int uniphier_pro5_init(const struct uniphier_board_data *bd);
 int uniphier_pxs2_init(const struct uniphier_board_data *bd);
-int uniphier_ld11_init(const struct uniphier_board_data *bd);
-int uniphier_ld20_init(const struct uniphier_board_data *bd);
 
 #if defined(CONFIG_MICRO_SUPPORT_CARD)
 void uniphier_sbc_init_admulti(void);
@@ -85,17 +76,12 @@ int uniphier_pro4_dpll_init(const struct uniphier_board_data *bd);
 int uniphier_sld8_dpll_init(const struct uniphier_board_data *bd);
 int uniphier_pro5_dpll_init(const struct uniphier_board_data *bd);
 int uniphier_pxs2_dpll_init(const struct uniphier_board_data *bd);
-int uniphier_ld11_dpll_init(const struct uniphier_board_data *bd);
-int uniphier_ld20_dpll_init(const struct uniphier_board_data *bd);
 
 void uniphier_sld3_early_clk_init(void);
-void uniphier_ld11_early_clk_init(void);
 
 void uniphier_sld3_dram_clk_init(void);
 void uniphier_pro5_dram_clk_init(void);
 void uniphier_pxs2_dram_clk_init(void);
-void uniphier_ld11_dram_clk_init(void);
-void uniphier_ld20_dram_clk_init(void);
 
 int uniphier_sld3_umc_init(const struct uniphier_board_data *bd);
 int uniphier_ld4_umc_init(const struct uniphier_board_data *bd);
@@ -103,8 +89,6 @@ int uniphier_pro4_umc_init(const struct uniphier_board_data *bd);
 int uniphier_sld8_umc_init(const struct uniphier_board_data *bd);
 int uniphier_pro5_umc_init(const struct uniphier_board_data *bd);
 int uniphier_pxs2_umc_init(const struct uniphier_board_data *bd);
-int uniphier_ld20_umc_init(const struct uniphier_board_data *bd);
-int uniphier_ld11_umc_init(const struct uniphier_board_data *bd);
 
 void uniphier_sld3_pll_init(void);
 void uniphier_ld4_pll_init(void);
@@ -125,8 +109,6 @@ unsigned int uniphier_boot_device_raw(void);
 int uniphier_have_internal_stm(void);
 int uniphier_boot_from_backend(void);
 int uniphier_pin_init(const char *pinconfig_name);
-void uniphier_smp_kick_all_cpus(void);
-void cci500_init(unsigned int nr_slaves);
 
 #undef pr_warn
 #define pr_warn(fmt, args...)  printf(fmt, ##args)
index 0079a083e838f0ebded6be1016eea193b335b036..6da5631bcacea588422ef29d24640e7f9ab68739 100644 (file)
@@ -97,26 +97,6 @@ static const struct uniphier_spl_initdata uniphier_spl_initdata[] = {
                .umc_init = uniphier_pxs2_umc_init,
        },
 #endif
-#if defined(CONFIG_ARCH_UNIPHIER_LD11)
-       {
-               .soc_id = UNIPHIER_LD11_ID,
-               .early_clk_init = uniphier_ld11_early_clk_init,
-               .dpll_init = uniphier_ld11_dpll_init,
-               .memconf_init = uniphier_memconf_2ch_init,
-               .dram_clk_init = uniphier_ld11_dram_clk_init,
-               .umc_init = uniphier_ld11_umc_init,
-       },
-#endif
-#if defined(CONFIG_ARCH_UNIPHIER_LD20)
-       {
-               .soc_id = UNIPHIER_LD20_ID,
-               .early_clk_init = uniphier_ld11_early_clk_init,
-               .dpll_init = uniphier_ld20_dpll_init,
-               .memconf_init = uniphier_memconf_3ch_init,
-               .dram_clk_init = uniphier_ld20_dram_clk_init,
-               .umc_init = uniphier_ld20_umc_init,
-       },
-#endif
 };
 UNIPHIER_DEFINE_SOCDATA_FUNC(uniphier_get_spl_initdata, uniphier_spl_initdata)
 
@@ -141,10 +121,8 @@ void spl_board_init(void)
        if (initdata->bcu_init)
                initdata->bcu_init(bd);
 
-
        initdata->early_clk_init();
 
-
 #ifdef CONFIG_SPL_SERIAL_SUPPORT
        preloader_console_init();
 #endif
@@ -168,8 +146,4 @@ void spl_board_init(void)
                pr_err("failed to init DRAM\n");
                hang();
        }
-
-#ifdef CONFIG_ARM64
-       dcache_disable();
-#endif
 }
index 26509b73c64773ae5716a744b8b9e39631e2a89a..88e7d6a7b67d669d9c1685b7011de728f076e7ce 100644 (file)
@@ -10,6 +10,7 @@ config MCF520x
 
 config MCF52x2
        bool
+       imply ENV_IS_IN_FLASH
 
 config MCF523x
        bool
@@ -22,6 +23,7 @@ config MCF5301x
 
 config MCF532x
        bool
+       imply ENV_IS_IN_FLASH
 
 config MCF537x
        bool
@@ -37,6 +39,7 @@ config MCF5227x
 
 config MCF547x_8x
        bool
+       imply ENV_IS_IN_FLASH
 
 # processor type
 config M5208
@@ -70,6 +73,7 @@ config M5275
 config M5282
        bool
        select MCF52x2
+       imply ENV_IS_IN_FLASH
 
 config M5307
        bool
@@ -107,10 +111,12 @@ config M52277
 config M547x
        bool
        select MCF547x_8x
+       imply ENV_IS_IN_FLASH
 
 config M548x
        bool
        select MCF547x_8x
+       imply ENV_IS_IN_FLASH
 
 choice
        prompt "Target select"
@@ -191,10 +197,12 @@ config TARGET_M54455EVB
 config TARGET_M5475EVB
        bool "Support M5475EVB"
        select M547x
+       imply ENV_IS_IN_FLASH
 
 config TARGET_M5485EVB
        bool "Support M5485EVB"
        select M548x
+       imply ENV_IS_IN_FLASH
 
 config TARGET_AMCORE
        bool "Support AMCORE"
index 80d85e46d484a25b1329b1e6d610d1af41d84ea5..20fa25b5ccb2a3ccc07db03f5a1f0496d00aeab5 100644 (file)
@@ -15,6 +15,7 @@ config TARGET_MICROBLAZE_GENERIC
        select OF_CONTROL
        select DM
        select DM_SERIAL
+       select ENV_IS_IN_FLASH
 
 endchoice
 
index 79dc0cfc2769218ba2ecd42949bd4e38e6407363..baf4f5103fe0ba8666320bca01219d55b18b15d8 100644 (file)
@@ -31,8 +31,8 @@ _start:
        mts     rshr, r1
        addi    r1, r1, -4      /* Decrement SP to top of memory */
 #else
-#if defined(CONFIG_SYS_MALLOC_F_LEN)
-       addi    r1, r0, CONFIG_SYS_INIT_SP_OFFSET - CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
+       addi    r1, r0, CONFIG_SYS_INIT_SP_OFFSET - CONFIG_VAL(SYS_MALLOC_F_LEN)
 #else
        addi    r1, r0, CONFIG_SYS_INIT_SP_OFFSET
 #endif
@@ -162,14 +162,14 @@ clear_bss:
 #ifndef CONFIG_SPL_BUILD
        or      r5, r0, r0      /* flags - empty */
        addi    r31, r0, _gd
-#if defined(CONFIG_SYS_MALLOC_F_LEN)
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        addi    r6, r0, CONFIG_SYS_INIT_SP_OFFSET
        swi     r6, r31, GD_MALLOC_BASE
 #endif
        brai    board_init_f
 #else
        addi    r31, r0, _gd
-#if defined(CONFIG_SYS_MALLOC_F_LEN)
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        addi    r6, r0, CONFIG_SPL_STACK_ADDR
        swi     r6, r31, GD_MALLOC_BASE
 #endif
index d07b92d1b442b86be928b28ee08b0cb1fbfe23c4..b53206bf8ee78fb655c093e93a3ea9fc2ace8a26 100644 (file)
@@ -21,6 +21,7 @@ config TARGET_QEMU_MIPS
        select SUPPORTS_CPU_MIPS64_R1
        select SUPPORTS_CPU_MIPS64_R2
        select ROM_EXCEPTION_VECTORS
+       imply ENV_IS_IN_FLASH
 
 config TARGET_MALTA
        bool "Support malta"
@@ -42,6 +43,7 @@ config TARGET_MALTA
        select SWAP_IO_SPACE
        select MIPS_L1_CACHE_SHIFT_6
        select ROM_EXCEPTION_VECTORS
+       imply ENV_IS_IN_FLASH
 
 config TARGET_VCT
        bool "Support vct"
@@ -83,6 +85,7 @@ config ARCH_BMIPS
        select CPU
        select RAM
        select SYSRESET
+       imply ENV_IS_NOWHERE
 
 config MACH_PIC32
        bool "Support Microchip PIC32"
@@ -107,6 +110,7 @@ config TARGET_BOSTON
        select SUPPORTS_CPU_MIPS64_R2
        select SUPPORTS_CPU_MIPS64_R6
        select ROM_EXCEPTION_VECTORS
+       imply ENV_IS_IN_FLASH
 
 config TARGET_XILFPGA
        bool "Support Imagination Xilfpga"
@@ -196,6 +200,7 @@ config CPU_MIPS64_R2
        bool "MIPS64 Release 2"
        depends on SUPPORTS_CPU_MIPS64_R2
        select 64BIT
+       imply ENV_IS_IN_FLASH
        help
          Choose this option to build a kernel for release 2 through 5 of the
          MIPS64 architecture.
diff --git a/arch/mips/Makefile.postlink b/arch/mips/Makefile.postlink
new file mode 100644 (file)
index 0000000..7da3acd
--- /dev/null
@@ -0,0 +1,23 @@
+#
+# Copyright (c) 2017 Imagination Technologies Ltd.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+PHONY := __archpost
+__archpost:
+
+-include include/config/auto.conf
+include scripts/Kbuild.include
+
+CMD_RELOCS = tools/mips-relocs
+quiet_cmd_relocs = RELOCS  $@
+      cmd_relocs = $(CMD_RELOCS) $@
+
+u-boot: FORCE
+       @true
+       $(call if_changed,relocs)
+
+.PHONY: FORCE
+
+FORCE:
index 2c72c1553d64826af0c2216d34550546946804b8..cefdbe65e112e3d2fe7ec946624b5e974b3a7d43 100644 (file)
@@ -56,25 +56,14 @@ PLATFORM_ELFFLAGS += -B mips $(OBJCOPYFLAGS)
 # LDFLAGS_vmlinux              += -G 0 -static -n -nostdlib
 # MODFLAGS                     += -mlong-calls
 #
-# On the other hand, we want PIC in the U-Boot code to relocate it from ROM
-# to RAM. $28 is always used as gp.
-#
-ifdef CONFIG_SPL_BUILD
-PF_ABICALLS                    := -mno-abicalls
-PF_PIC                         := -fno-pic
-PF_PIE                         :=
-else
-PF_ABICALLS                    := -mabicalls
-PF_PIC                         := -fpic
-PF_PIE                         := -pie
-PF_OBJCOPY                     := -j .got -j .rel.dyn -j .padding
-PF_OBJCOPY                     += -j .dtb.init.rodata
+ifndef CONFIG_SPL_BUILD
+OBJCOPYFLAGS                   += -j .got -j .rel -j .padding -j .dtb.init.rodata
+LDFLAGS_FINAL                  += --emit-relocs
 endif
 
-PLATFORM_CPPFLAGS              += -G 0 $(PF_ABICALLS) $(PF_PIC)
+PLATFORM_CPPFLAGS              += -G 0 -mno-abicalls -fno-pic
 PLATFORM_CPPFLAGS              += -msoft-float
 PLATFORM_LDFLAGS               += -G 0 -static -n -nostdlib
 PLATFORM_RELFLAGS              += -ffunction-sections -fdata-sections
-LDFLAGS_FINAL                  += --gc-sections $(PF_PIE)
+LDFLAGS_FINAL                  += --gc-sections
 OBJCOPYFLAGS                   += -j .text -j .rodata -j .data -j .u_boot_list
-OBJCOPYFLAGS                   += $(PF_OBJCOPY)
index d01ee9f9bddd3095ffcf754dcc9e6176aacf33ef..42af9def69a9572424711c5a00556cd5803cda7a 100644 (file)
@@ -60,8 +60,8 @@
                sp, sp, GD_SIZE         # reserve space for gd
        and     sp, sp, t0              # force 16 byte alignment
        move    k0, sp                  # save gd pointer
-#ifdef CONFIG_SYS_MALLOC_F_LEN
-       li      t2, CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
+       li      t2, CONFIG_VAL(SYS_MALLOC_F_LEN)
        PTR_SUBU \
                sp, sp, t2              # reserve space for early malloc
        and     sp, sp, t0              # force 16 byte alignment
@@ -75,7 +75,7 @@
        blt     t0, t1, 1b
         PTR_ADDIU t0, PTRSIZE
 
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        PTR_S   sp, GD_MALLOC_BASE(k0)  # gd->malloc_base offset
 #endif
        .endm
@@ -221,18 +221,6 @@ wr_done:
        ehb
 #endif
 
-       /*
-        * Initialize $gp, force pointer sized alignment of bal instruction to
-        * forbid the compiler to put nop's between bal and _gp. This is
-        * required to keep _gp and ra aligned to 8 byte.
-        */
-       .align  PTRLOG
-       bal     1f
-        nop
-       PTR     _gp
-1:
-       PTR_L   gp, 0(ra)
-
 #ifdef CONFIG_MIPS_CM
        PTR_LA  t9, mips_cm_map
        jalr    t9
@@ -291,121 +279,3 @@ wr_done:
         move   ra, zero
 
        END(_start)
-
-/*
- * void relocate_code (addr_sp, gd, addr_moni)
- *
- * This "function" does not return, instead it continues in RAM
- * after relocating the monitor code.
- *
- * a0 = addr_sp
- * a1 = gd
- * a2 = destination address
- */
-ENTRY(relocate_code)
-       move    sp, a0                  # set new stack pointer
-       move    fp, sp
-
-       move    s0, a1                  # save gd in s0
-       move    s2, a2                  # save destination address in s2
-
-       PTR_LI  t0, CONFIG_SYS_MONITOR_BASE
-       PTR_SUB s1, s2, t0              # s1 <-- relocation offset
-
-       PTR_LA  t2, __image_copy_end
-       move    t1, a2
-
-       /*
-        * t0 = source address
-        * t1 = target address
-        * t2 = source end address
-        */
-1:
-       PTR_L   t3, 0(t0)
-       PTR_S   t3, 0(t1)
-       PTR_ADDU t0, PTRSIZE
-       blt     t0, t2, 1b
-        PTR_ADDU t1, PTRSIZE
-
-       /*
-        * Now we want to update GOT.
-        *
-        * GOT[0] is reserved. GOT[1] is also reserved for the dynamic object
-        * generated by GNU ld. Skip these reserved entries from relocation.
-        */
-       PTR_LA  t3, num_got_entries
-       PTR_LA  t8, _GLOBAL_OFFSET_TABLE_
-       PTR_ADD t8, s1                  # t8 now holds relocated _G_O_T_
-       PTR_ADDIU t8, t8, 2 * PTRSIZE   # skipping first two entries
-       PTR_LI  t2, 2
-1:
-       PTR_L   t1, 0(t8)
-       beqz    t1, 2f
-        PTR_ADD t1, s1
-       PTR_S   t1, 0(t8)
-2:
-       PTR_ADDIU t2, 1
-       blt     t2, t3, 1b
-        PTR_ADDIU t8, PTRSIZE
-
-       /* Update dynamic relocations */
-       PTR_LA  t1, __rel_dyn_start
-       PTR_LA  t2, __rel_dyn_end
-
-       b       2f                      # skip first reserved entry
-        PTR_ADDIU t1, 2 * PTRSIZE
-
-1:
-       lw      t8, -4(t1)              # t8 <-- relocation info
-
-       PTR_LI  t3, MIPS_RELOC
-       bne     t8, t3, 2f              # skip non-MIPS_RELOC entries
-        nop
-
-       PTR_L   t3, -(2 * PTRSIZE)(t1)  # t3 <-- location to fix up in FLASH
-
-       PTR_L   t8, 0(t3)               # t8 <-- original pointer
-       PTR_ADD t8, s1                  # t8 <-- adjusted pointer
-
-       PTR_ADD t3, s1                  # t3 <-- location to fix up in RAM
-       PTR_S   t8, 0(t3)
-
-2:
-       blt     t1, t2, 1b
-        PTR_ADDIU t1, 2 * PTRSIZE      # each rel.dyn entry is 2*PTRSIZE bytes
-
-       /*
-        * Flush caches to ensure our newly modified instructions are visible
-        * to the instruction cache. We're still running with the old GOT, so
-        * apply the reloc offset to the start address.
-        */
-       PTR_LA  a0, __text_start
-       PTR_LA  a1, __text_end
-       PTR_SUB a1, a1, a0
-       PTR_LA  t9, flush_cache
-       jalr    t9
-        PTR_ADD        a0, s1
-
-       PTR_ADD gp, s1                  # adjust gp
-
-       /*
-        * Clear BSS
-        *
-        * GOT is now relocated. Thus __bss_start and __bss_end can be
-        * accessed directly via $gp.
-        */
-       PTR_LA  t1, __bss_start         # t1 <-- __bss_start
-       PTR_LA  t2, __bss_end           # t2 <-- __bss_end
-
-1:
-       PTR_S   zero, 0(t1)
-       blt     t1, t2, 1b
-        PTR_ADDIU t1, PTRSIZE
-
-       move    a0, s0                  # a0 <-- gd
-       move    a1, s2
-       PTR_LA  t9, board_init_r
-       jr      t9
-        move   ra, zero
-
-       END(relocate_code)
index 0129c996118d621e913b097d433637e6503d25d0..bd5536f0137466a7c849c85829a872adde6dcc6c 100644 (file)
@@ -34,15 +34,6 @@ SECTIONS
                *(.data*)
        }
 
-       . = .;
-       _gp = ALIGN(16) + 0x7ff0;
-
-       .got : {
-               *(.got)
-       }
-
-       num_got_entries = SIZEOF(.got) >> PTR_COUNT_SHIFT;
-
        . = ALIGN(4);
        .sdata : {
                *(.sdata*)
@@ -57,33 +48,19 @@ SECTIONS
        __image_copy_end = .;
        __init_end = .;
 
-       .rel.dyn : {
-               __rel_dyn_start = .;
-               *(.rel.dyn)
-               __rel_dyn_end = .;
-       }
-
-       .padding : {
-               /*
-                * Workaround for a binutils feature (or bug?).
-                *
-                * The GNU ld from binutils puts the dynamic relocation
-                * entries into the .rel.dyn section. Sometimes it
-                * allocates more dynamic relocation entries than it needs
-                * and the unused slots are set to R_MIPS_NONE entries.
-                *
-                * However the size of the .rel.dyn section in the ELF
-                * section header does not cover the unused entries, so
-                * objcopy removes those during stripping.
-                *
-                * Create a small section here to avoid that.
-                */
-               LONG(0xFFFFFFFF)
+       /*
+        * .rel must come last so that the mips-relocs tool can shrink
+        * the section size & the PT_LOAD program header filesz.
+        */
+       .rel : {
+               __rel_start = .;
+               BYTE(0x0)
+               . += (32 * 1024) - 1;
        }
 
        _end = .;
 
-       .bss __rel_dyn_start (OVERLAY) : {
+       .bss __rel_start (OVERLAY) : {
                __bss_start = .;
                *(.sbss.*)
                *(.bss.*)
diff --git a/arch/mips/include/asm/relocs.h b/arch/mips/include/asm/relocs.h
new file mode 100644 (file)
index 0000000..92e9d04
--- /dev/null
@@ -0,0 +1,24 @@
+/*
+ * MIPS Relocations
+ *
+ * Copyright (c) 2017 Imagination Technologies Ltd.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __ASM_MIPS_RELOCS_H__
+#define __ASM_MIPS_RELOCS_H__
+
+#define R_MIPS_NONE            0
+#define R_MIPS_32              2
+#define R_MIPS_26              4
+#define R_MIPS_HI16            5
+#define R_MIPS_LO16            6
+#define R_MIPS_PC16            10
+#define R_MIPS_64              18
+#define R_MIPS_HIGHER          28
+#define R_MIPS_HIGHEST         29
+#define R_MIPS_PC21_S2         60
+#define R_MIPS_PC26_S2         61
+
+#endif /* __ASM_MIPS_RELOCS_H__ */
index fc4640a3928a7bc9e0be409640e08cfbf079e4c9..b9d217999e22e192b4dfe57630e1c3ce48f38b85 100644 (file)
@@ -8,4 +8,11 @@
 
 #include <asm-generic/sections.h>
 
+/**
+ * __rel_start: Relocation data generated by the mips-relocs tool
+ *
+ * See arch/mips/lib/reloc.c for details on the format & use of this data.
+ */
+extern uint8_t __rel_start[];
+
 #endif
index 659c6ad187cdfd025caaa75e4fc000ae6d50a63b..ef557c693225938c47d2230c42465227f7e4b62d 100644 (file)
@@ -8,6 +8,7 @@
 obj-y  += cache.o
 obj-y  += cache_init.o
 obj-y  += genex.o
+obj-y  += reloc.o
 obj-y  += stack.o
 obj-y  += traps.o
 
index be877625a8ecaf9d7fa9c8ec826b169597432f8b..2b6790524c80a03268a86ccab8a8a6b6bdcc3b34 100644 (file)
@@ -279,17 +279,17 @@ static void boot_prep_linux(bootm_headers_t *images)
                boot_reloc_fdt(images);
                boot_setup_fdt(images);
        } else {
-               if (CONFIG_IS_ENABLED(CONFIG_MIPS_BOOT_ENV_LEGACY))
-                       linux_env_legacy(images);
-
                if (CONFIG_IS_ENABLED(MIPS_BOOT_CMDLINE_LEGACY)) {
                        linux_cmdline_legacy(images);
 
-                       if (!CONFIG_IS_ENABLED(CONFIG_MIPS_BOOT_ENV_LEGACY))
+                       if (!CONFIG_IS_ENABLED(MIPS_BOOT_ENV_LEGACY))
                                linux_cmdline_append(images);
 
                        linux_cmdline_dump();
                }
+
+               if (CONFIG_IS_ENABLED(MIPS_BOOT_ENV_LEGACY))
+                       linux_env_legacy(images);
        }
 }
 
diff --git a/arch/mips/lib/reloc.c b/arch/mips/lib/reloc.c
new file mode 100644 (file)
index 0000000..d0c52c9
--- /dev/null
@@ -0,0 +1,164 @@
+/*
+ * MIPS Relocation
+ *
+ * Copyright (c) 2017 Imagination Technologies Ltd.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ *
+ * Relocation data, found in the .rel section, is generated by the mips-relocs
+ * tool & contains a record of all locations in the U-Boot binary that need to
+ * be fixed up during relocation.
+ *
+ * The data is a sequence of unsigned integers, which are of somewhat arbitrary
+ * size. This is achieved by encoding integers as a sequence of bytes, each of
+ * which contains 7 bits of data with the most significant bit indicating
+ * whether any further bytes need to be read. The least significant bits of the
+ * integer are found in the first byte - ie. it somewhat resembles little
+ * endian.
+ *
+ * Each pair of two integers represents a relocation that must be applied. The
+ * first integer represents the type of relocation as a standard ELF relocation
+ * type (ie. R_MIPS_*). The second integer represents the offset at which to
+ * apply the relocation, relative to the previous relocation or for the first
+ * relocation the start of the relocated .text section.
+ *
+ * The end of the relocation data is indicated when type R_MIPS_NONE (0) is
+ * read, at which point no further integers should be read. That is, the
+ * terminating R_MIPS_NONE reloc includes no offset.
+ */
+
+#include <common.h>
+#include <asm/relocs.h>
+#include <asm/sections.h>
+
+/**
+ * read_uint() - Read an unsigned integer from the buffer
+ * @buf: pointer to a pointer to the reloc buffer
+ *
+ * Read one whole unsigned integer from the relocation data pointed to by @buf,
+ * advancing @buf past the bytes encoding the integer.
+ *
+ * Returns: the integer read from @buf
+ */
+static unsigned long read_uint(uint8_t **buf)
+{
+       unsigned long val = 0;
+       unsigned int shift = 0;
+       uint8_t new;
+
+       do {
+               new = *(*buf)++;
+               val |= (new & 0x7f) << shift;
+               shift += 7;
+       } while (new & 0x80);
+
+       return val;
+}
+
+/**
+ * apply_reloc() - Apply a single relocation
+ * @type: the type of reloc (R_MIPS_*)
+ * @addr: the address that the reloc should be applied to
+ * @off: the relocation offset, ie. number of bytes we're moving U-Boot by
+ *
+ * Apply a single relocation of type @type at @addr. This function is
+ * intentionally simple, and does the bare minimum needed to fixup the
+ * relocated U-Boot - in particular, it does not check for overflows.
+ */
+static void apply_reloc(unsigned int type, void *addr, long off)
+{
+       uint32_t u32;
+
+       switch (type) {
+       case R_MIPS_26:
+               u32 = *(uint32_t *)addr;
+               u32 = (u32 & GENMASK(31, 26)) |
+                     ((u32 + (off >> 2)) & GENMASK(25, 0));
+               *(uint32_t *)addr = u32;
+               break;
+
+       case R_MIPS_32:
+               *(uint32_t *)addr += off;
+               break;
+
+       case R_MIPS_64:
+               *(uint64_t *)addr += off;
+               break;
+
+       case R_MIPS_HI16:
+               *(uint32_t *)addr += off >> 16;
+               break;
+
+       default:
+               panic("Unhandled reloc type %u\n", type);
+       }
+}
+
+/**
+ * relocate_code() - Relocate U-Boot, generally from flash to DDR
+ * @start_addr_sp: new stack pointer
+ * @new_gd: pointer to relocated global data
+ * @relocaddr: the address to relocate to
+ *
+ * Relocate U-Boot from its current location (generally in flash) to a new one
+ * (generally in DDR). This function will copy the U-Boot binary & apply
+ * relocations as necessary, then jump to board_init_r in the new build of
+ * U-Boot. As such, this function does not return.
+ */
+void relocate_code(ulong start_addr_sp, gd_t *new_gd, ulong relocaddr)
+{
+       unsigned long addr, length, bss_len;
+       uint8_t *buf, *bss_start;
+       unsigned int type;
+       long off;
+
+       /*
+        * Ensure that we're relocating by an offset which is a multiple of
+        * 64KiB, ie. doesn't change the least significant 16 bits of any
+        * addresses. This allows us to discard R_MIPS_LO16 relocs, saving
+        * space in the U-Boot binary & complexity in handling them.
+        */
+       off = relocaddr - (unsigned long)__text_start;
+       if (off & 0xffff)
+               panic("Mis-aligned relocation\n");
+
+       /* Copy U-Boot to RAM */
+       length = __image_copy_end - __text_start;
+       memcpy((void *)relocaddr, __text_start, length);
+
+       /* Now apply relocations to the copy in RAM */
+       buf = __rel_start;
+       addr = relocaddr;
+       while (true) {
+               type = read_uint(&buf);
+               if (type == R_MIPS_NONE)
+                       break;
+
+               addr += read_uint(&buf) << 2;
+               apply_reloc(type, (void *)addr, off);
+       }
+
+       /* Ensure the icache is coherent */
+       flush_cache(relocaddr, length);
+
+       /* Clear the .bss section */
+       bss_start = (uint8_t *)((unsigned long)__bss_start + off);
+       bss_len = (unsigned long)&__bss_end - (unsigned long)__bss_start;
+       memset(bss_start, 0, bss_len);
+
+       /* Jump to the relocated U-Boot */
+       asm volatile(
+                      "move    $29, %0\n"
+               "       move    $4, %1\n"
+               "       move    $5, %2\n"
+               "       move    $31, $0\n"
+               "       jr      %3"
+               : /* no outputs */
+               : "r"(start_addr_sp),
+                 "r"(new_gd),
+                 "r"(relocaddr),
+                 "r"((unsigned long)board_init_r + off));
+
+       /* Since we jumped to the new U-Boot above, we won't get here */
+       unreachable();
+}
index e9002a76ab1a9472210c59d7268db9675fc6de31..8094416e4ad9c3a44abe8f76a74bce950ec4baca 100644 (file)
@@ -28,6 +28,7 @@ config MPC86xx
        bool "MPC86xx"
        select SYS_FSL_DDR
        select SYS_FSL_DDR_BE
+       imply ENV_IS_IN_FLASH
 
 config 8xx
        bool "MPC8xx"
index cdd21a253a760666babe5b91ce05334ae63cf371..b5b26f9b3af277dafb876f2668d8b44b7eaeee07 100644 (file)
@@ -13,6 +13,7 @@ config TARGET_MPC8308_P1M
 
 config TARGET_SBC8349
        bool "Support sbc8349"
+       imply ENV_IS_IN_FLASH
 
 config TARGET_VE8313
        bool "Support ve8313"
@@ -39,6 +40,7 @@ config TARGET_MPC8323ERDB
 config TARGET_MPC832XEMDS
        bool "Support MPC832XEMDS"
        select BOARD_EARLY_INIT_F
+       imply ENV_IS_IN_FLASH
 
 config TARGET_MPC8349EMDS
        bool "Support MPC8349EMDS"
@@ -50,6 +52,7 @@ config TARGET_MPC8349EMDS
 config TARGET_MPC8349ITX
        bool "Support MPC8349ITX"
        imply CMD_IRQ
+       imply ENV_IS_IN_FLASH
 
 config TARGET_MPC837XEMDS
        bool "Support MPC837XEMDS"
@@ -74,11 +77,13 @@ config TARGET_SUVD3
        bool "Support suvd3"
        imply CMD_CRAMFS
        imply FS_CRAMFS
+       imply ENV_IS_IN_FLASH
 
 config TARGET_TUXX1
        bool "Support tuxx1"
        imply CMD_CRAMFS
        imply FS_CRAMFS
+       imply ENV_IS_IN_FLASH
 
 config TARGET_TQM834X
        bool "Support TQM834x"
@@ -90,6 +95,7 @@ config TARGET_HRCON
 config TARGET_STRIDER
        bool "Support strider"
        select SYS_FSL_ERRATUM_ESDHC111
+       imply ENV_IS_IN_FLASH
 
 endchoice
 
index 2fed4a1fec16669adcd457502034e76646c4dd52..d2fced8aba86130351bf34539fbc01f4ace56fbd 100644 (file)
@@ -116,16 +116,6 @@ disable_addr_trans:
        mtspr   SRR1, r3
        rfi
 
-       .globl get_svr
-get_svr:
-       mfspr   r3, SVR
-       blr
-
-       .globl get_pvr
-get_pvr:
-       mfspr   r3, PVR
-       blr
-
        .globl  ppcDWstore
 ppcDWstore:
        lfd     1, 0(r4)
@@ -274,14 +264,14 @@ in_flash:
        cmplw   r3, r4
        bne     1b
 
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
 
-#if CONFIG_SYS_MALLOC_F_LEN + GENERATED_GBL_DATA_SIZE > CONFIG_SYS_INIT_RAM_SIZE
-#error "CONFIG_SYS_MALLOC_F_LEN too large to fit into initial RAM."
+#if CONFIG_VAL(SYS_MALLOC_F_LEN) + GENERATED_GBL_DATA_SIZE > CONFIG_SYS_INIT_RAM_SIZE
+#error "SYS_MALLOC_F_LEN too large to fit into initial RAM."
 #endif
 
        /* r3 = new stack pointer / pre-reloc malloc area */
-       subi    r3, r3, CONFIG_SYS_MALLOC_F_LEN
+       subi    r3, r3, CONFIG_VAL(SYS_MALLOC_F_LEN)
 
        /* Set pointer to pre-reloc malloc area in GD */
        stw     r3, GD_MALLOC_BASE(r4)
index 3dd6900c86839ec672d4236842869046369ba58f..f238d0b91c1dc33e2070115176200272c845c49d 100644 (file)
@@ -215,30 +215,3 @@ void DebugException(struct pt_regs *regs)
        do_bedbug_breakpoint( regs );
 #endif
 }
-
-/* Probe an address by reading.  If not present, return -1, otherwise
- * return 0.
- */
-int addr_probe(uint *addr)
-{
-#if 0
-       int     retval;
-
-       __asm__ __volatile__(                   \
-               "1:     lwz %0,0(%1)\n"         \
-               "       eieio\n"                \
-               "       li %0,0\n"              \
-               "2:\n"                          \
-               ".section .fixup,\"ax\"\n"      \
-               "3:     li %0,-1\n"             \
-               "       b 2b\n"                 \
-               ".section __ex_table,\"a\"\n"   \
-               "       .align 2\n"             \
-               "       .long 1b,3b\n"          \
-               ".text"                         \
-               : "=r" (retval) : "r"(addr));
-
-       return (retval);
-#endif
-       return 0;
-}
index 0bff79adbbbda1afdedfa0c5dab9e55e90d4678b..0c74f1d35bf006f18e286e6b0900cd3877df2942 100644 (file)
@@ -19,6 +19,7 @@ choice
 config TARGET_SBC8548
        bool "Support sbc8548"
        select ARCH_MPC8548
+       imply ENV_IS_IN_FLASH
 
 config TARGET_SOCRATES
        bool "Support socrates"
@@ -104,6 +105,7 @@ config TARGET_MPC8544DS
 config TARGET_MPC8548CDS
        bool "Support MPC8548CDS"
        select ARCH_MPC8548
+       imply ENV_IS_IN_FLASH
 
 config TARGET_MPC8555CDS
        bool "Support MPC8555CDS"
@@ -482,6 +484,7 @@ config ARCH_BSC9132
        select SYS_PPC_E500_USE_DEBUG_TLB
        select FSL_IFC
        imply CMD_EEPROM
+       imply CMD_MTDPARTS
 
 config ARCH_C29X
        bool
@@ -548,6 +551,7 @@ config ARCH_MPC8548
        select SYS_FSL_SEC_BE
        select SYS_FSL_SEC_COMPAT_2
        select SYS_PPC_E500_USE_DEBUG_TLB
+       imply ENV_IS_IN_FLASH
 
 config ARCH_MPC8555
        bool
@@ -595,6 +599,7 @@ config ARCH_MPC8572
        select SYS_FSL_SEC_COMPAT_2
        select SYS_PPC_E500_USE_DEBUG_TLB
        select FSL_ELBC
+       imply ENV_IS_IN_FLASH
 
 config ARCH_P1010
        bool
@@ -617,6 +622,7 @@ config ARCH_P1010
        select SYS_PPC_E500_USE_DEBUG_TLB
        select FSL_IFC
        imply CMD_EEPROM
+       imply CMD_MTDPARTS
        imply CMD_SATA
 
 config ARCH_P1011
@@ -903,6 +909,7 @@ config ARCH_T1024
        select SYS_FSL_SEC_COMPAT_5
        select FSL_IFC
        imply CMD_EEPROM
+       imply CMD_MTDPARTS
 
 config ARCH_T1040
        bool
@@ -921,6 +928,7 @@ config ARCH_T1040
        select SYS_FSL_SEC_BE
        select SYS_FSL_SEC_COMPAT_5
        select FSL_IFC
+       imply CMD_MTDPARTS
        imply CMD_SATA
 
 config ARCH_T1042
@@ -940,6 +948,7 @@ config ARCH_T1042
        select SYS_FSL_SEC_BE
        select SYS_FSL_SEC_COMPAT_5
        select FSL_IFC
+       imply CMD_MTDPARTS
        imply CMD_SATA
 
 config ARCH_T2080
index e3ef4ae816cc669c278f28bacc2db5e18fa7aec8..b3de164bd8f8c3940913c0029a45542493654eac 100644 (file)
@@ -23,6 +23,7 @@
 #include <post.h>
 #include <asm/processor.h>
 #include <fsl_ddr_sdram.h>
+#include <asm/ppc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -384,7 +385,7 @@ int cpu_mmc_init(bd_t *bis)
  * Currently prints out LAWs, BR0/OR0 for LBC, CSPR/CSOR/Timing
  * parameters for IFC and TLBs
  */
-void mpc85xx_reginfo(void)
+void print_reginfo(void)
 {
        print_tlbcam();
        print_laws();
index daf46a9ba86d83279a3654e6cef28f0e9f6e98d4..cf730c5c53cb8858e421ef5171a02dc4d7072225 100644 (file)
@@ -20,7 +20,7 @@
 #include <post.h>
 #endif
 
-int interrupt_init_cpu(unsigned int *decrementer_count)
+int interrupt_init_cpu(unsigned *decrementer_count)
 {
        ccsr_pic_t __iomem *pic = (void *)CONFIG_SYS_MPC8xxx_PIC_ADDR;
 
index 63fdffddb1a345e43584e7361eea00e5987e3f8e..0f016f037028af6856d9969db8c1e2abd3a8759a 100644 (file)
@@ -1183,14 +1183,13 @@ _start_cont:
        lis     r3,(CONFIG_SYS_INIT_RAM_ADDR)@h
        ori     r3,r3,((CONFIG_SYS_INIT_SP_OFFSET-16)&~0xf)@l /* Align to 16 */
 
-#ifdef CONFIG_SYS_MALLOC_F_LEN
-
-#if CONFIG_SYS_MALLOC_F_LEN + GENERATED_GBL_DATA_SIZE > CONFIG_SYS_INIT_RAM_SIZE
-#error "CONFIG_SYS_MALLOC_F_LEN too large to fit into initial RAM."
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
+#if CONFIG_VAL(SYS_MALLOC_F_LEN) + GENERATED_GBL_DATA_SIZE > CONFIG_SYS_INIT_RAM_SIZE
+#error "SYS_MALLOC_F_LEN too large to fit into initial RAM."
 #endif
 
        /* Leave 16+ byte for back chain termination and NULL return address */
-       subi    r3,r3,((CONFIG_SYS_MALLOC_F_LEN+16+15)&~0xf)
+       subi    r3,r3,((CONFIG_VAL(SYS_MALLOC_F_LEN)+16+15)&~0xf)
 #endif
 
        /* End of RAM */
@@ -1204,7 +1203,7 @@ _start_cont:
        cmplw   r4,r3
        bne     1b
 
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        lis     r4,(CONFIG_SYS_INIT_RAM_ADDR)@h
        ori     r4,r4,(CONFIG_SYS_GBL_DATA_OFFSET)@l
 
@@ -1427,16 +1426,6 @@ dcache_status:
        andi.   r3,r3,L1CSR0_DCE
        blr
 
-       .globl get_pvr
-get_pvr:
-       mfspr   r3,PVR
-       blr
-
-       .globl get_svr
-get_svr:
-       mfspr   r3,SVR
-       blr
-
 /*------------------------------------------------------------------------------- */
 /* Function:    in8 */
 /* Description:         Input 8 bits */
index 24adbc3078f5d2b77926fa2f759051475d9e538d..9d3556e50c58a024752005ab54a3b40bba9f8f55 100644 (file)
@@ -286,11 +286,3 @@ void DebugException(struct pt_regs *regs)
        do_bedbug_breakpoint( regs );
 #endif
 }
-
-/* Probe an address by reading.         If not present, return -1, otherwise
- * return 0.
- */
-int addr_probe(uint *addr)
-{
-       return 0;
-}
index 2cc180da38972bca7ba7e4890188f8a92b1b5a85..fe56efdf55b1b59623e6fc672de9fa90d5422752 100644 (file)
@@ -40,6 +40,7 @@ config ARCH_MPC8641
        select FSL_LAW
        select SYS_FSL_HAS_DDR1
        select SYS_FSL_HAS_DDR2
+       imply ENV_IS_IN_FLASH
 
 config FSL_LAW
        bool
index 7a9570c8ec72eb4d4dc3f1573f7b4fbcc4113499..a02e872862bc53b592e7408450c7b70060ac29ce 100644 (file)
@@ -13,6 +13,7 @@
 #include <asm/mmu.h>
 #include <mpc86xx.h>
 #include <asm/fsl_law.h>
+#include <asm/ppc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -160,7 +161,7 @@ watchdog_reset(void)
  * Print out the state of various machine registers.
  * Currently prints out LAWs, BR0/OR0, and BATs
  */
-void mpc86xx_reginfo(void)
+void print_reginfo(void)
 {
        print_bats();
        print_laws();
index 765aab5cfb7556f59fd56a77a3130ac0fb6391be..a6db0baab33f8cc2c7a74f3257f75c2c64350e6c 100644 (file)
@@ -23,7 +23,7 @@
 #include <post.h>
 #endif
 
-int interrupt_init_cpu(unsigned long *decrementer_count)
+int interrupt_init_cpu(unsigned *decrementer_count)
 {
        volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR;
        volatile ccsr_pic_t *pic = &immr->im_pic;
@@ -43,7 +43,7 @@ int interrupt_init_cpu(unsigned long *decrementer_count)
        pic->gcr = MPC86xx_PICGCR_MODE;
 
        *decrementer_count = get_tbclk() / CONFIG_SYS_HZ;
-       debug("interrupt init: tbclk() = %ld MHz, decrementer_count = %ld\n",
+       debug("interrupt init: tbclk() = %ld MHz, decrementer_count = %d\n",
              (get_tbclk() / 1000000),
              *decrementer_count);
 
index ec5f4a756af13f89e96258557ce4321d0378bc64..b9e544d23cb4f417f8d8a2ab610aaf3427d982c3 100644 (file)
@@ -545,16 +545,6 @@ int_return:
 dc_read:
        blr
 
-       .globl get_pvr
-get_pvr:
-       mfspr   r3, PVR
-       blr
-
-       .globl get_svr
-get_svr:
-       mfspr   r3, SVR
-       blr
-
 
 /*
  * Function:   in8
index 92fb537453b5f6412c259acb033e018b69b78512..da74146844f4380f37cb4f0c5d97114537081704 100644 (file)
@@ -195,13 +195,3 @@ void UnknownException(struct pt_regs *regs)
               regs->nip, regs->msr, regs->trap);
        _exception(0, regs);
 }
-
-/*
- * Probe an address by reading.
- * If not present, return -1,
- * otherwise return 0.
- */
-int addr_probe(uint *addr)
-{
-       return 0;
-}
index b40bffb04742aa797313a1bf9ad184b6a81abf15..40f38923ece6e0e46ca55d7e1ba9d625af5cff8f 100644 (file)
@@ -14,3 +14,4 @@ obj-$(CONFIG_CMD_IMMAP) += immap.o
 obj-y  += interrupts.o
 obj-$(CONFIG_CMD_REGINFO) += reginfo.o
 obj-y  += speed.o
+obj-y  += cache.o
diff --git a/arch/powerpc/cpu/mpc8xx/cache.c b/arch/powerpc/cpu/mpc8xx/cache.c
new file mode 100644 (file)
index 0000000..f8cd5f5
--- /dev/null
@@ -0,0 +1,49 @@
+/*
+ * (C) Copyright 2017
+ * Christophe Leroy, CS Systemes d'Information, christophe.leroy@c-s.fr
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/processor.h>
+#include <asm/ppc.h>
+#include <asm/io.h>
+#include <asm/mmu.h>
+
+int icache_status(void)
+{
+       return !!(mfspr(IC_CST) & IDC_ENABLED);
+}
+
+void icache_enable(void)
+{
+       sync();
+       mtspr(IC_CST, IDC_INVALL);
+       mtspr(IC_CST, IDC_ENABLE);
+}
+
+void icache_disable(void)
+{
+       sync();
+       mtspr(IC_CST, IDC_DISABLE);
+}
+
+int dcache_status(void)
+{
+       return !!(mfspr(IC_CST) & IDC_ENABLED);
+}
+
+void dcache_enable(void)
+{
+       mtspr(MD_CTR, MD_RESETVAL);     /* Set cache mode with MMU off */
+       mtspr(DC_CST, IDC_INVALL);
+       mtspr(DC_CST, IDC_ENABLE);
+}
+
+void dcache_disable(void)
+{
+       sync();
+       mtspr(DC_CST, IDC_DISABLE);
+       mtspr(DC_CST, IDC_INVALL);
+}
index 74e6c6d02c0b07724693b48f7bab10d15d92e977..1e0ea28a91882c35944330daf6144047aebb3fc2 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-static char *cpu_warning = "\n         " \
-       "*** Warning: CPU Core has Silicon Bugs -- Check the Errata ***";
-
 static int check_CPU(long clock, uint pvr, uint immr)
 {
-       char *id_str =
-       NULL;
        immap_t __iomem *immap = (immap_t __iomem *)(immr & 0xFFFF0000);
-       uint k, m;
+       uint k;
        char buf[32];
-       char pre = 'X';
-       char *mid = "xx";
-       char *suf;
 
        /* the highest 16 bits should be 0x0050 for a 860 */
 
@@ -55,8 +47,6 @@ static int check_CPU(long clock, uint pvr, uint immr)
 
        k = (immr << 16) |
            in_be16(&immap->im_cpm.cp_dparam16[PROFF_REVNUM / sizeof(u16)]);
-       m = 0;
-       suf = "";
 
        /*
         * Some boards use sockets so different CPUs can be used.
@@ -65,32 +55,20 @@ static int check_CPU(long clock, uint pvr, uint immr)
        switch (k) {
                /* MPC866P/MPC866T/MPC859T/MPC859DSL/MPC852T */
        case 0x08010004:                /* Rev. A.0 */
-               suf = "A";
-               /* fall through */
+               printf("MPC866xxxZPnnA");
+               break;
        case 0x08000003:                /* Rev. 0.3 */
-               pre = 'M'; m = 1;
-               if (id_str == NULL)
-                       id_str =
-               "PC866x"; /* Unknown chip from MPC866 family */
+               printf("MPC866xxxZPnn");
                break;
-       case 0x09000000:
-               pre = 'M'; mid = suf = ""; m = 1;
-               if (id_str == NULL)
-                       id_str = "PC885"; /* 870/875/880/885 */
+       case 0x09000000:                /* 870/875/880/885 */
+               puts("MPC885ZPnn");
                break;
 
        default:
-               suf = NULL;
+               printf("unknown MPC86x (0x%08x)", k);
                break;
        }
 
-       if (id_str == NULL)
-               id_str = "PC86x";       /* Unknown 86x chip */
-       if (suf)
-               printf("%c%s%sZPnn%s", pre, id_str, mid, suf);
-       else
-               printf("unknown M%s (0x%08x)", id_str, k);
-
        printf(" at %s MHz: ", strmhz(buf, clock));
 
        print_size(checkicache(), " I-Cache ");
@@ -102,9 +80,6 @@ static int check_CPU(long clock, uint pvr, uint immr)
        if (in_be32(&immap->im_cpm.cp_fec.fec_addr_low) == 0x12345678)
                printf(" FEC present");
 
-       if (!m)
-               puts(cpu_warning);
-
        putc('\n');
 
        return 0;
index 16e7bf5fd546ebf68046b9117c13ee21f81136bc..dc601a12976f2cd0be7a083be97407d6fd761bb3 100644 (file)
@@ -38,7 +38,10 @@ void cpu_init_f(immap_t __iomem *immr)
        /* unlock TBSCRK */
 
        out_be32(&immr->im_sitk.sitk_tbscrk, KAPWR_KEY);
-       out_be16(&immr->im_sit.sit_tbscr, CONFIG_SYS_TBSCR);
+       out_be16(&immr->im_sit.sit_tbscr, CONFIG_SYS_TBSCR | TBSCR_TBE);
+
+       /* Unlock timebase register */
+       out_be32(&immr->im_sitk.sitk_tbk, KAPWR_KEY);
 
        /* initialize the PIT (11-31) */
 
index 6da085325d0239342f2df205faa5a87a8be0e2b0..2284979dd6539335f719861946824b23219dbad9 100644 (file)
@@ -19,7 +19,7 @@
 
 DECLARE_GLOBAL_DATA_PTR;
 
-int do_siuinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_siuinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
        sysconf8xx_t __iomem *sc = &immap->im_siu_conf;
@@ -36,7 +36,8 @@ int do_siuinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        return 0;
 }
 
-int do_memcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_memcinfo(cmd_tbl_t *cmdtp, int flag, int argc,
+                      char * const argv[])
 {
        immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
        memctl8xx_t __iomem *memctl = &immap->im_memctl;
@@ -58,7 +59,7 @@ int do_memcinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        return 0;
 }
 
-int do_carinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_carinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
        car8xx_t __iomem *car = &immap->im_clkrst;
@@ -119,7 +120,7 @@ static void binary(char *label, uint value, int nbits)
 #define PC_NBITS       12
 #define PD_NBITS       13
 
-int do_iopinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_iopinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
        iop8xx_t __iomem *iop = &immap->im_ioport;
@@ -172,7 +173,7 @@ int do_iopinfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
  * this needs a clean up for smaller tighter code
  * use *uint and set the address based on cmd + port
  */
-int do_iopset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_iopset(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        uint rcode = 0;
        iopin_t iopin;
@@ -328,7 +329,7 @@ static void prbrg(int n, uint val)
        putc('\n');
 }
 
-int do_brginfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
+static int do_brginfo(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
        immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
        cpm8xx_t __iomem *cp = &immap->im_cpm;
index 1ba4d22bdddc353da9ed28748e764ae4810f8e08..277d2753b2590cdce5da04f543c595a1a3e30729 100644 (file)
@@ -8,8 +8,9 @@
 #include <common.h>
 #include <mpc8xx.h>
 #include <asm/io.h>
+#include <asm/ppc.h>
 
-void mpc8xx_reginfo(void)
+void print_reginfo(void)
 {
        immap_t __iomem     *immap  = (immap_t __iomem *)CONFIG_SYS_IMMR;
        memctl8xx_t __iomem *memctl = &immap->im_memctl;
index 8d43efff6ca1cc550ffe39aeff1dad03c2dc01aa..fa8f87cbc5ea2302437a8d4ef1835d7d2011eb9f 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
-void get_brgclk(uint sccr)
-{
-       uint divider = 0;
-
-       switch ((sccr & SCCR_DFBRG11) >> 11) {
-       case 0:
-               divider = 1;
-               break;
-       case 1:
-               divider = 4;
-               break;
-       case 2:
-               divider = 16;
-               break;
-       case 3:
-               divider = 64;
-               break;
-       }
-       gd->arch.brg_clk = gd->cpu_clk / divider;
-}
-
 /*
  * get_clocks() fills in gd->cpu_clock depending on CONFIG_8xx_GCLK_FREQ
  */
@@ -41,6 +20,8 @@ int get_clocks(void)
        uint immr = get_immr(0);        /* Return full IMMR contents */
        immap_t __iomem *immap = (immap_t __iomem *)(immr & 0xFFFF0000);
        uint sccr = in_be32(&immap->im_clkrst.car_sccr);
+       uint divider = 1 << (((sccr & SCCR_DFBRG11) >> 11) * 2);
+
        /*
         * If for some reason measuring the gclk frequency won't
         * work, we return the hardwired value.
@@ -57,7 +38,7 @@ int get_clocks(void)
                gd->bus_clk = gd->cpu_clk / 2;
        }
 
-       get_brgclk(sccr);
+       gd->arch.brg_clk = gd->cpu_clk / divider;
 
        return 0;
 }
index b00696fc75dcae47eef34db123b1e95344a3d91f..202ea81ae4986b14ab769d9fe67fb722bd9977af 100644 (file)
@@ -305,114 +305,6 @@ int_return:
        SYNC
        rfi
 
-/* Cache functions.
-*/
-       .globl  icache_enable
-icache_enable:
-       SYNC
-       lis     r3, IDC_INVALL@h
-       mtspr   IC_CST, r3
-       lis     r3, IDC_ENABLE@h
-       mtspr   IC_CST, r3
-       blr
-
-       .globl  icache_disable
-icache_disable:
-       SYNC
-       lis     r3, IDC_DISABLE@h
-       mtspr   IC_CST, r3
-       blr
-
-       .globl  icache_status
-icache_status:
-       mfspr   r3, IC_CST
-       srwi    r3, r3, 31      /* >>31 => select bit 0 */
-       blr
-
-       .globl  dcache_enable
-dcache_enable:
-       lis     r3, 0x0400              /* Set cache mode with MMU off */
-       mtspr   MD_CTR, r3
-
-       lis     r3, IDC_INVALL@h
-       mtspr   DC_CST, r3
-       lis     r3, IDC_ENABLE@h
-       mtspr   DC_CST, r3
-       blr
-
-       .globl  dcache_disable
-dcache_disable:
-       SYNC
-       lis     r3, IDC_DISABLE@h
-       mtspr   DC_CST, r3
-       lis     r3, IDC_INVALL@h
-       mtspr   DC_CST, r3
-       blr
-
-       .globl  dcache_status
-dcache_status:
-       mfspr   r3, DC_CST
-       srwi    r3, r3, 31      /* >>31 => select bit 0 */
-       blr
-
-       .globl  dc_read
-dc_read:
-       mtspr   DC_ADR, r3
-       mfspr   r3, DC_DAT
-       blr
-
-/*
- * unsigned int get_immr (unsigned int mask)
- *
- * return (mask ? (IMMR & mask) : IMMR);
- */
-       .globl  get_immr
-get_immr:
-       mr      r4,r3           /* save mask */
-       mfspr   r3, IMMR        /* IMMR */
-       cmpwi   0,r4,0          /* mask != 0 ? */
-       beq     4f
-       and     r3,r3,r4        /* IMMR & mask */
-4:
-       blr
-
-       .globl get_pvr
-get_pvr:
-       mfspr   r3, PVR
-       blr
-
-
-       .globl wr_ic_cst
-wr_ic_cst:
-       mtspr   IC_CST, r3
-       blr
-
-       .globl rd_ic_cst
-rd_ic_cst:
-       mfspr   r3, IC_CST
-       blr
-
-       .globl wr_ic_adr
-wr_ic_adr:
-       mtspr   IC_ADR, r3
-       blr
-
-
-       .globl wr_dc_cst
-wr_dc_cst:
-       mtspr   DC_CST, r3
-       blr
-
-       .globl rd_dc_cst
-rd_dc_cst:
-       mfspr   r3, DC_CST
-       blr
-
-       .globl wr_dc_adr
-wr_dc_adr:
-       mtspr   DC_ADR, r3
-       blr
-
 /*------------------------------------------------------------------------------*/
 
 /*
index 8b8d617eeda883064462851c7e9918133cfda745..23646adaddd7c97f404bafb8ec380f350e65f46d 100644 (file)
@@ -52,7 +52,7 @@ static void print_backtrace(unsigned long *sp)
        printf("\n");
 }
 
-void show_regs(struct pt_regs *regs)
+static void show_regs(struct pt_regs *regs)
 {
        int i;
 
@@ -155,11 +155,3 @@ void DebugException(struct pt_regs *regs)
        printf("Debugger trap at @ %lx\n", regs->nip);
        show_regs(regs);
 }
-
-/* Probe an address by reading.  If not present, return -1, otherwise
- * return 0.
- */
-int addr_probe(uint *addr)
-{
-       return 0;
-}
index d3a83910b6fce2c6449d30fa040f4b7c596686b2..0801d2c367765e3162fd86226eec4661d17c5890 100644 (file)
@@ -107,6 +107,38 @@ void disable_cpc_sram(void);
 
 #define DC_DFWT                0x40000000      /* Data cache is forced write through */
 #define DC_LES         0x20000000      /* Caches are little endian mode */
+
+#if !defined(__ASSEMBLY__)
+static inline uint rd_ic_cst(void)
+{
+       return mfspr(IC_CST);
+}
+
+static inline void wr_ic_cst(uint val)
+{
+       mtspr(IC_CST, val);
+}
+
+static inline void wr_ic_adr(uint val)
+{
+       mtspr(IC_ADR, val);
+}
+
+static inline uint rd_dc_cst(void)
+{
+       return mfspr(DC_CST);
+}
+
+static inline void wr_dc_cst(uint val)
+{
+       mtspr(DC_CST, val);
+}
+
+static inline void wr_dc_adr(uint val)
+{
+       mtspr(DC_ADR, val);
+}
+#endif
 #endif /* CONFIG_8xx */
 
 #endif
index c6aa2f0dfb02c878b486c25a207b62820af52c24..850fe93f979832422ae69fbd6abceafb329d36ae 100644 (file)
 #include <asm/arch/immap_lsch2.h>
 #endif
 
+#include <asm/processor.h>
+
 #if defined(CONFIG_8xx)
-uint get_immr(uint);
+static inline uint get_immr(uint mask)
+{
+       uint immr = mfspr(SPRN_IMMR);
+
+       return mask ? (immr & mask) : immr;
+}
 #endif
-uint get_pvr(void);
-uint get_svr(void);
-uint rd_ic_cst(void);
-void wr_ic_cst(uint);
-void wr_ic_adr(uint);
-uint rd_dc_cst(void);
-void wr_dc_cst(uint);
-void wr_dc_adr(uint);
+static inline uint get_pvr(void)
+{
+       return mfspr(PVR);
+}
+
+static inline uint get_svr(void)
+{
+       return mfspr(SVR);
+}
 
 #if defined(CONFIG_MPC85xx)    || \
        defined(CONFIG_MPC86xx) || \
@@ -96,6 +104,28 @@ static inline ulong get_ddr_freq(ulong dummy)
 ulong get_ddr_freq(ulong);
 #endif
 
+static inline unsigned long get_msr(void)
+{
+       unsigned long msr;
+
+       asm volatile ("mfmsr %0" : "=r" (msr) : );
+
+       return msr;
+}
+
+static inline void set_msr(unsigned long msr)
+{
+       asm volatile ("mtmsr %0" : : "r" (msr));
+}
+
+#ifdef CONFIG_CMD_REGINFO
+void print_reginfo(void);
+#endif
+
+int interrupt_init_cpu(unsigned *);
+void timer_interrupt_cpu(struct pt_regs *);
+unsigned long search_exception_table(unsigned long addr);
+
 #endif /* !__ASSEMBLY__ */
 
 #ifdef CONFIG_PPC
index 30ac4f8c10c2d190c3f54f3ab40196295a2a32d3..baf38f8441af302a6f021aff2c59849045e9713e 100644 (file)
 #define PVR_850                PVR_821
 #define PVR_860                PVR_821
 #define PVR_7400       0x000C0000
-#define PVR_8240       0x00810100
-
-/*
- * PowerQUICC II family processors report different PVR values depending
- * on silicon process (HiP3, HiP4, HiP7, etc.)
- */
-#define PVR_8260       PVR_8240
-#define PVR_8260_HIP3  0x00810101
-#define PVR_8260_HIP4  0x80811014
-#define PVR_8260_HIP7  0x80822011
-#define PVR_8260_HIP7R1 0x80822013
-#define PVR_8260_HIP7RA        0x80822014
 
 /*
  * MPC 52xx
@@ -1345,8 +1333,6 @@ void ll_puts(const char *);
 void _nmask_and_or_msr(unsigned long nmask, unsigned long or_val);
 
 int prt_83xx_rsr(void);
-int prt_8260_rsr(void);
-int prt_8260_clks(void);
 
 #endif /* ndef ASSEMBLY*/
 
index 42a6afbc31282cfb5260f93479586f897054c488..0e204027af21491b258010030cee9a688135ec47 100644 (file)
@@ -18,6 +18,8 @@
 #include <environment.h>
 #include <asm/byteorder.h>
 #include <asm/mp.h>
+#include <bootm.h>
+#include <vxworks.h>
 
 #if defined(CONFIG_OF_LIBFDT)
 #include <libfdt.h>
index 50313573fb92d6c795adbc25e96a0bda10c254c4..46fa18c63fb0bced53366522242b912eaa566e4f 100644 (file)
@@ -28,25 +28,8 @@ void __board_show_activity (ulong dummy)
 #define CONFIG_SYS_WATCHDOG_FREQ (CONFIG_SYS_HZ / 2)
 #endif
 
-extern int interrupt_init_cpu (unsigned *);
-extern void timer_interrupt_cpu (struct pt_regs *);
-
 static unsigned decrementer_count; /* count value for 1e6/HZ microseconds */
 
-static __inline__ unsigned long get_msr (void)
-{
-       unsigned long msr;
-
-       asm volatile ("mfmsr %0":"=r" (msr):);
-
-       return msr;
-}
-
-static __inline__ void set_msr (unsigned long msr)
-{
-       asm volatile ("mtmsr %0"::"r" (msr));
-}
-
 static __inline__ unsigned long get_dec (void)
 {
        unsigned long val;
index 88c2af21eb8663c4a361904aacfeb3363af2f211..aa16a00a42e7072eae32c46afc0cf6d219c5d1a4 100644 (file)
@@ -38,20 +38,6 @@ kgdb_longjmp(long *buf, int val)
             : "=&r"(temp) : "r" (buf), "r" (val));
 }
 
-static inline unsigned long
-get_msr(void)
-{
-       unsigned long msr;
-       asm volatile("mfmsr %0" : "=r" (msr):);
-       return msr;
-}
-
-static inline void
-set_msr(unsigned long msr)
-{
-       asm volatile("mtmsr %0" : : "r" (msr));
-}
-
 /* Convert the SPARC hardware trap type code to a unix signal number. */
 /*
  * This table contains the mapping between PowerPC hardware trap types, and
index 41a271a42de242380002586f715a39ba75482fe5..c43f254481a3c8a9ee4fdb1ca6dd12c527bf4396 100644 (file)
@@ -65,21 +65,10 @@ int timer_init(void)
 {
        unsigned long temp;
 
-#if defined(CONFIG_8xx)
-       immap_t __iomem *immap = (immap_t __iomem *)CONFIG_SYS_IMMR;
-
-       /* unlock */
-       out_be32(&immap->im_sitk.sitk_tbk, KAPWR_KEY);
-#endif
-
        /* reset */
-       asm volatile("li %0,0 ; mttbu %0 ; mttbl %0;"
+       asm volatile("li %0,0 ; mttbl %0 ; mttbu %0;"
             : "=&r"(temp) );
 
-#if defined(CONFIG_8xx)
-       /* enable */
-       setbits_be16(&immap->im_sit.sit_tbscr, TBSCR_TBE);
-#endif
        return (0);
 }
 /* ------------------------------------------------------------------------- */
index 7243bfc1b1fdc9b2881323975bfff1d5c61c5a53..22d6aab5348130d2f5dc1b7778051a2facff075a 100644 (file)
@@ -413,17 +413,6 @@ int os_get_filesize(const char *fname, loff_t *size)
        return 0;
 }
 
-void os_putc(int ch)
-{
-       putchar(ch);
-}
-
-void os_puts(const char *str)
-{
-       while (*str)
-               os_putc(*str++);
-}
-
 int os_write_ram_buf(const char *fname)
 {
        struct sandbox_state *state = state_get_current();
index f605d4d61eac864ac2bf1f593416e4ad2dfdaadc..00742fd95e22636f2474960b339ae438f260770b 100644 (file)
@@ -310,7 +310,7 @@ int main(int argc, char *argv[])
 
        memset(&data, '\0', sizeof(data));
        gd = &data;
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        gd->malloc_base = CONFIG_MALLOC_F_ADDR;
 #endif
        setup_ram_buf(state);
index 6ac22af2f149054d2208e02b2a3743bc087a22f3..1d40fe6845e31065eb6c182b5fbbd5fbf73ae5ab 100644 (file)
@@ -3,13 +3,16 @@ menu "SuperH architecture"
 
 config CPU_SH2
        bool
+       imply ENV_IS_IN_FLASH
 
 config CPU_SH2A
        bool
        select CPU_SH2
+       imply ENV_IS_IN_FLASH
 
 config CPU_SH3
        bool
+       imply ENV_IS_IN_FLASH
 
 config CPU_SH4
        bool
index 0cd981e73e43f7293a83f71ea2056ac185c0f1ff..5c8dc822efbcf81031d1482edff3b8afe10af2ee 100644 (file)
@@ -114,6 +114,7 @@ source "arch/x86/cpu/ivybridge/Kconfig"
 source "arch/x86/cpu/qemu/Kconfig"
 source "arch/x86/cpu/quark/Kconfig"
 source "arch/x86/cpu/queensbay/Kconfig"
+source "arch/x86/cpu/tangier/Kconfig"
 
 # architecture-specific options below
 
index e1c84ce097addc330228cd3284b56333653e5193..999429e62b197c5d64c29302704239eb11a3d6f2 100644 (file)
@@ -34,6 +34,7 @@ obj-$(CONFIG_QEMU) += qemu/
 obj-$(CONFIG_NORTHBRIDGE_INTEL_IVYBRIDGE) += ivybridge/
 obj-$(CONFIG_INTEL_QUARK) += quark/
 obj-$(CONFIG_INTEL_QUEENSBAY) += queensbay/
+obj-$(CONFIG_INTEL_TANGIER) += tangier/
 obj-y += lapic.o ioapic.o
 obj-y += irq.o
 ifndef CONFIG_$(SPL_)X86_64
index 6c851864861bcb6eadfb9a44ee3adb27b91225d8..4e7d4a4e25ad9b88aa4c56b31fb3dec39f98afa9 100644 (file)
@@ -7,6 +7,7 @@
 config INTEL_BAYTRAIL
        bool
        select HAVE_FSP if !EFI
+       imply ENV_IS_IN_SPI_FLASH
 
 if INTEL_BAYTRAIL
 config INTERNAL_UART
index 55ed7de781fd4cfcbc1b1d3f03bf13f944165b45..cbefdf871dcbfb1b9842a1bc63f0c412818b2c67 100644 (file)
@@ -11,8 +11,6 @@
 #include <asm/acpi_s3.h>
 #include <asm/acpi_table.h>
 #include <asm/io.h>
-#include <asm/ioapic.h>
-#include <asm/mpspec.h>
 #include <asm/tables.h>
 #include <asm/arch/global_nvs.h>
 #include <asm/arch/iomap.h>
@@ -141,33 +139,6 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
        header->checksum = table_compute_checksum(fadt, header->length);
 }
 
-static int acpi_create_madt_irq_overrides(u32 current)
-{
-       struct acpi_madt_irqoverride *irqovr;
-       u16 sci_flags = MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_HIGH;
-       int length = 0;
-
-       irqovr = (void *)current;
-       length += acpi_create_madt_irqoverride(irqovr, 0, 0, 2, 0);
-
-       irqovr = (void *)(current + length);
-       length += acpi_create_madt_irqoverride(irqovr, 0, 9, 9, sci_flags);
-
-       return length;
-}
-
-u32 acpi_fill_madt(u32 current)
-{
-       current += acpi_create_madt_lapics(current);
-
-       current += acpi_create_madt_ioapic((struct acpi_madt_ioapic *)current,
-                       io_apic_read(IO_APIC_ID) >> 24, IO_APIC_ADDR, 0);
-
-       current += acpi_create_madt_irq_overrides(current);
-
-       return current;
-}
-
 void acpi_create_gnvs(struct acpi_global_nvs *gnvs)
 {
        struct udevice *dev;
index 3968f7a8bfe0111d7902cfbb32e47412d44ad674..5717a620b582c12d0b091ee5aa004cfeb03a3eb2 100644 (file)
@@ -6,8 +6,6 @@
 
 #include <common.h>
 #include <asm/acpi_table.h>
-#include <asm/ioapic.h>
-#include <asm/mpspec.h>
 #include <asm/tables.h>
 #include <asm/arch/global_nvs.h>
 #include <asm/arch/iomap.h>
@@ -136,33 +134,6 @@ void acpi_create_fadt(struct acpi_fadt *fadt, struct acpi_facs *facs,
        header->checksum = table_compute_checksum(fadt, header->length);
 }
 
-static int acpi_create_madt_irq_overrides(u32 current)
-{
-       struct acpi_madt_irqoverride *irqovr;
-       u16 sci_flags = MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_HIGH;
-       int length = 0;
-
-       irqovr = (void *)current;
-       length += acpi_create_madt_irqoverride(irqovr, 0, 0, 2, 0);
-
-       irqovr = (void *)(current + length);
-       length += acpi_create_madt_irqoverride(irqovr, 0, 9, 9, sci_flags);
-
-       return length;
-}
-
-u32 acpi_fill_madt(u32 current)
-{
-       current += acpi_create_madt_lapics(current);
-
-       current += acpi_create_madt_ioapic((struct acpi_madt_ioapic *)current,
-                       io_apic_read(IO_APIC_ID) >> 24, IO_APIC_ADDR, 0);
-
-       current += acpi_create_madt_irq_overrides(current);
-
-       return current;
-}
-
 void acpi_create_gnvs(struct acpi_global_nvs *gnvs)
 {
        /* quark is a uni-processor */
diff --git a/arch/x86/cpu/tangier/Kconfig b/arch/x86/cpu/tangier/Kconfig
new file mode 100644 (file)
index 0000000..b67c6a7
--- /dev/null
@@ -0,0 +1,24 @@
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+config INTEL_TANGIER
+       bool
+       depends on INTEL_MID
+
+config SYS_CAR_ADDR
+       hex
+       default 0x19200000
+
+config SYS_CAR_SIZE
+       hex
+       default 0x4000
+       help
+         Space in bytes in eSRAM used as Cache-As-RAM (CAR).
+         Note this size must not exceed eSRAM's total size.
+
+config SYS_USB_OTG_BASE
+       hex
+       default 0xf9100000
diff --git a/arch/x86/cpu/tangier/Makefile b/arch/x86/cpu/tangier/Makefile
new file mode 100644 (file)
index 0000000..d146b3f
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y += car.o tangier.o sdram.o
diff --git a/arch/x86/cpu/tangier/car.S b/arch/x86/cpu/tangier/car.S
new file mode 100644 (file)
index 0000000..6982106
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2010-2011
+ * Graeme Russ, <graeme.russ@gmail.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+.section .text
+
+.globl car_init
+car_init:
+       jmp     car_init_ret
diff --git a/arch/x86/cpu/tangier/sdram.c b/arch/x86/cpu/tangier/sdram.c
new file mode 100644 (file)
index 0000000..5743077
--- /dev/null
@@ -0,0 +1,206 @@
+/*
+ * Copyright (c) 2017 Intel Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/e820.h>
+#include <asm/global_data.h>
+#include <asm/sfi.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * SFI tables are part of the first stage bootloader.
+ *
+ * U-Boot finds the System Table by searching 16-byte boundaries between
+ * physical address 0x000E0000 and 0x000FFFFF. U-Boot shall search this region
+ * starting at the low address and shall stop searching when the 1st valid SFI
+ * System Table is found.
+ */
+#define SFI_BASE_ADDR          0x000E0000
+#define SFI_LENGTH             0x00020000
+#define SFI_TABLE_LENGTH       16
+
+static int sfi_table_check(struct sfi_table_header *sbh)
+{
+       char chksum = 0;
+       char *pos = (char *)sbh;
+       u32 i;
+
+       if (sbh->len < SFI_TABLE_LENGTH)
+               return -ENXIO;
+
+       if (sbh->len > SFI_LENGTH)
+               return -ENXIO;
+
+       for (i = 0; i < sbh->len; i++)
+               chksum += *pos++;
+
+       if (chksum)
+               error("sfi: Invalid checksum\n");
+
+       /* Checksum is OK if zero */
+       return chksum ? -EILSEQ : 0;
+}
+
+static int sfi_table_is_type(struct sfi_table_header *sbh, const char *signature)
+{
+       return !strncmp(sbh->sig, signature, SFI_SIGNATURE_SIZE) &&
+              !sfi_table_check(sbh);
+}
+
+static struct sfi_table_simple *sfi_get_table_by_sig(unsigned long addr,
+                                                    const char *signature)
+{
+       struct sfi_table_simple *sb;
+       u32 i;
+
+       for (i = 0; i < SFI_LENGTH; i += SFI_TABLE_LENGTH) {
+               sb = (struct sfi_table_simple *)(addr + i);
+               if (sfi_table_is_type(&sb->header, signature))
+                       return sb;
+       }
+
+       return NULL;
+}
+
+static struct sfi_table_simple *sfi_search_mmap(void)
+{
+       struct sfi_table_header *sbh;
+       struct sfi_table_simple *sb;
+       u32 sys_entry_cnt;
+       u32 i;
+
+       /* Find SYST table */
+       sb = sfi_get_table_by_sig(SFI_BASE_ADDR, SFI_SIG_SYST);
+       if (!sb) {
+               error("sfi: failed to locate SYST table\n");
+               return NULL;
+       }
+
+       sys_entry_cnt = (sb->header.len - sizeof(*sbh)) / 8;
+
+       /* Search through each SYST entry for MMAP table */
+       for (i = 0; i < sys_entry_cnt; i++) {
+               sbh = (struct sfi_table_header *)(unsigned long)sb->pentry[i];
+
+               if (sfi_table_is_type(sbh, SFI_SIG_MMAP))
+                       return (struct sfi_table_simple *)sbh;
+       }
+
+       error("sfi: failed to locate SFI MMAP table\n");
+       return NULL;
+}
+
+#define sfi_for_each_mentry(i, sb, mentry)                             \
+       for (i = 0, mentry = (struct sfi_mem_entry *)sb->pentry;        \
+            i < SFI_GET_NUM_ENTRIES(sb, struct sfi_mem_entry);         \
+            i++, mentry++)                                             \
+
+static unsigned sfi_setup_e820(unsigned max_entries, struct e820entry *entries)
+{
+       struct sfi_table_simple *sb;
+       struct sfi_mem_entry *mentry;
+       unsigned long long start, end, size;
+       int type, total = 0;
+       u32 i;
+
+       sb = sfi_search_mmap();
+       if (!sb)
+               return 0;
+
+       sfi_for_each_mentry(i, sb, mentry) {
+               start = mentry->phys_start;
+               size = mentry->pages << 12;
+               end = start + size;
+
+               if (start > end)
+                       continue;
+
+               /* translate SFI mmap type to E820 map type */
+               switch (mentry->type) {
+               case SFI_MEM_CONV:
+                       type = E820_RAM;
+                       break;
+               case SFI_MEM_UNUSABLE:
+               case SFI_RUNTIME_SERVICE_DATA:
+                       continue;
+               default:
+                       type = E820_RESERVED;
+               }
+
+               if (total == E820MAX)
+                       break;
+               entries[total].addr = start;
+               entries[total].size = size;
+               entries[total].type = type;
+
+               total++;
+       }
+
+       return total;
+}
+
+static int sfi_get_bank_size(void)
+{
+       struct sfi_table_simple *sb;
+       struct sfi_mem_entry *mentry;
+       int bank = 0;
+       u32 i;
+
+       sb = sfi_search_mmap();
+       if (!sb)
+               return 0;
+
+       sfi_for_each_mentry(i, sb, mentry) {
+               if (mentry->type != SFI_MEM_CONV)
+                       continue;
+
+               gd->bd->bi_dram[bank].start = mentry->phys_start;
+               gd->bd->bi_dram[bank].size = mentry->pages << 12;
+               bank++;
+       }
+
+       return bank;
+}
+
+static phys_size_t sfi_get_ram_size(void)
+{
+       struct sfi_table_simple *sb;
+       struct sfi_mem_entry *mentry;
+       phys_size_t ram = 0;
+       u32 i;
+
+       sb = sfi_search_mmap();
+       if (!sb)
+               return 0;
+
+       sfi_for_each_mentry(i, sb, mentry) {
+               if (mentry->type != SFI_MEM_CONV)
+                       continue;
+
+               ram += mentry->pages << 12;
+       }
+
+       debug("sfi: RAM size %llu\n", ram);
+       return ram;
+}
+
+unsigned install_e820_map(unsigned max_entries, struct e820entry *entries)
+{
+       return sfi_setup_e820(max_entries, entries);
+}
+
+int dram_init_banksize(void)
+{
+       sfi_get_bank_size();
+       return 0;
+}
+
+int dram_init(void)
+{
+       gd->ram_size = sfi_get_ram_size();
+       return 0;
+}
diff --git a/arch/x86/cpu/tangier/tangier.c b/arch/x86/cpu/tangier/tangier.c
new file mode 100644 (file)
index 0000000..20d6c60
--- /dev/null
@@ -0,0 +1,34 @@
+/*
+ * Copyright (c) 2017 Intel Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/scu.h>
+#include <asm/u-boot-x86.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * Miscellaneous platform dependent initializations
+ */
+int arch_cpu_init(void)
+{
+       return x86_cpu_init_f();
+}
+
+int checkcpu(void)
+{
+       return 0;
+}
+
+int print_cpuinfo(void)
+{
+       return default_print_cpuinfo();
+}
+
+void reset_cpu(ulong addr)
+{
+       scu_ipc_simple_command(IPCMSG_COLD_RESET, 0);
+}
index 3f534ad40a66674d2340d067f860c22bd6d656e6..6589495f2317b5344e306f69ba2a9b92d276b70b 100644 (file)
@@ -10,6 +10,7 @@ dtb-y += bayleybay.dtb \
        cougarcanyon2.dtb \
        crownbay.dtb \
        dfi-bt700-q7x-151.dtb \
+       edison.dtb \
        efi.dtb \
        galileo.dtb \
        minnowmax.dtb \
index ae11ccc25ab0ac7e7aaaf7833023ae0b6b873a43..9c068709eec57def52c8e1c50eb1a52661d1e194 100644 (file)
                fsp,enable-spi;
                fsp,enable-sata;
                fsp,sata-mode = <SATA_MODE_AHCI>;
+#ifdef CONFIG_USB_XHCI_HCD
+               fsp,enable-xhci;
+#endif
                fsp,lpe-mode = <LPE_MODE_PCI>;
                fsp,lpss-sio-mode = <LPSS_SIO_MODE_PCI>;
                fsp,enable-dma0;
index 04aa95ad52f0018800e952ca2aa276f67926154a..b62e00ff1fd74a0c1d340aba4d21688d64774c22 100644 (file)
                        pad-offset = <0x3a0>;
                        mode-func = <1>;
                };
+
+               xhci_hub_reset: usb_ulpi_stp@0 {
+                       gpio-offset = <0xa0 10>;
+                       pad-offset = <0x23b0>;
+                       mode-func = <0>;
+                       mode-gpio;
+                       output-value = <1>;
+                       direction = <PIN_OUTPUT>;
+               };
        };
 
        chosen {
                fsp,enable-spi;
                fsp,enable-sata;
                fsp,sata-mode = <SATA_MODE_AHCI>;
+#ifdef CONFIG_USB_XHCI_HCD
+               fsp,enable-xhci;
+#endif
                fsp,lpe-mode = <LPE_MODE_PCI>;
                fsp,lpss-sio-mode = <LPSS_SIO_MODE_PCI>;
                fsp,enable-dma0;
diff --git a/arch/x86/dts/edison.dts b/arch/x86/dts/edison.dts
new file mode 100644 (file)
index 0000000..0b04984
--- /dev/null
@@ -0,0 +1,89 @@
+/*
+ * Copyright (c) 2017 Intel Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/dts-v1/;
+
+#include <dt-bindings/gpio/x86-gpio.h>
+#include <dt-bindings/interrupt-router/intel-irq.h>
+
+/include/ "skeleton.dtsi"
+/include/ "rtc.dtsi"
+/include/ "tsc_timer.dtsi"
+
+/ {
+       model = "Intel Edison";
+       compatible = "intel,edison";
+
+       aliases {
+               serial0 = &serial0;
+       };
+
+       chosen {
+               stdout-path = &serial0;
+       };
+
+       cpus {
+               #address-cells = <1>;
+               #size-cells = <0>;
+
+               cpu@0 {
+                       device_type = "cpu";
+                       compatible = "cpu-x86";
+                       reg = <0>;
+                       intel,apic-id = <0>;
+               };
+
+               cpu@1 {
+                       device_type = "cpu";
+                       compatible = "cpu-x86";
+                       reg = <1>;
+                       intel,apic-id = <2>;
+               };
+       };
+
+       pci {
+               compatible = "pci-x86";
+               #address-cells = <3>;
+               #size-cells = <2>;
+               u-boot,dm-pre-reloc;
+               ranges = <0x02000000 0x0 0x80000000 0x80000000 0 0x40000000
+                         0x42000000 0x0 0xc0000000 0xc0000000 0 0x20000000
+                         0x01000000 0x0 0x2000 0x2000 0 0xe000>;
+       };
+
+       serial0: serial@ff010180 {
+               compatible = "intel,mid-uart";
+               reg = <0xff010180 0x100>;
+               reg-shift = <0>;
+               clock-frequency = <29491200>;
+               current-speed = <115200>;
+       };
+
+       emmc: mmc@ff3fc000 {
+               compatible = "intel,sdhci-tangier";
+               reg = <0xff3fc000 0x1000>;
+       };
+
+/*
+ * FIXME: For now U-Boot DM model doesn't allow to power up this controller.
+ * Enabling it will make U-Boot hang.
+ *
+       sdcard: mmc@ff3fa000 {
+               compatible = "intel,sdhci-tangier";
+               reg = <0xff3fa000 0x1000>;
+       };
+ */
+
+       pmu: power@ff00b000 {
+               compatible = "intel,pmu-mid";
+               reg = <0xff00b000 0x1000>;
+       };
+
+       scu: ipc@ff009000 {
+               compatible = "intel,scu-ipc";
+               reg = <0xff009000 0x1000>;
+       };
+};
index 4c0a8fe26f2df8ee2b20788cdd4e5f81d423fa94..a0ad03ce23973384060033d6f495f7dfbb43dabf 100644 (file)
                fsp,enable-spi;
                fsp,enable-sata;
                fsp,sata-mode = <SATA_MODE_AHCI>;
+#ifdef CONFIG_USB_XHCI_HCD
+               fsp,enable-xhci;
+#endif
                fsp,lpe-mode = <LPE_MODE_PCI>;
                fsp,lpss-sio-mode = <LPSS_SIO_MODE_PCI>;
                fsp,enable-dma0;
index dd7a946b6c44c6b09fb66ae8133cffd210b50afd..80038504ddb8a2388995f6a5a7883ccb50e3b9cd 100644 (file)
@@ -178,9 +178,8 @@ struct __packed acpi_fadt {
        u32 flags;
        struct acpi_gen_regaddr reset_reg;
        u8 reset_value;
-       u8 res3;
-       u8 res4;
-       u8 res5;
+       u16 arm_boot_arch;
+       u8 minor_revision;
        u32 x_firmware_ctl_l;
        u32 x_firmware_ctl_h;
        u32 x_dsdt_l;
@@ -315,6 +314,9 @@ int acpi_create_madt_irqoverride(struct acpi_madt_irqoverride *irqoverride,
 int acpi_create_madt_lapic_nmi(struct acpi_madt_lapic_nmi *lapic_nmi,
                               u8 cpu, u16 flags, u8 lint);
 u32 acpi_fill_madt(u32 current);
+int acpi_create_mcfg_mmconfig(struct acpi_mcfg_mmconfig *mmconfig, u32 base,
+                             u16 seg_nr, u8 start, u8 end);
+u32 acpi_fill_mcfg(u32 current);
 void acpi_create_gnvs(struct acpi_global_nvs *gnvs);
 /**
  * enter_acpi_mode() - enter into ACPI mode
diff --git a/arch/x86/include/asm/dma-mapping.h b/arch/x86/include/asm/dma-mapping.h
new file mode 100644 (file)
index 0000000..7de4c08
--- /dev/null
@@ -0,0 +1,41 @@
+/*
+ * (C) Copyright 2007
+ * Stelian Pop <stelian@popies.net>
+ * Lead Tech Design <www.leadtechdesign.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#ifndef __ASM_X86_DMA_MAPPING_H
+#define __ASM_X86_DMA_MAPPING_H
+
+#define        dma_mapping_error(x, y) 0
+
+enum dma_data_direction {
+       DMA_BIDIRECTIONAL       = 0,
+       DMA_TO_DEVICE           = 1,
+       DMA_FROM_DEVICE         = 2,
+};
+
+static inline void *dma_alloc_coherent(size_t len, unsigned long *handle)
+{
+       *handle = (unsigned long)memalign(ARCH_DMA_MINALIGN, len);
+       return (void *)*handle;
+}
+
+static inline void dma_free_coherent(void *addr)
+{
+       free(addr);
+}
+
+static inline unsigned long dma_map_single(volatile void *vaddr, size_t len,
+                                          enum dma_data_direction dir)
+{
+       return (unsigned long)vaddr;
+}
+
+static inline void dma_unmap_single(volatile void *vaddr, size_t len,
+                                   unsigned long paddr)
+{
+}
+
+#endif /* __ASM_X86_DMA_MAPPING_H */
index d6c44c978a9184fb788991d90755c3b0ecc4e6b2..6c6ebeade8c97a8e881090c3b4c01911abc783c5 100644 (file)
@@ -60,6 +60,25 @@ struct __packed sfi_mem_entry {
        u64     attrib;
 };
 
+/* Memory type definitions */
+enum sfi_mem_type {
+       SFI_MEM_RESERVED,
+       SFI_LOADER_CODE,
+       SFI_LOADER_DATA,
+       SFI_BOOT_SERVICE_CODE,
+       SFI_BOOT_SERVICE_DATA,
+       SFI_RUNTIME_SERVICE_CODE,
+       SFI_RUNTIME_SERVICE_DATA,
+       SFI_MEM_CONV,
+       SFI_MEM_UNUSABLE,
+       SFI_ACPI_RECLAIM,
+       SFI_ACPI_NVS,
+       SFI_MEM_MMIO,
+       SFI_MEM_IOPORT,
+       SFI_PAL_CODE,
+       SFI_MEM_TYPEMAX,
+};
+
 struct __packed sfi_cpu_table_entry {
        u32     apic_id;
 };
index 01d5b6fff09329bf6a741d50a1e4fcde1d7f7a20..3eb101105b8228ef5f0cea744ee3f55012a27142 100644 (file)
 #include <cpu.h>
 #include <dm.h>
 #include <dm/uclass-internal.h>
+#include <version.h>
 #include <asm/acpi/global_nvs.h>
 #include <asm/acpi_table.h>
 #include <asm/io.h>
+#include <asm/ioapic.h>
 #include <asm/lapic.h>
+#include <asm/mpspec.h>
 #include <asm/tables.h>
 #include <asm/arch/global_nvs.h>
 
@@ -60,6 +63,7 @@ void acpi_fill_header(struct acpi_table_header *header, char *signature)
        memcpy(header->signature, signature, 4);
        memcpy(header->oem_id, OEM_ID, 6);
        memcpy(header->oem_table_id, OEM_TABLE_ID, 8);
+       header->oem_revision = U_BOOT_BUILD_DATE;
        memcpy(header->aslc_id, ASLC_ID, 4);
 }
 
@@ -239,6 +243,33 @@ int acpi_create_madt_lapic_nmi(struct acpi_madt_lapic_nmi *lapic_nmi,
        return lapic_nmi->length;
 }
 
+static int acpi_create_madt_irq_overrides(u32 current)
+{
+       struct acpi_madt_irqoverride *irqovr;
+       u16 sci_flags = MP_IRQ_TRIGGER_LEVEL | MP_IRQ_POLARITY_HIGH;
+       int length = 0;
+
+       irqovr = (void *)current;
+       length += acpi_create_madt_irqoverride(irqovr, 0, 0, 2, 0);
+
+       irqovr = (void *)(current + length);
+       length += acpi_create_madt_irqoverride(irqovr, 0, 9, 9, sci_flags);
+
+       return length;
+}
+
+__weak u32 acpi_fill_madt(u32 current)
+{
+       current += acpi_create_madt_lapics(current);
+
+       current += acpi_create_madt_ioapic((struct acpi_madt_ioapic *)current,
+                       io_apic_read(IO_APIC_ID) >> 24, IO_APIC_ADDR, 0);
+
+       current += acpi_create_madt_irq_overrides(current);
+
+       return current;
+}
+
 static void acpi_create_madt(struct acpi_madt *madt)
 {
        struct acpi_table_header *header = &(madt->header);
@@ -262,8 +293,8 @@ static void acpi_create_madt(struct acpi_madt *madt)
        header->checksum = table_compute_checksum((void *)madt, header->length);
 }
 
-static int acpi_create_mcfg_mmconfig(struct acpi_mcfg_mmconfig *mmconfig,
-                                    u32 base, u16 seg_nr, u8 start, u8 end)
+int acpi_create_mcfg_mmconfig(struct acpi_mcfg_mmconfig *mmconfig, u32 base,
+                             u16 seg_nr, u8 start, u8 end)
 {
        memset(mmconfig, 0, sizeof(*mmconfig));
        mmconfig->base_address_l = base;
@@ -275,7 +306,7 @@ static int acpi_create_mcfg_mmconfig(struct acpi_mcfg_mmconfig *mmconfig,
        return sizeof(struct acpi_mcfg_mmconfig);
 }
 
-static u32 acpi_fill_mcfg(u32 current)
+__weak u32 acpi_fill_mcfg(u32 current)
 {
        current += acpi_create_mcfg_mmconfig
                ((struct acpi_mcfg_mmconfig *)current,
@@ -432,6 +463,10 @@ ulong write_acpi_tables(ulong start)
 
        debug("ACPI: done\n");
 
+       /* Don't touch ACPI hardware on HW reduced platforms */
+       if (fadt->flags & ACPI_FADT_HW_REDUCED_ACPI)
+               return current;
+
        /*
         * Other than waiting for OSPM to request us to switch to ACPI mode,
         * do it by ourselves, since SMI will not be triggered.
index e8c64018eb23dbe9250925c9d4a55a8a787bc873..c3a56db76a69aab37a6ad26aa9dcdd4e22566fb7 100644 (file)
@@ -259,7 +259,8 @@ static int load_devicetree(void)
        }
 #ifdef CONFIG_NAND
        dtbsize = 0x20000;
-       rc = nand_read_skip_bad(nand_info[0], 0x40000, (size_t *)&dtbsize,
+       rc = nand_read_skip_bad(get_nand_dev_by_index(0), 0x40000,
+                               (size_t *)&dtbsize,
                                NULL, 0x20000, (u_char *)dtbaddr);
 #else
        char *dtbname = getenv("dtb");
diff --git a/board/CZ.NIC/turris_omnia/Makefile b/board/CZ.NIC/turris_omnia/Makefile
new file mode 100644 (file)
index 0000000..f2ae506
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Copyright (C) 2017 Marek Behun <marek.behun@nic.cz>
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := turris_omnia.o
diff --git a/board/CZ.NIC/turris_omnia/kwbimage.cfg b/board/CZ.NIC/turris_omnia/kwbimage.cfg
new file mode 100644 (file)
index 0000000..cc05792
--- /dev/null
@@ -0,0 +1,12 @@
+#
+# Copyright (C) 2014 Stefan Roese <sr@denx.de>
+#
+
+# Armada XP uses version 1 image format
+VERSION                1
+
+# Boot Media configurations
+BOOT_FROM      spi
+
+# Binary Header (bin_hdr) with DDR3 training code
+BINARY spl/u-boot-spl.bin 0000005b 00000068
diff --git a/board/CZ.NIC/turris_omnia/turris_omnia.c b/board/CZ.NIC/turris_omnia/turris_omnia.c
new file mode 100644 (file)
index 0000000..86926f8
--- /dev/null
@@ -0,0 +1,530 @@
+/*
+ * Copyright (C) 2017 Marek Behun <marek.behun@nic.cz>
+ * Copyright (C) 2016 Tomas Hlavacek <tomas.hlavacek@nic.cz>
+ *
+ * Derived from the code for
+ *   Marvell/db-88f6820-gp by Stefan Roese <sr@denx.de>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <i2c.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <asm/io.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/soc.h>
+#include <dm/uclass.h>
+#include <fdt_support.h>
+#include <time.h>
+
+#ifdef CONFIG_ATSHA204A
+# include <atsha204a-i2c.h>
+#endif
+
+#ifdef CONFIG_WDT_ORION
+# include <wdt.h>
+#endif
+
+#include "../drivers/ddr/marvell/a38x/ddr3_a38x_topology.h"
+#include <../serdes/a38x/high_speed_env_spec.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define OMNIA_I2C_EEPROM_DM_NAME       "i2c@0"
+#define OMNIA_I2C_EEPROM               0x54
+#define OMNIA_I2C_EEPROM_CONFIG_ADDR   0x0
+#define OMNIA_I2C_EEPROM_ADDRLEN       2
+#define OMNIA_I2C_EEPROM_MAGIC         0x0341a034
+
+#define OMNIA_I2C_MCU_DM_NAME          "i2c@0"
+#define OMNIA_I2C_MCU_ADDR_STATUS      0x1
+#define OMNIA_I2C_MCU_SATA             0x20
+#define OMNIA_I2C_MCU_CARDDET          0x10
+#define OMNIA_I2C_MCU                  0x2a
+#define OMNIA_I2C_MCU_WDT_ADDR         0x0b
+
+#define OMNIA_ATSHA204_OTP_VERSION     0
+#define OMNIA_ATSHA204_OTP_SERIAL      1
+#define OMNIA_ATSHA204_OTP_MAC0                3
+#define OMNIA_ATSHA204_OTP_MAC1                4
+
+#define MVTWSI_ARMADA_DEBUG_REG                0x8c
+
+/*
+ * Those values and defines are taken from the Marvell U-Boot version
+ * "u-boot-2013.01-2014_T3.0"
+ */
+#define OMNIA_GPP_OUT_ENA_LOW                                  \
+       (~(BIT(1)  | BIT(4)  | BIT(6)  | BIT(7)  | BIT(8)  | BIT(9)  |  \
+          BIT(10) | BIT(11) | BIT(19) | BIT(22) | BIT(23) | BIT(25) |  \
+          BIT(26) | BIT(27) | BIT(29) | BIT(30) | BIT(31)))
+#define OMNIA_GPP_OUT_ENA_MID                                  \
+       (~(BIT(0) | BIT(1) | BIT(2) | BIT(3) | BIT(4) | BIT(15) |       \
+          BIT(16) | BIT(17) | BIT(18)))
+
+#define OMNIA_GPP_OUT_VAL_LOW  0x0
+#define OMNIA_GPP_OUT_VAL_MID  0x0
+#define OMNIA_GPP_POL_LOW      0x0
+#define OMNIA_GPP_POL_MID      0x0
+
+static struct serdes_map board_serdes_map_pex[] = {
+       {PEX0, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
+       {USB3_HOST0, SERDES_SPEED_5_GBPS, SERDES_DEFAULT_MODE, 0, 0},
+       {PEX1, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
+       {USB3_HOST1, SERDES_SPEED_5_GBPS, SERDES_DEFAULT_MODE, 0, 0},
+       {PEX2, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
+       {SGMII2, SERDES_SPEED_1_25_GBPS, SERDES_DEFAULT_MODE, 0, 0}
+};
+
+static struct serdes_map board_serdes_map_sata[] = {
+       {SATA0, SERDES_SPEED_6_GBPS, SERDES_DEFAULT_MODE, 0, 0},
+       {USB3_HOST0, SERDES_SPEED_5_GBPS, SERDES_DEFAULT_MODE, 0, 0},
+       {PEX1, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
+       {USB3_HOST1, SERDES_SPEED_5_GBPS, SERDES_DEFAULT_MODE, 0, 0},
+       {PEX2, SERDES_SPEED_5_GBPS, PEX_ROOT_COMPLEX_X1, 0, 0},
+       {SGMII2, SERDES_SPEED_1_25_GBPS, SERDES_DEFAULT_MODE, 0, 0}
+};
+
+static bool omnia_detect_sata(void)
+{
+       struct udevice *bus, *dev;
+       int ret;
+       u16 mode;
+
+       puts("SERDES0 card detect: ");
+
+       if (uclass_get_device_by_name(UCLASS_I2C, OMNIA_I2C_MCU_DM_NAME, &bus)) {
+               puts("Cannot find MCU bus!\n");
+               return false;
+       }
+
+       ret = i2c_get_chip(bus, OMNIA_I2C_MCU, 1, &dev);
+       if (ret) {
+               puts("Cannot get MCU chip!\n");
+               return false;
+       }
+
+       ret = dm_i2c_read(dev, OMNIA_I2C_MCU_ADDR_STATUS, (uchar *) &mode, 2);
+       if (ret) {
+               puts("I2C read failed! Default PEX\n");
+               return false;
+       }
+
+       if (!(mode & OMNIA_I2C_MCU_CARDDET)) {
+               puts("NONE\n");
+               return false;
+       }
+
+       if (mode & OMNIA_I2C_MCU_SATA) {
+               puts("SATA\n");
+               return true;
+       } else {
+               puts("PEX\n");
+               return false;
+       }
+}
+
+int hws_board_topology_load(struct serdes_map **serdes_map_array, u8 *count)
+{
+       if (omnia_detect_sata()) {
+               *serdes_map_array = board_serdes_map_sata;
+               *count = ARRAY_SIZE(board_serdes_map_sata);
+       } else {
+               *serdes_map_array = board_serdes_map_pex;
+               *count = ARRAY_SIZE(board_serdes_map_pex);
+       }
+
+       return 0;
+}
+
+struct omnia_eeprom {
+       u32 magic;
+       u32 ramsize;
+       char region[4];
+       u32 crc;
+};
+
+static bool omnia_read_eeprom(struct omnia_eeprom *oep)
+{
+       struct udevice *bus, *dev;
+       int ret, crc, retry = 3;
+
+       if (uclass_get_device_by_name(UCLASS_I2C, OMNIA_I2C_EEPROM_DM_NAME, &bus)) {
+               puts("Cannot find EEPROM bus\n");
+               return false;
+       }
+
+       ret = i2c_get_chip(bus, OMNIA_I2C_EEPROM, OMNIA_I2C_EEPROM_ADDRLEN, &dev);
+       if (ret) {
+               puts("Cannot get EEPROM chip\n");
+               return false;
+       }
+
+       for (; retry > 0; --retry) {
+               ret = dm_i2c_read(dev, OMNIA_I2C_EEPROM_CONFIG_ADDR, (uchar *) oep, sizeof(struct omnia_eeprom));
+               if (ret)
+                       continue;
+
+               if (oep->magic != OMNIA_I2C_EEPROM_MAGIC) {
+                       puts("I2C EEPROM missing magic number!\n");
+                       continue;
+               }
+
+               crc = crc32(0, (unsigned char *) oep,
+                           sizeof(struct omnia_eeprom) - 4);
+               if (crc == oep->crc) {
+                       break;
+               } else {
+                       printf("CRC of EEPROM memory config failed! "
+                              "calc=0x%04x saved=0x%04x\n", crc, oep->crc);
+               }
+       }
+
+       if (!retry) {
+               puts("I2C EEPROM read failed!\n");
+               return false;
+       }
+
+       return true;
+}
+
+/*
+ * Define the DDR layout / topology here in the board file. This will
+ * be used by the DDR3 init code in the SPL U-Boot version to configure
+ * the DDR3 controller.
+ */
+static struct hws_topology_map board_topology_map_1g = {
+       0x1, /* active interfaces */
+       /* cs_mask, mirror, dqs_swap, ck_swap X PUPs */
+       { { { {0x1, 0, 0, 0},
+             {0x1, 0, 0, 0},
+             {0x1, 0, 0, 0},
+             {0x1, 0, 0, 0},
+             {0x1, 0, 0, 0} },
+           SPEED_BIN_DDR_1600K,        /* speed_bin */
+           BUS_WIDTH_16,               /* memory_width */
+           MEM_4G,                     /* mem_size */
+           DDR_FREQ_800,               /* frequency */
+           0, 0,                       /* cas_l cas_wl */
+           HWS_TEMP_NORMAL,            /* temperature */
+           HWS_TIM_2T} },              /* timing (force 2t) */
+       5,                              /* Num Of Bus Per Interface*/
+       BUS_MASK_32BIT                  /* Busses mask */
+};
+
+static struct hws_topology_map board_topology_map_2g = {
+       0x1, /* active interfaces */
+       /* cs_mask, mirror, dqs_swap, ck_swap X PUPs */
+       { { { {0x1, 0, 0, 0},
+             {0x1, 0, 0, 0},
+             {0x1, 0, 0, 0},
+             {0x1, 0, 0, 0},
+             {0x1, 0, 0, 0} },
+           SPEED_BIN_DDR_1600K,        /* speed_bin */
+           BUS_WIDTH_16,               /* memory_width */
+           MEM_8G,                     /* mem_size */
+           DDR_FREQ_800,               /* frequency */
+           0, 0,                       /* cas_l cas_wl */
+           HWS_TEMP_NORMAL,            /* temperature */
+           HWS_TIM_2T} },              /* timing (force 2t) */
+       5,                              /* Num Of Bus Per Interface*/
+       BUS_MASK_32BIT                  /* Busses mask */
+};
+
+struct hws_topology_map *ddr3_get_topology_map(void)
+{
+       static int mem = 0;
+       struct omnia_eeprom oep;
+
+       /* Get the board config from EEPROM */
+       if (mem == 0) {
+               if(!omnia_read_eeprom(&oep))
+                       goto out;
+
+               printf("Memory config in EEPROM: 0x%02x\n", oep.ramsize);
+
+               if (oep.ramsize == 0x2)
+                       mem = 2;
+               else
+                       mem = 1;
+       }
+
+out:
+       /* Hardcoded fallback */
+       if (mem == 0) {
+               puts("WARNING: Memory config from EEPROM read failed.\n");
+               puts("Falling back to default 1GiB map.\n");
+               mem = 1;
+       }
+
+       /* Return the board topology as defined in the board code */
+       if (mem == 1)
+               return &board_topology_map_1g;
+       if (mem == 2)
+               return &board_topology_map_2g;
+
+       return &board_topology_map_1g;
+}
+
+#ifndef CONFIG_SPL_BUILD
+static int set_regdomain(void)
+{
+       struct omnia_eeprom oep;
+       char rd[3] = {' ', ' ', 0};
+
+       if (omnia_read_eeprom(&oep))
+               memcpy(rd, &oep.region, 2);
+       else
+               puts("EEPROM regdomain read failed.\n");
+
+       printf("Regdomain set to %s\n", rd);
+       return setenv("regdomain", rd);
+}
+#endif
+
+int board_early_init_f(void)
+{
+       u32 i2c_debug_reg;
+
+       /* Configure MPP */
+       writel(0x11111111, MVEBU_MPP_BASE + 0x00);
+       writel(0x11111111, MVEBU_MPP_BASE + 0x04);
+       writel(0x11244011, MVEBU_MPP_BASE + 0x08);
+       writel(0x22222111, MVEBU_MPP_BASE + 0x0c);
+       writel(0x22200002, MVEBU_MPP_BASE + 0x10);
+       writel(0x30042022, MVEBU_MPP_BASE + 0x14);
+       writel(0x55550555, MVEBU_MPP_BASE + 0x18);
+       writel(0x00005550, MVEBU_MPP_BASE + 0x1c);
+
+       /* Set GPP Out value */
+       writel(OMNIA_GPP_OUT_VAL_LOW, MVEBU_GPIO0_BASE + 0x00);
+       writel(OMNIA_GPP_OUT_VAL_MID, MVEBU_GPIO1_BASE + 0x00);
+
+       /* Set GPP Polarity */
+       writel(OMNIA_GPP_POL_LOW, MVEBU_GPIO0_BASE + 0x0c);
+       writel(OMNIA_GPP_POL_MID, MVEBU_GPIO1_BASE + 0x0c);
+
+       /* Set GPP Out Enable */
+       writel(OMNIA_GPP_OUT_ENA_LOW, MVEBU_GPIO0_BASE + 0x04);
+       writel(OMNIA_GPP_OUT_ENA_MID, MVEBU_GPIO1_BASE + 0x04);
+
+       /* Disable I2C debug mode blocking 0x64 I2C address */
+       i2c_debug_reg = readl(MVEBU_TWSI_BASE + MVTWSI_ARMADA_DEBUG_REG);
+       i2c_debug_reg &= ~(1<<18);
+       writel(i2c_debug_reg, MVEBU_TWSI_BASE + MVTWSI_ARMADA_DEBUG_REG);
+
+       return 0;
+}
+
+#ifndef CONFIG_SPL_BUILD
+static bool disable_mcu_watchdog(void)
+{
+       struct udevice *bus, *dev;
+       int ret, retry = 3;
+       uchar buf[1] = {0x0};
+
+       if (uclass_get_device_by_name(UCLASS_I2C, OMNIA_I2C_MCU_DM_NAME, &bus)) {
+               puts("Cannot find MCU bus! Can not disable MCU WDT.\n");
+               return false;
+       }
+
+       ret = i2c_get_chip(bus, OMNIA_I2C_MCU, 1, &dev);
+       if (ret) {
+               puts("Cannot get MCU chip! Can not disable MCU WDT.\n");
+               return false;
+       }
+
+       for (; retry > 0; --retry)
+               if (!dm_i2c_write(dev, OMNIA_I2C_MCU_WDT_ADDR, (uchar *) buf, 1))
+                       break;
+
+       if (retry <= 0) {
+               puts("I2C MCU watchdog failed to disable!\n");
+               return false;
+       }
+
+       return true;
+}
+#endif
+
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_WDT_ORION)
+static struct udevice *watchdog_dev = NULL;
+#endif
+
+int board_init(void)
+{
+       /* adress of boot parameters */
+       gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
+
+#ifndef CONFIG_SPL_BUILD
+# ifdef CONFIG_WDT_ORION
+       if (uclass_get_device(UCLASS_WDT, 0, &watchdog_dev)) {
+               puts("Cannot find Armada 385 watchdog!\n");
+       } else {
+               puts("Enabling Armada 385 watchdog.\n");
+               wdt_start(watchdog_dev, (u32) 25000000 * 120, 0);
+       }
+# endif
+
+       if (disable_mcu_watchdog())
+               puts("Disabled MCU startup watchdog.\n");
+
+       set_regdomain();
+#endif
+
+       return 0;
+}
+
+#ifdef CONFIG_WATCHDOG
+/* Called by macro WATCHDOG_RESET */
+void watchdog_reset(void)
+{
+# if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_WDT_ORION)
+       static ulong next_reset = 0;
+       ulong now;
+
+       if (!watchdog_dev)
+               return;
+
+       now = timer_get_us();
+
+       /* Do not reset the watchdog too often */
+       if (now > next_reset) {
+               wdt_reset(watchdog_dev);
+               next_reset = now + 1000;
+       }
+# endif
+}
+#endif
+
+int board_late_init(void)
+{
+#ifndef CONFIG_SPL_BUILD
+       set_regdomain();
+#endif
+
+       return 0;
+}
+
+#ifdef CONFIG_ATSHA204A
+static struct udevice *get_atsha204a_dev(void)
+{
+       static struct udevice *dev = NULL;
+
+       if (dev != NULL)
+               return dev;
+
+       if (uclass_get_device_by_name(UCLASS_MISC, "atsha204a@64", &dev)) {
+               puts("Cannot find ATSHA204A on I2C bus!\n");
+               dev = NULL;
+       }
+
+       return dev;
+}
+#endif
+
+int checkboard(void)
+{
+       u32 version_num, serial_num;
+       int err = 1;
+
+#ifdef CONFIG_ATSHA204A
+       struct udevice *dev = get_atsha204a_dev();
+
+       if (dev) {
+               err = atsha204a_wakeup(dev);
+               if (err)
+                       goto out;
+
+               err = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
+                                    OMNIA_ATSHA204_OTP_VERSION,
+                                    (u8 *) &version_num);
+               if (err)
+                       goto out;
+
+               err = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
+                                    OMNIA_ATSHA204_OTP_SERIAL,
+                                    (u8 *) &serial_num);
+               if (err)
+                       goto out;
+
+               atsha204a_sleep(dev);
+       }
+
+out:
+#endif
+
+       if (err)
+               printf("Board: Turris Omnia (ver N/A). SN: N/A\n");
+       else
+               printf("Board: Turris Omnia SNL %08X%08X\n",
+                      be32_to_cpu(version_num), be32_to_cpu(serial_num));
+
+       return 0;
+}
+
+static void increment_mac(u8 *mac)
+{
+       int i;
+
+       for (i = 5; i >= 3; i--) {
+               mac[i] += 1;
+               if (mac[i])
+                       break;
+       }
+}
+
+int misc_init_r(void)
+{
+#ifdef CONFIG_ATSHA204A
+       int err;
+       struct udevice *dev = get_atsha204a_dev();
+       u8 mac0[4], mac1[4], mac[6];
+
+       if (!dev)
+               goto out;
+
+       err = atsha204a_wakeup(dev);
+       if (err)
+               goto out;
+
+       err = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
+                            OMNIA_ATSHA204_OTP_MAC0, mac0);
+       if (err)
+               goto out;
+
+       err = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
+                            OMNIA_ATSHA204_OTP_MAC1, mac1);
+       if (err)
+               goto out;
+
+       atsha204a_sleep(dev);
+
+       mac[0] = mac0[1];
+       mac[1] = mac0[2];
+       mac[2] = mac0[3];
+       mac[3] = mac1[1];
+       mac[4] = mac1[2];
+       mac[5] = mac1[3];
+
+       if (is_valid_ethaddr(mac))
+               eth_setenv_enetaddr("ethaddr", mac);
+
+       increment_mac(mac);
+
+       if (is_valid_ethaddr(mac))
+               eth_setenv_enetaddr("eth1addr", mac);
+
+       increment_mac(mac);
+
+       if (is_valid_ethaddr(mac))
+               eth_setenv_enetaddr("eth2addr", mac);
+
+out:
+#endif
+
+       return 0;
+}
+
index cade99c8d7326faeca1a0cbca62a6f0c723c6ef4..40fa59986573bca384cbfe7a5a0b3666d75e535f 100644 (file)
@@ -69,7 +69,8 @@ static struct hws_topology_map board_topology_map = {
            MEM_4G,                     /* mem_size */
            DDR_FREQ_800,               /* frequency */
            0, 0,                       /* cas_l cas_wl */
-           HWS_TEMP_LOW} },            /* temperature */
+           HWS_TEMP_LOW,               /* temperature */
+           HWS_TIM_DEFAULT} },         /* timing */
        5,                              /* Num Of Bus Per Interface*/
        BUS_MASK_32BIT                  /* Busses mask */
 };
index e700781103fbdf4cf231a062fb8c5eac3adb99b8..a1974cb4bd21138eaad9b9ce9dbe08cc3acfaa13 100644 (file)
@@ -90,7 +90,8 @@ static struct hws_topology_map board_topology_map = {
            MEM_4G,                     /* mem_size */
            DDR_FREQ_800,               /* frequency */
            0, 0,                       /* cas_l cas_wl */
-           HWS_TEMP_LOW} },            /* temperature */
+           HWS_TEMP_LOW,               /* temperature */
+           HWS_TIM_DEFAULT} },         /* timing */
        5,                              /* Num Of Bus Per Interface*/
        BUS_MASK_32BIT                  /* Busses mask */
 };
index 2dab906f445d4c67534ed8ff8a57144d6c162000..c72894357c0ba178ba8b4ad1d1a919022d39f2e7 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
index f600e7d884706b763e85ba13502f9938888643c3..aad6313dbe98f81d84ef0f61e5e92630b61fd718 100644 (file)
@@ -1,6 +1,6 @@
 M28EVK BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
+#M:    Marek Vasut <marek.vasut@gmail.com>
+S:     Orphan (since 2017-07)
 F:     board/aries/m28evk/
 F:     include/configs/m28evk.h
 F:     configs/m28evk_defconfig
index 71137f0802127e1b0d5a90bc009d69f8c6749657..73a68cf5aa1136ea02fc5fba892f17aac04232ea 100644 (file)
@@ -1,6 +1,6 @@
 M53EVK BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
+#M:    Marek Vasut <marek.vasut@gmail.com>
+S:     Orphan (since 2017-07)
 F:     board/aries/m53evk/
 F:     include/configs/m53evk.h
 F:     configs/m53evk_defconfig
index ec855c835d2e8ce88ac5da94893c62979a8fc95e..e4f3ce53d2284706b53d679fba22a1064314ebfc 100644 (file)
@@ -9,7 +9,7 @@
  *
  * The syntax is taken as close as possible with the kwbimage
  */
-#include <asm/imx-common/imximage.cfg>
+#include <asm/mach-imx/imximage.cfg>
 
 /* image version */
 IMAGE_VERSION  2
index 14c60fc5397588c7798373a5f6f90dc5796a8dab..ece8957aaff98a29b7f47234e1200697e566d959 100644 (file)
@@ -13,7 +13,7 @@
 #include <asm/arch/crm_regs.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/iomux-mx53.h>
-#include <asm/imx-common/mx5_video.h>
+#include <asm/mach-imx/mx5_video.h>
 #include <asm/spl.h>
 #include <linux/errno.h>
 #include <netdev.h>
index 664a29a0dfd0cbed9f2c686a0c968ca2cbc66650..a2fab52dfca0a9d88848e75357c9ae942c568b7d 100644 (file)
@@ -1,6 +1,6 @@
 Aries MA5D4EVK BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
+#M:    Marek Vasut <marek.vasut@gmail.com>
+S:     Orphan (since 2017-07)
 F:     board/aries/ma5d4evk/
 F:     include/configs/ma5d4evk.h
 F:     configs/ma5d4evk_defconfig
index c3a3a2b87dad9cfd154973429516e20a2cb38bef..0b719a154c0704f2396581d84cbc31e2e9632836 100644 (file)
@@ -1,5 +1,5 @@
 Aries MCVEVK BOARD
-M:     Marek Vasut <marek.vasut@gmail.com>
-S:     Maintained
+#M:    Marek Vasut <marek.vasut@gmail.com>
+S:     Orphan (since 2017-07)
 F:     include/configs/socfpga_mcvevk.h
 F:     configs/socfpga_mcvevk_defconfig
index 94e2b8a36058f1bf1a7d2376cba2db0ebb4ceea2..b3f5c99e03713b5740146b2176ddafbef1694b15 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
index 4cd184ed74e0ab94d2d389fcfc0f86631b26eb52..6abc2159bbc59bc34bc52482a225a41cba1e5f6e 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
index b7c65ca7f8b813ec0a2118b905d604e97e7bc87d..872fedd2908ba62e62818324fc58afca38dfc139 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
index beca37dfb3841819b7357923d5a7f0ae30895a23..e66f060d140e7f81e3ca2c5c86a4c3e6eaa2f68b 100644 (file)
@@ -10,6 +10,6 @@ config SYS_CONFIG_NAME
        default "opos6uldev"
 
 config IMX_CONFIG
-       default "arch/arm/imx-common/spl_sd.cfg"
+       default "arch/arm/mach-imx/spl_sd.cfg"
 
 endif
index 500d0bd2dfd3c9ed219a868b49bc8ad2ead25cf0..646094aef4ca1e4174ddf3b16e24bc40a4571e74 100644 (file)
@@ -9,7 +9,7 @@
 #include <asm/arch/opos6ul.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 #include <asm/io.h>
 #include <common.h>
 
index b4acb742b3b2fdd1fc1cab6ddf469ef5d760a324..1ba606349dc5ee1ae0f12130835cd84bb0ffe7f8 100644 (file)
@@ -213,7 +213,7 @@ void lcd_show_board_info(void)
                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;
+               nand_size += get_nand_dev_by_index(i)->size;
        lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n",
                dram_size >> 20,
                nand_size >> 20 );
index b37e9d3c7ad0be09ba483c45779a8fd15a10a924..9fa689399fe5eba2b813ad20ec6ff272a6e392da 100644 (file)
@@ -160,7 +160,7 @@ void lcd_show_board_info(void)
                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;
+               nand_size += get_nand_dev_by_index(i)->size;
 #ifdef CONFIG_MTD_NOR_FLASH
        flash_size = 0;
        for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++)
index 8e377593ef085d29b311e9e56fd026647fb4f7df..903732b23b85a9856ade1ea9061fdf01afc12391 100644 (file)
@@ -236,7 +236,7 @@ void lcd_show_board_info(void)
                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;
+               nand_size += get_nand_dev_by_index(i)->size;
        lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n",
                dram_size >> 20,
                nand_size >> 20 );
index 11054289869570b633afb0bb2183140c2c84401f..fec93165c1b038c6f51135d3cc6a87627900300a 100644 (file)
@@ -124,7 +124,7 @@ void lcd_show_board_info(void)
                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;
+               nand_size += get_nand_dev_by_index(i)->size;
        lcd_printf("  %ld MB SDRAM, %ld MB NAND\n",
                dram_size >> 20,
                nand_size >> 20);
index 7966269ff350d8f7fdd2deea756519535ed4e14d..672b3768dcbc0b5c3d5b3a1ba1c4a1ad9f577f34 100644 (file)
@@ -149,7 +149,7 @@ void lcd_show_board_info(void)
                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;
+               nand_size += get_nand_dev_by_index(i)->size;
        lcd_printf ("  %ld MB SDRAM, %ld MB NAND\n",
                dram_size >> 20,
                nand_size >> 20 );
index 1e4a4a2acf0256ef1e77c3206191d9884b054d5e..2452e63881f15d1145842e9960a7a23d69d2d010 100644 (file)
@@ -175,7 +175,7 @@ void lcd_show_board_info(void)
                        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;
+                       nand_size += get_nand_dev_by_index(i)->size;
                lcd_printf("  %ld MB SDRAM, %ld MB NAND\n",
                        dram_size >> 20,
                        nand_size >> 20);
index cae6e245ddbc90e28b76f7f179f4f8f12817a844..c1f2769f1c556d788b2acf58824f9279747c3c09 100644 (file)
@@ -198,7 +198,7 @@ void lcd_show_board_info(void)
        nand_size = 0;
 #ifdef CONFIG_NAND_ATMEL
        for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-               nand_size += nand_info[i]->size;
+               nand_size += get_nand_dev_by_index(i)->size;
 #endif
        lcd_printf("%ld MB SDRAM, %lld MB NAND\n",
                   dram_size >> 20, nand_size >> 20);
index 94ecab28b9989c94a46305c0b0d7946ed61c3205..854afcb6224a00cb293ada60ea62ca538caaf0f9 100644 (file)
@@ -157,7 +157,7 @@ void lcd_show_board_info(void)
        nand_size = 0;
 #ifdef CONFIG_NAND_ATMEL
        for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-               nand_size += nand_info[i]->size;
+               nand_size += get_nand_dev_by_index(i)->size;
 #endif
        lcd_printf("%ld MB SDRAM, %ld MB NAND\n",
                   dram_size >> 20, nand_size >> 20);
index b2e79795f7f500087e02bce9d3f75771ae9bcd96..ba7974643e4397713c3d6563f8b14dbfc1d737e0 100644 (file)
@@ -153,7 +153,7 @@ void lcd_show_board_info(void)
        nand_size = 0;
 #ifdef CONFIG_NAND_ATMEL
        for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-               nand_size += nand_info[i]->size;
+               nand_size += get_nand_dev_by_index(i)->size;
 #endif
        lcd_printf("%ld MB SDRAM, %ld MB NAND\n",
                   dram_size >> 20, nand_size >> 20);
index 74f652e025aacd955d8e7d1948329d24b67f4a29..1ad4ef93cfc7e5f2d11a7f1116b62a52b576d8b7 100644 (file)
 #include <asm/arch/iomux.h>
 #include <malloc.h>
 #include <asm/arch/mx6-pins.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <asm/arch/crm_regs.h>
 #include <asm/arch/sys_proto.h>
 #include <mmc.h>
index 1485a4856f17431296b5af6eef35f1590c8f1d97..f74fa1358fd4385a26bc322e1ec63f9dd792cd92 100644 (file)
@@ -18,8 +18,8 @@
 #include <asm/arch/crm_regs.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/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
 
 #include "platinum.h"
 
index 0384a26e925b5b83565c552ecbb6c342d32cba95..716aec28395f2d4077309179cc9ebde64aa4e004 100644 (file)
@@ -11,8 +11,8 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <i2c.h>
 #include <miiphy.h>
 
index 73a955f01943e1cb9289cb72e67f8df7dd5bf7a1..bbcd1c56061007fa7034ef6ead45ae8b9c99f442 100644 (file)
@@ -9,8 +9,8 @@
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <miiphy.h>
 #include <micrel.h>
 
index ec57cf120592e59e6b5da575ade3d2f71f3ecb1f..f49adf03296724f4a89fcaf8805cc42aad7d1964 100644 (file)
@@ -14,9 +14,9 @@
 #include <asm/arch/mx6-ddr.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <spl.h>
 
 #include "platinum.h"
index d1ba85ab82c8dd50e1f1c27f5fe699c2ec551f1c..c27fb4836a15e2e8cd0523637cdc127a7080f785 100644 (file)
@@ -14,9 +14,9 @@
 #include <asm/arch/mx6-ddr.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <spl.h>
 
 #include "platinum.h"
index 84a7b849ad7435e055d23a871726a9ba4114f74f..caa598d8f5cb7980b470326788974b2bfd9efcab 100644 (file)
@@ -13,9 +13,9 @@
 #include <asm/arch/crm_regs.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <micrel.h>
index e903bc18072427a492028653ad63e93638182d4e..a18a4e8ac5ca6aceed1220651286c222972417c0 100644 (file)
@@ -17,7 +17,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/iomux-mx53.h>
 #include <asm/arch/clock.h>
-#include <asm/imx-common/mx5_video.h>
+#include <asm/mach-imx/mx5_video.h>
 #include <ACEX1K.h>
 #include <netdev.h>
 #include <i2c.h>
index 1145af53d7365242147c19c73e6e4445ec239640..17fd6f56eafb3fdebd3410a679b1f1a09eef97d1 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/spi.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/spi.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <micrel.h>
index 3193abf0b02409c6ad9c9c6b82a6d9239c2c8b2d..542e534270e02389805a0f9433bf5183881b2834 100644 (file)
@@ -12,9 +12,9 @@
 #include <asm/arch/mx6-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/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/io.h>
 #include <common.h>
 #include <fsl_esdhc.h>
index 9ba7490c38580ddea3439adb0ee37826ba7c9a6e..7c87bd1eb11ed883f2d47ddc377cf0fa1b05bff8 100644 (file)
@@ -39,6 +39,7 @@ void pinmux_init(void)
 #ifdef CONFIG_PCI_TEGRA
 int tegra_pcie_board_init(void)
 {
+/* TODO: Convert to driver model
        struct udevice *pmic;
        int err;
 
@@ -59,6 +60,7 @@ int tegra_pcie_board_init(void)
                error("failed to set SD4 voltage: %d\n", err);
                return err;
        }
+*/
 
        return 0;
 }
index 80b5dc9026ab0b7ccd66c6d014d849f777dfb57c..c59884a8c319489b1ab3bb33d2de64ed0fd28fc7 100644 (file)
@@ -23,9 +23,9 @@
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/mxc_hdmi.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/video.h>
 #include <asm/io.h>
 #include <asm/gpio.h>
 #include <dm/platform_data/serial_mxc.h>
index 59c9d1ac0644c902582e61488aceba6fb1246dcd..19fa5d3cf70bd9469b8ca6a39c9a3abe1cdd2e04 100644 (file)
@@ -11,7 +11,7 @@
 #include <common.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/spi.h>
+#include <asm/mach-imx/spi.h>
 #include <fsl_esdhc.h>
 #include "common.h"
 
index 9442d098201f77f328670c718e50bafa1532061e..bba977ff8e2979eabcc811bde2a44f0a0354ba54 100644 (file)
@@ -16,7 +16,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/crm_regs.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 #include <fsl_esdhc.h>
 #include "common.h"
 
index fe7db91dd8d0186457778aff000510830f915f78..5cb97b4778721c258720ab4c397cb18e139c7bb7 100644 (file)
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/crm_regs.h>
index 9f31238930fe85f55262ed3a6c0e037d672625b3..24b8f695ac4a4e42ffb60e7cad1ed54c6c2c3811 100644 (file)
@@ -21,6 +21,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
        select X86_RESET_VECTOR if !EFI_STUB
        select INTEL_BAYTRAIL
        select BOARD_ROMSIZE_KB_8192
+       select BOARD_LATE_INIT
 
 config PCIE_ECAM_BASE
        default 0xe0000000
index 3f0acb39f7de685eccddd9b904c393ce5843affe..fca8b53d0268d63b741cc26b4e38dedad6c76bc5 100644 (file)
@@ -21,6 +21,7 @@ config BOARD_SPECIFIC_OPTIONS # dummy
        select X86_RESET_VECTOR if !EFI_STUB
        select INTEL_BAYTRAIL
        select BOARD_ROMSIZE_KB_8192
+       select BOARD_LATE_INIT
 
 config PCIE_ECAM_BASE
        default 0xe0000000
index 8645bdc795be6e09d4ec1865bee1f38c5c4c2920..3dd2036d11e166816556211297b1d3c2196d750b 100644 (file)
@@ -28,3 +28,30 @@ int board_early_init_f(void)
 
        return 0;
 }
+
+int board_late_init(void)
+{
+       struct gpio_desc desc;
+       int ret;
+
+       ret = dm_gpio_lookup_name("F10", &desc);
+       if (ret)
+               debug("gpio ret=%d\n", ret);
+       ret = dm_gpio_request(&desc, "xhci_hub_reset");
+       if (ret)
+               debug("gpio_request ret=%d\n", ret);
+       ret = dm_gpio_set_dir_flags(&desc, GPIOD_IS_OUT);
+       if (ret)
+               debug("gpio dir ret=%d\n", ret);
+
+       /* Pull xHCI hub reset to low (active low) */
+       dm_gpio_set_value(&desc, 0);
+
+       /* Wait at least 5 ms, so lets choose 10 to be safe */
+       mdelay(10);
+
+       /* Pull xHCI hub reset to high (active low) */
+       dm_gpio_set_value(&desc, 1);
+
+       return 0;
+}
index 5b60654991bf6c85859e3d155c03a2cd6c369ee9..cbe355a600a3eb21add00e3f3490305701fed01d 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
index 95cdaeb07187bc6184f240c01a6dbaaea722dc2d..867459909df8fa0fda4ee943e8afb2cdeabeab2b 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/spi.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/spi.h>
+#include <asm/mach-imx/video.h>
 #include <i2c.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
index ab0ab986bfc8238bd0eed76ba2ccfcabdff6d420..a8a7cf317e8790446aa23d3a11a7729fa642fe3c 100644 (file)
@@ -20,8 +20,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/video.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
index 841ade98c56efaca37d7e3639e45877774325d43..bc36fc77ee5b5ab3ba9c0637b7edbb22dd18e6c3 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 #include "../common/board.h"
 
index 74cbbc5c5624e172c0343231362b10ea889b3f2e..5b2ed066b49ae85bc3be5d6b8a0479b19b1f87fb 100644 (file)
@@ -18,8 +18,8 @@
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/video.h>
 
 #include "../common/board.h"
 
index 74470ba59fd55b57b3e9cbec4838777ecacea046..6205acb09f2c511292d0f2f4783b6d5846188c0c 100644 (file)
@@ -3,7 +3,7 @@ M:      Jagan Teki <jagan@amarulasolutions.com>
 S:     Maintained
 F:     board/engicam/icorem6_rqs
 F:     include/configs/imx6qdl_icore_rqs.h
-F:     configs/imx6qdl_icore_rqs_mmc_defconfig
+F:     configs/imx6qdl_icore_rqs_defconfig
 F:     arch/arm/dts/imx6qdl-icore-rqs.dtsi
 F:     arch/arm/dts/imx6q-icore-rqs.dts
 F:     arch/arm/dts/imx6dl-icore-rqs.dts
index c3c3173f513a781e6b675879f3f11b79af1ea46b..10a947173032e510ccb9da8a3dcfee1938e2777c 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 #include "../common/board.h"
 
index 105db73f6df546b36f216287e13caa11a18fb76d..4dcc9ea11baa3b34c68287f8a5d6f94d4f9a834f 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 #include "../common/board.h"
 
index 53b606ebb502898a8301ae688ab8e46d7432285a..8a5c45649cd7c026af4dc87bd33aa895e9926274 100644 (file)
@@ -6,6 +6,7 @@ config CHAIN_OF_TRUST
        select SPL_BOARD_INIT if (ARM && SPL)
        select SHA_HW_ACCEL
        select SHA_PROG_HW_ACCEL
+       select ENV_IS_NOWHERE
        bool
        default y
 
index df25be8e6c749f7d0c5f75116e58b1b654c9ca89..a88ff8fe132f7dd7f08635a4f44ea95dc40f88ec 100644 (file)
@@ -13,7 +13,7 @@
 #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 <asm/mach-imx/mx5_video.h>
 #include <i2c.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
index db28942603a030983bd721d9aebc8b3ec454ac03..c608de456b3b0f7e6486a04e4fff52d87f32c634 100644 (file)
@@ -12,7 +12,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/iomux-mx53.h>
 #include <linux/errno.h>
-#include <asm/imx-common/boot_mode.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <netdev.h>
 #include <i2c.h>
 #include <mmc.h>
index 3741fa178c3a7c69ea9b3815c41f6386ba8b59dd..27d606f3105bcfe5085a7560864a41b25298c65f 100644 (file)
@@ -14,7 +14,7 @@
 #include <asm/arch/iomux-mx53.h>
 #include <asm/arch/clock.h>
 #include <linux/errno.h>
-#include <asm/imx-common/mx5_video.h>
+#include <asm/mach-imx/mx5_video.h>
 #include <netdev.h>
 #include <i2c.h>
 #include <mmc.h>
index 7f8eca33464c529606c8dffdcf363c8b05c03406..8cb5ac5940ed8a3758ed206e9844647854850ec2 100644 (file)
@@ -11,7 +11,7 @@
 #include <asm/arch/clock.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
diff --git a/board/freescale/mx6qsabreauto/Kconfig b/board/freescale/mx6qsabreauto/Kconfig
deleted file mode 100644 (file)
index e579c0f..0000000
+++ /dev/null
@@ -1,12 +0,0 @@
-if TARGET_MX6QSABREAUTO
-
-config SYS_BOARD
-       default "mx6qsabreauto"
-
-config SYS_VENDOR
-       default "freescale"
-
-config SYS_CONFIG_NAME
-       default "mx6qsabreauto"
-
-endif
diff --git a/board/freescale/mx6qsabreauto/MAINTAINERS b/board/freescale/mx6qsabreauto/MAINTAINERS
deleted file mode 100644 (file)
index f148dac..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-MX6QSABREAUTO BOARD
-M:     Fabio Estevam <fabio.estevam@nxp.com>
-M:     Peng Fan <peng.fan@nxp.com>
-S:     Maintained
-F:     board/freescale/mx6qsabreauto/
-F:     include/configs/mx6qsabreauto.h
-F:     configs/mx6dlsabreauto_defconfig
-F:     configs/mx6qsabreauto_defconfig
-F:     configs/mx6qpsabreauto_defconfig
diff --git a/board/freescale/mx6qsabreauto/Makefile b/board/freescale/mx6qsabreauto/Makefile
deleted file mode 100644 (file)
index ac5bc81..0000000
+++ /dev/null
@@ -1,9 +0,0 @@
-#
-# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
-#
-# (C) Copyright 2011 Freescale Semiconductor, Inc.
-#
-# SPDX-License-Identifier:     GPL-2.0+
-#
-
-obj-y  := mx6qsabreauto.o
diff --git a/board/freescale/mx6qsabreauto/imximage.cfg b/board/freescale/mx6qsabreauto/imximage.cfg
deleted file mode 100644 (file)
index 16bf473..0000000
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright (C) 2012 Freescale Semiconductor, Inc.
- *
- * 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
-
-/*
- * 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 0x020e0798 0x000C0000
-DATA 4 0x020e0758 0x00000000
-DATA 4 0x020e0588 0x00000030
-DATA 4 0x020e0594 0x00000030
-DATA 4 0x020e056c 0x00000030
-DATA 4 0x020e0578 0x00000030
-DATA 4 0x020e074c 0x00000030
-DATA 4 0x020e057c 0x00000030
-DATA 4 0x020e058c 0x00000000
-DATA 4 0x020e059c 0x00000030
-DATA 4 0x020e05a0 0x00000030
-DATA 4 0x020e078c 0x00000030
-DATA 4 0x020e0750 0x00020000
-DATA 4 0x020e05a8 0x00000028
-DATA 4 0x020e05b0 0x00000028
-DATA 4 0x020e0524 0x00000028
-DATA 4 0x020e051c 0x00000028
-DATA 4 0x020e0518 0x00000028
-DATA 4 0x020e050c 0x00000028
-DATA 4 0x020e05b8 0x00000028
-DATA 4 0x020e05c0 0x00000028
-DATA 4 0x020e0774 0x00020000
-DATA 4 0x020e0784 0x00000028
-DATA 4 0x020e0788 0x00000028
-DATA 4 0x020e0794 0x00000028
-DATA 4 0x020e079c 0x00000028
-DATA 4 0x020e07a0 0x00000028
-DATA 4 0x020e07a4 0x00000028
-DATA 4 0x020e07a8 0x00000028
-DATA 4 0x020e0748 0x00000028
-DATA 4 0x020e05ac 0x00000028
-DATA 4 0x020e05b4 0x00000028
-DATA 4 0x020e0528 0x00000028
-DATA 4 0x020e0520 0x00000028
-DATA 4 0x020e0514 0x00000028
-DATA 4 0x020e0510 0x00000028
-DATA 4 0x020e05bc 0x00000028
-DATA 4 0x020e05c4 0x00000028
-DATA 4 0x021b0800 0xa1390003
-DATA 4 0x021b080c 0x001F001F
-DATA 4 0x021b0810 0x001F001F
-DATA 4 0x021b480c 0x001F001F
-DATA 4 0x021b4810 0x001F001F
-DATA 4 0x021b083c 0x43260335
-DATA 4 0x021b0840 0x031A030B
-DATA 4 0x021b483c 0x4323033B
-DATA 4 0x021b4840 0x0323026F
-DATA 4 0x021b0848 0x483D4545
-DATA 4 0x021b4848 0x44433E48
-DATA 4 0x021b0850 0x41444840
-DATA 4 0x021b4850 0x4835483E
-DATA 4 0x021b081c 0x33333333
-DATA 4 0x021b0820 0x33333333
-DATA 4 0x021b0824 0x33333333
-DATA 4 0x021b0828 0x33333333
-DATA 4 0x021b481c 0x33333333
-DATA 4 0x021b4820 0x33333333
-DATA 4 0x021b4824 0x33333333
-DATA 4 0x021b4828 0x33333333
-DATA 4 0x021b08b8 0x00000800
-DATA 4 0x021b48b8 0x00000800
-DATA 4 0x021b0004 0x00020036
-DATA 4 0x021b0008 0x09444040
-DATA 4 0x021b000c 0x8A8F7955
-DATA 4 0x021b0010 0xFF328F64
-DATA 4 0x021b0014 0x01FF00DB
-DATA 4 0x021b0018 0x00001740
-DATA 4 0x021b001c 0x00008000
-DATA 4 0x021b002c 0x000026d2
-DATA 4 0x021b0030 0x008F1023
-DATA 4 0x021b0040 0x00000047
-DATA 4 0x021b0000 0x841A0000
-DATA 4 0x021b001c 0x04088032
-DATA 4 0x021b001c 0x00008033
-DATA 4 0x021b001c 0x00048031
-DATA 4 0x021b001c 0x09408030
-DATA 4 0x021b001c 0x04008040
-DATA 4 0x021b0020 0x00005800
-DATA 4 0x021b0818 0x00011117
-DATA 4 0x021b4818 0x00011117
-DATA 4 0x021b0004 0x00025576
-DATA 4 0x021b0404 0x00011006
-DATA 4 0x021b001c 0x00000000
-
-/* set the default clock gate to save power */
-DATA 4 0x020c4068 0x00C03F3F
-DATA 4 0x020c406c 0x0030FC03
-DATA 4 0x020c4070 0x0FFFC000
-DATA 4 0x020c4074 0x3FF00000
-DATA 4 0x020c4078 0xFFFFF300
-DATA 4 0x020c407c 0x0F0000F3
-DATA 4 0x020c4080 0x00000FFF
-
-/* enable AXI cache for VDOA/VPU/IPU */
-DATA 4 0x020e0010 0xF00000CF
-/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
-DATA 4 0x020e0018 0x007F007F
-DATA 4 0x020e001c 0x007F007F
diff --git a/board/freescale/mx6qsabreauto/mx6dl.cfg b/board/freescale/mx6qsabreauto/mx6dl.cfg
deleted file mode 100644 (file)
index 89078e5..0000000
+++ /dev/null
@@ -1,130 +0,0 @@
-/*
- * Copyright (C) 2013 Freescale Semiconductor, Inc.
- * Jason Liu <r64343@freescale.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
- */
-/* image version */
-
-IMAGE_VERSION 2
-
-/*
- * Boot Device : one of
- * spi, sd (the board has no nand neither onenand)
- */
-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 0x020e0774 0x000C0000
-DATA 4 0x020e0754 0x00000000
-DATA 4 0x020e04ac 0x00000030
-DATA 4 0x020e04b0 0x00000030
-DATA 4 0x020e0464 0x00000030
-DATA 4 0x020e0490 0x00000030
-DATA 4 0x020e074c 0x00000030
-DATA 4 0x020e0494 0x00000030
-DATA 4 0x020e04a0 0x00000000
-DATA 4 0x020e04b4 0x00000030
-DATA 4 0x020e04b8 0x00000030
-DATA 4 0x020e076c 0x00000030
-DATA 4 0x020e0750 0x00020000
-DATA 4 0x020e04bc 0x00000028
-DATA 4 0x020e04c0 0x00000028
-DATA 4 0x020e04c4 0x00000028
-DATA 4 0x020e04c8 0x00000028
-DATA 4 0x020e04cc 0x00000028
-DATA 4 0x020e04d0 0x00000028
-DATA 4 0x020e04d4 0x00000028
-DATA 4 0x020e04d8 0x00000028
-DATA 4 0x020e0760 0x00020000
-DATA 4 0x020e0764 0x00000028
-DATA 4 0x020e0770 0x00000028
-DATA 4 0x020e0778 0x00000028
-DATA 4 0x020e077c 0x00000028
-DATA 4 0x020e0780 0x00000028
-DATA 4 0x020e0784 0x00000028
-DATA 4 0x020e078c 0x00000028
-DATA 4 0x020e0748 0x00000028
-DATA 4 0x020e0470 0x00000028
-DATA 4 0x020e0474 0x00000028
-DATA 4 0x020e0478 0x00000028
-DATA 4 0x020e047c 0x00000028
-DATA 4 0x020e0480 0x00000028
-DATA 4 0x020e0484 0x00000028
-DATA 4 0x020e0488 0x00000028
-DATA 4 0x020e048c 0x00000028
-DATA 4 0x021b0800 0xa1390003
-DATA 4 0x021b080c 0x001F001F
-DATA 4 0x021b0810 0x001F001F
-DATA 4 0x021b480c 0x001F001F
-DATA 4 0x021b4810 0x001F001F
-DATA 4 0x021b083c 0x42190217
-DATA 4 0x021b0840 0x017B017B
-DATA 4 0x021b483c 0x4176017B
-DATA 4 0x021b4840 0x015F016C
-DATA 4 0x021b0848 0x4C4C4D4C
-DATA 4 0x021b4848 0x4A4D4C48
-DATA 4 0x021b0850 0x3F3F3F40
-DATA 4 0x021b4850 0x3538382E
-DATA 4 0x021b081c 0x33333333
-DATA 4 0x021b0820 0x33333333
-DATA 4 0x021b0824 0x33333333
-DATA 4 0x021b0828 0x33333333
-DATA 4 0x021b481c 0x33333333
-DATA 4 0x021b4820 0x33333333
-DATA 4 0x021b4824 0x33333333
-DATA 4 0x021b4828 0x33333333
-DATA 4 0x021b08b8 0x00000800
-DATA 4 0x021b48b8 0x00000800
-DATA 4 0x021b0004 0x00020025
-DATA 4 0x021b0008 0x00333030
-DATA 4 0x021b000c 0x676B5313
-DATA 4 0x021b0010 0xB66E8B63
-DATA 4 0x021b0014 0x01FF00DB
-DATA 4 0x021b0018 0x00001740
-DATA 4 0x021b001c 0x00008000
-DATA 4 0x021b002c 0x000026d2
-DATA 4 0x021b0030 0x006B1023
-DATA 4 0x021b0040 0x00000047
-DATA 4 0x021b0000 0x841A0000
-DATA 4 0x021b001c 0x04008032
-DATA 4 0x021b001c 0x00008033
-DATA 4 0x021b001c 0x00048031
-DATA 4 0x021b001c 0x05208030
-DATA 4 0x021b001c 0x04008040
-DATA 4 0x021b0020 0x00005800
-DATA 4 0x021b0818 0x00011117
-DATA 4 0x021b4818 0x00011117
-DATA 4 0x021b0004 0x00025565
-DATA 4 0x021b0404 0x00011006
-DATA 4 0x021b001c 0x00000000
-
-/* set the default clock gate to save power */
-DATA 4 0x020c4068 0x00C03F3F
-DATA 4 0x020c406c 0x0030FC03
-DATA 4 0x020c4070 0x0FFFC000
-DATA 4 0x020c4074 0x3FF00000
-DATA 4 0x020c4078 0xFFFFF300
-DATA 4 0x020c407c 0x0F0000C3
-DATA 4 0x020c4080 0x00000FFF
-
-/* enable AXI cache for VDOA/VPU/IPU */
-DATA 4 0x020e0010 0xF00000CF
-/* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
-DATA 4 0x020e0018 0x007F007F
-DATA 4 0x020e001c 0x007F007F
diff --git a/board/freescale/mx6qsabreauto/mx6qp.cfg b/board/freescale/mx6qsabreauto/mx6qp.cfg
deleted file mode 100644 (file)
index 2298c77..0000000
+++ /dev/null
@@ -1,145 +0,0 @@
-/*
- * Copyright (C) 2015 Freescale Semiconductor, Inc.
- *
- * 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 */
-
-#define __ASSEMBLY__
-#include <config.h>
-
-IMAGE_VERSION 2
-
-/*
- * Boot Device : one of spi, sd, eimnor, nand, sata:
- * spinor: flash_offset: 0x0400
- * nand:   flash_offset: 0x0400
- * sata:   flash_offset: 0x0400
- * sd/mmc: flash_offset: 0x0400
- * eimnor: flash_offset: 0x1000
- */
-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 0x020e0798 0x000C0000
-DATA 4 0x020e0758 0x00000000
-DATA 4 0x020e0588 0x00000030
-DATA 4 0x020e0594 0x00000030
-DATA 4 0x020e056c 0x00000030
-DATA 4 0x020e0578 0x00000030
-DATA 4 0x020e074c 0x00000030
-DATA 4 0x020e057c 0x00000030
-DATA 4 0x020e058c 0x00000000
-DATA 4 0x020e059c 0x00000030
-DATA 4 0x020e05a0 0x00000030
-DATA 4 0x020e078c 0x00000030
-DATA 4 0x020e0750 0x00020000
-DATA 4 0x020e05a8 0x00000030
-DATA 4 0x020e05b0 0x00000030
-DATA 4 0x020e0524 0x00000030
-DATA 4 0x020e051c 0x00000030
-DATA 4 0x020e0518 0x00000030
-DATA 4 0x020e050c 0x00000030
-DATA 4 0x020e05b8 0x00000030
-DATA 4 0x020e05c0 0x00000030
-DATA 4 0x020e0774 0x00020000
-DATA 4 0x020e0784 0x00000030
-DATA 4 0x020e0788 0x00000030
-DATA 4 0x020e0794 0x00000030
-DATA 4 0x020e079c 0x00000030
-DATA 4 0x020e07a0 0x00000030
-DATA 4 0x020e07a4 0x00000030
-DATA 4 0x020e07a8 0x00000030
-DATA 4 0x020e0748 0x00000030
-DATA 4 0x020e05ac 0x00000030
-DATA 4 0x020e05b4 0x00000030
-DATA 4 0x020e0528 0x00000030
-DATA 4 0x020e0520 0x00000030
-DATA 4 0x020e0514 0x00000030
-DATA 4 0x020e0510 0x00000030
-DATA 4 0x020e05bc 0x00000030
-DATA 4 0x020e05c4 0x00000030
-DATA 4 0x021b0800 0xa1390003
-DATA 4 0x021b080c 0x001b001e
-DATA 4 0x021b0810 0x002e0029
-DATA 4 0x021b480c 0x001b002a
-DATA 4 0x021b4810 0x0019002c
-DATA 4 0x021b083c 0x43240334
-DATA 4 0x021b0840 0x0324031a
-DATA 4 0x021b483c 0x43340344
-DATA 4 0x021b4840 0x03280276
-DATA 4 0x021b0848 0x44383A3E
-DATA 4 0x021b4848 0x3C3C3846
-DATA 4 0x021b0850 0x2e303230
-DATA 4 0x021b4850 0x38283E34
-DATA 4 0x021b081c 0x33333333
-DATA 4 0x021b0820 0x33333333
-DATA 4 0x021b0824 0x33333333
-DATA 4 0x021b0828 0x33333333
-DATA 4 0x021b481c 0x33333333
-DATA 4 0x021b4820 0x33333333
-DATA 4 0x021b4824 0x33333333
-DATA 4 0x021b4828 0x33333333
-DATA 4 0x021b08c0 0x24912492
-DATA 4 0x021b48c0 0x24912492
-DATA 4 0x021b08b8 0x00000800
-DATA 4 0x021b48b8 0x00000800
-DATA 4 0x021b0004 0x00020036
-DATA 4 0x021b0008 0x09444040
-DATA 4 0x021b000c 0x898E7955
-DATA 4 0x021b0010 0xFF328F64
-DATA 4 0x021b0014 0x01FF00DB
-DATA 4 0x021b0018 0x00001740
-DATA 4 0x021b001c 0x00008000
-
-DATA 4 0x021b002c 0x000026d2
-DATA 4 0x021b0030 0x008E1023
-DATA 4 0x021b0040 0x00000047
-DATA 4 0x021b0400 0x14420000
-DATA 4 0x021b0000 0x841A0000
-DATA 4 0x00bb0008 0x00000004
-DATA 4 0x00bb000c 0x2891E41A
-DATA 4 0x00bb0038 0x00000564
-DATA 4 0x00bb0014 0x00000040
-DATA 4 0x00bb0028 0x00000020
-DATA 4 0x00bb002c 0x00000020
-DATA 4 0x021b001c 0x04088032
-DATA 4 0x021b001c 0x00008033
-DATA 4 0x021b001c 0x00048031
-DATA 4 0x021b001c 0x09408030
-DATA 4 0x021b001c 0x04008040
-DATA 4 0x021b0020 0x00005800
-DATA 4 0x021b0818 0x00011117
-DATA 4 0x021b4818 0x00011117
-DATA 4 0x021b0004 0x00025576
-DATA 4 0x021b0404 0x00011006
-DATA 4 0x021b001c 0x00000000
-/* set the default clock gate to save power */
-DATA 4, 0x020c4068, 0x00C03F3F
-DATA 4, 0x020c406c, 0x0030FC03
-DATA 4, 0x020c4070, 0x0FFFC000
-DATA 4, 0x020c4074, 0x3FF00000
-DATA 4, 0x020c4078, 0xFFFFF300
-DATA 4, 0x020c407c, 0x0F0000F3
-DATA 4, 0x020c4080, 0x00000FFF
-
-/* enable AXI cache for VDOA/VPU/IPU */
-DATA 4, 0x020e0010, 0xF00000CF
-/* set IPU AXI-id1 Qos=0x1 AXI-id0/2/3 Qos=0x7 */
-DATA 4, 0x020e0018, 0x77177717
-DATA 4, 0x020e001c, 0x77177717
diff --git a/board/freescale/mx6qsabreauto/mx6qsabreauto.c b/board/freescale/mx6qsabreauto/mx6qsabreauto.c
deleted file mode 100644 (file)
index 51bbbc4..0000000
+++ /dev/null
@@ -1,704 +0,0 @@
-/*
- * Copyright (C) 2012 Freescale Semiconductor, Inc.
- *
- * Author: Fabio Estevam <fabio.estevam@freescale.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#include <common.h>
-#include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/imx-regs.h>
-#include <asm/arch/iomux.h>
-#include <asm/arch/mx6-pins.h>
-#include <linux/errno.h>
-#include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/spi.h>
-#include <mmc.h>
-#include <fsl_esdhc.h>
-#include <miiphy.h>
-#include <netdev.h>
-#include <asm/arch/sys_proto.h>
-#include <i2c.h>
-#include <asm/arch/mxc_hdmi.h>
-#include <asm/imx-common/video.h>
-#include <asm/arch/crm_regs.h>
-#include <pca953x.h>
-#include <power/pmic.h>
-#include <power/pfuze100_pmic.h>
-#include "../common/pfuze.h"
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define UART_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
-       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm |                 \
-       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
-
-#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP |                   \
-       PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm |                 \
-       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
-
-#define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
-       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
-
-#define I2C_PAD_CTRL   (PAD_CTL_PUS_100K_UP |                  \
-       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
-       PAD_CTL_ODE | PAD_CTL_SRE_FAST)
-
-#define GPMI_PAD_CTRL0 (PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP)
-#define GPMI_PAD_CTRL1 (PAD_CTL_DSE_40ohm | PAD_CTL_SPEED_MED | \
-                       PAD_CTL_SRE_FAST)
-#define GPMI_PAD_CTRL2 (GPMI_PAD_CTRL0 | GPMI_PAD_CTRL1)
-
-#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
-
-#define WEIM_NOR_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |          \
-       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
-       PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST)
-
-#define I2C_PMIC       1
-
-int dram_init(void)
-{
-       gd->ram_size = imx_ddr_size();
-
-       return 0;
-}
-
-static iomux_v3_cfg_t const uart4_pads[] = {
-       MX6_PAD_KEY_COL0__UART4_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-       MX6_PAD_KEY_ROW0__UART4_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL),
-};
-
-static iomux_v3_cfg_t const enet_pads[] = {
-       MX6_PAD_KEY_COL1__ENET_MDIO             | MUX_PAD_CTRL(ENET_PAD_CTRL),
-       MX6_PAD_KEY_COL2__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),
-};
-
-/* I2C2 PMIC, iPod, Tuner, Codec, Touch, HDMI EDID, MIPI CSI2 card */
-static struct i2c_pads_info i2c_pad_info1 = {
-       .scl = {
-               .i2c_mode = MX6_PAD_EIM_EB2__I2C2_SCL | PC,
-               .gpio_mode = MX6_PAD_EIM_EB2__GPIO2_IO30 | PC,
-               .gp = IMX_GPIO_NR(2, 30)
-       },
-       .sda = {
-               .i2c_mode = MX6_PAD_KEY_ROW3__I2C2_SDA | PC,
-               .gpio_mode = MX6_PAD_KEY_ROW3__GPIO4_IO13 | PC,
-               .gp = IMX_GPIO_NR(4, 13)
-       }
-};
-
-#ifndef CONFIG_SYS_FLASH_CFI
-/*
- * I2C3 MLB, Port Expanders (A, B, C), Video ADC, Light Sensor,
- * Compass Sensor, Accelerometer, Res Touch
- */
-static struct i2c_pads_info i2c_pad_info2 = {
-       .scl = {
-               .i2c_mode = MX6_PAD_GPIO_3__I2C3_SCL | PC,
-               .gpio_mode = MX6_PAD_GPIO_3__GPIO1_IO03 | PC,
-               .gp = IMX_GPIO_NR(1, 3)
-       },
-       .sda = {
-               .i2c_mode = MX6_PAD_EIM_D18__I2C3_SDA | PC,
-               .gpio_mode = MX6_PAD_EIM_D18__GPIO3_IO18 | PC,
-               .gp = IMX_GPIO_NR(3, 18)
-       }
-};
-#endif
-
-static iomux_v3_cfg_t const i2c3_pads[] = {
-       MX6_PAD_EIM_A24__GPIO5_IO04             | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static iomux_v3_cfg_t const port_exp[] = {
-       MX6_PAD_SD2_DAT0__GPIO1_IO15            | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-/*Define for building port exp gpio, pin starts from 0*/
-#define PORTEXP_IO_NR(chip, pin) \
-       ((chip << 5) + pin)
-
-/*Get the chip addr from a ioexp gpio*/
-#define PORTEXP_IO_TO_CHIP(gpio_nr) \
-       (gpio_nr >> 5)
-
-/*Get the pin number from a ioexp gpio*/
-#define PORTEXP_IO_TO_PIN(gpio_nr) \
-       (gpio_nr & 0x1f)
-
-static int port_exp_direction_output(unsigned gpio, int value)
-{
-       int ret;
-
-       i2c_set_bus_num(2);
-       ret = i2c_probe(PORTEXP_IO_TO_CHIP(gpio));
-       if (ret)
-               return ret;
-
-       ret = pca953x_set_dir(PORTEXP_IO_TO_CHIP(gpio),
-               (1 << PORTEXP_IO_TO_PIN(gpio)),
-               (PCA953X_DIR_OUT << PORTEXP_IO_TO_PIN(gpio)));
-
-       if (ret)
-               return ret;
-
-       ret = pca953x_set_val(PORTEXP_IO_TO_CHIP(gpio),
-               (1 << PORTEXP_IO_TO_PIN(gpio)),
-               (value << PORTEXP_IO_TO_PIN(gpio)));
-
-       if (ret)
-               return ret;
-
-       return 0;
-}
-
-static iomux_v3_cfg_t const eimnor_pads[] = {
-       MX6_PAD_EIM_D16__EIM_DATA16     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D17__EIM_DATA17     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D18__EIM_DATA18     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D19__EIM_DATA19     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D20__EIM_DATA20     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D21__EIM_DATA21     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D22__EIM_DATA22     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D23__EIM_DATA23     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D24__EIM_DATA24     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D25__EIM_DATA25     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D26__EIM_DATA26     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D27__EIM_DATA27     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D28__EIM_DATA28     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D29__EIM_DATA29     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D30__EIM_DATA30     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_D31__EIM_DATA31     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA0__EIM_AD00       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA1__EIM_AD01       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA2__EIM_AD02       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA3__EIM_AD03       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA4__EIM_AD04       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA5__EIM_AD05       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA6__EIM_AD06       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA7__EIM_AD07       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA8__EIM_AD08       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA9__EIM_AD09       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA10__EIM_AD10      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA11__EIM_AD11      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL) ,
-       MX6_PAD_EIM_DA12__EIM_AD12      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA13__EIM_AD13      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA14__EIM_AD14      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_DA15__EIM_AD15      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_A16__EIM_ADDR16     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_A17__EIM_ADDR17     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_A18__EIM_ADDR18     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_A19__EIM_ADDR19     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_A20__EIM_ADDR20     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_A21__EIM_ADDR21     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_A22__EIM_ADDR22     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_A23__EIM_ADDR23     | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL),
-       MX6_PAD_EIM_OE__EIM_OE_B        | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_RW__EIM_RW          | MUX_PAD_CTRL(NO_PAD_CTRL),
-       MX6_PAD_EIM_CS0__EIM_CS0_B      | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static void eimnor_cs_setup(void)
-{
-       struct weim *weim_regs = (struct weim *)WEIM_BASE_ADDR;
-
-       writel(0x00020181, &weim_regs->cs0gcr1);
-       writel(0x00000001, &weim_regs->cs0gcr2);
-       writel(0x0a020000, &weim_regs->cs0rcr1);
-       writel(0x0000c000, &weim_regs->cs0rcr2);
-       writel(0x0804a240, &weim_regs->cs0wcr1);
-       writel(0x00000120, &weim_regs->wcr);
-
-       set_chipselect_size(CS0_128);
-}
-
-static void eim_clk_setup(void)
-{
-       struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       int cscmr1, ccgr6;
-
-
-       /* Turn off EIM clock */
-       ccgr6 = readl(&imx_ccm->CCGR6);
-       ccgr6 &= ~(0x3 << 10);
-       writel(ccgr6, &imx_ccm->CCGR6);
-
-       /*
-        * Configure clk_eim_slow_sel = 00 --> derive clock from AXI clk root
-        * and aclk_eim_slow_podf = 01 --> divide by 2
-        * so that we can have EIM at the maximum clock of 132MHz
-        */
-       cscmr1 = readl(&imx_ccm->cscmr1);
-       cscmr1 &= ~(MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK |
-                   MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK);
-       cscmr1 |= (1 << MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET);
-       writel(cscmr1, &imx_ccm->cscmr1);
-
-       /* Turn on EIM clock */
-       ccgr6 |= (0x3 << 10);
-       writel(ccgr6, &imx_ccm->CCGR6);
-}
-
-static void setup_iomux_eimnor(void)
-{
-       imx_iomux_v3_setup_multiple_pads(eimnor_pads, ARRAY_SIZE(eimnor_pads));
-
-       gpio_direction_output(IMX_GPIO_NR(5, 4), 0);
-
-       eimnor_cs_setup();
-}
-
-static void setup_iomux_enet(void)
-{
-       imx_iomux_v3_setup_multiple_pads(enet_pads, ARRAY_SIZE(enet_pads));
-}
-
-static iomux_v3_cfg_t const usdhc3_pads[] = {
-       MX6_PAD_SD3_CLK__SD3_CLK        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_CMD__SD3_CMD        | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT0__SD3_DATA0     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT1__SD3_DATA1     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT2__SD3_DATA2     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT3__SD3_DATA3     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT4__SD3_DATA4     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT5__SD3_DATA5     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT6__SD3_DATA6     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_SD3_DAT7__SD3_DATA7     | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_GPIO_18__SD3_VSELECT | MUX_PAD_CTRL(USDHC_PAD_CTRL),
-       MX6_PAD_NANDF_CS2__GPIO6_IO15   | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-static void setup_iomux_uart(void)
-{
-       imx_iomux_v3_setup_multiple_pads(uart4_pads, ARRAY_SIZE(uart4_pads));
-}
-
-#ifdef CONFIG_FSL_ESDHC
-static struct fsl_esdhc_cfg usdhc_cfg[1] = {
-       {USDHC3_BASE_ADDR},
-};
-
-int board_mmc_getcd(struct mmc *mmc)
-{
-       gpio_direction_input(IMX_GPIO_NR(6, 15));
-       return !gpio_get_value(IMX_GPIO_NR(6, 15));
-}
-
-int board_mmc_init(bd_t *bis)
-{
-       imx_iomux_v3_setup_multiple_pads(usdhc3_pads, ARRAY_SIZE(usdhc3_pads));
-
-       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
-       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
-}
-#endif
-
-#ifdef CONFIG_NAND_MXS
-static iomux_v3_cfg_t gpmi_pads[] = {
-       MX6_PAD_NANDF_CLE__NAND_CLE             | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_ALE__NAND_ALE             | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_WP_B__NAND_WP_B   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_RB0__NAND_READY_B | MUX_PAD_CTRL(GPMI_PAD_CTRL0),
-       MX6_PAD_NANDF_CS0__NAND_CE0_B   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_SD4_CMD__NAND_RE_B              | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_SD4_CLK__NAND_WE_B              | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_D0__NAND_DATA00   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_D1__NAND_DATA01   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_D2__NAND_DATA02   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_D3__NAND_DATA03   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_D4__NAND_DATA04   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_D5__NAND_DATA05   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_D6__NAND_DATA06   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_NANDF_D7__NAND_DATA07   | MUX_PAD_CTRL(GPMI_PAD_CTRL2),
-       MX6_PAD_SD4_DAT0__NAND_DQS              | MUX_PAD_CTRL(GPMI_PAD_CTRL1),
-};
-
-static void setup_gpmi_nand(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-
-       /* config gpmi nand iomux */
-       imx_iomux_v3_setup_multiple_pads(gpmi_pads, ARRAY_SIZE(gpmi_pads));
-
-       setup_gpmi_io_clk((MXC_CCM_CS2CDR_ENFC_CLK_PODF(0) |
-                       MXC_CCM_CS2CDR_ENFC_CLK_PRED(3) |
-                       MXC_CCM_CS2CDR_ENFC_CLK_SEL(3)));
-
-       /* enable apbh clock gating */
-       setbits_le32(&mxc_ccm->CCGR0, MXC_CCM_CCGR0_APBHDMA_MASK);
-}
-#endif
-
-static void setup_fec(void)
-{
-       if (is_mx6dqp()) {
-               /*
-                * select ENET MAC0 TX clock from PLL
-                */
-               imx_iomux_set_gpr_register(5, 9, 1, 1);
-               enable_fec_anatop_clock(0, ENET_125MHZ);
-       }
-
-       setup_iomux_enet();
-}
-
-int board_eth_init(bd_t *bis)
-{
-       setup_fec();
-
-       return cpu_eth_init(bis);
-}
-
-#define BOARD_REV_B  0x200
-#define BOARD_REV_A  0x100
-
-static int mx6sabre_rev(void)
-{
-       /*
-        * Get Board ID information from OCOTP_GP1[15:8]
-        * i.MX6Q ARD RevA: 0x01
-        * i.MX6Q ARD RevB: 0x02
-        */
-       struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
-       struct fuse_bank *bank = &ocotp->bank[4];
-       struct fuse_bank4_regs *fuse =
-                       (struct fuse_bank4_regs *)bank->fuse_regs;
-       int reg = readl(&fuse->gp1);
-       int ret;
-
-       switch (reg >> 8 & 0x0F) {
-       case 0x02:
-               ret = BOARD_REV_B;
-               break;
-       case 0x01:
-       default:
-               ret = BOARD_REV_A;
-               break;
-       }
-
-       return ret;
-}
-
-u32 get_board_rev(void)
-{
-       int rev = mx6sabre_rev();
-
-       return (get_cpu_rev() & ~(0xF << 8)) | rev;
-}
-
-#if defined(CONFIG_VIDEO_IPUV3)
-static void disable_lvds(struct display_info_t const *dev)
-{
-       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
-
-       clrbits_le32(&iomux->gpr[2],
-                    IOMUXC_GPR2_LVDS_CH0_MODE_MASK |
-                    IOMUXC_GPR2_LVDS_CH1_MODE_MASK);
-}
-
-static void do_enable_hdmi(struct display_info_t const *dev)
-{
-       disable_lvds(dev);
-       imx_enable_hdmi_phy();
-}
-
-struct display_info_t const displays[] = {{
-       .bus    = -1,
-       .addr   = 0,
-       .pixfmt = IPU_PIX_FMT_RGB666,
-       .detect = NULL,
-       .enable = NULL,
-       .mode   = {
-               .name           = "Hannstar-XGA",
-               .refresh        = 60,
-               .xres           = 1024,
-               .yres           = 768,
-               .pixclock       = 15385,
-               .left_margin    = 220,
-               .right_margin   = 40,
-               .upper_margin   = 21,
-               .lower_margin   = 7,
-               .hsync_len      = 60,
-               .vsync_len      = 10,
-               .sync           = FB_SYNC_EXT,
-               .vmode          = FB_VMODE_NONINTERLACED
-} }, {
-       .bus    = -1,
-       .addr   = 0,
-       .pixfmt = IPU_PIX_FMT_RGB24,
-       .detect = detect_hdmi,
-       .enable = do_enable_hdmi,
-       .mode   = {
-               .name           = "HDMI",
-               .refresh        = 60,
-               .xres           = 1024,
-               .yres           = 768,
-               .pixclock       = 15385,
-               .left_margin    = 220,
-               .right_margin   = 40,
-               .upper_margin   = 21,
-               .lower_margin   = 7,
-               .hsync_len      = 60,
-               .vsync_len      = 10,
-               .sync           = FB_SYNC_EXT,
-               .vmode          = FB_VMODE_NONINTERLACED,
-} } };
-size_t display_count = ARRAY_SIZE(displays);
-
-iomux_v3_cfg_t const backlight_pads[] = {
-       MX6_PAD_SD4_DAT1__GPIO2_IO09 | MUX_PAD_CTRL(ENET_PAD_CTRL),
-};
-
-static void setup_iomux_backlight(void)
-{
-       gpio_direction_output(IMX_GPIO_NR(2, 9), 1);
-       imx_iomux_v3_setup_multiple_pads(backlight_pads,
-                                        ARRAY_SIZE(backlight_pads));
-}
-
-static void setup_display(void)
-{
-       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
-       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
-       int reg;
-
-       setup_iomux_backlight();
-       enable_ipu_clock();
-       imx_setup_hdmi();
-
-       /* Turn on LDB_DI0 and LDB_DI1 clocks */
-       reg = readl(&mxc_ccm->CCGR3);
-       reg |= MXC_CCM_CCGR3_LDB_DI0_MASK | MXC_CCM_CCGR3_LDB_DI1_MASK;
-       writel(reg, &mxc_ccm->CCGR3);
-
-       /* Set LDB_DI0 and LDB_DI1 clk select to 3b'011 */
-       reg = readl(&mxc_ccm->cs2cdr);
-       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK |
-                MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
-       reg |= (3 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET) |
-              (3 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET);
-       writel(reg, &mxc_ccm->cs2cdr);
-
-       reg = readl(&mxc_ccm->cscmr2);
-       reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV | MXC_CCM_CSCMR2_LDB_DI1_IPU_DIV;
-       writel(reg, &mxc_ccm->cscmr2);
-
-       reg = readl(&mxc_ccm->chsccdr);
-       reg |= (CHSCCDR_CLK_SEL_LDB_DI0
-               << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
-       reg |= (CHSCCDR_CLK_SEL_LDB_DI0 <<
-               MXC_CCM_CHSCCDR_IPU1_DI1_CLK_SEL_OFFSET);
-       writel(reg, &mxc_ccm->chsccdr);
-
-       reg = IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_LOW |
-             IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW |
-             IOMUXC_GPR2_BIT_MAPPING_CH1_SPWG |
-             IOMUXC_GPR2_DATA_WIDTH_CH1_18BIT |
-             IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG |
-             IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT |
-             IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0 |
-             IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED;
-       writel(reg, &iomux->gpr[2]);
-
-       reg = readl(&iomux->gpr[3]);
-       reg &= ~(IOMUXC_GPR3_LVDS0_MUX_CTL_MASK |
-                IOMUXC_GPR3_HDMI_MUX_CTL_MASK);
-       reg |= (IOMUXC_GPR3_MUX_SRC_IPU1_DI0 <<
-               IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET) |
-              (IOMUXC_GPR3_MUX_SRC_IPU1_DI0 <<
-               IOMUXC_GPR3_HDMI_MUX_CTL_OFFSET);
-       writel(reg, &iomux->gpr[3]);
-}
-#endif /* CONFIG_VIDEO_IPUV3 */
-
-/*
- * Do not overwrite the console
- * Use always serial for U-Boot console
- */
-int overwrite_console(void)
-{
-       return 1;
-}
-
-int board_early_init_f(void)
-{
-       setup_iomux_uart();
-
-#ifdef CONFIG_NAND_MXS
-       setup_gpmi_nand();
-#endif
-       eim_clk_setup();
-
-       return 0;
-}
-
-int board_init(void)
-{
-       /* address of boot parameters */
-       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
-
-       /* I2C 2 and 3 setup - I2C 3 hw mux with EIM */
-       setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info1);
-       /* I2C 3 Steer */
-       gpio_direction_output(IMX_GPIO_NR(5, 4), 1);
-       imx_iomux_v3_setup_multiple_pads(i2c3_pads, ARRAY_SIZE(i2c3_pads));
-#ifndef CONFIG_SYS_FLASH_CFI
-       setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &i2c_pad_info2);
-#endif
-       gpio_direction_output(IMX_GPIO_NR(1, 15), 1);
-       imx_iomux_v3_setup_multiple_pads(port_exp, ARRAY_SIZE(port_exp));
-
-#ifdef CONFIG_VIDEO_IPUV3
-       setup_display();
-#endif
-       setup_iomux_eimnor();
-       return 0;
-}
-
-#ifdef CONFIG_MXC_SPI
-int board_spi_cs_gpio(unsigned bus, unsigned cs)
-{
-       return (bus == 0 && cs == 0) ? (IMX_GPIO_NR(4, 9)) : -1;
-}
-#endif
-
-int power_init_board(void)
-{
-       struct pmic *p;
-       unsigned int value;
-
-       p = pfuze_common_init(I2C_PMIC);
-       if (!p)
-               return -ENODEV;
-
-       if (is_mx6dqp()) {
-               /* set SW2 staby volatage 0.975V*/
-               pmic_reg_read(p, PFUZE100_SW2STBY, &value);
-               value &= ~0x3f;
-               value |= 0x17;
-               pmic_reg_write(p, PFUZE100_SW2STBY, value);
-       }
-
-       return pfuze_mode_init(p, APS_PFM);
-}
-
-#ifdef CONFIG_CMD_BMODE
-static const struct boot_mode board_boot_modes[] = {
-       /* 4 bit bus width */
-       {"mmc0", MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)},
-       {NULL,   0},
-};
-#endif
-
-int board_late_init(void)
-{
-#ifdef CONFIG_CMD_BMODE
-       add_board_boot_modes(board_boot_modes);
-#endif
-
-#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
-       setenv("board_name", "SABREAUTO");
-
-       if (is_mx6dqp())
-               setenv("board_rev", "MX6QP");
-       else if (is_mx6dq())
-               setenv("board_rev", "MX6Q");
-       else if (is_mx6sdl())
-               setenv("board_rev", "MX6DL");
-#endif
-
-       return 0;
-}
-
-int checkboard(void)
-{
-       int rev = mx6sabre_rev();
-       char *revname;
-
-       switch (rev) {
-       case BOARD_REV_B:
-               revname = "B";
-               break;
-       case BOARD_REV_A:
-       default:
-               revname = "A";
-               break;
-       }
-
-       printf("Board: MX6Q-Sabreauto rev%s\n", revname);
-
-       return 0;
-}
-
-#ifdef CONFIG_USB_EHCI_MX6
-#define USB_HOST1_PWR     PORTEXP_IO_NR(0x32, 7)
-#define USB_OTG_PWR       PORTEXP_IO_NR(0x34, 1)
-
-iomux_v3_cfg_t const usb_otg_pads[] = {
-       MX6_PAD_ENET_RX_ER__USB_OTG_ID | MUX_PAD_CTRL(NO_PAD_CTRL),
-};
-
-int board_ehci_hcd_init(int port)
-{
-       switch (port) {
-       case 0:
-               imx_iomux_v3_setup_multiple_pads(usb_otg_pads,
-                       ARRAY_SIZE(usb_otg_pads));
-
-               /*
-                 * Set daisy chain for otg_pin_id on 6q.
-                *  For 6dl, this bit is reserved.
-                */
-               imx_iomux_set_gpr_register(1, 13, 1, 0);
-               break;
-       case 1:
-               break;
-       default:
-               printf("MXC USB port %d not yet supported\n", port);
-               return -EINVAL;
-       }
-       return 0;
-}
-
-int board_ehci_power(int port, int on)
-{
-       switch (port) {
-       case 0:
-               if (on)
-                       port_exp_direction_output(USB_OTG_PWR, 1);
-               else
-                       port_exp_direction_output(USB_OTG_PWR, 0);
-               break;
-       case 1:
-               if (on)
-                       port_exp_direction_output(USB_HOST1_PWR, 1);
-               else
-                       port_exp_direction_output(USB_HOST1_PWR, 0);
-               break;
-       default:
-               printf("MXC USB port %d not yet supported\n", port);
-               return -EINVAL;
-       }
-
-       return 0;
-}
-#endif
diff --git a/board/freescale/mx6sabreauto/Kconfig b/board/freescale/mx6sabreauto/Kconfig
new file mode 100644 (file)
index 0000000..5b4faf6
--- /dev/null
@@ -0,0 +1,12 @@
+if TARGET_MX6SABREAUTO
+
+config SYS_BOARD
+       default "mx6sabreauto"
+
+config SYS_VENDOR
+       default "freescale"
+
+config SYS_CONFIG_NAME
+       default "mx6sabreauto"
+
+endif
diff --git a/board/freescale/mx6sabreauto/MAINTAINERS b/board/freescale/mx6sabreauto/MAINTAINERS
new file mode 100644 (file)
index 0000000..a89f05a
--- /dev/null
@@ -0,0 +1,7 @@
+MX6SABREAUTO BOARD
+M:     Fabio Estevam <fabio.estevam@nxp.com>
+M:     Peng Fan <peng.fan@nxp.com>
+S:     Maintained
+F:     board/freescale/mx6sabreauto/
+F:     include/configs/mx6sabreauto.h
+F:     configs/mx6sabreauto_defconfig
diff --git a/board/freescale/mx6sabreauto/Makefile b/board/freescale/mx6sabreauto/Makefile
new file mode 100644 (file)
index 0000000..87f4ec0
--- /dev/null
@@ -0,0 +1,9 @@
+#
+# Copyright (C) 2007, Guennadi Liakhovetski <lg@denx.de>
+#
+# (C) Copyright 2011 Freescale Semiconductor, Inc.
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  := mx6sabreauto.o
diff --git a/board/freescale/mx6sabreauto/README b/board/freescale/mx6sabreauto/README
new file mode 100644 (file)
index 0000000..e8c589b
--- /dev/null
@@ -0,0 +1,82 @@
+How to use and build U-Boot on mx6sabreauto
+-------------------------------------------
+
+mx6sabreauto_defconfig target supports mx6q/mx6dl/mx6qp sabreauto variants.
+
+In order to build it:
+
+$ make mx6sabreauto_defconfig
+
+$ make
+
+This will generate the SPL and u-boot.img binaries.
+
+- Flash the SPL binary into the SD card:
+
+$ sudo dd if=SPL of=/dev/sdX bs=1K seek=1 && sync
+
+- Flash the u-boot.img binary into the SD card:
+
+$ sudo dd if=u-boot.img of=/dev/sdX bs=1K seek=69 && sync
+
+Booting via Falcon mode
+-----------------------
+
+Write in mx6sabreauto_defconfig the following define below:
+
+CONFIG_SPL_OS_BOOT=y
+
+In order to build it:
+
+$ make mx6sabreauto_defconfig
+
+$ make
+
+This will generate the SPL image called SPL and the u-boot.img.
+
+- Flash the SPL image into the SD card:
+
+$ sudo dd if=SPL of=/dev/sdb bs=1K seek=1 && sync
+
+- Flash the u-boot.img image into the SD card:
+
+$ sudo dd if=u-boot.img of=/dev/sdb bs=1K seek=69 && sync
+
+Create a FAT16 boot partition to store uImage and the dtb file, then copy the files there:
+
+$ sudo cp uImage /media/boot
+
+$ sudo cp imx6dl-sabreauto.dtb /media/boot
+
+Create a partition for root file system and extract it there:
+
+$ sudo tar xvf rootfs.tar.gz -C /media/root
+
+The SD card must have enough space for raw "args" and "kernel".
+To configure Falcon mode for the first time, on U-Boot do the following commands:
+
+- Load dtb file from boot partition:
+
+# load mmc 0:1 ${fdt_addr} imx6dl-sabreauto.dtb
+
+- Load kernel image from boot partition:
+
+# load mmc 0:1 ${loadaddr} uImage
+
+- Write kernel at 2MB offset:
+
+# mmc write ${loadaddr} 0x1000 0x4000
+
+- Setup kernel bootargs:
+
+# setenv bootargs "console=ttymxc3,115200 root=/dev/mmcblk0p1 rootfstype=ext4 rootwait quiet rw"
+
+- Prepare args:
+
+# spl export fdt ${loadaddr} - ${fdt_addr}
+
+- Write args 1MB data (0x800 sectors) to 1MB offset (0x800 sectors)
+
+# mmc write 18000000 0x800 0x800
+
+- Restart the board and then SPL binary will launch the kernel directly.
diff --git a/board/freescale/mx6sabreauto/mx6sabreauto.c b/board/freescale/mx6sabreauto/mx6sabreauto.c
new file mode 100644 (file)
index 0000000..a5703a3
--- /dev/null
@@ -0,0 +1,1159 @@
+/*
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ *
+ * Author: Fabio Estevam <fabio.estevam@freescale.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch/clock.h>
+#include <asm/arch/imx-regs.h>
+#include <asm/arch/iomux.h>
+#include <asm/arch/mx6-pins.h>
+#include <linux/errno.h>
+#include <asm/gpio.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/spi.h>
+#include <mmc.h>
+#include <fsl_esdhc.h>
+#include <miiphy.h>
+#include <netdev.h>
+#include <asm/arch/sys_proto.h>
+#include <i2c.h>
+#include <asm/arch/mxc_hdmi.h>
+#include <asm/mach-imx/video.h>
+#include <asm/arch/crm_regs.h>
+#include <pca953x.h>
+#include <power/pmic.h>
+#include <power/pfuze100_pmic.h>
+#include "../common/pfuze.h"
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define UART_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm |                 \
+       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define USDHC_PAD_CTRL (PAD_CTL_PUS_47K_UP |                   \
+       PAD_CTL_SPEED_LOW | PAD_CTL_DSE_80ohm |                 \
+       PAD_CTL_SRE_FAST  | PAD_CTL_HYS)
+
+#define ENET_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS)
+
+#define I2C_PAD_CTRL   (PAD_CTL_PUS_100K_UP |                  \
+       PAD_CTL_SPEED_MED | PAD_CTL_DSE_40ohm | PAD_CTL_HYS |   \
+       PAD_CTL_ODE | PAD_CTL_SRE_FAST)
+
+#define GPMI_PAD_CTRL0 (PAD_CTL_PKE | PAD_CTL_PUE | PAD_CTL_PUS_100K_UP)
+#define GPMI_PAD_CTRL1 (PAD_CTL_DSE_40ohm | PAD_CTL_SPEED_MED | \
+                       PAD_CTL_SRE_FAST)
+#define GPMI_PAD_CTRL2 (GPMI_PAD_CTRL0 | GPMI_PAD_CTRL1)
+
+#define PC MUX_PAD_CTRL(I2C_PAD_CTRL)
+
+#define WEIM_NOR_PAD_CTRL (PAD_CTL_PKE | PAD_CTL_PUE |          \
+       PAD_CTL_PUS_100K_UP | PAD_CTL_SPEED_MED |               \
+       PAD_CTL_DSE_40ohm   | PAD_CTL_SRE_FAST)
+
+#define I2C_PMIC       1
+
+int dram_init(void)
+{
+       gd->ram_size = imx_ddr_size();
+
+       return 0;
+}
+
+static iomux_v3_cfg_t const uart4_pads[] = {
+       IOMUX_PADS(PAD_KEY_COL0__UART4_TX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL)),
+       IOMUX_PADS(PAD_KEY_ROW0__UART4_RX_DATA | MUX_PAD_CTRL(UART_PAD_CTRL)),
+};
+
+static iomux_v3_cfg_t const enet_pads[] = {
+       IOMUX_PADS(PAD_KEY_COL1__ENET_MDIO              | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+       IOMUX_PADS(PAD_KEY_COL2__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)),
+       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)),
+};
+
+/* I2C2 PMIC, iPod, Tuner, Codec, Touch, HDMI EDID, MIPI CSI2 card */
+static struct i2c_pads_info mx6q_i2c_pad_info1 = {
+       .scl = {
+               .i2c_mode = MX6Q_PAD_EIM_EB2__I2C2_SCL | PC,
+               .gpio_mode = MX6Q_PAD_EIM_EB2__GPIO2_IO30 | PC,
+               .gp = IMX_GPIO_NR(2, 30)
+       },
+       .sda = {
+               .i2c_mode = MX6Q_PAD_KEY_ROW3__I2C2_SDA | PC,
+               .gpio_mode = MX6Q_PAD_KEY_ROW3__GPIO4_IO13 | PC,
+               .gp = IMX_GPIO_NR(4, 13)
+       }
+};
+
+static struct i2c_pads_info mx6dl_i2c_pad_info1 = {
+       .scl = {
+               .i2c_mode = MX6DL_PAD_EIM_EB2__I2C2_SCL | PC,
+               .gpio_mode = MX6DL_PAD_EIM_EB2__GPIO2_IO30 | PC,
+               .gp = IMX_GPIO_NR(2, 30)
+       },
+       .sda = {
+               .i2c_mode = MX6DL_PAD_KEY_ROW3__I2C2_SDA | PC,
+               .gpio_mode = MX6DL_PAD_KEY_ROW3__GPIO4_IO13 | PC,
+               .gp = IMX_GPIO_NR(4, 13)
+       }
+};
+
+#ifndef CONFIG_SYS_FLASH_CFI
+/*
+ * I2C3 MLB, Port Expanders (A, B, C), Video ADC, Light Sensor,
+ * Compass Sensor, Accelerometer, Res Touch
+ */
+static struct i2c_pads_info mx6q_i2c_pad_info2 = {
+       .scl = {
+               .i2c_mode = MX6Q_PAD_GPIO_3__I2C3_SCL | PC,
+               .gpio_mode = MX6Q_PAD_GPIO_3__GPIO1_IO03 | PC,
+               .gp = IMX_GPIO_NR(1, 3)
+       },
+       .sda = {
+               .i2c_mode = MX6Q_PAD_EIM_D18__I2C3_SDA | PC,
+               .gpio_mode = MX6Q_PAD_EIM_D18__GPIO3_IO18 | PC,
+               .gp = IMX_GPIO_NR(3, 18)
+       }
+};
+
+static struct i2c_pads_info mx6dl_i2c_pad_info2 = {
+       .scl = {
+               .i2c_mode = MX6DL_PAD_GPIO_3__I2C3_SCL | PC,
+               .gpio_mode = MX6DL_PAD_GPIO_3__GPIO1_IO03 | PC,
+               .gp = IMX_GPIO_NR(1, 3)
+       },
+       .sda = {
+               .i2c_mode = MX6DL_PAD_EIM_D18__I2C3_SDA | PC,
+               .gpio_mode = MX6DL_PAD_EIM_D18__GPIO3_IO18 | PC,
+               .gp = IMX_GPIO_NR(3, 18)
+       }
+};
+#endif
+
+static iomux_v3_cfg_t const i2c3_pads[] = {
+       IOMUX_PADS(PAD_EIM_A24__GPIO5_IO04      | MUX_PAD_CTRL(NO_PAD_CTRL)),
+};
+
+static iomux_v3_cfg_t const port_exp[] = {
+       IOMUX_PADS(PAD_SD2_DAT0__GPIO1_IO15     | MUX_PAD_CTRL(NO_PAD_CTRL)),
+};
+
+/*Define for building port exp gpio, pin starts from 0*/
+#define PORTEXP_IO_NR(chip, pin) \
+       ((chip << 5) + pin)
+
+/*Get the chip addr from a ioexp gpio*/
+#define PORTEXP_IO_TO_CHIP(gpio_nr) \
+       (gpio_nr >> 5)
+
+/*Get the pin number from a ioexp gpio*/
+#define PORTEXP_IO_TO_PIN(gpio_nr) \
+       (gpio_nr & 0x1f)
+
+static int port_exp_direction_output(unsigned gpio, int value)
+{
+       int ret;
+
+       i2c_set_bus_num(2);
+       ret = i2c_probe(PORTEXP_IO_TO_CHIP(gpio));
+       if (ret)
+               return ret;
+
+       ret = pca953x_set_dir(PORTEXP_IO_TO_CHIP(gpio),
+               (1 << PORTEXP_IO_TO_PIN(gpio)),
+               (PCA953X_DIR_OUT << PORTEXP_IO_TO_PIN(gpio)));
+
+       if (ret)
+               return ret;
+
+       ret = pca953x_set_val(PORTEXP_IO_TO_CHIP(gpio),
+               (1 << PORTEXP_IO_TO_PIN(gpio)),
+               (value << PORTEXP_IO_TO_PIN(gpio)));
+
+       if (ret)
+               return ret;
+
+       return 0;
+}
+
+#ifdef CONFIG_MTD_NOR_FLASH
+static iomux_v3_cfg_t const eimnor_pads[] = {
+       IOMUX_PADS(PAD_EIM_D16__EIM_DATA16      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D17__EIM_DATA17      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D18__EIM_DATA18      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D19__EIM_DATA19      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D20__EIM_DATA20      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D21__EIM_DATA21      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D22__EIM_DATA22      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D23__EIM_DATA23      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D24__EIM_DATA24      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D25__EIM_DATA25      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D26__EIM_DATA26      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D27__EIM_DATA27      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D28__EIM_DATA28      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D29__EIM_DATA29      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D30__EIM_DATA30      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_D31__EIM_DATA31      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA0__EIM_AD00        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA1__EIM_AD01        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA2__EIM_AD02        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA3__EIM_AD03        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA4__EIM_AD04        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA5__EIM_AD05        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA6__EIM_AD06        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA7__EIM_AD07        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA8__EIM_AD08        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA9__EIM_AD09        | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA10__EIM_AD10       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA11__EIM_AD11       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA12__EIM_AD12       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA13__EIM_AD13       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA14__EIM_AD14       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_DA15__EIM_AD15       | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_A16__EIM_ADDR16      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_A17__EIM_ADDR17      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_A18__EIM_ADDR18      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_A19__EIM_ADDR19      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_A20__EIM_ADDR20      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_A21__EIM_ADDR21      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_A22__EIM_ADDR22      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_A23__EIM_ADDR23      | MUX_PAD_CTRL(WEIM_NOR_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_OE__EIM_OE_B         | MUX_PAD_CTRL(NO_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_RW__EIM_RW           | MUX_PAD_CTRL(NO_PAD_CTRL)),
+       IOMUX_PADS(PAD_EIM_CS0__EIM_CS0_B       | MUX_PAD_CTRL(NO_PAD_CTRL)),
+};
+
+static void eimnor_cs_setup(void)
+{
+       struct weim *weim_regs = (struct weim *)WEIM_BASE_ADDR;
+
+       writel(0x00020181, &weim_regs->cs0gcr1);
+       writel(0x00000001, &weim_regs->cs0gcr2);
+       writel(0x0a020000, &weim_regs->cs0rcr1);
+       writel(0x0000c000, &weim_regs->cs0rcr2);
+       writel(0x0804a240, &weim_regs->cs0wcr1);
+       writel(0x00000120, &weim_regs->wcr);
+
+       set_chipselect_size(CS0_128);
+}
+
+static void eim_clk_setup(void)
+{
+       struct mxc_ccm_reg *imx_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       int cscmr1, ccgr6;
+
+
+       /* Turn off EIM clock */
+       ccgr6 = readl(&imx_ccm->CCGR6);
+       ccgr6 &= ~(0x3 << 10);
+       writel(ccgr6, &imx_ccm->CCGR6);
+
+       /*
+        * Configure clk_eim_slow_sel = 00 --> derive clock from AXI clk root
+        * and aclk_eim_slow_podf = 01 --> divide by 2
+        * so that we can have EIM at the maximum clock of 132MHz
+        */
+       cscmr1 = readl(&imx_ccm->cscmr1);
+       cscmr1 &= ~(MXC_CCM_CSCMR1_ACLK_EMI_SLOW_MASK |
+                   MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_MASK);
+       cscmr1 |= (1 << MXC_CCM_CSCMR1_ACLK_EMI_SLOW_PODF_OFFSET);
+       writel(cscmr1, &imx_ccm->cscmr1);
+
+       /* Turn on EIM clock */
+       ccgr6 |= (0x3 << 10);
+       writel(ccgr6, &imx_ccm->CCGR6);
+}
+
+static void setup_iomux_eimnor(void)
+{
+       SETUP_IOMUX_PADS(eimnor_pads);
+
+       gpio_direction_output(IMX_GPIO_NR(5, 4), 0);
+
+       eimnor_cs_setup();
+}
+#endif
+
+static void setup_iomux_enet(void)
+{
+       SETUP_IOMUX_PADS(enet_pads);
+}
+
+static iomux_v3_cfg_t const usdhc3_pads[] = {
+       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)),
+       IOMUX_PADS(PAD_SD3_DAT4__SD3_DATA4      | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_SD3_DAT5__SD3_DATA5      | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_SD3_DAT6__SD3_DATA6      | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_SD3_DAT7__SD3_DATA7      | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_GPIO_18__SD3_VSELECT     | MUX_PAD_CTRL(USDHC_PAD_CTRL)),
+       IOMUX_PADS(PAD_NANDF_CS2__GPIO6_IO15    | MUX_PAD_CTRL(NO_PAD_CTRL)),
+};
+
+static void setup_iomux_uart(void)
+{
+       SETUP_IOMUX_PADS(uart4_pads);
+}
+
+#ifdef CONFIG_FSL_ESDHC
+static struct fsl_esdhc_cfg usdhc_cfg[1] = {
+       {USDHC3_BASE_ADDR},
+};
+
+int board_mmc_getcd(struct mmc *mmc)
+{
+       gpio_direction_input(IMX_GPIO_NR(6, 15));
+       return !gpio_get_value(IMX_GPIO_NR(6, 15));
+}
+
+int board_mmc_init(bd_t *bis)
+{
+       SETUP_IOMUX_PADS(usdhc3_pads);
+
+       usdhc_cfg[0].sdhc_clk = mxc_get_clock(MXC_ESDHC3_CLK);
+       return fsl_esdhc_initialize(bis, &usdhc_cfg[0]);
+}
+#endif
+
+#ifdef CONFIG_NAND_MXS
+static iomux_v3_cfg_t gpmi_pads[] = {
+       IOMUX_PADS(PAD_NANDF_CLE__NAND_CLE      | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_ALE__NAND_ALE      | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_WP_B__NAND_WP_B    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_RB0__NAND_READY_B  | MUX_PAD_CTRL(GPMI_PAD_CTRL0)),
+       IOMUX_PADS(PAD_NANDF_CS0__NAND_CE0_B    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_SD4_CMD__NAND_RE_B       | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_SD4_CLK__NAND_WE_B       | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_D0__NAND_DATA00    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_D1__NAND_DATA01    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_D2__NAND_DATA02    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_D3__NAND_DATA03    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_D4__NAND_DATA04    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_D5__NAND_DATA05    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_D6__NAND_DATA06    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_NANDF_D7__NAND_DATA07    | MUX_PAD_CTRL(GPMI_PAD_CTRL2)),
+       IOMUX_PADS(PAD_SD4_DAT0__NAND_DQS       | MUX_PAD_CTRL(GPMI_PAD_CTRL1)),
+};
+
+static void setup_gpmi_nand(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       /* config gpmi nand iomux */
+       SETUP_IOMUX_PADS(gpmi_pads);
+
+       setup_gpmi_io_clk((MXC_CCM_CS2CDR_ENFC_CLK_PODF(0) |
+                       MXC_CCM_CS2CDR_ENFC_CLK_PRED(3) |
+                       MXC_CCM_CS2CDR_ENFC_CLK_SEL(3)));
+
+       /* enable apbh clock gating */
+       setbits_le32(&mxc_ccm->CCGR0, MXC_CCM_CCGR0_APBHDMA_MASK);
+}
+#endif
+
+static void setup_fec(void)
+{
+       if (is_mx6dqp()) {
+               /*
+                * select ENET MAC0 TX clock from PLL
+                */
+               imx_iomux_set_gpr_register(5, 9, 1, 1);
+               enable_fec_anatop_clock(0, ENET_125MHZ);
+       }
+
+       setup_iomux_enet();
+}
+
+int board_eth_init(bd_t *bis)
+{
+       setup_fec();
+
+       return cpu_eth_init(bis);
+}
+
+#define BOARD_REV_B  0x200
+#define BOARD_REV_A  0x100
+
+static int mx6sabre_rev(void)
+{
+       /*
+        * Get Board ID information from OCOTP_GP1[15:8]
+        * i.MX6Q ARD RevA: 0x01
+        * i.MX6Q ARD RevB: 0x02
+        */
+       struct ocotp_regs *ocotp = (struct ocotp_regs *)OCOTP_BASE_ADDR;
+       struct fuse_bank *bank = &ocotp->bank[4];
+       struct fuse_bank4_regs *fuse =
+                       (struct fuse_bank4_regs *)bank->fuse_regs;
+       int reg = readl(&fuse->gp1);
+       int ret;
+
+       switch (reg >> 8 & 0x0F) {
+       case 0x02:
+               ret = BOARD_REV_B;
+               break;
+       case 0x01:
+       default:
+               ret = BOARD_REV_A;
+               break;
+       }
+
+       return ret;
+}
+
+u32 get_board_rev(void)
+{
+       int rev = mx6sabre_rev();
+
+       return (get_cpu_rev() & ~(0xF << 8)) | rev;
+}
+
+static int ar8031_phy_fixup(struct phy_device *phydev)
+{
+       unsigned short val;
+
+       /* To enable AR8031 ouput a 125MHz clk from CLK_25M */
+       phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x7);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 0x8016);
+       phy_write(phydev, MDIO_DEVAD_NONE, 0xd, 0x4007);
+
+       val = phy_read(phydev, MDIO_DEVAD_NONE, 0xe);
+       val &= 0xffe3;
+       val |= 0x18;
+       phy_write(phydev, MDIO_DEVAD_NONE, 0xe, 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);
+
+       return 0;
+}
+
+int board_phy_config(struct phy_device *phydev)
+{
+       ar8031_phy_fixup(phydev);
+
+       if (phydev->drv->config)
+               phydev->drv->config(phydev);
+
+       return 0;
+}
+
+#if defined(CONFIG_VIDEO_IPUV3)
+static void disable_lvds(struct display_info_t const *dev)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       clrbits_le32(&iomux->gpr[2],
+                    IOMUXC_GPR2_LVDS_CH0_MODE_MASK |
+                    IOMUXC_GPR2_LVDS_CH1_MODE_MASK);
+}
+
+static void do_enable_hdmi(struct display_info_t const *dev)
+{
+       disable_lvds(dev);
+       imx_enable_hdmi_phy();
+}
+
+struct display_info_t const displays[] = {{
+       .bus    = -1,
+       .addr   = 0,
+       .pixfmt = IPU_PIX_FMT_RGB666,
+       .detect = NULL,
+       .enable = NULL,
+       .mode   = {
+               .name           = "Hannstar-XGA",
+               .refresh        = 60,
+               .xres           = 1024,
+               .yres           = 768,
+               .pixclock       = 15385,
+               .left_margin    = 220,
+               .right_margin   = 40,
+               .upper_margin   = 21,
+               .lower_margin   = 7,
+               .hsync_len      = 60,
+               .vsync_len      = 10,
+               .sync           = FB_SYNC_EXT,
+               .vmode          = FB_VMODE_NONINTERLACED
+} }, {
+       .bus    = -1,
+       .addr   = 0,
+       .pixfmt = IPU_PIX_FMT_RGB24,
+       .detect = detect_hdmi,
+       .enable = do_enable_hdmi,
+       .mode   = {
+               .name           = "HDMI",
+               .refresh        = 60,
+               .xres           = 1024,
+               .yres           = 768,
+               .pixclock       = 15385,
+               .left_margin    = 220,
+               .right_margin   = 40,
+               .upper_margin   = 21,
+               .lower_margin   = 7,
+               .hsync_len      = 60,
+               .vsync_len      = 10,
+               .sync           = FB_SYNC_EXT,
+               .vmode          = FB_VMODE_NONINTERLACED,
+} } };
+size_t display_count = ARRAY_SIZE(displays);
+
+iomux_v3_cfg_t const backlight_pads[] = {
+       IOMUX_PADS(PAD_SD4_DAT1__GPIO2_IO09 | MUX_PAD_CTRL(ENET_PAD_CTRL)),
+};
+
+static void setup_iomux_backlight(void)
+{
+       gpio_direction_output(IMX_GPIO_NR(2, 9), 1);
+       SETUP_IOMUX_PADS(backlight_pads);
+}
+
+static void setup_display(void)
+{
+       struct mxc_ccm_reg *mxc_ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+       int reg;
+
+       setup_iomux_backlight();
+       enable_ipu_clock();
+       imx_setup_hdmi();
+
+       /* Turn on LDB_DI0 and LDB_DI1 clocks */
+       reg = readl(&mxc_ccm->CCGR3);
+       reg |= MXC_CCM_CCGR3_LDB_DI0_MASK | MXC_CCM_CCGR3_LDB_DI1_MASK;
+       writel(reg, &mxc_ccm->CCGR3);
+
+       /* Set LDB_DI0 and LDB_DI1 clk select to 3b'011 */
+       reg = readl(&mxc_ccm->cs2cdr);
+       reg &= ~(MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_MASK |
+                MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_MASK);
+       reg |= (3 << MXC_CCM_CS2CDR_LDB_DI0_CLK_SEL_OFFSET) |
+              (3 << MXC_CCM_CS2CDR_LDB_DI1_CLK_SEL_OFFSET);
+       writel(reg, &mxc_ccm->cs2cdr);
+
+       reg = readl(&mxc_ccm->cscmr2);
+       reg |= MXC_CCM_CSCMR2_LDB_DI0_IPU_DIV | MXC_CCM_CSCMR2_LDB_DI1_IPU_DIV;
+       writel(reg, &mxc_ccm->cscmr2);
+
+       reg = readl(&mxc_ccm->chsccdr);
+       reg |= (CHSCCDR_CLK_SEL_LDB_DI0
+               << MXC_CCM_CHSCCDR_IPU1_DI0_CLK_SEL_OFFSET);
+       reg |= (CHSCCDR_CLK_SEL_LDB_DI0 <<
+               MXC_CCM_CHSCCDR_IPU1_DI1_CLK_SEL_OFFSET);
+       writel(reg, &mxc_ccm->chsccdr);
+
+       reg = IOMUXC_GPR2_DI1_VS_POLARITY_ACTIVE_LOW |
+             IOMUXC_GPR2_DI0_VS_POLARITY_ACTIVE_LOW |
+             IOMUXC_GPR2_BIT_MAPPING_CH1_SPWG |
+             IOMUXC_GPR2_DATA_WIDTH_CH1_18BIT |
+             IOMUXC_GPR2_BIT_MAPPING_CH0_SPWG |
+             IOMUXC_GPR2_DATA_WIDTH_CH0_18BIT |
+             IOMUXC_GPR2_LVDS_CH0_MODE_ENABLED_DI0 |
+             IOMUXC_GPR2_LVDS_CH1_MODE_DISABLED;
+       writel(reg, &iomux->gpr[2]);
+
+       reg = readl(&iomux->gpr[3]);
+       reg &= ~(IOMUXC_GPR3_LVDS0_MUX_CTL_MASK |
+                IOMUXC_GPR3_HDMI_MUX_CTL_MASK);
+       reg |= (IOMUXC_GPR3_MUX_SRC_IPU1_DI0 <<
+               IOMUXC_GPR3_LVDS0_MUX_CTL_OFFSET) |
+              (IOMUXC_GPR3_MUX_SRC_IPU1_DI0 <<
+               IOMUXC_GPR3_HDMI_MUX_CTL_OFFSET);
+       writel(reg, &iomux->gpr[3]);
+}
+#endif /* CONFIG_VIDEO_IPUV3 */
+
+/*
+ * Do not overwrite the console
+ * Use always serial for U-Boot console
+ */
+int overwrite_console(void)
+{
+       return 1;
+}
+
+int board_early_init_f(void)
+{
+       setup_iomux_uart();
+
+#ifdef CONFIG_NAND_MXS
+       setup_gpmi_nand();
+#endif
+
+#ifdef CONFIG_MTD_NOR_FLASH
+       eim_clk_setup();
+#endif
+       return 0;
+}
+
+int board_init(void)
+{
+       /* address of boot parameters */
+       gd->bd->bi_boot_params = PHYS_SDRAM + 0x100;
+
+       /* I2C 2 and 3 setup - I2C 3 hw mux with EIM */
+       if (is_mx6dq() || is_mx6dqp())
+               setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &mx6q_i2c_pad_info1);
+       else
+               setup_i2c(1, CONFIG_SYS_I2C_SPEED, 0x7f, &mx6dl_i2c_pad_info1);
+       /* I2C 3 Steer */
+       gpio_direction_output(IMX_GPIO_NR(5, 4), 1);
+       SETUP_IOMUX_PADS(i2c3_pads);
+#ifndef CONFIG_SYS_FLASH_CFI
+       if (is_mx6dq() || is_mx6dqp())
+               setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &mx6q_i2c_pad_info2);
+       else
+               setup_i2c(2, CONFIG_SYS_I2C_SPEED, 0x7f, &mx6dl_i2c_pad_info2);
+#endif
+       gpio_direction_output(IMX_GPIO_NR(1, 15), 1);
+       SETUP_IOMUX_PADS(port_exp);
+
+#ifdef CONFIG_VIDEO_IPUV3
+       setup_display();
+#endif
+
+#ifdef CONFIG_MTD_NOR_FLASH
+       setup_iomux_eimnor();
+#endif
+       return 0;
+}
+
+#ifdef CONFIG_MXC_SPI
+int board_spi_cs_gpio(unsigned bus, unsigned cs)
+{
+       return (bus == 0 && cs == 0) ? (IMX_GPIO_NR(4, 9)) : -1;
+}
+#endif
+
+int power_init_board(void)
+{
+       struct pmic *p;
+       unsigned int value;
+
+       p = pfuze_common_init(I2C_PMIC);
+       if (!p)
+               return -ENODEV;
+
+       if (is_mx6dqp()) {
+               /* set SW2 staby volatage 0.975V*/
+               pmic_reg_read(p, PFUZE100_SW2STBY, &value);
+               value &= ~0x3f;
+               value |= 0x17;
+               pmic_reg_write(p, PFUZE100_SW2STBY, value);
+       }
+
+       return pfuze_mode_init(p, APS_PFM);
+}
+
+#ifdef CONFIG_CMD_BMODE
+static const struct boot_mode board_boot_modes[] = {
+       /* 4 bit bus width */
+       {"mmc0", MAKE_CFGVAL(0x40, 0x30, 0x00, 0x00)},
+       {NULL,   0},
+};
+#endif
+
+int board_late_init(void)
+{
+#ifdef CONFIG_CMD_BMODE
+       add_board_boot_modes(board_boot_modes);
+#endif
+
+#ifdef CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
+       setenv("board_name", "SABREAUTO");
+
+       if (is_mx6dqp())
+               setenv("board_rev", "MX6QP");
+       else if (is_mx6dq())
+               setenv("board_rev", "MX6Q");
+       else if (is_mx6sdl())
+               setenv("board_rev", "MX6DL");
+#endif
+
+       return 0;
+}
+
+int checkboard(void)
+{
+       int rev = mx6sabre_rev();
+       char *revname;
+
+       switch (rev) {
+       case BOARD_REV_B:
+               revname = "B";
+               break;
+       case BOARD_REV_A:
+       default:
+               revname = "A";
+               break;
+       }
+
+       printf("Board: MX6Q-Sabreauto rev%s\n", revname);
+
+       return 0;
+}
+
+#ifdef CONFIG_USB_EHCI_MX6
+#define USB_HOST1_PWR     PORTEXP_IO_NR(0x32, 7)
+#define USB_OTG_PWR       PORTEXP_IO_NR(0x34, 1)
+
+iomux_v3_cfg_t const usb_otg_pads[] = {
+       IOMUX_PADS(PAD_ENET_RX_ER__USB_OTG_ID | MUX_PAD_CTRL(NO_PAD_CTRL)),
+};
+
+int board_ehci_hcd_init(int port)
+{
+       switch (port) {
+       case 0:
+               SETUP_IOMUX_PADS(usb_otg_pads);
+
+               /*
+                 * Set daisy chain for otg_pin_id on 6q.
+                *  For 6dl, this bit is reserved.
+                */
+               imx_iomux_set_gpr_register(1, 13, 1, 0);
+               break;
+       case 1:
+               break;
+       default:
+               printf("MXC USB port %d not yet supported\n", port);
+               return -EINVAL;
+       }
+       return 0;
+}
+
+int board_ehci_power(int port, int on)
+{
+       switch (port) {
+       case 0:
+               if (on)
+                       port_exp_direction_output(USB_OTG_PWR, 1);
+               else
+                       port_exp_direction_output(USB_OTG_PWR, 0);
+               break;
+       case 1:
+               if (on)
+                       port_exp_direction_output(USB_HOST1_PWR, 1);
+               else
+                       port_exp_direction_output(USB_HOST1_PWR, 0);
+               break;
+       default:
+               printf("MXC USB port %d not yet supported\n", port);
+               return -EINVAL;
+       }
+
+       return 0;
+}
+#endif
+
+#ifdef CONFIG_SPL_BUILD
+#include <asm/arch/mx6-ddr.h>
+#include <spl.h>
+#include <libfdt.h>
+
+#ifdef CONFIG_SPL_OS_BOOT
+int spl_start_uboot(void)
+{
+       return 0;
+}
+#endif
+
+static void ccgr_init(void)
+{
+       struct mxc_ccm_reg *ccm = (struct mxc_ccm_reg *)CCM_BASE_ADDR;
+
+       writel(0x00C03F3F, &ccm->CCGR0);
+       writel(0x0030FC03, &ccm->CCGR1);
+       writel(0x0FFFC000, &ccm->CCGR2);
+       writel(0x3FF00000, &ccm->CCGR3);
+       writel(0x00FFF300, &ccm->CCGR4);
+       writel(0x0F0000C3, &ccm->CCGR5);
+       writel(0x000003FF, &ccm->CCGR6);
+}
+
+static void gpr_init(void)
+{
+       struct iomuxc *iomux = (struct iomuxc *)IOMUXC_BASE_ADDR;
+
+       /* enable AXI cache for VDOA/VPU/IPU */
+       writel(0xF00000CF, &iomux->gpr[4]);
+       if (is_mx6dqp()) {
+               /* set IPU AXI-id1 Qos=0x1 AXI-id0/2/3 Qos=0x7 */
+               writel(0x007F007F, &iomux->gpr[6]);
+               writel(0x007F007F, &iomux->gpr[7]);
+       } else {
+               /* set IPU AXI-id0 Qos=0xf(bypass) AXI-id1 Qos=0x7 */
+               writel(0x007F007F, &iomux->gpr[6]);
+               writel(0x007F007F, &iomux->gpr[7]);
+       }
+}
+
+static int mx6q_dcd_table[] = {
+       0x020e0798, 0x000C0000,
+       0x020e0758, 0x00000000,
+       0x020e0588, 0x00000030,
+       0x020e0594, 0x00000030,
+       0x020e056c, 0x00000030,
+       0x020e0578, 0x00000030,
+       0x020e074c, 0x00000030,
+       0x020e057c, 0x00000030,
+       0x020e058c, 0x00000000,
+       0x020e059c, 0x00000030,
+       0x020e05a0, 0x00000030,
+       0x020e078c, 0x00000030,
+       0x020e0750, 0x00020000,
+       0x020e05a8, 0x00000028,
+       0x020e05b0, 0x00000028,
+       0x020e0524, 0x00000028,
+       0x020e051c, 0x00000028,
+       0x020e0518, 0x00000028,
+       0x020e050c, 0x00000028,
+       0x020e05b8, 0x00000028,
+       0x020e05c0, 0x00000028,
+       0x020e0774, 0x00020000,
+       0x020e0784, 0x00000028,
+       0x020e0788, 0x00000028,
+       0x020e0794, 0x00000028,
+       0x020e079c, 0x00000028,
+       0x020e07a0, 0x00000028,
+       0x020e07a4, 0x00000028,
+       0x020e07a8, 0x00000028,
+       0x020e0748, 0x00000028,
+       0x020e05ac, 0x00000028,
+       0x020e05b4, 0x00000028,
+       0x020e0528, 0x00000028,
+       0x020e0520, 0x00000028,
+       0x020e0514, 0x00000028,
+       0x020e0510, 0x00000028,
+       0x020e05bc, 0x00000028,
+       0x020e05c4, 0x00000028,
+       0x021b0800, 0xa1390003,
+       0x021b080c, 0x001F001F,
+       0x021b0810, 0x001F001F,
+       0x021b480c, 0x001F001F,
+       0x021b4810, 0x001F001F,
+       0x021b083c, 0x43260335,
+       0x021b0840, 0x031A030B,
+       0x021b483c, 0x4323033B,
+       0x021b4840, 0x0323026F,
+       0x021b0848, 0x483D4545,
+       0x021b4848, 0x44433E48,
+       0x021b0850, 0x41444840,
+       0x021b4850, 0x4835483E,
+       0x021b081c, 0x33333333,
+       0x021b0820, 0x33333333,
+       0x021b0824, 0x33333333,
+       0x021b0828, 0x33333333,
+       0x021b481c, 0x33333333,
+       0x021b4820, 0x33333333,
+       0x021b4824, 0x33333333,
+       0x021b4828, 0x33333333,
+       0x021b08b8, 0x00000800,
+       0x021b48b8, 0x00000800,
+       0x021b0004, 0x00020036,
+       0x021b0008, 0x09444040,
+       0x021b000c, 0x8A8F7955,
+       0x021b0010, 0xFF328F64,
+       0x021b0014, 0x01FF00DB,
+       0x021b0018, 0x00001740,
+       0x021b001c, 0x00008000,
+       0x021b002c, 0x000026d2,
+       0x021b0030, 0x008F1023,
+       0x021b0040, 0x00000047,
+       0x021b0000, 0x841A0000,
+       0x021b001c, 0x04088032,
+       0x021b001c, 0x00008033,
+       0x021b001c, 0x00048031,
+       0x021b001c, 0x09408030,
+       0x021b001c, 0x04008040,
+       0x021b0020, 0x00005800,
+       0x021b0818, 0x00011117,
+       0x021b4818, 0x00011117,
+       0x021b0004, 0x00025576,
+       0x021b0404, 0x00011006,
+       0x021b001c, 0x00000000,
+       0x020c4068, 0x00C03F3F,
+       0x020c406c, 0x0030FC03,
+       0x020c4070, 0x0FFFC000,
+       0x020c4074, 0x3FF00000,
+       0x020c4078, 0xFFFFF300,
+       0x020c407c, 0x0F0000F3,
+       0x020c4080, 0x00000FFF,
+       0x020e0010, 0xF00000CF,
+       0x020e0018, 0x007F007F,
+       0x020e001c, 0x007F007F,
+};
+
+static int mx6qp_dcd_table[] = {
+       0x020e0798, 0x000C0000,
+       0x020e0758, 0x00000000,
+       0x020e0588, 0x00000030,
+       0x020e0594, 0x00000030,
+       0x020e056c, 0x00000030,
+       0x020e0578, 0x00000030,
+       0x020e074c, 0x00000030,
+       0x020e057c, 0x00000030,
+       0x020e058c, 0x00000000,
+       0x020e059c, 0x00000030,
+       0x020e05a0, 0x00000030,
+       0x020e078c, 0x00000030,
+       0x020e0750, 0x00020000,
+       0x020e05a8, 0x00000030,
+       0x020e05b0, 0x00000030,
+       0x020e0524, 0x00000030,
+       0x020e051c, 0x00000030,
+       0x020e0518, 0x00000030,
+       0x020e050c, 0x00000030,
+       0x020e05b8, 0x00000030,
+       0x020e05c0, 0x00000030,
+       0x020e0774, 0x00020000,
+       0x020e0784, 0x00000030,
+       0x020e0788, 0x00000030,
+       0x020e0794, 0x00000030,
+       0x020e079c, 0x00000030,
+       0x020e07a0, 0x00000030,
+       0x020e07a4, 0x00000030,
+       0x020e07a8, 0x00000030,
+       0x020e0748, 0x00000030,
+       0x020e05ac, 0x00000030,
+       0x020e05b4, 0x00000030,
+       0x020e0528, 0x00000030,
+       0x020e0520, 0x00000030,
+       0x020e0514, 0x00000030,
+       0x020e0510, 0x00000030,
+       0x020e05bc, 0x00000030,
+       0x020e05c4, 0x00000030,
+       0x021b0800, 0xa1390003,
+       0x021b080c, 0x001b001e,
+       0x021b0810, 0x002e0029,
+       0x021b480c, 0x001b002a,
+       0x021b4810, 0x0019002c,
+       0x021b083c, 0x43240334,
+       0x021b0840, 0x0324031a,
+       0x021b483c, 0x43340344,
+       0x021b4840, 0x03280276,
+       0x021b0848, 0x44383A3E,
+       0x021b4848, 0x3C3C3846,
+       0x021b0850, 0x2e303230,
+       0x021b4850, 0x38283E34,
+       0x021b081c, 0x33333333,
+       0x021b0820, 0x33333333,
+       0x021b0824, 0x33333333,
+       0x021b0828, 0x33333333,
+       0x021b481c, 0x33333333,
+       0x021b4820, 0x33333333,
+       0x021b4824, 0x33333333,
+       0x021b4828, 0x33333333,
+       0x021b08c0, 0x24912492,
+       0x021b48c0, 0x24912492,
+       0x021b08b8, 0x00000800,
+       0x021b48b8, 0x00000800,
+       0x021b0004, 0x00020036,
+       0x021b0008, 0x09444040,
+       0x021b000c, 0x898E7955,
+       0x021b0010, 0xFF328F64,
+       0x021b0014, 0x01FF00DB,
+       0x021b0018, 0x00001740,
+       0x021b001c, 0x00008000,
+       0x021b002c, 0x000026d2,
+       0x021b0030, 0x008E1023,
+       0x021b0040, 0x00000047,
+       0x021b0400, 0x14420000,
+       0x021b0000, 0x841A0000,
+       0x00bb0008, 0x00000004,
+       0x00bb000c, 0x2891E41A,
+       0x00bb0038, 0x00000564,
+       0x00bb0014, 0x00000040,
+       0x00bb0028, 0x00000020,
+       0x00bb002c, 0x00000020,
+       0x021b001c, 0x04088032,
+       0x021b001c, 0x00008033,
+       0x021b001c, 0x00048031,
+       0x021b001c, 0x09408030,
+       0x021b001c, 0x04008040,
+       0x021b0020, 0x00005800,
+       0x021b0818, 0x00011117,
+       0x021b4818, 0x00011117,
+       0x021b0004, 0x00025576,
+       0x021b0404, 0x00011006,
+       0x021b001c, 0x00000000,
+       0x020c4068, 0x00C03F3F,
+       0x020c406c, 0x0030FC03,
+       0x020c4070, 0x0FFFC000,
+       0x020c4074, 0x3FF00000,
+       0x020c4078, 0xFFFFF300,
+       0x020c407c, 0x0F0000F3,
+       0x020c4080, 0x00000FFF,
+       0x020e0010, 0xF00000CF,
+       0x020e0018, 0x77177717,
+       0x020e001c, 0x77177717,
+};
+
+static int mx6dl_dcd_table[] = {
+       0x020e0774, 0x000C0000,
+       0x020e0754, 0x00000000,
+       0x020e04ac, 0x00000030,
+       0x020e04b0, 0x00000030,
+       0x020e0464, 0x00000030,
+       0x020e0490, 0x00000030,
+       0x020e074c, 0x00000030,
+       0x020e0494, 0x00000030,
+       0x020e04a0, 0x00000000,
+       0x020e04b4, 0x00000030,
+       0x020e04b8, 0x00000030,
+       0x020e076c, 0x00000030,
+       0x020e0750, 0x00020000,
+       0x020e04bc, 0x00000028,
+       0x020e04c0, 0x00000028,
+       0x020e04c4, 0x00000028,
+       0x020e04c8, 0x00000028,
+       0x020e04cc, 0x00000028,
+       0x020e04d0, 0x00000028,
+       0x020e04d4, 0x00000028,
+       0x020e04d8, 0x00000028,
+       0x020e0760, 0x00020000,
+       0x020e0764, 0x00000028,
+       0x020e0770, 0x00000028,
+       0x020e0778, 0x00000028,
+       0x020e077c, 0x00000028,
+       0x020e0780, 0x00000028,
+       0x020e0784, 0x00000028,
+       0x020e078c, 0x00000028,
+       0x020e0748, 0x00000028,
+       0x020e0470, 0x00000028,
+       0x020e0474, 0x00000028,
+       0x020e0478, 0x00000028,
+       0x020e047c, 0x00000028,
+       0x020e0480, 0x00000028,
+       0x020e0484, 0x00000028,
+       0x020e0488, 0x00000028,
+       0x020e048c, 0x00000028,
+       0x021b0800, 0xa1390003,
+       0x021b080c, 0x001F001F,
+       0x021b0810, 0x001F001F,
+       0x021b480c, 0x001F001F,
+       0x021b4810, 0x001F001F,
+       0x021b083c, 0x42190217,
+       0x021b0840, 0x017B017B,
+       0x021b483c, 0x4176017B,
+       0x021b4840, 0x015F016C,
+       0x021b0848, 0x4C4C4D4C,
+       0x021b4848, 0x4A4D4C48,
+       0x021b0850, 0x3F3F3F40,
+       0x021b4850, 0x3538382E,
+       0x021b081c, 0x33333333,
+       0x021b0820, 0x33333333,
+       0x021b0824, 0x33333333,
+       0x021b0828, 0x33333333,
+       0x021b481c, 0x33333333,
+       0x021b4820, 0x33333333,
+       0x021b4824, 0x33333333,
+       0x021b4828, 0x33333333,
+       0x021b08b8, 0x00000800,
+       0x021b48b8, 0x00000800,
+       0x021b0004, 0x00020025,
+       0x021b0008, 0x00333030,
+       0x021b000c, 0x676B5313,
+       0x021b0010, 0xB66E8B63,
+       0x021b0014, 0x01FF00DB,
+       0x021b0018, 0x00001740,
+       0x021b001c, 0x00008000,
+       0x021b002c, 0x000026d2,
+       0x021b0030, 0x006B1023,
+       0x021b0040, 0x00000047,
+       0x021b0000, 0x841A0000,
+       0x021b001c, 0x04008032,
+       0x021b001c, 0x00008033,
+       0x021b001c, 0x00048031,
+       0x021b001c, 0x05208030,
+       0x021b001c, 0x04008040,
+       0x021b0020, 0x00005800,
+       0x021b0818, 0x00011117,
+       0x021b4818, 0x00011117,
+       0x021b0004, 0x00025565,
+       0x021b0404, 0x00011006,
+       0x021b001c, 0x00000000,
+       0x020c4068, 0x00C03F3F,
+       0x020c406c, 0x0030FC03,
+       0x020c4070, 0x0FFFC000,
+       0x020c4074, 0x3FF00000,
+       0x020c4078, 0xFFFFF300,
+       0x020c407c, 0x0F0000C3,
+       0x020c4080, 0x00000FFF,
+       0x020e0010, 0xF00000CF,
+       0x020e0018, 0x007F007F,
+       0x020e001c, 0x007F007F,
+};
+
+static void ddr_init(int *table, int size)
+{
+       int i;
+
+       for (i = 0; i < size / 2 ; i++)
+               writel(table[2 * i + 1], table[2 * i]);
+}
+
+static void spl_dram_init(void)
+{
+       if (is_mx6dq())
+               ddr_init(mx6q_dcd_table, ARRAY_SIZE(mx6q_dcd_table));
+       else if (is_mx6dqp())
+               ddr_init(mx6qp_dcd_table, ARRAY_SIZE(mx6qp_dcd_table));
+       else if (is_mx6sdl())
+               ddr_init(mx6dl_dcd_table, ARRAY_SIZE(mx6dl_dcd_table));
+}
+
+void board_init_f(ulong dummy)
+{
+       /* DDR initialization */
+       spl_dram_init();
+
+       /* setup AIPS and disable watchdog */
+       arch_cpu_init();
+
+       ccgr_init();
+       gpr_init();
+
+       /* iomux and setup of i2c */
+       board_early_init_f();
+
+       /* setup GP timer */
+       timer_init();
+
+       /* UART clocks enabled and gd valid - init serial console */
+       preloader_console_init();
+
+       /* Clear the BSS. */
+       memset(__bss_start, 0, __bss_end - __bss_start);
+
+       /* load/boot image from boot device */
+       board_init_r(NULL, 0);
+}
+#endif
index f4a5d9cff95e1473068b93dc94e942db57947fed..e4160420fa8b393d792c05b1433f39cb331dee1e 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
index 228514b106a8dacba1d6f88b0c9aed7c03df7399..8afd5da49f605f9c0c40a18f688de8831d70b3db 100644 (file)
@@ -14,9 +14,9 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/spi.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/spi.h>
 #include <asm/io.h>
 #include <linux/sizes.h>
 #include <common.h>
index 74a27a3af0463f849035a2b5ece297e0bc1117c4..33aada179f80d7f0ad4e57091fdfc3a4d7397531 100644 (file)
@@ -11,8 +11,8 @@
 #include <asm/arch/mx6-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/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <asm/io.h>
 #include <common.h>
 #include <linux/sizes.h>
index e7ab81091d8857604f9a4ba80a7ecb84464f5b57..83473d80b01d7df94f708431981e89aaad3eae61 100644 (file)
@@ -13,8 +13,8 @@
 #include <asm/arch/mx6-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/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <asm/io.h>
 #include <linux/sizes.h>
 #include <common.h>
index 0460cd9257b15196288a17cac35a130f9205f390..2aeef61ffdef8785185188b7b2e877706eadffdb 100644 (file)
@@ -13,9 +13,9 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 #include <asm/io.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <linux/sizes.h>
 #include <common.h>
 #include <fsl_esdhc.h>
index a5746fe08688d5752bf1d69cff465a355404d6da..a30c379e4ddd5a9e895844bf8d28bf867f050be1 100644 (file)
@@ -12,9 +12,9 @@
 #include <asm/arch/mx6-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/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/io.h>
 #include <common.h>
 #include <fsl_esdhc.h>
index 489bf2114b8a727ff03c072d520cc8df389e024e..66b08f823e3fabcae29f4814317495fa24e8ef1c 100644 (file)
@@ -11,8 +11,8 @@
 #include <asm/arch/mx6-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/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <asm/io.h>
 #include <common.h>
 #include <fsl_esdhc.h>
index ecea5a529aa8f560ac70f5a53f54a92ee55af8ad..a681ecef3aa96d9bce12c92aa0ec2fe25dfa697e 100644 (file)
@@ -9,7 +9,7 @@
 #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/mach-imx/iomux-v3.h>
 #include <asm/io.h>
 #include <linux/sizes.h>
 #include <common.h>
@@ -21,7 +21,7 @@
 #include <power/pfuze3000_pmic.h>
 #include "../common/pfuze.h"
 #include <i2c.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/arch/crm_regs.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -354,6 +354,12 @@ int power_init_board(void)
 
        pmic_clrsetbits(dev, PFUZE3000_LDOGCTL, 0, 1);
 
+       /*
+        * Set the voltage of VLDO4 output to 2.8V which feeds
+        * the MIPI DSI and MIPI CSI inputs.
+        */
+       pmic_clrsetbits(dev, PFUZE3000_VLD4CTL, 0xF, 0xA);
+
        return 0;
 }
 #endif
index 6449ef2873288460892055c9c7d6e551403c24b9..6626a12dc65f0c8d202b36fab0366165bd237c34 100644 (file)
@@ -10,7 +10,7 @@
  *
  * The syntax is taken as close as possible with the kwbimage
  */
-#include <asm/imx-common/imximage.cfg>
+#include <asm/mach-imx/imximage.cfg>
 
 /* image version */
 IMAGE_VERSION  2
index 09125cff126b1e64802e28a94607ddb01299f92a..70157ede541989b83c8a18f8c943a9b9ba87ec7f 100644 (file)
@@ -8,7 +8,7 @@
  *
  * The syntax is taken as close as possible with the kwbimage
  */
-#include <asm/imx-common/imximage.cfg>
+#include <asm/mach-imx/imximage.cfg>
 
 /* image version */
 IMAGE_VERSION  2
index 186eb18048139694db23270db0d2e85d9667a46e..46404b4d59f6f3bc8a13fa998e6211bda2a03390 100644 (file)
@@ -10,7 +10,7 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <fsl_esdhc.h>
 #include <hwconfig.h>
 #include <power/pmic.h>
index 40ee1b61e95f021c47a8a15e14de0f5e97ef0d1e..89848c8f075d46b29a40b9484c4aba9ebea791c3 100644 (file)
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/spi.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/spi.h>
+#include <asm/mach-imx/video.h>
 #include <asm/io.h>
 #include <asm/setup.h>
 #include <dm.h>
index 6060b4421680d90789009105924b1e780044253c..69a638d71d8ca7904314a36cb50208b7fee1a2fc 100644 (file)
@@ -11,9 +11,9 @@
 #include <asm/arch/mx6-ddr.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <environment.h>
 #include <i2c.h>
 #include <spl.h>
index f0efb5344781fbeed089eabf45506ad28f9e28bd..32168d35768a1a6375c2497276b5ed7294239c81 100644 (file)
@@ -53,7 +53,8 @@ static struct hws_topology_map ddr_topology_map = {
            MEM_4G,                     /* mem_size */
            DDR_FREQ_533,               /* frequency */
            0, 0,                       /* cas_l cas_wl */
-           HWS_TEMP_LOW} },            /* temperature */
+           HWS_TEMP_LOW,               /* temperature */
+           HWS_TIM_DEFAULT} },         /* timing */
        5,                              /* Num Of Bus Per Interface*/
        BUS_MASK_32BIT                  /* Busses mask */
 };
index 0acf655c0e5b86686ea1d32471ba1ab1c4122f2a..b25c634bb5a072a1010496adbb62e38e7d1dcc0b 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
index 2d184c8125bbaac19ed82c9b73723687dd71ee1b..817e22fd455518d4ed2af1e550457aa4e20b2378 100644 (file)
@@ -14,8 +14,8 @@
 #include <asm/arch/mx6-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/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <asm/io.h>
 #include <common.h>
 #include <fsl_esdhc.h>
index 4d341aa7991f0ed8a94b04638d95dcc276c7d8b3..d7d950e877182b0a020a17d7128b9d252e59af14 100644 (file)
@@ -35,6 +35,13 @@ config TARGET_CROWNBAY
          Intel Platform Controller Hub EG20T, other system components and
          peripheral connectors for PCIe/SATA/USB/LAN/SD/UART/Audio/LVDS.
 
+config TARGET_EDISON
+       bool "Edison"
+       help
+         This is the Intel Edison Compute Module. It contains a dual core Intel
+         Atom Tangier CPU, 1 GB RAM integrated on package. There is also 4 GB
+         eMMC flash on board, Wi-Fi, Bluetooth 4 and USB controllers.
+
 config TARGET_GALILEO
        bool "Galileo"
        help
@@ -64,6 +71,7 @@ endchoice
 source "board/intel/bayleybay/Kconfig"
 source "board/intel/cougarcanyon2/Kconfig"
 source "board/intel/crownbay/Kconfig"
+source "board/intel/edison/Kconfig"
 source "board/intel/galileo/Kconfig"
 source "board/intel/minnowmax/Kconfig"
 
diff --git a/board/intel/edison/Kconfig b/board/intel/edison/Kconfig
new file mode 100644 (file)
index 0000000..4ff9d5a
--- /dev/null
@@ -0,0 +1,26 @@
+if TARGET_EDISON
+
+config SYS_BOARD
+       default "edison"
+
+config SYS_VENDOR
+       default "intel"
+
+config SYS_SOC
+       default "tangier"
+
+config SYS_CONFIG_NAME
+       default "edison"
+
+config SYS_TEXT_BASE
+       default 0x01101000
+
+config BOARD_SPECIFIC_OPTIONS # dummy
+       def_bool y
+       select X86_LOAD_FROM_32_BIT
+       select INTEL_MID
+       select INTEL_TANGIER
+       select BOARD_LATE_INIT
+       select MD5
+
+endif
diff --git a/board/intel/edison/MAINTAINERS b/board/intel/edison/MAINTAINERS
new file mode 100644 (file)
index 0000000..4bc4a00
--- /dev/null
@@ -0,0 +1,6 @@
+Intel Edison Board
+M:     Andy Shevchenko <andriy.shevchenko@linux.intel.com>
+S:     Maintained
+F:     board/intel/edison
+F:     include/configs/edison.h
+F:     configs/edison_defconfig
diff --git a/board/intel/edison/Makefile b/board/intel/edison/Makefile
new file mode 100644 (file)
index 0000000..dde1594
--- /dev/null
@@ -0,0 +1,7 @@
+#
+# Copyright (c) 2017 Intel Corporation
+#
+# SPDX-License-Identifier:     GPL-2.0+
+#
+
+obj-y  += start.o edison.o
diff --git a/board/intel/edison/config.mk b/board/intel/edison/config.mk
new file mode 100644 (file)
index 0000000..465133f
--- /dev/null
@@ -0,0 +1,18 @@
+#
+# Copyright (c) 2011 The Chromium OS Authors. All rights reserved.
+# Copyright (c) 2017 Intel Corporation
+#
+# SPDX-License-Identifier:     GPL-2.0 BSD-3-Clause
+#
+
+# Add 4096 bytes of zeroes to u-boot.bin
+quiet_cmd_mkalign_eds = EDSALGN $@
+cmd_mkalign_eds =                                                      \
+       dd if=$^ of=$@ bs=4k seek=1 2>/dev/null &&                      \
+       mv $@ $^
+
+ALL-y += u-boot-align.bin
+u-boot-align.bin: u-boot.bin
+       $(call if_changed,mkalign_eds)
+
+HOSTCFLAGS_autoconf.mk.dep = -Wno-variadic-macros
diff --git a/board/intel/edison/edison.c b/board/intel/edison/edison.c
new file mode 100644 (file)
index 0000000..a1a7d4d
--- /dev/null
@@ -0,0 +1,104 @@
+/*
+ * Copyright (c) 2017 Intel Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <dwc3-uboot.h>
+#include <mmc.h>
+#include <u-boot/md5.h>
+#include <usb.h>
+#include <watchdog.h>
+
+#include <linux/usb/gadget.h>
+
+#include <asm/cache.h>
+#include <asm/scu.h>
+#include <asm/u-boot-x86.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static struct dwc3_device dwc3_device_data = {
+       .maximum_speed = USB_SPEED_HIGH,
+       .base = CONFIG_SYS_USB_OTG_BASE,
+       .dr_mode = USB_DR_MODE_PERIPHERAL,
+       .index = 0,
+};
+
+int usb_gadget_handle_interrupts(int controller_index)
+{
+       dwc3_uboot_handle_interrupt(controller_index);
+       WATCHDOG_RESET();
+       return 0;
+}
+
+int board_usb_init(int index, enum usb_init_type init)
+{
+       if (index == 0 && init == USB_INIT_DEVICE)
+               return dwc3_uboot_init(&dwc3_device_data);
+       return -EINVAL;
+}
+
+int board_usb_cleanup(int index, enum usb_init_type init)
+{
+       if (index == 0 && init == USB_INIT_DEVICE) {
+               dwc3_uboot_exit(index);
+               return 0;
+       }
+       return -EINVAL;
+}
+
+static void assign_serial(void)
+{
+       struct mmc *mmc = find_mmc_device(0);
+       unsigned char ssn[16];
+       char usb0addr[18];
+       char serial[33];
+       int i;
+
+       if (!mmc)
+               return;
+
+       md5((unsigned char *)mmc->cid, sizeof(mmc->cid), ssn);
+
+       snprintf(usb0addr, sizeof(usb0addr), "02:00:86:%02x:%02x:%02x",
+                ssn[13], ssn[14], ssn[15]);
+       setenv("usb0addr", usb0addr);
+
+       for (i = 0; i < 16; i++)
+               snprintf(&serial[2 * i], 3, "%02x", ssn[i]);
+       setenv("serial#", serial);
+
+#if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_ENV_IS_NOWHERE)
+       saveenv();
+#endif
+}
+
+static void assign_hardware_id(void)
+{
+       struct ipc_ifwi_version v;
+       char hardware_id[4];
+       int ret;
+
+       ret = scu_ipc_command(IPCMSG_GET_FW_REVISION, 1, NULL, 0, (u32 *)&v, 4);
+       if (ret < 0)
+               printf("Can't retrieve hardware revision\n");
+
+       snprintf(hardware_id, sizeof(hardware_id), "%02X", v.hardware_id);
+       setenv("hardware_id", hardware_id);
+
+#if defined(CONFIG_CMD_SAVEENV) && !defined(CONFIG_ENV_IS_NOWHERE)
+       saveenv();
+#endif
+}
+
+int board_late_init(void)
+{
+       if (!getenv("serial#"))
+               assign_serial();
+
+       if (!getenv("hardware_id"))
+               assign_hardware_id();
+
+       return 0;
+}
diff --git a/board/intel/edison/start.S b/board/intel/edison/start.S
new file mode 100644 (file)
index 0000000..932fe6c
--- /dev/null
@@ -0,0 +1,13 @@
+/*
+ * Copyright (c) 2011 The Chromium OS Authors.
+ * (C) Copyright 2008
+ * Graeme Russ, graeme.russ@gmail.com.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+/* board early intialization */
+.globl early_board_init
+early_board_init:
+       /* No 32-bit board specific initialisation */
+       jmp     early_board_init_ret
index 42db54221bb34dc30966304cba6bdb822842fc47..e9e518cf7257165d0e647d340ff6a865639d2ee1 100644 (file)
@@ -189,7 +189,7 @@ static int ivm_check_crc(unsigned char *buf, int block)
 
 /* take care of the possible MAC address offset and the IVM content offset */
 static int process_mac(unsigned char *valbuf, unsigned char *buf,
-                               int offset)
+                               int offset, bool unique)
 {
        unsigned char mac[6];
        unsigned long val = (buf[4] << 16) + (buf[5] << 8) + buf[6];
@@ -199,6 +199,13 @@ static int process_mac(unsigned char *valbuf, unsigned char *buf,
         */
        memcpy(mac, buf+1, 6);
 
+       /* MAC adress can be set to locally administred, this is only allowed
+        * for interfaces which have now connection to the outside. For these
+        * addresses we need to set the second bit in the first byte.
+        */
+       if (!unique)
+               mac[0] |= 0x2;
+
        if (offset) {
                val += offset;
                mac[3] = (val >> 16) & 0xff;
@@ -300,16 +307,24 @@ static int ivm_populate_env(unsigned char *buf, int len)
                return 0;
        page2 = &buf[CONFIG_SYS_IVM_EEPROM_PAGE_LEN*2];
 
+#ifndef CONFIG_KMTEGR1
        /* if an offset is defined, add it */
-       process_mac(valbuf, page2, CONFIG_PIGGY_MAC_ADRESS_OFFSET);
-       if (getenv("ethaddr") == NULL)
-               setenv((char *)"ethaddr", (char *)valbuf);
+       process_mac(valbuf, page2, CONFIG_PIGGY_MAC_ADRESS_OFFSET, true);
+       setenv((char *)"ethaddr", (char *)valbuf);
 #ifdef CONFIG_KMVECT1
 /* KMVECT1 has two ethernet interfaces */
-       if (getenv("eth1addr") == NULL) {
-               process_mac(valbuf, page2, 1);
-               setenv((char *)"eth1addr", (char *)valbuf);
-       }
+       process_mac(valbuf, page2, 1, true);
+       setenv((char *)"eth1addr", (char *)valbuf);
+#endif
+#else
+/* KMTEGR1 has a special setup. eth0 has no connection to the outside and
+ * gets an locally administred MAC address, eth1 is the debug interface and
+ * gets the official MAC address from the IVM
+ */
+       process_mac(valbuf, page2, CONFIG_PIGGY_MAC_ADRESS_OFFSET, false);
+       setenv((char *)"ethaddr", (char *)valbuf);
+       process_mac(valbuf, page2, CONFIG_PIGGY_MAC_ADRESS_OFFSET, true);
+       setenv((char *)"eth1addr", (char *)valbuf);
 #endif
 
        return 0;
index 17c2b13ef2ed31bd32573cf944b171ae998a1d8d..980cd6288ca8286a520e299d96a653d18a015a19 100644 (file)
 #include <asm/arch/iomux.h>
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/video.h>
 #include <fsl_esdhc.h>
 #include <i2c.h>
 #include <input.h>
index b934d3678814661a2eb06873232bccf0b0b4d75f..3645b75cb29bfa07222eec8f673862b5e3e1e1bb 100644 (file)
@@ -14,9 +14,9 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/arch/crm_regs.h>
 #include <i2c.h>
 #include <mmc.h>
index a4c1222a11b6b228dc80d9ef3c29f11e16e02dc7..bd845696047943e472e66e2ffd2b3efd0f9c941d 100644 (file)
@@ -20,9 +20,9 @@
 #include <asm/arch/iomux.h>
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/video.h>
 #include <i2c.h>
 #include <input.h>
 #include <ipu_pixfmt.h>
index eb5eae43551648b4b49c49ccc4d41d077258a687..e265e2a73291f5b0643d6c403569a852aad52495 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/spi.h>
-#include <asm/imx-common/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/spi.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <asm/io.h>
 #include <fsl_esdhc.h>
 #include <mmc.h>
index 73beeaaf6d51ca759e7b00f57145bfb36c7f0b8a..15844ef437b7b76c7e790c12c44c400619ac7daf 100644 (file)
@@ -11,8 +11,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <asm/arch/crm_regs.h>
index 55767996a085b85b98c9a8835e1e86583aca4fe6..0a7d4124a62830f4aa07ae58221a16c7c977a34e 100644 (file)
@@ -22,8 +22,8 @@
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
index b20654870a8af8d28033a17cdad86e80a378af58..a75746161e01b14fcef24e02e70cff82d857e87b 100644 (file)
@@ -10,7 +10,7 @@
  * The syntax is taken as close as possible with the kwbimage
  */
 
-#include <asm/imx-common/imximage.cfg>
+#include <asm/mach-imx/imximage.cfg>
 
 /* image version */
 IMAGE_VERSION 2
index a66b710cddab7154c6c92aabb1127b4cce6db959..bd08a2eed4255a2422b0184d1661e015c0f4ce89 100644 (file)
@@ -6,7 +6,9 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <power/as3722.h>
+#include <power/pmic.h>
 
 #include <asm/arch/gpio.h>
 #include <asm/arch/pinmux.h>
@@ -37,27 +39,45 @@ void pinmux_init(void)
 }
 
 #ifdef CONFIG_PCI_TEGRA
-int tegra_pcie_board_init(void)
+/* TODO: Convert to driver model */
+static int as3722_sd_enable(struct udevice *pmic, unsigned int sd)
 {
-       struct udevice *pmic;
        int err;
 
-       err = as3722_init(&pmic);
+       if (sd > 6)
+               return -EINVAL;
+
+       err = pmic_clrsetbits(pmic, AS3722_SD_CONTROL, 0, 1 << sd);
        if (err) {
-               error("failed to initialize AS3722 PMIC: %d\n", err);
+               error("failed to update SD control register: %d", err);
                return err;
        }
 
-       err = as3722_sd_enable(pmic, 4);
-       if (err < 0) {
-               error("failed to enable SD4: %d\n", err);
-               return err;
+       return 0;
+}
+
+int tegra_pcie_board_init(void)
+{
+       struct udevice *dev;
+       int ret;
+
+       ret = uclass_get_device_by_driver(UCLASS_PMIC,
+                                         DM_GET_DRIVER(pmic_as3722), &dev);
+       if (ret) {
+               debug("%s: Failed to find PMIC\n", __func__);
+               return ret;
        }
 
-       err = as3722_sd_set_voltage(pmic, 4, 0x24);
-       if (err < 0) {
-               error("failed to set SD4 voltage: %d\n", err);
-               return err;
+       ret = as3722_sd_enable(dev, 4);
+       if (ret < 0) {
+               error("failed to enable SD4: %d\n", ret);
+               return ret;
+       }
+
+       ret = as3722_sd_set_voltage(dev, 4, 0x24);
+       if (ret < 0) {
+               error("failed to set SD4 voltage: %d\n", ret);
+               return ret;
        }
 
        return 0;
index 8f68ae9fbe1067c8c7ee76461daaf358de001386..54acf5418d268e49b96b4f1b1417bbc63cba92df 100644 (file)
@@ -6,6 +6,7 @@
  */
 
 #include <common.h>
+#include <dm.h>
 #include <errno.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
@@ -46,20 +47,23 @@ int tegra_board_id(void)
 
 int tegra_lcd_pmic_init(int board_id)
 {
-       struct udevice *pmic;
+       struct udevice *dev;
        int ret;
 
-       ret = as3722_get(&pmic);
-       if (ret)
-               return -ENOENT;
+       ret = uclass_get_device_by_driver(UCLASS_PMIC,
+                                         DM_GET_DRIVER(pmic_as3722), &dev);
+       if (ret) {
+               debug("%s: Failed to find PMIC\n", __func__);
+               return ret;
+       }
 
        if (board_id == 0)
-               as3722_write(pmic, 0x00, 0x3c);
+               pmic_reg_write(dev, 0x00, 0x3c);
        else
-               as3722_write(pmic, 0x00, 0x50);
-       as3722_write(pmic, 0x12, 0x10);
-       as3722_write(pmic, 0x0c, 0x07);
-       as3722_write(pmic, 0x20, 0x10);
+               pmic_reg_write(dev, 0x00, 0x50);
+       pmic_reg_write(dev, 0x12, 0x10);
+       pmic_reg_write(dev, 0x0c, 0x07);
+       pmic_reg_write(dev, 0x20, 0x10);
 
        return 0;
 }
index 2fbb5c1b25eed96fb783f3a3da43c76380767651..2a302d79341e6b43ef3dab331cfe0b43c6e8e772 100644 (file)
@@ -8,7 +8,7 @@
  *
  * The syntax is taken as close as possible with the kwbimage
  */
-#include <asm/imx-common/imximage.cfg>
+#include <asm/mach-imx/imximage.cfg>
 
 /* image version */
 IMAGE_VERSION  2
index 3dc8cbd6a50b6f5fd5dbc1ceb7104c1b0b57ddf7..4257fbcb68b471fd64277ee2f7746ac4d497c100 100644 (file)
 #include <asm/arch/mx6-ddr.h>
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/spi.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/spi.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
 #include <mmc.h>
index f60dddac7b8fa315763d035c1b4d13196f607189..160f8f86d1726ddec3a8bac6edeeb81f4f1dfd02 100644 (file)
@@ -195,7 +195,7 @@ void lcd_show_board_info(void)
 
        nand_size = 0;
        for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-               nand_size += nand_info[i]->size;
+               nand_size += get_nand_dev_by_index(i)->size;
 
        flash_size = 0;
        for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++)
index 146913629514ffbb31ec91c81dd5315b432217bf..0c23bb6c65ba2551c229bfd05ef150ac22840705 100644 (file)
@@ -294,7 +294,7 @@ void lcd_show_board_info(void)
 
        nand_size = 0;
        for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
-               nand_size += nand_info[i]->size;
+               nand_size += get_nand_dev_by_index(i)->size;
 
        flash_size = 0;
        for (i = 0; i < CONFIG_SYS_MAX_FLASH_BANKS; i++)
index c92f37c9bb5db73b0ee8c4f21c802762d390533d..5c8b4367767bb127c525290b510c2408a8592426 100644 (file)
@@ -13,9 +13,9 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 #include <asm/io.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <linux/sizes.h>
 #include <common.h>
 #include <fsl_esdhc.h>
index c4abc1dc1d694cc64382c2720e85239018cfb251..ad4bb5bed74dc61539b8cbca74fac9c991b81c17 100644 (file)
@@ -14,8 +14,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
@@ -27,7 +27,7 @@
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
 #include <micrel.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <i2c.h>
 
 #define UART_PAD_CTRL  (PAD_CTL_PUS_100K_UP |                  \
index 341e7274f1377d00700c4e78a540761ce3da66bd..be8fef4287e195af461fc7ce4b2cb5ee3b14ca96 100644 (file)
@@ -14,8 +14,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
 #include <malloc.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
@@ -28,7 +28,7 @@
 #include <asm/io.h>
 #include <asm/arch/sys_proto.h>
 #include <micrel.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <i2c.h>
 
 #include "../common/mx6.h"
index 3a8257cac32e2d7b2875e9060272696d167eab50..8906636f7646d931ee6051b28a58f0a13567d50e 100644 (file)
@@ -83,7 +83,8 @@ static struct hws_topology_map board_topology_map = {
            MEM_4G,                     /* mem_size */
            DDR_FREQ_800,               /* frequency */
            0, 0,                       /* cas_l cas_wl */
-           HWS_TEMP_LOW} },            /* temperature */
+           HWS_TEMP_LOW,               /* temperature */
+           HWS_TIM_DEFAULT} },         /* timing */
        5,                              /* Num Of Bus Per Interface*/
        BUS_MASK_32BIT                  /* Busses mask */
 };
index c650c2c65eb5949cda3abda497e9882b5711ef5b..f41d25a8a14295c38e0979d51196f66b0964f18b 100644 (file)
@@ -2,7 +2,7 @@
 # Copyright (C) 2015 Stefan Roese <sr@denx.de>
 #
 
-# Armada XP uses version 1 image format
+# Armada 38x use version 1 image format
 VERSION                1
 
 # Boot Media configurations
index 285588d80a3aa46e440a479e2b14c7eb440af763..1ccdfa8e056064cc7446cd85a8920d3468f043ed 100644 (file)
@@ -21,8 +21,9 @@
 #include <asm/arch/mxc_hdmi.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <malloc.h>
@@ -314,6 +315,10 @@ int board_early_init_f(void)
        ret = setup_display();
 #endif
 
+#ifdef CONFIG_CMD_SATA
+       setup_sata();
+#endif
+
 #ifdef CONFIG_USB_EHCI_MX6
        setup_usb();
 #endif
index fc4c60c3a4b230cbfb5555e19266efc9357ff068..f31768e62e7cff8beb63156a902f40bf430d36b5 100644 (file)
@@ -13,8 +13,6 @@
 #include <asm/armv7m.h>
 #include <asm/arch/stm32.h>
 #include <asm/arch/gpio.h>
-#include <asm/arch/fmc.h>
-#include <dm/platform_data/serial_stm32x7.h>
 #include <asm/arch/stm32_periph.h>
 #include <asm/arch/stm32_defs.h>
 #include <asm/arch/syscfg.h>
index db0c58f6f5695cc130c25fe26bc8a1add3ecaffb..7a6657fc1d46e36f07075ef9b5e06b47391f6790 100644 (file)
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <miiphy.h>
index 49aeb80327b5d1bfc5df942ed8cdb1dd663b2883..39f7e016fd0c507cb728ef0ed8543fc1aa18fde0 100644 (file)
@@ -13,8 +13,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/io.h>
 #include <common.h>
 #include <miiphy.h>
index 799751d699b001a2cf49cfd4f4ec1ba9b1023c21..b4c9be73780607bb3feb55f2def2985d3bb10e61 100644 (file)
@@ -10,8 +10,8 @@
 #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/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/io.h>
 #include <common.h>
 #include <fsl_esdhc.h>
index eef6922b20822d064eae6ad57e106fe2cd298268..94251c6d918bf1d89e2a71fb469eb0b5ebf20d61 100644 (file)
@@ -16,7 +16,7 @@
 #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 <asm/mach-imx/mx5_video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <mc13892.h>
index 36e9cd7f842a7caf422844d7e3f15de3429f500c..9347329eac8820aef75d128503b7b08f7cf60b9b 100644 (file)
@@ -9,20 +9,11 @@
 #include <ram.h>
 #include <dm/pinctrl.h>
 #include <dm/uclass-internal.h>
-#include <misc.h>
 #include <asm/setup.h>
 #include <asm/arch/periph.h>
 #include <power/regulator.h>
 #include <u-boot/sha256.h>
 
-#define RK3399_CPUID_OFF  0x7
-#define RK3399_CPUID_LEN  0x10
-
-DECLARE_GLOBAL_DATA_PTR;
-
-#define RK3399_CPUID_OFF  0x7
-#define RK3399_CPUID_LEN  0x10
-
 DECLARE_GLOBAL_DATA_PTR;
 
 int board_init(void)
@@ -107,11 +98,14 @@ static void setup_macaddr(void)
 static void setup_serial(void)
 {
 #if CONFIG_IS_ENABLED(ROCKCHIP_EFUSE)
+       const u32 cpuid_offset = 0x7;
+       const u32 cpuid_length = 0x10;
+
        struct udevice *dev;
        int ret, i;
-       u8 cpuid[RK3399_CPUID_LEN];
-       u8 low[RK3399_CPUID_LEN/2], high[RK3399_CPUID_LEN/2];
-       char cpuid_str[RK3399_CPUID_LEN * 2 + 1];
+       u8 cpuid[cpuid_length];
+       u8 low[cpuid_length/2], high[cpuid_length/2];
+       char cpuid_str[cpuid_length * 2 + 1];
        u64 serialno;
        char serialno_str[16];
 
@@ -124,7 +118,7 @@ static void setup_serial(void)
        }
 
        /* read the cpu_id range from the efuses */
-       ret = misc_read(dev, RK3399_CPUID_OFF, &cpuid, sizeof(cpuid));
+       ret = misc_read(dev, cpuid_offset, &cpuid, sizeof(cpuid));
        if (ret) {
                debug("%s: reading cpuid from the efuses failed\n",
                      __func__);
index 54f40e64a4560b433b7fceafc299ba1cca4c67fb..933596d59c8276738ddb80b94da13126f388be23 100644 (file)
@@ -838,6 +838,15 @@ int board_eth_init(bd_t *bis)
 }
 #endif
 
+#if defined(CONFIG_OF_LIBFDT) && defined(CONFIG_OF_BOARD_SETUP)
+int ft_board_setup(void *blob, bd_t *bd)
+{
+       ft_cpu_setup(blob, bd);
+
+       return 0;
+}
+#endif
+
 #ifdef CONFIG_SPL_LOAD_FIT
 int board_fit_config_name_match(const char *name)
 {
@@ -859,4 +868,11 @@ void board_fit_image_post_process(void **p_image, size_t *p_size)
 {
        secure_boot_verify_image(p_image, p_size);
 }
+
+void board_tee_image_process(ulong tee_image, size_t tee_size)
+{
+       secure_tee_install((u32)tee_image);
+}
+
+U_BOOT_FIT_LOADABLE_HANDLER(IH_TYPE_TEE, board_tee_image_process);
 #endif
index bf8c8e1a678fb2dc35431d2d9a86e5dde7301b31..00a31a97fd6dce4ae98d704638c7f4df271b2ef4 100644 (file)
 
 #define board_is_x15()         board_ti_is("BBRDX15_")
 #define board_is_x15_revb1()   (board_ti_is("BBRDX15_") && \
-                                (strncmp("B.10", board_ti_get_rev(), 3) <= 0))
+                                !strncmp("B.10", board_ti_get_rev(), 3))
+#define board_is_x15_revc()    (board_ti_is("BBRDX15_") && \
+                                !strncmp("C.00", board_ti_get_rev(), 3))
 #define board_is_am572x_evm()  board_ti_is("AM572PM_")
 #define board_is_am572x_evm_reva3()    \
                                (board_ti_is("AM572PM_") && \
-                                (strncmp("A.30", board_ti_get_rev(), 3) <= 0))
+                                !strncmp("A.30", board_ti_get_rev(), 3))
 #define board_is_am572x_idk()  board_ti_is("AM572IDK")
 #define board_is_am571x_idk()  board_ti_is("AM571IDK")
 
@@ -474,6 +476,8 @@ static void setup_board_eeprom_env(void)
        if (board_is_x15()) {
                if (board_is_x15_revb1())
                        name = "beagle_x15_revb1";
+               else if (board_is_x15_revc())
+                       name = "beagle_x15_revc";
                else
                        name = "beagle_x15";
        } else if (board_is_am572x_evm()) {
@@ -683,7 +687,8 @@ void recalibrate_iodelay(void)
 
        /* Now do the weird minor deltas that should be safe */
        if (board_is_x15() || board_is_am572x_evm()) {
-               if (board_is_x15_revb1() || board_is_am572x_evm_reva3()) {
+               if (board_is_x15_revb1() || board_is_am572x_evm_reva3() ||
+                   board_is_x15_revc()) {
                        pconf = core_padconf_array_delta_x15_sr2_0;
                        pconf_sz = ARRAY_SIZE(core_padconf_array_delta_x15_sr2_0);
                } else {
index c7e519c19b5b28ca78d4c8b70458e9864db43eaa..5de61e7c2b194bb873d25a082e11ca3f5ebd88fd 100644 (file)
@@ -61,6 +61,7 @@ void pinmux_init(void)
 #ifdef CONFIG_PCI_TEGRA
 int tegra_pcie_board_init(void)
 {
+       /* TODO: Convert to driver model
        struct udevice *pmic;
        int err;
 
@@ -94,6 +95,7 @@ int tegra_pcie_board_init(void)
                error("failed to set GPIO#2 high: %d\n", err);
                return err;
        }
+       */
 
        /* Reset I210 Gigabit Ethernet Controller */
        gpio_request(LAN_RESET_N, "LAN_RESET_N");
@@ -110,6 +112,7 @@ int tegra_pcie_board_init(void)
        gpio_direction_output(TEGRA_GPIO(O, 6), 0);
 
        /* Make sure LDO9 and LDO10 are initially enabled @ 0V */
+       /* TODO: Convert to driver model
        err = as3722_ldo_enable(pmic, 9);
        if (err < 0) {
                error("failed to enable LDO9: %d\n", err);
@@ -130,6 +133,7 @@ int tegra_pcie_board_init(void)
                error("failed to set LDO10 voltage: %d\n", err);
                return err;
        }
+       */
 
        mdelay(100);
 
@@ -137,6 +141,7 @@ int tegra_pcie_board_init(void)
        gpio_set_value(TEGRA_GPIO(O, 6), 1);
 
        /* Enable LDO9 and LDO10 for +V3.3_ETH on patched prototypes */
+       /* TODO: Convert to driver model
        err = as3722_ldo_set_voltage(pmic, 9, 0xff);
        if (err < 0) {
                error("failed to set LDO9 voltage: %d\n", err);
@@ -147,6 +152,7 @@ int tegra_pcie_board_init(void)
                error("failed to set LDO10 voltage: %d\n", err);
                return err;
        }
+       */
 
        mdelay(100);
        gpio_set_value(LAN_RESET_N, 1);
index 166b93f0c5288bb1d6a7e6e0cc082da516717e6d..8e5613cb126124c7041791131e8a4e14b3337ba9 100644 (file)
 #include <asm/bootm.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
 #include <dm/platform_data/serial_mxc.h>
 #include <dm/platdata.h>
 #include <fsl_esdhc.h>
index 0b424384b9bfe9f204018cb94c39f53386a3b240..5eaf9c0b1785c00a6b93a794348d36e249e46049 100644 (file)
@@ -14,7 +14,7 @@
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 #include "pf0100_otp.inc"
 #include "pf0100.h"
index 87e24471ceaef999ee3f67d70d1acaf0c71c30bc..cbf7aa952a90cef3ecdbbac237c769c57dd31ff6 100644 (file)
 #include <asm/arch/sys_proto.h>
 #include <asm/bootm.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/sata.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/sata.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
 #include <asm/io.h>
 #include <dm/platform_data/serial_mxc.h>
 #include <dm/platdata.h>
index 618c57180545f27b3f28e7724e5e5e851d5a6fe9..68892877606855966fc4f323d9527c478b2c836e 100644 (file)
@@ -14,7 +14,7 @@
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 
 #include "pf0100_otp.inc"
 #include "pf0100.h"
index e54afa1952606706be2390da4eba560feecc6f66..5cb14b43de76ed38153c37ad8f8748ec1badfd26 100644 (file)
@@ -10,8 +10,8 @@
 #include <asm/arch/mx7-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/iomux-v3.h>
 #include <asm/io.h>
 #include <common.h>
 #include <dm.h>
index 7d574fbdab5324ffec68a8b8c6d19321e6f32717..71b8fd3ede0b90fc10327ed7f40d19e8c0953cc1 100644 (file)
@@ -69,7 +69,7 @@ int checkboard(void)
 {
        printf("Model: Toradex Colibri T20 %dMB V%s\n",
               (gd->ram_size == 0x10000000) ? 256 : 512,
-              (nand_info[0]->erasesize >> 10 == 512) ?
+              (get_nand_dev_by_index(0)->erasesize >> 10 == 512) ?
               ((gd->ram_size == 0x10000000) ? "1.1B" : "1.1C") : "1.2A");
 
        return 0;
index baab8129cf4e7369438e929aff42503ababfc69d..6d032ed9e3450e174564c9243fb7ad3a3f2b7396 100644 (file)
@@ -8,7 +8,7 @@
  *
  * The syntax is taken as close as possible with the kwbimage
  */
-#include <asm/imx-common/imximage.cfg>
+#include <asm/mach-imx/imximage.cfg>
 
 /* image version */
 IMAGE_VERSION  2
index 68ec4369ad7e01ae11d987adca77679f8790b474..1bf8ca8f76d9ad17f12dd52ea2ee00ad753d5a6d 100644 (file)
@@ -154,8 +154,10 @@ static int read_tdx_cfg_block_from_nand(unsigned char *config_block)
        size_t size = TDX_CFG_BLOCK_MAX_SIZE;
 
        /* Read production parameter config block from NAND page */
-       return nand_read_skip_bad(nand_info[0], CONFIG_TDX_CFG_BLOCK_OFFSET,
-                        &size, NULL, TDX_CFG_BLOCK_MAX_SIZE, config_block);
+       return nand_read_skip_bad(get_nand_dev_by_index(0),
+                                 CONFIG_TDX_CFG_BLOCK_OFFSET,
+                                 &size, NULL, TDX_CFG_BLOCK_MAX_SIZE,
+                                 config_block);
 }
 
 static int write_tdx_cfg_block_to_nand(unsigned char *config_block)
@@ -163,7 +165,8 @@ static int write_tdx_cfg_block_to_nand(unsigned char *config_block)
        size_t size = TDX_CFG_BLOCK_MAX_SIZE;
 
        /* Write production parameter config block to NAND page */
-       return nand_write_skip_bad(nand_info[0], CONFIG_TDX_CFG_BLOCK_OFFSET,
+       return nand_write_skip_bad(get_nand_dev_by_index(0),
+                                  CONFIG_TDX_CFG_BLOCK_OFFSET,
                                   &size, NULL, TDX_CFG_BLOCK_MAX_SIZE,
                                   config_block, WITH_WR_VERIFY);
 }
@@ -426,7 +429,8 @@ static int do_cfgblock_create(cmd_tbl_t *cmdtp, int flag, int argc,
                 * empty (config block invalid...)
                 */
                printf("NAND erase block %d need to be erased before creating a Toradex config block\n",
-                      CONFIG_TDX_CFG_BLOCK_OFFSET / nand_info[0]->erasesize);
+                      CONFIG_TDX_CFG_BLOCK_OFFSET /
+                      get_nand_dev_by_index(0)->erasesize);
                goto out;
 #elif defined(CONFIG_TDX_CFG_BLOCK_IS_IN_NOR)
                /*
index fdb0fa11b00c1346b3aedd2e52a55153b7516e79..fcdea34f050a06f6f61d1765e4be2aee2036973e 100644 (file)
@@ -16,8 +16,8 @@
 #include <linux/errno.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/spi.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/spi.h>
 #include <common.h>
 #include <fsl_esdhc.h>
 #include <libfdt.h>
index 43349ade1d42a63edbeb5c4c0db48f039d5833a2..1188215738c3fd396c64e0495f587f9e0947a2b8 100644 (file)
@@ -16,7 +16,7 @@
 #include <asm/arch/sys_proto.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 
 #include <common.h>
 #include <fsl_esdhc.h>
index 2bbb614e4fe9a34638c91b08438b080d6573ed8c..2360cffdd903c2235758adbbcfe85557e9ff3076 100644 (file)
@@ -18,8 +18,8 @@
 #include <asm/arch/sys_proto.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/mxc_i2c.h>
 
 #include <common.h>
 #include <fsl_esdhc.h>
index 530c45f600f2e111975985484bd431ce2d0f946e..276c625cfd813683725bc14ba8509469f02c3370 100644 (file)
 #include <asm/arch/iomux.h>
 #include <asm/arch/mx6-pins.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <asm/arch/crm_regs.h>
 #include <asm/io.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/arch/sys_proto.h>
 #include <spl.h>
 #include <linux/sizes.h>
index d2cbbaa23e6e819a742220819e09ac36fe49c654..7534935dde0f64ce7f590161cb98a68f3fdbae03 100644 (file)
@@ -13,8 +13,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/sata.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/sata.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <asm/arch/crm_regs.h>
index f24d21e2bfd178b71ea85a610073ad4ab4506672..e83e7c3a1b2208e0652e79bf9c95c7a0d5e0e56e 100644 (file)
@@ -12,8 +12,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <asm/arch/crm_regs.h>
index a21a3d0f21a180b084dd60cb998a5ee732995403..47082a88d5ec45812ad079b1660a386a56e8a293 100644 (file)
@@ -11,8 +11,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <linux/errno.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/video.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/video.h>
 #include <mmc.h>
 #include <fsl_esdhc.h>
 #include <asm/arch/crm_regs.h>
@@ -289,8 +289,6 @@ static void spl_dram_init(void)
                mx6dq_dram_iocfg(64, &mx6dq_ddr_ioregs, &mx6dq_grp_ioregs);
                mx6_dram_cfg(&mem_q, &mx6q_2g_mmdc_calib, &h5t04g63afr);
        }
-
-       udelay(100);
 }
 
 void board_init_f(ulong dummy)
index 438bc0e7431b368ddb81628859e9f66589d7cd25..1dbc966b6eedab437ce37a0d4b2e47a4814ec09c 100644 (file)
 #include <asm/arch/mxc_hdmi.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
-#include <asm/imx-common/boot_mode.h>
-#include <asm/imx-common/video.h>
-#include <asm/imx-common/sata.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
+#include <asm/mach-imx/boot_mode.h>
+#include <asm/mach-imx/video.h>
+#include <asm/mach-imx/sata.h>
 #include <asm/io.h>
 #include <linux/sizes.h>
 #include <common.h>
index 0bc0a6a92e66d16e639f13c54803830f2fa2c8e2..52319b302408766a329478c5bddee591931ed55c 100644 (file)
@@ -14,8 +14,8 @@
 #include <asm/arch/mx6-pins.h>
 #include <asm/arch/sys_proto.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/io.h>
 #include <linux/sizes.h>
 #include <common.h>
@@ -62,7 +62,7 @@ static void setup_iomux_uart(void)
 }
 
 static struct fsl_esdhc_cfg usdhc_cfg[1] = {
-       {USDHC2_BASE_ADDR},
+       {USDHC2_BASE_ADDR, 0, 0, 0, 1},
 };
 
 int board_mmc_getcd(struct mmc *mmc)
index df8e9da6f9190a6f3195397e9c4b90a71a45b7f6..d422d63df55306c45fad6ce7315b0d687310449f 100644 (file)
@@ -10,8 +10,8 @@
 #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/mxc_i2c.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/io.h>
 #include <common.h>
 #include <fsl_esdhc.h>
index c80ac364ead6929c1f7aa6216d63fc5cd290bc65..f18efc1e88b82bd1fa2732ed3f39f2338b8e9913 100644 (file)
@@ -1196,7 +1196,6 @@ config CMD_JFFS2
          filesystem information.
 
 config CMD_MTDPARTS
-       depends on ARCH_SUNXI
        bool "MTD partition support"
        help
          MTD partition support
@@ -1256,6 +1255,7 @@ config CMD_UBI
        tristate "Enable UBI - Unsorted block images commands"
        select CRC32
        select MTD_UBI
+       select CMD_MTDPARTS
        default y if NAND_SUNXI
        help
          UBI is a software layer above MTD layer which admits use of LVM-like
@@ -1269,9 +1269,8 @@ config CMD_UBIFS
        tristate "Enable UBIFS - Unsorted block images filesystem commands"
        depends on CMD_UBI
        select CRC32
-       select RBTREE if ARCH_SUNXI
-       select LZO if ARCH_SUNXI
-       default y if NAND_SUNXI
+       select LZO
+       default y if CMD_UBI
        help
          UBIFS is a file system for flash devices which works on top of UBI.
 
index 8971697e60a65a85ab37b953fa54e4e6ae2b65c9..81ac78da940ce60726707f26e92dedc11c10f738 100644 (file)
@@ -344,9 +344,9 @@ static int do_bdinfo(cmd_tbl_t *cmdtp, int flag, int argc,
 #ifdef CONFIG_BOARD_TYPES
        printf("Board Type  = %ld\n", gd->board_type);
 #endif
-#ifdef CONFIG_SYS_MALLOC_F
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        printf("Early malloc usage: %lx / %x\n", gd->malloc_ptr,
-              CONFIG_SYS_MALLOC_F_LEN);
+              CONFIG_VAL(SYS_MALLOC_F_LEN));
 #endif
        if (gd->fdt_blob)
                printf("fdt_blob = %p\n", gd->fdt_blob);
index 953a57de33996b7b2c3c28cb320fc8420fcc76e2..daf15d9e80fcb71be0e93cb0fed7eb214d0c213c 100644 (file)
@@ -465,7 +465,7 @@ static int do_imls_nand(void)
        printf("\n");
 
        for (nand_dev = 0; nand_dev < CONFIG_SYS_MAX_NAND_DEVICE; nand_dev++) {
-               mtd = nand_info[nand_dev];
+               mtd = get_nand_dev_by_index(nand_dev);
                if (!mtd->name || !mtd->size)
                        continue;
 
index 9be198eddce44b638f76477308860bbabf012ec4..dc94705ccd73ee87b9ee140905957aef99445a47 100644 (file)
@@ -166,8 +166,9 @@ static int mtd_device_validate(u8 type, u8 num, u32 *size)
 #endif
        } else if (type == MTD_DEV_TYPE_NAND) {
 #if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
-               if (num < CONFIG_SYS_MAX_NAND_DEVICE) {
-                       *size = nand_info[num]->size;
+               struct mtd_info *mtd = get_nand_dev_by_index(num);
+               if (mtd) {
+                       *size = mtd->size;
                        return 0;
                }
 
@@ -244,7 +245,7 @@ static inline u32 get_part_sector_size_nand(struct mtdids *id)
 #if defined(CONFIG_JFFS2_NAND) && defined(CONFIG_CMD_NAND)
        struct mtd_info *mtd;
 
-       mtd = nand_info[id->num];
+       mtd = get_nand_dev_by_index(id->num);
 
        return mtd->erasesize;
 #else
index f83032ec4572b8c31f839945421772e46a5fbb9e..f7b75684adedc0673f03664aee63c1f71275bdc6 100644 (file)
--- a/cmd/mmc.c
+++ b/cmd/mmc.c
@@ -253,7 +253,11 @@ static int do_mmcrpmb(cmd_tbl_t *cmdtp, int flag,
                return CMD_RET_FAILURE;
        }
        /* Switch to the RPMB partition */
+#ifndef CONFIG_BLK
        original_part = mmc->block_dev.hwpart;
+#else
+       original_part = mmc_get_blk_desc(mmc)->hwpart;
+#endif
        if (blk_select_hwpart_devnum(IF_TYPE_MMC, curr_device, MMC_PART_RPMB) !=
            0)
                return CMD_RET_FAILURE;
index 1e1f0af35cc0b86c7f55836bcb3368c15d1a46e2..ea46e7b108608ce963283c09e79a5d288be30d64 100644 (file)
@@ -311,23 +311,21 @@ static int nand_burn_image(size_t image_size)
 {
        int ret;
        uint32_t block_size;
-       struct mtd_info *nand;
-       int dev = nand_curr_device;
+       struct mtd_info *mtd;
 
-       if ((dev < 0) || (dev >= CONFIG_SYS_MAX_NAND_DEVICE) ||
-           (!nand_info[dev]->name)) {
+       mtd = get_nand_dev_by_index(nand_curr_device);
+       if (!mtd) {
                puts("\nno devices available\n");
                return -ENOMEDIUM;
        }
-       nand = nand_info[dev];
-       block_size = nand->erasesize;
+       block_size = mtd->erasesize;
 
        /* Align U-Boot size to currently used blocksize */
        image_size = ((image_size + (block_size - 1)) & (~(block_size - 1)));
 
        /* Erase the U-BOOT image space */
        printf("Erasing 0x%x - 0x%x:...", 0, (int)image_size);
-       ret = nand_erase(nand, 0, image_size);
+       ret = nand_erase(mtd, 0, image_size);
        if (ret) {
                printf("Error!\n");
                goto error;
@@ -337,7 +335,7 @@ static int nand_burn_image(size_t image_size)
        /* Write the image to flash */
        printf("Writing %d bytes from 0x%lx to offset 0 ... ",
               (int)image_size, get_load_addr());
-       ret = nand_write(nand, 0, &image_size, (void *)get_load_addr());
+       ret = nand_write(mtd, 0, &image_size, (void *)get_load_addr());
        if (ret)
                printf("Error!\n");
        else
index 72ca88a943c5d795d4b4631ee52c2b0511b75b2b..a2152ec8260e0546a5a19dbfd9bec8d0201ac7a3 100644 (file)
@@ -115,20 +115,20 @@ free_dat:
 
 static int set_dev(int dev)
 {
-       if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE || !nand_info[dev]) {
-               puts("No such device\n");
-               return -1;
-       }
+       struct mtd_info *mtd = get_nand_dev_by_index(dev);
+
+       if (!mtd)
+               return -ENODEV;
 
        if (nand_curr_device == dev)
                return 0;
 
-       printf("Device %d: %s", dev, nand_info[dev]->name);
+       printf("Device %d: %s", dev, mtd->name);
        puts("... is now current device\n");
        nand_curr_device = dev;
 
 #ifdef CONFIG_SYS_NAND_SELECT_DEVICE
-       board_nand_select_device(nand_info[dev]->priv, dev);
+       board_nand_select_device(mtd_to_nand(mtd), dev);
 #endif
 
        return 0;
@@ -188,7 +188,7 @@ int do_nand_env_oob(cmd_tbl_t *cmdtp, int argc, char *const argv[])
 {
        int ret;
        uint32_t oob_buf[ENV_OFFSET_SIZE/sizeof(uint32_t)];
-       struct mtd_info *mtd = nand_info[0];
+       struct mtd_info *mtd = get_nand_dev_by_index(0);
        char *cmd = argv[1];
 
        if (CONFIG_SYS_MAX_NAND_DEVICE == 0 || !mtd) {
@@ -213,9 +213,10 @@ int do_nand_env_oob(cmd_tbl_t *cmdtp, int argc, char *const argv[])
                if (argc < 3)
                        goto usage;
 
+               mtd = get_nand_dev_by_index(idx);
                /* We don't care about size, or maxsize. */
                if (mtd_arg_off(argv[2], &idx, &addr, &maxsize, &maxsize,
-                               MTD_DEV_TYPE_NAND, nand_info[idx]->size)) {
+                               MTD_DEV_TYPE_NAND, mtd->size)) {
                        puts("Offset or partition name expected\n");
                        return 1;
                }
@@ -283,9 +284,14 @@ usage:
 
 static void nand_print_and_set_info(int idx)
 {
-       struct mtd_info *mtd = nand_info[idx];
-       struct nand_chip *chip = mtd_to_nand(mtd);
+       struct mtd_info *mtd;
+       struct nand_chip *chip;
+
+       mtd = get_nand_dev_by_index(idx);
+       if (!mtd)
+               return;
 
+       chip = mtd_to_nand(mtd);
        printf("Device %d: ", idx);
        if (chip->numchips > 1)
                printf("%dx ", chip->numchips);
@@ -348,7 +354,7 @@ static void adjust_size_for_badblocks(loff_t *size, loff_t offset, int dev)
        /* We grab the nand info object here fresh because this is usually
         * called after arg_off_size() which can change the value of dev.
         */
-       struct mtd_info *mtd = nand_info[dev];
+       struct mtd_info *mtd = get_nand_dev_by_index(dev);
        loff_t maxoffset = offset + *size;
        int badblocks = 0;
 
@@ -397,10 +403,8 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        if (strcmp(cmd, "info") == 0) {
 
                putc('\n');
-               for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) {
-                       if (nand_info[i])
-                               nand_print_and_set_info(i);
-               }
+               for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++)
+                       nand_print_and_set_info(i);
                return 0;
        }
 
@@ -432,12 +436,11 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
         * one before these commands can run, even if a partition specifier
         * for another device is to be used.
         */
-       if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE ||
-           !nand_info[dev]) {
+       mtd = get_nand_dev_by_index(dev);
+       if (!mtd) {
                puts("\nno devices available\n");
                return 1;
        }
-       mtd = nand_info[dev];
 
        if (strcmp(cmd, "bad") == 0) {
                printf("\nDevice %d bad blocks:\n", dev);
@@ -496,13 +499,13 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                /* skip first two or three arguments, look for offset and size */
                if (mtd_arg_off_size(argc - o, argv + o, &dev, &off, &size,
                                     &maxsize, MTD_DEV_TYPE_NAND,
-                                    nand_info[dev]->size) != 0)
+                                    mtd->size) != 0)
                        return 1;
 
                if (set_dev(dev))
                        return 1;
 
-               mtd = nand_info[dev];
+               mtd = get_nand_dev_by_index(dev);
 
                memset(&opts, 0, sizeof(opts));
                opts.offset = off;
@@ -565,13 +568,13 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
                        if (mtd_arg_off(argv[3], &dev, &off, &size, &maxsize,
                                        MTD_DEV_TYPE_NAND,
-                                       nand_info[dev]->size))
+                                       mtd->size))
                                return 1;
 
                        if (set_dev(dev))
                                return 1;
 
-                       mtd = nand_info[dev];
+                       mtd = get_nand_dev_by_index(dev);
 
                        if (argc > 4 && !str2long(argv[4], &pagecount)) {
                                printf("'%s' is not a number\n", argv[4]);
@@ -588,7 +591,7 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        if (mtd_arg_off_size(argc - 3, argv + 3, &dev, &off,
                                             &size, &maxsize,
                                             MTD_DEV_TYPE_NAND,
-                                            nand_info[dev]->size) != 0)
+                                            mtd->size) != 0)
                                return 1;
 
                        if (set_dev(dev))
@@ -600,7 +603,7 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
                        rwsize = size;
                }
 
-               mtd = nand_info[dev];
+               mtd = get_nand_dev_by_index(dev);
 
                if (!s || !strcmp(s, ".jffs2") ||
                    !strcmp(s, ".e") || !strcmp(s, ".i")) {
@@ -760,13 +763,15 @@ static int do_nand(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 
                if (mtd_arg_off_size(argc - 2, argv + 2, &dev, &off, &size,
                                     &maxsize, MTD_DEV_TYPE_NAND,
-                                    nand_info[dev]->size) < 0)
+                                    mtd->size) < 0)
                        return 1;
 
                if (set_dev(dev))
                        return 1;
 
-               if (!nand_unlock(nand_info[dev], off, size, allexcept)) {
+               mtd = get_nand_dev_by_index(dev);
+
+               if (!nand_unlock(mtd, off, size, allexcept)) {
                        puts("NAND flash successfully unlocked\n");
                } else {
                        puts("Error unlocking NAND flash, "
@@ -929,6 +934,7 @@ static int do_nandboot(cmd_tbl_t *cmdtp, int flag, int argc,
        char *boot_device = NULL;
        int idx;
        ulong addr, offset = 0;
+       struct mtd_info *mtd;
 #if defined(CONFIG_CMD_MTDPARTS)
        struct mtd_device *dev;
        struct part_info *part;
@@ -948,8 +954,10 @@ static int do_nandboot(cmd_tbl_t *cmdtp, int flag, int argc,
                                addr = simple_strtoul(argv[1], NULL, 16);
                        else
                                addr = CONFIG_SYS_LOAD_ADDR;
-                       return nand_load_image(cmdtp, nand_info[dev->id->num],
-                                              part->offset, addr, argv[0]);
+
+                       mtd = get_nand_dev_by_index(dev->id->num);
+                       return nand_load_image(cmdtp, mtd, part->offset,
+                                              addr, argv[0]);
                }
        }
 #endif
@@ -991,14 +999,15 @@ usage:
 
        idx = simple_strtoul(boot_device, NULL, 16);
 
-       if (idx < 0 || idx >= CONFIG_SYS_MAX_NAND_DEVICE || !nand_info[idx]) {
+       mtd = get_nand_dev_by_index(idx);
+       if (!mtd) {
                printf("\n** Device %d not available\n", idx);
                bootstage_error(BOOTSTAGE_ID_NAND_AVAILABLE);
                return 1;
        }
        bootstage_mark(BOOTSTAGE_ID_NAND_AVAILABLE);
 
-       return nand_load_image(cmdtp, nand_info[idx], offset, addr, argv[0]);
+       return nand_load_image(cmdtp, mtd, offset, addr, argv[0]);
 }
 
 U_BOOT_CMD(nboot, 4, 1, do_nandboot,
index b364cc899a00ac55c3d5a44b48a8b3d966bcc674..b23883e4bf540a088ac011b99f03108b28e35a5e 100644 (file)
@@ -7,36 +7,20 @@
 
 #include <common.h>
 #include <command.h>
-#if defined(CONFIG_8xx)
-void mpc8xx_reginfo(void);
-#elif defined(CONFIG_MPC86xx)
-extern void mpc86xx_reginfo(void);
-#elif defined(CONFIG_MPC85xx)
-extern void mpc85xx_reginfo(void);
-#endif
+#include <asm/ppc.h>
 
 static int do_reginfo(cmd_tbl_t *cmdtp, int flag, int argc,
                       char * const argv[])
 {
-#if defined(CONFIG_8xx)
-       mpc8xx_reginfo();
-
-#elif defined(CONFIG_MPC86xx)
-       mpc86xx_reginfo();
-
-#elif defined(CONFIG_MPC85xx)
-       mpc85xx_reginfo();
-#endif
+       print_reginfo();
 
        return 0;
 }
 
  /**************************************************/
 
-#if defined(CONFIG_CMD_REGINFO)
 U_BOOT_CMD(
        reginfo,        2,      1,      do_reginfo,
        "print register information",
        ""
 );
-#endif
index 570971891ec5c994908f1a235f240b8180d0d5eb..8e36de107e9a91a01376164accfdb96c4fd235a0 100644 (file)
@@ -36,7 +36,9 @@ static int do_scsi(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
        case 2:
                if (strncmp(argv[1], "res", 3) == 0) {
                        printf("\nReset SCSI\n");
+#ifndef CONFIG_DM_SCSI
                        scsi_bus_reset(NULL);
+#endif
                        ret = scsi_scan(true);
                        if (ret)
                                return CMD_RET_FAILURE;
index 4fa456e318347452785edf5a2239fda63a1a6458..992d41408191c8fa20445a378ba80148850f8fde 100644 (file)
--- a/cmd/usb.c
+++ b/cmd/usb.c
@@ -150,6 +150,8 @@ static void usb_display_string(struct usb_device *dev, int index)
 
 static void usb_display_desc(struct usb_device *dev)
 {
+       uint packet_size = dev->descriptor.bMaxPacketSize0;
+
        if (dev->descriptor.bDescriptorType == USB_DT_DEVICE) {
                printf("%d: %s,  USB Revision %x.%x\n", dev->devnum,
                usb_get_class_desc(dev->config.if_desc[0].desc.bInterfaceClass),
@@ -171,9 +173,10 @@ static void usb_display_desc(struct usb_device *dev)
                               usb_get_class_desc(
                                dev->config.if_desc[0].desc.bInterfaceClass));
                }
+               if (dev->descriptor.bcdUSB >= cpu_to_le16(0x0300))
+                       packet_size = 1 << packet_size;
                printf(" - PacketSize: %d  Configurations: %d\n",
-                       dev->descriptor.bMaxPacketSize0,
-                       dev->descriptor.bNumConfigurations);
+                       packet_size, dev->descriptor.bNumConfigurations);
                printf(" - Vendor: 0x%04x  Product 0x%04x Version %d.%d\n",
                        dev->descriptor.idVendor, dev->descriptor.idProduct,
                        (dev->descriptor.bcdDevice>>8) & 0xff,
index 361346b092946e1ecb7f46768b73a692d07a2904..8c8d2e4832424d956ab596032a4cd9195519be3e 100644 (file)
@@ -176,33 +176,393 @@ endmenu
 
 menu "Environment"
 
-if ARCH_SUNXI
+config ENV_IS_IN_DATAFLASH
+       bool "Environment in dataflash"
+       depends on !CHAIN_OF_TRUST
+       help
+         Define this if you have a DataFlash memory device which you
+         want to use for the environment.
+
+         - CONFIG_ENV_OFFSET:
+         - CONFIG_ENV_ADDR:
+         - CONFIG_ENV_SIZE:
+
+         These three #defines specify the offset and size of the
+         environment area within the total memory of your DataFlash placed
+         at the specified address.
+
+config ENV_IS_IN_EEPROM
+       bool "Environment in EEPROM"
+       depends on !CHAIN_OF_TRUST
+       help
+         Use this if you have an EEPROM or similar serial access
+         device and a driver for it.
+
+         - CONFIG_ENV_OFFSET:
+         - CONFIG_ENV_SIZE:
+
+         These two #defines specify the offset and size of the
+         environment area within the total memory of your EEPROM.
+
+         - CONFIG_SYS_I2C_EEPROM_ADDR:
+         If defined, specified the chip address of the EEPROM device.
+         The default address is zero.
+
+         - CONFIG_SYS_I2C_EEPROM_BUS:
+         If defined, specified the i2c bus of the EEPROM device.
+
+         - CONFIG_SYS_EEPROM_PAGE_WRITE_BITS:
+         If defined, the number of bits used to address bytes in a
+         single page in the EEPROM device.  A 64 byte page, for example
+         would require six bits.
+
+         - CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS:
+         If defined, the number of milliseconds to delay between
+         page writes.  The default is zero milliseconds.
+
+         - CONFIG_SYS_I2C_EEPROM_ADDR_LEN:
+         The length in bytes of the EEPROM memory array address.  Note
+         that this is NOT the chip address length!
+
+         - CONFIG_SYS_I2C_EEPROM_ADDR_OVERFLOW:
+         EEPROM chips that implement "address overflow" are ones
+         like Catalyst 24WC04/08/16 which has 9/10/11 bits of
+         address and the extra bits end up in the "chip address" bit
+         slots. This makes a 24WC08 (1Kbyte) chip look like four 256
+         byte chips.
+
+         Note that we consider the length of the address field to
+         still be one byte because the extra address bits are hidden
+         in the chip address.
+
+         - CONFIG_SYS_EEPROM_SIZE:
+         The size in bytes of the EEPROM device.
+
+         - CONFIG_ENV_EEPROM_IS_ON_I2C
+         define this, if you have I2C and SPI activated, and your
+         EEPROM, which holds the environment, is on the I2C bus.
+
+         - CONFIG_I2C_ENV_EEPROM_BUS
+         if you have an Environment on an EEPROM reached over
+         I2C muxes, you can define here, how to reach this
+         EEPROM. For example:
+
+         #define CONFIG_I2C_ENV_EEPROM_BUS       1
+
+         EEPROM which holds the environment, is reached over
+         a pca9547 i2c mux with address 0x70, channel 3.
+
+config ENV_IS_IN_FAT
+       bool "Environment is in a FAT filesystem"
+       depends on !CHAIN_OF_TRUST
+       help
+         Define this if you want to use the FAT file system for the environment.
+
+         - FAT_ENV_INTERFACE:
+
+         Define this to a string that is the name of the block device.
+
+         - FAT_ENV_DEVICE_AND_PART:
+
+         Define this to a string to specify the partition of the device. It can
+         be as following:
+
+           "D:P", "D:0", "D", "D:" or "D:auto" (D, P are integers. And P >= 1)
+               - "D:P": device D partition P. Error occurs if device D has no
+                        partition table.
+               - "D:0": device D.
+               - "D" or "D:": device D partition 1 if device D has partition
+                              table, or the whole device D if has no partition
+                              table.
+               - "D:auto": first partition in device D with bootable flag set.
+                           If none, first valid partition in device D. If no
+                           partition table then means device D.
 
-choice
-       prompt "Environment Device"
-       default ENV_IS_IN_MMC if ARCH_SUNXI
+         - FAT_ENV_FILE:
+
+         It's a string of the FAT file name. This file use to store the
+         environment.
+
+         - CONFIG_FAT_WRITE:
+         This must be enabled. Otherwise it cannot save the environment file.
+
+config ENV_IS_IN_FLASH
+       bool "Environment in flash memory"
+       depends on !CHAIN_OF_TRUST
+       help
+         Define this if you have a flash device which you want to use for the
+         environment.
+
+         a) The environment occupies one whole flash sector, which is
+          "embedded" in the text segment with the U-Boot code. This
+          happens usually with "bottom boot sector" or "top boot
+          sector" type flash chips, which have several smaller
+          sectors at the start or the end. For instance, such a
+          layout can have sector sizes of 8, 2x4, 16, Nx32 kB. In
+          such a case you would place the environment in one of the
+          4 kB sectors - with U-Boot code before and after it. With
+          "top boot sector" type flash chips, you would put the
+          environment in one of the last sectors, leaving a gap
+          between U-Boot and the environment.
+
+         CONFIG_ENV_OFFSET:
+
+          Offset of environment data (variable area) to the
+          beginning of flash memory; for instance, with bottom boot
+          type flash chips the second sector can be used: the offset
+          for this sector is given here.
+
+          CONFIG_ENV_OFFSET is used relative to CONFIG_SYS_FLASH_BASE.
+
+         CONFIG_ENV_ADDR:
+
+          This is just another way to specify the start address of
+          the flash sector containing the environment (instead of
+          CONFIG_ENV_OFFSET).
+
+         CONFIG_ENV_SECT_SIZE:
+
+          Size of the sector containing the environment.
+
+
+         b) Sometimes flash chips have few, equal sized, BIG sectors.
+          In such a case you don't want to spend a whole sector for
+          the environment.
+
+         CONFIG_ENV_SIZE:
+
+          If you use this in combination with CONFIG_ENV_IS_IN_FLASH
+          and CONFIG_ENV_SECT_SIZE, you can specify to use only a part
+          of this flash sector for the environment. This saves
+          memory for the RAM copy of the environment.
+
+          It may also save flash memory if you decide to use this
+          when your environment is "embedded" within U-Boot code,
+          since then the remainder of the flash sector could be used
+          for U-Boot code. It should be pointed out that this is
+          STRONGLY DISCOURAGED from a robustness point of view:
+          updating the environment in flash makes it always
+          necessary to erase the WHOLE sector. If something goes
+          wrong before the contents has been restored from a copy in
+          RAM, your target system will be dead.
+
+         CONFIG_ENV_ADDR_REDUND
+         CONFIG_ENV_SIZE_REDUND
+
+          These settings describe a second storage area used to hold
+          a redundant copy of the environment data, so that there is
+          a valid backup copy in case there is a power failure during
+          a "saveenv" operation.
+
+         BE CAREFUL! Any changes to the flash layout, and some changes to the
+         source code will make it necessary to adapt <board>/u-boot.lds*
+         accordingly!
 
 config ENV_IS_IN_MMC
        bool "Environment in an MMC device"
-       depends on CMD_MMC
+       depends on !CHAIN_OF_TRUST
+       default y if ARCH_SUNXI
        help
          Define this if you have an MMC device which you want to use for the
          environment.
 
+         CONFIG_SYS_MMC_ENV_DEV:
+
+         Specifies which MMC device the environment is stored in.
+
+         CONFIG_SYS_MMC_ENV_PART (optional):
+
+         Specifies which MMC partition the environment is stored in. If not
+         set, defaults to partition 0, the user area. Common values might be
+         1 (first MMC boot partition), 2 (second MMC boot partition).
+
+         CONFIG_ENV_OFFSET:
+         CONFIG_ENV_SIZE:
+
+         These two #defines specify the offset and size of the environment
+         area within the specified MMC device.
+
+         If offset is positive (the usual case), it is treated as relative to
+         the start of the MMC partition. If offset is negative, it is treated
+         as relative to the end of the MMC partition. This can be useful if
+         your board may be fitted with different MMC devices, which have
+         different sizes for the MMC partitions, and you always want the
+         environment placed at the very end of the partition, to leave the
+         maximum possible space before it, to store other data.
+
+         These two values are in units of bytes, but must be aligned to an
+         MMC sector boundary.
+
+         CONFIG_ENV_OFFSET_REDUND (optional):
+
+         Specifies a second storage area, of CONFIG_ENV_SIZE size, used to
+         hold a redundant copy of the environment data. This provides a
+         valid backup copy in case the other copy is corrupted, e.g. due
+         to a power failure during a "saveenv" operation.
+
+         This value may also be positive or negative; this is handled in the
+         same way as CONFIG_ENV_OFFSET.
+
+         This value is also in units of bytes, but must also be aligned to
+         an MMC sector boundary.
+
+         CONFIG_ENV_SIZE_REDUND (optional):
+
+         This value need not be set, even when CONFIG_ENV_OFFSET_REDUND is
+         set. If this value is set, it must be set to the same value as
+         CONFIG_ENV_SIZE.
+
 config ENV_IS_IN_NAND
        bool "Environment in a NAND device"
-       depends on CMD_NAND
+       depends on !CHAIN_OF_TRUST
        help
          Define this if you have a NAND device which you want to use for the
          environment.
 
+         - CONFIG_ENV_OFFSET:
+         - CONFIG_ENV_SIZE:
+
+         These two #defines specify the offset and size of the environment
+         area within the first NAND device.  CONFIG_ENV_OFFSET must be
+         aligned to an erase block boundary.
+
+         - CONFIG_ENV_OFFSET_REDUND (optional):
+
+         This setting describes a second storage area of CONFIG_ENV_SIZE
+         size used to hold a redundant copy of the environment data, so
+         that there is a valid backup copy in case there is a power failure
+         during a "saveenv" operation.  CONFIG_ENV_OFFSET_REDUND must be
+         aligned to an erase block boundary.
+
+         - CONFIG_ENV_RANGE (optional):
+
+         Specifies the length of the region in which the environment
+         can be written.  This should be a multiple of the NAND device's
+         block size.  Specifying a range with more erase blocks than
+         are needed to hold CONFIG_ENV_SIZE allows bad blocks within
+         the range to be avoided.
+
+         - CONFIG_ENV_OFFSET_OOB (optional):
+
+         Enables support for dynamically retrieving the offset of the
+         environment from block zero's out-of-band data.  The
+         "nand env.oob" command can be used to record this offset.
+         Currently, CONFIG_ENV_OFFSET_REDUND is not supported when
+         using CONFIG_ENV_OFFSET_OOB.
+
+config ENV_IS_IN_NVRAM
+       bool "Environment in a non-volatile RAM"
+       depends on !CHAIN_OF_TRUST
+       help
+         Define this if you have some non-volatile memory device
+         (NVRAM, battery buffered SRAM) which you want to use for the
+         environment.
+
+         - CONFIG_ENV_ADDR:
+         - CONFIG_ENV_SIZE:
+
+         These two #defines are used to determine the memory area you
+         want to use for environment. It is assumed that this memory
+         can just be read and written to, without any special
+         provision.
+
+config ENV_IS_IN_ONENAND
+       bool "Environment is in OneNAND"
+       depends on !CHAIN_OF_TRUST
+       help
+         Define this if you want to put your local device's environment in
+         OneNAND.
+
+         - CONFIG_ENV_ADDR:
+         - CONFIG_ENV_SIZE:
+
+         These two #defines are used to determine the device range you
+         want to use for environment. It is assumed that this memory
+         can just be read and written to, without any special
+         provision.
+
+config ENV_IS_IN_REMOTE
+       bool "Environment is in remove memory space"
+       depends on !CHAIN_OF_TRUST
+       help
+         Define this if you have a remote memory space which you
+         want to use for the local device's environment.
+
+         - CONFIG_ENV_ADDR:
+         - CONFIG_ENV_SIZE:
+
+         These two #defines specify the address and size of the
+         environment area within the remote memory space. The
+         local device can get the environment from remote memory
+         space by SRIO or PCIE links.
+
+config ENV_IS_IN_SPI_FLASH
+       bool "Environment is in SPI flash"
+       depends on !CHAIN_OF_TRUST
+       help
+         Define this if you have a SPI Flash memory device which you
+         want to use for the environment.
+
+         - CONFIG_ENV_OFFSET:
+         - CONFIG_ENV_SIZE:
+
+         These two #defines specify the offset and size of the
+         environment area within the SPI Flash. CONFIG_ENV_OFFSET must be
+         aligned to an erase sector boundary.
+
+         - CONFIG_ENV_SECT_SIZE:
+
+         Define the SPI flash's sector size.
+
+         - CONFIG_ENV_OFFSET_REDUND (optional):
+
+         This setting describes a second storage area of CONFIG_ENV_SIZE
+         size used to hold a redundant copy of the environment data, so
+         that there is a valid backup copy in case there is a power failure
+         during a "saveenv" operation. CONFIG_ENV_OFFSET_REDUND must be
+         aligned to an erase sector boundary.
+
+         - CONFIG_ENV_SPI_BUS (optional):
+         - CONFIG_ENV_SPI_CS (optional):
+
+         Define the SPI bus and chip select. If not defined they will be 0.
+
+         - CONFIG_ENV_SPI_MAX_HZ (optional):
+
+         Define the SPI max work clock. If not defined then use 1MHz.
+
+         - CONFIG_ENV_SPI_MODE (optional):
+
+         Define the SPI work mode. If not defined then use SPI_MODE_3.
+
 config ENV_IS_IN_UBI
        bool "Environment in a UBI volume"
-       depends on CMD_UBI
-       depends on CMD_MTDPARTS
+       depends on !CHAIN_OF_TRUST
        help
-         Define this if you have a UBI volume which you want to use for the
-         environment.
+         Define this if you have an UBI volume that you want to use for the
+         environment.  This has the benefit of wear-leveling the environment
+         accesses, which is important on NAND.
+
+         - CONFIG_ENV_UBI_PART:
+
+         Define this to a string that is the mtd partition containing the UBI.
+
+         - CONFIG_ENV_UBI_VOLUME:
+
+         Define this to the name of the volume that you want to store the
+         environment in.
+
+         - CONFIG_ENV_UBI_VOLUME_REDUND:
+
+         Define this to the name of another volume to store a second copy of
+         the environment in.  This will enable redundant environments in UBI.
+         It is assumed that both volumes are in the same MTD partition.
+
+         - CONFIG_UBI_SILENCE_MSG
+         - CONFIG_UBIFS_SILENCE_MSG
+
+         You will probably want to define these to avoid a really noisy system
+         when storing the env in UBI.
 
 config ENV_IS_NOWHERE
        bool "Environment is not stored"
@@ -210,7 +570,7 @@ config ENV_IS_NOWHERE
          Define this if you don't want to or can't have an environment stored
          on a storage medium
 
-endchoice
+if ARCH_SUNXI
 
 config ENV_OFFSET
        hex "Environment Offset"
index 17a92ea2d7504262cebd2a15812994298186113d..60681c845cc205d870fcd3238c3853eb37e38389 100644 (file)
@@ -139,9 +139,11 @@ obj-y += console.o
 endif
 obj-$(CONFIG_CROS_EC) += cros_ec.o
 obj-y += dlmalloc.o
-ifdef CONFIG_SYS_MALLOC_F_LEN
+ifdef CONFIG_SYS_MALLOC_F
+ifneq ($(CONFIG_$(SPL_)SYS_MALLOC_F_LEN),0)
 obj-y += malloc_simple.o
 endif
+endif
 obj-y += image.o
 obj-$(CONFIG_ANDROID_BOOT_IMAGE) += image-android.o
 obj-$(CONFIG_$(SPL_)OF_LIBFDT) += image-fdt.o
index ffa84e356614b61c198145909769544db263e25b..19b80556be05c26829159f54d39a0474a7de54f2 100644 (file)
@@ -418,7 +418,7 @@ static int reserve_uboot(void)
         */
        gd->relocaddr -= gd->mon_len;
        gd->relocaddr &= ~(4096 - 1);
-#ifdef CONFIG_E500
+#if defined(CONFIG_E500) || defined(CONFIG_MIPS)
        /* round down to next 64 kB limit so that IVPR stays aligned */
        gd->relocaddr &= ~(65536 - 1);
 #endif
@@ -727,7 +727,7 @@ static int initf_bootstage(void)
 
 static int initf_console_record(void)
 {
-#if defined(CONFIG_CONSOLE_RECORD) && defined(CONFIG_SYS_MALLOC_F_LEN)
+#if defined(CONFIG_CONSOLE_RECORD) && CONFIG_VAL(SYS_MALLOC_F_LEN)
        return console_record_init();
 #else
        return 0;
@@ -736,7 +736,7 @@ static int initf_console_record(void)
 
 static int initf_dm(void)
 {
-#if defined(CONFIG_DM) && defined(CONFIG_SYS_MALLOC_F_LEN)
+#if defined(CONFIG_DM) && CONFIG_VAL(SYS_MALLOC_F_LEN)
        int ret;
 
        bootstage_start(BOOTSTATE_ID_ACCUM_DM_F, "dm_f");
index ecca1edb04e0a4335bc4f5e6c5d2638b6d64ba45..985aa95c2aea2c664169d5acf453d0f557e663b1 100644 (file)
@@ -256,7 +256,7 @@ static int initr_malloc(void)
 {
        ulong malloc_start;
 
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        debug("Pre-reloc malloc() used %#lx bytes (%ld KB)\n", gd->malloc_ptr,
              gd->malloc_ptr / 1024);
 #endif
index c6156f33bbbe7625d1ee55567a8c7c8c4c00e5ce..01eef5594fcb146faeac3b4036f6257ce98da36e 100644 (file)
@@ -426,12 +426,6 @@ static void pre_console_putc(const char c)
        unmap_sysmem(buffer);
 }
 
-static void pre_console_puts(const char *s)
-{
-       while (*s)
-               pre_console_putc(*s++);
-}
-
 static void print_pre_console_buffer(int flushpoint)
 {
        unsigned long in = 0, out = 0;
@@ -459,7 +453,6 @@ static void print_pre_console_buffer(int flushpoint)
 }
 #else
 static inline void pre_console_putc(const char c) {}
-static inline void pre_console_puts(const char *s) {}
 static inline void print_pre_console_buffer(int flushpoint) {}
 #endif
 
@@ -501,41 +494,8 @@ void putc(const char c)
 
 void puts(const char *s)
 {
-#ifdef CONFIG_DEBUG_UART
-       if (!gd || !(gd->flags & GD_FLG_SERIAL_READY)) {
-               while (*s) {
-                       int ch = *s++;
-
-                       printch(ch);
-               }
-               return;
-       }
-#endif
-#ifdef CONFIG_CONSOLE_RECORD
-       if (gd && (gd->flags & GD_FLG_RECORD) && gd->console_out.start)
-               membuff_put(&gd->console_out, s, strlen(s));
-#endif
-#ifdef CONFIG_SILENT_CONSOLE
-       if (gd->flags & GD_FLG_SILENT)
-               return;
-#endif
-
-#ifdef CONFIG_DISABLE_CONSOLE
-       if (gd->flags & GD_FLG_DISABLE_CONSOLE)
-               return;
-#endif
-
-       if (!gd->have_console)
-               return pre_console_puts(s);
-
-       if (gd->flags & GD_FLG_DEVINIT) {
-               /* Send to the standard output */
-               fputs(stdout, s);
-       } else {
-               /* Send directly to the handler */
-               pre_console_puts(s);
-               serial_puts(s);
-       }
+       while (*s)
+               putc(*s++);
 }
 
 #ifdef CONFIG_CONSOLE_RECORD
index fc1e8b391c3cc22a93c1be371252f5c4cafd3171..c37979b43f39930a1c264d944be3bc3337c24aba 100644 (file)
@@ -1254,7 +1254,7 @@ Void_t* mALLOc(bytes) size_t bytes;
 
   INTERNAL_SIZE_T nb;
 
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT))
                return malloc_simple(bytes);
 #endif
@@ -1522,7 +1522,7 @@ void fREe(mem) Void_t* mem;
   mchunkptr fwd;       /* misc temp for linking */
   int       islr;      /* track whether merging with last_remainder */
 
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        /* free() is a no-op - all the memory will be freed on relocation */
        if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT))
                return;
@@ -1679,7 +1679,7 @@ Void_t* rEALLOc(oldmem, bytes) Void_t* oldmem; size_t bytes;
   /* realloc of null is supposed to be same as malloc */
   if (oldmem == NULL) return mALLOc(bytes);
 
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) {
                /* This is harder to support and should not be needed */
                panic("pre-reloc realloc() is not supported");
@@ -2074,7 +2074,7 @@ Void_t* cALLOc(n, elem_size) size_t n; size_t elem_size;
     return NULL;
   else
   {
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        if (!(gd->flags & GD_FLG_FULL_MALLOC_INIT)) {
                MALLOC_ZERO(mem, sz);
                return mem;
@@ -2375,9 +2375,9 @@ int mALLOPt(param_number, value) int param_number; int value;
 
 int initf_malloc(void)
 {
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        assert(gd->malloc_base);        /* Set up by crt0.S */
-       gd->malloc_limit = CONFIG_SYS_MALLOC_F_LEN;
+       gd->malloc_limit = CONFIG_VAL(SYS_MALLOC_F_LEN);
        gd->malloc_ptr = 0;
 #endif
 
index 6845f8d8d542945f90b005f8fcef1e261092c9c8..d9c0c4e3f347453e704d0682df743349009bdb47 100644 (file)
@@ -226,6 +226,53 @@ int env_import(const char *buf, int check)
        return 0;
 }
 
+#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
+static unsigned char env_flags;
+
+int env_import_redund(const char *buf1, const char *buf2)
+{
+       int crc1_ok, crc2_ok;
+       env_t *ep, *tmp_env1, *tmp_env2;
+
+       tmp_env1 = (env_t *)buf1;
+       tmp_env2 = (env_t *)buf2;
+
+       crc1_ok = crc32(0, tmp_env1->data, ENV_SIZE) ==
+                       tmp_env1->crc;
+       crc2_ok = crc32(0, tmp_env2->data, ENV_SIZE) ==
+                       tmp_env2->crc;
+
+       if (!crc1_ok && !crc2_ok) {
+               set_default_env("!bad CRC");
+               return 0;
+       } else if (crc1_ok && !crc2_ok) {
+               gd->env_valid = 1;
+       } else if (!crc1_ok && crc2_ok) {
+               gd->env_valid = 2;
+       } else {
+               /* both ok - check serial */
+               if (tmp_env1->flags == 255 && tmp_env2->flags == 0)
+                       gd->env_valid = 2;
+               else if (tmp_env2->flags == 255 && tmp_env1->flags == 0)
+                       gd->env_valid = 1;
+               else if (tmp_env1->flags > tmp_env2->flags)
+                       gd->env_valid = 1;
+               else if (tmp_env2->flags > tmp_env1->flags)
+                       gd->env_valid = 2;
+               else /* flags are equal - almost impossible */
+                       gd->env_valid = 1;
+       }
+
+       if (gd->env_valid == 1)
+               ep = tmp_env1;
+       else
+               ep = tmp_env2;
+
+       env_flags = ep->flags;
+       return env_import((char *)ep, 0);
+}
+#endif /* CONFIG_SYS_REDUNDAND_ENVIRONMENT */
+
 /* Export the environment and generate CRC for it. */
 int env_export(env_t *env_out)
 {
@@ -247,6 +294,10 @@ int env_export(env_t *env_out)
 
        env_out->crc = crc32(0, env_out->data, ENV_SIZE);
 
+#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
+       env_out->flags = ++env_flags; /* increase the serial */
+#endif
+
        return 0;
 }
 
index 88b043ec35b1bd644dd5ae85aa42ab88ba30f090..bb760a00ed82db5b563fc861437f3ae1f9aa2049 100644 (file)
@@ -160,10 +160,6 @@ static inline int write_env(struct mmc *mmc, unsigned long size,
        return (n == blk_cnt) ? 0 : -1;
 }
 
-#ifdef CONFIG_ENV_OFFSET_REDUND
-static unsigned char env_flags;
-#endif
-
 int saveenv(void)
 {
        ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
@@ -184,8 +180,6 @@ int saveenv(void)
                goto fini;
 
 #ifdef CONFIG_ENV_OFFSET_REDUND
-       env_new->flags  = ++env_flags; /* increase the serial */
-
        if (gd->env_valid == 1)
                copy = 1;
 #endif
@@ -236,8 +230,6 @@ void env_relocate_spec(void)
        struct mmc *mmc;
        u32 offset1, offset2;
        int read1_fail = 0, read2_fail = 0;
-       int crc1_ok = 0, crc2_ok = 0;
-       env_t *ep;
        int ret;
        int dev = mmc_get_env_dev();
        const char *errmsg = NULL;
@@ -268,42 +260,20 @@ void env_relocate_spec(void)
                puts("*** Warning - some problems detected "
                     "reading environment; recovered successfully\n");
 
-       crc1_ok = !read1_fail &&
-               (crc32(0, tmp_env1->data, ENV_SIZE) == tmp_env1->crc);
-       crc2_ok = !read2_fail &&
-               (crc32(0, tmp_env2->data, ENV_SIZE) == tmp_env2->crc);
-
-       if (!crc1_ok && !crc2_ok) {
+       if (read1_fail && read2_fail) {
                errmsg = "!bad CRC";
                ret = 1;
                goto fini;
-       } else if (crc1_ok && !crc2_ok) {
+       } else if (!read1_fail && read2_fail) {
                gd->env_valid = 1;
-       } else if (!crc1_ok && crc2_ok) {
+               env_import((char *)tmp_env1, 1);
+       } else if (read1_fail && !read2_fail) {
                gd->env_valid = 2;
+               env_import((char *)tmp_env2, 1);
        } else {
-               /* both ok - check serial */
-               if (tmp_env1->flags == 255 && tmp_env2->flags == 0)
-                       gd->env_valid = 2;
-               else if (tmp_env2->flags == 255 && tmp_env1->flags == 0)
-                       gd->env_valid = 1;
-               else if (tmp_env1->flags > tmp_env2->flags)
-                       gd->env_valid = 1;
-               else if (tmp_env2->flags > tmp_env1->flags)
-                       gd->env_valid = 2;
-               else /* flags are equal - almost impossible */
-                       gd->env_valid = 1;
+               env_import_redund((char *)tmp_env1, (char *)tmp_env2);
        }
 
-       free(env_ptr);
-
-       if (gd->env_valid == 1)
-               ep = tmp_env1;
-       else
-               ep = tmp_env2;
-
-       env_flags = ep->flags;
-       env_import((char *)ep, 0);
        ret = 0;
 
 fini:
index 2e28171ae094d79ecef8142c9b246954ce92284f..760f6859e354daeaa5299cf159f53938ae64f975 100644 (file)
@@ -130,17 +130,22 @@ static int writeenv(size_t offset, u_char *buf)
        size_t end = offset + CONFIG_ENV_RANGE;
        size_t amount_saved = 0;
        size_t blocksize, len;
+       struct mtd_info *mtd;
        u_char *char_ptr;
 
-       blocksize = nand_info[0]->erasesize;
+       mtd = get_nand_dev_by_index(0);
+       if (!mtd)
+               return 1;
+
+       blocksize = mtd->erasesize;
        len = min(blocksize, (size_t)CONFIG_ENV_SIZE);
 
        while (amount_saved < CONFIG_ENV_SIZE && offset < end) {
-               if (nand_block_isbad(nand_info[0], offset)) {
+               if (nand_block_isbad(mtd, offset)) {
                        offset += blocksize;
                } else {
                        char_ptr = &buf[amount_saved];
-                       if (nand_write(nand_info[0], offset, &len, char_ptr))
+                       if (nand_write(mtd, offset, &len, char_ptr))
                                return 1;
 
                        offset += blocksize;
@@ -161,13 +166,15 @@ struct env_location {
 static int erase_and_write_env(const struct env_location *location,
                u_char *env_new)
 {
+       struct mtd_info *mtd;
        int ret = 0;
 
-       if (!nand_info[0])
+       mtd = get_nand_dev_by_index(0);
+       if (!mtd)
                return 1;
 
        printf("Erasing %s...\n", location->name);
-       if (nand_erase_opts(nand_info[0], &location->erase_opts))
+       if (nand_erase_opts(mtd, &location->erase_opts))
                return 1;
 
        printf("Writing to %s... ", location->name);
@@ -177,10 +184,6 @@ static int erase_and_write_env(const struct env_location *location,
        return ret;
 }
 
-#ifdef CONFIG_ENV_OFFSET_REDUND
-static unsigned char env_flags;
-#endif
-
 int saveenv(void)
 {
        int     ret = 0;
@@ -214,7 +217,6 @@ int saveenv(void)
                return ret;
 
 #ifdef CONFIG_ENV_OFFSET_REDUND
-       env_new->flags = ++env_flags; /* increase the serial */
        env_idx = (gd->env_valid == 1);
 #endif
 
@@ -248,22 +250,24 @@ static int readenv(size_t offset, u_char *buf)
        size_t end = offset + CONFIG_ENV_RANGE;
        size_t amount_loaded = 0;
        size_t blocksize, len;
+       struct mtd_info *mtd;
        u_char *char_ptr;
 
-       if (!nand_info[0])
+       mtd = get_nand_dev_by_index(0);
+       if (!mtd)
                return 1;
 
-       blocksize = nand_info[0]->erasesize;
+       blocksize = mtd->erasesize;
        len = min(blocksize, (size_t)CONFIG_ENV_SIZE);
 
        while (amount_loaded < CONFIG_ENV_SIZE && offset < end) {
-               if (nand_block_isbad(nand_info[0], offset)) {
+               if (nand_block_isbad(mtd, offset)) {
                        offset += blocksize;
                } else {
                        char_ptr = &buf[amount_loaded];
-                       if (nand_read_skip_bad(nand_info[0], offset,
+                       if (nand_read_skip_bad(mtd, offset,
                                               &len, NULL,
-                                              nand_info[0]->size, char_ptr))
+                                              mtd->size, char_ptr))
                                return 1;
 
                        offset += blocksize;
@@ -315,8 +319,7 @@ void env_relocate_spec(void)
 {
 #if !defined(ENV_IS_EMBEDDED)
        int read1_fail = 0, read2_fail = 0;
-       int crc1_ok = 0, crc2_ok = 0;
-       env_t *ep, *tmp_env1, *tmp_env2;
+       env_t *tmp_env1, *tmp_env2;
 
        tmp_env1 = (env_t *)malloc(CONFIG_ENV_SIZE);
        tmp_env2 = (env_t *)malloc(CONFIG_ENV_SIZE);
@@ -335,42 +338,19 @@ void env_relocate_spec(void)
                puts("*** Warning - some problems detected "
                     "reading environment; recovered successfully\n");
 
-       crc1_ok = !read1_fail &&
-               (crc32(0, tmp_env1->data, ENV_SIZE) == tmp_env1->crc);
-       crc2_ok = !read2_fail &&
-               (crc32(0, tmp_env2->data, ENV_SIZE) == tmp_env2->crc);
-
-       if (!crc1_ok && !crc2_ok) {
-               set_default_env("!bad CRC");
+       if (read1_fail && read2_fail) {
+               set_default_env("!bad env area");
                goto done;
-       } else if (crc1_ok && !crc2_ok) {
+       } else if (!read1_fail && read2_fail) {
                gd->env_valid = 1;
-       } else if (!crc1_ok && crc2_ok) {
+               env_import((char *)tmp_env1, 1);
+       } else if (read1_fail && !read2_fail) {
                gd->env_valid = 2;
+               env_import((char *)tmp_env2, 1);
        } else {
-               /* both ok - check serial */
-               if (tmp_env1->flags == 255 && tmp_env2->flags == 0)
-                       gd->env_valid = 2;
-               else if (tmp_env2->flags == 255 && tmp_env1->flags == 0)
-                       gd->env_valid = 1;
-               else if (tmp_env1->flags > tmp_env2->flags)
-                       gd->env_valid = 1;
-               else if (tmp_env2->flags > tmp_env1->flags)
-                       gd->env_valid = 2;
-               else /* flags are equal - almost impossible */
-                       gd->env_valid = 1;
+               env_import_redund((char *)tmp_env1, (char *)tmp_env2);
        }
 
-       free(env_ptr);
-
-       if (gd->env_valid == 1)
-               ep = tmp_env1;
-       else
-               ep = tmp_env2;
-
-       env_flags = ep->flags;
-       env_import((char *)ep, 0);
-
 done:
        free(tmp_env1);
        free(tmp_env2);
@@ -390,12 +370,12 @@ void env_relocate_spec(void)
        ALLOC_CACHE_ALIGN_BUFFER(char, buf, CONFIG_ENV_SIZE);
 
 #if defined(CONFIG_ENV_OFFSET_OOB)
+       struct mtd_info *mtd  = get_nand_dev_by_index(0);
        /*
         * If unable to read environment offset from NAND OOB then fall through
         * to the normal environment reading code below
         */
-       if (nand_info[0] && !get_nand_env_oob(nand_info[0],
-                                             &nand_env_oob_offset)) {
+       if (mtd && !get_nand_env_oob(mtd, &nand_env_oob_offset)) {
                printf("Found Environment offset in OOB..\n");
        } else {
                set_default_env("!no env offset in OOB");
index 0ac2f65f0b24be57a7b2c123d3ef7a1faa8f0c6e..95b527ddca47c60c7dbe6a55cde935b523a1f8e0 100644 (file)
@@ -33,8 +33,6 @@ int env_init(void)
 
 #ifdef CONFIG_CMD_SAVEENV
 #ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
-static unsigned char env_flags;
-
 int saveenv(void)
 {
        ALLOC_CACHE_ALIGN_BUFFER(env_t, env_new, 1);
@@ -50,8 +48,6 @@ int saveenv(void)
                return 1;
        }
 
-       env_new->flags = ++env_flags; /* increase the serial */
-
        if (gd->env_valid == 1) {
                puts("Writing to redundant UBI... ");
                if (ubi_volume_write(CONFIG_ENV_UBI_VOLUME_REDUND,
@@ -112,8 +108,7 @@ void env_relocate_spec(void)
 {
        ALLOC_CACHE_ALIGN_BUFFER(char, env1_buf, CONFIG_ENV_SIZE);
        ALLOC_CACHE_ALIGN_BUFFER(char, env2_buf, CONFIG_ENV_SIZE);
-       int crc1_ok = 0, crc2_ok = 0;
-       env_t *ep, *tmp_env1, *tmp_env2;
+       env_t *tmp_env1, *tmp_env2;
 
        /*
         * In case we have restarted u-boot there is a chance that buffer
@@ -148,37 +143,7 @@ void env_relocate_spec(void)
                       CONFIG_ENV_UBI_PART, CONFIG_ENV_UBI_VOLUME_REDUND);
        }
 
-       crc1_ok = crc32(0, tmp_env1->data, ENV_SIZE) == tmp_env1->crc;
-       crc2_ok = crc32(0, tmp_env2->data, ENV_SIZE) == tmp_env2->crc;
-
-       if (!crc1_ok && !crc2_ok) {
-               set_default_env("!bad CRC");
-               return;
-       } else if (crc1_ok && !crc2_ok) {
-               gd->env_valid = 1;
-       } else if (!crc1_ok && crc2_ok) {
-               gd->env_valid = 2;
-       } else {
-               /* both ok - check serial */
-               if (tmp_env1->flags == 255 && tmp_env2->flags == 0)
-                       gd->env_valid = 2;
-               else if (tmp_env2->flags == 255 && tmp_env1->flags == 0)
-                       gd->env_valid = 1;
-               else if (tmp_env1->flags > tmp_env2->flags)
-                       gd->env_valid = 1;
-               else if (tmp_env2->flags > tmp_env1->flags)
-                       gd->env_valid = 2;
-               else /* flags are equal - almost impossible */
-                       gd->env_valid = 1;
-       }
-
-       if (gd->env_valid == 1)
-               ep = tmp_env1;
-       else
-               ep = tmp_env2;
-
-       env_flags = ep->flags;
-       env_import((char *)ep, 0);
+       env_import_redund((char *)tmp_env1, (char *)tmp_env2);
 }
 #else /* ! CONFIG_SYS_REDUNDAND_ENVIRONMENT */
 void env_relocate_spec(void)
index c8c79e92383762138294f1124c58ade2cb329902..3d027d43755486dcf53cdc31dbc728ba4191f33c 100644 (file)
@@ -59,7 +59,7 @@ static int fb_nand_lookup(const char *partname,
                return -EINVAL;
        }
 
-       *mtd = nand_info[dev->id->num];
+       *mtd = get_nand_dev_by_index(dev->id->num);
 
        return 0;
 }
index bf4255b4aebaf2382fddf3d59bd349d33f2584e2..4a391beba98092ab93715ca86973580170afcbe6 100644 (file)
@@ -46,8 +46,8 @@ __weak void arch_setup_gd(struct global_data *gd_ptr)
 ulong board_init_f_alloc_reserve(ulong top)
 {
        /* Reserve early malloc arena */
-#if defined(CONFIG_SYS_MALLOC_F)
-       top -= CONFIG_SYS_MALLOC_F_LEN;
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
+       top -= CONFIG_VAL(SYS_MALLOC_F_LEN);
 #endif
        /* LAST : reserve GD (rounded up to a multiple of 16 bytes) */
        top = rounddown(top-sizeof(struct global_data), 16);
@@ -121,11 +121,11 @@ void board_init_f_init_reserve(ulong base)
         * Use gd as it is now properly set for all architectures.
         */
 
-#if defined(CONFIG_SYS_MALLOC_F)
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        /* go down one 'early malloc arena' */
        gd->malloc_base = base;
        /* next alloc will be higher by one 'early malloc arena' size */
-       base += CONFIG_SYS_MALLOC_F_LEN;
+       base += CONFIG_VAL(SYS_MALLOC_F_LEN);
 #endif
 }
 
index 7f3fd925ba1e205d470b7a5c685a9ef0226dcea8..c56cc6f0ec330ba444c604f6e148be2f8922c955 100644 (file)
@@ -220,12 +220,12 @@ static int spl_common_init(bool setup_malloc)
 
        debug("spl_early_init()\n");
 
-#if defined(CONFIG_SYS_MALLOC_F_LEN)
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        if (setup_malloc) {
 #ifdef CONFIG_MALLOC_F_ADDR
                gd->malloc_base = CONFIG_MALLOC_F_ADDR;
 #endif
-               gd->malloc_limit = CONFIG_SYS_MALLOC_F_LEN;
+               gd->malloc_limit = CONFIG_VAL(SYS_MALLOC_F_LEN);
                gd->malloc_ptr = 0;
        }
 #endif
@@ -419,7 +419,7 @@ void board_init_r(gd_t *dummy1, ulong dummy2)
        default:
                debug("Unsupported OS image.. Jumping nevertheless..\n");
        }
-#if defined(CONFIG_SYS_MALLOC_F_LEN) && !defined(CONFIG_SYS_SPL_MALLOC_SIZE)
+#if CONFIG_VAL(SYS_MALLOC_F_LEN) && !defined(CONFIG_SYS_SPL_MALLOC_SIZE)
        debug("SPL malloc() used %#lx bytes (%ld KB)\n", gd->malloc_ptr,
              gd->malloc_ptr / 1024);
 #endif
@@ -486,7 +486,7 @@ ulong spl_relocate_stack_gd(void)
        gd_t *new_gd;
        ulong ptr = CONFIG_SPL_STACK_R_ADDR;
 
-#ifdef CONFIG_SPL_SYS_MALLOC_SIMPLE
+#if defined(CONFIG_SPL_SYS_MALLOC_SIMPLE) && CONFIG_SPL_SYS_MALLOC_F_LEN
        if (CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN) {
                ptr -= CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN;
                gd->malloc_base = ptr;
index 18c1b59b22ccfb08533664967890bb442263a9c4..bb48cac1efac9784dbe44ca901ae06b7353ffc94 100644 (file)
@@ -96,7 +96,7 @@ end:
        return 0;
 }
 
-int spl_mmc_get_device_index(u32 boot_device)
+static int spl_mmc_get_device_index(u32 boot_device)
 {
        switch (boot_device) {
        case BOOT_DEVICE_MMC1:
index ee055ddf155ed96bbd84c88bf34c31530c43daf4..867a7984870ddeae0e167d55911627f846ae7783 100644 (file)
@@ -47,9 +47,10 @@ static int splash_sf_read_raw(u32 bmp_load_addr, int offset, size_t read_size)
 #ifdef CONFIG_CMD_NAND
 static int splash_nand_read_raw(u32 bmp_load_addr, int offset, size_t read_size)
 {
-       return nand_read_skip_bad(nand_info[nand_curr_device], offset,
+       struct mtd_info *mtd = get_nand_dev_by_index(nand_curr_device);
+       return nand_read_skip_bad(mtd, offset,
                                  &read_size, NULL,
-                                 nand_info[nand_curr_device]->size,
+                                 mtd->size,
                                  (u_char *)bmp_load_addr);
 }
 #else
index d135526e4fe87b4fc776a14e81a9cdfe7cd10eeb..70bc6e2931164d31fd0f86ad71a314b713870c9b 100644 (file)
@@ -55,9 +55,6 @@ struct usb_device_scan {
        struct list_head list;
 };
 
-/* TODO(sjg@chromium.org): Remove this when CONFIG_DM_USB is defined */
-static struct usb_hub_device hub_dev[USB_MAX_HUB];
-static int usb_hub_index;
 static LIST_HEAD(usb_scan_list);
 
 __weak void usb_hub_reset_devices(int port)
@@ -65,11 +62,41 @@ __weak void usb_hub_reset_devices(int port)
        return;
 }
 
+static inline bool usb_hub_is_superspeed(struct usb_device *hdev)
+{
+       return hdev->descriptor.bDeviceProtocol == 3;
+}
+
+#ifdef CONFIG_DM_USB
+bool usb_hub_is_root_hub(struct udevice *hub)
+{
+       if (device_get_uclass_id(hub->parent) != UCLASS_USB_HUB)
+               return true;
+
+       return false;
+}
+
+static int usb_set_hub_depth(struct usb_device *dev, int depth)
+{
+       if (depth < 0 || depth > 4)
+               return -EINVAL;
+
+       return usb_control_msg(dev, usb_sndctrlpipe(dev, 0),
+               USB_REQ_SET_HUB_DEPTH, USB_DIR_OUT | USB_RT_HUB,
+               depth, 0, NULL, 0, USB_CNTL_TIMEOUT);
+}
+#endif
+
 static int usb_get_hub_descriptor(struct usb_device *dev, void *data, int size)
 {
+       unsigned short dtype = USB_DT_HUB;
+
+       if (usb_hub_is_superspeed(dev))
+               dtype = USB_DT_SS_HUB;
+
        return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
                USB_REQ_GET_DESCRIPTOR, USB_DIR_IN | USB_RT_HUB,
-               USB_DT_HUB << 8, 0, data, size, USB_CNTL_TIMEOUT);
+               dtype << 8, 0, data, size, USB_CNTL_TIMEOUT);
 }
 
 static int usb_clear_port_feature(struct usb_device *dev, int port, int feature)
@@ -95,9 +122,40 @@ static int usb_get_hub_status(struct usb_device *dev, void *data)
 
 int usb_get_port_status(struct usb_device *dev, int port, void *data)
 {
-       return usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
+       int ret;
+
+       ret = usb_control_msg(dev, usb_rcvctrlpipe(dev, 0),
                        USB_REQ_GET_STATUS, USB_DIR_IN | USB_RT_PORT, 0, port,
-                       data, sizeof(struct usb_hub_status), USB_CNTL_TIMEOUT);
+                       data, sizeof(struct usb_port_status), USB_CNTL_TIMEOUT);
+
+#ifdef CONFIG_DM_USB
+       if (ret < 0)
+               return ret;
+
+       /*
+        * Translate the USB 3.0 hub port status field into the old version
+        * that U-Boot understands. Do this only when the hub is not root hub.
+        * For root hub, the port status field has already been translated
+        * in the host controller driver (see xhci_submit_root() in xhci.c).
+        *
+        * Note: this only supports driver model.
+        */
+
+       if (!usb_hub_is_root_hub(dev->dev) && usb_hub_is_superspeed(dev)) {
+               struct usb_port_status *status = (struct usb_port_status *)data;
+               u16 tmp = (status->wPortStatus) & USB_SS_PORT_STAT_MASK;
+
+               if (status->wPortStatus & USB_SS_PORT_STAT_POWER)
+                       tmp |= USB_PORT_STAT_POWER;
+               if ((status->wPortStatus & USB_SS_PORT_STAT_SPEED) ==
+                   USB_SS_PORT_STAT_SPEED_5GBPS)
+                       tmp |= USB_PORT_STAT_SUPER_SPEED;
+
+               status->wPortStatus = tmp;
+       }
+#endif
+
+       return ret;
 }
 
 
@@ -154,6 +212,10 @@ static void usb_hub_power_on(struct usb_hub_device *hub)
              max(100, (int)pgood_delay) + 1000);
 }
 
+#ifndef CONFIG_DM_USB
+static struct usb_hub_device hub_dev[USB_MAX_HUB];
+static int usb_hub_index;
+
 void usb_hub_reset(void)
 {
        usb_hub_index = 0;
@@ -170,6 +232,7 @@ static struct usb_hub_device *usb_hub_allocate(void)
        printf("ERROR: USB_MAX_HUB (%d) reached\n", USB_MAX_HUB);
        return NULL;
 }
+#endif
 
 #define MAX_TRIES 5
 
@@ -195,8 +258,18 @@ static inline char *portspeed(int portstatus)
        return speed_str;
 }
 
-int legacy_hub_port_reset(struct usb_device *dev, int port,
-                       unsigned short *portstat)
+/**
+ * usb_hub_port_reset() - reset a port given its usb_device pointer
+ *
+ * Reset a hub port and see if a device is present on that port, providing
+ * sufficient time for it to show itself. The port status is returned.
+ *
+ * @dev:       USB device to reset
+ * @port:      Port number to reset (note ports are numbered from 0 here)
+ * @portstat:  Returns port status
+ */
+static int usb_hub_port_reset(struct usb_device *dev, int port,
+                             unsigned short *portstat)
 {
        int err, tries;
        ALLOC_CACHE_ALIGN_BUFFER(struct usb_port_status, portsts, 1);
@@ -269,15 +342,6 @@ int legacy_hub_port_reset(struct usb_device *dev, int port,
        return 0;
 }
 
-#ifdef CONFIG_DM_USB
-int hub_port_reset(struct udevice *dev, int port, unsigned short *portstat)
-{
-       struct usb_device *udev = dev_get_parent_priv(dev);
-
-       return legacy_hub_port_reset(udev, port, portstat);
-}
-#endif
-
 int usb_hub_port_connect_change(struct usb_device *dev, int port)
 {
        ALLOC_CACHE_ALIGN_BUFFER(struct usb_port_status, portsts, 1);
@@ -311,7 +375,7 @@ int usb_hub_port_connect_change(struct usb_device *dev, int port)
        }
 
        /* Reset the port */
-       ret = legacy_hub_port_reset(dev, port, &portstatus);
+       ret = usb_hub_port_reset(dev, port, &portstatus);
        if (ret < 0) {
                if (ret != -ENXIO)
                        printf("cannot reset port %i!?\n", port + 1);
@@ -405,8 +469,15 @@ static int usb_scan_port(struct usb_device_scan *usb_scan)
        portchange = le16_to_cpu(portsts->wPortChange);
        debug("Port %d Status %X Change %X\n", i + 1, portstatus, portchange);
 
-       /* No connection change happened, wait a bit more. */
-       if (!(portchange & USB_PORT_STAT_C_CONNECTION)) {
+       /*
+        * No connection change happened, wait a bit more.
+        *
+        * For some situation, the hub reports no connection change but a
+        * device is connected to the port (eg: CCS bit is set but CSC is not
+        * in the PORTSC register of a root hub), ignore such case.
+        */
+       if (!(portchange & USB_PORT_STAT_C_CONNECTION) &&
+           !(portstatus & USB_PORT_STAT_CONNECTION)) {
                if (get_timer(0) >= hub->connect_timeout) {
                        debug("devnum=%d port=%d: timeout\n",
                              dev->devnum, i + 1);
@@ -418,10 +489,6 @@ static int usb_scan_port(struct usb_device_scan *usb_scan)
                return 0;
        }
 
-       /* Test if the connection came up, and if not exit */
-       if (!(portstatus & USB_PORT_STAT_CONNECTION))
-               return 0;
-
        /* A new USB device is ready at this point */
        debug("devnum=%d port=%d: USB dev found\n", dev->devnum, i + 1);
 
@@ -530,6 +597,20 @@ out:
        return ret;
 }
 
+static struct usb_hub_device *usb_get_hub_device(struct usb_device *dev)
+{
+       struct usb_hub_device *hub;
+
+#ifndef CONFIG_DM_USB
+       /* "allocate" Hub device */
+       hub = usb_hub_allocate();
+#else
+       hub = dev_get_uclass_priv(dev->dev);
+#endif
+
+       return hub;
+}
+
 static int usb_hub_configure(struct usb_device *dev)
 {
        int i, length;
@@ -541,11 +622,11 @@ static int usb_hub_configure(struct usb_device *dev)
        __maybe_unused struct usb_hub_status *hubsts;
        int ret;
 
-       /* "allocate" Hub device */
-       hub = usb_hub_allocate();
+       hub = usb_get_hub_device(dev);
        if (hub == NULL)
                return -ENOMEM;
        hub->pusb_dev = dev;
+
        /* Get the the hub descriptor */
        ret = usb_get_hub_descriptor(dev, buffer, 4);
        if (ret < 0) {
@@ -570,17 +651,19 @@ static int usb_hub_configure(struct usb_device *dev)
                        &descriptor->wHubCharacteristics)),
                        &hub->desc.wHubCharacteristics);
        /* set the bitmap */
-       bitmap = (unsigned char *)&hub->desc.DeviceRemovable[0];
+       bitmap = (unsigned char *)&hub->desc.u.hs.DeviceRemovable[0];
        /* devices not removable by default */
        memset(bitmap, 0xff, (USB_MAXCHILDREN+1+7)/8);
-       bitmap = (unsigned char *)&hub->desc.PortPowerCtrlMask[0];
+       bitmap = (unsigned char *)&hub->desc.u.hs.PortPowerCtrlMask[0];
        memset(bitmap, 0xff, (USB_MAXCHILDREN+1+7)/8); /* PowerMask = 1B */
 
        for (i = 0; i < ((hub->desc.bNbrPorts + 1 + 7)/8); i++)
-               hub->desc.DeviceRemovable[i] = descriptor->DeviceRemovable[i];
+               hub->desc.u.hs.DeviceRemovable[i] =
+                       descriptor->u.hs.DeviceRemovable[i];
 
        for (i = 0; i < ((hub->desc.bNbrPorts + 1 + 7)/8); i++)
-               hub->desc.PortPowerCtrlMask[i] = descriptor->PortPowerCtrlMask[i];
+               hub->desc.u.hs.PortPowerCtrlMask[i] =
+                       descriptor->u.hs.PortPowerCtrlMask[i];
 
        dev->maxchild = descriptor->bNbrPorts;
        debug("%d ports detected\n", dev->maxchild);
@@ -617,6 +700,56 @@ static int usb_hub_configure(struct usb_device *dev)
                break;
        }
 
+       switch (dev->descriptor.bDeviceProtocol) {
+       case USB_HUB_PR_FS:
+               break;
+       case USB_HUB_PR_HS_SINGLE_TT:
+               debug("Single TT\n");
+               break;
+       case USB_HUB_PR_HS_MULTI_TT:
+               ret = usb_set_interface(dev, 0, 1);
+               if (ret == 0) {
+                       debug("TT per port\n");
+                       hub->tt.multi = true;
+               } else {
+                       debug("Using single TT (err %d)\n", ret);
+               }
+               break;
+       case USB_HUB_PR_SS:
+               /* USB 3.0 hubs don't have a TT */
+               break;
+       default:
+               debug("Unrecognized hub protocol %d\n",
+                     dev->descriptor.bDeviceProtocol);
+               break;
+       }
+
+       /* Note 8 FS bit times == (8 bits / 12000000 bps) ~= 666ns */
+       switch (hubCharacteristics & HUB_CHAR_TTTT) {
+       case HUB_TTTT_8_BITS:
+               if (dev->descriptor.bDeviceProtocol != 0) {
+                       hub->tt.think_time = 666;
+                       debug("TT requires at most %d FS bit times (%d ns)\n",
+                             8, hub->tt.think_time);
+               }
+               break;
+       case HUB_TTTT_16_BITS:
+               hub->tt.think_time = 666 * 2;
+               debug("TT requires at most %d FS bit times (%d ns)\n",
+                     16, hub->tt.think_time);
+               break;
+       case HUB_TTTT_24_BITS:
+               hub->tt.think_time = 666 * 3;
+               debug("TT requires at most %d FS bit times (%d ns)\n",
+                     24, hub->tt.think_time);
+               break;
+       case HUB_TTTT_32_BITS:
+               hub->tt.think_time = 666 * 4;
+               debug("TT requires at most %d FS bit times (%d ns)\n",
+                     32, hub->tt.think_time);
+               break;
+       }
+
        debug("power on to power good time: %dms\n",
              descriptor->bPwrOn2PwrGood * 2);
        debug("hub controller current requirement: %dmA\n",
@@ -624,7 +757,7 @@ static int usb_hub_configure(struct usb_device *dev)
 
        for (i = 0; i < dev->maxchild; i++)
                debug("port %d is%s removable\n", i + 1,
-                     hub->desc.DeviceRemovable[(i + 1) / 8] & \
+                     hub->desc.u.hs.DeviceRemovable[(i + 1) / 8] & \
                      (1 << ((i + 1) % 8)) ? " not" : "");
 
        if (sizeof(struct usb_hub_status) > USB_BUFSIZ) {
@@ -653,6 +786,59 @@ static int usb_hub_configure(struct usb_device *dev)
        debug("%sover-current condition exists\n",
              (le16_to_cpu(hubsts->wHubStatus) & HUB_STATUS_OVERCURRENT) ? \
              "" : "no ");
+
+#ifdef CONFIG_DM_USB
+       /*
+        * Update USB host controller's internal representation of this hub
+        * after the hub descriptor is fetched.
+        */
+       ret = usb_update_hub_device(dev);
+       if (ret < 0 && ret != -ENOSYS) {
+               debug("%s: failed to update hub device for HCD (%x)\n",
+                     __func__, ret);
+               return ret;
+       }
+
+       /*
+        * A maximum of seven tiers are allowed in a USB topology, and the
+        * root hub occupies the first tier. The last tier ends with a normal
+        * USB device. USB 3.0 hubs use a 20-bit field called 'route string'
+        * to route packets to the designated downstream port. The hub uses a
+        * hub depth value multiplied by four as an offset into the 'route
+        * string' to locate the bits it uses to determine the downstream
+        * port number.
+        */
+       if (usb_hub_is_root_hub(dev->dev)) {
+               hub->hub_depth = -1;
+       } else {
+               struct udevice *hdev;
+               int depth = 0;
+
+               hdev = dev->dev->parent;
+               while (!usb_hub_is_root_hub(hdev)) {
+                       depth++;
+                       hdev = hdev->parent;
+               }
+
+               hub->hub_depth = depth;
+
+               if (usb_hub_is_superspeed(dev)) {
+                       debug("set hub (%p) depth to %d\n", dev, depth);
+                       /*
+                        * This request sets the value that the hub uses to
+                        * determine the index into the 'route string index'
+                        * for this hub.
+                        */
+                       ret = usb_set_hub_depth(dev, depth);
+                       if (ret < 0) {
+                               debug("%s: failed to set hub depth (%lX)\n",
+                                     __func__, dev->status);
+                               return ret;
+                       }
+               }
+       }
+#endif
+
        usb_hub_power_on(hub);
 
        /*
@@ -777,6 +963,7 @@ UCLASS_DRIVER(usb_hub) = {
        .child_pre_probe        = usb_child_pre_probe,
        .per_child_auto_alloc_size = sizeof(struct usb_device),
        .per_child_platdata_auto_alloc_size = sizeof(struct usb_dev_platdata),
+       .per_device_auto_alloc_size = sizeof(struct usb_hub_device),
 };
 
 static const struct usb_device_id hub_id_table[] = {
index ed9a867d72878c83365d1da6152e0121acd3b9b1..465edc5b50d34cd24ca5a57fdc9e4bc6351e0cc5 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_NIOS2=y
 CONFIG_SYS_CONFIG_NAME="10m50_devboard"
 CONFIG_DEFAULT_DEVICE_TREE="10m50_devboard"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_HUSH_PARSER=y
index 95e794afca86d9ef2f5f68670ebfe5c6587f5185..601b0b5ef5af09973384b6429a339db7a26f707e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_NIOS2=y
 CONFIG_SYS_CONFIG_NAME="3c120_devboard"
 CONFIG_DEFAULT_DEVICE_TREE="3c120_devboard"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_HUSH_PARSER=y
index a33c8ea4f6bd6ae10cec655941fb1ff52cb13085..e078adde44167c6214bf32be229b282cb417c502 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
index bf0b26f0a2cbc4108548e1efbdb2cd131c5c512e..eb2154175897ac0f32b927a24a1170fac09efa32 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index a64bc6bdb65254eb812fc2a83c8b7b86eb40aae3..074e94d7a5f8cb99672b42954d2749cc119928ef 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index ce18507373f450d4731304a2d4d2365d47959ccc..d90be54b90fb95aca8704d924ca91cd70fa7bd8f 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
index 04849d631580353194e5ca2268f7aeb268958fda..e66c7d0e4c673bafd3180956a580c7a9457d5648 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 3f35106fbf8ac5a3d442f2dfc3c3335a465339e9..21bcae4d84d73e95157df0298984c193e6e78443 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 80e06fb0d6aa56af30474e854412084776708d02..2452337a90acb275ae6313767db943926d1103dd 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 62c436898dbe290a8ba11fdfcf25670645413d81..12a242f185042f19b3cbc4ffb2c1721483e9394b 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND,SYS_CLK_100"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
@@ -22,6 +23,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
index c5d9b9ba48c1de9cc1797a713ee46afdad83a1c0..6c823462c1bdc283629acae772cb52cb5b7ec9d2 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
@@ -22,6 +23,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
index 4434790b65e2c06c0d72c97e90c999238cccd86f..073317bad0b7a64104f2b5886a3a2c37d84c971b 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH,SYS_CLK_100"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
@@ -19,6 +20,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
index 4bce5427b8b37db73d4a9cfeb873a35c823c39e9..49026c150bdb94c2294a3e27d79f9e54c03b3e74 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
@@ -19,6 +20,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
index 42ee22741d4014ca6c4fd0e2b73ca2f0350b9973..a40e9bbdfeffbb1ea2908a0ca8955ad535daabb1 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND,SYS_CLK_100_DDR_100"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
index 81ace7bda4f1d3fda120c44f25def8a0d61d1c54..0e5a1c43cf9df7e9c6e02a7bbbb4e91dbab3d61d 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND,SYS_CLK_100_DDR_133"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
index f07841feabd502f6f326f4640edb2ada567af761..eeb28b184d57881b7e4d388bcc2787b82508e00f 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_CLK_100_DDR_100"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index ae753405ec630bdf2c444b1d365e39fa2f10ef59..98d92e70566b41908a82980e59c067c44ecba3a1 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_CLK_100_DDR_133"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 22413b4812d0a0952bc4520b6a50ec9292057697..d6cffb2082209e746e78a55a8b45393610ad31fc 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD,SYS_CLK_100_DDR_100"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 10cbd222d223a28474d2cfec9da25deb7d993c0f..ec389d0d78007407211518263ac457c1202b1e16 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD,SYS_CLK_100_DDR_133"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index e848d8a2afdb20336cb8198c3f213cf808883ea6..b8e90a2f3de10591cba2eae83bc7b2cd54109884 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH,SYS_CLK_100_DDR_100"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 444d55229382420c9bf437278f2dafd66d75258a..29e4f7b373886dfe7a87dc8150e3f3c04cf84151 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH,SYS_CLK_100_DDR_133"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 42f085a47c9eaabb7b7c7d90f5269331befe4372..dcfbbf64f02b909835555bbab760d5b870c0c544 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
index 41bf17665093c051a5be896ba216a8abd5c0eac1..96e5b34fa6f41b17acd54a5d17ea98451a3b7e9b 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 70b447863d2f126a69e23e7134a71b94e67b0492..cd6bffde3cc0a69f0c97b6ef3f01ca53261894f1 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
index 49e280e26a7dde0767f6d18d31a5bea4147f0df0..e45ff3a0963c419cf83677f353b98ead6d84ef85 100644 (file)
@@ -5,6 +5,8 @@ CONFIG_DRAM_TIMINGS_DDR3_800E_1066G_1333J=y
 CONFIG_USB0_VBUS_PIN="PB10"
 CONFIG_VIDEO_COMPOSITE=y
 CONFIG_DEFAULT_DEVICE_TREE="sun5i-r8-chip"
+# CONFIG_ENV_IS_IN_MMC is not set
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SPL=y
 CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_IMLS is not set
index 013d908cffd264014f1c5af23e4151fee9686b07..f9033bc141a767ee213ddef7becd617f8597e21e 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DRAM_TIMINGS_DDR3_800E_1066G_1333J=y
 CONFIG_USB0_VBUS_PIN="PB10"
 CONFIG_DEFAULT_DEVICE_TREE="sun5i-gr8-chip-pro"
 CONFIG_SYS_EXTRA_OPTIONS="SYS_NAND_BLOCK_SIZE=0x40000,SYS_NAND_PAGE_SIZE=4096,SYS_NAND_OOBSIZE=256"
+# CONFIG_ENV_IS_IN_MMC is not set
 CONFIG_ENV_IS_IN_UBI=y
 CONFIG_ENV_UBI_PART="UBI"
 CONFIG_ENV_UBI_VOLUME="uboot-env"
@@ -16,7 +17,6 @@ CONFIG_SPL_I2C_SUPPORT=y
 # CONFIG_CMD_LOADS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_FPGA is not set
-CONFIG_CMD_MTDPARTS=y
 CONFIG_MTDIDS_DEFAULT="nand0=sunxi-nand.0"
 CONFIG_MTDPARTS_DEFAULT="mtdparts=sunxi-nand.0:256k(spl),256k(spl-backup),2m(uboot),2m(uboot-backup),-(UBI)"
 # CONFIG_MMC is not set
index 8e036d223b986c3e2141093b54aae1ccafe27e36..149fa4eb810b90cc8b9da5d3b79f33c02c6908cc 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_CONSOLE_MUX=y
 CONFIG_BOARD_EARLY_INIT_F=y
index ee4da81d3ef1efdb97798032c0381ec71e995d47..23dbaee8623ac2a5c33c87e3efffe9e1cf07e159 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_CONSOLE_MUX=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 1ac3e5e846bde62bbab424e35794d8b8ecff17cd..8aabe58faca2bda4843d9ae9ac6b195f78a1eec9 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_TARGET_M5208EVBE=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="-> "
index 903eef536c9ae21b2ef476d3378d8534a9e94638..42a031ad5bb3ee130a2e4e7549c25efa5f891d70 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_TARGET_M52277EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SPANSION_BOOT"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="-> "
index d657f863d00d386082d47fa68da45ce06dfeef68..caade1d26eb1e2f5b7fcf84d47ec7f64df48d95c 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x43E00000
 CONFIG_TARGET_M52277EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_STMICRO_BOOT"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_CMD_SF=y
index 19596cbeb1a108a93269d4a2abf2dd4c7a3e2e52..ee8ba643b2a00283493628085c62f4dff6d3f243 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0xFFC00000
 CONFIG_TARGET_M5235EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="NORFLASH_PS32BIT"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_LOADB is not set
index 026177db4cc476059fe2cac7d7fc9134e724fd8f..d3bbf21ff2f71822d2b0f8e7706aa3e2c11bb924 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0xFFE00000
 CONFIG_TARGET_M5235EVB=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="-> "
index 19b1fcd237cdd7f6f1896e4d02df40bdcdb55e28..67dfe0bec1dc921a7ec07fe042dac3d85a113231 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_TARGET_M53017EVB=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="-> "
index 3445394b90d00819c7746bbcb8ec47f5c86ce6b7..bf0b34fd23a8b3586fba6dbee66ce5e74c21b42d 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x47E00000
 CONFIG_TARGET_M54418TWR=y
 CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_SERIAL_BOOT,SYS_INPUT_CLKSRC=50000000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="-> "
index 1151fdeb1804d2fe01d2dc52777684fac86a5cbe..ba7cb9f4bd21f33230573e7e2cf97563976df64f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x47E00000
 CONFIG_TARGET_M54418TWR=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_NAND_BOOT,SYS_INPUT_CLKSRC=25000000"
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="-> "
index 1dcdfbf355a2799a8bd6e6c36d809fe65186502f..6abe98a4ca433d6361f3eb899b2fc616f3d90911 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x47E00000
 CONFIG_TARGET_M54418TWR=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_NAND_BOOT,SYS_INPUT_CLKSRC=50000000"
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="-> "
index 4bb31d75f690fead85310a9bd2dd718622c36730..386071691987526ffecbc33ff388a1f3bcf6379f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x47E00000
 CONFIG_TARGET_M54418TWR=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_NAND_BOOT,LOW_MCFCLK,SYS_INPUT_CLKSRC=50000000"
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="-> "
index 729acfebdd9bf4109c22714c5fb92941bdcfe4b1..47a786a8a65eadde9c5e7a0cc47d49141791b16e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x47E00000
 CONFIG_TARGET_M54418TWR=y
 CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_SERIAL_BOOT,SYS_INPUT_CLKSRC=25000000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="-> "
index 3445394b90d00819c7746bbcb8ec47f5c86ce6b7..bf0b34fd23a8b3586fba6dbee66ce5e74c21b42d 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x47E00000
 CONFIG_TARGET_M54418TWR=y
 CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_SERIAL_BOOT,SYS_INPUT_CLKSRC=50000000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="-> "
index 63c1a4bbe617de0dac5ae41b8afacbdcc022b777..5f6382d46ac3b8534f5ff630105ce57b67facef0 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_TARGET_M54451EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_INPUT_CLKSRC=24000000"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_PROMPT="-> "
 # CONFIG_CMD_LOADB is not set
index d67582501859e12395784de75a1ed42198e20891..0f7a87ce98a5502cd45201a1e6b885b60f13f217 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x47e00000
 CONFIG_TARGET_M54451EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="CF_SBF,SYS_STMICRO_BOOT,SYS_INPUT_CLKSRC=24000000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CMD_LOADB is not set
 # CONFIG_CMD_LOADS is not set
index 221c70750b7d0de6e98ce21dbc097657842a9a7c..11ed3c64eb25f956ee6a44a7cf8968315b964a75 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x04000000
 CONFIG_TARGET_M54455EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_ATMEL_BOOT,SYS_INPUT_CLKSRC=66666666"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_CMD_IDE=y
 # CONFIG_CMD_LOADB is not set
index 557b87b78cb65d17272169f87891fe3f33fb176c..9c90ca536df2d82d8815d841d0778520154f0b27 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x04000000
 CONFIG_TARGET_M54455EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_ATMEL_BOOT,SYS_INPUT_CLKSRC=33333333"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_PROMPT="-> "
 CONFIG_CMD_IDE=y
index 9ad0564788dffa5c8f61ff01783984a8fd51c1df..d5cdf73c01a14b32ef6908f67f1233847e979026 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_TARGET_M54455EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_INTEL_BOOT,SYS_INPUT_CLKSRC=66666666"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_CMD_IDE=y
 # CONFIG_CMD_LOADB is not set
index dc7af6cb19342da37c85ed1f3c18bf8127c20e61..158024237b3a4eebe6e2d2f0096cef9eca497748 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x00000000
 CONFIG_TARGET_M54455EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_INTEL_BOOT,SYS_INPUT_CLKSRC=33333333"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_CMD_IDE=y
 # CONFIG_CMD_LOADB is not set
index eed2eabe6850a3422a1d994955c9df8cb2a16185..dac5f6f7c695042aafbae058d4ba48fae9d1f704 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0x4FE00000
 CONFIG_TARGET_M54455EVB=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_STMICRO_BOOT,CF_SBF,SYS_INPUT_CLKSRC=33333333"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_CMD_IDE=y
 # CONFIG_CMD_LOADB is not set
index 562face283e95bb887289e7c68e17747b36eec1d..7aaf33921356b8187eccf1928b02d9e0741c53fd 100644 (file)
@@ -1,47 +1,19 @@
 CONFIG_PPC=y
 CONFIG_8xx=y
 CONFIG_TARGET_MCR3000=y
-CONFIG_BOOTDELAY=5
-CONFIG_HUSH_PARSER=y
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_CMD_NET=y
-CONFIG_CMD_DHCP=y
-# CONFIG_LED_STATUS_BOARD_SPECIFIC is not set
-# CONFIG_MMC is not set
-CONFIG_MTD_NOR_FLASH=y
-# CONFIG_PCI is not set
-CONFIG_OF_LIBFDT=y
-CONFIG_SYS_PROMPT="S3K> "
-CONFIG_NETDEVICES=y
-CONFIG_MPC8XX_FEC=y
-
-CONFIG_CMD_SAVEENV=y
-CONFIG_CMD_FLASH=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_ASKENV=y
-CONFIG_CMD_MTDPARTS=y
-CONFIG_CMD_NAND=y
-# CONFIG_CMD_BDI is not set
-# CONFIG_CMD_ECHO is not set
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_IMI is not set
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_ITEST is not set
-# CONFIG_CMD_CONSOLE is not set
-# CONFIG_CMD_LOADB is not set
-# CONFIG_CMD_LOADS is not set
-# CONFIG_CMD_MD5SUM is not set
-# CONFIG_CMD_MISC is not set
-# CONFIG_CMD_SETGETDCR is not set
-# CONFIG_CMD_SHA1 is not set
-# CONFIG_CMD_SOURCE is not set
+CONFIG_8xx_GCLK_FREQ=132000000
 CONFIG_CMD_IMMAP=y
-
-CONFIG_SYS_IMMR=0xFF000000
-
-CONFIG_SYS_OR0_PRELIM=0xFFC00926
+CONFIG_SYS_SIUMCR=0x00600400
+CONFIG_SYS_SYPCR=0xFFFFFF8F
+CONFIG_SYS_TBSCR=0x00C3
+CONFIG_SYS_PISCR=0x0000
+CONFIG_SYS_PLPRCR_BOOL=y
+CONFIG_SYS_PLPRCR=0x00460004
+CONFIG_SYS_SCCR=0x00C20000
+CONFIG_SYS_SCCR_MASK=0x60000000
+CONFIG_SYS_DER=0x2002000F
 CONFIG_SYS_BR0_PRELIM=0x04000801
+CONFIG_SYS_OR0_PRELIM=0xFFC00926
 CONFIG_SYS_BR1_PRELIM_BOOL=y
 CONFIG_SYS_BR1_PRELIM=0x00000081
 CONFIG_SYS_OR1_PRELIM=0xFE000E00
@@ -63,26 +35,37 @@ CONFIG_SYS_OR6_PRELIM=0xFFFF0908
 CONFIG_SYS_BR7_PRELIM_BOOL=y
 CONFIG_SYS_BR7_PRELIM=0x1C000001
 CONFIG_SYS_OR7_PRELIM=0xFFFF810A
-
-CONFIG_8xx_GCLK_FREQ=132000000
-
-CONFIG_SYS_SYPCR=0xFFFFFF8F
-CONFIG_SYS_SIUMCR=0x00600400
-CONFIG_SYS_TBSCR=0x00C3
-CONFIG_SYS_PISCR=0x0000
-CONFIG_SYS_PLPRCR_BOOL=y
-CONFIG_SYS_PLPRCR=0x00460004
-CONFIG_SYS_SCCR_MASK=0x60000000
-CONFIG_SYS_SCCR=0x00C20000
-CONFIG_SYS_DER=0x2002000F
-
-CONFIG_AUTOBOOT=y
+CONFIG_SYS_IMMR=0xFF000000
+CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FLASH=y
+CONFIG_BOOTDELAY=5
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="S3K> "
 CONFIG_AUTOBOOT_KEYED=y
 CONFIG_AUTOBOOT_PROMPT="\nEnter password - autoboot in %d sec...\n"
 CONFIG_AUTOBOOT_DELAY_STR="root"
-
-CONFIG_OF_BOARD_SETUP=y
-
-CONFIG_LZMA=y
+# CONFIG_CMD_BDI is not set
+# CONFIG_CMD_CONSOLE is not set
+# CONFIG_CMD_IMI is not set
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_ASKENV=y
+# CONFIG_CMD_LOADB is not set
+# CONFIG_CMD_LOADS is not set
+CONFIG_CMD_NAND=y
+# 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_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+# CONFIG_CMD_MISC is not set
+# CONFIG_MMC is not set
+CONFIG_MTD_NOR_FLASH=y
+CONFIG_NETDEVICES=y
+CONFIG_MPC8XX_FEC=y
+# CONFIG_PCI is not set
 CONFIG_SHA256=y
-
+CONFIG_LZMA=y
+CONFIG_OF_LIBFDT=y
index c0f994a5ea25cf45583a640391ddc17e79c5471a..10ff9cf7caf37c292f6cd711b3405078f001b87d 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_MMC=y
index f4bdfe046d6f753002fc32bbcb98e331d17c9455..b26731a2696f4586d4510032b0600242431e8257 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_MPC8313ERDB=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_33MHZ"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
@@ -13,6 +14,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
index 119c04e6611b4cf855a8806426bcdea65bc99a4d..00598d4e557f4d45dc76e527b508625bfaba5399 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_MPC8313ERDB=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_66MHZ"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
@@ -13,6 +14,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
index 64247a53356479aa98df89200308c734d29e183f..7ba437834813ba1260f8a14d536740e8104ebc6f 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_MPC8313ERDB=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_33MHZ,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=6
 CONFIG_SPL=y
 CONFIG_HUSH_PARSER=y
@@ -16,6 +17,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
index 363d849efc5547a4771b357e20bb5233cda2b3da..21b8afa6f50a18be244c98df835240dd77f86c54 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_MPC8313ERDB=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_66MHZ,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=6
 CONFIG_SPL=y
 CONFIG_HUSH_PARSER=y
@@ -16,6 +17,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
index 32b88fc9d559136c9c0aac8fde65548bf991cf8e..78e9b33dbfc05418ad76918ef72e6af6d5d5ea8c 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_MPC8315ERDB=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
@@ -13,6 +14,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
index 54d8a3ea1d35d68c51c6923b301c3cd6992c7509..097fb09a4433d1c8e06a45425d201ede0dc9c2b7 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_MPC8323ERDB=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_ASKENV=y
index 82a61f8883384f0ec4f1ba43417c33665baf1f72..8b27b271c3149545655b0de9f863932141cd7ccb 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_MPC8349EMDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
index 787ac9dbcea2e0910c0e554f074d971b24fa0cf0..00fc9e899100d6607083d3e29f3f318d3ddf1f37 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_MPC837XEMDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_MMC=y
index f76cec1104290595e9543d93444a71e7aad48091..64e576745b15b124131a747804af1ce4f8945066 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_MPC837XEMDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_MMC=y
index fc21671ce7cacd0a389fde2d0b27187113c4498e..0373e0e4338fbf43b437925323b97300bc150107 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_MPC837XERDB=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_MMC=y
index 5db680bbd10f0855cceca74019ce49613fe6e82a..1d40e2fb1d4e09646f607d76548244a99983651b 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_MPC8536DS=y
 CONFIG_PHYS_64BIT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 761c1652b1445ea115ac83b50c2d400567e74109..8fda7bc08c19b482975b1d414434c7cb10043c74 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_MPC8536DS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 156c8590bae246bbc8bab36c34e50e498dafcabf..bdbb8c059f131b83ddeead55c0b2929d3cea2201 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_MPC8536DS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 3c563d6ff915b98aeb167ae7eceaf9575c7f9dbd..65a1f9e2c7219efa79be669d29912d6c6153ef97 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8536DS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 8268388d84df413b89b98831944d2e4c0d7eaa9d..2d4647a6c99ebe4f0bd92a04b9fb08d9c5f42f86 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8541CDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
index 09a9c0f90bc137b4bb86ef8172df5aa4e6fd22ef..cbf9eff85d7b16200c1313ccf96033af92e7b174 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_MPC8541CDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="LEGACY"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
index cb15afa9cc37a876f11fe6f25f4a1fc74370e2b9..3e75be96b952f6616c5d39fb3050eaa594c74f4d 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8544DS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_HUSH_PARSER=y
@@ -15,12 +16,12 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
-CONFIG_SCSI=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
 CONFIG_RTL8139=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
index 00c7a76508dc23fea090c4b5cf080d737f83c8ac..8410fa4fb12f8379e5741f0ea64f6c43e9d6f379 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8555CDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
index 36da6123186e7c301addb056201f6c70e9d22002..3ac6035e35f73babfb4cbb2212b558ff35235eac 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_MPC8555CDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="LEGACY"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
index 6e3cfa16f275cc375ddef570581fc5ba07dbb11f..b5fb4c282e9297f8a1c2654d7ff15ce321126120 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8568MDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 6adb9cf087a24a1fa10907c904ea41a17094eab7..b713db43adde5df8a65215f41c825a2ce7e5e01d 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_MPC8569MDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="ATM"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 73cf6e35b70aa6eb1f3a60ee6e95128dccb7f666..96f7755f5de247500f3c9f7e0859472d27e4133b 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_MPC85xx=y
 CONFIG_TARGET_MPC8569MDS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 6aef6d843437f54e82fefa5319896a9305fbfce6..57d8583fd17a91b98d72230dbfa30bf8bdcfe2dc 100644 (file)
@@ -15,9 +15,9 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_BMP=y
 CONFIG_CMD_EXT2=y
 CONFIG_DOS_PARTITION=y
-CONFIG_SCSI=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_USB_KEYBOARD=y
index f09794e13c011683aa5f5c7bb3912d44f5bdbd2b..091045f6a34c291e393922aab9ab050cb5536ee3 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_MIGOR=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 5f91c351c3b6886011ef10deb23e9c9a2df24b0c..f9d8da1e28088a1d178cbdd1ff51db378c1c72ff 100644 (file)
@@ -8,6 +8,8 @@ CONFIG_USB0_VBUS_DET="AXP0-VBUS-DETECT"
 CONFIG_AXP_GPIO=y
 CONFIG_DEFAULT_DEVICE_TREE="sun8i-r16-nintendo-nes-classic-edition"
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+# CONFIG_ENV_IS_IN_MMC is not set
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SPL=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
index fb8ccd8ec467ee2b8f2499f36aaa6f0287fc8022..75f62d9d3d4495042d19c7b44cbb6aa9fe8b83e0 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 48157c22a4dcd3d731ff5de48ed9039b8f2d0147..cc71f0405e6a94028c880d367357c2991c9007cb 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 29738f312643e909113ca972164a2ff4d8fb2901..1ff9d69d9c2ca232f7b410cecba476dbd4192b33 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index dc4a6a72c92294d8dae40de14b043d42245b5d27..a76a1ab02e73c71c1a4fefb04542f0ec2036827e 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 81a083edb3bd855fdd78b1fdb7a9332bcdbb05ef..744ebbd5309aa39dbdb696282b0905ef2be68941 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index e94feb5997b516b77f1c70c5dae877ce6beb5560..24d7139a1bc5fa32a2b302e8cdb0bc84da193ab4 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index d0e5de8331bff8a1430bf3fb4d5a2bff4f0acf08..4fe4186069f3f258e871d570aa653ad063de2059 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index f15da83b99ddda6ae6c616b415f0508802828f6b..1b8ba8fc6e6a853088d5ddcc763d364cad1b4d95 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 93bd550cff7dfa715c8398d3bc83e99bbfc0401d..c22bd10cee8d861d440e2d961bd9d0514efb11df 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 53b5d732e488e028992759e7e41feed66c9660b1..6c7a3b11d9cd3dd370f302d6400c179395b17ffc 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 343f225f68d6ca3a74e660d9ef5ba52d62df4f5c..6bf7344923eab07e3e87da4a5fa320d3e9fa2d92 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 8f33a9be7882c086c5b98d34fcaee2cd06fddec3..b9dff3ef63d0a7bd723a74abb405950c782fa22d 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index f238caee15237e05ddf190c0c47714841083a5f6..27fa96ed7b3917496f4066bcb56b23a6272869cd 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 35e85306fc9018ec9a8ad1499daed653d5598b97..b2dc667fc6f2e4950f7b7313982f59df08c469d5 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 1c1781b289a50f51e29fc0f37f27bfbe49921d3d..e671aa616bd6d1f68fb94d8db2e3b85f3662d603 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 6070bf1f577ccdc1dd13e0f12cb483c17a0d8a9c..e7d9ed4540d760b3eac7503372227327d65b1cee 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_BOARD_EARLY_INIT_F=y
index e297a0da5bccfeed6e6f79008bdfd37e6668a352..6ea2041bf2603037715a0002b6b528f78ea6b97c 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index c8df31d1a0efaa6bd69e47fc89f4209bf1e7097a..6d3eaebf10b1e9ed33289ff51e0412df8d9a6a9c 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index a5bdec3de22a73320d166758ada5169a309dc783..1dec735a65bfb01d0a42ff08c176ec50067eba59 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index a9bae76a4b6034793c26046c04e746d40b4bb975..d8680d18aa3dd4e4379d7adcdd4c2d80f10819ea 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 56a0297520829002342dd28ba134cd88b995f54e..58723535b6c9b0e84d2a71e161436576b861b764 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 4d882264bb79aa6fbd3cbff3a6ee794e13681c2b..a8d81526d84c25ac267a4e64dbb43e90dfd612e5 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 324c6a055c2e1658e7206c127fe7706d95347868..13ecc32126769917b85aef6c5da488dde708d67c 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 8e275e0bd5b53fe31ff6318157bb01ccee628bee..32f10251ea79b0bc910f169cd96be579abac2751 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 71c0c2d4bf6575d19cbcbd08777594d6a43fe84b..4ae11800ef418c924ffacf108941943584c31d97 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 9d994810cc6d3e7fe7a022c6fa1bef6899003adf..1ee299f686cdbd47a725540aee4f7de316f23fa7 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 79cba1a071c51f6815cde5d5b2faa64c2977807e..d97be67a38622fa46ebcc49c08f755cb5e541d2d 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 11f5961bd41affbb7fe68e1434bbee1755e8ead3..5cbd2fc140f53389f7bffdd6007c9c55be8d2e3d 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index eb9d2635b9fdca63785f1a83641f73dcb77fd9eb..d08904b93c2c44bdd0b07d17c94f8834ae077dcd 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -30,6 +31,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index e6373f420026a9581e99cc630b21068df673ed5c..bdbc5d66287b51997ebf0ea4aebf569dbc0498ca 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -28,6 +29,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 60f5ab3206d3291a3301fc1c652c07dde4eccbf2..f8a1a5889160475b2d84efcfefe31d06855b1257 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -29,6 +30,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 30257b64f5774a71712d678073ad6ee4640c0788..5894dd13a16a1e37bb33694d6ea3e165464e4145 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -19,6 +20,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 1d31e0fdc5b1ab5ece18bd753ea55849aa076d73..3c1f414569b67df1792d53b094438561ff5b0ea8 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 031a7f2cedbed94930e6e3b36fe4c716153401ca..8dcef035c4e1e4bfae6a942bf9c7ca2f1d3241e4 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index d401a8ce3e3555e2c36c2e2618b9bb5e23331cdc..95cb9fdcb29e112dd0e90d2492f6eec9fbcca26e 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index c6e12d6c35dc577f57bd5f6b0989c466dfce3dfb..299812915dfd0d2a264b164463f2457af37b80ce 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index f6bbf7db4b196001236dfa5eb1486c6c92454d0f..c57949944c1ad75affe7533e87ab46dd555ac3fa 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -31,6 +32,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index bbeeba0bc8f5c342b641b1ad199aa65bad56afa8..f5e620b6e4d1b2749eae0299c9895a6580d224db 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -29,6 +30,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index ec326a089a56db0b8e6b5a3d3b9270d5fd2eca5b..581a46bde9dd6b5546ad217074b78aabc2ef210d 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -30,6 +31,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 42ab8b95b165d57bd68caee9dca7a0952976cc5f..d8138f29553254f912ec1d8d6fd0ae67dd8940fa 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -20,6 +21,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index a9af7462a16a1a57058553f3212e8068d5b82b5b..378fd8e485a9cda4f4e9dc48660b7ae5299be5e4 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -30,6 +31,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index ca77237cf43089b470881a3e5039bafc11079861..9bd5df5babbba4178d7b7fd48125367ed3157350 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -28,6 +29,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 86052a4c7d0c664c31b8352d98ecda40958f77ae..306d610de17db8cb07cfb472b04e18859809b18c 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -29,6 +30,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 6aff0a0a9dcfaf99dcd76dce5a1580f44b7c367a..48565f1b96f005f2b1ce90438e79f4e126e38167 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -19,6 +20,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 9c83a469a8071dcb8f6b6ff015108f7e488ca011..538b710f841e509edfb02dd86b89aa5887611cd3 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -29,6 +30,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index e1f9a9888dda93550fa96b40669642ae4d9bd64c..ed744c78d6f099923ab9da47cd6c354a579b151b 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -27,6 +28,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 25521d8787aa1abe006ba30b77548598d8f27c6f..5442b1455f9cc1b6b07daeff6c07e4f8e9e5e0bb 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -28,6 +29,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 58335cbab08d2e9f7a162b2f55dee549cc8bbb05..79dc16d425e8c4daa2e6eb7b59e061c8c374c9b9 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -18,6 +19,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 04bb7a13cd5c23c2f6fe2967dc4f5312afc82e95..a6358470f764d67160a92a424b2a582c4f39c4c9 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -29,6 +30,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index af7b4dbd5e740c59008c5ea8fe6cd5a12b7b4d71..1b31852fcf19764361af556a155d945fb6926113 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -26,6 +27,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 22c3b6b278df1107af0d23783c2c31293ee5d938..ee254b53478cf456cf193c00a983bf8371f9c8de 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -27,6 +28,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index c0864a44e99e0318887539c239ac14cfd936171f..6d11a4a64feb6fa26cba6ee8372c051f794f853d 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -17,6 +18,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index c53b7e0819e8476220a5bebb7d944cd46131a35d..d7aac8273b945d17c1153b3bbfa6761760931a3f 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 5b2773abc6564ad80fa6b177ebc3e03cef582004..08d0f771acb3b4e841617a1870eab84748eea46c 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 3a563f5c32b214992a181992c6ba77f223fc0d2c..6a01a8557ca899b140d25bb23219a31dd53174eb 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 69348a6069b1397558300ea991f6211318a85e18..dee57c4daa565b74ae31946de9b0066c08c5853c 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index ae12d7c03e04cafb7dbc655a1d5f30f306887c5f..3f7604cb39ebbf6614b75a6e2887f92164edb0c5 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 56bd118dd550444d66d0974165e96f48bfbf75e8..f0696d55efc14d2908b5260dd0364580552c6794 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 50ac75d701f6745d84d551abf646e1693af1cacd..bd4d916d9e69608ecf2a985995b891a144f94af6 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 221d4ae9f253065d1adb41c0c373258e3040f6f6..5b3d421ca1155ecc3c2763b4a011928cc7adfe00 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 43fed3530e43c520c4540494731eff341ddae62a..2225e82768c47d34d28243d0302e7623d4d29835 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 672b7bbbf97afe24cfb36bdc0880d40ecf6e717a..da036c1ab1620a67df455198385194ec0748eb85 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 22bfb2edcf12d69bdb57f3cee237eb1c06babf62..2f1603b2b5efe6a91d8e8e3ade1d213ddeef17c0 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 86a38b85e2a7e1b84f94437141d5c9e58ae40f26..c342fc45c80956a75ec56576e343a7e947701b80 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -32,6 +33,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index f67d7cd586d28e16b53da5cf5a9a372f86f248ac..8e527814972b2baf51c57a6de37e66d4c894997e 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -29,6 +30,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index ee8227a5ba04baa481e7d1a0594cb41794123c60..032c836a2880ced294ed0a34fb212b0a3f207431 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -30,6 +31,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index e40e371bf571fe242ef6bbaaed26766cab5c3cae..a51b63100f69c95cfe66dc2e55f8ec4eac21642c 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -20,6 +21,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 4b2651c8e646b83b5cee3084cdabb44c6c36d6eb..26a583aaae1eef82bfc42adabe594396fd663133 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -30,6 +31,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index f4cb697687971abd19c998204bb09903a7ecfe8c..e44651520481f9ec84abe8054bea57aea4bba299 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -28,6 +29,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 5091022f810a0048dfaba7f6cf431dc7631e986b..c596b686da301bfeab7e4a660bf89fe416d60cb7 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -29,6 +30,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index df1dbffaa4b3c204c161401ea85df6e1b5346e24..0430762acf7b3e6702d5fa895c952012196a2c7f 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -19,6 +20,7 @@ CONFIG_CMD_DATE=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_SPANSION=y
index 1ae51831ae3c8af730a88c733ca8e53cfe4d6821..8f1f3084d49045b404c3744188a547cf38bd7570 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 15d87e90a94ca5a581a9218467111772608f01ba..7419eaed4068eee2741764e67e78029d4303d5f9 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 5a7821a48bc221d79dbdae40f7091848bf0692a8..76ee4d0377ff9c1fa09456483bc188de5d02c326 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index ebca0cec7b1c8aa5b712e2940629f454ad520ee9..8b5e4decd7bdc4d7d553611a737c2e3d27c93104 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index d47c7873c12b1fc24b2d6016b83db633302f5e1d..7324279de6282a450e0dc245b6f3650196e36c05 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index f7ef553f9a5cc7d0b6d80ed3922c62357a892650..13d4ddfc4832760c78696c92cf7cddfec0dcf843 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index e0a5ae05ca486e33e92081bca118e82aacde0843..d9d8b4f29c389891d10d1bc8bfd3afa810ca8abe 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index e2308a26fb6e0364b88f66aed944c75311c579b2..657abb39d249ca5d0dd9181ef841545290a06ada 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 390eea869bcde4f996e2e7347942d6f7630c6597..3ea5f5c163309229300cbfca3ef12a0a8f239b04 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index d8276c7b6ddabe9cfa47d9a618952f239f748509..b248e980c2a195cc80318f9ad78b58f08822e031 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 2444a664aeedb3edca981a9e3e29f76b4751c7f7..c7aad06d05dc74ac6d46f03abf057fb2b3dac883 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 37575eca2ff13ee8287d9850bc614b36f37fc4e8..e72def9260c8145526a1b415a7d0fbf84c3f1384 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index c2fd7d058679b8221f2c16ea799a6132c28ea6d4..5f7920011c7dd5a075ceef0a85e2e58887c7e761 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index ec3d6f93048538971f1510a07d2c7c1f29a6a94c..d3addc800d35f0e0c36681b0c7f6bd0030eb5e5a 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index eb4b3875c001f7d6c821c3b525d9195d582e79f7..ff352c942a2a4f25eccee77c43d08bae649fcf76 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index af9c2b50a3f4b81dafa4d011d0d00baa66091f93..d025b0e1970473478994f71c39f03cddbf68831e 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index c5e0b6aaeb9c26eeabf232c724c70cdce9de2e15..f1eb8653a43ce025b37301830cd2d1d0a66ac0ed 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 068301c44dfa5e4d53807c4f3852d14fdc994bdf..bb71c7776ccaae57e615feb66a31b56e3d6597ac 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 55e0dbdf909979ac077b301bb728a4eeaa398e00..426775e27cfb7e6647c90fc65984fd0b4a9e0c0a 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index a468b2bf63f7be982d4da242f57336ea00d36d0c..a3f17daaa2666138446581efbe719376fe3ceed8 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,NAND,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index f9fd14c29c7bf5ab4a830e0103f9ec3c72867062..dbc81f7e99e93ce404a673fb93c445715ad20852 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SDCARD,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index e31215ac685747b865fe44a570f76e0286355e28..9e3abd6ececfcdb010de9c8757e49d1ca1d34a9a 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPIFLASH,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index b56c86eec8464a3da0f1074e518175e563a1d9d5..c9d923819b1cac3d997a5e39f963302e413cd392 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index dcd3b3fb67f3de30386873f1a27f7ba4759bb5b6..eca89cfc5a425ed14256372dc661c3d84aaa1d6b 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
@@ -32,6 +33,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 581d044f98951e7e6131da09aca9b282fe3b7953..60477d3891f88ba4aefa9f1185b4bdc1084987cb 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
@@ -32,6 +33,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index f760f4dc34d4e105b8b5a98674eea0788c780769..92adbe8dc8ca964a662dab327b9851a24284726a 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index c63b98c8ef012b2f0047d4fcc49fe113ff7a86ce..d3d394152bcf4cbae7fa8e5000061f6c003444d6 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
@@ -33,6 +34,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 43853e7f85ad56820c83da287f6e62cf56cd0a22..22dd2dc09dc74f22ded8e6aca8431ebb2d1281d7 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
@@ -20,6 +21,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 7a57b080851169a6c40efe97dc4087b7da3ee660..6294ce3a25e6cd6adaba4e2c684dc5528a4a8bc7 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index ac429f6a8562f38700b61e5c310dde8896aa20e9..82f4a401ae6d86520859b6eeddf500786d228f9a 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 0b75721da2d05a7bfc35a52801915b6c758642f5..3d6fc500f72477c4b0dcb0770c1a48192f66edf2 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index f55a2bb424013a0d593c51e1c2571066dde4bb7b..04efc8dc9b488a37aaafcb74d1a70c6114073064 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index b09e9a026d226d3a89e0b845c766c7f721122918..ac7b316d526b311465f26c7fb9c2098afe82966a 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index eeca0a67182d404c7d42a46a6974924ee902f829..e76d88acb5733f4d5370affc3288779df3ec2fd5 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index d742a326513d9b84e313430802b14c83bf13d2de..ecf54d847bea3ddbcc128c92422a8acb91385e67 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 25e81fdc199852db929fec70935642c077ea1108..b481c8c9d6281ab605785246ef6a3781354a6e0f 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index da924d8f54a8784840eff93befd3f6eb0330f38f..2cfcaedcd002f154b7c90d11118df3e6fba1fd9c 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index c22bf9ce8c5338276de695ca5f09a430a1b0b5c3..010bc6cc897239bd4af8efe7f5149fc840857bc2 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 63010c546cf8482d5be615fdc9d887e94ae44a64..f0cb20bfe89e7ad1ff4eedade93215c49bda483e 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 2a872b930fca6257e79a0a5ba13669ca9c7c1e66..8e7dd1d6ec7f45fa7da1c63e037355ac3496739f 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 82d614051875f92e54bfc98089a04da6ad397016..961b33ba08ac624cb178cf73443f6617bdcda39b 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 063ae20c83de12beaf483c8f21e216f25afe17a7..1e3d0b1c10faec43a94ead0f1b298e64011b1572 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 5d8cdf13833555042c5be45ae1391b59eadec122..7521e72c45c1bab47f20e0aa6a2c1b83bac85bf6 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index b3e9c412b9ede96b069a80573725c506392a39d7..28277a2552e19c50a26b5ad7310c2948017211ba 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 7b2187cf9cb628ae0eb6d5017f8f497f5417d87d..f4bef13ae6fb98f8e632cd83a6d1095812438dff 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 9f5a8c4e9ce030f5e239071092c24795fcc0fe6c..f09f7b46dc46121cd7ba3a46bf1d5af19a857f5f 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 7d6ed1bb72c14f5ad1280ada69897f1c4b62f7d7..395a6cd18fd127ee204922a2f9b5f11d49840ae5 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index fed89fd5f5d0e027ab7f5a97dc8e8556ebf1c8b5..f83f43e00cef0bb9a5b705ff95902a7cc4760fd7 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 52bb08f653cbe9aa213ad89da84b0b39165639a5..45949fdba595e64ea4996b23c4c29f99ba474c3b 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index c6fcaf3b98dbfe921b7b82e1921cca08679bee5e..6e6b6a12ad6dbae977e61f33b948ce663207b40c 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 410a124908663ab94f80a4167efd65c3bc340be1..8daff4dc4231e0ae742527ff87be7e077eeb0479 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index f2e72c229efda39fb110f941f39ca080542a9d5d..0606e0c4552a77e663b23bf5fd2f8793ae1fead7 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 3e28c563348e420bf8fb1ab693b996844d8dc402..70ab39b5c68da134ed8a1c4219d523a652110cff 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 807519162a32b8999c9b42fede248ed80c24ef71..ad88f279745cc037ce2ec52059a8341f2ab09e21 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index bad51b553438f390136f6056cff9452cdb589263..5c3cfc7e101d90a7e32358c2748e446090250bee 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index ba8b11c570c242ea3f80029432d58319b8a7511e..8ce7440505d66823d17fda061c751646717587e2 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 650293c94804d8cfeff179bd536ed5f9b97baab1..d39399d22cdf57b4a560a667730336b11e9dfc67 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -27,6 +28,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index af336dff0b094bf5c20aa81c013f8e966ecc39b4..a6cda56c45e98a048416e470a86d70f1901672a9 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -27,6 +28,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 80ad085b1e7470554c807da6f66802a97a5bf4e8..e1e8c7213587366a432bee81d497896ead06d9ad 100644 (file)
@@ -19,6 +19,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 10b29c4a9af9fab520cdf737585f7d103a3454d0..406715a64e1350565aab17a127b69c1c4444ffd2 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -28,6 +29,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 97527e28a1dd08552ecaebed98d84e1cf150d24d..3044236b1a456888eee939bbb5f2e8ce5d5c3984 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
index 09dc9e2619f44e6cf6092591a7f5c962b080f93a..89def59ccf874d866bf1579a378ad7ee2082edf3 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_GREPENV=y
@@ -17,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 8e7b67772561eba05374fd5b4c89bc3df7121db0..a97a28f8f74cc47f476544b44735e36513900991 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -27,6 +28,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_CMD_IRQ is not set
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
index fac743f55cdffe1685875f62bda20d576a4e1b18..122f43baa94941c7647454c43e03908c90f616dd 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -27,6 +28,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_CMD_IRQ is not set
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
index f8296387c4fb0e28475012e80b0ff877b14202e2..5cc601deb77c9caddc8e4ab3dfb6920c17099722 100644 (file)
@@ -19,6 +19,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_CMD_IRQ is not set
 CONFIG_DM=y
 CONFIG_MTD_NOR_FLASH=y
index ca7a38b7d28bf8a46ed8e77894b6b4243a69711d..63b2098658849b2465809d60385faf40bfa805b7 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -28,6 +29,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_CMD_IRQ is not set
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
index 2829d06d27116455a7e2683a720a47e4eb6692eb..32feff18e051534ccf405f724bcc821ae7d03ada 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
index 424eda104e1ac1dd92996a515658dcf835ef4ff1..8822537863d662551f91cbcfbd0304d5fd804ecb 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_MEMTEST=y
@@ -17,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_CMD_IRQ is not set
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
index 4653515682419c4335299a58db949822f7002bff..e1e0ef43719f06460899d7886ee1b725c3da3960 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -27,6 +28,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 749d87bac90dd1ebfe40e4f1e6a0de4b28ebeeb6..980d1e8e52cd4715037ef5b70033814f92e644da 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -27,6 +28,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 3e3031e1340b3513fe13447b7448b31455587f51..fc760dba302157b2544cd189662dd4594e2b7517 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -28,6 +29,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index 19c48a8f66da3b511375d23c457e08e095ec51d5..a49aff5b3e7dc81a5bd24c3eec9d9d1976a3ed4a 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
index 9afc4262114c7d791f4d1545011d5dea224980c3..6fb091060088c0bfb48c57fc968b9411796173a4 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_GREPENV=y
@@ -17,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_FSL_CAAM=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SPI_FLASH=y
index d13d330dcaa7188139c03aebd30eb396384c7c9a..605076e85e56dbb1b2cca761a3589bc6fb5cc14c 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
index a11667c5ebdeb02591a67f17619bf09f3195eba2..a5b0d41d80faaff442e2ea49eecd539c25636e58 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
index 93411bab862db5d48ab3fd54822089fa4d0f3c45..6caffd8468e5a14912a03bd99f99eb63820d15af 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_GREPENV=y
index 356e2d861ecb364514a5382e7c8fc9085dbbf34e..a1c60b2c6c9cbce5be70e0ab906ad5a86201d1e6 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_GREPENV=y
index ce51fb9674f8b5b435b0965c2d0f6c1c7dcdef52..fe35461b8894996b59be8313f6c96daf8538308b 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
index 836f2d942b2dfb6385bad0bdf576d0934a4942df..a7d681d8cf31301ed9aa93e0858beb2541cd6ea5 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
index e13d7b7444998f856adf290c1665ad2eaf2885ee..b198ccf4a2fee396791428432b48ed31d82c13cd 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SRIO_PCIE_BOOT_SLAVE,SYS_TEXT_BASE=0xFFF40000"
+CONFIG_ENV_IS_IN_REMOTE=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
index 6061244a4342de425c90477276a07b5bb3d9740d..96320769978c9624ab884bda3dd61391e478b75d 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_GREPENV=y
index ddb8cacee757d31c29e8ea76b65c21a3e829dfb7..98d6c7610155f5bcea709f1759d7b7e0fe8a825a 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
index 6c023337a64855065256be497d754bd29fd1bdc0..1c0aa913f0f4e9423ccc957df16b81cf6c2e863c 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_GREPENV=y
index ef73ed40c80ad7d1ae9655193d829867536e34a8..e31cacac7b4c10e545dbe696b30d683af8456ce3 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_TQM834X=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_ASKENV=y
@@ -15,6 +16,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_SNTP=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_SYS_NS16550=y
index e210643aa4da611e7f0104becf755e9418c6fb69..e48b9bc3e9ecf6caf97369e8e58b60f5d23a17ac 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="TWR_P1025"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -19,6 +20,7 @@ CONFIG_CMD_PING=y
 # CONFIG_CMD_HASH is not set
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_NETDEVICES=y
 CONFIG_E1000=y
index 29bf82a456d19bc912aacf3a191ece0d17537656..e03ba47be860dd9d1a9239d4ec100d9a4a4ef890 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
 CONFIG_AUTOBOOT_KEYED=y
index dbf073d774e814487f030779f9ed372ae48d8f54..13eef4e6191f8ae9b40e2acb716f456f097de3ab 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="B$ "
index d47ad86fee080da5aef336bded527976158b6c9a..9e1e5ecb47ae30ec455bb57b51cb7c86be8b6178 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_OF_CONTROL=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_MMC=y
index 6ce9e809dd8182fbed0e91b4ac0f0e8da277ac04..ced042e49f50f7059651e963412f02e52a6cf2b4 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_OF_CONTROL=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
 CONFIG_MMC=y
index 04dda725326007878ee7bcf22abf4c2498da125f..84f6f12b3e9dabcca656838501962dc7c32fa0a6 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_ALT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index b69ba8fefa27c6ddeb0267b46fba06996e0ee9ad..09e028ffe92324404ca76589b571143f0f905456 100644 (file)
@@ -15,6 +15,7 @@ CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
index 3d86c1b34ec1d76f0222b72688d5f5b44fdc761b..516ad7052fd01d959e2fc29e0ca779e0d6060c0e 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_AM33XX=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -17,6 +18,10 @@ 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_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x81000000
+CONFIG_FASTBOOT_BUF_SIZE=0x07000000
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
@@ -36,5 +41,6 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
 CONFIG_OF_LIBFDT_OVERLAY=y
index ef5a3f184d85d4a102e281518e713cadd19d4866..33da1faf9683af38462a5172275be960cfda1f32 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -20,6 +21,10 @@ 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_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x81000000
+CONFIG_FASTBOOT_BUF_SIZE=0x07000000
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
@@ -45,3 +50,4 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
+CONFIG_LZO=y
index 19d5eff3988a6c1e32a404b011f5877c32176f1d..4ea56178eeab0a150c5fe2182a9ac884275b1414 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_DEFAULT_DEVICE_TREE="am335x-evm"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -15,9 +16,14 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_MTD_SUPPORT=y
 CONFIG_SPL_MUSB_NEW_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x81000000
+CONFIG_FASTBOOT_BUF_SIZE=0x07000000
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_LIST="am335x-evm am335x-bone am335x-boneblack am335x-evmsk am335x-bonegreen am335x-icev2"
 # CONFIG_BLK is not set
@@ -46,4 +52,5 @@ CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
 CONFIG_RSA=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT_OVERLAY=y
index d038eb30a14257bb17ac37c4907c0a369f12f8e1..49040a695cf11f189f706101e23462140bb9da08 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_NOR=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -13,6 +14,11 @@ CONFIG_SPL_STACK_R=y
 CONFIG_SPL_MTD_SUPPORT=y
 CONFIG_SPL_MUSB_NEW_SUPPORT=y
 CONFIG_SPL_OS_BOOT=y
+CONFIG_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_CMD_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x81000000
+CONFIG_FASTBOOT_BUF_SIZE=0x07000000
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_ASKENV=y
 CONFIG_CMD_EEPROM=y
@@ -26,6 +32,7 @@ CONFIG_CMD_DFU=y
 CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_NAND=y
 CONFIG_DFU_RAM=y
@@ -44,5 +51,6 @@ CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
 CONFIG_OF_LIBFDT_OVERLAY=y
index 2f9662797e744dd4e0022f7e54362871bd1da9fe..f121e2ffc2a57789e3cecee29363cb40b243537d 100644 (file)
@@ -6,12 +6,18 @@ CONFIG_AM33XX=y
 CONFIG_NOR=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_NOR_BOOT=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
 CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x81000000
+CONFIG_FASTBOOT_BUF_SIZE=0x07000000
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_MMC_OMAP_HS=y
@@ -28,5 +34,6 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
 CONFIG_OF_LIBFDT_OVERLAY=y
index 40c165d2f5a7303034e814621c5d673986f27b57..5cbfa8e7bf6be7b97ca08df62d146a64eae4572b 100644 (file)
@@ -9,15 +9,21 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="SPI_BOOT"
 CONFIG_SPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
 CONFIG_SPL=y
 CONFIG_SPL_STACK_R=y
 CONFIG_SPL_MUSB_NEW_SUPPORT=y
+CONFIG_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x81000000
+CONFIG_FASTBOOT_BUF_SIZE=0x07000000
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_MMC_OMAP_HS=y
@@ -33,5 +39,6 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
 CONFIG_OF_LIBFDT_OVERLAY=y
index ffd730eeb8b5f61354fd339368ed1edab4c999aa..51d1042c34337c9b9bd16dbc2b8f6dec23b8c270 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_AM33XX=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -17,9 +18,14 @@ CONFIG_SPL_OS_BOOT=y
 CONFIG_SPL_USB_GADGET_SUPPORT=y
 CONFIG_SPL_USBETH_SUPPORT=y
 # CONFIG_SPL_YMODEM_SUPPORT is not set
+CONFIG_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x81000000
+CONFIG_FASTBOOT_BUF_SIZE=0x07000000
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_NAND=y
 CONFIG_DFU_RAM=y
@@ -36,5 +42,6 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
 CONFIG_OF_LIBFDT_OVERLAY=y
index b0c88a6273a074d1f59f6d37583e420f1aebb387..2b1acb70d18fc6d1d940dc283c2a06a97afc65f9 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -23,6 +24,7 @@ CONFIG_SPL_MTD_SUPPORT=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_OF_CONTROL=y
 CONFIG_OF_LIST="am335x-evm am335x-bone am335x-boneblack am335x-evmsk am335x-bonegreen am335x-icev2"
@@ -52,3 +54,4 @@ CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
 CONFIG_RSA=y
+CONFIG_LZO=y
index 8fc31461f19fe4f35f73281272d0423a7c2b6f76..2e7962f92739a02340dbe8f5d8d712078bb88af0 100644 (file)
@@ -15,6 +15,7 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0033"
+CONFIG_ENV_IS_IN_UBI=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -45,6 +46,7 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
index 4bd1b65880e7d22f8cb51b5562b5cf4e9194f19a..9b4802e4139a72f5cffbaa9ddb05c0f057a69f98 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SERIES=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -40,4 +41,5 @@ CONFIG_ISO_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index 1025cd1d5c7fe1a19de5645a9b9fc52aaf08cbd4..637306d190980fc30d18e8d45a767e7e87595fb0 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SHC_ICT=y
 CONFIG_SERIES=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -40,4 +41,5 @@ CONFIG_ISO_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index 0011234d557b607b6fd615302e0faee1bd279c84..5c0c91202267a0cea8513433c25220590eb22dd4 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SHC_NETBOOT=y
 CONFIG_SERIES=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -41,4 +42,5 @@ CONFIG_ISO_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index a6c617f87e8f8fa39058eb1ed53b83ba0e9a63ee..e5903de5db27b434b75bb357b957d10dcc8eedce 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SERIES=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -38,4 +39,5 @@ CONFIG_ISO_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index fa231543a2b99bad3d3a691baa2351bcbf5725cc..c8f7632f6c39c22e0c59badcaba64be0b4137116 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SHC_SDBOOT=y
 CONFIG_SERIES=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -40,4 +41,5 @@ CONFIG_ISO_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index fa231543a2b99bad3d3a691baa2351bcbf5725cc..c8f7632f6c39c22e0c59badcaba64be0b4137116 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SHC_SDBOOT=y
 CONFIG_SERIES=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -40,4 +41,5 @@ CONFIG_ISO_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index 855e1ca9e29a39f111b2ca4a105cacce8f56f1ae..5d5c68e0fabc02a901746234ee57e6c90ae94d5f 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="EMMC_BOOT"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -41,4 +42,5 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index c51313fc1985f8e583b11ffdb036de34c7f79cc9..21029567c9b4c9e1e8a99ddb329110151815485a 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 # CONFIG_SPL_GPIO_SUPPORT is not set
 CONFIG_TARGET_AM3517_CRANE=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 # CONFIG_SPL_EXT_SUPPORT is not set
index 7e9ea0ee513ad4aeafd092a8f6ccba0c3d7bc194..eddeb5e50c04797c37023ce08303b813a40e76a0 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_ARCH_OMAP2PLUS=y
 # CONFIG_SPL_GPIO_SUPPORT is not set
 CONFIG_TARGET_AM3517_EVM=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
index 3878d2724a2aa50eb07ae9ecfd0cbdc3f8200e8f..7a7a0b0ea0ac355f2b7315a1ce743afadacd4204 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="am437x-gp-evm"
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1,NAND"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -17,6 +18,7 @@ CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_LIST="am437x-gp-evm am437x-sk-evm am43x-epos-evm am437x-idk-evm"
index 6df60e83de7bed52176fb02316e980087559dafa..9892653d27c3ffa87fbd17a2910a98886bcb54af 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_AM43XX=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -35,6 +36,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
index 87d5ba7ea9357f99b383f05bba344375d1997da7..eefad6cb7811808fbd55c1ce9faace479068222a 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_AM43XX=y
 CONFIG_ISW_ENTRY_ADDR=0x30000000
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,QSPI,QSPI_BOOT"
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 20069576384d1fef900d7b8564d86d09057628a4..f4c0f8442a17b34118bf4b9c56cc897233c608b9 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="am437x-gp-evm"
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -39,6 +40,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_LIST="am437x-gp-evm am437x-sk-evm am43x-epos-evm am437x-idk-evm"
index fb4bb037dd9f3686a553b501ec3999e0fe3e4404..5306c26b9908c12957de03b8dfa935c46a716748 100644 (file)
@@ -4,13 +4,18 @@ CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_AM43XX=y
 CONFIG_TI_SECURE_DEVICE=y
+CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000
+CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE=0x02000000
+CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000
 CONFIG_ISW_ENTRY_ADDR=0x403018e0
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="am437x-gp-evm"
 CONFIG_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
+CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="CONS_INDEX=1,NAND"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -27,6 +32,7 @@ CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 # CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_LIST="am437x-gp-evm am437x-sk-evm am43x-epos-evm am437x-idk-evm"
index 658ab92487819da2ca317c82d0acca75266a8bdc..d6e293cd2f9baa19b9fd7e1b8c3e858f7b698b72 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_ARMV7_LPAE=y
 CONFIG_DEFAULT_DEVICE_TREE="am572x-idk"
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 6048e6c9112ea66b0b36ef65c0b75c0987590ded..0a898ded4b6cdeb20913c92e3e50eeaa3cbeb06b 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_AM57XX_EVM=y
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
index b3833303aae81ec90782193e9282c0187e2b4b7f..50a19b3e72e5e8afd36cfd67d7809b7e04838ac2 100644 (file)
@@ -4,10 +4,10 @@ CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_OMAP54XX=y
 CONFIG_TI_SECURE_DEVICE=y
-CONFIG_TARGET_AM57XX_EVM=y
 CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000
 CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE=0x02000000
 CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000
+CONFIG_TARGET_AM57XX_EVM=y
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
@@ -18,6 +18,7 @@ CONFIG_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
index e8c6adccb4c2bd54e6bb91d94b2a110aa38a5710..aa43859cb872ea4add082b5b794121784eddfe92 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_M68K=y
 CONFIG_SYS_TEXT_BASE=0xffc00000
 CONFIG_SYS_MALLOC_F_LEN=0x800
 CONFIG_TARGET_AMCORE=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 3e1f0587a1b1e3d33b134183a7104df324cd6b75..afe6c96fd1d0978aae698431b3926f2bbbef913a 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_ARCH_ATH79=y
 CONFIG_DEFAULT_DEVICE_TREE="ap121"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_DISPLAY_CPUINFO=y
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -22,6 +23,7 @@ CONFIG_CMD_SPI=y
 # CONFIG_CMD_FPGA is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_ISO_PARTITION is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM_SPI_FLASH=y
index 58eb77b5a2e3db815dfd8e7a644f65689511ce81..ca77e7902d5d60cd011e732833f34c5112592c94 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_ARCH_ATH79=y
 CONFIG_TARGET_AP143=y
 CONFIG_DEFAULT_DEVICE_TREE="ap143"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_DISPLAY_CPUINFO=y
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -23,6 +24,7 @@ CONFIG_CMD_SPI=y
 # CONFIG_CMD_FPGA is not set
 # CONFIG_CMD_NET is not set
 # CONFIG_CMD_NFS is not set
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_ISO_PARTITION is not set
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
index ebefd126a8da720f3e0aa451fe40099eb75f4534..ebefe3cdb3291716d8325dc6069d7ff9519af558 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_AP325RXA=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 41c8be91206b61f2dd25cc9d1c282e33513132a4..c08ae4f3eb7efef8ca2236af15dc4bb226d1fba8 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_AP_SH4A_4A=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 9179aaf92fa8f91cdf5bf1cbfdac59bc5f5f87b2..ccff112392f4e7d8545580f49159bf384955e6a6 100644 (file)
@@ -32,7 +32,10 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCI_TEGRA=y
+CONFIG_DM_PMIC=y
 CONFIG_PMIC_AS3722=y
+CONFIG_DM_REGULATOR=y
+CONFIG_REGULATOR_AS3722=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
index d171cf075468653e60db2fa6387b7df4d90072cc..4d88e702003f8ce3587450437913660aeeeb2c29 100644 (file)
@@ -8,7 +8,8 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6Q"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 6611c4306daf05b02e44c38b34e7ff3b33ac17d4..5dbc96070ae23e0ee3b6cb5fa449d73fe8ff2cab 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_APALIS_IMX6=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/apalis_imx6/apalis_imx6q.cfg,MX6Q,DDR_MB=1024"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index dba0a7c6700269dc103ac7c0ac8c6990ec3d0dbf..e216781dcfe52195af2e6934b2d0fe7d66f6d218 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_APALIS_IMX6=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/apalis_imx6/apalis_imx6q.cfg,MX6Q,DDR_MB=2048"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 7474fdd994745a2a85a130e75dcdc2ea81a25acd..6d7c1983d4f7066d4c00937109e27b91d22ef185 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_APF27=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_IDENT_STRING=" apf27 patch 3.10"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=5
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
index 8bc1770ec241ef4d8f13efb615253008a6731c60..f5b18e034b4e2346e8dbf57d3ed7bac211b22863 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 4bd3087cb9adf2854b5642592cb9ebe3e563a98f..264762dd14beffad59838d2633313e2e4653ef90 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_ARISTAINETOS2=y
 CONFIG_VIDEO=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index dfdc97232784951f4c29c9314a6de905ed52dbc4..3c88986002dd0f42b3768e60bf0061e52f459c72 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_ARISTAINETOS2B=y
 CONFIG_VIDEO=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos2.cfg,MX6DL"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 0a8b38d9c6a56d716cfca71a410f534c73c30b90..525aff4375faa6dd85bc6cdd146fc6596bdfeb1c 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_ARISTAINETOS=y
 CONFIG_VIDEO=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aristainetos/aristainetos.cfg,MX6DL"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 4c16ec19fdfbffc481f94460812fc3a343fac773..c5a652457ff6027848b300c6ca96a2e5035aa01c 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 # CONFIG_SYS_THUMB_BUILD is not set
 CONFIG_ARCH_RMOBILE=y
 CONFIG_TARGET_ARMADILLO_800EVA=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 0f2aa16e0e2ecb570d9655fc2b9dff24e5bb4bcb..66ffefd058b22128a8b53607a5ee520007db08da 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_DEFAULT_DEVICE_TREE="exynos5250-arndale"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
index 0ac39eabd27b164896426f1f51ab4ad401a9c6a6..a3ffe64387baa953e4455de65e0439ad4a5fd64f 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_ASPENITE=y
 CONFIG_IDENT_STRING="\nMarvell-Aspenite DB"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 888bb334bf6f1f5803c0edf29c1f9c49466a49c5..add26efc83708a17532e5fe6139323585a5958fe 100644 (file)
@@ -12,4 +12,5 @@ CONFIG_CMD_FPGA_LOADMK=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_JFFS2=y
+CONFIG_FPGA_ALTERA=y
 CONFIG_MTD_NOR_FLASH=y
index 0abfeab1e60dd91fed5459fcad5de0b38be9153b..b239fd950efed50d332a6dfb692e9e8bdb541a01 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_AT91RM9200EK=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_SYS_STDIO_DEREGISTER is not set
 # CONFIG_DISPLAY_CPUINFO is not set
index 545b24a9b1c6ea3a3e9accb535e25434684bc195..1bb20036f586cdc0e9a19f02dbd4e47d14e38ec4 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_AT91RM9200EK=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_SYS_STDIO_DEREGISTER is not set
 # CONFIG_DISPLAY_CPUINFO is not set
index 7c43c5082eb005c5fbba200ed2378022ff50ed17..d0aff37106418766de5f4b79803e82331341ae5d 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9260ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260,SYS_USE_DATAFLASH_CS0"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index 1f959eaca62adb039c772c92a187527c355297f1..1aa7c1786778816fc9f99aa6e94a5f7c25f8a317 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9260ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260,SYS_USE_DATAFLASH_CS1"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index 7df2e06942f1def81ba59cf0d5e5510bb8d3a0e2..36c48cc13c5caaf0aba26d5fd05ce860b6a90c61 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9260ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index 15adf43c42cf7830cdfd0ac3440cb43c118f3b23..a044dd095de2155747b0a4cfe824f0d966a4a7d6 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_AT91SAM9261EK=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9261,SYS_USE_DATAFLASH_CS0"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 05113b980599380669d58fdfb815b199eed1d62f..19a73330dc690166e5d3874aa43d53a0980b825d 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_AT91SAM9261EK=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9261,SYS_USE_DATAFLASH_CS3"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 16f5defa43c597888d7d7e02718b7f7ecba0a0a6..bcb961456566d636fccb366a9a37c0c39a592a21 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_AT91SAM9261EK=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9261,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index d1074faea3246457f3f7777060c391d96df03ea5..b5cf90997eebffe275cf895d17255a720108e896 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9263ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index d1074faea3246457f3f7777060c391d96df03ea5..b5cf90997eebffe275cf895d17255a720108e896 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9263ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index aef21b81257eb840371e8ce8ed458383548796aa..771dacb5a8af17a11467443a7d12c7c60ae11042 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9263ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 66484a18f2e3a28870138559575e4dd42bfa280e..ac7d3684b7a29b4fb17cfbe57dc598a1781fea36 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9263ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_BOOT_NORFLASH"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 1e177480c923a7c57b40e604f3b8173006a526b5..a3b0a4b09350e3a14b92d629a7636033462c071b 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9263ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_NORFLASH"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 70e526a5cf090dc5ad75724f44688927fd3dc791..8b6edd9ac862c0e7c6ddee54b5484ded0457cea5 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_AT91SAM9261EK=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G10,SYS_USE_DATAFLASH_CS0"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 8da1bfe5cdb58f89143d5eeab054ad653ac5f8e9..1597d0e52a001f502d5fb6e5eda26201ddcada46 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_AT91SAM9261EK=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G10,SYS_USE_DATAFLASH_CS3"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 46217efb395cbdb8979c99c663c521ab32823c6a..18bff857ee7cdfe83052a15cfeb348ed940af9d1 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_AT91SAM9261EK=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G10,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 2a696d49c0007d3204d7e4eb4e0d96efb8766f46..5cbba37fd51a411368cbc0bfd1242ab18dac6c50 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20ek_2mmc"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index 55923ca6bdfaa34cbf1f219667984ed4a4071a56..90266feb18bbf8786456940953768502a82a3e51 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20ek_2mmc"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,AT91SAM9G20EK_2MMC,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index 3df66b64888da9d8d5dc526293288a4b7c306df7..c7192a72bc818f399a90c609b4a9acbf7467b9a4 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_DATAFLASH_CS0"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index f0a3a667c4a2ec02d572d8740b1c40baa991871b..6ace30adee1133370779fbf1f5ea14be759d86d5 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_DATAFLASH_CS1"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index 359ee54646e5994b9c34728926147341f9a73016..fdfe92e3ae468c98ca495ca366f4367262a4e793 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index 46f082f6834d676ee132571edfabc9581939cf58..ed9e9c20b9a75cb91d0d327f1ba47e623f376c17 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9m10g45ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9M10G45,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index ddc26bea20102c341d0315065c33d85899a2e198..c6e75fd2850c377fa64a9ff66910ad178819a1a7 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9m10g45ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9M10G45,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index f323ce868626e8a0231490fa417f88139f1632d7..16e9c4cec28e127d0b588ced4f5e37dbeee33267 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9n12ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9N12,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -22,6 +23,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_CLK=y
index 08887c4cfeda172f0071402999b9582799640bfe..3407fd3983d3594af7ef1be2a0871e44e777256f 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9n12ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9N12,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -22,6 +23,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_CLK=y
index 8b8229b2cbb8470572fcb6ba704844065892526c..eb17acfca86cdcc243a3d7f492b1ecea11ffbac6 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9n12ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9N12,SYS_USE_SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -22,6 +23,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_OF_CONTROL=y
 CONFIG_DM=y
 CONFIG_CLK=y
index e2642b9e762e27b60fb5aa013b123b4d3c6ab843..a104fbaae354e906fe73423dcc9ce9bcba89624d 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9rlek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9RL,SYS_USE_DATAFLASH"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index afe28d6136098ad10e53b03f058a06bc51b77ef2..69ff8e62364ace8a4976c045c35813efa5867cd4 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9rlek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9RL,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 851867e8a1c3d08fed687e999907d5c1b4748b87..a599777e3cfc52078628797779be0043bc288604 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9rlek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9RL,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index f52d9210fcacbb00fc9b31cd7b95ab2e2ff383c3..8fc457b28c179b1721c3a0ad6dac065e9e6a8424 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g35ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9X5,SYS_USE_DATAFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 1aa1dd82b0bb63c0b200898fa9c4133ae3e16986..1b761279348003981e597395928f3976a2966d15 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g35ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9X5,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index e31b659b22afb447b787bc6b11e9676c0ed8dcff..23ef8072a3431a81c066d24b348598c910c827d5 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g35ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9X5,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index f8d2ce3702c38f06cf72e27dbc87d2069786f363..48c2559c527b6aa6eefee8296f1a4a5c45196309 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g35ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9X5,SYS_USE_SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 5405939640d7949564e3148df5840b8b920b2971..34e5681808f695f58e577ffd8a608144ac7a3853 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9260ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9XE,SYS_USE_DATAFLASH_CS0"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index a0577026d629bc71c30832219470536b3f917464..8a3500a5e980caf08baf15ceffbcf234f25c2b96 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9260ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9XE,SYS_USE_DATAFLASH_CS1"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index e304fd6072daf1b663a7a1c2f4eed017df41bbf0..7a7facf0879a6610e1b5fb50790966477e6a3b0f 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9260ek"
 CONFIG_DEBUG_UART=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9XE,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="U-Boot> "
index 14ec8a1f1123cf9f775b6f38759611f1f0a32b22..7b26d45762fe9d3124ba3737f7405a715a0ab508 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20-taurus"
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 0b1565249348687ebc04ab71004a15f2cdd559ae..4e5f2e5fc88e0a602fa7f117d7784ff7fd382fc2 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_AXS101=y
 CONFIG_SYS_TEXT_BASE=0x81000000
 CONFIG_SYS_CLK_FREQ=750000000
 CONFIG_DEFAULT_DEVICE_TREE="axs101"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SYS_PROMPT="AXS# "
index add24cfe229fce715d8120fc35f9f335a20305c6..ff0bf19303d4d273f65a577815fcdfefbf6c809e 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ISA_ARCV2=y
 CONFIG_SYS_TEXT_BASE=0x81000000
 CONFIG_SYS_CLK_FREQ=100000000
 CONFIG_DEFAULT_DEVICE_TREE="axs103"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SYS_PROMPT="AXS# "
index 14b74c4a1684089d2ac04c84ce819f87043f7c2f..ddb3c211fe39355addc6424ee70a982c781522d0 100644 (file)
@@ -46,7 +46,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_MMC=y
 CONFIG_MMC_PCI=y
@@ -60,10 +59,10 @@ CONFIG_DM_ETH=y
 CONFIG_E1000=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index 28e399ea9f3fca6d349a3a10fb0d30dd8e138744..30c8670a46c01c57f3ba279b200bf6138c1da895 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCM28155_AP=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_MMC_ENV_DEV=0"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 61caa9be75040edac99cd3b4986b1b7789649b1d..5ee66828449da6fda37aa55f4f7d5d328cbdaa6f 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCM28155_AP=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 73c238e15270164759f4e5b3d624adcaf69cbe18..321a350a0ed65a54fdd2eb825a9484583abd0672 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y
 CONFIG_TARGET_BCM23550_W1D=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index e3cdf98f985df582892430ce4694657e8e9f4bdc..fcf76bd4e36f8bfc9ea776d6a8685fdefa8acbe8 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y
 CONFIG_TARGET_BCM28155_AP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index aa5216e696faa2ad1ed3bdce8e3839e21ae5ac26..374d58b52d0a06f1d7d2d34ba5257daacd303c2c 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ENABLE_ARM_SOC_BOOT0_HOOK=y
 CONFIG_TARGET_BCM28155_AP=y
 CONFIG_SYS_EXTRA_OPTIONS="BCM_SF2_ETH,BCM_SF2_ETH_GMAC"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 61336d38f0dd866a9df9a40268763f8abba1ba29..a32472b02050d6de026bf0a424820f4389cbbb12 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCMCYGNUS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x20000000,ARMV7_NONSEC"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index cbef3d8365028f7a8def569fc47f1f9066d24e60..c90c0c7f9c4d00a874ddc94aa1affe6867a18ad9 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCMCYGNUS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x20000000"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index b12420636193ab46d0e8b60aa82383532257b0af..0ceb8eaf388373464f34f99d0282062670111283 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCMCYGNUS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x40000000"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index f271fa06e5c89542500f3cd53dac6627462df2f6..ac50b2e36a48d7726c83d5560c767a6c44fc2d6c 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCMCYGNUS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x40000000,ARMV7_NONSEC"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index b12420636193ab46d0e8b60aa82383532257b0af..0ceb8eaf388373464f34f99d0282062670111283 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCMCYGNUS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x40000000"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index b12420636193ab46d0e8b60aa82383532257b0af..0ceb8eaf388373464f34f99d0282062670111283 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCMCYGNUS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x40000000"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index ffda22ed495ae019b33640d1c2171e273426460b..8a535f6924d1adb88b3a6060a99be09393b6d750 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_BCMNSP=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_SDRAM_SIZE=0x01000000"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 96e4bce972f71a2f45613bd77a75039f8660a8e1..a2640d7fb03aaf7e1be154eaa20833a72ed84251 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_BCMNS2=y
 CONFIG_IDENT_STRING=" Broadcom Northstar 2"
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=5
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SYS_PROMPT="u-boot> "
index 71d6cd52c10f9ee504c6ca2c2153fceb9f6183cd..10fd50d92508a5e4dd92eb069df3f35f9181e60b 100644 (file)
@@ -25,6 +25,7 @@ CONFIG_CMD_EXT4_WRITE=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_OF_LIVE=y
 CONFIG_SPL_DM=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
index 90fce0b4e30e7aaab954b02a254de08f56fed952..01012c83d4bf55c01d92345636e91280c4609845 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 073a58d94eff7b230b343535df4513c14ee340c0..c5d15c629624b4370f911eb260ed2b4dbe4692ac 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_BAV_VERSION=1
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -64,4 +65,5 @@ CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index 5269c177d4eee1d1c02adaba79bf6b50b4d4d418..31e077c3957f1c2312eb163497347d20ac36ccf4 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_BAV_VERSION=2
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -64,4 +65,5 @@ CONFIG_G_DNL_MANUFACTURER="Texas Instruments"
 CONFIG_G_DNL_VENDOR_NUM=0x0451
 CONFIG_G_DNL_PRODUCT_NUM=0xd022
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index c5b1e9c0626c258595397541f36c4ab20826819a..fe988f0f82679b7da382183eba64845e49d21f02 100644 (file)
@@ -3,7 +3,8 @@ CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_VF610=y
 CONFIG_TARGET_BK4R1=y
 CONFIG_DEFAULT_DEVICE_TREE="bk4r1"
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/phytec/pcm052/imximage.cfg,ENV_IS_IN_NAND"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/phytec/pcm052/imximage.cfg"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index bf7700cbe11091ce4fb87b8108427b24f2783883..ccd0d8f0da677a2b29904cfb72b0562abbf2ea92 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_BLANCHE=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMI is not set
index e2a009edd9d6c28e0ff6df1269c1eb695fcb8b0a..4aded169ca096f7e642285af8f45f9d23d9d1054 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,EMMC_BOOT"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=-2
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index ba03758b3cf5c3bfdd76723104badfe887de6f1d..e128fb40dbf6fed076362fd29490dcae52cb68ae 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=-2
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -48,6 +49,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_NETCONSOLE=y
 # CONFIG_MMC is not set
 CONFIG_SYS_NS16550=y
index 66e086db681079fb4740b3ac82a2effbe8dc4703..1e156caae8bd4bdd7ed2d09336421c5a3f79db25 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1,SPI_BOOT,EMMC_BOOT"
 CONFIG_SPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=-2
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -53,6 +54,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_NETCONSOLE=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SPI_FLASH=y
index 05ceba8fd640ad1f1019a23a2544fccf45e81d4c..3dac8a95333be658ae954cc4f049c48a546fdeef 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_TARGET_BRXRE1=y
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="SERIAL1,CONS_INDEX=1"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=-2
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 007cce10753c1129a6cad4f876131567494fdcf8..b062dcdd589c287a38a42b8e4093331c3c72706f 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_VME8349=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="CADDY2"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
index 6b10abb6907e4f578336f1797a0175d036e0eeed..5d2653299f375c486fd44d55baf269999523fdbc 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_OMAP3_CAIRO=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=-2
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
@@ -29,6 +30,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
index 48422ddffecefc16eadddeb7ff32ee056edc1745..7476383bbeb0693bd151d94fba3019dbdba6a81f 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ARCH_DAVINCI=y
 CONFIG_TARGET_CALIMAIN=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=0
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
index 1a5e47dba53b61aa5c0dfeeb409207997da5a80c..5623bbfbc620dc8469af85b2f3fb8ab5de16aee6 100644 (file)
@@ -36,7 +36,10 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCI_TEGRA=y
+CONFIG_DM_PMIC=y
 CONFIG_PMIC_AS3722=y
+CONFIG_DM_REGULATOR=y
+CONFIG_REGULATOR_AS3722=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
 CONFIG_USB=y
index 94d7e76b182a0490ebed77113f58e194fe248aec..e20e5f878fc90973d8c08cab2d9a3e9868122240 100644 (file)
@@ -11,7 +11,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 82b527641d73f954843aa5cf757d200d48db0827..e14ef5d3a9432ce926c004752faf40e1a17c45b1 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_SPL_FAT_SUPPORT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SPL=y
@@ -35,6 +36,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DM_GPIO=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
@@ -42,4 +44,5 @@ CONFIG_USB=y
 CONFIG_USB_MUSB_HOST=y
 CONFIG_USB_STORAGE=y
 CONFIG_FAT_WRITE=y
+CONFIG_LZO=y
 CONFIG_OF_LIBFDT=y
index 7d0351e324a4be04566ccdb0a9dedcd57a12f2c8..01032e733008f24c7c72788189097f43d1e13e1b 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-veyron-mickey"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
 CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000
index 8f33bb8316ee7785a9d496cf42c2aaedb5b4a0b3..b9d4fc9c12a0468f0a2fe7a73b5b1c28c61cba18 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-veyron-jerry"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 557919c5d8bea7e685c48a4534c04d91364b858f..95bedb09a354fd0bdf6d86d47f16b57471f653f4 100644 (file)
@@ -19,6 +19,7 @@ CONFIG_FIT=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SPL_SYS_MALLOC_SIMPLE=y
 CONFIG_SPL_CPU_SUPPORT=y
@@ -57,8 +58,6 @@ CONFIG_REGMAP=y
 CONFIG_SPL_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_SPL_SYSCON=y
-CONFIG_SCSI=y
-CONFIG_DM_SCSI=y
 CONFIG_BLK=y
 CONFIG_CPU=y
 CONFIG_DM_I2C=y
@@ -71,6 +70,8 @@ CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
+CONFIG_DM_SCSI=y
 CONFIG_DEBUG_UART_BASE=0x3f8
 CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_DEBUG_UART_BOARD_INIT=y
@@ -78,7 +79,6 @@ CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
 CONFIG_TPM_TIS_LPC=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index 3105fed469c1d155919d13fbf3165f7f1205c9e1..3b87ad5806ec117632eadbc17057f37c9e72adcf 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_HAVE_VGA_BIOS=y
 CONFIG_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_CPU=y
@@ -40,8 +41,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SCSI=y
-CONFIG_DM_SCSI=y
 CONFIG_BLK=y
 CONFIG_CPU=y
 CONFIG_DM_I2C=y
@@ -54,6 +53,8 @@ CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
+CONFIG_DM_SCSI=y
 CONFIG_DEBUG_UART_BASE=0x3f8
 CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_DEBUG_UART_BOARD_INIT=y
@@ -61,7 +62,6 @@ CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
 CONFIG_TPM_TIS_LPC=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index db1488a2ad6c4151376d0dad4145e297dad5157a..fb955e46c6df59b4bf04892c888c34bce09d6c96 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-veyron-minnie"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
index ab2d27eb03f659becb79a6662d84c2f41d65dd34..1b5e49034288818af85224ea9cc9fe636bb467c9 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_SMP=y
 CONFIG_HAVE_VGA_BIOS=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_CPU=y
@@ -40,7 +41,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_INTEL_BROADWELL_GPIO=y
 CONFIG_CROS_EC=y
@@ -51,6 +51,7 @@ CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
 CONFIG_DEBUG_UART_BASE=0x3f8
 CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_DEBUG_UART_BOARD_INIT=y
@@ -58,7 +59,6 @@ CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
 CONFIG_TPM_TIS_LPC=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index 30d4019856e90c5796c5f2ea17fc1b2a04ee33d6..4f1b69d52a0093365cfa94c19bd97abe8b8f9c47 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_HAVE_VGA_BIOS=y
 CONFIG_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
@@ -36,8 +37,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SCSI=y
-CONFIG_DM_SCSI=y
 CONFIG_BLK=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_LPC=y
@@ -49,11 +48,12 @@ CONFIG_DM_ETH=y
 CONFIG_RTL8169=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
+CONFIG_DM_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
 CONFIG_TPM_TIS_LPC=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index bf753bc074bd74583397ad9281ea1ca27c57b6bf..0d1f6141632f3897b17914b33378895ec1b9f004 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_OMAP54XX=y
 CONFIG_TARGET_CL_SOM_AM57X=y
 # CONFIG_SPL_NAND_SUPPORT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
 # CONFIG_SPL_EXT_SUPPORT is not set
index 3bb6c6bf65100481a686fa3ecaa8d7b971cae59d..89c0976be227033c386bbcb2c1e609923dc88b5d 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="armada-388-clearfog"
 CONFIG_DEBUG_UART=y
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a548d8f846a18fd3787284387cd6fda60eeabda6..c96285ba48624eb16739e7e98ca4a522bfdcedb5 100644 (file)
@@ -12,7 +12,8 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_OF_BOARD_SETUP=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL,SPL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x80
@@ -46,6 +47,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_ATMEL=y
 CONFIG_SPI_FLASH_EON=y
index be0536a272506449ab8b9a1a3a1db0980a474df6..8176a657396ab5c2bd831160b1b492b4f5326329 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -40,6 +41,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 CONFIG_LED_STATUS=y
index dbe34eb59e9ab9c7c87fed211e1f91e1083a5286..d37b693cc569a858b72ae01b28b1561d0d26523f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 # CONFIG_SYS_THUMB_BUILD is not set
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_CM_T3517=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -25,6 +26,7 @@ CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_LED_STATUS=y
 CONFIG_LED_STATUS_GPIO=y
 CONFIG_LED_STATUS0=y
index 50f6c6498c6928fbca1b9621b72d5eff5ab86b6c..ba76463ff4cea7c2b48d6d7fe88d7a496d57da03 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 # CONFIG_SYS_THUMB_BUILD is not set
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_CM_T35=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -27,6 +28,7 @@ CONFIG_CMD_BMP=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_LED_STATUS=y
 CONFIG_LED_STATUS_GPIO=y
 CONFIG_LED_STATUS0=y
index c652c4fa1eaf1e76b307aa42da20d342090e508d..a9f3af4748ade2e22cada3eec5cd7bd955ccf055 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
@@ -47,6 +48,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_DM=y
 CONFIG_DM_GPIO=y
index 6d18eac559fc4bf4d89e351aaf33ffe07cc9c2d1..4aed572cf6a4c7824c92706d6f181ba52ad196ad 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_CM_T54=y
 CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC=16296
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
@@ -38,8 +39,8 @@ CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
-CONFIG_SCSI=y
 CONFIG_MMC_OMAP_HS=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
index d8307b0836efbf9324287440643960aaa9073116..a23975f858c30948b90ae22e72a17263d4eb773c 100644 (file)
@@ -8,7 +8,8 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6DL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6DL"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index df24f17b2d5c34150cf4c5de96d51d40bb4e67f0..bed38dc400c572754b5a66ed10ef72d2f0bb6637 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_COLIBRI_IMX6=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/colibri_imx6/colibri_imx6.cfg,MX6DL,DDR_MB=256"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 2ba6aea312ff1596a668aa30aaa4ae98c6ec4c5b..ac071030b243de61ec588da4137d8d25004ade80 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_IMX_RDC=y
 CONFIG_IMX_BOOTAUX=y
 CONFIG_DEFAULT_DEVICE_TREE="imx7-colibri"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/colibri_imx7/imximage.cfg,MX7D"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index ddf4bf655e540a28028f7c1d32ca42787f29f7eb..040408bcdac4e27b6425fb7c1e27426996ff853b 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_ARM=y
 CONFIG_TARGET_COLIBRI_PXA270=y
+CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="$ "
 # CONFIG_CMD_ELF is not set
index 1d00055a839d6bc3b6adc1304bf0f9202a335db5..c4c60b4f6eb7bbfdf9201e91d369614b7a4b2c20 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TEGRA20=y
 CONFIG_TARGET_COLIBRI_T20=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-colibri"
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_STDIO_DEREGISTER=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_ARCH_MISC_INIT=y
index 3b510c3e6def7cdf29b91efc7ba0a89f60d05ac5..5fac13d2209f24b310d928c45ddfe1b4fbf3677a 100644 (file)
@@ -4,7 +4,8 @@ CONFIG_ARCH_VF610=y
 CONFIG_VIDEO=y
 CONFIG_TARGET_COLIBRI_VF=y
 CONFIG_DEFAULT_DEVICE_TREE="vf610-colibri"
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/colibri_vf/imximage.cfg,ENV_IS_IN_NAND,IMX_NAND"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/toradex/colibri_vf/imximage.cfg,IMX_NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a0cce754ff7d8f6543f2fee2d514c6c2aefdc296..4802525caef4cdc711b20a1be14d88cbb6455dc3 100644 (file)
@@ -68,7 +68,6 @@ CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index 26eed7c268ae091c1c89dfbcf225c2a509d77940..753ee3ffc9dd16e2bb17926e00660126a29c64f4 100644 (file)
@@ -67,7 +67,6 @@ CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index d05f35d967882eaf18af4cad49a5155401294bb7..87d212a323050f4c5f22abeb5912ed32201488bc 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD,DEVELOP"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index d2af507054086940a09127d83aa96898dbd2123f..ec98183391ecddb8d552def11278562fbd38b78c 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SDCARD"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 614cdb620101fa550fe092d1306a8cf6c327cc4b..97404e02c4b403fc806e38609a25b938ebf8faae 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_MPC85xx=y
 # CONFIG_CMD_ERRATA is not set
 CONFIG_TARGET_CONTROLCENTERD=y
 CONFIG_SYS_EXTRA_OPTIONS="TRAILBLAZER,SPIFLASH,DEVELOP"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=-2
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index da657f142ff3e9ebbf6fa3b849a29bfa2b4dc157..c9edcf942eac4c296cd1c061765f293a375e52b0 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_MPC85xx=y
 # CONFIG_CMD_ERRATA is not set
 CONFIG_TARGET_CONTROLCENTERD=y
 CONFIG_SYS_EXTRA_OPTIONS="TRAILBLAZER,SPIFLASH"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=-2
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a46c46875d24509e8fcf5d760c5c9ba65383f964..af79b6c1204d744fe46b82620c6697e476ff3b8f 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SPL=y
 CONFIG_SPL_BOARD_INIT=y
@@ -34,7 +35,6 @@ CONFIG_CMD_EXT4=y
 CONFIG_EFI_PARTITION=y
 CONFIG_OF_BOARD_FIXUP=y
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SCSI=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_PCA953X=y
 CONFIG_DM_I2C=y
@@ -45,6 +45,7 @@ CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_MV=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_SCSI=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
 CONFIG_DEBUG_UART_SHIFT=2
index 8b510730300ecff90106b39d8bcfe5c6dcc72af1..3950bfc7ff2f2145d6681266e155d73baa691a35 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_COREBOOT=y
 CONFIG_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_BOARD_EARLY_INIT_F is not set
 CONFIG_HUSH_PARSER=y
@@ -44,7 +45,6 @@ CONFIG_DM_RTC=y
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
 CONFIG_TPM_TIS_LPC=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index ac5eefd0d86fb61b331cd0119a6c68dc0200c066..af0beb2a81831140242881367e52a17af5ce4cf4 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g45-corvus"
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9M10G45,MACH_TYPE=2066,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -30,6 +31,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_OF_CONTROL=y
 CONFIG_OF_EMBED=y
 CONFIG_CLK=y
index 1008ef73011782885d5bf1689c04fb111c898f87..ea418c5873708ffbda491792389d8deba86a789c 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_X86=y
 CONFIG_VENDOR_INTEL=y
 CONFIG_DEFAULT_DEVICE_TREE="cougarcanyon2"
 CONFIG_TARGET_COUGARCANYON2=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_ARCH_EARLY_INIT_R is not set
@@ -29,15 +30,14 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SCSI=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index ac50681e1999724911002f4239662c423e7c5c61..3e8d129c74b127df03bfacd24289f41045e40500 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_HAVE_VGA_BIOS=y
 CONFIG_GENERATE_PIRQ_TABLE=y
 CONFIG_GENERATE_MP_TABLE=y
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_CPU=y
@@ -35,7 +36,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_MMC=y
 CONFIG_MMC_PCI=y
@@ -51,10 +51,10 @@ CONFIG_E1000=y
 CONFIG_PCH_GBE=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index a0b5c752cc450596a176e04b1d7b97348fc9af86..0b3769e8d143e926ba371742eb8d86274b9140df 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NET2BIG_V2=y
 CONFIG_IDENT_STRING=" D2 v2"
 CONFIG_SYS_EXTRA_OPTIONS="D2NET_V2"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 74b3f0398d6749b9fa0548d14eebb45997ab9d95..e3320e6641e8c2deda5194c86ac75fe51a6f29a3 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="DA850_AM18X_EVM,MAC_ADDR_IN_EEPROM,SYS_I2C_EEPROM_ADDR_LEN=2,SYS_I2C_EEPROM_ADDR=0x50"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
index 3745b859ed278962065acc7b9d8dd68deab75201..a49ef71e2d870ecedc25be2740dd2e77e2a3a08f 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="MAC_ADDR_IN_SPIFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
index 99543d39e1de6bf17c529c37ede42017d577d6c2..0a5c636c508d82016b3d275b2a3d8074944d427f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_DAVINCI=y
 CONFIG_TARGET_DA850EVM=y
 CONFIG_SYS_EXTRA_OPTIONS="MAC_ADDR_IN_SPIFLASH,USE_NOR,DIRECT_NOR_BOOT"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
index 02fceaacd26235e2711899e8a5a4f89d6a9d3cbb..cafb34d8e8cc5eaa803752630cfda003ce530d16 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TEGRA114=y
 CONFIG_TARGET_DALMORE=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra114-dalmore"
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_SYS_PROMPT="Tegra114 (Dalmore) # "
index 55378efb0f62bff591de31a003b9733748156851..3494bacdaa55a86931399a58b93a36608096cdee 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="armada-375-db"
 CONFIG_DEBUG_UART=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 3831f403b8f930c6a8089a1658d2fb30cf1a592d..ab424980bd4188ef5193f9321c29ae7146085ec4 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_DEFAULT_DEVICE_TREE="armada-385-amc"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index f0b0d698b1b7e822bf985fb3cdacabdc25539bbe..6c6083d328c9875c979cfed60872007af7e5010b 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="armada-388-gp"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
@@ -37,7 +38,6 @@ CONFIG_EFI_PARTITION=y
 # CONFIG_PARTITION_UUIDS is not set
 # CONFIG_SPL_PARTITION_UUIDS is not set
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SCSI=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_MV=y
@@ -45,6 +45,7 @@ CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PCI=y
+CONFIG_SCSI=y
 CONFIG_DEBUG_UART_BASE=0xd0012000
 CONFIG_DEBUG_UART_CLOCK=250000000
 CONFIG_DEBUG_UART_SHIFT=2
index bb65369aaa2da4fa7158772a9d7cbed44313a592..0a6f23324a2c177037d2023a0e7f0c55478f9749 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
 CONFIG_SYS_EXTRA_OPTIONS="DBAU1000"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_PROMPT="DbAu1xx0 # "
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_ELF is not set
index 98b0d40c7bdc771e812ce5f6f231e41ab6a5f1d3..1b7110877f4ca9164dfb023a4d227cb14e6f029f 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
 CONFIG_DBAU1100=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_PROMPT="DbAu1xx0 # "
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_ELF is not set
index cdf5477407d803c5593df5c0118291c424264445..7ffe04ece68936ce8c970a599d8677297953877b 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
 CONFIG_DBAU1500=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_PROMPT="DbAu1xx0 # "
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_ELF is not set
index 6a0c8e8c8a705571759d69a9723bc9bd3cbf95bf..5cab698a21bc504bb56e824d92e7b559191583b1 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
 CONFIG_DBAU1550=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_PROMPT="DbAu1xx0 # "
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_ELF is not set
index e2e5eef38bfc31c2ed665bc691b613bb95d6adb7..7b92cbfcfeaa05687e34bdde924c79dd623d6b33 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_MIPS=y
 CONFIG_TARGET_DBAU1X00=y
 CONFIG_DBAU1550=y
 CONFIG_SYS_LITTLE_ENDIAN=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_PROMPT="DbAu1xx0 # "
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_ELF is not set
index 06874c9da04678188957c6293705da12d4bcf49f..c17e7ec162ff27831e430323822b38dc513d0fa2 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index f5871909cee2be5299c2f5b4a1c691082e0a76bd..f5e5317b872a1284e655a79fbede1c06fe5c5e63 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_DEVKIT8000=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -20,6 +21,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
index c86e0a9e4fa54943e37f0337dcdd542d07237aae..57b4075fd640bb1c3a504e501b302edc4d4b0976 100644 (file)
@@ -65,7 +65,6 @@ CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index 60db28979c521807c7063098d7eeca7c6ae831d6..12c39ba1e6ab85798aab6af5101cc7bccf96fd6b 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_ADVANTECH_DMS_BA16=y
 CONFIG_SYS_DDR_1G=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 7a8c268672569408c5aee1ffdf49a92dad856789..dd3428e4ef9cf5139f8ad7985df2e2b031f441dc 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_ADVANTECH_DMS_BA16=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index abe6a6379f6573308f06b5859d0b3be59a442e0d..f4303c8ead1e80ab8404ce60c040625f3d73b293 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_DNS325=y
 CONFIG_IDENT_STRING="\nD-Link DNS-325"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a70458872d08ebdbd35c23ec31a9c90080584653..90afa46e179e08f7c3662a3f7b465bbca044b6ce 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_DOCKSTAR=y
 CONFIG_IDENT_STRING="\nSeagate FreeAgent DockStar"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="DockStar> "
index 6dd1baf6e943284fa9b6864adb9d942e51ec5c3b..979f3ec93c762a04db66f1fa9933c3b5fc796738 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_ARMV7_LPAE=y
 CONFIG_DEFAULT_DEVICE_TREE="dra7-evm"
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -44,7 +45,6 @@ CONFIG_SPL_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_SPL_SYSCON=y
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_DM_SCSI=y
 CONFIG_DWC_AHCI=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
@@ -68,6 +68,7 @@ CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_GPIO=y
 CONFIG_DM_REGULATOR_PALMAS=y
 CONFIG_DM_REGULATOR_LP873X=y
+CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_SPI=y
index 3008a1fd2c652a08f51fd12648d2ecbf746623f9..8292bdf736874812cdec00d2c71b2e8db98175ec 100644 (file)
@@ -4,10 +4,10 @@ CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_OMAP54XX=y
 CONFIG_TI_SECURE_DEVICE=y
-CONFIG_TARGET_DRA7XX_EVM=y
 CONFIG_TI_SECURE_EMIF_REGION_START=0xbdb00000
 CONFIG_TI_SECURE_EMIF_TOTAL_REGION_SIZE=0x02000000
 CONFIG_TI_SECURE_EMIF_PROTECTED_REGION_SIZE=0x01c00000
+CONFIG_TARGET_DRA7XX_EVM=y
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
@@ -18,6 +18,7 @@ CONFIG_FIT_IMAGE_POST_PROCESS=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SPL_FIT_IMAGE_POST_PROCESS=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -47,7 +48,6 @@ CONFIG_REGMAP=y
 CONFIG_SPL_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_SPL_SYSCON=y
-CONFIG_DM_SCSI=y
 CONFIG_DWC_AHCI=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
@@ -71,6 +71,7 @@ CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_DM_REGULATOR_GPIO=y
 CONFIG_DM_REGULATOR_PALMAS=y
 CONFIG_DM_REGULATOR_LP873X=y
+CONFIG_DM_SCSI=y
 CONFIG_DM_SERIAL=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_SPI=y
index 1d3222017991fcc7c99f450c8197aa9b299acefd..763e96b4a2f6dcb625c4b96e18a0bd3d4b420ae4 100644 (file)
@@ -16,6 +16,7 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-draco"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index d992c2adda9e80c29be412d3422b94ec99bcc9a5..c78b4a6fd587106d3dcf4f96c93fdb585101e55e 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_SNAPDRAGON=y
 CONFIG_IDENT_STRING="\nQualcomm-DragonBoard 410C"
 CONFIG_DEFAULT_DEVICE_TREE="dragonboard410c"
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="dragonboard410c => "
index 8f3ffcf5ba1d6d970aff1fc8da48504347b1234c..640096b7f5a183e7a12681535bcfc550a7989cb4 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_DREAMPLUG=y
 CONFIG_IDENT_STRING="\nMarvell-DreamPlug"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index d8f373b492b3dc5a83fccc7ec0f3bf5bce97a630..d8c7ebe5c13920e1af48eba61d0439d5f96526e4 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_DS109=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_IDE=y
index b945875adf5ee5700a1252f6959d8a5dfdeccad2..ced8156a73f80a27502aa2e80aa34084b17f8448 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_OMAP44XX=y
 CONFIG_TARGET_DUOVERO=y
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
index 4ee7d5aac15912df59ec6f186ca88b9b818272c2..7e73c985ca0d4bd4aa206b0b53e5239a144b9e35 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_DAVINCI=y
 CONFIG_TARGET_EA20=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 150136831701a195050f5b04e19e4d58d0c505d2..0bcc75b3d6810050ed4aee69086c93b7a93513b6 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 # CONFIG_SYS_THUMB_BUILD is not set
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_ECO5PK=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 # CONFIG_SPL_EXT_SUPPORT is not set
index cc172f5181c3598703f6b0a73380692852f2b445..7fb14ab9de55bd03857b98c65511016185c5db6a 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_ECOVEC=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index bb67881a2513c4662b3142d36bbca2eea0f96e75..adc9a68de2590fd72efce8020f908b44874bcf0a 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_EDB93XX=y
 CONFIG_SYS_EXTRA_OPTIONS="MK_edb9315a"
+CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
diff --git a/configs/edison_defconfig b/configs/edison_defconfig
new file mode 100644 (file)
index 0000000..f33b35c
--- /dev/null
@@ -0,0 +1,53 @@
+CONFIG_X86=y
+CONFIG_VENDOR_INTEL=y
+CONFIG_DEFAULT_DEVICE_TREE="edison"
+CONFIG_TARGET_EDISON=y
+CONFIG_SMP=y
+# CONFIG_ARCH_EARLY_INIT_R is not set
+# CONFIG_BOARD_EARLY_INIT_F is not set
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_CPU=y
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_ASKENV=y
+CONFIG_CMD_GREPENV=y
+CONFIG_CMD_ENV_CALLBACK=y
+CONFIG_CMD_ENV_FLAGS=y
+CONFIG_CMD_MEMINFO=y
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_GPT=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_DFU=y
+# CONFIG_CMD_NFS is not set
+CONFIG_CMD_TIMER=y
+CONFIG_CMD_HASH=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_OF_CONTROL=y
+CONFIG_OF_EMBED=y
+CONFIG_CPU=y
+CONFIG_DFU_MMC=y
+CONFIG_DFU_RAM=y
+CONFIG_MMC=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_SDMA=y
+CONFIG_MMC_SDHCI_TANGIER=y
+CONFIG_DM_PCI=y
+CONFIG_DM_PCI_COMPAT=y
+CONFIG_DM_RTC=y
+CONFIG_INTEL_MID_SERIAL=y
+CONFIG_TIMER=y
+CONFIG_USB_DWC3=y
+CONFIG_USB_DWC3_GADGET=y
+CONFIG_USB_GADGET=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="Intel"
+CONFIG_G_DNL_VENDOR_NUM=0x8087
+CONFIG_G_DNL_PRODUCT_NUM=0x0a99
+CONFIG_TANGIER_WATCHDOG=y
+CONFIG_FAT_WRITE=y
+CONFIG_USE_PRIVATE_LIBGCC=y
+CONFIG_SHA1=y
index d67b54897719967cd0ccf46c321b2a1921c16f91..847c6c2c4b7162918d778d5bcfbd070e2a098edc 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_TARGET_EDMINIV2=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_IDENT_STRING=" EDMiniV2"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_ARCH_MISC_INIT=y
index 2fae904589b78b45b0b3dabfe733323cc0f95193..f93f937fdf599b49273502bd79cc4059359b47ac 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_DEFAULT_DEVICE_TREE="efi"
 CONFIG_TARGET_EFI=y
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_ARCH_EARLY_INIT_R is not set
@@ -37,7 +38,6 @@ CONFIG_DEBUG_UART_BASE=0
 CONFIG_DEBUG_UART_CLOCK=0
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
 CONFIG_EFI=y
index 66f0d63a354fca3314920d73c42af74021b600d3..452b55bda1b689d05522304cf9a77f2e16ae2591 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_ARCH_EXYNOS7=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_IDENT_STRING=" for ESPRESSO7420"
 CONFIG_DEFAULT_DEVICE_TREE="exynos7420-espresso7420"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_CPUINFO is not set
index a6a7af9755e8905379a5f59d02bdc4d2b0418365..a7f50efc45991da778cfd70ef414a2bd8cf82d02 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_ESPT=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 578197439605a60112d9c2be67d576a7a243d2f2..ab3ef75fce7100ef896287ab2984ce333ad47333 100644 (file)
@@ -16,6 +16,7 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-draco"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 197052dba636f12e08d9dca9271c576254a5b841..2bf06ad878c0003b753605de40660004eb9f629a 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_ETHERNUT5=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9XE"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index f71d0c10c35753f0689076f4598c4d7ecebbdd60..ae650fc5d73bb754d9c3e3a62e3287fb13341c1d 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_ASPEED_AST2500=y
 CONFIG_TARGET_EVB_AST2500=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="ast2500-evb"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_PRE_CONSOLE_BUFFER=y
 CONFIG_PRE_CON_BUF_ADDR=0x1e720000
 # CONFIG_DISPLAY_CPUINFO is not set
index 2c8c894746efd10954a88c1ae0156d1fc076d5af..dae5094443a389c19e6fdb214d46b2b01daba90c 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_ROCKCHIP_RK3368=y
 CONFIG_TARGET_EVB_PX5=y
 CONFIG_DEFAULT_DEVICE_TREE="rk3368-px5-evb"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_ARCH_EARLY_INIT_R=y
 CONFIG_FASTBOOT=y
index 321ef71c73219db9a6188f05d4ac16c0bad5ea87..7ba75fdfc4608aff8ea741d779a73df21387447e 100644 (file)
@@ -1,10 +1,15 @@
 CONFIG_ARM=y
+# CONFIG_SPL_USE_ARCH_MEMCPY is not set
+# CONFIG_SPL_USE_ARCH_MEMSET is not set
 CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_ROCKCHIP_RK3036=y
 CONFIG_TARGET_EVB_RK3036=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3036-sdk"
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x0
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
 # CONFIG_CMD_IMLS is not set
@@ -30,10 +35,11 @@ CONFIG_MMC_DW=y
 CONFIG_MMC_DW_ROCKCHIP=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_ROCKCHIP_RK3036=y
-# CONFIG_SPL_SERIAL_PRESENT is not set
+# CONFIG_SPL_DM_SERIAL is not set
 CONFIG_DEBUG_UART_BASE=0x20068000
 CONFIG_DEBUG_UART_CLOCK=24000000
 CONFIG_DEBUG_UART_SHIFT=2
 CONFIG_SYSRESET=y
+CONFIG_SPL_TINY_MEMSET=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_ERRNO_STR=y
index 0c3b6f780a15c35afbe7ae523b9bffeba4f1806d..8b9a288258b07b0ecdeff9a01b9afda7aed6c741 100644 (file)
@@ -8,6 +8,8 @@ CONFIG_ROCKCHIP_SPL_BACK_TO_BROM=y
 CONFIG_TARGET_EVB_RK3229=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3229-evb"
+CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
 CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x200
@@ -31,11 +33,9 @@ CONFIG_MMC_DW=y
 CONFIG_MMC_DW_ROCKCHIP=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_ROCKCHIP_RK322X=y
-# CONFIG_SPL_PINCTRL_FULL is not set
 CONFIG_RAM=y
 CONFIG_SPL_RAM=y
 CONFIG_BAUDRATE=1500000
-CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0x11030000
 CONFIG_DEBUG_UART_CLOCK=24000000
 CONFIG_DEBUG_UART_SHIFT=2
index 0d2831158dac57f888a9add4db56e123edef1805..98addee484cae8bb88d9038743c4ca39fdc20577 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_EVB_RK3288=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-evb"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_CPUINFO is not set
index aabc8a48d9f839c39914e0a9359da4540e3f16f6..8ccff8705e228eaa406670bb52669bcf25a03201 100644 (file)
@@ -4,7 +4,15 @@ CONFIG_ROCKCHIP_RK3328=y
 CONFIG_DEFAULT_DEVICE_TREE="rk3328-evb"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_FASTBOOT=y
+CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_CMD_FASTBOOT=y
+CONFIG_FASTBOOT_BUF_ADDR=0x00800800
+CONFIG_FASTBOOT_BUF_SIZE=0x08000000
+CONFIG_FASTBOOT_FLASH=y
+CONFIG_FASTBOOT_FLASH_MMC_DEV=1
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_GPT=y
@@ -31,28 +39,19 @@ CONFIG_DEBUG_UART_SHIFT=2
 CONFIG_SYS_NS16550=y
 CONFIG_SYSRESET=y
 CONFIG_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_OHCI_HCD=y
 CONFIG_USB_OHCI_GENERIC=y
 CONFIG_USB_DWC2=y
 CONFIG_USB_STORAGE=y
-CONFIG_USB_XHCI_DWC3=y
-CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_XHCI_RK=y
 CONFIG_USB_GADGET=y
-CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_USB_GADGET_DUALSPEED=y
 CONFIG_USB_GADGET_DWC2_OTG=y
-CONFIG_USB_FUNCTION_FASTBOOT=y
+CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_G_DNL_MANUFACTURER="Rockchip"
 CONFIG_G_DNL_VENDOR_NUM=0x2207
 CONFIG_G_DNL_PRODUCT_NUM=0x330a
-CONFIG_FASTBOOT=y
-CONFIG_CMD_FASTBOOT=y
-CONFIG_FASTBOOT_FLASH=y
-CONFIG_FASTBOOT_FLASH_MMC_DEV=1
-CONFIG_FASTBOOT_BUF_ADDR=0x00800800
-CONFIG_FASTBOOT_BUF_SIZE=0x08000000
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_ERRNO_STR=y
index bdab07b56b9cff64b862ecd7152f9eb9eb1b4788..6081411105d26d93a34b87f76e9c59b386a55b9e 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3399-evb"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
 CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000
index 8d147913de2b05ccf87985e565b9483fe258b2e9..3deea7c0dcb159a0f5c55708a294d1b28145a94f 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_ROCKCHIP_RV1108=y
 CONFIG_TARGET_EVB_RV1108=y
 CONFIG_DEFAULT_DEVICE_TREE="rv1108-evb"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_SF=y
index 3a51da82745c6e1eae0a22bdcb8941b698b2de7d..9d2b3199bc38b0e9b7147036f27e6a428e751cd1 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_FENNEC_RK3288=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-fennec"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_CPUINFO is not set
index 6f093f48cfe983624df640b197693711f088abfa..1438f757725eaae3174aa013a04a3255ba7347a8 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_FIREFLY_RK3288=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-firefly"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
@@ -75,3 +76,7 @@ CONFIG_CONSOLE_SCROLL_LINES=10
 CONFIG_USE_TINY_PRINTF=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_ERRNO_STR=y
+CONFIG_USB_KEYBOARD=y
+CONFIG_DM_KEYBOARD=y
+CONFIG_SYS_USB_EVENT_POLL=y
+CONFIG_SYS_STDIO_DEREGISTER=y
index 04fb3b765014035d99ad582dfafd9a5ae6310c2d..da60eab49e2c2539ad898ee0a5959a28c9ebb751 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_DEFAULT_DEVICE_TREE="rk3399-firefly"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
 CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000
index 8a643863194c95e4999b971298e3567c207081be..75a97e37751e737c96f8ad129bdd9b83aa8643c2 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_FLEA3=y
 CONFIG_FIT=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -14,6 +15,7 @@ CONFIG_CMD_DHCP=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 CONFIG_OF_LIBFDT=y
index f60abc3422476090da019cebaeba4780a80e6420..5fa8a54fc2aeb3f3bbeb147e8e96839bc7cfea68 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_GENERATE_ACPI_TABLE=y
 CONFIG_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_ARCH_MISC_INIT=y
@@ -56,7 +57,6 @@ CONFIG_DM_RTC=y
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index aaeb34d7c028a43c4e769f8c81f3ad57abd86df9..278857ea663b78368aaa125bf35ba9fb627c7d0b 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_GE_B450V3=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
index 78187051eb5d8c6c62a795a9cd876d3b5c612b1c..ded0fb1280dcff78f6ad9dce6a40d60250f8a741 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_GE_B650V3=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
index 967ddba13a3410bca2e9e8b88ca0fb762d0532c8..574e91688a0e2f68a5a4ec5546e7d3606970717f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_GE_B850V3=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
index 0a1e1dc72d89796f22112021aa8a2a08fc022231..a1944b4ccf31ee32789073f56451e026fe2d2e45 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_ROCKCHIP_RK3368=y
 CONFIG_TARGET_GEEKBOX=y
 CONFIG_DEFAULT_DEVICE_TREE="rk3368-geekbox"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_CMD_IMLS is not set
 CONFIG_REGMAP=y
index 4dfb895351493f6791e2e23b5cbbe02f632387b3..5308da9ea42042c5ac66ed4c96e1b126ca27152d 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_GOFLEXHOME=y
 CONFIG_IDENT_STRING="\nSeagate GoFlex Home"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 5627a18631fd72b18e7aa3f0744ae2dbf854baf3..b579826fe4517b3ef7c4d368d4ee7845621cb25e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_GOSE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index 75e980979ce3681699cf68078a9113a35ae0c93f..262eef79896f56ffd20389bc1d1cfc9bb3008929 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_GPLUGD=y
 CONFIG_IDENT_STRING="\nMarvell-gplugD"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index d43fd14a8a1649d0816fff6bb3442a5cbcd18e1e..d90dbe6a835a4609fa0f1a6b6419c3c24b840627 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_GURNARD=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g45-gurnard"
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G45"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 570819d3e5845f174aa863049170f8f3090949af..51f7d5b6d8adbebd07cb9980afa88a4796a891e2 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_GURUPLUG=y
 CONFIG_IDENT_STRING="\nMarvell-GuruPlug"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index a476dc2af2d474732ab6270ab017175daab90dd9..cdf3e92001529661aed6c2fe1169ad1d3cf7d6a1 100644 (file)
@@ -15,7 +15,8 @@ CONFIG_CMD_HDMIDETECT=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 # CONFIG_SYS_STDIO_DEREGISTER is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index bd38e6d5e13aabc23b5f705b5d9afaad591147fd..c5b5232016439dbfc9fe6380a306c0a8b4a1a5ff 100644 (file)
@@ -15,7 +15,8 @@ CONFIG_CMD_HDMIDETECT=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 # CONFIG_SYS_STDIO_DEREGISTER is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 296f015a50165b2cc67ae5790f53236ba5352267..2de3355f36087a4b5dca50a0e5c1dfb06947c0c0 100644 (file)
@@ -16,7 +16,8 @@ CONFIG_CMD_HDMIDETECT=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_SYS_STDIO_DEREGISTER is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 9d3698c5559c3d13d181b41dfff739b0cfc4e82a..cdc059a156869b571d031127518a5d761b72fd6f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_H2200=y
 CONFIG_FIT=y
 # CONFIG_FIT_ENABLE_SHA256_SUPPORT is not set
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index fce3eeef1eb04a6ba375b134316cf00311c7b3bc..4077e5859bd36768bd41643ee8ea255ad8173f54 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TEGRA20=y
 CONFIG_TARGET_HARMONY=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-harmony"
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_SYS_PROMPT="Tegra20 (Harmony) # "
 # CONFIG_CMD_IMI is not set
index 6f1949225148678531a62403c07b2ac43198622c..d905b0f32b38840b096ea3454ed36b8585398f19 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_HIGHBANK=y
 CONFIG_FIT=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_NVRAM=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -23,6 +24,6 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 # CONFIG_PARTITION_UUIDS is not set
-CONFIG_SCSI=y
 # CONFIG_MMC is not set
+CONFIG_SCSI=y
 CONFIG_OF_LIBFDT=y
index 88d5853d117e301b1f290ae8d09dbb3a79e2c6a2..6df04de281daa02dfb7ff565e329c68670a8fff6 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_IDENT_STRING="hikey"
 CONFIG_DEFAULT_DEVICE_TREE="hi6220-hikey"
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_FAT=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index aea06769f40f2ad0251acc3b924891693dcc2ca8..10dbb7db823e6bd7b163f55e447b9434785a6c8c 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 8e911d49a0a38709379668198934754e19b0e469..48456b2974260d1d5b8054b88f7787087cf4abf7 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="HRCON_DH"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 0018c0482e04bdc9b32c76736ff4c49f9ee2bd78..eb3dfbd5706edb8579f24783e4b3c4525ee6600a 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_HSDK=y
 CONFIG_SYS_TEXT_BASE=0x81000000
 CONFIG_SYS_CLK_FREQ=1000000000
 CONFIG_DEFAULT_DEVICE_TREE="hsdk"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SYS_PROMPT="hsdk# "
 # CONFIG_CMD_IMLS is not set
index cc9011d05c290369df6825e5e0e1e3aad5b01d87..015f7cebb828f50202c12456107e33dceddde7df 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_IB62X0=y
 CONFIG_IDENT_STRING=" RaidSonic ICY BOX IB-NAS62x0"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index 3e48380bc74ed96f4cccd8d2c5ff1e80639c0447..554b571fc970dcbf35332393c5bf6d29aee36318 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_ICONNECT=y
 CONFIG_IDENT_STRING=" Iomega iConnect"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="iconnect => "
index 2a8c239d6920425f375dcd37cdbe5d1b95652bc5..85c09f8f62683d46a70ed9289d8d830dc0560df6 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_SIGNATURE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_TEXT_BASE=0xFFF00000"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a86a00997f23a7980e67d8495a419fe78e94f6df..7f8663e53f33b1f839a9efaf6d4061b5f87a9fda 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_OMAP3_IGEP00X0=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0020"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -25,6 +26,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_LED_STATUS=y
 CONFIG_LED_STATUS_GPIO=y
index 2616fb2e1a243d2ecc9f408e9db6ac62bb606091..7719cd62f23fad6ac6a277879f9b998e4e53cbd8 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_OMAP3_IGEP00X0=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="MACH_TYPE=MACH_TYPE_IGEP0030"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -25,6 +26,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_LED_STATUS=y
 CONFIG_LED_STATUS_GPIO=y
index 5859e6e95e6530fe665d9f34a08aeb2d01bc34f2..758b795239f0a02fd8268f3d9c628d2f34c8c7a1 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_OMAP3_IGEP00X0=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
@@ -24,6 +25,7 @@ CONFIG_CMD_GPIO=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
index 02969da9090fa4479dd230945850ad2a1e13522c..030188f9f1aaa9b4f9a592261fc17d4b6e45f9b1 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_XILFPGA=y
 # CONFIG_MIPS_BOOT_ENV_LEGACY is not set
 CONFIG_MIPS_BOOT_FDT=y
 CONFIG_DEFAULT_DEVICE_TREE="nexys4ddr"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=5
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index 224bedb1d6217e35ec261deb55d517ffb9a52ef1..a710e062d5de798fc660d01577cc41bbc466288f 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_ARM=y
 CONFIG_TARGET_IMX31_PHYCORE=y
+CONFIG_ENV_IS_IN_EEPROM=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_PROMPT="uboot> "
 CONFIG_CMD_EEPROM=y
index c881b8fdccf7af366d4cb4f395a49701075696cc..4bc558be4240a2f41d4d606feae579e59393869a 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_IMX31_PHYCORE_EET=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_IN_EEPROM=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 503b14c3e2d7e416a7006266b8eefb1463b30b72..03c278a35c248f905bf21c0d4fa2477877722003 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6LOGICPD=y
 CONFIG_DEFAULT_DEVICE_TREE="imx6q-logicpd"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/logicpd/imx6/mx6q_2x_MT41K512M16HA.cfg,MX6Q"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
@@ -27,6 +28,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_BLK is not set
 CONFIG_SYS_I2C_MXC=y
 # CONFIG_DM_MMC_OPS is not set
index 8c0cc96ba861363e52b7e7df46f361b5f6537d23..d1a2756bdafdf96c06c140cb366ba1c6d7553e58 100644 (file)
@@ -10,10 +10,12 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6q-icore"
+CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,ENV_IS_IN_MMC"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 CONFIG_SPL_EXT_SUPPORT=y
@@ -42,6 +44,9 @@ CONFIG_PHY_SMSC=y
 CONFIG_FEC_MXC=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX6=y
+CONFIG_DEBUG_UART_MXC=y
+CONFIG_DEBUG_UART_BASE=0x021f0000
+CONFIG_DEBUG_UART_CLOCK=24000000
 CONFIG_MXC_UART=y
 CONFIG_IMX_THERMAL=y
 CONFIG_VIDEO_IPUV3=y
index caf4246a3301dafe3d69616f567728198d8bbb6a..52f691aa9b28f68a5e6afad07accd157e8568443 100644 (file)
@@ -12,7 +12,8 @@ CONFIG_DEFAULT_DEVICE_TREE="imx6q-icore"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,ENV_IS_IN_NAND"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 CONFIG_SPL_DMA_SUPPORT=y
diff --git a/configs/imx6qdl_icore_rqs_defconfig b/configs/imx6qdl_icore_rqs_defconfig
new file mode 100644 (file)
index 0000000..80205fe
--- /dev/null
@@ -0,0 +1,46 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_TARGET_MX6Q_ICORE_RQS=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_LIBDISK_SUPPORT=y
+CONFIG_SPL_WATCHDOG_SUPPORT=y
+# CONFIG_CMD_BMODE is not set
+CONFIG_DEFAULT_DEVICE_TREE="imx6q-icore-rqs"
+CONFIG_FIT=y
+CONFIG_FIT_SIGNATURE=y
+CONFIG_FIT_VERBOSE=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_BOOTDELAY=3
+CONFIG_SPL=y
+CONFIG_SPL_EXT_SUPPORT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="icorem6qdl-rqs> "
+# CONFIG_CMD_IMLS is not set
+CONFIG_CRC32_VERIFY=y
+CONFIG_CMD_MEMTEST=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_OF_LIST="imx6q-icore-rqs imx6dl-icore-rqs"
+# CONFIG_BLK is not set
+CONFIG_SYS_I2C_MXC=y
+# CONFIG_DM_MMC_OPS is not set
+CONFIG_PHYLIB=y
+CONFIG_PHY_MICREL=y
+CONFIG_PHY_MICREL_KSZ9021=y
+CONFIG_FEC_MXC=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_IMX6=y
+CONFIG_MXC_UART=y
diff --git a/configs/imx6qdl_icore_rqs_mmc_defconfig b/configs/imx6qdl_icore_rqs_mmc_defconfig
deleted file mode 100644 (file)
index acc66b0..0000000
+++ /dev/null
@@ -1,45 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_MX6=y
-CONFIG_SPL_GPIO_SUPPORT=y
-CONFIG_SPL_LIBCOMMON_SUPPORT=y
-CONFIG_SPL_LIBGENERIC_SUPPORT=y
-CONFIG_TARGET_MX6Q_ICORE_RQS=y
-CONFIG_SPL_SERIAL_SUPPORT=y
-CONFIG_SPL_LIBDISK_SUPPORT=y
-CONFIG_SPL_WATCHDOG_SUPPORT=y
-# CONFIG_CMD_BMODE is not set
-CONFIG_DEFAULT_DEVICE_TREE="imx6q-icore-rqs"
-CONFIG_FIT=y
-CONFIG_FIT_SIGNATURE=y
-CONFIG_FIT_VERBOSE=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,ENV_IS_IN_MMC"
-CONFIG_BOOTDELAY=3
-CONFIG_SPL=y
-CONFIG_SPL_EXT_SUPPORT=y
-CONFIG_HUSH_PARSER=y
-CONFIG_SYS_PROMPT="icorem6qdl-rqs> "
-# CONFIG_CMD_IMLS is not set
-CONFIG_CRC32_VERIFY=y
-CONFIG_CMD_MEMTEST=y
-CONFIG_CMD_MMC=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_GPIO=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
-CONFIG_OF_LIST="imx6q-icore-rqs imx6dl-icore-rqs"
-# CONFIG_BLK is not set
-CONFIG_SYS_I2C_MXC=y
-# CONFIG_DM_MMC_OPS is not set
-CONFIG_PHYLIB=y
-CONFIG_PHY_MICREL=y
-CONFIG_PHY_MICREL_KSZ9021=y
-CONFIG_FEC_MXC=y
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_IMX6=y
-CONFIG_MXC_UART=y
index c0489cbd19e5cfa64f2af33187cbaf9ee28fb55d..c956f072ce5a9779e4211a172b87055c88918aec 100644 (file)
@@ -12,7 +12,8 @@ CONFIG_DEFAULT_DEVICE_TREE="imx6ul-geam-kit"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,ENV_IS_IN_MMC"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 CONFIG_SPL_EXT_SUPPORT=y
index 411b95e4ee21d3290701004fa79857abd0357a3e..1f0cc606533219dc10feac5e8bca4af6fca2c635 100644 (file)
@@ -11,7 +11,8 @@ CONFIG_DEFAULT_DEVICE_TREE="imx6ul-geam-kit"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,ENV_IS_IN_NAND"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 CONFIG_SPL_DMA_SUPPORT=y
index 8e0bbb2ede8a51ffabc6b3baeaef86ff216dcaed..467a18cd6bfc2fefcd399a1f0535294222f5bce0 100644 (file)
@@ -12,7 +12,8 @@ CONFIG_DEFAULT_DEVICE_TREE="imx6ul-isiot-emmc"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,ENV_IS_IN_MMC"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 CONFIG_SPL_EXT_SUPPORT=y
index 69d4fc5e5116f37108e395255fabe5638290b4ae..4bb75f7029354c2c0d14021a59169632a7056d92 100644 (file)
@@ -12,7 +12,8 @@ CONFIG_DEFAULT_DEVICE_TREE="imx6ul-isiot-mmc"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,ENV_IS_IN_MMC"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 CONFIG_SPL_EXT_SUPPORT=y
index 5285120aab84dcdaafab82dc3a6b3a1b6b65a69c..fce0b0d2e5e469cf01ec78f1d73560baa8a8662a 100644 (file)
@@ -11,7 +11,8 @@ CONFIG_DEFAULT_DEVICE_TREE="imx6ul-isiot-nand"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,ENV_IS_IN_NAND"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 CONFIG_SPL_DMA_SUPPORT=y
index 8daf4332ca009a0e44e50ebbebab36dc63dbda9a..e49407155f25e4c45fae64b08f6b426d442a6a11 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NETSPACE_V2=y
 CONFIG_IDENT_STRING=" IS v2"
 CONFIG_SYS_EXTRA_OPTIONS="INETSPACE_V2"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index cace5adcb2f83146d00556ad192f823ef8885de0..0685dca0ded11d9c963eafd6ea2f8be67d181ef3 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_INTEGRATOR=y
 CONFIG_ARCH_INTEGRATOR_AP=y
 CONFIG_CM720T=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index a1639ada3331f96c8a4c042580a4fa4690667315..9c27bdb848f80007689bc7edffb4b0820e61e162 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_INTEGRATOR=y
 CONFIG_ARCH_INTEGRATOR_AP=y
 CONFIG_CM920T=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index f288dc88e2ddace36570bf1ca1368341b39f35b8..77aa6a8bd788706a2e55af44817cbb2ead2c4a93 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_INTEGRATOR=y
 CONFIG_ARCH_INTEGRATOR_AP=y
 CONFIG_CM926EJ_S=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index c13af27def58710a1cd0cde873e043cddf458e21..55bfe3a2a3ad2914a657670f6ff72f361ca3e96d 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_INTEGRATOR=y
 CONFIG_ARCH_INTEGRATOR_AP=y
 CONFIG_CM946ES=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index 3c32a6b0ecc17b1086ea7b0ee8020780d962ec33..4709084bfe396db65984d9a3eaaa16ad27fcbff7 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 65a5832e44b12c2b0b014ac0fb4a849f94d44cd5..a533c6402fe104c199fffee9659e0f0839292067 100644 (file)
@@ -25,6 +25,7 @@ CONFIG_CMD_EXT4_WRITE=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_OF_LIVE=y
 CONFIG_SPL_DM=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
@@ -36,7 +37,10 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCI_TEGRA=y
+CONFIG_DM_PMIC=y
 CONFIG_PMIC_AS3722=y
+CONFIG_DM_REGULATOR=y
+CONFIG_REGULATOR_AS3722=y
 CONFIG_SYS_NS16550=y
 CONFIG_TEGRA114_SPI=y
 CONFIG_USB=y
index dccaa09e670153253f04058acc430957c1ef32bc..b3763e47a049e8d62004bc9f6aa6037f950a120e 100644 (file)
@@ -10,7 +10,10 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2e-evm"
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_DTB_RESELECT=y
+CONFIG_FIT_EMBED=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -43,6 +46,3 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_DTB_RESELECT=y
-CONFIG_FIT_EMBED=y
-CONFIG_OF_LIST="keystone-k2e-evm"
index 55eab61cc3fdb18ce0932553d7748e165d94a83f..b8bd57c68cca739d0b0564eb9c0f28394ee970e0 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TARGET_K2E_EVM=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2e-evm"
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_HUSH_PARSER=y
index a43d7fc779f64dc8cbec47d55c1b30c277574bf4..332c4d18101b610236faaa28c0d0686857fafecf 100644 (file)
@@ -10,7 +10,10 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2g-evm"
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_DTB_RESELECT=y
+CONFIG_FIT_EMBED=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -27,6 +30,7 @@ CONFIG_CMD_UBI=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
+CONFIG_OF_LIST="keystone-k2g-generic keystone-k2g-evm keystone-k2g-ice"
 CONFIG_DM=y
 # CONFIG_BLK is not set
 CONFIG_DM_MMC=y
@@ -45,6 +49,3 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_DTB_RESELECT=y
-CONFIG_FIT_EMBED=y
-CONFIG_OF_LIST="keystone-k2g-generic keystone-k2g-evm keystone-k2g-ice"
index 51c701ed902dd1b2947609b50dc68c593a19c9ae..2e2b18c18565905a8f7dd3c7b4549edbf4ed3bf1 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TARGET_K2G_EVM=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2g-evm"
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_HUSH_PARSER=y
index e0c266a77c8d6fc1481448b5b35120d2e048011c..59cd9ef186159d37b51220f9e8e9ee63aa184bd8 100644 (file)
@@ -10,7 +10,10 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2hk-evm"
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_DTB_RESELECT=y
+CONFIG_FIT_EMBED=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -43,6 +46,3 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_DTB_RESELECT=y
-CONFIG_FIT_EMBED=y
-CONFIG_OF_LIST="keystone-k2hk-evm"
index a66a256346242c5adae104c30c7a96b5d6ae93c3..a85f0292454a425eb3904e7d3ee7d9b05799b430 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TI_COMMON_CMD_OPTIONS=y
 CONFIG_TARGET_K2HK_EVM=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2hk-evm"
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_HUSH_PARSER=y
index 568e8dda67a172664a5f4cb6cc4a066712d3d4a0..db45fe166c833e1e32ab706f1e79f54e20ac645b 100644 (file)
@@ -10,7 +10,10 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="keystone-k2l-evm"
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
+CONFIG_DTB_RESELECT=y
+CONFIG_FIT_EMBED=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -43,6 +46,3 @@ CONFIG_USB=y
 CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_XHCI_DWC3=y
 CONFIG_USB_STORAGE=y
-CONFIG_DTB_RESELECT=y
-CONFIG_FIT_EMBED=y
-CONFIG_OF_LIST="keystone-k2l-evm"
index c5ecdda92f813485898a74418c0a154c6622d6e1..c680bb1813411af8684c6913e968ca1091b33ce9 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_OMAP44XX=y
 CONFIG_TARGET_KC1=y
 # CONFIG_SPL_NAND_SUPPORT is not set
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
 # CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR is not set
index df7dac8c37f3820b2bdb6753c323863fba18cfd2..e3b52b04c23c86281379af7e0cc8b17900b53f73 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile Kirkwood 128M16"
 CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD_128M16"
+CONFIG_ENV_IS_IN_EEPROM=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index 4b9cdb7f4784964219e372c0c2edd0e23eecd932..c7d74223f979887cc60f9e0d4d4a97563733c74f 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile Kirkwood"
 CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD"
+CONFIG_ENV_IS_IN_EEPROM=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index 79952774aedd9715880561dd886dd09a78f39aa7..080d64984e396c6c3602784f1f8df24a6bf6e142 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile Kirkwood PCI"
 CONFIG_SYS_EXTRA_OPTIONS="KM_KIRKWOOD_PCI"
+CONFIG_ENV_IS_IN_EEPROM=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index 8d46b6ad3ea2f36bb36e201d5176b1d5355f824a..564c5ae3adec9351f21d3d824c551d84dc23fa01 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="KMCOGE4"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -26,6 +27,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 # CONFIG_CMD_IRQ is not set
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_DOS_PARTITION=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
index db93dee3238ff44a7bcc0d1f439705d1df2d2fa2..25185d6ceecac09e0e3b8a6ab4610814edbd7d20 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_KM8360=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="KMCOGE5NE"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_HUSH_PARSER=y
 CONFIG_AUTOBOOT_KEYED=y
@@ -18,6 +19,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index af0df7ef22dd3dbeabe95c8dcf4d9ca303989cda..5c824218111374c9ee1dc357f98d15e484fe102d 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile COGE5UN"
 CONFIG_SYS_EXTRA_OPTIONS="KM_COGE5UN"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index 163f4f927d2d3741919eabeabc3c90135646bb34..16716f5862fccc9df659f4483a1ef3a1f4b102ae 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_KM8360=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="KMETER1"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_HUSH_PARSER=y
 CONFIG_AUTOBOOT_KEYED=y
@@ -18,6 +19,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index 23859e9bedab943b78154ba22b998619c77478bd..4b25ade380ada85a891940bffde0b75392568c24 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="KMLION1"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -26,6 +27,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 # CONFIG_CMD_IRQ is not set
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_DOS_PARTITION=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
index eb70cd600a76a56c6c473fe0eb120d777455ed7f..57aa3a834cab784fa45c6b86f15986233da22839 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile NUSA"
 CONFIG_SYS_EXTRA_OPTIONS="KM_NUSA"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index 9be448f404da5657bd67aa354b288fce73f658bd..c16bef6cf1cc837f95a4ea039f34b1491faaa40f 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index ed90f9d5b612bf47163ac3b22597b9849d836442..bf5c1e5f3bb769ff72f42645d4d34aad5339ab9b 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile SUGP1"
 CONFIG_SYS_EXTRA_OPTIONS="KM_SUGP1"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index ba44606db724110eacf9345a663dc4c03e1ce74b..e95aafcf0cece8d6334771c203b1885a48c05a59 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index c5edce8e4fdbec32ae9b7c30a1da50592e72909b..3c44f6b041cefed931b7706dde3333a1dfe40e80 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile SUV31"
 CONFIG_SYS_EXTRA_OPTIONS="KM_SUV31"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index c1e9df5ffa8fa7ab890a0a032f69e2b2d109d180..02e78b4e5780a2a05f4029efd8cfefcf6342a441 100644 (file)
@@ -19,6 +19,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_DIAG=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index 3ea83ebeefb72b7cccd9e6cc5e8a2f7ca891e184..06d207ca1292585743b94854217599dfde138430 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index 7ee2bb746f2ab8f12c980be53ad1dfdd8e321dbd..9b63a940e66f5d61dff9d0caa677732734a714d6 100644 (file)
@@ -19,6 +19,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_DIAG=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index 465a6be8e7a3318dc222b8916cc260c5156fe586..a28326b456fed037d1c1f979b506ab98e36130cb 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_KOELSCH=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index 715e4b235895fb075460fe7f48df65a2aecf1daf..e725e1013d0454d5ed30dc0ab47502aeb46ac5c7 100644 (file)
@@ -1,9 +1,14 @@
 CONFIG_ARM=y
+# CONFIG_SPL_USE_ARCH_MEMCPY is not set
+# CONFIG_SPL_USE_ARCH_MEMSET is not set
 CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_ROCKCHIP_RK3036=y
 CONFIG_TARGET_KYLIN_RK3036=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3036-sdk"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x0
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
 # CONFIG_CMD_IMLS is not set
@@ -19,7 +24,6 @@ CONFIG_CMD_TIME=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
-CONFIG_SPL_PARTITION_UUIDS=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
 CONFIG_CLK=y
@@ -31,9 +35,11 @@ CONFIG_MMC_DW_ROCKCHIP=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_ROCKCHIP_RK3036=y
 CONFIG_DM_REGULATOR_FIXED=y
+# CONFIG_SPL_DM_SERIAL is not set
 CONFIG_SYSRESET=y
 CONFIG_USB=y
 CONFIG_USB_DWC2=y
 CONFIG_USB_STORAGE=y
+CONFIG_SPL_TINY_MEMSET=y
 CONFIG_CMD_DHRYSTONE=y
 CONFIG_ERRNO_STR=y
index a884e5a10c9e3aab0bcd677c2b20d69ad19a5d41..0ee7f4bb80ad3d44fd73930de8b09b741dd59758 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 # CONFIG_SYS_THUMB_BUILD is not set
 CONFIG_ARCH_RMOBILE=y
 CONFIG_TARGET_KZM9G=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SYS_PROMPT="KZM-A9-GT# "
index c2f216bd51ea9599411de758cba45fa6fcde123e..f4c4389075cd2cdabed90e1e3c34b3c6916e5b48 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_LAGER=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index 589e8cf880be8a0cac59aa42e3e020b1ad6a4880..a33f03ae2f31fdeb485bc05d09c3e92c6a030766 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ARCH_DAVINCI=y
 CONFIG_TARGET_LEGOEV3=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=0
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
index e550cf250a3fd3f808807bb9d9792ec820a97272..2be4819bcbf580a43a70da3026018b1b73cb175e 100644 (file)
@@ -7,7 +7,8 @@ CONFIG_TARGET_LITEBOARD=y
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 CONFIG_DEFAULT_FDT_FILE="imx6ul-liteboard.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index 7932ab5adaa6b65dfdf4d95f91044a7bddd80970..09110f60b865a515876489b413e6e2ab8cb66286 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index 695d7d13497e00ac2f2861cb930b00d1079e2372..15a73fcb172a4883bf33f2f7381cd024d1eb8d42 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -30,8 +31,8 @@ CONFIG_CMD_FAT=y
 CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
-# CONFIG_BLK is not set
 CONFIG_SCSI=y
+# CONFIG_BLK is not set
 CONFIG_DM_MMC=y
 # CONFIG_DM_MMC_OPS is not set
 CONFIG_DM_SPI_FLASH=y
@@ -42,6 +43,7 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_LAYERSCAPE=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_SPI=y
 CONFIG_FSL_DSPI=y
index acf0a90c2964b05776ade5a15aca047fbfee7378..5eb35dfc4a462c3e63253152abc9fdbed867fd5a 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index 3628367df002dfcf5781f78c62b22a74f6578cfb..ed8681a71ed5b038418dd984ec74b8e93a52513f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_LS1021AIOT=y
 CONFIG_DEFAULT_DEVICE_TREE="ls1021a-iot-duart"
 CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_CMD_GPT=y
 CONFIG_CMD_FAT=y
index e4120243493bb490066178d43ad8b0c2f7e10e37..b1d1fad766623dcf90ea2ab21e33f999da6bba2d 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_LS1021AIOT=y
 CONFIG_DEFAULT_DEVICE_TREE="ls1021a-iot-duart"
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT,SD_BOOT_QSPI"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
index e753f4c58958e9ac224799246d6307475c1a049b..07e5cb9bae341a625ba07bf6984bccd8bf805ca2 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index ed03812a92c356509ba0af4216b28a509165bc43..00d6368796c3c3225d9c1b451388ad448d61b5ae 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="LPUART"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index e1ddd293dc5ab8924bde08287c0b887587cf65c1..2107709d0d542f924200f23b1a6e764c2fc4870a 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND_BOOT"
 CONFIG_NAND_BOOT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 6b435cc4d56b6c788b174608edf1baf42226dc9e..a124ab5e5c18fa42e1aec77d7b6e1bb0da651972 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 8fdd8b63db4870e40cb37563334cbd3ce4d4f3f2..61b0f447b2e003fa46b0852f42c0992e078b1f02 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="LPUART"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 7993a69ee3d0e0b4c2e6c1603976be7210bf0010..b776ea0d9052701b26bca0080df631919ecea761 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index b349fea4d6fa438d150a92dbdc99d0729ba5154c..c36a63208bea3e4d0b7f0c82c329799d4f481a65 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index ea8738fa90e362f521ade25f25115a6073214caa..ae55f00bb8a98d9aa84e99db63460bf8663dbbeb 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT,SD_BOOT_QSPI"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index c56533af3bbbf09a45b68a6d93d305a89701980b..cdbf5a215f9e9466ea5ebab65e98750ba9f2f9bf 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 89b89cd2115b721e1ea71723000e7dd569c7e013..bbc73ad27fba0c5749bf65e4fd40bdf6fa2be9ab 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="LPUART"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 07a414397a34ce2aaebabaef6c9d6ce2db81e8d0..7fcb1e3a56c88fbf6dfd242b29a734c0d54c5aa1 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 9809c60d35077efa6a96753a084582acdcd6b102..b87a6d394dbd0353aa8cb0748f6a86d056fac5f2 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 5ccfc96e9d856aef30dce1894be5fb8a7830b3a8..9ab9e2578cd39f20f9057b934f3a78720abd2e08 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT,SD_BOOT_QSPI"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_CONSOLE_MUX is not set
index 37662082c6523d8065ce8caec0ad067c5393ba36..392ebf92cf3a063001913239df098b79cd8ad99e 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_FSL_LS_PPA=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
index ed125d7494ba0fadf15486882b03af241ca34b69..40dd554835e836b721ff39905bbe8cb93a9a19e6 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-lpuart"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="LPUART"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
index b9246234b23f4bca001da5a4fc67c5ae06d7e611..c0b1170a0cd39602a3959aff93b79ec4e0e67334 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND_BOOT"
 CONFIG_NAND_BOOT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
index 6974a58797a9b4ce7b644899a440117ddd9f87b8..d5628e765a7d9ad0d5e2baf7dcf9b0bb3ec0652c 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_FSL_LS_PPA=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-qds-duart"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
index 348be3b1b94f44342be1cb1f45e9b59067d74784..4ffd150af2bed61fefd528a050a8a7a128e5ee28 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
index 2680892276ea368cf72cdf48ee0df4db2424c64b..f328dbddc1147555e8265a578d7478eb74daf8a0 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
index 88c99a2216cb21710bb8a0e123073f3a57ae68ca..af065530f2737b1ec5b77503ea0ee3702aa86dd3 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT,SD_BOOT_QSPI"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
index 894110bd1e625efd7ec88ed0d6c379f86efc111d..4050737fec2033b07597ccc130fe883f79a1ccda 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_FSL_LS_PPA=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1043a-rdb"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_GPT=y
index 0144db585f99c6efb7d83584ebb9bf34dd421b10..c055097e7964303b6d2daa2584800656605a1261 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,NAND_BOOT"
 CONFIG_NAND_BOOT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
index ea674c8b2ced68b2e8c7e035f475d35bbafc0361..93704f76f282583e15b2f3ea4186fdf79584d808 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
index 87df2fec9bd0d311c95b6d2c5138606f620202f7..ea006902f5c207decd8b55320c222b2ed3bdf341 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_FSL_LS_PPA=y
 CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-qds-duart"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
index 47dba49fbdfc6856100b1a9fd7560f18340f2163..5498c01eb187fae4fba16266421dc5a10a26e84b 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-qds-lpuart"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="LPUART"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
index a3c60651ece6c65e2566a1eb1545f1423e2f6589..a7ae7e5fe7e41b3ed588d5ddc711b545a23c667d 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL"
 CONFIG_NAND_BOOT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_BOARD_INIT=y
index d145c5a3a2a767de453eb34acba26d6f1a0eb52d..3a3cff6219b95c6aed5d665a54373547a8f6af25 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-qds-duart"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
index 19b80777fbad750f9c49bad82a18c8061ed3f640..274f91e074fb3187113e84b53205f6f803ac02bd 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_BOARD_INIT=y
index e49de18746b0d273b84c6f11201a2bebb72807ab..fd916a5c201d4848104a3203787d5594f96847c8 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,SD_BOOT_QSPI"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_BOARD_INIT=y
index c50931a3391e6784dc4c97552ac7aa02072caa9a..5fac89b84cc7e86560de56127b1ea1022705c451 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL,EMMC_BOOT"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_BOARD_INIT=y
index 0a8f1a0501202ba591765c760a847427beb30c05..f4ff5d6998c0b99131a16dd0f9f2df272aa3d77a 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls1046a-rdb"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
index da8c5b815bc3bbf4290e3b73111a9ab5d3b26bc5..904116c4909d7a01be222ec75b01fca681356021 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_SYS_EXTRA_OPTIONS="RAMBOOT_PBL,SPL_FSL_PBL"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_BOARD_INIT=y
index 6211b6b5af2aae7a74edffdcff3e3c44c17b4af1..04e64339869514161984e2749696feccdf3e9138 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="EMU"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=10
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_CONSOLE is not set
index b6f7709af2ba3fa256027aa59cd024c107704030..6b2f3fbabfe0132d02d7308f17104633e660082d 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SIMU"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=10
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_CONSOLE is not set
index 0106e9ad0d7c39795a8fe77e93247a70fec73468..c1765894e78b43f702451e9a824c2ba1694a3165 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2080a-qds"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_CMD_GREPENV=y
 CONFIG_CMD_EEPROM=y
index 6548bc099f63e92cbf13e29c1077050bd3b56211..b8c6e6acd818e12dd4d31170834f9a2d8485cc0d 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
 CONFIG_NAND_BOOT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
index f08e7bfa8734a8421f4a04f92e47d2dbc44ec4a3..8277a3b910d5de3e037f7c088b30ac3caec68d07 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="QSPI_BOOT"
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_CMD_GREPENV=y
 CONFIG_CMD_EEPROM=y
index f933b8fa2cf40f8c891a629532f8a41c1c633ab1..64682b06939b088e1889cf3ad95d08e872bf402b 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_FSL_DDR4"
 CONFIG_SD_BOOT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR=y
index ed79c9712144a1133e3d64f05776e668bc208917..0689a402014bd4ac160ab1fb2df0e56b356b0205 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="fsl-ls2080a-rdb"
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_CMD_GREPENV=y
 CONFIG_CMD_EEPROM=y
index 58eb4c68efaa26759f5707f1e2304250043af8ce..c4a56be52d5a0f03d77a392b243631969ab3140c 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
 CONFIG_NAND_BOOT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
index bc2792e53317d5e49fe70f98cb0fee27486624d1..7fcfdd4b6e6b4283f0d886c883d7f7cc54d2cd4d 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_GREPENV=y
@@ -21,7 +22,6 @@ CONFIG_CMD_CACHE=y
 CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM=y
-CONFIG_SCSI=y
 CONFIG_FSL_CAAM=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_NETDEVICES=y
@@ -30,6 +30,7 @@ CONFIG_PCI=y
 CONFIG_DM_PCI=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_PCIE_LAYERSCAPE=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_DM_SPI=y
 CONFIG_FSL_DSPI=y
index 76b2f3267716d8d5d0329ae7c83bf9ae6f232a2b..3a022330e2d193b6d2b9dcc0de51e6dfbda08be3 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
 CONFIG_QSPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_GREPENV=y
index 1d55003d67eb98580d5c1e7e7dccef41ad3c7b75..8a645a08a3bdf932977e035b8a5e181a25f35c08 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_LSXL=y
 CONFIG_IDENT_STRING=" LS-CHLv2"
 CONFIG_SYS_EXTRA_OPTIONS="LSCHLV2"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
index 75fe55d8192a646ed9eb50ec4949f1d0c01c72be..1c9dc805b36e65547acbcde85f4668978aa9a28a 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_IDENT_STRING=" LS-XHL"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="LSXHL"
 CONFIG_API=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
index 944e39dda1c2e45d6218cc1abf99ab91350b1a08..5fc5dd3b6178a181e0d0512835bedb66d675480f 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index afcaf58530215238a1fc28511bbab43449393f13..4d35673c005bc9676b2e659a4f6ba1ce999d670a 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/aries/m53evk/imximage.cfg"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index e838c124a8c60431aa6bf8c982175c2475ff4d2f..c18f759ce3bea08cb0c10ed537721cd1987c49d9 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index b6fbbb965b97389f0dc024efd9be1324603afe77..080815d77d9a9114a7e7eca70c932fa804935742 100644 (file)
@@ -3,7 +3,8 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_EMBESTMX6BOARDS=y
 CONFIG_VIDEO=y
 CONFIG_DISTRO_DEFAULTS=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,ENV_IS_IN_SPI_FLASH"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
index acc43ad94a66c38928efae91018b9ce5291386ce..449804b43d58f9a0182ccb4e221cf2b1380f7a6a 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_MCCMON6=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/liebherr/mccmon6/mon6_imximage_nor.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SPL=y
 CONFIG_SPL_BOARD_INIT=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -27,6 +28,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DM=y
 CONFIG_MTD=y
 CONFIG_MTD_NOR_FLASH=y
index 61c436e22c13207018e61c4cc948da7ffaf0d15e..653f2588dbb0ef1200d68135b8b6b8ca89431b57 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/liebherr/mccmon6/mon6_imximage_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_SPL=y
 CONFIG_SPL_BOARD_INIT=y
 CONFIG_SPL_ENV_SUPPORT=y
@@ -28,6 +29,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_DM=y
 CONFIG_MTD=y
 CONFIG_MTD_NOR_FLASH=y
index d0f361f6bb4d359bbbe63f8517a127844a5ddf41..5a9d7cccfef474b105058f235873449b846ee09b 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_ARCH_OMAP2PLUS=y
 # CONFIG_SPL_GPIO_SUPPORT is not set
 CONFIG_TARGET_MCX=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 80e3ed86c965a63bfbbabdcb4fdf85043165dc91..28fad944a55f8fdfb4444ff687d11b546f23139b 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_MEDCOM_WIDE=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-medcom-wide"
 CONFIG_FIT=y
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_SYS_PROMPT="Tegra20 (Medcom-Wide) # "
 # CONFIG_CMD_IMI is not set
index de8a8cbf0a278628c210d787190c0ae244ac9dfa..146838ee40ccef589cee38d656bf481a159e53d6 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_AT91=y
 CONFIG_TARGET_MEESC=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 12482bf7956927bbe534ef9e3cb559f862082178..e7cb9779db1800686b737cab0a6aff2fdeb3b723 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_AT91=y
 CONFIG_TARGET_MEESC=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 2add8828b8759340d5bad53349afe08a550db7c7..669f9ddebb79ede23570cd08356387eb81faa87a 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile COGE3UN"
 CONFIG_SYS_EXTRA_OPTIONS="KM_MGCOGE3UN"
+CONFIG_ENV_IS_IN_EEPROM=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index 4a137007bf39f02a88c4a1213244bd82d8f43755..3d84cf24aa7580d391b2d947241ecf6251c59a1d 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_SPL_OF_CONTROL=y
 CONFIG_OF_EMBED=y
 CONFIG_NETCONSOLE=y
index a64a0a34557dfc574209f17a6af540eceff852e6..85a28143fdfb49da635dff1ddfc5ddb281e92635 100644 (file)
@@ -47,7 +47,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_MMC=y
 CONFIG_MMC_PCI=y
@@ -62,13 +61,14 @@ CONFIG_DM_ETH=y
 CONFIG_RTL8169=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
 CONFIG_DEBUG_UART_BASE=0x3f8
 CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
 CONFIG_DM_VIDEO=y
index c6bfa1e9f1ef33c249c4f6f551af398a75ae6de8..a7c796d062deeb0f16e0b9a5999e02f4a2cd90e9 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_MIQI_RK3288=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-miqi"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
index ee92e4fb83e3ef0c26903f98b52e2b7ba51a9638..0dcdd3bcbe4b722c588c21c5aefd6cce92392cca 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_MPC8308_P1M=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
index 92f3158dae53aacafb818aeea769325bb77cd0dd..633a087616d8c350447d9f7a24b0a36ab77fade5 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_MS7722SE=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 88bbb12003eb36e1e30d4556732b4fbe6c9fdf06..9fabcd90598b2ae0dda4a182dbebb1e8a50ce836 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_MS7750SE=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_CONSOLE is not set
index edd9e6886299125b057e948d63ae723dd0038ef4..ef7d15383053d87cd7ac8b2c14ad96191a2d205e 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_MT_VENTOUX=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index f2b2e5db90025c14398d4e9a7c5ad985dd05eb32..f0b196abd7ade83ee54d35fa531c806f9daccf58 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="armada-3720-db"
 CONFIG_DEBUG_UART=y
 CONFIG_AHCI=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
diff --git a/configs/mvebu_db-88f7040-nand_defconfig b/configs/mvebu_db-88f7040-nand_defconfig
deleted file mode 100644 (file)
index 2aba8de..0000000
+++ /dev/null
@@ -1,72 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_MVEBU=y
-CONFIG_SYS_MALLOC_F_LEN=0x2000
-CONFIG_TARGET_MVEBU_ARMADA_8K=y
-CONFIG_DEFAULT_DEVICE_TREE="armada-7040-db-nand"
-CONFIG_SMBIOS_PRODUCT_NAME=""
-CONFIG_DEBUG_UART=y
-CONFIG_AHCI=y
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_CONSOLE_INFO_QUIET=y
-# CONFIG_DISPLAY_CPUINFO is not set
-# CONFIG_DISPLAY_BOARDINFO is not set
-CONFIG_ARCH_EARLY_INIT_R=y
-CONFIG_BOARD_EARLY_INIT_F=y
-CONFIG_HUSH_PARSER=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-CONFIG_CMD_MMC=y
-CONFIG_CMD_NAND=y
-CONFIG_CMD_PART=y
-CONFIG_CMD_SF=y
-CONFIG_CMD_SPI=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_USB=y
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_CMD_TFTPPUT=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_TIME=y
-CONFIG_CMD_MVEBU_BUBT=y
-CONFIG_MVEBU_NAND_BOOT=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
-CONFIG_MAC_PARTITION=y
-CONFIG_ISO_PARTITION=y
-CONFIG_EFI_PARTITION=y
-CONFIG_BLOCK_CACHE=y
-CONFIG_DM_I2C=y
-CONFIG_SYS_I2C_MVTWSI=y
-CONFIG_MISC=y
-CONFIG_DM_MMC=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_XENON=y
-CONFIG_NAND_PXA3XX=y
-CONFIG_SPI_FLASH=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_PHYLIB=y
-CONFIG_PCI=y
-CONFIG_DM_PCI=y
-CONFIG_PCIE_DW_MVEBU=y
-CONFIG_MVEBU_COMPHY_SUPPORT=y
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_ARMADA_8K=y
-# CONFIG_SPL_SERIAL_PRESENT is not set
-CONFIG_DEBUG_UART_BASE=0xf0512000
-CONFIG_DEBUG_UART_CLOCK=200000000
-CONFIG_DEBUG_UART_SHIFT=2
-CONFIG_DEBUG_UART_ANNOUNCE=y
-CONFIG_SYS_NS16550=y
-CONFIG_USB=y
-CONFIG_DM_USB=y
-CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_STORAGE=y
-CONFIG_SMBIOS_MANUFACTURER=""
diff --git a/configs/mvebu_db-88f7040_defconfig b/configs/mvebu_db-88f7040_defconfig
deleted file mode 100644 (file)
index 28af643..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_MVEBU=y
-CONFIG_SYS_MALLOC_F_LEN=0x2000
-CONFIG_TARGET_MVEBU_ARMADA_8K=y
-CONFIG_DEFAULT_DEVICE_TREE="armada-7040-db"
-CONFIG_SMBIOS_PRODUCT_NAME=""
-CONFIG_DEBUG_UART=y
-CONFIG_AHCI=y
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_CONSOLE_INFO_QUIET=y
-# CONFIG_DISPLAY_CPUINFO is not set
-# CONFIG_DISPLAY_BOARDINFO is not set
-CONFIG_ARCH_EARLY_INIT_R=y
-CONFIG_BOARD_EARLY_INIT_F=y
-CONFIG_HUSH_PARSER=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-CONFIG_CMD_MMC=y
-CONFIG_CMD_PART=y
-CONFIG_CMD_SF=y
-CONFIG_CMD_SPI=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_USB=y
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_CMD_TFTPPUT=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_TIME=y
-CONFIG_CMD_MVEBU_BUBT=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
-CONFIG_MAC_PARTITION=y
-CONFIG_ISO_PARTITION=y
-CONFIG_EFI_PARTITION=y
-CONFIG_BLOCK_CACHE=y
-CONFIG_DM_I2C=y
-CONFIG_SYS_I2C_MVTWSI=y
-CONFIG_MISC=y
-CONFIG_DM_MMC=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_XENON=y
-CONFIG_SPI_FLASH=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_PHY_MARVELL=y
-CONFIG_MVPP2=y
-CONFIG_PCI=y
-CONFIG_DM_PCI=y
-CONFIG_PCIE_DW_MVEBU=y
-CONFIG_MVEBU_COMPHY_SUPPORT=y
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_ARMADA_8K=y
-# CONFIG_SPL_SERIAL_PRESENT is not set
-CONFIG_DEBUG_UART_BASE=0xf0512000
-CONFIG_DEBUG_UART_CLOCK=200000000
-CONFIG_DEBUG_UART_SHIFT=2
-CONFIG_DEBUG_UART_ANNOUNCE=y
-CONFIG_SYS_NS16550=y
-CONFIG_USB=y
-CONFIG_DM_USB=y
-CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_STORAGE=y
-CONFIG_SMBIOS_MANUFACTURER=""
diff --git a/configs/mvebu_db-88f8040_defconfig b/configs/mvebu_db-88f8040_defconfig
deleted file mode 100644 (file)
index 7f36eda..0000000
+++ /dev/null
@@ -1,70 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_MVEBU=y
-CONFIG_SYS_MALLOC_F_LEN=0x2000
-CONFIG_TARGET_MVEBU_ARMADA_8K=y
-CONFIG_DEFAULT_DEVICE_TREE="armada-8040-db"
-CONFIG_SMBIOS_PRODUCT_NAME=""
-CONFIG_DEBUG_UART=y
-CONFIG_AHCI=y
-# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
-CONFIG_SYS_CONSOLE_INFO_QUIET=y
-# CONFIG_DISPLAY_CPUINFO is not set
-# CONFIG_DISPLAY_BOARDINFO is not set
-CONFIG_ARCH_EARLY_INIT_R=y
-CONFIG_BOARD_EARLY_INIT_F=y
-CONFIG_HUSH_PARSER=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-CONFIG_CMD_MMC=y
-CONFIG_CMD_PART=y
-CONFIG_CMD_SF=y
-CONFIG_CMD_SPI=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_USB=y
-# CONFIG_CMD_FPGA is not set
-# CONFIG_CMD_SETEXPR is not set
-CONFIG_CMD_TFTPPUT=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_TIME=y
-CONFIG_CMD_MVEBU_BUBT=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
-CONFIG_MAC_PARTITION=y
-CONFIG_ISO_PARTITION=y
-CONFIG_EFI_PARTITION=y
-CONFIG_BLOCK_CACHE=y
-CONFIG_DM_I2C=y
-CONFIG_SYS_I2C_MVTWSI=y
-CONFIG_MISC=y
-CONFIG_DM_MMC=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_XENON=y
-CONFIG_SPI_FLASH=y
-CONFIG_SPI_FLASH_MACRONIX=y
-CONFIG_SPI_FLASH_SPANSION=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_PHY_MARVELL=y
-CONFIG_MVPP2=y
-CONFIG_PCI=y
-CONFIG_DM_PCI=y
-CONFIG_PCIE_DW_MVEBU=y
-CONFIG_MVEBU_COMPHY_SUPPORT=y
-CONFIG_PINCTRL=y
-CONFIG_PINCTRL_ARMADA_8K=y
-# CONFIG_SPL_SERIAL_PRESENT is not set
-CONFIG_DEBUG_UART_BASE=0xf0512000
-CONFIG_DEBUG_UART_CLOCK=200000000
-CONFIG_DEBUG_UART_SHIFT=2
-CONFIG_DEBUG_UART_ANNOUNCE=y
-CONFIG_SYS_NS16550=y
-CONFIG_USB=y
-CONFIG_DM_USB=y
-CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_STORAGE=y
-CONFIG_SMBIOS_MANUFACTURER=""
diff --git a/configs/mvebu_db_armada8k_defconfig b/configs/mvebu_db_armada8k_defconfig
new file mode 100644 (file)
index 0000000..7f4ee05
--- /dev/null
@@ -0,0 +1,71 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MVEBU=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_TARGET_MVEBU_ARMADA_8K=y
+CONFIG_DEFAULT_DEVICE_TREE="armada-8040-db"
+CONFIG_SMBIOS_PRODUCT_NAME=""
+CONFIG_DEBUG_UART=y
+CONFIG_AHCI=y
+# CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+# CONFIG_DISPLAY_CPUINFO is not set
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_ARCH_EARLY_INIT_R=y
+CONFIG_BOARD_EARLY_INIT_F=y
+CONFIG_HUSH_PARSER=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_FPGA is not set
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_TIME=y
+CONFIG_CMD_MVEBU_BUBT=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_MAC_PARTITION=y
+CONFIG_ISO_PARTITION=y
+CONFIG_EFI_PARTITION=y
+CONFIG_BLOCK_CACHE=y
+CONFIG_DM_I2C=y
+CONFIG_SYS_I2C_MVTWSI=y
+CONFIG_MISC=y
+CONFIG_DM_MMC=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_XENON=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_PHY_MARVELL=y
+CONFIG_MVPP2=y
+CONFIG_PCI=y
+CONFIG_DM_PCI=y
+CONFIG_PCIE_DW_MVEBU=y
+CONFIG_MVEBU_COMPHY_SUPPORT=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_ARMADA_8K=y
+# CONFIG_SPL_SERIAL_PRESENT is not set
+CONFIG_DEBUG_UART_BASE=0xf0512000
+CONFIG_DEBUG_UART_CLOCK=200000000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_DEBUG_UART_ANNOUNCE=y
+CONFIG_SYS_NS16550=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_XHCI_HCD=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_SMBIOS_MANUFACTURER=""
index 9ab7f4603a492b9d763cb9aaf9fd8ad24a62e757..beaa1cf6924179ea0b27b80625b45e37b43dbfe3 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="armada-3720-espressobin"
 CONFIG_DEBUG_UART=y
 CONFIG_AHCI=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index a4fec5dc1fada3cf4148169f5dc04e35239b312f..b533f736c5678aef6bee617c6211dea6ce82e774 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SMBIOS_PRODUCT_NAME=""
 CONFIG_DEBUG_UART=y
 CONFIG_AHCI=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 795de1474024bcb53dc8012df12e8419312e4230..169cd6aeb37e4c46e240e6ed1a30dd3960cf48f1 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 7eb1791d6c6aea3e52879f9b907fa18c184d697a..c70035d624ab8c42a077fbfe8101493b0d4fa70b 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index c3a0091ce49b360042e3aaaec5bf813895d59b63..4f3516fc2e18d84876806e6c19fec4b79ecaf0e5 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_MX25PDK=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx25pdk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 CONFIG_DEFAULT_FDT_FILE="imx25-pdk.dtb"
 CONFIG_HUSH_PARSER=y
index 710ae4711d1d287ca006e7b2753df742d5b82f7c..49459474bd08dad133a7479a20569f6e418ed100 100644 (file)
@@ -5,7 +5,8 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="MXS_AUART,MXS_AUART_BASE=MXS_UARTAPP3_BASE,ENV_IS_IN_MMC"
+CONFIG_SYS_EXTRA_OPTIONS="MXS_AUART,MXS_AUART_BASE=MXS_UARTAPP3_BASE"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 95ac31adafb87da07510f30cc809ce206829348c..b85b8b5ff146ba06d1896ee53637190d255caa4e 100644 (file)
@@ -6,7 +6,7 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_FIT=y
-CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_MMC"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 3b955401ca22d19d1b7b8cf914211ecd9a1168e3..43d7599d1039c7d817828a26761c610fcf5c0acc 100644 (file)
@@ -5,7 +5,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 1b5de6655368b290e37548318540695f620774d0..80b9ad2da36624d7e51bf61550eb84942110f85f 100644 (file)
@@ -5,7 +5,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_SPI_FLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index c9ba6975f881bcc207b9bebda26c717221798a2d..17ce704d577134876feee7ea8e31ad3b90e15e82 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_ARM=y
 CONFIG_TARGET_MX31ADS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_CMD_SPI=y
 # CONFIG_CMD_SETEXPR is not set
index e704dfd5f8c69d7b2b6af8a07b6c3a60a8f1f799..5b8523adf02529d28cf2b6d3bdb4f2d7d197a365 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_MX31PDK=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 CONFIG_SPL=y
 CONFIG_CMD_BOOTZ=y
index 0da348adff2c3b93a629ad37e4f3bdec62ce90e6..11bc00c3ab70c155f55e497deb6390ed10100e05 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_ARM=y
 CONFIG_TARGET_MX35PDK=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -17,6 +18,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_EFI_PARTITION=y
 # CONFIG_PARTITION_UUIDS is not set
 CONFIG_MTD_NOR_FLASH=y
index 8f09c04ceb08028dd12c4757c5f102934204423d..2ea2e6783c0999201b1ce978739a78998777ec51 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_MX51EVK=y
 CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx51evk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 146e7de7e387f83ddd0db240792e8feabc64ec84..1a70cb2a4b68745e700ec85d682d19db0b89a2cc 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX5=y
 CONFIG_TARGET_MX53ARD=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53ard/imximage_dd3.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx53-ard.dtb"
 CONFIG_HUSH_PARSER=y
index e0c597cbe251b409a9716e5674bd9093ae01dae5..46b984e56c709c938da64c612782f09c4a502362 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx53-cx9020"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/beckhoff/mx53cx9020/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
@@ -12,6 +13,7 @@ CONFIG_CMD_BOOTZ=y
 CONFIG_CMD_MMC=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
+CONFIG_CMD_PXE=y
 CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_EXT2=y
index eed381b2fa1e39aceb28a00c075dcb59280d71fe..23cc9d9059fe9e25af2de2487cbd32b5e7a79d8c 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_MX5=y
 CONFIG_TARGET_MX53EVK=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53evk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
index 6e2f5859607576a983e8beada33f91ce44cf5a13..d920aad3868b12e13469d800899365f59688f27d 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_MX53LOCO=y
 CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53loco/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 2a481a399e2124fa2985d42f7a3ddd08bbfcca79..636bfa69e265620d4cf8cdf483a8181f238faf51 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX5=y
 CONFIG_TARGET_MX53SMD=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx53smd/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_HUSH_PARSER=y
 # CONFIG_CMD_IMLS is not set
index 7530de1519c204ac6a5225b0bdc2c46d887ab15f..f0b6679ece6d88f2f142bdaf4c04f6e518889f62 100644 (file)
@@ -12,7 +12,8 @@ CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_DISTRO_DEFAULTS=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_SYS_STDIO_DEREGISTER is not set
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -23,6 +24,7 @@ CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_GPIO=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 # CONFIG_SPL_PARTITION_UUIDS is not set
index 82e9a069a32484035f3b24956102a1eeeca11fd0..4a6d98b2602f32b0985275e6781eb657201417bf 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QARM2=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage_mx6dl.cfg,MX6DL,DDR_MB=2048"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 19fede696194c78cd6b2c2315283e4a358c353ba..cae96780d4413bac549ea8652bb34253e0fec33c 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QARM2=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage_mx6dl.cfg,MX6DL,MX6DL_LPDDR2,DDR_MB=512"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
diff --git a/configs/mx6dlsabreauto_defconfig b/configs/mx6dlsabreauto_defconfig
deleted file mode 100644 (file)
index ba5ab8a..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_MX6=y
-CONFIG_TARGET_MX6QSABREAUTO=y
-CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6dl.cfg,MX6DL"
-CONFIG_BOOTDELAY=3
-# CONFIG_CONSOLE_MUX is not set
-CONFIG_SYS_CONSOLE_IS_IN_ENV=y
-CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
-CONFIG_HUSH_PARSER=y
-CONFIG_CMD_BOOTZ=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-CONFIG_CMD_MMC=y
-CONFIG_CMD_SF=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_USB=y
-CONFIG_CMD_DFU=y
-CONFIG_CMD_USB_MASS_STORAGE=y
-CONFIG_CMD_GPIO=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
-CONFIG_DFU_MMC=y
-CONFIG_DFU_SF=y
-CONFIG_MTD_NOR_FLASH=y
-CONFIG_SPI_FLASH=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_USB=y
-CONFIG_USB_STORAGE=y
-CONFIG_USB_GADGET=y
-CONFIG_CI_UDC=y
-CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_G_DNL_MANUFACTURER="FSL"
-CONFIG_G_DNL_VENDOR_NUM=0x0525
-CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
-# CONFIG_VIDEO_SW_CURSOR is not set
-CONFIG_OF_LIBFDT=y
index cee1300a2dd3782d61a373cf42db5f308253a85f..851359d1a88007d24f8478452b27ab0e286b655a 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QARM2=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg,MX6Q,DDR_MB=2048"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index f150e3287eff986fb8d4df0f8ddce64bf0080286..3f00ffaf7b0d8938572df164d09c8dd8a75a9ff2 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6QARM2=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qarm2/imximage.cfg,MX6Q,MX6DQ_LPDDR2,DDR_MB=512"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
diff --git a/configs/mx6qpsabreauto_defconfig b/configs/mx6qpsabreauto_defconfig
deleted file mode 100644 (file)
index 96a248e..0000000
+++ /dev/null
@@ -1,43 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_MX6=y
-CONFIG_TARGET_MX6QSABREAUTO=y
-CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/mx6qp.cfg,MX6Q"
-CONFIG_BOOTDELAY=3
-# CONFIG_CONSOLE_MUX is not set
-CONFIG_SYS_CONSOLE_IS_IN_ENV=y
-CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
-CONFIG_HUSH_PARSER=y
-CONFIG_CMD_BOOTZ=y
-# CONFIG_CMD_IMLS is not set
-CONFIG_CMD_MMC=y
-CONFIG_CMD_SF=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_USB=y
-CONFIG_CMD_DFU=y
-CONFIG_CMD_USB_MASS_STORAGE=y
-CONFIG_CMD_GPIO=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
-CONFIG_DFU_MMC=y
-CONFIG_DFU_SF=y
-CONFIG_MTD_NOR_FLASH=y
-CONFIG_SPI_FLASH=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_USB=y
-CONFIG_USB_STORAGE=y
-CONFIG_USB_GADGET=y
-CONFIG_CI_UDC=y
-CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_G_DNL_MANUFACTURER="FSL"
-CONFIG_G_DNL_VENDOR_NUM=0x0525
-CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
-# CONFIG_VIDEO_SW_CURSOR is not set
-CONFIG_OF_LIBFDT=y
diff --git a/configs/mx6qsabreauto_defconfig b/configs/mx6qsabreauto_defconfig
deleted file mode 100644 (file)
index 015207d..0000000
+++ /dev/null
@@ -1,44 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_MX6=y
-CONFIG_TARGET_MX6QSABREAUTO=y
-CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6qsabreauto/imximage.cfg,MX6Q"
-CONFIG_BOOTDELAY=3
-# CONFIG_CONSOLE_MUX is not set
-CONFIG_SYS_CONSOLE_IS_IN_ENV=y
-CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
-CONFIG_HUSH_PARSER=y
-CONFIG_CMD_BOOTZ=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_CMD_FLASH is not set
-CONFIG_CMD_MMC=y
-CONFIG_CMD_SF=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_USB=y
-CONFIG_CMD_DFU=y
-CONFIG_CMD_USB_MASS_STORAGE=y
-CONFIG_CMD_GPIO=y
-CONFIG_CMD_DHCP=y
-CONFIG_CMD_MII=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_EXT2=y
-CONFIG_CMD_EXT4=y
-CONFIG_CMD_EXT4_WRITE=y
-CONFIG_CMD_FAT=y
-CONFIG_CMD_FS_GENERIC=y
-CONFIG_DFU_MMC=y
-CONFIG_DFU_SF=y
-CONFIG_MTD_NOR_FLASH=y
-CONFIG_SPI_FLASH=y
-CONFIG_SPI_FLASH_STMICRO=y
-CONFIG_USB=y
-CONFIG_USB_STORAGE=y
-CONFIG_USB_GADGET=y
-CONFIG_CI_UDC=y
-CONFIG_USB_GADGET_DOWNLOAD=y
-CONFIG_G_DNL_MANUFACTURER="FSL"
-CONFIG_G_DNL_VENDOR_NUM=0x0525
-CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
-# CONFIG_VIDEO_SW_CURSOR is not set
-CONFIG_OF_LIBFDT=y
index 32bd271209cce8fd213661356c85494349de3d1d..47c2b15e1c093bfa972a9a0a6771ece089b8de5e 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NITROGEN6X=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024,SABRELITE"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 # CONFIG_SYS_STDIO_DEREGISTER is not set
diff --git a/configs/mx6sabreauto_defconfig b/configs/mx6sabreauto_defconfig
new file mode 100644 (file)
index 0000000..27577d6
--- /dev/null
@@ -0,0 +1,54 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MX6=y
+CONFIG_SPL_GPIO_SUPPORT=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_TARGET_MX6SABREAUTO=y
+CONFIG_SPL_MMC_SUPPORT=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_LIBDISK_SUPPORT=y
+CONFIG_SPL_WATCHDOG_SUPPORT=y
+CONFIG_VIDEO=y
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,SPL,MX6QDL"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_BOOTDELAY=3
+# CONFIG_CONSOLE_MUX is not set
+CONFIG_SYS_CONSOLE_IS_IN_ENV=y
+CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
+CONFIG_SPL=y
+CONFIG_SPL_EXT_SUPPORT=y
+CONFIG_SPL_I2C_SUPPORT=y
+CONFIG_HUSH_PARSER=y
+CONFIG_CMD_BOOTZ=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_DFU=y
+CONFIG_CMD_GPIO=y
+CONFIG_CMD_DHCP=y
+CONFIG_CMD_MII=y
+CONFIG_CMD_PING=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_EXT2=y
+CONFIG_CMD_EXT4=y
+CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
+CONFIG_DFU_MMC=y
+CONFIG_DFU_SF=y
+CONFIG_SPI_FLASH=y
+CONFIG_SPI_FLASH_STMICRO=y
+CONFIG_USB=y
+CONFIG_USB_STORAGE=y
+CONFIG_USB_GADGET=y
+CONFIG_CI_UDC=y
+CONFIG_USB_GADGET_DOWNLOAD=y
+CONFIG_G_DNL_MANUFACTURER="FSL"
+CONFIG_G_DNL_VENDOR_NUM=0x0525
+CONFIG_G_DNL_PRODUCT_NUM=0xa4a5
+# CONFIG_VIDEO_SW_CURSOR is not set
+CONFIG_OF_LIBFDT=y
index 0e0edefab719d6ff96f92b312d9a5d21490d8c90..627bf523d6e46f1c31cc8a7dc35d5a74dadc6c7a 100644 (file)
@@ -9,7 +9,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
@@ -23,6 +24,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
index 6903fc9ebc63616c53016eb8e831a9d0d5807ad6..5676da10d6d76763936c884f557c53f6dbdee578 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_MX6SLEVK=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6sl-evk"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 67d62f881270993fe019b65bca33baf9093c14d8..9260677950f33f38b5585ff46c7003db05a044ce 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_MX6SLEVK=y
 CONFIG_DEFAULT_DEVICE_TREE="imx6sl-evk"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6slevk/imximage.cfg,MX6SL"
 CONFIG_SPI_BOOT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 1fd86fc7f16b729512e7ee45a95de85bee80bbcd..a241adedc51a012cb4bfa0dda8b1f95f7895ab5d 100644 (file)
@@ -9,7 +9,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 # CONFIG_CMD_BMODE is not set
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,SPL,MX6SL,SYS_I2C"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6SL,SYS_I2C"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 949ce91804442725abc3a7a4085ef8c48ffe0021..f60e2f94d2c4a95d8ef6ca6bc5b8a4bf2d70ddd5 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_MX6SLLEVK=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6sll-evk"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sllevk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 60a4431083f821991bf04a0c8c46be6aeb645dfe..85e334103568c928f4378c37d28eb5038f6aa95d 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_USE_IMXIMG_PLUGIN=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6sll-evk"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6sllevk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 6d4fe6370fb97cab4b3535ce46ad319370ef4d06..90daa96a366340c7e97258e981ea0cc2f09fd54a 100644 (file)
@@ -10,7 +10,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 56e66eef3dfe1e242a658b8b71caa380c90b82fa..87419cdbfebca4db857834025cd2433774521bfe 100644 (file)
@@ -9,7 +9,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index aa6cc08a4f9214bbdb83af02bb70a8f2df7c30fe..c58f6dca1e27d68bf241d6fab886f3ba1cbf8878 100644 (file)
@@ -9,7 +9,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 4ae492a2d085d9b0a72372b6fb8feba2a7a79580..133cda74fa6a83598ee7b6f0d927b931c0e655e5 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_MX6ULL_14X14_EVK=y
 CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 0b232c4df79e7849f3738e254badd9e243e385ea..9349155de7cdc14fc33ad3d564ea167df667950f 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_MX6ULL_14X14_EVK=y
 CONFIG_USE_IMXIMG_PLUGIN=y
 CONFIG_DEFAULT_DEVICE_TREE="imx6ull-14x14-evk"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx6ullevk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 6ab7cb77e6f09e3e2105b21e7deb5e3948da8dcf..bbd5ca97ad8c25942d4169e532e0bbd5bdd38b4c 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX7ULP=y
 CONFIG_TARGET_MX7ULP_EVK=y
 CONFIG_DEFAULT_DEVICE_TREE="imx7ulp-evk"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7ulp_evk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_I2C=y
index 6ab7cb77e6f09e3e2105b21e7deb5e3948da8dcf..bbd5ca97ad8c25942d4169e532e0bbd5bdd38b4c 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX7ULP=y
 CONFIG_TARGET_MX7ULP_EVK=y
 CONFIG_DEFAULT_DEVICE_TREE="imx7ulp-evk"
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/mx7ulp_evk/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_I2C=y
index a57cc9724c5419b0f33d77db64f6ec068e7ff8c1..111207d0f9cd4a86df670eec9b76ba73cb23d16e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NAS220=y
 CONFIG_IDENT_STRING="\nNAS 220"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index ab8eb958ca06b48bba6fc096ac46ab31e6ef7262..8135b86ee755ef13794348ab563d5c15e9ae6acc 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NET2BIG_V2=y
 CONFIG_IDENT_STRING=" 2Big v2"
 CONFIG_SYS_EXTRA_OPTIONS="NET2BIG_V2"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 66db6447acd8391f8fcdd0a296b312e8a66dd86f..9020a368575fd3ca8994fef29fc10e719550aec6 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NETSPACE_V2=y
 CONFIG_IDENT_STRING=" NS v2 Lite"
 CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_LITE_V2"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 04abc9405be737c59414bdbbe2d9dece1432a4f3..741b4a5e42166132fe31f4ab0777c92dd4bff670 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NETSPACE_V2=y
 CONFIG_IDENT_STRING=" NS Max v2"
 CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_MAX_V2"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 5f79e6f0e28ca4ef8670b7643de1a86b2d3c0d1d..569e0167c14d0619e33cc0f17d05905090ecb6e3 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NETSPACE_V2=y
 CONFIG_IDENT_STRING=" NS v2 Mini"
 CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_MINI_V2"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a81ad0b1e8b0624a50bb62787e70dd4efa8f5ff2..64a83a4f734b3449154d1d046118d8c500065be4 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NETSPACE_V2=y
 CONFIG_IDENT_STRING=" NS v2"
 CONFIG_SYS_EXTRA_OPTIONS="NETSPACE_V2"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 5744ede776f44c98e6d826b8d58550e82c40fc0d..9b8914bf18db0c0b1ca39f8e32744c2d27f37cfa 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NITROGEN6X=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl2g.cfg,MX6DL,DDR_MB=2048"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 # CONFIG_SYS_STDIO_DEREGISTER is not set
index dca89ec34ec9e78bcdb06ca63c898bec4c9fe771..21a8f3ad3acf7778133a2585b1a286da1e17813a 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NITROGEN6X=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6dl.cfg,MX6DL,DDR_MB=1024"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 # CONFIG_SYS_STDIO_DEREGISTER is not set
index baa509d48ee0ec6a1058ab9bd94866c1b567fbad..5c112547907ba0568e9fdc80f9b570da776fffda 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NITROGEN6X=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q2g.cfg,MX6Q,DDR_MB=2048"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 # CONFIG_SYS_STDIO_DEREGISTER is not set
index ebfa8430614aec9f3c960054099cd02b3291abe9..33c9cdbc868390dc9b293fcc47d0f4d31706a974 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NITROGEN6X=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6q.cfg,MX6Q,DDR_MB=1024"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 # CONFIG_SYS_STDIO_DEREGISTER is not set
index 0f7532062a10c9846057ed31f30ee321ad734fca..944afc58e5ae2ebc39dea8606a0af42b4232c465 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NITROGEN6X=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 # CONFIG_SYS_STDIO_DEREGISTER is not set
index 45a5acb96ca9103594787d08a6a163a59d141e0c..e8c19687b9c75d379932e1811bb7c5cbf1ee822d 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NITROGEN6X=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s.cfg,MX6S,DDR_MB=512"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 # CONFIG_SYS_STDIO_DEREGISTER is not set
index 3ca00b9899e205e8a6f9ebf187147512a7be49b4..eb47bc14751af4e2059f12c1e2ba029822fed982 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_NOKIA_RX51=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=30
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 3f8b98ebb9a612807ae931822fe26a5cb8cbd8a5..23c186b21a0ffd542b09076d3ae4527db8741379 100644 (file)
@@ -14,7 +14,8 @@ CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6Q"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index ae39818e4b1106c0f487488bbe215c54a8261956..276df2f9a2363937a74d4593b88b8bbf4c353a8b 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_NSA310S=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index d81543412725d6a098f6f75a97883cd864faacc5..fabae32ed50c4c32b762ae100e4025596a632660 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_NSIM=y
 CONFIG_SYS_TEXT_BASE=0x81000000
 CONFIG_SYS_CLK_FREQ=70000000
 CONFIG_DEFAULT_DEVICE_TREE="nsim"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_PROMPT="nsim# "
 # CONFIG_CMD_IMLS is not set
index 991d509d2fc5008b7ad50a6999eb60e355c3d284..021735f7430c5b7c08d328cd7e7a970e1affe3dc 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NSIM=y
 CONFIG_SYS_TEXT_BASE=0x81000000
 CONFIG_SYS_CLK_FREQ=70000000
 CONFIG_DEFAULT_DEVICE_TREE="nsim"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_PROMPT="nsim# "
 # CONFIG_CMD_IMLS is not set
index 16e39111529568e7794e37326fc42ee4717ebcd0..db172394a3f89f695eade8c7828ba8ad4c6ce27e 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_NSIM=y
 CONFIG_SYS_TEXT_BASE=0x81000000
 CONFIG_SYS_CLK_FREQ=70000000
 CONFIG_DEFAULT_DEVICE_TREE="nsim"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_PROMPT="nsim# "
 # CONFIG_CMD_IMLS is not set
index d87833e9cce3ed78130e6f3918b798b9b9b341c5..8ffbb85a7a2e892775d55537cb60535a8609a7c1 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_NSIM=y
 CONFIG_SYS_TEXT_BASE=0x81000000
 CONFIG_SYS_CLK_FREQ=70000000
 CONFIG_DEFAULT_DEVICE_TREE="nsim"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_PROMPT="nsim# "
 # CONFIG_CMD_IMLS is not set
index cb3b0a85cf9f812d9cf9d6e06a22c1d1df766a20..03d83c1268ef4c7ce5f1e56e5e3c3e0007538ba9 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TEGRA=y
 CONFIG_TEGRA124=y
 CONFIG_TARGET_NYAN_BIG=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra124-nyan-big"
+CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
 CONFIG_OF_SYSTEM_SETUP=y
@@ -27,8 +28,8 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
 CONFIG_CMD_BMP=y
-CONFIG_CMD_BOOTSTAGE=y
 CONFIG_CMD_CACHE=y
+CONFIG_CMD_BOOTSTAGE=y
 CONFIG_CMD_PMIC=y
 CONFIG_CMD_REGULATOR=y
 CONFIG_CMD_TPM=y
@@ -37,6 +38,7 @@ CONFIG_CMD_EXT4_WRITE=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_ISO_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
+CONFIG_OF_LIVE=y
 CONFIG_SPL_DM=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
@@ -49,9 +51,9 @@ CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_PMIC=y
 CONFIG_PMIC_AS3722=y
 CONFIG_DM_REGULATOR=y
+CONFIG_REGULATOR_AS3722=y
 CONFIG_DM_REGULATOR_FIXED=y
 CONFIG_PWM_TEGRA=y
-CONFIG_DEBUG_UART=y
 CONFIG_DEBUG_UART_BASE=0x70006000
 CONFIG_DEBUG_UART_CLOCK=408000000
 CONFIG_DEBUG_UART_SHIFT=2
index 35314142a0421df319edfe3f60dc2bd58f6b8b8d..121dcf2d6cb17e88dd8d38a907100f4601ce3ac1 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_ODROID_C2=y
 CONFIG_IDENT_STRING=" odroid-c2"
 CONFIG_DEFAULT_DEVICE_TREE="meson-gxbb-odroidc2"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_BDI is not set
@@ -13,9 +14,11 @@ CONFIG_DEBUG_UART=y
 # CONFIG_CMD_LOADS is not set
 CONFIG_CMD_MMC=y
 # CONFIG_CMD_FPGA is not set
+CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_OF_CONTROL=y
 CONFIG_NET_RANDOM_ETHADDR=y
+CONFIG_DM_GPIO=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_MESON_GX=y
 CONFIG_DM_ETH=y
index 28025fc4e51e0494dd473a8fe39bb05b6f232f44..ffcecd5fd23872ec62546ab275fe3b52d6ce8065 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_DISTRO_DEFAULTS=y
 # CONFIG_SYS_MALLOC_CLEAR_ON_INIT is not set
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SYS_PROMPT="ODROID-XU3 # "
index 3e4dee747bde696b5c648bd5050a18c0ac3eb12f..72a4ef1026cf4bcf3c88abbb31cebfea46903f83 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_OMAP3_BEAGLE=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -18,6 +19,7 @@ CONFIG_CMD_USB=y
 CONFIG_CMD_GPIO=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_LED_STATUS=y
 CONFIG_LED_STATUS0=y
 CONFIG_LED_STATUS_BIT=1
index 8d5bc8e1fc03fcc3e32cdb083e5e54b3432376c2..d7bbf2dd91d613e04830356f1f99d31bdbe49857 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 # CONFIG_SYS_THUMB_BUILD is not set
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_OMAP3_EVM=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 # CONFIG_SPL_EXT_SUPPORT is not set
index fa09a53fa8293d6322d83b64810b52f2eb8c3c7a..c51309c7238f13af4de7ebc5964957ef78173212 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_TAO3530=y
 CONFIG_SYS_EXTRA_OPTIONS="SYS_BOARD_OMAP3_HA"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 # CONFIG_SPL_EXT_SUPPORT is not set
@@ -20,6 +21,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
index db8f4683e2a0ad54849e1baa8d1941a0927d92e5..58b5ecdc808586ccd725f5df2e825b438eb796b3 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_OMAP3_LOGIC=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
 CONFIG_DEFAULT_DEVICE_TREE="logicpd-torpedo-37xx-devkit"
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
index f4c3d3233d402ed1fbdac811425418d203e3dda5..be2447b918cc8706714587fc3c67fcfc90bf5be4 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_OMAP3_OVERO=y
 CONFIG_SPL_STACK_R_ADDR=0x82000000
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
index b86dfadc52734650366d918cf21cce997b3af671..466564bcd9b83925597c25bfe15c14ad512550ce 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_OMAP3_PANDORA=y
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
index a76ac6f2d84202c7b2fa0077077629df9a68ddff..bf1ef98c4683b328373e2e49ca9580906ca91f22 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_OMAP3_ZOOM1=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
@@ -25,6 +26,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
 CONFIG_MMC_OMAP_HS=y
index 3d91f137e875c465121d3de0fdf0d08d0675aae0..22fe337ba2fe50c5b3a1d2587eddc9779edd83b5 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_OMAP44XX=y
 CONFIG_TARGET_OMAP4_PANDA=y
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
index dda4030eccb58734104773c94b3ae7f908705f0e..04198e5d8381ecf804c24613e69f2b52035989f7 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_OMAP4_SDP4430=y
 CONFIG_CMD_BAT=y
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
index 0af00b14be74878a0a1dc903ea54d0793e8b6702..635bdf7e137a2c9d84defddd3c05b084521a7774 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_OMAP5_UEVM=y
 CONFIG_OMAP_PLATFORM_RESET_TIME_MAX_USEC=16296
 # CONFIG_SPL_NAND_SUPPORT is not set
 CONFIG_ARMV7_LPAE=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
@@ -32,10 +33,10 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ISO_PARTITION=y
-CONFIG_SCSI=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_MMC_OMAP_HS=y
+CONFIG_SCSI=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
index c6f474a9b2b01faff6a29921603ac4167880381f..282725fef98cc6de64e882b949866e5bcd00ca27 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
index 14718728336f7829ac3d28ea999ccabc89451b85..10fcec60a5781183382f16ac4ed33ba69fe01483 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_OPENRD=y
 CONFIG_IDENT_STRING="\nOpenRD-Base"
 CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_BASE"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_IMLS is not set
index b62852a10c1ce252bd9dae8c9fc000b7a3af9718..7faa43d864a59eee253fb9fcfb033d27f779c5b8 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_OPENRD=y
 CONFIG_IDENT_STRING="\nOpenRD-Client"
 CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_CLIENT"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_IMLS is not set
index d57b6962d548701b364d198c18e20d65813b1746..185173e53b28299bbb4fb47b6e626e79178fd864 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_OPENRD=y
 CONFIG_IDENT_STRING="\nOpenRD-Ultimate"
 CONFIG_SYS_EXTRA_OPTIONS="BOARD_IS_OPENRD_ULTIMATE"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_IMLS is not set
index f08e1dd404dada83a112d782e3c81b35b3a75dd4..b9dab54efd1ef3acfadfff5d9e793f235503de44 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DEFAULT_DEVICE_TREE="imx6ul-opos6uldev"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=5
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index d6271b8d550daf435e3a0acc55371ea5ef44c91d..3ae27da0d4e768cb5ee779b149aa52f985f09177 100644 (file)
@@ -2,6 +2,7 @@ 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_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -23,11 +24,13 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_DM=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_DM_THERMAL=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_OF_LIBFDT=y
index b64ded2cf7ec36878b52c69ccdd40a817f1a91ec..50be46849e1c8708fa44686337afec99131ac540 100644 (file)
@@ -8,7 +8,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6Q"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
@@ -31,11 +32,13 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_DM=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_MACRONIX=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_SST=y
 CONFIG_SPI_FLASH_WINBOND=y
+CONFIG_DM_THERMAL=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_OF_LIBFDT=y
index d04f0523553fd47101d379a623be38fcd4e02804..4345fb070a65eeff4e283d89fb6cdb8fee14e9d2 100644 (file)
@@ -22,6 +22,7 @@ CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 # CONFIG_CMD_NFS is not set
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_OF_LIVE=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_DFU_SF=y
index 3fd171379f398584ef784caa23d2df88faa313bc..d0c2b7292a389bfa8082ec7940790d844fbcc285 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TEGRA20=y
 CONFIG_TARGET_PAZ00=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-paz00"
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_SYS_PROMPT="Tegra20 (Paz00) MOD # "
 # CONFIG_CMD_IMI is not set
index 7146a2702c608c4d8d1517182fcb4c37606182eb..a9c5ede0467647c56f22f16c4e11a5d7c8cdf5b1 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MIPS=y
 CONFIG_TARGET_PB1X00=y
 CONFIG_SYS_EXTRA_OPTIONS="PB1000"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_PROMPT="Pb1x00 # "
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_ELF is not set
index 466aa511baff77fdc558e6965bd9c796ad30b052..6571876f240ee4eeb5443a1b39ae7d2c3fd88771 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="REV1"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
index 7150e79ed68de675ebe809cb53ccf41be6d099b1..a622359f243216107898acdf2a304498e3fdd438 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="REV3"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
index 1e72e91eded03966d80320b2d35d6c0098a5f26a..42ef626d7e97e159e3e01965cb2dbab31c86d5b1 100644 (file)
@@ -3,7 +3,8 @@ CONFIG_SYS_THUMB_BUILD=y
 CONFIG_ARCH_VF610=y
 CONFIG_TARGET_PCM052=y
 CONFIG_DEFAULT_DEVICE_TREE="pcm052"
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/phytec/pcm052/imximage.cfg,ENV_IS_IN_NAND"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/phytec/pcm052/imximage.cfg"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index c55537c03274a3ddba67d394f7ca9e48d7d4e150..dc3fed79f08cd2e9de0d087bf2703e8c83357a5d 100644 (file)
@@ -12,7 +12,8 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_FIT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6Q"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 0b53af833ee23bf5d21c1bb906da5f27a8a327af..b84c3de7bfd6935b0414a42e883a3f6eeecdf3eb 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_DEFAULT_DEVICE_TREE="exynos5800-peach-pi"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SPL=y
 CONFIG_SYS_PROMPT="Peach-Pi # "
index 1e93856f71649a230bfb1e84b80b0e3fe71856ef..a0f443ef47394d60fb745cff62ef9121a1464750 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_DEFAULT_DEVICE_TREE="exynos5420-peach-pit"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SPL=y
 CONFIG_SYS_PROMPT="Peach-Pit # "
index 973f3cd53bf5f8c83ec556e7e99597680b466813..f94f0f9fb400e646b45832c789a473332bfdc4e5 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_ARCH_MISC_INIT=y
@@ -46,6 +47,7 @@ CONFIG_CMD_EXT4=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_CMD_DIAG=y
 CONFIG_ISO_PARTITION=y
 CONFIG_EFI_PARTITION=y
index 11570a8126c3155980eb44d2d74b81d1d5ef609f..106be0d391d6bbda909692e4da2afe1f327c8e6a 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SPL=y
index 823db06d850a6e2211e03948413e48ed09551d7e..618d9839fdf4d6ea51cd5d4f69977eae36eee4f0 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_PHYCORE_RK3288=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-phycore-rdk"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_CPUINFO is not set
index 688b989419462cfd9dedffec291b0d2b74709522..5d08a33ff20877a74de9af5f585a747bd824815b 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_MACH_PIC32=y
 CONFIG_MIPS_BOOT_FDT=y
 CONFIG_DEFAULT_DEVICE_TREE="pic32mzda_sk"
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_PROMPT="dask # "
 # CONFIG_CMD_IMLS is not set
index d18a96e18e6f54e0e629dbf4456c6eef3c3452ec..f19b2fea84a5ea27584bb756f6c8e97e4e357d3b 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_PICO_IMX6UL=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/technexion/pico-imx6ul/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6ul-pico-hobbit.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index aa61e4b65a94bb53207a4933ddee0933250638a9..326158d50672d4b23645fac816774c3ea79dde0c 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9M10G45,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 38423dce98240ee4cd8116487348bc9ea9962ac1..d39d686e3fb129006e3698bd7d79fab10a0c4280 100644 (file)
@@ -9,7 +9,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6DL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6DL"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 3813b98ada41f5aaa129c8ea62d5535c95558372..356c6ed690150dfa06421be41e988e5e75f07db4 100644 (file)
@@ -9,7 +9,8 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6Q"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index 46d30fdf51fb18a169e0eb99b1541ba9f5d55bc3..a9d76255cdbdf2ee8cb2cf53453f953ea6cccb58 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_PLUTUX=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-plutux"
 CONFIG_FIT=y
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_SYS_PROMPT="Tegra20 (Plutux) # "
index ba079de6dc17c4b6eb6a13a67a3f78384004b336..4c35f41ac57ad6ad26495d52dd90c5d99d03189a 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_PM9261=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9261"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 7cf27227405afd4842ee71a8fdba653e56755bbd..01baaa121549e058ad63ae1f018304133cb2f0a9 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_PM9263=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 954908e9aaeee8e8dcfea46b82207e1e5892b774..4e52c7b96b16e4d151394943d5f2c0226097db06 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_PM9G45=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G45"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 57ebc0694c2ff55a2fe77f9f0035940645d0c388..09a65f7b85036c0df1687ac0043cb2271bcd2dd3 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_POGO_E02=y
 CONFIG_IDENT_STRING="\nPogo E02"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SYS_PROMPT="PogoE02> "
index 8f9f40f64d9010538dbcb7b9387e42543e6b5991..f667f4c96876511d3b624dc8c3a2448cecea07b4 100644 (file)
@@ -2,25 +2,19 @@ CONFIG_ARM=y
 CONFIG_TARGET_POPLAR=y
 CONFIG_IDENT_STRING="poplar"
 CONFIG_DEFAULT_DEVICE_TREE="hi3798cv200-poplar"
-CONFIG_SYS_PROMPT="poplar# "
 CONFIG_DISTRO_DEFAULTS=y
-CONFIG_DISPLAY_CPUINFO=n
-CONFIG_DISPLAY_BOARDINFO=y
-CONFIG_ISO_PARTITION=n
+CONFIG_ENV_IS_IN_MMC=y
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_SYS_PROMPT="poplar# "
+# CONFIG_CMD_IMLS is not set
+CONFIG_CMD_UNZIP=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_USB=y
+# CONFIG_ISO_PARTITION is not set
 CONFIG_MMC_DW=y
 CONFIG_MMC_DW_K3=y
-CONFIG_PL011_SERIAL=y
-CONFIG_PSCI_RESET=y
 CONFIG_USB=y
-CONFIG_USB_EHCI=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_EHCI_GENERIC=y
 CONFIG_USB_STORAGE=y
-CONFIG_NET=y
-# CONFIG_CMD_IMLS is not set
-# CONFIG_DM_GPIO is not set
 CONFIG_LIB_RAND=y
-CONFIG_CMD_UNZIP=y
-CONFIG_CMD_MMC=y
-CONFIG_CMD_USB=y
-
index 6d026756dacc5e8ff641dba290ce7deadff524c3..cfa2205e8cf1926a32534f756db4ec926029a403 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_POPMETAL_RK3288=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-popmetal"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_CPUINFO is not set
index a50d9ed99b66ce795f2149e759e4985a6527c824..d74a954615e349409e688aa9a874f921ad9a503a 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_PORTER=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index a0faba50ff98e241f0dbf907077a65e8f40a066a..e98ac23346e85d41015b0bfc190961c36e0c49d8 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_KIRKWOOD=y
 CONFIG_TARGET_KM_KIRKWOOD=y
 CONFIG_IDENT_STRING="\nKeymile Port-L2"
 CONFIG_SYS_EXTRA_OPTIONS="KM_PORTL2"
+CONFIG_ENV_IS_IN_EEPROM=y
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
@@ -21,6 +22,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
index 89f16200235f39e5abbae451e607c2c7fbc8cf81..67d16159b0a04c49dea2247884f5685de376825a 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_SPL_FIT_SOURCE="board/theobroma-systems/puma_rk3399/fit_spl_atf.its"
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_BOARD_INIT=y
 # CONFIG_SPL_RAW_IMAGE_SUPPORT is not set
index 58de0d48ddd72e35f1f223d14b4d8699f2618b2e..ac2d4bb853083bd4030fb39cc5d2ffe362823ff3 100644 (file)
@@ -17,6 +17,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-pxm50"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
index f4640b906a1e805bebcdb5121c5dbb7d1e08a12f..f905f356319b5f7232507078cb56854056007635 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index 2b43827254aa40ae6ec72ad28765016718bb9377..30d4d245192eed1fbb79e0bd6132d23551a77e63 100644 (file)
@@ -19,6 +19,7 @@ CONFIG_FIT=y
 CONFIG_SPL_LOAD_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_BOARD_EARLY_INIT_F is not set
 CONFIG_SPL_SYS_MALLOC_SIMPLE=y
@@ -70,7 +71,6 @@ CONFIG_DEBUG_UART_BASE=0x3f8
 CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index b6483260413ace01fc4e9a3a2b8be8b273befad4..53cbb6a4be53fca91d039bf0f939c412c3049870 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_GENERATE_ACPI_TABLE=y
 CONFIG_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_BOARD_EARLY_INIT_F is not set
 CONFIG_HUSH_PARSER=y
@@ -48,7 +49,6 @@ CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index e092dbdef61d9f950d39041e9e3ea77935025248..6e021b9c0de1111becb5335cf360b496ae319419 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SMP=y
 CONFIG_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_BOARD_EARLY_INIT_F is not set
 CONFIG_HUSH_PARSER=y
@@ -45,7 +46,6 @@ CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index f8f6295617a04ecac6ce794ca74b8a6121771b16..026f08f866a84738d681f9c661509d3eec72eb51 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SMP=y
 CONFIG_FIT=y
 CONFIG_BOOTSTAGE=y
 CONFIG_BOOTSTAGE_REPORT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_BOARD_EARLY_INIT_F is not set
 CONFIG_HUSH_PARSER=y
@@ -46,7 +47,6 @@ CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
 CONFIG_SYS_NS16550=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index 91b08dc24f2986173610cc53f4f1790c17635223..a6f6a9324d7a599af60fb90a4f3730aef3981ace 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_R0P7734=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index ba68b504d0e348794e06a0ceffcc72300b4c40f8..32a12720c97a0a21e3617d0c5b7d29c55e17002b 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_R2DPLUS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_CMD_IDE=y
 # CONFIG_CMD_SETEXPR is not set
index 2a37db824d735cba1b22547ebcdba56dcbdde8e9..c5fa3f3b36e175867c08e777d5cc2659f0b0f649 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_R7780MP=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CMD_BDI is not set
 # CONFIG_CMD_CONSOLE is not set
index c0e3999f9675cf7ca471ee24c3837b537c62ecc9..c95dc4c9d2b554c4033b3b21dda687280e9b3aee 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_RCAR_GEN3=y
 CONFIG_TARGET_SALVATOR_X=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DEFAULT_FDT_FILE="r8a7795-salvator-x.dtb"
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index d57305112b52fb5ed2878303c5a4dec1e00e5cb4..53ad5a87aeae697f98deaebf0fdfc88600210db5 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_RCAR_GEN3=y
 CONFIG_R8A7796=y
 CONFIG_TARGET_SALVATOR_X=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DEFAULT_FDT_FILE="r8a7796-salvator-x.dtb"
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index 6ba984f6ae709852b4e7ea7bb65059329d40cac4..cc40f91905d58b5110aeffb4ecb8fa69583a22a1 100644 (file)
@@ -16,6 +16,7 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-draco"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index d00666bef0f69f480695dce88039898236e7155c..fb9e9b0fc3ea503bcd7f0fa5e5954183dd9193c6 100644 (file)
@@ -3,7 +3,8 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_EMBESTMX6BOARDS=y
 CONFIG_VIDEO=y
 CONFIG_DISTRO_DEFAULTS=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024,ENV_IS_IN_MMC"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/boundary/nitrogen6x/nitrogen6s1g.cfg,MX6S,DDR_MB=1024"
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
index eec0613505c1ad4f881c40c7e28a07b4a470bf4e..cca855cfdf6788e1d51daabb697ac41b62f347be 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_ROCK2=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-rock2-square"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
index 5d9b63bd37cbed81585f723f90344b3db6253183..2ad6a6c521dad44e7a576d8ec98e48fa80901805 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_TARGET_ROCK=y
 CONFIG_SPL_STACK_R_ADDR=0x60080000
 CONFIG_DEFAULT_DEVICE_TREE="rk3188-radxarock"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL_STACK_R=y
 CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x2000
index 9edc4a500d03f85088c53717a5fbb70ccecc9156..9220458c661ac1e7d5cd309d6c98dc4bfbb5b77f 100644 (file)
@@ -17,6 +17,7 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-rut"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
index 302ec6d0303075eed3a3cf94d3a1a99e6081cf5c..be4b716e9eceb65ae7482dc5f4ee5990518acb89 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_S32V234EVB=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_MALLOC_F=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/s32v234evb/s32v234evb.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_CMD_BOOTZ=y
 CONFIG_OF_LIBFDT=y
index 8aeab15bfb7ebf89ef27d4005dbd45260d883edc..9c66a1826da4a752ee9bae782c0230babde73930 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_S5PC1XX=y
 CONFIG_TARGET_S5P_GONI=y
 CONFIG_DEFAULT_DEVICE_TREE="s5pc1xx-goni"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="Goni # "
index 66edd31bfe17bdf4defd20ad1680bc062a75c346..cb690224e5a8bf1e1eea696441876706302f8aa1 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 8771e0846ce189c4bd5438f9143e8720b7c7cfd3..c588e6bfb9d71db6ed27e7bfd168b6c371b9880f 100644 (file)
@@ -8,6 +8,7 @@ CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_SERIALFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 2602aff9bcc60d38f11473823afa3c2c79af7f97..e9a65ccb9d2e9c0873185040345e336492843c79 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d2_xplained"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 2680ab99af9b2bbfd7adc27db03571f0cf42b784..8b9c0ccd2a80f194c82c4a90ec1301c8b16cd56a 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d2_xplained"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D2,SYS_USE_SERIALFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 1c5d85b4adc433c33edeb66157f7d3c386588bc5..d99baad0f681f67039e147042008c4bb8ee7752c 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="sama5d36ek_cmp"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index e312bbf4727e2150d67fac1a921eaebe40d39799..4307f3ac9c13e93df82c39d6299ce928ede56bc1 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="sama5d36ek_cmp"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 8db4f524f8f279ec1d00a2e46601a3b8c3e60b5f..53bab325b7c22508028c34dec971396e392d719a 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="sama5d36ek_cmp"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_SERIALFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 2e42a2e02e3bf4df91937e98efaed3a951734163..acd74994c4b846d7a16cf4982ec89ed9b56faea4 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d3_xplained"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 0d5d2be2eb29bc7ede50ab25f12684108253776b..af8d1ef16db14f2b5b37dba52ba78230b4f916fc 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d3_xplained"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 4cbfa0723f1cd188de9a374b6e02e44f592eb97a..1836e5392f384b2d956213be44702881aaca77be 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_DEFAULT_DEVICE_TREE="sama5d36ek"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index a8f09ed340b05ead6ce85fbf5f93a69d58893fe3..c1860bd36da2b72f623cfeea0b26a13c40a061d4 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="sama5d36ek"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 0166cb6e126ba46e843ca2dbba1c2b6f28478393..41bf96c0361135cce09dcfdbc17932328bddb364 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_DEFAULT_DEVICE_TREE="sama5d36ek"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D3,SYS_USE_SERIALFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 157fbe45774619ed74c068fcbb5a535b6c203c2d..094e5e1c2d531f4116a277194492478c956c236d 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d4_xplained"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index bb791a3a97803b2aa9c06958680f4249449f2ee1..a096aa929cb0ace1eea6980993a5c41cd7267f78 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d4_xplained"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index e7e3169bbcf5ce29f03cb9ec43930e6306ca53e9..bd884b73c837711048cab8d833d3c31af5fa6487 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d4_xplained"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index e78460dc9446df0e3d344951a783572ef4d4abc3..a3909a0639719baebbccc3e4812e3539c64ee16a 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d4ek"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_MMC"
+CONFIG_ENV_IS_IN_FAT=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 5d43ce925c0973032ea4fc3b06dd612aca7be940..c3d076e729e7c456aa5a6299213d505d5501b84b 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d4ek"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_NANDFLASH"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 98813bcd7eb4f40655b80422cc0c7821c4ed67e4..7c6c8f27d63d1005d781b668995e3f3dfeac74d9 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_DEFAULT_DEVICE_TREE="at91-sama5d4ek"
 CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 7a1b9ef05282da0b76a43e2fc1a5741d2ac75342..fd0b952e1dbb941c3b49542b2e878b85acbe6225 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_BOOTSTAGE_FDT=y
 CONFIG_BOOTSTAGE_STASH=y
 CONFIG_BOOTSTAGE_STASH_ADDR=0x0
 CONFIG_BOOTSTAGE_STASH_SIZE=0x4096
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_CONSOLE_RECORD=y
 CONFIG_CONSOLE_RECORD_OUT_SIZE=0x1000
 CONFIG_SILENT_CONSOLE=y
index c5ef69f24138fa9657fc59b5c37b248fa17dec43..3d21662599f1b5e77e51fcbbd828359ce2597a80 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_BOOTSTAGE_FDT=y
 CONFIG_BOOTSTAGE_STASH=y
 CONFIG_BOOTSTAGE_STASH_ADDR=0x0
 CONFIG_BOOTSTAGE_STASH_SIZE=0x4096
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_CONSOLE_RECORD=y
 CONFIG_CONSOLE_RECORD_OUT_SIZE=0x1000
 CONFIG_SILENT_CONSOLE=y
index 747d4b1bbae0c68d1664a4c8f397430c4095b40c..0b82439d336213111d589215547cea4b72053b90 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_BOOTSTAGE_FDT=y
 CONFIG_BOOTSTAGE_STASH=y
 CONFIG_BOOTSTAGE_STASH_ADDR=0x0
 CONFIG_BOOTSTAGE_STASH_SIZE=0x4096
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_CONSOLE_RECORD=y
 CONFIG_CONSOLE_RECORD_OUT_SIZE=0x1000
 CONFIG_SILENT_CONSOLE=y
index 6889206c1be089eca95c150c735a2620a330a134..09e078ec51bc080875bbb70b5d55764860613aa5 100644 (file)
@@ -17,6 +17,7 @@ CONFIG_BOOTSTAGE_FDT=y
 CONFIG_BOOTSTAGE_STASH=y
 CONFIG_BOOTSTAGE_STASH_ADDR=0x0
 CONFIG_BOOTSTAGE_STASH_SIZE=0x4096
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_CONSOLE_RECORD=y
 CONFIG_CONSOLE_RECORD_OUT_SIZE=0x1000
 CONFIG_SILENT_CONSOLE=y
index 80531fe6d4d9ab09e295bdf0c958fede4ac0a03f..0da8d524e50e07634a8b77ff305f55eec021c96b 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 827f4eeccb7310a90b08a4728139da2a87396d12..43204210f40153539b8aa3b4ecb83d4066d95ff4 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 6900b77fe9c451395330713fe0c8e4fd7849a2ec..2196d313ad52e6b91d1e0fc1789c676adebbfc04 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TEGRA20=y
 CONFIG_TARGET_SEABOARD=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-seaboard"
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_PROMPT="Tegra20 (SeaBoard) # "
 # CONFIG_CMD_IMI is not set
 # CONFIG_CMD_IMLS is not set
index 2866bb02f5f6912c80b49fde5961dec4ab3746b0..f06f32214d0483be0dcfa6098d27485a2d9f4c07 100644 (file)
@@ -4,7 +4,7 @@ CONFIG_TARGET_SECOMX6=y
 CONFIG_SECOMX6_UQ7=y
 CONFIG_SECOMX6Q=y
 CONFIG_SECOMX6_2GB=y
-CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_MMC"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 4e19243f0d3af8219ed487ef8c97c92859bd4cc1..1271ea03564420e8aa2a5f5f3e92e0fb58e3baeb 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_SH=y
 CONFIG_SH_32BIT=y
 CONFIG_TARGET_SH7752EVB=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 23b7d7df48717a9ec122462ff5e1452120ea1328..06a95bcde9ccbf02d78b17ee750e6e1446765e29 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_SH7753EVB=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 44224e1e43834be51d448c2df676ec106ee1794e..09ed1b3affd30eb4691326d0a45b6a5c8e42e0f5 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_SH=y
 CONFIG_SH_32BIT=y
 CONFIG_TARGET_SH7757LCR=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 028616666c093aba1bb2dfa6ca20183d94073a1d..9334f6bdec43dca79013026ee348675b25ece7e0 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_SH7763RDP=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 8cb58e9d187ad73673f670ff83426920dea5bf41..59e6067209f02963a9783269a30b93b38e14ff84 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_SH=y
 CONFIG_SH_32BIT=y
 CONFIG_TARGET_SH7785LCR=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 5b6ebf8528c9dcc1e48416c80ab7283d33b53408..cf9c305bc359db97b1cc5e5dfb8c8e82bf14894a 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_SH=y
 CONFIG_TARGET_SH7785LCR=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_CMD_BDI is not set
index 9167e9d2ea49d12cfbd1d92d45a7f221c6dcaa8a..be00fade7e0a041f00904c95c15920cb521fdbd2 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_ROCKCHIP=y
 CONFIG_ROCKCHIP_RK3368=y
 CONFIG_DEFAULT_DEVICE_TREE="rk3368-sheep"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_FASTBOOT=y
 CONFIG_ANDROID_BOOT_IMAGE=y
index ac7217dcba812f4df59e823fbf14c762c6434dc3..95a9ec574d47d22450d002ac33a1786d6ba11faf 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_KIRKWOOD=y
 CONFIG_TARGET_SHEEVAPLUG=y
 CONFIG_IDENT_STRING="\nMarvell-Sheevaplug"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index d161c3bb88bfa02a9d64b020cbc672c761e5af32..cf20114d3b349bc4f0af67bc2628c3d21aafbb3e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_SILK=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index a769fc55354f3d1f2df85051298bf3dd2424d9c7..b111cf716f30bc7053e5c3195129420e4cf89921 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9260-smartweb"
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -31,6 +32,7 @@ CONFIG_CMD_DFU=y
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_DOS_PARTITION is not set
 CONFIG_OF_CONTROL=y
 CONFIG_OF_EMBED=y
index c51df50678e9ec4eda160a0ce8614cb3d68fcbe6..356600f00560b7b0326785a08da5d40bb1f7ef3b 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_DEFAULT_DEVICE_TREE="exynos5250-smdk5250"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
index bff944491e0a126fc336282bcc2a67c05d522c2a..6a2ea205260ea055df0ab9f98ab03c9208b855bc 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_DEFAULT_DEVICE_TREE="exynos5420-smdk5420"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SPL=y
index edaf73a72c3565cbbeb985fd9cebb3cf067072fe..ef8510d47d73eadcbf4ea993485fdd5e130a5ffb 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_S5PC1XX=y
 CONFIG_TARGET_SMDKC100=y
 CONFIG_IDENT_STRING=" for SMDKC100"
 CONFIG_DEFAULT_DEVICE_TREE="s5pc1xx-smdkc100"
+CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="SMDKC100 # "
@@ -11,4 +12,5 @@ CONFIG_SYS_PROMPT="SMDKC100 # "
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_MMC is not set
index 2fbd7d2a8d5ed2250c1bdc5e85113a5b63a7170e..468267e007e0beeed760dd4773052789af5e29de 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_AT91=y
 CONFIG_TARGET_SNAPPER9260=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9260"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index 12cafd9815c3f8f8fddf759c50249a13aa3b11a5..c439933b176c646755da75a1291d6fb5d3258a83 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_AT91=y
 CONFIG_TARGET_SNAPPER9260=y
 CONFIG_FIT=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index 83df0bd9a13577153465a0431221861e4a46ffb3..f56274e2930b80d2fb531f2dc8d9bc0835bb875b 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_SNIPER=y
 # CONFIG_SPL_NAND_SUPPORT is not set
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SPL=y
 # CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_USE_SECTOR is not set
index 5cccd910a56c3f583e9fd6c80cfb26d78f4714fc..5a197d1060fa6cf8a9477f830236cdca67ab61ad 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_DEBUG_UART=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SPL=y
 CONFIG_SYS_PROMPT="snow # "
index 46bda478d57289c927365bf7867b198ea29d4172..7db657a6333fb2b68b915deb396b278bc7d5d772 100644 (file)
@@ -4,8 +4,10 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_SOCFPGA_ARRIA10_SOCDK=y
 CONFIG_IDENT_STRING="socfpga_arria10"
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_arria10_socdk_sdmmc"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DEFAULT_FDT_FILE="socfpga_arria10_socdk_sdmmc.dtb"
 CONFIG_SPL=y
+CONFIG_SPL_FPGA_SUPPORT=y
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_ASKENV=y
@@ -22,6 +24,7 @@ CONFIG_DOS_PARTITION=y
 # CONFIG_SPL_DOS_PARTITION is not set
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_DM_MMC=y
index a3f9ef01ba34fb1953022249eee38290610b418c..c0cbd72417e9ff1c4cc931b3e8651970e8a452d4 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_ARRIA5_SOCDK=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_arria5_socdk"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -40,6 +41,7 @@ CONFIG_CMD_UBI=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DFU_MMC=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 9e9f781da118484d721a105354bd6f01994ac9fc..45bed87b93879f609fe86f8f4679f43bd5b4b061 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_CYCLONE5_SOCDK=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_socdk"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -40,6 +41,7 @@ CONFIG_CMD_UBI=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DFU_MMC=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index f11570298cbab1d1967a7f8352f2861b2d4cc210..f56e45e7275f44bff82d8b54ffcf019529a6d727 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_TERASIC_DE0_NANO=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_de0_nano_soc"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -39,6 +40,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_CMD_UBI=y
 CONFIG_SPL_DM=y
 CONFIG_DFU_MMC=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 8f7e45961ec646b59cc3d350a2a18409dfd9449d..2e7a6339fb89760266a8b9ec9746f4e1d19822df 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_TERASIC_DE10_NANO=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_de10_nano"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -37,6 +38,7 @@ CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_SPL_DM=y
 CONFIG_DFU_MMC=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 7b7909cb62b30ecc43d35094d4f877ce8c85eeff..a121a07790ded80b0a0f548971a073fcd23e6f5e 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_SOCFPGA_TERASIC_DE1_SOC=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_de1_soc"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -38,6 +39,7 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_SPL_DM=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 058791e9682377cac824932949e7025f6242abc2..9b9b929e02d45332b322d5d0cbf0d29c21ce7a00 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_IS1=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_is1"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -34,6 +35,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_CMD_UBI=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 88618f8559e709c367eaa3a3cfc1b4903651775e..c7faa96f82d373cc7885f450285f178eb09c88fb 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_ARIES_MCVEVK=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_mcvevk"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -38,6 +39,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_CMD_UBI=y
 CONFIG_SPL_DM=y
 CONFIG_DFU_MMC=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 864ec5916ffb914d5f15b9244214d3d857f0579f..493048e945b45beac4d63bcdabfaf33b90ad2c4e 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_TERASIC_SOCKIT=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_sockit"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -40,6 +41,7 @@ CONFIG_CMD_UBI=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DFU_MMC=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 706ca72f93d05f05d77ee20e17e4e3b3185ef50f..a26be88b8a5270a84a841683c490ccc3b8337a0c 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_EBV_SOCRATES=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_socrates"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -41,6 +42,7 @@ CONFIG_CMD_UBI=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DFU_MMC=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 4468d3b71df13107ddff54d4dc3f3c20a2b0d19e..8ee049812f98eade98da54ef06c81363ad6be41c 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_SR1500=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_sr1500"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
 CONFIG_SYS_CONSOLE_ENV_OVERWRITE=y
@@ -40,6 +41,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_CMD_UBI=y
 CONFIG_SPL_DM=y
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_SYS_I2C_DW=y
index 21754b4c5dad070117678543c3d722483629480e..5f4c3025469cf3589e234427daf698603a4f98f6 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_SOCFPGA_SAMTEC_VINING_FPGA=y
 CONFIG_SPL_STACK_R_ADDR=0x00800000
 CONFIG_DEFAULT_DEVICE_TREE="socfpga_cyclone5_vining_fpga"
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
@@ -45,6 +46,7 @@ CONFIG_SPL_DM_SEQ_ALIAS=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_DFU_SF=y
+CONFIG_FPGA_SOCFPGA=y
 CONFIG_DM_GPIO=y
 CONFIG_DWAPB_GPIO=y
 CONFIG_LED_STATUS=y
index 5def6d5991a9c230dcce71935033534c4c370793..f0578a56d28ec55bedd378bf84ca982943e712f0 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TARGET_SOCRATES=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 56a7e4b017f982ab41be8eafd6273f87fbc04a85..d694f753fc2da4b8dd520d4d91c311c9c7d8eafa 100644 (file)
@@ -43,7 +43,6 @@ CONFIG_EFI_PARTITION=y
 CONFIG_OF_CONTROL=y
 CONFIG_REGMAP=y
 CONFIG_SYSCON=y
-CONFIG_SCSI=y
 CONFIG_CPU=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
@@ -54,12 +53,12 @@ CONFIG_DM_ETH=y
 CONFIG_E1000=y
 CONFIG_DM_PCI=y
 CONFIG_DM_RTC=y
+CONFIG_SCSI=y
 CONFIG_DEBUG_UART_BASE=0x3f8
 CONFIG_DEBUG_UART_CLOCK=1843200
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index 300bc08d5dd5bf4b57b6049e81a828ef5915171b..3a303a2c550d4a9bdfdac904fe06957e5c7da735 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR300=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR300"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 2d37bafa1cb241ab9af19f6fd0ebedf0733bedcb..48e37cd806b54ff2d769f16aefad7033af4b21f5 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR300=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR300,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 99a72a0cab28a9bc4640fafc26857c8e9a3cb3cb..9cef783284767e49455e7e1a1d7df114bf836d20 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR300=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR300,USBTTY"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 6b694b118275fd87bbf5d3e60e8b17766106d88f..fa6cd8f2f77f07387782d7ba166666977e06f0a9 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR300=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR300,USBTTY,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index d93f8fcf5ead57108cd806ce779eadbda00d0821..695ed2fd908130d7f40c916cf61605b0f03ec87e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR310=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR310"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index d2d25d0c342056618c19a6c8fd797e1626ac5cae..e8827a8bed495fcbf11688772b252ff22b32254f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR310=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR310,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 78a558bc425ae1252c7d8e5cc6e91a738899cd41..326fa10a10b6f440173f99e1d27f40d668b4f1f0 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR310=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR310,FLASH_PNOR"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 92d24794f9e2ef27f629b2567e9f806867ff0a4e..eb3282bb7d3e031a27ebade90fa1d0de9fec3a28 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR310=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR310,USBTTY"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 02b05f9c6ec99d1f8cf1defdc4b6bde016f9e7ca..74653f8fe619e39bf5e87652ee2dcd810867ad35 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR310=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR310,USBTTY,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index f922e8fd9fadaed4f11958b4fa3eec3e61a3ec4a..7c7dc697930042e50a5f9ff46a17baf89f2a8fe7 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR310=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR310,USBTTY,FLASH_PNOR"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index dd1798fdfe325c61fd11ec817071d69516d8274a..c206f388390739da7a32c76903671c6f0ead778c 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR320=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR320"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index cb312bfd1f7b75aa49a69732df21fc9f52c84876..b16ddd3116b325721a9429521a49ca8f9add3b2f 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR320=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR320,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 1ed8e83bc24a35f219c75ae6e673c57f3a54beb1..3d926f11cce4f5364234cb1ccdf09114a89d4397 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR320=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR320,FLASH_PNOR"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index ff897822aa7366f28515392247281c8d2148cdb8..2becc829bb94a291444f0f3307f3c4b09469ef31 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR320=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR320,USBTTY"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a346084c5802957c55fb2b45be0461590c4a5894..b055fce8167b9504dc519b2c78b3f6d47f1dd31e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR320=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR320,USBTTY,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index bc8f0e20f529a9fd6dd9eb64f407def82fc93938..2759f372def85103976fbc7dcd56f419fd8a958b 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR320=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR320,USBTTY,FLASH_PNOR"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 7b8cd06297f8e807c471e5e9e7ac51fb10bdcdb0..3c5c0e617f415f6020697edd83f105b494d6f81e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR600=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR600"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index f438575bbd05a0277a1a87f90ce56c95947a5cd8..48e5ca82328d8287651de4648aef12722ab26b58 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR600=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR600,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index ef9308c36884d250357d587aca95331813e22af1..34a308b8b7ff1d4effa73e0e3af5988775fa6f0e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR600=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR600,USBTTY"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a31fee8e9333cfe04513fa2c0dfb428b34f5d41f..ff11c9139431e2b077f123c22e89cccfbe6524ad 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_SPEAR600=y
 CONFIG_IDENT_STRING="-SPEAr"
 CONFIG_SYS_EXTRA_OPTIONS="SPEAR600,USBTTY,NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=-1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 554ac7771bec42efc2dfe7dfcdfb3922d9624c29..9384d9e8f90a7664f96c67bfc2e712d6119b84e3 100644 (file)
@@ -10,6 +10,7 @@ CONFIG_DEBUG_UART=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_BEST_MATCH=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SPL=y
 CONFIG_SYS_PROMPT="spring # "
index 4e6942f56c9e6bb46a1ab5aeb5ceb82aaf4d2b14..e29c29bc6f30a183594487c65a1aaba894a9f65c 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_IDENT_STRING="STMicroelectronics STiH410-B2260"
 CONFIG_DEFAULT_DEVICE_TREE="stih410-b2260"
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SYS_PROMPT="stih410-b2260 => "
 # CONFIG_CMD_IMLS is not set
index 751e485b4937c51ea15cf057574c678beb5e293b..f16ca3753f719c540d7fd412f6c5e3f5a0a3689a 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_STM32=y
 CONFIG_STM32F4=y
 CONFIG_TARGET_STM32F429_DISCOVERY=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index f76d3c521c5a771dbb0550bc9e9d60705494d6d5..0daadde0610cf1053c43c96c2bb0aa7028efd032 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_SYS_MALLOC_F_LEN=0xC00
 CONFIG_STM32F7=y
 CONFIG_TARGET_STM32F746_DISCO=y
 CONFIG_DEFAULT_DEVICE_TREE="stm32f746-disco"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 48989aaea6b64f63772208ed343ff4955e5b3d25..063b33ca72f80637363e5e1ddb3d1d5538942b7e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_RMOBILE=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_TARGET_STOUT=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_CMD_BOOTZ=y
index c91b8b73350b928c8fe0dadd4ff7205e651aee2a..69406966ebe63ffabdc5b256d77bddc19d4deeb8 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_STV0991=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_DEFAULT_DEVICE_TREE="stv0991"
 CONFIG_SYS_EXTRA_OPTIONS="STV0991"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 6cbda6744dd1b8968029ab881466c0008ec5ba04..4184998370cb86184693a663077335700ae41d2c 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index 93714d13c555be9f392b04ada143cb2c123ac03e..a572db2efa76f5995d9b66cc8690e6689021adcd 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 # CONFIG_SYS_THUMB_BUILD is not set
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_TAO3530=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SPL=y
 # CONFIG_SPL_EXT_SUPPORT is not set
@@ -20,6 +21,7 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
index 70d44a760b458f3127af0066bf9190ec6e8038b3..262237d75b7203e65459c4d05490f7812ebe30b2 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20-taurus"
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2067,BOARD_TAURUS"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -34,6 +35,7 @@ CONFIG_CMD_DFU=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_DHCP=y
 CONFIG_CMD_PING=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_DOS_PARTITION is not set
 CONFIG_OF_CONTROL=y
 CONFIG_OF_EMBED=y
index 294ae63f4c7ccfeaf2c1dbcd4e47bf991d65e8b9..011c8762c96e526d648d46b33af035ba0fc261ee 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_TB100=y
 CONFIG_SYS_TEXT_BASE=0x84000000
 CONFIG_SYS_CLK_FREQ=500000000
 CONFIG_DEFAULT_DEVICE_TREE="abilis_tb100"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_PROMPT="[tb100]:~# "
 # CONFIG_CMD_IMLS is not set
index 90a238cacf24b0613653ec6560c8762e5fcd613a..15531e4ac3bb36f654daf5593213fabc4d23d5ff 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_TBS2910=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_FIT=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_PRE_CONSOLE_BUFFER=y
 CONFIG_PRE_CON_BUF_ADDR=0x7c000000
index 6d1bde8492c3c2887a869cdcbab2040a8487084e..77b6c47a321c2d3b05f969d8e452e4578afc30e8 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TARGET_TEC=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-tec"
 CONFIG_FIT=y
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_SYS_PROMPT="Tegra20 (TEC) # "
 # CONFIG_CMD_IMI is not set
index 1703cee8419c80966c4857f71efa51a5cafa87a7..cf5cb720187c60def30fbb90d2098dda9b1cd345 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_HAVE_INTEL_ME=y
 CONFIG_ENABLE_MRC_CACHE=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_GENERATE_ACPI_TABLE=y
@@ -53,6 +54,7 @@ CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_MACRONIX=y
+CONFIG_SPI_FLASH_SPANSION=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_DM_ETH=y
@@ -62,7 +64,6 @@ CONFIG_DM_RTC=y
 CONFIG_SYS_NS16550=y
 CONFIG_ICH_SPI=y
 CONFIG_TIMER=y
-CONFIG_USB=y
 CONFIG_DM_USB=y
 CONFIG_USB_STORAGE=y
 CONFIG_USB_KEYBOARD=y
index ada88e76a24257cdf333cd68c09ac87749c387d9..4d079292b3947b976c1c5002f121ead28bb83b8a 100644 (file)
@@ -44,6 +44,7 @@ CONFIG_EFI_PARTITION=y
 # CONFIG_SPL_PARTITION_UUIDS is not set
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_SPL_OF_TRANSLATE=y
+CONFIG_FPGA_ALTERA=y
 CONFIG_DM_GPIO=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
index a9b5fabade593538a7da299a320cfcdf2cce1d68..d89d86017311e0def85002d11ee807ac0e152675 100644 (file)
@@ -38,6 +38,7 @@ CONFIG_EFI_PARTITION=y
 # CONFIG_PARTITION_UUIDS is not set
 # CONFIG_SPL_PARTITION_UUIDS is not set
 CONFIG_SPL_OF_TRANSLATE=y
+CONFIG_FPGA_ALTERA=y
 CONFIG_DM_GPIO=y
 # CONFIG_MMC is not set
 CONFIG_SPI_FLASH=y
index e2dc71b02c547493b28b37b3e72406ee52e71a45..e4e99beb45a037653c8174e577703bb517ab03e7 100644 (file)
@@ -16,6 +16,7 @@ CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-draco"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index a9b095ccd366cffc039b08ff12d4e1d1c95096a1..2c7a5a6d9e2d92bbbcbbc08cfa3d12bdb013073c 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_THUNDERX_88XX=y
 CONFIG_IDENT_STRING=" for Cavium Thunder CN88XX ARM v8 Multi-Core"
 CONFIG_DEFAULT_DEVICE_TREE="thunderx-88xx"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=5
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 1b127b8609267dcea5ce47f94315fc1e3836a10b..d314e50c7176eb6e4600bfc67745ae9766deb8fa 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_FAT_SUPPORT=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=1
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
index 1c6608218b0034b06e325e202db7bae6f98fc6b1..959f0799d4d1aafed8497344cee0bca0181c3f8d 100644 (file)
@@ -14,6 +14,7 @@ CONFIG_SPL_FAT_SUPPORT=y
 CONFIG_DEFAULT_DEVICE_TREE="dm8168-evm"
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_SYS_EXTRA_OPTIONS="NAND"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_VERSION_VARIABLE=y
@@ -27,8 +28,10 @@ CONFIG_SYS_MMCSD_RAW_MODE_U_BOOT_SECTOR=0x300
 CONFIG_CMD_MMC=y
 CONFIG_CMD_I2C=y
 # CONFIG_CMD_FPGA is not set
+CONFIG_CMD_GPIO=y
 # CONFIG_CMD_SETEXPR is not set
 CONFIG_CMD_EXT4_WRITE=y
+CONFIG_CMD_MTDPARTS=y
 # CONFIG_ISO_PARTITION is not set
 # CONFIG_EFI_PARTITION is not set
 CONFIG_OF_CONTROL=y
index c46bacccf33c9dd7797d44355661e088f4eb1dfb..be937998e62ad9faf0fa955623c261d0e1b215e8 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_TARGET_TINKER_RK3288=y
 CONFIG_SPL_STACK_R_ADDR=0x80000
 CONFIG_DEFAULT_DEVICE_TREE="rk3288-tinker"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SILENT_CONSOLE=y
 CONFIG_CONSOLE_MUX=y
 # CONFIG_DISPLAY_CPUINFO is not set
index d772ec5777d7eed745a29ac7c41ccab3e0093dcc..e27cd455f06485e28b4a027583194768e10c88d4 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_TITANIUM=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/barco/titanium/imximage.cfg"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 8df2fb13ced5ecc48905326334405bffa1e01a35..1873791e7964c424cfee131790646f30db8a4e3d 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_SYS_TEXT_BASE=0x4000000
 CONFIG_BOOT_INIT_FILE="board/topic/zynq/zynq-topic-miami/ps7_regs.txt"
 CONFIG_DEFAULT_DEVICE_TREE="zynq-topic-miami"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=0
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
index cddc084a051894fe38a5882de09fccb5555761b7..db859a7b0bd0a6192b9b8bc9054940a089dc3465 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_SYS_TEXT_BASE=0x4000000
 CONFIG_BOOT_INIT_FILE="board/topic/zynq/zynq-topic-miamilite/ps7_regs.txt"
 CONFIG_DEFAULT_DEVICE_TREE="zynq-topic-miamilite"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=0
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
index 101671879715082d2fd60415361a242d9fcf9b75..93e0292bd596834afa80fdd415526100194ecab5 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_SYS_TEXT_BASE=0x4000000
 CONFIG_BOOT_INIT_FILE="board/topic/zynq/zynq-topic-miamiplus/ps7_regs.txt"
 CONFIG_DEFAULT_DEVICE_TREE="zynq-topic-miamiplus"
 CONFIG_DEBUG_UART=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=0
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
index 65314df133c39bd145e74701bc793e1f415adab2..3caa1d4897e4d119cdc6afac66c8bd20a5fd39f3 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_ARCH_ATH79=y
 CONFIG_BOARD_TPLINK_WDR4300=y
 CONFIG_DEFAULT_DEVICE_TREE="tplink_wdr4300"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 CONFIG_DISPLAY_CPUINFO=y
index cd31cf39aa47dd08cb2cdfeade2d550b9ccfa9f2..4e918a875dc28e3540f069245bfde8d223eaed30 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TQMA6DL=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6dl-mba6x.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index dee295ee352c9700ff039c203311d87aa03de6a9..35b26a3bfb519316b68d3cc587a104d08964765d 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TQMA6X_SPI_BOOT=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6dl-mba6x.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index 6e8e84225e2f6acbf3194e87fe4dea5a70ac6d08..75a88747dd067e28325e152f59e8afb3438b5a9e 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TARGET_TQMA6=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6q-mba6x.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index 3ec25c82178ad6f70152fa8679f2caec6020230d..e2738097f14b8858b22e540ad1435571a1bda5d3 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TQMA6X_SPI_BOOT=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6q-mba6x.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index eb609e12a4ccc6158e175f41839f9ac050d0a107..ba5525b10ba70cf4872e826c229aefb54f3d1f8a 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_TQMA6S=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6dl-mba6x.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index f8240188493608a3ac4fbbf8cae80bdea09c013f..dac174d136ce8b389ba4bfda6daedd86f8b8ecf8 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_TQMA6X_SPI_BOOT=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6dl-mba6x.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index 4dc6b9e291e6a274319b9bb632bbbe87ea980875..8cde18baee814d14d163fe4147f3536e2f696496 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_WRU4=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6s-wru4.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index 03b99ec1b749bd86325ddd8af387d152a353089d..dc3a57206af17207a1889d30cac2104cb0607bb0 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_TRICORDER=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=0
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SPL=y
index b777e843149943caa8f073c4f3fd9b24d861920e..6e4525237df540114b3818006c2e656e68775885 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_TRICORDER=y
 CONFIG_SYS_EXTRA_OPTIONS="FLASHCARD"
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=0
 CONFIG_SILENT_CONSOLE=y
 CONFIG_SPL=y
index cb42ac559ab969245ed6eede7aaae3629b667f24..a904e4b4dd5a05077d9ff3d00d20f35972c2ece0 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TEGRA20=y
 CONFIG_TARGET_TRIMSLICE=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-trimslice"
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_CONSOLE_MUX=y
 CONFIG_SYS_STDIO_DEREGISTER=y
 CONFIG_SYS_PROMPT="Tegra20 (TrimSlice) # "
index ab4f730a3f27c9dbe12adff001a943312827385a..c155425d344b2a6c1902137f69af1aa3b068bd84 100644 (file)
@@ -3,7 +3,7 @@ CONFIG_TARGET_TS4600=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_FIT=y
-CONFIG_SYS_EXTRA_OPTIONS="ENV_IS_IN_MMC"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_ARCH_MISC_INIT=y
index 4d4aebd06fff79e80b503d0b6fa8a769655bdb22..41ff4d530f52018ccdc1016bac76f808b42cd5b8 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_MX5=y
 CONFIG_TARGET_TS4800=y
 # CONFIG_CMD_BMODE is not set
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=1
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_BOOTZ=y
index 27edf05f4eabee4d409aa20dfa985d674973b764..e88c517f30c3f511edf65f3e32ffadbd1b9f825b 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
diff --git a/configs/turris_omnia_defconfig b/configs/turris_omnia_defconfig
new file mode 100644 (file)
index 0000000..2eb3d84
--- /dev/null
@@ -0,0 +1,44 @@
+CONFIG_ARM=y
+CONFIG_ARCH_MVEBU=y
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_TARGET_TURRIS_OMNIA=y
+CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SPL_SPI_FLASH_SUPPORT=y
+CONFIG_SPL_SPI_SUPPORT=y
+CONFIG_DEFAULT_DEVICE_TREE="armada-385-turris-omnia"
+CONFIG_DEBUG_UART=y
+CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_BOOTDELAY=3
+CONFIG_SYS_CONSOLE_INFO_QUIET=y
+# CONFIG_DISPLAY_BOARDINFO is not set
+CONFIG_SPL=y
+CONFIG_SPL_I2C_SUPPORT=y
+# CONFIG_CMD_IMLS is not set
+# CONFIG_CMD_FLASH is not set
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_SPI=y
+CONFIG_CMD_I2C=y
+CONFIG_CMD_USB=y
+CONFIG_CMD_TFTPPUT=y
+CONFIG_CMD_CACHE=y
+CONFIG_CMD_TIME=y
+# CONFIG_SPL_PARTITION_UUIDS is not set
+CONFIG_SPL_OF_TRANSLATE=y
+CONFIG_MISC=y
+CONFIG_ATSHA204A=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_MV=y
+CONFIG_DEBUG_UART_BASE=0xd0012000
+CONFIG_DEBUG_UART_CLOCK=250000000
+CONFIG_DEBUG_UART_SHIFT=2
+CONFIG_SYS_NS16550=y
+CONFIG_USB=y
+CONFIG_DM_USB=y
+CONFIG_USB_EHCI_HCD=y
+CONFIG_USB_STORAGE=y
+CONFIG_WDT=y
+CONFIG_WDT_ORION=y
index c12a13d014d127176dc6b547a7b4580fd845a9e7..90de4adca86c817ddb4949af7d66ba9293c01676 100644 (file)
@@ -18,6 +18,7 @@ CONFIG_CMD_MII=y
 CONFIG_CMD_PING=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_MMC is not set
 CONFIG_MTD_NOR_FLASH=y
 # CONFIG_PCI is not set
index f7c933630b4323d6e5a27e39779d9a851d80bca0..7d80a414f7a6596e9b1991778285bd9736c0fc72 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 # CONFIG_SYS_THUMB_BUILD is not set
 CONFIG_ARCH_OMAP2PLUS=y
 CONFIG_TARGET_TWISTER=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=10
 CONFIG_SPL=y
 # CONFIG_SPL_EXT_SUPPORT is not set
index 7e52bdc91744f7edca1851874d642ce85e43b499..794e00c414d7fbb8b2326a61211509d8d019f781 100644 (file)
@@ -8,7 +8,8 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
index cad2a024a61db53029f2cffbd1f2536bcef1e050..ecc03fcaa90d98922e93d7c8e0df69a815b92095 100644 (file)
@@ -10,7 +10,7 @@ CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DISTRO_DEFAULTS=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_SPL=y
 CONFIG_SPL_ENV_SUPPORT=y
diff --git a/configs/uniphier_ld11_defconfig b/configs/uniphier_ld11_defconfig
deleted file mode 100644 (file)
index 9601dcc..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_UNIPHIER=y
-CONFIG_SYS_TEXT_BASE=0x84000000
-CONFIG_SYS_MALLOC_F_LEN=0x2000
-CONFIG_SPL_SERIAL_SUPPORT=y
-CONFIG_ARCH_UNIPHIER_LD11_SINGLE=y
-CONFIG_MICRO_SUPPORT_CARD=y
-CONFIG_DEFAULT_DEVICE_TREE="uniphier-ld11-ref"
-# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
-CONFIG_SPL=y
-CONFIG_SPL_NOR_SUPPORT=y
-CONFIG_HUSH_PARSER=y
-CONFIG_CMD_CONFIG=y
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-CONFIG_CMD_GPT=y
-CONFIG_CMD_MMC=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_USB=y
-# CONFIG_CMD_FPGA is not set
-CONFIG_CMD_GPIO=y
-CONFIG_CMD_TFTPPUT=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_TIME=y
-# CONFIG_CMD_MISC is not set
-CONFIG_CMD_FAT=y
-# CONFIG_SPL_DOS_PARTITION is not set
-# CONFIG_SPL_EFI_PARTITION is not set
-CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_GPIO_UNIPHIER=y
-CONFIG_MISC=y
-CONFIG_I2C_EEPROM=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_SDMA=y
-CONFIG_MMC_SDHCI_CADENCE=y
-CONFIG_USB=y
-CONFIG_USB_EHCI_HCD=y
-CONFIG_USB_EHCI_GENERIC=y
-CONFIG_USB_STORAGE=y
diff --git a/configs/uniphier_ld20_defconfig b/configs/uniphier_ld20_defconfig
deleted file mode 100644 (file)
index b5255a6..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-CONFIG_ARM=y
-CONFIG_ARCH_UNIPHIER=y
-CONFIG_SYS_TEXT_BASE=0x84000000
-CONFIG_SYS_MALLOC_F_LEN=0x2000
-CONFIG_SPL_SERIAL_SUPPORT=y
-CONFIG_ARCH_UNIPHIER_LD20_SINGLE=y
-CONFIG_MICRO_SUPPORT_CARD=y
-CONFIG_DEFAULT_DEVICE_TREE="uniphier-ld20-ref"
-# CONFIG_ARCH_FIXUP_FDT_MEMORY is not set
-CONFIG_SPL=y
-CONFIG_SPL_NOR_SUPPORT=y
-CONFIG_HUSH_PARSER=y
-CONFIG_CMD_CONFIG=y
-# CONFIG_CMD_XIMG is not set
-# CONFIG_CMD_ENV_EXISTS is not set
-CONFIG_CMD_GPT=y
-CONFIG_CMD_MMC=y
-CONFIG_CMD_I2C=y
-CONFIG_CMD_USB=y
-# CONFIG_CMD_FPGA is not set
-CONFIG_CMD_GPIO=y
-CONFIG_CMD_TFTPPUT=y
-CONFIG_CMD_PING=y
-CONFIG_CMD_CACHE=y
-CONFIG_CMD_TIME=y
-# CONFIG_CMD_MISC is not set
-CONFIG_CMD_FAT=y
-# CONFIG_SPL_DOS_PARTITION is not set
-# CONFIG_SPL_EFI_PARTITION is not set
-CONFIG_NET_RANDOM_ETHADDR=y
-CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_GPIO_UNIPHIER=y
-CONFIG_MISC=y
-CONFIG_I2C_EEPROM=y
-CONFIG_MMC_UNIPHIER=y
-CONFIG_MMC_SDHCI=y
-CONFIG_MMC_SDHCI_CADENCE=y
-CONFIG_USB=y
-CONFIG_USB_XHCI_HCD=y
-CONFIG_USB_STORAGE=y
index 268543272c3cd0e680868760e1323d0a7269b21d..c3b1234094784d836d7b56a1017b49c327ec884b 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_NET_RANDOM_ETHADDR=y
index a00e5833a405adaeecc6ed5cddff26786fcb55c2..72bd99a4221c2a853854ad4332109c52719250f7 100644 (file)
@@ -28,6 +28,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_NET_RANDOM_ETHADDR=y
index d4af18a0b697193b07d4bfa618a552a5d1e69d6c..a409872ac0e8606fd45127c097014e94ed8bd0c2 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_NET_RANDOM_ETHADDR=y
index 0f810ee32e8248d0b666079091af1e1871d233b3..b9d89efb68e2ef9fe4d9eb089a4afb4df3f6e835 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
 # CONFIG_SPL_DOS_PARTITION is not set
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_NET_RANDOM_ETHADDR=y
index 73bdaa872949444b39d257081bbf6cfc9b99f39a..d71b8b7a1d743f1f49f054f56b1660ee55bfd71c 100644 (file)
@@ -23,6 +23,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_FAT=y
+CONFIG_CMD_FS_GENERIC=y
 CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_GPIO_UNIPHIER=y
 CONFIG_MISC=y
index 7a8005b6db704c56ddc77544996a64ad2d423cac..edadef38eb53385a3c5fd0d478ec87dee51ebf9e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_USB_A9263=y
 CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9263,SYS_USE_DATAFLASH"
+CONFIG_ENV_IS_IN_DATAFLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index a71a75751f1ce435b4b41e1b021422031b3b87de..4ae7045e8f1b78b06ca3dac217fe3fa8ec59cb87 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX5=y
 CONFIG_TARGET_USBARMORY=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_CMD_IMLS is not set
 CONFIG_CMD_MEMTEST=y
 CONFIG_CMD_MMC=y
index f8b9d7e61b1af6254700db507c56ef475ce42b37..dbb4bcfa778eb6e7c4cd72f54db523d29720eb46 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PLATINUM=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
index 5d4cccccba1cd115ee7372ba58fbd080ff0b371f..4c1615c537d17f6b9381ddf1182026b9b7ff04c9 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PLATINUM=y
 CONFIG_VCT_ONENAND=y
+CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
@@ -17,6 +18,7 @@ CONFIG_CMD_SNTP=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
index 5a5edd826000f0c723ecdcf4340a14b8b6bf511d..20c0863b7b51fd9ac86984b4f69fa7e293c70870 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_VCT=y
 CONFIG_VCT_PLATINUM=y
 CONFIG_VCT_ONENAND=y
 CONFIG_VCT_SMALL_IMAGE=y
+CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
@@ -22,5 +23,6 @@ CONFIG_SYS_PROMPT="$ "
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_ISO_PARTITION is not set
 CONFIG_SYS_NS16550=y
index 2b49d4c9a09a2110477973b4de30153c75683d96..72f53e09a1f59979cf0d8f9e3ffe987074755ccc 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PLATINUM=y
 CONFIG_VCT_SMALL_IMAGE=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
index 5efe2236a3638bdbf1904c0831bce4785227c5b0..b8a6fba415cc151f53c1193b05c82903c859ca99 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PLATINUMAVC=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="VCT# "
index 1f0a3f8b49a4d7f35ff77b6243274bd8305202ab..dfb8f04ce786b9a5416f4c99eb94984dd1cdd3c5 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PLATINUMAVC=y
 CONFIG_VCT_ONENAND=y
+CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
@@ -15,5 +16,6 @@ CONFIG_CMD_DHCP=y
 # CONFIG_CMD_NFS is not set
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_ISO_PARTITION is not set
 CONFIG_SYS_NS16550=y
index 9e2fcbf6d0250c23482740ee5737b5a2248f8d5e..de7b500f806097017660255d7218a82aa78a554e 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_VCT=y
 CONFIG_VCT_PLATINUMAVC=y
 CONFIG_VCT_ONENAND=y
 CONFIG_VCT_SMALL_IMAGE=y
+CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
@@ -22,5 +23,6 @@ CONFIG_SYS_PROMPT="$ "
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_ISO_PARTITION is not set
 CONFIG_SYS_NS16550=y
index 1b5c125893b8031513de7bdb40bca529e1452e02..0e3df63a4d9464667a849460d008202776afa4b8 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PLATINUMAVC=y
 CONFIG_VCT_SMALL_IMAGE=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
index 24f776b49f44a573aeedc0256327d5714c3bcf80..06b6c000849d12727ea81a0c1f2e38237b873d7f 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PREMIUM=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
index ac9cf36f685938bf488ddd87e4923d6f02c7c57c..ba43e0e00a2c62083aee265fcea1b1461363e617 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PREMIUM=y
 CONFIG_VCT_ONENAND=y
+CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
@@ -17,6 +18,7 @@ CONFIG_CMD_SNTP=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 CONFIG_SYS_NS16550=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
index 6e649ec0d7b75f00acb2f481859187993e8c73ce..cc9998f391a6e7b9e0550ad99b8dc81355058aad 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_VCT=y
 CONFIG_VCT_PREMIUM=y
 CONFIG_VCT_ONENAND=y
 CONFIG_VCT_SMALL_IMAGE=y
+CONFIG_ENV_IS_IN_ONENAND=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
@@ -22,5 +23,6 @@ CONFIG_SYS_PROMPT="$ "
 # CONFIG_CMD_MISC is not set
 CONFIG_CMD_JFFS2=y
 CONFIG_CMD_UBI=y
+# CONFIG_CMD_UBIFS is not set
 # CONFIG_ISO_PARTITION is not set
 CONFIG_SYS_NS16550=y
index 276650dbe1b770b276c9062f5bf1808233c462d2..c26fb719e28004c41c84090477144aef14538d1b 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_MIPS=y
 CONFIG_TARGET_VCT=y
 CONFIG_VCT_PREMIUM=y
 CONFIG_VCT_SMALL_IMAGE=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_SYS_PROMPT="$ "
index 2fdf77d80bade810bd03a5d4814ac40829eee651..0a315515c9eeb21abcedf2ce0ad4f53f0a6e70d3 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_VE8313=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index 5b88b2070693de7052b769aafac98ea84da940c4..baefcd0e8d9a02d0936f2b4fda2ce534e98d9fb2 100644 (file)
@@ -4,6 +4,7 @@ CONFIG_TEGRA20=y
 CONFIG_TARGET_VENTANA=y
 CONFIG_DEFAULT_DEVICE_TREE="tegra20-ventana"
 CONFIG_OF_SYSTEM_SETUP=y
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_SYS_PROMPT="Tegra20 (Ventana) # "
 # CONFIG_CMD_IMI is not set
 # CONFIG_CMD_IMLS is not set
index c06b9893666664b82eefe12cfd055b8f558e68ab..60eea037b5ef38f1f050295fb815e817febb03c3 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_VEXPRESS64_BASE_FVP_DRAM=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_IDENT_STRING=" vexpress_aemv8a"
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index b2e3098fc49af25a254dcce66cbf1174938c8863..d7414d44d8728dfc6ee816835977b37920f93fdd 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_VEXPRESS64_JUNO=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_IDENT_STRING=" vexpress_aemv8a"
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index 33639f2f8cff02c55bab9960a5ea7cc1f87c255a..b92e87fd2c34a4e648e41410103c41d38d83e1de 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_TARGET_VEXPRESS64_BASE_FVP=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
 CONFIG_IDENT_STRING=" vexpress_aemv8a"
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=1
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
index ba489ea1d1e0a55c72692a4c2c93887d4a8b9f11..3dfe2e82eda4e95ce9bfc260fe4996d92192fb44 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_TARGET_VEXPRESS_CA15_TC2=y
 CONFIG_DISTRO_DEFAULTS=y
 CONFIG_OF_BOARD_SETUP=y
+CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_CONSOLE is not set
index fb671419c55f6d19dd7ad794c328dbb40ec95ccc..507290bb69d46a4aa2e32b40b0b2f2b97dd2bce8 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_VEXPRESS_CA5X2=y
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_CONSOLE is not set
index 7b845c6c79843f99b04bc64d80d2e13d6a53b494..851f034478d1f1255724a919448b11081d501df0 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_ARM=y
 CONFIG_TARGET_VEXPRESS_CA9X4=y
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 # CONFIG_CMD_CONSOLE is not set
index 47193094dd05b0d6c5bf54154c9344427b92acdf..8d75b580e0745e82b4c1d7196e73f5ed95f79838 100644 (file)
@@ -1,7 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_VF610=y
 CONFIG_DEFAULT_DEVICE_TREE="vf610-twr"
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg,ENV_IS_IN_MMC"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index f1dc19a543ab185289b60b3c586631c0734299d6..fc4dd89f776c4e8f2677b79b5c3676b43a7eb29d 100644 (file)
@@ -1,7 +1,8 @@
 CONFIG_ARM=y
 CONFIG_ARCH_VF610=y
 CONFIG_DEFAULT_DEVICE_TREE="vf610-twr"
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg,ENV_IS_IN_NAND"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/freescale/vf610twr/imximage.cfg"
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
index c8da54d9b683c36aa814617b119c9a394909d18b..cb2040e50ffac72217d0d865ca88f76e074a12b4 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_AT91=y
 CONFIG_TARGET_VINCO=y
 CONFIG_SYS_EXTRA_OPTIONS="SAMA5D4,SYS_USE_SERIALFLASH"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
index c27a44744a41214f8f163b7189d1238b570a38fe..244dc7e34f7b08d4e4fde6d49087a4a7f44c0ff1 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_MPC83xx=y
 CONFIG_TARGET_VME8349=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=6
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_I2C=y
index 95a14cabc7f4bfd90d52f9be2a92de9c9a3982e6..68916a4230b11265e5882cf9df397da7637e2039 100644 (file)
@@ -11,7 +11,8 @@ CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_VIDEO=y
 CONFIG_CMD_HDMIDETECT=y
 CONFIG_DISTRO_DEFAULTS=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6QDL"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6QDL"
+CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE=y
index e29afe7b4a112a298bd6ebe09ccd90db192ee4f2..c99ad88153b88ed7dad73c0447f000fdfe6ad914 100644 (file)
@@ -3,6 +3,7 @@ CONFIG_ARCH_MX6=y
 CONFIG_TARGET_WARP=y
 # CONFIG_CMD_BMODE is not set
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/warp/imximage.cfg,MX6SL"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_BOARD_EARLY_INIT_F=y
 CONFIG_HUSH_PARSER=y
@@ -10,6 +11,7 @@ CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMLS is not set
 # CONFIG_CMD_FLASH is not set
 CONFIG_CMD_MMC=y
+CONFIG_CMD_PART=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_DFU=y
index 53a97078b3f18bd051e16c24d17b06060a315ea8..f01b3b47da04d101872e6e48bb4b1f821afa35cf 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_ARM=y
 CONFIG_TARGET_WOODBURN=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
@@ -17,6 +18,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_EFI_PARTITION=y
 # CONFIG_PARTITION_UUIDS is not set
 CONFIG_MTD_NOR_FLASH=y
index 22172c57b387c5033a524f5e13e1725964219652..996247b9187d45575843d354fbe72fa3aa700a9b 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/woodburn/imximage.cfg"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
@@ -27,6 +28,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_DATE=y
 CONFIG_CMD_EXT2=y
 CONFIG_CMD_FAT=y
+CONFIG_CMD_MTDPARTS=y
 CONFIG_EFI_PARTITION=y
 # CONFIG_PARTITION_UUIDS is not set
 # CONFIG_SPL_PARTITION_UUIDS is not set
index 06b31baeea3c1cab341b665984798af7bb244278..816aec112012d3ca121fa425095ccd80c88793eb 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
 CONFIG_CMD_HD44760=y
+CONFIG_ENV_IS_IN_NAND=y
 CONFIG_BOOTDELAY=3
 CONFIG_VERSION_VARIABLE=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 2e5d5f1ae852a0c3b3aa86f57053f189f5730574..d7666146b67f8f329227bb4373863f70dde1a70b 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_IDENT_STRING="-SPEAr"
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 # CONFIG_DISPLAY_BOARDINFO is not set
index 398d32f701a7d26a4caf1993e353f35b370c8997..5a49db280b0eeb9f37e52cb7836bf9fd8b355980 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_VIDEO=y
+CONFIG_ENV_IS_NOWHERE=y
 CONFIG_BOOTDELAY=3
 # CONFIG_CONSOLE_MUX is not set
 CONFIG_SYS_CONSOLE_IS_IN_ENV=y
index 578db22e4143d6dcfd95a2b61c6241027bba84c2..992a6f1b75ba3cd26ca13ba1c4e4dc3014cb9276 100644 (file)
@@ -11,6 +11,7 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_IN_FAT=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 9daaa06c73868cebf76c2f38e30df0fe968046ad..8c4931f20df00fd8dd8407add0cd9495fdc81da6 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_IN_FAT=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 3ac743bedb7dfc6633b2fdd8e23beedd12eea768..89b5215ff56bb86f012787c887a184e25fbd1749 100644 (file)
@@ -13,6 +13,7 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 0f9e4b24fe0d665cf2cc52776da328f2d0b23e82..8d0752a275426af665afcdbcabf1cd7c5faa5da7 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_IN_FAT=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 463a9c7aee52e885936d072796aaa9d28ba55339..17101394e7823ac28ae38756d5772082f5eac52e 100644 (file)
@@ -9,6 +9,7 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_IN_FAT=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 4f1524b1491ccd2b561e41a23f54eee5e3bfff58..4d0f73f782eaaaee40be83ad902f3235d79eb6fe 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_IN_FAT=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index 4b944cb6e1b21948461334b01092877f74e678c1..bc9b14e2fbaf60f3b763da5821c5f20704b7d173 100644 (file)
@@ -12,6 +12,7 @@ CONFIG_DISTRO_DEFAULTS=y
 CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SPL_LOAD_FIT=y
+CONFIG_ENV_IS_IN_FAT=y
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_SPL=y
index cad0d239e9a42ef5a30e092afb9bfd82d1fb3406..63ce8b23932e7bb9710d4dae352e2a6970685614 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_OF_BOARD_SETUP=y
 CONFIG_OF_STDOUT_VIA_ALIAS=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=3
 CONFIG_HUSH_PARSER=y
 CONFIG_CMD_ASKENV=y
index 5b8c4eeb6d826bc51ff2c5c2b6b2b797bc65f1fa..1954815bcc6758094af6988c93215a2e23e2f0fc 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_MX6=y
 CONFIG_TARGET_XPRESS=y
 CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=board/ccv/xpress/imximage.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 6f4f4bffb9993b938b25316e1e67cd629cf0fa95..99917256897b7f899b5575469b4113fff77b626e 100644 (file)
@@ -8,7 +8,8 @@ CONFIG_SPL_MMC_SUPPORT=y
 CONFIG_SPL_SERIAL_SUPPORT=y
 CONFIG_SPL_LIBDISK_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_BOARD_EARLY_INIT_F=y
index 9f85d63965ad41294183ff02ca561030646c1528..e52e62b201561afcddc6e351dd9599340c73b5a2 100644 (file)
@@ -1,6 +1,7 @@
 CONFIG_XTENSA=y
 CONFIG_SYS_CPU="dc233c"
 CONFIG_XTFPGA_KC705=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=10
 CONFIG_VERSION_VARIABLE=y
 CONFIG_SYS_PROMPT="U-Boot> "
index a2e01e613229c8ddb4ea0e727309825607a00119..d61ed777be4bdbe66028bb48bd5c33e2234c3ad0 100644 (file)
@@ -11,7 +11,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_DISTRO_DEFAULTS=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6Q"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6q-zc5202.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index e28652b21cfdf2e68c3dc761de5e83c68203a8a2..8b7b4a976e99d80d60593033089ab66aab8de5b7 100644 (file)
@@ -11,7 +11,8 @@ CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_SPL_WATCHDOG_SUPPORT=y
 CONFIG_DISTRO_DEFAULTS=y
-CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/imx-common/spl_sd.cfg,MX6Q"
+CONFIG_SYS_EXTRA_OPTIONS="IMX_CONFIG=arch/arm/mach-imx/spl_sd.cfg,MX6Q"
+CONFIG_ENV_IS_IN_MMC=y
 CONFIG_BOOTDELAY=3
 CONFIG_DEFAULT_FDT_FILE="imx6q-zc5601.dtb"
 CONFIG_BOARD_EARLY_INIT_F=y
index 0b38f2b1afcb125e404820b7a19ea42d6e40127d..6da257c67113929a8e38e686d0795fc6c403663a 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_ARM=y
 CONFIG_TARGET_ZIPITZ2=y
+CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_CONSOLE_MUX is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_HUSH_PARSER=y
index 7a939036d92002b61cb936ed054f249f4cdf54cf..9515091ec559d948765d9c8547c48e09098dd743 100644 (file)
@@ -1,5 +1,6 @@
 CONFIG_ARM=y
 CONFIG_TARGET_ZMX25=y
+CONFIG_ENV_IS_IN_FLASH=y
 CONFIG_BOOTDELAY=5
 # CONFIG_DISPLAY_CPUINFO is not set
 # CONFIG_DISPLAY_BOARDINFO is not set
@@ -20,3 +21,4 @@ CONFIG_MTD_NOR_FLASH=y
 CONFIG_USB=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_USB_STORAGE=y
+CONFIG_LZO=y
index 2d7fffc1f4fd073693bfce0d3ddec64a6a070e36..ec8eafb4dbd6425f87fc259b62ad94c9922554fd 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-microzed"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index 7ca69a973cc70faa5e2a892613ad45e57a28ba94..f5155b2678e8fda7eb8e0e1e49c88885a61dc18e 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_ARCH_ZYNQ=y
 CONFIG_SYS_TEXT_BASE=0x4000000
 CONFIG_DEFAULT_DEVICE_TREE="zynq-picozed"
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index 8f20b09244ca36955128e58dcfd73b66302ea392..b850af923b875c32bec13efc49bb30207060a213 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index 825346abd67ee6fc248e108b81dfc6d1e3510510..35722e9952f37166b39d0ae9a2c5444f957abc30 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-zc706"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index a1ef49f25078858489417bc5475b80a659e5d3ff..9023b2e324f60c6080ea680bfa792d6a4a11bcbb 100644 (file)
@@ -6,6 +6,7 @@ CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM010"
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index 148f70360bf3f0cd2183a0aea76b39ec3a588910..581998c65ee99702397bff87027224fe1c309758 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM011"
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index 943efdb141c6e86d2e8c0fc2e386c14bfea39cf1..4cf15d5c6734bb21f99c3f89af3e3e96c9267bf2 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM012"
+CONFIG_ENV_IS_IN_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index 5c029109e2b1e7af5975e0f5d0f12a6faa7001eb..ed016ddc8f39a478ce5a2f4dd086802b5135dbc5 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
 CONFIG_SYS_EXTRA_OPTIONS="ZC770_XM013"
+CONFIG_ENV_IS_NOWHERE=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index 2887ca4167b2bd96640e21f98ff4347ed044eba9..762d475de64b31011da199556a2da694fb35c2a8 100644 (file)
@@ -5,6 +5,7 @@ CONFIG_DEFAULT_DEVICE_TREE="zynq-zed"
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index f3f89cb5e4f948931d26b8e382f0810e9b442e5b..439236139e406d2f3d753bede31fa723d900bcf7 100644 (file)
@@ -7,6 +7,7 @@ CONFIG_DEBUG_UART=y
 CONFIG_FIT=y
 CONFIG_FIT_SIGNATURE=y
 CONFIG_FIT_VERBOSE=y
+CONFIG_ENV_IS_IN_SPI_FLASH=y
 # CONFIG_DISPLAY_CPUINFO is not set
 CONFIG_SPL=y
 CONFIG_SPL_OS_BOOT=y
index 7e713875763e4a5a86e4934c7c33bb7c4b406efd..29cc6619eaba7a5caaee80709f04897a6030ceca 100644 (file)
@@ -20,5 +20,3 @@ Freescale esdhc-specific options
        - CONFIG_SYS_FSL_ESDHC_BE
                ESDHC IP is in big-endian mode. Accessing ESDHC registers can be determined
                by ESDHC IP's endian mode or processor's endian mode.
-
-       - CONFIG_SYS_FSL_ESDHC_FORCE_VSELECT forces to run at 1.8V.
index 27d335456997a702ff072f870e7e97fc5d91c74a..803682f5580dd90c18bbffe846f578b53a9b7443 100644 (file)
@@ -71,7 +71,7 @@ Configuration command line syntax:
                                        value shall be set to one of the
                                        values found in the file:
                                                arch/arm/include/asm/\
-                                               imx-common/imximage.cfg
+                                               mach-imx/imximage.cfg
                                Example:
                                BOOT_OFFSET FLASH_OFFSET_STANDARD
 
diff --git a/doc/README.marvell b/doc/README.marvell
new file mode 100644 (file)
index 0000000..3364617
--- /dev/null
@@ -0,0 +1,53 @@
+Marvell U-Boot Build Instructions
+=================================
+
+This document describes how to compile the U-Boot and how to change U-Boot configuration
+
+Build Procedure
+----------------
+1. Install required packages:
+
+               # sudo apt-get install libssl-dev
+               # sudo apt-get install device-tree-compiler
+               # sudo apt-get install swig libpython-dev
+
+2. Set the cross compiler:
+
+               # export CROSS_COMPILE=/path/to/toolchain/aarch64-marvell-linux-gnu-
+
+3. Clean-up old residuals:
+
+               # make mrproper
+
+4. Configure the U-Boot:
+
+               # make <defconfig_file>
+
+       - For the Armada-70x0/80x0 DB board use "mvebu_db_armada8k_defconfig"
+       - For the Armada-80x0 MacchiatoBin use "make mvebu_mcbin-88f8040_defconfig"
+       - For the Armada-3700 DB board use "make mvebu_db-88f3720_defconfig"
+       - For the Armada-3700 EsspressoBin use "make mvebu_espressobin-88f3720_defconfig"
+
+5. Configure the device-tree and build the U-Boot image:
+
+       Compile u-boot and set the required device-tree using:
+
+               # make DEVICE_TREE=<name>
+
+       NOTE:
+       Compilation with "mvebu_db_armada8k_defconfig" requires explicitly exporting DEVICE_TREE
+       for the requested board.
+       By default, u-boot is compiled with armada-8040-db device-tree.
+        Using A80x0 device-tree on A70x0 might break the device.
+        In order to prevent this, the required device-tree MUST be set during compilation.
+        All device-tree files are located in ./arch/arm/dts/ folder.
+
+       NOTE:
+       The u-boot.bin should not be used as a stand-alone image.
+       The ARM Trusted Firmware (ATF) build process uses this image to generate the
+       flash image.
+
+Configuration update
+---------------------
+       To update the U-Boot configuration, please refer to doc/README.kconfig
+
index f79659c9cabdef273609b2f1afa95a541559cc09..f21c9d09ce3ee72570d7d7c8796372b333ea4a30 100644 (file)
@@ -5,7 +5,7 @@ U-Boot for UniPhier SoC family
 Recommended toolchains
 ----------------------
 
-The UniPhir platform is well tested with Linaro toolchanis.
+The UniPhier platform is well tested with Linaro toolchains.
 You can download pre-built toolchains from:
 
     http://www.linaro.org/downloads/
@@ -14,97 +14,97 @@ You can download pre-built toolchains from:
 Compile the source
 ------------------
 
-sLD3 reference board:
-    $ make uniphier_sld3_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf-
+The source can be configured and built with the following commands:
 
-LD4 reference board:
-    $ make uniphier_ld4_sld8_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf-
+    $ make <defconfig>
+    $ make CROSS_COMPILE=<toolchain-prefix> DEVICE_TREE=<device-tree>
 
-sLD8 reference board:
-    $ make uniphier_ld4_sld8_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-sld8-ref
+The recommended <toolchain-prefix> is `arm-linux-gnueabihf-` for 32bit SoCs,
+`aarch64-linux-gnu-` for 64bit SoCs, but you may wish to change it to use your
+favorite compiler.
 
-Pro4 reference board:
-    $ make uniphier_pro4_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf-
+The following tables show <defconfig> and <device-tree> for each board.
 
-Pro4 Ace board:
-    $ make uniphier_pro4_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-pro4-ace
+32bit SoC boards:
 
-Pro4 Sanji board:
-    $ make uniphier_pro4_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-pro4-sanji
+ Board         | <defconfig>                  | <device-tree>
+---------------|------------------------------|------------------------------
+sLD3 reference | uniphier_sld3_defconfig      | uniphier-sld3-ref (default)
+LD4 reference  | uniphier_ld4_sld8_defconfig  | uniphier-ld4-ref (default)
+sld8 reference | uniphier_ld4_sld8_defconfig  | uniphier-sld8-def
+Pro4 reference | uniphier_pro4_defconfig      | uniphier-pro4-ref (default)
+Pro4 Ace       | uniphier_pro4_defconfig      | uniphier-pro4-ace
+Pro4 Sanji     | uniphier_pro4_defconfig      | uniphier-pro4-sanji
+Pro5 4KBOX     | uniphier_pxs2_ld6b_defconfig | uniphier-pro5-4kbox
+PXs2 Gentil    | uniphier_pxs2_ld6b_defconfig | uniphier-pxs2-gentil
+PXs2 Vodka     | uniphier_pxs2_ld6b_defconfig | uniphier-pxs2-vodka (default)
+LD6b reference | uniphier_pxs2_ld6b_defconfig | uniphier-ld6b-ref
 
-Pro5 4KBOX Board:
-    $ make uniphier_pxs2_ld6b_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-pro5-4kbox
+64bit SoC boards:
 
-PXs2 Gentil board:
-    $ make uniphier_pxs2_ld6b_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-pxs2-gentil
+ Board         | <defconfig>           | <device-tree>
+---------------|-----------------------|----------------------------
+LD11 reference | uniphier_v8_defconfig | uniphier-ld11-ref
+LD11 Global    | uniphier_v8_defconfig | uniphier-ld11-global
+LD20 reference | uniphier_v8_defconfig | uniphier-ld20-ref (default)
+LD20 Global    | uniphier_v8_defconfig | uniphier-ld20-global
 
-PXs2 Vodka board:
-    $ make uniphier_pxs2_ld6b_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf-
+For example, to compile the source for PXs2 Vodka board, run the following:
 
-LD6b reference board:
     $ make uniphier_pxs2_ld6b_defconfig
-    $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-ld6b-ref
+    $ make CROSS_COMPILE=arm-linux-gnueabihf- DEVICE_TREE=uniphier-pxs2-vodka
 
-LD11 reference board:
-    $ make uniphier_ld11_defconfig
-    $ make CROSS_COMPILE=aarch64-linux-gnu-
+The device tree marked as (default) can be omitted.  `uniphier-pxs2-vodka` is
+the default device tree for the configuration `uniphier_pxs2_ld6b_defconfig`,
+so the following gives the same result.
 
-LD20 reference board:
-    $ make uniphier_ld20_defconfig
-    $ make CROSS_COMPILE=aarch64-linux-gnu-
-
-PXs3 reference board:
-    $ make uniphier_v8_defconfig
-    $ make CROSS_COMPILE=aarch64-linux-gnu- DEVICE_TREE=uniphier-pxs3-ref
+    $ make uniphier_pxs2_ld6b_defconfig
+    $ make CROSS_COMPILE=arm-linux-gnueabihf-
 
-You may wish to change the "CROSS_COMPILE=..." to use your favorite compiler.
 
+Booting 32bit SoC boards
+------------------------
 
-Burn U-Boot images to NAND
---------------------------
+The build command will generate the following:
+- u-boot.bin
+- spl/u-boot.bin
 
-Write the following to the NAND device:
+U-Boot can boot UniPhier 32bit SoC boards by itself.  Flash the generated images
+to the storage device (NAND or eMMC) on your board.
 
  - spl/u-boot-spl.bin at the offset address 0x00000000
  - u-boot.bin         at the offset address 0x00020000
 
-or
+The `u-boot-with-spl.bin` is the concatenation of the two (with appropriate
+padding), so you can also do:
 
  - u-boot-with-spl.bin at the offset address 0x00000000
 
 If a TFTP server is available, the images can be easily updated.
 Just copy the u-boot-spl.bin and u-boot.bin to the TFTP public directory,
-and then run the following command at the U-Boot command line:
+and run the following command at the U-Boot command line:
 
-  => run nandupdate
+To update the images in NAND:
 
+    => run nandupdate
 
-Burn U-Boot images to eMMC
---------------------------
+To update the images in eMMC:
 
-Write the following to the Boot partition 1 of the eMMC device:
+    => run emmcupdate
 
- - spl/u-boot-spl.bin at the offset address 0x00000000
- - u-boot.bin         at the offset address 0x00020000
 
-or
+Booting 64bit SoC boards
+------------------------
 
- - u-boot-with-spl.bin at the offset address 0x00000000
+The build command will generate the following:
+- u-boot.bin
 
-If a TFTP server is available, the images can be easily updated.
-Just copy the u-boot-spl.bin and u-boot.bin to the TFTP public directory,
-and then run the following command at the U-Boot command line:
+However, U-Boot is not the first stage loader for UniPhier 64bit SoC boards.
+U-Boot serves as a non-secure boot loader loaded by [ARM Trusted Firmware],
+so you need to provide the `u-boot.bin` to the build command of ARM Trusted
+Firmware.
 
-  => run emmcupdate
+[ARM Trusted Firmware]: https://github.com/ARM-software/arm-trusted-firmware
 
 
 UniPhier specific commands
@@ -179,4 +179,4 @@ newer SoCs.  Even if it is, EA[25] is not connected on most of the boards.
 
 --
 Masahiro Yamada <yamada.masahiro@socionext.com>
-Jan. 2017
+Jul. 2017
index c69dc1c511341501d3a3e5c5ae904c2ee2e10fcb..8025485cf1311f41cc254e49c1fb407841285e8e 100644 (file)
@@ -18,6 +18,8 @@ U-Boot supports running as a coreboot [1] payload on x86. So far only Link
 work with minimal adjustments on other x86 boards since coreboot deals with
 most of the low-level details.
 
+U-Boot is a main bootloader on Intel Edison board.
+
 U-Boot also supports booting directly from x86 reset vector, without coreboot.
 In this case, known as bare mode, from the fact that it runs on the
 'bare metal', U-Boot acts like a BIOS replacement. The following platforms
@@ -61,6 +63,16 @@ Change the 'Board configuration file' and 'Board Device Tree Source (dts) file'
 to point to a new board. You can also change the Cache-As-RAM (CAR) related
 settings here if the default values do not fit your new board.
 
+Build Instructions for U-Boot as main bootloader
+------------------------------------------------
+
+Intel Edison instructions:
+
+Simple you can build U-Boot and obtain u-boot.bin
+
+$ make edison_defconfig
+$ make all
+
 Build Instructions for U-Boot as BIOS replacement (bare mode)
 -------------------------------------------------------------
 Building a ROM version of U-Boot (hereafter referred to as u-boot.rom) is a
@@ -455,6 +467,33 @@ Here the kernel (bzImage) is loaded to 01000000 and initrd is to 04000000. Then,
 
 => zboot 01000000 - 04000000 1b1ab50
 
+Updating U-Boot on Edison
+-------------------------
+By default Intel Edison boards are shipped with preinstalled heavily
+patched U-Boot v2014.04. Though it supports DFU which we may be able to
+use.
+
+1. Prepare u-boot.bin as described in chapter above. You still need one
+more step (if and only if you have original U-Boot), i.e. run the
+following command:
+
+$ truncate -s %4096 u-boot.bin
+
+2. Run your board and interrupt booting to U-Boot console. In the console
+call:
+
+ => run do_force_flash_os
+
+3. Wait for few seconds, it will prepare environment variable and runs
+DFU. Run DFU command from the host system:
+
+$ dfu-util -v -d 8087:0a99 --alt u-boot0 -D u-boot.bin
+
+4. Return to U-Boot console and following hint. i.e. push Ctrl+C, and
+reset the board:
+
+ => reset
+
 CPU Microcode
 -------------
 Modern CPUs usually require a special bit stream called microcode [8] to be
index 3d1392c7640f6f7b7323462d3f70cf4865f55104..99f76d515fbe587ae6c33fd885cf20023a5bea07 100644 (file)
@@ -40,12 +40,19 @@ Example:
                pinctrl-names = "default";
                status = "okay";
 
-               mr-nbanks = <1>;
                /* sdram memory configuration from sdram datasheet */
-       bank1: bank@0 {
-              st,sdram-control = /bits/ 8 <NO_COL_8 NO_ROW_12 MWIDTH_16 BANKS_2
+               bank1: bank@0 {
+                      st,sdram-control = /bits/ 8 <NO_COL_8 NO_ROW_12 MWIDTH_16 BANKS_2
                                                CAS_3 RD_BURST_EN RD_PIPE_DL_0>;
-              st,sdram-timing = /bits/ 8 <TMRD_1 TXSR_60 TRAS_42 TRC_60 TRP_18
+                      st,sdram-timing = /bits/ 8 <TMRD_1 TXSR_60 TRAS_42 TRC_60 TRP_18
                                                TRCD_18>;
-       };
-}
+               };
+
+               /* sdram memory configuration from sdram datasheet */
+               bank2: bank@1 {
+                      st,sdram-control = /bits/ 8 <NO_COL_8 NO_ROW_12 MWIDTH_16 BANKS_2
+                                               CAS_3 RD_BURST_EN RD_PIPE_DL_0>;
+                      st,sdram-timing = /bits/ 8 <TMRD_1 TXSR_60 TRAS_42 TRC_60 TRP_18
+                                               TRCD_18>;
+               };
+       }
index afff301c88593d5318d99f2283c9a7495619da29..136d3d7078eed79a7c4e68109e955974efb8b2c8 100644 (file)
@@ -159,8 +159,8 @@ the '/images' node should have the following layout:
   Mandatory properties:
   - description : Textual description of the component sub-image
   - type : Name of component sub-image type, supported types are:
-    "standalone", "kernel", "ramdisk", "firmware", "script", "filesystem",
-    "flat_dt" and others (see uimage_type in common/image.c).
+    "standalone", "kernel", "kernel_noload", "ramdisk", "firmware", "script",
+    "filesystem", "flat_dt" and others (see uimage_type in common/image.c).
   - data : Path to the external file which contains this node's binary data.
   - compression : Compression used by included data. Supported compressions
     are "gzip" and "bzip2". If no compression is used compression property
index 8624bd86f1c654eb392f47f4bfd73aa2e8d6d7e8..e4a9cb419585cfaf83bed7df7d18718168812658 100644 (file)
@@ -48,6 +48,7 @@ obj-$(CONFIG_OMAP_USB_PHY) += usb/phy/
 obj-$(CONFIG_SPL_SATA_SUPPORT) += ata/ scsi/
 obj-$(CONFIG_SPL_USB_HOST_SUPPORT) += block/
 obj-$(CONFIG_SPL_MMC_SUPPORT) += block/
+obj-$(CONFIG_SPL_FPGA_SUPPORT) += fpga/
 endif
 
 ifdef CONFIG_TPL_BUILD
index 6da412d178cc65a3b0a0d67b2a487c2a9589abdc..606347faac049d6e07c65e98cacc65ddef90cc67 100644 (file)
@@ -1183,11 +1183,6 @@ int ahci_probe_scsi(struct udevice *ahci_dev)
        ret = ahci_start_ports(uc_priv);
        if (ret)
                return ret;
-
-       debug("Scanning %s\n", dev->name);
-       ret = scsi_scan_dev(dev, true);
-       if (ret)
-               return ret;
 #endif
 
        return 0;
index 83b63288fb9bae96337ddd74ca31888199134e83..e68d9279b96322737e14125d25d65ae029688e30 100644 (file)
@@ -65,6 +65,8 @@ int clk_get_by_index(struct udevice *dev, int index, struct clk *clk)
        debug("%s(dev=%p, index=%d, clk=%p)\n", __func__, dev, index, clk);
 
        assert(clk);
+       clk->dev = NULL;
+
        ret = dev_read_phandle_with_args(dev, "clocks", "#clock-cells", 0,
                                          index, &args);
        if (ret) {
@@ -102,6 +104,7 @@ int clk_get_by_name(struct udevice *dev, const char *name, struct clk *clk)
        int index;
 
        debug("%s(dev=%p, name=%s, clk=%p)\n", __func__, dev, name, clk);
+       clk->dev = NULL;
 
        index = dev_read_stringlist_search(dev, "clock-names", name);
        if (index < 0) {
@@ -111,6 +114,30 @@ int clk_get_by_name(struct udevice *dev, const char *name, struct clk *clk)
 
        return clk_get_by_index(dev, index, clk);
 }
+
+int clk_release_all(struct clk *clk, int count)
+{
+       int i, ret;
+
+       for (i = 0; i < count; i++) {
+               debug("%s(clk[%d]=%p)\n", __func__, i, &clk[i]);
+
+               /* check if clock has been previously requested */
+               if (!clk[i].dev)
+                       continue;
+
+               ret = clk_disable(&clk[i]);
+               if (ret && ret != -ENOSYS)
+                       return ret;
+
+               ret = clk_free(&clk[i]);
+               if (ret && ret != -ENOSYS)
+                       return ret;
+       }
+
+       return 0;
+}
+
 #endif /* OF_CONTROL */
 
 int clk_request(struct udevice *dev, struct clk *clk)
index fcdc3c052bd80b29e3846b89197b65170c4ed916..255a583c954586805a961e69caf16f6648124299 100644 (file)
@@ -12,6 +12,8 @@
 #include <asm/arch/stm32.h>
 #include <asm/arch/stm32_periph.h>
 
+#include <dt-bindings/mfd/stm32f7-rcc.h>
+
 #define RCC_CR_HSION                   BIT(0)
 #define RCC_CR_HSEON                   BIT(16)
 #define RCC_CR_HSERDY                  BIT(17)
@@ -83,6 +85,10 @@ struct pll_psc {
 #define APB_PSC_8                      0x6
 #define APB_PSC_16                     0x7
 
+struct stm32_clk {
+       struct stm32_rcc_regs *base;
+};
+
 #if !defined(CONFIG_STM32_HSE_HZ)
 #error "CONFIG_STM32_HSE_HZ not defined!"
 #else
@@ -104,23 +110,26 @@ struct pll_psc sys_pll_psc = {
 #endif
 #endif
 
-int configure_clocks(void)
+static int configure_clocks(struct udevice *dev)
 {
+       struct stm32_clk *priv = dev_get_priv(dev);
+       struct stm32_rcc_regs *regs = priv->base;
+
        /* Reset RCC configuration */
-       setbits_le32(&STM32_RCC->cr, RCC_CR_HSION);
-       writel(0, &STM32_RCC->cfgr); /* Reset CFGR */
-       clrbits_le32(&STM32_RCC->cr, (RCC_CR_HSEON | RCC_CR_CSSON
+       setbits_le32(&regs->cr, RCC_CR_HSION);
+       writel(0, &regs->cfgr); /* Reset CFGR */
+       clrbits_le32(&regs->cr, (RCC_CR_HSEON | RCC_CR_CSSON
                | RCC_CR_PLLON));
-       writel(0x24003010, &STM32_RCC->pllcfgr); /* Reset value from RM */
-       clrbits_le32(&STM32_RCC->cr, RCC_CR_HSEBYP);
-       writel(0, &STM32_RCC->cir); /* Disable all interrupts */
+       writel(0x24003010, &regs->pllcfgr); /* Reset value from RM */
+       clrbits_le32(&regs->cr, RCC_CR_HSEBYP);
+       writel(0, &regs->cir); /* Disable all interrupts */
 
        /* Configure for HSE+PLL operation */
-       setbits_le32(&STM32_RCC->cr, RCC_CR_HSEON);
-       while (!(readl(&STM32_RCC->cr) & RCC_CR_HSERDY))
+       setbits_le32(&regs->cr, RCC_CR_HSEON);
+       while (!(readl(&regs->cr) & RCC_CR_HSERDY))
                ;
 
-       setbits_le32(&STM32_RCC->cfgr, ((
+       setbits_le32(&regs->cfgr, ((
                sys_pll_psc.ahb_psc << RCC_CFGR_HPRE_SHIFT)
                | (sys_pll_psc.apb1_psc << RCC_CFGR_PPRE1_SHIFT)
                | (sys_pll_psc.apb2_psc << RCC_CFGR_PPRE2_SHIFT)));
@@ -132,15 +141,15 @@ int configure_clocks(void)
        pllcfgr |= sys_pll_psc.pll_n << RCC_PLLCFGR_PLLN_SHIFT;
        pllcfgr |= ((sys_pll_psc.pll_p >> 1) - 1) << RCC_PLLCFGR_PLLP_SHIFT;
        pllcfgr |= sys_pll_psc.pll_q << RCC_PLLCFGR_PLLQ_SHIFT;
-       writel(pllcfgr, &STM32_RCC->pllcfgr);
+       writel(pllcfgr, &regs->pllcfgr);
 
        /* Enable the main PLL */
-       setbits_le32(&STM32_RCC->cr, RCC_CR_PLLON);
-       while (!(readl(&STM32_RCC->cr) & RCC_CR_PLLRDY))
+       setbits_le32(&regs->cr, RCC_CR_PLLON);
+       while (!(readl(&regs->cr) & RCC_CR_PLLRDY))
                ;
 
        /* Enable high performance mode, System frequency up to 200 MHz */
-       setbits_le32(&STM32_RCC->apb1enr, RCC_APB1ENR_PWREN);
+       setbits_le32(&regs->apb1enr, RCC_APB1ENR_PWREN);
        setbits_le32(&STM32_PWR->cr1, PWR_CR1_ODEN);
        /* Infinite wait! */
        while (!(readl(&STM32_PWR->csr1) & PWR_CSR1_ODRDY))
@@ -152,18 +161,20 @@ int configure_clocks(void)
                ;
 
        stm32_flash_latency_cfg(5);
-       clrbits_le32(&STM32_RCC->cfgr, (RCC_CFGR_SW0 | RCC_CFGR_SW1));
-       setbits_le32(&STM32_RCC->cfgr, RCC_CFGR_SW_PLL);
+       clrbits_le32(&regs->cfgr, (RCC_CFGR_SW0 | RCC_CFGR_SW1));
+       setbits_le32(&regs->cfgr, RCC_CFGR_SW_PLL);
 
-       while ((readl(&STM32_RCC->cfgr) & RCC_CFGR_SWS_MASK) !=
+       while ((readl(&regs->cfgr) & RCC_CFGR_SWS_MASK) !=
                        RCC_CFGR_SWS_PLL)
                ;
 
        return 0;
 }
 
-unsigned long clock_get(enum clock clck)
+static unsigned long stm32_clk_get_rate(struct clk *clk)
 {
+       struct stm32_clk *priv = dev_get_priv(clk->dev);
+       struct stm32_rcc_regs *regs = priv->base;
        u32 sysclk = 0;
        u32 shift = 0;
        /* Prescaler table lookups for clock computation */
@@ -174,53 +185,61 @@ unsigned long clock_get(enum clock clck)
                0, 0, 0, 0, 1, 2, 3, 4
        };
 
-       if ((readl(&STM32_RCC->cfgr) & RCC_CFGR_SWS_MASK) ==
+       if ((readl(&regs->cfgr) & RCC_CFGR_SWS_MASK) ==
                        RCC_CFGR_SWS_PLL) {
                u16 pllm, plln, pllp;
-               pllm = (readl(&STM32_RCC->pllcfgr) & RCC_PLLCFGR_PLLM_MASK);
-               plln = ((readl(&STM32_RCC->pllcfgr) & RCC_PLLCFGR_PLLN_MASK)
+               pllm = (readl(&regs->pllcfgr) & RCC_PLLCFGR_PLLM_MASK);
+               plln = ((readl(&regs->pllcfgr) & RCC_PLLCFGR_PLLN_MASK)
                        >> RCC_PLLCFGR_PLLN_SHIFT);
-               pllp = ((((readl(&STM32_RCC->pllcfgr) & RCC_PLLCFGR_PLLP_MASK)
+               pllp = ((((readl(&regs->pllcfgr) & RCC_PLLCFGR_PLLP_MASK)
                        >> RCC_PLLCFGR_PLLP_SHIFT) + 1) << 1);
                sysclk = ((CONFIG_STM32_HSE_HZ / pllm) * plln) / pllp;
+       } else {
+               return -EINVAL;
        }
 
-       switch (clck) {
-       case CLOCK_CORE:
-               return sysclk;
-               break;
-       case CLOCK_AHB:
+       switch (clk->id) {
+       /*
+        * AHB CLOCK: 3 x 32 bits consecutive registers are used :
+        * AHB1, AHB2 and AHB3
+        */
+       case STM32F7_AHB1_CLOCK(GPIOA) ... STM32F7_AHB3_CLOCK(QSPI):
                shift = ahb_psc_table[(
-                       (readl(&STM32_RCC->cfgr) & RCC_CFGR_AHB_PSC_MASK)
+                       (readl(&regs->cfgr) & RCC_CFGR_AHB_PSC_MASK)
                        >> RCC_CFGR_HPRE_SHIFT)];
                return sysclk >>= shift;
                break;
-       case CLOCK_APB1:
+       /* APB1 CLOCK */
+       case STM32F7_APB1_CLOCK(TIM2) ... STM32F7_APB1_CLOCK(UART8):
                shift = apb_psc_table[(
-                       (readl(&STM32_RCC->cfgr) & RCC_CFGR_APB1_PSC_MASK)
+                       (readl(&regs->cfgr) & RCC_CFGR_APB1_PSC_MASK)
                        >> RCC_CFGR_PPRE1_SHIFT)];
                return sysclk >>= shift;
                break;
-       case CLOCK_APB2:
+       /* APB2 CLOCK */
+       case STM32F7_APB2_CLOCK(TIM1) ... STM32F7_APB2_CLOCK(LTDC):
                shift = apb_psc_table[(
-                       (readl(&STM32_RCC->cfgr) & RCC_CFGR_APB2_PSC_MASK)
+                       (readl(&regs->cfgr) & RCC_CFGR_APB2_PSC_MASK)
                        >> RCC_CFGR_PPRE2_SHIFT)];
                return sysclk >>= shift;
                break;
        default:
-               return 0;
+               error("clock index %ld out of range\n", clk->id);
+               return -EINVAL;
                break;
        }
 }
 
 static int stm32_clk_enable(struct clk *clk)
 {
+       struct stm32_clk *priv = dev_get_priv(clk->dev);
+       struct stm32_rcc_regs *regs = priv->base;
        u32 offset = clk->id / 32;
        u32 bit_index = clk->id % 32;
 
        debug("%s: clkid = %ld, offset from AHB1ENR is %d, bit_index = %d\n",
              __func__, clk->id, offset, bit_index);
-       setbits_le32(&STM32_RCC->ahb1enr + offset, BIT(bit_index));
+       setbits_le32(&regs->ahb1enr + offset, BIT(bit_index));
 
        return 0;
 }
@@ -247,7 +266,17 @@ void clock_setup(int peripheral)
 static int stm32_clk_probe(struct udevice *dev)
 {
        debug("%s: stm32_clk_probe\n", __func__);
-       configure_clocks();
+
+       struct stm32_clk *priv = dev_get_priv(dev);
+       fdt_addr_t addr;
+
+       addr = devfdt_get_addr(dev);
+       if (addr == FDT_ADDR_T_NONE)
+               return -EINVAL;
+
+       priv->base = (struct stm32_rcc_regs *)addr;
+
+       configure_clocks(dev);
 
        return 0;
 }
@@ -272,6 +301,7 @@ static int stm32_clk_of_xlate(struct clk *clk, struct ofnode_phandle_args *args)
 static struct clk_ops stm32_clk_ops = {
        .of_xlate       = stm32_clk_of_xlate,
        .enable         = stm32_clk_enable,
+       .get_rate       = stm32_clk_get_rate,
 };
 
 static const struct udevice_id stm32_clk_ids[] = {
index 52cad38446da34c086cb665bb0d46416e84b5e1d..e1d9aeb8e54db9ef3254482230b76bc318788f7c 100644 (file)
@@ -283,7 +283,7 @@ U_BOOT_DRIVER(rockchip_rk3368_cru) = {
        .name           = "rockchip_rk3368_cru",
        .id             = UCLASS_CLK,
        .of_match       = rk3368_clk_ids,
-       .priv_auto_alloc_size = sizeof(struct rk3368_cru),
+       .priv_auto_alloc_size = sizeof(struct rk3368_clk_priv),
        .ofdata_to_platdata = rk3368_clk_ofdata_to_platdata,
        .ops            = &rk3368_clk_ops,
        .bind           = rk3368_clk_bind,
index fb5c4e834d668e9c12162c5f6aa67a042ccfe3fc..f8b19a48cc0aeea8f1393f9de38ee1b9b6a67e35 100644 (file)
@@ -16,10 +16,10 @@ config SPL_DM
          suitable malloc() implementation. If you are not using the
          full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START,
          consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you
-         must provide CONFIG_SYS_MALLOC_F_LEN to set the size.
+         must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size.
          In most cases driver model will only allocate a few uclasses
          and devices in SPL, so 1KB should be enable. See
-         CONFIG_SYS_MALLOC_F_LEN for more details on how to enable it.
+         CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it.
 
 config TPL_DM
        bool "Enable Driver Model for TPL"
@@ -29,10 +29,10 @@ config TPL_DM
          suitable malloc() implementation. If you are not using the
          full malloc() enabled by CONFIG_SYS_SPL_MALLOC_START,
          consider using CONFIG_SYS_MALLOC_SIMPLE. In that case you
-         must provide CONFIG_SYS_MALLOC_F_LEN to set the size.
+         must provide CONFIG_SPL_SYS_MALLOC_F_LEN to set the size.
          In most cases driver model will only allocate a few uclasses
          and devices in SPL, so 1KB should be enough. See
-         CONFIG_SYS_MALLOC_F_LEN for more details on how to enable it.
+         CONFIG_SPL_SYS_MALLOC_F_LEN for more details on how to enable it.
          Disable this for very small implementations.
 
 config DM_WARN
index 2bb23eef8850743d2e68a8af57b88fcca5a3af71..c31cba7fd6b501fd6ffcb5ee0c5ba0a239f52dfa 100644 (file)
@@ -665,6 +665,13 @@ int of_parse_phandle_with_args(const struct device_node *np,
                                            index, out_args);
 }
 
+int of_count_phandle_with_args(const struct device_node *np,
+                              const char *list_name, const char *cells_name)
+{
+       return __of_parse_phandle_with_args(np, list_name, cells_name, 0,
+                                           -1, NULL);
+}
+
 static void of_alias_add(struct alias_prop *ap, struct device_node *np,
                         int id, const char *stem, int stem_len)
 {
index fd068b06ef3c3a6d2f1c3035746fb6fcf68a4690..c1a2e9f0daefdffef2b7087e91d5b23f86bb1c6e 100644 (file)
@@ -14,6 +14,7 @@
 #include <dm/of_addr.h>
 #include <dm/ofnode.h>
 #include <linux/err.h>
+#include <linux/ioport.h>
 
 int ofnode_read_u32(ofnode node, const char *propname, u32 *outp)
 {
@@ -198,13 +199,14 @@ fdt_addr_t ofnode_get_addr_index(ofnode node, int index)
                const __be32 *prop_val;
                uint flags;
                u64 size;
+               int na;
 
-               prop_val = of_get_address(
-                       (struct device_node *)ofnode_to_np(node), index,
-                       &size, &flags);
+               prop_val = of_get_address(ofnode_to_np(node), index, &size,
+                                         &flags);
                if (!prop_val)
                        return FDT_ADDR_T_NONE;
-               return  be32_to_cpup(prop_val);
+               na = of_n_addr_cells(ofnode_to_np(node));
+               return of_read_number(prop_val, na);
        } else {
                return fdt_get_base_address(gd->fdt_blob,
                                            ofnode_to_offset(node));
@@ -313,6 +315,18 @@ int ofnode_parse_phandle_with_args(ofnode node, const char *list_name,
        return 0;
 }
 
+int ofnode_count_phandle_with_args(ofnode node, const char *list_name,
+                                  const char *cells_name)
+{
+       if (ofnode_is_np(node))
+               return of_count_phandle_with_args(ofnode_to_np(node),
+                               list_name, cells_name);
+       else
+               return fdtdec_parse_phandle_with_args(gd->fdt_blob,
+                               ofnode_to_offset(node), list_name, cells_name,
+                               0, -1, NULL);
+}
+
 ofnode ofnode_path(const char *path)
 {
        if (of_live_active())
@@ -593,3 +607,23 @@ bool ofnode_pre_reloc(ofnode node)
 
        return false;
 }
+
+int ofnode_read_resource(ofnode node, uint index, struct resource *res)
+{
+       if (ofnode_is_np(node)) {
+               return of_address_to_resource(ofnode_to_np(node), index, res);
+       } else {
+               struct fdt_resource fres;
+               int ret;
+
+               ret = fdt_get_resource(gd->fdt_blob, ofnode_to_offset(node),
+                                      "reg", index, &fres);
+               if (ret < 0)
+                       return -EINVAL;
+               memset(res, '\0', sizeof(*res));
+               res->start = fres.start;
+               res->end = fres.end;
+
+               return 0;
+       }
+}
index eafe727f037391efa4aeb47ee7aa6af91647c226..fe40bed64de3c8f6d164b05a4e13e15eec377d35 100644 (file)
@@ -114,7 +114,7 @@ int dev_read_phandle(struct udevice *dev)
                return fdt_get_phandle(gd->fdt_blob, ofnode_to_offset(node));
 }
 
-const u32 *dev_read_prop(struct udevice *dev, const char *propname, int *lenp)
+const void *dev_read_prop(struct udevice *dev, const char *propname, int *lenp)
 {
        return ofnode_get_property(dev_ofnode(dev), propname, lenp);
 }
@@ -159,3 +159,8 @@ int dev_read_enabled(struct udevice *dev)
                return fdtdec_get_is_enabled(gd->fdt_blob,
                                             ofnode_to_offset(node));
 }
+
+int dev_read_resource(struct udevice *dev, uint index, struct resource *res)
+{
+       return ofnode_read_resource(dev_ofnode(dev), index, res);
+}
index a6d2f342d9da8ff692e41ecfe4f359e110b8b28f..e94648f1b588e53f4a04c38a9917131b264a8d1b 100644 (file)
 #include <dm/read.h>
 #include <linux/ioport.h>
 
-int dev_read_resource(struct udevice *dev, uint index, struct resource *res)
-{
-       ofnode node = dev_ofnode(dev);
-
-#ifdef CONFIG_OF_LIVE
-       if (ofnode_is_np(node)) {
-               return of_address_to_resource(ofnode_to_np(node), index, res);
-       } else
-#endif
-               {
-               struct fdt_resource fres;
-               int ret;
-
-               ret = fdt_get_resource(gd->fdt_blob, ofnode_to_offset(node),
-                                      "reg", index, &fres);
-               if (ret < 0)
-                       return -EINVAL;
-               memset(res, '\0', sizeof(*res));
-               res->start = fres.start;
-               res->end = fres.end;
-
-               return 0;
-       }
-}
+/* This file can hold non-inlined dev_read_...() functions */
index 7e0749fde3f2ef917e0f61a24ca46a8f0530b8c6..e70ca4b42551f3fff040b840a518134a51df14a4 100644 (file)
@@ -308,6 +308,7 @@ int hws_ddr3_tip_init_controller(u32 dev_num, struct init_cntr_param *init_cntr_
        enum hws_speed_bin speed_bin_index = SPEED_BIN_DDR_2133N;
        enum hws_mem_size memory_size = MEM_2G;
        enum hws_ddr_freq freq = init_freq;
+       enum hws_timing timing;
        u32 cs_mask = 0;
        u32 cl_value = 0, cwl_val = 0;
        u32 refresh_interval_cnt = 0, bus_cnt = 0, adll_tap = 0;
@@ -569,8 +570,13 @@ int hws_ddr3_tip_init_controller(u32 dev_num, struct init_cntr_param *init_cntr_
                                      DUNIT_CONTROL_HIGH_REG,
                                      (init_cntr_prm->msys_init << 7), (1 << 7)));
 
+                       timing = tm->interface_params[if_id].timing;
+
                        if (mode2_t != 0xff) {
                                t2t = mode2_t;
+                       } else if (timing != HWS_TIM_DEFAULT) {
+                               /* Board topology map is forcing timing */
+                               t2t = (timing == HWS_TIM_2T) ? 1 : 0;
                        } else {
                                /* calculate number of CS (per interface) */
                                CHECK_STATUS(calc_cs_num
index f8894e828a5469d3e3276e7018e775fc691d512f..229c3a127a837434926df47c25ccdd979eefd94c 100644 (file)
@@ -37,6 +37,12 @@ enum hws_mem_size {
        MEM_SIZE_LAST
 };
 
+enum hws_timing {
+       HWS_TIM_DEFAULT,
+       HWS_TIM_1T,
+       HWS_TIM_2T
+};
+
 struct bus_params {
        /* Chip Select (CS) bitmask (bits 0-CS0, bit 1- CS1 ...) */
        u8 cs_bitmask;
@@ -84,6 +90,9 @@ struct if_params {
 
        /* operation temperature */
        enum hws_temperature interface_temp;
+
+       /* 2T vs 1T mode (by default computed from number of CSs) */
+       enum hws_timing timing;
 };
 
 struct hws_topology_map {
index ceb33e35eed212e837a2f5571cea86f70c135806..f6281f4baad42aba448d55f05268fbd4a0524749 100644 (file)
@@ -165,18 +165,48 @@ static int dfu_write_buffer_drain(struct dfu_entity *dfu)
        return ret;
 }
 
-void dfu_write_transaction_cleanup(struct dfu_entity *dfu)
+void dfu_transaction_cleanup(struct dfu_entity *dfu)
 {
        /* clear everything */
        dfu->crc = 0;
        dfu->offset = 0;
        dfu->i_blk_seq_num = 0;
-       dfu->i_buf_start = dfu_buf;
-       dfu->i_buf_end = dfu_buf;
+       dfu->i_buf_start = dfu_get_buf(dfu);
+       dfu->i_buf_end = dfu->i_buf_start;
        dfu->i_buf = dfu->i_buf_start;
+       dfu->r_left = 0;
+       dfu->b_left = 0;
+       dfu->bad_skip = 0;
+
        dfu->inited = 0;
 }
 
+int dfu_transaction_initiate(struct dfu_entity *dfu, bool read)
+{
+       int ret = 0;
+
+       if (dfu->inited)
+               return 0;
+
+       dfu_transaction_cleanup(dfu);
+
+       if (dfu->i_buf_start == NULL)
+               return -ENOMEM;
+
+       dfu->i_buf_end = dfu->i_buf_start + dfu_get_buf_size();
+
+       if (read) {
+               ret = dfu->get_medium_size(dfu, &dfu->r_left);
+               if (ret < 0)
+                       return ret;
+               debug("%s: %s %lld [B]\n", __func__, dfu->name, dfu->r_left);
+       }
+
+       dfu->inited = 1;
+
+       return 0;
+}
+
 int dfu_flush(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
 {
        int ret = 0;
@@ -192,7 +222,7 @@ int dfu_flush(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
                printf("\nDFU complete %s: 0x%08x\n", dfu_hash_algo->name,
                       dfu->crc);
 
-       dfu_write_transaction_cleanup(dfu);
+       dfu_transaction_cleanup(dfu);
 
        return ret;
 }
@@ -205,25 +235,14 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
              __func__, dfu->name, buf, size, blk_seq_num, dfu->offset,
              (unsigned long)(dfu->i_buf - dfu->i_buf_start));
 
-       if (!dfu->inited) {
-               /* initial state */
-               dfu->crc = 0;
-               dfu->offset = 0;
-               dfu->bad_skip = 0;
-               dfu->i_blk_seq_num = 0;
-               dfu->i_buf_start = dfu_get_buf(dfu);
-               if (dfu->i_buf_start == NULL)
-                       return -ENOMEM;
-               dfu->i_buf_end = dfu_get_buf(dfu) + dfu_buf_size;
-               dfu->i_buf = dfu->i_buf_start;
-
-               dfu->inited = 1;
-       }
+       ret = dfu_transaction_initiate(dfu, false);
+       if (ret < 0)
+               return ret;
 
        if (dfu->i_blk_seq_num != blk_seq_num) {
                printf("%s: Wrong sequence number! [%d] [%d]\n",
                       __func__, dfu->i_blk_seq_num, blk_seq_num);
-               dfu_write_transaction_cleanup(dfu);
+               dfu_transaction_cleanup(dfu);
                return -1;
        }
 
@@ -247,7 +266,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
        if ((dfu->i_buf + size) > dfu->i_buf_end) {
                ret = dfu_write_buffer_drain(dfu);
                if (ret) {
-                       dfu_write_transaction_cleanup(dfu);
+                       dfu_transaction_cleanup(dfu);
                        return ret;
                }
        }
@@ -256,7 +275,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
        if ((dfu->i_buf + size) > dfu->i_buf_end) {
                error("Buffer overflow! (0x%p + 0x%x > 0x%p)\n", dfu->i_buf,
                      size, dfu->i_buf_end);
-               dfu_write_transaction_cleanup(dfu);
+               dfu_transaction_cleanup(dfu);
                return -1;
        }
 
@@ -267,7 +286,7 @@ int dfu_write(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
        if (size == 0 || (dfu->i_buf + size) > dfu->i_buf_end) {
                ret = dfu_write_buffer_drain(dfu);
                if (ret) {
-                       dfu_write_transaction_cleanup(dfu);
+                       dfu_transaction_cleanup(dfu);
                        return ret;
                }
        }
@@ -334,28 +353,9 @@ int dfu_read(struct dfu_entity *dfu, void *buf, int size, int blk_seq_num)
        debug("%s: name: %s buf: 0x%p size: 0x%x p_num: 0x%x i_buf: 0x%p\n",
               __func__, dfu->name, buf, size, blk_seq_num, dfu->i_buf);
 
-       if (!dfu->inited) {
-               dfu->i_buf_start = dfu_get_buf(dfu);
-               if (dfu->i_buf_start == NULL)
-                       return -ENOMEM;
-
-               dfu->r_left = dfu->get_medium_size(dfu);
-               if (dfu->r_left < 0)
-                       return dfu->r_left;
-
-               debug("%s: %s %ld [B]\n", __func__, dfu->name, dfu->r_left);
-
-               dfu->i_blk_seq_num = 0;
-               dfu->crc = 0;
-               dfu->offset = 0;
-               dfu->i_buf_end = dfu_get_buf(dfu) + dfu_buf_size;
-               dfu->i_buf = dfu->i_buf_start;
-               dfu->b_left = 0;
-
-               dfu->bad_skip = 0;
-
-               dfu->inited = 1;
-       }
+       ret = dfu_transaction_initiate(dfu, true);
+       if (ret < 0)
+               return ret;
 
        if (dfu->i_blk_seq_num != blk_seq_num) {
                printf("%s: Wrong sequence number! [%d] [%d]\n",
@@ -377,17 +377,7 @@ 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->i_blk_seq_num = 0;
-               dfu->crc = 0;
-               dfu->offset = 0;
-               dfu->i_buf_start = dfu_buf;
-               dfu->i_buf_end = dfu_buf;
-               dfu->i_buf = dfu->i_buf_start;
-               dfu->b_left = 0;
-
-               dfu->bad_skip = 0;
-
-               dfu->inited = 0;
+               dfu_transaction_cleanup(dfu);
        }
 
        return ret;
index 926ccbd2ef5e9eac95d2083f6047c9abcee2ef0a..bb23e7fdcb08e8f683e575d2264c994cef45cc50 100644 (file)
@@ -17,7 +17,7 @@
 #include <mmc.h>
 
 static unsigned char *dfu_file_buf;
-static long dfu_file_buf_len;
+static u64 dfu_file_buf_len;
 static long dfu_file_buf_filled;
 
 static int mmc_block_op(enum dfu_op op, struct dfu_entity *dfu,
@@ -107,7 +107,7 @@ static int mmc_file_buffer(struct dfu_entity *dfu, void *buf, long *len)
 }
 
 static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
-                       void *buf, long *len)
+                       void *buf, u64 *len)
 {
        const char *fsname, *opname;
        char cmd_buf[DFU_CMD_BUF_SIZE];
@@ -150,7 +150,7 @@ static int mmc_file_op(enum dfu_op op, struct dfu_entity *dfu,
        sprintf(cmd_buf + strlen(cmd_buf), " %s", dfu->name);
 
        if (op == DFU_OP_WRITE)
-               sprintf(cmd_buf + strlen(cmd_buf), " %lx", *len);
+               sprintf(cmd_buf + strlen(cmd_buf), " %llx", *len);
 
        debug("%s: %s 0x%p\n", __func__, cmd_buf, cmd_buf);
 
@@ -209,23 +209,23 @@ int dfu_flush_medium_mmc(struct dfu_entity *dfu)
        return ret;
 }
 
-long dfu_get_medium_size_mmc(struct dfu_entity *dfu)
+int dfu_get_medium_size_mmc(struct dfu_entity *dfu, u64 *size)
 {
        int ret;
-       long len;
 
        switch (dfu->layout) {
        case DFU_RAW_ADDR:
-               return dfu->data.mmc.lba_size * dfu->data.mmc.lba_blk_size;
+               *size = dfu->data.mmc.lba_size * dfu->data.mmc.lba_blk_size;
+               return 0;
        case DFU_FS_FAT:
        case DFU_FS_EXT4:
                dfu_file_buf_filled = -1;
-               ret = mmc_file_op(DFU_OP_SIZE, dfu, NULL, &len);
+               ret = mmc_file_op(DFU_OP_SIZE, dfu, NULL, size);
                if (ret < 0)
                        return ret;
-               if (len > CONFIG_SYS_DFU_MAX_FILE_SIZE)
+               if (*size > CONFIG_SYS_DFU_MAX_FILE_SIZE)
                        return -1;
-               return len;
+               return 0;
        default:
                printf("%s: Layout (%s) not (yet) supported!\n", __func__,
                       dfu_get_layout(dfu->layout));
@@ -237,7 +237,7 @@ static int mmc_file_unbuffer(struct dfu_entity *dfu, u64 offset, void *buf,
                             long *len)
 {
        int ret;
-       long file_len;
+       u64 file_len;
 
        if (dfu_file_buf_filled == -1) {
                ret = mmc_file_op(DFU_OP_READ, dfu, dfu_file_buf, &file_len);
index 23f15716e09413284e826a07c653c14ab1420626..6dc9ff7aeaf77b756d244dc69fe1ab4ef657a717 100644 (file)
@@ -37,15 +37,15 @@ static int nand_block_op(enum dfu_op op, struct dfu_entity *dfu,
        lim = dfu->data.nand.start + dfu->data.nand.size - start;
        count = *len;
 
+       mtd = get_nand_dev_by_index(nand_curr_device);
+
        if (nand_curr_device < 0 ||
            nand_curr_device >= CONFIG_SYS_MAX_NAND_DEVICE ||
-           !nand_info[nand_curr_device]) {
+           !mtd) {
                printf("%s: invalid nand device\n", __func__);
                return -1;
        }
 
-       mtd = nand_info[nand_curr_device];
-
        if (op == DFU_OP_READ) {
                ret = nand_read_skip_bad(mtd, start, &count, &actual,
                                         lim, buf);
@@ -114,9 +114,11 @@ static int dfu_write_medium_nand(struct dfu_entity *dfu,
        return ret;
 }
 
-long dfu_get_medium_size_nand(struct dfu_entity *dfu)
+int dfu_get_medium_size_nand(struct dfu_entity *dfu, u64 *size)
 {
-       return dfu->data.nand.size;
+       *size = dfu->data.nand.size;
+
+       return 0;
 }
 
 static int dfu_read_medium_nand(struct dfu_entity *dfu, u64 offset, void *buf,
@@ -143,18 +145,16 @@ static int dfu_flush_medium_nand(struct dfu_entity *dfu)
 
        /* in case of ubi partition, erase rest of the partition */
        if (dfu->data.nand.ubi) {
-               struct mtd_info *mtd;
+               struct mtd_info *mtd = get_nand_dev_by_index(nand_curr_device);
                nand_erase_options_t opts;
 
                if (nand_curr_device < 0 ||
                    nand_curr_device >= CONFIG_SYS_MAX_NAND_DEVICE ||
-                   !nand_info[nand_curr_device]) {
+                   !mtd) {
                        printf("%s: invalid nand device\n", __func__);
                        return -1;
                }
 
-               mtd = nand_info[nand_curr_device];
-
                memset(&opts, 0, sizeof(opts));
                off = dfu->offset;
                if ((off & (mtd->erasesize - 1)) != 0) {
index c1b00217c911bb265df23445a50177cf7dc88eb8..6e3f5316f5ada793bcbcf02be408167a3cca2c37 100644 (file)
@@ -41,9 +41,11 @@ static int dfu_write_medium_ram(struct dfu_entity *dfu, u64 offset,
        return dfu_transfer_medium_ram(DFU_OP_WRITE, dfu, offset, buf, len);
 }
 
-long dfu_get_medium_size_ram(struct dfu_entity *dfu)
+int dfu_get_medium_size_ram(struct dfu_entity *dfu, u64 *size)
 {
-       return dfu->data.ram.size;
+       *size = dfu->data.ram.size;
+
+       return 0;
 }
 
 static int dfu_read_medium_ram(struct dfu_entity *dfu, u64 offset,
index b6d5fe24dc82e56620460185c875243bb0c8ef63..2d2586db52ad0a9c9ca56d33b115c5b6ff37f9f6 100644 (file)
 #include <spi.h>
 #include <spi_flash.h>
 
-static long dfu_get_medium_size_sf(struct dfu_entity *dfu)
+static int dfu_get_medium_size_sf(struct dfu_entity *dfu, u64 *size)
 {
-       return dfu->data.sf.size;
+       *size = dfu->data.sf.size;
+
+       return 0;
 }
 
 static int dfu_read_medium_sf(struct dfu_entity *dfu, u64 offset, void *buf,
index a97fa859e0f1b6a4db116fc84af741dd5751d2c3..fea8767d7bae5b65013dc33c3b7506748247f646 100644 (file)
@@ -19,8 +19,8 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/dma.h>
-#include <asm/imx-common/regs-apbh.h>
+#include <asm/mach-imx/dma.h>
+#include <asm/mach-imx/regs-apbh.h>
 
 static struct mxs_dma_chan mxs_dma_channels[MXS_MAX_DMA_CHANNELS];
 
index a760944306b760d8ffc5d718daf8e579b5799ca9..6b2c866319c76742f30977e6e256020bf87596f2 100644 (file)
@@ -13,6 +13,14 @@ config FPGA_ALTERA
          Enable Altera FPGA specific functions which includes bitstream
          (in BIT format), fpga and device validation.
 
+config FPGA_SOCFPGA
+       bool "Enable Gen5 and Arria10 common FPGA drivers"
+       select FPGA_ALTERA
+       help
+         Say Y here to enable the Gen5 and Arria10 common FPGA driver
+
+         This provides common functionality for Gen5 and Arria10 devices.
+
 config FPGA_CYCLON2
        bool "Enable Altera FPGA driver for Cyclone II"
        depends on FPGA_ALTERA
index 777706f186dd0b8fb1913ccc0029d77d72be83d2..08c9ff802fb044787925c87c51efcd7c56b10731 100644 (file)
@@ -20,4 +20,6 @@ obj-$(CONFIG_FPGA_CYCLON2) += cyclon2.o
 obj-$(CONFIG_FPGA_STRATIX_II) += stratixII.o
 obj-$(CONFIG_FPGA_STRATIX_V) += stratixv.o
 obj-$(CONFIG_FPGA_SOCFPGA) += socfpga.o
+obj-$(CONFIG_TARGET_SOCFPGA_GEN5) += socfpga_gen5.o
+obj-$(CONFIG_TARGET_SOCFPGA_ARRIA10) += socfpga_arria10.o
 endif
index f1b2f2c4da3dcab3c51e5306ebdc44f7f6893183..28fa16b9441d582dce4c37ecc5e5149725ed9f99 100644 (file)
@@ -19,18 +19,8 @@ DECLARE_GLOBAL_DATA_PTR;
 
 static struct socfpga_fpga_manager *fpgamgr_regs =
        (struct socfpga_fpga_manager *)SOCFPGA_FPGAMGRREGS_ADDRESS;
-static struct socfpga_system_manager *sysmgr_regs =
-       (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
 
-/* Set CD ratio */
-static void fpgamgr_set_cd_ratio(unsigned long ratio)
-{
-       clrsetbits_le32(&fpgamgr_regs->ctrl,
-                       0x3 << FPGAMGRREGS_CTRL_CDRATIO_LSB,
-                       (ratio & 0x3) << FPGAMGRREGS_CTRL_CDRATIO_LSB);
-}
-
-static int fpgamgr_dclkcnt_set(unsigned long cnt)
+int fpgamgr_dclkcnt_set(unsigned long cnt)
 {
        unsigned long i;
 
@@ -53,98 +43,8 @@ static int fpgamgr_dclkcnt_set(unsigned long cnt)
        return -ETIMEDOUT;
 }
 
-/* Start the FPGA programming by initialize the FPGA Manager */
-static int fpgamgr_program_init(void)
-{
-       unsigned long msel, i;
-
-       /* Get the MSEL value */
-       msel = readl(&fpgamgr_regs->stat);
-       msel &= FPGAMGRREGS_STAT_MSEL_MASK;
-       msel >>= FPGAMGRREGS_STAT_MSEL_LSB;
-
-       /*
-        * Set the cfg width
-        * If MSEL[3] = 1, cfg width = 32 bit
-        */
-       if (msel & 0x8) {
-               setbits_le32(&fpgamgr_regs->ctrl,
-                            FPGAMGRREGS_CTRL_CFGWDTH_MASK);
-
-               /* To determine the CD ratio */
-               /* MSEL[1:0] = 0, CD Ratio = 1 */
-               if ((msel & 0x3) == 0x0)
-                       fpgamgr_set_cd_ratio(CDRATIO_x1);
-               /* MSEL[1:0] = 1, CD Ratio = 4 */
-               else if ((msel & 0x3) == 0x1)
-                       fpgamgr_set_cd_ratio(CDRATIO_x4);
-               /* MSEL[1:0] = 2, CD Ratio = 8 */
-               else if ((msel & 0x3) == 0x2)
-                       fpgamgr_set_cd_ratio(CDRATIO_x8);
-
-       } else {        /* MSEL[3] = 0 */
-               clrbits_le32(&fpgamgr_regs->ctrl,
-                            FPGAMGRREGS_CTRL_CFGWDTH_MASK);
-
-               /* To determine the CD ratio */
-               /* MSEL[1:0] = 0, CD Ratio = 1 */
-               if ((msel & 0x3) == 0x0)
-                       fpgamgr_set_cd_ratio(CDRATIO_x1);
-               /* MSEL[1:0] = 1, CD Ratio = 2 */
-               else if ((msel & 0x3) == 0x1)
-                       fpgamgr_set_cd_ratio(CDRATIO_x2);
-               /* MSEL[1:0] = 2, CD Ratio = 4 */
-               else if ((msel & 0x3) == 0x2)
-                       fpgamgr_set_cd_ratio(CDRATIO_x4);
-       }
-
-       /* To enable FPGA Manager configuration */
-       clrbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_NCE_MASK);
-
-       /* To enable FPGA Manager drive over configuration line */
-       setbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_EN_MASK);
-
-       /* Put FPGA into reset phase */
-       setbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_NCONFIGPULL_MASK);
-
-       /* (1) wait until FPGA enter reset phase */
-       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
-               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_RESETPHASE)
-                       break;
-       }
-
-       /* If not in reset state, return error */
-       if (fpgamgr_get_mode() != FPGAMGRREGS_MODE_RESETPHASE) {
-               puts("FPGA: Could not reset\n");
-               return -1;
-       }
-
-       /* Release FPGA from reset phase */
-       clrbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_NCONFIGPULL_MASK);
-
-       /* (2) wait until FPGA enter configuration phase */
-       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
-               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_CFGPHASE)
-                       break;
-       }
-
-       /* If not in configuration state, return error */
-       if (fpgamgr_get_mode() != FPGAMGRREGS_MODE_CFGPHASE) {
-               puts("FPGA: Could not configure\n");
-               return -2;
-       }
-
-       /* Clear all interrupts in CB Monitor */
-       writel(0xFFF, &fpgamgr_regs->gpio_porta_eoi);
-
-       /* Enable AXI configuration */
-       setbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_AXICFGEN_MASK);
-
-       return 0;
-}
-
 /* Write the RBF data to FPGA Manager */
-static void fpgamgr_program_write(const void *rbf_data, unsigned long rbf_size)
+void fpgamgr_program_write(const void *rbf_data, size_t rbf_size)
 {
        uint32_t src = (uint32_t)rbf_data;
        uint32_t dst = SOCFPGA_FPGAMGRDATA_ADDRESS;
@@ -171,134 +71,3 @@ static void fpgamgr_program_write(const void *rbf_data, unsigned long rbf_size)
                : "r0", "r1", "r2", "r3", "r4", "r5", "r6", "r7", "cc");
 }
 
-/* Ensure the FPGA entering config done */
-static int fpgamgr_program_poll_cd(void)
-{
-       const uint32_t mask = FPGAMGRREGS_MON_GPIO_EXT_PORTA_NS_MASK |
-                             FPGAMGRREGS_MON_GPIO_EXT_PORTA_CD_MASK;
-       unsigned long reg, i;
-
-       /* (3) wait until full config done */
-       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
-               reg = readl(&fpgamgr_regs->gpio_ext_porta);
-
-               /* Config error */
-               if (!(reg & mask)) {
-                       printf("FPGA: Configuration error.\n");
-                       return -3;
-               }
-
-               /* Config done without error */
-               if (reg & mask)
-                       break;
-       }
-
-       /* Timeout happened, return error */
-       if (i == FPGA_TIMEOUT_CNT) {
-               printf("FPGA: Timeout waiting for program.\n");
-               return -4;
-       }
-
-       /* Disable AXI configuration */
-       clrbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_AXICFGEN_MASK);
-
-       return 0;
-}
-
-/* Ensure the FPGA entering init phase */
-static int fpgamgr_program_poll_initphase(void)
-{
-       unsigned long i;
-
-       /* Additional clocks for the CB to enter initialization phase */
-       if (fpgamgr_dclkcnt_set(0x4))
-               return -5;
-
-       /* (4) wait until FPGA enter init phase or user mode */
-       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
-               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_INITPHASE)
-                       break;
-               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_USERMODE)
-                       break;
-       }
-
-       /* If not in configuration state, return error */
-       if (i == FPGA_TIMEOUT_CNT)
-               return -6;
-
-       return 0;
-}
-
-/* Ensure the FPGA entering user mode */
-static int fpgamgr_program_poll_usermode(void)
-{
-       unsigned long i;
-
-       /* Additional clocks for the CB to exit initialization phase */
-       if (fpgamgr_dclkcnt_set(0x5000))
-               return -7;
-
-       /* (5) wait until FPGA enter user mode */
-       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
-               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_USERMODE)
-                       break;
-       }
-       /* If not in configuration state, return error */
-       if (i == FPGA_TIMEOUT_CNT)
-               return -8;
-
-       /* To release FPGA Manager drive over configuration line */
-       clrbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_EN_MASK);
-
-       return 0;
-}
-
-/*
- * FPGA Manager to program the FPGA. This is the interface used by FPGA driver.
- * Return 0 for sucess, non-zero for error.
- */
-int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
-{
-       unsigned long status;
-
-       if ((uint32_t)rbf_data & 0x3) {
-               puts("FPGA: Unaligned data, realign to 32bit boundary.\n");
-               return -EINVAL;
-       }
-
-       /* Prior programming the FPGA, all bridges need to be shut off */
-
-       /* Disable all signals from hps peripheral controller to fpga */
-       writel(0, &sysmgr_regs->fpgaintfgrp_module);
-
-       /* Disable all signals from FPGA to HPS SDRAM */
-#define SDR_CTRLGRP_FPGAPORTRST_ADDRESS        0x5080
-       writel(0, SOCFPGA_SDR_ADDRESS + SDR_CTRLGRP_FPGAPORTRST_ADDRESS);
-
-       /* Disable all axi bridge (hps2fpga, lwhps2fpga & fpga2hps) */
-       socfpga_bridges_reset(1);
-
-       /* Unmap the bridges from NIC-301 */
-       writel(0x1, SOCFPGA_L3REGS_ADDRESS);
-
-       /* Initialize the FPGA Manager */
-       status = fpgamgr_program_init();
-       if (status)
-               return status;
-
-       /* Write the RBF data to FPGA Manager */
-       fpgamgr_program_write(rbf_data, rbf_size);
-
-       /* Ensure the FPGA entering config done */
-       status = fpgamgr_program_poll_cd();
-       if (status)
-               return status;
-
-       /* Ensure the FPGA entering init phase */
-       status = fpgamgr_program_poll_initphase();
-       if (status)
-               return status;
-
-       /* Ensure the FPGA entering user mode */
-       return fpgamgr_program_poll_usermode();
-}
diff --git a/drivers/fpga/socfpga_arria10.c b/drivers/fpga/socfpga_arria10.c
new file mode 100644 (file)
index 0000000..5c1a68a
--- /dev/null
@@ -0,0 +1,479 @@
+/*
+ * Copyright (C) 2017 Intel Corporation <www.intel.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0
+ */
+
+#include <asm/io.h>
+#include <asm/arch/fpga_manager.h>
+#include <asm/arch/reset_manager.h>
+#include <asm/arch/system_manager.h>
+#include <asm/arch/sdram.h>
+#include <asm/arch/misc.h>
+#include <altera.h>
+#include <common.h>
+#include <errno.h>
+#include <wait_bit.h>
+#include <watchdog.h>
+
+#define CFGWDTH_32     1
+#define MIN_BITSTREAM_SIZECHECK        230
+#define ENCRYPTION_OFFSET      69
+#define COMPRESSION_OFFSET     229
+#define FPGA_TIMEOUT_MSEC      1000  /* timeout in ms */
+#define FPGA_TIMEOUT_CNT       0x1000000
+
+DECLARE_GLOBAL_DATA_PTR;
+
+static const struct socfpga_fpga_manager *fpga_manager_base =
+               (void *)SOCFPGA_FPGAMGRREGS_ADDRESS;
+
+static const struct socfpga_system_manager *system_manager_base =
+               (void *)SOCFPGA_SYSMGR_ADDRESS;
+
+static void fpgamgr_set_cd_ratio(unsigned long ratio);
+
+static uint32_t fpgamgr_get_msel(void)
+{
+       u32 reg;
+
+       reg = readl(&fpga_manager_base->imgcfg_stat);
+       reg = (reg & ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL_SET_MSD) >>
+               ALT_FPGAMGR_IMGCFG_STAT_F2S_MSEL0_LSB;
+
+       return reg;
+}
+
+static void fpgamgr_set_cfgwdth(int width)
+{
+       if (width)
+               setbits_le32(&fpga_manager_base->imgcfg_ctrl_02,
+                       ALT_FPGAMGR_IMGCFG_CTL_02_CFGWIDTH_SET_MSK);
+       else
+               clrbits_le32(&fpga_manager_base->imgcfg_ctrl_02,
+                       ALT_FPGAMGR_IMGCFG_CTL_02_CFGWIDTH_SET_MSK);
+}
+
+int is_fpgamgr_user_mode(void)
+{
+       return (readl(&fpga_manager_base->imgcfg_stat) &
+               ALT_FPGAMGR_IMGCFG_STAT_F2S_USERMODE_SET_MSK) != 0;
+}
+
+static int wait_for_user_mode(void)
+{
+       return wait_for_bit(__func__,
+               &fpga_manager_base->imgcfg_stat,
+               ALT_FPGAMGR_IMGCFG_STAT_F2S_USERMODE_SET_MSK,
+               1, FPGA_TIMEOUT_MSEC, false);
+}
+
+static int is_fpgamgr_early_user_mode(void)
+{
+       return (readl(&fpga_manager_base->imgcfg_stat) &
+               ALT_FPGAMGR_IMGCFG_STAT_F2S_EARLY_USERMODE_SET_MSK) != 0;
+}
+
+int fpgamgr_wait_early_user_mode(void)
+{
+       u32 sync_data = 0xffffffff;
+       u32 i = 0;
+       unsigned start = get_timer(0);
+       unsigned long cd_ratio;
+
+       /* Getting existing CDRATIO */
+       cd_ratio = (readl(&fpga_manager_base->imgcfg_ctrl_02) &
+               ALT_FPGAMGR_IMGCFG_CTL_02_CDRATIO_SET_MSK) >>
+               ALT_FPGAMGR_IMGCFG_CTL_02_CDRATIO_LSB;
+
+       /* Using CDRATIO_X1 for better compatibility */
+       fpgamgr_set_cd_ratio(CDRATIO_x1);
+
+       while (!is_fpgamgr_early_user_mode()) {
+               if (get_timer(start) > FPGA_TIMEOUT_MSEC)
+                       return -ETIMEDOUT;
+               fpgamgr_program_write((const long unsigned int *)&sync_data,
+                               sizeof(sync_data));
+               udelay(FPGA_TIMEOUT_MSEC);
+               i++;
+       }
+
+       debug("Additional %i sync word needed\n", i);
+
+       /* restoring original CDRATIO */
+       fpgamgr_set_cd_ratio(cd_ratio);
+
+       return 0;
+}
+
+/* Read f2s_nconfig_pin and f2s_nstatus_pin; loop until de-asserted */
+static int wait_for_nconfig_pin_and_nstatus_pin(void)
+{
+       unsigned long mask = ALT_FPGAMGR_IMGCFG_STAT_F2S_NCONFIG_PIN_SET_MSK |
+                               ALT_FPGAMGR_IMGCFG_STAT_F2S_NSTATUS_PIN_SET_MSK;
+
+       /* Poll until f2s_nconfig_pin and f2s_nstatus_pin; loop until de-asserted,
+        * timeout at 1000ms
+        */
+       return wait_for_bit(__func__,
+                           &fpga_manager_base->imgcfg_stat,
+                           mask,
+                           false, FPGA_TIMEOUT_MSEC, false);
+}
+
+static int wait_for_f2s_nstatus_pin(unsigned long value)
+{
+       /* Poll until f2s to specific value, timeout at 1000ms */
+       return wait_for_bit(__func__,
+                           &fpga_manager_base->imgcfg_stat,
+                           ALT_FPGAMGR_IMGCFG_STAT_F2S_NSTATUS_PIN_SET_MSK,
+                           value, FPGA_TIMEOUT_MSEC, false);
+}
+
+/* set CD ratio */
+static void fpgamgr_set_cd_ratio(unsigned long ratio)
+{
+       clrbits_le32(&fpga_manager_base->imgcfg_ctrl_02,
+               ALT_FPGAMGR_IMGCFG_CTL_02_CDRATIO_SET_MSK);
+
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_02,
+               (ratio << ALT_FPGAMGR_IMGCFG_CTL_02_CDRATIO_LSB) &
+               ALT_FPGAMGR_IMGCFG_CTL_02_CDRATIO_SET_MSK);
+}
+
+/* get the MSEL value, verify we are set for FPP configuration mode */
+static int fpgamgr_verify_msel(void)
+{
+       u32 msel = fpgamgr_get_msel();
+
+       if (msel & ~BIT(0)) {
+               printf("Fail: read msel=%d\n", msel);
+               return -EPERM;
+       }
+
+       return 0;
+}
+
+/*
+ * Write cdratio and cdwidth based on whether the bitstream is compressed
+ * and/or encoded
+ */
+static int fpgamgr_set_cdratio_cdwidth(unsigned int cfg_width, u32 *rbf_data,
+                                      size_t rbf_size)
+{
+       unsigned int cd_ratio;
+       bool encrypt, compress;
+
+       /*
+         * According to the bitstream specification,
+        * both encryption and compression status are
+         * in location before offset 230 of the buffer.
+         */
+       if (rbf_size < MIN_BITSTREAM_SIZECHECK)
+               return -EINVAL;
+
+       encrypt = (rbf_data[ENCRYPTION_OFFSET] >> 2) & 3;
+       encrypt = encrypt != 0;
+
+       compress = (rbf_data[COMPRESSION_OFFSET] >> 1) & 1;
+       compress = !compress;
+
+       debug("header word %d = %08x\n", 69, rbf_data[69]);
+       debug("header word %d = %08x\n", 229, rbf_data[229]);
+       debug("read from rbf header: encrypt=%d compress=%d\n", encrypt, compress);
+
+       /*
+        * from the register map description of cdratio in imgcfg_ctrl_02:
+        *  Normal Configuration    : 32bit Passive Parallel
+        *  Partial Reconfiguration : 16bit Passive Parallel
+        */
+
+       /*
+        * cd ratio is dependent on cfg width and whether the bitstream
+        * is encrypted and/or compressed.
+        *
+        * | width | encr. | compr. | cd ratio |
+        * |  16   |   0   |   0    |     1    |
+        * |  16   |   0   |   1    |     4    |
+        * |  16   |   1   |   0    |     2    |
+        * |  16   |   1   |   1    |     4    |
+        * |  32   |   0   |   0    |     1    |
+        * |  32   |   0   |   1    |     8    |
+        * |  32   |   1   |   0    |     4    |
+        * |  32   |   1   |   1    |     8    |
+        */
+       if (!compress && !encrypt) {
+               cd_ratio = CDRATIO_x1;
+       } else {
+               if (compress)
+                       cd_ratio = CDRATIO_x4;
+               else
+                       cd_ratio = CDRATIO_x2;
+
+               /* if 32 bit, double the cd ratio (so register
+                  field setting is incremented) */
+               if (cfg_width == CFGWDTH_32)
+                       cd_ratio += 1;
+       }
+
+       fpgamgr_set_cfgwdth(cfg_width);
+       fpgamgr_set_cd_ratio(cd_ratio);
+
+       return 0;
+}
+
+static int fpgamgr_reset(void)
+{
+       unsigned long reg;
+
+       /* S2F_NCONFIG = 0 */
+       clrbits_le32(&fpga_manager_base->imgcfg_ctrl_00,
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NCONFIG_SET_MSK);
+
+       /* Wait for f2s_nstatus == 0 */
+       if (wait_for_f2s_nstatus_pin(0))
+               return -ETIME;
+
+       /* S2F_NCONFIG = 1 */
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_00,
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NCONFIG_SET_MSK);
+
+       /* Wait for f2s_nstatus == 1 */
+       if (wait_for_f2s_nstatus_pin(1))
+               return -ETIME;
+
+       /* read and confirm f2s_condone_pin = 0 and f2s_condone_oe = 1 */
+       reg = readl(&fpga_manager_base->imgcfg_stat);
+       if ((reg & ALT_FPGAMGR_IMGCFG_STAT_F2S_CONDONE_PIN_SET_MSK) != 0)
+               return -EPERM;
+
+       if ((reg & ALT_FPGAMGR_IMGCFG_STAT_F2S_CONDONE_OE_SET_MSK) == 0)
+               return -EPERM;
+
+       return 0;
+}
+
+/* Start the FPGA programming by initialize the FPGA Manager */
+int fpgamgr_program_init(u32 * rbf_data, size_t rbf_size)
+{
+       int ret;
+
+       /* Step 1 */
+       if (fpgamgr_verify_msel())
+               return -EPERM;
+
+       /* Step 2 */
+       if (fpgamgr_set_cdratio_cdwidth(CFGWDTH_32, rbf_data, rbf_size))
+               return -EPERM;
+
+       /*
+        * Step 3:
+        * Make sure no other external devices are trying to interfere with
+        * programming:
+        */
+       if (wait_for_nconfig_pin_and_nstatus_pin())
+               return -ETIME;
+
+       /*
+        * Step 4:
+        * Deassert the signal drives from HPS
+        *
+        * S2F_NCE = 1
+        * S2F_PR_REQUEST = 0
+        * EN_CFG_CTRL = 0
+        * EN_CFG_DATA = 0
+        * S2F_NCONFIG = 1
+        * S2F_NSTATUS_OE = 0
+        * S2F_CONDONE_OE = 0
+        */
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_01,
+               ALT_FPGAMGR_IMGCFG_CTL_01_S2F_NCE_SET_MSK);
+
+       clrbits_le32(&fpga_manager_base->imgcfg_ctrl_01,
+               ALT_FPGAMGR_IMGCFG_CTL_01_S2F_PR_REQUEST_SET_MSK);
+
+       clrbits_le32(&fpga_manager_base->imgcfg_ctrl_02,
+               ALT_FPGAMGR_IMGCFG_CTL_02_EN_CFG_DATA_SET_MSK |
+               ALT_FPGAMGR_IMGCFG_CTL_02_EN_CFG_CTRL_SET_MSK);
+
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_00,
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NCONFIG_SET_MSK);
+
+       clrbits_le32(&fpga_manager_base->imgcfg_ctrl_00,
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NSTATUS_OE_SET_MSK |
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_CONDONE_OE_SET_MSK);
+
+       /*
+        * Step 5:
+        * Enable overrides
+        * S2F_NENABLE_CONFIG = 0
+        * S2F_NENABLE_NCONFIG = 0
+        */
+       clrbits_le32(&fpga_manager_base->imgcfg_ctrl_01,
+               ALT_FPGAMGR_IMGCFG_CTL_01_S2F_NENABLE_CONFIG_SET_MSK);
+       clrbits_le32(&fpga_manager_base->imgcfg_ctrl_00,
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NENABLE_NCONFIG_SET_MSK);
+
+       /*
+        * Disable driving signals that HPS doesn't need to drive.
+        * S2F_NENABLE_NSTATUS = 1
+        * S2F_NENABLE_CONDONE = 1
+        */
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_00,
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NENABLE_NSTATUS_SET_MSK |
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NENABLE_CONDONE_SET_MSK);
+
+       /*
+        * Step 6:
+        * Drive chip select S2F_NCE = 0
+        */
+        clrbits_le32(&fpga_manager_base->imgcfg_ctrl_01,
+               ALT_FPGAMGR_IMGCFG_CTL_01_S2F_NCE_SET_MSK);
+
+       /* Step 7 */
+       if (wait_for_nconfig_pin_and_nstatus_pin())
+               return -ETIME;
+
+       /* Step 8 */
+       ret = fpgamgr_reset();
+
+       if (ret)
+               return ret;
+
+       /*
+        * Step 9:
+        * EN_CFG_CTRL and EN_CFG_DATA = 1
+        */
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_02,
+               ALT_FPGAMGR_IMGCFG_CTL_02_EN_CFG_DATA_SET_MSK |
+               ALT_FPGAMGR_IMGCFG_CTL_02_EN_CFG_CTRL_SET_MSK);
+
+       return 0;
+}
+
+/* Ensure the FPGA entering config done */
+static int fpgamgr_program_poll_cd(void)
+{
+       unsigned long reg, i;
+
+       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
+               reg = readl(&fpga_manager_base->imgcfg_stat);
+               if (reg & ALT_FPGAMGR_IMGCFG_STAT_F2S_CONDONE_PIN_SET_MSK)
+                       return 0;
+
+               if ((reg & ALT_FPGAMGR_IMGCFG_STAT_F2S_NSTATUS_PIN_SET_MSK) == 0) {
+                       printf("nstatus == 0 while waiting for condone\n");
+                       return -EPERM;
+               }
+       }
+
+       if (i == FPGA_TIMEOUT_CNT)
+               return -ETIME;
+
+       return 0;
+}
+
+/* Ensure the FPGA entering user mode */
+static int fpgamgr_program_poll_usermode(void)
+{
+       unsigned long reg;
+       int ret = 0;
+
+       if (fpgamgr_dclkcnt_set(0xf))
+               return -ETIME;
+
+       ret = wait_for_user_mode();
+       if (ret < 0) {
+               printf("%s: Failed to enter user mode with ", __func__);
+               printf("error code %d\n", ret);
+               return ret;
+       }
+
+       /*
+        * Step 14:
+        * Stop DATA path and Dclk
+        * EN_CFG_CTRL and EN_CFG_DATA = 0
+        */
+       clrbits_le32(&fpga_manager_base->imgcfg_ctrl_02,
+               ALT_FPGAMGR_IMGCFG_CTL_02_EN_CFG_DATA_SET_MSK |
+               ALT_FPGAMGR_IMGCFG_CTL_02_EN_CFG_CTRL_SET_MSK);
+
+       /*
+        * Step 15:
+        * Disable overrides
+        * S2F_NENABLE_CONFIG = 1
+        * S2F_NENABLE_NCONFIG = 1
+        */
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_01,
+               ALT_FPGAMGR_IMGCFG_CTL_01_S2F_NENABLE_CONFIG_SET_MSK);
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_00,
+               ALT_FPGAMGR_IMGCFG_CTL_00_S2F_NENABLE_NCONFIG_SET_MSK);
+
+       /* Disable chip select S2F_NCE = 1 */
+       setbits_le32(&fpga_manager_base->imgcfg_ctrl_01,
+               ALT_FPGAMGR_IMGCFG_CTL_01_S2F_NCE_SET_MSK);
+
+       /*
+        * Step 16:
+        * Final check
+        */
+       reg = readl(&fpga_manager_base->imgcfg_stat);
+       if (((reg & ALT_FPGAMGR_IMGCFG_STAT_F2S_USERMODE_SET_MSK) !=
+               ALT_FPGAMGR_IMGCFG_STAT_F2S_USERMODE_SET_MSK) ||
+           ((reg & ALT_FPGAMGR_IMGCFG_STAT_F2S_CONDONE_PIN_SET_MSK) !=
+               ALT_FPGAMGR_IMGCFG_STAT_F2S_CONDONE_PIN_SET_MSK) ||
+           ((reg & ALT_FPGAMGR_IMGCFG_STAT_F2S_NSTATUS_PIN_SET_MSK) !=
+               ALT_FPGAMGR_IMGCFG_STAT_F2S_NSTATUS_PIN_SET_MSK))
+               return -EPERM;
+
+       return 0;
+}
+
+int fpgamgr_program_finish(void)
+{
+       /* Ensure the FPGA entering config done */
+       int status = fpgamgr_program_poll_cd();
+
+       if (status) {
+               printf("FPGA: Poll CD failed with error code %d\n", status);
+               return -EPERM;
+       }
+       WATCHDOG_RESET();
+
+       /* Ensure the FPGA entering user mode */
+       status = fpgamgr_program_poll_usermode();
+       if (status) {
+               printf("FPGA: Poll usermode failed with error code %d\n",
+                       status);
+               return -EPERM;
+       }
+
+       printf("Full Configuration Succeeded.\n");
+
+       return 0;
+}
+
+/*
+ * FPGA Manager to program the FPGA. This is the interface used by FPGA driver.
+ * Return 0 for sucess, non-zero for error.
+ */
+int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
+{
+       unsigned long status;
+
+       /* disable all signals from hps peripheral controller to fpga */
+       writel(0, &system_manager_base->fpgaintf_en_global);
+
+       /* disable all axi bridge (hps2fpga, lwhps2fpga & fpga2hps) */
+       socfpga_bridges_reset();
+
+       /* Initialize the FPGA Manager */
+       status = fpgamgr_program_init((u32 *)rbf_data, rbf_size);
+       if (status)
+               return status;
+
+       /* Write the RBF data to FPGA Manager */
+       fpgamgr_program_write(rbf_data, rbf_size);
+
+       return fpgamgr_program_finish();
+}
diff --git a/drivers/fpga/socfpga_gen5.c b/drivers/fpga/socfpga_gen5.c
new file mode 100644 (file)
index 0000000..3dfb030
--- /dev/null
@@ -0,0 +1,252 @@
+/*
+ * Copyright (C) 2012 Altera Corporation <www.altera.com>
+ * All rights reserved.
+ *
+ * SPDX-License-Identifier:    BSD-3-Clause
+ */
+
+#include <common.h>
+#include <asm/io.h>
+#include <linux/errno.h>
+#include <asm/arch/fpga_manager.h>
+#include <asm/arch/reset_manager.h>
+#include <asm/arch/system_manager.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+#define FPGA_TIMEOUT_CNT       0x1000000
+
+static struct socfpga_fpga_manager *fpgamgr_regs =
+       (struct socfpga_fpga_manager *)SOCFPGA_FPGAMGRREGS_ADDRESS;
+static struct socfpga_system_manager *sysmgr_regs =
+       (struct socfpga_system_manager *)SOCFPGA_SYSMGR_ADDRESS;
+
+/* Set CD ratio */
+static void fpgamgr_set_cd_ratio(unsigned long ratio)
+{
+       clrsetbits_le32(&fpgamgr_regs->ctrl,
+                       0x3 << FPGAMGRREGS_CTRL_CDRATIO_LSB,
+                       (ratio & 0x3) << FPGAMGRREGS_CTRL_CDRATIO_LSB);
+}
+
+/* Start the FPGA programming by initialize the FPGA Manager */
+static int fpgamgr_program_init(void)
+{
+       unsigned long msel, i;
+
+       /* Get the MSEL value */
+       msel = readl(&fpgamgr_regs->stat);
+       msel &= FPGAMGRREGS_STAT_MSEL_MASK;
+       msel >>= FPGAMGRREGS_STAT_MSEL_LSB;
+
+       /*
+        * Set the cfg width
+        * If MSEL[3] = 1, cfg width = 32 bit
+        */
+       if (msel & 0x8) {
+               setbits_le32(&fpgamgr_regs->ctrl,
+                            FPGAMGRREGS_CTRL_CFGWDTH_MASK);
+
+               /* To determine the CD ratio */
+               /* MSEL[1:0] = 0, CD Ratio = 1 */
+               if ((msel & 0x3) == 0x0)
+                       fpgamgr_set_cd_ratio(CDRATIO_x1);
+               /* MSEL[1:0] = 1, CD Ratio = 4 */
+               else if ((msel & 0x3) == 0x1)
+                       fpgamgr_set_cd_ratio(CDRATIO_x4);
+               /* MSEL[1:0] = 2, CD Ratio = 8 */
+               else if ((msel & 0x3) == 0x2)
+                       fpgamgr_set_cd_ratio(CDRATIO_x8);
+
+       } else {        /* MSEL[3] = 0 */
+               clrbits_le32(&fpgamgr_regs->ctrl,
+                            FPGAMGRREGS_CTRL_CFGWDTH_MASK);
+
+               /* To determine the CD ratio */
+               /* MSEL[1:0] = 0, CD Ratio = 1 */
+               if ((msel & 0x3) == 0x0)
+                       fpgamgr_set_cd_ratio(CDRATIO_x1);
+               /* MSEL[1:0] = 1, CD Ratio = 2 */
+               else if ((msel & 0x3) == 0x1)
+                       fpgamgr_set_cd_ratio(CDRATIO_x2);
+               /* MSEL[1:0] = 2, CD Ratio = 4 */
+               else if ((msel & 0x3) == 0x2)
+                       fpgamgr_set_cd_ratio(CDRATIO_x4);
+       }
+
+       /* To enable FPGA Manager configuration */
+       clrbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_NCE_MASK);
+
+       /* To enable FPGA Manager drive over configuration line */
+       setbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_EN_MASK);
+
+       /* Put FPGA into reset phase */
+       setbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_NCONFIGPULL_MASK);
+
+       /* (1) wait until FPGA enter reset phase */
+       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
+               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_RESETPHASE)
+                       break;
+       }
+
+       /* If not in reset state, return error */
+       if (fpgamgr_get_mode() != FPGAMGRREGS_MODE_RESETPHASE) {
+               puts("FPGA: Could not reset\n");
+               return -1;
+       }
+
+       /* Release FPGA from reset phase */
+       clrbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_NCONFIGPULL_MASK);
+
+       /* (2) wait until FPGA enter configuration phase */
+       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
+               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_CFGPHASE)
+                       break;
+       }
+
+       /* If not in configuration state, return error */
+       if (fpgamgr_get_mode() != FPGAMGRREGS_MODE_CFGPHASE) {
+               puts("FPGA: Could not configure\n");
+               return -2;
+       }
+
+       /* Clear all interrupts in CB Monitor */
+       writel(0xFFF, &fpgamgr_regs->gpio_porta_eoi);
+
+       /* Enable AXI configuration */
+       setbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_AXICFGEN_MASK);
+
+       return 0;
+}
+
+/* Ensure the FPGA entering config done */
+static int fpgamgr_program_poll_cd(void)
+{
+       const uint32_t mask = FPGAMGRREGS_MON_GPIO_EXT_PORTA_NS_MASK |
+                             FPGAMGRREGS_MON_GPIO_EXT_PORTA_CD_MASK;
+       unsigned long reg, i;
+
+       /* (3) wait until full config done */
+       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
+               reg = readl(&fpgamgr_regs->gpio_ext_porta);
+
+               /* Config error */
+               if (!(reg & mask)) {
+                       printf("FPGA: Configuration error.\n");
+                       return -3;
+               }
+
+               /* Config done without error */
+               if (reg & mask)
+                       break;
+       }
+
+       /* Timeout happened, return error */
+       if (i == FPGA_TIMEOUT_CNT) {
+               printf("FPGA: Timeout waiting for program.\n");
+               return -4;
+       }
+
+       /* Disable AXI configuration */
+       clrbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_AXICFGEN_MASK);
+
+       return 0;
+}
+
+/* Ensure the FPGA entering init phase */
+static int fpgamgr_program_poll_initphase(void)
+{
+       unsigned long i;
+
+       /* Additional clocks for the CB to enter initialization phase */
+       if (fpgamgr_dclkcnt_set(0x4))
+               return -5;
+
+       /* (4) wait until FPGA enter init phase or user mode */
+       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
+               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_INITPHASE)
+                       break;
+               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_USERMODE)
+                       break;
+       }
+
+       /* If not in configuration state, return error */
+       if (i == FPGA_TIMEOUT_CNT)
+               return -6;
+
+       return 0;
+}
+
+/* Ensure the FPGA entering user mode */
+static int fpgamgr_program_poll_usermode(void)
+{
+       unsigned long i;
+
+       /* Additional clocks for the CB to exit initialization phase */
+       if (fpgamgr_dclkcnt_set(0x5000))
+               return -7;
+
+       /* (5) wait until FPGA enter user mode */
+       for (i = 0; i < FPGA_TIMEOUT_CNT; i++) {
+               if (fpgamgr_get_mode() == FPGAMGRREGS_MODE_USERMODE)
+                       break;
+       }
+       /* If not in configuration state, return error */
+       if (i == FPGA_TIMEOUT_CNT)
+               return -8;
+
+       /* To release FPGA Manager drive over configuration line */
+       clrbits_le32(&fpgamgr_regs->ctrl, FPGAMGRREGS_CTRL_EN_MASK);
+
+       return 0;
+}
+
+/*
+ * FPGA Manager to program the FPGA. This is the interface used by FPGA driver.
+ * Return 0 for sucess, non-zero for error.
+ */
+int socfpga_load(Altera_desc *desc, const void *rbf_data, size_t rbf_size)
+{
+       unsigned long status;
+
+       if ((uint32_t)rbf_data & 0x3) {
+               puts("FPGA: Unaligned data, realign to 32bit boundary.\n");
+               return -EINVAL;
+       }
+
+       /* Prior programming the FPGA, all bridges need to be shut off */
+
+       /* Disable all signals from hps peripheral controller to fpga */
+       writel(0, &sysmgr_regs->fpgaintfgrp_module);
+
+       /* Disable all signals from FPGA to HPS SDRAM */
+#define SDR_CTRLGRP_FPGAPORTRST_ADDRESS        0x5080
+       writel(0, SOCFPGA_SDR_ADDRESS + SDR_CTRLGRP_FPGAPORTRST_ADDRESS);
+
+       /* Disable all axi bridge (hps2fpga, lwhps2fpga & fpga2hps) */
+       socfpga_bridges_reset(1);
+
+       /* Unmap the bridges from NIC-301 */
+       writel(0x1, SOCFPGA_L3REGS_ADDRESS);
+
+       /* Initialize the FPGA Manager */
+       status = fpgamgr_program_init();
+       if (status)
+               return status;
+
+       /* Write the RBF data to FPGA Manager */
+       fpgamgr_program_write(rbf_data, rbf_size);
+
+       /* Ensure the FPGA entering config done */
+       status = fpgamgr_program_poll_cd();
+       if (status)
+               return status;
+
+       /* Ensure the FPGA entering init phase */
+       status = fpgamgr_program_poll_initphase();
+       if (status)
+               return status;
+
+       /* Ensure the FPGA entering user mode */
+       return fpgamgr_program_poll_usermode();
+}
index 687cd74fee6db36f53bd3acd1b49e4fdeb650744..49655831585689ec3f3d241d346dc5de1979c96e 100644 (file)
@@ -337,11 +337,13 @@ static int gpio_tegra_bind(struct udevice *parent)
         * This driver does not make use of interrupts, other than to figure
         * out the number of GPIO banks
         */
-       if (!fdt_getprop(gd->fdt_blob, dev_of_offset(parent), "interrupts",
-                        &len))
-               return -EINVAL;
+       len = dev_read_size(parent, "interrupts");
+       if (len < 0)
+               return len;
        bank_count = len / 3 / sizeof(u32);
-       ctlr = (struct gpio_ctlr *)devfdt_get_addr(parent);
+       ctlr = (struct gpio_ctlr *)dev_read_addr(parent);
+       if ((ulong)ctlr == FDT_ADDR_T_NONE)
+               return -EINVAL;
        }
 #endif
        for (bank = 0; bank < bank_count; bank++) {
index b7a1b6a45b484ad5ed333029157e52438f6ec9ce..89918e48ddc9e1b18898fe261072bea0ae358c32 100644 (file)
@@ -10,7 +10,7 @@
 #include <errno.h>
 #include <fdtdec.h>
 #include <asm/gpio.h>
-#include <asm/imx-common/iomux-v3.h>
+#include <asm/mach-imx/iomux-v3.h>
 #include <asm/io.h>
 #include <malloc.h>
 
index 1a6761858ce95364983bfe34f690bba0ac6973bd..383f72f55226b48c89b7f2be94bb9fc6a932c68a 100644 (file)
 
 DECLARE_GLOBAL_DATA_PTR;
 
+enum pca_type {
+       PCA9544,
+       PCA9547,
+       PCA9548
+};
+
+struct chip_desc {
+       u8 enable;
+       enum muxtype {
+               pca954x_ismux = 0,
+               pca954x_isswi,
+       } muxtype;
+};
+
 struct pca954x_priv {
        u32 addr; /* I2C mux address */
        u32 width; /* I2C mux width - number of busses */
 };
 
+static const struct chip_desc chips[] = {
+       [PCA9544] = {
+               .enable = 0x4,
+               .muxtype = pca954x_ismux,
+       },
+       [PCA9547] = {
+               .enable = 0x8,
+               .muxtype = pca954x_ismux,
+       },
+       [PCA9548] = {
+               .enable = 0x8,
+               .muxtype = pca954x_isswi,
+       },
+};
+
 static int pca954x_deselect(struct udevice *mux, struct udevice *bus,
                            uint channel)
 {
@@ -31,7 +60,13 @@ static int pca954x_select(struct udevice *mux, struct udevice *bus,
                          uint channel)
 {
        struct pca954x_priv *priv = dev_get_priv(mux);
-       uchar byte = 1 << channel;
+       const struct chip_desc *chip = &chips[dev_get_driver_data(mux)];
+       uchar byte;
+
+       if (chip->muxtype == pca954x_ismux)
+               byte = channel | chip->enable;
+       else
+               byte = 1 << channel;
 
        return dm_i2c_write(mux, priv->addr, &byte, 1);
 }
@@ -42,8 +77,9 @@ static const struct i2c_mux_ops pca954x_ops = {
 };
 
 static const struct udevice_id pca954x_ids[] = {
-       { .compatible = "nxp,pca9548", .data = (ulong)8 },
-       { .compatible = "nxp,pca9544", .data = (ulong)4 },
+       { .compatible = "nxp,pca9544", .data = PCA9544 },
+       { .compatible = "nxp,pca9547", .data = PCA9547 },
+       { .compatible = "nxp,pca9548", .data = PCA9548 },
        { }
 };
 
index 110b9d6119255e9cbdfd0cc7ef4d1b510ad9688f..b7bb76c0ed0c794ce1f7e183465e06ed397353e0 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
 #include <linux/errno.h>
-#include <asm/imx-common/mxc_i2c.h>
+#include <asm/mach-imx/mxc_i2c.h>
 #include <asm/io.h>
 #include <i2c.h>
 #include <watchdog.h>
index a21e4a2627e9cc1058fce4dc6c41886a807ee61c..4fd5551a228269b8189c413e9d5dba72cefb18b1 100644 (file)
  */
 
 #include <common.h>
-#ifdef CONFIG_MPC8260                  /* only valid for MPC8260 */
-#include <ioports.h>
-#include <asm/io.h>
-#endif
 #if defined(CONFIG_AT91FAMILY)
 #include <asm/io.h>
 #include <asm/arch/hardware.h>
index 055f48153ae03961a9f8fc4ac0649c2616e78ac7..3255e8ed37090f201b1b70845214576f9bdde8ae 100644 (file)
@@ -9,7 +9,6 @@
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
-#include <fdtdec.h>
 #include <i2c.h>
 #include <asm/io.h>
 #include <clk.h>
@@ -365,7 +364,11 @@ 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 *)devfdt_get_addr(dev);
+       i2c_bus->regs = (struct i2c_ctlr *)dev_read_addr(dev);
+       if ((ulong)i2c_bus->regs == FDT_ADDR_T_NONE) {
+               debug("%s: Cannot get regs address\n", __func__);
+               return -EINVAL;
+       }
 
        ret = reset_get_by_name(dev, "i2c", &i2c_bus->reset_ctl);
        if (ret) {
index 92f348f409089fdd77e61edc691278b15f7ed1ee..d1ddbbe157cffc062575dd543cd5c4cb26e8d69c 100644 (file)
@@ -20,6 +20,14 @@ config ALTERA_SYSID
          Select this to enable a sysid for Altera devices. Please find
          details on the "Embedded Peripherals IP User Guide" of Altera.
 
+config ATSHA204A
+       bool "Support for Atmel ATSHA204A module"
+       depends on MISC
+       help
+          Enable support for I2C connected Atmel's ATSHA204A
+          CryptoAuthentication module found for example on the Turris Omnia
+          board.
+
 config ROCKCHIP_EFUSE
         bool "Rockchip e-fuse support"
        depends on MISC
index ea64677c3339f09d8cb8dfb43162c5a2a3a4d941..10265c8fb4693f4fb454f8c0fd77a6150586cc8c 100644 (file)
@@ -8,6 +8,7 @@
 obj-$(CONFIG_MISC) += misc-uclass.o
 obj-$(CONFIG_ALI152X) += ali512x.o
 obj-$(CONFIG_ALTERA_SYSID) += altera_sysid.o
+obj-$(CONFIG_ATSHA204A) += atsha204a-i2c.o
 obj-$(CONFIG_DS4510)  += ds4510.o
 obj-$(CONFIG_CBMEM_CONSOLE) += cbmem_console.o
 ifndef CONFIG_SPL_BUILD
diff --git a/drivers/misc/atsha204a-i2c.c b/drivers/misc/atsha204a-i2c.c
new file mode 100644 (file)
index 0000000..934ba5e
--- /dev/null
@@ -0,0 +1,408 @@
+/*
+ * I2C Driver for Atmel ATSHA204 over I2C
+ *
+ * Copyright (C) 2014 Josh Datko, Cryptotronix, jbd@cryptotronix.com
+ *              2016 Tomas Hlavacek, CZ.NIC, tmshlvck@gmail.com
+ *              2017 Marek Behun, CZ.NIC, marek.behun@nic.cz
+ *
+ * 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 <dm.h>
+#include <i2c.h>
+#include <errno.h>
+#include <atsha204a-i2c.h>
+
+#define ATSHA204A_TWLO                 60
+#define ATSHA204A_TRANSACTION_TIMEOUT  100000
+#define ATSHA204A_TRANSACTION_RETRY    5
+#define ATSHA204A_EXECTIME             5000
+
+DECLARE_GLOBAL_DATA_PTR;
+
+/*
+ * The ATSHA204A uses an (to me) unknown CRC-16 algorithm.
+ * The Reveng CRC-16 catalogue does not contain it.
+ *
+ * Because in Atmel's documentation only a primitive implementation
+ * can be found, I have implemented this one with lookup table.
+ */
+
+/*
+ * This is the code that computes the table below:
+ *
+ * int i, j;
+ * for (i = 0; i < 256; ++i) {
+ *     u8 c = 0;
+ *     for (j = 0; j < 8; ++j) {
+ *             c = (c << 1) | ((i >> j) & 1);
+ *     }
+ *     bitreverse_table[i] = c;
+ * }
+ */
+
+static u8 const bitreverse_table[256] = {
+       0x00, 0x80, 0x40, 0xc0, 0x20, 0xa0, 0x60, 0xe0,
+       0x10, 0x90, 0x50, 0xd0, 0x30, 0xb0, 0x70, 0xf0,
+       0x08, 0x88, 0x48, 0xc8, 0x28, 0xa8, 0x68, 0xe8,
+       0x18, 0x98, 0x58, 0xd8, 0x38, 0xb8, 0x78, 0xf8,
+       0x04, 0x84, 0x44, 0xc4, 0x24, 0xa4, 0x64, 0xe4,
+       0x14, 0x94, 0x54, 0xd4, 0x34, 0xb4, 0x74, 0xf4,
+       0x0c, 0x8c, 0x4c, 0xcc, 0x2c, 0xac, 0x6c, 0xec,
+       0x1c, 0x9c, 0x5c, 0xdc, 0x3c, 0xbc, 0x7c, 0xfc,
+       0x02, 0x82, 0x42, 0xc2, 0x22, 0xa2, 0x62, 0xe2,
+       0x12, 0x92, 0x52, 0xd2, 0x32, 0xb2, 0x72, 0xf2,
+       0x0a, 0x8a, 0x4a, 0xca, 0x2a, 0xaa, 0x6a, 0xea,
+       0x1a, 0x9a, 0x5a, 0xda, 0x3a, 0xba, 0x7a, 0xfa,
+       0x06, 0x86, 0x46, 0xc6, 0x26, 0xa6, 0x66, 0xe6,
+       0x16, 0x96, 0x56, 0xd6, 0x36, 0xb6, 0x76, 0xf6,
+       0x0e, 0x8e, 0x4e, 0xce, 0x2e, 0xae, 0x6e, 0xee,
+       0x1e, 0x9e, 0x5e, 0xde, 0x3e, 0xbe, 0x7e, 0xfe,
+       0x01, 0x81, 0x41, 0xc1, 0x21, 0xa1, 0x61, 0xe1,
+       0x11, 0x91, 0x51, 0xd1, 0x31, 0xb1, 0x71, 0xf1,
+       0x09, 0x89, 0x49, 0xc9, 0x29, 0xa9, 0x69, 0xe9,
+       0x19, 0x99, 0x59, 0xd9, 0x39, 0xb9, 0x79, 0xf9,
+       0x05, 0x85, 0x45, 0xc5, 0x25, 0xa5, 0x65, 0xe5,
+       0x15, 0x95, 0x55, 0xd5, 0x35, 0xb5, 0x75, 0xf5,
+       0x0d, 0x8d, 0x4d, 0xcd, 0x2d, 0xad, 0x6d, 0xed,
+       0x1d, 0x9d, 0x5d, 0xdd, 0x3d, 0xbd, 0x7d, 0xfd,
+       0x03, 0x83, 0x43, 0xc3, 0x23, 0xa3, 0x63, 0xe3,
+       0x13, 0x93, 0x53, 0xd3, 0x33, 0xb3, 0x73, 0xf3,
+       0x0b, 0x8b, 0x4b, 0xcb, 0x2b, 0xab, 0x6b, 0xeb,
+       0x1b, 0x9b, 0x5b, 0xdb, 0x3b, 0xbb, 0x7b, 0xfb,
+       0x07, 0x87, 0x47, 0xc7, 0x27, 0xa7, 0x67, 0xe7,
+       0x17, 0x97, 0x57, 0xd7, 0x37, 0xb7, 0x77, 0xf7,
+       0x0f, 0x8f, 0x4f, 0xcf, 0x2f, 0xaf, 0x6f, 0xef,
+       0x1f, 0x9f, 0x5f, 0xdf, 0x3f, 0xbf, 0x7f, 0xff,
+};
+
+/*
+ * This is the code that computes the table below:
+ *
+ * int i, j;
+ * for (i = 0; i < 256; ++i) {
+ *     u16 c = i << 8;
+ *     for (j = 0; j < 8; ++j) {
+ *             int b = c >> 15;
+ *             c <<= 1;
+ *             if (b)
+ *                     c ^= 0x8005;
+ *     }
+ *     crc16_table[i] = c;
+ * }
+ */
+static u16 const crc16_table[256] = {
+       0x0000, 0x8005, 0x800f, 0x000a, 0x801b, 0x001e, 0x0014, 0x8011,
+       0x8033, 0x0036, 0x003c, 0x8039, 0x0028, 0x802d, 0x8027, 0x0022,
+       0x8063, 0x0066, 0x006c, 0x8069, 0x0078, 0x807d, 0x8077, 0x0072,
+       0x0050, 0x8055, 0x805f, 0x005a, 0x804b, 0x004e, 0x0044, 0x8041,
+       0x80c3, 0x00c6, 0x00cc, 0x80c9, 0x00d8, 0x80dd, 0x80d7, 0x00d2,
+       0x00f0, 0x80f5, 0x80ff, 0x00fa, 0x80eb, 0x00ee, 0x00e4, 0x80e1,
+       0x00a0, 0x80a5, 0x80af, 0x00aa, 0x80bb, 0x00be, 0x00b4, 0x80b1,
+       0x8093, 0x0096, 0x009c, 0x8099, 0x0088, 0x808d, 0x8087, 0x0082,
+       0x8183, 0x0186, 0x018c, 0x8189, 0x0198, 0x819d, 0x8197, 0x0192,
+       0x01b0, 0x81b5, 0x81bf, 0x01ba, 0x81ab, 0x01ae, 0x01a4, 0x81a1,
+       0x01e0, 0x81e5, 0x81ef, 0x01ea, 0x81fb, 0x01fe, 0x01f4, 0x81f1,
+       0x81d3, 0x01d6, 0x01dc, 0x81d9, 0x01c8, 0x81cd, 0x81c7, 0x01c2,
+       0x0140, 0x8145, 0x814f, 0x014a, 0x815b, 0x015e, 0x0154, 0x8151,
+       0x8173, 0x0176, 0x017c, 0x8179, 0x0168, 0x816d, 0x8167, 0x0162,
+       0x8123, 0x0126, 0x012c, 0x8129, 0x0138, 0x813d, 0x8137, 0x0132,
+       0x0110, 0x8115, 0x811f, 0x011a, 0x810b, 0x010e, 0x0104, 0x8101,
+       0x8303, 0x0306, 0x030c, 0x8309, 0x0318, 0x831d, 0x8317, 0x0312,
+       0x0330, 0x8335, 0x833f, 0x033a, 0x832b, 0x032e, 0x0324, 0x8321,
+       0x0360, 0x8365, 0x836f, 0x036a, 0x837b, 0x037e, 0x0374, 0x8371,
+       0x8353, 0x0356, 0x035c, 0x8359, 0x0348, 0x834d, 0x8347, 0x0342,
+       0x03c0, 0x83c5, 0x83cf, 0x03ca, 0x83db, 0x03de, 0x03d4, 0x83d1,
+       0x83f3, 0x03f6, 0x03fc, 0x83f9, 0x03e8, 0x83ed, 0x83e7, 0x03e2,
+       0x83a3, 0x03a6, 0x03ac, 0x83a9, 0x03b8, 0x83bd, 0x83b7, 0x03b2,
+       0x0390, 0x8395, 0x839f, 0x039a, 0x838b, 0x038e, 0x0384, 0x8381,
+       0x0280, 0x8285, 0x828f, 0x028a, 0x829b, 0x029e, 0x0294, 0x8291,
+       0x82b3, 0x02b6, 0x02bc, 0x82b9, 0x02a8, 0x82ad, 0x82a7, 0x02a2,
+       0x82e3, 0x02e6, 0x02ec, 0x82e9, 0x02f8, 0x82fd, 0x82f7, 0x02f2,
+       0x02d0, 0x82d5, 0x82df, 0x02da, 0x82cb, 0x02ce, 0x02c4, 0x82c1,
+       0x8243, 0x0246, 0x024c, 0x8249, 0x0258, 0x825d, 0x8257, 0x0252,
+       0x0270, 0x8275, 0x827f, 0x027a, 0x826b, 0x026e, 0x0264, 0x8261,
+       0x0220, 0x8225, 0x822f, 0x022a, 0x823b, 0x023e, 0x0234, 0x8231,
+       0x8213, 0x0216, 0x021c, 0x8219, 0x0208, 0x820d, 0x8207, 0x0202,
+};
+
+static inline u16 crc16_byte(u16 crc, const u8 data)
+{
+       u16 t = crc16_table[((crc >> 8) ^ bitreverse_table[data]) & 0xff];
+       return ((crc << 8) ^ t);
+}
+
+static u16 atsha204a_crc16(const u8 *buffer, size_t len)
+{
+       u16 crc = 0;
+
+       while (len--)
+               crc = crc16_byte(crc, *buffer++);
+
+       return cpu_to_le16(crc);
+}
+
+static int atsha204a_send(struct udevice *dev, const u8 *buf, u8 len)
+{
+       fdt_addr_t *priv = dev_get_priv(dev);
+       struct i2c_msg msg;
+
+       msg.addr = *priv;
+       msg.flags = I2C_M_STOP;
+       msg.len = len;
+       msg.buf = (u8 *) buf;
+
+       return dm_i2c_xfer(dev, &msg, 1);
+}
+
+static int atsha204a_recv(struct udevice *dev, u8 *buf, u8 len)
+{
+       fdt_addr_t *priv = dev_get_priv(dev);
+       struct i2c_msg msg;
+
+       msg.addr = *priv;
+       msg.flags = I2C_M_RD | I2C_M_STOP;
+       msg.len = len;
+       msg.buf = (u8 *) buf;
+
+       return dm_i2c_xfer(dev, &msg, 1);
+}
+
+static int atsha204a_recv_resp(struct udevice *dev,
+                              struct atsha204a_resp *resp)
+{
+       int res;
+       u16 resp_crc, computed_crc;
+       u8 *p = (u8 *) resp;
+
+       res = atsha204a_recv(dev, p, 4);
+       if (res)
+               return res;
+
+       if (resp->length > 4) {
+               if (resp->length > sizeof(*resp))
+                       return -EMSGSIZE;
+
+               res = atsha204a_recv(dev, p + 4, resp->length - 4);
+               if (res)
+                       return res;
+       }
+
+       resp_crc = (u16) p[resp->length - 2]
+                  | (((u16) p[resp->length - 1]) << 8);
+       computed_crc = atsha204a_crc16(p, resp->length - 2);
+
+       if (resp_crc != computed_crc) {
+               debug("Invalid checksum in ATSHA204A response\n");
+               return -EBADMSG;
+       }
+
+       return 0;
+}
+
+int atsha204a_wakeup(struct udevice *dev)
+{
+       u8 req[4];
+       struct atsha204a_resp resp;
+       int try, res;
+
+       debug("Waking up ATSHA204A\n");
+
+       for (try = 1; try <= 10; ++try) {
+               debug("Try %i... ", try);
+
+               memset(req, 0, 4);
+               res = atsha204a_send(dev, req, 4);
+               if (res) {
+                       debug("failed on I2C send, trying again\n");
+                       continue;
+               }
+
+               udelay(ATSHA204A_TWLO);
+
+               res = atsha204a_recv_resp(dev, &resp);
+               if (res) {
+                       debug("failed on receiving response, ending\n");
+                       return res;
+               }
+
+               if (resp.code != ATSHA204A_STATUS_AFTER_WAKE) {
+                       debug ("failed (responce code = %02x), ending\n",
+                              resp.code);
+                       return -EBADMSG;
+               }
+
+               debug("success\n");
+               break;
+       }
+
+       return 0;
+}
+
+int atsha204a_idle(struct udevice *dev)
+{
+       int res;
+       u8 req = ATSHA204A_FUNC_IDLE;
+
+       res = atsha204a_send(dev, &req, 1);
+       if (res)
+               debug("Failed putting ATSHA204A idle\n");
+       return res;
+}
+
+int atsha204a_sleep(struct udevice *dev)
+{
+       int res;
+       u8 req = ATSHA204A_FUNC_IDLE;
+
+       res = atsha204a_send(dev, &req, 1);
+       if (res)
+               debug("Failed putting ATSHA204A to sleep\n");
+       return res;
+}
+
+static int atsha204a_transaction(struct udevice *dev, struct atsha204a_req *req,
+                               struct atsha204a_resp *resp)
+{
+       int res, timeout = ATSHA204A_TRANSACTION_TIMEOUT;
+
+       res = atsha204a_send(dev, (u8 *) req, req->length + 1);
+       if (res) {
+               debug("ATSHA204A transaction send failed\n");
+               return -EBUSY;
+       }
+
+       do {
+               res = atsha204a_recv_resp(dev, resp);
+               if (!res || res == -EMSGSIZE || res == -EBADMSG)
+                       break;
+
+               debug("ATSHA204A transaction polling for response "
+                     "(timeout = %d)\n", timeout);
+
+               udelay(ATSHA204A_EXECTIME);
+               timeout -= ATSHA204A_EXECTIME;
+       } while (timeout > 0);
+
+       if (timeout <= 0) {
+               debug("ATSHA204A transaction timed out\n");
+               return -ETIMEDOUT;
+       }
+
+       return res;
+}
+
+static void atsha204a_req_crc32(struct atsha204a_req *req)
+{
+       u8 *p = (u8 *) req;
+       u16 computed_crc;
+       u16 *crc_ptr = (u16 *) &p[req->length - 1];
+
+       /* The buffer to crc16 starts at byte 1, not 0 */
+       computed_crc = atsha204a_crc16(p + 1, req->length - 2);
+
+       *crc_ptr = cpu_to_le16(computed_crc);
+}
+
+int atsha204a_read(struct udevice *dev, enum atsha204a_zone zone, bool read32,
+                 u16 addr, u8 *buffer)
+{
+       int res, retry = ATSHA204A_TRANSACTION_RETRY;
+       struct atsha204a_req req;
+       struct atsha204a_resp resp;
+
+       req.function = ATSHA204A_FUNC_COMMAND;
+       req.length = 7;
+       req.command = ATSHA204A_CMD_READ;
+
+       req.param1 = (u8) zone;
+       if (read32)
+               req.param1 |= 0x80;
+
+       req.param2 = cpu_to_le16(addr);
+
+       atsha204a_req_crc32(&req);
+
+       do {
+               res = atsha204a_transaction(dev, &req, &resp);
+               if (!res)
+                       break;
+
+               debug("ATSHA204A read retry (%d)\n", retry);
+               retry--;
+               atsha204a_wakeup(dev);
+       } while (retry >= 0);
+       
+       if (res) {
+               debug("ATSHA204A read failed\n");
+               return res;
+       }
+
+       if (resp.length != (read32 ? 32 : 4) + 3) {
+               debug("ATSHA204A read bad response length (%d)\n",
+                     resp.length);
+               return -EBADMSG;
+       }
+
+       memcpy(buffer, ((u8 *) &resp) + 1, read32 ? 32 : 4);
+
+       return 0;
+}
+
+int atsha204a_get_random(struct udevice *dev, u8 *buffer, size_t max)
+{
+       int res;
+       struct atsha204a_req req;
+       struct atsha204a_resp resp;
+
+       req.function = ATSHA204A_FUNC_COMMAND;
+       req.length = 7;
+       req.command = ATSHA204A_CMD_RANDOM;
+
+       req.param1 = 1;
+       req.param2 = 0;
+
+       /* We do not have to compute the checksum dynamically */
+       req.data[0] = 0x27;
+       req.data[1] = 0x47;
+
+       res = atsha204a_transaction(dev, &req, &resp);
+       if (res) {
+               debug("ATSHA204A random transaction failed\n");
+               return res;
+       }
+
+       memcpy(buffer, ((u8 *) &resp) + 1, max >= 32 ? 32 : max);
+       return 0;
+}
+
+static int atsha204a_ofdata_to_platdata(struct udevice *dev)
+{
+       fdt_addr_t *priv = dev_get_priv(dev);
+       fdt_addr_t addr;
+
+       addr = fdtdec_get_addr(gd->fdt_blob, dev_of_offset(dev), "reg");
+       if (addr == FDT_ADDR_T_NONE) {
+               debug("Can't get ATSHA204A I2C base address\n");
+               return -ENXIO;
+       }
+
+       *priv = addr;
+       return 0;
+}
+
+static const struct udevice_id atsha204a_ids[] = {
+       { .compatible = "atmel,atsha204a" },
+       { }
+};
+
+U_BOOT_DRIVER(atsha204) = {
+       .name                   = "atsha204",
+       .id                     = UCLASS_MISC,
+       .of_match               = atsha204a_ids,
+       .ofdata_to_platdata     = atsha204a_ofdata_to_platdata,
+       .priv_auto_alloc_size   = sizeof(fdt_addr_t),
+};
index 88610d6af2cd60be0f40ba00ed8174cf09680a48..8986bb4ad0798f57ce28c4d5e4b8f2f56ecb1c80 100644 (file)
@@ -18,7 +18,7 @@
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
 
 #define BO_CTRL_WR_UNLOCK              16
 #define BM_CTRL_WR_UNLOCK              0xffff0000
index 423d24c26e1b3545cf713b8562580badc8bbf811..2e3bc9137ad0bf966d347e5b000f3f25a99e7b69 100644 (file)
@@ -142,7 +142,7 @@ static int rockchip_efuse_ofdata_to_platdata(struct udevice *dev)
 {
        struct rockchip_efuse_platdata *plat = dev_get_platdata(dev);
 
-       plat->base = (void *)devfdt_get_addr(dev);
+       plat->base = (void *)dev_read_addr(dev);
        return 0;
 }
 
index 73748c5658c6ac8da8c08701020db1ee3c310b67..3abd2d30aff89cb821645e5d79884f2cb0f85202 100644 (file)
@@ -16,6 +16,7 @@
 #include <hwconfig.h>
 #include <mmc.h>
 #include <part.h>
+#include <power/regulator.h>
 #include <malloc.h>
 #include <fsl_esdhc.h>
 #include <fdt_support.h>
@@ -92,6 +93,7 @@ struct fsl_esdhc {
  * @dev: pointer for the device
  * @non_removable: 0: removable; 1: non-removable
  * @wp_enable: 1: enable checking wp; 0: no check
+ * @vs18_enable: 1: use 1.8V voltage; 0: use 3.3V
  * @cd_gpio: gpio for card detection
  * @wp_gpio: gpio for write protection
  */
@@ -104,6 +106,7 @@ struct fsl_esdhc_priv {
        struct udevice *dev;
        int non_removable;
        int wp_enable;
+       int vs18_enable;
 #ifdef CONFIG_DM_GPIO
        struct gpio_desc cd_gpio;
        struct gpio_desc wp_gpio;
@@ -670,9 +673,8 @@ static int esdhc_init(struct mmc *mmc)
        /* Set timout to the maximum value */
        esdhc_clrsetbits32(&regs->sysctl, SYSCTL_TIMEOUT_MASK, 14 << 16);
 
-#ifdef CONFIG_SYS_FSL_ESDHC_FORCE_VSELECT
-       esdhc_setbits32(&regs->vendorspec, ESDHC_VENDORSPEC_VSELECT);
-#endif
+       if (priv->vs18_enable)
+               esdhc_setbits32(&regs->vendorspec, ESDHC_VENDORSPEC_VSELECT);
 
        return 0;
 }
@@ -746,6 +748,9 @@ static int fsl_esdhc_init(struct fsl_esdhc_priv *priv)
                        VENDORSPEC_HCKEN | VENDORSPEC_IPGEN | VENDORSPEC_CKEN);
 #endif
 
+       if (priv->vs18_enable)
+               esdhc_setbits32(&regs->vendorspec, ESDHC_VENDORSPEC_VSELECT);
+
        writel(SDHCI_IRQ_EN_BITS, &regs->irqstaten);
        memset(&priv->cfg, 0, sizeof(priv->cfg));
 
@@ -831,6 +836,7 @@ static int fsl_esdhc_cfg_to_priv(struct fsl_esdhc_cfg *cfg,
        priv->bus_width = cfg->max_bus_width;
        priv->sdhc_clk = cfg->sdhc_clk;
        priv->wp_enable  = cfg->wp_enable;
+       priv->vs18_enable  = cfg->vs18_enable;
 
        return 0;
 };
@@ -962,6 +968,7 @@ static int fsl_esdhc_probe(struct udevice *dev)
        struct fsl_esdhc_priv *priv = dev_get_priv(dev);
        const void *fdt = gd->fdt_blob;
        int node = dev_of_offset(dev);
+       struct udevice *vqmmc_dev;
        fdt_addr_t addr;
        unsigned int val;
        int ret;
@@ -999,6 +1006,29 @@ static int fsl_esdhc_probe(struct udevice *dev)
        if (ret)
                priv->wp_enable = 0;
 #endif
+
+       priv->vs18_enable = 0;
+
+#ifdef CONFIG_DM_REGULATOR
+       /*
+        * If emmc I/O has a fixed voltage at 1.8V, this must be provided,
+        * otherwise, emmc will work abnormally.
+        */
+       ret = device_get_supply_regulator(dev, "vqmmc-supply", &vqmmc_dev);
+       if (ret) {
+               dev_dbg(dev, "no vqmmc-supply\n");
+       } else {
+               ret = regulator_set_enable(vqmmc_dev, true);
+               if (ret) {
+                       dev_err(dev, "fail to enable vqmmc-supply\n");
+                       return ret;
+               }
+
+               if (regulator_get_value(vqmmc_dev) == 1800000)
+                       priv->vs18_enable = 1;
+       }
+#endif
+
        /*
         * TODO:
         * Because lack of clk driver, if SDHC clk is not enabled,
index fe1fe707a58b53faf797060d3de70b9c35cadd5c..eb014cc5279d5e8f6d96f6d612b399b763eba9ff 100644 (file)
@@ -25,7 +25,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/dma.h>
+#include <asm/mach-imx/dma.h>
 #include <bouncebuf.h>
 
 struct mxsmmc_priv {
index 1c6888fc48f9370a2befa194743ea69d3be6926b..0b6b6222bdce9ae7c44a4510d01dfa18de40c22c 100644 (file)
@@ -67,7 +67,7 @@ struct s_rpmb {
        unsigned char mac[RPMB_SZ_MAC];
        unsigned char data[RPMB_SZ_DATA];
        unsigned char nonce[RPMB_SZ_NONCE];
-       unsigned long write_counter;
+       unsigned int write_counter;
        unsigned short address;
        unsigned short block_count;
        unsigned short result;
index 4bd2623eaef986a261701b9afd93c1ee579d63ab..f83c1d7241082c9351d2dba5d5a523c65b337476 100644 (file)
@@ -92,7 +92,7 @@ static int sdhci_cdns_write_phy_reg(struct sdhci_cdns_plat *plat,
 static int sdhci_cdns_phy_init(struct sdhci_cdns_plat *plat,
                                const void *fdt, int nodeoffset)
 {
-       const u32 *prop;
+       const fdt32_t *prop;
        int ret, i;
 
        for (i = 0; i < ARRAY_SIZE(sdhci_cdns_phy_cfgs); i++) {
index 7d945a172e8a641c68bcf386c7ad2ab0a6eb8f21..74745296b47ed080df5bc09bbd68491fff82b807 100644 (file)
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
+#include <mmc.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
 #include <asm/arch-tegra/tegra_mmc.h>
-#include <mmc.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -599,8 +599,7 @@ static int tegra_mmc_probe(struct udevice *dev)
 
        cfg->name = dev->name;
 
-       bus_width = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev),
-                                  "bus-width", 1);
+       bus_width = dev_read_u32_default(dev, "bus-width", 1);
 
        cfg->voltages = MMC_VDD_32_33 | MMC_VDD_33_34 | MMC_VDD_165_195;
        cfg->host_caps = 0;
@@ -621,7 +620,7 @@ static int tegra_mmc_probe(struct udevice *dev)
 
        cfg->b_max = CONFIG_SYS_MMC_MAX_BLK_COUNT;
 
-       priv->reg = (void *)devfdt_get_addr(dev);
+       priv->reg = (void *)dev_read_addr(dev);
 
        ret = reset_get_by_name(dev, "sdhci", &priv->reset_ctl);
        if (ret) {
@@ -648,12 +647,10 @@ static int tegra_mmc_probe(struct udevice *dev)
                return ret;
 
        /* These GPIOs are optional */
-       gpio_request_by_name(dev, "cd-gpios", 0, &priv->cd_gpio,
-                            GPIOD_IS_IN);
-       gpio_request_by_name(dev, "wp-gpios", 0, &priv->wp_gpio,
-                            GPIOD_IS_IN);
-       gpio_request_by_name(dev, "power-gpios", 0,
-                            &priv->pwr_gpio, GPIOD_IS_OUT);
+       gpio_request_by_name(dev, "cd-gpios", 0, &priv->cd_gpio, GPIOD_IS_IN);
+       gpio_request_by_name(dev, "wp-gpios", 0, &priv->wp_gpio, GPIOD_IS_IN);
+       gpio_request_by_name(dev, "power-gpios", 0, &priv->pwr_gpio,
+                            GPIOD_IS_OUT);
        if (dm_gpio_is_valid(&priv->pwr_gpio))
                dm_gpio_set_value(&priv->pwr_gpio, 1);
 
index a1f2cbae3318bd5f25735c9b27f2f41194292a93..d5d105629369a5ae0def96fc3227e774c09a03ea 100644 (file)
@@ -409,7 +409,7 @@ int fsmc_nand_switch_ecc(uint32_t eccstrength)
         * Nomadik SoC is currently supporting this fsmc_nand_switch_ecc()
         * function, as it doesn't need to switch to a different ECC layout.
         */
-       mtd = nand_info[nand_curr_device];
+       mtd = get_nand_dev_by_index(nand_curr_device);
        nand = mtd_to_nand(mtd);
 
        /* Setup the ecc configurations again */
index 92005448d2eeef16007bd089efe5c6a76541b72d..d774ab8d82dab20ef0f889d6670c76dced3ca900 100644 (file)
 #include <asm/io.h>
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/regs-bch.h>
-#include <asm/imx-common/regs-gpmi.h>
+#include <asm/mach-imx/regs-bch.h>
+#include <asm/mach-imx/regs-gpmi.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/dma.h>
+#include <asm/mach-imx/dma.h>
 
 #define        MXS_NAND_DMA_DESCRIPTOR_COUNT           4
 
@@ -1114,6 +1114,7 @@ int mxs_nand_init(struct mxs_nand_info *info)
        }
 
        /* Init the DMA controller. */
+       mxs_dma_init();
        for (j = MXS_DMA_CHANNEL_AHB_APBH_GPMI0;
                j <= MXS_DMA_CHANNEL_AHB_APBH_GPMI7; j++) {
                ret = mxs_dma_init_channel(j);
index 168bac6055dea6be0b64ebcac20c0136f3e15bab..6aa909fdd9751b3b5a853d7b70c8d5e977fe28ea 100644 (file)
@@ -19,8 +19,7 @@ DECLARE_GLOBAL_DATA_PTR;
 
 int nand_curr_device = -1;
 
-
-struct mtd_info *nand_info[CONFIG_SYS_MAX_NAND_DEVICE];
+static struct mtd_info *nand_info[CONFIG_SYS_MAX_NAND_DEVICE];
 
 #ifndef CONFIG_SYS_NAND_SELF_INIT
 static struct nand_chip nand_chip[CONFIG_SYS_MAX_NAND_DEVICE];
@@ -31,12 +30,21 @@ static char dev_name[CONFIG_SYS_MAX_NAND_DEVICE][8];
 
 static unsigned long total_nand_size; /* in kiB */
 
+struct mtd_info *get_nand_dev_by_index(int dev)
+{
+       if (dev < 0 || dev >= CONFIG_SYS_MAX_NAND_DEVICE || !nand_info[dev] ||
+           !nand_info[dev]->name)
+               return NULL;
+
+       return nand_info[dev];
+}
+
 int nand_mtd_to_devnum(struct mtd_info *mtd)
 {
        int i;
 
-       for (i = 0; i < ARRAY_SIZE(nand_info); i++) {
-               if (mtd && nand_info[i] == mtd)
+       for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) {
+               if (mtd && get_nand_dev_by_index(i) == mtd)
                        return i;
        }
 
@@ -101,8 +109,9 @@ static void create_mtd_concat(void)
        int i;
 
        for (i = 0; i < CONFIG_SYS_MAX_NAND_DEVICE; i++) {
-               if (nand_info[i] != NULL) {
-                       nand_info_list[nand_devices_found] = nand_info[i];
+               struct mtd_info *mtd = get_nand_dev_by_index(i);
+               if (mtd != NULL) {
+                       nand_info_list[nand_devices_found] = mtd;
                        nand_devices_found++;
                }
        }
@@ -161,7 +170,7 @@ void nand_init(void)
        /*
         * Select the chip in the board/cpu specific driver
         */
-       board_nand_select_device(mtd_to_nand(nand_info[nand_curr_device]),
+       board_nand_select_device(mtd_to_nand(get_nand_dev_by_index(nand_curr_device)),
                                 nand_curr_device);
 #endif
 
index f4f0de395b75bf4245ff119cb053d6970669f14d..b540bc3f2740d86e53c1e26c8b44132a2a555f46 100644 (file)
@@ -894,17 +894,14 @@ static int omap_select_ecc_scheme(struct nand_chip *nand,
 int __maybe_unused omap_nand_switch_ecc(uint32_t hardware, uint32_t eccstrength)
 {
        struct nand_chip *nand;
-       struct mtd_info *mtd;
+       struct mtd_info *mtd = get_nand_dev_by_index(nand_curr_device);
        int err = 0;
 
-       if (nand_curr_device < 0 ||
-           nand_curr_device >= CONFIG_SYS_MAX_NAND_DEVICE ||
-           !nand_info[nand_curr_device]) {
+       if (!mtd) {
                printf("nand: error: no NAND devices found\n");
                return -ENODEV;
        }
 
-       mtd = nand_info[nand_curr_device];
        nand = mtd_to_nand(mtd);
        nand->options |= NAND_OWN_BUFFERS;
        nand->options &= ~NAND_SUBPAGE_READ;
index cb3340d9b09c1c313121abc41ecab96ccae113e4..948f05984ca81c6b24701842f4bf3725b15e48aa 100644 (file)
@@ -1008,7 +1008,7 @@ static int zynq_nand_init(struct nand_chip *nand_chip, int devnum)
        }
 
        xnand->nand_base = (void __iomem *)ZYNQ_NAND_BASEADDR;
-       mtd = (struct mtd_info *)&nand_info[0];
+       mtd = get_nand_dev_by_index(0);
 
        nand_chip->priv = xnand;
        mtd->priv = nand_chip;
index cb9ba78681edef0163945fdbc7e89ca7ad0d369e..caa5197df5062b83fea37f8d77ad1015621ff627 100644 (file)
@@ -3,7 +3,8 @@ menu "UBI support"
 config MTD_UBI
        bool "Enable UBI - Unsorted block images"
        select CRC32
-       select RBTREE if ARCH_SUNXI
+       select RBTREE
+       select MTD_PARTITIONS
        help
          UBI is a software layer above MTD layer which admits of LVM-like
          logical volumes on top of MTD devices, hides some complexities of
index 6840908fb2a382cd0d66b3b01fe1640c4eb94691..40be52070eae9c0dfa6e7537d163c6eed34cfa86 100644 (file)
@@ -23,7 +23,7 @@
 
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/sys_proto.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -1223,17 +1223,6 @@ static int fecmxc_probe(struct udevice *dev)
        if (ret)
                return ret;
 
-       bus = fec_get_miibus((uint32_t)priv->eth, dev_id);
-       if (!bus)
-               goto err_mii;
-
-       priv->bus = bus;
-       priv->xcv_type = CONFIG_FEC_XCV_TYPE;
-       priv->interface = pdata->phy_interface;
-       ret = fec_phy_init(priv, dev);
-       if (ret)
-               goto err_phy;
-
        /* Reset chip. */
        writel(readl(&priv->eth->ecntrl) | FEC_ECNTRL_RESET,
               &priv->eth->ecntrl);
@@ -1249,6 +1238,19 @@ static int fecmxc_probe(struct udevice *dev)
        fec_reg_setup(priv);
        priv->dev_id = (dev_id == -1) ? 0 : dev_id;
 
+       bus = fec_get_miibus(dev, dev_id);
+       if (!bus) {
+               ret = -ENOMEM;
+               goto err_mii;
+       }
+
+       priv->bus = bus;
+       priv->xcv_type = CONFIG_FEC_XCV_TYPE;
+       priv->interface = pdata->phy_interface;
+       ret = fec_phy_init(priv, dev);
+       if (ret)
+               goto err_phy;
+
        return 0;
 
 err_timeout:
index 89f0d6a14e3a9d7d2e0f56991b745bf04902713d..9fe34ad4a98380708bb4e77b15c291440e235e80 100644 (file)
@@ -357,7 +357,8 @@ int fm_init_common(int index, struct ccsr_fman *reg)
        size_t fw_length = CONFIG_SYS_QE_FMAN_FW_LENGTH;
        void *addr = malloc(CONFIG_SYS_QE_FMAN_FW_LENGTH);
 
-       rc = nand_read(nand_info[0], (loff_t)CONFIG_SYS_FMAN_FW_ADDR,
+       rc = nand_read(get_nand_dev_by_index(0),
+                      (loff_t)CONFIG_SYS_FMAN_FW_ADDR,
                       &fw_length, (u_char *)addr);
        if (rc == -EUCLEAN) {
                printf("NAND read of FMAN firmware at offset 0x%x failed %d\n",
index e525d3b5931b585424f0bd36581b430353c35612..71fe984a5dd64f849e2b07438aaa68465863dce7 100644 (file)
@@ -10,6 +10,7 @@
 #include <commproc.h>
 #include <malloc.h>
 #include <net.h>
+#include <netdev.h>
 #include <asm/io.h>
 
 #include <phy.h>
index fd130d5b82060b967afe67b93c8bbd846d4f97e3..e0e9ed97672411fe5ee257676e5fc931fe6d0288 100644 (file)
@@ -139,7 +139,8 @@ void cs4340_upload_firmware(struct phy_device *phydev)
        size_t fw_length = CONFIG_CORTINA_FW_LENGTH;
 
        addr = malloc(CONFIG_CORTINA_FW_LENGTH);
-       ret = nand_read(nand_info[0], (loff_t)CONFIG_CORTINA_FW_ADDR,
+       ret = nand_read(get_nand_dev_by_index(0),
+                       (loff_t)CONFIG_CORTINA_FW_ADDR,
                        &fw_length, (u_char *)addr);
        if (ret == -EUCLEAN) {
                printf("NAND read of Cortina firmware at 0x%x failed %d\n",
index 7d9c63b06f20eee9dce8dbc6b2aa5c160d908d81..cb5cf8b043bd91198766e2269185eb59dcf1a8be 100644 (file)
@@ -16,7 +16,6 @@
 #include <clk.h>
 #include <dm.h>
 #include <errno.h>
-#include <fdtdec.h>
 #include <malloc.h>
 #include <pci.h>
 #include <power-domain.h>
@@ -25,6 +24,7 @@
 #include <asm/io.h>
 #include <asm/gpio.h>
 
+#include <linux/ioport.h>
 #include <linux/list.h>
 
 #ifndef CONFIG_TEGRA186
@@ -220,9 +220,9 @@ struct tegra_pcie_soc {
 struct tegra_pcie {
        struct pci_controller hose;
 
-       struct fdt_resource pads;
-       struct fdt_resource afi;
-       struct fdt_resource cs;
+       struct resource pads;
+       struct resource afi;
+       struct resource cs;
 
        struct list_head ports;
        unsigned long xbar;
@@ -364,13 +364,12 @@ static int pci_tegra_write_config(struct udevice *bus, pci_dev_t bdf,
        return 0;
 }
 
-static int tegra_pcie_port_parse_dt(const void *fdt, int node,
-                                   struct tegra_pcie_port *port)
+static int tegra_pcie_port_parse_dt(ofnode node, struct tegra_pcie_port *port)
 {
        const u32 *addr;
        int len;
 
-       addr = fdt_getprop(fdt, node, "assigned-addresses", &len);
+       addr = ofnode_get_property(node, "assigned-addresses", &len);
        if (!addr) {
                error("property \"assigned-addresses\" not found");
                return -FDT_ERR_NOTFOUND;
@@ -382,7 +381,7 @@ static int tegra_pcie_port_parse_dt(const void *fdt, int node,
        return 0;
 }
 
-static int tegra_pcie_get_xbar_config(const void *fdt, int node, u32 lanes,
+static int tegra_pcie_get_xbar_config(ofnode node, u32 lanes,
                                      enum tegra_pci_id id, unsigned long *xbar)
 {
        switch (id) {
@@ -456,14 +455,12 @@ static int tegra_pcie_get_xbar_config(const void *fdt, int node, u32 lanes,
        return -FDT_ERR_NOTFOUND;
 }
 
-static int tegra_pcie_parse_port_info(const void *fdt, int node,
-                                     unsigned int *index,
-                                     unsigned int *lanes)
+static int tegra_pcie_parse_port_info(ofnode node, uint *index, uint *lanes)
 {
        struct fdt_pci_addr addr;
        int err;
 
-       err = fdtdec_get_int(fdt, node, "nvidia,num-lanes", 0);
+       err = ofnode_read_u32_default(node, "nvidia,num-lanes", -1);
        if (err < 0) {
                error("failed to parse \"nvidia,num-lanes\" property");
                return err;
@@ -471,7 +468,7 @@ static int tegra_pcie_parse_port_info(const void *fdt, int node,
 
        *lanes = err;
 
-       err = fdtdec_get_pci_addr(fdt, node, 0, "reg", &addr);
+       err = ofnode_read_pci_addr(node, 0, "reg", &addr);
        if (err < 0) {
                error("failed to parse \"reg\" property");
                return err;
@@ -487,28 +484,26 @@ int __weak tegra_pcie_board_init(void)
        return 0;
 }
 
-static int tegra_pcie_parse_dt(const void *fdt, int node, enum tegra_pci_id id,
+static int tegra_pcie_parse_dt(struct udevice *dev, enum tegra_pci_id id,
                               struct tegra_pcie *pcie)
 {
-       int err, subnode;
+       ofnode subnode;
        u32 lanes = 0;
+       int err;
 
-       err = fdt_get_named_resource(fdt, node, "reg", "reg-names", "pads",
-                                    &pcie->pads);
+       err = dev_read_resource(dev, 0, &pcie->pads);
        if (err < 0) {
                error("resource \"pads\" not found");
                return err;
        }
 
-       err = fdt_get_named_resource(fdt, node, "reg", "reg-names", "afi",
-                                    &pcie->afi);
+       err = dev_read_resource(dev, 1, &pcie->afi);
        if (err < 0) {
                error("resource \"afi\" not found");
                return err;
        }
 
-       err = fdt_get_named_resource(fdt, node, "reg", "reg-names", "cs",
-                                    &pcie->cs);
+       err = dev_read_resource(dev, 2, &pcie->cs);
        if (err < 0) {
                error("resource \"cs\" not found");
                return err;
@@ -531,12 +526,11 @@ static int tegra_pcie_parse_dt(const void *fdt, int node, enum tegra_pci_id id,
        }
 #endif
 
-       fdt_for_each_subnode(subnode, fdt, node) {
+       dev_for_each_subnode(subnode, dev) {
                unsigned int index = 0, num_lanes = 0;
                struct tegra_pcie_port *port;
 
-               err = tegra_pcie_parse_port_info(fdt, subnode, &index,
-                                                &num_lanes);
+               err = tegra_pcie_parse_port_info(subnode, &index, &num_lanes);
                if (err < 0) {
                        error("failed to obtain root port info");
                        continue;
@@ -544,7 +538,7 @@ static int tegra_pcie_parse_dt(const void *fdt, int node, enum tegra_pci_id id,
 
                lanes |= num_lanes << (index << 3);
 
-               if (!fdtdec_get_is_enabled(fdt, subnode))
+               if (!ofnode_is_available(subnode))
                        continue;
 
                port = malloc(sizeof(*port));
@@ -555,7 +549,7 @@ static int tegra_pcie_parse_dt(const void *fdt, int node, enum tegra_pci_id id,
                port->num_lanes = num_lanes;
                port->index = index;
 
-               err = tegra_pcie_port_parse_dt(fdt, subnode, port);
+               err = tegra_pcie_port_parse_dt(subnode, port);
                if (err < 0) {
                        free(port);
                        continue;
@@ -565,7 +559,8 @@ static int tegra_pcie_parse_dt(const void *fdt, int node, enum tegra_pci_id id,
                port->pcie = pcie;
        }
 
-       err = tegra_pcie_get_xbar_config(fdt, node, lanes, id, &pcie->xbar);
+       err = tegra_pcie_get_xbar_config(dev_ofnode(dev), lanes, id,
+                                        &pcie->xbar);
        if (err < 0) {
                error("invalid lane configuration");
                return err;
@@ -815,7 +810,7 @@ static int tegra_pcie_setup_translations(struct udevice *bus)
 
        /* BAR 0: type 1 extended configuration space */
        fpci = 0xfe100000;
-       size = fdt_resource_size(&pcie->cs);
+       size = resource_size(&pcie->cs);
        axi = pcie->cs.start;
 
        afi_writel(pcie, axi, AFI_AXI_BAR0_START);
@@ -1099,7 +1094,7 @@ static int pci_tegra_ofdata_to_platdata(struct udevice *dev)
 
        INIT_LIST_HEAD(&pcie->ports);
 
-       if (tegra_pcie_parse_dt(gd->fdt_blob, dev_of_offset(dev), id, pcie))
+       if (tegra_pcie_parse_dt(dev, id, pcie))
                return -EINVAL;
 
        return 0;
index 7841554d091937c85d9aa5c0d118f8350785578f..98f2a1b04713f3dcc192aecc2299cb510e4523bf 100644 (file)
@@ -41,6 +41,24 @@ config PHY_SANDBOX
          This select a dummy sandbox PHY driver. It used only to implement
          the unit tests for the phy framework
 
+config NOP_PHY
+       bool "NOP PHY driver"
+       depends on PHY
+       help
+         Support for a no-op PHY driver (stubbed PHY driver).
+
+         This is useful when a driver uses the PHY framework but no real PHY
+         hardware exists.
+
+config SPL_NOP_PHY
+       bool "NOP PHY driver in SPL"
+       depends on SPL_PHY
+       help
+         Support for a no-op PHY driver (stubbed PHY driver) in the SPL.
+
+         This is useful when a driver uses the PHY framework but no real PHY
+         hardware exists.
+
 config PIPE3_PHY
        bool "Support omap's PIPE3 PHY"
        depends on PHY && ARCH_OMAP2PLUS
index 6ce96d2cccb0c9cfd1ec11428d0b4f2545baa5f6..ab56c46bb45f8f012c94f8d331a2dabedaa97582 100644 (file)
@@ -6,5 +6,6 @@
 #
 
 obj-$(CONFIG_$(SPL_)PHY) += phy-uclass.o
+obj-$(CONFIG_$(SPL_)NOP_PHY) += nop-phy.o
 obj-$(CONFIG_PHY_SANDBOX) += sandbox-phy.o
 obj-$(CONFIG_$(SPL_)PIPE3_PHY) += ti-pipe3-phy.o
diff --git a/drivers/phy/nop-phy.c b/drivers/phy/nop-phy.c
new file mode 100644 (file)
index 0000000..2201cc3
--- /dev/null
@@ -0,0 +1,26 @@
+/*
+ * Copyright (C) 2017 Texas Instruments Incorporated - http://www.ti.com/
+ * Written by Jean-Jacques Hiblot  <jjhiblot@ti.com>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <dm/device.h>
+#include <generic-phy.h>
+
+static const struct udevice_id nop_phy_ids[] = {
+       { .compatible = "nop-phy" },
+       { }
+};
+
+static struct phy_ops nop_phy_ops = {
+};
+
+U_BOOT_DRIVER(nop_phy) = {
+       .name   = "nop_phy",
+       .id     = UCLASS_PHY,
+       .of_match = nop_phy_ids,
+       .ops = &nop_phy_ops,
+};
index d8b8d58e44f30d8f1cbc4423f7542f343a5c6ff2..68e518fc79008be1bbeff09cf71a6750447ee619 100644 (file)
@@ -45,6 +45,7 @@ int generic_phy_get_by_index(struct udevice *dev, int index,
        debug("%s(dev=%p, index=%d, phy=%p)\n", __func__, dev, index, phy);
 
        assert(phy);
+       phy->dev = NULL;
        ret = dev_read_phandle_with_args(dev, "phys", "#phy-cells", 0, index,
                                         &args);
        if (ret) {
index 2fa840c21a787a02d2a7773f16a39096c29e015a..87c9912c02a9b97b4e462550cc801fef7e5d2641 100644 (file)
@@ -391,14 +391,33 @@ static struct meson_pmx_func meson_gxbb_aobus_functions[] = {
        FUNCTION(i2c_slave_ao),
 };
 
+static struct meson_bank meson_gxbb_periphs_banks[] = {
+       /*   name    first                      last                    pullen  pull    dir     out     in  */
+       BANK("X",    PIN(GPIOX_0, EE_OFF),      PIN(GPIOX_22, EE_OFF),  4,  0,  4,  0,  12, 0,  13, 0,  14, 0),
+       BANK("Y",    PIN(GPIOY_0, EE_OFF),      PIN(GPIOY_16, EE_OFF),  1,  0,  1,  0,  3,  0,  4,  0,  5,  0),
+       BANK("DV",   PIN(GPIODV_0, EE_OFF),     PIN(GPIODV_29, EE_OFF), 0,  0,  0,  0,  0,  0,  1,  0,  2,  0),
+       BANK("H",    PIN(GPIOH_0, EE_OFF),      PIN(GPIOH_3, EE_OFF),   1, 20,  1, 20,  3, 20,  4, 20,  5, 20),
+       BANK("Z",    PIN(GPIOZ_0, EE_OFF),      PIN(GPIOZ_15, EE_OFF),  3,  0,  3,  0,  9,  0,  10, 0, 11,  0),
+       BANK("CARD", PIN(CARD_0, EE_OFF),       PIN(CARD_6, EE_OFF),    2, 20,  2, 20,  6, 20,  7, 20,  8, 20),
+       BANK("BOOT", PIN(BOOT_0, EE_OFF),       PIN(BOOT_17, EE_OFF),   2,  0,  2,  0,  6,  0,  7,  0,  8,  0),
+       BANK("CLK",  PIN(GPIOCLK_0, EE_OFF),    PIN(GPIOCLK_3, EE_OFF), 3, 28,  3, 28,  9, 28, 10, 28, 11, 28),
+};
+
+static struct meson_bank meson_gxbb_aobus_banks[] = {
+       /*   name    first              last               pullen  pull    dir     out     in  */
+       BANK("AO",   PIN(GPIOAO_0, 0),  PIN(GPIOAO_13, 0), 0,  0,  0, 16,  0,  0,  0, 16,  1,  0),
+};
+
 struct meson_pinctrl_data meson_gxbb_periphs_pinctrl_data = {
        .name           = "periphs-banks",
        .pin_base       = 14,
        .groups         = meson_gxbb_periphs_groups,
        .funcs          = meson_gxbb_periphs_functions,
+       .banks          = meson_gxbb_periphs_banks,
        .num_pins       = 120,
        .num_groups     = ARRAY_SIZE(meson_gxbb_periphs_groups),
        .num_funcs      = ARRAY_SIZE(meson_gxbb_periphs_functions),
+       .num_banks      = ARRAY_SIZE(meson_gxbb_periphs_banks),
 };
 
 struct meson_pinctrl_data meson_gxbb_aobus_pinctrl_data = {
@@ -406,9 +425,11 @@ struct meson_pinctrl_data meson_gxbb_aobus_pinctrl_data = {
        .pin_base       = 0,
        .groups         = meson_gxbb_aobus_groups,
        .funcs          = meson_gxbb_aobus_functions,
+       .banks          = meson_gxbb_aobus_banks,
        .num_pins       = 14,
        .num_groups     = ARRAY_SIZE(meson_gxbb_aobus_groups),
        .num_funcs      = ARRAY_SIZE(meson_gxbb_aobus_functions),
+       .num_banks      = ARRAY_SIZE(meson_gxbb_aobus_banks),
 };
 
 static const struct udevice_id meson_gxbb_pinctrl_match[] = {
index 6281f529ea205526157ec84285ad7f6e82814acb..a860200dfb035392da545050fc7235d223f8c37d 100644 (file)
@@ -6,11 +6,14 @@
 
 #include <common.h>
 #include <dm.h>
+#include <dm/device-internal.h>
+#include <dm/lists.h>
 #include <dm/pinctrl.h>
 #include <fdt_support.h>
 #include <linux/err.h>
 #include <linux/io.h>
 #include <linux/sizes.h>
+#include <asm/gpio.h>
 
 #include "pinctrl-meson.h"
 
@@ -117,6 +120,143 @@ const struct pinctrl_ops meson_pinctrl_ops = {
        .set_state = pinctrl_generic_set_state,
 };
 
+static int meson_gpio_calc_reg_and_bit(struct udevice *dev, unsigned int offset,
+                                      enum meson_reg_type reg_type,
+                                      unsigned int *reg, unsigned int *bit)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev->parent);
+       struct meson_bank *bank = NULL;
+       struct meson_reg_desc *desc;
+       unsigned int pin;
+       int i;
+
+       pin = priv->data->pin_base + offset;
+
+       for (i = 0; i < priv->data->num_banks; i++) {
+               if (pin >= priv->data->banks[i].first &&
+                   pin <= priv->data->banks[i].last) {
+                       bank = &priv->data->banks[i];
+                       break;
+               }
+       }
+
+       if (!bank)
+               return -EINVAL;
+
+       desc = &bank->regs[reg_type];
+       *reg = desc->reg * 4;
+       *bit = desc->bit + pin - bank->first;
+
+       return 0;
+}
+
+static int meson_gpio_get(struct udevice *dev, unsigned int offset)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev->parent);
+       unsigned int reg, bit;
+       int ret;
+
+       ret = meson_gpio_calc_reg_and_bit(dev, offset, REG_IN, &reg, &bit);
+       if (ret)
+               return ret;
+
+       return !!(readl(priv->reg_gpio + reg) & BIT(bit));
+}
+
+static int meson_gpio_set(struct udevice *dev, unsigned int offset, int value)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev->parent);
+       unsigned int reg, bit;
+       int ret;
+
+       ret = meson_gpio_calc_reg_and_bit(dev, offset, REG_OUT, &reg, &bit);
+       if (ret)
+               return ret;
+
+       clrsetbits_le32(priv->reg_gpio + reg, BIT(bit), value ? BIT(bit) : 0);
+
+       return 0;
+}
+
+static int meson_gpio_get_direction(struct udevice *dev, unsigned int offset)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev->parent);
+       unsigned int reg, bit, val;
+       int ret;
+
+       ret = meson_gpio_calc_reg_and_bit(dev, offset, REG_DIR, &reg, &bit);
+       if (ret)
+               return ret;
+
+       val = readl(priv->reg_gpio + reg);
+
+       return (val & BIT(bit)) ? GPIOF_INPUT : GPIOF_OUTPUT;
+}
+
+static int meson_gpio_direction_input(struct udevice *dev, unsigned int offset)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev->parent);
+       unsigned int reg, bit;
+       int ret;
+
+       ret = meson_gpio_calc_reg_and_bit(dev, offset, REG_DIR, &reg, &bit);
+       if (ret)
+               return ret;
+
+       clrsetbits_le32(priv->reg_gpio + reg, BIT(bit), 1);
+
+       return 0;
+}
+
+static int meson_gpio_direction_output(struct udevice *dev,
+                                      unsigned int offset, int value)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev->parent);
+       unsigned int reg, bit;
+       int ret;
+
+       ret = meson_gpio_calc_reg_and_bit(dev, offset, REG_DIR, &reg, &bit);
+       if (ret)
+               return ret;
+
+       clrsetbits_le32(priv->reg_gpio + reg, BIT(bit), 0);
+
+       ret = meson_gpio_calc_reg_and_bit(dev, offset, REG_OUT, &reg, &bit);
+       if (ret)
+               return ret;
+
+       clrsetbits_le32(priv->reg_gpio + reg, BIT(bit), value ? BIT(bit) : 0);
+
+       return 0;
+}
+
+static int meson_gpio_probe(struct udevice *dev)
+{
+       struct meson_pinctrl *priv = dev_get_priv(dev->parent);
+       struct gpio_dev_priv *uc_priv;
+
+       uc_priv = dev_get_uclass_priv(dev);
+       uc_priv->bank_name = priv->data->name;
+       uc_priv->gpio_count = priv->data->num_pins;
+
+       return 0;
+}
+
+static const struct dm_gpio_ops meson_gpio_ops = {
+       .set_value = meson_gpio_set,
+       .get_value = meson_gpio_get,
+       .get_function = meson_gpio_get_direction,
+       .direction_input = meson_gpio_direction_input,
+       .direction_output = meson_gpio_direction_output,
+};
+
+static struct driver meson_gpio_driver = {
+       .name   = "meson-gpio",
+       .id     = UCLASS_GPIO,
+       .probe  = meson_gpio_probe,
+       .ops    = &meson_gpio_ops,
+};
+
 static fdt_addr_t parse_address(int offset, const char *name, int na, int ns)
 {
        int index, len = 0;
@@ -138,9 +278,12 @@ static fdt_addr_t parse_address(int offset, const char *name, int na, int ns)
 int meson_pinctrl_probe(struct udevice *dev)
 {
        struct meson_pinctrl *priv = dev_get_priv(dev);
+       struct uclass_driver *drv;
+       struct udevice *gpio_dev;
        fdt_addr_t addr;
        int node, gpio = -1, len;
        int na, ns;
+       char *name;
 
        na = fdt_address_cells(gd->fdt_blob, dev_of_offset(dev->parent));
        if (na < 1) {
@@ -168,12 +311,32 @@ int meson_pinctrl_probe(struct udevice *dev)
 
        addr = parse_address(gpio, "mux", na, ns);
        if (addr == FDT_ADDR_T_NONE) {
-               debug("mux not found\n");
+               debug("mux address not found\n");
                return -EINVAL;
        }
-
        priv->reg_mux = (void __iomem *)addr;
+
+       addr = parse_address(gpio, "gpio", na, ns);
+       if (addr == FDT_ADDR_T_NONE) {
+               debug("gpio address not found\n");
+               return -EINVAL;
+       }
+       priv->reg_gpio = (void __iomem *)addr;
        priv->data = (struct meson_pinctrl_data *)dev_get_driver_data(dev);
 
+       /* Lookup GPIO driver */
+       drv = lists_uclass_lookup(UCLASS_GPIO);
+       if (!drv) {
+               puts("Cannot find GPIO driver\n");
+               return -ENOENT;
+       }
+
+       name = calloc(1, 32);
+       sprintf(name, "meson-gpio");
+
+       /* Create child device UCLASS_GPIO and bind it */
+       device_bind(dev, &meson_gpio_driver, name, NULL, gpio, &gpio_dev);
+       dev_set_of_offset(gpio_dev, gpio);
+
        return 0;
 }
index 4127a60f48ed403fe9dd83feb28220057d377646..90d23698428edf84e1e824ea159700f601cf445c 100644 (file)
@@ -28,15 +28,64 @@ struct meson_pinctrl_data {
        const char *name;
        struct meson_pmx_group *groups;
        struct meson_pmx_func *funcs;
+       struct meson_bank *banks;
        unsigned int pin_base;
        unsigned int num_pins;
        unsigned int num_groups;
        unsigned int num_funcs;
+       unsigned int num_banks;
 };
 
 struct meson_pinctrl {
        struct meson_pinctrl_data *data;
        void __iomem *reg_mux;
+       void __iomem *reg_gpio;
+};
+
+/**
+ * struct meson_reg_desc - a register descriptor
+ *
+ * @reg:       register offset in the regmap
+ * @bit:       bit index in register
+ *
+ * The structure describes the information needed to control pull,
+ * pull-enable, direction, etc. for a single pin
+ */
+struct meson_reg_desc {
+       unsigned int reg;
+       unsigned int bit;
+};
+
+/**
+ * enum meson_reg_type - type of registers encoded in @meson_reg_desc
+ */
+enum meson_reg_type {
+       REG_PULLEN,
+       REG_PULL,
+       REG_DIR,
+       REG_OUT,
+       REG_IN,
+       NUM_REG,
+};
+
+/**
+ * struct meson bank
+ *
+ * @name:      bank name
+ * @first:     first pin of the bank
+ * @last:      last pin of the bank
+ * @regs:      array of register descriptors
+ *
+ * A bank represents a set of pins controlled by a contiguous set of
+ * bits in the domain registers. The structure specifies which bits in
+ * the regmap control the different functionalities. Each member of
+ * the @regs array refers to the first pin of the bank.
+ */
+struct meson_bank {
+       const char *name;
+       unsigned int first;
+       unsigned int last;
+       struct meson_reg_desc regs[NUM_REG];
 };
 
 #define PIN(x, b)      (b + x)
@@ -65,6 +114,20 @@ struct meson_pinctrl {
                .num_groups = ARRAY_SIZE(fn ## _groups),                \
        }
 
+#define BANK(n, f, l, per, peb, pr, pb, dr, db, or, ob, ir, ib)                \
+       {                                                               \
+               .name   = n,                                            \
+               .first  = f,                                            \
+               .last   = l,                                            \
+               .regs   = {                                             \
+                       [REG_PULLEN]    = { per, peb },                 \
+                       [REG_PULL]      = { pr, pb },                   \
+                       [REG_DIR]       = { dr, db },                   \
+                       [REG_OUT]       = { or, ob },                   \
+                       [REG_IN]        = { ir, ib },                   \
+               },                                                      \
+        }
+
 #define MESON_PIN(x, b) PINCTRL_PIN(PIN(x, b), #x)
 
 extern const struct pinctrl_ops meson_pinctrl_ops;
index 3c9ae974f4765c4e35cdb7b3ef5ccdce6c7f4af6..a21b64044be9ba44405328e871caaa354a204c5f 100644 (file)
@@ -496,16 +496,18 @@ static void pinctrl_rk3288_gmac_config(struct rk3288_grf *grf, int gmac_id)
                             (GPIO_PULL_NORMAL << GPIO_PULL_SHIFT(6)) |
                             (GPIO_PULL_NORMAL << GPIO_PULL_SHIFT(7)));
 
+               rk_clrsetreg(&grf->gpio4bl_iomux,
+                           GPIO4B1_MASK << GPIO4B1_SHIFT,
+                           GPIO4B1_MAC_TXCLK << GPIO4B1_SHIFT);
+
                /* switch GPIO4B1 to 12ma drive-strength */
                rk_clrsetreg(&grf->gpio1_e[3][1],
                             GPIO_BIAS_MASK << GPIO_BIAS_SHIFT(1),
                             GPIO_BIAS_12MA << GPIO_BIAS_SHIFT(1));
 
-               /* Set pull normal for GPIO4B1, pull up for GPIO4B0 */
+               /* Set pull normal for GPIO4B1 */
                rk_clrsetreg(&grf->gpio1_p[3][1],
-                            (GPIO_PULL_MASK << GPIO_PULL_SHIFT(0)) |
                             (GPIO_PULL_MASK << GPIO_PULL_SHIFT(1)),
-                            (GPIO_PULL_UP << GPIO_PULL_SHIFT(0)) |
                             (GPIO_PULL_NORMAL << GPIO_PULL_SHIFT(1)));
 
                break;
@@ -727,7 +729,7 @@ static int rk3288_pinctrl_set_pins(struct udevice *dev, int banknum, int index,
        value |= (mask << (shift + 16)) | (muxval << shift);
        writel(value, addr);
 
-       /* Handle pullup/pulldown */
+       /* Handle pullup/pulldown/drive-strength */
        if (flags) {
                uint val = 0;
 
@@ -735,10 +737,15 @@ static int rk3288_pinctrl_set_pins(struct udevice *dev, int banknum, int index,
                        val = 1;
                else if (flags & (1 << PIN_CONFIG_BIAS_PULL_DOWN))
                        val = 2;
+               else if (flags & (1 << PIN_CONFIG_DRIVE_STRENGTH))
+                       val = 3;
+
                shift = (index & 7) * 2;
                ind = index >> 3;
                if (banknum == 0)
                        addr = &priv->pmu->gpio0pull[ind];
+               else if (flags & (1 << PIN_CONFIG_DRIVE_STRENGTH))
+                       addr = &priv->grf->gpio1_e[banknum - 1][ind];
                else
                        addr = &priv->grf->gpio1_p[banknum - 1][ind];
                debug("%s: addr=%p, val=%x, shift=%x\n", __func__, addr, val,
@@ -777,6 +784,9 @@ static int rk3288_pinctrl_set_state(struct udevice *dev, struct udevice *config)
                if (flags < 0)
                        return flags;
 
+               if (fdtdec_get_int(blob, pcfg_node, "drive-strength", 0) == 12)
+                       flags |= 1 << PIN_CONFIG_DRIVE_STRENGTH;
+
                ret = rk3288_pinctrl_set_pins(dev, ptr[0], ptr[1], ptr[2],
                                              flags);
                if (ret)
index 9c2db1afc8c77f6088f86a1d3cf33eda29ffbbfe..e2b234ff14965b1e2883a6bba8f5a1a7449e425a 100644 (file)
@@ -59,12 +59,12 @@ static const struct uniphier_pinctrl_group uniphier_ld11_groups[] = {
        UNIPHIER_PINCTRL_GROUP(i2c3),
        UNIPHIER_PINCTRL_GROUP(i2c4),
        UNIPHIER_PINCTRL_GROUP(nand),
-       UNIPHIER_PINCTRL_GROUP_SPL(system_bus),
-       UNIPHIER_PINCTRL_GROUP_SPL(system_bus_cs1),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart0),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart1),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart2),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart3),
+       UNIPHIER_PINCTRL_GROUP(system_bus),
+       UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart3),
        UNIPHIER_PINCTRL_GROUP(usb0),
        UNIPHIER_PINCTRL_GROUP(usb1),
        UNIPHIER_PINCTRL_GROUP(usb2),
@@ -78,11 +78,11 @@ static const char * const uniphier_ld11_functions[] = {
        UNIPHIER_PINMUX_FUNCTION(i2c3),
        UNIPHIER_PINMUX_FUNCTION(i2c4),
        UNIPHIER_PINMUX_FUNCTION(nand),
-       UNIPHIER_PINMUX_FUNCTION_SPL(system_bus),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart0),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart1),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart2),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart3),
+       UNIPHIER_PINMUX_FUNCTION(system_bus),
+       UNIPHIER_PINMUX_FUNCTION(uart0),
+       UNIPHIER_PINMUX_FUNCTION(uart1),
+       UNIPHIER_PINMUX_FUNCTION(uart2),
+       UNIPHIER_PINMUX_FUNCTION(uart3),
        UNIPHIER_PINMUX_FUNCTION(usb0),
        UNIPHIER_PINMUX_FUNCTION(usb1),
        UNIPHIER_PINMUX_FUNCTION(usb2),
index 0b0af1c018a9e0c6e90c9cc314c9655135e53ef8..11d5d98a5a16401c69423daacbfaadec09ed1378 100644 (file)
@@ -69,12 +69,12 @@ static const struct uniphier_pinctrl_group uniphier_ld20_groups[] = {
        UNIPHIER_PINCTRL_GROUP(i2c4),
        UNIPHIER_PINCTRL_GROUP(nand),
        UNIPHIER_PINCTRL_GROUP(sd),
-       UNIPHIER_PINCTRL_GROUP_SPL(system_bus),
-       UNIPHIER_PINCTRL_GROUP_SPL(system_bus_cs1),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart0),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart1),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart2),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart3),
+       UNIPHIER_PINCTRL_GROUP(system_bus),
+       UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart3),
        UNIPHIER_PINCTRL_GROUP(usb0),
        UNIPHIER_PINCTRL_GROUP(usb1),
        UNIPHIER_PINCTRL_GROUP(usb2),
@@ -91,11 +91,11 @@ static const char * const uniphier_ld20_functions[] = {
        UNIPHIER_PINMUX_FUNCTION(i2c4),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
-       UNIPHIER_PINMUX_FUNCTION_SPL(system_bus),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart0),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart1),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart2),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart3),
+       UNIPHIER_PINMUX_FUNCTION(system_bus),
+       UNIPHIER_PINMUX_FUNCTION(uart0),
+       UNIPHIER_PINMUX_FUNCTION(uart1),
+       UNIPHIER_PINMUX_FUNCTION(uart2),
+       UNIPHIER_PINMUX_FUNCTION(uart3),
        UNIPHIER_PINMUX_FUNCTION(usb0),
        UNIPHIER_PINMUX_FUNCTION(usb1),
        UNIPHIER_PINMUX_FUNCTION(usb2),
index 86752d91ffeb955b6f24ce7b1cffa4716715e6bf..423e48b0037a826bf3dddc09d32443d71f01fb78 100644 (file)
@@ -78,12 +78,12 @@ static const struct uniphier_pinctrl_group uniphier_pxs3_groups[] = {
        UNIPHIER_PINCTRL_GROUP(i2c3),
        UNIPHIER_PINCTRL_GROUP(nand),
        UNIPHIER_PINCTRL_GROUP(sd),
-       UNIPHIER_PINCTRL_GROUP_SPL(system_bus),
-       UNIPHIER_PINCTRL_GROUP_SPL(system_bus_cs1),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart0),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart1),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart2),
-       UNIPHIER_PINCTRL_GROUP_SPL(uart3),
+       UNIPHIER_PINCTRL_GROUP(system_bus),
+       UNIPHIER_PINCTRL_GROUP(system_bus_cs1),
+       UNIPHIER_PINCTRL_GROUP(uart0),
+       UNIPHIER_PINCTRL_GROUP(uart1),
+       UNIPHIER_PINCTRL_GROUP(uart2),
+       UNIPHIER_PINCTRL_GROUP(uart3),
        UNIPHIER_PINCTRL_GROUP(usb0),
        UNIPHIER_PINCTRL_GROUP(usb1),
        UNIPHIER_PINCTRL_GROUP(usb2),
@@ -102,11 +102,11 @@ static const char * const uniphier_pxs3_functions[] = {
        UNIPHIER_PINMUX_FUNCTION(i2c3),
        UNIPHIER_PINMUX_FUNCTION(nand),
        UNIPHIER_PINMUX_FUNCTION(sd),
-       UNIPHIER_PINMUX_FUNCTION_SPL(system_bus),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart0),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart1),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart2),
-       UNIPHIER_PINMUX_FUNCTION_SPL(uart3),
+       UNIPHIER_PINMUX_FUNCTION(system_bus),
+       UNIPHIER_PINMUX_FUNCTION(uart0),
+       UNIPHIER_PINMUX_FUNCTION(uart1),
+       UNIPHIER_PINMUX_FUNCTION(uart2),
+       UNIPHIER_PINMUX_FUNCTION(uart3),
        UNIPHIER_PINMUX_FUNCTION(usb0),
        UNIPHIER_PINMUX_FUNCTION(usb1),
        UNIPHIER_PINMUX_FUNCTION(usb2),
index f488799a923458b221d19c207bde77c9eeb65743..f7bdfa560963db7fb5e737a42d27a1ed5f8d7843 100644 (file)
@@ -12,7 +12,7 @@ obj-$(CONFIG_DM_PMIC_PFUZE100) += pfuze100.o
 obj-$(CONFIG_PMIC_S2MPS11) += s2mps11.o
 obj-$(CONFIG_DM_PMIC_SANDBOX) += sandbox.o i2c_pmic_emul.o
 obj-$(CONFIG_PMIC_ACT8846) += act8846.o
-obj-$(CONFIG_PMIC_AS3722) += as3722.o
+obj-$(CONFIG_PMIC_AS3722) += as3722.o as3722_gpio.o
 obj-$(CONFIG_PMIC_MAX8997) += max8997.o
 obj-$(CONFIG_PMIC_PM8916) += pm8916.o
 obj-$(CONFIG_PMIC_RK8XX) += rk8xx.o
index c09e1de06f4c51147968978da7234a3aab7db617..4efe8ee183d5b292ea3a35d0e87a8826a8d5ebf4 100644 (file)
 #include <errno.h>
 #include <fdtdec.h>
 #include <i2c.h>
-
+#include <dm/lists.h>
 #include <power/as3722.h>
+#include <power/pmic.h>
 
-#define AS3722_SD_VOLTAGE(n) (0x00 + (n))
-#define AS3722_GPIO_CONTROL(n) (0x08 + (n))
-#define  AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH (1 << 0)
-#define  AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDL (7 << 0)
-#define  AS3722_GPIO_CONTROL_INVERT (1 << 7)
-#define AS3722_LDO_VOLTAGE(n) (0x10 + (n))
-#define AS3722_GPIO_SIGNAL_OUT 0x20
-#define AS3722_SD_CONTROL 0x4d
-#define AS3722_LDO_CONTROL 0x4e
-#define AS3722_ASIC_ID1 0x90
-#define  AS3722_DEVICE_ID 0x0c
-#define AS3722_ASIC_ID2 0x91
-
-int as3722_read(struct udevice *pmic, u8 reg, u8 *value)
-{
-       int err;
-
-       err = dm_i2c_read(pmic, reg, value, 1);
-       if (err < 0)
-               return err;
-
-       return 0;
-}
+#define AS3722_NUM_OF_REGS     0x92
 
-int as3722_write(struct udevice *pmic, u8 reg, u8 value)
+static int as3722_read(struct udevice *dev, uint reg, uint8_t *buff, int len)
 {
-       int err;
+       int ret;
 
-       err = dm_i2c_write(pmic, reg, &value, 1);
-       if (err < 0)
-               return err;
+       ret = dm_i2c_read(dev, reg, buff, len);
+       if (ret < 0)
+               return ret;
 
        return 0;
 }
 
-static int as3722_read_id(struct udevice *pmic, u8 *id, u8 *revision)
+static int as3722_write(struct udevice *dev, uint reg, const uint8_t *buff,
+                       int len)
 {
-       int err;
+       int ret;
 
-       err = as3722_read(pmic, AS3722_ASIC_ID1, id);
-       if (err) {
-               error("failed to read ID1 register: %d", err);
-               return err;
-       }
-
-       err = as3722_read(pmic, AS3722_ASIC_ID2, revision);
-       if (err) {
-               error("failed to read ID2 register: %d", err);
-               return err;
-       }
+       ret = dm_i2c_write(dev, reg, buff, len);
+       if (ret < 0)
+               return ret;
 
        return 0;
 }
 
-int as3722_sd_enable(struct udevice *pmic, unsigned int sd)
+static int as3722_read_id(struct udevice *dev, uint *idp, uint *revisionp)
 {
-       u8 value;
-       int err;
-
-       if (sd > 6)
-               return -EINVAL;
+       int ret;
 
-       err = as3722_read(pmic, AS3722_SD_CONTROL, &value);
-       if (err) {
-               error("failed to read SD control register: %d", err);
-               return err;
+       ret = pmic_reg_read(dev, AS3722_ASIC_ID1);
+       if (ret < 0) {
+               error("failed to read ID1 register: %d", ret);
+               return ret;
        }
+       *idp = ret;
 
-       value |= 1 << sd;
-
-       err = as3722_write(pmic, AS3722_SD_CONTROL, value);
-       if (err < 0) {
-               error("failed to write SD control register: %d", err);
-               return err;
+       ret = pmic_reg_read(dev, AS3722_ASIC_ID2);
+       if (ret < 0) {
+               error("failed to read ID2 register: %d", ret);
+               return ret;
        }
+       *revisionp = ret;
 
        return 0;
 }
 
-int as3722_sd_set_voltage(struct udevice *pmic, unsigned int sd, u8 value)
+/* TODO(treding@nvidia.com): Add proper regulator support to avoid this */
+int as3722_sd_set_voltage(struct udevice *dev, unsigned int sd, u8 value)
 {
-       int err;
+       int ret;
 
        if (sd > 6)
                return -EINVAL;
 
-       err = as3722_write(pmic, AS3722_SD_VOLTAGE(sd), value);
-       if (err < 0) {
-               error("failed to write SD%u voltage register: %d", sd, err);
-               return err;
+       ret = pmic_reg_write(dev, AS3722_SD_VOLTAGE(sd), value);
+       if (ret < 0) {
+               error("failed to write SD%u voltage register: %d", sd, ret);
+               return ret;
        }
 
        return 0;
 }
 
-int as3722_ldo_enable(struct udevice *pmic, unsigned int ldo)
+int as3722_ldo_set_voltage(struct udevice *dev, unsigned int ldo, u8 value)
 {
-       u8 value;
-       int err;
+       int ret;
 
        if (ldo > 11)
                return -EINVAL;
 
-       err = as3722_read(pmic, AS3722_LDO_CONTROL, &value);
-       if (err) {
-               error("failed to read LDO control register: %d", err);
-               return err;
-       }
-
-       value |= 1 << ldo;
-
-       err = as3722_write(pmic, AS3722_LDO_CONTROL, value);
-       if (err < 0) {
-               error("failed to write LDO control register: %d", err);
-               return err;
-       }
-
-       return 0;
-}
-
-int as3722_ldo_set_voltage(struct udevice *pmic, unsigned int ldo, u8 value)
-{
-       int err;
-
-       if (ldo > 11)
-               return -EINVAL;
-
-       err = as3722_write(pmic, AS3722_LDO_VOLTAGE(ldo), value);
-       if (err < 0) {
+       ret = pmic_reg_write(dev, AS3722_LDO_VOLTAGE(ldo), value);
+       if (ret < 0) {
                error("failed to write LDO%u voltage register: %d", ldo,
-                     err);
-               return err;
+                     ret);
+               return ret;
        }
 
        return 0;
 }
 
-int as3722_gpio_configure(struct udevice *pmic, unsigned int gpio,
-                         unsigned long flags)
+static int as3722_probe(struct udevice *dev)
 {
-       u8 value = 0;
-       int err;
+       uint id, revision;
+       int ret;
 
-       if (flags & AS3722_GPIO_OUTPUT_VDDH)
-               value |= AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH;
-
-       if (flags & AS3722_GPIO_INVERT)
-               value |= AS3722_GPIO_CONTROL_INVERT;
-
-       err = as3722_write(pmic, AS3722_GPIO_CONTROL(gpio), value);
-       if (err) {
-               error("failed to configure GPIO#%u: %d", gpio, err);
-               return err;
+       ret = as3722_read_id(dev, &id, &revision);
+       if (ret < 0) {
+               error("failed to read ID: %d", ret);
+               return ret;
        }
 
-       return 0;
-}
-
-static int as3722_gpio_set(struct udevice *pmic, unsigned int gpio,
-                          unsigned int level)
-{
-       const char *l;
-       u8 value;
-       int err;
-
-       if (gpio > 7)
-               return -EINVAL;
-
-       err = as3722_read(pmic, AS3722_GPIO_SIGNAL_OUT, &value);
-       if (err < 0) {
-               error("failed to read GPIO signal out register: %d", err);
-               return err;
-       }
-
-       if (level == 0) {
-               value &= ~(1 << gpio);
-               l = "low";
-       } else {
-               value |= 1 << gpio;
-               l = "high";
+       if (id != AS3722_DEVICE_ID) {
+               error("unknown device");
+               return -ENOENT;
        }
 
-       err = as3722_write(pmic, AS3722_GPIO_SIGNAL_OUT, value);
-       if (err) {
-               error("failed to set GPIO#%u %s: %d", gpio, l, err);
-               return err;
-       }
+       debug("AS3722 revision %#x found on I2C bus %s\n", revision, dev->name);
 
        return 0;
 }
 
-int as3722_gpio_direction_output(struct udevice *pmic, unsigned int gpio,
-                                unsigned int level)
-{
-       u8 value;
-       int err;
-
-       if (gpio > 7)
-               return -EINVAL;
+#if CONFIG_IS_ENABLED(PMIC_CHILDREN)
+static const struct pmic_child_info pmic_children_info[] = {
+       { .prefix = "sd", .driver = "as3722_stepdown"},
+       { .prefix = "ldo", .driver = "as3722_ldo"},
+       { },
+};
 
-       if (level == 0)
-               value = AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDL;
-       else
-               value = AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH;
+static int as3722_bind(struct udevice *dev)
+{
+       struct udevice *gpio_dev;
+       ofnode regulators_node;
+       int children;
+       int ret;
 
-       err = as3722_write(pmic, AS3722_GPIO_CONTROL(gpio), value);
-       if (err) {
-               error("failed to configure GPIO#%u as output: %d", gpio, err);
-               return err;
+       regulators_node = dev_read_subnode(dev, "regulators");
+       if (!ofnode_valid(regulators_node)) {
+               debug("%s: %s regulators subnode not found\n", __func__,
+                     dev->name);
+               return -ENXIO;
        }
 
-       err = as3722_gpio_set(pmic, gpio, level);
-       if (err < 0) {
-               error("failed to set GPIO#%u high: %d", gpio, err);
-               return err;
+       children = pmic_bind_children(dev, regulators_node, pmic_children_info);
+       if (!children)
+               debug("%s: %s - no child found\n", __func__, dev->name);
+       ret = device_bind_driver(dev, "gpio_as3722", "gpio_as3722", &gpio_dev);
+       if (ret) {
+               debug("%s: Cannot bind GPIOs (ret=%d)\n", __func__, ret);
+               return ret;
        }
 
        return 0;
 }
+#endif
 
-/* Temporary function until we get the pmic framework */
-int as3722_get(struct udevice **devp)
+static int as3722_reg_count(struct udevice *dev)
 {
-       int bus = 0;
-       int address = 0x40;
-
-       return i2c_get_chip_for_busnum(bus, address, 1, devp);
+       return AS3722_NUM_OF_REGS;
 }
 
-int as3722_init(struct udevice **devp)
-{
-       struct udevice *pmic;
-       u8 id, revision;
-       const unsigned int bus = 0;
-       const unsigned int address = 0x40;
-       int err;
-
-       err = i2c_get_chip_for_busnum(bus, address, 1, &pmic);
-       if (err)
-               return err;
-       err = as3722_read_id(pmic, &id, &revision);
-       if (err < 0) {
-               error("failed to read ID: %d", err);
-               return err;
-       }
-
-       if (id != AS3722_DEVICE_ID) {
-               error("unknown device");
-               return -ENOENT;
-       }
-
-       debug("AS3722 revision %#x found on I2C bus %u, address %#x\n",
-             revision, bus, address);
-       if (devp)
-               *devp = pmic;
-
-       return 0;
-}
+static struct dm_pmic_ops as3722_ops = {
+       .reg_count = as3722_reg_count,
+       .read = as3722_read,
+       .write = as3722_write,
+};
+
+static const struct udevice_id as3722_ids[] = {
+       { .compatible = "ams,as3722" },
+       { }
+};
+
+U_BOOT_DRIVER(pmic_as3722) = {
+       .name = "as3722_pmic",
+       .id = UCLASS_PMIC,
+       .of_match = as3722_ids,
+#if CONFIG_IS_ENABLED(PMIC_CHILDREN)
+       .bind = as3722_bind,
+#endif
+       .probe = as3722_probe,
+       .ops = &as3722_ops,
+};
diff --git a/drivers/power/pmic/as3722_gpio.c b/drivers/power/pmic/as3722_gpio.c
new file mode 100644 (file)
index 0000000..d0b681c
--- /dev/null
@@ -0,0 +1,120 @@
+/*
+ * Copyright (C) 2014 NVIDIA Corporation
+ *
+ * SPDX-License-Identifier: GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <asm/gpio.h>
+#include <power/as3722.h>
+#include <power/pmic.h>
+
+#define NUM_GPIOS      8
+
+int as3722_gpio_configure(struct udevice *pmic, unsigned int gpio,
+                         unsigned long flags)
+{
+       u8 value = 0;
+       int err;
+
+       if (flags & AS3722_GPIO_OUTPUT_VDDH)
+               value |= AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH;
+
+       if (flags & AS3722_GPIO_INVERT)
+               value |= AS3722_GPIO_CONTROL_INVERT;
+
+       err = pmic_reg_write(pmic, AS3722_GPIO_CONTROL(gpio), value);
+       if (err) {
+               error("failed to configure GPIO#%u: %d", gpio, err);
+               return err;
+       }
+
+       return 0;
+}
+
+static int as3722_gpio_set_value(struct udevice *dev, unsigned int gpio,
+                                int level)
+{
+       struct udevice *pmic = dev_get_parent(dev);
+       const char *l;
+       u8 value;
+       int err;
+
+       if (gpio >= NUM_GPIOS)
+               return -EINVAL;
+
+       err = pmic_reg_read(pmic, AS3722_GPIO_SIGNAL_OUT);
+       if (err < 0) {
+               error("failed to read GPIO signal out register: %d", err);
+               return err;
+       }
+       value = err;
+
+       if (level == 0) {
+               value &= ~(1 << gpio);
+               l = "low";
+       } else {
+               value |= 1 << gpio;
+               l = "high";
+       }
+
+       err = pmic_reg_write(pmic, AS3722_GPIO_SIGNAL_OUT, value);
+       if (err) {
+               error("failed to set GPIO#%u %s: %d", gpio, l, err);
+               return err;
+       }
+
+       return 0;
+}
+
+int as3722_gpio_direction_output(struct udevice *dev, unsigned int gpio,
+                                int value)
+{
+       struct udevice *pmic = dev_get_parent(dev);
+       int err;
+
+       if (gpio > 7)
+               return -EINVAL;
+
+       if (value == 0)
+               value = AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDL;
+       else
+               value = AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH;
+
+       err = pmic_reg_write(pmic, AS3722_GPIO_CONTROL(gpio), value);
+       if (err) {
+               error("failed to configure GPIO#%u as output: %d", gpio, err);
+               return err;
+       }
+
+       err = as3722_gpio_set_value(pmic, gpio, value);
+       if (err < 0) {
+               error("failed to set GPIO#%u high: %d", gpio, err);
+               return err;
+       }
+
+       return 0;
+}
+
+static int as3722_gpio_probe(struct udevice *dev)
+{
+       struct gpio_dev_priv *uc_priv = dev_get_uclass_priv(dev);
+
+       uc_priv->gpio_count = NUM_GPIOS;
+       uc_priv->bank_name = "as3722_";
+
+       return 0;
+}
+
+static const struct dm_gpio_ops gpio_as3722_ops = {
+       .direction_output       = as3722_gpio_direction_output,
+       .set_value              = as3722_gpio_set_value,
+};
+
+U_BOOT_DRIVER(gpio_as3722) = {
+       .name   = "gpio_as3722",
+       .id     = UCLASS_GPIO,
+       .ops    = &gpio_as3722_ops,
+       .probe  = as3722_gpio_probe,
+};
index f2134874c277af66c50bba2c4ad1e3023f12faaf..c82a936e8af3d30f7c57dc97c20a41aee7fdf8e3 100644 (file)
@@ -34,6 +34,15 @@ config REGULATOR_ACT8846
        by the PMIC device. This driver is controlled by a device tree node
        which includes voltage limits.
 
+config REGULATOR_AS3722
+       bool "Enable driver for AS7322 regulator"
+       depends on DM_REGULATOR && PMIC_AS3722
+       help
+         Enable support for the regulator functions of the AS3722. The
+         driver implements enable/disable for step-down bucks and LDOs,
+         but does not yet support change voltages. Currently this must be
+         done using direct register writes to the PMIC.
+
 config DM_REGULATOR_PFUZE100
        bool "Enable Driver Model for REGULATOR PFUZE100"
        depends on DM_REGULATOR && DM_PMIC_PFUZE100
index ce14d08fd4d86d20c52b1022f1c9492c6f1a56fc..18fb870e430ecce700a20bc18550a94e6abfdacb 100644 (file)
@@ -7,6 +7,7 @@
 
 obj-$(CONFIG_$(SPL_)DM_REGULATOR) += regulator-uclass.o
 obj-$(CONFIG_REGULATOR_ACT8846) += act8846.o
+obj-$(CONFIG_REGULATOR_AS3722) += as3722_regulator.o
 obj-$(CONFIG_DM_REGULATOR_MAX77686) += max77686.o
 obj-$(CONFIG_DM_REGULATOR_PFUZE100) += pfuze100.o
 obj-$(CONFIG_REGULATOR_PWM) += pwm_regulator.o
index d506165120865e1b760b6c1671772518b544792e..7d86aae32bbd9a72033a644af34bf869af21dde1 100644 (file)
@@ -115,7 +115,7 @@ static int reg_set_enable(struct udevice *dev, bool enable)
                               enable ? LDO_EN_MASK : 0);
 }
 
-static bool reg_get_enable(struct udevice *dev)
+static int reg_get_enable(struct udevice *dev)
 {
        int reg = dev->driver_data;
        int ret;
diff --git a/drivers/power/regulator/as3722_regulator.c b/drivers/power/regulator/as3722_regulator.c
new file mode 100644 (file)
index 0000000..3e1e6f1
--- /dev/null
@@ -0,0 +1,149 @@
+/*
+ * Copyright (C) 2017 Google, Inc
+ * Written by Simon Glass <sjg@chromium.org>
+ *
+ * Placeholder regulator driver for as3722.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <errno.h>
+#include <power/as3722.h>
+#include <power/pmic.h>
+#include <power/regulator.h>
+
+static int stepdown_get_value(struct udevice *dev)
+{
+       return -ENOSYS;
+}
+
+static int stepdown_set_value(struct udevice *dev, int uvolt)
+{
+       return -ENOSYS;
+}
+
+static int stepdown_set_enable(struct udevice *dev, bool enable)
+{
+       struct udevice *pmic = dev_get_parent(dev);
+       int sd = dev->driver_data;
+       int ret;
+
+       ret = pmic_clrsetbits(pmic, AS3722_SD_CONTROL, 0, 1 << sd);
+       if (ret < 0) {
+               debug("%s: failed to write SD control register: %d", __func__,
+                     ret);
+               return ret;
+       }
+
+       return 0;
+}
+
+static int stepdown_get_enable(struct udevice *dev)
+{
+       struct udevice *pmic = dev_get_parent(dev);
+       int sd = dev->driver_data;
+       int ret;
+
+       ret = pmic_reg_read(pmic, AS3722_SD_CONTROL);
+       if (ret < 0) {
+               debug("%s: failed to read SD control register: %d", __func__,
+                     ret);
+               return ret;
+       }
+
+       return ret & (1 << sd) ? true : false;
+}
+
+static int ldo_get_value(struct udevice *dev)
+{
+       return -ENOSYS;
+}
+
+static int ldo_set_value(struct udevice *dev, int uvolt)
+{
+       return -ENOSYS;
+}
+
+static int ldo_set_enable(struct udevice *dev, bool enable)
+{
+       struct udevice *pmic = dev_get_parent(dev);
+       int ldo = dev->driver_data;
+       int ret;
+
+       ret = pmic_clrsetbits(pmic, AS3722_LDO_CONTROL, 0, 1 << ldo);
+       if (ret < 0) {
+               debug("%s: failed to write LDO control register: %d", __func__,
+                     ret);
+               return ret;
+       }
+
+       return 0;
+}
+
+static int ldo_get_enable(struct udevice *dev)
+{
+       struct udevice *pmic = dev_get_parent(dev);
+       int ldo = dev->driver_data;
+       int ret;
+
+       ret = pmic_reg_read(pmic, AS3722_LDO_CONTROL);
+       if (ret < 0) {
+               debug("%s: failed to read SD control register: %d", __func__,
+                     ret);
+               return ret;
+       }
+
+       return ret & (1 << ldo) ? true : false;
+}
+
+static int as3722_stepdown_probe(struct udevice *dev)
+{
+       struct dm_regulator_uclass_platdata *uc_pdata;
+
+       uc_pdata = dev_get_uclass_platdata(dev);
+
+       uc_pdata->type = REGULATOR_TYPE_BUCK;
+
+       return 0;
+}
+
+static int as3722_ldo_probe(struct udevice *dev)
+{
+       struct dm_regulator_uclass_platdata *uc_pdata;
+
+       uc_pdata = dev_get_uclass_platdata(dev);
+
+       uc_pdata->type = REGULATOR_TYPE_LDO;
+
+       return 0;
+}
+
+static const struct dm_regulator_ops as3722_stepdown_ops = {
+       .get_value  = stepdown_get_value,
+       .set_value  = stepdown_set_value,
+       .get_enable = stepdown_get_enable,
+       .set_enable = stepdown_set_enable,
+};
+
+static const struct dm_regulator_ops as3722_ldo_ops = {
+       .get_value  = ldo_get_value,
+       .set_value  = ldo_set_value,
+       .get_enable = ldo_get_enable,
+       .set_enable = ldo_set_enable,
+};
+
+U_BOOT_DRIVER(as3722_stepdown) = {
+       .name = "as3722_stepdown",
+       .id = UCLASS_REGULATOR,
+       .ops = &as3722_stepdown_ops,
+       .probe = as3722_stepdown_probe,
+};
+
+U_BOOT_DRIVER(as3722_ldo) = {
+       .name = "as3722_ldo",
+       .id = UCLASS_REGULATOR,
+       .ops = &as3722_ldo_ops,
+       .probe = as3722_ldo_probe,
+};
index 656371b2351955cb35791ecdc3550a35309f9d03..35c292222b97eb8246af50dee64595a5a8620fb9 100644 (file)
@@ -89,7 +89,7 @@ static int fixed_regulator_get_current(struct udevice *dev)
        return uc_pdata->min_uA;
 }
 
-static bool fixed_regulator_get_enable(struct udevice *dev)
+static int fixed_regulator_get_enable(struct udevice *dev)
 {
        struct fixed_regulator_platdata *dev_pdata = dev_get_platdata(dev);
 
index dcb19ff25cd6f7a5d25bed5b8cb6c57a060a490c..11371a7b8baaa2891f3aabc85ca62cb54c85f6c1 100644 (file)
@@ -256,7 +256,7 @@ static int ldo_set_value(struct udevice *dev, int uV)
        return lp873x_ldo_val(dev, PMIC_OP_SET, &uV);
 }
 
-static bool ldo_get_enable(struct udevice *dev)
+static int ldo_get_enable(struct udevice *dev)
 {
        bool enable = false;
        int ret;
@@ -310,7 +310,7 @@ static int buck_set_value(struct udevice *dev, int uV)
        return lp873x_buck_val(dev, PMIC_OP_SET, &uV);
 }
 
-static bool buck_get_enable(struct udevice *dev)
+static int buck_get_enable(struct udevice *dev)
 {
        bool enable = false;
        int ret;
index 2a0b8ca64236e83a86a86ecba46bb7889358f160..d908f6d1fb2c1e720237db153473dea49234a5ae 100644 (file)
@@ -166,7 +166,7 @@ static int buck_set_value(struct udevice *dev, int uV)
        return lp87565_buck_val(dev, PMIC_OP_SET, &uV);
 }
 
-static bool buck_get_enable(struct udevice *dev)
+static int buck_get_enable(struct udevice *dev)
 {
        bool enable = false;
        int ret;
index 5e5815f3978986619cb7cc30ec6f31ae9447f564..8780806cff04fb810826645029d010552169549b 100644 (file)
@@ -688,7 +688,7 @@ static int ldo_set_value(struct udevice *dev, int uV)
        return max77686_ldo_val(dev, PMIC_OP_SET, &uV);
 }
 
-static bool ldo_get_enable(struct udevice *dev)
+static int ldo_get_enable(struct udevice *dev)
 {
        bool enable = false;
        int ret;
@@ -752,7 +752,7 @@ static int buck_set_value(struct udevice *dev, int uV)
        return max77686_buck_val(dev, PMIC_OP_SET, &uV);
 }
 
-static bool buck_get_enable(struct udevice *dev)
+static int buck_get_enable(struct udevice *dev)
 {
        bool enable = false;
        int ret;
index 841c03a5048a945854a9fe0f07cfb27f0860e65d..99614b0c58fb60cbc15ff98ce3ab3bc04148595d 100644 (file)
@@ -304,7 +304,7 @@ static int ldo_set_value(struct udevice *dev, int uV)
        return palmas_ldo_val(dev, PMIC_OP_SET, &uV);
 }
 
-static bool ldo_get_enable(struct udevice *dev)
+static int ldo_get_enable(struct udevice *dev)
 {
        bool enable = false;
        int ret;
@@ -411,7 +411,7 @@ static int smps_set_value(struct udevice *dev, int uV)
        return palmas_smps_val(dev, PMIC_OP_SET, &uV);
 }
 
-static bool smps_get_enable(struct udevice *dev)
+static int smps_get_enable(struct udevice *dev)
 {
        bool enable = false;
        int ret;
index 02f38944453d9d9bc52ad257b007aee81d3f0a30..b3370af3d12adb89e64c3b6ccf7845050a767b62 100644 (file)
@@ -524,7 +524,7 @@ static int pfuze100_regulator_set_value(struct udevice *dev, int uV)
        return pfuze100_regulator_val(dev, PMIC_OP_SET, &uV);
 }
 
-static bool pfuze100_regulator_get_enable(struct udevice *dev)
+static int pfuze100_regulator_get_enable(struct udevice *dev)
 {
        int ret;
        bool enable = false;
index 00a7cca7f7ced4b1b23578c52567ad1814279e25..b63f941990d512b2a3c94e1af9d26f6a92863648 100644 (file)
@@ -80,18 +80,14 @@ static int pwm_regulator_set_voltage(struct udevice *dev, int uvolt)
        }
 
        ret = pwm_set_config(priv->pwm, priv->pwm_id,
-                       (priv->period_ns / 100) * duty_cycle, priv->period_ns);
+                       priv->period_ns, (priv->period_ns / 100) * duty_cycle);
        if (ret) {
                dev_err(dev, "Failed to configure PWM\n");
                return ret;
        }
 
-       ret = pwm_set_enable(priv->pwm, priv->pwm_id, true);
-       if (ret) {
-               dev_err(dev, "Failed to enable PWM\n");
-               return ret;
-       }
        priv->volt_uV = uvolt;
+
        return ret;
 }
 
@@ -144,8 +140,6 @@ static int pwm_regulator_probe(struct udevice *dev)
        if (priv->init_voltage)
                pwm_regulator_set_voltage(dev, priv->init_voltage);
 
-       pwm_regulator_enable(dev, 1);
-
        return 0;
 }
 
index 0a1d1b36c067c0334600ac6cf81c0ebf62cc8c9c..426a933d66d688cd6402eb1b0a7b3d70e6cf47b0 100644 (file)
@@ -96,7 +96,7 @@ int regulator_set_current(struct udevice *dev, int uA)
        return ops->set_current(dev, uA);
 }
 
-bool regulator_get_enable(struct udevice *dev)
+int regulator_get_enable(struct udevice *dev)
 {
        const struct dm_regulator_ops *ops = dev_get_driver_ops(dev);
 
index 7c0a3aaa89538939257b1584034cf1f79ab1c3b6..76fc2eff60752536f39ceb5213d2f091922b97c1 100644 (file)
@@ -177,7 +177,7 @@ static int buck_set_enable(struct udevice *dev, bool enable)
        return _buck_set_enable(dev->parent, buck, enable);
 }
 
-static bool buck_get_enable(struct udevice *dev)
+static int buck_get_enable(struct udevice *dev)
 {
        int buck = dev->driver_data - 1;
        int ret;
@@ -236,7 +236,7 @@ static int ldo_set_enable(struct udevice *dev, bool enable)
                               enable ? mask : 0);
 }
 
-static bool ldo_get_enable(struct udevice *dev)
+static int ldo_get_enable(struct udevice *dev)
 {
        int ldo = dev->driver_data - 1;
        int ret;
@@ -262,7 +262,7 @@ static int switch_set_enable(struct udevice *dev, bool enable)
                               enable ? mask : 0);
 }
 
-static bool switch_get_enable(struct udevice *dev)
+static int switch_get_enable(struct udevice *dev)
 {
        int sw = dev->driver_data - 1;
        int ret;
index 93a3c942d12059fbefd5b6fd08fa10ee1a85f151..871da122b4485c4fbf90cdb948051fc2591bfbae 100644 (file)
@@ -186,7 +186,7 @@ static int reg_set_enable(struct udevice *dev, const struct s5m8767_para *param,
        return ret;
 }
 
-static bool ldo_get_enable(struct udevice *dev)
+static int ldo_get_enable(struct udevice *dev)
 {
        int ldo = dev->driver_data;
 
@@ -226,7 +226,7 @@ static int buck_set_value(struct udevice *dev, int uv)
        return reg_set_value(dev, &buck_param[buck], uv);
 }
 
-static bool buck_get_enable(struct udevice *dev)
+static int buck_get_enable(struct udevice *dev)
 {
        int buck = dev->driver_data;
 
index 2cca579a571a550a8b3ee78125466bd76f665496..06c09fd05151ce7b7ad0f7e638a310f6f54fef13 100644 (file)
@@ -234,7 +234,7 @@ static int buck_set_current(struct udevice *dev, int uA)
                              buck_current_range, uA);
 }
 
-static bool buck_get_enable(struct udevice *dev)
+static int buck_get_enable(struct udevice *dev)
 {
        if (out_get_mode(dev) == BUCK_OM_OFF)
                return false;
@@ -310,7 +310,7 @@ static int ldo_set_current(struct udevice *dev, int uA)
                             ldo_current_range, uA);
 }
 
-static bool ldo_get_enable(struct udevice *dev)
+static int ldo_get_enable(struct udevice *dev)
 {
        if (out_get_mode(dev) == LDO_OM_OFF)
                return false;
index affc5040717a68a5a2227eafd69828b3a2e7a603..32aeab98e2c4cc700cbf78f8bb96d94358554a26 100644 (file)
@@ -23,7 +23,7 @@ static int tps65090_fet_probe(struct udevice *dev)
        return 0;
 }
 
-static bool tps65090_fet_get_enable(struct udevice *dev)
+static int tps65090_fet_get_enable(struct udevice *dev)
 {
        struct udevice *pmic = dev_get_parent(dev);
        int ret, fet_id;
index 28de62d71611087ace2f188c85f4a57ec60f42f4..2364c2dfddc9ad9473ed5196a5dde120a432ded4 100644 (file)
@@ -29,6 +29,7 @@ static int rk_pwm_set_invert(struct udevice *dev, uint channel, bool polarity)
        struct rk_pwm_priv *priv = dev_get_priv(dev);
 
        debug("%s: polarity=%u\n", __func__, polarity);
+       priv->enable_conf &= ~(PWM_DUTY_MASK | PWM_INACTIVE_MASK);
        if (polarity)
                priv->enable_conf |= PWM_DUTY_NEGATIVE | PWM_INACTIVE_POSTIVE;
        else
index d93ac28c310a6c9b728a801fcab6ca88726c979a..b8acc1583f9deb8d45acea8ba6f2b9868fb8b53b 100644 (file)
@@ -59,7 +59,7 @@ static int tegra_pwm_ofdata_to_platdata(struct udevice *dev)
 {
        struct tegra_pwm_priv *priv = dev_get_priv(dev);
 
-       priv->regs = (struct pwm_ctlr *)devfdt_get_addr(dev);
+       priv->regs = (struct pwm_ctlr *)dev_read_addr(dev);
 
        return 0;
 }
index 902de2b6c479c4ac6b807686be1d9116e4326a55..b1b0289a1b05b178c71511b791aeada31d3125ba 100644 (file)
 #include <dm.h>
 #include <ram.h>
 #include <asm/io.h>
-#include <asm/arch/fmc.h>
-#include <asm/arch/stm32.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
+struct stm32_fmc_regs {
+       /* 0x0 */
+       u32 bcr1;       /* NOR/PSRAM Chip select control register 1 */
+       u32 btr1;       /* SRAM/NOR-Flash Chip select timing register 1 */
+       u32 bcr2;       /* NOR/PSRAM Chip select Control register 2 */
+       u32 btr2;       /* SRAM/NOR-Flash Chip select timing register 2 */
+       u32 bcr3;       /* NOR/PSRAMChip select Control register 3 */
+       u32 btr3;       /* SRAM/NOR-Flash Chip select timing register 3 */
+       u32 bcr4;       /* NOR/PSRAM Chip select Control register 4 */
+       u32 btr4;       /* SRAM/NOR-Flash Chip select timing register 4 */
+       u32 reserved1[24];
+
+       /* 0x80 */
+       u32 pcr;        /* NAND Flash control register */
+       u32 sr;         /* FIFO status and interrupt register */
+       u32 pmem;       /* Common memory space timing register */
+       u32 patt;       /* Attribute memory space timing registers  */
+       u32 reserved2[1];
+       u32 eccr;       /* ECC result registers */
+       u32 reserved3[27];
+
+       /* 0x104 */
+       u32 bwtr1;      /* SRAM/NOR-Flash write timing register 1 */
+       u32 reserved4[1];
+       u32 bwtr2;      /* SRAM/NOR-Flash write timing register 2 */
+       u32 reserved5[1];
+       u32 bwtr3;      /* SRAM/NOR-Flash write timing register 3 */
+       u32 reserved6[1];
+       u32 bwtr4;      /* SRAM/NOR-Flash write timing register 4 */
+       u32 reserved7[8];
+
+       /* 0x140 */
+       u32 sdcr1;      /* SDRAM Control register 1 */
+       u32 sdcr2;      /* SDRAM Control register 2 */
+       u32 sdtr1;      /* SDRAM Timing register 1 */
+       u32 sdtr2;      /* SDRAM Timing register 2 */
+       u32 sdcmr;      /* SDRAM Mode register */
+       u32 sdrtr;      /* SDRAM Refresh timing register */
+       u32 sdsr;       /* SDRAM Status register */
+};
+
+/*
+ * NOR/PSRAM Control register BCR1
+ * FMC controller Enable, only availabe for H7
+ */
+#define FMC_BCR1_FMCEN         BIT(31)
+
+/* Control register SDCR */
+#define FMC_SDCR_RPIPE_SHIFT   13      /* RPIPE bit shift */
+#define FMC_SDCR_RBURST_SHIFT  12      /* RBURST bit shift */
+#define FMC_SDCR_SDCLK_SHIFT   10      /* SDRAM clock divisor shift */
+#define FMC_SDCR_WP_SHIFT      9       /* Write protection shift */
+#define FMC_SDCR_CAS_SHIFT     7       /* CAS latency shift */
+#define FMC_SDCR_NB_SHIFT      6       /* Number of banks shift */
+#define FMC_SDCR_MWID_SHIFT    4       /* Memory width shift */
+#define FMC_SDCR_NR_SHIFT      2       /* Number of row address bits shift */
+#define FMC_SDCR_NC_SHIFT      0       /* Number of col address bits shift */
+
+/* Timings register SDTR */
+#define FMC_SDTR_TMRD_SHIFT    0       /* Load mode register to active */
+#define FMC_SDTR_TXSR_SHIFT    4       /* Exit self-refresh time */
+#define FMC_SDTR_TRAS_SHIFT    8       /* Self-refresh time */
+#define FMC_SDTR_TRC_SHIFT     12      /* Row cycle delay */
+#define FMC_SDTR_TWR_SHIFT     16      /* Recovery delay */
+#define FMC_SDTR_TRP_SHIFT     20      /* Row precharge delay */
+#define FMC_SDTR_TRCD_SHIFT    24      /* Row-to-column delay */
+
+#define FMC_SDCMR_NRFS_SHIFT   5
+
+#define FMC_SDCMR_MODE_NORMAL          0
+#define FMC_SDCMR_MODE_START_CLOCK     1
+#define FMC_SDCMR_MODE_PRECHARGE       2
+#define FMC_SDCMR_MODE_AUTOREFRESH     3
+#define FMC_SDCMR_MODE_WRITE_MODE      4
+#define FMC_SDCMR_MODE_SELFREFRESH     5
+#define FMC_SDCMR_MODE_POWERDOWN       6
+
+#define FMC_SDCMR_BANK_1               BIT(4)
+#define FMC_SDCMR_BANK_2               BIT(3)
+
+#define FMC_SDCMR_MODE_REGISTER_SHIFT  9
+
+#define FMC_SDSR_BUSY                  BIT(5)
+
+#define FMC_BUSY_WAIT(regs)    do { \
+               __asm__ __volatile__ ("dsb" : : : "memory"); \
+               while (regs->sdsr & FMC_SDSR_BUSY) \
+                       ; \
+       } while (0)
+
 struct stm32_sdram_control {
        u8 no_columns;
        u8 no_rows;
@@ -35,11 +123,29 @@ struct stm32_sdram_timing {
        u8 twr;
        u8 trcd;
 };
+enum stm32_fmc_bank {
+       SDRAM_BANK1,
+       SDRAM_BANK2,
+       MAX_SDRAM_BANK,
+};
+
+enum stm32_fmc_family {
+       STM32F7_FMC,
+       STM32H7_FMC,
+};
+
+struct bank_params {
+       struct stm32_sdram_control *sdram_control;
+       struct stm32_sdram_timing *sdram_timing;
+       u32 sdram_ref_count;
+       enum stm32_fmc_bank target_bank;
+};
+
 struct stm32_sdram_params {
+       struct stm32_fmc_regs *base;
        u8 no_sdram_banks;
-       struct stm32_sdram_control sdram_control;
-       struct stm32_sdram_timing sdram_timing;
-       u32 sdram_ref_count;
+       struct bank_params bank_params[MAX_SDRAM_BANK];
+       enum stm32_fmc_family family;
 };
 
 #define SDRAM_MODE_BL_SHIFT    0
@@ -49,90 +155,179 @@ struct stm32_sdram_params {
 int stm32_sdram_init(struct udevice *dev)
 {
        struct stm32_sdram_params *params = dev_get_platdata(dev);
+       struct stm32_sdram_control *control;
+       struct stm32_sdram_timing *timing;
+       struct stm32_fmc_regs *regs = params->base;
+       enum stm32_fmc_bank target_bank;
+       u32 ctb; /* SDCMR register: Command Target Bank */
+       u32 ref_count;
+       u8 i;
+
+       /* disable the FMC controller */
+       if (params->family == STM32H7_FMC)
+               clrbits_le32(&regs->bcr1, FMC_BCR1_FMCEN);
+
+       for (i = 0; i < params->no_sdram_banks; i++) {
+               control = params->bank_params[i].sdram_control;
+               timing = params->bank_params[i].sdram_timing;
+               target_bank = params->bank_params[i].target_bank;
+               ref_count = params->bank_params[i].sdram_ref_count;
+
+               writel(control->sdclk << FMC_SDCR_SDCLK_SHIFT
+                       | control->cas_latency << FMC_SDCR_CAS_SHIFT
+                       | control->no_banks << FMC_SDCR_NB_SHIFT
+                       | control->memory_width << FMC_SDCR_MWID_SHIFT
+                       | control->no_rows << FMC_SDCR_NR_SHIFT
+                       | control->no_columns << FMC_SDCR_NC_SHIFT
+                       | control->rd_pipe_delay << FMC_SDCR_RPIPE_SHIFT
+                       | control->rd_burst << FMC_SDCR_RBURST_SHIFT,
+                       &regs->sdcr1);
+
+               if (target_bank == SDRAM_BANK2)
+                       writel(control->cas_latency << FMC_SDCR_CAS_SHIFT
+                               | control->no_banks << FMC_SDCR_NB_SHIFT
+                               | control->memory_width << FMC_SDCR_MWID_SHIFT
+                               | control->no_rows << FMC_SDCR_NR_SHIFT
+                               | control->no_columns << FMC_SDCR_NC_SHIFT,
+                               &regs->sdcr2);
 
-       writel(params->sdram_control.sdclk << FMC_SDCR_SDCLK_SHIFT
-               | params->sdram_control.cas_latency << FMC_SDCR_CAS_SHIFT
-               | params->sdram_control.no_banks << FMC_SDCR_NB_SHIFT
-               | params->sdram_control.memory_width << FMC_SDCR_MWID_SHIFT
-               | params->sdram_control.no_rows << FMC_SDCR_NR_SHIFT
-               | params->sdram_control.no_columns << FMC_SDCR_NC_SHIFT
-               | params->sdram_control.rd_pipe_delay << FMC_SDCR_RPIPE_SHIFT
-               | params->sdram_control.rd_burst << FMC_SDCR_RBURST_SHIFT,
-               &STM32_SDRAM_FMC->sdcr1);
-
-       writel(params->sdram_timing.trcd << FMC_SDTR_TRCD_SHIFT
-               | params->sdram_timing.trp << FMC_SDTR_TRP_SHIFT
-               | params->sdram_timing.twr << FMC_SDTR_TWR_SHIFT
-               | params->sdram_timing.trc << FMC_SDTR_TRC_SHIFT
-               | params->sdram_timing.tras << FMC_SDTR_TRAS_SHIFT
-               | params->sdram_timing.txsr << FMC_SDTR_TXSR_SHIFT
-               | params->sdram_timing.tmrd << FMC_SDTR_TMRD_SHIFT,
-               &STM32_SDRAM_FMC->sdtr1);
-
-       writel(FMC_SDCMR_BANK_1 | FMC_SDCMR_MODE_START_CLOCK,
-              &STM32_SDRAM_FMC->sdcmr);
-       udelay(200);    /* 200 us delay, page 10, "Power-Up" */
-       FMC_BUSY_WAIT();
-
-       writel(FMC_SDCMR_BANK_1 | FMC_SDCMR_MODE_PRECHARGE,
-              &STM32_SDRAM_FMC->sdcmr);
-       udelay(100);
-       FMC_BUSY_WAIT();
-
-       writel((FMC_SDCMR_BANK_1 | FMC_SDCMR_MODE_AUTOREFRESH
-               | 7 << FMC_SDCMR_NRFS_SHIFT), &STM32_SDRAM_FMC->sdcmr);
-       udelay(100);
-       FMC_BUSY_WAIT();
-
-       writel(FMC_SDCMR_BANK_1 | (SDRAM_MODE_BL << SDRAM_MODE_BL_SHIFT
-              | params->sdram_control.cas_latency << SDRAM_MODE_CAS_SHIFT)
-              << FMC_SDCMR_MODE_REGISTER_SHIFT | FMC_SDCMR_MODE_WRITE_MODE,
-              &STM32_SDRAM_FMC->sdcmr);
-       udelay(100);
-       FMC_BUSY_WAIT();
-
-       writel(FMC_SDCMR_BANK_1 | FMC_SDCMR_MODE_NORMAL,
-              &STM32_SDRAM_FMC->sdcmr);
-       FMC_BUSY_WAIT();
-
-       /* Refresh timer */
-       writel((params->sdram_ref_count) << 1, &STM32_SDRAM_FMC->sdrtr);
+               writel(timing->trcd << FMC_SDTR_TRCD_SHIFT
+                       | timing->trp << FMC_SDTR_TRP_SHIFT
+                       | timing->twr << FMC_SDTR_TWR_SHIFT
+                       | timing->trc << FMC_SDTR_TRC_SHIFT
+                       | timing->tras << FMC_SDTR_TRAS_SHIFT
+                       | timing->txsr << FMC_SDTR_TXSR_SHIFT
+                       | timing->tmrd << FMC_SDTR_TMRD_SHIFT,
+                       &regs->sdtr1);
+
+               if (target_bank == SDRAM_BANK2)
+                       writel(timing->trcd << FMC_SDTR_TRCD_SHIFT
+                               | timing->trp << FMC_SDTR_TRP_SHIFT
+                               | timing->twr << FMC_SDTR_TWR_SHIFT
+                               | timing->trc << FMC_SDTR_TRC_SHIFT
+                               | timing->tras << FMC_SDTR_TRAS_SHIFT
+                               | timing->txsr << FMC_SDTR_TXSR_SHIFT
+                               | timing->tmrd << FMC_SDTR_TMRD_SHIFT,
+                               &regs->sdtr2);
+
+               if (target_bank == SDRAM_BANK1)
+                       ctb = FMC_SDCMR_BANK_1;
+               else
+                       ctb = FMC_SDCMR_BANK_2;
+
+               writel(ctb | FMC_SDCMR_MODE_START_CLOCK, &regs->sdcmr);
+               udelay(200);    /* 200 us delay, page 10, "Power-Up" */
+               FMC_BUSY_WAIT(regs);
+
+               writel(ctb | FMC_SDCMR_MODE_PRECHARGE, &regs->sdcmr);
+               udelay(100);
+               FMC_BUSY_WAIT(regs);
+
+               writel((ctb | FMC_SDCMR_MODE_AUTOREFRESH | 7 << FMC_SDCMR_NRFS_SHIFT),
+                      &regs->sdcmr);
+               udelay(100);
+               FMC_BUSY_WAIT(regs);
+
+               writel(ctb | (SDRAM_MODE_BL << SDRAM_MODE_BL_SHIFT
+                      | control->cas_latency << SDRAM_MODE_CAS_SHIFT)
+                      << FMC_SDCMR_MODE_REGISTER_SHIFT | FMC_SDCMR_MODE_WRITE_MODE,
+                      &regs->sdcmr);
+               udelay(100);
+               FMC_BUSY_WAIT(regs);
+
+               writel(ctb | FMC_SDCMR_MODE_NORMAL, &regs->sdcmr);
+               FMC_BUSY_WAIT(regs);
+
+               /* Refresh timer */
+               writel(ref_count << 1, &regs->sdrtr);
+       }
+
+       /* enable the FMC controller */
+       if (params->family == STM32H7_FMC)
+               setbits_le32(&regs->bcr1, FMC_BCR1_FMCEN);
 
        return 0;
 }
 
 static int stm32_fmc_ofdata_to_platdata(struct udevice *dev)
 {
-       int ret;
-       int node = dev_of_offset(dev);
-       const void *blob = gd->fdt_blob;
        struct stm32_sdram_params *params = dev_get_platdata(dev);
+       struct bank_params *bank_params;
+       ofnode bank_node;
+       char *bank_name;
+       u8 bank = 0;
 
-       params->no_sdram_banks = fdtdec_get_uint(blob, node, "mr-nbanks", 1);
-       debug("%s, no of banks = %d\n", __func__, params->no_sdram_banks);
+       dev_for_each_subnode(bank_node, dev) {
+               /* extract the bank index from DT */
+               bank_name = (char *)ofnode_get_name(bank_node);
+               strsep(&bank_name, "@");
+               if (!bank_name) {
+                       error("missing sdram bank index");
+                       return -EINVAL;
+               }
+
+               bank_params = &params->bank_params[bank];
+               strict_strtoul(bank_name, 10,
+                              (long unsigned int *)&bank_params->target_bank);
+
+               if (bank_params->target_bank >= MAX_SDRAM_BANK) {
+                       error("Found bank %d , but only bank 0 and 1 are supported",
+                             bank_params->target_bank);
+                       return -EINVAL;
+               }
 
-       fdt_for_each_subnode(node, blob, node) {
-               ret = fdtdec_get_byte_array(blob, node, "st,sdram-control",
-                                           (u8 *)&params->sdram_control,
-                                           sizeof(params->sdram_control));
-               if (ret)
-                       return ret;
-               ret = fdtdec_get_byte_array(blob, node, "st,sdram-timing",
-                                           (u8 *)&params->sdram_timing,
-                                           sizeof(params->sdram_timing));
-               if (ret)
-                       return ret;
-
-               params->sdram_ref_count = fdtdec_get_int(blob, node,
+               debug("Find bank %s %u\n", bank_name, bank_params->target_bank);
+
+               params->bank_params[bank].sdram_control =
+                       (struct stm32_sdram_control *)
+                        ofnode_read_u8_array_ptr(bank_node,
+                                                 "st,sdram-control",
+                                                 sizeof(struct stm32_sdram_control));
+
+               if (!params->bank_params[bank].sdram_control) {
+                       error("st,sdram-control not found for %s",
+                             ofnode_get_name(bank_node));
+                       return -EINVAL;
+               }
+
+
+               params->bank_params[bank].sdram_timing =
+                       (struct stm32_sdram_timing *)
+                        ofnode_read_u8_array_ptr(bank_node,
+                                                 "st,sdram-timing",
+                                                 sizeof(struct stm32_sdram_timing));
+
+               if (!params->bank_params[bank].sdram_timing) {
+                       error("st,sdram-timing not found for %s",
+                             ofnode_get_name(bank_node));
+                       return -EINVAL;
+               }
+
+
+               bank_params->sdram_ref_count = ofnode_read_u32_default(bank_node,
                                                "st,sdram-refcount", 8196);
+               bank++;
        }
 
+       params->no_sdram_banks = bank;
+       debug("%s, no of banks = %d\n", __func__, params->no_sdram_banks);
+
        return 0;
 }
 
 static int stm32_fmc_probe(struct udevice *dev)
 {
+       struct stm32_sdram_params *params = dev_get_platdata(dev);
        int ret;
+       fdt_addr_t addr;
+
+       addr = dev_read_addr(dev);
+       if (addr == FDT_ADDR_T_NONE)
+               return -EINVAL;
+
+       params->base = (struct stm32_fmc_regs *)addr;
+       params->family = dev_get_driver_data(dev);
+
 #ifdef CONFIG_CLK
        struct clk clk;
 
@@ -164,7 +359,8 @@ static struct ram_ops stm32_fmc_ops = {
 };
 
 static const struct udevice_id stm32_fmc_ids[] = {
-       { .compatible = "st,stm32-fmc" },
+       { .compatible = "st,stm32-fmc", .data = STM32F7_FMC },
+       { .compatible = "st,stm32h7-fmc", .data = STM32H7_FMC },
        { }
 };
 
index de3695ffaafc8a581a79c156e6284efd8b694d8f..307a29705f154640273521ca39fc7d70f8cc65c4 100644 (file)
@@ -42,6 +42,7 @@ int reset_get_by_index(struct udevice *dev, int index,
 
        debug("%s(dev=%p, index=%d, reset_ctl=%p)\n", __func__, dev, index,
              reset_ctl);
+       reset_ctl->dev = NULL;
 
        ret = dev_read_phandle_with_args(dev, "resets", "#reset-cells", 0,
                                          index, &args);
@@ -87,6 +88,7 @@ int reset_get_by_name(struct udevice *dev, const char *name,
 
        debug("%s(dev=%p, name=%s, reset_ctl=%p)\n", __func__, dev, name,
              reset_ctl);
+       reset_ctl->dev = NULL;
 
        index = dev_read_stringlist_search(dev, "reset-names", name);
        if (index < 0) {
@@ -97,6 +99,15 @@ int reset_get_by_name(struct udevice *dev, const char *name,
        return reset_get_by_index(dev, index, reset_ctl);
 }
 
+int reset_request(struct reset_ctl *reset_ctl)
+{
+       struct reset_ops *ops = reset_dev_ops(reset_ctl->dev);
+
+       debug("%s(reset_ctl=%p)\n", __func__, reset_ctl);
+
+       return ops->request(reset_ctl);
+}
+
 int reset_free(struct reset_ctl *reset_ctl)
 {
        struct reset_ops *ops = reset_dev_ops(reset_ctl->dev);
@@ -124,6 +135,29 @@ int reset_deassert(struct reset_ctl *reset_ctl)
        return ops->rst_deassert(reset_ctl);
 }
 
+int reset_release_all(struct reset_ctl *reset_ctl, int count)
+{
+       int i, ret;
+
+       for (i = 0; i < count; i++) {
+               debug("%s(reset_ctl[%d]=%p)\n", __func__, i, &reset_ctl[i]);
+
+               /* check if reset has been previously requested */
+               if (!reset_ctl[i].dev)
+                       continue;
+
+               ret = reset_assert(&reset_ctl[i]);
+               if (ret)
+                       return ret;
+
+               ret = reset_free(&reset_ctl[i]);
+               if (ret)
+                       return ret;
+       }
+
+       return 0;
+}
+
 UCLASS_DRIVER(reset) = {
        .id             = UCLASS_RESET,
        .name           = "reset",
index b7dd2ac1038d7ca03454c13c5614478dc7e18aba..0748a9254504c510d9ca0e7225f713d3427543ca 100644 (file)
@@ -64,6 +64,16 @@ config DM_SERIAL
          implements serial_putc() etc. The uclass interface is
          defined in include/serial.h.
 
+config SERIAL_IRQ_BUFFER
+       bool "Enable RX interrupt buffer for serial input"
+       depends on DM_SERIAL
+       default n
+       help
+         Enable RX interrupt buffer support for the serial driver.
+         This enables pasting longer strings, even when the RX FIFO
+         of the UART is not big enough (e.g. 16 bytes on the normal
+         NS16550).
+
 config SPL_DM_SERIAL
        bool "Enable Driver Model for serial drivers in SPL"
        depends on DM_SERIAL
@@ -248,6 +258,14 @@ config DEBUG_UART_PIC32
          will need to provide parameters to make this work. The driver will
          be available until the real driver model serial is running.
 
+config DEBUG_UART_MXC
+       bool "IMX Serial port"
+       depends on MXC_UART
+       help
+         Select this to enable a debug UART using the serial_mxc driver. You
+         will need to provide parameters to make this work. The driver will
+         be available until the real driver model serial is running.
+
 config DEBUG_UART_UNIPHIER
        bool "UniPhier on-chip UART"
        depends on ARCH_UNIPHIER
index c702304e79bd22e414f92c614105c76ee35e1f7c..607a1b8c1def202f67b8d9fd406861ff92f4c3b9 100644 (file)
@@ -314,6 +314,80 @@ DEBUG_UART_FUNCS
 #endif
 
 #ifdef CONFIG_DM_SERIAL
+
+#if CONFIG_IS_ENABLED(SERIAL_IRQ_BUFFER)
+
+#define BUF_COUNT      256
+
+static void rx_fifo_to_buf(struct udevice *dev)
+{
+       struct NS16550 *const com_port = dev_get_priv(dev);
+       struct ns16550_platdata *plat = dev->platdata;
+
+       /* Read all available chars into buffer */
+       while ((serial_in(&com_port->lsr) & UART_LSR_DR)) {
+               plat->buf[plat->wr_ptr++] = serial_in(&com_port->rbr);
+               plat->wr_ptr %= BUF_COUNT;
+       }
+}
+
+static int rx_pending(struct udevice *dev)
+{
+       struct ns16550_platdata *plat = dev->platdata;
+
+       /*
+        * At startup it may happen, that some already received chars are
+        * "stuck" in the RX FIFO, even with the interrupt enabled. This
+        * RX FIFO flushing makes sure, that these chars are read out and
+        * the RX interrupts works as expected.
+        */
+       rx_fifo_to_buf(dev);
+
+       return plat->rd_ptr != plat->wr_ptr ? 1 : 0;
+}
+
+static int rx_get(struct udevice *dev)
+{
+       struct ns16550_platdata *plat = dev->platdata;
+       char val;
+
+       val = plat->buf[plat->rd_ptr++];
+       plat->rd_ptr %= BUF_COUNT;
+
+       return val;
+}
+
+void ns16550_handle_irq(void *data)
+{
+       struct udevice *dev = (struct udevice *)data;
+       struct NS16550 *const com_port = dev_get_priv(dev);
+
+       /* Check if interrupt is pending */
+       if (serial_in(&com_port->iir) & UART_IIR_NO_INT)
+               return;
+
+       /* Flush all available characters from the RX FIFO into the RX buffer */
+       rx_fifo_to_buf(dev);
+}
+
+#else /* CONFIG_SERIAL_IRQ_BUFFER */
+
+static int rx_pending(struct udevice *dev)
+{
+       struct NS16550 *const com_port = dev_get_priv(dev);
+
+       return serial_in(&com_port->lsr) & UART_LSR_DR ? 1 : 0;
+}
+
+static int rx_get(struct udevice *dev)
+{
+       struct NS16550 *const com_port = dev_get_priv(dev);
+
+       return serial_in(&com_port->rbr);
+}
+
+#endif /* CONFIG_SERIAL_IRQ_BUFFER */
+
 static int ns16550_serial_putc(struct udevice *dev, const char ch)
 {
        struct NS16550 *const com_port = dev_get_priv(dev);
@@ -339,19 +413,17 @@ static int ns16550_serial_pending(struct udevice *dev, bool input)
        struct NS16550 *const com_port = dev_get_priv(dev);
 
        if (input)
-               return serial_in(&com_port->lsr) & UART_LSR_DR ? 1 : 0;
+               return rx_pending(dev);
        else
                return serial_in(&com_port->lsr) & UART_LSR_THRE ? 0 : 1;
 }
 
 static int ns16550_serial_getc(struct udevice *dev)
 {
-       struct NS16550 *const com_port = dev_get_priv(dev);
-
-       if (!(serial_in(&com_port->lsr) & UART_LSR_DR))
+       if (!ns16550_serial_pending(dev, true))
                return -EAGAIN;
 
-       return serial_in(&com_port->rbr);
+       return rx_get(dev);
 }
 
 static int ns16550_serial_setbrg(struct udevice *dev, int baudrate)
@@ -374,8 +446,39 @@ int ns16550_serial_probe(struct udevice *dev)
        com_port->plat = dev_get_platdata(dev);
        NS16550_init(com_port, -1);
 
+#if CONFIG_IS_ENABLED(SERIAL_IRQ_BUFFER)
+       if (gd->flags & GD_FLG_RELOC) {
+               struct ns16550_platdata *plat = dev->platdata;
+
+               /* Allocate the RX buffer */
+               plat->buf = malloc(BUF_COUNT);
+
+               /* Install the interrupt handler */
+               irq_install_handler(plat->irq, ns16550_handle_irq, dev);
+
+               /* Enable RX interrupts */
+               serial_out(UART_IER_RDI, &com_port->ier);
+       }
+#endif
+
+       return 0;
+}
+
+#if CONFIG_IS_ENABLED(SERIAL_PRESENT) && \
+       (!defined(CONFIG_TPL_BUILD) || defined(CONFIG_TPL_DM_SERIAL))
+static int ns16550_serial_remove(struct udevice *dev)
+{
+#if CONFIG_IS_ENABLED(SERIAL_IRQ_BUFFER)
+       if (gd->flags & GD_FLG_RELOC) {
+               struct ns16550_platdata *plat = dev->platdata;
+
+               irq_free_handler(plat->irq);
+       }
+#endif
+
        return 0;
 }
+#endif
 
 #if CONFIG_IS_ENABLED(OF_CONTROL)
 enum {
@@ -458,6 +561,15 @@ int ns16550_serial_ofdata_to_platdata(struct udevice *dev)
        if (port_type == PORT_JZ4780)
                plat->fcr |= UART_FCR_UME;
 
+#if CONFIG_IS_ENABLED(SERIAL_IRQ_BUFFER)
+       plat->irq = fdtdec_get_int(gd->fdt_blob, dev_of_offset(dev),
+                                  "interrupts", 0);
+       if (!plat->irq) {
+               debug("ns16550 interrupt not provided\n");
+               return -EINVAL;
+       }
+#endif
+
        return 0;
 }
 #endif
@@ -505,6 +617,7 @@ U_BOOT_DRIVER(ns16550_serial) = {
 #endif
        .priv_auto_alloc_size = sizeof(struct NS16550),
        .probe = ns16550_serial_probe,
+       .remove = ns16550_serial_remove,
        .ops    = &ns16550_serial_ops,
        .flags  = DM_FLAG_PRE_RELOC,
 };
index f360534683961c2e3391face53d5931b1b5bd984..9cae9fbd871a9a621e92851c27423b9e56f7bc80 100644 (file)
@@ -23,8 +23,8 @@ DECLARE_GLOBAL_DATA_PTR;
  */
 static const unsigned long baudrate_table[] = CONFIG_SYS_BAUDRATE_TABLE;
 
-#ifndef CONFIG_SYS_MALLOC_F_LEN
-#error "Serial is required before relocation - define CONFIG_SYS_MALLOC_F_LEN to make this work"
+#if !CONFIG_VAL(SYS_MALLOC_F_LEN)
+#error "Serial is required before relocation - define CONFIG_$(SPL_)SYS_MALLOC_F_LEN to make this work"
 #endif
 
 static int serial_check_stdout(const void *blob, struct udevice **devp)
index 87542f92dfd924c659155f59b2adc0b8258101ca..cc4bdcb83467126d617441582ec6f55562c5454b 100644 (file)
@@ -133,9 +133,6 @@ serial_initfunc(marvell_serial_initialize);
 serial_initfunc(max3100_serial_initialize);
 serial_initfunc(mcf_serial_initialize);
 serial_initfunc(ml2_serial_initialize);
-serial_initfunc(mpc5xx_serial_initialize);
-serial_initfunc(mpc8260_scc_serial_initialize);
-serial_initfunc(mpc8260_smc_serial_initialize);
 serial_initfunc(mpc85xx_serial_initialize);
 serial_initfunc(mpc8xx_serial_initialize);
 serial_initfunc(mxc_serial_initialize);
index 75264fb781154046b0af92a6c7f27cf32cf206a6..cce80a8559e2527f15502cd9e4e07fbb0557403e 100644 (file)
 #include <linux/compiler.h>
 
 /* UART Control Register Bit Fields.*/
-#define  URXD_CHARRDY    (1<<15)
-#define  URXD_ERR        (1<<14)
-#define  URXD_OVRRUN     (1<<13)
-#define  URXD_FRMERR     (1<<12)
-#define  URXD_BRK        (1<<11)
-#define  URXD_PRERR      (1<<10)
-#define  URXD_RX_DATA    (0xFF)
-#define  UCR1_ADEN       (1<<15) /* Auto dectect interrupt */
-#define  UCR1_ADBR       (1<<14) /* Auto detect baud rate */
-#define  UCR1_TRDYEN     (1<<13) /* Transmitter ready interrupt enable */
-#define  UCR1_IDEN       (1<<12) /* Idle condition interrupt */
-#define  UCR1_RRDYEN     (1<<9)         /* Recv ready interrupt enable */
-#define  UCR1_RDMAEN     (1<<8)         /* Recv ready DMA enable */
-#define  UCR1_IREN       (1<<7)         /* Infrared interface enable */
-#define  UCR1_TXMPTYEN   (1<<6)         /* Transimitter empty interrupt enable */
-#define  UCR1_RTSDEN     (1<<5)         /* RTS delta interrupt enable */
-#define  UCR1_SNDBRK     (1<<4)         /* Send break */
-#define  UCR1_TDMAEN     (1<<3)         /* Transmitter ready DMA enable */
-#define  UCR1_UARTCLKEN  (1<<2)         /* UART clock enabled */
-#define  UCR1_DOZE       (1<<1)         /* Doze */
-#define  UCR1_UARTEN     (1<<0)         /* UART enabled */
-#define  UCR2_ESCI      (1<<15) /* Escape seq interrupt enable */
-#define  UCR2_IRTS      (1<<14) /* Ignore RTS pin */
-#define  UCR2_CTSC      (1<<13) /* CTS pin control */
-#define  UCR2_CTS        (1<<12) /* Clear to send */
-#define  UCR2_ESCEN      (1<<11) /* Escape enable */
-#define  UCR2_PREN       (1<<8)  /* Parity enable */
-#define  UCR2_PROE       (1<<7)  /* Parity odd/even */
-#define  UCR2_STPB       (1<<6)         /* Stop */
-#define  UCR2_WS         (1<<5)         /* Word size */
-#define  UCR2_RTSEN      (1<<4)         /* Request to send interrupt enable */
-#define  UCR2_TXEN       (1<<2)         /* Transmitter enabled */
-#define  UCR2_RXEN       (1<<1)         /* Receiver enabled */
-#define  UCR2_SRST      (1<<0)  /* SW reset */
-#define  UCR3_DTREN     (1<<13) /* DTR interrupt enable */
-#define  UCR3_PARERREN   (1<<12) /* Parity enable */
-#define  UCR3_FRAERREN   (1<<11) /* Frame error interrupt enable */
-#define  UCR3_DSR        (1<<10) /* Data set ready */
-#define  UCR3_DCD        (1<<9)  /* Data carrier detect */
-#define  UCR3_RI         (1<<8)  /* Ring indicator */
-#define  UCR3_ADNIMP     (1<<7)  /* Autobaud Detection Not Improved */
-#define  UCR3_RXDSEN    (1<<6)  /* Receive status interrupt enable */
-#define  UCR3_AIRINTEN   (1<<5)  /* Async IR wake interrupt enable */
-#define  UCR3_AWAKEN    (1<<4)  /* Async wake interrupt enable */
-#define  UCR3_REF25     (1<<3)  /* Ref freq 25 MHz */
-#define  UCR3_REF30     (1<<2)  /* Ref Freq 30 MHz */
-#define  UCR3_INVT      (1<<1)  /* Inverted Infrared transmission */
-#define  UCR3_BPEN      (1<<0)  /* Preset registers enable */
-#define  UCR4_CTSTL_32   (32<<10) /* CTS trigger level (32 chars) */
-#define  UCR4_INVR      (1<<9)  /* Inverted infrared reception */
-#define  UCR4_ENIRI     (1<<8)  /* Serial infrared interrupt enable */
-#define  UCR4_WKEN      (1<<7)  /* Wake interrupt enable */
-#define  UCR4_REF16     (1<<6)  /* Ref freq 16 MHz */
-#define  UCR4_IRSC      (1<<5)  /* IR special case */
-#define  UCR4_TCEN      (1<<3)  /* Transmit complete interrupt enable */
-#define  UCR4_BKEN      (1<<2)  /* Break condition interrupt enable */
-#define  UCR4_OREN      (1<<1)  /* Receiver overrun interrupt enable */
-#define  UCR4_DREN      (1<<0)  /* Recv data ready interrupt enable */
-#define  UFCR_RXTL_SHF   0       /* Receiver trigger level shift */
-#define  UFCR_RFDIV      (7<<7)  /* Reference freq divider mask */
-#define  UFCR_RFDIV_SHF  7      /* Reference freq divider shift */
-#define  UFCR_DCEDTE    (1<<6)  /* DTE mode select */
-#define  UFCR_TXTL_SHF   10      /* Transmitter trigger level shift */
-#define  USR1_PARITYERR  (1<<15) /* Parity error interrupt flag */
-#define  USR1_RTSS      (1<<14) /* RTS pin status */
-#define  USR1_TRDY      (1<<13) /* Transmitter ready interrupt/dma flag */
-#define  USR1_RTSD      (1<<12) /* RTS delta */
-#define  USR1_ESCF      (1<<11) /* Escape seq interrupt flag */
-#define  USR1_FRAMERR    (1<<10) /* Frame error interrupt flag */
-#define  USR1_RRDY       (1<<9)         /* Receiver ready interrupt/dma flag */
-#define  USR1_TIMEOUT    (1<<7)         /* Receive timeout interrupt status */
-#define  USR1_RXDS      (1<<6)  /* Receiver idle interrupt flag */
-#define  USR1_AIRINT    (1<<5)  /* Async IR wake interrupt flag */
-#define  USR1_AWAKE     (1<<4)  /* Aysnc wake interrupt flag */
-#define  USR2_ADET      (1<<15) /* Auto baud rate detect complete */
-#define  USR2_TXFE      (1<<14) /* Transmit buffer FIFO empty */
-#define  USR2_DTRF      (1<<13) /* DTR edge interrupt flag */
-#define  USR2_IDLE      (1<<12) /* Idle condition */
-#define  USR2_IRINT     (1<<8)  /* Serial infrared interrupt flag */
-#define  USR2_WAKE      (1<<7)  /* Wake */
-#define  USR2_RTSF      (1<<4)  /* RTS edge interrupt flag */
-#define  USR2_TXDC      (1<<3)  /* Transmitter complete */
-#define  USR2_BRCD      (1<<2)  /* Break condition */
-#define  USR2_ORE        (1<<1)         /* Overrun error */
-#define  USR2_RDR        (1<<0)         /* Recv data ready */
-#define  UTS_FRCPERR    (1<<13) /* Force parity error */
-#define  UTS_LOOP        (1<<12) /* Loop tx and rx */
-#define  UTS_TXEMPTY    (1<<6)  /* TxFIFO empty */
-#define  UTS_RXEMPTY    (1<<5)  /* RxFIFO empty */
-#define  UTS_TXFULL     (1<<4)  /* TxFIFO full */
-#define  UTS_RXFULL     (1<<3)  /* RxFIFO full */
-#define  UTS_SOFTRST    (1<<0)  /* Software reset */
+#define URXD_CHARRDY   (1<<15)
+#define URXD_ERR       (1<<14)
+#define URXD_OVRRUN    (1<<13)
+#define URXD_FRMERR    (1<<12)
+#define URXD_BRK       (1<<11)
+#define URXD_PRERR     (1<<10)
+#define URXD_RX_DATA   (0xFF)
+#define UCR1_ADEN      (1<<15) /* Auto dectect interrupt */
+#define UCR1_ADBR      (1<<14) /* Auto detect baud rate */
+#define UCR1_TRDYEN    (1<<13) /* Transmitter ready interrupt enable */
+#define UCR1_IDEN      (1<<12) /* Idle condition interrupt */
+#define UCR1_RRDYEN    (1<<9)  /* Recv ready interrupt enable */
+#define UCR1_RDMAEN    (1<<8)  /* Recv ready DMA enable */
+#define UCR1_IREN      (1<<7)  /* Infrared interface enable */
+#define UCR1_TXMPTYEN  (1<<6)  /* Transimitter empty interrupt enable */
+#define UCR1_RTSDEN    (1<<5)  /* RTS delta interrupt enable */
+#define UCR1_SNDBRK    (1<<4)  /* Send break */
+#define UCR1_TDMAEN    (1<<3)  /* Transmitter ready DMA enable */
+#define UCR1_UARTCLKEN (1<<2)  /* UART clock enabled */
+#define UCR1_DOZE      (1<<1)  /* Doze */
+#define UCR1_UARTEN    (1<<0)  /* UART enabled */
+#define UCR2_ESCI      (1<<15) /* Escape seq interrupt enable */
+#define UCR2_IRTS      (1<<14) /* Ignore RTS pin */
+#define UCR2_CTSC      (1<<13) /* CTS pin control */
+#define UCR2_CTS       (1<<12) /* Clear to send */
+#define UCR2_ESCEN     (1<<11) /* Escape enable */
+#define UCR2_PREN      (1<<8)  /* Parity enable */
+#define UCR2_PROE      (1<<7)  /* Parity odd/even */
+#define UCR2_STPB      (1<<6)  /* Stop */
+#define UCR2_WS                (1<<5)  /* Word size */
+#define UCR2_RTSEN     (1<<4)  /* Request to send interrupt enable */
+#define UCR2_TXEN      (1<<2)  /* Transmitter enabled */
+#define UCR2_RXEN      (1<<1)  /* Receiver enabled */
+#define UCR2_SRST      (1<<0)  /* SW reset */
+#define UCR3_DTREN     (1<<13) /* DTR interrupt enable */
+#define UCR3_PARERREN  (1<<12) /* Parity enable */
+#define UCR3_FRAERREN  (1<<11) /* Frame error interrupt enable */
+#define UCR3_DSR       (1<<10) /* Data set ready */
+#define UCR3_DCD       (1<<9)  /* Data carrier detect */
+#define UCR3_RI                (1<<8)  /* Ring indicator */
+#define UCR3_ADNIMP    (1<<7)  /* Autobaud Detection Not Improved */
+#define UCR3_RXDSEN    (1<<6)  /* Receive status interrupt enable */
+#define UCR3_AIRINTEN  (1<<5)  /* Async IR wake interrupt enable */
+#define UCR3_AWAKEN    (1<<4)  /* Async wake interrupt enable */
+#define UCR3_REF25     (1<<3)  /* Ref freq 25 MHz */
+#define UCR3_REF30     (1<<2)  /* Ref Freq 30 MHz */
+#define UCR3_INVT      (1<<1)  /* Inverted Infrared transmission */
+#define UCR3_BPEN      (1<<0)  /* Preset registers enable */
+#define UCR4_CTSTL_32  (32<<10) /* CTS trigger level (32 chars) */
+#define UCR4_INVR      (1<<9)  /* Inverted infrared reception */
+#define UCR4_ENIRI     (1<<8)  /* Serial infrared interrupt enable */
+#define UCR4_WKEN      (1<<7)  /* Wake interrupt enable */
+#define UCR4_REF16     (1<<6)  /* Ref freq 16 MHz */
+#define UCR4_IRSC      (1<<5)  /* IR special case */
+#define UCR4_TCEN      (1<<3)  /* Transmit complete interrupt enable */
+#define UCR4_BKEN      (1<<2)  /* Break condition interrupt enable */
+#define UCR4_OREN      (1<<1)  /* Receiver overrun interrupt enable */
+#define UCR4_DREN      (1<<0)  /* Recv data ready interrupt enable */
+#define UFCR_RXTL_SHF  0       /* Receiver trigger level shift */
+#define UFCR_RFDIV     (7<<7)  /* Reference freq divider mask */
+#define UFCR_RFDIV_SHF 7       /* Reference freq divider shift */
+#define RFDIV          4       /* divide input clock by 2 */
+#define UFCR_DCEDTE    (1<<6)  /* DTE mode select */
+#define UFCR_TXTL_SHF  10      /* Transmitter trigger level shift */
+#define USR1_PARITYERR (1<<15) /* Parity error interrupt flag */
+#define USR1_RTSS      (1<<14) /* RTS pin status */
+#define USR1_TRDY      (1<<13) /* Transmitter ready interrupt/dma flag */
+#define USR1_RTSD      (1<<12) /* RTS delta */
+#define USR1_ESCF      (1<<11) /* Escape seq interrupt flag */
+#define USR1_FRAMERR   (1<<10) /* Frame error interrupt flag */
+#define USR1_RRDY      (1<<9)  /* Receiver ready interrupt/dma flag */
+#define USR1_TIMEOUT   (1<<7)  /* Receive timeout interrupt status */
+#define USR1_RXDS      (1<<6)  /* Receiver idle interrupt flag */
+#define USR1_AIRINT    (1<<5)  /* Async IR wake interrupt flag */
+#define USR1_AWAKE     (1<<4)  /* Aysnc wake interrupt flag */
+#define USR2_ADET      (1<<15) /* Auto baud rate detect complete */
+#define USR2_TXFE      (1<<14) /* Transmit buffer FIFO empty */
+#define USR2_DTRF      (1<<13) /* DTR edge interrupt flag */
+#define USR2_IDLE      (1<<12) /* Idle condition */
+#define USR2_IRINT     (1<<8)  /* Serial infrared interrupt flag */
+#define USR2_WAKE      (1<<7)  /* Wake */
+#define USR2_RTSF      (1<<4)  /* RTS edge interrupt flag */
+#define USR2_TXDC      (1<<3)  /* Transmitter complete */
+#define USR2_BRCD      (1<<2)  /* Break condition */
+#define USR2_ORE       (1<<1)  /* Overrun error */
+#define USR2_RDR       (1<<0)  /* Recv data ready */
+#define UTS_FRCPERR    (1<<13) /* Force parity error */
+#define UTS_LOOP       (1<<12) /* Loop tx and rx */
+#define UTS_TXEMPTY    (1<<6)  /* TxFIFO empty */
+#define UTS_RXEMPTY    (1<<5)  /* RxFIFO empty */
+#define UTS_TXFULL     (1<<4)  /* TxFIFO full */
+#define UTS_RXFULL     (1<<3)  /* RxFIFO full */
+#define UTS_SOFTRS     (1<<0)  /* Software reset */
+#define TXTL           2  /* reset default */
+#define RXTL           1  /* reset default */
 
 DECLARE_GLOBAL_DATA_PTR;
 
+struct mxc_uart {
+       u32 rxd;
+       u32 spare0[15];
+
+       u32 txd;
+       u32 spare1[15];
+
+       u32 cr1;
+       u32 cr2;
+       u32 cr3;
+       u32 cr4;
+
+       u32 fcr;
+       u32 sr1;
+       u32 sr2;
+       u32 esc;
+
+       u32 tim;
+       u32 bir;
+       u32 bmr;
+       u32 brc;
+
+       u32 onems;
+       u32 ts;
+};
+
+static void _mxc_serial_init(struct mxc_uart *base)
+{
+       writel(0, &base->cr1);
+       writel(0, &base->cr2);
+
+       while (!(readl(&base->cr2) & UCR2_SRST));
+
+       writel(0x704 | UCR3_ADNIMP, &base->cr3);
+       writel(0x8000, &base->cr4);
+       writel(0x2b, &base->esc);
+       writel(0, &base->tim);
+
+       writel(0, &base->ts);
+}
+
+static void _mxc_serial_setbrg(struct mxc_uart *base, unsigned long clk,
+                              unsigned long baudrate, bool use_dte)
+{
+       u32 tmp;
+
+       tmp = RFDIV << UFCR_RFDIV_SHF;
+       if (use_dte)
+               tmp |= UFCR_DCEDTE;
+       else
+               tmp |= (TXTL << UFCR_TXTL_SHF) | (RXTL << UFCR_RXTL_SHF);
+       writel(tmp, &base->fcr);
+
+       writel(0xf, &base->bir);
+       writel(clk / (2 * baudrate), &base->bmr);
+
+       writel(UCR2_WS | UCR2_IRTS | UCR2_RXEN | UCR2_TXEN | UCR2_SRST,
+              &base->cr2);
+       writel(UCR1_UARTEN, &base->cr1);
+}
+
 #ifndef CONFIG_DM_SERIAL
 
 #ifndef CONFIG_MXC_UART_BASE
 #error "define CONFIG_MXC_UART_BASE to use the MXC UART driver"
 #endif
 
-#define UART_PHYS      CONFIG_MXC_UART_BASE
-
-#define __REG(x)     (*((volatile u32 *)(x)))
-
-/* Register definitions */
-#define URXD  0x0  /* Receiver Register */
-#define UTXD  0x40 /* Transmitter Register */
-#define UCR1  0x80 /* Control Register 1 */
-#define UCR2  0x84 /* Control Register 2 */
-#define UCR3  0x88 /* Control Register 3 */
-#define UCR4  0x8c /* Control Register 4 */
-#define UFCR  0x90 /* FIFO Control Register */
-#define USR1  0x94 /* Status Register 1 */
-#define USR2  0x98 /* Status Register 2 */
-#define UESC  0x9c /* Escape Character Register */
-#define UTIM  0xa0 /* Escape Timer Register */
-#define UBIR  0xa4 /* BRM Incremental Register */
-#define UBMR  0xa8 /* BRM Modulator Register */
-#define UBRC  0xac /* Baud Rate Count Register */
-#define UTS   0xb4 /* UART Test Register (mx31) */
-
-#define TXTL  2 /* reset default */
-#define RXTL  1 /* reset default */
-#define RFDIV 4 /* divide input clock by 2 */
+#define mxc_base       ((struct mxc_uart *)CONFIG_MXC_UART_BASE)
 
 static void mxc_serial_setbrg(void)
 {
@@ -148,19 +189,14 @@ static void mxc_serial_setbrg(void)
        if (!gd->baudrate)
                gd->baudrate = CONFIG_BAUDRATE;
 
-       __REG(UART_PHYS + UFCR) = (RFDIV << UFCR_RFDIV_SHF)
-               | (TXTL << UFCR_TXTL_SHF)
-               | (RXTL << UFCR_RXTL_SHF);
-       __REG(UART_PHYS + UBIR) = 0xf;
-       __REG(UART_PHYS + UBMR) = clk / (2 * gd->baudrate);
-
+       _mxc_serial_setbrg(mxc_base, clk, gd->baudrate, false);
 }
 
 static int mxc_serial_getc(void)
 {
-       while (__REG(UART_PHYS + UTS) & UTS_RXEMPTY)
+       while (readl(&mxc_base->ts) & UTS_RXEMPTY)
                WATCHDOG_RESET();
-       return (__REG(UART_PHYS + URXD) & URXD_RX_DATA); /* mask out status from upper word */
+       return (readl(&mxc_base->rxd) & URXD_RX_DATA); /* mask out status from upper word */
 }
 
 static void mxc_serial_putc(const char c)
@@ -169,20 +205,18 @@ static void mxc_serial_putc(const char c)
        if (c == '\n')
                serial_putc('\r');
 
-       __REG(UART_PHYS + UTXD) = c;
+       writel(c, &mxc_base->txd);
 
        /* wait for transmitter to be ready */
-       while (!(__REG(UART_PHYS + UTS) & UTS_TXEMPTY))
+       while (!(readl(&mxc_base->ts) & UTS_TXEMPTY))
                WATCHDOG_RESET();
 }
 
-/*
- * Test whether a character is in the RX buffer
- */
+/* Test whether a character is in the RX buffer */
 static int mxc_serial_tstc(void)
 {
        /* If receive fifo is empty, return false */
-       if (__REG(UART_PHYS + UTS) & UTS_RXEMPTY)
+       if (readl(&mxc_base->ts) & UTS_RXEMPTY)
                return 0;
        return 1;
 }
@@ -190,28 +224,13 @@ static int mxc_serial_tstc(void)
 /*
  * Initialise the serial port with the given baudrate. The settings
  * are always 8 data bits, no parity, 1 stop bit, no start bits.
- *
  */
 static int mxc_serial_init(void)
 {
-       __REG(UART_PHYS + UCR1) = 0x0;
-       __REG(UART_PHYS + UCR2) = 0x0;
-
-       while (!(__REG(UART_PHYS + UCR2) & UCR2_SRST));
-
-       __REG(UART_PHYS + UCR3) = 0x0704 | UCR3_ADNIMP;
-       __REG(UART_PHYS + UCR4) = 0x8000;
-       __REG(UART_PHYS + UESC) = 0x002b;
-       __REG(UART_PHYS + UTIM) = 0x0;
-
-       __REG(UART_PHYS + UTS) = 0x0;
+       _mxc_serial_init(mxc_base);
 
        serial_setbrg();
 
-       __REG(UART_PHYS + UCR2) = UCR2_WS | UCR2_IRTS | UCR2_RXEN | UCR2_TXEN | UCR2_SRST;
-
-       __REG(UART_PHYS + UCR1) = UCR1_UARTEN;
-
        return 0;
 }
 
@@ -239,50 +258,12 @@ __weak struct serial_device *default_serial_console(void)
 
 #ifdef CONFIG_DM_SERIAL
 
-struct mxc_uart {
-       u32 rxd;
-       u32 spare0[15];
-
-       u32 txd;
-       u32 spare1[15];
-
-       u32 cr1;
-       u32 cr2;
-       u32 cr3;
-       u32 cr4;
-
-       u32 fcr;
-       u32 sr1;
-       u32 sr2;
-       u32 esc;
-
-       u32 tim;
-       u32 bir;
-       u32 bmr;
-       u32 brc;
-
-       u32 onems;
-       u32 ts;
-};
-
 int mxc_serial_setbrg(struct udevice *dev, int baudrate)
 {
        struct mxc_serial_platdata *plat = dev->platdata;
-       struct mxc_uart *const uart = plat->reg;
        u32 clk = imx_get_uartclk();
-       u32 tmp;
-
-       tmp = 4 << UFCR_RFDIV_SHF;
-       if (plat->use_dte)
-               tmp |= UFCR_DCEDTE;
-       writel(tmp, &uart->fcr);
-
-       writel(0xf, &uart->bir);
-       writel(clk / (2 * baudrate), &uart->bmr);
 
-       writel(UCR2_WS | UCR2_IRTS | UCR2_RXEN | UCR2_TXEN | UCR2_SRST,
-              &uart->cr2);
-       writel(UCR1_UARTEN, &uart->cr1);
+       _mxc_serial_setbrg(plat->reg, clk, baudrate, plat->use_dte);
 
        return 0;
 }
@@ -290,16 +271,8 @@ int mxc_serial_setbrg(struct udevice *dev, int baudrate)
 static int mxc_serial_probe(struct udevice *dev)
 {
        struct mxc_serial_platdata *plat = dev->platdata;
-       struct mxc_uart *const uart = plat->reg;
 
-       writel(0, &uart->cr1);
-       writel(0, &uart->cr2);
-       while (!(readl(&uart->cr2) & UCR2_SRST));
-       writel(0x704 | UCR3_ADNIMP, &uart->cr3);
-       writel(0x8000, &uart->cr4);
-       writel(0x2b, &uart->esc);
-       writel(0, &uart->tim);
-       writel(0, &uart->ts);
+       _mxc_serial_init(plat->reg);
 
        return 0;
 }
@@ -384,3 +357,29 @@ U_BOOT_DRIVER(serial_mxc) = {
        .flags = DM_FLAG_PRE_RELOC,
 };
 #endif
+
+#ifdef CONFIG_DEBUG_UART_MXC
+#include <debug_uart.h>
+
+static inline void _debug_uart_init(void)
+{
+       struct mxc_uart *base = (struct mxc_uart *)CONFIG_DEBUG_UART_BASE;
+
+       _mxc_serial_init(base);
+       _mxc_serial_setbrg(base, CONFIG_DEBUG_UART_CLOCK,
+                          CONFIG_BAUDRATE, false);
+}
+
+static inline void _debug_uart_putc(int ch)
+{
+       struct mxc_uart *base = (struct mxc_uart *)CONFIG_DEBUG_UART_BASE;
+
+       while (!(readl(&base->ts) & UTS_TXEMPTY))
+               WATCHDOG_RESET();
+
+       writel(ch, &base->txd);
+}
+
+DEBUG_UART_FUNCS
+
+#endif
index 61e8167a3bc9e1d4df566aaccc61c27de6dacb4c..bf118a78cf9dc17151148fa35dd8cb1c320c68f7 100644 (file)
@@ -11,7 +11,6 @@
 #include <asm/io.h>
 #include <serial.h>
 #include <asm/arch/stm32.h>
-#include <dm/platform_data/serial_stm32x7.h>
 #include "serial_stm32x7.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -20,16 +19,9 @@ static int stm32_serial_setbrg(struct udevice *dev, int baudrate)
 {
        struct stm32x7_serial_platdata *plat = dev->platdata;
        struct stm32_usart *const usart = plat->base;
-       u32  clock, int_div, mantissa, fraction, oversampling;
+       u32 int_div, mantissa, fraction, oversampling;
 
-       if (((u32)usart & STM32_BUS_MASK) == APB1_PERIPH_BASE)
-               clock = clock_get(CLOCK_APB1);
-       else if (((u32)usart & STM32_BUS_MASK) == APB2_PERIPH_BASE)
-               clock = clock_get(CLOCK_APB2);
-       else
-               return -EINVAL;
-
-       int_div = DIV_ROUND_CLOSEST(clock, baudrate);
+       int_div = DIV_ROUND_CLOSEST(plat->clock_rate, baudrate);
 
        if (int_div < 16) {
                oversampling = 8;
@@ -102,6 +94,12 @@ static int stm32_serial_probe(struct udevice *dev)
        }
 #endif
 
+       plat->clock_rate = clk_get_rate(&clk);
+       if (plat->clock_rate < 0) {
+               clk_disable(&clk);
+               return plat->clock_rate;
+       };
+
        /* Disable usart-> disable overrun-> enable usart */
        clrbits_le32(&usart->cr1, USART_CR1_RE | USART_CR1_TE | USART_CR1_UE);
        setbits_le32(&usart->cr3, USART_CR3_OVRDIS);
index facfdbabe89000808e16a4ea1c170fd11374eed3..9fe37af5cc998db1d3bb563fefe679a3a5364ca7 100644 (file)
@@ -22,6 +22,11 @@ struct stm32_usart {
        u32 tx_dr;
 };
 
+/* Information about a serial port */
+struct stm32x7_serial_platdata {
+       struct stm32_usart *base;  /* address of registers in physical memory */
+       unsigned long int clock_rate;
+};
 
 #define USART_CR1_OVER8                        (1 << 15)
 #define USART_CR1_TE                   (1 << 3)
index fc2786e270a6cf5f40ce9e965fe0063414532b9a..e1562c36b7a6b5ecec5892d8ba85719cdda0e7f7 100644 (file)
@@ -12,7 +12,7 @@
 #include <asm/gpio.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/clock.h>
-#include <asm/imx-common/spi.h>
+#include <asm/mach-imx/spi.h>
 
 #ifdef CONFIG_MX27
 /* i.MX27 has a completely wrong register layout and register definitions in the
index 61daeba7b10bf607383ad57485b25790355dfa79..790db78a02ef470e960cbe1494e4e60bca9cd095 100644 (file)
@@ -19,7 +19,7 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/sys_proto.h>
-#include <asm/imx-common/dma.h>
+#include <asm/mach-imx/dma.h>
 
 #define        MXS_SPI_MAX_TIMEOUT     1000000
 #define        MXS_SPI_PORT_OFFSET     0x2000
index f0434a4413dd2ec8179d27c981f1f7bd7b7af531..ef2b64ec5fbb3a30c61d9a92d2788d965e0a7ef6 100644 (file)
@@ -165,6 +165,7 @@ struct stm32_qspi_platdata {
 
 struct stm32_qspi_priv {
        struct stm32_qspi_regs *regs;
+       ulong clock_rate;
        u32 max_hz;
        u32 mode;
 
@@ -471,6 +472,13 @@ static int stm32_qspi_probe(struct udevice *bus)
                dev_err(bus, "failed to enable clock\n");
                return ret;
        }
+
+       priv->clock_rate = clk_get_rate(&clk);
+       if (priv->clock_rate < 0) {
+               clk_disable(&clk);
+               return priv->clock_rate;
+       }
+
 #endif
 
        setbits_le32(&priv->regs->cr, STM32_QSPI_CR_SSHIFT);
@@ -536,7 +544,7 @@ static int stm32_qspi_set_speed(struct udevice *bus, uint speed)
        if (speed > plat->max_hz)
                speed = plat->max_hz;
 
-       u32 qspi_clk = clock_get(CLOCK_AHB);
+       u32 qspi_clk = priv->clock_rate;
        u32 prescaler = 255;
        if (speed > 0) {
                prescaler = DIV_ROUND_UP(qspi_clk, speed) - 1;
index 91659349a3dbd90df2df72b748957dac2795c62c..04b4fce0612bbd14221f595ae3e65d73beb22e0f 100644 (file)
@@ -12,7 +12,6 @@
 #include <asm/arch/clock.h>
 #include <asm/arch-tegra/clk_rst.h>
 #include <spi.h>
-#include <fdtdec.h>
 #include "tegra_spi.h"
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -100,11 +99,9 @@ struct tegra114_spi_priv {
 static int tegra114_spi_ofdata_to_platdata(struct udevice *bus)
 {
        struct tegra_spi_platdata *plat = bus->platdata;
-       const void *blob = gd->fdt_blob;
-       int node = dev_of_offset(bus);
 
-       plat->base = devfdt_get_addr(bus);
-       plat->periph_id = clock_decode_periph_id(blob, node);
+       plat->base = dev_read_addr(bus);
+       plat->periph_id = clock_decode_periph_id(bus);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
                debug("%s: could not decode periph id %d\n", __func__,
@@ -113,10 +110,10 @@ static int tegra114_spi_ofdata_to_platdata(struct udevice *bus)
        }
 
        /* Use 500KHz as a suitable default */
-       plat->frequency = fdtdec_get_int(blob, node, "spi-max-frequency",
-                                       500000);
-       plat->deactivate_delay_us = fdtdec_get_int(blob, node,
-                                       "spi-deactivate-delay", 0);
+       plat->frequency = dev_read_u32_default(bus, "spi-max-frequency",
+                                              500000);
+       plat->deactivate_delay_us = dev_read_u32_default(bus,
+                                               "spi-deactivate-delay", 0);
        debug("%s: base=%#08lx, periph_id=%d, max-frequency=%d, deactivate_delay=%d\n",
              __func__, plat->base, plat->periph_id, plat->frequency,
              plat->deactivate_delay_us);
index 299e1b44faa43e5515f3783a79ebcb9c56b86a7d..e70210d7abf86949e8942132caaef3eaae3be7a1 100644 (file)
@@ -91,7 +91,7 @@ static int tegra20_sflash_ofdata_to_platdata(struct udevice *bus)
        int node = dev_of_offset(bus);
 
        plat->base = devfdt_get_addr(bus);
-       plat->periph_id = clock_decode_periph_id(blob, node);
+       plat->periph_id = clock_decode_periph_id(bus);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
                debug("%s: could not decode periph id %d\n", __func__,
index 4cbde7b22ff1b809724076c1d693343f1f8666c7..f242574760e3eec48f6811e6d950071f27ff2f29 100644 (file)
@@ -97,7 +97,7 @@ static int tegra30_spi_ofdata_to_platdata(struct udevice *bus)
        int node = dev_of_offset(bus);
 
        plat->base = devfdt_get_addr(bus);
-       plat->periph_id = clock_decode_periph_id(blob, node);
+       plat->periph_id = clock_decode_periph_id(bus);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
                debug("%s: could not decode periph id %d\n", __func__,
index 6d0b5da2611b82ee52c8e0cf02749fb285b64a97..2a35a583f5438efabe6f2949a86f8e8673a842fe 100644 (file)
@@ -100,7 +100,7 @@ static int tegra210_qspi_ofdata_to_platdata(struct udevice *bus)
        int node = dev_of_offset(bus);
 
        plat->base = devfdt_get_addr(bus);
-       plat->periph_id = clock_decode_periph_id(blob, node);
+       plat->periph_id = clock_decode_periph_id(bus);
 
        if (plat->periph_id == PERIPH_ID_NONE) {
                debug("%s: could not decode periph id %d\n", __func__,
index 9ffda9cc7479061cfd121a47d5a5838da5c1447d..1432858fd594cd3b70ba7b4a4b0ddb9334fd3f35 100644 (file)
@@ -96,7 +96,12 @@ static struct usb_hub_descriptor hub_desc = {
                                                                1 << 7),
        .bPwrOn2PwrGood         = 2,
        .bHubContrCurrent       = 5,
-       .DeviceRemovable        = {0, 0xff}, /* all ports removeable */
+       {
+               {
+                       /* all ports removeable */
+                       .DeviceRemovable        = {0, 0xff}
+               }
+       }
 #if SANDBOX_NUM_PORTS > 8
 #error "This code sets up an incorrect mask"
 #endif
index a60e9487e7746d62a98d8aa04db11a335aeb9f9c..cd4d9e659a39bb7b205a1898531194c71901c439 100644 (file)
@@ -891,6 +891,7 @@ static void thor_func_disable(struct usb_function *f)
        }
 
        if (dev->out_ep->driver_data) {
+               free(dev->out_req->buf);
                dev->out_req->buf = NULL;
                usb_ep_free_request(dev->out_ep, dev->out_req);
                usb_ep_disable(dev->out_ep);
index bc2c1f17e588e762e3dadf4774108bdbe5b0af02..67ad72b4a2c2e6c2f9d4f39aac9ccdc11fec9758 100644 (file)
@@ -31,6 +31,13 @@ config USB_XHCI_MVEBU
          SoCs, which includes Armada8K, Armada3700 and other Armada
          family SoCs.
 
+config USB_XHCI_PCI
+       bool "Support for PCI-based xHCI USB controller"
+       depends on DM_USB
+       default y if X86
+       help
+         Enables support for the PCI-based xHCI controller.
+
 config USB_XHCI_ROCKCHIP
        bool "Support for Rockchip on-chip xHCI USB controller"
        depends on ARCH_ROCKCHIP
index fb7846289372b0f8a0c67c0f7539ee8563afd424..03f8d321af13e3ddb04c46ae9a66d16b82defe73 100644 (file)
@@ -6,6 +6,8 @@
 
 #include <common.h>
 #include <clk.h>
+#include <dm/ofnode.h>
+#include <generic-phy.h>
 #include <reset.h>
 #include <asm/io.h>
 #include <dm.h>
  */
 struct generic_ehci {
        struct ehci_ctrl ctrl;
+       struct clk *clocks;
+       struct reset_ctl *resets;
+       struct phy phy;
+       int clock_count;
+       int reset_count;
 };
 
 static int ehci_usb_probe(struct udevice *dev)
 {
+       struct generic_ehci *priv = dev_get_priv(dev);
        struct ehci_hccr *hccr;
        struct ehci_hcor *hcor;
-       int i;
-
-       for (i = 0; ; i++) {
-               struct clk clk;
-               int ret;
-
-               ret = clk_get_by_index(dev, i, &clk);
-               if (ret < 0)
-                       break;
-               if (clk_enable(&clk))
-                       printf("failed to enable clock %d\n", i);
-               clk_free(&clk);
+       int i, err, ret, clock_nb, reset_nb;
+
+       err = 0;
+       priv->clock_count = 0;
+       clock_nb = ofnode_count_phandle_with_args(dev_ofnode(dev), "clocks",
+                                                 "#clock-cells");
+       if (clock_nb > 0) {
+               priv->clocks = devm_kcalloc(dev, clock_nb, sizeof(struct clk),
+                                           GFP_KERNEL);
+               if (!priv->clocks)
+                       return -ENOMEM;
+
+               for (i = 0; i < clock_nb; i++) {
+                       err = clk_get_by_index(dev, i, &priv->clocks[i]);
+
+                       if (err < 0)
+                               break;
+                       err = clk_enable(&priv->clocks[i]);
+                       if (err) {
+                               error("failed to enable clock %d\n", i);
+                               clk_free(&priv->clocks[i]);
+                               goto clk_err;
+                       }
+                       priv->clock_count++;
+               }
+       } else {
+               if (clock_nb != -ENOENT) {
+                       error("failed to get clock phandle(%d)\n", clock_nb);
+                       return clock_nb;
+               }
+       }
+
+       priv->reset_count = 0;
+       reset_nb = ofnode_count_phandle_with_args(dev_ofnode(dev), "resets",
+                                                 "#reset-cells");
+       if (reset_nb > 0) {
+               priv->resets = devm_kcalloc(dev, reset_nb,
+                                           sizeof(struct reset_ctl),
+                                           GFP_KERNEL);
+               if (!priv->resets)
+                       return -ENOMEM;
+
+               for (i = 0; i < reset_nb; i++) {
+                       err = reset_get_by_index(dev, i, &priv->resets[i]);
+                       if (err < 0)
+                               break;
+
+                       if (reset_deassert(&priv->resets[i])) {
+                               error("failed to deassert reset %d\n", i);
+                               reset_free(&priv->resets[i]);
+                               goto reset_err;
+                       }
+                       priv->reset_count++;
+               }
+       } else {
+               if (reset_nb != -ENOENT) {
+                       error("failed to get reset phandle(%d)\n", reset_nb);
+                       goto clk_err;
+               }
        }
 
-       for (i = 0; ; i++) {
-               struct reset_ctl reset;
-               int ret;
+       err = generic_phy_get_by_index(dev, 0, &priv->phy);
+       if (err) {
+               if (err != -ENOENT) {
+                       error("failed to get usb phy\n");
+                       goto reset_err;
+               }
+       } else {
 
-               ret = reset_get_by_index(dev, i, &reset);
-               if (ret < 0)
-                       break;
-               if (reset_deassert(&reset))
-                       printf("failed to deassert reset %d\n", i);
-               reset_free(&reset);
+               err = generic_phy_init(&priv->phy);
+               if (err) {
+                       error("failed to init usb phy\n");
+                       goto reset_err;
+               }
        }
 
        hccr = map_physmem(devfdt_get_addr(dev), 0x100, MAP_NOCACHE);
        hcor = (struct ehci_hcor *)((uintptr_t)hccr +
                                    HC_LENGTH(ehci_readl(&hccr->cr_capbase)));
 
-       return ehci_register(dev, hccr, hcor, NULL, 0, USB_INIT_HOST);
+       err = ehci_register(dev, hccr, hcor, NULL, 0, USB_INIT_HOST);
+       if (err)
+               goto phy_err;
+
+       return 0;
+
+phy_err:
+       if (generic_phy_valid(&priv->phy)) {
+               ret = generic_phy_exit(&priv->phy);
+               if (ret)
+                       error("failed to release phy\n");
+       }
+
+reset_err:
+       ret = reset_release_all(priv->resets, priv->reset_count);
+       if (ret)
+               error("failed to assert all resets\n");
+clk_err:
+       ret = clk_release_all(priv->clocks, priv->clock_count);
+       if (ret)
+               error("failed to disable all clocks\n");
+
+       return err;
+}
+
+static int ehci_usb_remove(struct udevice *dev)
+{
+       struct generic_ehci *priv = dev_get_priv(dev);
+       int ret;
+
+       ret = ehci_deregister(dev);
+       if (ret)
+               return ret;
+
+       if (generic_phy_valid(&priv->phy)) {
+               ret = generic_phy_exit(&priv->phy);
+               if (ret)
+                       return ret;
+       }
+
+       ret =  reset_release_all(priv->resets, priv->reset_count);
+       if (ret)
+               return ret;
+
+       return clk_release_all(priv->clocks, priv->clock_count);
 }
 
 static const struct udevice_id ehci_usb_ids[] = {
@@ -67,7 +169,7 @@ U_BOOT_DRIVER(ehci_generic) = {
        .id     = UCLASS_USB,
        .of_match = ehci_usb_ids,
        .probe = ehci_usb_probe,
-       .remove = ehci_deregister,
+       .remove = ehci_usb_remove,
        .ops    = &ehci_usb_ops,
        .priv_auto_alloc_size = sizeof(struct generic_ehci),
        .flags  = DM_FLAG_ALLOC_PRIV_DMA,
index 13aa70d606614a61eb0db6fd04a4651786958671..3243c1d1cf250a9de353b8c05d46acd12b1efa6d 100644 (file)
@@ -52,8 +52,8 @@ static struct descriptor {
                0,              /* wHubCharacteristics */
                10,             /* bPwrOn2PwrGood */
                0,              /* bHubCntrCurrent */
-               {},             /* Device removable */
-               {}              /* at most 7 ports! XXX */
+               {               /* Device removable */
+                             /* at most 7 ports! XXX */
        },
        {
                0x12,           /* bLength */
@@ -148,9 +148,12 @@ static void ehci_powerup_fixup(struct ehci_ctrl *ctrl, uint32_t *status_reg,
 
 static uint32_t *ehci_get_portsc_register(struct ehci_ctrl *ctrl, int port)
 {
-       if (port < 0 || port >= CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS) {
+       int max_ports = HCS_N_PORTS(ehci_readl(&ctrl->hccr->cr_hcsparams));
+
+       if (port < 0 || port >= max_ports) {
                /* Printing the message would cause a scan failure! */
-               debug("The request port(%u) is not configured\n", port);
+               debug("The request port(%u) exceeds maximum port number\n",
+                     port);
                return NULL;
        }
 
@@ -205,6 +208,7 @@ static int ehci_shutdown(struct ehci_ctrl *ctrl)
 {
        int i, ret = 0;
        uint32_t cmd, reg;
+       int max_ports = HCS_N_PORTS(ehci_readl(&ctrl->hccr->cr_hcsparams));
 
        if (!ctrl || !ctrl->hcor)
                return -EINVAL;
@@ -219,7 +223,7 @@ static int ehci_shutdown(struct ehci_ctrl *ctrl)
                100 * 1000);
 
        if (!ret) {
-               for (i = 0; i < CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS; i++) {
+               for (i = 0; i < max_ports; i++) {
                        reg = ehci_readl(&ctrl->hcor->or_portsc[i]);
                        reg |= EHCI_PS_SUSP;
                        ehci_writel(&ctrl->hcor->or_portsc[i], reg);
@@ -937,7 +941,7 @@ unknown:
        return -1;
 }
 
-const struct ehci_ops default_ehci_ops = {
+static const struct ehci_ops default_ehci_ops = {
        .set_usb_mode           = ehci_set_usbmode,
        .get_port_speed         = ehci_get_port_speed,
        .powerup_fixup          = ehci_powerup_fixup,
index f348ec9bca9d8ff1c6b4bf0bb8018986e0d384ce..fe2627ea937c6e3bfc1b2313c4103167e16ef6c9 100644 (file)
@@ -14,8 +14,8 @@
 #include <asm/io.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/clock.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/sys_proto.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/sys_proto.h>
 #include <dm.h>
 #include <asm/mach-types.h>
 #include <power/regulator.h>
index 7dc37f045d96ed599798195c1f03d26088e37bfe..1c72330b0c54e23c482492b7b932cccfa7366607 100644 (file)
@@ -17,7 +17,6 @@
 #include <usb.h>
 #include <usb/ulpi.h>
 #include <libfdt.h>
-#include <fdtdec.h>
 
 #include "ehci.h"
 
@@ -695,12 +694,11 @@ static void config_clock(const u32 timing[])
 
 static int fdt_decode_usb(struct udevice *dev, struct fdt_usb *config)
 {
-       const void *blob = gd->fdt_blob;
-       int node = dev_of_offset(dev);
        const char *phy, *mode;
 
-       config->reg = (struct usb_ctlr *)devfdt_get_addr(dev);
-       mode = fdt_getprop(blob, node, "dr_mode", NULL);
+       config->reg = (struct usb_ctlr *)dev_read_addr(dev);
+       debug("reg=%p\n", config->reg);
+       mode = dev_read_string(dev, "dr_mode");
        if (mode) {
                if (0 == strcmp(mode, "host"))
                        config->dr_mode = DR_MODE_HOST;
@@ -717,28 +715,24 @@ static int fdt_decode_usb(struct udevice *dev, struct fdt_usb *config)
                config->dr_mode = DR_MODE_HOST;
        }
 
-       phy = fdt_getprop(blob, node, "phy_type", NULL);
+       phy = dev_read_string(dev, "phy_type");
        config->utmi = phy && 0 == strcmp("utmi", phy);
        config->ulpi = phy && 0 == strcmp("ulpi", phy);
-       config->enabled = fdtdec_get_is_enabled(blob, node);
-       config->has_legacy_mode = fdtdec_get_bool(blob, node,
-                                                 "nvidia,has-legacy-mode");
-       config->periph_id = clock_decode_periph_id(blob, node);
+       config->has_legacy_mode = dev_read_bool(dev, "nvidia,has-legacy-mode");
+       config->periph_id = clock_decode_periph_id(dev);
        if (config->periph_id == PERIPH_ID_NONE) {
                debug("%s: Missing/invalid peripheral ID\n", __func__);
                return -EINVAL;
        }
-       gpio_request_by_name_nodev(offset_to_ofnode(node), "nvidia,vbus-gpio",
-                                  0, &config->vbus_gpio, GPIOD_IS_OUT);
-       gpio_request_by_name_nodev(offset_to_ofnode(node),
-                                  "nvidia,phy-reset-gpio", 0,
-                                  &config->phy_reset_gpio, GPIOD_IS_OUT);
-       debug("enabled=%d, legacy_mode=%d, utmi=%d, ulpi=%d, periph_id=%d, "
-               "vbus=%d, phy_reset=%d, dr_mode=%d\n",
-               config->enabled, config->has_legacy_mode, config->utmi,
-               config->ulpi, config->periph_id,
-               gpio_get_number(&config->vbus_gpio),
-               gpio_get_number(&config->phy_reset_gpio), config->dr_mode);
+       gpio_request_by_name(dev, "nvidia,vbus-gpio", 0, &config->vbus_gpio,
+                            GPIOD_IS_OUT);
+       gpio_request_by_name(dev, "nvidia,phy-reset-gpio", 0,
+                            &config->phy_reset_gpio, GPIOD_IS_OUT);
+       debug("legacy_mode=%d, utmi=%d, ulpi=%d, periph_id=%d, vbus=%d, phy_reset=%d, dr_mode=%d, reg=%p\n",
+             config->has_legacy_mode, config->utmi, config->ulpi,
+             config->periph_id, gpio_get_number(&config->vbus_gpio),
+             gpio_get_number(&config->phy_reset_gpio), config->dr_mode,
+             config->reg);
 
        return 0;
 }
index a7f6f21fa2c9e0b3477f7d8b1c07dace16f0e3f2..5bb3763814197217a945d64f456cf61a94a5e69d 100644 (file)
@@ -17,8 +17,8 @@
 #include <asm/arch/clock.h>
 #include <asm/arch/imx-regs.h>
 #include <asm/arch/crm_regs.h>
-#include <asm/imx-common/iomux-v3.h>
-#include <asm/imx-common/regs-usbphy.h>
+#include <asm/mach-imx/iomux-v3.h>
+#include <asm/mach-imx/regs-usbphy.h>
 #include <usb/ehci-ci.h>
 #include <libfdt.h>
 #include <fdtdec.h>
index 2ab830df5155a51c33828fe2a28e83eebba04ebc..7c39becd247e03caab60ba0a787f6024a4f28434 100644 (file)
@@ -11,9 +11,8 @@
 
 #include <usb.h>
 
-#if !defined(CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS)
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     2
-#endif
+/* Section 2.2.3 - N_PORTS */
+#define MAX_HC_PORTS           15
 
 /*
  * Register Space.
@@ -62,7 +61,7 @@ struct ehci_hcor {
        uint32_t _reserved_1_[6];
        uint32_t or_configflag;
 #define FLAG_CF                (1 << 0)        /* true:  we'll support "high speed" */
-       uint32_t or_portsc[CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS];
+       uint32_t or_portsc[MAX_HC_PORTS];
 #define PORTSC_PSPD(x)         (((x) >> 26) & 0x3)
 #define PORTSC_PSPD_FS                 0x0
 #define PORTSC_PSPD_LS                 0x1
index f85738fb05f0525ba29840ce84af5066dcfa8573..e22ee9793914d27b7b146303881a18054eacd695 100644 (file)
@@ -5,7 +5,11 @@
  */
 
 #include <common.h>
+#include <clk.h>
 #include <dm.h>
+#include <dm/ofnode.h>
+#include <generic-phy.h>
+#include <reset.h>
 #include "ohci.h"
 
 #if !defined(CONFIG_USB_OHCI_NEW)
 
 struct generic_ohci {
        ohci_t ohci;
+       struct clk *clocks;     /* clock list */
+       struct reset_ctl *resets; /* reset list */
+       struct phy phy;
+       int clock_count;        /* number of clock in clock list */
+       int reset_count;        /* number of reset in reset list */
 };
 
 static int ohci_usb_probe(struct udevice *dev)
 {
        struct ohci_regs *regs = (struct ohci_regs *)devfdt_get_addr(dev);
+       struct generic_ohci *priv = dev_get_priv(dev);
+       int i, err, ret, clock_nb, reset_nb;
 
-       return ohci_register(dev, regs);
+       err = 0;
+       priv->clock_count = 0;
+       clock_nb = dev_count_phandle_with_args(dev, "clocks", "#clock-cells");
+       if (clock_nb > 0) {
+               priv->clocks = devm_kcalloc(dev, clock_nb, sizeof(struct clk),
+                                           GFP_KERNEL);
+               if (!priv->clocks)
+                       return -ENOMEM;
+
+               for (i = 0; i < clock_nb; i++) {
+                       err = clk_get_by_index(dev, i, &priv->clocks[i]);
+                       if (err < 0)
+                               break;
+
+                       err = clk_enable(&priv->clocks[i]);
+                       if (err) {
+                               error("failed to enable clock %d\n", i);
+                               clk_free(&priv->clocks[i]);
+                               goto clk_err;
+                       }
+                       priv->clock_count++;
+               }
+       } else if (clock_nb != -ENOENT) {
+               error("failed to get clock phandle(%d)\n", clock_nb);
+               return clock_nb;
+       }
+
+       priv->reset_count = 0;
+       reset_nb = dev_count_phandle_with_args(dev, "resets", "#reset-cells");
+       if (reset_nb > 0) {
+               priv->resets = devm_kcalloc(dev, reset_nb,
+                                           sizeof(struct reset_ctl),
+                                           GFP_KERNEL);
+               if (!priv->resets)
+                       return -ENOMEM;
+
+               for (i = 0; i < reset_nb; i++) {
+                       err = reset_get_by_index(dev, i, &priv->resets[i]);
+                       if (err < 0)
+                               break;
+
+                       err = reset_deassert(&priv->resets[i]);
+                       if (err) {
+                               error("failed to deassert reset %d\n", i);
+                               reset_free(&priv->resets[i]);
+                               goto reset_err;
+                       }
+                       priv->reset_count++;
+               }
+       } else if (reset_nb != -ENOENT) {
+               error("failed to get reset phandle(%d)\n", reset_nb);
+               goto clk_err;
+       }
+
+       err = generic_phy_get_by_index(dev, 0, &priv->phy);
+       if (err) {
+               if (err != -ENOENT) {
+                       error("failed to get usb phy\n");
+                       goto reset_err;
+               }
+       } else {
+
+               err = generic_phy_init(&priv->phy);
+               if (err) {
+                       error("failed to init usb phy\n");
+                       goto reset_err;
+               }
+       }
+
+       err = ohci_register(dev, regs);
+       if (err)
+               goto phy_err;
+
+       return 0;
+
+phy_err:
+       if (generic_phy_valid(&priv->phy)) {
+               ret = generic_phy_exit(&priv->phy);
+               if (ret)
+                       error("failed to release phy\n");
+       }
+
+reset_err:
+       ret = reset_release_all(priv->resets, priv->reset_count);
+       if (ret)
+               error("failed to assert all resets\n");
+clk_err:
+       ret = clk_release_all(priv->clocks, priv->clock_count);
+       if (ret)
+               error("failed to disable all clocks\n");
+
+       return err;
 }
 
 static int ohci_usb_remove(struct udevice *dev)
 {
-       return ohci_deregister(dev);
+       struct generic_ohci *priv = dev_get_priv(dev);
+       int ret;
+
+       ret = ohci_deregister(dev);
+       if (ret)
+               return ret;
+
+       if (generic_phy_valid(&priv->phy)) {
+               ret = generic_phy_exit(&priv->phy);
+               if (ret)
+                       return ret;
+       }
+
+       ret = reset_release_all(priv->resets, priv->reset_count);
+       if (ret)
+               return ret;
+
+       return clk_release_all(priv->clocks, priv->clock_count);
 }
 
 static const struct udevice_id ohci_usb_ids[] = {
index 110ddc92fa3ada91f181cedcc454077b8da527b2..0b8a501ce8851be7a0d0751c1f74fa7145ddf1d2 100644 (file)
@@ -139,6 +139,17 @@ int usb_reset_root_port(struct usb_device *udev)
        return ops->reset_root_port(bus, udev);
 }
 
+int usb_update_hub_device(struct usb_device *udev)
+{
+       struct udevice *bus = udev->controller_dev;
+       struct dm_usb_ops *ops = usb_get_ops(bus);
+
+       if (!ops->update_hub_device)
+               return -ENOSYS;
+
+       return ops->update_hub_device(bus, udev);
+}
+
 int usb_stop(void)
 {
        struct udevice *bus;
@@ -177,7 +188,6 @@ int usb_stop(void)
 #ifdef CONFIG_USB_STORAGE
        usb_stor_reset();
 #endif
-       usb_hub_reset();
        uc_priv->companion_device_count = 0;
        usb_started = 0;
 
@@ -230,7 +240,6 @@ int usb_init(void)
        int ret;
 
        asynch_allowed = 1;
-       usb_hub_reset();
 
        ret = uclass_get(UCLASS_USB, &uc);
        if (ret)
@@ -373,8 +382,8 @@ int usb_setup_ehci_gadget(struct ehci_ctrl **ctlrp)
 }
 
 /* returns 0 if no match, 1 if match */
-int usb_match_device(const struct usb_device_descriptor *desc,
-                    const struct usb_device_id *id)
+static int usb_match_device(const struct usb_device_descriptor *desc,
+                           const struct usb_device_id *id)
 {
        if ((id->match_flags & USB_DEVICE_ID_MATCH_VENDOR) &&
            id->idVendor != le16_to_cpu(desc->idVendor))
@@ -410,9 +419,9 @@ int usb_match_device(const struct usb_device_descriptor *desc,
 }
 
 /* returns 0 if no match, 1 if match */
-int usb_match_one_id_intf(const struct usb_device_descriptor *desc,
-                         const struct usb_interface_descriptor *int_desc,
-                         const struct usb_device_id *id)
+static int usb_match_one_id_intf(const struct usb_device_descriptor *desc,
+                       const struct usb_interface_descriptor *int_desc,
+                       const struct usb_device_id *id)
 {
        /* The interface class, subclass, protocol and number should never be
         * checked for a match if the device class is Vendor Specific,
@@ -445,9 +454,9 @@ int usb_match_one_id_intf(const struct usb_device_descriptor *desc,
 }
 
 /* returns 0 if no match, 1 if match */
-int usb_match_one_id(struct usb_device_descriptor *desc,
-                    struct usb_interface_descriptor *int_desc,
-                    const struct usb_device_id *id)
+static int usb_match_one_id(struct usb_device_descriptor *desc,
+                           struct usb_interface_descriptor *int_desc,
+                           const struct usb_device_id *id)
 {
        if (!usb_match_device(desc, id))
                return 0;
@@ -680,7 +689,7 @@ int usb_detect_change(void)
        return change;
 }
 
-int usb_child_post_bind(struct udevice *dev)
+static int usb_child_post_bind(struct udevice *dev)
 {
        struct usb_dev_platdata *plat = dev_get_parent_platdata(dev);
        int val;
index 33961cd63455ff7353481ffb9a798e67a29d34fb..4191a894218f64141108b837b45f4d4112b11165 100644 (file)
@@ -9,8 +9,21 @@
  */
 
 #include <common.h>
+#include <dm.h>
+#include <fdtdec.h>
+#include <generic-phy.h>
+#include <usb.h>
+
+#include "xhci.h"
 #include <asm/io.h>
 #include <linux/usb/dwc3.h>
+#include <linux/usb/otg.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct xhci_dwc3_platdata {
+       struct phy usb_phy;
+};
 
 void dwc3_set_mode(struct dwc3 *dwc3_reg, u32 mode)
 {
@@ -19,7 +32,7 @@ void dwc3_set_mode(struct dwc3 *dwc3_reg, u32 mode)
                        DWC3_GCTL_PRTCAPDIR(mode));
 }
 
-void dwc3_phy_reset(struct dwc3 *dwc3_reg)
+static void dwc3_phy_reset(struct dwc3 *dwc3_reg)
 {
        /* Assert USB3 PHY reset */
        setbits_le32(&dwc3_reg->g_usb3pipectl[0], DWC3_GUSB3PIPECTL_PHYSOFTRST);
@@ -97,3 +110,79 @@ void dwc3_set_fladj(struct dwc3 *dwc3_reg, u32 val)
        setbits_le32(&dwc3_reg->g_fladj, GFLADJ_30MHZ_REG_SEL |
                        GFLADJ_30MHZ(val));
 }
+
+#ifdef CONFIG_DM_USB
+static int xhci_dwc3_probe(struct udevice *dev)
+{
+       struct xhci_dwc3_platdata *plat = dev_get_platdata(dev);
+       struct xhci_hcor *hcor;
+       struct xhci_hccr *hccr;
+       struct dwc3 *dwc3_reg;
+       enum usb_dr_mode dr_mode;
+       int ret;
+
+       hccr = (struct xhci_hccr *)((uintptr_t)dev_read_addr(dev));
+       hcor = (struct xhci_hcor *)((uintptr_t)hccr +
+                       HC_LENGTH(xhci_readl(&(hccr)->cr_capbase)));
+
+       ret = generic_phy_get_by_index(dev, 0, &plat->usb_phy);
+       if (ret) {
+               if (ret != -ENOENT) {
+                       error("Failed to get USB PHY for %s\n", dev->name);
+                       return ret;
+               }
+       } else {
+               ret = generic_phy_init(&plat->usb_phy);
+               if (ret) {
+                       error("Can't init USB PHY for %s\n", dev->name);
+                       return ret;
+               }
+       }
+
+       dwc3_reg = (struct dwc3 *)((char *)(hccr) + DWC3_REG_OFFSET);
+
+       dwc3_core_init(dwc3_reg);
+
+       dr_mode = usb_get_dr_mode(dev_of_offset(dev));
+       if (dr_mode == USB_DR_MODE_UNKNOWN)
+               /* by default set dual role mode to HOST */
+               dr_mode = USB_DR_MODE_HOST;
+
+       dwc3_set_mode(dwc3_reg, dr_mode);
+
+       return xhci_register(dev, hccr, hcor);
+}
+
+static int xhci_dwc3_remove(struct udevice *dev)
+{
+       struct xhci_dwc3_platdata *plat = dev_get_platdata(dev);
+       int ret;
+
+       if (generic_phy_valid(&plat->usb_phy)) {
+               ret = generic_phy_exit(&plat->usb_phy);
+               if (ret) {
+                       error("Can't deinit USB PHY for %s\n", dev->name);
+                       return ret;
+               }
+       }
+
+       return xhci_deregister(dev);
+}
+
+static const struct udevice_id xhci_dwc3_ids[] = {
+       { .compatible = "snps,dwc3" },
+       { }
+};
+
+U_BOOT_DRIVER(xhci_dwc3) = {
+       .name = "xhci-dwc3",
+       .id = UCLASS_USB,
+       .of_match = xhci_dwc3_ids,
+       .probe = xhci_dwc3_probe,
+       .remove = xhci_dwc3_remove,
+       .ops = &xhci_usb_ops,
+       .priv_auto_alloc_size = sizeof(struct xhci_ctrl),
+       .platdata_auto_alloc_size = sizeof(struct xhci_dwc3_platdata),
+       .flags = DM_FLAG_ALLOC_PRIV_DMA,
+};
+#endif
index 62db51d01851c1eb1909a79de4271cf0e0ff7497..d5eab3a61545442ae31066e85b4584946bbdf54d 100644 (file)
@@ -95,6 +95,25 @@ static void xhci_ring_free(struct xhci_ring *ring)
        free(ring);
 }
 
+/**
+ * Free the scratchpad buffer array and scratchpad buffers
+ *
+ * @ctrl       host controller data structure
+ * @return     none
+ */
+static void xhci_scratchpad_free(struct xhci_ctrl *ctrl)
+{
+       if (!ctrl->scratchpad)
+               return;
+
+       ctrl->dcbaa->dev_context_ptrs[0] = 0;
+
+       free((void *)(uintptr_t)ctrl->scratchpad->sp_array[0]);
+       free(ctrl->scratchpad->sp_array);
+       free(ctrl->scratchpad);
+       ctrl->scratchpad = NULL;
+}
+
 /**
  * frees the "xhci_container_ctx" pointer passed
  *
@@ -155,6 +174,7 @@ void xhci_cleanup(struct xhci_ctrl *ctrl)
 {
        xhci_ring_free(ctrl->event_ring);
        xhci_ring_free(ctrl->cmd_ring);
+       xhci_scratchpad_free(ctrl);
        xhci_free_virt_devices(ctrl);
        free(ctrl->erst.entries);
        free(ctrl->dcbaa);
@@ -319,6 +339,70 @@ struct xhci_ring *xhci_ring_alloc(unsigned int num_segs, bool link_trbs)
        return ring;
 }
 
+/**
+ * Set up the scratchpad buffer array and scratchpad buffers
+ *
+ * @ctrl       host controller data structure
+ * @return     -ENOMEM if buffer allocation fails, 0 on success
+ */
+static int xhci_scratchpad_alloc(struct xhci_ctrl *ctrl)
+{
+       struct xhci_hccr *hccr = ctrl->hccr;
+       struct xhci_hcor *hcor = ctrl->hcor;
+       struct xhci_scratchpad *scratchpad;
+       int num_sp;
+       uint32_t page_size;
+       void *buf;
+       int i;
+
+       num_sp = HCS_MAX_SCRATCHPAD(xhci_readl(&hccr->cr_hcsparams2));
+       if (!num_sp)
+               return 0;
+
+       scratchpad = malloc(sizeof(*scratchpad));
+       if (!scratchpad)
+               goto fail_sp;
+       ctrl->scratchpad = scratchpad;
+
+       scratchpad->sp_array = xhci_malloc(num_sp * sizeof(u64));
+       if (!scratchpad->sp_array)
+               goto fail_sp2;
+       ctrl->dcbaa->dev_context_ptrs[0] =
+               cpu_to_le64((uintptr_t)scratchpad->sp_array);
+
+       page_size = xhci_readl(&hcor->or_pagesize) & 0xffff;
+       for (i = 0; i < 16; i++) {
+               if ((0x1 & page_size) != 0)
+                       break;
+               page_size = page_size >> 1;
+       }
+       BUG_ON(i == 16);
+
+       page_size = 1 << (i + 12);
+       buf = memalign(page_size, num_sp * page_size);
+       if (!buf)
+               goto fail_sp3;
+       memset(buf, '\0', num_sp * page_size);
+       xhci_flush_cache((uintptr_t)buf, num_sp * page_size);
+
+       for (i = 0; i < num_sp; i++) {
+               uintptr_t ptr = (uintptr_t)buf + i * page_size;
+               scratchpad->sp_array[i] = cpu_to_le64(ptr);
+       }
+
+       return 0;
+
+fail_sp3:
+       free(scratchpad->sp_array);
+
+fail_sp2:
+       free(scratchpad);
+       ctrl->scratchpad = NULL;
+
+fail_sp:
+       return -ENOMEM;
+}
+
 /**
  * Allocates the Container context
  *
@@ -499,6 +583,9 @@ int xhci_mem_init(struct xhci_ctrl *ctrl, struct xhci_hccr *hccr,
 
        xhci_writeq(&ctrl->ir_set->erst_base, val_64);
 
+       /* set up the scratchpad buffer array and scratchpad buffers */
+       xhci_scratchpad_alloc(ctrl);
+
        /* initializing the virtual devices to NULL */
        for (i = 0; i < MAX_HC_SLOTS; ++i)
                ctrl->devs[i] = NULL;
@@ -626,14 +713,21 @@ void xhci_slot_copy(struct xhci_ctrl *ctrl, struct xhci_container_ctx *in_ctx,
  * @param udev pointer to the Device Data Structure
  * @return returns negative value on failure else 0 on success
  */
-void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl, int slot_id,
-                                    int speed, int hop_portnr)
+void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl,
+                                    struct usb_device *udev, int hop_portnr)
 {
        struct xhci_virt_device *virt_dev;
        struct xhci_ep_ctx *ep0_ctx;
        struct xhci_slot_ctx *slot_ctx;
        u32 port_num = 0;
        u64 trb_64 = 0;
+       int slot_id = udev->slot_id;
+       int speed = udev->speed;
+       int route = 0;
+#ifdef CONFIG_DM_USB
+       struct usb_device *dev = udev;
+       struct usb_hub_device *hub;
+#endif
 
        virt_dev = ctrl->devs[slot_id];
 
@@ -644,7 +738,32 @@ void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl, int slot_id,
        slot_ctx = xhci_get_slot_ctx(ctrl, virt_dev->in_ctx);
 
        /* Only the control endpoint is valid - one endpoint context */
-       slot_ctx->dev_info |= cpu_to_le32(LAST_CTX(1) | 0);
+       slot_ctx->dev_info |= cpu_to_le32(LAST_CTX(1));
+
+#ifdef CONFIG_DM_USB
+       /* Calculate the route string for this device */
+       port_num = dev->portnr;
+       while (!usb_hub_is_root_hub(dev->dev)) {
+               hub = dev_get_uclass_priv(dev->dev);
+               /*
+                * Each hub in the topology is expected to have no more than
+                * 15 ports in order for the route string of a device to be
+                * unique. SuperSpeed hubs are restricted to only having 15
+                * ports, but FS/LS/HS hubs are not. The xHCI specification
+                * says that if the port number the device is greater than 15,
+                * that portion of the route string shall be set to 15.
+                */
+               if (port_num > 15)
+                       port_num = 15;
+               route |= port_num << (hub->hub_depth * 4);
+               dev = dev_get_parent_priv(dev->dev);
+               port_num = dev->portnr;
+               dev = dev_get_parent_priv(dev->dev->parent);
+       }
+
+       debug("route string %x\n", route);
+#endif
+       slot_ctx->dev_info |= route;
 
        switch (speed) {
        case USB_SPEED_SUPER:
@@ -664,6 +783,20 @@ void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl, int slot_id,
                BUG();
        }
 
+#ifdef CONFIG_DM_USB
+       /* Set up TT fields to support FS/LS devices */
+       if (speed == USB_SPEED_LOW || speed == USB_SPEED_FULL) {
+               dev = dev_get_parent_priv(udev->dev);
+               if (dev->speed == USB_SPEED_HIGH) {
+                       hub = dev_get_uclass_priv(udev->dev);
+                       if (hub->tt.multi)
+                               slot_ctx->dev_info |= cpu_to_le32(DEV_MTT);
+                       slot_ctx->tt_info |= cpu_to_le32(TT_PORT(udev->portnr));
+                       slot_ctx->tt_info |= cpu_to_le32(TT_SLOT(dev->slot_id));
+               }
+       }
+#endif
+
        port_num = hop_portnr;
        debug("port_num = %d\n", port_num);
 
index 63daaa6759918f316a8679a307bd7268724c9e07..e4a0ef4a1a5963a9281abd836070b909d3b4abec 100644 (file)
@@ -8,66 +8,10 @@
 
 #include <common.h>
 #include <dm.h>
-#include <errno.h>
 #include <pci.h>
 #include <usb.h>
-
 #include "xhci.h"
 
-#ifndef CONFIG_DM_USB
-
-/*
- * Create the appropriate control structures to manage a new XHCI host
- * controller.
- */
-int xhci_hcd_init(int index, struct xhci_hccr **ret_hccr,
-                 struct xhci_hcor **ret_hcor)
-{
-       struct xhci_hccr *hccr;
-       struct xhci_hcor *hcor;
-       pci_dev_t pdev;
-       uint32_t cmd;
-       int len;
-
-       pdev = pci_find_class(PCI_CLASS_SERIAL_USB_XHCI, index);
-       if (pdev < 0) {
-               printf("XHCI host controller not found\n");
-               return -1;
-       }
-
-       hccr = (struct xhci_hccr *)pci_map_bar(pdev,
-                       PCI_BASE_ADDRESS_0, PCI_REGION_MEM);
-       len = HC_LENGTH(xhci_readl(&hccr->cr_capbase));
-       hcor = (struct xhci_hcor *)((uint32_t)hccr + len);
-
-       debug("XHCI-PCI init hccr 0x%x and hcor 0x%x hc_length %d\n",
-             (uint32_t)hccr, (uint32_t)hcor, len);
-
-       *ret_hccr = hccr;
-       *ret_hcor = hcor;
-
-       /* enable busmaster */
-       pci_read_config_dword(pdev, PCI_COMMAND, &cmd);
-       cmd |= PCI_COMMAND_MASTER;
-       pci_write_config_dword(pdev, PCI_COMMAND, cmd);
-
-       return 0;
-}
-
-/*
- * Destroy the appropriate control structures corresponding * to the XHCI host
- * controller
- */
-void xhci_hcd_stop(int index)
-{
-}
-
-#else
-
-struct xhci_pci_priv {
-       struct xhci_ctrl ctrl;  /* Needs to come first in this struct! */
-};
-
 static void xhci_pci_init(struct udevice *dev, struct xhci_hccr **ret_hccr,
                          struct xhci_hcor **ret_hcor)
 {
@@ -103,17 +47,6 @@ static int xhci_pci_probe(struct udevice *dev)
        return xhci_register(dev, hccr, hcor);
 }
 
-static int xhci_pci_remove(struct udevice *dev)
-{
-       int ret;
-
-       ret = xhci_deregister(dev);
-       if (ret)
-               return ret;
-
-       return 0;
-}
-
 static const struct udevice_id xhci_pci_ids[] = {
        { .compatible = "xhci-pci" },
        { }
@@ -123,11 +56,11 @@ U_BOOT_DRIVER(xhci_pci) = {
        .name   = "xhci_pci",
        .id     = UCLASS_USB,
        .probe = xhci_pci_probe,
-       .remove = xhci_pci_remove,
+       .remove = xhci_deregister,
        .of_match = xhci_pci_ids,
        .ops    = &xhci_usb_ops,
        .platdata_auto_alloc_size = sizeof(struct usb_platdata),
-       .priv_auto_alloc_size = sizeof(struct xhci_pci_priv),
+       .priv_auto_alloc_size = sizeof(struct xhci_ctrl),
        .flags  = DM_FLAG_ALLOC_PRIV_DMA,
 };
 
@@ -137,5 +70,3 @@ static struct pci_device_id xhci_pci_supported[] = {
 };
 
 U_BOOT_PCI_DEVICE(xhci_pci, xhci_pci_supported);
-
-#endif /* CONFIG_DM_USB */
index 2675a8f6491538050a62040255fd6cfe267962fe..579e6707eb35a11067458da2f8cf643048b18df8 100644 (file)
@@ -280,8 +280,15 @@ void xhci_queue_command(struct xhci_ctrl *ctrl, u8 *ptr, u32 slot_id,
        fields[0] = lower_32_bits(val_64);
        fields[1] = upper_32_bits(val_64);
        fields[2] = 0;
-       fields[3] = TRB_TYPE(cmd) | EP_ID_FOR_TRB(ep_index) |
-                   SLOT_ID_FOR_TRB(slot_id) | ctrl->cmd_ring->cycle_state;
+       fields[3] = TRB_TYPE(cmd) | SLOT_ID_FOR_TRB(slot_id) |
+                   ctrl->cmd_ring->cycle_state;
+
+       /*
+        * Only 'reset endpoint', 'stop endpoint' and 'set TR dequeue pointer'
+        * commands need endpoint id encoded.
+        */
+       if (cmd >= TRB_RESET_EP && cmd <= TRB_SET_DEQ)
+               fields[3] |= EP_ID_FOR_TRB(ep_index);
 
        queue_trb(ctrl, ctrl->cmd_ring, false, fields);
 
index 32011774768fb6ed73550c931c297ee63c5da0f3..9b82ee5c602782a10876fbdd3995e5bd71be1495 100644 (file)
@@ -50,8 +50,8 @@ static struct descriptor {
                cpu_to_le16(0x8), /* wHubCharacteristics */
                10,             /* bPwrOn2PwrGood */
                0,              /* bHubCntrCurrent */
-               {},             /* Device removable */
-               {}              /* at most 7 ports! XXX */
+               {               /* Device removable */
+                             /* at most 7 ports! XXX */
        },
        {
                0x12,           /* bLength */
@@ -192,7 +192,7 @@ static int xhci_start(struct xhci_hcor *hcor)
  * @param hcor pointer to host controller operation registers
  * @return -EBUSY if XHCI Controller is not halted else status of handshake
  */
-int xhci_reset(struct xhci_hcor *hcor)
+static int xhci_reset(struct xhci_hcor *hcor)
 {
        u32 cmd;
        u32 state;
@@ -332,8 +332,8 @@ static int xhci_set_configuration(struct usb_device *udev)
        ifdesc = &udev->config.if_desc[0];
 
        ctrl_ctx = xhci_get_input_control_ctx(in_ctx);
-       /* Zero the input context control */
-       ctrl_ctx->add_flags = 0;
+       /* Initialize the input context control */
+       ctrl_ctx->add_flags = cpu_to_le32(SLOT_FLAG);
        ctrl_ctx->drop_flags = 0;
 
        /* EP_FLAG gives values 1 & 4 for EP1OUT and EP2IN */
@@ -415,8 +415,7 @@ static int xhci_address_device(struct usb_device *udev, int root_portnr)
         * so setting up the slot context.
         */
        debug("Setting up addressable devices %p\n", ctrl->dcbaa);
-       xhci_setup_addressable_virt_dev(ctrl, udev->slot_id, udev->speed,
-                                       root_portnr);
+       xhci_setup_addressable_virt_dev(ctrl, udev, root_portnr);
 
        ctrl_ctx = xhci_get_input_control_ctx(virt_dev->in_ctx);
        ctrl_ctx->add_flags = cpu_to_le32(SLOT_FLAG | EP0_FLAG);
@@ -481,7 +480,7 @@ static int xhci_address_device(struct usb_device *udev, int root_portnr)
  * @param udev pointer to the Device Data Structure
  * @return Returns 0 on succes else return error code on failure
  */
-int _xhci_alloc_device(struct usb_device *udev)
+static int _xhci_alloc_device(struct usb_device *udev)
 {
        struct xhci_ctrl *ctrl = xhci_get_ctrl(udev);
        union xhci_trb *event;
@@ -668,12 +667,14 @@ static int xhci_submit_root(struct usb_device *udev, unsigned long pipe,
        uint32_t reg;
        volatile uint32_t *status_reg;
        struct xhci_ctrl *ctrl = xhci_get_ctrl(udev);
+       struct xhci_hccr *hccr = ctrl->hccr;
        struct xhci_hcor *hcor = ctrl->hcor;
+       int max_ports = HCS_MAX_PORTS(xhci_readl(&hccr->cr_hcsparams1));
 
        if ((req->requesttype & USB_RT_PORT) &&
-           le16_to_cpu(req->index) > CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS) {
-               printf("The request port(%d) is not configured\n",
-                       le16_to_cpu(req->index) - 1);
+           le16_to_cpu(req->index) > max_ports) {
+               printf("The request port(%d) exceeds maximum port number\n",
+                      le16_to_cpu(req->index) - 1);
                return -EINVAL;
        }
 
@@ -727,6 +728,7 @@ static int xhci_submit_root(struct usb_device *udev, unsigned long pipe,
        case USB_REQ_GET_DESCRIPTOR | ((USB_DIR_IN | USB_RT_HUB) << 8):
                switch (le16_to_cpu(req->value) >> 8) {
                case USB_DT_HUB:
+               case USB_DT_SS_HUB:
                        debug("USB_DT_HUB config\n");
                        srcptr = &descriptor.hub;
                        srclen = 0x8;
@@ -1113,26 +1115,6 @@ int usb_lowlevel_stop(int index)
 #endif /* CONFIG_DM_USB */
 
 #ifdef CONFIG_DM_USB
-/*
-static struct usb_device *get_usb_device(struct udevice *dev)
-{
-       struct usb_device *udev;
-
-       if (device_get_uclass_id(dev) == UCLASS_USB)
-               udev = dev_get_uclass_priv(dev);
-       else
-               udev = dev_get_parent_priv(dev);
-
-       return udev;
-}
-*/
-static bool is_root_hub(struct udevice *dev)
-{
-       if (device_get_uclass_id(dev->parent) != UCLASS_USB_HUB)
-               return true;
-
-       return false;
-}
 
 static int xhci_submit_control_msg(struct udevice *dev, struct usb_device *udev,
                                   unsigned long pipe, void *buffer, int length,
@@ -1147,10 +1129,10 @@ static int xhci_submit_control_msg(struct udevice *dev, struct usb_device *udev,
        hub = udev->dev;
        if (device_get_uclass_id(hub) == UCLASS_USB_HUB) {
                /* Figure out our port number on the root hub */
-               if (is_root_hub(hub)) {
+               if (usb_hub_is_root_hub(hub)) {
                        root_portnr = udev->portnr;
                } else {
-                       while (!is_root_hub(hub->parent))
+                       while (!usb_hub_is_root_hub(hub->parent))
                                hub = hub->parent;
                        uhop = dev_get_parent_priv(hub);
                        root_portnr = uhop->portnr;
@@ -1188,6 +1170,64 @@ static int xhci_alloc_device(struct udevice *dev, struct usb_device *udev)
        return _xhci_alloc_device(udev);
 }
 
+static int xhci_update_hub_device(struct udevice *dev, struct usb_device *udev)
+{
+       struct xhci_ctrl *ctrl = dev_get_priv(dev);
+       struct usb_hub_device *hub = dev_get_uclass_priv(udev->dev);
+       struct xhci_virt_device *virt_dev;
+       struct xhci_input_control_ctx *ctrl_ctx;
+       struct xhci_container_ctx *out_ctx;
+       struct xhci_container_ctx *in_ctx;
+       struct xhci_slot_ctx *slot_ctx;
+       int slot_id = udev->slot_id;
+       unsigned think_time;
+
+       debug("%s: dev='%s', udev=%p\n", __func__, dev->name, udev);
+
+       /* Ignore root hubs */
+       if (usb_hub_is_root_hub(udev->dev))
+               return 0;
+
+       virt_dev = ctrl->devs[slot_id];
+       BUG_ON(!virt_dev);
+
+       out_ctx = virt_dev->out_ctx;
+       in_ctx = virt_dev->in_ctx;
+
+       ctrl_ctx = xhci_get_input_control_ctx(in_ctx);
+       /* Initialize the input context control */
+       ctrl_ctx->add_flags |= cpu_to_le32(SLOT_FLAG);
+       ctrl_ctx->drop_flags = 0;
+
+       xhci_inval_cache((uintptr_t)out_ctx->bytes, out_ctx->size);
+
+       /* slot context */
+       xhci_slot_copy(ctrl, in_ctx, out_ctx);
+       slot_ctx = xhci_get_slot_ctx(ctrl, in_ctx);
+
+       /* Update hub related fields */
+       slot_ctx->dev_info |= cpu_to_le32(DEV_HUB);
+       if (hub->tt.multi && udev->speed == USB_SPEED_HIGH)
+               slot_ctx->dev_info |= cpu_to_le32(DEV_MTT);
+       slot_ctx->dev_info2 |= cpu_to_le32(XHCI_MAX_PORTS(udev->maxchild));
+       /*
+        * Set TT think time - convert from ns to FS bit times.
+        * Note 8 FS bit times == (8 bits / 12000000 bps) ~= 666ns
+        *
+        * 0 =  8 FS bit times, 1 = 16 FS bit times,
+        * 2 = 24 FS bit times, 3 = 32 FS bit times.
+        *
+        * This field shall be 0 if the device is not a high-spped hub.
+        */
+       think_time = hub->tt.think_time;
+       if (think_time != 0)
+               think_time = (think_time / 666) - 1;
+       if (udev->speed == USB_SPEED_HIGH)
+               slot_ctx->tt_info |= cpu_to_le32(TT_THINK_TIME(think_time));
+
+       return xhci_configure_endpoints(udev, false);
+}
+
 int xhci_register(struct udevice *dev, struct xhci_hccr *hccr,
                  struct xhci_hcor *hcor)
 {
@@ -1240,6 +1280,7 @@ struct dm_usb_ops xhci_usb_ops = {
        .bulk = xhci_submit_bulk_msg,
        .interrupt = xhci_submit_int_msg,
        .alloc_device = xhci_alloc_device,
+       .update_hub_device = xhci_update_hub_device,
 };
 
 #endif
index 2afa38694be8f12325d9f1537ad6bd9f04bbd122..a497d9d830fa7be54b05ac79c5def17e1c3a9d04 100644 (file)
@@ -30,7 +30,7 @@
 /* Max number of USB devices for any host controller - limit in section 6.1 */
 #define MAX_HC_SLOTS            256
 /* Section 5.3.3 - MaxPorts */
-#define MAX_HC_PORTS            127
+#define MAX_HC_PORTS            255
 
 /* Up to 16 ms to halt an HC */
 #define XHCI_MAX_HALT_USEC     (16*1000)
@@ -102,8 +102,8 @@ struct xhci_hccr {
 #define HCS_MAX_INTRS(p)       (((p) >> 8) & 0x7ff)
 /* bits 24:31, Max Ports - max value is 0x7F = 127 ports */
 #define HCS_MAX_PORTS_SHIFT    24
-#define HCS_MAX_PORTS_MASK     (0x7f << HCS_MAX_PORTS_SHIFT)
-#define HCS_MAX_PORTS(p)       (((p) >> 24) & 0x7f)
+#define HCS_MAX_PORTS_MASK     (0xff << HCS_MAX_PORTS_SHIFT)
+#define HCS_MAX_PORTS(p)       (((p) >> 24) & 0xff)
 
 /* HCSPARAMS2 - hcs_params2 - bitmasks */
 /* bits 0:3, frames or uframes that SW needs to queue transactions
@@ -111,9 +111,10 @@ struct xhci_hccr {
 #define HCS_IST(p)             (((p) >> 0) & 0xf)
 /* bits 4:7, max number of Event Ring segments */
 #define HCS_ERST_MAX(p)                (((p) >> 4) & 0xf)
+/* bits 21:25 Hi 5 bits of Scratchpad buffers SW must allocate for the HW */
 /* bit 26 Scratchpad restore - for save/restore HW state - not used yet */
-/* bits 27:31 number of Scratchpad buffers SW must allocate for the HW */
-#define HCS_MAX_SCRATCHPAD(p)   (((p) >> 27) & 0x1f)
+/* bits 27:31 Lo 5 bits of Scratchpad buffers SW must allocate for the HW */
+#define HCS_MAX_SCRATCHPAD(p)  ((((p) >> 16) & 0x3e0) | (((p) >> 27) & 0x1f))
 
 /* HCSPARAMS3 - hcs_params3 - bitmasks */
 /* bits 0:7, Max U1 to U0 latency for the roothub ports */
@@ -171,9 +172,7 @@ struct xhci_hcor {
        volatile uint64_t or_dcbaap;
        volatile uint32_t or_config;
        volatile uint32_t reserved_2[241];
-       struct xhci_hcor_port_regs portregs[CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS];
-
-       uint32_t reserved_4[CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS * 254];
+       struct xhci_hcor_port_regs portregs[MAX_HC_PORTS];
 };
 
 /* USBCMD - USB command - command bitmasks */
@@ -482,10 +481,9 @@ struct xhci_protocol_caps {
  * @type: Type of context.  Used to calculated offsets to contained contexts.
  * @size: Size of the context data
  * @bytes: The raw context data given to HW
- * @dma: dma address of the bytes
  *
  * Represents either a Device or Input context.  Holds a pointer to the raw
- * memory used for the context (bytes) and dma address of it (dma).
+ * memory used for the context (bytes).
  */
 struct xhci_container_ctx {
        unsigned type;
@@ -550,12 +548,12 @@ struct xhci_slot_ctx {
  * The Slot ID of the hub that isolates the high speed signaling from
  * this low or full-speed device.  '0' if attached to root hub port.
  */
-#define TT_SLOT                        (0xff)
+#define TT_SLOT(p)             (((p) & 0xff) << 0)
 /*
  * The number of the downstream facing port of the high-speed hub
  * '0' if the device is not low or full speed.
  */
-#define TT_PORT                        (0xff << 8)
+#define TT_PORT(p)             (((p) & 0xff) << 8)
 #define TT_THINK_TIME(p)       (((p) & 0x3) << 16)
 
 /* dev_state bitmasks */
@@ -1038,6 +1036,10 @@ struct xhci_erst {
        unsigned int            erst_size;
 };
 
+struct xhci_scratchpad {
+       u64 *sp_array;
+};
+
 /*
  * Each segment table entry is 4*32bits long.  1K seems like an ok size:
  * (1K bytes * 8bytes/bit) / (4*32 bits) = 64 segment entries in the table,
@@ -1225,6 +1227,7 @@ struct xhci_ctrl {
        struct xhci_intr_reg *ir_set;
        struct xhci_erst erst;
        struct xhci_erst_entry entry[ERST_NUM_SEGS];
+       struct xhci_scratchpad *scratchpad;
        struct xhci_virt_device *devs[MAX_HC_SLOTS];
        int rootdev;
 };
@@ -1244,8 +1247,8 @@ void xhci_endpoint_copy(struct xhci_ctrl *ctrl,
 void xhci_slot_copy(struct xhci_ctrl *ctrl,
                    struct xhci_container_ctx *in_ctx,
                    struct xhci_container_ctx *out_ctx);
-void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl, int slot_id,
-                                    int speed, int hop_portnr);
+void xhci_setup_addressable_virt_dev(struct xhci_ctrl *ctrl,
+                                    struct usb_device *udev, int hop_portnr);
 void xhci_queue_command(struct xhci_ctrl *ctrl, u8 *ptr,
                        u32 slot_id, u32 ep_index, trb_type cmd);
 void xhci_acknowledge_event(struct xhci_ctrl *ctrl);
index 20455ffb54219e9965bbd989c0e601d1392d50ae..0ddce3db58bd1a4b7d1bac8d538c18a4527363a1 100644 (file)
@@ -15,7 +15,7 @@
 #include <linux/errno.h>
 #include <asm/io.h>
 
-#include <asm/imx-common/dma.h>
+#include <asm/mach-imx/dma.h>
 
 #include "videomodes.h"
 
index 47752b27f12f55371eb38dfd2e8d06e24107977e..4164fa1bd96c5584b062476c17f4a6282821f90c 100644 (file)
@@ -12,7 +12,6 @@
 #include <errno.h>
 #include <display.h>
 #include <edid.h>
-#include <fdtdec.h>
 #include <lcd.h>
 #include <video.h>
 #include <asm/gpio.h>
@@ -334,7 +333,6 @@ static int display_init(struct udevice *dev, void *lcdbase,
 {
        struct display_plat *disp_uc_plat;
        struct dc_ctlr *dc_ctlr;
-       const void *blob = gd->fdt_blob;
        struct udevice *dp_dev;
        const int href_to_sync = 1, vref_to_sync = 1;
        int panel_bpp = 18;     /* default 18 bits per pixel */
@@ -363,9 +361,8 @@ static int display_init(struct udevice *dev, void *lcdbase,
                return ret;
        }
 
-       dc_ctlr = (struct dc_ctlr *)fdtdec_get_addr(blob, dev_of_offset(dev),
-                                                   "reg");
-       if (fdtdec_decode_display_timing(blob, dev_of_offset(dev), 0, timing)) {
+       dc_ctlr = (struct dc_ctlr *)dev_read_addr(dev);
+       if (ofnode_decode_display_timing(dev_ofnode(dev), 0, timing)) {
                debug("%s: Failed to decode display timing\n", __func__);
                return -EINVAL;
        }
@@ -416,6 +413,7 @@ static int display_init(struct udevice *dev, void *lcdbase,
                debug("dc: failed to update window\n");
                return ret;
        }
+       debug("%s: ready\n", __func__);
 
        return 0;
 }
index c38b3e5335f50e5862f78473687285a861b56c49..95d743d0f43f8adcbc3ab0d48d677db562d8b0a8 100644 (file)
@@ -10,7 +10,6 @@
 #include <dm.h>
 #include <div64.h>
 #include <errno.h>
-#include <fdtdec.h>
 #include <video_bridge.h>
 #include <asm/io.h>
 #include <asm/arch-tegra/dc.h>
@@ -1572,7 +1571,7 @@ static int tegra_dp_ofdata_to_platdata(struct udevice *dev)
 {
        struct tegra_dp_plat *plat = dev_get_platdata(dev);
 
-       plat->base = devfdt_get_addr(dev);
+       plat->base = dev_read_addr(dev);
 
        return 0;
 }
index 4324071cdc89cd3fa18c7404d060ae9422f52595..700ab25d4678ee3fee668f5424656478bca3dd42 100644 (file)
@@ -7,9 +7,9 @@
 #include <common.h>
 #include <dm.h>
 #include <errno.h>
-#include <fdtdec.h>
 #include <malloc.h>
 #include <panel.h>
+#include <syscon.h>
 #include <video_bridge.h>
 #include <asm/io.h>
 #include <asm/arch/clock.h>
@@ -759,15 +759,12 @@ int tegra_dc_sor_attach(struct udevice *dc_dev, struct udevice *dev,
                        const struct display_timing *timing)
 {
        struct tegra_dc_sor_data *sor = dev_get_priv(dev);
-       const void *blob = gd->fdt_blob;
        struct dc_ctlr *disp_ctrl;
        u32 reg_val;
-       int node;
 
        /* Use the first display controller */
        debug("%s\n", __func__);
-       node = dev_of_offset(dc_dev);
-       disp_ctrl = (struct dc_ctlr *)fdtdec_get_addr(blob, node, "reg");
+       disp_ctrl = (struct dc_ctlr *)dev_read_addr(dc_dev);
 
        tegra_dc_sor_enable_dc(disp_ctrl);
        tegra_dc_sor_config_panel(sor, 0, link_cfg, timing);
@@ -974,16 +971,13 @@ int tegra_dc_sor_detach(struct udevice *dc_dev, struct udevice *dev)
 {
        struct tegra_dc_sor_data *sor = dev_get_priv(dev);
        int dc_reg_ctx[DC_REG_SAVE_SPACE];
-       const void *blob = gd->fdt_blob;
        struct dc_ctlr *disp_ctrl;
        unsigned long dc_int_mask;
-       int node;
        int ret;
 
        debug("%s\n", __func__);
        /* Use the first display controller */
-       node = dev_of_offset(dc_dev);
-       disp_ctrl = (struct dc_ctlr *)fdtdec_get_addr(blob, node, "reg");
+       disp_ctrl = (struct dc_ctlr *)dev_read_addr(dev);
 
        /* Sleep mode */
        tegra_sor_writel(sor, SUPER_STATE1, SUPER_STATE1_ASY_HEAD_OP_SLEEP |
@@ -1050,18 +1044,13 @@ static int tegra_sor_set_backlight(struct udevice *dev, int percent)
 static int tegra_sor_ofdata_to_platdata(struct udevice *dev)
 {
        struct tegra_dc_sor_data *priv = dev_get_priv(dev);
-       const void *blob = gd->fdt_blob;
-       int node;
        int ret;
 
-       priv->base = (void *)fdtdec_get_addr(blob, dev_of_offset(dev), "reg");
+       priv->base = (void *)dev_read_addr(dev);
 
-       node = fdtdec_next_compatible(blob, 0, COMPAT_NVIDIA_TEGRA124_PMC);
-       if (node < 0) {
-               debug("%s: Cannot find PMC\n", __func__);
-               return -ENOENT;
-       }
-       priv->pmc_base = (void *)fdtdec_get_addr(blob, node, "reg");
+       priv->pmc_base = (void *)syscon_get_first_range(TEGRA_SYSCON_PMC);
+       if (IS_ERR(priv->pmc_base))
+               return PTR_ERR(priv->pmc_base);
 
        ret = uclass_get_device_by_phandle(UCLASS_PANEL, dev, "nvidia,panel",
                                           &priv->panel);
index b911233db3d8cb8a0e4c90c1f8c48a9e9fb3de35..fc46b6774d57a0ab983676f3af6721457ceb8606 100644 (file)
@@ -19,7 +19,16 @@ config OMAP_WATCHDOG
        default y if AM33XX
        help
          Say Y here to enable the OMAP3+ watchdog driver.
-       
+
+config TANGIER_WATCHDOG
+       bool "Intel Tangier watchdog"
+       depends on INTEL_MID
+       select HW_WATCHDOG
+       help
+         This enables support for watchdog controller available on
+         Intel Tangier SoC. If you're using a board with Intel Tangier
+         SoC, say Y here.
+
 config ULP_WATCHDOG
        bool "i.MX7ULP watchdog"
        help
@@ -62,4 +71,11 @@ config WDT_BCM6345
          The watchdog timer is stopped when initialized.
          It performs full SoC reset.
 
+config WDT_ORION
+       bool "Orion watchdog timer support"
+       depends on WDT
+       help
+          Select this to enable Orion watchdog timer, which can be found on some
+          Marvell Armada chips.
+
 endmenu
index 4b19e4ccf68c9aabbfc2f23cf198ed0b49f4bdd8..ab6a6b79e1d7c15630dc6025bef8c2b63a56eab8 100644 (file)
@@ -14,9 +14,11 @@ obj-$(CONFIG_S5P)               += s5p_wdt.o
 obj-$(CONFIG_XILINX_TB_WATCHDOG) += xilinx_tb_wdt.o
 obj-$(CONFIG_OMAP_WATCHDOG) += omap_wdt.o
 obj-$(CONFIG_DESIGNWARE_WATCHDOG) += designware_wdt.o
+obj-$(CONFIG_TANGIER_WATCHDOG) += tangier_wdt.o
 obj-$(CONFIG_ULP_WATCHDOG) += ulp_wdog.o
 obj-$(CONFIG_WDT) += wdt-uclass.o
 obj-$(CONFIG_WDT_SANDBOX) += sandbox_wdt.o
 obj-$(CONFIG_WDT_ASPEED) += ast_wdt.o
 obj-$(CONFIG_WDT_BCM6345) += bcm6345_wdt.o
 obj-$(CONFIG_BCM2835_WDT)       += bcm2835_wdt.o
+obj-$(CONFIG_WDT_ORION) += orion_wdt.o
diff --git a/drivers/watchdog/orion_wdt.c b/drivers/watchdog/orion_wdt.c
new file mode 100644 (file)
index 0000000..a0df02d
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * drivers/watchdog/orion_wdt.c
+ *
+ * Watchdog driver for Orion/Kirkwood processors
+ *
+ * Authors:    Tomas Hlavacek <tmshlvck@gmail.com>
+ *             Sylver Bruneau <sylver.bruneau@googlemail.com>
+ *             Marek Behun <marek.behun@nic.cz>
+ *
+ * This file is licensed under  the terms of the GNU General Public
+ * License version 2. This program is licensed "as is" without any
+ * warranty of any kind, whether express or implied.
+ */
+
+#include <common.h>
+#include <dm.h>
+#include <wdt.h>
+#include <asm/io.h>
+#include <asm/arch/cpu.h>
+#include <asm/arch/soc.h>
+
+DECLARE_GLOBAL_DATA_PTR;
+
+struct orion_wdt_priv {
+       void __iomem *reg;
+       int wdt_counter_offset;
+       void __iomem *rstout;
+       void __iomem *rstout_mask;
+       u32 timeout;
+};
+
+#define RSTOUT_ENABLE_BIT              BIT(8)
+#define RSTOUT_MASK_BIT                        BIT(10)
+#define WDT_ENABLE_BIT                 BIT(8)
+
+#define TIMER_CTRL                     0x0000
+#define TIMER_A370_STATUS              0x04
+
+#define WDT_AXP_FIXED_ENABLE_BIT       BIT(10)
+#define WDT_A370_EXPIRED               BIT(31)
+
+static int orion_wdt_reset(struct udevice *dev)
+{
+       struct orion_wdt_priv *priv = dev_get_priv(dev);
+
+       /* Reload watchdog duration */
+       writel(priv->timeout, priv->reg + priv->wdt_counter_offset);
+
+       return 0;
+}
+
+static int orion_wdt_start(struct udevice *dev, u64 timeout, ulong flags)
+{
+       struct orion_wdt_priv *priv = dev_get_priv(dev);
+       u32 reg;
+
+       priv->timeout = (u32) timeout;
+
+       /* Enable the fixed watchdog clock input */
+       reg = readl(priv->reg + TIMER_CTRL);
+       reg |= WDT_AXP_FIXED_ENABLE_BIT;
+       writel(reg, priv->reg + TIMER_CTRL);
+
+       /* Set watchdog duration */
+       writel(priv->timeout, priv->reg + priv->wdt_counter_offset);
+
+       /* Clear the watchdog expiration bit */
+       reg = readl(priv->reg + TIMER_A370_STATUS);
+       reg &= ~WDT_A370_EXPIRED;
+       writel(reg, priv->reg + TIMER_A370_STATUS);
+
+       /* Enable watchdog timer */
+       reg = readl(priv->reg + TIMER_CTRL);
+       reg |= WDT_ENABLE_BIT;
+       writel(reg, priv->reg + TIMER_CTRL);
+
+       /* Enable reset on watchdog */
+       reg = readl(priv->rstout);
+       reg |= RSTOUT_ENABLE_BIT;
+       writel(reg, priv->rstout);
+
+       reg = readl(priv->rstout_mask);
+       reg &= ~RSTOUT_MASK_BIT;
+       writel(reg, priv->rstout_mask);
+
+       return 0;
+}
+
+static int orion_wdt_stop(struct udevice *dev)
+{
+       struct orion_wdt_priv *priv = dev_get_priv(dev);
+       u32 reg;
+
+       /* Disable reset on watchdog */
+       reg = readl(priv->rstout_mask);
+       reg |= RSTOUT_MASK_BIT;
+       writel(reg, priv->rstout_mask);
+
+       reg = readl(priv->rstout);
+       reg &= ~RSTOUT_ENABLE_BIT;
+       writel(reg, priv->rstout);
+
+       /* Disable watchdog timer */
+       reg = readl(priv->reg + TIMER_CTRL);
+       reg &= ~WDT_ENABLE_BIT;
+       writel(reg, priv->reg + TIMER_CTRL);
+
+       return 0;
+}
+
+static inline bool save_reg_from_ofdata(struct udevice *dev, int index,
+                                       void __iomem **reg, int *offset)
+{
+       fdt_addr_t addr;
+       fdt_size_t off;
+
+       addr = fdtdec_get_addr_size_auto_noparent(
+               gd->fdt_blob, dev_of_offset(dev), "reg", index, &off, true);
+
+       if (addr == FDT_ADDR_T_NONE)
+               return false;
+
+       *reg = (void __iomem *) addr;
+       if (offset)
+               *offset = off;
+
+       return true;
+}
+
+static int orion_wdt_ofdata_to_platdata(struct udevice *dev)
+{
+       struct orion_wdt_priv *priv = dev_get_priv(dev);
+
+       if (!save_reg_from_ofdata(dev, 0, &priv->reg,
+                                 &priv->wdt_counter_offset))
+               goto err;
+
+       if (!save_reg_from_ofdata(dev, 1, &priv->rstout, NULL))
+               goto err;
+
+       if (!save_reg_from_ofdata(dev, 2, &priv->rstout_mask, NULL))
+               goto err;
+
+       return 0;
+err:
+       debug("%s: Could not determine Orion wdt IO addresses\n", __func__);
+       return -ENXIO;
+}
+
+static int orion_wdt_probe(struct udevice *dev)
+{
+       debug("%s: Probing wdt%u\n", __func__, dev->seq);
+       orion_wdt_stop(dev);
+
+       return 0;
+}
+
+static const struct wdt_ops orion_wdt_ops = {
+       .start = orion_wdt_start,
+       .reset = orion_wdt_reset,
+       .stop = orion_wdt_stop,
+};
+
+static const struct udevice_id orion_wdt_ids[] = {
+       { .compatible = "marvell,armada-380-wdt" },
+       {}
+};
+
+U_BOOT_DRIVER(orion_wdt) = {
+       .name = "orion_wdt",
+       .id = UCLASS_WDT,
+       .of_match = orion_wdt_ids,
+       .probe = orion_wdt_probe,
+       .priv_auto_alloc_size = sizeof(struct orion_wdt_priv),
+       .ofdata_to_platdata = orion_wdt_ofdata_to_platdata,
+       .ops = &orion_wdt_ops,
+};
diff --git a/drivers/watchdog/tangier_wdt.c b/drivers/watchdog/tangier_wdt.c
new file mode 100644 (file)
index 0000000..9cf4baf
--- /dev/null
@@ -0,0 +1,71 @@
+/*
+ * Copyright (c) 2017 Intel Corporation
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+#include <common.h>
+#include <watchdog.h>
+#include <asm/scu.h>
+
+/* Hardware timeout in seconds */
+#define WDT_PRETIMEOUT         15
+#define WDT_TIMEOUT_MIN                (1 + WDT_PRETIMEOUT)
+#define WDT_TIMEOUT_MAX                170
+#define WDT_DEFAULT_TIMEOUT    90
+
+#ifndef CONFIG_WATCHDOG_TIMEOUT_MSECS
+#define WATCHDOG_HEARTBEAT 60000
+#else
+#define WATCHDOG_HEARTBEAT CONFIG_WATCHDOG_TIMEOUT_MSECS
+#endif
+
+enum {
+       SCU_WATCHDOG_START                      = 0,
+       SCU_WATCHDOG_STOP                       = 1,
+       SCU_WATCHDOG_KEEPALIVE                  = 2,
+       SCU_WATCHDOG_SET_ACTION_ON_TIMEOUT      = 3,
+};
+
+void hw_watchdog_reset(void)
+{
+       static unsigned long last;
+       unsigned long now;
+
+       if (gd->timer)
+               now = timer_get_us();
+       else
+               now = rdtsc() / 1000;
+
+       /* Do not flood SCU */
+       if (last > now)
+               last = 0;
+
+       if (unlikely((now - last) > (WDT_PRETIMEOUT / 2) * 1000000)) {
+               last = now;
+               scu_ipc_simple_command(IPCMSG_WATCHDOG_TIMER, SCU_WATCHDOG_KEEPALIVE);
+       }
+}
+
+int hw_watchdog_disable(void)
+{
+       return scu_ipc_simple_command(IPCMSG_WATCHDOG_TIMER, SCU_WATCHDOG_STOP);
+}
+
+void hw_watchdog_init(void)
+{
+       u32 timeout = WATCHDOG_HEARTBEAT / 1000;
+       int in_size;
+       struct ipc_wd_start {
+               u32 pretimeout;
+               u32 timeout;
+       } ipc_wd_start = { timeout - WDT_PRETIMEOUT, timeout };
+
+       /*
+        * SCU expects the input size for watchdog IPC
+        * to be based on 4 bytes
+        */
+       in_size = DIV_ROUND_UP(sizeof(ipc_wd_start), 4);
+
+       scu_ipc_command(IPCMSG_WATCHDOG_TIMER, SCU_WATCHDOG_START,
+                       (u32 *)&ipc_wd_start, in_size, NULL, 0);
+}
index ed60c5ba5c0aada9c34278ef61f9bcc442d132d5..4c6dfbf249dcce4ca39fac03343198b4db3b823a 100644 (file)
@@ -175,10 +175,15 @@ static u32 nand_cache_off = (u32)-1;
 static int read_nand_cached(u32 off, u32 size, u_char *buf)
 {
        struct mtdids *id = current_part->dev->id;
+       struct mtd_info *mtd;
        u32 bytes_read = 0;
        size_t retlen;
        int cpy_bytes;
 
+       mtd = get_nand_dev_by_index(id->num);
+       if (!mtd)
+               return -1;
+
        while (bytes_read < size) {
                if ((off + bytes_read < nand_cache_off) ||
                    (off + bytes_read >= nand_cache_off+NAND_CACHE_SIZE)) {
@@ -195,8 +200,8 @@ static int read_nand_cached(u32 off, u32 size, u_char *buf)
                        }
 
                        retlen = NAND_CACHE_SIZE;
-                       if (nand_read(nand_info[id->num], nand_cache_off,
-                                               &retlen, nand_cache) != 0 ||
+                       if (nand_read(mtd, nand_cache_off,
+                                     &retlen, nand_cache) != 0 ||
                                        retlen != NAND_CACHE_SIZE) {
                                printf("read_nand_cached: error reading nand off %#x size %d bytes\n",
                                                nand_cache_off, NAND_CACHE_SIZE);
index d94c48f534b4cd8ed2340df5076a38d6f96b076c..1d63fc94340ee8879e9c12814f33fbcca9b9a2f7 100644 (file)
@@ -796,7 +796,11 @@ jffs2_1pass_build_lists(struct part_info * part)
        u32 counterN = 0;
 
        struct mtdids *id = part->dev->id;
-       mtd = nand_info[id->num];
+       mtd = get_nand_dev_by_index(id->num);
+       if (!mtd) {
+               error("\nno NAND devices available\n");
+               return 0;
+       }
 
        /* if we are building a list we need to refresh the cache. */
        jffs_init_1pass_list(part);
index f6630817d28a6d5f1bc16fb148dc0f3f6aeb0030..bd66d31697f5c3a4baf0441e3ca6c7585a651101 100644 (file)
@@ -166,11 +166,15 @@ void cmd_yaffs_devconfig(char *_mp, int flash_dev,
        char *mp = NULL;
        struct nand_chip *chip;
 
+       mtd = get_nand_dev_by_index(flash_dev);
+       if (!mtd) {
+               error("\nno NAND devices available\n");
+               return;
+       }
+
        dev = calloc(1, sizeof(*dev));
        mp = strdup(_mp);
 
-       mtd = nand_info[flash_dev];
-
        if (!dev || !mp) {
                /* Alloc error */
                printf("Failed to allocate memory\n");
index fb90be9d3ebac66d42ebdfb62eaa97b69d193b20..86bf6565f689ede5d33747769f3b45b8b4eb687a 100644 (file)
@@ -88,7 +88,7 @@ typedef struct global_data {
 #endif
        unsigned int timebase_h;
        unsigned int timebase_l;
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        unsigned long malloc_base;      /* base address of early malloc() */
        unsigned long malloc_limit;     /* limit address */
        unsigned long malloc_ptr;       /* current address */
diff --git a/include/atsha204a-i2c.h b/include/atsha204a-i2c.h
new file mode 100644 (file)
index 0000000..344fd8a
--- /dev/null
@@ -0,0 +1,69 @@
+/*
+ * I2C Driver for Atmel ATSHA204 over I2C
+ *
+ * Copyright (C) 2014 Josh Datko, Cryptotronix, jbd@cryptotronix.com
+ *              2016 Tomas Hlavacek, CZ.NIC, tmshlvck@gmail.com
+ *              2017 Marek Behun, CZ.NIC, marek.behun@nic.cz
+ *
+ * This program is free software; you can redistribute  it and/or modify it
+ * under the terms of the GNU General Public License version 2 as
+ * published by the Free Software Foundation.
+ */
+#ifndef _ATSHA204_I2C_H_
+#define _ATSHA204_I2C_H_
+
+enum atsha204a_zone
+{
+       ATSHA204A_ZONE_CONFIG   = 0,
+       ATSHA204A_ZONE_OTP      = 1,
+       ATSHA204A_ZONE_DATA     = 2,
+};
+
+enum atsha204a_status
+{
+       ATSHA204A_STATUS_SUCCESS        = 0x00,
+       ATSHA204A_STATUS_MISCOMPARE     = 0x01,
+       ATSHA204A_STATUS_PARSE_ERROR    = 0x03,
+       ATSHA204A_STATUS_EXEC_ERROR     = 0x0F,
+       ATSHA204A_STATUS_AFTER_WAKE     = 0x11,
+       ATSHA204A_STATUS_CRC_ERROR      = 0xFF,
+};
+
+enum atsha204a_func
+{
+       ATSHA204A_FUNC_RESET    = 0x00,
+       ATSHA204A_FUNC_SLEEP    = 0x01,
+       ATSHA204A_FUNC_IDLE     = 0x02,
+       ATSHA204A_FUNC_COMMAND  = 0x03,
+};
+
+enum atsha204a_cmd
+{
+       ATSHA204A_CMD_READ      = 0x02,
+       ATSHA204A_CMD_RANDOM    = 0x1B,
+};
+
+struct atsha204a_resp
+{
+       u8 length;
+       u8 code;
+       u8 data[82];
+} __attribute__ ((packed));
+
+struct atsha204a_req
+{
+       u8 function;
+       u8 length;
+       u8 command;
+       u8 param1;
+       u16 param2;
+       u8 data[78];
+} __attribute__ ((packed));
+
+int atsha204a_wakeup(struct udevice *);
+int atsha204a_idle(struct udevice *);
+int atsha204a_sleep(struct udevice *);
+int atsha204a_read(struct udevice *, enum atsha204a_zone, bool, u16, u8 *);
+int atsha204a_get_random(struct udevice *, u8 *, size_t);
+
+#endif /* _ATSHA204_I2C_H_ */
index 5a5c2ff1e674875dfd6ba999addf73baae231d3a..c5988f78a8f1a1c7fc3f6b777eb00848db490757 100644 (file)
@@ -98,6 +98,21 @@ int clk_get_by_index(struct udevice *dev, int index, struct clk *clk);
  * @return 0 if OK, or a negative error code.
  */
 int clk_get_by_name(struct udevice *dev, const char *name, struct clk *clk);
+
+/**
+ * clk_release_all() - Disable (turn off)/Free an array of previously
+ * requested clocks.
+ *
+ * For each clock contained in the clock array, this function will check if
+ * clock has been previously requested and then will disable and free it.
+ *
+ * @clk:       A clock struct array that was previously successfully
+ *             requested by clk_request/get_by_*().
+ * @count      Number of clock contained in the array
+ * @return zero on success, or -ve error code.
+ */
+int clk_release_all(struct clk *clk, int count);
+
 #else
 static inline int clk_get_by_index(struct udevice *dev, int index,
                                   struct clk *clk)
@@ -110,6 +125,12 @@ static inline int clk_get_by_name(struct udevice *dev, const char *name,
 {
        return -ENOSYS;
 }
+
+static inline int clk_release_all(struct clk *clk, int count)
+{
+       return -ENOSYS;
+}
+
 #endif
 
 /**
index 2874a7850da3318af8f7932c0f9b4f97affc7a8e..06610f9d6e3f9f893c3d6b5547bbdfc733276f9a 100644 (file)
@@ -14,7 +14,6 @@
  */
 
 #define CONFIG_CMD_MFSL                /* FSL support for Microblaze   */
-#define CONFIG_CMD_MTDPARTS    /* mtd parts support            */
 #define CONFIG_CMD_NAND                /* NAND support                 */
 #define CONFIG_CMD_ONENAND     /* OneNAND support              */
 #define CONFIG_CMD_PCI         /* pciinfo                      */
@@ -27,7 +26,6 @@
 #define CONFIG_CMD_SAVES       /* save S record dump           */
 #define CONFIG_CMD_SDRAM       /* SDRAM DIMM SPD info printout */
 #define CONFIG_CMD_TERMINAL    /* built-in Serial Terminal     */
-#define CONFIG_CMD_UBIFS       /* UBIFS Support                */
 #define CONFIG_CMD_UNIVERSE    /* Tundra Universe Support      */
 #define CONFIG_CMD_ZFS         /* ZFS Support                  */
 
index 40d323e0044c4c8fd4cc21bbcac85e1fdcfa175f..6ec577bffad4a0dc9324a084090a9f76a0c184eb 100644 (file)
@@ -7,22 +7,6 @@
 #ifndef __CONFIG_FSL_CHAIN_TRUST_H
 #define __CONFIG_FSL_CHAIN_TRUST_H
 
-/* For secure boot, since ENVIRONMENT in flash/external memories is
- * not verified, undef CONFIG_ENV_xxx and set default env
- * (CONFIG_ENV_IS_NOWHERE)
- */
-#ifdef CONFIG_SECURE_BOOT
-
-#undef CONFIG_ENV_IS_IN_EEPROM
-#undef CONFIG_ENV_IS_IN_NAND
-#undef CONFIG_ENV_IS_IN_MMC
-#undef CONFIG_ENV_IS_IN_SPI_FLASH
-#undef CONFIG_ENV_IS_IN_FLASH
-
-#define CONFIG_ENV_IS_NOWHERE
-
-#endif
-
 #ifdef CONFIG_CHAIN_OF_TRUST
 
 #ifndef CONFIG_EXTRA_ENV
index ea980e651171975a27cba36bbf0bba1e4e288e8b..d05cc613d07c5b59949e1360868ddb7739a06fa0 100644 (file)
@@ -70,7 +70,6 @@
  * of flash. NOTE: the monitor length must be multiple of sector size
  * (which is common practice).
  */
-#define CONFIG_ENV_IS_IN_FLASH
 
 #define CONFIG_ENV_SIZE                        0x10000 /* 64k, 1 sector */
 #define CONFIG_ENV_OVERWRITE           /* Serial change Ok     */
index 65271773f4c89902eb19e7dd918ff2263d6811cf..0d3794dd06a446613eb841fbb2f64d3cfbd80944 100644 (file)
@@ -73,7 +73,6 @@
  * of flash. NOTE: the monitor length must be multiple of sector size
  * (which is common practice).
  */
-#define CONFIG_ENV_IS_IN_FLASH
 
 #define CONFIG_ENV_SIZE                        0x20000 /* 128k, 1 sector */
 #define CONFIG_ENV_OVERWRITE           /* Serial change Ok     */
index 2226aba674b1d2f3e64a746fc8a78cd1d5239b96..f9a677124baef181d39186567aa47a9ebfbdfcb1 100644 (file)
 #define CONFIG_ENV_OVERWRITE
 
 #ifndef CONFIG_MTD_NOR_FLASH
-#if !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE) && !defined(CONFIG_RAMBOOT_PBL)
-#define CONFIG_ENV_IS_NOWHERE
-#endif
 #else
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS              0
 #define CONFIG_ENV_SPI_CS               0
 #define CONFIG_ENV_SPI_MAX_HZ           10000000
 #define CONFIG_ENV_SECT_SIZE            0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (512 * 1097)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (10 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
 #define CONFIG_ENV_ADDR                0xffe20000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index 59b2252e6fc866cbd2f463d6d83bfbf6294be2e2..eadfa758c7a4ca3f053248d48b0891e8c74983fe 100644 (file)
@@ -267,7 +267,6 @@ extern unsigned long get_sdram_size(void);
  * Environment
  */
 #if defined(CONFIG_RAMBOOT_SPIFLASH)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
@@ -276,13 +275,11 @@ extern unsigned long get_sdram_size(void);
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_NAND)
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_SYS_EXTRA_ENV_RELOC
 #define CONFIG_ENV_SIZE                CONFIG_SYS_NAND_BLOCK_SIZE
 #define CONFIG_ENV_OFFSET      ((768 * 1024) + CONFIG_SYS_NAND_BLOCK_SIZE)
 #define CONFIG_ENV_RANGE       (3 * CONFIG_ENV_SIZE)
 #elif defined(CONFIG_SYS_RAMBOOT)
-#define CONFIG_ENV_IS_NOWHERE  /* Store ENV in memory only */
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #define CONFIG_ENV_SIZE                0x2000
 #endif
@@ -336,7 +333,6 @@ extern unsigned long get_sdram_size(void);
  */
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define MTDIDS_DEFAULT "nand0=ff800000.flash,"
 #define MTDPARTS_DEFAULT "mtdparts=ff800000.flash:1m(uboot)," \
                        "8m(kernel),512k(dtb),-(fs)"
index 407e499de1ac3ea99d37bc94f08b866c8683d9bc..4395eb9c070de2c9a8200e38506a8c7f49565fbd 100644 (file)
@@ -485,12 +485,10 @@ combinations. this should be removed later
  * Environment
  */
 #if defined(CONFIG_RAMBOOT_SDCARD)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x2000
 #elif defined(CONFIG_RAMBOOT_SPIFLASH)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
@@ -499,16 +497,13 @@ combinations. this should be removed later
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_NAND) || defined(CONFIG_NAND_SECBOOT)
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                CONFIG_SYS_NAND_BLOCK_SIZE
 #define CONFIG_ENV_OFFSET      ((768 * 1024) + CONFIG_SYS_NAND_BLOCK_SIZE)
 #define CONFIG_ENV_RANGE       (3 * CONFIG_ENV_SIZE)
 #elif defined(CONFIG_SYS_RAMBOOT)
-#define CONFIG_ENV_IS_NOWHERE          /* Store ENV in memory only */
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #define CONFIG_ENV_SIZE                        0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000
@@ -558,7 +553,6 @@ combinations. this should be removed later
 #ifdef CONFIG_MTD_NOR_FLASH
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT "nor0=88000000.nor,nand0=ff800000.flash,"
 #define MTDPARTS_DEFAULT "mtdparts=88000000.nor:256k(dtb),7m(kernel)," \
index 398d0e0550cbd7a681af355e0ce0c09b1b3292aa..629a326d7b4b6984a7ab66027495cd0ed4cb032a 100644 (file)
  */
 #if defined(CONFIG_SYS_RAMBOOT)
 #if defined(CONFIG_RAMBOOT_SPIFLASH)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
 #define CONFIG_ENV_SIZE                0x2000
 #endif
 #elif defined(CONFIG_NAND)
-#define CONFIG_ENV_IS_IN_NAND
 #ifdef CONFIG_TPL_BUILD
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_INIT_L2_ADDR + (160 << 10))
 #endif
 #define CONFIG_ENV_OFFSET      CONFIG_SYS_NAND_BLOCK_SIZE
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000
index f8b1d4af38e5650985bf0db3f9c75c5dab84b9cf..0fbf457cdcafab14e9c869ddedf2298d65a12d49 100644 (file)
@@ -20,9 +20,6 @@
 #undef CONFIG_WATCHDOG
 #define CONFIG_WATCHDOG_TIMEOUT                5000
 
-/* Command line configuration */
-#define CONFIG_CMD_REGINFO
-
 #define CONFIG_MCFFEC
 #ifdef CONFIG_MCFFEC
 #      define CONFIG_MII               1
 #define CONFIG_ENV_OFFSET              0x2000
 #define CONFIG_ENV_SIZE                        0x1000
 #define CONFIG_ENV_SECT_SIZE           0x2000
-#define CONFIG_ENV_IS_IN_FLASH         1
 
 #define LDS_BOARD_TEXT \
         . = DEFINED(env_offset) ? env_offset : .; \
index fc9b26ff4624675b724cd54c05fe3df382548bc6..21a0309c6e910bac3e6443ec795493c2deca9904 100644 (file)
@@ -35,9 +35,6 @@
 #define CONFIG_BOOTP_GATEWAY
 #define CONFIG_BOOTP_HOSTNAME
 
-/* Command line configuration */
-#define CONFIG_CMD_REGINFO
-
 #define CONFIG_HOSTNAME                        M52277EVB
 #define CONFIG_SYS_UBOOT_END           0x3FFFF
 #define        CONFIG_SYS_LOAD_ADDR2           0x40010007
  * crc error warning if there is no correct environment on the flash.
  */
 #ifdef CONFIG_CF_SBF
-#      define CONFIG_ENV_IS_IN_SPI_FLASH
 #      define CONFIG_ENV_SPI_CS        2
-#else
-#      define CONFIG_ENV_IS_IN_FLASH   1
 #endif
 #define CONFIG_ENV_OVERWRITE           1
 
index 7247111cf5973a4b2ab926804b1cac0c97f21cfa..57328c6269dc73a9c6a59c304863bc45a2232cce 100644 (file)
@@ -35,7 +35,6 @@
 
 /* Command line configuration */
 #define CONFIG_CMD_PCI
-#define CONFIG_CMD_REGINFO
 
 #define CONFIG_MCFFEC
 #ifdef CONFIG_MCFFEC
 /* Configuration for environment
  * Environment is embedded in u-boot in the second sector of the flash
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 
 #define LDS_BOARD_TEXT \
        . = DEFINED(env_offset) ? env_offset : .; \
index 4ef83f7862fc30cf71690c4d15107b7c265745d8..f6027e231f2aacd7a795c93a60841ceed04038b6 100644 (file)
@@ -84,8 +84,6 @@
 #define CONFIG_SYS_GBL_DATA_OFFSET     (CONFIG_SYS_INIT_RAM_SIZE - GENERATED_GBL_DATA_SIZE)
 #define CONFIG_SYS_INIT_SP_OFFSET      CONFIG_SYS_GBL_DATA_OFFSET
 
-#define CONFIG_ENV_IS_IN_FLASH 1
-
 #define LDS_BOARD_TEXT \
         . = DEFINED(env_offset) ? env_offset : .; \
         common/env_embedded.o (.text);
index 3efd7e59cfab14fbb93cbfd5343f0c4ebf92da30..2bdfe80ef5dd30bd3c80f2d9a5cf66a1180e1c73 100644 (file)
 #ifdef CONFIG_MONITOR_IS_IN_RAM
 #      define CONFIG_ENV_OFFSET                0x4000
 #      define CONFIG_ENV_SECT_SIZE     0x1000
-#      define CONFIG_ENV_IS_IN_FLASH   1
 #else
 #      define CONFIG_ENV_ADDR          (CONFIG_SYS_FLASH_BASE + 0x4000)
 #      define CONFIG_ENV_SECT_SIZE     0x1000
-#      define CONFIG_ENV_IS_IN_FLASH   1
 #endif
 
 #define LDS_BOARD_TEXT \
index 4f7a19b5d3221d6c8f5b58be9afa7de3cfdceb5f..0722ea19e3c9c2eca58cf5f8006b6bd826e6f0a1 100644 (file)
 #ifndef CONFIG_MONITOR_IS_IN_RAM
 #define CONFIG_ENV_OFFSET              0x4000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #else
 #define CONFIG_ENV_ADDR                0xffe04000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #endif
 
 #define LDS_BOARD_TEXT \
index 0b0e4e60c74feb4a66a5a93b599bc6598c5493d0..e6bd7f360991ab9a1f7f6dc7bfc7fa2e8fd81591 100644 (file)
 #ifndef CONFIG_MONITOR_IS_IN_RAM
 #define CONFIG_ENV_OFFSET              0x4000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #else
 #define CONFIG_ENV_ADDR                0xffe04000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #endif
 
 #define LDS_BOARD_TEXT \
index 5d324ba5bff52f11fd8e9e7179f353a76e20dbb0..6bcd6b6f2e88ec58cf31aae87bb093f5dcd6d850 100644 (file)
 #ifndef CONFIG_MONITOR_IS_IN_RAM
 #define CONFIG_ENV_OFFSET              0x4000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #else
 #define CONFIG_ENV_ADDR                0xffe04000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #endif
 
 #define LDS_BOARD_TEXT \
index 061a632c9863d1d075618f56cba6a9ec6214045d..cc703aac19a5b94d45700cc7d612793e90d8c6fb 100644 (file)
@@ -29,7 +29,6 @@
  */
 #define CONFIG_ENV_ADDR                0xffe04000
 #define CONFIG_ENV_SIZE                0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 
 #define LDS_BOARD_TEXT \
        . = DEFINED(env_offset) ? env_offset : .; \
index b88c3709c601b4f88859b20b4d14bd52f091e4e0..d50c874fe1e630157fd106d40b881ae134d089d9 100644 (file)
@@ -25,9 +25,6 @@
 #undef CONFIG_WATCHDOG
 #define CONFIG_WATCHDOG_TIMEOUT                5000
 
-/* Command line configuration */
-#define CONFIG_CMD_REGINFO
-
 #define CONFIG_SYS_UNIFY_CACHE
 
 #define CONFIG_MCFFEC
 #define CONFIG_ENV_OFFSET              (CONFIG_SYS_FLASH_BASE + 0x40000)
 #define CONFIG_ENV_SIZE                        0x1000
 #define CONFIG_ENV_SECT_SIZE           0x8000
-#define CONFIG_ENV_IS_IN_FLASH         1
 
 #define LDS_BOARD_TEXT \
        . = DEFINED(env_offset) ? env_offset : .; \
index 999bcd94952939a619f5d4ac1ee62f6d4cca3bdd..45cdf9da15e16deb17a1c2e780c8d6178e573804 100644 (file)
@@ -25,9 +25,6 @@
 #undef CONFIG_WATCHDOG
 #define CONFIG_WATCHDOG_TIMEOUT        5000    /* timeout in milliseconds, max timeout is 6.71sec */
 
-/* Command line configuration */
-#define CONFIG_CMD_REGINFO
-
 #ifdef CONFIG_NANDFLASH_SIZE
 #      define CONFIG_CMD_NAND
 #endif
  */
 #define CONFIG_ENV_OFFSET              0x4000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 
 #define LDS_BOARD_TEXT \
         . = DEFINED(env_offset) ? env_offset : .; \
index 3a39e5031d3f11c87665febbd069e2fbbfa5c717..26639fc41fbd3fb999490131b05b1c4cab4bcd2d 100644 (file)
@@ -25,9 +25,6 @@
 #undef CONFIG_WATCHDOG
 #define CONFIG_WATCHDOG_TIMEOUT        3360    /* timeout in ms, max is 3.36 sec */
 
-/* Command line configuration */
-#define CONFIG_CMD_REGINFO
-
 #ifdef CONFIG_NANDFLASH_SIZE
 #      define CONFIG_CMD_NAND
 #endif
  */
 #define CONFIG_ENV_OFFSET              0x4000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 
 #define LDS_BOARD_TEXT \
         . = DEFINED(env_offset) ? env_offset : .; \
index f4d970d0d869804953de45e065559d011beb917e..b4b1ba88d6b0c0b4b5881ad7b43c65fe8b7fda3d 100644 (file)
@@ -38,7 +38,6 @@
 
 /* Command line configuration */
 #undef CONFIG_CMD_NAND
-#define CONFIG_CMD_REGINFO
 
 /*
  * NAND FLASH
  * Environment is embedded in u-boot in the second sector of the flash
  */
 #if !defined(CONFIG_SERIAL_BOOT)  /*MRAM boot*/
-#define CONFIG_ENV_IS_IN_MRAM  1
 #define CONFIG_ENV_ADDR                (0x40000 - 0x1000) /*MRAM size 40000*/
 #define CONFIG_ENV_SIZE                0x1000
 #endif
 
 #if defined(CONFIG_CF_SBF)
-#define CONFIG_ENV_IS_IN_SPI_FLASH     1
 #define CONFIG_ENV_SPI_CS              1
 #define CONFIG_ENV_OFFSET              0x40000
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE           0x10000
 #endif
 #if defined(CONFIG_SYS_NAND_BOOT)
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_OFFSET      0x80000
 #define CONFIG_ENV_SIZE        0x20000
 #define CONFIG_ENV_SECT_SIZE   0x20000
 #ifdef CONFIG_CMD_JFFS2
 #define CONFIG_JFFS2_DEV               "nand0"
 #define CONFIG_JFFS2_PART_OFFSET       (0x800000)
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define MTDIDS_DEFAULT         "nand0=m54418twr.nand"
 
 #endif
 
 #ifdef CONFIG_CMD_UBI
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts command */
 #define CONFIG_MTD_PARTITIONS  /* mtdparts and UBI support */
-#define CONFIG_RBTREE
 #define MTDIDS_DEFAULT         "nand0=NAND"
 #define MTDPARTS_DEFAULT       "mtdparts=NAND:1m(u-boot),"     \
                                        "-(ubi)"
index 7d6edda36148cbb8b4cfa9b55a05cfb1717890c8..6eb8eaddf18e17a2057929eecf0790b9f6b95ff0 100644 (file)
@@ -35,9 +35,6 @@
 #define CONFIG_BOOTP_GATEWAY
 #define CONFIG_BOOTP_HOSTNAME
 
-/* Command line configuration */
-#define CONFIG_CMD_REGINFO
-
 /* Network configuration */
 #define CONFIG_MCFFEC
 #ifdef CONFIG_MCFFEC
  * crc error warning if there is no correct environment on the flash.
  */
 #if defined(CONFIG_SYS_STMICRO_BOOT)
-#      define CONFIG_ENV_IS_IN_SPI_FLASH       1
 #      define CONFIG_ENV_SPI_CS                1
 #      define CONFIG_ENV_OFFSET                0x20000
 #      define CONFIG_ENV_SIZE          0x2000
 #      define CONFIG_ENV_SECT_SIZE     0x10000
 #else
-#      define CONFIG_ENV_IS_IN_FLASH   1
 #      define CONFIG_ENV_ADDR          (CONFIG_SYS_FLASH_BASE + 0x40000)
 #      define CONFIG_ENV_SIZE          0x2000
 #      define CONFIG_ENV_SECT_SIZE     0x20000
index 39ba94065ab3a95d171092af0b08a5de48fc7923..8702b891748a0e2e837e76c7ce01803573abfea9 100644 (file)
@@ -37,7 +37,6 @@
 
 /* Command line configuration */
 #undef CONFIG_CMD_PCI
-#define CONFIG_CMD_REGINFO
 
 /* Network configuration */
 #define CONFIG_MCFFEC
  * crc error warning if there is no correct environment on the flash.
  */
 #ifdef CONFIG_CF_SBF
-#      define CONFIG_ENV_IS_IN_SPI_FLASH
 #      define CONFIG_ENV_SPI_CS                1
-#else
-#      define CONFIG_ENV_IS_IN_FLASH   1
 #endif
 #undef CONFIG_ENV_OVERWRITE
 
index cf9d3b8e1b9ea4fdbad33c5252e713e53329aa56..9dca52e78acf0ad8774f86f324e40fee24767f41 100644 (file)
@@ -27,7 +27,6 @@
 
 /* Command line configuration */
 #define CONFIG_CMD_PCI
-#define CONFIG_CMD_REGINFO
 
 #define CONFIG_SLTTMR
 
  */
 #define CONFIG_ENV_OFFSET              0x40000
 #define CONFIG_ENV_SECT_SIZE   0x10000
-#define CONFIG_ENV_IS_IN_FLASH 1
 
 /*-----------------------------------------------------------------------
  * Cache Configuration
index 934c9d8903660318fccb6011f6a0d0f4695658a0..d95be2bd5e9b29ab308d0620001dc9ca083dd578 100644 (file)
@@ -27,7 +27,6 @@
 
 /* Command line configuration */
 #define CONFIG_CMD_PCI
-#define CONFIG_CMD_REGINFO
 
 #define CONFIG_SLTTMR
 
  */
 #define CONFIG_ENV_OFFSET              0x40000
 #define CONFIG_ENV_SECT_SIZE   0x10000
-#define CONFIG_ENV_IS_IN_FLASH 1
 
 /*-----------------------------------------------------------------------
  * Cache Configuration
index 15bb0e9d6a1bacc382bfff772381a50cff9f54e0..17090da796e648928cb406d03ba2f3aa6a84ea0c 100644 (file)
 /* Environment Configuration */
 
 /* environment is in FLASH */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SECT_SIZE   (64 * 1024)
 #define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_LEN)
index 0f26467e2941bfd78a0760234f1dfd8bfc7b8e17..25d5cab9596206db79ef74a53c44e394f1e84d1c 100644 (file)
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
                                 CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SECT_SIZE   0x10000 /* 64K(one sector) for env */
index 38a4a6220bf08b2beb2c88b8f2f2842ee85d7403..cf0c7234dcc26a4719cd3e5ccd92483ddbfa4608 100644 (file)
 
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITION
-#define CONFIG_CMD_MTDPARTS
 #define MTDIDS_DEFAULT                 "nand0=e2800000.flash"
 #define MTDPARTS_DEFAULT               \
        "mtdparts=e2800000.flash:512k(uboot),128k(env),6m@1m(kernel),-(fs)"
  * Environment
  */
 #if defined(CONFIG_NAND)
-       #define CONFIG_ENV_IS_IN_NAND   1
        #define CONFIG_ENV_OFFSET               (512 * 1024)
        #define CONFIG_ENV_SECT_SIZE    CONFIG_SYS_NAND_BLOCK_SIZE
        #define CONFIG_ENV_SIZE         CONFIG_ENV_SECT_SIZE
        #define CONFIG_ENV_OFFSET_REDUND        \
                                        (CONFIG_ENV_OFFSET + CONFIG_ENV_RANGE)
 #elif !defined(CONFIG_SYS_RAMBOOT)
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR         \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
        #define CONFIG_ENV_SECT_SIZE    0x10000 /* 64K(one sector) for env */
 
 /* Address and size of Redundant Environment Sector */
 #else
-       #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
index 522f12ceecafa0c8af2abdb1cc5846823ff5a050..be1a6afff379e8d39eed5cb4298f606ee461e795 100644 (file)
 
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITION
-#define CONFIG_CMD_MTDPARTS
 #define MTDIDS_DEFAULT                 "nand0=e0600000.flash"
 #define MTDPARTS_DEFAULT               \
        "mtdparts=e0600000.flash:512k(uboot),128k(env),6m@1m(kernel),-(fs)"
  * Environment
  */
 #if !defined(CONFIG_SYS_RAMBOOT)
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR         \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
        #define CONFIG_ENV_SECT_SIZE    0x10000 /* 64K(one sector) for env */
        #define CONFIG_ENV_SIZE         0x2000
 #else
-       #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
index ea99aead456f35322b32db4d74150fd4fa002b6d..b8f8f493eb3eb6cd534c7d0079eb46eaa7bdd68c 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR         \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
        #define CONFIG_ENV_SECT_SIZE    0x20000
        #define CONFIG_ENV_SIZE         0x2000
 #else
-       #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
index 716fc3822e80c8b5f9d43f5c253c9650d44e88c5..428f3abf903d1b19e844cc2dbd7f82130c31dcb1 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR         \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
        #define CONFIG_ENV_SECT_SIZE    0x20000
        #define CONFIG_ENV_SIZE         0x2000
 #else
-       #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
index 2f91dd57bbf2d7a19dfd377727ce3e6e4e75bf32..18f7523692ad35bb64e1a66c2d6f283cd7791857 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR         \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
        #define CONFIG_ENV_SECT_SIZE    0x20000 /* 128K(one sector) for env */
 #define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
 
 #else
-       #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
index 53e089a82a114897a11eb42195b72733bb8a38e0..221c35cf51b41834134c75e016412d3ddd34c25a 100644 (file)
@@ -452,14 +452,12 @@ boards, we say we have two, but don't display a message if we find only one. */
 #define CONFIG_ENV_OVERWRITE
 
 #ifndef CONFIG_SYS_RAMBOOT
-  #define CONFIG_ENV_IS_IN_FLASH
   #define CONFIG_ENV_ADDR      \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
   #define CONFIG_ENV_SECT_SIZE 0x10000 /* 64K (one sector) for environment */
   #define CONFIG_ENV_SIZE      0x2000
 #else
   #undef  CONFIG_FLASH_CFI_DRIVER
-  #define CONFIG_ENV_IS_NOWHERE        /* Store ENV in memory only */
   #define CONFIG_ENV_ADDR      (CONFIG_SYS_MONITOR_BASE - 0x1000)
   #define CONFIG_ENV_SIZE      0x2000
 #endif
index 459efb560c2556caff316af676043455ce04f13a..1a65c25c4809158f596d65644152e87141c0015a 100644 (file)
@@ -442,13 +442,11 @@ extern int board_pci_host_broken(void);
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR         \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
        #define CONFIG_ENV_SECT_SIZE    0x20000 /* 128K(one sector) for env */
        #define CONFIG_ENV_SIZE         0x2000
 #else
-       #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
index 7afbc9096f5b875d62b33c262db268ee3da04d77..d93f7a0074ec094bce1fddee84d1ae4b60bc0f37 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR         \
                        (CONFIG_SYS_MONITOR_BASE+CONFIG_SYS_MONITOR_LEN)
        #define CONFIG_ENV_SECT_SIZE    0x10000 /* 64K (one sector) for env */
        #define CONFIG_ENV_SIZE         0x4000
 #else
-       #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
index 470bb72fcb2286be11d78abb8348a3f4bffbc672..0245fc68ebfad3fc8169dab96167a8323f0c77cb 100644 (file)
 
 #if defined(CONFIG_SYS_RAMBOOT)
 #if defined(CONFIG_RAMBOOT_SPIFLASH)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
 #define CONFIG_ENV_OFFSET      0xF0000
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #elif defined(CONFIG_RAMBOOT_SDCARD)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_SYS_MMC_ENV_DEV  0
 #else
-       #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
 #else
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
        #define CONFIG_ENV_SIZE         0x2000
        #define CONFIG_ENV_SECT_SIZE    0x20000 /* 128K (one sector) */
index 0f96ac0242f1355f007d546cfe7ea3509c833b77..ca4ccd8ad3c42443d7df9a33a3f3c43a773b95d6 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-  #define CONFIG_ENV_IS_IN_FLASH       1
   #define CONFIG_ENV_ADDR              (CONFIG_SYS_MONITOR_BASE + 0x40000)
   #define CONFIG_ENV_SECT_SIZE 0x40000 /* 256K(one sector) for env */
   #define CONFIG_ENV_SIZE              0x2000
 #else
-  #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
index 029aa572ce43c8b75ed3a93796f9c3e86161e7b1..977454167d9b43fbc99ca1c60a0d000ee7fb022a 100644 (file)
@@ -323,7 +323,6 @@ extern unsigned long get_clock_freq(void);
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + 0x40000)
 #define CONFIG_ENV_SECT_SIZE   0x40000 /* 256K(one sector) for env */
 #define CONFIG_ENV_SIZE                0x2000
index ffa8796407c7d513ab7d97c1c29ed40f1647d5f6..b4f4c4e32bc8cb0fe5c3ee709fe5b19f711362db 100644 (file)
@@ -325,7 +325,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SECT_SIZE   0x10000 /* 64K (one sector) */
 #if CONFIG_SYS_MONITOR_BASE > 0xfff80000
 #define CONFIG_ENV_ADDR                0xfff80000
index 43e05516ab6a2c9915377b71ab0a6325dfb046de..b41543688b8031e661da4904317be82f46597f17 100644 (file)
@@ -438,7 +438,6 @@ extern unsigned long get_clock_freq(void);
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #if CONFIG_SYS_MONITOR_BASE > 0xfff80000
 #define CONFIG_ENV_ADDR        0xfff80000
 #else
index 96a125c32335b54b4ec972b1d14b71426bcd62ac..d31395cf81f9e2a1be44fd892f2d3f5742d68081 100644 (file)
@@ -321,7 +321,6 @@ extern unsigned long get_clock_freq(void);
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + 0x40000)
 #define CONFIG_ENV_SECT_SIZE   0x40000 /* 256K(one sector) for env */
 #define CONFIG_ENV_SIZE                0x2000
index 8d026addb3509adc9239463a5a2da9eac7248f7a..2e13fb52df236451ba77030bc67d5f3ddf42eccb 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-  #define CONFIG_ENV_IS_IN_FLASH       1
   #define CONFIG_ENV_ADDR              (CONFIG_SYS_MONITOR_BASE + 0x40000)
   #define CONFIG_ENV_SECT_SIZE 0x40000 /* 256K(one sector) for env */
   #define CONFIG_ENV_SIZE              0x2000
 #else
-  #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
index 3734055bd3cc4c3099aa3750cb039f72367e286a..c0af7451b8b3a812fdea7eb53710bf35d3c96e92 100644 (file)
@@ -336,7 +336,6 @@ extern unsigned long get_clock_freq(void);
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K(one sector) for env */
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
index eb7db20b7f4fdfe80ff5e6f89f086cb1e99f6760..a75ce0b93deda24a37e89a7322852e75bb0f290a 100644 (file)
@@ -424,7 +424,6 @@ extern unsigned long get_clock_freq(void);
  */
 #if defined(CONFIG_SYS_RAMBOOT)
 #else
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K(one sector) for env */
 #define CONFIG_ENV_SIZE                0x2000
index d8e0dfd807054bd8bbf1f1c69e81d98a78739746..32c593291a5d487720c68570e526dbb106f6889f 100644 (file)
 #if defined(CONFIG_SYS_RAMBOOT)
 
 #else
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #if CONFIG_SYS_MONITOR_BASE > 0xfff80000
        #define CONFIG_ENV_ADDR 0xfff80000
        #else
 #define CONFIG_USB_EHCI_PCI
 #define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 #define CONFIG_PCI_EHCI_DEVICE                 0
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     2
 #endif
 
 #undef CONFIG_WATCHDOG                 /* watchdog disabled */
index 1db3a633ef3bae625734bf3c31dfc96cef65bc37..5e8211609a5e3a830b5a047f33b728f7f0ce545d 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 126k (one sector) for env */
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#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
index e87b11180a46ea65f700332343a4d90c79017436..7b9b2458b37bab5cffafb91cf5f3cbf7418fc7b2 100644 (file)
@@ -563,12 +563,10 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-    #define CONFIG_ENV_IS_IN_FLASH     1
     #define CONFIG_ENV_ADDR            \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
     #define CONFIG_ENV_SECT_SIZE               0x10000 /* 64K(one sector) for env */
 #else
-    #define CONFIG_ENV_IS_NOWHERE      1       /* Store ENV in memory only */
     #define CONFIG_ENV_ADDR            (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #endif
 #define CONFIG_ENV_SIZE                0x2000
index 7217426d3a5e70ccc4d1428c3e456450a62d380b..5ee83b903464f923259b83bcc5cf8e5ef28d9f9d 100644 (file)
@@ -94,7 +94,6 @@
 #undef  CONFIG_SYS_DIRECT_FLASH_TFTP
 
 /* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OVERWRITE   1
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
index 0dc062a0944231dc3df78663d7750ec0fb4c880e..23fe9f9f7c5b8774652a19b6286481eb773663b6 100644 (file)
@@ -354,7 +354,6 @@ extern unsigned long get_sdram_size(void);
 
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITION
-#define CONFIG_CMD_MTDPARTS
 #define MTDIDS_DEFAULT                 "nand0=ff800000.flash"
 #define MTDPARTS_DEFAULT               \
        "mtdparts=ff800000.flash:2m(uboot-env),1m(dtb),5m(kernel),56m(fs),-(usr)"
@@ -678,12 +677,10 @@ extern unsigned long get_sdram_size(void);
  * Environment
  */
 #if defined(CONFIG_SDCARD)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x2000
 #elif defined(CONFIG_SPIFLASH)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
@@ -692,7 +689,6 @@ extern unsigned long get_sdram_size(void);
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_NAND)
-#define CONFIG_ENV_IS_IN_NAND
 #ifdef CONFIG_TPL_BUILD
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_INIT_L2_ADDR + (160 << 10))
@@ -707,11 +703,9 @@ extern unsigned long get_sdram_size(void);
 #endif
 #define CONFIG_ENV_OFFSET      (1024 * 1024)
 #elif defined(CONFIG_SYS_RAMBOOT)
-#define CONFIG_ENV_IS_NOWHERE          /* Store ENV in memory only */
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #define CONFIG_ENV_SIZE                        0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index 2ee6c6442f7b464bdf9a2e6fc2ecaf132d75d19d..db70b469dcbe57a68be3cec3901ed62b1af7b491 100644 (file)
  */
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #ifdef CONFIG_PHYS_64BIT
 #define MTDIDS_DEFAULT "nor0=fe8000000.nor"
  * Environment
  */
 #ifdef CONFIG_SPIFLASH
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
 #define CONFIG_ENV_OFFSET      0x100000        /* 1MB */
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #elif defined(CONFIG_SDCARD)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #else
 #define CONFIG_ENV_SIZE                CONFIG_SYS_NAND_BLOCK_SIZE
 #endif
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET      (1024 * 1024)
 #define CONFIG_ENV_RANGE       (3 * CONFIG_ENV_SIZE)
 #elif defined(CONFIG_SYS_RAMBOOT)
-#define CONFIG_ENV_IS_NOWHERE  /* Store ENV in memory only */
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index 719043d5a1bdefde0a1a481d4942435078460e1f..be42dadac73861a2a35a5953d41aef96ffae2ea7 100644 (file)
@@ -230,7 +230,6 @@ extern unsigned long get_clock_freq(void);
  */
 #define CONFIG_ENV_OVERWRITE
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index 967c83c53bace9f8546f599e1945c80f28964dae..38fbf3785f7779b279bdeb16a6412fd9cc6adbe6 100644 (file)
@@ -55,9 +55,6 @@
 #define CONFIG_ENV_OVERWRITE
 
 #ifndef CONFIG_MTD_NOR_FLASH
-#if !defined(CONFIG_RAMBOOT_PBL) && !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_NOWHERE
-#endif
 #else
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
@@ -66,7 +63,6 @@
 
 #if defined(CONFIG_SPIFLASH)
        #define CONFIG_SYS_EXTRA_ENV_RELOC
-       #define CONFIG_ENV_IS_IN_SPI_FLASH
        #define CONFIG_ENV_SPI_BUS              0
        #define CONFIG_ENV_SPI_CS               0
        #define CONFIG_ENV_SPI_MAX_HZ           10000000
        #define CONFIG_ENV_SECT_SIZE            0x10000
 #elif defined(CONFIG_SDCARD)
        #define CONFIG_SYS_EXTRA_ENV_RELOC
-       #define CONFIG_ENV_IS_IN_MMC
        #define CONFIG_FSL_FIXED_MMC_LOCATION
        #define CONFIG_SYS_MMC_ENV_DEV          0
        #define CONFIG_ENV_SIZE                 0x2000
        #define CONFIG_ENV_OFFSET               (512 * 1658)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        CONFIG_SYS_NAND_BLOCK_SIZE
 #define CONFIG_ENV_OFFSET              (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
 #define CONFIG_ENV_ADDR                0xffe20000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-       #define CONFIG_ENV_IS_IN_FLASH
        #define CONFIG_ENV_ADDR         (CONFIG_SYS_MONITOR_BASE \
                        - CONFIG_ENV_SECT_SIZE)
        #define CONFIG_ENV_SIZE         0x2000
index 2e3a8c1184c2edf54ac69a44d6bff399cf2e141f..cfb495fe8be06c6572a422db8d81024935f3ad94 100644 (file)
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS             0
 #define CONFIG_ENV_SPI_CS              0
 #define CONFIG_ENV_SPI_MAX_HZ          10000000
 #define CONFIG_ENV_SECT_SIZE           0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (512 * 0x800)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (10 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
 #define CONFIG_ENV_ADDR                0xffe20000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
@@ -758,7 +753,6 @@ unsigned long get_board_ddr_clk(void);
 #ifdef CONFIG_MTD_NOR_FLASH
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT    "nor0=fe8000000.nor,nand0=fff800000.flash," \
                          "spi0=spife110000.0"
index 025e7de8d00bc3dc48f90f8e9954614d06e030b2..3b592eb395c582970a09930a163e3ff79d770bab 100644 (file)
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS             0
 #define CONFIG_ENV_SPI_CS              0
 #define CONFIG_ENV_SPI_MAX_HZ          10000000
 #endif
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (512 * 0x800)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #if defined(CONFIG_TARGET_T1024RDB)
 #define CONFIG_ENV_OFFSET              (2 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #define CONFIG_ENV_OFFSET              (10 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #endif
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
 #define CONFIG_ENV_ADDR                0xffe20000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
@@ -770,7 +765,6 @@ unsigned long get_board_ddr_clk(void);
 #ifdef CONFIG_MTD_NOR_FLASH
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT "nor0=fe8000000.nor,nand0=fff800000.flash," \
                        "spi0=spife110000.1"
index 86f7880ff185b0e5c6607a89ff4b3fae79754ec7..bf2c15a18329d1ba09daa324fbe744b31b506f85 100644 (file)
@@ -63,7 +63,6 @@
 #define CONFIG_ENV_OVERWRITE
 
 #ifndef CONFIG_MTD_NOR_FLASH
-#define CONFIG_ENV_IS_NOWHERE
 #else
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
@@ -73,7 +72,6 @@
 #ifdef CONFIG_MTD_NOR_FLASH
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS              0
 #define CONFIG_ENV_SPI_CS               0
 #define CONFIG_ENV_SPI_MAX_HZ           10000000
 #define CONFIG_ENV_SECT_SIZE            0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (512 * 1658)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        CONFIG_SYS_NAND_BLOCK_SIZE
 #define CONFIG_ENV_OFFSET              (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
@@ -637,7 +632,6 @@ unsigned long get_board_ddr_clk(void);
 #ifdef CONFIG_MTD_NOR_FLASH
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT "nor0=fe8000000.nor,nand0=fff800000.flash," \
                        "spi0=spife110000.0"
index 350dacaa388b95e0acd1919179313386476ecf0b..1454b9f62e4b2e10c9438eee347c7ef5d93a573e 100644 (file)
@@ -180,13 +180,11 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_sd_rcw.cfg
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                 0x2000          /* 8KB */
 #define CONFIG_ENV_OFFSET               0x100000        /* 1MB */
 #define CONFIG_ENV_SECT_SIZE            0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (512 * 0x800)
@@ -196,11 +194,9 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_sd_rcw.cfg
 #define CONFIG_BOOTSCRIPT_COPY_RAM
 #endif
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (3 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
@@ -810,7 +806,6 @@ $(SRCTREE)/board/freescale/t104xrdb/t1042d4_sd_rcw.cfg
 #ifdef CONFIG_MTD_NOR_FLASH
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT "nor0=fe8000000.nor,nand0=fff800000.flash," \
                        "spi0=spife110000.0"
index 9edf19081c51d7977d464c1cadd7886f7340b9ec..119c543612005d49d44c5a37a6d65ee4a75e793d 100644 (file)
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_OFFSET      (512 * 0x800)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_OFFSET      (10 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
 #define CONFIG_ENV_ADDR                0xffe20000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
@@ -724,7 +719,6 @@ unsigned long get_board_ddr_clk(void);
 #ifdef CONFIG_MTD_NOR_FLASH
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT "nor0=fe8000000.nor,nand0=fff800000.flash," \
                        "spi0=spife110000.0"
index 0e70aa83ea67d39a7ab253e13dbc22e3134411bd..862e079e6725725ffc2d891104233aae7795d632 100644 (file)
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_OFFSET      (512 * 0x800)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_OFFSET      (2 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
 #define CONFIG_ENV_ADDR                0xffe20000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
@@ -672,7 +667,6 @@ unsigned long get_board_ddr_clk(void);
 #ifdef CONFIG_MTD_NOR_FLASH
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT "nor0=fe8000000.nor,nand0=fff800000.flash," \
                        "spi0=spife110000.1"
index f69746b4da87f4ae4180945cf626dd3584a32fbd..944dab80683b72682012d3817dbee93384d8a56a 100644 (file)
@@ -78,9 +78,6 @@
 #include "t4qds.h"
 
 #ifndef CONFIG_MTD_NOR_FLASH
-#if !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE) && !defined(CONFIG_RAMBOOT_PBL)
-#define CONFIG_ENV_IS_NOWHERE
-#endif
 #else
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
@@ -89,7 +86,6 @@
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS              0
 #define CONFIG_ENV_SPI_CS               0
 #define CONFIG_ENV_SPI_MAX_HZ           10000000
 #define CONFIG_ENV_SECT_SIZE            0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (512 * 0x800)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (10 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
 #define CONFIG_ENV_ADDR                0xffe20000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index ed3b0f7202f8f5a6a5088b00e33c9ecc8e684aa5..df3888310c9228d350aa8fea05bf028fb6c395e9 100644 (file)
        "bootm 0x01000000 - 0x00f00000"
 
 #ifndef CONFIG_MTD_NOR_FLASH
-#ifndef CONFIG_RAMBOOT_PBL
-#define CONFIG_ENV_IS_NOWHERE
-#endif
 #else
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS              0
 #define CONFIG_ENV_SPI_CS               0
 #define CONFIG_ENV_SPI_MAX_HZ           10000000
 #define CONFIG_ENV_SECT_SIZE            0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (512 * 0x800)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        CONFIG_SYS_NAND_BLOCK_SIZE
 #define CONFIG_ENV_OFFSET              (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index a79dabef61313073493fde7cba0005f4bf0755e8..c216ac2d474d84280c0c6dd176698a9924cdb033 100644 (file)
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                \
                        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) for env */
 /*
  * Command line configuration.
  */
-#define CONFIG_CMD_REGINFO
-
 #if defined(CONFIG_PCI)
     #define CONFIG_CMD_PCI
 #endif
  * JFFS2 partitions
  */
 /* mtdparts command line support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE              /* needed for mtdparts commands */
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT         "nor0=TQM834x-0"
index 9a7aa811963c63353796033aaea238be093e39d4..6fd3fa471259bae444c6b69de6f44256dd747881 100644 (file)
  */
 #ifdef CONFIG_ENV_FIT_UCBOOT
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + 0x20000)
 #define CONFIG_ENV_SIZE                0x20000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
 
 #ifdef CONFIG_RAMBOOT_SPIFLASH
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                0x3000          /* 12KB */
 #define CONFIG_ENV_OFFSET      0x2000          /* 8KB */
 #define CONFIG_ENV_SECT_SIZE   0x1000
 #endif
 
 #elif defined(CONFIG_RAMBOOT_SDCARD)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 #elif defined(CONFIG_SYS_RAMBOOT)
-#define CONFIG_ENV_IS_NOWHERE  /* Store ENV in memory only */
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #define CONFIG_ENV_SIZE                0x2000
 
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_BASE                (CONFIG_SYS_FLASH_BASE)
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
 #define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE
index 6bfc08e5af7429de1d0942fb94fcee5df478408b..cef1eddeb629386044804a6c4ae8c0c07586656e 100644 (file)
 #define CONFIG_SYS_MAX_FLASH_SECT      512
 
 /* environments */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_MONITOR_BASE + 0x140000)
 #define CONFIG_ENV_SIZE                        8192
 #define CONFIG_ENV_OVERWRITE
index 4cef64e3c5e9e2d1a9b02a2196127eb9be6625d0..f9662780de52ca3a621a3e28b6e79c5d63ac714c 100644 (file)
 #define CONFIG_SYS_MAX_FLASH_SECT      512
 
 /* environments */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_MONITOR_BASE + 0x140000)
 #define CONFIG_ENV_SIZE                        8192
 #define CONFIG_ENV_OVERWRITE
index 66ee167f96b717c39d234df6b5a20cb3e242e6c5..22a4e69be580020131acd78c8b9e0b63bf0b0835 100644 (file)
@@ -10,7 +10,7 @@
 #define __ADVANTECH_DMSBA16_CONFIG_H
 
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #define CONFIG_BOARD_NAME      "Advantech DMS-BA16"
 
 
 /* FLASH and environment organization */
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                 (8 * 1024)
 #define CONFIG_ENV_OFFSET               (768 * 1024)
 #define CONFIG_ENV_SECT_SIZE            (64 * 1024)
index 0c6d2880daf36602560610117d6c87b46088cf2e..c7329cce9c3755f9a9c3f766a81ec9537b47c35a 100644 (file)
@@ -20,7 +20,6 @@
 
 #ifndef CONFIG_SPL_BUILD
 # define CONFIG_TIMESTAMP
-# define CONFIG_LZO
 #endif
 
 #define CONFIG_SYS_BOOTM_LEN           (16 << 20)
 
 #ifndef CONFIG_SPL_USBETH_SUPPORT
 /* Fastboot */
-#define CONFIG_USB_FUNCTION_FASTBOOT
-#define CONFIG_CMD_FASTBOOT
 #define CONFIG_ANDROID_BOOT_IMAGE
-#define CONFIG_FASTBOOT_BUF_ADDR       CONFIG_SYS_LOAD_ADDR
-#define CONFIG_FASTBOOT_BUF_SIZE       0x07000000
 
 #define CONFIG_FASTBOOT_FLASH_MMC_DEV   1
 #endif
 
 #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_USBETH_SUPPORT)
 /* Remove other SPL modes. */
-#define CONFIG_ENV_IS_NOWHERE
-#undef CONFIG_ENV_IS_IN_NAND
 /* disable host part of MUSB in SPL */
 /* disable EFI partitions and partition UUID support */
 #endif
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS     0x20000
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_SPI_MAX_HZ          CONFIG_SF_DEFAULT_SPEED
 #define CONFIG_ENV_SECT_SIZE           (4 << 10) /* 4 KB sectors */
                                        "128k(u-boot-env2),3464k(kernel)," \
                                        "-(rootfs)"
 #elif defined(CONFIG_EMMC_BOOT)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              0x0
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_SYS_MMC_MAX_DEVICE      2
 #elif defined(CONFIG_NOR_BOOT)
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE           (128 << 10)     /* 128 KiB */
 #define CONFIG_ENV_OFFSET              (512 << 10)     /* 512 KiB */
 #define CONFIG_ENV_OFFSET_REDUND       (768 << 10)     /* 768 KiB */
 #define CONFIG_SYS_ENV_SECT_SIZE       CONFIG_SYS_NAND_BLOCK_SIZE
 #elif !defined(CONFIG_ENV_IS_NOWHERE)
 /* Not NAND, SPI, NOR or eMMC env, so put ENV in a file on FAT */
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE              "mmc"
 #define FAT_ENV_DEVICE_AND_PART                "0:1"
 #define FAT_ENV_FILE                   "uboot.env"
index b1ffcc8872e4e1bea479b58e44b91f769e90cae1..4721b42f9ef7cd8b27f413f3f5b58a3f5c6aa1eb 100644 (file)
 
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 
 #define MTDIDS_DEFAULT                 "nand0=omap2-nand.0"
 #define MTDPARTS_DEFAULT               "mtdparts=omap2-nand.0:512k(SPL),-(UBI)"
 #define CONFIG_SPL_UBI_INFO_ADDR       0x88080000
 
 /* environment organization */
-#define CONFIG_ENV_IS_IN_UBI           1
 #define CONFIG_ENV_UBI_PART            "UBI"
 #define CONFIG_ENV_UBI_VOLUME          "config"
 #define CONFIG_ENV_UBI_VOLUME_REDUND   "config_r"
index 247679eee37babc2e9902a98fd39fa7acc159a24..f3b7767a9724bbc5e2281e4dd3cfd45afa104562 100644 (file)
@@ -26,7 +26,6 @@
 
 #ifndef CONFIG_SPL_BUILD
 # define CONFIG_TIMESTAMP
-# define CONFIG_LZO
 #endif
 
 #define CONFIG_SYS_BOOTM_LEN           (16 << 20)
@@ -35,8 +34,6 @@
 #define V_OSCK                         24000000  /* Clock output from T2 */
 #define V_SCLK                         (V_OSCK)
 
-#define CONFIG_ENV_IS_IN_MMC           1
-
 /*
  * in case of SD Card or Network boot we want to have a possibility to
  * debrick the shc, therefore do not read environment from eMMC
 #define CONFIG_SYS_I2C_SLAVE           1
 
 #define CONFIG_SHOW_BOOT_PROGRESS
-
-#if defined CONFIG_SHC_NETBOOT
-#ifdef CONFIG_SPL_BUILD
-#define CONFIG_ENV_IS_NOWHERE
-#undef CONFIG_ENV_IS_IN_MMC
-#endif
-#endif
 #endif /* ! __CONFIG_AM335X_SHC_H */
index 2c4033ca59c74e6848fa46b6dee35add81d4ac6d..75f9befcfd0a6e3378fa62b266f82ff72ce37e6e 100644 (file)
@@ -13,7 +13,6 @@
 
 #ifndef CONFIG_SPL_BUILD
 # define CONFIG_TIMESTAMP
-# define CONFIG_LZO
 #endif
 
 #define CONFIG_SYS_BOOTM_LEN           (16 << 20)
 
 #if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_USBETH_SUPPORT)
 /* Remove other SPL modes. */
-#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 */
 #endif
 
 #if defined(CONFIG_EMMC_BOOT)
-#undef CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              0x0
index eb768b9e97bc7c547f064ae69e614cf449ae6713..77d9ba189962078371761968928a095fcf5d8000 100644 (file)
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 
 #define CONFIG_NAND_OMAP_GPMC
-#define CONFIG_ENV_IS_IN_NAND          1
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 
 #define CONFIG_SYS_ENV_SECT_SIZE       (128 << 10)     /* 128 KiB sector */
index 829dd3ecb960372acc365f20375805d8a9dfe37e..26036c4e977cb2fe6f462eeccae6528cb8a89b6a 100644 (file)
@@ -89,7 +89,6 @@
 
 /* commands to include */
 #define CONFIG_CMD_NAND
-#define CONFIG_CMD_MTDPARTS
 
 /* I2C */
 #define CONFIG_SYS_I2C
 #define CONFIG_NAND_OMAP_GPMC
 #define CONFIG_NAND_OMAP_GPMC_PREFETCH
 #define CONFIG_BCH
-#define CONFIG_CMD_UBIFS               /* Read-only UBI volume operations */
-#define CONFIG_RBTREE                  /* required by CONFIG_CMD_UBI */
-#define CONFIG_LZO                     /* required by CONFIG_CMD_UBIFS */
 #define CONFIG_SYS_NAND_ADDR           NAND_BASE       /* physical address */
                                                        /* to access nand */
 #define CONFIG_SYS_NAND_BASE           NAND_BASE       /* physical address */
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 #define CONFIG_ENV_OFFSET              SMNAND_ENV_OFFSET
 #define CONFIG_ENV_ADDR                        SMNAND_ENV_OFFSET
-#define CONFIG_ENV_IS_IN_NAND
 
 /* Defines for SPL */
 #define CONFIG_SPL_FRAMEWORK
index 1d8e39c2035256d245c3234f500280518ef5c808..70e7473ee8df802acbfc1cd79ccca70d48192acf 100644 (file)
@@ -71,7 +71,6 @@
 /* NS16550 Configuration */
 #define CONFIG_SYS_NS16550_COM1                0x44e09000      /* Base EVM has UART0 */
 
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE              "mmc"
 #define FAT_ENV_DEVICE_AND_PART                "0:1"
 #define FAT_ENV_FILE                   "uboot.env"
@@ -83,7 +82,6 @@
 #if defined(CONFIG_SPL_USB_HOST_SUPPORT) || !defined(CONFIG_SPL_BUILD)
 #define CONFIG_SYS_USB_FAT_BOOT_PARTITION              1
 #define CONFIG_USB_XHCI_OMAP
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
 
 #define CONFIG_OMAP_USB_PHY
 #define CONFIG_AM437X_USB2PHY2_HOST
 #ifndef CONFIG_SYS_TEXT_BASE
 #define CONFIG_SYS_TEXT_BASE           CONFIG_ISW_ENTRY_ADDR
 #endif
-#undef CONFIG_ENV_IS_IN_FAT
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_SPI_MAX_HZ           CONFIG_SF_DEFAULT_SPEED
 #define CONFIG_ENV_SECT_SIZE           (64 << 10) /* 64 KB sectors */
 #define CONFIG_PHYLIB
 #define PHY_ANEG_TIMEOUT       8000 /* PHY needs longer aneg time at 1G */
 
-#if defined(CONFIG_SPL_BUILD) && defined(CONFIG_SPL_ETH_SUPPORT)
-#undef CONFIG_ENV_IS_IN_FAT
-#define CONFIG_ENV_IS_NOWHERE
-#endif
-
 #define CONFIG_SYS_RX_ETH_BUFFER       64
 
 /* NAND support */
index 98ce6c52daf9f7797e4272233374fade258bddb9..9976686bd812f61d949177cbfb60264cfe80fc2f 100644 (file)
@@ -22,7 +22,6 @@
 #define CONFIG_NR_DRAM_BANKS           2
 
 /* MMC ENV related defines */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1               /* eMMC */
 #define CONFIG_SYS_MMC_ENV_PART                0
 #define CONFIG_ENV_SIZE                        SZ_128K
@@ -93,7 +92,6 @@
 
 /* USB xHCI HOST */
 #define CONFIG_USB_XHCI_OMAP
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
 
 #define CONFIG_OMAP_USB_PHY
 #define CONFIG_OMAP_USB3PHY1_HOST
index acae6914e598410b1c8210bd625c95646ddef585..0a4074611297066f2ca8e677787a15854312123c 100644 (file)
@@ -87,7 +87,6 @@
 #define CONFIG_SYS_MALLOC_LEN          (1 * 1024 * 1024)
 #define CONFIG_SYS_BOOTPARAMS_LEN      (64 * 1024)
 
-#define CONFIG_ENV_IS_IN_FLASH         1
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + \
                                         CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SIZE                        0x1000
index 2284b8bc66322ee68209fd320789836b1bf4b5cf..489b32e6d1ebddf78ff22a446fb88729a4a1e3a6 100644 (file)
                                        "64k(NVRAM),64k(ART)"
 
 #define CONFIG_ENV_SPI_MAX_HZ           25000000
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET               0x40000
 #define CONFIG_ENV_SECT_SIZE            0x10000
 #define CONFIG_ENV_SIZE                 0x10000
 
-/*
- * Command
- */
-#define CONFIG_CMD_MTDPARTS
-
 /* Miscellaneous configurable options */
 #define CONFIG_SYS_CBSIZE               256
 #define CONFIG_SYS_MAXARGS              16
index 2950783097da4ea9956c784566d59c59665d198b..3e93a08fe39afa9bb924b5eb922faa79d496750c 100644 (file)
                                        "64k(ART)"
 
 #define CONFIG_ENV_SPI_MAX_HZ           25000000
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET               0x40000
 #define CONFIG_ENV_SECT_SIZE            0x10000
 #define CONFIG_ENV_SIZE                 0x10000
 
-/*
- * Command
- */
-#define CONFIG_CMD_MTDPARTS
-
 /* Miscellaneous configurable options */
 #define CONFIG_SYS_CBSIZE               256
 #define CONFIG_SYS_MAXARGS              16
index b3c22cf4a40ff1fde9e47f9dc25d9944800fc420..285041dbf830d05662735b5fbee200de6aca55fb 100644 (file)
 #undef  CONFIG_SYS_DIRECT_FLASH_TFTP
 
 /* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OVERWRITE   1
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
index 440505dd1f8103563ad4f75468b8c6832c289e65..078c77bf68ce7d20c3ecda3f42b9282ff6014699 100644 (file)
 #define CONFIG_SYS_BOOTMAPSZ   (8 * 1024 * 1024)
 
 /* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OVERWRITE   1
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
index c3cade9ea6b14a8473081a7791195b3c6f611794..d6b226c425170e6a23121744f5372f346722287c 100644 (file)
@@ -29,7 +29,6 @@
 #define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
 
 /* Environment in eMMC, before config block at the end of 1st "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE + \
                                         CONFIG_TDX_CFG_BLOCK_OFFSET)
 #define CONFIG_SYS_MMC_ENV_DEV         0
index b4006a37e0f6a57c1c47001b35c854f7381a30af..4a12ac8ca3747a761b0dff66d6e60cce42197f1c 100644 (file)
@@ -19,7 +19,7 @@
 #define CONFIG_SYS_GENERIC_BOARD
 
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #ifdef CONFIG_SPL
 #include "imx6_spl.h"
 
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
-#define CONFIG_ENV_IS_IN_MMC
-
 #if defined(CONFIG_ENV_IS_IN_MMC)
 /* Environment in eMMC, before config block at the end of 1st "boot sector" */
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE + \
index 9772d8b5c3918649114962d5a7b5ab35ed017d9f..daa3be099987ae8eca2f26d67bf3ec098c87f245 100644 (file)
@@ -26,7 +26,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, before config block at the end of 1st "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE + \
                                         CONFIG_TDX_CFG_BLOCK_OFFSET)
 #define CONFIG_SYS_MMC_ENV_DEV         0
index 073f3b4fef708f879fad141a40d5a51eaa8b0143..b122fe617ba9a3c94efe50c2a02f62b1596767ce 100644 (file)
 /*
  * U-Boot Commands
  */
-#define CONFIG_CMD_MTDPARTS    /* MTD partition support        */
 #define CONFIG_CMD_NAND                /* NAND support                 */
 #define CONFIG_CMD_NAND_LOCK_UNLOCK
 #define CONFIG_CMD_NAND_TRIMFFS
-#define CONFIG_CMD_UBIFS
 
 /*
  * Memory configurations
@@ -85,7 +83,6 @@
  */
 #define        ACFG_MONITOR_OFFSET             0x00000000
 #define        CONFIG_SYS_MONITOR_LEN          0x00100000      /* 1MiB */
-#define CONFIG_ENV_IS_IN_NAND
 #define        CONFIG_ENV_OVERWRITE
 #define        CONFIG_ENV_OFFSET               0x00100000      /* NAND offset */
 #define        CONFIG_ENV_SIZE                 0x00020000      /* 128kB  */
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_SUPPORT_VFAT
 
-/*
- * UBIFS
- */
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-
 /*
  * Ethernet (on SOC imx FEC)
  */
index cce39f27c7dbfa81107ecab632a1f84a8d3bf1b9..fd319b39324037f75831d1b1fb92de6b5e877727 100644 (file)
@@ -30,7 +30,6 @@
 
 /* Environment */
 #define CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_IS_IN_NAND
 
 /* Environment is in MMC */
 #if defined(CONFIG_CMD_MMC) && defined(CONFIG_ENV_IS_IN_MMC)
 
 /* UBI and NAND partitioning */
 #ifdef CONFIG_CMD_NAND
-#define CONFIG_CMD_UBIFS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 #define MTDIDS_DEFAULT                 "nand0=gpmi-nand"
index 7360e11ff14dae8ec682ce6f7baceb3be4474ece..0495dbffbdd1ac0d69b6a5138769b80bc2088a8d 100644 (file)
 
 /* Environment organization */
 #define CONFIG_ENV_SIZE                        (12 * 1024)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_SPI_BUS             CONFIG_SF_DEFAULT_BUS
 #define CONFIG_ENV_SPI_CS              CONFIG_SF_DEFAULT_CS
 #define CONFIG_MXC_USB_FLAGS   0
 
 /* UBI support */
-#define CONFIG_LZO
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
-#define CONFIG_RBTREE
-#define CONFIG_CMD_UBIFS
 
 #define CONFIG_HW_WATCHDOG
 #define CONFIG_IMX_WATCHDOG
index 2023895c3ef7830a537ce6c3ef71e7ca528a9440..492062abb351c5ff38b56c42d574cd65c3e0e295 100644 (file)
@@ -87,7 +87,6 @@
 #define CONFIG_SYS_FLASH_UNLOCK_TOUT   3000
 
 /* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OVERWRITE   1
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + \
index 4d770e6077d1f00aa18225c32ebe262cd112f997..8f0422943bb43286df2fd73cf537f5d34c54287c 100644 (file)
@@ -27,7 +27,6 @@
 /* Miscellaneous configurable options */
 #define CONFIG_DEFAULT_CONSOLE         "console=ttySAC2,115200n8\0"
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET      (CONFIG_BL2_OFFSET + CONFIG_BL2_SIZE)
 
 #define CONFIG_IRAM_STACK      0x02050000
index e6cddc13ac1b4cc5156de0b5bdd524690757e9bb..36d74f3b26840f950b44c2ea59a3426903d08120 100644 (file)
@@ -38,7 +38,6 @@
 /*
  * Environment variables configurations
  */
-#define CONFIG_ENV_IS_NOWHERE  1       /* if env in SDRAM */
 #define CONFIG_ENV_SIZE        0x20000 /* 64k */
 
 #endif /* __CONFIG_ASPENITE_H */
index 61989d6babe2f1988081e33b6f351bffff419043..7e373a2ca4da4186f7f5387f734d5e429e16f8f5 100644 (file)
@@ -57,9 +57,6 @@
 #define ENABLE_JFFS    1
 #endif
 
-/* Define which commands should be available at u-boot command prompt */
-
-#define CONFIG_CMD_REGINFO
 #define CONFIG_CMDLINE_EDITING
 
 #define CONFIG_MCFRTC
 #ifndef CONFIG_MONITOR_IS_IN_RAM
 #define CONFIG_ENV_OFFSET              0x1FF8000
 #define CONFIG_ENV_SECT_SIZE           0x8000
-#define CONFIG_ENV_IS_IN_FLASH         1
 #else
 /*
  * environment in RAM - This is used to use a single PC-based application
  */
 #define CONFIG_ENV_ADDR                0x40060000
 #define CONFIG_ENV_SECT_SIZE   0x8000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #endif
 
 /* here we put our FPGA configuration... */
 #define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE
 
 #define CONFIG_FPGA_COUNT      1
-#define CONFIG_FPGA
 #define        CONFIG_FPGA_XILINX
 #define        CONFIG_FPGA_SPARTAN3
-#define CONFIG_FPGA_ALTERA
 #define CONFIG_FPGA_CYCLON2
 #define CONFIG_SYS_FPGA_PROG_FEEDBACK
 #define CONFIG_SYS_FPGA_WAIT           1000
index dea8130046557c7858d99e13883d250f1c6dd9d9..b4135235d419e57bfb935110edc15e51616d4657 100644 (file)
@@ -53,7 +53,6 @@
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #else
 /* u-boot env in sd/mmc card */
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE      "mmc"
 #define FAT_ENV_DEVICE_AND_PART        "0"
 #define FAT_ENV_FILE           "uboot.env"
@@ -79,7 +78,6 @@
 
 #ifdef CONFIG_SYS_USE_NANDFLASH
 /* u-boot env in nand flash */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0xc0000
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                        0x20000
@@ -88,7 +86,6 @@
                                        "bootz 0x22000000 - 0x21000000"
 #elif CONFIG_SYS_USE_SERIALFLASH
 /* u-boot env in serial flash, by default is bus 0 and cs 0 */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              0x6000
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_SECT_SIZE           0x1000
index 53e191a312ab541f61459f743b14f32a5e3e2e17..cb6dae71e9b64c01259ff2b8611895b80b9557b9 100644 (file)
 /*
  * Environment Settings
  */
-#define CONFIG_ENV_IS_IN_FLASH
 
 /*
  * after u-boot.bin
index 48d7f6a5e639c3ba83b9d92d94d18f1f22ce2e59..51b6fab7164374b7b531580049ec5f678a328d12 100644 (file)
 #ifdef CONFIG_SYS_USE_DATAFLASH_CS0
 
 /* bootstrap + u-boot + env + linux in dataflash on CS0 */
-#define CONFIG_ENV_IS_IN_DATAFLASH     1
 #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)
 #elif CONFIG_SYS_USE_DATAFLASH_CS1
 
 /* bootstrap + u-boot + env + linux in dataflash on CS1 */
-#define CONFIG_ENV_IS_IN_DATAFLASH     1
 #define CONFIG_SYS_MONITOR_BASE        (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + 0x8400)
 #define CONFIG_ENV_OFFSET              0x4200
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS1 + CONFIG_ENV_OFFSET)
 #elif defined(CONFIG_SYS_USE_NANDFLASH)
 
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND  1
 #define CONFIG_ENV_OFFSET              0x120000
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                0x20000         /* 1 sector = 128 kB */
 
 #else  /* CONFIG_SYS_USE_MMC */
 /* bootstrap + u-boot + env + linux in mmc */
-#define CONFIG_ENV_IS_IN_MMC
 /* For FAT system, most cases it should be in the reserved sector */
 #define CONFIG_ENV_OFFSET              0x2000
 #define CONFIG_ENV_SIZE                        0x1000
index 505f945bd313ec6b31719daf663b0ef1ee77e19b..4e151cdd049b8a7c5ddc4ad1a9ae1f8fbc53941f 100644 (file)
 #ifdef CONFIG_SYS_USE_DATAFLASH_CS0
 
 /* bootstrap + u-boot + env + linux 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)
 #elif CONFIG_SYS_USE_DATAFLASH_CS3
 
 /* bootstrap + u-boot + env + linux in dataflash on CS3 */
-#define CONFIG_ENV_IS_IN_DATAFLASH
 #define CONFIG_SYS_MONITOR_BASE        (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3 + 0x8400)
 #define CONFIG_ENV_OFFSET      0x4200
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS3 + CONFIG_ENV_OFFSET)
 #else /* CONFIG_SYS_USE_NANDFLASH */
 
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0xc0000
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                0x20000         /* 1 sector = 128 kB */
index e45e4dbddc7d8c6fbec8928b92e6ee72681658a7..62099c7024085c23a8d46a8c17cfb500f54f98a4 100644 (file)
@@ -97,7 +97,6 @@
 #define CONFIG_SYS_MONITOR_SEC 1:0-3
 #define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_MONITOR_LEN (256 << 10)
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + 0x007E0000)
 #define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR - CONFIG_ENV_SIZE)
 
 #ifdef CONFIG_SYS_USE_DATAFLASH
 
 /* bootstrap + u-boot + env + linux in dataflash on CS0 */
-#define CONFIG_ENV_IS_IN_DATAFLASH     1
 #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)
 #elif CONFIG_SYS_USE_NANDFLASH
 
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_OFFSET              0x120000
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                0x20000         /* 1 sector = 128 kB */
index a0c5b9afae1baff03808eb5619e60b9ea8e05157..8b00370cddcaf2b2bf2b3e82cb62ed846f90db09 100644 (file)
@@ -90,7 +90,6 @@
 
 #ifdef CONFIG_SYS_USE_NANDFLASH
 /* bootstrap + u-boot + env in nandflash */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x120000
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                        0x20000
  */
 #define FAT_ENV_DEVICE_AND_PART        "0"
 #define FAT_ENV_FILE           "uboot.env"
-#define CONFIG_ENV_IS_IN_FAT
 #define CONFIG_ENV_SIZE                0x4000
 
 #define CONFIG_BOOTARGS                "console=ttyS0,115200 " \
index 50ddbd647595738fb215681082e8982e7a139d00..e4ff019967225c9d5b3df6496dbda4dc4478dfc6 100644 (file)
@@ -90,7 +90,6 @@
 
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
-#define CONFIG_CMD_MTDPARTS
 #define MTDIDS_DEFAULT                 "nand0=atmel_nand"
 #define MTDPARTS_DEFAULT                                               \
        "mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,"          \
 #ifdef CONFIG_SYS_USE_SPIFLASH
 
 /* bootstrap + u-boot + env + linux in dataflash on CS0 */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              0x5000
 #define CONFIG_ENV_SIZE                        0x3000
 #define CONFIG_ENV_SECT_SIZE           0x1000
 #elif defined(CONFIG_SYS_USE_NANDFLASH)
 
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x120000
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                        0x20000         /* 1 sector = 128 kB */
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #else
 /* Use file in FAT file to save environment */
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE              "mmc"
 #define FAT_ENV_FILE                   "uboot.env"
 #define FAT_ENV_DEVICE_AND_PART                "0"
index 8a8eb7c34fd96293c4a3f66f2311916a6a60a23b..6132076e823e82500783a5ca95337b8d15dc1d73 100644 (file)
@@ -95,7 +95,6 @@
 #ifdef CONFIG_SYS_USE_DATAFLASH
 
 /* bootstrap + u-boot + env + linux in dataflash on CS0 */
-#define CONFIG_ENV_IS_IN_DATAFLASH     1
 #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)
 #elif CONFIG_SYS_USE_NANDFLASH
 
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_OFFSET              0x120000
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                0x20000         /* 1 sector = 128 kB */
 #else /* CONFIG_SYS_USE_MMC */
 
 /* bootstrap + u-boot + env + linux in mmc */
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE      "mmc"
 #define FAT_ENV_FILE           "uboot.env"
 #define FAT_ENV_DEVICE_AND_PART        "0"
index fd2dbed1374dff37604b70e4d380d4d493763e61..7e8a9e921adc9b2b9e991601f668f2e11baa2a85 100644 (file)
 #define CONFIG_CMD_NAND_TRIMFFS
 
 #define CONFIG_MTD_DEVICE
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#define CONFIG_CMD_UBIFS
 #endif
 
 /* USB */
 
 #ifdef CONFIG_SYS_USE_NANDFLASH
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x120000
 #define CONFIG_ENV_OFFSET_REDUND       0x100000
 #define CONFIG_ENV_SIZE                0x20000         /* 1 sector = 128 kB */
                                "bootm 0x22000000"
 #elif defined(CONFIG_SYS_USE_SPIFLASH)
 /* bootstrap + u-boot + env + linux in spi flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET      0x5000
 #define CONFIG_ENV_SIZE                0x3000
 #define CONFIG_ENV_SECT_SIZE   0x1000
                                "bootm 0x22000000"
 #elif defined(CONFIG_SYS_USE_DATAFLASH)
 /* bootstrap + u-boot + env + linux in data flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET      0x4200
 #define CONFIG_ENV_SIZE                0x4200
 #define CONFIG_ENV_SECT_SIZE   0x210
                                "bootm 0x22000000"
 #else /* CONFIG_SYS_USE_MMC */
 /* bootstrap + u-boot + env + linux in mmc */
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE      "mmc"
 #define FAT_ENV_FILE           "uboot.env"
 #define FAT_ENV_DEVICE_AND_PART "0"
index 908b0188009ea52e64b9fc6129b4dc6a2b160060..b583267b3ed36b68ba599179c0f1ecb824bb2888 100644 (file)
@@ -75,7 +75,6 @@
 /*
  * Environment settings
  */
-#define CONFIG_ENV_IS_IN_FAT
 #define CONFIG_ENV_SIZE                        SZ_16K
 #define FAT_ENV_INTERFACE              "mmc"
 #define FAT_ENV_DEVICE_AND_PART                "0:1"
index fe4ac05f3849ed4e7db4bcfdc8dbd063ed4f0fe2..17b3a1571ed8740deca42a92c9600af8e538df89 100644 (file)
 #define CONFIG_SYS_BOOTM_LEN         SZ_64M
 
 /* UBI Support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#define CONFIG_CMD_UBIFS
 
 /* I2C configuration */
 #undef CONFIG_SYS_OMAP24_I2C_SPEED
                                        "128k(SPL.backup3)," \
                                        "1920k(u-boot)," \
                                        "-(UBI)"
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 #endif
 
index 71b1b96ec40e93362d44909832f07f6e6d875688..fafab8ea9783f996dd6112ff9a13601908f31d95 100644 (file)
 #define __CONFIG_BAV335X_H
 
 #include <configs/ti_am335x_common.h>
-#define CONFIG_ENV_IS_NOWHERE
 
 #ifndef CONFIG_SPL_BUILD
 # define CONFIG_TIMESTAMP
-# define CONFIG_LZO
 #endif
 
 #define CONFIG_SYS_BOOTM_LEN           (16 << 20)
@@ -389,8 +387,6 @@ DEFAULT_LINUX_BOOT_ENV \
        "8m(NAND.kernel)," \
        "-(NAND.rootfs)"
 #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x000c0000
-#undef CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x001c0000
 #define CONFIG_ENV_OFFSET_REDUND       0x001e0000
 #define CONFIG_SYS_ENV_SECT_SIZE       CONFIG_SYS_NAND_BLOCK_SIZE
@@ -503,7 +499,6 @@ DEFAULT_LINUX_BOOT_ENV \
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS     0x20000
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_SPI_MAX_HZ          CONFIG_SF_DEFAULT_SPEED
 #define CONFIG_ENV_SECT_SIZE           (4 << 10) /* 4 KB sectors */
@@ -515,8 +510,6 @@ DEFAULT_LINUX_BOOT_ENV \
                                        "128k(u-boot-env2),3464k(kernel)," \
                                        "-(rootfs)"
 #elif defined(CONFIG_EMMC_BOOT)
-#undef CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              0x0
@@ -558,7 +551,6 @@ DEFAULT_LINUX_BOOT_ENV \
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 /* Reduce SPL size by removing unlikey targets */
 #ifdef CONFIG_NOR_BOOT
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE           (128 << 10)     /* 128 KiB */
 #define CONFIG_ENV_OFFSET              (512 << 10)     /* 512 KiB */
 #define CONFIG_ENV_OFFSET_REDUND       (768 << 10)     /* 768 KiB */
index 02ae65ff5771f83aff18ee00a7e1de97e643c6d2..049b4e0a43796f5ee61d3ef0c29cb14199da4ef8 100644 (file)
@@ -81,7 +81,6 @@
 #define CONFIG_SYS_NS16550_COM1                0x3e000000
 
 /* must fit into GPT:u-boot-env partition */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_OFFSET              (0x00011a00 * 512)
 #define CONFIG_ENV_SIZE                        (8 * 512)
index 5a85f7fa9c05324dc12c909bb85bcff000773ed2..08d1e4e69f34432979cbbddfbb8bd8017934fef3 100644 (file)
@@ -80,7 +80,6 @@
 #define CONFIG_SYS_NS16550_COM1                0x3e000000
 
 /* must fit into GPT:u-boot-env partition */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_OFFSET              (0x00011a00 * 512)
 #define CONFIG_ENV_SIZE                        (8 * 512)
index 2afbbea140a652f6ccbc8cdeb84fdca2aa0b1bc2..8bd1e301a9cec4ddc9b9de024b66b79509de5c02 100644 (file)
@@ -46,7 +46,6 @@
 #define CONFIG_SYS_NS16550_SERIAL
 
 #define CONFIG_ENV_SIZE                        0x2000
-#define CONFIG_ENV_IS_NOWHERE
 
 /* console configuration */
 #define CONFIG_SYS_CBSIZE              1024    /* Console buffer size */
index dc2860382d65f70a6619771cab547f1ac69d9649..2352b98f6221f979c20cf5145d923d6b9c15342a 100644 (file)
@@ -38,7 +38,6 @@
 #define CONFIG_BAUDRATE                                115200
 
 #define CONFIG_ENV_SIZE                                SZ_8K
-#define CONFIG_ENV_IS_NOWHERE
 
 /* console configuration */
 #define CONFIG_SYS_CBSIZE                      SZ_1K
index f3d7a2fad2f11c1006a855d7c305bd7468a638fb..6afa1e8c0482d25ad3a9b73edd42b5ce7e3763bb 100644 (file)
@@ -27,7 +27,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
index 40f15387891483a55491a784a11732d0c77fcd8b..c76053e49a108369a2dd2d6f4fed17e118b371d4 100644 (file)
@@ -23,7 +23,6 @@
 /* Environment */
 #define CONFIG_ENV_SIZE                        (16 * 1024)
 #define CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_IS_NOWHERE
 
 /* FEC Ethernet on SoC */
 #ifdef CONFIG_CMD_NET
index cb80b903817a3de7ecf69e26cb8d5afc16530986..9a18046d9ce76ca37d2a435184ed1e8e8cf1cd8c 100755 (executable)
@@ -81,9 +81,7 @@
 /* ENV setting */
 #if !defined(CONFIG_MTD_NOR_FLASH)
 #else
-#undef  CONFIG_ENV_IS_IN_SPI_FLASH
 #undef  CONFIG_ENV_ADDR
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   (256 * 1024)
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_OFFSET      (CONFIG_ENV_ADDR)
index 50aaa7be8c9f3f33b47eb174aa188ea7d0e43575..2646cf09ed27ff937ebc31c85abcee24837a6d65 100644 (file)
@@ -64,7 +64,6 @@
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        CONFIG_ENV_SECT_SIZE
 #ifdef CONFIG_64BIT
index 07e743ac81a3866ac2097df4c90322a1accb226f..9688c4a7768bf1ef5d20bbfc7bcbe35364b52228 100644 (file)
@@ -54,7 +54,6 @@
  */
 #if defined(CONFIG_SPI_BOOT) || defined(CONFIG_NAND)
 #define CONFIG_MTD_DEVICE              /* Required for mtdparts */
-#define CONFIG_CMD_MTDPARTS
 #endif /* CONFIG_SPI_BOOT, ... */
 
 #ifdef CONFIG_SPL_OS_BOOT
@@ -242,8 +241,6 @@ MMCARGS
 
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SYS_SPI_U_BOOT_OFFS     0x20000
-#undef CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_SPI_MAX_HZ          CONFIG_SF_DEFAULT_SPEED
 #define CONFIG_ENV_SECT_SIZE           (4 << 10) /* 4 KB sectors */
@@ -251,8 +248,6 @@ MMCARGS
 #define CONFIG_ENV_OFFSET_REDUND       (896 << 10) /* 896 KiB in */
 
 #elif defined(CONFIG_EMMC_BOOT)
-#undef CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              0x40000 /* TODO: Adresse definieren */
@@ -261,11 +256,6 @@ MMCARGS
 
 #elif defined(CONFIG_NAND)
 /* No NAND env support in SPL */
-#ifdef CONFIG_SPL_BUILD
-#define CONFIG_ENV_IS_NOWHERE
-#else
-#define CONFIG_ENV_IS_IN_NAND
-#endif
 #define CONFIG_ENV_OFFSET              0x60000
 #define CONFIG_SYS_ENV_SECT_SIZE       CONFIG_ENV_SIZE
 #else
index f7d736939b1cf4645c68fb7d6be623d6ceae5a5e..8f92d7a9587504d5f126b3594fd7a371091aa97d 100644 (file)
@@ -88,8 +88,6 @@ BUR_COMMON_ENV \
 #define CONFIG_AM335X_USB1
 #define CONFIG_AM335X_USB1_MODE        MUSB_HOST
 
-#undef CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              0x40000 /* TODO: Adresse definieren */
index d43e3314a75823f5377244c0f09d3877195068e5..b6c8035fb5e8bab5371fea5d33eca139f1df60ca 100644 (file)
 #define CONFIG_SYS_NS16550_CLK clk_get(DAVINCI_UART2_CLKID)
 #define CONFIG_CONS_INDEX      1               /* use UART0 for console */
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_SYS_FLASH_PROTECTION
index f1b5a71edf123366a65daa4ae1f4c0784b8e1a04..a490d066194e3f69a39c69e0827ea4e0930bf494 100644 (file)
@@ -31,7 +31,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
index fd8df46776f552e71f2b7774a88663660f29aeef..768669ff1272ff74e271163ce3f4175b2b11670c 100644 (file)
@@ -27,7 +27,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
index 5d797b4403b0461d751eddf229619c17c5630939..b36cbb967933a04c66b5d97c8ae1e90d99ea7963 100644 (file)
 
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #if defined(CONFIG_ENV_IS_IN_SPI_FLASH)
 #define CONFIG_ENV_OFFSET              (768 * 1024)
 #define CONFIG_ENV_SECT_SIZE           (64 * 1024)
index 20168b22b637d62e1e7626cb255560f0d25ad75c..82be3a1afb2e8d341350a50f6a385510541a6a7f 100644 (file)
@@ -15,7 +15,6 @@
 
 #ifndef CONFIG_SPL_BUILD
 # define CONFIG_TIMESTAMP
-# define CONFIG_LZO
 #endif
 
 /* Clock Defines */
 #define CONFIG_ENV_SIZE                        SZ_128K
 #define CONFIG_SYS_ENV_SECT_SIZE       CONFIG_SYS_NAND_BLOCK_SIZE
 #else
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_OFFSET              SZ_128K
 #define CONFIG_ENV_OFFSET_REDUND       (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
index a04f4cd23d27b1a923c8fc03f5f1e596fbbe4834..120ac02e0662776430868eea31f5a3f5594e4662 100644 (file)
@@ -50,7 +50,6 @@
 #define CONFIG_ENV_SIZE                        (16 << 10) /* 16 KiB env size */
 #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SECT_SIZE           (64 * 1024)
 #define CONFIG_ENV_OFFSET              (768 * 1024)
 #define CONFIG_ENV_SPI_MAX_HZ          48000000
@@ -84,7 +83,6 @@
 
 /* USB xHCI HOST */
 #define CONFIG_USB_XHCI_OMAP
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
 
 #define CONFIG_OMAP_USB_PHY
 #define CONFIG_OMAP_USB3PHY1_HOST
index 77c2493e66523863953bf0442cb1b504bcbac8bb..bd8022214919c1937d3218e57ff45e851f746fd9 100644 (file)
@@ -54,7 +54,6 @@
 #define CONFIG_ENV_MIN_ENTRIES         128
 
 /* Environment in MMC */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SECT_SIZE           0x200
 #define CONFIG_ENV_SIZE                        0x10000
index 1d9c1650d55dbc7d0a75fe19521c49ae574def56..481b8371758bf73872fdfa64cb50d704fafc824e 100644 (file)
@@ -17,9 +17,6 @@
 #define CONFIG_SYS_LITTLE_ENDIAN
 #define CONFIG_MACH_TYPE               4273
 
-/* CMD */
-#define CONFIG_CMD_MTDPARTS
-
 /* MMC */
 #define CONFIG_SYS_FSL_USDHC_NUM       3
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC2_BASE_ADDR
@@ -67,7 +64,6 @@
                                "-(reserved)"
 
 /* Environment */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_MAX_HZ          CONFIG_SF_DEFAULT_SPEED
 #define CONFIG_ENV_SPI_MODE            CONFIG_SF_DEFAULT_MODE
 #define CONFIG_ENV_SPI_BUS             CONFIG_SF_DEFAULT_BUS
index 3fb9daebbc58f4bb00c649230ddbdb7674328672..a1b8e141a9ef032989d75c16bd999bf4caece3a3 100644 (file)
                                        "1m(u-boot),1m(u-boot-env)," \
                                        "1m(dtb),4m(splash)," \
                                        "6m(kernel),-(rootfs)"
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x300000 /* environment starts here */
 #define CONFIG_SYS_ENV_SECT_SIZE       (128 << 10)     /* 128 KiB */
 #define CONFIG_SYS_NAND_ONFI_DETECTION
index ee7c9de9690cbd86a80d87c00581223e6d6bb497..99d480032779dc68f6d883c1b4f19acf2ff4184c 100644 (file)
@@ -83,7 +83,6 @@
 #define CONFIG_USB_TTY
 
 /* commands to include */
-#define CONFIG_CMD_MTDPARTS    /* Enable MTD parts commands */
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS
 #define MTDIDS_DEFAULT         "nand0=nand"
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 2 sectors */
 
-#define CONFIG_ENV_IS_IN_NAND
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 #define CONFIG_ENV_OFFSET              SMNAND_ENV_OFFSET
 #define CONFIG_ENV_ADDR                        SMNAND_ENV_OFFSET
index dd78b0c7e895147a2745153aab0ab58ab888797a..3fb66760c863d1d4880f2e9d0d4b2663c1ea76fe 100644 (file)
@@ -91,7 +91,6 @@
 #endif /* CONFIG_USB_MUSB_AM35X */
 
 /* commands to include */
-#define CONFIG_CMD_MTDPARTS    /* Enable MTD parts commands */
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS
 #define MTDIDS_DEFAULT         "nand0=nand"
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_MONITOR_LEN         (256 << 10)     /* Reserve 2 sectors */
 
-#define CONFIG_ENV_IS_IN_NAND
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 #define CONFIG_ENV_OFFSET              SMNAND_ENV_OFFSET
 #define CONFIG_ENV_ADDR                        SMNAND_ENV_OFFSET
index 7b5ca0db0fe714f1227236f3b20d900863c12e49..7a61107294ffe68eccdd2bd72030a920d8c1868a 100644 (file)
@@ -60,7 +60,6 @@
 
 /* USB support */
 #define CONFIG_USB_XHCI_OMAP
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
 #define CONFIG_OMAP_USB_PHY
 #define CONFIG_AM437X_USB2PHY2_HOST
 
@@ -97,7 +96,6 @@
 #define V_OSCK                         24000000  /* Clock output from T2 */
 #define V_SCLK                         (V_OSCK)
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SECT_SIZE           (64 * 1024)
 #define CONFIG_ENV_OFFSET              (768 * 1024)
 #define CONFIG_ENV_SPI_MAX_HZ           48000000
index 36475734fcc4e03f12dcbdd62cf32d00add82fd4..8a4c333564abae190be9adb13514721d49da9303 100644 (file)
@@ -33,7 +33,6 @@
 #undef CONFIG_ENV_OFFSET
 #undef CONFIG_ENV_SIZE
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1               /* SLOT2: eMMC(1) */
 #define CONFIG_SYS_MMC_ENV_PART                0
 #define CONFIG_ENV_OFFSET              0xc0000         /* (in bytes) 768 KB */
@@ -57,7 +56,6 @@
 #define CONFIG_SYS_SCSI_MAX_DEVICE     (CONFIG_SYS_SCSI_MAX_SCSI_ID * \
                                                CONFIG_SYS_SCSI_MAX_LUN)
 /* USB UHH support options */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
 #define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 
 #define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO       76 /* HSIC2 HUB #RESET */
index b078e10475c3841e62033d5c1000c34f80dd67e5..a3b7b219b3479d76f8b234ffbcf150a36e4f6ca4 100644 (file)
 #ifndef CONFIG_MONITOR_IS_IN_RAM
 #define CONFIG_ENV_OFFSET              0x4000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #else
 #define CONFIG_ENV_ADDR                0xffe04000
 #define CONFIG_ENV_SECT_SIZE   0x2000
-#define CONFIG_ENV_IS_IN_FLASH 1
 #endif
 
 #define LDS_BOARD_TEXT \
index 82812e577a9598708d4a3a313b3868fcf92c6259..5f7386737a06ff50ae3bdd254294b8ed385b4f21 100644 (file)
@@ -17,7 +17,7 @@
 #define CONFIG_SYS_GENERIC_BOARD
 
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #ifdef CONFIG_SPL
 #include "imx6_spl.h"
 /* environment organization */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
-#define CONFIG_ENV_IS_IN_MMC
-
 #if defined(CONFIG_ENV_IS_IN_MMC)
 /* Environment in eMMC, before config block at the end of 1st "boot sector" */
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE + \
index 3388a95ed3dab843551cae305cc25b6ee06ae6cb..8aca89ddd84c4ba1c33d24becfffb1f8bee3297f 100644 (file)
        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
 
 /* environment organization */
-#define CONFIG_ENV_IS_IN_NAND
 
 #if defined(CONFIG_ENV_IS_IN_MMC)
 #define CONFIG_SYS_MMC_ENV_DEV         0   /* USDHC1 */
 #define CONFIG_SYS_NAND_MX7_GPMI_62_ECC_BYTES
 #define CONFIG_CMD_NAND_TORTURE
 
-/* UBI stuff */
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#define CONFIG_CMD_UBIFS       /* increases size by almost 60 KB */
-
 /* Dynamic MTD partition support */
-#define CONFIG_CMD_MTDPARTS    /* Enable 'mtdparts' command line support */
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
 #define MTDIDS_DEFAULT         "nand0=gpmi-nand"
index 587963963adf5af8e682b9521bb92b5422074766..4be06f1914d81ce47ba31bf4946af3b42977281d 100644 (file)
 
 #define        CONFIG_SYS_FLASH_USE_BUFFER_WRITE       1
 #define        CONFIG_SYS_FLASH_PROTECTION             1
-
-#define CONFIG_ENV_IS_IN_FLASH         1
-
-#else  /* No flash */
-#define        CONFIG_ENV_IS_NOWHERE
 #endif
 
 #define        CONFIG_SYS_MONITOR_BASE         0x0
index 7355f78fcf040a68fb8e076ad96f5151b876f778..d9fd642655ecbbb75aa705730e155b9a6a2c4e76 100644 (file)
@@ -46,7 +46,6 @@
 #define CONFIG_SYS_MAX_NAND_DEVICE     1
 
 /* Dynamic MTD partition support */
-#define CONFIG_CMD_MTDPARTS    /* Enable 'mtdparts' command line support */
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
 #define MTDIDS_DEFAULT         "nand0=tegra_nand"
                                "-(ubi)"
 
 /* Environment in NAND, 64K is a bit excessive but erase block is 512K anyway */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (SZ_2M)
 #undef CONFIG_ENV_SIZE         /* undef size from tegra20-common.h */
 #define CONFIG_ENV_SIZE                        (SZ_64K)
 
-/* UBI */
-#define CONFIG_CMD_UBIFS       /* increases size by almost 60 KB */
-#define CONFIG_LZO
-#define CONFIG_RBTREE
-
-
 #define BOARD_EXTRA_ENV_SETTINGS \
        "mtdparts=" MTDPARTS_DEFAULT "\0"
 
index 53ff33e4b9d9d373f30ba8602950b7fc0a123d9e..91433afaccf2fa5ce9a0b2989cef7bc3e909bbf3 100644 (file)
@@ -26,7 +26,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, before config block at the end of 1st "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE + \
                                         CONFIG_TDX_CFG_BLOCK_OFFSET)
 #define CONFIG_SYS_MMC_ENV_DEV         0
index 6e8cd914b34c2f5a46ebcb3790950ca654c38d73..72e3ea73e82268751a5c9bbf3b19eff431007432 100644 (file)
@@ -49,7 +49,6 @@
 #define CONFIG_SYS_NAND_BASE           NFC_BASE_ADDR
 
 /* Dynamic MTD partition support */
-#define CONFIG_CMD_MTDPARTS    /* Enable 'mtdparts' command line support */
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
 #define MTDIDS_DEFAULT         "nand0=vf610_nfc"
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 #define CONFIG_SYS_FSL_ESDHC_NUM       1
 
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#define CONFIG_CMD_UBIFS       /* increases size by almost 60 KB */
-
 #define CONFIG_FEC_MXC
 #define CONFIG_MII
 #define IMX_FEC_BASE                   ENET1_BASE_ADDR
index 5d8f968c4d8f8a4baa97b8f450d60d0e46ce855e..99630c0822919b690b75451fe38603e8a39e9789 100644 (file)
@@ -9,7 +9,6 @@
 
 #define CONFIG_REMAKE_ELF
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
 #define CONFIG_AUTO_COMPLETE
index 099684ddd27fad224b92428a1df5084341e507b5..94ec498af1f90485625df480c9731ae84417de3c 100644 (file)
@@ -9,7 +9,6 @@
 
 #define CONFIG_REMAKE_ELF
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
 #define CONFIG_AUTO_COMPLETE
index d45f8b32dafe125e97ca71b49a24cfe5eee301d9..6d46041af6d1a4ab372cf2c437a8bddacd533dcf 100644 (file)
@@ -9,7 +9,6 @@
 
 #define CONFIG_REMAKE_ELF
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
 #define CONFIG_AUTO_COMPLETE
index 072650dfaec94050c43f1083171577c314920a1e..1ac416260eab225c72fa7909ff8346c72ec86233 100644 (file)
  * Environment
  */
 #if defined(CONFIG_TRAILBLAZER)
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                0x2000          /* 8KB */
 #elif defined(CONFIG_RAMBOOT_SPIFLASH)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
 #define CONFIG_ENV_OFFSET      0x100000        /* 1MB */
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #elif defined(CONFIG_RAMBOOT_SDCARD)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_SYS_MMC_ENV_DEV 0
index f10cddafe0f293fe3c0e7f96500a47906477453e..021150ed61c5cac0a1f344bf0f111f25aa5333f5 100644 (file)
@@ -65,7 +65,6 @@
 #define CONFIG_EHCI_IS_TDI
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS             1
 #define CONFIG_ENV_OFFSET              (1 << 20) /* 1MiB in */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
index 92e6ee0033d7fcb1d2771a84c00eb97dc39d00cb..0ea76b33007ad872e7b9e3c68e81b2b93165286c 100644 (file)
@@ -66,9 +66,6 @@
 #define CONFIG_ENV_OVERWRITE
 
 #ifndef CONFIG_MTD_NOR_FLASH
-#if !defined(CONFIG_SRIO_PCIE_BOOT_SLAVE) && !defined(CONFIG_RAMBOOT_PBL)
-#define CONFIG_ENV_IS_NOWHERE
-#endif
 #else
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
@@ -77,7 +74,6 @@
 
 #if defined(CONFIG_SPIFLASH)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS              0
 #define CONFIG_ENV_SPI_CS               0
 #define CONFIG_ENV_SPI_MAX_HZ           10000000
 #define CONFIG_ENV_SECT_SIZE            0x10000
 #elif defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (512 * 1658)
 #elif defined(CONFIG_NAND)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        CONFIG_SYS_NAND_BLOCK_SIZE
 #define CONFIG_ENV_OFFSET              (7 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SRIO_PCIE_BOOT_SLAVE)
-#define CONFIG_ENV_IS_IN_REMOTE
 #define CONFIG_ENV_ADDR                0xffe20000
 #define CONFIG_ENV_SIZE                0x2000
 #elif defined(CONFIG_ENV_IS_NOWHERE)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index 8b8b1220b46b823f276134f4104112a60bca830b..015072720edea6e4299d2c4035caf90d0cce51bf 100644 (file)
 #define CONFIG_NET_RETRY_COUNT         20
 #define CONFIG_AT91_WANTS_COMMON_PHY
 
-/* USB */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     2
-
-/* USB DFU support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 
 #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                        SZ_128K
index 6079540bc95ce5b5e5ba8315b8fd22421dd49cb9..ddbaf327d8ce92c9af791b8f9c34c32cc3324d1c 100644 (file)
@@ -58,7 +58,6 @@
 
 #if defined(CONFIG_SDCARD)
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_ENV_SIZE                        0x2000
index b7199bb9e021fabd37870f6e69c7cfa749863af9..c610ff3f8f780f7d710738f44d20f6ae5a55b908 100644 (file)
  * Flash & Environment
  */
 #ifdef CONFIG_USE_NAND
-#undef CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_NAND_DAVINCI
-#define CONFIG_ENV_IS_IN_NAND          /* U-Boot env in NAND Flash  */
 #define CONFIG_ENV_OFFSET              0x0 /* Block 0--not used by bootcode */
 #define CONFIG_ENV_SIZE                        (128 << 10)
 #define        CONFIG_SYS_NAND_USE_FLASH_BBT
 #endif
 
 #ifdef CONFIG_USE_NOR
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_SYS_FLASH_PROTECTION
 #endif
 
 #ifdef CONFIG_USE_SPIFLASH
-#undef CONFIG_ENV_IS_IN_FLASH
-#undef CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        (64 << 10)
 #define CONFIG_ENV_OFFSET              (512 << 10)
 #define CONFIG_ENV_SECT_SIZE           (64 << 10)
 #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_UBIFS
 #endif
 
 #ifdef CONFIG_USE_SPIFLASH
 #if !defined(CONFIG_USE_NAND) && \
        !defined(CONFIG_USE_NOR) && \
        !defined(CONFIG_USE_SPIFLASH)
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                (16 << 10)
 #endif
 
index 96a2df806a5db4cad53338546700b5725155ba7b..41ab61aa7c3c948f5c547e0fd7695d1ffee300ef 100644 (file)
@@ -24,7 +24,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
index 699c03f84422db4428707818e93ec4ab6a28c98e..cdaaced2eb559831e8931ab0065800cfbee787bf 100644 (file)
@@ -40,7 +40,6 @@
 #define CONFIG_SF_DEFAULT_MODE         SPI_MODE_3
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              (1 << 20) /* 1MiB in */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
 #define CONFIG_ENV_SECT_SIZE           (64 << 10) /* 64KiB sectors */
index 0f0ab01f62910370a3e3a99a9280a9a7d1b1535d..864222955f8fed21140ea9929d596fe10ca8bcff 100644 (file)
@@ -40,7 +40,6 @@
 #define CONFIG_EHCI_IS_TDI
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS             1
 #define CONFIG_ENV_OFFSET              (1 << 20) /* 1MiB in */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
index 292bfb8f7df0274e12783211445f5f8347cedd2a..4a9d2f75bf9b82e376a7b9b166ee6d33ed89cbc5 100644 (file)
@@ -62,7 +62,6 @@
 #define CONFIG_EHCI_IS_TDI
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              (1 << 20) /* 1MiB in */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
 #define CONFIG_ENV_SECT_SIZE           (256 << 10) /* 256KiB sectors */
index 187ead3e4b70fe02eacbbea511426af1282e98d7..6ad5206fc04819050db045811890320a3664c77e 100644 (file)
@@ -44,7 +44,6 @@
 #define CONFIG_SF_DEFAULT_MODE         SPI_MODE_3
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              (1 << 20) /* 1MiB in */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
 #define CONFIG_ENV_SECT_SIZE           (64 << 10) /* 64KiB sectors */
index 9db3380a95bc2423465aa2a24bd3a8e74792d6cd..970e214e0746b17e204d2bff3144e4f8b56921cd 100644 (file)
 #define CONFIG_SYS_FLASH_ERASE_TOUT    (2 * CONFIG_SYS_HZ) /* Timeout for Flash Erase */
 #define CONFIG_SYS_FLASH_WRITE_TOUT    (2 * CONFIG_SYS_HZ) /* Timeout for Flash Write */
 
-#define        CONFIG_ENV_IS_NOWHERE   1
-
 /* Address and size of Primary Environment Sector      */
 #define CONFIG_ENV_ADDR                0xB0030000
 #define CONFIG_ENV_SIZE                0x10000
index a8b6802235f18aa8756ad03abc64f3bbbce5e0a1..dfe993552043d8312f5b57640fae20e35201554a 100644 (file)
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_SIZE                        SZ_128K
 #define CONFIG_ENV_OFFSET              0x000A0000
 
index 92ce1273c63376121483557431405087eb3c7103..54769618470852f0a606c87043ea5056f341cd96 100644 (file)
                                        0x01000000) /* 16MB */
 
 /* NAND and environment organization  */
-#define CONFIG_ENV_IS_IN_NAND          1
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 
 #define CONFIG_ENV_OFFSET              SMNAND_ENV_OFFSET
index 470e26256a21161530b34a3fbc45f602074caf0a..3e931edc712fbc74ccbf7c02ca1f9217aa730295 100644 (file)
  * Environment variables configurations
  */
 #ifdef CONFIG_CMD_NAND
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SECT_SIZE           0x20000 /* 128KB */
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 #define CONFIG_ENV_SIZE                        0x20000 /* 128KB */
index 3b56fd67392b6ef4bce5b3f957cf187baf29d89d..15e3292c093656d0cc794e50f347c73e993bf200 100644 (file)
  *  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
 /*
  * File system
  */
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
 #define CONFIG_MTD_DEVICE               /* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_LZO
 
 #endif /* _CONFIG_DOCKSTAR_H */
index d2f7c7cfff828421d53bcd2dfb5489abbc7abd67..b5091513f7f575e8c99fa66090cd7cc52d51bf35 100644 (file)
@@ -24,7 +24,6 @@
 
 #ifndef CONFIG_QSPI_BOOT
 /* MMC ENV related defines */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1       /* SLOT2: eMMC(1) */
 #define CONFIG_ENV_SIZE                        (128 << 10)
 #define CONFIG_ENV_OFFSET              0x260000
 #define CONFIG_SYS_SPI_ARGS_OFFS       0x140000
 #define CONFIG_SYS_SPI_ARGS_SIZE       0x80000
 #if defined(CONFIG_QSPI_BOOT)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_SPI_MAX_HZ           CONFIG_SF_DEFAULT_SPEED
 #define CONFIG_ENV_SIZE                        (64 << 10)
 
 /* USB xHCI HOST */
 #define CONFIG_USB_XHCI_OMAP
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
 
 #define CONFIG_OMAP_USB_PHY
 #define CONFIG_OMAP_USB2PHY2_HOST
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 /* Reduce SPL size by removing unlikey targets */
 #ifdef CONFIG_NOR_BOOT
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE           (128 * 1024)    /* 128 KiB */
 #define MTDIDS_DEFAULT                 "nor0=physmap-flash.0"
 #define MTDPARTS_DEFAULT               "mtdparts=physmap-flash.0:" \
index 11c842d9526e974c3d43099badb6f498901c70cf..d9dc639aeb82952f8baf482f0ea37c7aa3c94fe7 100644 (file)
@@ -49,7 +49,6 @@
 /* Enable that for switching of boot partitions */
 /* Disabled by default as some sub-commands can brick eMMC */
 /*#define CONFIG_SUPPORT_EMMC_BOOT */
-#define CONFIG_CMD_REGINFO     /* Register dump                */
 #define CONFIG_CMD_TFTP
 
 /* Partition table support */
@@ -111,7 +110,6 @@ REFLASH(dragonboard/u-boot.img, 8)\
        "pxefile_addr_r=0x90100000\0"\
        BOOTENV
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_VARS_UBOOT_CONFIG
 
index 003cf0e1f32282aa1a18d9aa28a2760eba2c41d5..7a739e39d72fd0c1163414e3749acd50c0f024a0 100644 (file)
  *  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
 
 #ifdef CONFIG_CMD_SF
index 133b2b023ca123b91bb1c133574e547a6c2958db..a2c6837348d38893c35a88d55cefdb0c5d560cbf 100644 (file)
  *  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
 
 #ifdef CONFIG_CMD_SF
index aaba5d8eab5c0b759becf9ac6dfb63a1afb0e811..c1e9346290570f74720d549cff0948b228dd62be 100644 (file)
@@ -36,7 +36,6 @@
 #define CONFIG_SF_DEFAULT_MODE         SPI_MODE_3
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              0x7E0000   /* RedBoot config partition in DTS */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
 #define CONFIG_ENV_SECT_SIZE           (64 << 10) /* 64KiB sectors */
@@ -69,7 +68,6 @@
 #if 0
 #undef CONFIG_DM_USB
 #define CONFIG_USB_XHCI_PCI
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 2
 #endif
 
 #if !defined(CONFIG_USB_XHCI_HCD)
index f1422316891f74b7b80d0a893cfc2be0f94bef05..c4496a7f48dffa28da9066b1237801cfaaabe24a 100644 (file)
@@ -25,8 +25,6 @@
 #define CONFIG_SYS_DEFAULT_LPDDR2_TIMINGS
 
 /* USB UHH support options */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
-
 #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO 1
 #define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO 62
 
@@ -39,7 +37,6 @@
 /* GPIO */
 
 /* ENV related config options */
-#define CONFIG_ENV_IS_NOWHERE
 
 #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 
index f88045436fa66848173b9e05950a519189abfe6f..f8a59933260faa2cca736accbd0b531020a3263f 100644 (file)
@@ -22,7 +22,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
index 6fc6ec90af5c687ad1e837d67f556a404ecc7998..16f65f3480933ac73a1fd3f361abf93f79dd0914 100644 (file)
@@ -87,9 +87,6 @@
 #endif
 
 #ifdef CONFIG_USE_SPIFLASH
-#undef CONFIG_ENV_IS_IN_FLASH
-#undef CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        (8 << 10)
 #define CONFIG_ENV_OFFSET              0x80000
 #define CONFIG_ENV_SECT_SIZE           (64 << 10)
 #ifdef CONFIG_SYS_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_UBIFS
 
 #define CONFIG_NAND_DAVINCI
 #define        CONFIG_SYS_NAND_PAGE_2K
 #if !defined(CONFIG_SYS_USE_NAND) && \
        !defined(CONFIG_USE_NOR) && \
        !defined(CONFIG_USE_SPIFLASH)
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                (16 << 10)
 #endif
 
index 45ce944eb10d688b94f2f75cc3f21d72c04d18da..755e7887df804a199e7b1ec6ebda6395ab000f57 100644 (file)
@@ -43,7 +43,6 @@
 
 #define CONFIG_ENV_ADDR                0xFF040000
 #define CONFIG_ENV_SECT_SIZE   0x00020000
-#define CONFIG_ENV_IS_IN_FLASH 1
 
 /*
  * BOOTP options
index 240444186054f6e265cc86b0948e4d649e4c3767..cabbe160a37efc49cc8c0299d0836f88b175d040 100644 (file)
 #define CONFIG_SYS_BOOTMAPSZ   (8 * 1024 * 1024)
 
 /* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OVERWRITE   1
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
index def28f2cf1e73d2ff7307e8a531a72f4c92cba8d..92842e1e185107f7036e5d14a87eb2fd018a6610 100644 (file)
 #define CONFIG_SYS_MONITOR_LEN         (256 * 1024)
 
 #define CONFIG_ENV_OVERWRITE           /* Vendor params unprotected */
-#define CONFIG_ENV_IS_IN_FLASH
 
 #define CONFIG_ENV_ADDR                        0x60040000
 #define CONFIG_ENV_ADDR_REDUND         (CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE)
diff --git a/include/configs/edison.h b/include/configs/edison.h
new file mode 100644 (file)
index 0000000..03aa702
--- /dev/null
@@ -0,0 +1,61 @@
+/*
+ * Copyright (c) 2017 Intel Corp.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __CONFIG_H
+#define __CONFIG_H
+
+#include <asm/ibmpc.h>
+
+/* Boot */
+#define CONFIG_CMD_ZBOOT
+#define CONFIG_BOOTCOMMAND "run bootcmd"
+
+/* DISK Partition support */
+#define CONFIG_RANDOM_UUID
+
+/* Miscellaneous configurable options */
+#define CONFIG_SYS_LONGHELP
+
+#define CONFIG_SYS_CBSIZE      2048
+#define CONFIG_SYS_PBSIZE      (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
+#define CONFIG_SYS_MAXARGS     128
+#define CONFIG_SYS_BARGSIZE    CONFIG_SYS_CBSIZE
+
+#define CONFIG_AUTO_COMPLETE
+
+/* Memory */
+#define CONFIG_SYS_LOAD_ADDR                   0x100000
+#define CONFIG_PHYSMEM
+
+#define CONFIG_NR_DRAM_BANKS                   3
+
+#define CONFIG_SYS_STACK_SIZE                  (32 * 1024)
+
+#define CONFIG_SYS_MONITOR_BASE                        CONFIG_SYS_TEXT_BASE
+#define CONFIG_SYS_MONITOR_LEN                 (256 * 1024)
+
+#define CONFIG_SYS_MALLOC_LEN                  (128 * 1024 * 1024)
+
+#define CONFIG_SYS_MEMTEST_START               0x00100000
+#define CONFIG_SYS_MEMTEST_END                 0x01000000
+
+/* Environment */
+#define CONFIG_ENV_IS_IN_MMC
+#define CONFIG_SYS_MMC_ENV_DEV                 0
+#define CONFIG_SYS_MMC_ENV_PART                        0
+#define CONFIG_ENV_SIZE                                (64 * 1024)
+#define CONFIG_ENV_OFFSET                      (3 * 1024 * 1024)
+#define CONFIG_ENV_OFFSET_REDUND               (6 * 1024 * 1024)
+#define CONFIG_SUPPORT_EMMC_BOOT
+
+/* PCI */
+#define CONFIG_CMD_PCI
+
+/* RTC */
+#define CONFIG_SYS_ISA_IO_BASE_ADDRESS 0
+#define CONFIG_RTC_MC146818
+
+#endif
index cc5cc7bac68fa8a0d3c17850c9c28fd67706fb2c..31364c25335c1c3276d814fe5021dd90b43107e5 100644 (file)
 /*
  *  Environment variables configurations
  */
-#define CONFIG_ENV_IS_IN_FLASH         1
 #define CONFIG_ENV_SECT_SIZE           0x2000  /* 16K */
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              0x4000  /* env starts here */
index 9dcb481707759dc7bba6d96e551b294fc83a3909..f5331915e2f07d0de342fda711e9bcb99a1054b1 100644 (file)
@@ -13,8 +13,6 @@
 
 #undef CONFIG_TPM_TIS_BASE_ADDRESS
 
-#undef CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_ENV_IS_NOWHERE
 #undef CONFIG_SCSI_AHCI
 #undef CONFIG_INTEL_ICH6_GPIO
 #undef CONFIG_USB_EHCI_PCI
index 575610d4104c21448625cc943520f0753515c6a9..531f5bf5aab4c886f90f45acf3a8e2f3ad2ee183 100644 (file)
 
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
-#define CONFIG_ENV_IS_IN_MMC
-
 #if defined(CONFIG_ENV_IS_IN_MMC)
 #define CONFIG_SYS_MMC_ENV_DEV         1
 #define CONFIG_SYS_MMC_ENV_PART                2
index 749a9e3bc17dea40662e54bf295bf0ecc50d44b0..61f0c95d550e28f6cdadbf7111358f957cd628c0 100644 (file)
@@ -15,7 +15,6 @@
 
 #define CONFIG_MXC_UART_BASE           UART2_BASE
 #define CONSOLE_DEV            "ttymxc1"
-#define CONFIG_MMCROOT                 "/dev/mmcblk1p2"
 
 #define PHYS_SDRAM_SIZE                (1u * 1024 * 1024 * 1024)
 
        func(PXE, pxe, na) \
        func(DHCP, dhcp, na)
 
+#define CONFIG_BOOTCOMMAND \
+       "run finduuid; " \
+       "run distro_bootcmd"
+
 #include <config_distro_bootcmd.h>
 
 #define CONSOLE_STDIN_SETTINGS \
        CONSOLE_ENV_SETTINGS \
        MEM_LAYOUT_ENV_SETTINGS \
        "fdtfile=" CONFIG_FDTFILE "\0" \
+       "finduuid=part uuid mmc 0:1 uuid\0" \
        BOOTENV
 
 #endif                         /* __RIOTBOARD_CONFIG_H */
index 0a50154dda3506ab498e80ca0703acba23d96b85..0115d398a7ddf19632e18fd7c27f405e4f7ba9ae 100644 (file)
@@ -14,7 +14,6 @@
 #define CONFIG_BOARD_COMMON
 
 #define CONFIG_ESPRESSO7420
-#define CONFIG_ENV_IS_NOWHERE
 
 #define CONFIG_SYS_SDRAM_BASE          0x40000000
 #define CONFIG_SYS_TEXT_BASE           0x43E00000
index 845bcc1c9af60be7972969bf5cecb299dfe532da..1b3295346d8f2b9a4347021edc375a7d6d871d17 100644 (file)
@@ -74,7 +74,6 @@
 /* Use hardware flash sectors protection instead of U-Boot software protection */
 #undef  CONFIG_SYS_FLASH_PROTECTION
 #undef  CONFIG_SYS_DIRECT_FLASH_TFTP
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + (1 * CONFIG_ENV_SECT_SIZE))
index e7f7a7cbe6ffcaa4bf4884ca48dc62e9970d4c35..4c0647bb69f5c9d9513c692a0d94ba5a5992e69b 100644 (file)
@@ -61,7 +61,6 @@
 #define DATAFLASH_TCSS                 (0x1a << 16)
 #define DATAFLASH_TCHS                 (0x1 << 24)
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              0x3DE000
 #define CONFIG_ENV_SECT_SIZE           (132 << 10)
 #define CONFIG_ENV_SIZE                        CONFIG_ENV_SECT_SIZE
 #define CONFIG_AT91_GPIO
 
 /* Command line configuration */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_CMD_NAND
 
 #ifndef MINIMAL_LOADER
 #define CONFIG_CMD_REISER
 #define CONFIG_CMD_SAVES
-#define CONFIG_CMD_UBIFS
 #endif
 
 /* NAND flash */
 #define MTDIDS_DEFAULT         "nand0=atmel_nand"
 #define MTDPARTS_DEFAULT       "mtdparts=atmel_nand:-(root)"
 #endif
-#define CONFIG_LZO
-#define CONFIG_RBTREE
 
 /* Boot command */
 #define CONFIG_CMDLINE_TAG
index a571f2a749dc2b9e77e4bd68a1e74baace1bae70..552cd366bcdf6eca5da12ab9b457939309f94a07 100644 (file)
@@ -20,8 +20,6 @@
 /* Memory Info */
 #define CONFIG_SYS_LOAD_ADDR           0x83000000
 
-#define CONFIG_ENV_IS_NOWHERE
-
 #define CONFIG_ENV_SIZE                        0x20000
 
 #endif /* __CONFIG_H */
index 228683739b290f1bf5614a227d2c3c788058fd87..d008539eb1f563fce7edb74d605deb96651ec3e2 100644 (file)
@@ -9,7 +9,6 @@
 
 #include <configs/rk3368_common.h>
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        0x2000
 
 #define CONFIG_CONSOLE_SCROLL_LINES    10
index 8f8e50fb60d8e11a5a2ea35df89f92f25d396974..6e1fd1c29303cbbf9c93bcf0a310dbd69afd1dc1 100644 (file)
@@ -13,7 +13,6 @@
 /* Store env in emmc */
 #undef CONFIG_ENV_SIZE
 #define CONFIG_ENV_SIZE                 (32 << 10)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_SYS_MMC_ENV_PART         0
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
index 0dc3532f330e9107ef37f31dd2e4ac6da2bc56fa..15a374cca7dfd7b1e78dc7052d20239a9859de3a 100644 (file)
@@ -10,7 +10,6 @@
 #define ROCKCHIP_DEVICE_SETTINGS
 #include <configs/rk3288_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 #endif
index fe3ec8c1778e76015fc5124bf7bcdf0e644aae4b..c792ce55c14491a2870fbfbe50034b66063ef768 100644 (file)
@@ -9,7 +9,6 @@
 
 #include <configs/rk3328_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 1
 /*
  * SPL @ 32k for ~36k
index b9fd5b417a7528256bcd6dd03a9a4f598a7fa8ac..015f25a774006dd290d8db0542b9f3ecffafbf5d 100644 (file)
@@ -9,7 +9,6 @@
 
 #include <configs/rk3399_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 1
 /*
  * SPL @ 32k for ~36k
index 787c6de3ae36961cccb7be11425d6fc01188682d..c995f35b73adbb772e27f3e1aeffc360b81620a6 100644 (file)
@@ -21,7 +21,6 @@
 #define CONFIG_MMC_DEFAULT_DEV 0
 
 #undef CONFIG_CMD_ONENAND
-#undef CONFIG_CMD_MTDPARTS
 
 /* TIZEN THOR downloader support */
 #define CONFIG_CMD_THOR_DOWNLOAD
index 378219d83a3b8ee21db0a2ede30fdf2a6baddc90..3b73bbc5255429a87239bd5cd3ec3709130ea8f8 100644 (file)
 /* Enable Time Command */
 
 /* USB */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
-
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_ASIX
 #define CONFIG_USB_ETHER_SMSC95XX
index 1b94d07f6745b59caf135c9da33f342e66d209a0..11aa6b8a9a87b678c77beaa4187b838ed310b1b5 100644 (file)
@@ -18,7 +18,6 @@
 
 #define CONFIG_EXYNOS5_DT
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BASE    0x12D30000
 #define FLASH_SIZE             (4 << 20)
 #define CONFIG_ENV_OFFSET      (FLASH_SIZE - CONFIG_ENV_SECT_SIZE)
index 0dc3532f330e9107ef37f31dd2e4ac6da2bc56fa..15a374cca7dfd7b1e78dc7052d20239a9859de3a 100644 (file)
@@ -10,7 +10,6 @@
 #define ROCKCHIP_DEVICE_SETTINGS
 #include <configs/rk3288_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 #endif
index b4dcf23b1cf324f2b7e17ca57d266627e3ca59f6..d6bb9f6fb4af05d91755e77a3dc717dd33856ce1 100644 (file)
@@ -8,13 +8,13 @@
 #define __CONFIG_H
 
 #define ROCKCHIP_DEVICE_SETTINGS \
-               "stdin=serial,cros-ec-keyb\0" \
+               "stdin=serial,usbkbd\0" \
                "stdout=serial,vidconsole\0" \
-               "stderr=serial,vidconsole\0"
+               "stderr=serial,vidconsole\0" \
+               "preboot=usb start\0"
 
 #include <configs/rk3288_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 #endif
index 0ab33953ac6398d8e46f3e18abc43a0812b61b44..a09986d14c1b961e01b764ff015262a7ae6cf43f 100644 (file)
 /*
  * MTD Command for mtdparts
  */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_FLASH_CFI_MTD
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
                                CONFIG_SYS_MONITOR_LEN)
 
-#define CONFIG_ENV_IS_IN_FLASH
-
 /*
  * CFI FLASH driver setup
  */
index f60a0298d6b6989bfe9778c9b8ddf829a9785c9b..5e04dd24f4862dace362d755eca2e5d731656205 100644 (file)
@@ -13,7 +13,7 @@
 #define __GE_BX50V3_CONFIG_H
 
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #define BX50V3_BOOTARGS_EXTRA
 #if defined(CONFIG_TARGET_GE_B450V3)
        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
 
 /* environment organization */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                (8 * 1024)
 #define CONFIG_ENV_OFFSET              (768 * 1024)
 #define CONFIG_ENV_SECT_SIZE           (64 * 1024)
index 6f6007e65babab3a9fe80b890de8ddd728bc026b..7a707cb2a0f77f1f4de82f3d1ddb8c578cc77761 100644 (file)
@@ -9,7 +9,6 @@
 
 #include <configs/rk3368_common.h>
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        0x2000
 
 #define CONFIG_CONSOLE_SCROLL_LINES            10
index d1635b098efacb50955ded5bc4d450132a08f466..7fdadab101dd050505bea9e8032fffc6ba2a5a3b 100644 (file)
  *  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
index f2260eae56436530930bf54a2dc59f93b60c0cb4..dddd300fb5d553c8106cf7926d85700d6b81624d 100644 (file)
@@ -78,7 +78,6 @@
 /*
  * Environment variables configurations
  */
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        0x4000
 
 #ifdef CONFIG_CMD_USB
index 5ac29db240c940d4eca87c951063dcd60ddaee9f..c69e8994bd8a94b0c55cdaa1ce83b3ad25177026 100644 (file)
  *  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
index de08f2c7ccf36b10e1d426e4ab271be59fd6087b..ff2b9c6e727a3e6e9bb2d4416a3516772ef335f3 100644 (file)
 #define CONFIG_SUPPORT_EMMC_BOOT
 #define CONFIG_SUPPORT_EMMC_RPMB
 
-/* Filesystem support */
-#define CONFIG_CMD_UBIFS
-
 /*
  * SATA Configs
  */
 
 /* Various command support */
 #define CONFIG_CMD_UNZIP         /* gzwrite */
-#define CONFIG_RBTREE
 
 /* Ethernet support */
 #define CONFIG_FEC_MXC
 /*
  * MTD Command for mtdparts
  */
-#define CONFIG_LZO
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 #ifdef CONFIG_SPI_FLASH
 #endif
 
 /* Persistent Environment Config */
-#ifdef CONFIG_SPI_FLASH
-  #define CONFIG_ENV_IS_IN_SPI_FLASH
-#elif defined(CONFIG_SPL_NAND_SUPPORT)
-  #define CONFIG_ENV_IS_IN_NAND
-#else
-  #define CONFIG_ENV_IS_IN_MMC
-#endif
 #if defined(CONFIG_ENV_IS_IN_MMC)
   #define CONFIG_SYS_MMC_ENV_DEV         0
   #define CONFIG_SYS_MMC_ENV_PART        1
index 530a88e9e1a7ecb4312a7200e5fd0ae9e78160e6..fea4044769810f1aab257ff750f37f9ee61b9b94 100644 (file)
@@ -26,7 +26,6 @@
 #define CONFIG_ENV_SIZE                        0x00040000
 #define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 128*1024)
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_SYS_MAXARGS             16
 #define CONFIG_SYS_LOAD_ADDR           0xa3000000 /* default load address */
 
index c17d7fad792dbc5c4097681b4d5c2e593350bb27..cc312199ac026b1cce4962e3697ab1f3d5b1ed56 100644 (file)
@@ -32,7 +32,6 @@
 #define CONFIG_SYS_MAX_NAND_DEVICE     1
 
 /* Environment in NAND (which is 512M), aligned to start of last sector */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET      (SZ_512M - SZ_128K) /* 128K sector size */
 
 /* USB Host support */
index 533d3e3f82663c787b9ddd0eab415e745c0cf782..0328c4100b28666334b705530c8456edb7ad5f87 100644 (file)
@@ -74,7 +74,6 @@
 
 /* Environment data setup
 */
-#define CONFIG_ENV_IS_IN_NVRAM
 #define CONFIG_SYS_NVRAM_BASE_ADDR     0xfff88000      /* NVRAM base address */
 #define CONFIG_SYS_NVRAM_SIZE          0x8000          /* NVRAM size */
 #define CONFIG_ENV_SIZE                        0x2000          /* Size of Environ */
index c7fb8a5f8e9e3efc6f261700ce29cf98ee9aafd1..8b2d01230953b289dc73e5fd413deb99bf558af8 100644 (file)
 
 /* Preserve environment on sd card */
 #define CONFIG_ENV_SIZE                        0x1000
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE               "mmc"
 #define FAT_ENV_DEVICE_AND_PART         "1:1"
 #define FAT_ENV_FILE                    "uboot.env"
index 405129b7e22c26f5062ffa6502187d959e7545a7..c5b6fddee7534cba158fbf6f15eaa0dd44347384 100644 (file)
@@ -493,7 +493,6 @@ void fpga_control_clear(unsigned int bus, int pin);
  * Environment
  */
 #if 1
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
                                 CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SECT_SIZE   0x10000 /* 64K(one sector) for env */
@@ -501,7 +500,6 @@ void fpga_control_clear(unsigned int bus, int pin);
 #define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
 #else
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                0x2000          /* 8KB */
 #endif
 
index 28ac090c052c6920a038f8c1e57c7830afe274ff..68900ac980d190a6b176813a1b783f21b1bf5db1 100644 (file)
@@ -60,7 +60,6 @@
  * Environment settings
  */
 #define CONFIG_ENV_SIZE                        SZ_16K
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE              "mmc"
 #define FAT_ENV_DEVICE_AND_PART                "0:1"
 #define FAT_ENV_FILE                   "uboot.env"
index ab64518e0b1514ee58b9d86cf098631012196292..6bd2d76f530c7c0d25aa7c9bc54bcd9a68d4164f 100644 (file)
@@ -9,7 +9,6 @@
 
 #define CONFIG_REMAKE_ELF
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
 #define CONFIG_AUTO_COMPLETE
index a5782f3300ec55f1c335af966e161ba1089872f5..d45dc357cb17359d00b610a602520752d07a27be 100644 (file)
  * Environment variables configuration
  */
 #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_OFFSET      0xe0000
index 63e50606d717eee8af79d790eccc762ec6c91b4c..0748a4ef007fd27da62b076d6bc0e6dcc5383017 100644 (file)
@@ -25,7 +25,6 @@
  * Compression configuration
  */
 #define CONFIG_BZIP2
-#define CONFIG_LZO
 
 /*
  * Commands configuration
  * Environment variables configuration
  */
 #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_OFFSET      0x80000
 /*
  * File system
  */
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 
 #endif /* _CONFIG_ICONNECT_H */
index 7bedcb94d7877449792f5ef04ca862cb35409cb3..02d5b2cf65a39bda7b90153722694e052b11d224 100644 (file)
 /*
  * Environment Configuration
  */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE \
                                + CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SIZE                0x20000
 #define CONFIG_JFFS2_DEV               "0"
 
 /* mtdparts command line support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define CONFIG_MTD_DEVICE
 #define MTDIDS_DEFAULT         "nor0=ff800000.flash,nand0=e1000000.flash"
 
 /* UBI Support */
 #define CONFIG_CMD_NAND_TRIMFFS
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define CONFIG_MTD_PARTITIONS
 
 /* bootcount support */
index 63104233356d47f96d6c5464493588aa2d92bf74..934b76ecaf5c9f59da6fa9a87af082a9660dc754 100644 (file)
@@ -51,7 +51,6 @@
 /* -------------------------------------------------
  * Environment
  */
-#define CONFIG_ENV_IS_NOWHERE  1
 #define CONFIG_ENV_SIZE                0x4000
 
 /* ---------------------------------------------------------------------
index 18d8d2fd3d022795ff5a0a0f173a2948c5fd2439..01c5cc496a03337bb1d62cec23c903decb2ecc25 100644 (file)
@@ -89,7 +89,6 @@
 /*
  * Flash & Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 /* Use buffered writes (~10x faster) */
  */
 #define CONFIG_MXC_GPIO
 
-/*
- * MTD partitions
- */
-#define CONFIG_CMD_MTDPARTS
-
 /*
  * U-Boot general configuration
  */
index 739af03e888a7dd65b050142f29741f2214bd488..0a8501bd5cfaf9ffc78e5d48f69fd1f1f0e31a79 100644 (file)
 /* Monitor at beginning of flash */
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 
-#define CONFIG_ENV_IS_IN_EEPROM
 #define CONFIG_ENV_OFFSET                      0x00    /* env. starts here */
 #define CONFIG_ENV_SIZE                                4096
 #define CONFIG_SYS_I2C_EEPROM_ADDR             0x52
 /*
  * JFFS2 partitions
  */
-#undef CONFIG_CMD_MTDPARTS
 #define CONFIG_JFFS2_DEV       "nor0"
 
 /* EET platform additions */
index 12a9bfb58995eb6be2f7092e0d4c06fdbe25bc51..e0bdb656b2676c202df63a7938fa2573965a7d64 100644 (file)
 
 /* MTD device */
 # define CONFIG_MTD_DEVICE
-# define CONFIG_CMD_MTDPARTS
 # define CONFIG_MTD_PARTITIONS
 # define MTDIDS_DEFAULT                        "nand0=gpmi-nand"
 # define MTDPARTS_DEFAULT              "mtdparts=gpmi-nand:2m(spl),2m(uboot)," \
                                        "1m(env),8m(kernel),1m(dtb),-(rootfs)"
 
-/* UBI */
-# define CONFIG_CMD_UBIFS
-# define CONFIG_RBTREE
-# define CONFIG_LZO
-
 # define CONFIG_APBH_DMA
 # define CONFIG_APBH_DMA_BURST
 # define CONFIG_APBH_DMA_BURST8
index 821f1ffacdb85d66811a91424dd90c7f43065473..95cb810fcd383b13e7fd8f46bd89d9b7f24e22c6 100644 (file)
 
 /* Environment organization */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET             0x400000
 #define CONFIG_ENV_SECT_SIZE          CONFIG_ENV_SIZE
 
 
 /* MTD device */
 # define CONFIG_MTD_DEVICE
-# define CONFIG_CMD_MTDPARTS
 # define CONFIG_MTD_PARTITIONS
 # define MTDIDS_DEFAULT                "nand0=gpmi-nand"
 # define MTDPARTS_DEFAULT      "mtdparts=gpmi-nand:4m(uboot)," \
index bda9541af6625e3c6460e8edbd0a03469c0a9ab6..953711269379078010b4bbe6dab08ed67edf82ad 100644 (file)
 
 /* Define the payload for FAT/EXT support */
 #if defined(CONFIG_SPL_FAT_SUPPORT) || defined(CONFIG_SPL_EXT_SUPPORT)
-#define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME  "u-boot.img"
+# ifdef CONFIG_OF_CONTROL
+#  define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME      "u-boot-dtb.img"
+# else
+#  define CONFIG_SPL_FS_LOAD_PAYLOAD_NAME      "u-boot.img"
+# endif
 #endif
 
 #if defined(CONFIG_MX6SX) || defined(CONFIG_MX6UL) || defined(CONFIG_MX6SL)
index 1d1b8b31c2858ab1cacc65a4a3b9b6dc96040af2..ae8399426fd522def68269272d371bd6d5dfba46 100644 (file)
@@ -37,7 +37,6 @@
 /* Flash settings */
 #define CONFIG_SYS_FLASH_SIZE          0x02000000 /* 32 MiB */
 #define CONFIG_SYS_MAX_FLASH_SECT      128
-#define CONFIG_ENV_IS_NOWHERE          1
 #define CONFIG_ENV_SIZE                        32768
 
 /*-----------------------------------------------------------------------
index d0b6af8cadc7da2d54c089d0df382b65f6be0a22..8c9ad6c1835194f914b9f03351af057783328ca1 100644 (file)
@@ -42,7 +42,6 @@
  */
 #define PHYS_FLASH_SIZE                        0x01000000      /* 16MB */
 #define CONFIG_SYS_MAX_FLASH_SECT      64
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_SYS_MONITOR_LEN         0x00100000
 
 /*
index f78aa47ae26669d0829c6a31cb0bfbb0df1ed37d..7f1f3cca3a87030de36b1946803f5c921b321f74 100644 (file)
  * Flash & Environment
  */
 #define CONFIG_NAND_DAVINCI
-#define CONFIG_ENV_IS_IN_NAND          /* U-Boot env in NAND Flash  */
 #define CONFIG_ENV_OFFSET              0x0 /* Block 0--not used by bootcode */
 #define CONFIG_ENV_SIZE                        (128 << 10)
 #define        CONFIG_SYS_NAND_USE_FLASH_BBT
 #define CONFIG_CMD_NAND
 #define CONFIG_CMD_NAND_TRIMFFS
 
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_LZO
-#define CONFIG_RBTREE
-#define CONFIG_CMD_UBIFS
 
 #define MTDIDS_NAME_STR                "davinci_nand.0"
 #define MTDIDS_DEFAULT         "nand0=" MTDIDS_NAME_STR
index 89f6cbc85b960ff4e2b875371382dc149b2769ad..acc97268baec71dd3638cb36384309e56ba15a26 100644 (file)
@@ -23,7 +23,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
index b186bfc891516b9275593c1173908683533f26f2..a438a1a429c2963f4a48f8476b271c7ade79aa8f 100644 (file)
 /* Platform type */
 #define CONFIG_SOC_K2E
 
+#ifdef CONFIG_TI_SECURE_DEVICE
+#define DEFAULT_SEC_BOOT_ENV                                           \
+       DEFAULT_FIT_TI_ARGS                                             \
+       "findfdt=setenv fdtfile ${name_fdt}\0"
+#else
+#define DEFAULT_SEC_BOOT_ENV
+#endif
+
 /* U-Boot general configuration */
 #define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS                            \
        DEFAULT_FW_INITRAMFS_BOOT_ENV                                   \
+       DEFAULT_SEC_BOOT_ENV                                            \
        "boot=ubi\0"                                                    \
        "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "        \
        "root=ubi0:rootfs rootflags=sync rw ubi.mtd=ubifs,2048\0"       \
@@ -28,7 +37,6 @@
        "name_fs=arago-console-image-k2e-evm.cpio.gz\0"
 
 #define CONFIG_ENV_SIZE                                (256 << 10)  /* 256 KiB */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET                      0x100000
 
 #include <configs/ti_armv7_keystone2.h>
index 5bf630e7f21e75c17d72e85f8b539e97784417e1..1117e5e5dd0fa6651bfd5c5e000f56b40b21bd7f 100644 (file)
@@ -23,6 +23,7 @@
        DEFAULT_MMC_TI_ARGS                                             \
        DEFAULT_PMMC_BOOT_ENV                                           \
        DEFAULT_FW_INITRAMFS_BOOT_ENV                                   \
+       DEFAULT_FIT_TI_ARGS                                             \
        "boot=mmc\0"                                                    \
        "console=ttyS0,115200n8\0"                                      \
        "bootpart=0:2\0"                                                \
        "get_mon_mmc=load mmc ${bootpart} ${addr_mon} ${bootdir}/${name_mon}\0"\
        "name_fs=arago-base-tisdk-image-k2g-evm.cpio\0"
 
+#ifndef CONFIG_TI_SECURE_DEVICE
 #define CONFIG_BOOTCOMMAND                                             \
+       "run findfdt; "                                                 \
        "run envboot; "                                                 \
-       "run set_name_pmmc init_${boot} init_fw_rd_${boot} "            \
-       "get_pmmc_${boot} run_pmmc get_mon_${boot} run_mon "            \
-       "findfdt get_fdt_${boot} get_kern_${boot} run_kern"
+       "run init_${boot}; "                                            \
+       "run get_mon_${boot} run_mon; "                                 \
+       "run set_name_pmmc get_pmmc_${boot} run_pmmc; "                 \
+       "run get_kern_${boot}; "                                        \
+       "run init_fw_rd_${boot}; "                                      \
+       "run get_fdt_${boot}; "                                         \
+       "run run_kern"
+#else
+#define CONFIG_BOOTCOMMAND                                             \
+       "run findfdt; "                                                 \
+       "run envboot; "                                                 \
+       "run run_mon_hs; "                                              \
+       "run init_${boot}; "                                            \
+       "run set_name_pmmc get_pmmc_${boot} run_pmmc; "                 \
+       "run get_fit_${boot}; "                                         \
+       "bootm ${fit_loadaddr}#${name_fdt}"
+#endif
 
 /* SPL SPI Loader Configuration */
 #define CONFIG_SPL_TEXT_BASE           0x0c080000
@@ -70,7 +87,6 @@
 #define CONFIG_PHY_MICREL
 #define PHY_ANEG_TIMEOUT       10000 /* PHY needs longer aneg time */
 
-#define CONFIG_ENV_IS_IN_FAT
 #define CONFIG_ENV_SIZE                        (256 << 10)  /* 256 KiB */
 #define FAT_ENV_INTERFACE              "mmc"
 #define FAT_ENV_DEVICE_AND_PART                "0:1"
index 9598bc6976e9e29f741211cc9b602f01d8fc8eec..dc0ac7d8bc84fcc885ec247f52a3d131efb9a36a 100644 (file)
 /* Platform type */
 #define CONFIG_SOC_K2HK
 
+#ifdef CONFIG_TI_SECURE_DEVICE
+#define DEFAULT_SEC_BOOT_ENV                                           \
+       DEFAULT_FIT_TI_ARGS                                             \
+       "findfdt=setenv fdtfile ${name_fdt}\0"
+#else
+#define DEFAULT_SEC_BOOT_ENV
+#endif
+
 /* U-Boot general configuration */
 #define CONFIG_EXTRA_ENV_KS2_BOARD_SETTINGS                            \
        DEFAULT_FW_INITRAMFS_BOOT_ENV                                   \
+       DEFAULT_SEC_BOOT_ENV                                            \
        "boot=ubi\0"                                                    \
        "args_ubi=setenv bootargs ${bootargs} rootfstype=ubifs "        \
        "root=ubi0:rootfs rootflags=sync rw ubi.mtd=ubifs,2048\0"       \
@@ -28,7 +37,6 @@
        "name_fs=arago-console-image-k2hk-evm.cpio.gz\0"
 
 #define CONFIG_ENV_SIZE                                (256 << 10)  /* 256 KiB */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET                      0x100000
 
 #include <configs/ti_armv7_keystone2.h>
index d054276e61eb5f7a825623b83dc79a2445384860..d8bcbde8430aeac161dce0f6a32212b5f11031c4 100644 (file)
@@ -28,7 +28,6 @@
        "name_fs=arago-console-image-k2l-evm.cpio.gz\0"
 
 #define CONFIG_ENV_SIZE                                (256 << 10)  /* 256 KiB */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET                      0x100000
 
 #include <configs/ti_armv7_keystone2.h>
index 408e5634b612c290bc26a6c21071e41701c0b7ac..f040d0bbb6bce4add69a75d2708e192a599b7d3b 100644 (file)
  */
 
 #define CONFIG_ENV_SIZE                (128 * 1024)
-#define CONFIG_ENV_IS_NOWHERE
 
 #define CONFIG_ENV_OVERWRITE
 
index c2b38d8af649c1c60dc87f364af066c57d6051b3..1e33328f419e10e006214b40204746aaec366c4c 100644 (file)
 
 #define CONFIG_BOOTCOUNT_LIMIT
 
-/*
- * Command line configuration.
- */
-#define CONFIG_CMD_MTDPARTS
-
 #undef CONFIG_WATCHDOG         /* disable platform specific watchdog */
 
 #undef CONFIG_BOOTARGS         /* the boot command will set bootargs */
@@ -60,7 +55,6 @@
 #define CONFIG_BOOTP_HOSTNAME
 
 /* UBI Support for all Keymile boards */
-#define CONFIG_RBTREE
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_CONCAT
index 7d69224bd18adcb7420f260d56656cd94f0677ab..0bd42799f121226a10a3e96d99d00763ceec88ec 100644 (file)
  */
 
 #ifndef CONFIG_SYS_RAMBOOT
-#define CONFIG_ENV_IS_IN_FLASH
 #ifndef CONFIG_ENV_ADDR
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
                                        CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
 
 #else /* CFG_SYS_RAMBOOT */
-#define CONFIG_ENV_IS_NOWHERE          /* Store ENV in memory only */
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #define CONFIG_ENV_SIZE                0x2000
 #endif /* CFG_SYS_RAMBOOT */
index 0c5f6e75154338c91298b8ca20f487998a4990de..04afde7e209a0c22904474e98c51c981acf415c3 100644 (file)
 #define CONFIG_INITRD_TAG              /* enable INITRD tag */
 #define CONFIG_SETUP_MEMORY_TAGS       /* enable memory tag */
 
-/*
- * Commands configuration
- */
-#define CONFIG_CMD_MTDPARTS
-
 /*
  * NAND Flash configuration
  */
 #define CONFIG_ENV_OVERWRITE   /* ethaddr can be reprogrammed */
 #define CONFIG_KM_COMMON_ETH_INIT /* standard km ethernet_present for piggy */
 
-/*
- * UBI related stuff
- */
-#define CONFIG_SYS_USE_UBI
-
 /*
  * I2C related stuff
  */
@@ -214,7 +204,6 @@ int get_scl(void);
  *  Environment variables configurations
  */
 #if defined CONFIG_KM_ENV_IS_IN_SPI_NOR
-#define CONFIG_ENV_IS_IN_SPI_FLASH  /* use SPI-Flash for environment vars */
 #define CONFIG_ENV_OFFSET              0xc0000     /* no bracets! */
 #define CONFIG_ENV_SIZE                        0x02000     /* Size of Environment */
 #define CONFIG_ENV_SECT_SIZE           0x10000
@@ -222,7 +211,6 @@ int get_scl(void);
                                        CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_TOTAL_SIZE          0x20000     /* no bracets! */
 #else
-#define CONFIG_ENV_IS_IN_EEPROM                /* use EEPROM for environment vars */
 #define CONFIG_SYS_DEF_EEPROM_ADDR     0x50
 #define CONFIG_ENV_EEPROM_IS_ON_I2C
 #define CONFIG_SYS_EEPROM_WREN
index 664a64c55a775b89b6f87d3805ba2b39deb576c9..373e4bc3b4f46f9de1ec71524c0507b6ffae7b86 100644 (file)
@@ -44,7 +44,6 @@
 
 /* Environment in SPI Flash */
 #define CONFIG_SYS_EXTRA_ENV_RELOC
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS              0
 #define CONFIG_ENV_SPI_CS               0
 #define CONFIG_ENV_SPI_MAX_HZ           20000000
index 088aced8b666a642f2365bd6c47161743cd9c904..36009b8599e5c32decfd1045a89573e55cf47513 100644 (file)
@@ -15,8 +15,6 @@
 /* Store env in emmc */
 #undef CONFIG_ENV_SIZE
 #define CONFIG_ENV_SIZE                        SZ_32K
-#undef CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0 /* emmc */
 #define CONFIG_SYS_MMC_ENV_PART                0 /* user area */
 
index feb3eec4464b0d193956bcee1bf709c83f5b819d..f4349913143ce4869e1c30fb825770244c38e5b9 100644 (file)
@@ -98,7 +98,6 @@
 
 #undef  CONFIG_SYS_FLASH_PROTECTION
 #undef  CONFIG_SYS_DIRECT_FLASH_TFTP
-#define CONFIG_ENV_IS_IN_FLASH
 
 /* GPIO / PFC */
 #define CONFIG_SH_GPIO_PFC
index 66e65c878c8d16cd19c3b86dde9473f336abf38a..d5fe7dfa96a133f107a35134bfb649d6814946f8 100644 (file)
@@ -73,7 +73,6 @@
 #include "mv-common.h"
 
 /* Remove or override few declarations from mv-common.h */
-#undef CONFIG_RBTREE
 #undef CONFIG_ENV_SPI_MAX_HZ
 #undef CONFIG_SYS_IDE_MAXBUS
 #undef CONFIG_SYS_IDE_MAXDEVICE
 /*
  * Environment variables configurations
  */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SECT_SIZE           0x10000 /* 64KB */
 #define CONFIG_ENV_SIZE                        0x1000  /* 4KB */
 #define CONFIG_ENV_ADDR                        0x70000
index 15da4074f269e32560a7f923e05026c60f0cf124..4ea61af920eb52b8d5c728aa78552db43e5296cf 100644 (file)
 #define CONFIG_CLOCKS
 #endif
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                (16 << 10)
 
 /* additions for new relocation code, must added to all boards */
index 016d54f138c53d56235615fcf0236f3639d15a26..76ee91042da095aaeba0c0efd43f1a1a8e24257b 100644 (file)
 
 /* FLASH and environment organization */
 #define CONFIG_ENV_SIZE                        SZ_8K
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (8 * SZ_64K)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                0
index 42bbc028d385ce54b7b411b70cf1ac6207be99a8..74af0b9dc6bd8f8dec75b263215c110af49e8f48 100644 (file)
@@ -64,7 +64,6 @@
  */
 #define CONFIG_ENV_OVERWRITE
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x40000          /* 256KB */
 #define CONFIG_ENV_OFFSET              0x200000        /* 2MB */
 #define CONFIG_ENV_SECT_SIZE           0x40000
index f6f88e84c73043f1e33bfb88af840a141a0a84e7..6b1ba578e9225da18a40077e8b386e30b2de0cc8 100644 (file)
@@ -39,7 +39,6 @@
 #ifdef CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT         1
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS      2
 #endif
 
 #define CONFIG_CMD_MEMINFO
index 9e6c7a797cb9167b6be98fea799d1d58898a8948..bebb0dfce8161d8056bffd57178689b45551cb5f 100644 (file)
 #ifdef CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT         1
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS      2
 #endif
 
 /*  MMC  */
index 0705bc5f684d8399836af63dd7eb20641debc053..32c8cec07231b0300673e357193c681cd9a00dd3 100644 (file)
@@ -27,7 +27,6 @@
 #ifdef CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT         1
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS      2
 #endif
 
 /*
index c1ec2d440cd823302f0d36b56c02773c6227c84d..58f893f4fdd575ca82044e34cd35c8b06a72e5cb 100644 (file)
@@ -26,7 +26,6 @@
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_XHCI_DWC3
 #define CONFIG_USB_MAX_CONTROLLER_COUNT                1
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
 #endif
 
 #if defined(CONFIG_HAS_FSL_DR_USB) || defined(CONFIG_HAS_FSL_XHCI_USB)
 
 #if defined(CONFIG_SD_BOOT)
 #define CONFIG_ENV_OFFSET              0x100000
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #define CONFIG_ENV_SIZE                        0x2000
 #elif defined(CONFIG_QSPI_BOOT)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              0x100000
 #define CONFIG_ENV_SECT_SIZE   0x10000
index 152954165cc802e978a68a653508e32b95474f2f..83e7e7a50e7f088a2d388c932f03f81c4e2644c5 100644 (file)
@@ -413,7 +413,6 @@ unsigned long get_board_ddr_clk(void);
 #ifdef CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT                1
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
 #endif
 
 /*
@@ -550,20 +549,16 @@ unsigned long get_board_ddr_clk(void);
 
 #if defined(CONFIG_SD_BOOT)
 #define CONFIG_ENV_OFFSET              0x300000
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x2000
 #elif defined(CONFIG_QSPI_BOOT)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x2000          /* 8KB */
 #define CONFIG_ENV_OFFSET              0x300000        /* 3MB */
 #define CONFIG_ENV_SECT_SIZE           0x10000
 #elif defined(CONFIG_NAND_BOOT)
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (10 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x300000)
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_SECT_SIZE           0x20000 /* 128K (one sector) */
index 067ef4df93c32a6ceb04c02064521de825352c29..0aa6fdd09ab499095823b3812382c350b0cd5676 100644 (file)
@@ -50,7 +50,6 @@
 #ifdef CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        1
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
 #endif
 
 #define CONFIG_SYS_CLK_FREQ            100000000
 
 #if defined(CONFIG_SD_BOOT)
 #define CONFIG_ENV_OFFSET              0x300000
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x20000
 #elif defined(CONFIG_QSPI_BOOT)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              0x300000
 #define CONFIG_ENV_SECT_SIZE           0x10000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x300000)
 #define CONFIG_ENV_SIZE                        0x20000
 #define CONFIG_ENV_SECT_SIZE           0x20000 /* 128K (one sector) */
index 87ca36a8e9d7c394e43db77405d5fd65110ca9d7..0897da1998d2192c10a693d03dfddae1ece0bce9 100644 (file)
@@ -377,7 +377,6 @@ unsigned long get_board_ddr_clk(void);
 #ifdef CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT                3
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
 #endif
 
 /*
@@ -410,21 +409,17 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_ENV_OVERWRITE
 
 #ifdef CONFIG_NAND_BOOT
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (24 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SD_BOOT)
 #define CONFIG_ENV_OFFSET              (3 * 1024 * 1024)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x2000
 #elif defined(CONFIG_QSPI_BOOT)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x2000          /* 8KB */
 #define CONFIG_ENV_OFFSET              0x300000        /* 3MB */
 #define CONFIG_ENV_SECT_SIZE           0x10000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x300000)
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        0x20000
index deae7873588ee5d11a8819f4fdcb5df765d8bf5d..617a7123983fea9530eab22f4fd2a793796580cd 100644 (file)
 #endif
 
 #if defined(CONFIG_NAND_BOOT)
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (24 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SD_BOOT)
 #define CONFIG_ENV_OFFSET              (3 * 1024 * 1024)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x300000)
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        0x20000
 #ifdef CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT                3
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
 #endif
 #endif
 
index 77619ab32419672d6d070c3db60c57c87ec1a625..bb3d9416a8a9199094d7202e8d3d857cf8b88aa7 100644 (file)
@@ -144,7 +144,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_XHCI_DWC3
 #define CONFIG_USB_MAX_CONTROLLER_COUNT         3
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS      2
 #define CONFIG_CMD_USB
 #define CONFIG_USB_STORAGE
 #endif
@@ -444,21 +443,17 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_ENV_OVERWRITE
 
 #ifdef CONFIG_NAND_BOOT
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_ENV_OFFSET              (24 * CONFIG_SYS_NAND_BLOCK_SIZE)
 #elif defined(CONFIG_SD_BOOT)
 #define CONFIG_ENV_OFFSET              (3 * 1024 * 1024)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x2000
 #elif defined(CONFIG_QSPI_BOOT)
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x2000          /* 8KB */
 #define CONFIG_ENV_OFFSET              0x300000        /* 3MB */
 #define CONFIG_ENV_SECT_SIZE           0x10000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x300000)
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        0x20000
index 8a6b4e637861f468741bbd57474a989a0ebc8267..8c72291f62fe61a3445fbfe745602b849f41719a 100644 (file)
 #endif
 
 #if defined(CONFIG_SD_BOOT)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_OFFSET              (3 * 1024 * 1024)
 #define CONFIG_ENV_SIZE                        0x2000
 #else
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x2000          /* 8KB */
 #define CONFIG_ENV_OFFSET              0x300000        /* 3MB */
 #define CONFIG_ENV_SECT_SIZE           0x40000         /* 256KB */
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_XHCI_DWC3
 #define CONFIG_USB_MAX_CONTROLLER_COUNT         3
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS      2
 #define CONFIG_CMD_USB
 #define CONFIG_USB_STORAGE
 #endif
index dbca05a3f6278a94bc8194df71175f9ea3367bab..6ae5586d64fa3867d5bf6131a1ee3d8b3236d510 100644 (file)
@@ -31,7 +31,6 @@
 #endif
 #else
 #define CONFIG_SYS_TEXT_BASE           0x20100000
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x2000          /* 8KB */
 #define CONFIG_ENV_OFFSET              0x300000        /* 3MB */
 #define CONFIG_ENV_SECT_SIZE           0x10000
index cec12ad04c07a39998b34f857f180ee7ff20f9da..6b34edfbf115d3bf4286c46f15625b0752491c99 100644 (file)
@@ -82,7 +82,6 @@
 #define CONFIG_SYS_LS_MC_BOOT_TIMEOUT_MS 200000
 
 /* Store environment at top of flash */
-#define CONFIG_ENV_IS_NOWHERE          1
 #define CONFIG_ENV_SIZE                        0x1000
 
 #endif /* __LS2_EMU_H */
index de9db4abb465fdc51a8fb232e4a62723b10c6f19..02589be5fdebd16cbfb7f05162ab4e1c6e077d06 100644 (file)
 #define CONFIG_SYS_LS_MC_BOOT_TIMEOUT_MS 200000
 
 /* Store environment at top of flash */
-#define CONFIG_ENV_IS_NOWHERE          1
 #define CONFIG_ENV_SIZE                        0x1000
 
 #endif /* __LS2_SIMU_H */
index 5e1867d81ef89e03e46c89919b87835035929ad1..66936c4a9e96f3f71c62c94b1575ac37c5a5e403 100644 (file)
@@ -229,7 +229,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NAND_FTIM2
 #define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NAND_FTIM3
 
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (896 * 1024)
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        0x2000
@@ -238,7 +237,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_NAND_U_BOOT_SIZE    (640 * 1024)
 #elif defined(CONFIG_SD_BOOT)
 #define CONFIG_ENV_OFFSET              0x200000
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        0x20000
 #endif
@@ -272,7 +270,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NAND_FTIM3
 
 #ifndef CONFIG_QSPI_BOOT
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x300000)
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        0x2000
@@ -449,7 +446,6 @@ unsigned long get_board_ddr_clk(void);
 #define CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT                2
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
 
 #include <asm/fsl_secure_boot.h>
 
index e8aacd3dcd25f0591b0f3df02569e694d2b2027f..744a78997b939a589595b35c4096082995469e6d 100644 (file)
@@ -223,7 +223,6 @@ unsigned long get_board_sys_clk(void);
 #define CONFIG_SYS_CS0_FTIM2           CONFIG_SYS_NAND_FTIM2
 #define CONFIG_SYS_CS0_FTIM3           CONFIG_SYS_NAND_FTIM3
 
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (2048 * 1024)
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        0x2000
@@ -249,7 +248,6 @@ unsigned long get_board_sys_clk(void);
 #define CONFIG_SYS_CS2_FTIM2           CONFIG_SYS_NAND_FTIM2
 #define CONFIG_SYS_CS2_FTIM3           CONFIG_SYS_NAND_FTIM3
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x300000)
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        0x2000
@@ -348,7 +346,6 @@ unsigned long get_board_sys_clk(void);
 #define CONFIG_HAS_FSL_XHCI_USB
 #define CONFIG_USB_XHCI_FSL
 #define CONFIG_USB_MAX_CONTROLLER_COUNT         2
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS      2
 
 #undef CONFIG_CMDLINE_EDITING
 #include <config_distro_defaults.h>
index 43e4a325b466b8d374b5bb6c43d4c573f01e478b..8b94412028189b8edbe55d926588767f94e37d44 100644 (file)
 #ifdef CONFIG_SPI_FLASH
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
 #define CONFIG_SYS_MAX_FLASH_SECT      8
-#define CONFIG_ENV_IS_IN_SPI_FLASH     1
 #define CONFIG_ENV_SECT_SIZE           0x10000 /* 64K */
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 #define CONFIG_ENV_SIZE                        0x10000 /* 64k */
index 8dea0313a346f6af149b95338bab2cc787d6c13f..14874a5ebc4005c2df95d4401600cd33715f3b94 100644 (file)
@@ -25,7 +25,6 @@
 
 /* Environment */
 #define CONFIG_ENV_SIZE                        (16 * 1024)
-#define CONFIG_ENV_IS_IN_NAND
 
 /* Environment is in NAND */
 #if defined(CONFIG_CMD_NAND) && defined(CONFIG_ENV_IS_IN_NAND)
 #define CONFIG_ENV_OFFSET_REDUND       \
                (CONFIG_ENV_OFFSET + CONFIG_ENV_RANGE)
 
-#define CONFIG_CMD_UBIFS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 #define MTDIDS_DEFAULT                 "nand0=gpmi-nand"
@@ -51,8 +46,6 @@
                "14m(boot),"                    \
                "238m(data),"                   \
                "-@4096k(UBI)"
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 /* FEC Ethernet on SoC */
index a92c2283348d01974fa126623e90114f6489e24d..f4fcbd315a565d25b690040583f3d3c92b122d15 100644 (file)
@@ -92,7 +92,6 @@
 #define CONFIG_SYS_NAND_USE_FLASH_BBT
 
 /* Environment is in NAND */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SIZE_REDUND         CONFIG_ENV_SIZE
 #define CONFIG_ENV_SECT_SIZE           (128 * 1024)
 #define CONFIG_ENV_RANGE               (4 * CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_OFFSET_REDUND       \
                (CONFIG_ENV_OFFSET + CONFIG_ENV_RANGE)
 
-#define CONFIG_CMD_UBIFS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 #define MTDIDS_DEFAULT                 "nand0=mxc_nand"
                "14m(boot),"                    \
                "240m(data),"                   \
                "-@2048k(UBI)"
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 /*
index 82aee1513218245106b3dca6f443c72bdcfe2ea4..7c28a94d92d6f77b1cc70d3b8a0af7dab24dd72e 100644 (file)
@@ -32,7 +32,6 @@
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_CONSOLE_OVERWRITE_ROUTINE
 #define CONFIG_SYS_CONSOLE_ENV_OVERWRITE
 #define CONFIG_ENV_SIZE                        0x4000
@@ -97,7 +96,6 @@
  * USB
  */
 #ifdef CONFIG_CMD_USB
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
 
 /* USB device */
 #define CONFIG_USB_ETHER
index 1f977cb71a6dd9f2f39dabc8ff699f61074dba7e..8eb6d7a269ea42cd171096e5a688ec7ad3c04ae9 100644 (file)
@@ -82,7 +82,6 @@
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE           0x20000
 #define CONFIG_ENV_SIZE                        CONFIG_ENV_SECT_SIZE
 #define CONFIG_ENV_ADDR \
index b82a684cc9672840825274ae1a59e17cde7fc58c..66641ff1c9961971dfd7cf6bb05cf86f04546d53 100644 (file)
@@ -36,7 +36,6 @@
 #define CONFIG_SF_DEFAULT_MODE         SPI_MODE_3
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              (1 << 20) /* 1MiB in */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
 #define CONFIG_ENV_SECT_SIZE           (64 << 10) /* 64KiB sectors */
index fca1af9d2bb9695f3e0ef0326a592d19c7d9971a..a4c103503fc31550dcb2eb37efd7d1cfeeb3a821 100644 (file)
@@ -80,7 +80,6 @@
 #define CONFIG_SYS_FLASH_BANKS_SIZES   { (32 * SZ_1M) }
 
 /* MTD support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 
 #define CONFIG_ENV_SIZE                        (SZ_128K)
 
 /* Envs are stored in NOR flash */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE    (SZ_128K)
 #define CONFIG_ENV_ADDR        (CONFIG_SYS_FLASH_BASE + 0x40000)
 
index 0c237a59cb8eebd6acf4a07e6a59d6fc048fc8b4..3f5fdab9a979b50b02ccb4cc16a7a25849c5ba46 100644 (file)
@@ -74,7 +74,6 @@
 
 /* EHCI */
 #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO       57
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
 #define        CONFIG_USB_HOST_ETHER
 #define        CONFIG_USB_ETHER_ASIX
 #define CONFIG_USB_ETHER_MCS7830
 /* commands to include */
 
 #define CONFIG_CMD_NAND                /* NAND support                 */
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
-#define CONFIG_CMD_MTDPARTS
 
 #define CONFIG_SYS_I2C
 #define CONFIG_SYS_OMAP24_I2C_SPEED    100000
 #define CONFIG_SYS_NAND_BUSWIDTH_16BIT
 #define CONFIG_NAND_OMAP_GPMC
 #define CONFIG_NAND_OMAP_GPMC_PREFETCH
-#define CONFIG_ENV_IS_IN_NAND
 #define SMNAND_ENV_OFFSET              0x180000 /* environment starts here */
 
 /* Redundant Environment */
index d2165828d365d4833c98281d738cebc25e1cca6e..e007370f904cbd02bb4b468926f1061d2e193d3f 100644 (file)
@@ -25,7 +25,6 @@
 #define CONFIG_SYS_MAX_NAND_DEVICE     1
 
 /* Environment in NAND, aligned to start of last sector */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (SZ_512M - SZ_128K) /* 128K sectors */
 
 /* USB host support */
index 3a8e82edbf7787a257fabb35fa72a787408645cf..63d3fdc6eec888e77a9d06171770dc4df7a9114a 100644 (file)
 #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
 #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
 
index 89e3807a14b56ff169fafcdfd64f5d6e807d6222..14dac4a72962a8454a3656688098352f209a9248 100644 (file)
@@ -10,8 +10,7 @@
 
 #define CONFIG_CPU_ARMV8
 #define CONFIG_REMAKE_ELF
-#define CONFIG_NR_DRAM_BANKS           1
-#define CONFIG_ENV_IS_NOWHERE          1
+#define CONFIG_NR_DRAM_BANKS           2
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_SYS_MAXARGS             32
 #define CONFIG_SYS_MALLOC_LEN          (32 << 20)
index cc7f81955ed8ec20d09f1dd806a9e1b54e5b1730..aa007e2819b5e45b8b7cfce407e4d62260ea0d98 100644 (file)
 /* use buffered writes (20x faster) */
 # define       CONFIG_SYS_FLASH_USE_BUFFER_WRITE       1
 # ifdef        RAMENV
-#  define CONFIG_ENV_IS_NOWHERE        1
 #  define CONFIG_ENV_SIZE      0x1000
 #  define CONFIG_ENV_ADDR      (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SIZE)
 
 # else /* FLASH && !RAMENV */
-#  define CONFIG_ENV_IS_IN_FLASH       1
 /* 128K(one sector) for env */
 #  define CONFIG_ENV_SECT_SIZE 0x20000
 #  define CONFIG_ENV_ADDR \
 # define CONFIG_SF_DEFAULT_CS          XILINX_SPI_FLASH_CS
 
 # ifdef        RAMENV
-#  define CONFIG_ENV_IS_NOWHERE        1
 #  define CONFIG_ENV_SIZE      0x1000
 #  define CONFIG_ENV_ADDR      (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SIZE)
 
 # else /* SPIFLASH && !RAMENV */
-#  define CONFIG_ENV_IS_IN_SPI_FLASH   1
 #  define CONFIG_ENV_SPI_MODE          SPI_MODE_3
 #  define CONFIG_ENV_SPI_MAX_HZ                CONFIG_SF_DEFAULT_SPEED
 #  define CONFIG_ENV_SPI_CS            CONFIG_SF_DEFAULT_CS
 #else /* !SPIFLASH */
 
 /* ENV in RAM */
-# define CONFIG_ENV_IS_NOWHERE 1
 # define CONFIG_ENV_SIZE       0x1000
 # define CONFIG_ENV_ADDR       (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SIZE)
 #endif /* !SPIFLASH */
 #define CONFIG_CMD_MFSL
 
 #if defined(FLASH)
-# undef CONFIG_CMD_UBIFS
-
 # if !defined(RAMENV)
 #  define CONFIG_CMD_SAVES
 # endif
 # if !defined(RAMENV)
 #  define CONFIG_CMD_SAVES
 # endif
-#else
-# undef CONFIG_CMD_UBIFS
 #endif
 #endif
 
 # define CONFIG_MTD_PARTITIONS
 #endif
 
-#if defined(CONFIG_CMD_UBIFS)
-# define CONFIG_LZO
-#endif
-
 #if defined(CONFIG_CMD_UBI)
 # define CONFIG_MTD_PARTITIONS
-# define CONFIG_RBTREE
 #endif
 
 #if defined(CONFIG_MTD_PARTITIONS)
 /* MTD partitions */
-#define CONFIG_CMD_MTDPARTS    /* mtdparts command line support */
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT         "nor0=flash-0"
index ae9548599305523b97d296585cd7cd6587f8f260..5b24c2bbd475c9a524ca26aa5ac8a5f2b0a74ca4 100644 (file)
 
 #define CONFIG_SYS_MONITOR_LEN         (1 << 20)
 
-#define CONFIG_SMSC_LPC47M
 #define CONFIG_MISC_INIT_R
 
 #define CONFIG_STD_DEVICES_SETTINGS    "stdin=usbkbd,serial\0" \
                                        "stdout=vidconsole,serial\0" \
-                                       "stderr=vidconsole,serial\0"
+                                       "stderr=vidconsole,serial\0" \
+                                       "usb_pgood_delay=40\0"
 
 #define CONFIG_SCSI_DEV_LIST           \
        {PCI_VENDOR_ID_INTEL, PCI_DEVICE_ID_INTEL_VALLEYVIEW_SATA}, \
index 477f296542da1ac3ad1798190b85f50065bbe379..0c43a2343d09974e24aa9f9e878d91b983484aa0 100644 (file)
@@ -14,7 +14,6 @@
 
 #include <configs/rk3288_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 #endif
index b865d9f9160c2058c86603ff330452d695af5bfd..cd5971d30c86f9764b311a5ef347e044c94de808 100644 (file)
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
                                 CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K(one sector) for env */
index df8ffe29d0a5216dd00e07acb2c2f74ad3143cb1..5b37277cceabb26d7f2de7a56b98ca188fae1d21 100644 (file)
@@ -51,7 +51,6 @@
 #define CONFIG_SYS_MAX_FLASH_SECT      256
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
 #define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
index 2855c00723ca59852bf3d021b34fd671d1d6ceb9..850a8cc22264b8c465f1f131af8196c3ccb88551 100644 (file)
@@ -65,7 +65,6 @@
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
 #define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   (64 * 1024)
 #define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
index de6e58a71e4bfb0770de9a2b2b0a7eef3e01dea4..f456bf62931fe9a6eadc6f30455f43ab668b5fe8 100644 (file)
@@ -85,7 +85,6 @@
 
 #undef  CONFIG_SYS_DIRECT_FLASH_TFTP
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OVERWRITE   1
 #define CONFIG_ENV_SECT_SIZE   (8 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
index 394ce6cd38d3a5c2e7a6588be5a7ee569d219e4b..8ea431efdc191789e86033a33fd4ff6b96abc98b 100644 (file)
@@ -63,7 +63,6 @@
 #undef  CONFIG_SYS_FLASH_QUIET_TEST
 #define CONFIG_SYS_FLASH_EMPTY_INFO                            /* print 'E' for empty sector on flinfo */
 
-#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_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
index 13bd6cff3d0ec0c7311e3d8c0920fe47c332028a..18003e1eba5f246824651ce51f9286c4179951ad 100644 (file)
  * File system
  */
 #ifdef CONFIG_SYS_MVFS
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
 #define CONFIG_MTD_DEVICE               /* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_LZO
 #endif
 
 #endif /* _MV_COMMON_H */
index eb80ac5b48e5421052833f787b9aa89a8140d3c7..1307d215ed878e4856ddd412b8887c0974165d73 100644 (file)
@@ -79,7 +79,6 @@
 #define CONFIG_ENV_SPI_MODE            CONFIG_SF_DEFAULT_MODE
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              0x180000 /* as Marvell U-Boot version */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
 #define CONFIG_ENV_SECT_SIZE           (64 << 10) /* 64KiB sectors */
 #define CONFIG_NET_RETRY_COUNT 50
 #define CONFIG_PHY_MARVELL
 
-/* USB 2.0 */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
-
-/* USB 3.0 */
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 3
-
-#define CONFIG_USB_MAX_CONTROLLER_COUNT (CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS + \
-                                        CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS)
+#define CONFIG_USB_MAX_CONTROLLER_COUNT (3 + 3)
 
 /* USB ethernet */
 #define CONFIG_USB_HOST_ETHER
index ac116edf31a6a6a00ec453e3bbe8392b2ad8a33f..86ae19c9fbe10ff56f1f3897eb713b139fd047a3 100644 (file)
 
 /* Environment in SPI NOR flash */
 #ifdef CONFIG_MVEBU_SPI_BOOT
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 /* Environment in NAND flash */
-#elif defined(CONFIG_MVEBU_NAND_BOOT)
-#define CONFIG_ENV_IS_IN_NAND
 #endif
 
 #define CONFIG_ENV_OFFSET              0x180000 /* as Marvell U-Boot version */
 #define CONFIG_ARP_TIMEOUT     200
 #define CONFIG_NET_RETRY_COUNT 50
 
-/* USB 2.0 */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
-
-/* USB 3.0 */
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS 3
-
-#define CONFIG_USB_MAX_CONTROLLER_COUNT (CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS + \
-                                        CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS)
+#define CONFIG_USB_MAX_CONTROLLER_COUNT (3 + 3)
 
 /* USB ethernet */
 #define CONFIG_USB_HOST_ETHER
index cccc3a8ab0a7425cf041606d844e0b0da6c26de2..bd3c7ed949b4a3dde3ff5c3aa3140c3b9b299520 100644 (file)
@@ -19,7 +19,6 @@
 #define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
 
 /* Environment */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OVERWRITE
 
 /* Environment is in MMC */
index 340517280395adeb6e76127fdac00c96332928d8..9b54d20e21a06a7f2a30b01d2fdd671785d603c4 100644 (file)
@@ -23,7 +23,6 @@
 
 /* Environment */
 #define CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_IS_IN_MMC
 
 /* Environment is in MMC */
 #if defined(CONFIG_CMD_MMC) && defined(CONFIG_ENV_IS_IN_MMC)
index 8949ee64db41df2aeb80f9595c827ca619355999..8b472bf0f08d4d409dab621699641bc634ec5740 100644 (file)
@@ -58,7 +58,6 @@
 #define CONFIG_ENV_SIZE        (8 * 1024)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 /* U-Boot general configuration */
index fac26fb2f2310f9e3a0bdfe31fe0b35c6359c4da..66a310cff9c9b6164b67a16a158b8174a2d9574e 100644 (file)
 
 /* UBI and NAND partitioning */
 #ifdef CONFIG_CMD_NAND
-#define CONFIG_CMD_UBIFS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 #define MTDIDS_DEFAULT                 "nand0=gpmi-nand"
index 5db36775663fddc7f93fccb1ef00be14f4f3d9f0..80b6e16818b8a8ad3d81fb29f24432aec1e65f59 100644 (file)
 #define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_FLASH_BASE   /* Monitor at beginning of flash */
 #define CONFIG_SYS_MONITOR_LEN         (256 * 1024)    /* Reserve 256KiB */
 
-#define        CONFIG_ENV_IS_IN_FLASH  1
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
 /*
  * JFFS2 partitions
  */
-#undef CONFIG_CMD_MTDPARTS
 #define CONFIG_JFFS2_DEV       "nor0"
 
 #endif /* __CONFIG_H */
index e45649f566ad145a08bc7d5b87d15fc0c737801f..7ed9012ec92b8c981a37ef0c8c894148145f6946 100644 (file)
 /*
  * environment organization
  */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x40000
 #define CONFIG_ENV_OFFSET_REDUND       0x60000
 #define CONFIG_ENV_SIZE                        (128 * 1024)
index e60b96f7dc9adbea7a5c2c85cd975435fa5c657a..8338d6df79f3bf7fbe869d6137347e6df8bfe75b 100644 (file)
 /*
  * MTD Command for mtdparts
  */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_FLASH_CFI_MTD
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
                                CONFIG_SYS_MONITOR_LEN)
 
-#define CONFIG_ENV_IS_IN_FLASH
-
 #if defined(CONFIG_FSL_ENV_IN_NAND)
-       #define CONFIG_ENV_IS_IN_NAND
        #define CONFIG_ENV_OFFSET       (1024 * 1024)
 #endif
 
 #define CONFIG_SYS_NAND_LARGEPAGE
 
 /* EHCI driver */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     1
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 #define CONFIG_USB_EHCI_MXC
index 4513adf2c4172b95c96bb5e1c500dc0244dcdaf2..5daa50d169f4cb0c4f0200e7eeaf828f72a41799 100644 (file)
  */
 #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
index aee6e70c39c557448aa479c412ad0daf05a943a1..ccbac6ab2878cece5bf30c45e3f69e1351337f17 100644 (file)
 /* 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
 
 #define MX53ARD_CS1GCR1                (CSEN | DSZ(2))
index 151c4b3faff70e83870b35750c9e150678ba4278..4137592d4c6acaf8859183871909368683c268bb 100644 (file)
@@ -66,8 +66,9 @@
 #define CONFIG_SYS_TEXT_BASE    0x77800000
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
-       "fdt_addr=0x71ff0000\0" \
-       "rdaddr=0x72000000\0" \
+       "fdt_addr_r=0x71ff0000\0" \
+       "pxefile_addr_r=0x73000000\0" \
+       "ramdisk_addr_r=0x72000000\0" \
        "console=ttymxc1,115200\0" \
        "uenv=/boot/uEnv.txt\0" \
        "optargs=\0" \
                "rootfstype=${mmcrootfstype} " \
                "${cmdline}\0" \
        "loadimage=load mmc ${bootpart} ${loadaddr} ${bootdir}/${bootfile}\0" \
-       "loadrd=load mmc ${bootpart} ${rdaddr} ${bootdir}/${rdfile};" \
+       "loadpxe=dhcp;setenv kernel_addr_r ${loadaddr};pxe get;pxe boot;\0" \
+       "loadrd=load mmc ${bootpart} ${ramdisk_addr_r} ${bootdir}/${rdfile};" \
                "setenv rdsize ${filesize}\0" \
        "loadfdt=echo loading ${fdt_path} ...;" \
-               "load mmc ${bootpart} ${fdt_addr} ${fdt_path}\0" \
+               "load mmc ${bootpart} ${fdt_addr_r} ${fdt_path}\0" \
        "mmcboot=mmc dev ${mmcdev}; " \
                "if mmc rescan; then " \
                        "echo SD/MMC found on device ${mmcdev};" \
                        "fi;" \
                        "run mmcargs;" \
                        "echo debug: [${bootargs}] ... ;" \
-                       "echo debug: [bootz ${loadaddr} - ${fdt_addr}] ... ;" \
-                       "bootz ${loadaddr} - ${fdt_addr}; " \
+                       "echo debug: [bootz ${loadaddr} - ${fdt_addr_r}];" \
+                       "bootz ${loadaddr} - ${fdt_addr_r}; " \
+               "else " \
+                       "echo loading from dhcp ...; " \
+                       "run loadpxe; " \
                "fi;\0"
 
 #define CONFIG_BOOTCOMMAND \
 /* 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
 
 /* Framebuffer and LCD */
index ac9beb60abd222f10402ed4bc9464c85cf55518c..11d1278349a5dd4114588aff8411f3b456587b94 100644 (file)
 /* 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                         /* __CONFIG_H */
index c82e426a61c0ca8eccd26007a39f9ee1786b7d43..3828b21a8e0d4dc0439d3ba5a533fd6c39342067 100644 (file)
 /* 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
 
 #ifdef CONFIG_CMD_SATA
index d064337f472a1cafe0fb163a214aa85b6519c8a9..2990e1637204980b20494d81126978e2ca7c1a12 100644 (file)
 /* 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                         /* __CONFIG_H */
index 1a8ab4ee33e1d7e29584f830f6848799f0efe942..f07e83b498c658f174ffba7228bbc1d52710ee81 100644 (file)
@@ -22,7 +22,7 @@
 
 #include <linux/sizes.h>
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #ifndef CONFIG_MX6
 #define CONFIG_MX6
index bc22f56d1da14a828e0fc5d6ebad53282e3c6a0e..32e898e05c2267c3360efbc9063d18a342e1c6b3 100644 (file)
 /* MMC Configs */
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC2_BASE_ADDR
 
+/* SATA Configuration */
+#ifdef CONFIG_CMD_SATA
+#define CONFIG_DWC_AHSATA
+#define CONFIG_SYS_SATA_MAX_DEVICE      1
+#define CONFIG_DWC_AHSATA_PORT_ID       0
+#define CONFIG_DWC_AHSATA_BASE_ADDR     SATA_ARB_BASE_ADDR
+#define CONFIG_LBA48
+#define CONFIG_LIBATA
+#endif
+
 /* Ethernet Configuration */
 #define CONFIG_FEC_MXC
 #define CONFIG_MII
@@ -84,6 +94,7 @@
        "console=" CONSOLE_DEV ",115200\0" \
        "bootm_size=0x10000000\0" \
        "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
+       "finduuid=part uuid mmc 0:1 uuid\0" \
        "update_sd_firmware=" \
                "if test ${ip_dyn} = yes; then " \
                        "setenv get_cmd dhcp; " \
 
 #define CONFIG_BOOTCOMMAND \
        "run findfdt; " \
+       "run finduuid; " \
        "run distro_bootcmd"
 
 #define BOOT_TARGET_DEVICES(func) \
        func(MMC, mmc, 0) \
+       func(SATA, sata, 0) \
        func(USB, usb, 0) \
        func(PXE, pxe, na) \
        func(DHCP, dhcp, na)
 
 /* Environment organization */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (8 * 64 * 1024)
 
 #endif                         /* __MX6CUBOXI_CONFIG_H */
index de5dc1c45175e10f138698edfe0270f8747b6882..ff0e4a6444d09330c2784fa8f361e1ed9348a312 100644 (file)
 /* 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         1
 
 /* USB Configs */
diff --git a/include/configs/mx6qsabreauto.h b/include/configs/mx6qsabreauto.h
deleted file mode 100644 (file)
index 635c04a..0000000
+++ /dev/null
@@ -1,75 +0,0 @@
-/*
- * Copyright (C) 2012 Freescale Semiconductor, Inc.
- *
- * Configuration settings for the Freescale i.MX6Q SabreAuto board.
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __MX6QSABREAUTO_CONFIG_H
-#define __MX6QSABREAUTO_CONFIG_H
-
-#define CONFIG_MACH_TYPE       3529
-#define CONFIG_MXC_UART_BASE   UART4_BASE
-#define CONSOLE_DEV            "ttymxc3"
-#define CONFIG_MMCROOT                 "/dev/mmcblk0p2"
-
-/* USB Configs */
-#define CONFIG_USB_HOST_ETHER
-#define CONFIG_USB_ETHER_ASIX
-#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
-#define CONFIG_EHCI_HCD_INIT_AFTER_RESET       /* For OTG port */
-#define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
-#define CONFIG_MXC_USB_FLAGS   0
-
-#define CONFIG_PCA953X
-#define CONFIG_SYS_I2C_PCA953X_WIDTH   { {0x30, 8}, {0x32, 8}, {0x34, 8} }
-
-#include "mx6sabre_common.h"
-
-#define CONFIG_SYS_FLASH_BASE           WEIM_ARB_BASE_ADDR
-#define CONFIG_SYS_FLASH_SECT_SIZE      (128 * 1024)
-#define CONFIG_SYS_MAX_FLASH_BANKS 1    /* max number of memory banks */
-#define CONFIG_SYS_MAX_FLASH_SECT 256   /* max number of sectors on one chip */
-#define CONFIG_SYS_FLASH_CFI            /* Flash memory is CFI compliant */
-#define CONFIG_FLASH_CFI_DRIVER         /* Use drivers/cfi_flash.c */
-#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE /* Use buffered writes*/
-#define CONFIG_SYS_FLASH_EMPTY_INFO
-#define CONFIG_SYS_FLASH_CFI_WIDTH     FLASH_CFI_16BIT
-
-#define CONFIG_SYS_FSL_USDHC_NUM       2
-#if defined(CONFIG_ENV_IS_IN_MMC)
-#define CONFIG_SYS_MMC_ENV_DEV         0
-#endif
-
-/* I2C Configs */
-#define CONFIG_SYS_I2C
-#define CONFIG_SYS_I2C_MXC
-#define CONFIG_SYS_I2C_MXC_I2C1                /* enable I2C bus 1 */
-#define CONFIG_SYS_I2C_MXC_I2C2                /* enable I2C bus 2 */
-#define CONFIG_SYS_I2C_MXC_I2C3                /* enable I2C bus 3 */
-#define CONFIG_SYS_I2C_SPEED           100000
-
-/* NAND flash command */
-#define CONFIG_CMD_NAND
-#define CONFIG_CMD_NAND_TRIMFFS
-
-/* NAND stuff */
-#define CONFIG_NAND_MXS
-#define CONFIG_SYS_MAX_NAND_DEVICE     1
-#define CONFIG_SYS_NAND_BASE           0x40000000
-#define CONFIG_SYS_NAND_5_ADDR_CYCLE
-#define CONFIG_SYS_NAND_ONFI_DETECTION
-
-/* DMA stuff, needed for GPMI/MXS NAND support */
-#define CONFIG_APBH_DMA
-#define CONFIG_APBH_DMA_BURST
-#define CONFIG_APBH_DMA_BURST8
-
-/* PMIC */
-#define CONFIG_POWER
-#define CONFIG_POWER_I2C
-#define CONFIG_POWER_PFUZE100
-#define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08
-
-#endif                         /* __MX6QSABREAUTO_CONFIG_H */
index 9b0fe5a3c27c8e5484a93a017bd5444dc0b21983..b3638d5caef2a4335265375d3f39ff9344386f28 100644 (file)
@@ -77,7 +77,7 @@
        "initrd_high=0xffffffff\0" \
        "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
        "mmcpart=1\0" \
-       "mmcroot=" CONFIG_MMCROOT " rootwait rw\0" \
+       "finduuid=part uuid mmc ${mmcdev}:2 uuid\0" \
        "update_sd_firmware=" \
                "if test ${ip_dyn} = yes; then " \
                        "setenv get_cmd dhcp; " \
@@ -93,7 +93,7 @@
                "fi\0" \
        EMMC_ENV          \
        "mmcargs=setenv bootargs console=${console},${baudrate} " \
-               "root=${mmcroot}\0" \
+               "root=PARTUUID=${uuid} rootwait rw\0" \
        "loadbootscript=" \
                "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
        "bootscript=echo Running bootscript from mmc ...; " \
        "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
        "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
        "mmcboot=echo Booting from mmc ...; " \
+               "run finduuid; " \
                "run mmcargs; " \
                "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
                        "if run loadfdt; then " \
 /* Environment organization */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
-#define CONFIG_ENV_IS_IN_MMC
-
 #if defined(CONFIG_ENV_IS_IN_MMC)
 #define CONFIG_ENV_OFFSET              (768 * 1024)
 #endif
diff --git a/include/configs/mx6sabreauto.h b/include/configs/mx6sabreauto.h
new file mode 100644 (file)
index 0000000..900e2a9
--- /dev/null
@@ -0,0 +1,94 @@
+/*
+ * Copyright (C) 2012 Freescale Semiconductor, Inc.
+ *
+ * Configuration settings for the Freescale i.MX6Q SabreAuto board.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef __MX6SABREAUTO_CONFIG_H
+#define __MX6SABREAUTO_CONFIG_H
+
+#ifdef CONFIG_SPL
+#include "imx6_spl.h"
+#endif
+
+#define CONFIG_MACH_TYPE       3529
+#define CONFIG_MXC_UART_BASE   UART4_BASE
+#define CONSOLE_DEV            "ttymxc3"
+
+/* USB Configs */
+#define CONFIG_USB_HOST_ETHER
+#define CONFIG_USB_ETHER_ASIX
+#define CONFIG_USB_MAX_CONTROLLER_COUNT 2
+#define CONFIG_EHCI_HCD_INIT_AFTER_RESET       /* For OTG port */
+#define CONFIG_MXC_USB_PORTSC  (PORT_PTS_UTMI | PORT_PTS_PTW)
+#define CONFIG_MXC_USB_FLAGS   0
+
+#define CONFIG_PCA953X
+#define CONFIG_SYS_I2C_PCA953X_WIDTH   { {0x30, 8}, {0x32, 8}, {0x34, 8} }
+
+#include "mx6sabre_common.h"
+
+/* Falcon Mode */
+#ifdef CONFIG_SPL_OS_BOOT
+#define CONFIG_SPL_FS_LOAD_ARGS_NAME   "args"
+#define CONFIG_SPL_FS_LOAD_KERNEL_NAME "uImage"
+#define CONFIG_CMD_SPL
+#define CONFIG_SYS_SPL_ARGS_ADDR       0x18000000
+#define CONFIG_CMD_SPL_WRITE_SIZE      (128 * SZ_1K)
+
+/* Falcon Mode - MMC support: args@1MB kernel@2MB */
+#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTOR  0x800   /* 1MB */
+#define CONFIG_SYS_MMCSD_RAW_MODE_ARGS_SECTORS (CONFIG_CMD_SPL_WRITE_SIZE / 512)
+#define CONFIG_SYS_MMCSD_RAW_MODE_KERNEL_SECTOR        0x1000  /* 2MB */
+#endif
+
+#ifdef CONFIG_MTD_NOR_FLASH
+#define CONFIG_SYS_FLASH_BASE           WEIM_ARB_BASE_ADDR
+#define CONFIG_SYS_FLASH_SECT_SIZE      (128 * 1024)
+#define CONFIG_SYS_MAX_FLASH_BANKS 1    /* max number of memory banks */
+#define CONFIG_SYS_MAX_FLASH_SECT 256   /* max number of sectors on one chip */
+#define CONFIG_SYS_FLASH_CFI            /* Flash memory is CFI compliant */
+#define CONFIG_FLASH_CFI_DRIVER         /* Use drivers/cfi_flash.c */
+#define CONFIG_SYS_FLASH_USE_BUFFER_WRITE /* Use buffered writes*/
+#define CONFIG_SYS_FLASH_EMPTY_INFO
+#define CONFIG_SYS_FLASH_CFI_WIDTH     FLASH_CFI_16BIT
+#endif
+
+#define CONFIG_SYS_FSL_USDHC_NUM       2
+#if defined(CONFIG_ENV_IS_IN_MMC)
+#define CONFIG_SYS_MMC_ENV_DEV         0
+#endif
+
+/* I2C Configs */
+#define CONFIG_SYS_I2C
+#define CONFIG_SYS_I2C_MXC
+#define CONFIG_SYS_I2C_MXC_I2C1                /* enable I2C bus 1 */
+#define CONFIG_SYS_I2C_MXC_I2C2                /* enable I2C bus 2 */
+#define CONFIG_SYS_I2C_MXC_I2C3                /* enable I2C bus 3 */
+#define CONFIG_SYS_I2C_SPEED           100000
+
+/* NAND flash command */
+#define CONFIG_CMD_NAND
+#define CONFIG_CMD_NAND_TRIMFFS
+
+/* NAND stuff */
+#define CONFIG_NAND_MXS
+#define CONFIG_SYS_MAX_NAND_DEVICE     1
+#define CONFIG_SYS_NAND_BASE           0x40000000
+#define CONFIG_SYS_NAND_5_ADDR_CYCLE
+#define CONFIG_SYS_NAND_ONFI_DETECTION
+
+/* DMA stuff, needed for GPMI/MXS NAND support */
+#define CONFIG_APBH_DMA
+#define CONFIG_APBH_DMA_BURST
+#define CONFIG_APBH_DMA_BURST8
+
+/* PMIC */
+#define CONFIG_POWER
+#define CONFIG_POWER_I2C
+#define CONFIG_POWER_PFUZE100
+#define CONFIG_POWER_PFUZE100_I2C_ADDR 0x08
+
+#endif                         /* __MX6SABREAUTO_CONFIG_H */
index a8c0e035829a358cef11735cbfb3e4580ab41790..27e767241fbb91cdaf9697f81dcbc6fb72ddd1a5 100644 (file)
@@ -6,8 +6,8 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#ifndef __MX6QSABRESD_CONFIG_H
-#define __MX6QSABRESD_CONFIG_H
+#ifndef __MX6SABRESD_CONFIG_H
+#define __MX6SABRESD_CONFIG_H
 
 #ifdef CONFIG_SPL
 #include "imx6_spl.h"
@@ -16,7 +16,6 @@
 #define CONFIG_MACH_TYPE       3980
 #define CONFIG_MXC_UART_BASE   UART1_BASE
 #define CONSOLE_DEV            "ttymxc0"
-#define CONFIG_MMCROOT                 "/dev/mmcblk1p2"
 
 #define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
 
@@ -71,4 +70,4 @@
 #define CONFIG_USB_MAX_CONTROLLER_COUNT        1 /* Enabled USB controller number */
 #endif
 
-#endif                         /* __MX6QSABRESD_CONFIG_H */
+#endif                         /* __MX6SABRESD_CONFIG_H */
index 6ab76bb8fa1062d9f7c0ba8a55fc06699e77416b..98797b07c1b96ee2d37061eb0aaf821e79a6265a 100644 (file)
 #define CONFIG_ENV_SIZE                        SZ_8K
 
 #if defined CONFIG_SPI_BOOT
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET               (768 * 1024)
 #define CONFIG_ENV_SECT_SIZE            (64 * 1024)
 #define CONFIG_ENV_SPI_BUS              CONFIG_SF_DEFAULT_BUS
 #define CONFIG_ENV_SPI_MAX_HZ           CONFIG_SF_DEFAULT_SPEED
 #else
 #define CONFIG_ENV_OFFSET              (8 * SZ_64K)
-#define CONFIG_ENV_IS_IN_MMC
 #endif
 
 #ifdef CONFIG_CMD_SF
index 62159a16b72f35ff4c89729ee06a4b0c4788df96..67807f6280372ab44bc892ce3fc9e0faedc456bc 100644 (file)
 #define CONFIG_MMCROOT                 "/dev/mmcblk0p2"  /* USDHC1 */
 
 #define CONFIG_ENV_OFFSET              (12 * SZ_64K)
-#define CONFIG_ENV_IS_IN_MMC
 
 /* MMC Configs */
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC1_BASE_ADDR
index 3e73dad9a3ff5a3b6418616c20509d86dae53f29..3468b491a7842e2a96bd63df6526b5efe58c75a4 100644 (file)
 
 #define CONFIG_ENV_OFFSET              (8 * SZ_64K)
 #define CONFIG_ENV_SIZE                        SZ_8K
-#define CONFIG_ENV_IS_IN_MMC
 
 #define CONFIG_SYS_FSL_USDHC_NUM       2
 #if defined(CONFIG_ENV_IS_IN_MMC)
index b39ab729d8a439e934ef0d91b7264845fcdcd3e7..319fed4ebcbcaa8f87cce85d0914a4448d32df86 100644 (file)
 
 #define CONFIG_ENV_OFFSET              (8 * SZ_64K)
 #define CONFIG_ENV_SIZE                        SZ_8K
-#define CONFIG_ENV_IS_IN_MMC
 
 #define CONFIG_SYS_FSL_USDHC_NUM       3
 #if defined(CONFIG_ENV_IS_IN_MMC)
index 2c40decf499b9dea9dd800aa3b099f82ebac8106..c9b7e7b473d363d41fb2cf305ff7260d4031a747 100644 (file)
@@ -11,7 +11,7 @@
 #include <asm/arch/imx-regs.h>
 #include <linux/sizes.h>
 #include "mx6_common.h"
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #define is_mx6ul_9x9_evk()     CONFIG_IS_ENABLED(TARGET_MX6UL_9X9_EVK)
 
 
 /* environment organization */
 #define CONFIG_ENV_SIZE                        SZ_8K
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (8 * SZ_64K)
 #define CONFIG_SYS_MMC_ENV_DEV         1   /* USDHC2 */
 #define CONFIG_SYS_MMC_ENV_PART                0       /* user area */
index 19b0630d9d0570e255057b641b050c2a3d43eb91..8787df4907115085636e5efdac54e4a1ba444181 100644 (file)
@@ -12,7 +12,7 @@
 #include <asm/arch/imx-regs.h>
 #include <linux/sizes.h>
 #include "mx6_common.h"
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #ifdef CONFIG_SECURE_BOOT
 #ifndef CONFIG_CSF_SIZE
 #define CONFIG_SYS_MMC_ENV_PART                0       /* user area */
 #define CONFIG_MMCROOT                 "/dev/mmcblk1p2"  /* USDHC2 */
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_SIZE                        SZ_8K
 #define CONFIG_ENV_OFFSET              (12 * SZ_64K)
 
index fe460109d12a6d5e12a4cf16d5f837fa58551f7f..6df6498fd5e786806a9856855f1ddca11281dbb2 100644 (file)
@@ -11,7 +11,7 @@
 
 #include <linux/sizes.h>
 #include <asm/arch/imx-regs.h>
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 #ifndef CONFIG_MX7
 #define CONFIG_MX7
index fe9fd661e8ff977f0e7991aad2547bb939c876e5..43453323f75117f924e364968970c6906cc5d588 100644 (file)
 
 /* environment organization */
 #define CONFIG_ENV_SIZE                        SZ_8K
-#define CONFIG_ENV_IS_IN_MMC
 
 /*
  * If want to use nand, define CONFIG_NAND_MXS and rework board
index 288a8894d17e938750645b7bc0819677294f596a..532f47ea4f3ab8988fe48e59be2e46d8760bda86 100644 (file)
@@ -42,7 +42,6 @@
 #define CONFIG_SYS_MMC_IMG_LOAD_PART    1
 
 #define CONFIG_ENV_OFFSET              (12 * SZ_64K)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_SIZE                        SZ_8K
 
 /* Using ULP WDOG for reset */
index dfa81223c41488057178ee9832e734e011518b9f..52db4215a3dfc463c5beb3c11ecaebc465aff1da 100644 (file)
  *  Environment variables configurations
  */
 #ifdef CONFIG_CMD_NAND
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SECT_SIZE 0x10000
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 #define CONFIG_ENV_SIZE        0x10000
  */
 #define CONFIG_JFFS2_NAND
 #define CONFIG_JFFS2_LZO
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
 #define CONFIG_MTD_DEVICE               /* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_LZO
 
 /*
  * SATA
index c97d4e57ed264ba8b1d6a209993f7c7f1333c08d..457a50d47214cf4c7bf447fd37930af25ea4a37c 100644 (file)
@@ -7,7 +7,6 @@
 #include <configs/bmips_common.h>
 #include <configs/bmips_bcm3380.h>
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
 #define CONFIG_AUTO_COMPLETE
index 576b7b07db63945bd11f97e92ce3423915998077..a1a0cdaf2e6244769bc60abc5d5307c21e2c19f9 100644 (file)
 /* Environment organization */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
-#if defined(CONFIG_SABRELITE)
-#define CONFIG_ENV_IS_IN_MMC
-#else
-#define CONFIG_ENV_IS_IN_SPI_FLASH
-#endif
-
 #if defined(CONFIG_ENV_IS_IN_MMC)
 #define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
 #define CONFIG_SYS_MMC_ENV_DEV         0
index 5e2d5991e76d9601ddd9f1fb7086a3c0e0b938ef..982651462d4ba945504b8bc084913728435953a6 100644 (file)
 #ifdef ONENAND_SUPPORT
 
 #define CONFIG_CMD_ONENAND             /* ONENAND support */
-#define CONFIG_CMD_MTDPARTS            /* mtd parts support */
-
-#ifdef UBIFS_SUPPORT
-#define CONFIG_CMD_UBIFS               /* UBIFS Support */
-#endif
 
 #endif
 
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 
-#ifdef UBIFS_SUPPORT
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#endif
-
 #define MTDIDS_DEFAULT                 "onenand0=onenand"
 #define MTDPARTS_DEFAULT               "mtdparts=onenand:" \
                __stringify(PART1_SIZE) PART1_SUFF "(" PART1_NAME ")ro," \
@@ -381,8 +371,6 @@ int rx51_kp_getc(struct stdio_dev *sdev);
  * FLASH and environment organization
  */
 
-#define CONFIG_ENV_IS_NOWHERE
-
 #define CONFIG_SYS_SDRAM_BASE          PHYS_SDRAM_1
 #define CONFIG_SYS_INIT_RAM_ADDR       0x4020f800
 #define CONFIG_SYS_INIT_RAM_SIZE       0x800
index 041159806b89120a3ac31c96ade5eb5a4734d97f..2bba741ac376769fb45c19ce24094fcbcaa891e2 100644 (file)
  * http://homepage.ntlworld.com./jonathan.deboynepollard/FGA/disc-partition-alignment.html
  */
 #ifdef CONFIG_CMD_MMC
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_OFFSET              (512 * 1024)
 #define CONFIG_ENV_SIZE_REDUND         CONFIG_ENV_SIZE
 #define CONFIG_ENV_OFFSET_REDUND       \
                (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE)
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 /* Booting Linux */
index bc67270af7bb932e8e7ad91f722b6d000b672c3a..2342f7452f583fa230b8a28ef8589923fb61f5e8 100644 (file)
 
 /* environment variables configuration */
 #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_OFFSET      0xe0000
index 5bbf6108463e14d298d49637925644fc931c41d9..44906630205e4e524e47e2cf2bf667be49577fe1 100644 (file)
@@ -42,7 +42,6 @@
 /*
  * Environment settings
  */
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        SZ_512
 #define CONFIG_ENV_OFFSET              0
 
index b5357ea15c7d10a47201288b79b05865db73e460..ca409949adcba8b3f9f86aa064962a00852158f3 100644 (file)
@@ -25,7 +25,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
index 609a3d1c4535855d65da2fc06a6711269013f7da..563854d9bbbfba0f80c5bc7d841bff19f7ce64c5 100644 (file)
@@ -52,7 +52,6 @@
 
 #define CONFIG_SYS_MONITOR_BASE        0x00000000
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         CONFIG_MMC_DEFAULT_DEV
 #define CONFIG_ENV_SIZE                        4096
 #define CONFIG_ENV_OFFSET              (SZ_1K * 1280) /* 1.25 MiB offset */
 /* USB */
 #define CONFIG_USB_EHCI_EXYNOS
 
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_SMSC95XX
 
index ba29f3e7d1fe808435cbc05cec8e5a04c0aecba3..697f8d25826b7f6bbd9eedf77ad74d6fe26c7c62 100644 (file)
@@ -11,8 +11,6 @@
 #include "exynos5420-common.h"
 #include <configs/exynos5-common.h>
 
-#undef CONFIG_ENV_IS_IN_SPI_FLASH
-
 #define CONFIG_BOARD_COMMON
 
 #define CONFIG_SYS_SDRAM_BASE          0x40000000
@@ -29,8 +27,6 @@
 #define CONFIG_SYS_MEM_TOP_HIDE                (22UL << 20UL)
 #define CONFIG_TZSW_RESERVED_DRAM_SIZE CONFIG_SYS_MEM_TOP_HIDE
 
-#define CONFIG_ENV_IS_IN_MMC
-
 #undef CONFIG_ENV_SIZE
 #undef CONFIG_ENV_OFFSET
 #define CONFIG_ENV_SIZE                        (SZ_1K * 16)
index 0d48d4ecc1c9c56e655189ef1386af26557bcbcd..2fc6693579a290b3ce9191fe9f69fc39ac439158 100644 (file)
@@ -58,7 +58,6 @@
 
 #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO       147
 
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_ASIX
 #define CONFIG_USB_ETHER_MCS7830
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_ONENAND_BASE                ONENAND_MAP
 
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_SIZE                        (128 << 10)     /* 128 KiB */
 #define ONENAND_ENV_OFFSET             0x260000 /* environment starts here */
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
index b5d2b007e8242a49572c719f4d00c68ab607edbf..7e1f4751fb951dfc3fca61b0aa3d7984d044398f 100644 (file)
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_ONENAND_BASE                ONENAND_MAP
 
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_SIZE                        (128 << 10)     /* 128 KiB */
 #define ONENAND_ENV_OFFSET             0x260000 /* environment starts here */
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
index 53bfc1326437560555b922e839cf88d4152a9cce..15eb08bba8e431b88aba20484927129777ad2798 100644 (file)
 
 #if !defined(CONFIG_ENV_IS_NOWHERE)
 #if defined(CONFIG_CMD_NAND)
-#define CONFIG_ENV_IS_IN_NAND
 #elif defined(CONFIG_CMD_ONENAND)
-#define CONFIG_ENV_IS_IN_ONENAND
 #define CONFIG_ENV_OFFSET              ONENAND_ENV_OFFSET
 #endif
 #endif /* CONFIG_ENV_IS_NOWHERE */
index 59da726bd6383a0c4a4d292bac46b68b28f03669..39f1e545444c9b0c122e121c46441293a71be00b 100644 (file)
@@ -52,7 +52,6 @@
 #define CONFIG_USBD_MANUFACTURER       "Texas Instruments"
 #define CONFIG_USBD_PRODUCT_NAME       "IGEP"
 
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_CMD_ONENAND
 
 #ifndef CONFIG_SPL_BUILD
@@ -89,7 +88,6 @@
 #define CONFIG_SMC911X_BASE            0x2C000000
 #endif /* (CONFIG_CMD_NET) */
 
-#define CONFIG_RBTREE
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_SYS_MTDPARTS_RUNTIME
 
 #define CONFIG_SPL_UBI_INFO_ADDR       0x88080000
 
 /* environment organization */
-#define CONFIG_ENV_IS_NOWHERE          1
 #define CONFIG_ENV_UBI_PART            "UBI"
 #define CONFIG_ENV_UBI_VOLUME          "config"
 #define CONFIG_ENV_UBI_VOLUME_REDUND   "config_r"
index f8978037f2ba9ba8cf7b74891958c4227bcea3a2..6e8afbf81f8e0b86c4356967923176e6e9f7d6e8 100644 (file)
@@ -54,7 +54,6 @@
 
 /* commands to include */
 #define CONFIG_CMD_NAND
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_CMD_NAND_LOCK_UNLOCK    /* nand (un)lock commands       */
 
 /* I2C */
 #ifdef CONFIG_NAND
 #define CONFIG_NAND_OMAP_GPMC
 
-#define CONFIG_CMD_UBIFS               /* Read-only UBI volume operations */
-#define CONFIG_RBTREE                  /* required by CONFIG_CMD_UBI */
-#define CONFIG_LZO                     /* required by CONFIG_CMD_UBIFS */
-
 #define CONFIG_SYS_NAND_ADDR           NAND_BASE /* physical address */
                                                  /* to access nand */
 #define CONFIG_SYS_MAX_NAND_DEVICE     1         /* Max number of */
 /* Monitor at start of flash */
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_SIZE                        (128 << 10)     /* 128 KiB */
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 
index 111aec58d3915be3bcfb88eb7b8e9342a563e8f7..133069abbcd0c0afcac18b7bcb4ae8e06b36ce31 100644 (file)
 
 /* USB EHCI */
 #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO       183
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
 
 /* commands to include */
 
 #ifdef CONFIG_NAND
-#define CONFIG_CMD_UBIFS       /* Read-only UBI volume operations */
-
-#define CONFIG_RBTREE          /* required by CONFIG_CMD_UBI */
-#define CONFIG_LZO             /* required by CONFIG_CMD_UBIFS */
-
 #define CONFIG_MTD_PARTITIONS  /* required for UBI partition support */
 
 /* NAND block size is 128 KiB.  Synchronize these values with
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_ONENAND_BASE                ONENAND_MAP
 
-#define CONFIG_ENV_IS_IN_NAND
 #define ONENAND_ENV_OFFSET             0x240000 /* environment starts here */
 #define SMNAND_ENV_OFFSET              0x240000 /* environment starts here */
 
index efee5b0c3f1ae61c7afa4c30e8f469ccf889fa34..b7ab6283dd279d0be243c9d8985aeca44761bd75 100644 (file)
 #define CONFIG_SYS_NAND_OOBSIZE                64
 
 #ifdef CONFIG_NAND
-#define CONFIG_CMD_UBIFS       /* Read-only UBI volume operations */
-
-#define CONFIG_RBTREE          /* required by CONFIG_CMD_UBI */
-#define CONFIG_LZO             /* required by CONFIG_CMD_UBIFS */
-
 #define CONFIG_MTD_PARTITIONS  /* required for UBI partition support */
 
 #define MTDIDS_DEFAULT                 "nand0=omap2-nand.0"
 /* Monitor at start of flash */
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 
-#define CONFIG_ENV_IS_IN_NAND          1
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 
 #define CONFIG_SYS_ENV_SECT_SIZE       (128 << 10)     /* 128 KiB */
index 6c869c4c07b799e43a012306f6f4dee4fbeee360..23603c61e2f29508840301235b369718cb45b012 100644 (file)
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_ONENAND_BASE                ONENAND_MAP
 
-#define CONFIG_ENV_IS_IN_NAND          1
 #define ONENAND_ENV_OFFSET             0x260000 /* environment starts here */
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 
index e1263b68bcf25bfa6d17ab73e202e2ef7f7dbf6a..9951980836d4e8e4fbffe0646a7378643ae71fa5 100644 (file)
@@ -17,8 +17,6 @@
  */
 
 /* USB UHH support options */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
-
 #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO 1
 #define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO 62
 
@@ -35,7 +33,6 @@
 /* ENV related config options */
 
 #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE               "mmc"
 #define FAT_ENV_DEVICE_AND_PART         "0:1"
 #define FAT_ENV_FILE                    "uboot.env"
index b82ad13489cf8cacf246edea2fd21d36dc3ab3ed..c89bd13f55fddd048756722d7d4aa185166bf597 100644 (file)
@@ -22,7 +22,6 @@
 #include <configs/ti_omap4_common.h>
 
 /* ENV related config options */
-#define CONFIG_ENV_IS_IN_MMC           1
 #define CONFIG_SYS_MMC_ENV_DEV         1       /* SLOT2: eMMC(1) */
 #define CONFIG_ENV_OFFSET              0xE0000
 
index 15d06bbe458e6fe49207b55cd992765cd015940f..9b650090be8b17cdf9d75783f4497b7b55de974b 100644 (file)
@@ -34,7 +34,6 @@
 
 #define CONFIG_MISC_INIT_R
 /* MMC ENV related defines */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         1       /* SLOT2: eMMC(1) */
 #define CONFIG_ENV_SIZE                        (128 << 10)
 #define CONFIG_ENV_OFFSET              0x260000
@@ -52,7 +51,6 @@
 #define CONFIG_SYS_I2C_TCA642X_ADDR 0x22
 
 /* USB UHH support options */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
 #define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 
 #define CONFIG_OMAP_EHCI_PHY2_RESET_GPIO 80
index 5f118950aa80e8819cb5b6874eda738a89dc5912..2c1784021897c884f96c07bb7ff507ada73a7199 100644 (file)
  * Flash & Environment
  */
 #ifdef CONFIG_USE_NAND
-#undef CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_NAND_DAVINCI
-#define CONFIG_ENV_IS_IN_NAND          /* U-Boot env in NAND Flash  */
 #define CONFIG_ENV_OFFSET              0x0 /* Block 0--not used by bootcode */
 #define CONFIG_ENV_SIZE                        (128 << 9)
 #define        CONFIG_SYS_NAND_USE_FLASH_BBT
 #endif
 
 #ifdef CONFIG_SYS_USE_NOR
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_CFI
 #define CONFIG_SYS_FLASH_PROTECTION
 #endif
 
 #ifdef CONFIG_USE_SPIFLASH
-#undef CONFIG_ENV_IS_IN_FLASH
-#undef CONFIG_ENV_IS_IN_NAND
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        (64 << 10)
 #define CONFIG_ENV_OFFSET              (256 << 10)
 #define CONFIG_ENV_SECT_SIZE           (64 << 10)
 #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_UBIFS
 #endif
 
 #if !defined(CONFIG_USE_NAND) && \
        !defined(CONFIG_SYS_USE_NOR) && \
        !defined(CONFIG_USE_SPIFLASH)
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                (16 << 10)
 #endif
 
 /* SD/MMC */
-#ifdef CONFIG_MMC
-#undef CONFIG_ENV_IS_IN_MMC
-#endif
 
 #ifdef CONFIG_ENV_IS_IN_MMC
 #undef CONFIG_ENV_SIZE
 #undef CONFIG_ENV_OFFSET
 #define CONFIG_ENV_SIZE                (16 << 10)      /* 16 KiB */
 #define CONFIG_ENV_OFFSET      (51 << 9)       /* Sector 51 */
-#undef CONFIG_ENV_IS_IN_FLASH
-#undef CONFIG_ENV_IS_IN_NAND
-#undef CONFIG_ENV_IS_IN_SPI_FLASH
 #endif
 
 #ifndef CONFIG_DIRECT_NOR_BOOT
index 89e963d5245273184ca71e282700860901ce94b3..a30efdeb859a3ebfdb2a4a88b9148027c67c62bc 100644 (file)
  *  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
index e7bc044acf5464a174de473f9e18a5d4594599d0..9b96cd0be8c3071f7c2c025393d39e511b251d16 100644 (file)
@@ -74,7 +74,6 @@
 #endif
 
 /* Environment is stored in the eMMC boot partition */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV          0
 #define CONFIG_SYS_MMC_ENV_PART         1
 #define CONFIG_ENV_SIZE                 (10 * 1024)
index 6980e9e548d3310c1d4a03185999144e59ef2249..c36365353776b033b308da050e0021a8215963ee 100644 (file)
@@ -89,7 +89,6 @@
 /* MIU (Memory Interleaving Unit) */
 #define CONFIG_MIU_2BIT_21_7_INTERLEAVED
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        (16 << 10)      /* 16 KB */
 #define RESERVE_BLOCK_SIZE             (512)
index 7aeae7b1fdc411fd0b3b5a87033aee735ff3e891..373c2d5ca2715b3ae5cda124246017fe353dbc86 100644 (file)
@@ -95,6 +95,9 @@
 
 #define CONFIG_PREBOOT                 ""
 
+/* Thermal support */
+#define CONFIG_IMX_THERMAL
+
 /* Print Buffer Size */
 #define CONFIG_SYS_PBSIZE (CONFIG_SYS_CBSIZE + sizeof(CONFIG_SYS_PROMPT) + 16)
 
        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
 
 /* Environment organization */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                 (64 * 1024)    /* 64 kb */
 #define CONFIG_ENV_OFFSET               (1024 * 1024)
 /* M25P16 has an erase size of 64 KiB */
index a72a57c904664d342d3cc3057d0d8790841670e1..6dbd9900f429792b8b733e9d4b39c0b5f984e074 100644 (file)
@@ -72,7 +72,6 @@
  */
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT "nor0=ec000000.nor"
 #define MTDPARTS_DEFAULT "mtdparts=ec000000.nor:128k(dtb),6016k(kernel)," \
@@ -98,7 +97,6 @@
  */
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #ifdef CONFIG_PHYS_64BIT
 #define MTDIDS_DEFAULT "nor0=fef000000.nor"
  */
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #ifdef CONFIG_PHYS_64BIT
 #define MTDIDS_DEFAULT "nor0=fef000000.nor"
  * Environment
  */
 #ifdef CONFIG_SPIFLASH
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_BUS     0
 #define CONFIG_ENV_SPI_CS      0
 #define CONFIG_ENV_SPI_MAX_HZ  10000000
 #define CONFIG_ENV_OFFSET      0x100000        /* 1MB */
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #elif defined(CONFIG_SDCARD)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_FSL_FIXED_MMC_LOCATION
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #else
 #define CONFIG_ENV_SIZE                CONFIG_SYS_NAND_BLOCK_SIZE
 #endif
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET      (1024 * 1024)
 #define CONFIG_ENV_RANGE       (3 * CONFIG_ENV_SIZE)
 #elif defined(CONFIG_SYS_RAMBOOT)
-#define CONFIG_ENV_IS_NOWHERE  /* Store ENV in memory only */
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #define CONFIG_ENV_SIZE                0x2000
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index dffb15aea918173ee4c8a863412f9bea3f8cdc72..d5f576946329cd87d906d61b7c31eb10f9a41ae7 100644 (file)
@@ -350,7 +350,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
  */
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_FLASH_CFI_MTD
 #define MTDIDS_DEFAULT "nor0=ec000000.nor"
 #define MTDPARTS_DEFAULT "mtdparts=ec000000.nor:256k(vsc7385-firmware)," \
@@ -362,16 +361,13 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
  */
 #ifdef CONFIG_SYS_RAMBOOT
 #ifdef CONFIG_RAMBOOT_SDCARD
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #else
-#define CONFIG_ENV_IS_NOWHERE  /* Store ENV in memory only */
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - 0x1000)
 #define CONFIG_ENV_SIZE                0x2000
 #endif
 #else
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x2000
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K (one sector) */
index b106439071c5947a6fc0c552646d44ce04c4c731..3f5c669c399a4b4547fa5ade49899139013a2045 100644 (file)
@@ -22,7 +22,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
index 22fc122cc30dcea4898e87fe8fa28a6aa3389db3..3fb62ded1ef9143effb14d0e1aae2a82105a83c6 100644 (file)
@@ -22,7 +22,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
index 974fd3f59f8e695468c7ecd10aab232731dd5be5..e8ed8b0fd341a5f58d17d7e012df786dc5515c3d 100644 (file)
@@ -23,7 +23,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
index 791a48a3be11284c8447e9089bd6bd176a8f33fd..55230291c2f462407d5ca1b7e9857e638891ff5f 100644 (file)
@@ -18,7 +18,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
index 87a8557ea98cbdfa4ea8f0ab8e0915543c787f6a..88754f0403a234125d00ffa76c156c5de5794140 100644 (file)
@@ -23,7 +23,6 @@
 #define CONFIG_MACH_TYPE               MACH_TYPE_PAZ00
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #define CONFIG_SYS_MMC_ENV_PART 2
index efbcbd2e05db09407a2986c085c9bb1a9fe68a79..85cac5a7b45502f122a4749ebc0693bf0a6258fe 100644 (file)
@@ -86,8 +86,6 @@
 #define CONFIG_SYS_FLASH_ERASE_TOUT    (2 * CONFIG_SYS_HZ) /* Timeout for Flash Erase */
 #define CONFIG_SYS_FLASH_WRITE_TOUT    (2 * CONFIG_SYS_HZ) /* Timeout for Flash Write */
 
-#define        CONFIG_ENV_IS_NOWHERE   1
-
 /* Address and size of Primary Environment Sector      */
 #define CONFIG_ENV_ADDR                0xB0030000
 #define CONFIG_ENV_SIZE                0x10000
index fc75ca85c580d68227fc36f690a74e3e4f1f45c3..ce80e7ecbc87f1de8f91c1473b1707ea7ef0e5eb 100644 (file)
 4800, 9600, 14400, 19200, 28800, 38400, 56000, 57600, 115200 }
 
 /* CPU */
-#define CONFIG_ENV_IS_NOWHERE
 
 #define CONFIG_SPL_LDSCRIPT            "arch/arm/mach-omap2/u-boot-spl.lds"
 
index 8c0e26486ffbef891e7bc1a1028b1279e0807aa1..9e1c89bd33ec54d77eaf40cde36e0e9f83320d40 100644 (file)
 
 #define CONFIG_JFFS2_NAND
 
-/* UBI */
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-
 /* Dynamic MTD partition support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
 
index 39018ac62f247ef41ae07dd135db93ab25cb3a39..70e7f78c8db17ee98de91ae77008adf7616e70c5 100644 (file)
 #define CONFIG_APBH_DMA_BURST8
 
 /* Filesystem support */
-#define CONFIG_LZO
-#define CONFIG_CMD_UBIFS
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
 #define MTDIDS_DEFAULT    "nand0=nand"
 #define MTDPARTS_DEFAULT  "mtdparts=nand:16m(uboot),1m(env),-(rootfs)"
 
-/* Various command support */
-#define CONFIG_RBTREE
-
 /* Physical Memory Map */
 #define CONFIG_NR_DRAM_BANKS           1
 #define PHYS_SDRAM                     MMDC0_ARB_BASE_ADDR
 #define CONFIG_SYS_FSL_USDHC_NUM       1
 
 /* Environment organization */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                (16 * 1024)
 #define CONFIG_ENV_OFFSET              (1024 * SZ_1K)
 #define CONFIG_ENV_SECT_SIZE           (64 * SZ_1K)
index 9c8720bee9ac4b05e7b9d75ec4514afa9e7745f7..c77c82aacc6934102295429f208224346995528b 100644 (file)
 /* #define CONFIG_SYS_NAND_U_BOOT_OFFS 0x80000 */
 #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x200000
 
-#define CONFIG_CMD_MTDPARTS
-
 #define MTDIDS_DEFAULT                 "nand0=omap2-nand.0"
 /* Size must be a multiple of Nand erase size (524288 b) */
 #define MTDPARTS_DEFAULT               "mtdparts=omap2-nand.0:512k(SPL)," \
                                        "512k(SPL.backup3),1536k(u-boot)," \
                                        "512k(u-boot-spl-os)," \
                                        "512k(u-boot-env),5m(kernel),-(rootfs)"
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x260000 /* environment starts here */
 #define CONFIG_SYS_ENV_SECT_SIZE       (128 << 10)     /* 128 KiB */
 /* NAND: SPL falcon mode configs */
index 5abeffbade332ddfc50457bc9ea935f696884867..ff3cd74ac314a8fa4b1c3739b84ad0441d3fc6a4 100644 (file)
@@ -19,7 +19,6 @@
 #define CONFIG_MACH_TYPE               MACH_TYPE_PEPPER
 
 #define CONFIG_ENV_SIZE                        (128 << 10)     /* 128 KiB */
-#define CONFIG_ENV_IS_NOWHERE
 
 #define CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG
 #define CONFIG_EXTRA_ENV_SETTINGS \
index aab43ed5948186bec0a7e66bf73dd3663f7b56c6..7a977a8e5e74e07ab2f486d16858a455454a32b7 100644 (file)
@@ -17,7 +17,6 @@
        func(MMC, mmc, 0) \
        func(MMC, mmc, 1)
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 1
 
 #endif
index c5bfdec8fa878ce9268203a3ca41ca2b627ce2e5..57b265ce144ad4ce3a5a3fd527781bd9074d4802 100644 (file)
@@ -97,7 +97,6 @@
 /* -------------------------------------------------
  * Environment
  */
-#define CONFIG_ENV_IS_NOWHERE  1
 #define CONFIG_ENV_SIZE                0x4000
 
 /* ---------------------------------------------------------------------
index 8d78f49c96843bd75e1478f5ef2887e446ae37db..7b44752e551c7976dc3974203718d48cee136527 100644 (file)
@@ -12,7 +12,7 @@
 #include <asm/arch/imx-regs.h>
 #include <linux/sizes.h>
 #include "mx6_common.h"
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 /* Network support */
 
 
 /* environment organization */
 #define CONFIG_ENV_SIZE                        SZ_8K
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (8 * SZ_64K)
 
 #define CONFIG_SYS_MMC_ENV_DEV         0
index d128eded05416f076235815ff866b26a36e855c3..e623f48fa26bb905ce1785b1a0efde43ea338f16 100644 (file)
 
 /* FLASH and environment organization */
 #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
index c83e559a5ac726fd3d842346250e1586692530ac..a14739f282cba0cc42aadbd1a8ccb385fe9bf766 100644 (file)
@@ -97,9 +97,6 @@
 #define CONFIG_RESET_PHY_R
 #define CONFIG_AT91_WANTS_COMMON_PHY
 
-/* USB */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     2
-
 #define CONFIG_SYS_LOAD_ADDR           0x22000000      /* load address */
 
 #define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
  */
 #define FAT_ENV_DEVICE_AND_PART        "0"
 #define FAT_ENV_FILE           "uboot.env"
-#define CONFIG_ENV_IS_IN_FAT
 #define CONFIG_ENV_SIZE                0x4000
 
 #define CONFIG_BOOTARGS                "console=ttyS0,115200 " \
index 9c2182cbea304951801939b6322985ec85936543..a1cd18ef085e844a9144a874a170a4796d7b0f15 100644 (file)
  * Console configuration
  */
 
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_CMD_NAND
 #define CONFIG_CMD_NAND_TRIMFFS
-#define CONFIG_CMD_UBIFS
 
 /*
  * Hardware configuration
@@ -92,7 +90,6 @@
 #define CONFIG_APBH_DMA_BURST8
 
 /* Environment in NAND */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (16 << 20)
 #define CONFIG_ENV_SECT_SIZE           (128 << 10)
 #define CONFIG_ENV_SIZE                        CONFIG_ENV_SECT_SIZE
 
 /* Environment in MMC */
 #define CONFIG_ENV_SIZE                        (8 << 10)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 
                                                 sizeof(CONFIG_SYS_PROMPT) + 16)
 
 /* MTD/UBI/UBIFS config */
-#define CONFIG_LZO
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_RBTREE
 
 #if (CONFIG_SYS_NAND_MAX_CHIPS == 1)
 #define MTDIDS_DEFAULT         "nand0=gpmi-nand"
index ff396eceb97bf4a1d96d8f9c14b9acb04f218f8e..5d692d159c4cf74c6f5e470747627908b75979cf 100644 (file)
@@ -25,7 +25,6 @@
 #define CONFIG_SYS_MAX_NAND_DEVICE     1
 
 /* Environment in NAND, aligned to start of last sector */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (SZ_512M - SZ_128K) /* 128K sectors */
 
 /* USB host support */
index b22a3b6a2bfe0270f8a5ac7a63f5e34eadb926a2..f100a40f212aa8e6621f6c1a691eaa0403d31f5e 100644 (file)
 #ifdef CONFIG_SYS_USE_DATAFLASH_CS0
 
 /* bootstrap + u-boot + env + linux in dataflash on CS0 */
-#define CONFIG_ENV_IS_IN_DATAFLASH     1
 #define CONFIG_SYS_MONITOR_BASE                \
                (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
 #define CONFIG_ENV_OFFSET      0x4200
 #elif defined(CONFIG_SYS_USE_NANDFLASH) /* CONFIG_SYS_USE_NANDFLASH */
 
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_OFFSET              0x60000
 #define CONFIG_ENV_OFFSET_REDUND       0x80000
 #define CONFIG_ENV_SIZE                        0x20000         /* 1 sector = 128 kB */
 
 #elif defined (CONFIG_SYS_USE_FLASH)
 
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_OFFSET      0x40000
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #define        CONFIG_ENV_SIZE         0x10000
index 41d5722490f4742a60ef05a1ef1795627557be68..da0cd9d62b225c64a480bb45b75cc71f838fb7dc 100644 (file)
 #ifdef CONFIG_SYS_USE_DATAFLASH
 
 /* bootstrap + u-boot + env + linux in dataflash on CS0 */
-#define CONFIG_ENV_IS_IN_DATAFLASH
 #define CFG_MONITOR_BASE       (CFG_DATAFLASH_LOGIC_ADDR_CS0 + 0x8400)
 #define CONFIG_ENV_OFFSET      0x4200
 #define CONFIG_ENV_ADDR                (CFG_DATAFLASH_LOGIC_ADDR_CS0 + CONFIG_ENV_OFFSET)
 #elif defined(CONFIG_SYS_USE_NANDFLASH) /* CFG_USE_NANDFLASH */
 
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x60000
 #define CONFIG_ENV_OFFSET_REDUND       0x80000
 #define CONFIG_ENV_SIZE                0x20000         /* 1 sector = 128 kB */
 
 #elif defined(CONFIG_SYS_USE_FLASH) /* CFG_USE_FLASH */
 
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_OFFSET      0x40000
 #define CONFIG_ENV_SECT_SIZE   0x10000
 #define        CONFIG_ENV_SIZE         0x10000
index 5e58b6b021cb4f8b663173b8a9bfc2700b8bb960..dc4ebeab3187da2e8c7da2cfedde40cedd962881 100644 (file)
 #define CONFIG_SYS_MEMTEST_END         CONFIG_AT91SAM9G45_LCD_BASE
 
 /* bootstrap + u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_OFFSET              0x60000
 #define CONFIG_ENV_OFFSET_REDUND       0x80000
 #define CONFIG_ENV_SIZE                        0x20000         /* 1 sector = 128 kB */
index f94e74f0fc69177590df3d4bc66462c557de23a1..31d7156902ae938bd6d2b4f5d2408927f8c793f6 100644 (file)
  *  Environment variables configurations
  */
 #ifdef CONFIG_CMD_NAND
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_SECT_SIZE           0x20000 /* 128K */
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 #define CONFIG_ENV_SIZE                        0x20000 /* 128k */
 /*
  * File system
  */
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
 #define CONFIG_MTD_DEVICE               /* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_LZO
 
 #endif /* _CONFIG_POGO_E02_H */
index 55e05d6ca56376464c7ea3c7b778a9338d5b2c45..d2ecd0dec178e01c384cafbe3fa5b584261d59a9 100644 (file)
@@ -30,7 +30,6 @@
 #define CONFIG_PL01X_SERIAL
 
 /* USB configuration */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
 #define CONFIG_USB_MAX_CONTROLLER_COUNT                2
 #define CONFIG_SYS_USB_EVENT_POLL
 #define CONFIG_USB_HOST_ETHER
@@ -67,7 +66,6 @@
 
 
 /* Command line configuration */
-#define CONFIG_ENV_IS_IN_MMC           1
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_OFFSET              (0x780 * 512)   /* env_mmc_blknum */
 #define CONFIG_ENV_SIZE                        0x10000 /* env_mmc_nblks bytes */
index 0dc3532f330e9107ef37f31dd2e4ac6da2bc56fa..15a374cca7dfd7b1e78dc7052d20239a9859de3a 100644 (file)
@@ -10,7 +10,6 @@
 #define ROCKCHIP_DEVICE_SETTINGS
 #include <configs/rk3288_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 #endif
index af1dae88eda002fa71c23f9cfaa1ba1f65a9ec61..e481a28ae953995a83bbf94bce72bd6d2befdcda 100644 (file)
@@ -17,7 +17,6 @@
 #undef CONFIG_ENV_OFFSET
 #define CONFIG_ENV_OFFSET (240 * 1024)
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 1
 
 #define SDRAM_BANK_SIZE                        (2UL << 30)
index abdc93c7d25ada50c897ff9783cfe49a9fdde520..89d1ad91e0ec8fb531297ae70a24ba29c77002d6 100644 (file)
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
 
-#define CONFIG_ENV_IS_IN_FLASH
-
 /* Address and size of Primary Environment Sector */
 #define CONFIG_ENV_SIZE                0x8000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + (4 << 20) - CONFIG_ENV_SIZE)
index f1e096fddd0d28f0246c0b967ac86a752496da3e..a78112d5bc78c5cd87d920cc8f516c7ce06334c5 100644 (file)
 #define CONFIG_FLASH_CFI_DRIVER
 #define CONFIG_SYS_FLASH_USE_BUFFER_WRITE
 
-#define CONFIG_ENV_IS_IN_FLASH
-
 /* Address and size of Primary Environment Sector */
 #define CONFIG_ENV_SIZE                0x8000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + (4 << 20) - CONFIG_ENV_SIZE)
index c26810723e5969bbfadac0efb2e1aef2390d82ae..703d158b8b6eb84e599cd87195ef1da7d4f016c0 100644 (file)
@@ -71,8 +71,6 @@ extern unsigned long long get_phys_ccsrbar_addr_early(void);
 
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_TEXT_BASE
 
-#define CONFIG_ENV_IS_NOWHERE
-
 #define CONFIG_HWCONFIG
 
 #define CONFIG_SYS_INIT_RAM_ADDR               0x00100000
index 05eb5ebf91238ad7696d52026717b8b99c231381..64cbc807a68c9270163398f38b2d2be844133adc 100644 (file)
@@ -48,8 +48,6 @@
 #undef CONFIG_INTEL_ICH6_GPIO
 
 /* SPI is not supported */
-#undef CONFIG_ENV_IS_IN_SPI_FLASH
-#define CONFIG_ENV_IS_NOWHERE
 
 #define CONFIG_SPL_FRAMEWORK
 
index 6212dbae213937b94ff52e1a08194e07b2461409..5f74b2a0e08282a938c09b4ed77b1b5f9434aa2d 100644 (file)
 #define CONFIG_SYS_BOOTMAPSZ   (8 * 1024 * 1024)
 
 /* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OVERWRITE   1
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
index 744d567805be800f9c3a033262447c266332b3a6..64fd4b97a0609029dd85845ca68b345416f0e7ac 100644 (file)
@@ -53,7 +53,6 @@
 #define CONFIG_SYS_MAX_FLASH_SECT  256
 #define CONFIG_SYS_FLASH_BANKS_LIST    { CONFIG_SYS_FLASH_BASE }
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   0x40000
 #define CONFIG_ENV_SIZE        (CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_ADDR        (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
index bb79a9ffeaa4a005e3a243ebc5f40e10d9b83d5b..c5f577a3bfbccc7a01aeb5f737b01f425667d16a 100644 (file)
@@ -77,7 +77,6 @@
 /* print 'E' for empty sector on flinfo */
 #define CONFIG_SYS_FLASH_EMPTY_INFO
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   (256 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
index 365950d7298a0bb29a13e7261e8799f78a60269f..16f45f2beafaf56ee923c48b427e4ca83860b4c7 100644 (file)
@@ -52,7 +52,6 @@
 #define CONFIG_SYS_BOOTMAPSZ           (8 * 1024 * 1024)
 
 /* ENV setting */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_ADDR        0xC0000
 
 /* Common ENV setting */
index 18b7dce94e657343f7cbf329c27de7635c16faba..43fece6b8a71bfaa389123918503d3bcaaf825d5 100644 (file)
@@ -10,7 +10,6 @@
 #include "rockchip-common.h"
 
 #define CONFIG_NR_DRAM_BANKS           1
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_SYS_MAXARGS             16
 #define CONFIG_SYS_MALLOC_LEN          (32 << 20)
index 7f9f0c55344bafb3b5f44774947948126c325cf1..906c821aeffb76dcc2fd375b2022aba93d3f42db 100644 (file)
@@ -63,6 +63,4 @@
 #define CONFIG_USB_OHCI_NEW
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     1
 
-/* xhci host */
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
 #endif
index 54ea97b16457eefeabb5704973d5725610b8edff..33178879e24abe88e8a89284fea4fac88ad01f7a 100644 (file)
@@ -16,8 +16,6 @@
 #define CONFIG_SYS_CBSIZE              1024
 #define CONFIG_SKIP_LOWLEVEL_INIT
 #define CONFIG_SPL_FRAMEWORK
-#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
-#define CONFIG_SPL_SERIAL_SUPPORT
 #if defined(CONFIG_SPL_SPI_SUPPORT)
 #define CONFIG_SPL_SPI_LOAD
 #endif
@@ -82,7 +80,4 @@
 #define CONFIG_USB_ETHER_SMSC95XX
 #define CONFIG_USB_ETHER_RTL8152
 
-/* rockchip xhci host driver */
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
-
 #endif
index de5291cd05de5b2b2c5686aaadf1e3516ce24565..e998ec5f03cff94088b22d6468629ef21389fd50 100644 (file)
@@ -10,7 +10,6 @@
 #define ROCKCHIP_DEVICE_SETTINGS
 #include <configs/rk3188_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 #ifdef CONFIG_ROCKCHIP_SPL_BACK_TO_BROM
index b4dcf23b1cf324f2b7e17ca57d266627e3ca59f6..bd39111710efa516f1ff796e8bd962ad88e3b503 100644 (file)
@@ -14,7 +14,6 @@
 
 #include <configs/rk3288_common.h>
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 0
 
 #endif
index 0573571e6ecf12b241253b99d3a56650d3595bed..29a492dc5529ca4c17e3031ac0668fbc281e35d6 100644 (file)
 #endif
 
 #define CONFIG_RANDOM_UUID
+
+#ifdef CONFIG_ARM64
+#define ROOT_UUID "B921B045-1DF0-41C3-AF44-4C6F280D3FAE;\0"
+#else
+#define ROOT_UUID "69DAD710-2CE4-4E3C-B16C-21A1D49ABED3;\0"
+#endif
 #define PARTS_DEFAULT \
        "uuid_disk=${uuid_gpt_disk};" \
        "name=loader1,start=32K,size=4000K,uuid=${uuid_gpt_loader1};" \
@@ -36,7 +42,7 @@
        "name=loader2,size=4MB,uuid=${uuid_gpt_loader2};" \
        "name=atf,size=4M,uuid=${uuid_gpt_atf};" \
        "name=boot,size=112M,bootable,uuid=${uuid_gpt_boot};" \
-       "name=rootfs,size=-,uuid=${uuid_gpt_rootfs};\0" \
+       "name=rootfs,size=-,uuid="ROOT_UUID
 
 #endif
 
index b31e2acce6aaa8f12ecd44f1e08cd1a5a50f0bb1..c545f998380af648403e5cdc25a65d3818f1173d 100644 (file)
@@ -92,7 +92,6 @@
 
 /* Environment */
 #define CONFIG_ENV_SIZE                        SZ_16K
-#define CONFIG_ENV_IS_IN_FAT
 #define FAT_ENV_INTERFACE              "mmc"
 #define FAT_ENV_DEVICE_AND_PART                "0:1"
 #define FAT_ENV_FILE                   "uboot.env"
index 8dc839df96e9b9496853c5c291f03255c1ed499a..8f30aefc41f86fdf0f3d5ef75c7898e478951036 100644 (file)
@@ -63,7 +63,6 @@
 #define CONFIG_SYS_MAX_FLASH_SECT      64
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   (64 * 1024)
 #define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
index cc709097c0331260e706fc80ce18de18c983bad7..14e55c579d47b506c85b5f6f739623018e4e46b0 100644 (file)
@@ -48,7 +48,6 @@
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
 #define CONFIG_SYS_MAX_FLASH_SECT      512
 
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_OFFSET      (128 * 1024)
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
index 12812f9a3454a4ae1d6d86ba7f69bde70c4b22cd..60844ab738d59c13eb2514c7121c6bfc595105b9 100644 (file)
@@ -47,7 +47,6 @@
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
 #define CONFIG_SYS_MAX_FLASH_SECT      512
 
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_OFFSET      (128 * 1024)
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + CONFIG_ENV_OFFSET)
 #define CONFIG_ENV_SECT_SIZE   (64 * 1024)
index 52750cb81bd5d7c265137e35daa68f0db31629cd..2b63abce467f5b8181cd9ae2b47983d68f632c8c 100644 (file)
@@ -9,7 +9,6 @@
 #include <asm/arch/hardware.h>
 #include "rockchip-common.h"
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        0x2000
 #define CONFIG_SYS_MAXARGS             16
 #define CONFIG_SYS_MALLOC_LEN          (32 << 20)
index b25a7ea3446cb552efe6ffbe1eb4a38715f87214..c56125209de553e2ca35c711d519cd2758c135d1 100644 (file)
 
 /* environment organization */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
-#define CONFIG_ENV_IS_IN_MMC
 
 #define CONFIG_ENV_OFFSET              (12 * 64 * 1024)
 #define CONFIG_SYS_MMC_ENV_DEV         0
index c328e43dd64f9cb6c77ac49760de6df4eff31c7d..9c00138508012b0071206a0a2e1b3a1e2d93ad60 100644 (file)
@@ -51,7 +51,6 @@
 /* PWM */
 #define CONFIG_PWM                     1
 
-#define CONFIG_CMD_REGINFO
 #define CONFIG_CMD_ONENAND
 
 /* USB Composite download gadget - g_dnl */
 
 /* FLASH and environment organization */
 #define CONFIG_MMC_DEFAULT_DEV 0
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         CONFIG_MMC_DEFAULT_DEV
 #define CONFIG_ENV_SIZE                        4096
 #define CONFIG_ENV_OFFSET              ((32 - 4) << 10) /* 32KiB - 4KiB */
index 0265684e6737de59aad3b256d939f8517d1e92c2..b0bc69dab0c09466ab098b7634d9c2f01b975e09 100644 (file)
@@ -77,7 +77,6 @@
 #define CONFIG_BOOTBLOCK       "10"
 #define CONFIG_UBIBLOCK                "9"
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         CONFIG_MMC_DEFAULT_DEV
 #define CONFIG_ENV_SIZE                        4096
 #define CONFIG_ENV_OFFSET              ((32 - 4) << 10) /* 32KiB - 4KiB */
index dbc7725796c755bac8f403b5be4a9bcc06cc86fb..fd1c75935e7c976a01e05586407c8a31be6cf895 100644 (file)
@@ -7,7 +7,6 @@
 #include <configs/bmips_common.h>
 #include <configs/bmips_bcm6338.h>
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
 #define CONFIG_AUTO_COMPLETE
index 0ac39003266e25ec02bd07071fb6822e799fe1cf..7f81063d13be5d3d01fa89e6b32e376cefefc801 100644 (file)
@@ -73,7 +73,6 @@
 #define CONFIG_SH_SDHI_FREQ            200000000
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV         1
 #define CONFIG_SYS_MMC_ENV_PART                2
index 7607f946405a120e09a90ba51839ab6950ad8b49..401f1987ee8f5f9caf90c742f9c67a19e4fce8c7 100644 (file)
 /* USB */
 #define CONFIG_CMD_USB
 
-#ifdef CONFIG_CMD_USB
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
-#endif
-
 /* USB device */
 #define CONFIG_USB_GADGET
 #define CONFIG_USB_GADGET_DUALSPEED
@@ -88,7 +84,6 @@
 #undef CONFIG_ENV_OFFSET_REDUND
 #undef CONFIG_BOOTCOMMAND
 /* u-boot env in nand flash */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x200000
 #define CONFIG_ENV_OFFSET_REDUND       0x400000
 #define CONFIG_BOOTCOMMAND             "nand read 0x21000000 0xb80000 0x80000;"        \
index fbe26cae21b8b7196e41e5504eb04673028700e2..76533e3954fb2e2192394ac87351a31ea6d63beb 100644 (file)
 #define CONFIG_PMECC_CAP               4
 #define CONFIG_PMECC_SECTOR_SIZE       512
 #define CONFIG_CMD_NAND_TRIMFFS
-#define CONFIG_CMD_MTDPARTS
 
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#define CONFIG_CMD_UBIFS
 #endif
 
 /* USB */
@@ -80,8 +76,6 @@
 /* override the bootcmd, bootargs and other configuration for nandflash env */
 #elif CONFIG_SYS_USE_MMC
 /* override the bootcmd, bootargs and other configuration for sd/mmc env */
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 /* SPL */
index 891d6a0f79acf0226d66f5835b46037a556e4849..a5a0f7c32f7be24f1e558b9b460bb217af38dd0e 100644 (file)
 /* override the bootcmd, bootargs and other configuration nandflash env */
 #elif CONFIG_SYS_USE_MMC
 /* override the bootcmd, bootargs and other configuration for sd/mmc env */
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 /* SPL */
index 1e8404cbdf2720c99f3eabe146723629ee75f5e5..edb153f79e8d78ca60dd65d40571a7d072183042 100644 (file)
@@ -52,7 +52,6 @@
 #define CONFIG_AUTO_COMPLETE
 
 #define CONFIG_ENV_SIZE                8192
-#define CONFIG_ENV_IS_NOWHERE
 
 /* SPI - enable all SPI flash types for testing purposes */
 #define CONFIG_CMD_SF_TEST
 
 #define CONFIG_GZIP_COMPRESSED
 #define CONFIG_BZIP2
-#define CONFIG_LZO
 
 #ifndef CONFIG_SPL_BUILD
 #define CONFIG_SYS_IDE_MAXBUS          1
index a6da2ccf826b2eee003337ae725dd1579f6d6264..e55addb99cbac62eea82ada973671aebc014c883 100644 (file)
@@ -19,7 +19,6 @@
 
 /* Environment */
 #define CONFIG_ENV_SIZE                        (16 * 1024)
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_OVERWRITE
 
 /* Booting Linux */
index 4d87f5334a41119b07882623b41e12a20358469c..c0faac3b79a1b39bc564ca65b051e797da5859f4 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-       #define CONFIG_ENV_IS_IN_FLASH  1
        #define CONFIG_ENV_ADDR         (CONFIG_SYS_MONITOR_BASE + 0x40000)
        #define CONFIG_ENV_SECT_SIZE    0x20000 /* 128K(one sector) for env */
        #define CONFIG_ENV_SIZE         0x2000
 #define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
 
 #else
-       #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
index e872e7f81017b764bcf20ee5a08689bca39d82a7..cf9809df49de97794caefb07ae6af000051fa8de 100644 (file)
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SIZE                0x2000
 #if CONFIG_SYS_TEXT_BASE == 0xfff00000 /* Boot from 64MB SODIMM */
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + 0x80000)
index 33b6d1fb937d53da62e601e4e3873b808c18fe96..c5f9fcb918a75b94f7ddcc87cd2d22b22b20c9da 100644 (file)
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128k(one sector) for env */
 #define CONFIG_ENV_SIZE                0x2000
index 73e7e6bbcfbf79bdf981a93bddfb919e5f3bd458..f7aeb640f60d0a29ed22d5276b5ac7af55625cba 100644 (file)
 
 /* Environment */
 #define CONFIG_ENV_SIZE                        (16 * 1024)
-#define CONFIG_ENV_IS_IN_MMC
 
 /* Environment is in MMC */
 #if defined(CONFIG_CMD_MMC) && defined(CONFIG_ENV_IS_IN_MMC)
 #define CONFIG_ENV_OFFSET              (256 * 1024)
 #define CONFIG_SYS_MMC_ENV_DEV         0
-#else
-#define CONFIG_ENV_IS_NOWHERE
 #endif
 
 /* FEC Ethernet on SoC */
index afc2c7dfe962c3025abbecc4a952ceb3c1eae912..2482ba1dcde4b42eab7ce8cc7ef671b85deebcef 100644 (file)
@@ -31,7 +31,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #define CONFIG_SYS_MMC_ENV_PART 2
index ab64518e0b1514ee58b9d86cf098631012196292..6bd2d76f530c7c0d25aa7c9bc54bcd9a68d4164f 100644 (file)
@@ -9,7 +9,6 @@
 
 #define CONFIG_REMAKE_ELF
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
 #define CONFIG_AUTO_COMPLETE
index 3342a2966c3f2a7fa912a8f6b5c2ee33f50d9da9..46d0f2aede933d2e07cb8db056547ee8f963b9fb 100644 (file)
@@ -84,7 +84,6 @@
 
 /* ENV setting */
 #define CONFIG_ENV_IS_EMBEDDED
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SECT_SIZE   (64 * 1024)
 #define CONFIG_ENV_ADDR                (0x00080000)
 #define CONFIG_ENV_OFFSET      (CONFIG_ENV_ADDR)
index 78670422f7ad14e90962434a2d5adbd811cc96f3..aa8d05c2210095d3f5001a83212d28760c0c757c 100644 (file)
@@ -84,7 +84,6 @@
 
 /* ENV setting */
 #define CONFIG_ENV_IS_EMBEDDED
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SECT_SIZE   (64 * 1024)
 #define CONFIG_ENV_ADDR                (0x00080000)
 #define CONFIG_ENV_OFFSET      (CONFIG_ENV_ADDR)
index e9cd3d749afb698bdbdc12614efc4281ab7f4ed9..1759a6f5d9ebf1f59a23222f4eed400b4a8fa93f 100644 (file)
@@ -94,7 +94,6 @@
 
 /* ENV setting */
 #define CONFIG_ENV_IS_EMBEDDED
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SECT_SIZE   (64 * 1024)
 #define CONFIG_ENV_ADDR                (0x00080000)
 #define CONFIG_ENV_OFFSET      (CONFIG_ENV_ADDR)
index 2186f21f7ada18d66d8b9dcd35597e6d21d0fb6e..50a0e3e7d1fd20b8c8aaf7106ccd9d3ad2863e62 100644 (file)
@@ -74,7 +74,6 @@
 /* Use hardware flash sectors protection instead of U-Boot software protection */
 #undef  CONFIG_SYS_FLASH_PROTECTION
 #undef  CONFIG_SYS_DIRECT_FLASH_TFTP
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   (128 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_FLASH_BASE + (1 * CONFIG_ENV_SECT_SIZE))
index ab304280635f2a5fa37ab3d60f9f23179a067102..59fcad03098449471178c084db50dcc42f5888cd 100644 (file)
 #define CONFIG_PCI_SYS_SIZE    CONFIG_SYS_SDRAM_SIZE
 
 /* ENV setting */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OVERWRITE   1
 #define CONFIG_ENV_SECT_SIZE   (256 * 1024)
 #define CONFIG_ENV_SIZE                (CONFIG_ENV_SECT_SIZE)
index ec33565d097314fc864597fabdffe2102e04882b..eac9755bbad6fef9e90279d07ec9e5b06ba0e586 100644 (file)
@@ -13,7 +13,6 @@
 #define KERNEL_LOAD_ADDR               0x280000
 #define DTB_LOAD_ADDR                  0x5600000
 #define INITRD_LOAD_ADDR               0x5bf0000
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        0x2000
 
 #define CONFIG_CONSOLE_SCROLL_LINES    10
index 9d2c106d46b9a9f3e3489406209cfb192ce11ab7..d4c9995d50af6f97fbf92502ac46ef443be25807 100644 (file)
  *  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
index 995f76a1eaba43c3d64bad4e5a9cd7e2b66448de..c9718f9b36ed97be1f855bbd912dda873b66ba7f 100644 (file)
@@ -72,7 +72,6 @@
 #define CONFIG_SYS_ATMEL_SECT          {1, 2, 1, 7}
 #define CONFIG_SYS_ATMEL_SECTSZ                {0x4000, 0x2000, 0x8000, 0x10000}
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_SECT_SIZE   (64 * 1024)
 #define CONFIG_ENV_SIZE                CONFIG_ENV_SECT_SIZE
 
index 21029d10ae9906bace5c3a053602caa4b3dc7c6c..22f070d502db4dfa758f81f5797613f15c9e76fc 100644 (file)
@@ -38,7 +38,6 @@
 #endif
 
 #define CONFIG_ENV_OVERWRITE           1
-#define CONFIG_ENV_IS_NOWHERE
 
 #define CONFIG_SYS_LONGHELP
 #define CONFIG_CMDLINE_EDITING
  * 0x442000 - 0x800000 : Userland
  */
 #if defined(CONFIG_SPI_BOOT)
-# undef CONFIG_ENV_IS_NOWHERE
-# define CONFIG_ENV_IS_IN_SPI_FLASH
 # define CONFIG_ENV_SPI_MAX_HZ         CONFIG_SF_DEFAULT_SPEED
 # define CONFIG_ENV_OFFSET             (892 << 10) /* 892 KiB in */
 # define CONFIG_ENV_SECT_SIZE          (4 << 10) /* 4 KB sectors */
 
 /* UBI Support */
 #ifndef CONFIG_SPL_BUILD
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#define CONFIG_CMD_UBIFS
 #endif
 
 /* Commen environment */
 #define CONFIG_SYS_MAX_NAND_DEVICE     1               /* Max number of NAND
                                                           devices */
 #if !defined(CONFIG_SPI_BOOT)
-#undef CONFIG_ENV_IS_NOWHERE
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x260000 /* environment starts here */
 #define CONFIG_SYS_ENV_SECT_SIZE       (128 << 10)     /* 128 KiB */
 #endif
index 840027820947a7cf7b46104cfae3360780e1e915..bccb432a60b4f7184282a658cdf6ff2d0ea53e43 100644 (file)
@@ -91,7 +91,6 @@
 #define CONFIG_SYS_NAND_ENABLE_PIN     AT91_PIN_PC14
 #define CONFIG_SYS_NAND_READY_PIN      AT91_PIN_PC13
 
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define MTDIDS_NAME_STR                "atmel_nand"
 #define MTDIDS_DEFAULT         "nand0=" MTDIDS_NAME_STR
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
 
 /* USB DFU support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 
 /*
  * The NAND Flash partitions:
  */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (0x100000)
 #define CONFIG_ENV_OFFSET_REDUND       (0x180000)
 #define CONFIG_ENV_RANGE               (SZ_512K)
index ab755041888cf7d4bda4547c1f6b69711d25e600..14b49c4fafc902edd48f75202d5c1f7fbaa1b5d4 100644 (file)
@@ -61,9 +61,7 @@
  ***********************************************************/
 #undef CONFIG_CMD_NAND
 
-#define CONFIG_CMD_REGINFO
 #define CONFIG_CMD_ONENAND
-#define CONFIG_CMD_MTDPARTS
 
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 /*-----------------------------------------------------------------------
  * Boot configuration
  */
-#define CONFIG_ENV_IS_IN_ONENAND       1
 #define CONFIG_ENV_SIZE                        (128 << 10)     /* 128KiB, 0x20000 */
 #define CONFIG_ENV_ADDR                        (256 << 10)     /* 256KiB, 0x40000 */
 #define CONFIG_ENV_OFFSET              (256 << 10)     /* 256KiB, 0x40000 */
index ccb89216d88bc7c91798d44d05f2dbdbfd570d8a..9986a3b707d9d9406a95d6b5bcc32c5bc14b90b0 100644 (file)
@@ -73,7 +73,6 @@
 /* MIU (Memory Interleaving Unit) */
 #define CONFIG_MIU_2BIT_INTERLEAVED
 
-#define CONFIG_ENV_IS_IN_MMC           1
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_ENV_SIZE                        (16 << 10)      /* 16 KB */
 #define RESERVE_BLOCK_SIZE             (512)
index d3e73f209759edb5f2994449cce5fbe2f823baeb..63bc769efec06169243a40634c4d7ec865255eeb 100644 (file)
 #define CONFIG_BOOTP_HOSTNAME
 
 /* Environment settings */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (512 << 10)
 #define CONFIG_ENV_SIZE                        (256 << 10)
 #define CONFIG_ENV_OVERWRITE
index 4e0b9b12525791754527addad416110fc4e7cf2c..47dd99100bafbcac7c9429fee4891e74c7b0eea0 100644 (file)
@@ -60,9 +60,6 @@
 #define CONFIG_TFTP_PORT
 #define CONFIG_TFTP_TSIZE
 
-/* USB */
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     2
-
 /* MMC */
 #define CONFIG_GENERIC_ATMEL_MCI
 
@@ -89,7 +86,6 @@
 #define CONFIG_BOOTP_HOSTNAME
 
 /* Environment settings */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (512 << 10)
 #define CONFIG_ENV_SIZE                        (256 << 10)
 #define CONFIG_ENV_OVERWRITE
index 6b065c9dc799a627ce5a60dd168b01aa15e22652..669ce8588d171753ac9fdf03eee7a465624ef0a7 100644 (file)
  */
 
 #define CONFIG_ENV_SIZE                (128 * 1024)
-#define CONFIG_ENV_IS_NOWHERE
 
 #define CONFIG_ENV_OVERWRITE
 
index 3b59b6a1069f309db4402a81fb48e95db7cc8f77..55850bd1b39c81ef70277fb28212c152ae4d62fc 100644 (file)
@@ -33,7 +33,6 @@
 /*
  * U-Boot environment configurations
  */
-#define CONFIG_ENV_IS_IN_MMC
 
 /*
  * arguments passed to the bootz command. The value of
index fe4031910b63b5ff09b262c345a573945aa0e4f8..9f83858bd18079d0f13956eba11c82b94db5539d 100644 (file)
@@ -23,8 +23,6 @@
 #define CONFIG_PHY_MICREL_KSZ9021
 #endif
 
-#define CONFIG_ENV_IS_IN_MMC
-
 /* The rest of the configuration is shared */
 #include <configs/socfpga_common.h>
 
index 1bed85e78b0801f5a50a4ec85565c01661af29ad..2c23ae50734645a3b7235e64f18aad8b01121b70 100644 (file)
 /*
  * FPGA Driver
  */
-#ifdef CONFIG_TARGET_SOCFPGA_GEN5
 #ifdef CONFIG_CMD_FPGA
-#define CONFIG_FPGA
-#define CONFIG_FPGA_ALTERA
-#define CONFIG_FPGA_SOCFPGA
 #define CONFIG_FPGA_COUNT              1
 #endif
-#endif
+
 /*
  * L4 OSC1 Timer 0
  */
@@ -188,7 +184,6 @@ unsigned int cm_get_l4_sp_clk_hz(void);
 /* Enable multiple SPI NOR flash manufacturers */
 #ifndef CONFIG_SPL_BUILD
 #define CONFIG_SPI_FLASH_MTD
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 #define MTDIDS_DEFAULT                 "nor0=ff705000.spi.0"
@@ -281,13 +276,6 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
                                "-@1536k(UBI)\0"
 #endif
 
-/* UBI and UBIFS support */
-#if defined(CONFIG_CMD_SF) || defined(CONFIG_CMD_NAND)
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-#endif
-
 /*
  * SPL
  *
index be565211219631369e4f9c5766333821ad05be4b..86b4a9dfb80e117a57c12fbb55b563a25c2e589b 100644 (file)
@@ -23,8 +23,6 @@
 #define CONFIG_PHY_MICREL_KSZ9021
 #endif
 
-#define CONFIG_ENV_IS_IN_MMC
-
 /* The rest of the configuration is shared */
 #include <configs/socfpga_common.h>
 
index 320c585a397866b58f0c767bca03d21c20b107f0..6516c45acf1870be603f18e8fa072bdd6fab4d05 100644 (file)
@@ -23,8 +23,6 @@
 #define CONFIG_PHY_MICREL_KSZ9031
 #endif
 
-#define CONFIG_ENV_IS_IN_MMC
-
 /* The rest of the configuration is shared */
 #include <configs/socfpga_common.h>
 
index ef693b00380fc71b04e1c3ea3027450bb026d74d..04be2b1689c7f746bf0ebd2bfaccf11859bbbb8b 100644 (file)
@@ -23,8 +23,6 @@
 #define CONFIG_PHY_MICREL_KSZ9031
 #endif
 
-#define CONFIG_ENV_IS_IN_MMC
-
 /* The rest of the configuration is shared */
 #include <configs/socfpga_common.h>
 
index 522ac74ffef54365078d72bd7c92047d66d7bf81..9405083b3e028fcda07288b9fe568cd267465c7f 100644 (file)
@@ -23,8 +23,6 @@
 #define CONFIG_PHY_MICREL_KSZ9021
 #endif
 
-#define CONFIG_ENV_IS_IN_MMC
-
 /* The rest of the configuration is shared */
 #include <configs/socfpga_common.h>
 
index 68403aa744c3417aa9f9d2ad36642bc0531401bc..febb8f7fcc35487714a7147574e97d492114f7c8 100644 (file)
@@ -19,7 +19,6 @@
 #define CONFIG_BOOTARGS                "console=ttyS0," __stringify(CONFIG_BAUDRATE)
 #define CONFIG_LOADADDR                0x01000000
 #define CONFIG_SYS_LOAD_ADDR   CONFIG_LOADADDR
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 
 /* Ethernet on SoC (EMAC) */
 #if defined(CONFIG_CMD_NET)
index ee85708b7a0a5c1f589838158c0a676878a829a8..e9c7c71a73e153dfc899a75c6244b8ee276a7642 100644 (file)
@@ -23,7 +23,6 @@
 
 /* Environment is in MMC */
 #define CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_IS_IN_MMC
 
 /* Extra Environment */
 #define CONFIG_EXTRA_ENV_SETTINGS                                      \
index c75acc0749def305b52d1dc5753495a0809e7bff..57de60ecfa8cf4199c7f21f14f8e0f6b1e6948e6 100644 (file)
@@ -23,8 +23,6 @@
 #define CONFIG_PHY_MICREL_KSZ9021
 #endif
 
-#define CONFIG_ENV_IS_IN_MMC
-
 /* The rest of the configuration is shared */
 #include <configs/socfpga_common.h>
 
index a08fa9ff4ccc5dbf432bdc9c36ba1d75888de1ef..6b6cb6aa14f63d32523ec61ea431fa677c715580 100644 (file)
@@ -23,8 +23,6 @@
 #define CONFIG_PHY_MICREL_KSZ9021
 #endif
 
-#define CONFIG_ENV_IS_IN_MMC
-
 /* The rest of the configuration is shared */
 #include <configs/socfpga_common.h>
 
index 4366061f77ea6332c485d4a62088701855805f51..39bf612291f46e42676b28d59d7020c19a74802f 100644 (file)
@@ -24,7 +24,6 @@
 #define PHY_ANEG_TIMEOUT       8000
 
 /* Environment */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 
 /* Enable SPI NOR flash reset, needed for SPI booting */
 #define CONFIG_SPI_N25Q256A_RESET
index e2bdfb12f91f151f0d881ef3681a666f2b5a5304..a86043f339e39e838ec688da27a688e6aa69a4ee 100644 (file)
                "else echo \"Unsupported boot mode: \"${bootmode} ; "   \
                "fi\0"                                                  \
 
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define MTDPARTS_DEFAULT                       \
        "mtdparts=ff705000.spi.0:"              \
                "1m(u-boot),"                   \
                "256k(samtec2),"                \
                "-(rcvrfs);"    /* Recovery */  \
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_SIZE_REDUND         CONFIG_ENV_SIZE
 #define CONFIG_ENV_SECT_SIZE           (64 * 1024)
index bfd4e5fe3f8ead983df3c7a63223a71b01eb5b51..3864dfb09fb09ea123db6eb723edbe0afe34819a 100644 (file)
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K(one sector) for env     */
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE                0x4000
index dd73a4d1bd97d2f7fb4ce316762405557df17bdc..4dbf919cfa0ba9252312cdf9e0ae9ca0b23b2e89 100644 (file)
 #define CONFIG_SPEAR_USBTTY
 #endif
 
-#if defined(CONFIG_NAND)
-#define CONFIG_ENV_IS_IN_NAND
-#else
-#define CONFIG_ENV_IS_IN_FLASH
-#endif
-
 #include <configs/spear-common.h>
 
 /* Ethernet driver configuration */
index 7745247052e19c24164ed4d4bcb10a46fba22376..4bd989e2f0018b1d40615dd542397a6f265bdeca 100644 (file)
 #define CONFIG_SPEAR_USBTTY
 #endif
 
-#if defined(CONFIG_NAND)
-#define CONFIG_ENV_IS_IN_NAND
-#else
-#define CONFIG_ENV_IS_IN_FLASH
-#endif
-
 #include <configs/spear-common.h>
 
 /* Serial Configuration (PL011) */
index 6f4070ff430a94ac6a4fb02d13f492b65466acbe..eaa93a58302b4918a19b5d02a8c9ba4c4993af73 100644 (file)
@@ -28,7 +28,6 @@
        "board= B2260" \
        "load_addr= #CONFIG_SYS_LOAD_ADDR \0"
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE 0x4000
 
 /* Extra Commands */
index 8609f2a0a98663fe91e6d4eeb6993e4294e50e01..c47be514d8ac8011c9c541d7db34ddb437140a2f 100644 (file)
@@ -35,7 +35,6 @@
 #define CONFIG_SYS_MAX_FLASH_SECT      12
 #define CONFIG_SYS_MAX_FLASH_BANKS     2
 
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OFFSET              (256 << 10)
 #define CONFIG_ENV_SECT_SIZE           (128 << 10)
 #define CONFIG_ENV_SIZE                        (8 << 10)
index 4e0edcbc01c3fb4075a35edd0af39d9ed8cfbb3e..46955b1f1f802f969fe2b3ac973dac33fab20036 100644 (file)
@@ -28,7 +28,6 @@
 #define CONFIG_SYS_MAX_FLASH_SECT      8
 #define CONFIG_SYS_MAX_FLASH_BANKS     1
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        (8 << 10)
 
 #define CONFIG_STM32_FLASH
index 994ac73e136b799b2449d4bf216e6fc8c88c147e..a702ec71dae5889f9e078f27e24ec9ea54b85fdc 100644 (file)
@@ -529,7 +529,6 @@ void fpga_control_clear(unsigned int bus, int pin);
  * Environment
  */
 #if 1
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
                                 CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SECT_SIZE   0x10000 /* 64K(one sector) for env */
@@ -537,7 +536,6 @@ void fpga_control_clear(unsigned int bus, int pin);
 #define CONFIG_ENV_ADDR_REDUND (CONFIG_ENV_ADDR + CONFIG_ENV_SECT_SIZE)
 #define CONFIG_ENV_SIZE_REDUND CONFIG_ENV_SIZE
 #else
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                0x2000          /* 8KB */
 #endif
 
index 2f808c6c72daac3a699cbde0bb0d1ee3af8ca504..0ac262e09549c458b0f10b1f9c5092865527e522 100644 (file)
@@ -19,7 +19,6 @@
 #define PHYS_SDRAM_1_SIZE                      0x00198000
 
 #define CONFIG_ENV_SIZE                                0x10000
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SECT_SIZE                   CONFIG_ENV_SIZE
 #define CONFIG_ENV_OFFSET                      0x30000
 #define CONFIG_ENV_ADDR                                \
index fefd58f76971fc70529e3ca936770dcdbe50c5af..681c91cf46dcb089a88849bce861927c8b37e5bc 100644 (file)
@@ -310,7 +310,6 @@ extern int soft_i2c_gpio_scl;
 #define CONFIG_USB_OHCI_NEW
 #define CONFIG_USB_OHCI_SUNXI
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS 1
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
 #endif
 
 #ifdef CONFIG_USB_MUSB_SUNXI
index 0b87c9ca973a0dd2df2d8b48d56c3ec777e935ee..fb173ebfb4de34610690790bc06a299e8508be14 100644 (file)
@@ -67,7 +67,6 @@
                                        115200}
 /* EHCI */
 #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO       25
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
 
 /* commands to include */
 #define CONFIG_CMD_NAND                /* NAND support                 */
 /* **** PISMO SUPPORT *** */
 #define CONFIG_NAND
 #define CONFIG_NAND_OMAP_GPMC
-#define CONFIG_ENV_IS_IN_NAND
 #define SMNAND_ENV_OFFSET              0x180000 /* environment starts here */
 
 /* Redundant Environment */
 #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x80000
 #define CONFIG_SYS_NAND_U_BOOT_SIZE    0x80000
 
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
-#define CONFIG_CMD_MTDPARTS
 
 /* Setup MTD for NAND on the SOM */
 #define MTDIDS_DEFAULT         "nand0=omap2-nand.0"
index f994d2dbf3ceff5757a13883aa9f9e4cbd8f6c89..08134f4a1e442670e7475d97a6c21256e6fddad1 100644 (file)
@@ -62,7 +62,6 @@
 #define CONFIG_ENV_OVERWRITE
 
 /* commands to include */
-#define CONFIG_CMD_MTDPARTS    /* Enable MTD parts commands */
 #define CONFIG_MTD_DEVICE      /* needed for mtdparts commands */
 #define MTDIDS_DEFAULT                 "nand0=nand"
 #define MTDPARTS_DEFAULT               "mtdparts=nand:512k(x-loader),"\
 #define CONFIG_SYS_MONITOR_BASE                CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_ONENAND_BASE                ONENAND_MAP
 
-#define CONFIG_ENV_IS_IN_NAND          1
 #define ONENAND_ENV_OFFSET             0x260000 /* environment starts here */
 #define SMNAND_ENV_OFFSET              0x260000 /* environment starts here */
 
 /* USB EHCI */
 #define CONFIG_OMAP_EHCI_PHY1_RESET_GPIO       162
 
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 3
 #define CONFIG_USB_HOST_ETHER
 #define CONFIG_USB_ETHER_SMSC95XX
 
index bed2a5c3c09b2cbd90146dfaa392c9e7ac064729..cdea9ebf5979d1653b38766a7d7738220f425215 100644 (file)
 #define CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS     2
 
 /* USB DFU support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
 
 #define CONFIG_SYS_LOAD_ADDR                   0x22000000
 
 /* bootstrap in spi flash , u-boot + env + linux in nandflash */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x100000
 #define CONFIG_ENV_OFFSET_REDUND       0x180000
 #define CONFIG_ENV_SIZE                (SZ_128K)       /* 1 sector = 128 kB */
index fe8e6c4e3b309e8a35d78b34a98a57963a5322ab..67b5774a096d9949fd69aa91ee5adf88f94be63c 100644 (file)
@@ -65,7 +65,6 @@
 /*
  * Environment settings
  */
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        SZ_2K
 #define CONFIG_ENV_OFFSET              0
 
index 79f6b162f7fbe9e3c2b13d3a28a9501736eb5ba2..4baccdc1e977c91260e72869036190ca797b4dfb 100644 (file)
 #endif
 
 /* Environment organization */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         2 /* overwritten on SD boot */
 #define CONFIG_SYS_MMC_ENV_PART                1 /* overwritten on SD boot */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
index 6406d396983d81495e41bfa7b9ef88252a247ebf..c32a0870995b787ce62743548d876bbae3402595 100644 (file)
@@ -21,7 +21,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
index 8ffdbec9d1e75e76be6a93df4800d9e9ee1aa434..5f84f2489a9113f6261a16f83f2b73a1dc89a609 100644 (file)
@@ -25,7 +25,6 @@
 #define CONFIG_SYS_MAX_NAND_DEVICE     1
 
 /* Environment in NAND, aligned to start of last sector */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (SZ_512M - SZ_128K) /* 128K sectors */
 
 /* USB host support */
index 107a0f8803313fd82d4b120a5ba63d008f01a8d4..75d2065177a12f215ff94b482f978a379d4ee40b 100644 (file)
@@ -63,6 +63,5 @@
 /* For USB EHCI controller */
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_USB_EHCI_TXFIFO_THRESH  0x10
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
 
 #endif /* _TEGRA114_COMMON_H_ */
index 8cf9bac15680c78c912be71d868eb24227eaf627..0d61753c035c4abfb8b1b33ac4abe842ab47f667 100644 (file)
@@ -65,7 +65,6 @@
 /* For USB EHCI controller */
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_USB_EHCI_TXFIFO_THRESH  0x10
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
 
 /* GPU needs setup */
 #define CONFIG_TEGRA_GPU
index db1cc248f45baf102967891b00978f9863e19079..342ffbe5b2b4171a0c2755150b16fcae333febbf 100644 (file)
@@ -82,7 +82,6 @@
  */
 #define CONFIG_USB_EHCI_TXFIFO_THRESH  10
 #define CONFIG_EHCI_IS_TDI
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
 
 #define CONFIG_SYS_NAND_SELF_INIT
 #define CONFIG_SYS_NAND_ONFI_DETECTION
index 874fe34d4f4d1796a434c1a5ed1467202ba10ccf..4c05576a909e318b2b498f5a83b6352200b1c4a7 100644 (file)
@@ -68,7 +68,6 @@
 /* For USB EHCI controller */
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_USB_EHCI_TXFIFO_THRESH  0x10
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
 
 /* GPU needs setup */
 #define CONFIG_TEGRA_GPU
index 60838474a6398b6aca2ef1b4cd93566b6cccfde8..c2096fbe7ec497660f062bdc56498acbe364f1de 100644 (file)
@@ -64,6 +64,5 @@
 /* For USB EHCI controller */
 #define CONFIG_EHCI_IS_TDI
 #define CONFIG_USB_EHCI_TXFIFO_THRESH  0x10
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS 1
 
 #endif /* _TEGRA30_COMMON_H_ */
index 94e207c8c4b243d1bfd7a85190630ea4f44f724f..e5edd5e8fd07d6a3f2c0d21095b3d1e8f4832edf 100644 (file)
@@ -50,7 +50,6 @@
 #define CONFIG_SF_DEFAULT_MODE         SPI_MODE_3
 
 /* Environment in SPI NOR flash */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              (1 << 20) /* 1MiB in */
 #define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
 #define CONFIG_ENV_SECT_SIZE           (256 << 10) /* 256KiB sectors */
@@ -87,8 +86,6 @@
 #define CONFIG_SYS_MEM_TOP_HIDE                0x80000
 
 /* FPGA programming support */
-#define CONFIG_FPGA
-#define CONFIG_FPGA_ALTERA
 #define CONFIG_FPGA_STRATIX_V
 
 /*
index f52fc8225c7b992cf0925f661b29f868fd45188c..514590a270099379ed3d766850d1bfd0665888cf 100644 (file)
@@ -76,7 +76,6 @@
                                        "root=/dev/sda2 coherent_pool=16M"
 
 /* Do not preserve environment */
-#define CONFIG_ENV_IS_NOWHERE          1
 #define CONFIG_ENV_SIZE                        0x1000
 
 /* Monitor Command Prompt */
index ea83ea2495e5d3dfebac6a436a672f58c820afd6..b5f817749cbcdaba47ad8cf3127538b7f1b887de 100644 (file)
 #define CONFIG_ENV_OVERWRITE
 #define CONFIG_CONS_INDEX              1
 
-#define CONFIG_ENV_IS_NOWHERE
-
 /* Defines for SPL */
 #define CONFIG_SPL_FRAMEWORK
 #define CONFIG_SPL_TEXT_BASE           0x40300000
index 4a81b1daf84efe5fa04d3e6e2cb207de5540a58a..bba10ec00108786b44eebe419e14742855f79d2b 100644 (file)
                                        "8m(NAND.kernel)," \
                                        "-(NAND.file-system)"
 #define CONFIG_SYS_NAND_U_BOOT_OFFS    0x000c0000
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              0x001c0000
 #define CONFIG_ENV_OFFSET_REDUND       0x001e0000
 #define CONFIG_SYS_ENV_SECT_SIZE       CONFIG_SYS_NAND_BLOCK_SIZE
index a4676d3a7ffb98d896d562172ef6941700b6135c..ccd7cd72d2f1d96a239d5c6274e0e0176334f4e9 100644 (file)
@@ -53,7 +53,7 @@
 
 #define DEFAULT_FIT_TI_ARGS \
        "boot_fit=0\0" \
-       "fit_loadaddr=0x88000000\0" \
+       "fit_loadaddr=0x87000000\0" \
        "fit_bootfile=fitImage\0" \
        "update_to_fit=setenv loadaddr ${fit_loadaddr}; setenv bootfile ${fit_bootfile}\0" \
        "loadfit=run args_mmc; bootm ${loadaddr}#${fdtfile};\0" \
  */
 #if defined(CONFIG_SPI_BOOT) || defined(CONFIG_NOR) || defined(CONFIG_NAND) || defined(CONFIG_NAND_DAVINCI)
 #define CONFIG_MTD_DEVICE              /* Required for mtdparts */
-#define CONFIG_CMD_MTDPARTS
 #endif
 
 #define CONFIG_SUPPORT_RAW_INITRD
index ac8dabd9caebb7db2f5f046dbf6d188e887463ec..26290ef1b278cee1c10645f7ac0d6a308dddfe2d 100644 (file)
 #define CONFIG_SYS_NAND_MAX_CHIPS              1
 #define CONFIG_SYS_NAND_NO_SUBPAGE_WRITE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
 #define MTDIDS_DEFAULT                 "nand0=davinci_nand.0"
 #define MTDPARTS_DEFAULT               "mtdparts=davinci_nand.0:" \
                                        "1024k(bootloader)ro,512k(params)ro," \
 
 /* USB Configuration */
 #define CONFIG_USB_XHCI_KEYSTONE
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     2
 #define CONFIG_USB_SS_BASE                     KS2_USB_SS_BASE
 #define CONFIG_USB_HOST_XHCI_BASE              KS2_USB_HOST_XHCI_BASE
 #define CONFIG_DEV_USB_PHY_BASE                        KS2_DEV_USB_PHY_BASE
 
 /* U-Boot command configuration */
 #define CONFIG_CMD_SAVES
-#define CONFIG_CMD_UBIFS
 
 /* U-Boot general configuration */
 #define CONFIG_MISC_INIT_R
        "addr_secdb_key=0xc000000\0"                                    \
        "name_kern=zImage\0"                                            \
        "addr_mon=0x87000000\0"                                         \
+       "addr_non_sec_mon=0x0c087fc0\0"                                 \
+       "addr_load_sec_bm=0x0c08c000\0"                                 \
        "run_mon=mon_install ${addr_mon}\0"                             \
+       "run_mon_hs=mon_install ${addr_non_sec_mon} "                   \
+                       "${addr_load_sec_bm}\0"                         \
        "run_kern=bootz ${loadaddr} ${rd_spec} ${fdtaddr}\0"            \
        "init_net=run args_all args_net\0"                              \
        "init_nfs=setenv autoload no; dhcp; run args_all args_net\0"    \
        "get_kern_ubi=ubifsload ${loadaddr} ${bootdir}/${name_kern}\0"          \
        "get_mon_net=dhcp ${addr_mon} ${tftp_root}/${name_mon}\0"       \
        "get_mon_nfs=nfs ${addr_mon} ${nfs_root}/boot/${name_mon}\0"    \
-       "get_mon_ubi=ubifsload ${addr_mon} ${bootdir}/${name_mon}\0"            \
+       "get_mon_ubi=ubifsload ${addr_mon} ${bootdir}/${name_mon}\0"    \
+       "get_fit_net=dhcp ${fit_loadaddr} ${tftp_root}"                 \
+                                               "/${fit_bootfile}\0"    \
+       "get_fit_nfs=nfs ${fit_loadaddr} ${nfs_root}/boot/${fit_bootfile}\0"\
+       "get_fit_ubi=ubifsload ${fit_loadaddr} ${bootdir}/${fit_bootfile}\0"\
+       "get_fit_mmc=load mmc ${bootpart} ${fit_loadaddr} "             \
+                                       "${bootdir}/${fit_bootfile}\0"  \
        "get_uboot_net=dhcp ${loadaddr} ${tftp_root}/${name_uboot}\0"   \
        "get_uboot_nfs=nfs ${loadaddr} ${nfs_root}/boot/${name_uboot}\0" \
        "burn_uboot_spi=sf probe; sf erase 0 0x80000; "         \
        "get_fdt_ramfs=dhcp ${fdtaddr} ${tftp_root}/${name_fdt}\0"      \
        "get_kern_ramfs=dhcp ${loadaddr} ${tftp_root}/${name_kern}\0"   \
        "get_mon_ramfs=dhcp ${addr_mon} ${tftp_root}/${name_mon}\0"     \
+       "get_fit_ramfs=dhcp ${fit_loadaddr} ${tftp_root}"               \
+                                               "/${fit_bootfile}\0"    \
        "get_fs_ramfs=dhcp ${rdaddr} ${tftp_root}/${name_fs}\0" \
        "get_ubi_net=dhcp ${addr_ubi} ${tftp_root}/${name_ubi}\0"       \
        "get_ubi_nfs=nfs ${addr_ubi} ${nfs_root}/boot/${name_ubi}\0"    \
                "1024k(bootloader)ro,512k(params)ro,-(ubifs)\0"
 
 #ifndef CONFIG_BOOTCOMMAND
+#ifndef CONFIG_TI_SECURE_DEVICE
 #define CONFIG_BOOTCOMMAND                                             \
-       "run init_${boot} get_mon_${boot} run_mon init_fw_rd_${boot} "  \
-       "get_fdt_${boot} get_kern_${boot} run_kern"
+       "run init_${boot}; "                                            \
+       "run get_mon_${boot} run_mon; "                                 \
+       "run get_kern_${boot}; "                                        \
+       "run init_fw_rd_${boot}; "                                      \
+       "run get_fdt_${boot}; "                                         \
+       "run run_kern"
+#else
+#define CONFIG_BOOTCOMMAND                                             \
+       "run run_mon_hs; "                                              \
+       "run init_${boot}; "                                            \
+       "run get_fit_${boot}; "                                         \
+       "bootm ${fit_loadaddr}#${name_fdt}"
+#endif
 #endif
 
 #define CONFIG_BOOTARGS                                                        \
index 72578f9202baa549cdd402f91e51b02a0ffca587..58eea3c405dfac937d2ee692d6c5313e155cba03 100644 (file)
@@ -18,7 +18,6 @@
        func(PXE, pxe, na) \
        func(DHCP, dchp, na)
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV 1
 
 #endif
index 79e37e2cefb051bcec5b620d0fff8f038ce1a8d5..6d9c3432601ce18d49d0435f845d0589a613c753 100644 (file)
 #define CONFIG_APBH_DMA_BURST8
 
 /* Environment in NAND */
-#define CONFIG_ENV_IS_IN_NAND
 #define CONFIG_ENV_OFFSET              (16 << 20)
 #define CONFIG_ENV_SECT_SIZE           (128 << 10)
 #define CONFIG_ENV_SIZE                        CONFIG_ENV_SECT_SIZE
 
 /* Environment in MMC */
 #define CONFIG_ENV_SIZE                        (8 << 10)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 
 #endif /* CONFIG_CMD_NAND */
 
 /* UBI/UBIFS config options */
-#define CONFIG_LZO
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_RBTREE
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_CMD_UBIFS
 
 #endif                        /* __CONFIG_H */
index ee46d3ac7ecfd98ef1a51f66789810cbbbad559d..d538080aa31578dee9b3aa94fea1d7115644ee08 100644 (file)
@@ -14,7 +14,6 @@
 #define CONFIG_ZYNQ_I2C1
 
 /* Speed up boot time by ignoring the environment which we never used */
-#define CONFIG_ENV_IS_NOWHERE
 
 #include "zynq-common.h"
 
index fc99dbd91e5983e2e25ded3b0518326f35c4b0a6..a03ad67af0112227ae85ce2d79d248ac45b6c816 100644 (file)
@@ -37,7 +37,6 @@
 #define CONFIG_BOOTCOMMAND             \
        "dhcp 192.168.1.1:wdr4300.fit && bootm $loadaddr"
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_SIZE                        0x10000
 
 /*
index 0b362559f26f335542ac5edcf09a81a06ea3ad23..b5b71570d1424c31269018d7303ec6f32853c964 100644 (file)
@@ -92,7 +92,6 @@
 
 #if defined(CONFIG_TQMA6X_MMC_BOOT)
 
-#define CONFIG_ENV_IS_IN_MMC
 #define TQMA6_UBOOT_OFFSET             SZ_1K
 #define TQMA6_UBOOT_SECTOR_START       0x2
 #define TQMA6_UBOOT_SECTOR_COUNT       0x7fe
 #define TQMA6_UBOOT_SIZE               (TQMA6_UBOOT_SECTOR_SIZE * \
                                         TQMA6_UBOOT_SECTOR_COUNT)
 
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_SYS_REDUNDAND_ENVIRONMENT
 #define CONFIG_ENV_OFFSET              (TQMA6_UBOOT_SIZE)
 #define CONFIG_ENV_SECT_SIZE           TQMA6_SPI_FLASH_SECTOR_SIZE
index e08bbc49ae916402a73cf1f78dd71f458f2a90c7..3059d89ac90fb5c6e136cfa74269b2d292986b7c 100644 (file)
@@ -55,7 +55,6 @@
 #define CONFIG_BOOTBLOCK               "10"
 #define CONFIG_ENV_COMMON_BOOT         "${console} ${meminfo}"
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         CONFIG_MMC_DEFAULT_DEV
 #define CONFIG_ENV_SIZE                        4096
 #define CONFIG_ENV_OFFSET              ((32 - 4) << 10) /* 32KiB - 4KiB */
index 927d48255cd9c896a367ee30edcf09634eb5be10..1f3ce9d94104d7d85a6321c7fe368dfc165f3ae6 100644 (file)
@@ -49,7 +49,6 @@
 
 #define CONFIG_SYS_MONITOR_BASE        0x00000000
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         CONFIG_MMC_DEFAULT_DEV
 #define CONFIG_ENV_SIZE                        4096
 #define CONFIG_ENV_OFFSET              ((32 - 4) << 10) /* 32KiB - 4KiB */
index d18a333d011b370ed46203ec942f632725e75bcc..a0fd583c0a1ac5b65d883c838dc5fe83dc91d16f 100644 (file)
 #define CONFIG_SYS_NAND_MAX_ECCPOS     56
 
 /* commands to include */
-#define CONFIG_CMD_MTDPARTS            /* Enable MTD parts commands */
 #define CONFIG_CMD_NAND                        /* NAND support */
 #define CONFIG_CMD_NAND_LOCK_UNLOCK    /* nand (un)lock commands */
-#define CONFIG_CMD_UBIFS               /* UBIFS commands */
-#define CONFIG_LZO                     /* LZO is needed for UBIFS */
 
 /* needed for ubi */
-#define CONFIG_RBTREE
 #define CONFIG_MTD_DEVICE       /* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS
 
  * which will not be influenced by any data already on the device.
  */
 #ifdef CONFIG_FLASHCARD
-
-#define CONFIG_ENV_IS_NOWHERE
-
 /* the rdaddr is 16 MiB before the loadaddr */
 #define CONFIG_ENV_RDADDR      "rdaddr=0x81000000\0"
 
 
 #define CONFIG_ENV_OVERWRITE /* allow to overwrite serial and ethaddr */
 
-#define CONFIG_ENV_IS_IN_NAND
-
 #define CONFIG_EXTRA_ENV_SETTINGS \
        CONFIG_COMMON_ENV_SETTINGS \
        "mmcargs=" \
index ab9c5c3ab8218fe9c8ea44adadbbf780f8b0106c..fd36634ae94df3c1fe0ff1728dbe7381148cf67a 100644 (file)
@@ -28,7 +28,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in SPI */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SPI_MAX_HZ          48000000
 #define CONFIG_ENV_SPI_MODE            SPI_MODE_0
 #define CONFIG_ENV_SECT_SIZE           CONFIG_ENV_SIZE
index 7bb8c879887f7e2ced36ab14b247eed162d5451e..959db5fdb237d842411ddd8b313d39fb46cf223f 100644 (file)
 
 #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/turris_omnia.h b/include/configs/turris_omnia.h
new file mode 100644 (file)
index 0000000..1020355
--- /dev/null
@@ -0,0 +1,177 @@
+/*
+ * Copyright (C) 2017 Marek Behun <marek.behun@nic.cz>
+ * Copyright (C) 2016 Tomas Hlavacek <tomas.hlavacek@nic.cz>
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#ifndef _CONFIG_TURRIS_OMNIA_H
+#define _CONFIG_TURRIS_OMNIA_H
+
+/*
+ * High Level Configuration Options (easy to change)
+ */
+
+#define CONFIG_MISC_INIT_R
+#define CONFIG_DISPLAY_BOARDINFO_LATE
+
+/*
+ * TEXT_BASE needs to be below 16MiB, since this area is scrubbed
+ * for DDR ECC byte filling in the SPL before loading the main
+ * U-Boot into it.
+ */
+#define        CONFIG_SYS_TEXT_BASE    0x00800000
+#define CONFIG_SYS_TCLK                250000000       /* 250MHz */
+
+/*
+ * Commands configuration
+ */
+#define CONFIG_CMD_PCI
+
+/* I2C support */
+#define CONFIG_DM_I2C
+#define CONFIG_I2C_MUX
+#define CONFIG_I2C_MUX_PCA954x
+#define CONFIG_SPL_I2C_MUX
+#define CONFIG_SYS_I2C_MVTWSI
+
+/* Watchdog support */
+#if !defined(CONFIG_SPL_BUILD) && defined(CONFIG_WDT_ORION)
+# define CONFIG_WATCHDOG
+#endif
+
+/* SPI NOR flash default params, used by sf commands */
+#define CONFIG_SF_DEFAULT_SPEED                1000000
+#define CONFIG_SF_DEFAULT_MODE         SPI_MODE_3
+#define CONFIG_SPI_FLASH
+#define CONFIG_SPI_FLASH_SPANSION
+
+/*
+ * SDIO/MMC Card Configuration
+ */
+#define CONFIG_SYS_MMC_BASE            MVEBU_SDIO_BASE
+
+/*
+ * SATA/SCSI/AHCI configuration
+ */
+#define CONFIG_LIBATA
+#define CONFIG_SCSI_AHCI
+#define CONFIG_SCSI_AHCI_PLAT
+#define CONFIG_SYS_SCSI_MAX_SCSI_ID    2
+#define CONFIG_SYS_SCSI_MAX_LUN                1
+#define CONFIG_SYS_SCSI_MAX_DEVICE     (CONFIG_SYS_SCSI_MAX_SCSI_ID * \
+                                        CONFIG_SYS_SCSI_MAX_LUN)
+
+/* Additional FS support/configuration */
+#define CONFIG_SUPPORT_VFAT
+
+/* USB/EHCI configuration */
+#define CONFIG_EHCI_IS_TDI
+
+/* Environment in SPI NOR flash */
+#define CONFIG_ENV_OFFSET              (3*(1 << 18)) /* 768KiB in */
+#define CONFIG_ENV_SIZE                        (64 << 10) /* 64KiB */
+#define CONFIG_ENV_SECT_SIZE           (256 << 10) /* 256KiB sectors */
+
+#define CONFIG_PHY_MARVELL             /* there is a marvell phy */
+#define PHY_ANEG_TIMEOUT       8000    /* PHY needs a longer aneg time */
+
+/* PCIe support */
+#ifndef CONFIG_SPL_BUILD
+#define CONFIG_PCI_MVEBU
+#define CONFIG_PCI_SCAN_SHOW
+#endif
+
+#define CONFIG_SYS_ALT_MEMTEST
+
+/* Keep device tree and initrd in lower memory so the kernel can access them */
+#define RELOCATION_LIMITS_ENV_SETTINGS \
+       "fdt_high=0x10000000\0"         \
+       "initrd_high=0x10000000\0"
+
+/* Defines for SPL */
+#define CONFIG_SPL_FRAMEWORK
+#define CONFIG_SPL_SIZE                        (140 << 10)
+#define CONFIG_SPL_TEXT_BASE           0x40000030
+#define CONFIG_SPL_MAX_SIZE            (CONFIG_SPL_SIZE - 0x0030)
+
+#define CONFIG_SPL_BSS_START_ADDR      (0x40000000 + CONFIG_SPL_SIZE)
+#define CONFIG_SPL_BSS_MAX_SIZE                (16 << 10)
+
+#ifdef CONFIG_SPL_BUILD
+#define CONFIG_SYS_MALLOC_SIMPLE
+#endif
+
+#define CONFIG_SPL_STACK               (0x40000000 + ((192 - 16) << 10))
+#define CONFIG_SPL_BOOTROM_SAVE                (CONFIG_SPL_STACK + 4)
+#define CONFIG_SPL_DRIVERS_MISC_SUPPORT
+
+#ifdef CONFIG_TURRIS_OMNIA_SPL_BOOT_DEVICE_SPI
+/* SPL related SPI defines */
+# define CONFIG_SPL_SPI_LOAD
+# define CONFIG_SYS_SPI_U_BOOT_OFFS    0x24000
+# define CONFIG_SYS_U_BOOT_OFFS                CONFIG_SYS_SPI_U_BOOT_OFFS
+#endif
+
+#ifdef CONFIG_TURRIS_OMNIA_SPL_BOOT_DEVICE_MMC
+/* SPL related MMC defines */
+# define CONFIG_SYS_MMC_U_BOOT_OFFS            (160 << 10)
+# define CONFIG_SYS_U_BOOT_OFFS                        CONFIG_SYS_MMC_U_BOOT_OFFS
+# ifdef CONFIG_SPL_BUILD
+#  define CONFIG_FIXED_SDHCI_ALIGNED_BUFFER    0x00180000      /* in SDRAM */
+# endif
+#endif
+
+/*
+ * mv-common.h should be defined after CMD configs since it used them
+ * to enable certain macros
+ */
+#include "mv-common.h"
+
+/* Include the common distro boot environment */
+#ifndef CONFIG_SPL_BUILD
+#include <config_distro_defaults.h>
+
+#ifdef CONFIG_MMC
+#define BOOT_TARGET_DEVICES_MMC(func) func(MMC, mmc, 0)
+#else
+#define BOOT_TARGET_DEVICES_MMC(func)
+#endif
+
+#ifdef CONFIG_USB_STORAGE
+#define BOOT_TARGET_DEVICES_USB(func) func(USB, usb, 0)
+#else
+#define BOOT_TARGET_DEVICES_USB(func)
+#endif
+
+#define BOOT_TARGET_DEVICES(func) \
+       BOOT_TARGET_DEVICES_MMC(func) \
+       BOOT_TARGET_DEVICES_USB(func) \
+       func(PXE, pxe, na) \
+       func(DHCP, dhcp, na)
+
+#define KERNEL_ADDR_R  __stringify(0x1000000)
+#define FDT_ADDR_R     __stringify(0x2000000)
+#define RAMDISK_ADDR_R __stringify(0x2200000)
+#define SCRIPT_ADDR_R  __stringify(0x1800000)
+#define PXEFILE_ADDR_R __stringify(0x1900000)
+
+#define LOAD_ADDRESS_ENV_SETTINGS \
+       "kernel_addr_r=" KERNEL_ADDR_R "\0" \
+       "fdt_addr_r=" FDT_ADDR_R "\0" \
+       "ramdisk_addr_r=" RAMDISK_ADDR_R "\0" \
+       "scriptaddr=" SCRIPT_ADDR_R "\0" \
+       "pxefile_addr_r=" PXEFILE_ADDR_R "\0"
+
+#include <config_distro_bootcmd.h>
+
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       RELOCATION_LIMITS_ENV_SETTINGS \
+       LOAD_ADDRESS_ENV_SETTINGS \
+       "fdtfile=" CONFIG_DEFAULT_DEVICE_TREE ".dtb\0" \
+       "console=ttyS0,115200\0" \
+       BOOTENV
+
+#endif /* CONFIG_SPL_BUILD */
+
+#endif /* _CONFIG_TURRIS_OMNIA_H */
index aef4563eded3bb4993bb08872457d7473dd27067..d3fa5d71c19b91470f052ab43836a3b05ab7060d 100644 (file)
 /* Environment organization */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 
index c6f39c38b33275cf01b6d30ab577976c4f927472..60b76edd1fcab5c1f2eccbc15f42d24daedd5a4b 100644 (file)
@@ -85,7 +85,6 @@
 /* Environment organization */
 #define CONFIG_ENV_OFFSET              (8 * SZ_64K)
 #define CONFIG_ENV_SIZE                        SZ_8K
-#define CONFIG_ENV_IS_IN_MMC
 
 #define CONFIG_IMX_THERMAL
 
index e45b506eba9217849aa8cd8e2e5c87b27b846121..6f5313931ab9dbccbd2ce4934e5af12b4b26f6a1 100644 (file)
@@ -70,9 +70,6 @@
 
 #define CONFIG_CONS_INDEX              1
 
-/* #define CONFIG_ENV_IS_NOWHERE */
-/* #define CONFIG_ENV_IS_IN_NAND */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET                      0x100000
 #define CONFIG_ENV_SIZE                                0x2000
 /* #define CONFIG_ENV_OFFSET_REDUND    (CONFIG_ENV_OFFSET + CONFIG_ENV_SIZE) */
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                1
 
-#ifdef CONFIG_ARMV8_MULTIENTRY
-#define CPU_RELEASE_ADDR                       0x80000000
-#define COUNTER_FREQUENCY                      50000000
-#define CONFIG_GICV3
-#define GICD_BASE                              0x5fe00000
-#if defined(CONFIG_ARCH_UNIPHIER_LD11)
-#define GICR_BASE                              0x5fe40000
-#elif defined(CONFIG_ARCH_UNIPHIER_LD20)
-#define GICR_BASE                              0x5fe80000
-#endif
-#elif !defined(CONFIG_ARM64)
+#if !defined(CONFIG_ARM64)
 /* Time clock 1MHz */
 #define CONFIG_SYS_TIMER_RATE                  1000000
 #endif
 #define CONFIG_SYS_NAND_USE_FLASH_BBT
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS                  0
 
-/* USB */
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS     4
-
 /* SD/MMC */
 #define CONFIG_SUPPORT_EMMC_BOOT
 
 
 #define CONFIG_CMDLINE_EDITING         /* add command line history     */
 
-#if defined(CONFIG_ARM64) && !defined(CONFIG_ARMV8_MULTIENTRY)
+#if defined(CONFIG_ARM64)
 /* ARM Trusted Firmware */
 #define BOOT_IMAGES \
        "second_image=unph_bl.bin\0" \
 #define CONFIG_SYS_INIT_SP_ADDR                (CONFIG_SYS_TEXT_BASE)
 
 /* only for SPL */
-#if defined(CONFIG_ARM64)
-#define CONFIG_SPL_TEXT_BASE           0x30000000
-#elif defined(CONFIG_ARCH_UNIPHIER_SLD3) || \
+#if defined(CONFIG_ARCH_UNIPHIER_SLD3) || \
        defined(CONFIG_ARCH_UNIPHIER_LD4) || \
        defined(CONFIG_ARCH_UNIPHIER_SLD8)
 #define CONFIG_SPL_TEXT_BASE           0x00040000
 #define CONFIG_SPL_TEXT_BASE           0x00100000
 #endif
 
-#if defined(CONFIG_ARCH_UNIPHIER_LD11)
-#define CONFIG_SPL_STACK               (0x30014c00)
-#elif defined(CONFIG_ARCH_UNIPHIER_LD20)
-#define CONFIG_SPL_STACK               (0x3001c000)
-#else
 #define CONFIG_SPL_STACK               (0x00100000)
-#endif
 
 #define CONFIG_SPL_FRAMEWORK
-#ifdef CONFIG_ARM64
-#define CONFIG_SPL_BOARD_LOAD_IMAGE
-#endif
 
 #define CONFIG_SYS_NAND_U_BOOT_OFFS            0x20000
 
 
 #define CONFIG_SPL_TARGET                      "u-boot-with-spl.bin"
 #define CONFIG_SPL_MAX_FOOTPRINT               0x10000
-#if defined(CONFIG_ARCH_UNIPHIER_LD20)
-#define CONFIG_SPL_MAX_SIZE                    0x14000
-#else
 #define CONFIG_SPL_MAX_SIZE                    0x10000
-#endif
-#if defined(CONFIG_ARCH_UNIPHIER_LD11)
-#define CONFIG_SPL_BSS_START_ADDR              0x30012000
-#elif defined(CONFIG_ARCH_UNIPHIER_LD20)
-#define CONFIG_SPL_BSS_START_ADDR              0x30016000
-#endif
 #define CONFIG_SPL_BSS_MAX_SIZE                        0x2000
 
 #define CONFIG_SPL_PAD_TO                      0x20000
index 57e22208c4cae20298f3fdcbe97dd1a610d2ab9e..335ce4e12e70f321fb2bcfebb1e64148d3af6b08 100644 (file)
 #define CONFIG_SYS_MEMTEST_END                 0x23e00000
 
 /* 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 + 0x4000)
 #define CONFIG_ENV_OFFSET      0x2000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_DATAFLASH_LOGIC_ADDR_CS0 + \
index e25bf99e1c23e3fe26f121f3f9f773c3f01e2458..5bacc9d834a34d976d826f54256cfc7a2c1923e6 100644 (file)
@@ -21,7 +21,6 @@
 /* U-Boot environment */
 #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
 
 /* U-Boot general configurations */
index 7b04e65d7010ba8946b3d747dcd9664484377fb8..f3c6c27696bf494e8ae21a1d250877ed955fe90d 100644 (file)
  * FLASH and environment organization
  */
 #if defined(CONFIG_VCT_NOR)
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_FLASH_NOT_MEM_MAPPED
 
 /*
 
 #if defined(CONFIG_VCT_ONENAND)
 #define CONFIG_USE_ONENAND_BOARD_INIT
-#define        CONFIG_ENV_IS_IN_ONENAND
 #define        CONFIG_SYS_ONENAND_BASE         0x00000000      /* this is not real address */
 #define CONFIG_SYS_FLASH_BASE          0x00000000
 #define CONFIG_ENV_ADDR                        (128 << 10)     /* after compr. U-Boot image */
@@ -233,11 +231,8 @@ int vct_gpio_get(int pin);
  * UBI configuration
  */
 #if defined(CONFIG_VCT_ONENAND)
-#define CONFIG_SYS_USE_UBI
-#define        CONFIG_RBTREE
 #define CONFIG_MTD_DEVICE              /* needed for mtdparts commands */
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_CMD_MTDPARTS
 
 #define MTDIDS_DEFAULT         "onenand0=onenand"
 #define MTDPARTS_DEFAULT       "mtdparts=onenand:128k(u-boot),"        \
@@ -252,7 +247,6 @@ int vct_gpio_get(int pin);
  * (NOR/OneNAND) usage and Linux kernel booting.
  */
 #if defined(CONFIG_VCT_SMALL_IMAGE)
-#undef CONFIG_CMD_REGINFO
 #undef CONFIG_CMD_STRINGS
 #undef CONFIG_CMD_TERMINAL
 
index f0e9a2e58d33838c868d18d0bcfd436dddcc116b..32ed2f95c9885bfabc899ef8906edf9ac82c411b 100644 (file)
 /*
  * Environment
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_ADDR                \
                        (CONFIG_SYS_FLASH_BASE + CONFIG_SYS_MONITOR_LEN)
 #define CONFIG_ENV_SECT_SIZE   0x20000 /* 128K(one sector) for env */
index 850a9bd49a4f298edf0e72c5270ecc71880c193b..5e9b79eb0428212d9006bde910a919a20ce4a420 100644 (file)
@@ -23,7 +23,6 @@
 #define CONFIG_SYS_I2C_TEGRA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 #define CONFIG_SYS_MMC_ENV_PART                2
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE)
index 1ab6476f3cb673c917053a02c4cbc5d6f58a8618..9b8b1010a9ced706ce9d83f3aea2b4b1c3d06b0f 100644 (file)
@@ -21,7 +21,6 @@
 #define CONFIG_MACH_TYPE               MACH_TYPE_VENTANA
 
 /* Environment in eMMC, at the end of 2nd "boot sector" */
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET (-CONFIG_ENV_SIZE)
 #define CONFIG_SYS_MMC_ENV_DEV 0
 #define CONFIG_SYS_MMC_ENV_PART 2
index 11cb53587c38feca380208d07449f41d0eb5242c..3b1233f61525280d5c75a598190d163ea261e802 100644 (file)
 #define CONFIG_SYS_FLASH_EMPTY_INFO    /* flinfo indicates empty blocks */
 #define FLASH_MAX_SECTOR_SIZE          0x00040000
 #define CONFIG_ENV_SIZE                        CONFIG_ENV_SECT_SIZE
-#define CONFIG_ENV_IS_IN_FLASH         1
 
 #endif /* __VEXPRESS_AEMV8A_H */
index 0880b627ae602834da68c39f1a67b185d80724eb..8f9ba91641d39d7e1c5b61b5e7bdcde7631072a3 100644 (file)
 #define CONFIG_ENV_OVERWRITE           1
 
 /* Store environment at top of flash */
-#define CONFIG_ENV_IS_IN_FLASH         1
 #define CONFIG_ENV_OFFSET              (PHYS_FLASH_SIZE - \
                                        (2 * CONFIG_ENV_SECT_SIZE))
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE1 + \
index 3bd8dd60b5b772a12b165e78477c35b3ef72af38..3f236aa13c8ac9a7f0971500bfff386cd11086e6 100644 (file)
@@ -14,7 +14,6 @@
 
 #include <configs/rk3288_common.h>
 
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_SPL_SPI_LOAD
 #define CONFIG_SPI_FLASH_GIGADEVICE
 
index 2460294d88033c6c21460e2fb90c240290920b59..ae5f627ad87ff2cebf60403024af0da1e0bf10c3 100644 (file)
 #define CONFIG_SYS_MAX_NAND_DEVICE     1
 #define CONFIG_SYS_NAND_BASE           NFC_BASE_ADDR
 
-/* UBI */
-#define CONFIG_CMD_UBIFS
-#define CONFIG_RBTREE
-#define CONFIG_LZO
-
 /* Dynamic MTD partition support */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_MTD_DEVICE
 #define MTDIDS_DEFAULT                 "nand0=fsl_nfc"
index dc35b289d42a55de1f0671167173206ffade9e44..adff1b6d7f7100d40100acb891c1c1d485db357a 100644 (file)
 
 #endif
 
-/* USB */
-
-#ifdef CONFIG_CMD_USB
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     3
-#endif
-
 /* USB device */
 #define CONFIG_USB_ETHER
 #define CONFIG_USB_ETH_RNDIS
index 78e14b38c113a78108581793f5ebc10c335cae57..0fed7f37ca388e2c527840cc7178c648f51a1688 100644 (file)
 #define CONFIG_ENV_SIZE                        SZ_8K
 #define CONFIG_ENV_OFFSET_REDUND       (9 * SZ_64K)
 #define CONFIG_ENV_SIZE_REDUND         CONFIG_ENV_SIZE
-#define CONFIG_ENV_IS_IN_MMC
 
 #ifdef CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SUPPORT_EMMC_BOOT
index 1aed81fc14ddb4d42becc2565e5c2df083b1b87b..13ebafeac86e4878ff58ee6d34a5f5ca21b5863a 100644 (file)
  * Environment
  */
 #ifndef CONFIG_SYS_RAMBOOT
-       #define CONFIG_ENV_IS_IN_FLASH
        #define CONFIG_ENV_ADDR         (CONFIG_SYS_MONITOR_BASE + 0xc0000)
        #define CONFIG_ENV_SECT_SIZE    0x20000 /* 128K(one sector) for env */
        #define CONFIG_ENV_SIZE         0x2000
 #define CONFIG_ENV_SIZE_REDUND (CONFIG_ENV_SIZE)
 
 #else
-       #define CONFIG_ENV_IS_NOWHERE           /* Store ENV in memory only */
        #define CONFIG_ENV_ADDR         (CONFIG_SYS_MONITOR_BASE - 0x1000)
        #define CONFIG_ENV_SIZE         0x2000
 #endif
index afc5edf33b47c55f1cc39763f17d96bd938cd43c..a8a48a597f0af262b4500100571acea539ac4f45 100644 (file)
@@ -88,6 +88,7 @@
        "fdt_addr=0x18000000\0" \
        "ip_dyn=yes\0" \
        "mmcdev=" __stringify(CONFIG_SYS_MMC_ENV_DEV) "\0" \
+       "finduuid=part uuid mmc 0:1 uuid\0" \
        "update_sd_firmware_filename=u-boot.imx\0" \
        "update_sd_firmware=" \
                "if test ${ip_dyn} = yes; then " \
 
 #define CONFIG_BOOTCOMMAND \
           "run findfdt; " \
+          "run finduuid; " \
           "run distro_bootcmd"
 
 #include <config_distro_bootcmd.h>
 /* Environment organization */
 #define CONFIG_ENV_SIZE                        (8 * 1024)
 
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (768 * 1024)
 #define CONFIG_SYS_MMC_ENV_DEV         0
 
index afe3eaed46d1c5f74b2ca36a159222162a76251f..139cde4d113fde153570f9e478a73ddb6e62f9a6 100644 (file)
@@ -23,7 +23,6 @@
 
 /* MMC Configs */
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC2_BASE_ADDR
-#define CONFIG_SYS_FSL_ESDHC_FORCE_VSELECT
 #define CONFIG_SYS_FSL_ESDHC_HAS_DDR_MODE
 #define CONFIG_SUPPORT_EMMC_BOOT
 
@@ -50,7 +49,6 @@
 
 #define CONFIG_ENV_OFFSET              (6 * SZ_64K)
 #define CONFIG_ENV_SIZE                        SZ_8K
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_SYS_MMC_ENV_DEV         0
 
 /* VDD voltage 1.65 - 1.95 */
        "ip_dyn=yes\0" \
        "mmcdev=0\0" \
        "mmcpart=1\0" \
-       "mmcroot=/dev/mmcblk0p2 rootwait rw\0" \
+       "finduuid=part uuid mmc 0:2 uuid\0" \
        "dfu_alt_info=boot raw 0x2 0x400 mmcpart 1\0" \
        "mmcargs=setenv bootargs console=${console},${baudrate} " \
-               "root=${mmcroot}\0" \
+               "root=PARTUUID=${uuid} rootwait rw\0" \
        "loadbootscript=" \
                "fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${script};\0" \
        "bootscript=echo Running bootscript from mmc ...; " \
        "loadimage=fatload mmc ${mmcdev}:${mmcpart} ${loadaddr} ${image}\0" \
        "loadfdt=fatload mmc ${mmcdev}:${mmcpart} ${fdt_addr} ${fdt_file}\0" \
        "mmcboot=echo Booting from mmc ...; " \
+               "run finduuid; " \
                "run mmcargs; " \
                "if test ${boot_fdt} = yes || test ${boot_fdt} = try; then " \
                        "if run loadfdt; then " \
index 23b6eae5330a78b74928aa93f99b4bd34a7d273c..75ae8a3e3338be93cdaf6b851fdf9587a1cc8627 100644 (file)
 
 /* environment organization */
 #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       1
index 46a67061716da88922cb0903579a3bfc626ed48d..515f360400eb7c10419dad1143edbb767608d402 100644 (file)
 /*
  * MTD Command for mtdparts
  */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_MTD_DEVICE
 #define CONFIG_FLASH_CFI_MTD
 #define CONFIG_MTD_PARTITIONS
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + \
                                CONFIG_SYS_MONITOR_LEN)
 
-#define CONFIG_ENV_IS_IN_FLASH
-
 /*
  * CFI FLASH driver setup
  */
index 56f53b97323069254e9e8afb3c18950298bc4add..807cb99c81ac9690a2cf63138c56bd6bd5538eec 100644 (file)
  * Environment
  */
 
-#define CONFIG_ENV_IS_IN_NAND          1
 #define CONFIG_ENV_SIZE                        0x00020000
 #define CONFIG_ENV_OFFSET              0x00100000
 #define CONFIG_ENV_OFFSET_REDUND       0x00120000
index c7d32fedb3c51eddb92aeb59440ed63753a5e050..007670740ebf7257cb2eb22e49cbb65757a828ec 100644 (file)
@@ -33,8 +33,6 @@
 #define CONFIG_SYS_MONITOR_BASE                        CONFIG_SYS_FLASH_BASE
 #define CONFIG_SYS_MONITOR_LEN                 0x60000
 
-#define CONFIG_ENV_IS_IN_FLASH
-
 /* Serial Configuration (PL011) */
 #define CONFIG_SYS_SERIAL0                     0xD0000000
 #define CONFIG_SYS_SERIAL1                     0xD0080000
@@ -71,7 +69,6 @@
 /* UBI/UBI config options */
 #define CONFIG_MTD_DEVICE
 #define CONFIG_MTD_PARTITIONS
-#define CONFIG_RBTREE
 
 /* Ethernet config options */
 #define CONFIG_MII
 /*
  * Command support defines
  */
-#define CONFIG_CMD_MTDPARTS
 #define CONFIG_CMD_NAND
 #define CONFIG_CMD_SAVES
-#define CONFIG_CMD_UBIFS
-#define CONFIG_LZO
 
 /* Filesystem support (for USB key) */
 #define CONFIG_SUPPORT_VFAT
index b0e7e8115f78d0c0f163e3bc1648e84dbaa5f92e..4d02cd45f599a21de0d7e8f898d8c40092e027c7 100644 (file)
 #define VIDEO_IO_OFFSET                                0
 #define CONFIG_X86EMU_RAW_IO
 
-#undef CONFIG_ENV_IS_NOWHERE
 #undef CONFIG_ENV_SIZE
 #define CONFIG_ENV_SIZE                        0x1000
 #define CONFIG_ENV_SECT_SIZE           0x1000
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_OFFSET              0x003f8000
 
 #define CONFIG_STD_DEVICES_SETTINGS    "stdin=usbkbd,i8042-kbd,serial\0" \
index d104449e3b07d2ee01366b9914fcb6e55aafe4e0..aa1e505e6903e65ceed59172f558535cc026641b 100644 (file)
@@ -23,7 +23,6 @@
 
 #define CONFIG_LMB
 
-#define CONFIG_LZO
 #undef CONFIG_ZLIB
 #undef CONFIG_GZIP
 #define CONFIG_SYS_BOOTM_LEN           (16 << 20)
 /*-----------------------------------------------------------------------
  * Environment configuration
  */
-#define CONFIG_ENV_IS_IN_SPI_FLASH
 #define CONFIG_ENV_SIZE                        0x01000
 
 /*-----------------------------------------------------------------------
  * USB configuration
  */
 #define CONFIG_USB_EHCI_PCI
-#define CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS     12
 #define CONFIG_SYS_USB_EVENT_POLL
 
 #define CONFIG_USB_HOST_ETHER
index 2e6e75d5e34b335c9ce2188554a128861d1e3b23..bd829a9495670802bcddeeb062554b46df0f11d7 100644 (file)
@@ -19,7 +19,6 @@
 
 /* Environment */
 #define CONFIG_ENV_SIZE                        (16 * 1024)
-#define CONFIG_ENV_IS_NOWHERE
 #define CONFIG_ENV_OVERWRITE
 
 /* Booting Linux */
diff --git a/include/configs/xilinx-ppc.h b/include/configs/xilinx-ppc.h
deleted file mode 100644 (file)
index e8a0c1c..0000000
+++ /dev/null
@@ -1,88 +0,0 @@
-/*
- * (C) Copyright 2008
- *  Ricado Ribalda-Universidad Autonoma de Madrid-ricardo.ribalda@gmail.com
- *  This work has been supported by: QTechnology  http://qtec.com/
- *
- *  (C) Copyright 2008
- *  Georg Schardt <schardt@team-ctech.de>
- *
- * SPDX-License-Identifier:    GPL-2.0+
-*/
-
-#ifndef __CONFIG_XLX_H
-#define __CONFIG_XLX_H
-
-/*
-#define DEBUG
-#define ET_DEBUG
-*/
-
-/*Mem Map*/
-#define CONFIG_SYS_SDRAM_BASE          0x0
-#define CONFIG_SYS_MONITOR_BASE        CONFIG_SYS_TEXT_BASE
-#define CONFIG_SYS_MONITOR_LEN         (192 * 1024)
-#define CONFIG_SYS_MALLOC_LEN          (CONFIG_ENV_SIZE + 128 * 1024)
-
-/*Cmd*/
-#define CONFIG_CMD_REGINFO
-#undef CONFIG_CMD_MTDPARTS
-
-/*Misc*/
-#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)
-#define CONFIG_SYS_MAXARGS             16
-                                       /* max number of command args   */
-#define CONFIG_SYS_BARGSIZE            CONFIG_SYS_CBSIZE
-                                       /* Boot Argument Buffer Size */
-#define CONFIG_SYS_MEMTEST_START       0x00400000
-                                       /* memtest works on           */
-#define CONFIG_SYS_MEMTEST_END         0x00C00000
-                                       /* 4 ... 12 MB in DRAM        */
-#define CONFIG_SYS_LOAD_ADDR           0x00400000
-                                       /* default load address       */
-#define CONFIG_SYS_EXTBDINFO           1
-                                       /* Extended board_into (bd_t) */
-                                       /* decrementer freq: 1 ms ticks */
-#define CONFIG_CMDLINE_EDITING         /* add command line history     */
-#define CONFIG_AUTO_COMPLETE           /* add autocompletion support   */
-#define CONFIG_MX_CYCLIC               /* enable mdc/mwc commands      */
-#define CONFIG_LOADS_ECHO              /* echo on for serial download  */
-#define CONFIG_SYS_LOADS_BAUD_CHANGE   /* allow baudrate change        */
-#define CONFIG_SYS_BOOTMAPSZ           (8 << 20)
-                               /* Initial Memory map for Linux */
-
-/*Stack*/
-#define CONFIG_SYS_INIT_RAM_ADDR       0x800000/* 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
-/*Speed*/
-#define CONFIG_SYS_CLK_FREQ    XPAR_CORE_CLOCK_FREQ_HZ
-
-/*Flash*/
-#ifdef XPAR_FLASH_MEM0_BASEADDR
-#define        CONFIG_SYS_FLASH_BASE           XPAR_FLASH_MEM0_BASEADDR
-#define        CONFIG_SYS_FLASH_CFI            1
-#define        CONFIG_FLASH_CFI_DRIVER 1
-#define        CONFIG_SYS_FLASH_EMPTY_INFO     1
-#define        CONFIG_SYS_MAX_FLASH_BANKS      1
-#define        CONFIG_SYS_FLASH_PROTECTION
-#define CONFIG_CMD_MTDPARTS
-#define CONFIG_MTD_DEVICE              /* needed for mtdparts commands */
-#define CONFIG_FLASH_CFI_MTD
-#else
-#define CONFIG_ENV_IS_NOWHERE
-#endif
-
-/* The following table includes the supported baudrates */
-# define CONFIG_SYS_BAUDRATE_TABLE \
-       {300, 600, 1200, 2400, 4800, 9600, 19200, 38400, 57600, 115200, 230400}
-
-#endif                                         /* __CONFIG_H */
index c7fcd86dd5cc091c6b358c501ced479bf8d0331c..7c5ec1924d4f71c1f7bf160e5c7dc5d6f0f64563 100644 (file)
@@ -73,7 +73,6 @@
 # ifndef CONFIG_ZYNQ_SDHCI_MAX_FREQ
 #  define CONFIG_ZYNQ_SDHCI_MAX_FREQ   200000000
 # endif
-# define CONFIG_ENV_IS_IN_FAT
 # define FAT_ENV_DEVICE_AND_PART       "0:auto"
 # define FAT_ENV_FILE                  "uboot.env"
 # define FAT_ENV_INTERFACE             "mmc"
@@ -91,8 +90,6 @@
 #define CONFIG_SYS_LOAD_ADDR           0x8000000
 
 #if defined(CONFIG_ZYNQMP_USB)
-#define CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS      2
-
 #define CONFIG_SYS_DFU_DATA_BUF_SIZE   0x1800000
 #define DFU_DEFAULT_POLL_TIMEOUT       300
 #define CONFIG_USB_CABLE_CHECK
 #endif
 
 /* Do not preserve environment */
-#if !defined(CONFIG_ENV_IS_IN_FAT)
-#define CONFIG_ENV_IS_NOWHERE          1
-#endif
 #define CONFIG_ENV_SIZE                        0x8000
 
 /* Monitor Command Prompt */
index 07f26544fdbfdd67511b1b29a00dda989ab2efdf..9b6a5f8ce1c831196ecdb73bd13c6e1639385bb6 100644 (file)
@@ -517,7 +517,6 @@ extern unsigned long get_board_sys_clk(unsigned long dummy);
 /*
  * Environment Configuration
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SECT_SIZE   0x20000         /* 128k (one sector) for env */
 #define CONFIG_ENV_SIZE                0x8000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE + CONFIG_SYS_MONITOR_LEN)
index 2645006b37f2c28fd124fdc170222ebf341cf596..715acc4fbc338754c85c4b704d15c3caccdb5448 100644 (file)
 /*
  * Environment Configuration
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SECT_SIZE   0x20000         /* 128k (one sector) for env */
 #define CONFIG_ENV_SIZE                0x8000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - (256 * 1024))
index abbaeaad10b00fc9c4b44e42bc9a9213733c0cc4..7d05a5aa827310373f0d3412252bfc1228c4390d 100644 (file)
@@ -371,7 +371,6 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);
 /*
  * Environment Configuration
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SECT_SIZE   0x20000         /* 128k (one sector) for env */
 #define CONFIG_ENV_SIZE                0x8000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - (256 * 1024))
index 254fc12cf6af6952d1adc13348f0934c9f706f29..68795d8faa703330ac51a10c7b61742c963e00ea 100644 (file)
@@ -370,7 +370,6 @@ extern unsigned long get_board_ddr_clk(unsigned long dummy);
 /*
  * Environment Configuration
  */
-#define CONFIG_ENV_IS_IN_FLASH 1
 #define CONFIG_ENV_SECT_SIZE   0x20000         /* 128k (one sector) for env */
 #define CONFIG_ENV_SIZE                0x8000
 #define CONFIG_ENV_ADDR                (CONFIG_SYS_MONITOR_BASE - (256 * 1024))
index e13b792f38679eb911e8c17fc48b1c0bb1675c26..629e3df641e4f93ac60157a008ea6c3204af8c37 100644 (file)
@@ -9,7 +9,7 @@
 #define __XPRESS_CONFIG_H
 
 #include "mx6_common.h"
-#include <asm/imx-common/gpio.h>
+#include <asm/mach-imx/gpio.h>
 
 /* SPL options */
 #include "imx6_spl.h"
@@ -57,7 +57,6 @@
 
 /* Environment is in stored in the eMMC boot partition */
 #define CONFIG_ENV_SIZE                        (16 << 10)
-#define CONFIG_ENV_IS_IN_MMC
 #define CONFIG_ENV_OFFSET              (512 << 10)
 #define CONFIG_SYS_MMC_ENV_DEV         0       /* USDHC2 */
 #define CONFIG_SYS_MMC_ENV_PART                1       /* boot parition */
index 7d7d9bb98313412c9cb4f2b8ebf8c47723f466c9..206ec344d940dfc1cea5b5b4413deea960726734 100644 (file)
  * Put environment in top block (64kB)
  * Another option would be to put env. in 2nd param block offs 8KB, size 8KB
  */
-#define CONFIG_ENV_IS_IN_FLASH
 #define CONFIG_ENV_OFFSET    (CONFIG_SYS_FLASH_SIZE - CONFIG_SYS_FLASH_SECT_SZ)
 #define CONFIG_ENV_SIZE             CONFIG_SYS_FLASH_SECT_SZ
 
index 9b3769b5f1ede74d7843dee5688c065fd8ae978f..e73082414612085e3d490faf5593ba18f33ef7a7 100644 (file)
@@ -22,7 +22,6 @@
  * Environment settings
  */
 #define        CONFIG_ENV_OVERWRITE
-#define CONFIG_ENV_IS_IN_FLASH         1
 #define CONFIG_ENV_ADDR                        0x40000
 #define CONFIG_ENV_SIZE                        0x10000
 
index c1daf65621324678495cda4d19fb3d7c5cab8e87..21a78c4bfac0b7ea9f568f7bb2ffaab9a9ff60f6 100644 (file)
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_INITRD_TAG
 
-/*
- * Compressions
- */
-#define CONFIG_LZO
-
 /*
  * Hardware drivers
  */
 #define CONFIG_SYS_MAX_FLASH_SECT      256
 
 #define CONFIG_ENV_ADDR                        (CONFIG_SYS_FLASH_BASE + 0x00040000)
-#define CONFIG_ENV_IS_IN_FLASH         1
 #define CONFIG_ENV_SECT_SIZE           (128 * 1024)
 #define CONFIG_ENV_SIZE                        (128 * 1024)
 
index 4b6b08885134125187fb38a82a4e4a983c6483e5..83a2a028e9f683b1769a86d1454080701b1f0fa7 100644 (file)
 #ifndef CONFIG_ENV_IS_NOWHERE
 # ifdef CONFIG_MTD_NOR_FLASH
 /* Environment in NOR flash */
-#  define CONFIG_ENV_IS_IN_FLASH
 # elif defined(CONFIG_ZYNQ_QSPI)
 /* Environment in Serial Flash */
-#  define CONFIG_ENV_IS_IN_SPI_FLASH
-# elif !defined(CONFIG_MTD_NOR_FLASH)
-#  define CONFIG_ENV_IS_NOWHERE
 # endif
 
 # define CONFIG_ENV_SECT_SIZE          CONFIG_ENV_SIZE
index f39d3f1171a0d87393571ad96fd2e15cae30077c..7e322d9d2764d4091cd00cf87709a33da991c38f 100644 (file)
@@ -110,7 +110,7 @@ struct dfu_entity {
                struct sf_internal_data sf;
        } data;
 
-       long (*get_medium_size)(struct dfu_entity *dfu);
+       int (*get_medium_size)(struct dfu_entity *dfu, u64 *size);
 
        int (*read_medium)(struct dfu_entity *dfu,
                        u64 offset, void *buf, long *len);
@@ -132,7 +132,7 @@ struct dfu_entity {
        u8 *i_buf;
        u8 *i_buf_start;
        u8 *i_buf_end;
-       long r_left;
+       u64 r_left;
        long b_left;
 
        u32 bad_skip;   /* for nand use */
index c5ea391aec169a2c8a17666b0257896dbc4bf45c..c49d287dd6004d9727398d734129c16dbb784139 100644 (file)
@@ -352,6 +352,24 @@ int of_parse_phandle_with_args(const struct device_node *np,
                               const char *list_name, const char *cells_name,
                               int index, struct of_phandle_args *out_args);
 
+/**
+ * of_count_phandle_with_args() - Count the number of phandle in a list
+ *
+ * @np:                pointer to a device tree node containing a list
+ * @list_name: property name that contains a list
+ * @cells_name:        property name that specifies phandles' arguments count
+ * @return number of phandle found, -ENOENT if
+ *     @list_name does not exist, -EINVAL if a phandle was not found,
+ *     @cells_name could not be found, the arguments were truncated or there
+ *     were too many arguments.
+ *
+ * Returns number of phandle found on success, on error returns appropriate
+ * errno value.
+ *
+ */
+int of_count_phandle_with_args(const struct device_node *np,
+                              const char *list_name, const char *cells_name);
+
 /**
  * of_alias_scan() - Scan all properties of the 'aliases' node
  *
index 15ad5199c2f017784a0796215da94339e18532eb..210ddb2e5d7464573ef6d8c85cd0cd1d2a85291a 100644 (file)
@@ -15,6 +15,8 @@
 /* Enable checks to protect against invalid calls */
 #undef OF_CHECKS
 
+struct resource;
+
 /**
  * ofnode - reference to a device tree node
  *
@@ -432,6 +434,23 @@ int ofnode_parse_phandle_with_args(ofnode node, const char *list_name,
                                   int index,
                                   struct ofnode_phandle_args *out_args);
 
+/**
+ * ofnode_count_phandle_with_args() - Count number of phandle in a list
+ *
+ * This function is useful to count phandles into a list.
+ * Returns number of phandle on success, on error returns appropriate
+ * errno value.
+ *
+ * @node:      device tree node containing a list
+ * @list_name: property name that contains a list
+ * @cells_name:        property name that specifies phandles' arguments count
+ * @return number of phandle on success, -ENOENT if @list_name does not
+ *      exist, -EINVAL if a phandle was not found, @cells_name could not
+ *      be found.
+ */
+int ofnode_count_phandle_with_args(ofnode node, const char *list_name,
+                                  const char *cells_name);
+
 /**
  * ofnode_path() - find a node by full path
  *
@@ -605,4 +624,6 @@ int ofnode_read_simple_size_cells(ofnode node);
  */
 bool ofnode_pre_reloc(ofnode node);
 
+int ofnode_read_resource(ofnode node, uint index, struct resource *res);
+
 #endif
diff --git a/include/dm/platform_data/serial_stm32x7.h b/include/dm/platform_data/serial_stm32x7.h
deleted file mode 100644 (file)
index 328a8a3..0000000
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- * (C) Copyright 2016
- * Vikas Manocha, <vikas.manocha@st.com>
- *
- * SPDX-License-Identifier:    GPL-2.0+
- */
-
-#ifndef __SERIAL_STM32x7_H
-#define __SERIAL_STM32x7_H
-
-/* Information about a serial port */
-struct stm32x7_serial_platdata {
-       struct stm32_usart *base;  /* address of registers in physical memory */
-       unsigned int clock;
-};
-
-#endif /* __SERIAL_STM32x7_H */
index b86a2f5feceb862967e912519003ff900a641b16..c3a4a5611a70aad6fd7b4669524c0f2d461195dd 100644 (file)
@@ -44,16 +44,6 @@ static inline bool dev_of_valid(struct udevice *dev)
        return ofnode_valid(dev_ofnode(dev));
 }
 
-/**
- * dev_read_resource() - obtain an indexed resource from a device.
- *
- * @dev: devuce to examine
- * @index index of the resource to retrieve (0 = first)
- * @res returns the resource
- * @return 0 if ok, negative on error
- */
-int dev_read_resource(struct udevice *dev, uint index, struct resource *res);
-
 #ifndef CONFIG_DM_DEV_READ_INLINE
 /**
  * dev_read_u32_default() - read a 32-bit integer from a device's DT property
@@ -208,6 +198,24 @@ int dev_read_phandle_with_args(struct udevice *dev, const char *list_name,
                                int index,
                                struct ofnode_phandle_args *out_args);
 
+/**
+ * dev_count_phandle_with_args() - Return phandle number in a list
+ *
+ * This function is usefull to get phandle number contained in a property list.
+ * For example, this allows to allocate the right amount of memory to keep
+ * clock's reference contained into the "clocks" property.
+ *
+ *
+ * @dev:       device whose node containing a list
+ * @list_name: property name that contains a list
+ * @cells_name:        property name that specifies phandles' arguments count
+ * @Returns number of phandle found on success, on error returns appropriate
+ * errno value.
+ */
+
+int dev_count_phandle_with_args(struct udevice *dev, const char *list_name,
+                               const char *cells_name);
+
 /**
  * dev_read_addr_cells() - Get the number of address cells for a device's node
  *
@@ -266,7 +274,7 @@ int dev_read_phandle(struct udevice *dev);
  * @lenp: place to put length on success
  * @return pointer to property, or NULL if not found
  */
-const u32 *dev_read_prop(struct udevice *dev, const char *propname, int *lenp);
+const void *dev_read_prop(struct udevice *dev, const char *propname, int *lenp);
 
 /**
  * dev_read_alias_seq() - Get the alias sequence number of a node
@@ -348,6 +356,16 @@ const uint8_t *dev_read_u8_array_ptr(struct udevice *dev, const char *propname,
  */
 int dev_read_enabled(struct udevice *dev);
 
+/**
+ * dev_read_resource() - obtain an indexed resource from a device.
+ *
+ * @dev: devuce to examine
+ * @index index of the resource to retrieve (0 = first)
+ * @res returns the resource
+ * @return 0 if ok, negative on error
+ */
+int dev_read_resource(struct udevice *dev, uint index, struct resource *res);
+
 #else /* CONFIG_DM_DEV_READ_INLINE is enabled */
 
 static inline int dev_read_u32_default(struct udevice *dev,
@@ -416,6 +434,13 @@ static inline int dev_read_phandle_with_args(struct udevice *dev,
                                              out_args);
 }
 
+static inline int dev_count_phandle_with_args(struct udevice *dev,
+               const char *list_name, const char *cells_name)
+{
+       return ofnode_count_phandle_with_args(dev_ofnode(dev), list_name,
+                                             cells_name);
+}
+
 static inline int dev_read_addr_cells(struct udevice *dev)
 {
        /* NOTE: this call should walk up the parent stack */
@@ -443,8 +468,8 @@ static inline int dev_read_phandle(struct udevice *dev)
        return fdt_get_phandle(gd->fdt_blob, dev_of_offset(dev));
 }
 
-static inline const u32 *dev_read_prop(struct udevice *dev,
-                                      const char *propname, int *lenp)
+static inline const void *dev_read_prop(struct udevice *dev,
+                                       const char *propname, int *lenp)
 {
        return ofnode_get_property(dev_ofnode(dev), propname, lenp);
 }
@@ -482,6 +507,12 @@ static inline int dev_read_enabled(struct udevice *dev)
        return fdtdec_get_is_enabled(gd->fdt_blob, dev_of_offset(dev));
 }
 
+static inline int dev_read_resource(struct udevice *dev, uint index,
+                                   struct resource *res)
+{
+       return ofnode_read_resource(dev_ofnode(dev), index, res);
+}
+
 #endif /* CONFIG_DM_DEV_READ_INLINE */
 
 /**
index 692846c7941b53ac8449ed69a21b2a946a89c3bf..e3e9f7919c318baed4063fc7199def1a6d684018 100644 (file)
@@ -5,30 +5,50 @@
 #ifndef __GXBB_CLKC_H
 #define __GXBB_CLKC_H
 
-#define CLKID_CPUCLK           1
 #define CLKID_HDMI_PLL         2
 #define CLKID_FCLK_DIV2                4
 #define CLKID_FCLK_DIV3                5
 #define CLKID_FCLK_DIV4                6
+#define CLKID_GP0_PLL          9
 #define CLKID_CLK81            12
 #define CLKID_MPLL2            15
-#define CLKID_SPI              34
+#define CLKID_SPICC            21
 #define CLKID_I2C              22
 #define CLKID_SAR_ADC          23
+#define CLKID_RNG0             25
+#define CLKID_UART0            26
+#define CLKID_SPI              34
 #define CLKID_ETH              36
+#define CLKID_AIU_GLUE         38
+#define CLKID_IEC958           39
+#define CLKID_I2S_OUT          40
+#define CLKID_MIXER_IFACE      44
+#define CLKID_AIU              47
+#define CLKID_UART1            48
 #define CLKID_USB0             50
 #define CLKID_USB1             51
 #define CLKID_USB              55
 #define CLKID_HDMI_PCLK                63
 #define CLKID_USB1_DDR_BRIDGE  64
 #define CLKID_USB0_DDR_BRIDGE  65
+#define CLKID_UART2            68
 #define CLKID_SANA             69
 #define CLKID_GCLK_VENCI_INT0  77
+#define CLKID_AOCLK_GATE       80
+#define CLKID_IEC958_GATE      81
 #define CLKID_AO_I2C           93
 #define CLKID_SD_EMMC_A                94
 #define CLKID_SD_EMMC_B                95
 #define CLKID_SD_EMMC_C                96
 #define CLKID_SAR_ADC_CLK      97
 #define CLKID_SAR_ADC_SEL      98
+#define CLKID_MALI_0_SEL       100
+#define CLKID_MALI_0           102
+#define CLKID_MALI_1_SEL       103
+#define CLKID_MALI_1           105
+#define CLKID_MALI             106
+#define CLKID_CTS_AMCLK                107
+#define CLKID_CTS_MCLK_I958    110
+#define CLKID_CTS_I958         113
 
 #endif /* __GXBB_CLKC_H */
diff --git a/include/dt-bindings/clock/stm32fx-clock.h b/include/dt-bindings/clock/stm32fx-clock.h
new file mode 100644 (file)
index 0000000..49bb3c2
--- /dev/null
@@ -0,0 +1,59 @@
+/*
+ * stm32fx-clock.h
+ *
+ * Copyright (C) 2016 STMicroelectronics
+ * Author: Gabriel Fernandez for STMicroelectronics.
+ * License terms:  GNU General Public License (GPL), version 2
+ */
+
+/*
+ * List of clocks wich are not derived from system clock (SYSCLOCK)
+ *
+ * The index of these clocks is the secondary index of DT bindings
+ * (see Documentatoin/devicetree/bindings/clock/st,stm32-rcc.txt)
+ *
+ * e.g:
+       <assigned-clocks = <&rcc 1 CLK_LSE>;
+*/
+
+#ifndef _DT_BINDINGS_CLK_STMFX_H
+#define _DT_BINDINGS_CLK_STMFX_H
+
+#define SYSTICK                        0
+#define FCLK                   1
+#define CLK_LSI                        2
+#define CLK_LSE                        3
+#define CLK_HSE_RTC            4
+#define CLK_RTC                        5
+#define PLL_VCO_I2S            6
+#define PLL_VCO_SAI            7
+#define CLK_LCD                        8
+#define CLK_I2S                        9
+#define CLK_SAI1               10
+#define CLK_SAI2               11
+#define CLK_I2SQ_PDIV          12
+#define CLK_SAIQ_PDIV          13
+
+#define END_PRIMARY_CLK                14
+
+#define CLK_HSI                        14
+#define CLK_SYSCLK             15
+#define CLK_HDMI_CEC           16
+#define CLK_SPDIF              17
+#define CLK_USART1             18
+#define CLK_USART2             19
+#define CLK_USART3             20
+#define CLK_UART4              21
+#define CLK_UART5              22
+#define CLK_USART6             23
+#define CLK_UART7              24
+#define CLK_UART8              25
+#define CLK_I2C1               26
+#define CLK_I2C2               27
+#define CLK_I2C3               28
+#define CLK_I2C4               29
+#define CLK_LPTIMER            30
+
+#define END_PRIMARY_CLK_F7     31
+
+#endif
diff --git a/include/dt-bindings/mfd/stm32f7-rcc.h b/include/dt-bindings/mfd/stm32f7-rcc.h
new file mode 100644 (file)
index 0000000..e36cc69
--- /dev/null
@@ -0,0 +1,112 @@
+/*
+ * This header provides constants for the STM32F7 RCC IP
+ */
+
+#ifndef _DT_BINDINGS_MFD_STM32F7_RCC_H
+#define _DT_BINDINGS_MFD_STM32F7_RCC_H
+
+/* AHB1 */
+#define STM32F7_RCC_AHB1_GPIOA         0
+#define STM32F7_RCC_AHB1_GPIOB         1
+#define STM32F7_RCC_AHB1_GPIOC         2
+#define STM32F7_RCC_AHB1_GPIOD         3
+#define STM32F7_RCC_AHB1_GPIOE         4
+#define STM32F7_RCC_AHB1_GPIOF         5
+#define STM32F7_RCC_AHB1_GPIOG         6
+#define STM32F7_RCC_AHB1_GPIOH         7
+#define STM32F7_RCC_AHB1_GPIOI         8
+#define STM32F7_RCC_AHB1_GPIOJ         9
+#define STM32F7_RCC_AHB1_GPIOK         10
+#define STM32F7_RCC_AHB1_CRC           12
+#define STM32F7_RCC_AHB1_BKPSRAM       18
+#define STM32F7_RCC_AHB1_DTCMRAM       20
+#define STM32F7_RCC_AHB1_DMA1          21
+#define STM32F7_RCC_AHB1_DMA2          22
+#define STM32F7_RCC_AHB1_DMA2D         23
+#define STM32F7_RCC_AHB1_ETHMAC                25
+#define STM32F7_RCC_AHB1_ETHMACTX      26
+#define STM32F7_RCC_AHB1_ETHMACRX      27
+#define STM32FF_RCC_AHB1_ETHMACPTP     28
+#define STM32F7_RCC_AHB1_OTGHS         29
+#define STM32F7_RCC_AHB1_OTGHSULPI     30
+
+#define STM32F7_AHB1_RESET(bit) (STM32F7_RCC_AHB1_##bit + (0x10 * 8))
+#define STM32F7_AHB1_CLOCK(bit) (STM32F7_RCC_AHB1_##bit)
+
+
+/* AHB2 */
+#define STM32F7_RCC_AHB2_DCMI          0
+#define STM32F7_RCC_AHB2_CRYP          4
+#define STM32F7_RCC_AHB2_HASH          5
+#define STM32F7_RCC_AHB2_RNG           6
+#define STM32F7_RCC_AHB2_OTGFS         7
+
+#define STM32F7_AHB2_RESET(bit)        (STM32F7_RCC_AHB2_##bit + (0x14 * 8))
+#define STM32F7_AHB2_CLOCK(bit)        (STM32F7_RCC_AHB2_##bit + 0x20)
+
+/* AHB3 */
+#define STM32F7_RCC_AHB3_FMC           0
+#define STM32F7_RCC_AHB3_QSPI          1
+
+#define STM32F7_AHB3_RESET(bit)        (STM32F7_RCC_AHB3_##bit + (0x18 * 8))
+#define STM32F7_AHB3_CLOCK(bit)        (STM32F7_RCC_AHB3_##bit + 0x40)
+
+/* APB1 */
+#define STM32F7_RCC_APB1_TIM2          0
+#define STM32F7_RCC_APB1_TIM3          1
+#define STM32F7_RCC_APB1_TIM4          2
+#define STM32F7_RCC_APB1_TIM5          3
+#define STM32F7_RCC_APB1_TIM6          4
+#define STM32F7_RCC_APB1_TIM7          5
+#define STM32F7_RCC_APB1_TIM12         6
+#define STM32F7_RCC_APB1_TIM13         7
+#define STM32F7_RCC_APB1_TIM14         8
+#define STM32F7_RCC_APB1_LPTIM1                9
+#define STM32F7_RCC_APB1_WWDG          11
+#define STM32F7_RCC_APB1_SPI2          14
+#define STM32F7_RCC_APB1_SPI3          15
+#define STM32F7_RCC_APB1_SPDIFRX       16
+#define STM32F7_RCC_APB1_UART2         17
+#define STM32F7_RCC_APB1_UART3         18
+#define STM32F7_RCC_APB1_UART4         19
+#define STM32F7_RCC_APB1_UART5         20
+#define STM32F7_RCC_APB1_I2C1          21
+#define STM32F7_RCC_APB1_I2C2          22
+#define STM32F7_RCC_APB1_I2C3          23
+#define STM32F7_RCC_APB1_I2C4          24
+#define STM32F7_RCC_APB1_CAN1          25
+#define STM32F7_RCC_APB1_CAN2          26
+#define STM32F7_RCC_APB1_CEC           27
+#define STM32F7_RCC_APB1_PWR           28
+#define STM32F7_RCC_APB1_DAC           29
+#define STM32F7_RCC_APB1_UART7         30
+#define STM32F7_RCC_APB1_UART8         31
+
+#define STM32F7_APB1_RESET(bit)        (STM32F7_RCC_APB1_##bit + (0x20 * 8))
+#define STM32F7_APB1_CLOCK(bit)        (STM32F7_RCC_APB1_##bit + 0x80)
+
+/* APB2 */
+#define STM32F7_RCC_APB2_TIM1          0
+#define STM32F7_RCC_APB2_TIM8          1
+#define STM32F7_RCC_APB2_USART1                4
+#define STM32F7_RCC_APB2_USART6                5
+#define STM32F7_RCC_APB2_ADC1          8
+#define STM32F7_RCC_APB2_ADC2          9
+#define STM32F7_RCC_APB2_ADC3          10
+#define STM32F7_RCC_APB2_SDMMC1                11
+#define STM32F7_RCC_APB2_SPI1          12
+#define STM32F7_RCC_APB2_SPI4          13
+#define STM32F7_RCC_APB2_SYSCFG                14
+#define STM32F7_RCC_APB2_TIM9          16
+#define STM32F7_RCC_APB2_TIM10         17
+#define STM32F7_RCC_APB2_TIM11         18
+#define STM32F7_RCC_APB2_SPI5          20
+#define STM32F7_RCC_APB2_SPI6          21
+#define STM32F7_RCC_APB2_SAI1          22
+#define STM32F7_RCC_APB2_SAI2          23
+#define STM32F7_RCC_APB2_LTDC          26
+
+#define STM32F7_APB2_RESET(bit)        (STM32F7_RCC_APB2_##bit + (0x24 * 8))
+#define STM32F7_APB2_CLOCK(bit)        (STM32F7_RCC_APB2_##bit + 0xA0)
+
+#endif /* _DT_BINDINGS_MFD_STM32F7_RCC_H */
index e13afa6608253e8272d7694b9d45058307ff61af..0732c442ff8d9e600c39979327d911b2dc0c6300 100644 (file)
@@ -4,8 +4,8 @@
  * SPDX-License-Identifier:    GPL-2.0+
  */
 
-#ifndef __DT_STTUCTS
-#define __DT_STTUCTS
+#ifndef __DT_STRUCTS
+#define __DT_STRUCTS
 
 /* These structures may only be used in SPL */
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
index 6f94986c6b3e0fca6c4954ed83fb0f9cf148cc78..d86230a2e927e311b4e44d44c3f9dae481e778f8 100644 (file)
@@ -224,6 +224,11 @@ int env_import(const char *buf, int check);
 /* Export from hash table into binary representation */
 int env_export(env_t *env_out);
 
+#ifdef CONFIG_SYS_REDUNDAND_ENVIRONMENT
+/* Select and import one of two redundant environments */
+int env_import_redund(const char *buf1, const char *buf2);
+#endif
+
 #endif /* DO_DEPS_ONLY */
 
 #endif /* _ENVIRONMENT_H_ */
index eda2ffaf66af62e5973ccbba6c1a149ccb0ff2ed..4a0947c6266a8a92cf423895a7490bbed8133767 100644 (file)
@@ -119,12 +119,6 @@ enum fdt_compat_id {
        COMPAT_NVIDIA_TEGRA20_EMC,      /* Tegra20 memory controller */
        COMPAT_NVIDIA_TEGRA20_EMC_TABLE, /* Tegra20 memory timing table */
        COMPAT_NVIDIA_TEGRA20_NAND,     /* Tegra2 NAND controller */
-       COMPAT_NVIDIA_TEGRA124_PMC,     /* Tegra 124 power mgmt controller */
-       COMPAT_NVIDIA_TEGRA186_SDMMC,   /* Tegra186 SDMMC controller */
-       COMPAT_NVIDIA_TEGRA210_SDMMC,   /* Tegra210 SDMMC controller */
-       COMPAT_NVIDIA_TEGRA124_SDMMC,   /* Tegra124 SDMMC controller */
-       COMPAT_NVIDIA_TEGRA30_SDMMC,    /* Tegra30 SDMMC controller */
-       COMPAT_NVIDIA_TEGRA20_SDMMC,    /* Tegra20 SDMMC controller */
        COMPAT_NVIDIA_TEGRA124_XUSB_PADCTL,
                                        /* Tegra124 XUSB pad controller */
        COMPAT_NVIDIA_TEGRA210_XUSB_PADCTL,
index e15d3aeaec5e8b48a926fb6e080f4f0fee3e072d..02b362d5e36e2d74a06960d4005f39f67f32adf0 100644 (file)
@@ -177,7 +177,8 @@ struct fsl_esdhc_cfg {
        phys_addr_t esdhc_base;
        u32     sdhc_clk;
        u8      max_bus_width;
-       u8      wp_enable;
+       int     wp_enable;
+       int     vs18_enable; /* Use 1.8V if set to 1 */
        struct mmc_config cfg;
 };
 
index 762704c208e1674663067ac9c1f7f3dfd6ba0971..eac5adc893395e1837008c0166ddec5729c424d6 100644 (file)
@@ -122,6 +122,7 @@ struct phy_ops {
        int     (*power_off)(struct phy *phy);
 };
 
+#ifdef CONFIG_PHY
 
 /**
  * generic_phy_init() - initialize the PHY port
@@ -220,4 +221,56 @@ int generic_phy_get_by_index(struct udevice *user, int index,
 int generic_phy_get_by_name(struct udevice *user, const char *phy_name,
                            struct phy *phy);
 
+#else /* CONFIG_PHY */
+
+static inline int generic_phy_init(struct phy *phy)
+{
+       return 0;
+}
+
+static inline int generic_phy_exit(struct phy *phy)
+{
+       return 0;
+}
+
+static inline int generic_phy_reset(struct phy *phy)
+{
+       return 0;
+}
+
+static inline int generic_phy_power_on(struct phy *phy)
+{
+       return 0;
+}
+
+static inline int generic_phy_power_off(struct phy *phy)
+{
+       return 0;
+}
+
+static inline int generic_phy_get_by_index(struct udevice *user, int index,
+                            struct phy *phy)
+{
+       return 0;
+}
+
+static inline int generic_phy_get_by_name(struct udevice *user, const char *phy_name,
+                           struct phy *phy)
+{
+       return 0;
+}
+
+#endif /* CONFIG_PHY */
+
+/**
+ * generic_phy_valid() - check if PHY port is valid
+ *
+ * @phy:       the PHY port to check
+ * @return TRUE if valid, or FALSE
+ */
+static inline bool generic_phy_valid(struct phy *phy)
+{
+       return phy->dev != NULL;
+}
+
 #endif /*__GENERIC_PHY_H */
index 1134ea52081c9e55851330e2fd50e92452c817b3..1cd3ceb37a54c080b6f960c522d56ffcd269c987 100644 (file)
@@ -1,14 +1,12 @@
 /*
- * definitions for MPC8260 I/O Ports
- *
- * (in addition to those provided in <asm/immap_8260.h>)
+ * definitions for MPC8xxx I/O Ports
  *
  * Murray.Jensen@cmst.csiro.au, 20-Oct-00
  */
 
 /*
  * this structure mirrors the layout of the five port registers in
- * the internal memory map - see iop8260_t in <asm/immap_8260.h>
+ * the internal memory map
  */
 typedef struct {
     unsigned int pdir;         /* Port Data Direction Register (35-3) */
@@ -46,7 +44,6 @@ typedef struct {
 
 /*
  * a table that contains configuration information for all 32 pins
- * of all four MPC8260 I/O ports.
  *
  * NOTE: in the second dimension of this table, index 0 refers to pin 31
  * and index 31 refers to pin 0. this made the code in the table look more
index bc5dd8190170fa0929e4414a9499389b4055ec0a..c1c1d8cce6c0c90cc653f136854bf2b088050b3f 100644 (file)
@@ -44,7 +44,6 @@ extern int board_nand_init(struct nand_chip *nand);
 #endif
 
 extern int nand_curr_device;
-extern struct mtd_info *nand_info[];
 
 static inline int nand_read(struct mtd_info *info, loff_t ofs, size_t *len,
                            u_char *buf)
@@ -145,4 +144,13 @@ int spl_nand_erase_one(int block, int page);
 /* platform specific init functions */
 void sunxi_nand_init(void);
 
+/*
+ * get_nand_dev_by_index - Get the nand info based in index.
+ *
+ * @dev - index to the nand device.
+ *
+ * returns pointer to the nand device info structure or NULL on failure.
+ */
+struct mtd_info *get_nand_dev_by_index(int dev);
+
 #endif /* _NAND_H_ */
index 5fcbcd2e74e3a2965eda64905416f1f2b792d4bc..7e9944d0d92e1fddb3b56908d12a6873115b74de 100644 (file)
  * @base:              Base register address
  * @reg_shift:         Shift size of registers (0=byte, 1=16bit, 2=32bit...)
  * @clock:             UART base clock speed in Hz
+ *
+ * @buf:               Pointer to the RX interrupt buffer
+ * @rd_ptr:            Read pointer in the RX interrupt buffer
+ * @wr_ptr:            Write pointer in the RX interrupt buffer
  */
 struct ns16550_platdata {
        unsigned long base;
@@ -58,6 +62,12 @@ struct ns16550_platdata {
        int clock;
        int reg_offset;
        u32 fcr;
+
+       int irq;
+
+       char *buf;
+       int rd_ptr;
+       int wr_ptr;
 };
 
 struct udevice;
index 049b248c5b016fe59e050cac153300202b071889..2bf4bdb1b8369a48b3c3f6ec89d8889b97bd685c 100644 (file)
@@ -240,26 +240,6 @@ const char *os_dirent_get_typename(enum os_dirent_t type);
  */
 int os_get_filesize(const char *fname, loff_t *size);
 
-/**
- * Write a character to the controlling OS terminal
- *
- * This bypasses the U-Boot console support and writes directly to the OS
- * stdout file descriptor.
- *
- * @param ch   Character to write
- */
-void os_putc(int ch);
-
-/**
- * Write a string to the controlling OS terminal
- *
- * This bypasses the U-Boot console support and writes directly to the OS
- * stdout file descriptor.
- *
- * @param str  String to write (note that \n is not appended)
- */
-void os_puts(const char *str);
-
 /**
  * Write the sandbox RAM buffer to a existing file
  *
index 0f22482ff705f4cb7c3c5c9ae70b963e5415d55f..cb4b188bcfceb9ab30819cf3d0a16695a65ef379 100644 (file)
@@ -7,24 +7,23 @@
 #ifndef __POWER_AS3722_H__
 #define __POWER_AS3722_H__
 
-#include <asm/types.h>
-
 #define AS3722_GPIO_OUTPUT_VDDH (1 << 0)
 #define AS3722_GPIO_INVERT (1 << 1)
 
-struct udevice;
+#define AS3722_DEVICE_ID 0x0c
+#define AS3722_SD_VOLTAGE(n) (0x00 + (n))
+#define AS3722_LDO_VOLTAGE(n) (0x10 + (n))
+#define AS3722_SD_CONTROL 0x4d
+#define AS3722_LDO_CONTROL 0x4e
+#define AS3722_ASIC_ID1 0x90
+#define AS3722_ASIC_ID2 0x91
+
+#define AS3722_GPIO_CONTROL(n) (0x08 + (n))
+#define AS3722_GPIO_SIGNAL_OUT 0x20
+#define AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDH (1 << 0)
+#define AS3722_GPIO_CONTROL_MODE_OUTPUT_VDDL (7 << 0)
+#define AS3722_GPIO_CONTROL_INVERT (1 << 7)
 
-int as3722_init(struct udevice **devp);
-int as3722_sd_enable(struct udevice *pmic, unsigned int sd);
-int as3722_sd_set_voltage(struct udevice *pmic, unsigned int sd, u8 value);
-int as3722_ldo_enable(struct udevice *pmic, unsigned int ldo);
-int as3722_ldo_set_voltage(struct udevice *pmic, unsigned int ldo, u8 value);
-int as3722_gpio_configure(struct udevice *pmic, unsigned int gpio,
-                         unsigned long flags);
-int as3722_gpio_direction_output(struct udevice *pmic, unsigned int gpio,
-                                unsigned int level);
-int as3722_read(struct udevice *pmic, u8 reg, u8 *value);
-int as3722_write(struct udevice *pmic, u8 reg, u8 value);
-int as3722_get(struct udevice **devp);
+int as3722_sd_set_voltage(struct udevice *dev, unsigned int sd, u8 value);
 
 #endif /* __POWER_AS3722_H__ */
index 1a8e5753d789f1cd786b0ad7e5564334bca460d4..2bbc1e51b345b21469d0f4d07180a9acfa3d0fae 100644 (file)
@@ -211,9 +211,9 @@ struct dm_regulator_ops {
         * @dev           - regulator device
         * Sets:
         * @enable         - set true - enable or false - disable
-        * @return true/false for get; or 0 / -errno for set.
+        * @return true/false for get or -errno if fail; 0 / -errno for set.
         */
-       bool (*get_enable)(struct udevice *dev);
+       int (*get_enable)(struct udevice *dev);
        int (*set_enable)(struct udevice *dev, bool enable);
 
        /**
@@ -291,9 +291,9 @@ int regulator_set_current(struct udevice *dev, int uA);
  * regulator_get_enable: get regulator device enable state.
  *
  * @dev    - pointer to the regulator device
- * @return - true/false of enable state
+ * @return - true/false of enable state or -errno val if fails
  */
-bool regulator_get_enable(struct udevice *dev);
+int regulator_get_enable(struct udevice *dev);
 
 /**
  * regulator_set_enable: set regulator enable state
index f45fcf88c43cbe205177af0e46e2f5e7b610366c..7185ade7ac5e96a56b0c0e0d3d332641400310ec 100644 (file)
@@ -99,6 +99,15 @@ int reset_get_by_index(struct udevice *dev, int index,
 int reset_get_by_name(struct udevice *dev, const char *name,
                      struct reset_ctl *reset_ctl);
 
+/**
+ * reset_request - Request a reset signal.
+ *
+ * @reset_ctl: A reset control struct.
+ *
+ * @return 0 if OK, or a negative error code.
+ */
+int reset_request(struct reset_ctl *reset_ctl);
+
 /**
  * reset_free - Free a previously requested reset signal.
  *
@@ -135,6 +144,18 @@ int reset_assert(struct reset_ctl *reset_ctl);
  */
 int reset_deassert(struct reset_ctl *reset_ctl);
 
+/**
+ * reset_release_all - Assert/Free an array of previously requested resets.
+ *
+ * For each reset contained in the reset array, this function will check if
+ * reset has been previously requested and then will assert and free it.
+ *
+ * @reset_ctl: A reset struct array that was previously successfully
+ *             requested by reset_get_by_*().
+ * @count      Number of reset contained in the array
+ * @return 0 if OK, or a negative error code.
+ */
+int reset_release_all(struct reset_ctl *reset_ctl, int count);
 #else
 static inline int reset_get_by_index(struct udevice *dev, int index,
                                     struct reset_ctl *reset_ctl)
@@ -162,6 +183,12 @@ static inline int reset_deassert(struct reset_ctl *reset_ctl)
 {
        return 0;
 }
+
+static inline int reset_release_all(struct reset_ctl *reset_ctl, int count)
+{
+       return 0;
+}
+
 #endif
 
 #endif
index 62f051fe535c992d9acd50dbc092f17dbd9051e5..fad04016a348fe1a8afb8f3f4783873c18a47678 100644 (file)
@@ -537,6 +537,21 @@ struct usb_hub_status {
        unsigned short wHubChange;
 } __attribute__ ((packed));
 
+/*
+ * Hub Device descriptor
+ * USB Hub class device protocols
+ */
+#define USB_HUB_PR_FS          0 /* Full speed hub */
+#define USB_HUB_PR_HS_NO_TT    0 /* Hi-speed hub without TT */
+#define USB_HUB_PR_HS_SINGLE_TT        1 /* Hi-speed hub with single TT */
+#define USB_HUB_PR_HS_MULTI_TT 2 /* Hi-speed hub with multiple TT */
+#define USB_HUB_PR_SS          3 /* Super speed hub */
+
+/* Transaction Translator Think Times, in bits */
+#define HUB_TTTT_8_BITS                0x00
+#define HUB_TTTT_16_BITS       0x20
+#define HUB_TTTT_24_BITS       0x40
+#define HUB_TTTT_32_BITS       0x60
 
 /* Hub descriptor */
 struct usb_hub_descriptor {
@@ -546,10 +561,20 @@ struct usb_hub_descriptor {
        unsigned short wHubCharacteristics;
        unsigned char  bPwrOn2PwrGood;
        unsigned char  bHubContrCurrent;
-       unsigned char  DeviceRemovable[(USB_MAXCHILDREN+1+7)/8];
-       unsigned char  PortPowerCtrlMask[(USB_MAXCHILDREN+1+7)/8];
-       /* DeviceRemovable and PortPwrCtrlMask want to be variable-length
-          bitmaps that hold max 255 entries. (bit0 is ignored) */
+       /* 2.0 and 3.0 hubs differ here */
+       union {
+               struct {
+                       /* add 1 bit for hub status change; round to bytes */
+                       __u8 DeviceRemovable[(USB_MAXCHILDREN + 1 + 7) / 8];
+                       __u8 PortPowerCtrlMask[(USB_MAXCHILDREN + 1 + 7) / 8];
+               } __attribute__ ((packed)) hs;
+
+               struct {
+                       __u8 bHubHdrDecLat;
+                       __le16 wHubDelay;
+                       __le16 DeviceRemovable;
+               } __attribute__ ((packed)) ss;
+       } u;
 } __attribute__ ((packed));
 
 
@@ -560,6 +585,8 @@ struct usb_hub_device {
        ulong connect_timeout;          /* Device connection timeout in ms */
        ulong query_delay;              /* Device query delay in ms */
        int overcurrent_count[USB_MAXCHILDREN]; /* Over-current counter */
+       int hub_depth;                  /* USB 3.0 hub depth */
+       struct usb_tt tt;               /* Transaction Translator */
 };
 
 #ifdef CONFIG_DM_USB
@@ -731,6 +758,14 @@ struct dm_usb_ops {
         * reset_root_port() - Reset usb root port
         */
        int (*reset_root_port)(struct udevice *bus, struct usb_device *udev);
+
+       /**
+        * update_hub_device() - Update HCD's internal representation of hub
+        *
+        * After a hub descriptor is fetched, notify HCD so that its internal
+        * representation of this hub can be updated (xHCI)
+        */
+       int (*update_hub_device)(struct udevice *bus, struct usb_device *udev);
 };
 
 #define usb_get_ops(dev)       ((struct dm_usb_ops *)(dev)->driver->ops)
@@ -765,6 +800,14 @@ struct usb_device *usb_get_dev_index(struct udevice *bus, int index);
 int usb_setup_device(struct usb_device *dev, bool do_read,
                     struct usb_device *parent);
 
+/**
+ * usb_hub_is_root_hub() - Test whether a hub device is root hub or not
+ *
+ * @hub:       USB hub device to test
+ * @return:    true if the hub device is root hub, false otherwise.
+ */
+bool usb_hub_is_root_hub(struct udevice *hub);
+
 /**
  * usb_hub_scan() - Scan a hub and find its devices
  *
@@ -861,24 +904,6 @@ bool usb_device_has_child_on_port(struct usb_device *parent, int port);
 int usb_hub_probe(struct usb_device *dev, int ifnum);
 void usb_hub_reset(void);
 
-/**
- * legacy_hub_port_reset() - reset a port given its usb_device pointer
- *
- * Reset a hub port and see if a device is present on that port, providing
- * sufficient time for it to show itself. The port status is returned.
- *
- * With driver model this moves to hub_port_reset() and is passed a struct
- * udevice.
- *
- * @dev:       USB device to reset
- * @port:      Port number to reset (note ports are numbered from 0 here)
- * @portstat:  Returns port status
- */
-int legacy_hub_port_reset(struct usb_device *dev, int port,
-                         unsigned short *portstat);
-
-int hub_port_reset(struct udevice *dev, int port, unsigned short *portstat);
-
 /*
  * usb_find_usb2_hub_address_port() - Get hub address and port for TT setting
  *
@@ -913,6 +938,17 @@ int usb_new_device(struct usb_device *dev);
 
 int usb_alloc_device(struct usb_device *dev);
 
+/**
+ * update_hub_device() - Update HCD's internal representation of hub
+ *
+ * After a hub descriptor is fetched, notify HCD so that its internal
+ * representation of this hub can be updated.
+ *
+ * @dev:               Hub device
+ * @return 0 if OK, -ve on error
+ */
+int usb_update_hub_device(struct usb_device *dev);
+
 /**
  * usb_emul_setup_device() - Set up a new USB device emulation
  *
@@ -926,7 +962,7 @@ int usb_alloc_device(struct usb_device *dev);
  * @desc_list:         List of points or USB descriptors, terminated by NULL.
  *                     The first entry must be struct usb_device_descriptor,
  *                     and others follow on after that.
- * @return 0 if OK, -ve on error
+ * @return 0 if OK, -ENOSYS if not implemented, other -ve on error
  */
 int usb_emul_setup_device(struct udevice *dev, int maxpacketsize,
                          struct usb_string *strings, void **desc_list);
index 8214ba9bf5577093a370ed8cb1144f3b3fc680bd..b7f2eada07d0e7e711124aaa7f664cc130fbcbb4 100644 (file)
@@ -93,6 +93,7 @@
 #define USB_DT_REPORT       (USB_TYPE_CLASS | 0x02)
 #define USB_DT_PHYSICAL     (USB_TYPE_CLASS | 0x03)
 #define USB_DT_HUB          (USB_TYPE_CLASS | 0x09)
+#define USB_DT_SS_HUB       (USB_TYPE_CLASS | 0x0a)
 
 /* Descriptor sizes per descriptor type */
 #define USB_DT_DEVICE_SIZE      18
 
 /*
  * Changes to wPortStatus bit field in USB 3.0
- * See USB 3.0 spec Table 10-11
+ * See USB 3.0 spec Table 10-10
  */
 #define USB_SS_PORT_STAT_LINK_STATE    0x01e0
 #define USB_SS_PORT_STAT_POWER         0x0200
 #define USB_SS_PORT_STAT_SPEED         0x1c00
 #define USB_SS_PORT_STAT_SPEED_5GBPS   0x0000
+/* Bits that are the same from USB 2.0 */
+#define USB_SS_PORT_STAT_MASK          (USB_PORT_STAT_CONNECTION | \
+                                        USB_PORT_STAT_ENABLE | \
+                                        USB_PORT_STAT_OVERCURRENT | \
+                                        USB_PORT_STAT_RESET)
 
 /* wPortChange bits */
 #define USB_PORT_STAT_C_CONNECTION  0x0001
 #define HUB_CHAR_LPSM               0x0003
 #define HUB_CHAR_COMPOUND           0x0004
 #define HUB_CHAR_OCPM               0x0018
+#define HUB_CHAR_TTTT               0x0060 /* TT Think Time mask */
 
 /*
  * Hub Status & Hub Change bit masks
 /* Mask for wIndex in get/set port feature */
 #define USB_HUB_PORT_MASK      0xf
 
+/* Hub class request codes */
+#define USB_REQ_SET_HUB_DEPTH  0x0c
+
+/*
+ * As of USB 2.0, full/low speed devices are segregated into trees.
+ * One type grows from USB 1.1 host controllers (OHCI, UHCI etc).
+ * The other type grows from high speed hubs when they connect to
+ * full/low speed devices using "Transaction Translators" (TTs).
+ */
+struct usb_tt {
+       bool            multi;          /* true means one TT per port */
+       unsigned        think_time;     /* think time in ns */
+};
+
 /*
  * CBI style
  */
index 09670f031c2453ec44d64a2e901d55eb7049f31d..2f5a210ad42f7df51d93d36fff8db0222bdc5540 100644 (file)
@@ -157,7 +157,9 @@ config LZMA
          CONFIG_CMD_LZMADEC which provides a decode command.
 
 config LZO
-       bool
+       bool "Enable LZO decompression support"
+       help
+         This enables support for LZO compression algorithm.r
 endmenu
 
 config ERRNO_STR
index 221ebbf1771e06a9ae0b8f8e312b095e12348ffa..b04f7c6297598b51372eeb586a112b1db83cfae5 100644 (file)
@@ -28,7 +28,7 @@ int main(void)
        DEFINE(GD_SIZE, sizeof(struct global_data));
 
        DEFINE(GD_BD, offsetof(struct global_data, bd));
-#ifdef CONFIG_SYS_MALLOC_F_LEN
+#if CONFIG_VAL(SYS_MALLOC_F_LEN)
        DEFINE(GD_MALLOC_BASE, offsetof(struct global_data, malloc_base));
 #endif
 
index 452ab5d6cece88f036db733449dd1aa404787a62..f1afd9c8a53b4b77269ea2f8de8601c2999f5721 100644 (file)
@@ -48,7 +48,7 @@ static efi_status_t setup_memory(struct efi_priv *priv)
                return ret;
        memset(gd, '\0', sizeof(*gd));
 
-       gd->malloc_base = (ulong)efi_malloc(priv, CONFIG_SYS_MALLOC_F_LEN,
+       gd->malloc_base = (ulong)efi_malloc(priv, CONFIG_VAL(SYS_MALLOC_F_LEN),
                                            &ret);
        if (!gd->malloc_base)
                return ret;
index fbb48bf74d9950fd8338af64af1bcd5a9218ae66..d2dbd0f122ea1b358306586ea3613ae263dc0c3c 100644 (file)
@@ -34,12 +34,6 @@ static const char * const compat_names[COMPAT_COUNT] = {
        COMPAT(NVIDIA_TEGRA20_EMC, "nvidia,tegra20-emc"),
        COMPAT(NVIDIA_TEGRA20_EMC_TABLE, "nvidia,tegra20-emc-table"),
        COMPAT(NVIDIA_TEGRA20_NAND, "nvidia,tegra20-nand"),
-       COMPAT(NVIDIA_TEGRA124_PMC, "nvidia,tegra124-pmc"),
-       COMPAT(NVIDIA_TEGRA186_SDMMC, "nvidia,tegra186-sdhci"),
-       COMPAT(NVIDIA_TEGRA210_SDMMC, "nvidia,tegra210-sdhci"),
-       COMPAT(NVIDIA_TEGRA124_SDMMC, "nvidia,tegra124-sdhci"),
-       COMPAT(NVIDIA_TEGRA30_SDMMC, "nvidia,tegra30-sdhci"),
-       COMPAT(NVIDIA_TEGRA20_SDMMC, "nvidia,tegra20-sdhci"),
        COMPAT(NVIDIA_TEGRA124_XUSB_PADCTL, "nvidia,tegra124-xusb-padctl"),
        COMPAT(NVIDIA_TEGRA210_XUSB_PADCTL, "nvidia,tegra210-xusb-padctl"),
        COMPAT(SMSC_LAN9215, "smsc,lan9215"),
index 80ddb08474cda68db1fa5249e2528a9a22b7bc49..9ce47b4d22713ff376436acc00ea75e1ad5241c4 100644 (file)
@@ -386,7 +386,7 @@ $(obj)/helloworld.so: $(obj)/helloworld.o arch/$(ARCH)/lib/$(EFI_CRT0) \
 quiet_cmd_acpi_c_asl= ASL     $<
 cmd_acpi_c_asl=         \
        $(CPP) -x assembler-with-cpp -D__ASSEMBLY__ -P $(UBOOTINCLUDE) -o $<.tmp $<; \
-       iasl -p $< -tc $<.tmp $(if $(KBUILD_VERBOSE:1=), >/dev/null); \
+       iasl -p $< -tc $<.tmp $(if $(KBUILD_VERBOSE:1=), >/dev/null) && \
        mv $(patsubst %.asl,%.hex,$<) $@
 
 $(obj)/dsdt.c:    $(src)/dsdt.asl
index e261d02455706ee2c1c50d450aa3f4d78e23fff3..2d642de7291c28fbd536e90b0211a8b5d24985bc 100644 (file)
@@ -633,15 +633,6 @@ CONFIG_ENV_FLAGS_LIST_STATIC
 CONFIG_ENV_FLASHBOOT
 CONFIG_ENV_IS_EMBEDDED
 CONFIG_ENV_IS_IN_
-CONFIG_ENV_IS_IN_DATAFLASH
-CONFIG_ENV_IS_IN_EEPROM
-CONFIG_ENV_IS_IN_FAT
-CONFIG_ENV_IS_IN_FLASH
-CONFIG_ENV_IS_IN_MRAM
-CONFIG_ENV_IS_IN_NVRAM
-CONFIG_ENV_IS_IN_ONENAND
-CONFIG_ENV_IS_IN_REMOTE
-CONFIG_ENV_IS_IN_SPI_FLASH
 CONFIG_ENV_MAX_ENTRIES
 CONFIG_ENV_MIN_ENTRIES
 CONFIG_ENV_OFFSET_OOB
@@ -3208,7 +3199,6 @@ CONFIG_SYS_FSL_ERRATUM_A_004934
 CONFIG_SYS_FSL_ESDHC_ADDR
 CONFIG_SYS_FSL_ESDHC_BE
 CONFIG_SYS_FSL_ESDHC_BROKEN_TIMEOUT
-CONFIG_SYS_FSL_ESDHC_FORCE_VSELECT
 CONFIG_SYS_FSL_ESDHC_HAS_DDR_MODE
 CONFIG_SYS_FSL_ESDHC_LE
 CONFIG_SYS_FSL_ESDHC_NUM
@@ -4878,7 +4868,6 @@ CONFIG_SYS_UNSPEC_STRID
 CONFIG_SYS_USBCTRL
 CONFIG_SYS_USBD_BASE
 CONFIG_SYS_USB_EHCI_CPU_INIT
-CONFIG_SYS_USB_EHCI_MAX_ROOT_PORTS
 CONFIG_SYS_USB_EHCI_REGS_BASE
 CONFIG_SYS_USB_FAT_BOOT_PARTITION
 CONFIG_SYS_USB_HOST
@@ -4887,7 +4876,6 @@ CONFIG_SYS_USB_OHCI_CPU_INIT
 CONFIG_SYS_USB_OHCI_MAX_ROOT_PORTS
 CONFIG_SYS_USB_OHCI_REGS_BASE
 CONFIG_SYS_USB_OHCI_SLOT_NAME
-CONFIG_SYS_USB_XHCI_MAX_ROOT_PORTS
 CONFIG_SYS_USER_SWITCHES_BASE
 CONFIG_SYS_USE_BOOT_NORFLASH
 CONFIG_SYS_USE_DATAFLASH
@@ -5206,7 +5194,6 @@ CONFIG_USB_XHCI_EXYNOS
 CONFIG_USB_XHCI_FSL
 CONFIG_USB_XHCI_KEYSTONE
 CONFIG_USB_XHCI_OMAP
-CONFIG_USB_XHCI_PCI
 CONFIG_USER_LOWLEVEL_INIT
 CONFIG_USE_FDT
 CONFIG_USE_INTERRUPT
index 585e6b29d7f8b470efe303ab5776a370194727c9..fba67d585b9faff1db1cade330a0597360b74b95 100644 (file)
@@ -80,6 +80,13 @@ ACTION=="add", SUBSYSTEM=="block", SUBSYSTEMS=="usb", KERNELS=="3-13", MODE:="66
 (You may wish to change the group ID instead of setting the permissions wide
 open. All that matters is that the user ID running the test can access the
 device.)
+
+c) An optional udev rule to give you a persistent value to use in
+host_usb_dev_node. For example:
+
+IMPORT{builtin}="path_id"
+ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="", SYMLINK+="bus/usb/by-path/$env{ID_PATH}"
+ENV{ID_PATH}=="?*", ENV{.ID_PORT}=="?*", SYMLINK+="bus/usb/by-path/$env{ID_PATH}-port$env{.ID_PORT}"
 """
 
 # The set of file sizes to test. These values trigger various edge-cases such
index 6ec71f5c7fcf0e1bae5db56092378e7b04df743e..ac0c9793190bb215f92743bdb9ec8fee5087b7e9 100644 (file)
@@ -11,6 +11,7 @@
 /img2srec
 /kwboot
 /dumpimage
+/mips-relocs
 /mkenvimage
 /mkimage
 /mkexynosspl
index cb1683e1539ceded1d4c58939b7bb598046fdf7a..0743677dc82a3abc3a84f1d6c8f4a6e9f5818b28 100644 (file)
@@ -175,6 +175,8 @@ HOSTCFLAGS_rsa-sign.o += -Wno-deprecated-declarations
 endif
 endif
 
+HOSTCFLAGS_fit_image.o += -DMKIMAGE_DTC=\"$(DTC)\"
+
 HOSTLOADLIBES_dumpimage := $(HOSTLOADLIBES_mkimage)
 HOSTLOADLIBES_fit_info := $(HOSTLOADLIBES_mkimage)
 HOSTLOADLIBES_fit_check_sign := $(HOSTLOADLIBES_mkimage)
@@ -209,6 +211,8 @@ hostprogs-$(CONFIG_STATIC_RELA) += relocate-rela
 hostprogs-y += fdtgrep
 fdtgrep-objs += $(LIBFDT_OBJS) fdtgrep.o
 
+hostprogs-$(CONFIG_MIPS) += mips-relocs
+
 # We build some files with extra pedantic flags to try to minimize things
 # that won't build on some weird host compiler -- though there are lots of
 # exceptions for files that aren't complaint.
index 286165618304f9259daadde0c8262f10265539ca..c9c79e066dc1282a57baadb6249df937f0ff1ab2 100644 (file)
@@ -1088,7 +1088,19 @@ static int flash_io (int mode)
 
                rc = flash_write (fd_current, fd_target, dev_target);
 
+               if (fsync (fd_current)) {
+                       fprintf (stderr,
+                                "fsync failed on %s: %s\n",
+                                DEVNAME (dev_current), strerror (errno));
+               }
+
                if (HaveRedundEnv) {
+                       if (fsync (fd_target)) {
+                               fprintf (stderr,
+                                        "fsync failed on %s: %s\n",
+                                        DEVNAME (dev_current), strerror (errno));
+                       }
+
                        if (close (fd_target)) {
                                fprintf (stderr,
                                        "I/O error on %s: %s\n",
index 78d48bb2e10249ccd474991888c886b0d07e1765..de1ea8ff147bff7f2b095270d4b4f3554f038da3 100644 (file)
@@ -16,7 +16,7 @@
 
 /*
  * NOTE: This file must be kept in sync with arch/arm/include/asm/\
- *       imx-common/imximage.cfg because tools/imximage.c can not
+ *       mach-imx/imximage.cfg because tools/imximage.c can not
  *       cross-include headers from arch/arm/ and vice-versa.
  */
 #define CMD_DATA_STR   "DATA"
index 5830549d261095412f134a4d584656378bf38ddf..ccecf8718537b04250a252adbf91f56ba6509772 100644 (file)
@@ -290,6 +290,33 @@ static uint8_t image_checksum8(void *start, uint32_t len)
        return csum;
 }
 
+size_t kwbimage_header_size(unsigned char *ptr)
+{
+       if (image_version((void *)ptr) == 0)
+               return sizeof(struct main_hdr_v0);
+       else
+               return KWBHEADER_V1_SIZE((struct main_hdr_v1 *)ptr);
+}
+
+/*
+ * Verify checksum over a complete header that includes the checksum field.
+ * Return 1 when OK, otherwise 0.
+ */
+static int main_hdr_checksum_ok(void *hdr)
+{
+       /* Offsets of checksum in v0 and v1 headers are the same */
+       struct main_hdr_v0 *main_hdr = (struct main_hdr_v0 *)hdr;
+       uint8_t checksum;
+
+       checksum = image_checksum8(hdr, kwbimage_header_size(hdr));
+       /* Calculated checksum includes the header checksum field. Compensate
+        * for that.
+        */
+       checksum -= main_hdr->checksum;
+
+       return checksum == main_hdr->checksum;
+}
+
 static uint32_t image_checksum32(void *start, uint32_t len)
 {
        uint32_t csum = 0;
@@ -1587,14 +1614,9 @@ static int kwbimage_check_image_types(uint8_t type)
 static int kwbimage_verify_header(unsigned char *ptr, int image_size,
                                  struct image_tool_params *params)
 {
-       struct main_hdr_v0 *main_hdr;
        uint8_t checksum;
 
-       main_hdr = (struct main_hdr_v0 *)ptr;
-       checksum = image_checksum8(ptr,
-                                  sizeof(struct main_hdr_v0)
-                                  - sizeof(uint8_t));
-       if (checksum != main_hdr->checksum)
+       if (!main_hdr_checksum_ok(ptr))
                return -FDT_ERR_BADSTRUCTURE;
 
        /* Only version 0 extended header has checksum */
index 20f4d0d9dd7f7e6f5e8069fdfc6a7446a850f874..2160c8f997d7db41b9e85b499885cea6d61c10c9 100644 (file)
 
 /* Structure of the main header, version 0 (Kirkwood, Dove) */
 struct main_hdr_v0 {
-       uint8_t  blockid;               /*0     */
-       uint8_t  nandeccmode;           /*1     */
-       uint16_t nandpagesize;          /*2-3   */
-       uint32_t blocksize;             /*4-7   */
-       uint32_t rsvd1;                 /*8-11  */
-       uint32_t srcaddr;               /*12-15 */
-       uint32_t destaddr;              /*16-19 */
-       uint32_t execaddr;              /*20-23 */
-       uint8_t  satapiomode;           /*24    */
-       uint8_t  rsvd3;                 /*25    */
-       uint16_t ddrinitdelay;          /*26-27 */
-       uint16_t rsvd2;                 /*28-29 */
-       uint8_t  ext;                   /*30    */
-       uint8_t  checksum;              /*31    */
+       uint8_t  blockid;               /* 0x0       */
+       uint8_t  nandeccmode;           /* 0x1       */
+       uint16_t nandpagesize;          /* 0x2-0x3   */
+       uint32_t blocksize;             /* 0x4-0x7   */
+       uint32_t rsvd1;                 /* 0x8-0xB   */
+       uint32_t srcaddr;               /* 0xC-0xF   */
+       uint32_t destaddr;              /* 0x10-0x13 */
+       uint32_t execaddr;              /* 0x14-0x17 */
+       uint8_t  satapiomode;           /* 0x18      */
+       uint8_t  rsvd3;                 /* 0x19      */
+       uint16_t ddrinitdelay;          /* 0x1A-0x1B */
+       uint16_t rsvd2;                 /* 0x1C-0x1D */
+       uint8_t  ext;                   /* 0x1E      */
+       uint8_t  checksum;              /* 0x1F      */
 };
 
 struct ext_hdr_v0_reg {
@@ -70,25 +70,25 @@ struct kwb_header {
        struct ext_hdr_v0       kwb_exthdr;
 };
 
-/* Structure of the main header, version 1 (Armada 370, Armada XP) */
+/* Structure of the main header, version 1 (Armada 370/38x/XP) */
 struct main_hdr_v1 {
-       uint8_t  blockid;               /* 0 */
-       uint8_t  flags;                 /* 1 */
-       uint16_t reserved2;             /* 2-3 */
-       uint32_t blocksize;             /* 4-7 */
-       uint8_t  version;               /* 8 */
-       uint8_t  headersz_msb;          /* 9 */
-       uint16_t headersz_lsb;          /* A-B */
-       uint32_t srcaddr;               /* C-F */
-       uint32_t destaddr;              /* 10-13 */
-       uint32_t execaddr;              /* 14-17 */
-       uint8_t  options;               /* 18 */
-       uint8_t  nandblocksize;         /* 19 */
-       uint8_t  nandbadblklocation;    /* 1A */
-       uint8_t  reserved4;             /* 1B */
-       uint16_t reserved5;             /* 1C-1D */
-       uint8_t  ext;                   /* 1E */
-       uint8_t  checksum;              /* 1F */
+       uint8_t  blockid;               /* 0x0       */
+       uint8_t  flags;                 /* 0x1       */
+       uint16_t reserved2;             /* 0x2-0x3   */
+       uint32_t blocksize;             /* 0x4-0x7   */
+       uint8_t  version;               /* 0x8       */
+       uint8_t  headersz_msb;          /* 0x9       */
+       uint16_t headersz_lsb;          /* 0xA-0xB   */
+       uint32_t srcaddr;               /* 0xC-0xF   */
+       uint32_t destaddr;              /* 0x10-0x13 */
+       uint32_t execaddr;              /* 0x14-0x17 */
+       uint8_t  options;               /* 0x18      */
+       uint8_t  nandblocksize;         /* 0x19      */
+       uint8_t  nandbadblklocation;    /* 0x1A      */
+       uint8_t  reserved4;             /* 0x1B      */
+       uint16_t reserved5;             /* 0x1C-0x1D */
+       uint8_t  ext;                   /* 0x1E      */
+       uint8_t  checksum;              /* 0x1F      */
 };
 
 /*
diff --git a/tools/mips-relocs.c b/tools/mips-relocs.c
new file mode 100644 (file)
index 0000000..8be69d3
--- /dev/null
@@ -0,0 +1,432 @@
+/*
+ * MIPS Relocation Data Generator
+ *
+ * Copyright (c) 2017 Imagination Technologies Ltd.
+ *
+ * SPDX-License-Identifier:    GPL-2.0+
+ */
+
+#include <assert.h>
+#include <elf.h>
+#include <errno.h>
+#include <fcntl.h>
+#include <limits.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <sys/mman.h>
+#include <sys/stat.h>
+#include <unistd.h>
+
+#include <asm/relocs.h>
+
+#define hdr_field(pfx, idx, field) ({                          \
+       uint64_t _val;                                          \
+       unsigned int _size;                                     \
+                                                               \
+       if (is_64) {                                            \
+               _val = pfx##hdr64[idx].field;                   \
+               _size = sizeof(pfx##hdr64[0].field);            \
+       } else {                                                \
+               _val = pfx##hdr32[idx].field;                   \
+               _size = sizeof(pfx##hdr32[0].field);            \
+       }                                                       \
+                                                               \
+       switch (_size) {                                        \
+       case 1:                                                 \
+               break;                                          \
+       case 2:                                                 \
+               _val = is_be ? be16toh(_val) : le16toh(_val);   \
+               break;                                          \
+       case 4:                                                 \
+               _val = is_be ? be32toh(_val) : le32toh(_val);   \
+               break;                                          \
+       case 8:                                                 \
+               _val = is_be ? be64toh(_val) : le64toh(_val);   \
+               break;                                          \
+       }                                                       \
+                                                               \
+       _val;                                                   \
+})
+
+#define set_hdr_field(pfx, idx, field, val) ({                 \
+       uint64_t _val;                                          \
+       unsigned int _size;                                     \
+                                                               \
+       if (is_64)                                              \
+               _size = sizeof(pfx##hdr64[0].field);            \
+       else                                                    \
+               _size = sizeof(pfx##hdr32[0].field);            \
+                                                               \
+       switch (_size) {                                        \
+       case 1:                                                 \
+               _val = val;                                     \
+               break;                                          \
+       case 2:                                                 \
+               _val = is_be ? htobe16(val) : htole16(val);     \
+               break;                                          \
+       case 4:                                                 \
+               _val = is_be ? htobe32(val) : htole32(val);     \
+               break;                                          \
+       case 8:                                                 \
+               _val = is_be ? htobe64(val) : htole64(val);     \
+               break;                                          \
+       default:                                                \
+               /* We should never reach here */                \
+               _val = 0;                                       \
+               assert(0);                                      \
+               break;                                          \
+       }                                                       \
+                                                               \
+       if (is_64)                                              \
+               pfx##hdr64[idx].field = _val;                   \
+       else                                                    \
+               pfx##hdr32[idx].field = _val;                   \
+})
+
+#define ehdr_field(field) \
+       hdr_field(e, 0, field)
+#define phdr_field(idx, field) \
+       hdr_field(p, idx, field)
+#define shdr_field(idx, field) \
+       hdr_field(s, idx, field)
+
+#define set_phdr_field(idx, field, val) \
+       set_hdr_field(p, idx, field, val)
+#define set_shdr_field(idx, field, val) \
+       set_hdr_field(s, idx, field, val)
+
+#define shstr(idx) (&shstrtab[idx])
+
+bool is_64, is_be;
+uint64_t text_base;
+
+struct mips_reloc {
+       uint8_t type;
+       uint64_t offset;
+} *relocs;
+size_t relocs_sz, relocs_idx;
+
+static int add_reloc(unsigned int type, uint64_t off)
+{
+       struct mips_reloc *new;
+       size_t new_sz;
+
+       switch (type) {
+       case R_MIPS_NONE:
+       case R_MIPS_LO16:
+       case R_MIPS_PC16:
+       case R_MIPS_HIGHER:
+       case R_MIPS_HIGHEST:
+       case R_MIPS_PC21_S2:
+       case R_MIPS_PC26_S2:
+               /* Skip these relocs */
+               return 0;
+
+       default:
+               break;
+       }
+
+       if (relocs_idx == relocs_sz) {
+               new_sz = relocs_sz ? relocs_sz * 2 : 128;
+               new = realloc(relocs, new_sz * sizeof(*relocs));
+               if (!new) {
+                       fprintf(stderr, "Out of memory\n");
+                       return -ENOMEM;
+               }
+
+               relocs = new;
+               relocs_sz = new_sz;
+       }
+
+       relocs[relocs_idx++] = (struct mips_reloc){
+               .type = type,
+               .offset = off,
+       };
+
+       return 0;
+}
+
+static int parse_mips32_rel(const void *_rel)
+{
+       const Elf32_Rel *rel = _rel;
+       uint32_t off, type;
+
+       off = is_be ? be32toh(rel->r_offset) : le32toh(rel->r_offset);
+       off -= text_base;
+
+       type = is_be ? be32toh(rel->r_info) : le32toh(rel->r_info);
+       type = ELF32_R_TYPE(type);
+
+       return add_reloc(type, off);
+}
+
+static int parse_mips64_rela(const void *_rel)
+{
+       const Elf64_Rela *rel = _rel;
+       uint64_t off, type;
+
+       off = is_be ? be64toh(rel->r_offset) : le64toh(rel->r_offset);
+       off -= text_base;
+
+       type = rel->r_info >> (64 - 8);
+
+       return add_reloc(type, off);
+}
+
+static void output_uint(uint8_t **buf, uint64_t val)
+{
+       uint64_t tmp;
+
+       do {
+               tmp = val & 0x7f;
+               val >>= 7;
+               tmp |= !!val << 7;
+               *(*buf)++ = tmp;
+       } while (val);
+}
+
+static int compare_relocs(const void *a, const void *b)
+{
+       const struct mips_reloc *ra = a, *rb = b;
+
+       return ra->offset - rb->offset;
+}
+
+int main(int argc, char *argv[])
+{
+       unsigned int i, j, i_rel_shdr, sh_type, sh_entsize, sh_entries;
+       size_t rel_size, rel_actual_size, load_sz;
+       const char *shstrtab, *sh_name, *rel_pfx;
+       int (*parse_fn)(const void *rel);
+       uint8_t *buf_start, *buf;
+       const Elf32_Ehdr *ehdr32;
+       const Elf64_Ehdr *ehdr64;
+       uintptr_t sh_offset;
+       Elf32_Phdr *phdr32;
+       Elf64_Phdr *phdr64;
+       Elf32_Shdr *shdr32;
+       Elf64_Shdr *shdr64;
+       struct stat st;
+       int err, fd;
+       void *elf;
+       bool skip;
+
+       fd = open(argv[1], O_RDWR);
+       if (fd == -1) {
+               fprintf(stderr, "Unable to open input file %s\n", argv[1]);
+               err = errno;
+               goto out_ret;
+       }
+
+       err = fstat(fd, &st);
+       if (err) {
+               fprintf(stderr, "Unable to fstat() input file\n");
+               goto out_close_fd;
+       }
+
+       elf = mmap(NULL, st.st_size, PROT_READ | PROT_WRITE, MAP_SHARED, fd, 0);
+       if (elf == MAP_FAILED) {
+               fprintf(stderr, "Unable to mmap() input file\n");
+               err = errno;
+               goto out_close_fd;
+       }
+
+       ehdr32 = elf;
+       ehdr64 = elf;
+
+       if (memcmp(&ehdr32->e_ident[EI_MAG0], ELFMAG, SELFMAG)) {
+               fprintf(stderr, "Input file is not an ELF\n");
+               err = -EINVAL;
+               goto out_free_relocs;
+       }
+
+       if (ehdr32->e_ident[EI_VERSION] != EV_CURRENT) {
+               fprintf(stderr, "Unrecognised ELF version\n");
+               err = -EINVAL;
+               goto out_free_relocs;
+       }
+
+       switch (ehdr32->e_ident[EI_CLASS]) {
+       case ELFCLASS32:
+               is_64 = false;
+               break;
+       case ELFCLASS64:
+               is_64 = true;
+               break;
+       default:
+               fprintf(stderr, "Unrecognised ELF class\n");
+               err = -EINVAL;
+               goto out_free_relocs;
+       }
+
+       switch (ehdr32->e_ident[EI_DATA]) {
+       case ELFDATA2LSB:
+               is_be = false;
+               break;
+       case ELFDATA2MSB:
+               is_be = true;
+               break;
+       default:
+               fprintf(stderr, "Unrecognised ELF data encoding\n");
+               err = -EINVAL;
+               goto out_free_relocs;
+       }
+
+       if (ehdr_field(e_type) != ET_EXEC) {
+               fprintf(stderr, "Input ELF is not an executable\n");
+               printf("type 0x%lx\n", ehdr_field(e_type));
+               err = -EINVAL;
+               goto out_free_relocs;
+       }
+
+       if (ehdr_field(e_machine) != EM_MIPS) {
+               fprintf(stderr, "Input ELF does not target MIPS\n");
+               err = -EINVAL;
+               goto out_free_relocs;
+       }
+
+       phdr32 = elf + ehdr_field(e_phoff);
+       phdr64 = elf + ehdr_field(e_phoff);
+       shdr32 = elf + ehdr_field(e_shoff);
+       shdr64 = elf + ehdr_field(e_shoff);
+       shstrtab = elf + shdr_field(ehdr_field(e_shstrndx), sh_offset);
+
+       i_rel_shdr = UINT_MAX;
+       for (i = 0; i < ehdr_field(e_shnum); i++) {
+               sh_name = shstr(shdr_field(i, sh_name));
+
+               if (!strcmp(sh_name, ".rel")) {
+                       i_rel_shdr = i;
+                       continue;
+               }
+
+               if (!strcmp(sh_name, ".text")) {
+                       text_base = shdr_field(i, sh_addr);
+                       continue;
+               }
+       }
+       if (i_rel_shdr == UINT_MAX) {
+               fprintf(stderr, "Unable to find .rel section\n");
+               err = -EINVAL;
+               goto out_free_relocs;
+       }
+       if (!text_base) {
+               fprintf(stderr, "Unable to find .text base address\n");
+               err = -EINVAL;
+               goto out_free_relocs;
+       }
+
+       rel_pfx = is_64 ? ".rela." : ".rel.";
+
+       for (i = 0; i < ehdr_field(e_shnum); i++) {
+               sh_type = shdr_field(i, sh_type);
+               if ((sh_type != SHT_REL) && (sh_type != SHT_RELA))
+                       continue;
+
+               sh_name = shstr(shdr_field(i, sh_name));
+               if (strncmp(sh_name, rel_pfx, strlen(rel_pfx))) {
+                       if (strcmp(sh_name, ".rel") && strcmp(sh_name, ".rel.dyn"))
+                               fprintf(stderr, "WARNING: Unexpected reloc section name '%s'\n", sh_name);
+                       continue;
+               }
+
+               /*
+                * Skip reloc sections which either don't correspond to another
+                * section in the ELF, or whose corresponding section isn't
+                * loaded as part of the U-Boot binary (ie. doesn't have the
+                * alloc flags set).
+                */
+               skip = true;
+               for (j = 0; j < ehdr_field(e_shnum); j++) {
+                       if (strcmp(&sh_name[strlen(rel_pfx) - 1], shstr(shdr_field(j, sh_name))))
+                               continue;
+
+                       skip = !(shdr_field(j, sh_flags) & SHF_ALLOC);
+                       break;
+               }
+               if (skip)
+                       continue;
+
+               sh_offset = shdr_field(i, sh_offset);
+               sh_entsize = shdr_field(i, sh_entsize);
+               sh_entries = shdr_field(i, sh_size) / sh_entsize;
+
+               if (sh_type == SHT_REL) {
+                       if (is_64) {
+                               fprintf(stderr, "REL-style reloc in MIPS64 ELF?\n");
+                               err = -EINVAL;
+                               goto out_free_relocs;
+                       } else {
+                               parse_fn = parse_mips32_rel;
+                       }
+               } else {
+                       if (is_64) {
+                               parse_fn = parse_mips64_rela;
+                       } else {
+                               fprintf(stderr, "RELA-style reloc in MIPS32 ELF?\n");
+                               err = -EINVAL;
+                               goto out_free_relocs;
+                       }
+               }
+
+               for (j = 0; j < sh_entries; j++) {
+                       err = parse_fn(elf + sh_offset + (j * sh_entsize));
+                       if (err)
+                               goto out_free_relocs;
+               }
+       }
+
+       /* Sort relocs in ascending order of offset */
+       qsort(relocs, relocs_idx, sizeof(*relocs), compare_relocs);
+
+       /* Make reloc offsets relative to their predecessor */
+       for (i = relocs_idx - 1; i > 0; i--)
+               relocs[i].offset -= relocs[i - 1].offset;
+
+       /* Write the relocations to the .rel section */
+       buf = buf_start = elf + shdr_field(i_rel_shdr, sh_offset);
+       for (i = 0; i < relocs_idx; i++) {
+               output_uint(&buf, relocs[i].type);
+               output_uint(&buf, relocs[i].offset >> 2);
+       }
+
+       /* Write a terminating R_MIPS_NONE (0) */
+       output_uint(&buf, R_MIPS_NONE);
+
+       /* Ensure the relocs didn't overflow the .rel section */
+       rel_size = shdr_field(i_rel_shdr, sh_size);
+       rel_actual_size = buf - buf_start;
+       if (rel_actual_size > rel_size) {
+               fprintf(stderr, "Relocs overflowed .rel section\n");
+               return -ENOMEM;
+       }
+
+       /* Update the .rel section's size */
+       set_shdr_field(i_rel_shdr, sh_size, rel_actual_size);
+
+       /* Shrink the PT_LOAD program header filesz (ie. shrink u-boot.bin) */
+       for (i = 0; i < ehdr_field(e_phnum); i++) {
+               if (phdr_field(i, p_type) != PT_LOAD)
+                       continue;
+
+               load_sz = phdr_field(i, p_filesz);
+               load_sz -= rel_size - rel_actual_size;
+               set_phdr_field(i, p_filesz, load_sz);
+               break;
+       }
+
+       /* Make sure data is written back to the file */
+       err = msync(elf, st.st_size, MS_SYNC);
+       if (err) {
+               fprintf(stderr, "Failed to msync: %d\n", errno);
+               goto out_free_relocs;
+       }
+
+out_free_relocs:
+       free(relocs);
+       munmap(elf, st.st_size);
+out_close_fd:
+       close(fd);
+out_ret:
+       return err;
+}
index 3f369b748ed19ed4896a0a529f86052717080c52..baee8666658f8e82a9d461aebc178b28166ca482 100644 (file)
@@ -44,6 +44,5 @@ static inline ulong map_to_sysmem(void *ptr)
 #define MKIMAGE_MAX_TMPFILE_LEN                256
 #define MKIMAGE_DEFAULT_DTC_OPTIONS    "-I dts -O dtb -p 500"
 #define MKIMAGE_MAX_DTC_CMDLINE_LEN    512
-#define MKIMAGE_DTC                    "dtc"   /* assume dtc is in $PATH */
 
 #endif /* _MKIIMAGE_H_ */
index eb4927f278ef95a05c88fa289611ff388310d8af..8a038501929c0fa61ebb0da3a04d5c666b87b5a1 100755 (executable)
@@ -107,12 +107,8 @@ Toolchains
 
 Appropriate toolchain are necessary to generate include/autoconf.mk
 for all the architectures supported by U-Boot.  Most of them are available
-at the kernel.org site, some are not provided by kernel.org.
-
-The default per-arch CROSS_COMPILE used by this tool is specified by
-the list below, CROSS_COMPILE.  You may wish to update the list to
-use your own.  Instead of modifying the list directly, you can give
-them via environments.
+at the kernel.org site, some are not provided by kernel.org. This tool uses
+the same tools as buildman, so see that tool for setup (e.g. --fetch-arch).
 
 
 Tips and trips
@@ -319,33 +315,14 @@ import threading
 import time
 
 sys.path.append(os.path.join(os.path.dirname(__file__), 'buildman'))
+sys.path.append(os.path.join(os.path.dirname(__file__), 'patman'))
+import bsettings
 import kconfiglib
+import toolchain
 
 SHOW_GNU_MAKE = 'scripts/show-gnu-make'
 SLEEP_TIME=0.03
 
-# Here is the list of cross-tools I use.
-# Most of them are available at kernel.org
-# (https://www.kernel.org/pub/tools/crosstool/files/bin/), except the following:
-# arc: https://github.com/foss-for-synopsys-dwc-arc-processors/toolchain/releases
-# nds32: http://osdk.andestech.com/packages/nds32le-linux-glibc-v1.tgz
-# nios2: https://sourcery.mentor.com/GNUToolchain/subscription42545
-# sh: http://sourcery.mentor.com/public/gnu_toolchain/sh-linux-gnu
-CROSS_COMPILE = {
-    'arc': 'arc-linux-',
-    'aarch64': 'aarch64-linux-',
-    'arm': 'arm-unknown-linux-gnueabi-',
-    'm68k': 'm68k-linux-',
-    'microblaze': 'microblaze-linux-',
-    'mips': 'mips-linux-',
-    'nds32': 'nds32le-linux-',
-    'nios2': 'nios2-linux-gnu-',
-    'powerpc': 'powerpc-linux-',
-    'sh': 'sh-linux-gnu-',
-    'x86': 'i386-linux-',
-    'xtensa': 'xtensa-linux-'
-}
-
 STATE_IDLE = 0
 STATE_DEFCONFIG = 1
 STATE_AUTOCONF = 2
@@ -504,51 +481,6 @@ def show_diff(a, b, file_path, color_enabled):
         else:
             print line,
 
-def update_cross_compile(color_enabled):
-    """Update per-arch CROSS_COMPILE via environment variables
-
-    The default CROSS_COMPILE values are available
-    in the CROSS_COMPILE list above.
-
-    You can override them via environment variables
-    CROSS_COMPILE_{ARCH}.
-
-    For example, if you want to override toolchain prefixes
-    for ARM and PowerPC, you can do as follows in your shell:
-
-    export CROSS_COMPILE_ARM=...
-    export CROSS_COMPILE_POWERPC=...
-
-    Then, this function checks if specified compilers really exist in your
-    PATH environment.
-    """
-    archs = []
-
-    for arch in os.listdir('arch'):
-        if os.path.exists(os.path.join('arch', arch, 'Makefile')):
-            archs.append(arch)
-
-    # arm64 is a special case
-    archs.append('aarch64')
-
-    for arch in archs:
-        env = 'CROSS_COMPILE_' + arch.upper()
-        cross_compile = os.environ.get(env)
-        if not cross_compile:
-            cross_compile = CROSS_COMPILE.get(arch, '')
-
-        for path in os.environ["PATH"].split(os.pathsep):
-            gcc_path = os.path.join(path, cross_compile + 'gcc')
-            if os.path.isfile(gcc_path) and os.access(gcc_path, os.X_OK):
-                break
-        else:
-            print >> sys.stderr, color_text(color_enabled, COLOR_YELLOW,
-                 'warning: %sgcc: not found in PATH.  %s architecture boards will be skipped'
-                                            % (cross_compile, arch))
-            cross_compile = None
-
-        CROSS_COMPILE[arch] = cross_compile
-
 def extend_matched_lines(lines, matched, pre_patterns, post_patterns, extend_pre,
                          extend_post):
     """Extend matched lines if desired patterns are found before/after already
@@ -885,15 +817,11 @@ class KconfigParser:
         self.config_autoconf = os.path.join(build_dir, AUTO_CONF_PATH)
         self.defconfig = os.path.join(build_dir, 'defconfig')
 
-    def get_cross_compile(self):
-        """Parse .config file and return CROSS_COMPILE.
+    def get_arch(self):
+        """Parse .config file and return the architecture.
 
         Returns:
-          A string storing the compiler prefix for the architecture.
-          Return a NULL string for architectures that do not require
-          compiler prefix (Sandbox and native build is the case).
-          Return None if the specified compiler is missing in your PATH.
-          Caller should distinguish '' and None.
+          Architecture name (e.g. 'arm').
         """
         arch = ''
         cpu = ''
@@ -913,7 +841,7 @@ class KconfigParser:
         if arch == 'arm' and cpu == 'armv8':
             arch = 'aarch64'
 
-        return CROSS_COMPILE.get(arch, None)
+        return arch
 
     def parse_one_config(self, config, dotconfig_lines, autoconf_lines):
         """Parse .config, defconfig, include/autoconf.mk for one config.
@@ -1105,11 +1033,12 @@ class Slot:
     for faster processing.
     """
 
-    def __init__(self, configs, options, progress, devnull, make_cmd,
-                 reference_src_dir, db_queue):
+    def __init__(self, toolchains, configs, options, progress, devnull,
+                make_cmd, reference_src_dir, db_queue):
         """Create a new process slot.
 
         Arguments:
+          toolchains: Toolchains object containing toolchains.
           configs: A list of CONFIGs to move.
           options: option flags.
           progress: A progress indicator.
@@ -1119,6 +1048,7 @@ class Slot:
                              source tree.
           db_queue: output queue to write config info for the database
         """
+        self.toolchains = toolchains
         self.options = options
         self.progress = progress
         self.build_dir = tempfile.mkdtemp()
@@ -1235,19 +1165,20 @@ class Slot:
     def do_autoconf(self):
         """Run 'make AUTO_CONF_PATH'."""
 
-        self.cross_compile = self.parser.get_cross_compile()
-        if self.cross_compile is None:
+        arch = self.parser.get_arch()
+        try:
+            toolchain = self.toolchains.Select(arch)
+        except ValueError:
             self.log += color_text(self.options.color, COLOR_YELLOW,
-                                   "Compiler is missing.  Do nothing.\n")
+                    "Tool chain for '%s' is missing.  Do nothing.\n % arch")
             self.finish(False)
             return
+       env = toolchain.MakeEnvironment(False)
 
         cmd = list(self.make_cmd)
-        if self.cross_compile:
-            cmd.append('CROSS_COMPILE=%s' % self.cross_compile)
         cmd.append('KCONFIG_IGNORE_DUPLICATES=1')
         cmd.append(AUTO_CONF_PATH)
-        self.ps = subprocess.Popen(cmd, stdout=self.devnull,
+        self.ps = subprocess.Popen(cmd, stdout=self.devnull, env=env,
                                    stderr=subprocess.PIPE,
                                    cwd=self.current_src_dir)
         self.state = STATE_AUTOCONF
@@ -1345,10 +1276,12 @@ class Slots:
 
     """Controller of the array of subprocess slots."""
 
-    def __init__(self, configs, options, progress, reference_src_dir, db_queue):
+    def __init__(self, toolchains, configs, options, progress,
+                reference_src_dir, db_queue):
         """Create a new slots controller.
 
         Arguments:
+          toolchains: Toolchains object containing toolchains.
           configs: A list of CONFIGs to move.
           options: option flags.
           progress: A progress indicator.
@@ -1361,8 +1294,9 @@ class Slots:
         devnull = get_devnull()
         make_cmd = get_make_cmd()
         for i in range(options.jobs):
-            self.slots.append(Slot(configs, options, progress, devnull,
-                                   make_cmd, reference_src_dir, db_queue))
+            self.slots.append(Slot(toolchains, configs, options, progress,
+                                  devnull, make_cmd, reference_src_dir,
+                                  db_queue))
 
     def add(self, defconfig):
         """Add a new subprocess if a vacant slot is found.
@@ -1474,7 +1408,7 @@ class ReferenceSource:
 
         return self.src_dir
 
-def move_config(configs, options, db_queue):
+def move_config(toolchains, configs, options, db_queue):
     """Move config options to defconfig files.
 
     Arguments:
@@ -1504,7 +1438,8 @@ def move_config(configs, options, db_queue):
         defconfigs = get_all_defconfigs()
 
     progress = Progress(len(defconfigs))
-    slots = Slots(configs, options, progress, reference_src_dir, db_queue)
+    slots = Slots(toolchains, configs, options, progress, reference_src_dir,
+                 db_queue)
 
     # Main loop to process defconfig files:
     #  Add a new subprocess into a vacant slot.
@@ -1886,14 +1821,21 @@ def main():
 
     if options.imply:
         imply_flags = 0
-        for flag in options.imply_flags.split():
-            if flag == 'help' or flag not in IMPLY_FLAGS:
-                print "Imply flags: (separate with ',')"
-                for name, info in IMPLY_FLAGS.iteritems():
-                    print ' %-15s: %s' % (name, info[1])
-                parser.print_usage()
-                sys.exit(1)
-            imply_flags |= IMPLY_FLAGS[flag][0]
+        if options.imply_flags == 'all':
+            imply_flags = -1
+
+        elif options.imply_flags:
+            for flag in options.imply_flags.split(','):
+                bad = flag not in IMPLY_FLAGS
+                if bad:
+                    print "Invalid flag '%s'" % flag
+                if flag == 'help' or bad:
+                    print "Imply flags: (separate with ',')"
+                    for name, info in IMPLY_FLAGS.iteritems():
+                        print ' %-15s: %s' % (name, info[1])
+                    parser.print_usage()
+                    sys.exit(1)
+                imply_flags |= IMPLY_FLAGS[flag][0]
 
         do_imply_config(configs, options.add_imply, imply_flags,
                         options.skip_added)
@@ -1907,8 +1849,11 @@ def main():
 
     if not options.cleanup_headers_only:
         check_clean_directory()
-        update_cross_compile(options.color)
-        move_config(configs, options, db_queue)
+       bsettings.Setup('')
+        toolchains = toolchain.Toolchains()
+        toolchains.GetSettings()
+        toolchains.Scan(verbose=False)
+        move_config(toolchains, configs, options, db_queue)
         db_queue.join()
 
     if configs: