Merge tag 'mips-pull-2019-05-03' of git://git.denx.de/u-boot-mips
authorTom Rini <trini@konsulko.com>
Sun, 5 May 2019 00:02:31 +0000 (20:02 -0400)
committerTom Rini <trini@konsulko.com>
Sun, 5 May 2019 00:02:42 +0000 (20:02 -0400)
- mscc: small fixes, enhance network support for Serval, Luton and Ocelot
- mt7620: rename arch to more generic name mtmips
- mips: pass initrd addresses via DT as physical addresses

333 files changed:
MAINTAINERS
README
arch/arm/Kconfig
arch/arm/cpu/armv8/start.S
arch/arm/dts/Makefile
arch/arm/dts/am335x-osd335x-common.dtsi [new file with mode: 0644]
arch/arm/dts/am335x-pocketbeagle.dts [new file with mode: 0644]
arch/arm/dts/at91sam9g20-taurus.dts
arch/arm/dts/k3-am654-base-board-u-boot.dtsi
arch/arm/dts/k3-am654-r5-base-board.dts
arch/arm/dts/logicpd-som-lv-baseboard.dtsi
arch/arm/dts/rk3399-evb.dts
arch/arm/dts/rk3399-firefly.dts
arch/arm/dts/rk3399-opp.dtsi [new file with mode: 0644]
arch/arm/dts/rk3399-orangepi-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/rk3399-orangepi.dts [new file with mode: 0644]
arch/arm/dts/rk3399-puma.dtsi
arch/arm/dts/rk3399-u-boot.dtsi [new file with mode: 0644]
arch/arm/dts/socfpga_cyclone5_de10_nano.dts
arch/arm/include/asm/arch-rockchip/ddr_rk3188.h
arch/arm/include/asm/arch-rockchip/hardware.h
arch/arm/include/asm/gpio.h
arch/arm/lib/vectors.S
arch/arm/mach-davinci/Makefile
arch/arm/mach-davinci/cpu.c
arch/arm/mach-davinci/dm355.c [deleted file]
arch/arm/mach-davinci/dm365.c [deleted file]
arch/arm/mach-davinci/dm365_lowlevel.c [deleted file]
arch/arm/mach-davinci/dm644x.c [deleted file]
arch/arm/mach-davinci/dm646x.c [deleted file]
arch/arm/mach-davinci/dp83848.c [deleted file]
arch/arm/mach-davinci/et1011c.c [deleted file]
arch/arm/mach-davinci/include/mach/da8xx-usb.h
arch/arm/mach-davinci/include/mach/davinci_misc.h
arch/arm/mach-davinci/include/mach/emac_defs.h
arch/arm/mach-davinci/include/mach/gpio.h
arch/arm/mach-davinci/include/mach/hardware.h
arch/arm/mach-davinci/include/mach/i2c_defs.h
arch/arm/mach-davinci/include/mach/syscfg_defs.h [deleted file]
arch/arm/mach-davinci/ksz8873.c [deleted file]
arch/arm/mach-davinci/lxt972.c [deleted file]
arch/arm/mach-davinci/misc.c
arch/arm/mach-davinci/psc.c
arch/arm/mach-davinci/spl.c
arch/arm/mach-exynos/Kconfig
arch/arm/mach-mvebu/Kconfig
arch/arm/mach-rockchip/Kconfig
arch/arm/mach-rockchip/boot_mode.c
arch/arm/mach-rockchip/bootrom.c
arch/arm/mach-rockchip/rk3036-board-spl.c
arch/arm/mach-rockchip/rk3036-board.c
arch/arm/mach-rockchip/rk3036/Kconfig
arch/arm/mach-rockchip/rk3036/Makefile
arch/arm/mach-rockchip/rk3036/clk_rk3036.c
arch/arm/mach-rockchip/rk3036/rk3036.c [new file with mode: 0644]
arch/arm/mach-rockchip/rk3036/sdram_rk3036.c
arch/arm/mach-rockchip/rk3036/syscon_rk3036.c
arch/arm/mach-rockchip/rk3128-board.c
arch/arm/mach-rockchip/rk3128/Kconfig
arch/arm/mach-rockchip/rk3128/clk_rk3128.c
arch/arm/mach-rockchip/rk3128/syscon_rk3128.c
arch/arm/mach-rockchip/rk3188-board-spl.c
arch/arm/mach-rockchip/rk3188-board.c
arch/arm/mach-rockchip/rk3188/Kconfig
arch/arm/mach-rockchip/rk3188/Makefile
arch/arm/mach-rockchip/rk3188/clk_rk3188.c
arch/arm/mach-rockchip/rk3188/rk3188.c [new file with mode: 0644]
arch/arm/mach-rockchip/rk3188/syscon_rk3188.c
arch/arm/mach-rockchip/rk322x-board-spl.c
arch/arm/mach-rockchip/rk322x-board.c
arch/arm/mach-rockchip/rk322x/Kconfig
arch/arm/mach-rockchip/rk322x/Makefile
arch/arm/mach-rockchip/rk322x/clk_rk322x.c
arch/arm/mach-rockchip/rk322x/rk322x.c [new file with mode: 0644]
arch/arm/mach-rockchip/rk322x/syscon_rk322x.c
arch/arm/mach-rockchip/rk3288-board-spl.c
arch/arm/mach-rockchip/rk3288-board-tpl.c
arch/arm/mach-rockchip/rk3288-board.c
arch/arm/mach-rockchip/rk3288/Kconfig
arch/arm/mach-rockchip/rk3288/clk_rk3288.c
arch/arm/mach-rockchip/rk3288/rk3288.c
arch/arm/mach-rockchip/rk3288/syscon_rk3288.c
arch/arm/mach-rockchip/rk3328/Kconfig
arch/arm/mach-rockchip/rk3328/clk_rk3328.c
arch/arm/mach-rockchip/rk3328/rk3328.c
arch/arm/mach-rockchip/rk3328/syscon_rk3328.c
arch/arm/mach-rockchip/rk3368-board-spl.c
arch/arm/mach-rockchip/rk3368-board-tpl.c
arch/arm/mach-rockchip/rk3368/Kconfig
arch/arm/mach-rockchip/rk3368/clk_rk3368.c
arch/arm/mach-rockchip/rk3368/rk3368.c
arch/arm/mach-rockchip/rk3368/syscon_rk3368.c
arch/arm/mach-rockchip/rk3399-board-spl.c
arch/arm/mach-rockchip/rk3399-board.c
arch/arm/mach-rockchip/rk3399/Kconfig
arch/arm/mach-rockchip/rk3399/clk_rk3399.c
arch/arm/mach-rockchip/rk3399/rk3399.c
arch/arm/mach-rockchip/rk3399/syscon_rk3399.c
arch/arm/mach-rockchip/rk_timer.c
arch/arm/mach-rockchip/rv1108/Kconfig
arch/arm/mach-rockchip/rv1108/clk_rv1108.c
arch/arm/mach-rockchip/rv1108/syscon_rv1108.c
arch/arm/mach-rockchip/sdram_common.c
arch/arm/mach-socfpga/include/mach/misc.h
arch/arm/mach-socfpga/include/mach/reset_manager_gen5.h
arch/arm/mach-socfpga/misc.c
arch/arm/mach-socfpga/misc_arria10.c
arch/arm/mach-socfpga/misc_gen5.c
arch/arm/mach-socfpga/misc_s10.c
arch/arm/mach-socfpga/reset_manager_gen5.c
arch/arm/mach-socfpga/spl_gen5.c
board/CZ.NIC/turris_mox/turris_mox.c
board/CZ.NIC/turris_omnia/turris_omnia.c
board/elgin/elgin_rv1108/elgin_rv1108.c
board/rockchip/evb_rk3036/evb_rk3036.c
board/rockchip/evb_rk3229/evb_rk3229.c
board/rockchip/evb_rk3399/MAINTAINERS
board/rockchip/evb_rk3399/evb-rk3399.c
board/rockchip/evb_rv1108/evb_rv1108.c
board/rockchip/kylin_rk3036/kylin_rk3036.c
board/rockchip/sheep_rk3368/sheep_rk3368.c
board/siemens/taurus/Kconfig
board/siemens/taurus/taurus.c
board/theobroma-systems/lion_rk3368/lion_rk3368.c
board/theobroma-systems/puma_rk3399/puma-rk3399.c
board/ti/am335x/mux.c
board/vamrs/rock960_rk3399/rock960-rk3399.c
cmd/bootefi.c
cmd/efidebug.c
cmd/gpt.c
cmd/nvedit_efi.c
cmd/rockusb.c
configs/am335x_evm_defconfig
configs/am57xx_evm_defconfig
configs/am57xx_hs_evm_defconfig
configs/am57xx_hs_evm_usb_defconfig
configs/apalis-tk1_defconfig
configs/apalis_imx6_defconfig
configs/arndale_defconfig
configs/avnet_ultra96_rev1_defconfig
configs/axm_defconfig
configs/cl-som-imx7_defconfig
configs/clearfog_defconfig
configs/cm_t54_defconfig
configs/colibri_imx6_defconfig
configs/colibri_imx7_emmc_defconfig
configs/display5_defconfig
configs/display5_factory_defconfig
configs/dms-ba16-1g_defconfig
configs/dms-ba16_defconfig
configs/dra7xx_evm_defconfig
configs/dra7xx_hs_evm_defconfig
configs/dra7xx_hs_evm_usb_defconfig
configs/edison_defconfig
configs/ge_bx50v3_defconfig
configs/gwventana_emmc_defconfig
configs/gwventana_gw5904_defconfig
configs/gwventana_nand_defconfig
configs/imx6dl_mamoj_defconfig
configs/imx8mq_evk_defconfig
configs/imx8qxp_mek_defconfig
configs/kylin-rk3036_defconfig
configs/liteboard_defconfig
configs/mt7623n_bpir2_defconfig
configs/mx6sabresd_defconfig
configs/mx7dsabresd_defconfig
configs/mx7dsabresd_qspi_defconfig
configs/mx7ulp_evk_defconfig
configs/mx7ulp_evk_plugin_defconfig
configs/odroid-xu3_defconfig
configs/omap5_uevm_defconfig
configs/opos6uldev_defconfig
configs/orangepi-rk3399_defconfig [new file with mode: 0644]
configs/peach-pi_defconfig
configs/peach-pit_defconfig
configs/pico-hobbit-imx6ul_defconfig
configs/pico-hobbit-imx7d_defconfig
configs/pico-imx6ul_defconfig
configs/pico-imx7d_defconfig
configs/pico-pi-imx6ul_defconfig
configs/pico-pi-imx7d_defconfig
configs/puma-rk3399_defconfig
configs/riotboard_defconfig
configs/riotboard_spl_defconfig
configs/smdk5250_defconfig
configs/smdk5420_defconfig
configs/snow_defconfig
configs/spring_defconfig
configs/stm32mp15_basic_defconfig
configs/stm32mp15_trusted_defconfig
configs/taurus_defconfig
configs/turris_omnia_defconfig
configs/uniphier_ld4_sld8_defconfig
configs/uniphier_v7_defconfig
configs/uniphier_v8_defconfig
configs/vinco_defconfig
configs/vining_2000_defconfig
configs/warp7_bl33_defconfig
configs/warp7_defconfig
configs/warp_defconfig
configs/xilinx_zynqmp_mini_emmc0_defconfig
configs/xilinx_zynqmp_mini_emmc1_defconfig
configs/xilinx_zynqmp_zc1751_xm015_dc1_defconfig
configs/xilinx_zynqmp_zc1751_xm017_dc3_defconfig
configs/xpress_defconfig
configs/xpress_spl_defconfig
configs/zc5202_defconfig
configs/zc5601_defconfig
disk/part_efi.c
doc/README.davinci
doc/git-mailrc
drivers/clk/rockchip/clk_rk3036.c
drivers/clk/rockchip/clk_rk3128.c
drivers/clk/rockchip/clk_rk3188.c
drivers/clk/rockchip/clk_rk322x.c
drivers/clk/rockchip/clk_rk3288.c
drivers/clk/rockchip/clk_rk3328.c
drivers/clk/rockchip/clk_rk3368.c
drivers/clk/rockchip/clk_rk3399.c
drivers/clk/rockchip/clk_rv1108.c
drivers/dma/ti/k3-udma.c
drivers/firmware/ti_sci.c
drivers/gpio/rk_gpio.c
drivers/i2c/mvtwsi.c
drivers/i2c/rk_i2c.c
drivers/mmc/Kconfig
drivers/mmc/dw_mmc.c
drivers/mmc/fsl_esdhc.c
drivers/mmc/rockchip_dw_mmc.c
drivers/mmc/sdhci.c
drivers/mtd/nand/raw/davinci_nand.c
drivers/net/gmac_rockchip.c
drivers/net/ti/davinci_emac.c
drivers/pinctrl/pinctrl-uclass.c
drivers/pwm/rk_pwm.c
drivers/ram/rockchip/dmc-rk3368.c
drivers/ram/rockchip/sdram_rk3128.c
drivers/ram/rockchip/sdram_rk3188.c
drivers/ram/rockchip/sdram_rk322x.c
drivers/ram/rockchip/sdram_rk3288.c
drivers/ram/rockchip/sdram_rk3328.c
drivers/ram/rockchip/sdram_rk3399.c
drivers/reset/reset-rockchip.c
drivers/serial/serial_rockchip.c
drivers/sound/rockchip_sound.c
drivers/spi/rk_spi.c
drivers/sysreset/sysreset_rockchip.c
drivers/timer/rockchip_timer.c
drivers/usb/gadget/f_rockusb.c
drivers/usb/host/ohci-hcd.c
drivers/usb/musb/musb_hcd.c
drivers/video/rockchip/rk3288_hdmi.c
drivers/video/rockchip/rk3288_mipi.c
drivers/video/rockchip/rk3288_vop.c
drivers/video/rockchip/rk3399_hdmi.c
drivers/video/rockchip/rk3399_mipi.c
drivers/video/rockchip/rk3399_vop.c
drivers/video/rockchip/rk_edp.c
drivers/video/rockchip/rk_hdmi.c
drivers/video/rockchip/rk_lvds.c
drivers/video/rockchip/rk_mipi.c
drivers/video/rockchip/rk_vop.c
drivers/video/rockchip/rk_vop.h
drivers/watchdog/Kconfig
fs/btrfs/btrfs.c
fs/btrfs/super.c
include/configs/advantech_dms-ba16.h
include/configs/am57xx_evm.h
include/configs/apalis-tk1.h
include/configs/apalis_imx6.h
include/configs/arndale.h
include/configs/brppt1.h
include/configs/cl-som-imx7.h
include/configs/clearfog.h
include/configs/cm_t54.h
include/configs/colibri_imx6.h
include/configs/colibri_imx7.h
include/configs/display5.h
include/configs/dra7xx_evm.h
include/configs/dragonboard410c.h
include/configs/edison.h
include/configs/embestmx6boards.h
include/configs/exynos5-common.h
include/configs/ge_bx50v3.h
include/configs/gw_ventana.h
include/configs/imx6dl-mamoj.h
include/configs/imx8mq_evk.h
include/configs/imx8qxp_mek.h
include/configs/liteboard.h
include/configs/mt7623.h
include/configs/mx6sabresd.h
include/configs/mx7dsabresd.h
include/configs/mx7ulp_evk.h
include/configs/omap5_uevm.h
include/configs/opos6uldev.h
include/configs/pico-imx6ul.h
include/configs/pico-imx7d.h
include/configs/rk3036_common.h
include/configs/rk3188_common.h
include/configs/rk322x_common.h
include/configs/rk3288_common.h
include/configs/rk3368_common.h
include/configs/rv1108_common.h
include/configs/stm32mp1.h
include/configs/taurus.h
include/configs/turris_omnia.h
include/configs/uniphier.h
include/configs/vinco.h
include/configs/vining_2000.h
include/configs/warp.h
include/configs/warp7.h
include/configs/xilinx_zynqmp.h
include/configs/xpress.h
include/configs/zc5202.h
include/configs/zc5601.h
include/dt-bindings/pinctrl/k3-am65.h [deleted file]
include/dt-bindings/pinctrl/k3.h [new file with mode: 0644]
include/efi_loader.h
include/efi_selftest.h
include/fs.h
include/sdhci.h
lib/Kconfig
lib/efi_loader/efi_bootmgr.c
lib/efi_loader/efi_boottime.c
lib/efi_loader/efi_memory.c
lib/efi_loader/efi_setup.c
lib/efi_selftest/efi_selftest_miniapp_exit.c
lib/efi_selftest/efi_selftest_startimage_exit.c
lib/uuid.c
lib/vsprintf.c
scripts/config_whitelist.txt
tools/Makefile
tools/kwbimage.c

index 6035623fc467ae7bec689bdf805af4d4853ab401..33fd4652a42554599e6ced49d26613546b902ab2 100644 (file)
@@ -239,6 +239,7 @@ F:  arch/arm/mach-rmobile/
 ARM ROCKCHIP
 M:     Simon Glass <sjg@chromium.org>
 M:     Philipp Tomsich <philipp.tomsich@theobroma-systems.com>
+M:     Kever Yang <kever.yang@rock-chips.com>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-rockchip.git
 F:     arch/arm/include/asm/arch-rockchip/
@@ -587,7 +588,7 @@ S:  Maintained
 F:     arch/mips/mach-jz47xx/
 
 MMC
-M:     Jaehoon Chung <jh80.chung@samsung.com>
+M:     Peng Fan <peng.fan@nxp.com>
 S:     Maintained
 T:     git git://git.denx.de/u-boot-mmc.git
 F:     drivers/mmc/
diff --git a/README b/README
index c65448c1ec9843a43779ae169e5d6bfed96ce97c..8e934604cf605f18ac9999f178e6bd407ad3289d 100644 (file)
--- a/README
+++ b/README
@@ -1120,9 +1120,6 @@ The following options need to be configured:
                        CONFIG_SH_MMCIF_CLK
                        Define the clock frequency for MMCIF
 
-               CONFIG_SUPPORT_EMMC_BOOT
-               Enable some additional features of the eMMC boot partitions.
-
 - USB Device Firmware Update (DFU) class support:
                CONFIG_DFU_OVER_USB
                This enables the USB portion of the DFU USB class
index e84f3d7debf13749d1cec82b50fc45b4eacab984..49f01f1ff17ddbc331525a3af441d888aefecf28 100644 (file)
@@ -1439,6 +1439,7 @@ config ARCH_ROCKCHIP
        select SYS_THUMB_BUILD if !ARM64
        imply ADC
        imply CMD_DM
+       imply DEBUG_UART_BOARD_INIT
        imply DISTRO_DEFAULTS
        imply FAT_WRITE
        imply SARADC_ROCKCHIP
index fe52166e28f08f637094dfb714bebe6bc2e529ad..ecee9e37a501e228d7bc3f450d37a387d37c8ed3 100644 (file)
@@ -26,7 +26,11 @@ _start:
  * order to boot, allow them to set that in their boot0.h file and then
  * use it here.
  */
+#ifdef CONFIG_ARCH_ROCKCHIP
+#include <asm/arch-rockchip/boot0.h>
+#else
 #include <asm/arch/boot0.h>
+#endif
 #else
        b       reset
 #endif
index dfa5b02958779edc891f4a376c2b7d3d70cd6b8f..8e082f28403a8d9510719f6abc84abfef9ece75d 100644 (file)
@@ -74,6 +74,7 @@ dtb-$(CONFIG_ARCH_ROCKCHIP) += \
        rk3288-fennec.dtb \
        rk3288-firefly.dtb \
        rk3288-miqi.dtb \
+       rk3399-orangepi.dtb \
        rk3288-phycore-rdk.dtb \
        rk3288-popmetal.dtb \
        rk3288-rock2-square.dtb \
@@ -255,6 +256,7 @@ dtb-$(CONFIG_AM33XX) += \
        am335x-evmsk.dtb \
        am335x-bonegreen.dtb \
        am335x-icev2.dtb \
+       am335x-pocketbeagle.dtb \
        am335x-pxm50.dtb \
        am335x-rut.dtb \
        am335x-shc.dtb \
diff --git a/arch/arm/dts/am335x-osd335x-common.dtsi b/arch/arm/dts/am335x-osd335x-common.dtsi
new file mode 100644 (file)
index 0000000..f8ff473
--- /dev/null
@@ -0,0 +1,124 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * Author: Robert Nelson <robertcnelson@gmail.com>
+ */
+
+/ {
+       cpus {
+               cpu@0 {
+                       cpu0-supply = <&dcdc2_reg>;
+               };
+       };
+
+       memory@80000000 {
+               device_type = "memory";
+               reg = <0x80000000 0x20000000>; /* 512 MB */
+       };
+};
+
+&cpu0_opp_table {
+       /*
+       * Octavo Systems:
+       * The EFUSE_SMA register is not programmed for any of the AM335x wafers
+       * we get and we are not programming them during our production test.
+       * Therefore, from a DEVICE_ID revision point of view, the silicon looks
+       * like it is Revision 2.1.  However, from an EFUSE_SMA point of view for
+       * the HW OPP table, the silicon looks like it is Revision 1.0 (ie the
+       * EFUSE_SMA register reads as all zeros).
+       */
+       oppnitro-1000000000 {
+               opp-supported-hw = <0x06 0x0100>;
+       };
+};
+
+&am33xx_pinmux {
+       i2c0_pins: pinmux-i2c0-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x988, PIN_INPUT_PULLUP | MUX_MODE0)       /* (C17) I2C0_SDA.I2C0_SDA */
+                       AM33XX_IOPAD(0x98c, PIN_INPUT_PULLUP | MUX_MODE0)       /* (C16) I2C0_SCL.I2C0_SCL */
+               >;
+       };
+};
+
+&i2c0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c0_pins>;
+
+       status = "okay";
+       clock-frequency = <400000>;
+
+       tps: tps@24 {
+               reg = <0x24>;
+       };
+};
+
+/include/ "tps65217.dtsi"
+
+&tps {
+       interrupts = <7>; /* NMI */
+       interrupt-parent = <&intc>;
+
+       ti,pmic-shutdown-controller;
+
+       pwrbutton {
+               interrupts = <2>;
+               status = "okay";
+       };
+
+       regulators {
+               dcdc1_reg: regulator@0 {
+                       regulator-name = "vdds_dpr";
+                       regulator-always-on;
+               };
+
+               dcdc2_reg: regulator@1 {
+                       /* VDD_MPU voltage limits 0.95V - 1.26V with +/-4% tolerance */
+                       regulator-name = "vdd_mpu";
+                       regulator-min-microvolt = <925000>;
+                       regulator-max-microvolt = <1351500>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               dcdc3_reg: regulator@2 {
+                       /* VDD_CORE voltage limits 0.95V - 1.1V with +/-4% tolerance */
+                       regulator-name = "vdd_core";
+                       regulator-min-microvolt = <925000>;
+                       regulator-max-microvolt = <1150000>;
+                       regulator-boot-on;
+                       regulator-always-on;
+               };
+
+               ldo1_reg: regulator@3 {
+                       regulator-name = "vio,vrtc,vdds";
+                       regulator-always-on;
+               };
+
+               ldo2_reg: regulator@4 {
+                       regulator-name = "vdd_3v3aux";
+                       regulator-always-on;
+               };
+
+               ldo3_reg: regulator@5 {
+                       regulator-name = "vdd_1v8";
+                       regulator-min-microvolt = <1800000>;
+                       regulator-max-microvolt = <1800000>;
+                       regulator-always-on;
+               };
+
+               ldo4_reg: regulator@6 {
+                       regulator-name = "vdd_3v3a";
+                       regulator-always-on;
+               };
+       };
+};
+
+&aes {
+       status = "okay";
+};
+
+&sham {
+       status = "okay";
+};
diff --git a/arch/arm/dts/am335x-pocketbeagle.dts b/arch/arm/dts/am335x-pocketbeagle.dts
new file mode 100644 (file)
index 0000000..62fe5ca
--- /dev/null
@@ -0,0 +1,237 @@
+// SPDX-License-Identifier: GPL-2.0
+/*
+ * Copyright (C) 2012 Texas Instruments Incorporated - http://www.ti.com/
+ *
+ * Author: Robert Nelson <robertcnelson@gmail.com>
+ */
+/dts-v1/;
+
+#include "am33xx.dtsi"
+#include "am335x-osd335x-common.dtsi"
+
+/ {
+       model = "TI AM335x PocketBeagle";
+       compatible = "ti,am335x-pocketbeagle", "ti,am335x-bone", "ti,am33xx";
+
+       chosen {
+               stdout-path = &uart0;
+       };
+
+       leds {
+               pinctrl-names = "default";
+               pinctrl-0 = <&usr_leds_pins>;
+
+               compatible = "gpio-leds";
+
+               usr0 {
+                       label = "beaglebone:green:usr0";
+                       gpios = <&gpio1 21 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "heartbeat";
+                       default-state = "off";
+               };
+
+               usr1 {
+                       label = "beaglebone:green:usr1";
+                       gpios = <&gpio1 22 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "mmc0";
+                       default-state = "off";
+               };
+
+               usr2 {
+                       label = "beaglebone:green:usr2";
+                       gpios = <&gpio1 23 GPIO_ACTIVE_HIGH>;
+                       linux,default-trigger = "cpu0";
+                       default-state = "off";
+               };
+
+               usr3 {
+                       label = "beaglebone:green:usr3";
+                       gpios = <&gpio1 24 GPIO_ACTIVE_HIGH>;
+                       default-state = "off";
+               };
+       };
+
+       vmmcsd_fixed: fixedregulator0 {
+               compatible = "regulator-fixed";
+               regulator-name = "vmmcsd_fixed";
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+       };
+};
+
+&am33xx_pinmux {
+       i2c2_pins: pinmux-i2c2-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x97c, PIN_INPUT_PULLUP | MUX_MODE3)       /* (D17) uart1_rtsn.I2C2_SCL */
+                       AM33XX_IOPAD(0x978, PIN_INPUT_PULLUP | MUX_MODE3)       /* (D18) uart1_ctsn.I2C2_SDA */
+               >;
+       };
+
+       ehrpwm0_pins: pinmux-ehrpwm0-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x990, PIN_OUTPUT_PULLDOWN | MUX_MODE1)    /* (A13) mcasp0_aclkx.ehrpwm0A */
+               >;
+       };
+
+       ehrpwm1_pins: pinmux-ehrpwm1-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x848, PIN_OUTPUT_PULLDOWN | MUX_MODE6)    /* (U14) gpmc_a2.ehrpwm1A */
+               >;
+       };
+
+       mmc0_pins: pinmux-mmc0-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x960, PIN_INPUT | MUX_MODE7)              /* (C15) spi0_cs1.gpio0[6] */
+                       AM33XX_IOPAD(0x8fc, PIN_INPUT_PULLUP | MUX_MODE0)       /* (G16) mmc0_dat0.mmc0_dat0 */
+                       AM33XX_IOPAD(0x8f8, PIN_INPUT_PULLUP | MUX_MODE0)       /* (G15) mmc0_dat1.mmc0_dat1 */
+                       AM33XX_IOPAD(0x8f4, PIN_INPUT_PULLUP | MUX_MODE0)       /* (F18) mmc0_dat2.mmc0_dat2 */
+                       AM33XX_IOPAD(0x8f0, PIN_INPUT_PULLUP | MUX_MODE0)       /* (F17) mmc0_dat3.mmc0_dat3 */
+                       AM33XX_IOPAD(0x904, PIN_INPUT_PULLUP | MUX_MODE0)       /* (G18) mmc0_cmd.mmc0_cmd */
+                       AM33XX_IOPAD(0x900, PIN_INPUT_PULLUP | MUX_MODE0)       /* (G17) mmc0_clk.mmc0_clk */
+                       AM33XX_IOPAD(0x9a0, PIN_INPUT | MUX_MODE4)              /* (B12) mcasp0_aclkr.mmc0_sdwp */
+               >;
+       };
+
+       spi0_pins: pinmux-spi0-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x950, PIN_INPUT_PULLUP | MUX_MODE0)       /* (A17) spi0_sclk.spi0_sclk */
+                       AM33XX_IOPAD(0x954, PIN_INPUT_PULLUP | MUX_MODE0)       /* (B17) spi0_d0.spi0_d0 */
+                       AM33XX_IOPAD(0x958, PIN_INPUT_PULLUP | MUX_MODE0)       /* (B16) spi0_d1.spi0_d1 */
+                       AM33XX_IOPAD(0x95c, PIN_INPUT_PULLUP | MUX_MODE0)       /* (A16) spi0_cs0.spi0_cs0 */
+               >;
+       };
+
+       spi1_pins: pinmux-spi1-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x964, PIN_INPUT_PULLUP | MUX_MODE4)       /* (C18) eCAP0_in_PWM0_out.spi1_sclk */
+                       AM33XX_IOPAD(0x968, PIN_INPUT_PULLUP | MUX_MODE4)       /* (E18) uart0_ctsn.spi1_d0 */
+                       AM33XX_IOPAD(0x96c, PIN_INPUT_PULLUP | MUX_MODE4)       /* (E17) uart0_rtsn.spi1_d1 */
+                       AM33XX_IOPAD(0x9b0, PIN_INPUT_PULLUP | MUX_MODE4)       /* (A15) xdma_event_intr0.spi1_cs1 */
+               >;
+       };
+
+       usr_leds_pins: pinmux-usr-leds-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x854, PIN_OUTPUT | MUX_MODE7)             /* (V15) gpmc_a5.gpio1[21] - USR_LED_0 */
+                       AM33XX_IOPAD(0x858, PIN_OUTPUT | MUX_MODE7)             /* (U15) gpmc_a6.gpio1[22] - USR_LED_1 */
+                       AM33XX_IOPAD(0x85c, PIN_OUTPUT | MUX_MODE7)             /* (T15) gpmc_a7.gpio1[23] - USR_LED_2 */
+                       AM33XX_IOPAD(0x860, PIN_OUTPUT | MUX_MODE7)             /* (V16) gpmc_a8.gpio1[24] - USR_LED_3 */
+               >;
+       };
+
+       uart0_pins: pinmux-uart0-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x970, PIN_INPUT_PULLUP | MUX_MODE0)       /* (E15) uart0_rxd.uart0_rxd */
+                       AM33XX_IOPAD(0x974, PIN_OUTPUT_PULLDOWN | MUX_MODE0)    /* (E16) uart0_txd.uart0_txd */
+               >;
+       };
+
+       uart4_pins: pinmux-uart4-pins {
+               pinctrl-single,pins = <
+                       AM33XX_IOPAD(0x870, PIN_INPUT_PULLUP | MUX_MODE6)       /* (T17) gpmc_wait0.uart4_rxd */
+                       AM33XX_IOPAD(0x874, PIN_OUTPUT_PULLDOWN | MUX_MODE6)    /* (U17) gpmc_wpn.uart4_txd */
+               >;
+       };
+};
+
+&epwmss0 {
+       status = "okay";
+};
+
+&ehrpwm0 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&ehrpwm0_pins>;
+};
+
+&epwmss1 {
+       status = "okay";
+};
+
+&ehrpwm1 {
+       status = "okay";
+       pinctrl-names = "default";
+       pinctrl-0 = <&ehrpwm1_pins>;
+};
+
+&i2c0 {
+       eeprom: eeprom@50 {
+               compatible = "atmel,24c256";
+               reg = <0x50>;
+       };
+};
+
+&i2c2 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&i2c2_pins>;
+
+       status = "okay";
+       clock-frequency = <400000>;
+};
+
+&mmc1 {
+       status = "okay";
+       vmmc-supply = <&vmmcsd_fixed>;
+       bus-width = <4>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&mmc0_pins>;
+       cd-gpios = <&gpio0 6 GPIO_ACTIVE_LOW>;
+};
+
+&rtc {
+       system-power-controller;
+};
+
+&tscadc {
+       status = "okay";
+       adc {
+               ti,adc-channels = <0 1 2 3 4 5 6 7>;
+               ti,chan-step-avg = <16 16 16 16 16 16 16 16>;
+               ti,chan-step-opendelay = <0x98 0x98 0x98 0x98 0x98 0x98 0x98 0x98>;
+               ti,chan-step-sampledelay = <0x0 0x0 0x0 0x0 0x0 0x0 0x0 0x0>;
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_pins>;
+
+       status = "okay";
+};
+
+&uart4 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart4_pins>;
+
+       status = "okay";
+};
+
+&usb {
+       status = "okay";
+};
+
+&usb_ctrl_mod {
+       status = "okay";
+};
+
+&usb0_phy {
+       status = "okay";
+};
+
+&usb0 {
+       status = "okay";
+       dr_mode = "otg";
+};
+
+&usb1_phy {
+       status = "okay";
+};
+
+&usb1 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&cppi41dma  {
+       status = "okay";
+};
index cee228bb8cf5e57c4449f3eb954bfb8cee32003b..c00c5a8b8dda6ba65384496bc962151aaf5fa2a1 100644 (file)
@@ -15,7 +15,7 @@
 
 / {
        model = "Siemens taurus";
-       compatible = "atmel,at91sam9g20ek", "atmel,at91sam9g20", "atmel,at91sam9";
+       compatible = "atmel,at91sam9g20", "atmel,at91sam9";
 
        chosen {
                u-boot,dm-pre-reloc;
                        clock-frequency = <18432000>;
                };
        };
+};
 
-       ahb {
-               apb {
-                       pinctrl@fffff400 {
-                               board {
-                                       pinctrl_pck0_as_mck: pck0_as_mck {
-                                               atmel,pins =
-                                                       <AT91_PIOC 1 AT91_PERIPH_B AT91_PINCTRL_NONE>;  /* PC1 periph B */
-                                       };
-
-                               };
-                       };
-
-                       dbgu: serial@fffff200 {
-                               u-boot,dm-pre-reloc;
-                               status = "okay";
-                       };
-
-                       usart0: serial@fffb0000 {
-                               pinctrl-0 =
-                                       <&pinctrl_usart0
-                                        &pinctrl_usart0_rts
-                                        &pinctrl_usart0_cts
-                                        &pinctrl_usart0_dtr_dsr
-                                        &pinctrl_usart0_dcd
-                                        &pinctrl_usart0_ri>;
-                               status = "okay";
-                       };
-
-                       usart1: serial@fffb4000 {
-                               status = "okay";
-                       };
-
-                       macb0: ethernet@fffc4000 {
-                               phy-mode = "rmii";
-                               status = "okay";
-                       };
-
-                       usb1: gadget@fffa4000 {
-                               atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>;
-                               status = "okay";
-                       };
-
-                       ssc0: ssc@fffbc000 {
-                               status = "okay";
-                               pinctrl-0 = <&pinctrl_ssc0_tx>;
-                       };
-
-                       spi0: spi@fffc8000 {
-                               cs-gpios = <0>, <&pioC 11 0>, <0>, <0>;
-                               mtd_dataflash@0 {
-                                       compatible = "atmel,at45", "atmel,dataflash";
-                                       spi-max-frequency = <50000000>;
-                                       reg = <1>;
-                               };
-                       };
-
-                       rtc@fffffd20 {
-                               atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
-                               status = "okay";
-                       };
-
-                       watchdog@fffffd40 {
-                               timeout-sec = <15>;
-                               status = "okay";
-                       };
-
-                       gpbr: syscon@fffffd50 {
-                               status = "okay";
-                       };
-               };
+&dbgu {
+       status = "okay";
+};
 
-               nand0: nand@40000000 {
-                       nand-bus-width = <8>;
-                       nand-ecc-mode = "soft";
-                       nand-on-flash-bbt;
-                       status = "okay";
-               };
+&gpbr {
+       status = "okay";
+};
+
+&macb0 {
+       phy-mode = "rmii";
+       status = "okay";
+};
 
-               usb0: ohci@00500000 {
-                       num-ports = <2>;
-                       status = "okay";
+&nand0 {
+       nand-bus-width = <8>;
+       nand-ecc-mode = "soft";
+       nand-on-flash-bbt;
+       status = "okay";
+};
+
+&pinctrl {
+       u-boot,dm-pre-reloc;
+       board {
+               pinctrl_pck0_as_mck: pck0_as_mck {
+                       atmel,pins =
+                       /* PC1 periph B */
+                       <AT91_PIOC 1 AT91_PERIPH_B AT91_PINCTRL_NONE>;
                };
+
        };
 };
+
+&rtc {
+       atmel,rtt-rtc-time-reg = <&gpbr 0x0>;
+       status = "okay";
+};
+
+&spi0 {
+       cs-gpios = <0>, <&pioC 11 0>, <0>, <0>;
+       mtd_dataflash@0 {
+               compatible = "atmel,at45", "atmel,dataflash";
+               spi-max-frequency = <50000000>;
+               reg = <1>;
+       };
+};
+
+&ssc0 {
+       status = "okay";
+       pinctrl-0 = <&pinctrl_ssc0_tx>;
+};
+
+&usart0 {
+       pinctrl-0 =
+               <&pinctrl_usart0
+                &pinctrl_usart0_rts
+                &pinctrl_usart0_cts
+                &pinctrl_usart0_dtr_dsr
+                &pinctrl_usart0_dcd
+                &pinctrl_usart0_ri>;
+       status = "okay";
+};
+
+&usart1 {
+       status = "okay";
+};
+
+&usb0 {
+       num-ports = <2>;
+       status = "okay";
+};
+
+&usb1 {
+       atmel,vbus-gpio = <&pioC 5 GPIO_ACTIVE_HIGH>;
+       status = "okay";
+};
+
+&watchdog {
+       u-boot,dm-pre-reloc;
+       timeout-sec = <15>;
+       status = "okay";
+};
index c5d23d0203abc755eea97b7b90405033ec9ce339..f5c8253831a2f27c12fbc7359462ca394873aeff 100644 (file)
@@ -3,7 +3,7 @@
  * Copyright (C) 2018 Texas Instruments Incorporated - http://www.ti.com/
  */
 
-#include <dt-bindings/pinctrl/k3-am65.h>
+#include <dt-bindings/pinctrl/k3.h>
 #include <dt-bindings/dma/k3-udma.h>
 
 / {
        u-boot,dm-spl;
        main_uart0_pins_default: main_uart0_pins_default {
                pinctrl-single,pins = <
-                       AM65X_IOPAD(0x01e4, PIN_INPUT | MUX_MODE0)      /* (AF11) UART0_RXD */
-                       AM65X_IOPAD(0x01e8, PIN_OUTPUT | MUX_MODE0)     /* (AE11) UART0_TXD */
-                       AM65X_IOPAD(0x01ec, PIN_INPUT | MUX_MODE0)      /* (AG11) UART0_CTSn */
-                       AM65X_IOPAD(0x01f0, PIN_OUTPUT | MUX_MODE0)     /* (AD11) UART0_RTSn */
+                       AM65X_IOPAD(0x01e4, PIN_INPUT, 0)       /* (AF11) UART0_RXD */
+                       AM65X_IOPAD(0x01e8, PIN_OUTPUT, 0)      /* (AE11) UART0_TXD */
+                       AM65X_IOPAD(0x01ec, PIN_INPUT, 0)       /* (AG11) UART0_CTSn */
+                       AM65X_IOPAD(0x01f0, PIN_OUTPUT, 0)      /* (AD11) UART0_RTSn */
                >;
                u-boot,dm-spl;
        };
 
        main_mmc0_pins_default: main_mmc0_pins_default {
                pinctrl-single,pins = <
-                       AM65X_IOPAD(0x01a8, PIN_INPUT_PULLDOWN | MUX_MODE0) /* (B25) MMC0_CLK */
-                       AM65X_IOPAD(0x01aC, PIN_INPUT_PULLUP | MUX_MODE0) /* (B27) MMC0_CMD */
-                       AM65X_IOPAD(0x01a4, PIN_INPUT_PULLUP | MUX_MODE0) /* (A26) MMC0_DAT0 */
-                       AM65X_IOPAD(0x01a0, PIN_INPUT_PULLUP | MUX_MODE0) /* (E25) MMC0_DAT1 */
-                       AM65X_IOPAD(0x019c, PIN_INPUT_PULLUP | MUX_MODE0) /* (C26) MMC0_DAT2 */
-                       AM65X_IOPAD(0x0198, PIN_INPUT_PULLUP | MUX_MODE0) /* (A25) MMC0_DAT3 */
-                       AM65X_IOPAD(0x0194, PIN_INPUT_PULLUP | MUX_MODE0) /* (E24) MMC0_DAT4 */
-                       AM65X_IOPAD(0x0190, PIN_INPUT_PULLUP | MUX_MODE0) /* (A24) MMC0_DAT5 */
-                       AM65X_IOPAD(0x018c, PIN_INPUT_PULLUP | MUX_MODE0) /* (B26) MMC0_DAT6 */
-                       AM65X_IOPAD(0x0188, PIN_INPUT_PULLUP | MUX_MODE0) /* (D25) MMC0_DAT7 */
-                       AM65X_IOPAD(0x01b0, PIN_INPUT | MUX_MODE0) /* (C25) MMC0_DS */
+                       AM65X_IOPAD(0x01a8, PIN_INPUT_PULLDOWN, 0)      /* (B25) MMC0_CLK */
+                       AM65X_IOPAD(0x01aC, PIN_INPUT_PULLUP, 0)        /* (B27) MMC0_CMD */
+                       AM65X_IOPAD(0x01a4, PIN_INPUT_PULLUP, 0)        /* (A26) MMC0_DAT0 */
+                       AM65X_IOPAD(0x01a0, PIN_INPUT_PULLUP, 0)        /* (E25) MMC0_DAT1 */
+                       AM65X_IOPAD(0x019c, PIN_INPUT_PULLUP, 0)        /* (C26) MMC0_DAT2 */
+                       AM65X_IOPAD(0x0198, PIN_INPUT_PULLUP, 0)        /* (A25) MMC0_DAT3 */
+                       AM65X_IOPAD(0x0194, PIN_INPUT_PULLUP, 0)        /* (E24) MMC0_DAT4 */
+                       AM65X_IOPAD(0x0190, PIN_INPUT_PULLUP, 0)        /* (A24) MMC0_DAT5 */
+                       AM65X_IOPAD(0x018c, PIN_INPUT_PULLUP, 0)        /* (B26) MMC0_DAT6 */
+                       AM65X_IOPAD(0x0188, PIN_INPUT_PULLUP, 0)        /* (D25) MMC0_DAT7 */
+                       AM65X_IOPAD(0x01b0, PIN_INPUT, 0)                       /* (C25) MMC0_DS */
                >;
                u-boot,dm-spl;
        };
 
        main_mmc1_pins_default: main_mmc1_pins_default {
                pinctrl-single,pins = <
-                       AM65X_IOPAD(0x02d4, PIN_INPUT_PULLDOWN | MUX_MODE0) /* (C27) MMC1_CLK */
-                       AM65X_IOPAD(0x02d8, PIN_INPUT_PULLUP | MUX_MODE0) /* (C28) MMC1_CMD */
-                       AM65X_IOPAD(0x02d0, PIN_INPUT_PULLUP | MUX_MODE0) /* (D28) MMC1_DAT0 */
-                       AM65X_IOPAD(0x02cc, PIN_INPUT_PULLUP | MUX_MODE0) /* (E27) MMC1_DAT1 */
-                       AM65X_IOPAD(0x02c8, PIN_INPUT_PULLUP | MUX_MODE0) /* (D26) MMC1_DAT2 */
-                       AM65X_IOPAD(0x02c4, PIN_INPUT_PULLUP | MUX_MODE0) /* (D27) MMC1_DAT3 */
-                       AM65X_IOPAD(0x02dc, PIN_INPUT_PULLUP | MUX_MODE0) /* (B24) MMC1_SDCD */
-                       AM65X_IOPAD(0x02e0, PIN_INPUT | MUX_MODE0) /* (C24) MMC1_SDWP */
+                       AM65X_IOPAD(0x02d4, PIN_INPUT_PULLDOWN, 0)      /* (C27) MMC1_CLK */
+                       AM65X_IOPAD(0x02d8, PIN_INPUT_PULLUP, 0)        /* (C28) MMC1_CMD */
+                       AM65X_IOPAD(0x02d0, PIN_INPUT_PULLUP, 0)        /* (D28) MMC1_DAT0 */
+                       AM65X_IOPAD(0x02cc, PIN_INPUT_PULLUP, 0)        /* (E27) MMC1_DAT1 */
+                       AM65X_IOPAD(0x02c8, PIN_INPUT_PULLUP, 0)        /* (D26) MMC1_DAT2 */
+                       AM65X_IOPAD(0x02c4, PIN_INPUT_PULLUP, 0)        /* (D27) MMC1_DAT3 */
+                       AM65X_IOPAD(0x02dc, PIN_INPUT_PULLUP, 0)        /* (B24) MMC1_SDCD */
+                       AM65X_IOPAD(0x02e0, PIN_INPUT, 0)                       /* (C24) MMC1_SDWP */
                >;
                u-boot,dm-spl;
        };
index 081a2eceb291e3479293079b21a17c4058ca4198..a07038be70912b490eb65769da10818944f6995e 100644 (file)
@@ -99,7 +99,7 @@
 };
 
 &dmsc {
-       mboxes= <&mcu_secproxy 7>, <&mcu_secproxy 6>, <&mcu_secproxy 5>;
+       mboxes= <&mcu_secproxy 8>, <&mcu_secproxy 6>, <&mcu_secproxy 5>;
        mbox-names = "tx", "rx", "notify";
        ti,host-id = <4>;
        ti,secure-host;
        u-boot,dm-spl;
        wkup_uart0_pins_default: wkup_uart0_pins_default {
                pinctrl-single,pins = <
-                       AM65X_WKUP_IOPAD(0x00a0, PIN_INPUT | MUX_MODE0) /* (AB1) WKUP_UART0_RXD */
-                       AM65X_WKUP_IOPAD(0x00a4, PIN_OUTPUT | MUX_MODE0) /* (AB5) WKUP_UART0_TXD */
-                       AM65X_WKUP_IOPAD(0x00c8, PIN_INPUT | MUX_MODE1) /* (AC2) WKUP_GPIO0_6.WKUP_UART0_CTSn */
-                       AM65X_WKUP_IOPAD(0x00cc, PIN_OUTPUT | MUX_MODE1) /* (AC1) WKUP_GPIO0_7.WKUP_UART0_RTSn */
+                       AM65X_WKUP_IOPAD(0x00a0, PIN_INPUT, 0)  /* (AB1) WKUP_UART0_RXD */
+                       AM65X_WKUP_IOPAD(0x00a4, PIN_OUTPUT0) /* (AB5) WKUP_UART0_TXD */
+                       AM65X_WKUP_IOPAD(0x00c8, PIN_INPUT, 1)  /* (AC2) WKUP_GPIO0_6.WKUP_UART0_CTSn */
+                       AM65X_WKUP_IOPAD(0x00cc, PIN_OUTPUT1) /* (AC1) WKUP_GPIO0_7.WKUP_UART0_RTSn */
                >;
                u-boot,dm-spl;
        };
 
        wkup_vtt_pins_default: wkup_vtt_pins_default {
                pinctrl-single,pins = <
-                       AM65X_WKUP_IOPAD(0x0040, PIN_OUTPUT_PULLUP | MUX_MODE7) /* WKUP_GPIO0_28 */
+                       AM65X_WKUP_IOPAD(0x0040, PIN_OUTPUT_PULLUP, 7)  /* WKUP_GPIO0_28 */
                >;
                u-boot,dm-spl;
        };
index 4990ed90dcea44020002b7de85c951d8396acfc5..3524766515bf5525e2a738212fe17a998291963d 100644 (file)
        interrupts-extended = <&intc 83 &omap3_pmx_core 0x11a>;
        pinctrl-names = "default";
        pinctrl-0 = <&mmc1_pins>;
-       wp-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;                /* gpio_126 */
-       cd-gpios = <&gpio4 14 IRQ_TYPE_LEVEL_LOW>;              /* gpio_110 */
+       wp-gpios = <&gpio4 30 GPIO_ACTIVE_HIGH>;        /* gpio_126 */
+       cd-gpios = <&gpio4 14 GPIO_ACTIVE_LOW>;         /* gpio_110 */
        vmmc-supply = <&vmmc1>;
        bus-width = <4>;
        cap-power-off-card;
index ce004d0d18dfb580d2a371427d7ccf4247434c65..9162f3dd508521cb9d1b288c308e29af8fb511dd 100644 (file)
 };
 
 &sdmmc {
-       u-boot,dm-pre-reloc;
        bus-width = <4>;
        status = "okay";
 };
index f90e7e88db143e1882c427d04e77eed4763de602..46f2ffaf8dd7003a44a0fed0715a437d00242c90 100644 (file)
 };
 
 &sdmmc {
-       u-boot,dm-pre-reloc;
        bus-width = <4>;
        status = "okay";
 };
diff --git a/arch/arm/dts/rk3399-opp.dtsi b/arch/arm/dts/rk3399-opp.dtsi
new file mode 100644 (file)
index 0000000..d6f1095
--- /dev/null
@@ -0,0 +1,133 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2016-2017 Fuzhou Rockchip Electronics Co., Ltd
+ */
+
+/ {
+       cluster0_opp: opp-table0 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp00 {
+                       opp-hz = /bits/ 64 <408000000>;
+                       opp-microvolt = <800000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp01 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <800000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <816000000>;
+                       opp-microvolt = <850000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <1008000000>;
+                       opp-microvolt = <925000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <1000000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1416000000>;
+                       opp-microvolt = <1125000>;
+               };
+       };
+
+       cluster1_opp: opp-table1 {
+               compatible = "operating-points-v2";
+               opp-shared;
+
+               opp00 {
+                       opp-hz = /bits/ 64 <408000000>;
+                       opp-microvolt = <800000>;
+                       clock-latency-ns = <40000>;
+               };
+               opp01 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <800000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <816000000>;
+                       opp-microvolt = <825000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <1008000000>;
+                       opp-microvolt = <875000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <1200000000>;
+                       opp-microvolt = <950000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <1416000000>;
+                       opp-microvolt = <1025000>;
+               };
+               opp06 {
+                       opp-hz = /bits/ 64 <1608000000>;
+                       opp-microvolt = <1100000>;
+               };
+               opp07 {
+                       opp-hz = /bits/ 64 <1800000000>;
+                       opp-microvolt = <1200000>;
+               };
+       };
+
+       gpu_opp_table: opp-table2 {
+               compatible = "operating-points-v2";
+
+               opp00 {
+                       opp-hz = /bits/ 64 <200000000>;
+                       opp-microvolt = <800000>;
+               };
+               opp01 {
+                       opp-hz = /bits/ 64 <297000000>;
+                       opp-microvolt = <800000>;
+               };
+               opp02 {
+                       opp-hz = /bits/ 64 <400000000>;
+                       opp-microvolt = <825000>;
+               };
+               opp03 {
+                       opp-hz = /bits/ 64 <500000000>;
+                       opp-microvolt = <875000>;
+               };
+               opp04 {
+                       opp-hz = /bits/ 64 <600000000>;
+                       opp-microvolt = <925000>;
+               };
+               opp05 {
+                       opp-hz = /bits/ 64 <800000000>;
+                       opp-microvolt = <1100000>;
+               };
+       };
+};
+
+&cpu_l0 {
+       operating-points-v2 = <&cluster0_opp>;
+};
+
+&cpu_l1 {
+       operating-points-v2 = <&cluster0_opp>;
+};
+
+&cpu_l2 {
+       operating-points-v2 = <&cluster0_opp>;
+};
+
+&cpu_l3 {
+       operating-points-v2 = <&cluster0_opp>;
+};
+
+&cpu_b0 {
+       operating-points-v2 = <&cluster1_opp>;
+};
+
+&cpu_b1 {
+       operating-points-v2 = <&cluster1_opp>;
+};
+
+&gpu {
+       operating-points-v2 = <&gpu_opp_table>;
+};
diff --git a/arch/arm/dts/rk3399-orangepi-u-boot.dtsi b/arch/arm/dts/rk3399-orangepi-u-boot.dtsi
new file mode 100644 (file)
index 0000000..236b61d
--- /dev/null
@@ -0,0 +1,7 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
+ */
+
+#include "rk3399-u-boot.dtsi"
+#include "rk3399-sdram-ddr3-1333.dtsi"
diff --git a/arch/arm/dts/rk3399-orangepi.dts b/arch/arm/dts/rk3399-orangepi.dts
new file mode 100644 (file)
index 0000000..cf37b96
--- /dev/null
@@ -0,0 +1,771 @@
+// SPDX-License-Identifier: (GPL-2.0+ OR MIT)
+/*
+ * Copyright (c) 2017 Fuzhou Rockchip Electronics Co., Ltd.
+ */
+
+/dts-v1/;
+
+#include "dt-bindings/pwm/pwm.h"
+#include "dt-bindings/input/input.h"
+#include "rk3399.dtsi"
+#include "rk3399-opp.dtsi"
+
+/ {
+       model = "Orange Pi RK3399 Board";
+       compatible = "rockchip,rk3399-orangepi", "rockchip,rk3399";
+
+       chosen {
+               stdout-path = "serial2:1500000n8";
+       };
+
+       clkin_gmac: external-gmac-clock {
+               compatible = "fixed-clock";
+               clock-frequency = <125000000>;
+               clock-output-names = "clkin_gmac";
+               #clock-cells = <0>;
+       };
+
+       adc-keys {
+               compatible = "adc-keys";
+               io-channels = <&saradc 1>;
+               io-channel-names = "buttons";
+               keyup-threshold-microvolt = <1800000>;
+               poll-interval = <100>;
+
+               button-up {
+                       label = "Volume Up";
+                       linux,code = <KEY_VOLUMEUP>;
+                       press-threshold-microvolt = <100000>;
+               };
+
+               button-down {
+                       label = "Volume Down";
+                       linux,code = <KEY_VOLUMEDOWN>;
+                       press-threshold-microvolt = <300000>;
+               };
+
+               back {
+                       label = "Back";
+                       linux,code = <KEY_BACK>;
+                       press-threshold-microvolt = <985000>;
+               };
+
+               menu {
+                       label = "Menu";
+                       linux,code = <KEY_MENU>;
+                       press-threshold-microvolt = <1314000>;
+               };
+       };
+
+       dc_12v: dc-12v {
+               compatible = "regulator-fixed";
+               regulator-name = "dc_12v";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <12000000>;
+               regulator-max-microvolt = <12000000>;
+       };
+
+       keys: gpio-keys {
+               compatible = "gpio-keys";
+               autorepeat;
+
+               power {
+                       debounce-interval = <100>;
+                       gpios = <&gpio0 RK_PA5 GPIO_ACTIVE_LOW>;
+                       label = "GPIO Power";
+                       linux,code = <KEY_POWER>;
+                       linux,input-type = <1>;
+                       pinctrl-names = "default";
+                       pinctrl-0 = <&pwr_btn>;
+                       wakeup-source;
+               };
+       };
+
+       sdio_pwrseq: sdio-pwrseq {
+               compatible = "mmc-pwrseq-simple";
+               clocks = <&rk808 1>;
+               clock-names = "ext_clock";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_reg_on_h>;
+               reset-gpios = <&gpio0 RK_PB2 GPIO_ACTIVE_LOW>;
+       };
+
+       /* switched by pmic_sleep */
+       vcc1v8_s3: vcca1v8_s3: vcc1v8-s3 {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc1v8_s3";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <1800000>;
+               regulator-max-microvolt = <1800000>;
+               vin-supply = <&vcc_1v8>;
+       };
+
+       vcc3v0_sd: vcc3v0-sd {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio0 RK_PA1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&sdmmc0_pwr_h>;
+               regulator-boot-on;
+               regulator-max-microvolt = <3000000>;
+               regulator-min-microvolt = <3000000>;
+               regulator-name = "vcc3v0_sd";
+               vin-supply = <&vcc3v3_sys>;
+       };
+
+       vcc3v3_sys: vcc3v3-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc3v3_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <3300000>;
+               regulator-max-microvolt = <3300000>;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc5v0_host: vcc5v0-host-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio4 RK_PD1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc5v0_host_en>;
+               regulator-name = "vcc5v0_host";
+               regulator-always-on;
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc5v0_typec0: vcc5v0-typec0-regulator {
+               compatible = "regulator-fixed";
+               enable-active-high;
+               gpio = <&gpio1 RK_PA3 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&vcc5v0_typec0_en>;
+               regulator-name = "vcc5v0_typec0";
+               vin-supply = <&vcc_sys>;
+       };
+
+       vcc_sys: vcc-sys {
+               compatible = "regulator-fixed";
+               regulator-name = "vcc_sys";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <5000000>;
+               regulator-max-microvolt = <5000000>;
+               vin-supply = <&dc_12v>;
+       };
+
+       vdd_log: vdd-log {
+               compatible = "pwm-regulator";
+               pwms = <&pwm2 0 25000 1>;
+               regulator-name = "vdd_log";
+               regulator-always-on;
+               regulator-boot-on;
+               regulator-min-microvolt = <800000>;
+               regulator-max-microvolt = <1400000>;
+               vin-supply = <&vcc_sys>;
+       };
+};
+
+&cpu_l0 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l1 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l2 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_l3 {
+       cpu-supply = <&vdd_cpu_l>;
+};
+
+&cpu_b0 {
+       cpu-supply = <&vdd_cpu_b>;
+};
+
+&cpu_b1 {
+       cpu-supply = <&vdd_cpu_b>;
+};
+
+&emmc_phy {
+       status = "okay";
+};
+
+&gmac {
+       assigned-clocks = <&cru SCLK_RMII_SRC>;
+       assigned-clock-parents = <&clkin_gmac>;
+       clock_in_out = "input";
+       phy-supply = <&vcc3v3_s3>;
+       phy-mode = "rgmii";
+       pinctrl-names = "default";
+       pinctrl-0 = <&rgmii_pins>;
+       snps,reset-gpio = <&gpio3 RK_PB7 GPIO_ACTIVE_LOW>;
+       snps,reset-active-low;
+       snps,reset-delays-us = <0 10000 50000>;
+       tx_delay = <0x28>;
+       rx_delay = <0x11>;
+       status = "okay";
+};
+
+&gpu {
+       mali-supply = <&vdd_gpu>;
+       status = "okay";
+};
+
+&hdmi {
+       ddc-i2c-bus = <&i2c3>;
+       status = "okay";
+};
+
+&hdmi_sound {
+       status = "okay";
+};
+
+&i2c0 {
+       clock-frequency = <400000>;
+       i2c-scl-rising-time-ns = <168>;
+       i2c-scl-falling-time-ns = <4>;
+       status = "okay";
+
+       rk808: pmic@1b {
+               compatible = "rockchip,rk808";
+               reg = <0x1b>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <21 IRQ_TYPE_LEVEL_LOW>;
+               #clock-cells = <1>;
+               clock-output-names = "rtc_clko_soc", "rtc_clko_wifi";
+               pinctrl-names = "default";
+               pinctrl-0 = <&pmic_int_l>;
+               rockchip,system-power-controller;
+               wakeup-source;
+
+               vcc1-supply = <&vcc3v3_sys>;
+               vcc2-supply = <&vcc3v3_sys>;
+               vcc3-supply = <&vcc3v3_sys>;
+               vcc4-supply = <&vcc3v3_sys>;
+               vcc6-supply = <&vcc3v3_sys>;
+               vcc7-supply = <&vcc3v3_sys>;
+               vcc8-supply = <&vcc3v3_sys>;
+               vcc9-supply = <&vcc3v3_sys>;
+               vcc10-supply = <&vcc3v3_sys>;
+               vcc11-supply = <&vcc3v3_sys>;
+               vcc12-supply = <&vcc3v3_sys>;
+               vddio-supply = <&vcc_3v0>;
+
+               regulators {
+                       vdd_center: DCDC_REG1 {
+                               regulator-name = "vdd_center";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vdd_cpu_l: DCDC_REG2 {
+                               regulator-name = "vdd_cpu_l";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <700000>;
+                               regulator-max-microvolt = <1500000>;
+                               regulator-ramp-delay = <6001>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_ddr: DCDC_REG3 {
+                               regulator-name = "vcc_ddr";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                               };
+                       };
+
+                       vcc_1v8: DCDC_REG4 {
+                               regulator-name = "vcc_1v8";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3300000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc1v8_dvp: LDO_REG1 {
+                               regulator-name = "vcc1v8_dvp";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc3v0_tp: LDO_REG2 {
+                               regulator-name = "vcc3v0_tp";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc1v8_pmupll: LDO_REG3 {
+                               regulator-name = "vcc1v8_pmupll";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1800000>;
+                               };
+                       };
+
+                       vcc_sdio: LDO_REG4 {
+                               regulator-name = "vcc_sdio";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vcca3v0_codec: LDO_REG5 {
+                               regulator-name = "vcca3v0_codec";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_1v5: LDO_REG6 {
+                               regulator-name = "vcc_1v5";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <1500000>;
+                               };
+                       };
+
+                       vcca1v8_codec: LDO_REG7 {
+                               regulator-name = "vcca1v8_codec";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <800000>;
+                               regulator-max-microvolt = <2500000>;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc_3v0: LDO_REG8 {
+                               regulator-name = "vcc_3v0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-min-microvolt = <1800000>;
+                               regulator-max-microvolt = <3400000>;
+                               regulator-state-mem {
+                                       regulator-on-in-suspend;
+                                       regulator-suspend-microvolt = <3000000>;
+                               };
+                       };
+
+                       vcc3v3_s3: SWITCH_REG1 {
+                               regulator-name = "vcc3v3_s3";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+
+                       vcc3v3_s0: SWITCH_REG2 {
+                               regulator-name = "vcc3v3_s0";
+                               regulator-always-on;
+                               regulator-boot-on;
+                               regulator-state-mem {
+                                       regulator-off-in-suspend;
+                               };
+                       };
+               };
+       };
+
+       vdd_cpu_b: regulator@40 {
+               compatible = "silergy,syr827";
+               reg = <0x40>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_cpu_b";
+               regulator-min-microvolt = <712500>;
+               regulator-max-microvolt = <1500000>;
+               regulator-ramp-delay = <1000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc3v3_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+
+       vdd_gpu: regulator@41 {
+               compatible = "silergy,syr828";
+               reg = <0x41>;
+               fcs,suspend-voltage-selector = <1>;
+               regulator-name = "vdd_gpu";
+               regulator-min-microvolt = <712500>;
+               regulator-max-microvolt = <1500000>;
+               regulator-ramp-delay = <1000>;
+               regulator-always-on;
+               regulator-boot-on;
+               vin-supply = <&vcc3v3_sys>;
+
+               regulator-state-mem {
+                       regulator-off-in-suspend;
+               };
+       };
+};
+
+&i2c1 {
+       i2c-scl-rising-time-ns = <450>;
+       i2c-scl-falling-time-ns = <15>;
+       status = "okay";
+};
+
+&i2c3 {
+       i2c-scl-rising-time-ns = <450>;
+       i2c-scl-falling-time-ns = <15>;
+       status = "okay";
+};
+
+&i2c4 {
+       clock-frequency = <400000>;
+       i2c-scl-rising-time-ns = <450>;
+       i2c-scl-falling-time-ns = <15>;
+       status = "okay";
+
+       ak09911@c {
+               compatible = "asahi-kasei,ak09911";
+               reg = <0x0c>;
+               vdd-supply = <&vcc3v3_s3>;
+       };
+
+       mpu6500@68 {
+               compatible = "invensense,mpu6500";
+               reg = <0x68>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <RK_PC6 IRQ_TYPE_EDGE_RISING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gsensor_int_l>;
+               vddio-supply = <&vcc3v3_s3>;
+       };
+
+       lsm6ds3@6a {
+               compatible = "st,lsm6ds3";
+               reg = <0x6a>;
+               interrupt-parent = <&gpio1>;
+               interrupts = <RK_PD0 IRQ_TYPE_EDGE_RISING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&gyr_int_l>;
+               vdd-supply = <&vcc3v3_s3>;
+               vddio-supply = <&vcc3v3_s3>;
+       };
+
+       cm32181@10 {
+               compatible = "capella,cm32181";
+               reg = <0x10>;
+               interrupt-parent = <&gpio4>;
+               interrupts = <RK_PD0 IRQ_TYPE_EDGE_RISING>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&light_int_l>;
+               vdd-supply = <&vcc3v3_s3>;
+       };
+};
+
+&io_domains {
+       status = "okay";
+       bt656-supply = <&vcc_3v0>;
+       audio-supply = <&vcca1v8_codec>;
+       sdmmc-supply = <&vcc_sdio>;
+       gpio1830-supply = <&vcc_3v0>;
+};
+
+&pmu_io_domains {
+       status = "okay";
+       pmu1830-supply = <&vcc_3v0>;
+};
+
+&pinctrl {
+       buttons {
+               pwr_btn: pwr-btn {
+                       rockchip,pins = <0 RK_PA5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       pmic {
+               pmic_int_l: pmic-int-l {
+                       rockchip,pins =
+                               <1 RK_PC5 RK_FUNC_GPIO &pcfg_pull_up>;
+               };
+       };
+
+       sd {
+               sdmmc0_pwr_h: sdmmc0-pwr-h {
+                       rockchip,pins =
+                               <RK_GPIO0 RK_PA1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       usb2 {
+               vcc5v0_host_en: vcc5v0-host-en {
+                       rockchip,pins =
+                               <4 RK_PD1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               vcc5v0_typec0_en: vcc5v0-typec0-en {
+                       rockchip,pins =
+                               <1 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       sdio-pwrseq {
+               wifi_reg_on_h: wifi-reg-on-h {
+                       rockchip,pins = <0 RK_PB2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       wifi {
+               wifi_host_wake_l: wifi-host-wake-l {
+                       rockchip,pins = <0 RK_PA3 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       bluetooth {
+               bt_reg_on_h: bt-enable-h {
+                       rockchip,pins = <0 RK_PB1 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               bt_host_wake_l: bt-host-wake-l {
+                       rockchip,pins = <0 RK_PA4 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+
+               bt_wake_l: bt-wake-l {
+                       rockchip,pins = <2 RK_PD2 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       mpu6500 {
+               gsensor_int_l: gsensor-int-l {
+                       rockchip,pins = <1 RK_PC6 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       lsm6ds3 {
+               gyr_int_l: gyr-int-l {
+                       rockchip,pins = <1 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+
+       cm32181 {
+               light_int_l: light-int-l {
+                       rockchip,pins = <4 RK_PD0 RK_FUNC_GPIO &pcfg_pull_none>;
+               };
+       };
+};
+
+&pwm0 {
+       status = "okay";
+};
+
+&pwm2 {
+       status = "okay";
+};
+
+&saradc {
+       vref-supply = <&vcca1v8_s3>;
+       status = "okay";
+};
+
+&sdhci {
+       bus-width = <8>;
+       mmc-hs400-1_8v;
+       mmc-hs400-enhanced-strobe;
+       non-removable;
+       status = "okay";
+};
+
+&sdio0 {
+       bus-width = <4>;
+       cap-sd-highspeed;
+       cap-sdio-irq;
+       clock-frequency = <50000000>;
+       disable-wp;
+       keep-power-in-suspend;
+       max-frequency = <50000000>;
+       mmc-pwrseq = <&sdio_pwrseq>;
+       non-removable;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdio0_bus4 &sdio0_cmd &sdio0_clk>;
+       sd-uhs-sdr104;
+       status = "okay";
+
+       brcmf: wifi@1 {
+               compatible = "brcm,bcm4329-fmac";
+               interrupt-parent = <&gpio0>;
+               interrupts = <RK_PA3 GPIO_ACTIVE_HIGH>;
+               interrupt-names = "host-wake";
+               pinctrl-names = "default";
+               pinctrl-0 = <&wifi_host_wake_l>;
+       };
+};
+
+&sdmmc {
+       bus-width = <4>;
+       cap-mmc-highspeed;
+       cap-sd-highspeed;
+       cd-gpios = <&gpio0 RK_PA7 GPIO_ACTIVE_LOW>;
+       clock-frequency = <150000000>;
+       disable-wp;
+       max-frequency = <150000000>;
+       pinctrl-names = "default";
+       pinctrl-0 = <&sdmmc_clk &sdmmc_cmd &sdmmc_cd &sdmmc_bus4>;
+       vmmc-supply = <&vcc3v0_sd>;
+       vqmmc-supply = <&vcc_sdio>;
+       status = "okay";
+};
+
+&tcphy0 {
+       status = "okay";
+};
+
+&tcphy1 {
+       status = "okay";
+};
+
+&tsadc {
+       rockchip,hw-tshut-mode = <1>;
+       rockchip,hw-tshut-polarity = <1>;
+       status = "okay";
+};
+
+&u2phy0 {
+       status = "okay";
+
+       u2phy0_otg: otg-port {
+               phy-supply = <&vcc5v0_typec0>;
+               status = "okay";
+       };
+
+       u2phy0_host: host-port {
+               phy-supply = <&vcc5v0_host>;
+               status = "okay";
+       };
+};
+
+&u2phy1 {
+       status = "okay";
+
+       u2phy1_otg: otg-port {
+               status = "okay";
+       };
+
+       u2phy1_host: host-port {
+               phy-supply = <&vcc5v0_host>;
+               status = "okay";
+       };
+};
+
+&uart0 {
+       pinctrl-names = "default";
+       pinctrl-0 = <&uart0_xfer &uart0_cts &uart0_rts>;
+       status = "okay";
+
+       bluetooth {
+               compatible = "brcm,bcm43438-bt";
+               clocks = <&rk808 1>;
+               clock-names = "ext_clock";
+               device-wakeup-gpios = <&gpio2 RK_PD2 GPIO_ACTIVE_HIGH>;
+               host-wakeup-gpios = <&gpio0 RK_PA4 GPIO_ACTIVE_HIGH>;
+               shutdown-gpios = <&gpio0 RK_PB1 GPIO_ACTIVE_HIGH>;
+               pinctrl-names = "default";
+               pinctrl-0 = <&bt_host_wake_l &bt_wake_l &bt_reg_on_h>;
+       };
+};
+
+&uart2 {
+       status = "okay";
+};
+
+&usb_host0_ehci {
+       status = "okay";
+};
+
+&usb_host0_ohci {
+       status = "okay";
+};
+
+&usb_host1_ehci {
+       status = "okay";
+};
+
+&usb_host1_ohci {
+       status = "okay";
+};
+
+&usbdrd3_0 {
+       status = "okay";
+};
+
+&usbdrd_dwc3_0 {
+       status = "okay";
+       dr_mode = "otg";
+};
+
+&usbdrd3_1 {
+       status = "okay";
+};
+
+&usbdrd_dwc3_1 {
+       status = "okay";
+       dr_mode = "host";
+};
+
+&vopb {
+       status = "okay";
+};
+
+&vopb_mmu {
+       status = "okay";
+};
+
+&vopl {
+       status = "okay";
+};
+
+&vopl_mmu {
+       status = "okay";
+};
index aec13a28f1abc340ae9e035959fdc4fe99191e9b..319a610022c3d218cea885f43c6c227013ee9be1 100644 (file)
 };
 
 &sdmmc {
-       u-boot,dm-pre-reloc;
        clock-frequency = <150000000>;
        max-frequency = <40000000>;
        supports-sd;
diff --git a/arch/arm/dts/rk3399-u-boot.dtsi b/arch/arm/dts/rk3399-u-boot.dtsi
new file mode 100644 (file)
index 0000000..f533ed9
--- /dev/null
@@ -0,0 +1,8 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * Copyright (C) 2019 Jagan Teki <jagan@amarulasolutions.com>
+ */
+
+&sdmmc {
+       u-boot,dm-pre-reloc;
+};
index b620dd8dda560823c9a507d652c092844a9d2409..4be4083941d14e6879f002050f3a59ac7a2f5a37 100644 (file)
@@ -77,6 +77,7 @@
 };
 
 &uart0 {
+       clock-frequency = <100000000>;
        u-boot,dm-pre-reloc;
 };
 
index a6d66d102bae54deb984be4119dbc0150e93c533..db83d0e7d3ba27f156aafb33089c4cd0e6d416ce 100644 (file)
@@ -6,7 +6,7 @@
 #ifndef _ASM_ARCH_DDR_RK3188_H
 #define _ASM_ARCH_DDR_RK3188_H
 
-#include <asm/arch/ddr_rk3288.h>
+#include <asm/arch-rockchip/ddr_rk3288.h>
 
 /*
  * RK3188 Memory scheduler register map.
index cd94bdd1ba3a35ae267ec0b18dca097cf6a00a2e..62e8bed8f31e753c000afb90143b6d08c6e3c773 100644 (file)
@@ -10,8 +10,6 @@
 #define RK_SETBITS(set)                        RK_CLRSETBITS(0, set)
 #define RK_CLRBITS(clr)                        RK_CLRSETBITS(clr, 0)
 
-#define TIMER7_BASE            0xff810020
-
 #define rk_clrsetreg(addr, clr, set)   \
                                writel(((clr) | (set)) << 16 | (set), addr)
 #define rk_clrreg(addr, clr)           writel((clr) << 16, addr)
index 992a84152cfae333edd0606912e6e1533276714b..370031f2accbd6f6af538e0d8815306504fbae77 100644 (file)
@@ -1,6 +1,6 @@
 #if !defined(CONFIG_ARCH_UNIPHIER) && !defined(CONFIG_ARCH_STI) && \
        !defined(CONFIG_ARCH_K3) && !defined(CONFIG_ARCH_BCM6858) && \
-       !defined(CONFIG_ARCH_BCM63158)
+       !defined(CONFIG_ARCH_BCM63158) && !defined(CONFIG_ARCH_ROCKCHIP)
 #include <asm/arch/gpio.h>
 #endif
 #include <asm-generic/gpio.h>
index 2ca6e2494a7ad4dac2c2ae4ab4c8d573b6eb3f63..20f485142ef55c2d998eea59ec39fb836acef633 100644 (file)
  *   (1) defines '_start:' as appropriate
  *   (2) inserts the vector table using ARM_VECTORS as appropriate
  */
+#ifdef CONFIG_ARCH_ROCKCHIP
+#include <asm/arch-rockchip/boot0.h>
+#else
 #include <asm/arch/boot0.h>
-
+#endif
 #else
 
 /*
index df43b1d7e05dc2aff1e197f782a865f757bd2600..6887fe05dd8625ba84dade5116591649cbb9d1f4 100644 (file)
@@ -12,7 +12,6 @@ obj-$(CONFIG_SOC_DM365)       += dm365.o
 obj-$(CONFIG_SOC_DM644X)       += dm644x.o
 obj-$(CONFIG_SOC_DM646X)       += dm646x.o
 obj-$(CONFIG_SOC_DA850)        += da850_pinmux.o
-obj-$(CONFIG_DRIVER_TI_EMAC)   += lxt972.o dp83848.o et1011c.o ksz8873.o
 
 ifdef CONFIG_SPL_BUILD
 obj-$(CONFIG_SPL_FRAMEWORK)    += spl.o
index aca2f2961d303627b7dea338692740edf249cff3..f97ad3fc740142807ea56a56a5a132deeabcbbb1 100644 (file)
@@ -27,25 +27,6 @@ DECLARE_GLOBAL_DATA_PTR;
 #define PLLC_PLLDIV8   0x170
 #define PLLC_PLLDIV9   0x174
 
-/* SOC-specific pll info */
-#ifdef CONFIG_SOC_DM355
-#define ARM_PLLDIV     PLLC_PLLDIV1
-#define DDR_PLLDIV     PLLC_PLLDIV1
-#endif
-
-#ifdef CONFIG_SOC_DM644X
-#define ARM_PLLDIV     PLLC_PLLDIV2
-#define DSP_PLLDIV     PLLC_PLLDIV1
-#define DDR_PLLDIV     PLLC_PLLDIV2
-#endif
-
-#ifdef CONFIG_SOC_DM646X
-#define DSP_PLLDIV     PLLC_PLLDIV1
-#define ARM_PLLDIV     PLLC_PLLDIV2
-#define DDR_PLLDIV     PLLC_PLLDIV1
-#endif
-
-#ifdef CONFIG_SOC_DA8XX
 unsigned int sysdiv[9] = {
        PLLC_PLLDIV1, PLLC_PLLDIV2, PLLC_PLLDIV3, PLLC_PLLDIV4, PLLC_PLLDIV5,
        PLLC_PLLDIV6, PLLC_PLLDIV7, PLLC_PLLDIV8, PLLC_PLLDIV9
@@ -110,103 +91,6 @@ int set_cpu_clk_info(void)
        return 0;
 }
 
-#else /* CONFIG_SOC_DA8XX */
-
-static unsigned pll_div(volatile void *pllbase, unsigned offset)
-{
-       u32     div;
-
-       div = REG(pllbase + offset);
-       return (div & BIT(15)) ? (1 + (div & 0x1f)) : 1;
-}
-
-static inline unsigned pll_prediv(volatile void *pllbase)
-{
-#ifdef CONFIG_SOC_DM355
-       /* this register read seems to fail on pll0 */
-       if (pllbase == (volatile void *)DAVINCI_PLL_CNTRL0_BASE)
-               return 8;
-       else
-               return pll_div(pllbase, PLLC_PREDIV);
-#elif defined(CONFIG_SOC_DM365)
-       return pll_div(pllbase, PLLC_PREDIV);
-#endif
-       return 1;
-}
-
-static inline unsigned pll_postdiv(volatile void *pllbase)
-{
-#if defined(CONFIG_SOC_DM355) || defined(CONFIG_SOC_DM365)
-       return pll_div(pllbase, PLLC_POSTDIV);
-#elif defined(CONFIG_SOC_DM6446)
-       if (pllbase == (volatile void *)DAVINCI_PLL_CNTRL0_BASE)
-               return pll_div(pllbase, PLLC_POSTDIV);
-#endif
-       return 1;
-}
-
-static unsigned pll_sysclk_mhz(unsigned pll_addr, unsigned div)
-{
-       volatile void   *pllbase = (volatile void *) pll_addr;
-#ifdef CONFIG_SOC_DM646X
-       unsigned        base = CONFIG_REFCLK_FREQ / 1000;
-#else
-       unsigned        base = CONFIG_SYS_HZ_CLOCK / 1000;
-#endif
-
-       /* the PLL might be bypassed */
-       if (readl(pllbase + PLLC_PLLCTL) & BIT(0)) {
-               base /= pll_prediv(pllbase);
-#if defined(CONFIG_SOC_DM365)
-               base *=  2 * (readl(pllbase + PLLC_PLLM) & 0x0ff);
-#else
-               base *= 1 + (REG(pllbase + PLLC_PLLM) & 0x0ff);
-#endif
-               base /= pll_postdiv(pllbase);
-       }
-       return DIV_ROUND_UP(base, 1000 * pll_div(pllbase, div));
-}
-
-#ifdef DAVINCI_DM6467EVM
-unsigned int davinci_arm_clk_get()
-{
-       return pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, ARM_PLLDIV) * 1000000;
-}
-#endif
-
-#if defined(CONFIG_SOC_DM365)
-unsigned int davinci_clk_get(unsigned int div)
-{
-       return pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, div) * 1000000;
-}
-#endif
-
-int set_cpu_clk_info(void)
-{
-       unsigned int pllbase = DAVINCI_PLL_CNTRL0_BASE;
-#if defined(CONFIG_SOC_DM365)
-       pllbase = DAVINCI_PLL_CNTRL1_BASE;
-#endif
-       gd->bd->bi_arm_freq = pll_sysclk_mhz(pllbase, ARM_PLLDIV);
-
-#ifdef DSP_PLLDIV
-       gd->bd->bi_dsp_freq =
-               pll_sysclk_mhz(DAVINCI_PLL_CNTRL0_BASE, DSP_PLLDIV);
-#else
-       gd->bd->bi_dsp_freq = 0;
-#endif
-
-       pllbase = DAVINCI_PLL_CNTRL1_BASE;
-#if defined(CONFIG_SOC_DM365)
-       pllbase = DAVINCI_PLL_CNTRL0_BASE;
-#endif
-       gd->bd->bi_ddr_freq = pll_sysclk_mhz(pllbase, DDR_PLLDIV) / 2;
-
-       return 0;
-}
-
-#endif /* !CONFIG_SOC_DA8XX */
-
 /*
  * Initializes on-chip ethernet controllers.
  * to override, implement board_eth_init()
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c
deleted file mode 100644 (file)
index bc158d9..0000000
+++ /dev/null
@@ -1,29 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * SoC-specific code for tms320dm355 and similar chips
- *
- * Copyright (C) 2009 David Brownell
- */
-
-#include <common.h>
-#include <asm/arch/hardware.h>
-
-
-void davinci_enable_uart0(void)
-{
-       lpsc_on(DAVINCI_LPSC_UART0);
-
-       /* Bringup UART0 out of reset */
-       REG(UART0_PWREMU_MGMT) = 0x00006001;
-}
-
-
-#ifdef CONFIG_SYS_I2C_DAVINCI
-void davinci_enable_i2c(void)
-{
-       lpsc_on(DAVINCI_LPSC_I2C);
-
-       /* Enable I2C pin Mux */
-       REG(PINMUX3) |= (1 << 20) | (1 << 19);
-}
-#endif
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c
deleted file mode 100644 (file)
index 486b900..0000000
+++ /dev/null
@@ -1,19 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * SoC-specific code for tms320dm365 and similar chips
- */
-
-#include <common.h>
-#include <asm/arch/hardware.h>
-
-void davinci_enable_uart0(void)
-{
-       lpsc_on(DAVINCI_LPSC_UART0);
-}
-
-#ifdef CONFIG_SYS_I2C_DAVINCI
-void davinci_enable_i2c(void)
-{
-       lpsc_on(DAVINCI_LPSC_I2C);
-}
-#endif
diff --git a/arch/arm/mach-davinci/dm365_lowlevel.c b/arch/arm/mach-davinci/dm365_lowlevel.c
deleted file mode 100644 (file)
index ad83917..0000000
+++ /dev/null
@@ -1,459 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * SoC-specific lowlevel code for tms320dm365 and similar chips
- * Actually used for booting from NAND with nand_spl.
- *
- * Copyright (C) 2011
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- */
-#include <common.h>
-#include <nand.h>
-#include <ns16550.h>
-#include <post.h>
-#include <asm/ti-common/davinci_nand.h>
-#include <asm/arch/dm365_lowlevel.h>
-#include <asm/arch/hardware.h>
-
-void dm365_waitloop(unsigned long loopcnt)
-{
-       unsigned long   i;
-
-       for (i = 0; i < loopcnt; i++)
-               asm("   NOP");
-}
-
-int dm365_pll1_init(unsigned long pllmult, unsigned long prediv)
-{
-       unsigned int clksrc = 0x0;
-
-       /* Power up the PLL */
-       clrbits_le32(&dv_pll0_regs->pllctl, PLLCTL_PLLPWRDN);
-
-       clrbits_le32(&dv_pll0_regs->pllctl, PLLCTL_RES_9);
-       setbits_le32(&dv_pll0_regs->pllctl,
-               clksrc << PLLCTL_CLOCK_MODE_SHIFT);
-
-       /*
-        * Set PLLENSRC '0', PLL Enable(PLLEN) selection is controlled
-        * through MMR
-        */
-       clrbits_le32(&dv_pll0_regs->pllctl, PLLCTL_PLLENSRC);
-
-       /* Set PLLEN=0 => PLL BYPASS MODE */
-       clrbits_le32(&dv_pll0_regs->pllctl, PLLCTL_PLLEN);
-
-       dm365_waitloop(150);
-
-        /* PLLRST=1(reset assert) */
-       setbits_le32(&dv_pll0_regs->pllctl, PLLCTL_PLLRST);
-
-       dm365_waitloop(300);
-
-       /*Bring PLL out of Reset*/
-       clrbits_le32(&dv_pll0_regs->pllctl, PLLCTL_PLLRST);
-
-       /* Program the Multiper and Pre-Divider for PLL1 */
-       writel(pllmult, &dv_pll0_regs->pllm);
-       writel(prediv, &dv_pll0_regs->prediv);
-
-       /* Assert TENABLE = 1, TENABLEDIV = 1, TINITZ = 1 */
-       writel(PLLSECCTL_STOPMODE | PLLSECCTL_TENABLEDIV | PLLSECCTL_TENABLE |
-               PLLSECCTL_TINITZ, &dv_pll0_regs->secctl);
-       /* Assert TENABLE = 1, TENABLEDIV = 1, TINITZ = 0 */
-       writel(PLLSECCTL_STOPMODE | PLLSECCTL_TENABLEDIV | PLLSECCTL_TENABLE,
-               &dv_pll0_regs->secctl);
-       /* Assert TENABLE = 0, TENABLEDIV = 0, TINITZ = 0 */
-       writel(PLLSECCTL_STOPMODE, &dv_pll0_regs->secctl);
-       /* Assert TENABLE = 0, TENABLEDIV = 0, TINITZ = 1 */
-       writel(PLLSECCTL_STOPMODE | PLLSECCTL_TINITZ, &dv_pll0_regs->secctl);
-
-       /* Program the PostDiv for PLL1 */
-       writel(PLL_POSTDEN, &dv_pll0_regs->postdiv);
-
-       /* Post divider setting for PLL1 */
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV1, &dv_pll0_regs->plldiv1);
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV2, &dv_pll0_regs->plldiv2);
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV3, &dv_pll0_regs->plldiv3);
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV4, &dv_pll0_regs->plldiv4);
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV5, &dv_pll0_regs->plldiv5);
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV6, &dv_pll0_regs->plldiv6);
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV7, &dv_pll0_regs->plldiv7);
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV8, &dv_pll0_regs->plldiv8);
-       writel(CONFIG_SYS_DM36x_PLL1_PLLDIV9, &dv_pll0_regs->plldiv9);
-
-       dm365_waitloop(300);
-
-       /* Set the GOSET bit */
-       writel(PLLCMD_GOSET, &dv_pll0_regs->pllcmd); /* Go */
-
-       dm365_waitloop(300);
-
-       /* Wait for PLL to LOCK */
-       while (!((readl(&dv_sys_module_regs->pll0_config) & PLL0_LOCK)
-               == PLL0_LOCK))
-               ;
-
-       /* Enable the PLL Bit of PLLCTL*/
-       setbits_le32(&dv_pll0_regs->pllctl, PLLCTL_PLLEN);
-
-       return 0;
-}
-
-int dm365_pll2_init(unsigned long pllm, unsigned long prediv)
-{
-       unsigned int clksrc = 0x0;
-
-       /* Power up the PLL*/
-       clrbits_le32(&dv_pll1_regs->pllctl, PLLCTL_PLLPWRDN);
-
-       /*
-        * Select the Clock Mode as Onchip Oscilator or External Clock on
-        * MXI pin
-        * VDB has input on MXI pin
-        */
-       clrbits_le32(&dv_pll1_regs->pllctl, PLLCTL_RES_9);
-       setbits_le32(&dv_pll1_regs->pllctl,
-               clksrc << PLLCTL_CLOCK_MODE_SHIFT);
-
-       /*
-        * Set PLLENSRC '0', PLL Enable(PLLEN) selection is controlled
-        * through MMR
-        */
-       clrbits_le32(&dv_pll1_regs->pllctl, PLLCTL_PLLENSRC);
-
-       /* Set PLLEN=0 => PLL BYPASS MODE */
-       clrbits_le32(&dv_pll1_regs->pllctl, PLLCTL_PLLEN);
-
-       dm365_waitloop(50);
-
-        /* PLLRST=1(reset assert) */
-       setbits_le32(&dv_pll1_regs->pllctl, PLLCTL_PLLRST);
-
-       dm365_waitloop(300);
-
-       /* Bring PLL out of Reset */
-       clrbits_le32(&dv_pll1_regs->pllctl, PLLCTL_PLLRST);
-
-       /* Program the Multiper and Pre-Divider for PLL2 */
-       writel(pllm, &dv_pll1_regs->pllm);
-       writel(prediv, &dv_pll1_regs->prediv);
-
-       writel(PLL_POSTDEN, &dv_pll1_regs->postdiv);
-
-       /* Assert TENABLE = 1, TENABLEDIV = 1, TINITZ = 1 */
-       writel(PLLSECCTL_STOPMODE | PLLSECCTL_TENABLEDIV | PLLSECCTL_TENABLE |
-               PLLSECCTL_TINITZ, &dv_pll1_regs->secctl);
-       /* Assert TENABLE = 1, TENABLEDIV = 1, TINITZ = 0 */
-       writel(PLLSECCTL_STOPMODE | PLLSECCTL_TENABLEDIV | PLLSECCTL_TENABLE,
-               &dv_pll1_regs->secctl);
-       /* Assert TENABLE = 0, TENABLEDIV = 0, TINITZ = 0 */
-       writel(PLLSECCTL_STOPMODE, &dv_pll1_regs->secctl);
-       /* Assert TENABLE = 0, TENABLEDIV = 0, TINITZ = 1 */
-       writel(PLLSECCTL_STOPMODE | PLLSECCTL_TINITZ, &dv_pll1_regs->secctl);
-
-       /* Post divider setting for PLL2 */
-       writel(CONFIG_SYS_DM36x_PLL2_PLLDIV1, &dv_pll1_regs->plldiv1);
-       writel(CONFIG_SYS_DM36x_PLL2_PLLDIV2, &dv_pll1_regs->plldiv2);
-       writel(CONFIG_SYS_DM36x_PLL2_PLLDIV3, &dv_pll1_regs->plldiv3);
-       writel(CONFIG_SYS_DM36x_PLL2_PLLDIV4, &dv_pll1_regs->plldiv4);
-       writel(CONFIG_SYS_DM36x_PLL2_PLLDIV5, &dv_pll1_regs->plldiv5);
-
-       /* GoCmd for PostDivider to take effect */
-       writel(PLLCMD_GOSET, &dv_pll1_regs->pllcmd);
-
-       dm365_waitloop(150);
-
-       /* Wait for PLL to LOCK */
-       while (!((readl(&dv_sys_module_regs->pll1_config) & PLL1_LOCK)
-               == PLL1_LOCK))
-               ;
-
-       dm365_waitloop(4100);
-
-       /* Enable the PLL2 */
-       setbits_le32(&dv_pll1_regs->pllctl, PLLCTL_PLLEN);
-
-       /* do this after PLL's have been set up */
-       writel(CONFIG_SYS_DM36x_PERI_CLK_CTRL,
-               &dv_sys_module_regs->peri_clkctl);
-
-       return 0;
-}
-
-int dm365_ddr_setup(void)
-{
-       lpsc_on(DAVINCI_LPSC_DDR_EMIF);
-       clrbits_le32(&dv_sys_module_regs->vtpiocr,
-               VPTIO_IOPWRDN | VPTIO_CLRZ | VPTIO_LOCK | VPTIO_PWRDN);
-
-       /* Set bit CLRZ (bit 13) */
-       setbits_le32(&dv_sys_module_regs->vtpiocr, VPTIO_CLRZ);
-
-       /* Check VTP READY Status */
-       while (!(readl(&dv_sys_module_regs->vtpiocr) & VPTIO_RDY))
-               ;
-
-       /* Set bit VTP_IOPWRDWN bit 14 for DDR input buffers) */
-       setbits_le32(&dv_sys_module_regs->vtpiocr, VPTIO_IOPWRDN);
-
-       /* Set bit LOCK(bit7) */
-       setbits_le32(&dv_sys_module_regs->vtpiocr, VPTIO_LOCK);
-
-       /*
-        * Powerdown VTP as it is locked (bit 6)
-        * Set bit VTP_IOPWRDWN bit 14 for DDR input buffers)
-        */
-       setbits_le32(&dv_sys_module_regs->vtpiocr,
-               VPTIO_IOPWRDN | VPTIO_PWRDN);
-
-       /* Wait for calibration to complete */
-       dm365_waitloop(150);
-
-       /* Set the DDR2 to synreset, then enable it again */
-       lpsc_syncreset(DAVINCI_LPSC_DDR_EMIF);
-       lpsc_on(DAVINCI_LPSC_DDR_EMIF);
-
-       writel(CONFIG_SYS_DM36x_DDR2_DDRPHYCR, &dv_ddr2_regs_ctrl->ddrphycr);
-
-       /* Program SDRAM Bank Config Register */
-       writel((CONFIG_SYS_DM36x_DDR2_SDBCR | DV_DDR_BOOTUNLOCK),
-               &dv_ddr2_regs_ctrl->sdbcr);
-       writel((CONFIG_SYS_DM36x_DDR2_SDBCR | DV_DDR_TIMUNLOCK),
-               &dv_ddr2_regs_ctrl->sdbcr);
-
-       /* Program SDRAM Timing Control Register1 */
-       writel(CONFIG_SYS_DM36x_DDR2_SDTIMR, &dv_ddr2_regs_ctrl->sdtimr);
-       /* Program SDRAM Timing Control Register2 */
-       writel(CONFIG_SYS_DM36x_DDR2_SDTIMR2, &dv_ddr2_regs_ctrl->sdtimr2);
-
-       writel(CONFIG_SYS_DM36x_DDR2_PBBPR, &dv_ddr2_regs_ctrl->pbbpr);
-
-       writel(CONFIG_SYS_DM36x_DDR2_SDBCR, &dv_ddr2_regs_ctrl->sdbcr);
-
-       /* Program SDRAM Refresh Control Register */
-       writel(CONFIG_SYS_DM36x_DDR2_SDRCR, &dv_ddr2_regs_ctrl->sdrcr);
-
-       lpsc_syncreset(DAVINCI_LPSC_DDR_EMIF);
-       lpsc_on(DAVINCI_LPSC_DDR_EMIF);
-
-       return 0;
-}
-
-static void dm365_vpss_sync_reset(void)
-{
-       unsigned int PdNum = 0;
-
-       /* VPSS_CLKMD 1:1 */
-       setbits_le32(&dv_sys_module_regs->vpss_clkctl,
-               VPSS_CLK_CTL_VPSS_CLKMD);
-
-       /* LPSC SyncReset DDR Clock Enable */
-       writel(((readl(&dv_psc_regs->mdctl[DAVINCI_LPSC_VPSSMASTER]) &
-               ~PSC_MD_STATE_MSK) | PSC_SYNCRESET),
-               &dv_psc_regs->mdctl[DAVINCI_LPSC_VPSSMASTER]);
-
-       writel((1 << PdNum), &dv_psc_regs->ptcmd);
-
-       while (!(((readl(&dv_psc_regs->ptstat) >> PdNum) & PSC_GOSTAT) == 0))
-               ;
-       while (!((readl(&dv_psc_regs->mdstat[DAVINCI_LPSC_VPSSMASTER]) &
-               PSC_MD_STATE_MSK) == PSC_SYNCRESET))
-               ;
-}
-
-static void dm365_por_reset(void)
-{
-       struct davinci_timer *wdog =
-               (struct davinci_timer *)DAVINCI_WDOG_BASE;
-
-       if (readl(&dv_pll0_regs->rstype) &
-               (PLL_RSTYPE_POR | PLL_RSTYPE_XWRST)) {
-               dm365_vpss_sync_reset();
-
-               writel(DV_TMPBUF_VAL, TMPBUF);
-               setbits_le32(TMPSTATUS, FLAG_PORRST);
-               writel(DV_WDT_ENABLE_SYS_RESET, &wdog->na1);
-               writel(DV_WDT_TRIGGER_SYS_RESET, &wdog->na2);
-
-               while (1);
-       }
-}
-
-static void dm365_wdt_reset(void)
-{
-       struct davinci_timer *wdog =
-               (struct davinci_timer *)DAVINCI_WDOG_BASE;
-
-       if (readl(TMPBUF) != DV_TMPBUF_VAL) {
-               writel(DV_TMPBUF_VAL, TMPBUF);
-               setbits_le32(TMPSTATUS, FLAG_PORRST);
-               setbits_le32(TMPSTATUS, FLAG_FLGOFF);
-
-               dm365_waitloop(100);
-
-               dm365_vpss_sync_reset();
-
-               writel(DV_WDT_ENABLE_SYS_RESET, &wdog->na1);
-               writel(DV_WDT_TRIGGER_SYS_RESET, &wdog->na2);
-
-               while (1);
-       }
-}
-
-static void dm365_wdt_flag_on(void)
-{
-       /* VPSS_CLKMD 1:2 */
-       clrbits_le32(&dv_sys_module_regs->vpss_clkctl,
-               VPSS_CLK_CTL_VPSS_CLKMD);
-       writel(0, TMPBUF);
-       setbits_le32(TMPSTATUS, FLAG_FLGON);
-}
-
-void dm365_psc_init(void)
-{
-       unsigned char i = 0;
-       unsigned char lpsc_start;
-       unsigned char lpsc_end, lpscgroup, lpscmin, lpscmax;
-       unsigned int  PdNum = 0;
-
-       lpscmin = 0;
-       lpscmax = 2;
-
-       for (lpscgroup = lpscmin; lpscgroup <= lpscmax; lpscgroup++) {
-               if (lpscgroup == 0) {
-                       /* Enabling LPSC 3 to 28 SCR first */
-                       lpsc_start = DAVINCI_LPSC_VPSSMSTR;
-                       lpsc_end   = DAVINCI_LPSC_TIMER1;
-               } else if (lpscgroup == 1) { /* Skip locked LPSCs [29-37] */
-                       lpsc_start = DAVINCI_LPSC_CFG5;
-                       lpsc_end   = DAVINCI_LPSC_VPSSMASTER;
-               } else {
-                       lpsc_start = DAVINCI_LPSC_MJCP;
-                       lpsc_end   = DAVINCI_LPSC_HDVICP;
-               }
-
-               /* NEXT=0x3, Enable LPSC's */
-               for (i = lpsc_start; i <= lpsc_end; i++)
-                       setbits_le32(&dv_psc_regs->mdctl[i], PSC_ENABLE);
-
-               /*
-                * Program goctl to start transition sequence for LPSCs
-                * CSL_PSC_0_REGS->PTCMD = (1<<PdNum); Kick off Power
-                * Domain 0 Modules
-                */
-               writel((1 << PdNum), &dv_psc_regs->ptcmd);
-
-               /*
-                * Wait for GOSTAT = NO TRANSITION from PSC for Powerdomain 0
-                */
-               while (!(((readl(&dv_psc_regs->ptstat) >> PdNum) & PSC_GOSTAT)
-                       == 0))
-                       ;
-
-               /* Wait for MODSTAT = ENABLE from LPSC's */
-               for (i = lpsc_start; i <= lpsc_end; i++)
-                       while (!((readl(&dv_psc_regs->mdstat[i]) &
-                               PSC_MD_STATE_MSK) == PSC_ENABLE))
-                               ;
-       }
-}
-
-static void dm365_emif_init(void)
-{
-       writel(CONFIG_SYS_DM36x_AWCCR, &davinci_emif_regs->awccr);
-       writel(CONFIG_SYS_DM36x_AB1CR, &davinci_emif_regs->ab1cr);
-
-       setbits_le32(&davinci_emif_regs->nandfcr, DAVINCI_NANDFCR_CS2NAND);
-
-       writel(CONFIG_SYS_DM36x_AB2CR, &davinci_emif_regs->ab2cr);
-
-       return;
-}
-
-void dm365_pinmux_ctl(unsigned long offset, unsigned long mask,
-       unsigned long value)
-{
-       clrbits_le32(&dv_sys_module_regs->pinmux[offset], mask);
-       setbits_le32(&dv_sys_module_regs->pinmux[offset], (mask & value));
-}
-
-__attribute__((weak))
-void board_gpio_init(void)
-{
-       return;
-}
-
-#if defined(CONFIG_POST)
-int post_log(char *format, ...)
-{
-       return 0;
-}
-#endif
-
-void dm36x_lowlevel_init(ulong bootflag)
-{
-       struct davinci_uart_ctrl_regs *davinci_uart_ctrl_regs =
-               (struct davinci_uart_ctrl_regs *)(CONFIG_SYS_NS16550_COM1 +
-               DAVINCI_UART_CTRL_BASE);
-
-       /* Mask all interrupts */
-       writel(DV_AINTC_INTCTL_IDMODE, &dv_aintc_regs->intctl);
-       writel(0x0, &dv_aintc_regs->eabase);
-       writel(0x0, &dv_aintc_regs->eint0);
-       writel(0x0, &dv_aintc_regs->eint1);
-
-       /* Clear all interrupts */
-       writel(0xffffffff, &dv_aintc_regs->fiq0);
-       writel(0xffffffff, &dv_aintc_regs->fiq1);
-       writel(0xffffffff, &dv_aintc_regs->irq0);
-       writel(0xffffffff, &dv_aintc_regs->irq1);
-
-       dm365_por_reset();
-       dm365_wdt_reset();
-
-       /* System PSC setup - enable all */
-       dm365_psc_init();
-
-       /* Setup Pinmux */
-       dm365_pinmux_ctl(0, 0xFFFFFFFF, CONFIG_SYS_DM36x_PINMUX0);
-       dm365_pinmux_ctl(1, 0xFFFFFFFF, CONFIG_SYS_DM36x_PINMUX1);
-       dm365_pinmux_ctl(2, 0xFFFFFFFF, CONFIG_SYS_DM36x_PINMUX2);
-       dm365_pinmux_ctl(3, 0xFFFFFFFF, CONFIG_SYS_DM36x_PINMUX3);
-       dm365_pinmux_ctl(4, 0xFFFFFFFF, CONFIG_SYS_DM36x_PINMUX4);
-
-       /* PLL setup */
-       dm365_pll1_init(CONFIG_SYS_DM36x_PLL1_PLLM,
-               CONFIG_SYS_DM36x_PLL1_PREDIV);
-       dm365_pll2_init(CONFIG_SYS_DM36x_PLL2_PLLM,
-               CONFIG_SYS_DM36x_PLL2_PREDIV);
-
-       /* GPIO setup */
-       board_gpio_init();
-
-       NS16550_init((NS16550_t)(CONFIG_SYS_NS16550_COM1),
-                       CONFIG_SYS_NS16550_CLK / 16 / CONFIG_BAUDRATE);
-
-       /*
-        * Fix Power and Emulation Management Register
-        * see sprufh2.pdf page 38 Table 22
-        */
-       writel((DAVINCI_UART_PWREMU_MGMT_FREE | DAVINCI_UART_PWREMU_MGMT_URRST |
-               DAVINCI_UART_PWREMU_MGMT_UTRST),
-              &davinci_uart_ctrl_regs->pwremu_mgmt);
-
-       puts("ddr init\n");
-       dm365_ddr_setup();
-
-       puts("emif init\n");
-       dm365_emif_init();
-
-       dm365_wdt_flag_on();
-
-#if defined(CONFIG_POST)
-       /*
-        * Do memory tests, calls arch_memory_failure_handle()
-        * if error detected.
-        */
-       memory_post_test(0);
-#endif
-}
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c
deleted file mode 100644 (file)
index 2be6a23..0000000
+++ /dev/null
@@ -1,80 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * SoC-specific code for tms320dm644x chips
- *
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- * Copyright (C) 2008 Lyrtech <www.lyrtech.com>
- * Copyright (C) 2004 Texas Instruments.
- */
-
-#include <common.h>
-#include <asm/arch/hardware.h>
-
-
-#define PINMUX0_EMACEN (1 << 31)
-#define PINMUX0_AECS5  (1 << 11)
-#define PINMUX0_AECS4  (1 << 10)
-
-#define PINMUX1_I2C    (1 <<  7)
-#define PINMUX1_UART1  (1 <<  1)
-#define PINMUX1_UART0  (1 <<  0)
-
-
-void davinci_enable_uart0(void)
-{
-       lpsc_on(DAVINCI_LPSC_UART0);
-
-       /* Bringup UART0 out of reset */
-       REG(UART0_PWREMU_MGMT) = 0x00006001;
-
-       /* Enable UART0 MUX lines */
-       REG(PINMUX1) |= PINMUX1_UART0;
-}
-
-#ifdef CONFIG_DRIVER_TI_EMAC
-void davinci_enable_emac(void)
-{
-       lpsc_on(DAVINCI_LPSC_EMAC);
-       lpsc_on(DAVINCI_LPSC_EMAC_WRAPPER);
-       lpsc_on(DAVINCI_LPSC_MDIO);
-
-       /* Enable GIO3.3V cells used for EMAC */
-       REG(VDD3P3V_PWDN) = 0;
-
-       /* Enable EMAC. */
-       REG(PINMUX0) |= PINMUX0_EMACEN;
-}
-#endif
-
-#ifdef CONFIG_SYS_I2C_DAVINCI
-void davinci_enable_i2c(void)
-{
-       lpsc_on(DAVINCI_LPSC_I2C);
-
-       /* Enable I2C pin Mux */
-       REG(PINMUX1) |= PINMUX1_I2C;
-}
-#endif
-
-void davinci_errata_workarounds(void)
-{
-       /*
-        * Workaround for TMS320DM6446 errata 1.3.22:
-        *   PSC: PTSTAT Register Does Not Clear After Warm/Maximum Reset
-        *   Revision(s) Affected: 1.3 and earlier
-        */
-       REG(PSC_SILVER_BULLET) = 0;
-
-       /*
-        * Set the PR_OLD_COUNT bits in the Bus Burst Priority Register (PBBPR)
-        * as suggested in TMS320DM6446 errata 2.1.2:
-        *
-        * On DM6446 Silicon Revision 2.1 and earlier, under certain conditions
-        * low priority modules can occupy the bus and prevent high priority
-        * modules like the VPSS from getting the required DDR2 throughput.
-        * A hex value of 0x20 should provide a good ARM (cache enabled)
-        * performance and still allow good utilization by the VPSS or other
-        * modules.
-        */
-       REG(VBPR) = 0x20;
-}
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c
deleted file mode 100644 (file)
index 199c403..0000000
+++ /dev/null
@@ -1,25 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * SoC-specific code for TMS320DM646x chips
- */
-
-#include <asm/arch/hardware.h>
-
-void davinci_enable_uart0(void)
-{
-       lpsc_on(DAVINCI_DM646X_LPSC_UART0);
-}
-
-#ifdef CONFIG_DRIVER_TI_EMAC
-void davinci_enable_emac(void)
-{
-       lpsc_on(DAVINCI_DM646X_LPSC_EMAC);
-}
-#endif
-
-#ifdef CONFIG_SYS_I2C_DAVINCI
-void davinci_enable_i2c(void)
-{
-       lpsc_on(DAVINCI_DM646X_LPSC_I2C);
-}
-#endif
diff --git a/arch/arm/mach-davinci/dp83848.c b/arch/arm/mach-davinci/dp83848.c
deleted file mode 100644 (file)
index 7115d7b..0000000
+++ /dev/null
@@ -1,127 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * National Semiconductor DP83848 PHY Driver for TI DaVinci
- * (TMS320DM644x) based boards.
- *
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * --------------------------------------------------------
- */
-
-#include <common.h>
-#include <net.h>
-#include <dp83848.h>
-#include <asm/arch/emac_defs.h>
-#include "../../../drivers/net/ti/davinci_emac.h"
-
-#ifdef CONFIG_DRIVER_TI_EMAC
-
-#ifdef CONFIG_CMD_NET
-
-int dp83848_is_phy_connected(int phy_addr)
-{
-       u_int16_t       id1, id2;
-
-       if (!davinci_eth_phy_read(phy_addr, DP83848_PHYID1_REG, &id1))
-               return(0);
-       if (!davinci_eth_phy_read(phy_addr, DP83848_PHYID2_REG, &id2))
-               return(0);
-
-       if ((id1 == DP83848_PHYID1_OUI) && (id2 == DP83848_PHYID2_OUI))
-               return(1);
-
-       return(0);
-}
-
-int dp83848_get_link_speed(int phy_addr)
-{
-       u_int16_t               tmp;
-       volatile emac_regs*     emac = (emac_regs *)EMAC_BASE_ADDR;
-
-       if (!davinci_eth_phy_read(phy_addr, DP83848_STAT_REG, &tmp))
-               return(0);
-
-       if (!(tmp & DP83848_LINK_STATUS))       /* link up? */
-               return(0);
-
-       if (!davinci_eth_phy_read(phy_addr, DP83848_PHY_STAT_REG, &tmp))
-               return(0);
-
-       /* Speed doesn't matter, there is no setting for it in EMAC... */
-       if (tmp & DP83848_DUPLEX) {
-               /* set DM644x EMAC for Full Duplex  */
-               emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE |
-                       EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
-       } else {
-               /*set DM644x EMAC for Half Duplex  */
-               emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE;
-       }
-
-       return(1);
-}
-
-
-int dp83848_init_phy(int phy_addr)
-{
-       int     ret = 1;
-
-       if (!dp83848_get_link_speed(phy_addr)) {
-               /* Try another time */
-               udelay(100000);
-               ret = dp83848_get_link_speed(phy_addr);
-       }
-
-       /* Disable PHY Interrupts */
-       davinci_eth_phy_write(phy_addr, DP83848_PHY_INTR_CTRL_REG, 0);
-
-       return(ret);
-}
-
-
-int dp83848_auto_negotiate(int phy_addr)
-{
-       u_int16_t       tmp;
-
-
-       if (!davinci_eth_phy_read(phy_addr, DP83848_CTL_REG, &tmp))
-               return(0);
-
-       /* Restart Auto_negotiation  */
-       tmp &= ~DP83848_AUTONEG;        /* remove autonegotiation enable */
-       tmp |= DP83848_ISOLATE;         /* Electrically isolate PHY */
-       davinci_eth_phy_write(phy_addr, DP83848_CTL_REG, tmp);
-
-       /* Set the Auto_negotiation Advertisement Register
-        * MII advertising for Next page, 100BaseTxFD and HD,
-        * 10BaseTFD and HD, IEEE 802.3
-        */
-       tmp = DP83848_NP | DP83848_TX_FDX | DP83848_TX_HDX |
-               DP83848_10_FDX | DP83848_10_HDX | DP83848_AN_IEEE_802_3;
-       davinci_eth_phy_write(phy_addr, DP83848_ANA_REG, tmp);
-
-
-       /* Read Control Register */
-       if (!davinci_eth_phy_read(phy_addr, DP83848_CTL_REG, &tmp))
-               return(0);
-
-       tmp |= DP83848_SPEED_SELECT | DP83848_AUTONEG | DP83848_DUPLEX_MODE;
-       davinci_eth_phy_write(phy_addr, DP83848_CTL_REG, tmp);
-
-       /* Restart Auto_negotiation  */
-       tmp |= DP83848_RESTART_AUTONEG;
-       davinci_eth_phy_write(phy_addr, DP83848_CTL_REG, tmp);
-
-       /*check AutoNegotiate complete */
-       udelay(10000);
-       if (!davinci_eth_phy_read(phy_addr, DP83848_STAT_REG, &tmp))
-               return(0);
-
-       if (!(tmp & DP83848_AUTONEG_COMP))
-               return(0);
-
-       return (dp83848_get_link_speed(phy_addr));
-}
-
-#endif /* CONFIG_CMD_NET */
-
-#endif /* CONFIG_DRIVER_ETHER */
diff --git a/arch/arm/mach-davinci/et1011c.c b/arch/arm/mach-davinci/et1011c.c
deleted file mode 100644 (file)
index bfb7ff2..0000000
+++ /dev/null
@@ -1,41 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * LSI ET1011C PHY Driver for TI DaVinci(TMS320DM6467) board.
- *
- * Copyright (C) 2010 Texas Instruments Incorporated - http://www.ti.com/
- */
-
-#include <common.h>
-#include <net.h>
-#include <miiphy.h>
-#include <asm/arch/emac_defs.h>
-#include "../../../drivers/net/ti/davinci_emac.h"
-
-#ifdef CONFIG_DRIVER_TI_EMAC
-
-#ifdef CONFIG_CMD_NET
-
-/* LSI PHYSICAL LAYER TRANSCEIVER ET1011C */
-
-#define MII_PHY_CONFIG_REG             22
-
-/* PHY Config bits */
-#define PHY_SYS_CLK_EN                 (1 << 4)
-
-int et1011c_get_link_speed(int phy_addr)
-{
-       u_int16_t       data;
-
-       if (davinci_eth_phy_read(phy_addr, MII_STATUS_REG, &data) && (data & 0x04)) {
-               davinci_eth_phy_read(phy_addr, MII_PHY_CONFIG_REG, &data);
-               /* Enable 125MHz clock sourced from PHY */
-               davinci_eth_phy_write(phy_addr, MII_PHY_CONFIG_REG,
-                       data | PHY_SYS_CLK_EN);
-               return (1);
-       }
-       return (0);
-}
-
-#endif /* CONFIG_CMD_NET */
-
-#endif /* CONFIG_DRIVER_ETHER */
index 42e1258225bc0d0080f016a7ac2785f7a7154443..215706e1729669af6e9545eb4229836bf6be037e 100644 (file)
@@ -86,7 +86,4 @@ struct da8xx_usb_regs {
 
 #define DA8XX_USB_VBUS_GPIO    (1 << 15)
 
-int usb_phy_on(void);
-void usb_phy_off(void);
-
 #endif /* __DA8XX_MUSB_H__ */
index 842be589fa20a0af3d095cdbe78ab492dc42c9dd..48b11f7a5c82bb3881cb127627669640df9d3ae2 100644 (file)
@@ -40,13 +40,11 @@ void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr);
 int davinci_configure_pin_mux(const struct pinmux_config *pins, int n_pins);
 int davinci_configure_pin_mux_items(const struct pinmux_resource *item,
                                    int n_items);
-#if defined(CONFIG_DRIVER_TI_EMAC) && defined(CONFIG_SOC_DA8XX)
+#if defined(CONFIG_DRIVER_TI_EMAC)
 void davinci_emac_mii_mode_sel(int mode_sel);
 #endif
-#if defined(CONFIG_SOC_DA8XX)
 void irq_init(void);
 int da8xx_configure_lpsc_items(const struct lpsc_resource *item,
                                    const int n_items);
-#endif
 
 #endif /* __MISC_H */
index b08d06dd2472810c54763c3cd4c9663f134cfd97..7c6c19ba0fa38a3a05e88f3f53540372d49ddd88 100644 (file)
 
 #include <asm/arch/hardware.h>
 
-#ifdef CONFIG_SOC_DM365
-#define EMAC_BASE_ADDR                 (0x01d07000)
-#define EMAC_WRAPPER_BASE_ADDR         (0x01d0a000)
-#define EMAC_WRAPPER_RAM_ADDR          (0x01d08000)
-#define EMAC_MDIO_BASE_ADDR            (0x01d0b000)
-#define DAVINCI_EMAC_VERSION2
-#elif defined(CONFIG_SOC_DA8XX)
 #define EMAC_BASE_ADDR                 DAVINCI_EMAC_CNTRL_REGS_BASE
 #define EMAC_WRAPPER_BASE_ADDR         DAVINCI_EMAC_WRAPPER_CNTRL_REGS_BASE
 #define EMAC_WRAPPER_RAM_ADDR          DAVINCI_EMAC_WRAPPER_RAM_BASE
 #define EMAC_MDIO_BASE_ADDR            DAVINCI_MDIO_CNTRL_REGS_BASE
 #define DAVINCI_EMAC_VERSION2
-#else
-#define EMAC_BASE_ADDR                 (0x01c80000)
-#define EMAC_WRAPPER_BASE_ADDR         (0x01c81000)
-#define EMAC_WRAPPER_RAM_ADDR          (0x01c82000)
-#define EMAC_MDIO_BASE_ADDR            (0x01c84000)
-#endif
-
-#ifdef CONFIG_SOC_DM646X
-#define DAVINCI_EMAC_VERSION2
-#define DAVINCI_EMAC_GIG_ENABLE
-#endif
 
-#ifdef CONFIG_SOC_DM646X
-/* MDIO module input frequency */
-#define EMAC_MDIO_BUS_FREQ             76500000
-/* MDIO clock output frequency */
-#define EMAC_MDIO_CLOCK_FREQ           2500000         /* 2.5 MHz */
-#elif defined(CONFIG_SOC_DM365)
-/* MDIO module input frequency */
-#define EMAC_MDIO_BUS_FREQ             121500000
-/* MDIO clock output frequency */
-#define EMAC_MDIO_CLOCK_FREQ           2200000         /* 2.2 MHz */
-#elif defined(CONFIG_SOC_DA8XX)
 /* MDIO module input frequency */
 #define EMAC_MDIO_BUS_FREQ             clk_get(DAVINCI_MDIO_CLKID)
 /* MDIO clock output frequency */
 #define EMAC_MDIO_CLOCK_FREQ           2000000         /* 2.0 MHz */
-#else
-/* MDIO module input frequency */
-#define EMAC_MDIO_BUS_FREQ             99000000        /* PLL/6 - 99 MHz */
-/* MDIO clock output frequency */
-#define EMAC_MDIO_CLOCK_FREQ           2000000         /* 2.0 MHz */
-#endif
-
-#define PHY_KSZ8873    (0x00221450)
-int ksz8873_is_phy_connected(int phy_addr);
-int ksz8873_get_link_speed(int phy_addr);
-int ksz8873_init_phy(int phy_addr);
-int ksz8873_auto_negotiate(int phy_addr);
-
-#define PHY_LXT972     (0x001378e2)
-int lxt972_is_phy_connected(int phy_addr);
-int lxt972_get_link_speed(int phy_addr);
-int lxt972_init_phy(int phy_addr);
-int lxt972_auto_negotiate(int phy_addr);
-
-#define PHY_DP83848    (0x20005c90)
-int dp83848_is_phy_connected(int phy_addr);
-int dp83848_get_link_speed(int phy_addr);
-int dp83848_init_phy(int phy_addr);
-int dp83848_auto_negotiate(int phy_addr);
-
-#define PHY_ET1011C    (0x282f013)
-int et1011c_get_link_speed(int phy_addr);
 
 #endif  /* _DM644X_EMAC_H_ */
index 39819788a1f2b5f9578cc4f047ebe7a3a41dc460..3dca50f776befbd83ce7e626318dc191378aac41 100644 (file)
@@ -5,21 +5,12 @@
 #ifndef _GPIO_DEFS_H_
 #define _GPIO_DEFS_H_
 
-#ifndef CONFIG_SOC_DA8XX
-#define DAVINCI_GPIO_BINTEN    0x01C67008
-#define DAVINCI_GPIO_BANK01    0x01C67010
-#define DAVINCI_GPIO_BANK23    0x01C67038
-#define DAVINCI_GPIO_BANK45    0x01C67060
-#define DAVINCI_GPIO_BANK67    0x01C67088
-
-#else /* CONFIG_SOC_DA8XX */
 #define DAVINCI_GPIO_BINTEN    0x01E26008
 #define DAVINCI_GPIO_BANK01    0x01E26010
 #define DAVINCI_GPIO_BANK23    0x01E26038
 #define DAVINCI_GPIO_BANK45    0x01E26060
 #define DAVINCI_GPIO_BANK67    0x01E26088
 #define DAVINCI_GPIO_BANK8     0x01E260B0
-#endif /* CONFIG_SOC_DA8XX */
 
 #define davinci_gpio_bank01 ((struct davinci_gpio *)DAVINCI_GPIO_BANK01)
 #define davinci_gpio_bank23 ((struct davinci_gpio *)DAVINCI_GPIO_BANK23)
 #define gpio_status()          gpio_info()
 #endif
 #define GPIO_NAME_SIZE         20
-#if defined(CONFIG_SOC_DM644X)
-/* GPIO0 to GPIO53, omit the V3.3 volts one */
-#define MAX_NUM_GPIOS          70
-#elif defined(CONFIG_SOC_DA8XX) && !defined(CONFIG_SOC_DA850)
+#if !defined(CONFIG_SOC_DA850)
 #define MAX_NUM_GPIOS          128
 #else
 #define MAX_NUM_GPIOS          144
index ca5f85a8bbfe36a857ab385016f9fc51c85abda5..4466c6c1d526ec5fe314505c2a6f2cccadefc8d7 100644 (file)
@@ -23,89 +23,6 @@ typedef volatile unsigned int        dv_reg;
 typedef volatile unsigned int *        dv_reg_p;
 #endif
 
-/*
- * Base register addresses
- *
- * NOTE:  some of these DM6446-specific addresses DO NOT WORK
- * on other DaVinci chips.  Double check them before you try
- * using the addresses ... or PSC module identifiers, etc.
- */
-#ifndef CONFIG_SOC_DA8XX
-
-#define DAVINCI_DMA_3PCC_BASE                  (0x01c00000)
-#define DAVINCI_DMA_3PTC0_BASE                 (0x01c10000)
-#define DAVINCI_DMA_3PTC1_BASE                 (0x01c10400)
-#define DAVINCI_UART0_BASE                     (0x01c20000)
-#define DAVINCI_UART1_BASE                     (0x01c20400)
-#define DAVINCI_TIMER3_BASE                    (0x01c20800)
-#define DAVINCI_I2C_BASE                       (0x01c21000)
-#define DAVINCI_TIMER0_BASE                    (0x01c21400)
-#define DAVINCI_TIMER1_BASE                    (0x01c21800)
-#define DAVINCI_WDOG_BASE                      (0x01c21c00)
-#define DAVINCI_PWM0_BASE                      (0x01c22000)
-#define DAVINCI_PWM1_BASE                      (0x01c22400)
-#define DAVINCI_PWM2_BASE                      (0x01c22800)
-#define DAVINCI_TIMER4_BASE                    (0x01c23800)
-#define DAVINCI_SYSTEM_MODULE_BASE             (0x01c40000)
-#define DAVINCI_PLL_CNTRL0_BASE                        (0x01c40800)
-#define DAVINCI_PLL_CNTRL1_BASE                        (0x01c40c00)
-#define DAVINCI_PWR_SLEEP_CNTRL_BASE           (0x01c41000)
-#define DAVINCI_ARM_INTC_BASE                  (0x01c48000)
-#define DAVINCI_USB_OTG_BASE                   (0x01c64000)
-#define DAVINCI_CFC_ATA_BASE                   (0x01c66000)
-#define DAVINCI_SPI_BASE                       (0x01c66800)
-#define DAVINCI_GPIO_BASE                      (0x01c67000)
-#define DAVINCI_VPSS_REGS_BASE                 (0x01c70000)
-#if !defined(CONFIG_SOC_DM646X)
-#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE       (0x02000000)
-#define DAVINCI_ASYNC_EMIF_DATA_CE1_BASE       (0x04000000)
-#define DAVINCI_ASYNC_EMIF_DATA_CE2_BASE       (0x06000000)
-#define DAVINCI_ASYNC_EMIF_DATA_CE3_BASE       (0x08000000)
-#endif
-#define DAVINCI_DDR_BASE                       (0x80000000)
-
-#ifdef CONFIG_SOC_DM644X
-#define DAVINCI_UART2_BASE                     0x01c20800
-#define DAVINCI_UHPI_BASE                      0x01c67800
-#define DAVINCI_EMAC_CNTRL_REGS_BASE           0x01c80000
-#define DAVINCI_EMAC_WRAPPER_CNTRL_REGS_BASE   0x01c81000
-#define DAVINCI_EMAC_WRAPPER_RAM_BASE          0x01c82000
-#define DAVINCI_MDIO_CNTRL_REGS_BASE           0x01c84000
-#define DAVINCI_IMCOP_BASE                     0x01cc0000
-#define DAVINCI_ASYNC_EMIF_CNTRL_BASE          0x01e00000
-#define DAVINCI_VLYNQ_BASE                     0x01e01000
-#define DAVINCI_ASP_BASE                       0x01e02000
-#define DAVINCI_MMC_SD_BASE                    0x01e10000
-#define DAVINCI_MS_BASE                                0x01e20000
-#define DAVINCI_VLYNQ_REMOTE_BASE              0x0c000000
-
-#elif defined(CONFIG_SOC_DM355)
-#define DAVINCI_MMC_SD1_BASE                   0x01e00000
-#define DAVINCI_ASP0_BASE                      0x01e02000
-#define DAVINCI_ASP1_BASE                      0x01e04000
-#define DAVINCI_UART2_BASE                     0x01e06000
-#define DAVINCI_ASYNC_EMIF_CNTRL_BASE          0x01e10000
-#define DAVINCI_MMC_SD0_BASE                   0x01e11000
-
-#elif defined(CONFIG_SOC_DM365)
-#define DAVINCI_MMC_SD1_BASE                   0x01d00000
-#define DAVINCI_ASYNC_EMIF_CNTRL_BASE          0x01d10000
-#define DAVINCI_MMC_SD0_BASE                   0x01d11000
-#define DAVINCI_DDR_EMIF_CTRL_BASE             0x20000000
-#define DAVINCI_SPI0_BASE                      0x01c66000
-#define DAVINCI_SPI1_BASE                      0x01c66800
-
-#elif defined(CONFIG_SOC_DM646X)
-#define DAVINCI_ASYNC_EMIF_CNTRL_BASE          0x20008000
-#define DAVINCI_ASYNC_EMIF_DATA_CE0_BASE       0x42000000
-#define DAVINCI_ASYNC_EMIF_DATA_CE1_BASE       0x44000000
-#define DAVINCI_ASYNC_EMIF_DATA_CE2_BASE       0x46000000
-#define DAVINCI_ASYNC_EMIF_DATA_CE3_BASE       0x48000000
-
-#endif
-
-#else /* CONFIG_SOC_DA8XX */
-
 #define DAVINCI_UART0_BASE                     0x01c42000
 #define DAVINCI_UART1_BASE                     0x01d0c000
 #define DAVINCI_UART2_BASE                     0x01d0d000
@@ -162,66 +79,11 @@ typedef volatile unsigned int *    dv_reg_p;
 #define GPIO_BANK6_REG_OPDATA_ADDR             (DAVINCI_GPIO_BASE + 0x8c)
 #define GPIO_BANK6_REG_SET_ADDR                        (DAVINCI_GPIO_BASE + 0x90)
 #define GPIO_BANK6_REG_CLR_ADDR                        (DAVINCI_GPIO_BASE + 0x94)
-#endif /* CONFIG_SOC_DA8XX */
 
 /* Power and Sleep Controller (PSC) Domains */
 #define DAVINCI_GPSC_ARMDOMAIN         0
 #define DAVINCI_GPSC_DSPDOMAIN         1
 
-#ifndef CONFIG_SOC_DA8XX
-
-#define DAVINCI_LPSC_VPSSMSTR          0
-#define DAVINCI_LPSC_VPSSSLV           1
-#define DAVINCI_LPSC_TPCC              2
-#define DAVINCI_LPSC_TPTC0             3
-#define DAVINCI_LPSC_TPTC1             4
-#define DAVINCI_LPSC_EMAC              5
-#define DAVINCI_LPSC_EMAC_WRAPPER      6
-#define DAVINCI_LPSC_MDIO              7
-#define DAVINCI_LPSC_IEEE1394          8
-#define DAVINCI_LPSC_USB               9
-#define DAVINCI_LPSC_ATA               10
-#define DAVINCI_LPSC_VLYNQ             11
-#define DAVINCI_LPSC_UHPI              12
-#define DAVINCI_LPSC_DDR_EMIF          13
-#define DAVINCI_LPSC_AEMIF             14
-#define DAVINCI_LPSC_MMC_SD            15
-#define DAVINCI_LPSC_MEMSTICK          16
-#define DAVINCI_LPSC_McBSP             17
-#define DAVINCI_LPSC_I2C               18
-#define DAVINCI_LPSC_UART0             19
-#define DAVINCI_LPSC_UART1             20
-#define DAVINCI_LPSC_UART2             21
-#define DAVINCI_LPSC_SPI               22
-#define DAVINCI_LPSC_PWM0              23
-#define DAVINCI_LPSC_PWM1              24
-#define DAVINCI_LPSC_PWM2              25
-#define DAVINCI_LPSC_GPIO              26
-#define DAVINCI_LPSC_TIMER0            27
-#define DAVINCI_LPSC_TIMER1            28
-#define DAVINCI_LPSC_TIMER2            29
-#define DAVINCI_LPSC_SYSTEM_SUBSYS     30
-#define DAVINCI_LPSC_ARM               31
-#define DAVINCI_LPSC_SCR2              32
-#define DAVINCI_LPSC_SCR3              33
-#define DAVINCI_LPSC_SCR4              34
-#define DAVINCI_LPSC_CROSSBAR          35
-#define DAVINCI_LPSC_CFG27             36
-#define DAVINCI_LPSC_CFG3              37
-#define DAVINCI_LPSC_CFG5              38
-#define DAVINCI_LPSC_GEM               39
-#define DAVINCI_LPSC_IMCOP             40
-#define DAVINCI_LPSC_VPSSMASTER                47
-#define DAVINCI_LPSC_MJCP              50
-#define DAVINCI_LPSC_HDVICP            51
-
-#define DAVINCI_DM646X_LPSC_EMAC       14
-#define DAVINCI_DM646X_LPSC_UART0      26
-#define DAVINCI_DM646X_LPSC_I2C                31
-#define DAVINCI_DM646X_LPSC_TIMER0     34
-
-#else /* CONFIG_SOC_DA8XX */
-
 #define DAVINCI_LPSC_TPCC              0
 #define DAVINCI_LPSC_TPTC0             1
 #define DAVINCI_LPSC_TPTC1             2
@@ -283,8 +145,6 @@ typedef volatile unsigned int *     dv_reg_p;
 #define DAVINCI_LPSC_SCR_F8            (DAVINCI_LPSC_PSC1_BASE + 29)
 #define DAVINCI_LPSC_BR_F7             (DAVINCI_LPSC_PSC1_BASE + 30)
 
-#endif /* CONFIG_SOC_DA8XX */
-
 #ifndef __ASSEMBLY__
 void lpsc_on(unsigned int id);
 void lpsc_syncreset(unsigned int id);
@@ -296,30 +156,6 @@ void davinci_enable_emac(void);
 void davinci_enable_i2c(void);
 void davinci_errata_workarounds(void);
 
-#ifndef CONFIG_SOC_DA8XX
-
-/* Some PSC defines */
-#define PSC_CHP_SHRTSW                 (0x01c40038)
-#define PSC_GBLCTL                     (0x01c41010)
-#define PSC_EPCPR                      (0x01c41070)
-#define PSC_EPCCR                      (0x01c41078)
-#define PSC_PTCMD                      (0x01c41120)
-#define PSC_PTSTAT                     (0x01c41128)
-#define PSC_PDSTAT                     (0x01c41200)
-#define PSC_PDSTAT1                    (0x01c41204)
-#define PSC_PDCTL                      (0x01c41300)
-#define PSC_PDCTL1                     (0x01c41304)
-
-#define PSC_MDCTL_BASE                 (0x01c41a00)
-#define PSC_MDSTAT_BASE                        (0x01c41800)
-
-#define VDD3P3V_PWDN                   (0x01c40048)
-#define UART0_PWREMU_MGMT              (0x01c20030)
-
-#define PSC_SILVER_BULLET              (0x01c41a20)
-
-#else /* CONFIG_SOC_DA8XX */
-
 #define        PSC_ENABLE              0x3
 #define        PSC_DISABLE             0x2
 #define        PSC_SYNCRESET           0x1
@@ -354,41 +190,9 @@ struct davinci_psc_regs {
 #define davinci_psc0_regs ((struct davinci_psc_regs *)DAVINCI_PSC0_BASE)
 #define davinci_psc1_regs ((struct davinci_psc_regs *)DAVINCI_PSC1_BASE)
 
-#endif /* CONFIG_SOC_DA8XX */
-
 #define PSC_MDSTAT_STATE               0x3f
 #define PSC_MDCTL_NEXT                 0x07
 
-#ifndef CONFIG_SOC_DA8XX
-
-/* Miscellania... */
-#define VBPR                           (0x20000020)
-
-/* NOTE:  system control modules are *highly* chip-specific, both
- * as to register content (e.g. for muxing) and which registers exist.
- */
-#define PINMUX0                                0x01c40000
-#define PINMUX1                                0x01c40004
-#define PINMUX2                                0x01c40008
-#define PINMUX3                                0x01c4000c
-#define PINMUX4                                0x01c40010
-
-struct davinci_uart_ctrl_regs {
-       dv_reg  revid1;
-       dv_reg  res;
-       dv_reg  pwremu_mgmt;
-       dv_reg  mdr;
-};
-
-#define DAVINCI_UART_CTRL_BASE 0x28
-
-/* UART PWREMU_MGMT definitions */
-#define DAVINCI_UART_PWREMU_MGMT_FREE  (1 << 0)
-#define DAVINCI_UART_PWREMU_MGMT_URRST (1 << 13)
-#define DAVINCI_UART_PWREMU_MGMT_UTRST (1 << 14)
-
-#else /* CONFIG_SOC_DA8XX */
-
 struct davinci_pllc_regs {
        dv_reg  revid;
        dv_reg  rsvd1[56];
@@ -606,26 +410,6 @@ static inline enum davinci_clk_ids get_async3_src(void)
                        DAVINCI_PLL1_SYSCLK2 : DAVINCI_PLL0_SYSCLK2;
 }
 
-#endif /* CONFIG_SOC_DA8XX */
-
-#if defined(CONFIG_SOC_DM365)
-#include <asm/arch/aintc_defs.h>
-#include <asm/arch/ddr2_defs.h>
-#include <asm/arch/gpio.h>
-#include <asm/arch/pll_defs.h>
-#include <asm/arch/psc_defs.h>
-#include <asm/arch/syscfg_defs.h>
-#include <asm/arch/timer_defs.h>
-
-#define TMPBUF                 0x00017ff8
-#define TMPSTATUS              0x00017ff0
-#define DV_TMPBUF_VAL          0x591b3ed7
-#define FLAG_PORRST            0x00000001
-#define FLAG_WDTRST            0x00000002
-#define FLAG_FLGON             0x00000004
-#define FLAG_FLGOFF            0x00000010
-
-#endif
 #endif /* !__ASSEMBLY__ */
 
 #endif /* __ASM_ARCH_HARDWARE_H */
index 50e31ca3b9ab6361a2f35b1e329c8c1c66d6ffe4..f12460dd5fd73e82238ce2271c5773f86a4ea808 100644 (file)
@@ -8,10 +8,6 @@
 #ifndef _I2C_DEFS_H_
 #define _I2C_DEFS_H_
 
-#ifndef CONFIG_SOC_DA8XX
-#define I2C_BASE               0x01c21000
-#else
 #define I2C_BASE               0x01c22000
-#endif
 
 #endif
diff --git a/arch/arm/mach-davinci/include/mach/syscfg_defs.h b/arch/arm/mach-davinci/include/mach/syscfg_defs.h
deleted file mode 100644 (file)
index 41deeda..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0+ */
-/*
- * Copyright (C) 2011
- * Heiko Schocher, DENX Software Engineering, hs@denx.de.
- */
-#ifndef _DV_SYSCFG_DEFS_H_
-#define _DV_SYSCFG_DEFS_H_
-
-#ifndef CONFIG_SOC_DA8XX
-/* System Control Module register structure for DM365 */
-struct dv_sys_module_regs {
-       unsigned int    pinmux[5];      /* 0x00 */
-       unsigned int    bootcfg;        /* 0x14 */
-       unsigned int    arm_intmux;     /* 0x18 */
-       unsigned int    edma_evtmux;    /* 0x1C */
-       unsigned int    ddr_slew;       /* 0x20 */
-       unsigned int    clkout;         /* 0x24 */
-       unsigned int    device_id;      /* 0x28 */
-       unsigned int    vdac_config;    /* 0x2C */
-       unsigned int    timer64_ctl;    /* 0x30 */
-       unsigned int    usbbphy_ctl;    /* 0x34 */
-       unsigned int    misc;           /* 0x38 */
-       unsigned int    mstpri[2];      /* 0x3C */
-       unsigned int    vpss_clkctl;    /* 0x44 */
-       unsigned int    peri_clkctl;    /* 0x48 */
-       unsigned int    deepsleep;      /* 0x4C */
-       unsigned int    dft_enable;     /* 0x50 */
-       unsigned int    debounce[8];    /* 0x54 */
-       unsigned int    vtpiocr;        /* 0x74 */
-       unsigned int    pupdctl0;       /* 0x78 */
-       unsigned int    pupdctl1;       /* 0x7C */
-       unsigned int    hdimcopbt;      /* 0x80 */
-       unsigned int    pll0_config;    /* 0x84 */
-       unsigned int    pll1_config;    /* 0x88 */
-};
-
-#define VPTIO_RDY      (1 << 15)
-#define VPTIO_IOPWRDN  (1 << 14)
-#define VPTIO_CLRZ     (1 << 13)
-#define VPTIO_LOCK     (1 << 7)
-#define VPTIO_PWRDN    (1 << 6)
-
-#define VPSS_CLK_CTL_VPSS_CLKMD        (1 << 7)
-
-#define dv_sys_module_regs \
-       ((struct dv_sys_module_regs *)DAVINCI_SYSTEM_MODULE_BASE)
-
-#endif /* !CONFIG_SOC_DA8XX */
-#endif /* _DV_SYSCFG_DEFS_H_ */
diff --git a/arch/arm/mach-davinci/ksz8873.c b/arch/arm/mach-davinci/ksz8873.c
deleted file mode 100644 (file)
index 85b0c26..0000000
+++ /dev/null
@@ -1,52 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Micrel KSZ8873 PHY Driver for TI DaVinci
- * (TMS320DM644x) based boards.
- *
- * Copyright (C) 2011 Heiko Schocher <hsdenx.de>
- *
- * based on:
- * National Semiconductor DP83848 PHY Driver for TI DaVinci
- * (TMS320DM644x) based boards.
- *
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * --------------------------------------------------------
- */
-
-#include <common.h>
-#include <miiphy.h>
-#include <net.h>
-#include <asm/arch/emac_defs.h>
-#include <asm/io.h>
-#include "../../../drivers/net/ti/davinci_emac.h"
-
-int ksz8873_is_phy_connected(int phy_addr)
-{
-       u_int16_t       dummy;
-
-       return davinci_eth_phy_read(phy_addr, MII_PHYSID1, &dummy);
-}
-
-int ksz8873_get_link_speed(int phy_addr)
-{
-       emac_regs *emac = (emac_regs *)EMAC_BASE_ADDR;
-
-       /* we always have a link to the switch, 100 FD */
-       writel((EMAC_MACCONTROL_MIIEN_ENABLE |
-               EMAC_MACCONTROL_FULLDUPLEX_ENABLE),
-              &emac->MACCONTROL);
-       return 1;
-}
-
-
-int ksz8873_init_phy(int phy_addr)
-{
-       return 1;
-}
-
-
-int ksz8873_auto_negotiate(int phy_addr)
-{
-       return dp83848_get_link_speed(phy_addr);
-}
diff --git a/arch/arm/mach-davinci/lxt972.c b/arch/arm/mach-davinci/lxt972.c
deleted file mode 100644 (file)
index b54f67d..0000000
+++ /dev/null
@@ -1,112 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0+
-/*
- * Intel LXT971/LXT972 PHY Driver for TI DaVinci
- * (TMS320DM644x) based boards.
- *
- * Copyright (C) 2007 Sergey Kubushyn <ksi@koi8.net>
- *
- * --------------------------------------------------------
- */
-
-#include <common.h>
-#include <net.h>
-#include <miiphy.h>
-#include <lxt971a.h>
-#include <asm/arch/emac_defs.h>
-#include "../../../drivers/net/ti/davinci_emac.h"
-
-#ifdef CONFIG_DRIVER_TI_EMAC
-
-#ifdef CONFIG_CMD_NET
-
-int lxt972_is_phy_connected(int phy_addr)
-{
-       u_int16_t id1, id2;
-
-       if (!davinci_eth_phy_read(phy_addr, MII_PHYSID1, &id1))
-               return(0);
-       if (!davinci_eth_phy_read(phy_addr, MII_PHYSID2, &id2))
-               return(0);
-
-       if ((id1 == (0x0013)) && ((id2  & 0xfff0) == 0x78e0))
-               return(1);
-
-       return(0);
-}
-
-int lxt972_get_link_speed(int phy_addr)
-{
-       u_int16_t stat1, tmp;
-       volatile emac_regs *emac = (emac_regs *)EMAC_BASE_ADDR;
-
-       if (!davinci_eth_phy_read(phy_addr, PHY_LXT971_STAT2, &stat1))
-               return(0);
-
-       if (!(stat1 & PHY_LXT971_STAT2_LINK))   /* link up? */
-               return(0);
-
-       if (!davinci_eth_phy_read(phy_addr, PHY_LXT971_DIG_CFG, &tmp))
-               return(0);
-
-       tmp |= PHY_LXT971_DIG_CFG_MII_DRIVE;
-
-       davinci_eth_phy_write(phy_addr, PHY_LXT971_DIG_CFG, tmp);
-       /* Read back */
-       if (!davinci_eth_phy_read(phy_addr, PHY_LXT971_DIG_CFG, &tmp))
-               return(0);
-
-       /* Speed doesn't matter, there is no setting for it in EMAC... */
-       if (stat1 & PHY_LXT971_STAT2_DUPLEX_MODE) {
-               /* set DM644x EMAC for Full Duplex  */
-               emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE |
-                       EMAC_MACCONTROL_FULLDUPLEX_ENABLE;
-       } else {
-               /*set DM644x EMAC for Half Duplex  */
-               emac->MACCONTROL = EMAC_MACCONTROL_MIIEN_ENABLE;
-       }
-
-       return(1);
-}
-
-
-int lxt972_init_phy(int phy_addr)
-{
-       int ret = 1;
-
-       if (!lxt972_get_link_speed(phy_addr)) {
-               /* Try another time */
-               ret = lxt972_get_link_speed(phy_addr);
-       }
-
-       /* Disable PHY Interrupts */
-       davinci_eth_phy_write(phy_addr, PHY_LXT971_INT_ENABLE, 0);
-
-       return(ret);
-}
-
-
-int lxt972_auto_negotiate(int phy_addr)
-{
-       u_int16_t tmp;
-
-       if (!davinci_eth_phy_read(phy_addr, MII_BMCR, &tmp))
-               return(0);
-
-       /* Restart Auto_negotiation  */
-       tmp |= BMCR_ANRESTART;
-       davinci_eth_phy_write(phy_addr, MII_BMCR, tmp);
-
-       /*check AutoNegotiate complete */
-       udelay (10000);
-       if (!davinci_eth_phy_read(phy_addr, MII_BMSR, &tmp))
-               return(0);
-
-       if (!(tmp & BMSR_ANEGCOMPLETE))
-               return(0);
-
-       return (lxt972_get_link_speed(phy_addr));
-}
-
-#endif /* CONFIG_CMD_NET */
-
-#endif /* CONFIG_DRIVER_ETHER */
index 919041521b95cb619940dc929e4d4da9e31f8ed8..df500c8f35bf05e5b473978ce9d54f1d6a7d3eca 100644 (file)
@@ -68,7 +68,6 @@ err:
 /*
  * Set the mii mode as MII or RMII
  */
-#if defined(CONFIG_SOC_DA8XX)
 void davinci_emac_mii_mode_sel(int mode_sel)
 {
        int val;
@@ -80,7 +79,7 @@ void davinci_emac_mii_mode_sel(int mode_sel)
                val |= (1 << 8);
        writel(val, &davinci_syscfg_regs->cfgchip3);
 }
-#endif
+
 /*
  * If there is no MAC address in the environment, then it will be initialized
  * (silently) from the value in the EEPROM.
@@ -106,7 +105,6 @@ void davinci_sync_env_enetaddr(uint8_t *rom_enetaddr)
 }
 #endif /* CONFIG_DRIVER_TI_EMAC */
 
-#if defined(CONFIG_SOC_DA8XX)
 void irq_init(void)
 {
        /*
@@ -135,4 +133,3 @@ int da8xx_configure_lpsc_items(const struct lpsc_resource *item,
 
        return 0;
 }
-#endif
index 9c3ff917bbfdb6e1da0f0c90ebcc7b4be305ea8e..dae10aa03bbb29c79d364efbb7d3bcdb41d504bd 100644 (file)
 static void lpsc_transition(unsigned int id, unsigned int state)
 {
        dv_reg_p mdstat, mdctl, ptstat, ptcmd;
-#ifdef CONFIG_SOC_DA8XX
        struct davinci_psc_regs *psc_regs;
-#endif
 
-#ifndef CONFIG_SOC_DA8XX
-       if (id >= DAVINCI_LPSC_GEM)
-               return;                 /* Don't work on DSP Power Domain */
-
-       mdstat = REG_P(PSC_MDSTAT_BASE + (id * 4));
-       mdctl = REG_P(PSC_MDCTL_BASE + (id * 4));
-       ptstat = REG_P(PSC_PTSTAT);
-       ptcmd = REG_P(PSC_PTCMD);
-#else
        if (id < DAVINCI_LPSC_PSC1_BASE) {
                if (id >= PSC_PSC0_MODULE_ID_CNT)
                        return;
@@ -62,7 +51,6 @@ static void lpsc_transition(unsigned int id, unsigned int state)
        }
        ptstat = &psc_regs->ptstat;
        ptcmd = &psc_regs->ptcmd;
-#endif
 
        while (readl(ptstat) & 0x01)
                continue;
@@ -71,29 +59,6 @@ static void lpsc_transition(unsigned int id, unsigned int state)
                return; /* Already in that state */
 
        writel((readl(mdctl) & ~PSC_MDCTL_NEXT) | state, mdctl);
-
-       switch (id) {
-#ifdef CONFIG_SOC_DM644X
-       /* Special treatment for some modules as for sprue14 p.7.4.2 */
-       case DAVINCI_LPSC_VPSSSLV:
-       case DAVINCI_LPSC_EMAC:
-       case DAVINCI_LPSC_EMAC_WRAPPER:
-       case DAVINCI_LPSC_MDIO:
-       case DAVINCI_LPSC_USB:
-       case DAVINCI_LPSC_ATA:
-       case DAVINCI_LPSC_VLYNQ:
-       case DAVINCI_LPSC_UHPI:
-       case DAVINCI_LPSC_DDR_EMIF:
-       case DAVINCI_LPSC_AEMIF:
-       case DAVINCI_LPSC_MMC_SD:
-       case DAVINCI_LPSC_MEMSTICK:
-       case DAVINCI_LPSC_McBSP:
-       case DAVINCI_LPSC_GPIO:
-               writel(readl(mdctl) | 0x200, mdctl);
-               break;
-#endif
-       }
-
        writel(0x01, ptcmd);
 
        while (readl(ptstat) & 0x01)
@@ -116,44 +81,3 @@ void lpsc_disable(unsigned int id)
 {
        lpsc_transition(id, 0x0);
 }
-
-/* Not all DaVinci chips have a DSP power domain. */
-#ifdef CONFIG_SOC_DM644X
-
-/* If DSPLINK is used, we don't want U-Boot to power on the DSP. */
-#if !defined(CONFIG_SYS_USE_DSPLINK)
-void dsp_on(void)
-{
-       int i;
-
-       if (REG(PSC_PDSTAT1) & 0x1f)
-               return;                 /* Already on */
-
-       REG(PSC_GBLCTL) |= 0x01;
-       REG(PSC_PDCTL1) |= 0x01;
-       REG(PSC_PDCTL1) &= ~0x100;
-       REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_GEM * 4)) |= 0x03;
-       REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_GEM * 4)) &= 0xfffffeff;
-       REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_IMCOP * 4)) |= 0x03;
-       REG(PSC_MDCTL_BASE + (DAVINCI_LPSC_IMCOP * 4)) &= 0xfffffeff;
-       REG(PSC_PTCMD) = 0x02;
-
-       for (i = 0; i < 100; i++) {
-               if (REG(PSC_EPCPR) & 0x02)
-                       break;
-       }
-
-       REG(PSC_CHP_SHRTSW) = 0x01;
-       REG(PSC_PDCTL1) |= 0x100;
-       REG(PSC_EPCCR) = 0x02;
-
-       for (i = 0; i < 100; i++) {
-               if (!(REG(PSC_PTSTAT) & 0x02))
-                       break;
-       }
-
-       REG(PSC_GBLCTL) &= ~0x1f;
-}
-#endif /* CONFIG_SYS_USE_DSPLINK */
-
-#endif /* have a DSP */
index c9aaa4841b101a4b35471c3c06437df3a65c0850..103639e347579410b8005ba36e773b97afbf048a 100644 (file)
@@ -33,12 +33,7 @@ void putc(char c)
 
 void spl_board_init(void)
 {
-#ifdef CONFIG_SOC_DM365
-       dm36x_lowlevel_init(0);
-#endif
-#ifdef CONFIG_SOC_DA8XX
        arch_cpu_init();
-#endif
        preloader_console_init();
 }
 
index 38077703621d2c3085c0394fd28929584821cb6e..14347e7c7d9238f102c0b8ba099cfc11e37a8e7a 100644 (file)
@@ -116,7 +116,6 @@ config TARGET_SNOW
 config TARGET_SPRING
        bool "Spring board"
        select OF_CONTROL
-       select SPL_DISABLE_OF_CONTROL
        select SUPPORT_SPL
 
 config TARGET_SMDK5420
@@ -150,7 +149,6 @@ config  TARGET_ESPRESSO7420
        select OF_CONTROL
        select PINCTRL
        select PINCTRL_EXYNOS7420
-       select SPL_DISABLE_OF_CONTROL
        select SUPPORT_SPL
 
 endchoice
index f99bd3bf65672ee770ea10cd4d28fe7ad894e0bf..a832e1dc8c9e65469acc4c65f1033c1e5ef4344e 100644 (file)
@@ -116,6 +116,13 @@ config TARGET_DB_88F6820_AMC
 config TARGET_TURRIS_OMNIA
        bool "Support Turris Omnia"
        select 88F6820
+       select BOARD_LATE_INIT
+       select DM_I2C
+       select I2C_MUX
+       select I2C_MUX_PCA954x
+       select SPL_I2C_MUX
+       select SYS_I2C_MVTWSI
+       select ATSHA204A
 
 config TARGET_TURRIS_MOX
        bool "Support Turris Mox"
index b9a026abb5c5b9e985558a004736fa8eaa37f24f..282d728b82d580664bf8742db4040aec520fa8c1 100644 (file)
@@ -34,7 +34,6 @@ config ROCKCHIP_RK3188
        select SPL_RAM
        select SPL_DRIVERS_MISC_SUPPORT
        select SPL_ROCKCHIP_EARLYRETURN_TO_BROM
-       select DEBUG_UART_BOARD_INIT
        select BOARD_LATE_INIT
        select ROCKCHIP_BROM_HELPER
        help
@@ -50,7 +49,6 @@ config ROCKCHIP_RK322X
        select SUPPORT_SPL
        select SPL
        select ROCKCHIP_BROM_HELPER
-       select DEBUG_UART_BOARD_INIT
        help
          The Rockchip RK3229 is a ARM-based SoC with a dual-core Cortex-A7
          including NEON and GPU, Mali-400 graphics, several DDR3 options
@@ -102,7 +100,6 @@ config ROCKCHIP_RK3368
        imply SPL_SEPARATE_BSS
        imply SPL_SERIAL_SUPPORT
        imply TPL_SERIAL_SUPPORT
-       select DEBUG_UART_BOARD_INIT
        help
          The Rockchip RK3368 is a ARM-based SoC with a octa-core (organised
          into a big and little cluster with 4 cores each) Cortex-A53 including
@@ -135,7 +132,6 @@ config ROCKCHIP_RK3399
        select SPL_SEPARATE_BSS
        select SPL_SERIAL_SUPPORT
        select SPL_DRIVERS_MISC_SUPPORT
-       select DEBUG_UART_BOARD_INIT
        select BOARD_LATE_INIT
        select ROCKCHIP_BROM_HELPER
        help
@@ -192,7 +188,7 @@ config ROCKCHIP_BOOT_MODE_REG
        default 0x10300580 if ROCKCHIP_RV1108
        default 0
        help
-         The Soc will enter to different boot mode(defined in asm/arch/boot_mode.h)
+         The Soc will enter to different boot mode(defined in asm/arch-rockchip/boot_mode.h)
          according to the value from this register.
 
 config ROCKCHIP_SPL_RESERVE_IRAM
index f32b3c4ce56a0fc6bffbce9782cac339bfd114d7..08f80bd91aae0bb39d6588acea312bc9f3349f6a 100644 (file)
@@ -6,7 +6,7 @@
 #include <common.h>
 #include <adc.h>
 #include <asm/io.h>
-#include <asm/arch/boot_mode.h>
+#include <asm/arch-rockchip/boot_mode.h>
 
 #if (CONFIG_ROCKCHIP_BOOT_MODE_REG == 0)
 
index 2f2f73aeddfe642f2816375e8895231426d83d7c..9ccb45e6acd26e70cf3a782d428c28a95d1e4f08 100644 (file)
@@ -4,8 +4,8 @@
  */
 
 #include <common.h>
-#include <asm/arch/bootrom.h>
-#include <asm/arch/boot_mode.h>
+#include <asm/arch-rockchip/bootrom.h>
+#include <asm/arch-rockchip/boot_mode.h>
 #include <asm/io.h>
 #include <asm/setjmp.h>
 #include <asm/system.h>
index 5ec69f131161f1edc07aa9c14f9b81e1e222458b..110d06dba5ee032e1fcb185337a657896532527a 100644 (file)
@@ -6,31 +6,13 @@
 #include <common.h>
 #include <debug_uart.h>
 #include <asm/io.h>
-#include <asm/arch/bootrom.h>
-#include <asm/arch/grf_rk3036.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/sdram_rk3036.h>
-#include <asm/arch/timer.h>
-#include <asm/arch/uart.h>
-
-#define GRF_BASE       0x20008000
-
-#define DEBUG_UART_BASE        0x20068000
+#include <asm/arch-rockchip/bootrom.h>
+#include <asm/arch-rockchip/sdram_rk3036.h>
+#include <asm/arch-rockchip/timer.h>
 
 void board_init_f(ulong dummy)
 {
-#ifdef EARLY_DEBUG
-       struct rk3036_grf * const grf = (void *)GRF_BASE;
-       /*
-        * NOTE: sd card and debug uart use same iomux in rk3036,
-        * so if you enable uart,
-        * you can not boot from sdcard
-        */
-       rk_clrsetreg(&grf->gpio1c_iomux,
-                    GPIO1C3_MASK << GPIO1C3_SHIFT |
-                    GPIO1C2_MASK << GPIO1C2_SHIFT,
-                    GPIO1C3_UART2_SOUT << GPIO1C3_SHIFT |
-                    GPIO1C2_UART2_SIN << GPIO1C2_SHIFT);
+#ifdef CONFIG_DEBUG_UART
        debug_uart_init();
 #endif
        rockchip_timer_init();
index 872bed9606b1f99b457e715e6ecb08babdd82d89..2094a4336d0b584be2f51255cf97ad1bdbf3db7c 100644 (file)
@@ -9,11 +9,11 @@
 #include <ram.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/grf_rk3036.h>
-#include <asm/arch/boot_mode.h>
-#include <asm/arch/sdram_rk3036.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/periph.h>
+#include <asm/arch-rockchip/grf_rk3036.h>
+#include <asm/arch-rockchip/boot_mode.h>
+#include <asm/arch-rockchip/sdram_rk3036.h>
 #include <dm/pinctrl.h>
 
 DECLARE_GLOBAL_DATA_PTR;
index c63db343e26dfc2c273959800ca710dd44294d28..5e04d204482d8e7abf7657af39e2971ab693761b 100644 (file)
@@ -9,7 +9,7 @@ config TARGET_KYLIN_RK3036
        select BOARD_LATE_INIT
 
 config SYS_SOC
-       default "rockchip"
+       default "rk3036"
 
 config SYS_MALLOC_F_LEN
        default 0x400
index 20d28f7c21c182d1e5e2e470b2c28c58c33389b4..299fc50635d191d6a519a810a3884e602f14399f 100644 (file)
@@ -10,4 +10,5 @@ ifndef CONFIG_SPL_BUILD
 obj-y += syscon_rk3036.o
 endif
 
+obj-y += rk3036.o
 obj-y += sdram_rk3036.o
index 2145c59fcde65c07377d7b73013db34d9a669c16..20e2ed681321950576fb0210283cde34dc038a89 100644 (file)
@@ -7,8 +7,8 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3036.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3036.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
diff --git a/arch/arm/mach-rockchip/rk3036/rk3036.c b/arch/arm/mach-rockchip/rk3036/rk3036.c
new file mode 100644 (file)
index 0000000..481af8a
--- /dev/null
@@ -0,0 +1,38 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2019 Rockchip Electronics Co., Ltd
+ */
+#include <asm/io.h>
+#include <asm/arch-rockchip/grf_rk3036.h>
+#include <asm/arch-rockchip/hardware.h>
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
+void board_debug_uart_init(void)
+{
+#define GRF_BASE       0x20008000
+       struct rk3036_grf * const grf = (void *)GRF_BASE;
+       enum {
+               GPIO1C3_SHIFT           = 6,
+               GPIO1C3_MASK            = 3 << GPIO1C3_SHIFT,
+               GPIO1C3_GPIO            = 0,
+               GPIO1C3_MMC0_D1,
+               GPIO1C3_UART2_SOUT,
+
+               GPIO1C2_SHIFT           = 4,
+               GPIO1C2_MASK            = 3 << GPIO1C2_SHIFT,
+               GPIO1C2_GPIO            = 0,
+               GPIO1C2_MMC0_D0,
+               GPIO1C2_UART2_SIN,
+       };
+       /*
+        * NOTE: sd card and debug uart use same iomux in rk3036,
+        * so if you enable uart,
+        * you can not boot from sdcard
+        */
+       rk_clrsetreg(&grf->gpio1c_iomux,
+                    GPIO1C3_MASK << GPIO1C3_SHIFT |
+                    GPIO1C2_MASK << GPIO1C2_SHIFT,
+                    GPIO1C3_UART2_SOUT << GPIO1C3_SHIFT |
+                    GPIO1C2_UART2_SIN << GPIO1C2_SHIFT);
+}
+#endif
index 2012d9fe04d5842ae6e71f2167a84059e57442eb..1d940a0d77ca5a8cba9eb38f8dfdd02478602532 100644 (file)
@@ -5,12 +5,12 @@
 #include <common.h>
 #include <asm/io.h>
 #include <asm/types.h>
-#include <asm/arch/cru_rk3036.h>
-#include <asm/arch/grf_rk3036.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/sdram_rk3036.h>
-#include <asm/arch/timer.h>
-#include <asm/arch/uart.h>
+#include <asm/arch-rockchip/cru_rk3036.h>
+#include <asm/arch-rockchip/grf_rk3036.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/sdram_rk3036.h>
+#include <asm/arch-rockchip/timer.h>
+#include <asm/arch-rockchip/uart.h>
 
 /*
  * we can not fit the code to access the device tree in SPL
index d3f4cc77f1fca41b91dcd20ea0a5fe397f97e73d..c2fd16079902950043e0bf45fa93c1d9cf2645e5 100644 (file)
@@ -6,7 +6,7 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 static const struct udevice_id rk3036_syscon_ids[] = {
        { .compatible = "rockchip,rk3036-grf", .data = ROCKCHIP_SYSCON_GRF },
index 7fd667a0b8ec94a43df1f27b488c758892035e94..b1c66382e356911cdee3838c991c0b91ead50eb1 100644 (file)
@@ -8,11 +8,11 @@
 #include <ram.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/grf_rk3128.h>
-#include <asm/arch/boot_mode.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/periph.h>
+#include <asm/arch-rockchip/grf_rk3128.h>
+#include <asm/arch-rockchip/boot_mode.h>
+#include <asm/arch-rockchip/timer.h>
 #include <power/regulator.h>
 
 DECLARE_GLOBAL_DATA_PTR;
index 40655a22b59761d75f4587db284c9f0aead01124..a82b7dc063fee2c775cb27fdf0c484c42378e29c 100644 (file)
@@ -14,7 +14,7 @@ config TARGET_EVB_RK3128
 endchoice
 
 config SYS_SOC
-       default "rockchip"
+       default "rk3128"
 
 config SYS_MALLOC_F_LEN
        default 0x0800
index b9b0297579207541c60073e5469ff93411cc6a80..827750bf98b69e43643cc2715a6c6931b252965f 100644 (file)
@@ -6,8 +6,8 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3128.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3128.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
index 8117895434c658d6ee7af4d3ebf3fca6b37c300e..1406d5d0d325d2aa6df49088ed9f3aee1aef3c70 100644 (file)
@@ -6,7 +6,7 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 static const struct udevice_id rk3128_syscon_ids[] = {
        { .compatible = "rockchip,rk3128-grf", .data = ROCKCHIP_SYSCON_GRF },
index 5c09b0e4ae0b140d46acc5463b89062fd7e76415..77b9b36d3577c6e835652dc6217f5d230d02c75e 100644 (file)
 #include <syscon.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/bootrom.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3188.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/pmu_rk3188.h>
-#include <asm/arch/sdram.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/bootrom.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk3188.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/periph.h>
+#include <asm/arch-rockchip/pmu_rk3188.h>
+#include <asm/arch-rockchip/sdram.h>
+#include <asm/arch-rockchip/timer.h>
 #include <dm/pinctrl.h>
 #include <dm/root.h>
 #include <dm/test.h>
@@ -93,38 +93,12 @@ static int setup_arm_clock(void)
        return ret;
 }
 
-void board_debug_uart_init(void)
-{
-       /* Enable early UART on the RK3188 */
-#define GRF_BASE       0x20008000
-       struct rk3188_grf * const grf = (void *)GRF_BASE;
-       enum {
-               GPIO1B1_SHIFT           = 2,
-               GPIO1B1_MASK            = 3,
-               GPIO1B1_GPIO            = 0,
-               GPIO1B1_UART2_SOUT,
-
-               GPIO1B0_SHIFT           = 0,
-               GPIO1B0_MASK            = 3,
-               GPIO1B0_GPIO            = 0,
-               GPIO1B0_UART2_SIN,
-       };
-
-       /* Enable early UART on the RK3188 */
-       rk_clrsetreg(&grf->gpio1b_iomux,
-                    GPIO1B1_MASK << GPIO1B1_SHIFT |
-                    GPIO1B0_MASK << GPIO1B0_SHIFT,
-                    GPIO1B1_UART2_SOUT << GPIO1B1_SHIFT |
-                    GPIO1B0_UART2_SIN << GPIO1B0_SHIFT);
-}
-
 void board_init_f(ulong dummy)
 {
        struct udevice *dev;
        int ret;
 
-#define EARLY_UART
-#ifdef EARLY_UART
+#ifdef CONFIG_DEBUG_UART
        /*
         * Debug UART can be used from here if required:
         *
index 3802395bc07fa124419164038f6dcf855111c873..e03759f78929abdfc6b85c12c46cefda51d4d0e6 100644 (file)
 #include <syscon.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3188.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/pmu_rk3288.h>
-#include <asm/arch/boot_mode.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk3188.h>
+#include <asm/arch-rockchip/periph.h>
+#include <asm/arch-rockchip/pmu_rk3288.h>
+#include <asm/arch-rockchip/boot_mode.h>
 #include <dm/pinctrl.h>
 
 __weak int rk_board_late_init(void)
index 2bb35662d19e52374cd32c7f605e5f4db9626823..a6fc691fb6c784e89eaec4f98d1600875657df16 100644 (file)
@@ -10,7 +10,7 @@ config TARGET_ROCK
          UART and GPIOs.
 
 config SYS_SOC
-       default "rockchip"
+       default "rk3188"
 
 config SYS_MALLOC_F_LEN
        default 0x0800
index 7fa010405b1c96d66a556c3302511c039df3e5f6..7dc123a3d2393dfac9bfdcecc340d9daf88b0032 100644 (file)
@@ -6,5 +6,6 @@
 
 ifndef CONFIG_TPL_BUILD
 obj-y += clk_rk3188.o
+obj-y += rk3188.o
 obj-y += syscon_rk3188.o
 endif
index e8fcec70cd4104519a2bebd67202814dc65ebad2..9d4fc37eda91e84444362f6708ce69991ebe54a5 100644 (file)
@@ -7,8 +7,8 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3188.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3188.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
diff --git a/arch/arm/mach-rockchip/rk3188/rk3188.c b/arch/arm/mach-rockchip/rk3188/rk3188.c
new file mode 100644 (file)
index 0000000..933484e
--- /dev/null
@@ -0,0 +1,36 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2019 Rockchip Electronics Co., Ltd
+ */
+#include <common.h>
+#include <asm/io.h>
+#include <asm/arch-rockchip/grf_rk3188.h>
+#include <asm/arch-rockchip/hardware.h>
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
+void board_debug_uart_init(void)
+{
+       /* Enable early UART on the RK3188 */
+#define GRF_BASE       0x20008000
+       struct rk3188_grf * const grf = (void *)GRF_BASE;
+       enum {
+               GPIO1B1_SHIFT           = 2,
+               GPIO1B1_MASK            = 3,
+               GPIO1B1_GPIO            = 0,
+               GPIO1B1_UART2_SOUT,
+               GPIO1B1_JTAG_TDO,
+
+               GPIO1B0_SHIFT           = 0,
+               GPIO1B0_MASK            = 3,
+               GPIO1B0_GPIO            = 0,
+               GPIO1B0_UART2_SIN,
+               GPIO1B0_JTAG_TDI,
+       };
+
+       rk_clrsetreg(&grf->gpio1b_iomux,
+                    GPIO1B1_MASK << GPIO1B1_SHIFT |
+                    GPIO1B0_MASK << GPIO1B0_SHIFT,
+                    GPIO1B1_UART2_SOUT << GPIO1B1_SHIFT |
+                    GPIO1B0_UART2_SIN << GPIO1B0_SHIFT);
+}
+#endif
index 6572bfa6a2b61a1db048ea947486dec2d4c15ed1..94f4ec7227dc58f1b8df6e78640eceff3ee1e206 100644 (file)
@@ -7,7 +7,7 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 static const struct udevice_id rk3188_syscon_ids[] = {
        { .compatible = "rockchip,rk3188-noc", .data = ROCKCHIP_SYSCON_NOC },
index 1e718f26942925ec280829a875fdaab1c546e7b9..888310efbe10fd282eb9edada9a58be40bb385f0 100644 (file)
@@ -9,55 +9,14 @@
 #include <ram.h>
 #include <spl.h>
 #include <asm/io.h>
-#include <asm/arch/bootrom.h>
-#include <asm/arch/cru_rk322x.h>
-#include <asm/arch/grf_rk322x.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/timer.h>
-#include <asm/arch/uart.h>
+#include <asm/arch-rockchip/bootrom.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/timer.h>
 
 u32 spl_boot_device(void)
 {
        return BOOT_DEVICE_MMC1;
 }
-#define GRF_BASE       0x11000000
-#define SGRF_BASE      0x10140000
-
-#define DEBUG_UART_BASE        0x11030000
-
-void board_debug_uart_init(void)
-{
-       static struct rk322x_grf * const grf = (void *)GRF_BASE;
-       enum {
-               GPIO1B2_SHIFT           = 4,
-               GPIO1B2_MASK            = 3 << GPIO1B2_SHIFT,
-               GPIO1B2_GPIO            = 0,
-               GPIO1B2_UART1_SIN,
-               GPIO1B2_UART21_SIN,
-
-               GPIO1B1_SHIFT           = 2,
-               GPIO1B1_MASK            = 3 << GPIO1B1_SHIFT,
-               GPIO1B1_GPIO            = 0,
-               GPIO1B1_UART1_SOUT,
-               GPIO1B1_UART21_SOUT,
-       };
-       enum {
-               CON_IOMUX_UART2SEL_SHIFT= 8,
-               CON_IOMUX_UART2SEL_MASK = 1 << CON_IOMUX_UART2SEL_SHIFT,
-               CON_IOMUX_UART2SEL_2    = 0,
-               CON_IOMUX_UART2SEL_21,
-       };
-
-       /* Enable early UART2 channel 1 on the RK322x */
-       rk_clrsetreg(&grf->gpio1b_iomux,
-                    GPIO1B1_MASK | GPIO1B2_MASK,
-                    GPIO1B2_UART21_SIN << GPIO1B2_SHIFT |
-                    GPIO1B1_UART21_SOUT << GPIO1B1_SHIFT);
-       /* Set channel C as UART2 input */
-       rk_clrsetreg(&grf->con_iomux,
-                    CON_IOMUX_UART2SEL_MASK,
-                    CON_IOMUX_UART2SEL_21 << CON_IOMUX_UART2SEL_SHIFT);
-}
 
 #define SGRF_DDR_CON0 0x10150000
 void board_init_f(ulong dummy)
@@ -65,6 +24,7 @@ void board_init_f(ulong dummy)
        struct udevice *dev;
        int ret;
 
+#ifdef CONFIG_DEBUG_UART
        /*
         * Debug UART can be used from here if required:
         *
@@ -75,7 +35,7 @@ void board_init_f(ulong dummy)
         */
        debug_uart_init();
        printascii("SPL Init");
-
+#endif
        ret = spl_early_init();
        if (ret) {
                debug("spl_early_init() failed: %d\n", ret);
index 5659248178ab9d2e84d9b774b2418f970baad11d..6170c76f8b944297493bf87840fe62e03b2673a2 100644 (file)
@@ -8,10 +8,10 @@
 #include <ram.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/boot_mode.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/grf_rk322x.h>
+#include <asm/arch-rockchip/boot_mode.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk322x.h>
+#include <asm/arch-rockchip/periph.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
@@ -29,37 +29,10 @@ int board_late_init(void)
 
 int board_init(void)
 {
-#include <asm/arch/grf_rk322x.h>
+#include <asm/arch-rockchip/grf_rk322x.h>
        /* Enable early UART2 channel 1 on the RK322x */
 #define GRF_BASE       0x11000000
-       struct rk322x_grf * const grf = (void *)GRF_BASE;
-       enum {
-               GPIO1B2_SHIFT           = 4,
-               GPIO1B2_MASK            = 3 << GPIO1B2_SHIFT,
-               GPIO1B2_GPIO            = 0,
-               GPIO1B2_UART21_SIN,
-
-               GPIO1B1_SHIFT           = 2,
-               GPIO1B1_MASK            = 3 << GPIO1B1_SHIFT,
-               GPIO1B1_GPIO            = 0,
-               GPIO1B1_UART1_SOUT,
-               GPIO1B1_UART21_SOUT,
-       };
-       enum {
-               CON_IOMUX_UART2SEL_SHIFT= 8,
-               CON_IOMUX_UART2SEL_MASK = 1 << CON_IOMUX_UART2SEL_SHIFT,
-               CON_IOMUX_UART2SEL_2    = 0,
-               CON_IOMUX_UART2SEL_21,
-       };
-
-       rk_clrsetreg(&grf->gpio1b_iomux,
-                    GPIO1B1_MASK | GPIO1B2_MASK,
-                    GPIO1B2_UART21_SIN << GPIO1B2_SHIFT |
-                    GPIO1B1_UART21_SOUT << GPIO1B1_SHIFT);
-       /* Set channel C as UART2 input */
-       rk_clrsetreg(&grf->con_iomux,
-                    CON_IOMUX_UART2SEL_MASK,
-                    CON_IOMUX_UART2SEL_21 << CON_IOMUX_UART2SEL_SHIFT);
+       static struct rk322x_grf * const grf = (void *)GRF_BASE;
 
        /*
        * The integrated macphy is enabled by default, disable it
index dc8071e4f3b57c456671bae169b34e6d0bf8f722..8a1f95f785951cc332a6921ab60df0d9ec283224 100644 (file)
@@ -5,7 +5,7 @@ config TARGET_EVB_RK3229
        select BOARD_LATE_INIT
 
 config SYS_SOC
-       default "rockchip"
+       default "rk322x"
 
 config SYS_MALLOC_F_LEN
        default 0x400
index ecb3e8dfda1809be1b7e8616ca11271351b8fd2d..89b0fed692671be4322c731944dd505832fe99f7 100644 (file)
@@ -4,6 +4,6 @@
 # SPDX-License-Identifier:     GPL-2.0+
 #
 
-
 obj-y += clk_rk322x.o
+obj-y += rk322x.o
 obj-y += syscon_rk322x.o
index accf9443b004f0f7020c87a1d48d79791c29c569..958c7b82b92a0cdfa20fe88381338961713473f3 100644 (file)
@@ -6,8 +6,8 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk322x.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk322x.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
diff --git a/arch/arm/mach-rockchip/rk322x/rk322x.c b/arch/arm/mach-rockchip/rk322x/rk322x.c
new file mode 100644 (file)
index 0000000..e5250bc
--- /dev/null
@@ -0,0 +1,44 @@
+// SPDX-License-Identifier: GPL-2.0+
+/*
+ * (C) Copyright 2019 Rockchip Electronics Co., Ltd
+ */
+#include <asm/io.h>
+#include <asm/arch-rockchip/grf_rk322x.h>
+#include <asm/arch-rockchip/hardware.h>
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
+void board_debug_uart_init(void)
+{
+#define GRF_BASE       0x11000000
+       static struct rk322x_grf * const grf = (void *)GRF_BASE;
+       enum {
+               GPIO1B2_SHIFT           = 4,
+               GPIO1B2_MASK            = 3 << GPIO1B2_SHIFT,
+               GPIO1B2_GPIO            = 0,
+               GPIO1B2_UART1_SIN,
+               GPIO1B2_UART21_SIN,
+
+               GPIO1B1_SHIFT           = 2,
+               GPIO1B1_MASK            = 3 << GPIO1B1_SHIFT,
+               GPIO1B1_GPIO            = 0,
+               GPIO1B1_UART1_SOUT,
+               GPIO1B1_UART21_SOUT,
+       };
+       enum {
+               CON_IOMUX_UART2SEL_SHIFT = 8,
+               CON_IOMUX_UART2SEL_MASK = 1 << CON_IOMUX_UART2SEL_SHIFT,
+               CON_IOMUX_UART2SEL_2    = 0,
+               CON_IOMUX_UART2SEL_21,
+       };
+
+       /* Enable early UART2 channel 1 on the RK322x */
+       rk_clrsetreg(&grf->gpio1b_iomux,
+                    GPIO1B1_MASK | GPIO1B2_MASK,
+                    GPIO1B2_UART21_SIN << GPIO1B2_SHIFT |
+                    GPIO1B1_UART21_SOUT << GPIO1B1_SHIFT);
+       /* Set channel C as UART2 input */
+       rk_clrsetreg(&grf->con_iomux,
+                    CON_IOMUX_UART2SEL_MASK,
+                    CON_IOMUX_UART2SEL_21 << CON_IOMUX_UART2SEL_SHIFT);
+}
+#endif
index 9aa64f8f1f21c8805fd3f08c8652042e44d2d436..0d9dca8173cd466af636ad9be3554460fef76d13 100644 (file)
@@ -6,7 +6,7 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 static const struct udevice_id rk322x_syscon_ids[] = {
        { .compatible = "rockchip,rk3228-grf", .data = ROCKCHIP_SYSCON_GRF },
index 93c772184d330a59f14c5c2b17d8d6a3434d0335..d8d215db8a0b6ff381ffa126fd05e51fdd598652 100644 (file)
 #include <spl.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/bootrom.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/pmu_rk3288.h>
-#include <asm/arch/sdram.h>
-#include <asm/arch/sdram_common.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/bootrom.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/periph.h>
+#include <asm/arch-rockchip/pmu_rk3288.h>
+#include <asm/arch-rockchip/sdram.h>
+#include <asm/arch-rockchip/sdram_common.h>
+#include <asm/arch-rockchip/sys_proto.h>
+#include <asm/arch-rockchip/timer.h>
 #include <dm/pinctrl.h>
 #include <dm/root.h>
 #include <dm/test.h>
@@ -109,16 +109,7 @@ void board_init_f(ulong dummy)
        struct udevice *dev;
        int ret;
 
-       /* Example code showing how to enable the debug UART on RK3288 */
-#include <asm/arch/grf_rk3288.h>
-       /* Enable early UART on the RK3288 */
-#define GRF_BASE       0xff770000
-       struct rk3288_grf * const grf = (void *)GRF_BASE;
-
-       rk_clrsetreg(&grf->gpio7ch_iomux, GPIO7C7_MASK << GPIO7C7_SHIFT |
-                    GPIO7C6_MASK << GPIO7C6_SHIFT,
-                    GPIO7C7_UART2DBG_SOUT << GPIO7C7_SHIFT |
-                    GPIO7C6_UART2DBG_SIN << GPIO7C6_SHIFT);
+#ifdef CONFIG_DEBUG_UART
        /*
         * Debug UART can be used from here if required:
         *
@@ -129,6 +120,7 @@ void board_init_f(ulong dummy)
         */
        debug_uart_init();
        debug("\nspl:debug uart enabled in %s\n", __func__);
+#endif
        ret = spl_early_init();
        if (ret) {
                debug("spl_early_init() failed: %d\n", ret);
index 2aa63f515a71d4e001d5f73d01f1426b238a6746..787129bbaeaf1f4f8f3be7047c4baa17243a8cdd 100644 (file)
 #include <spl.h>
 #include <version.h>
 #include <asm/io.h>
-#include <asm/arch/bootrom.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3288.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/pmu_rk3288.h>
-#include <asm/arch/sys_proto.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/bootrom.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/sys_proto.h>
+#include <asm/arch-rockchip/timer.h>
 
-#define GRF_BASE               0xff770000
 void board_init_f(ulong dummy)
 {
        struct udevice *dev;
        int ret;
 
-       /* Example code showing how to enable the debug UART on RK3288 */
-       /* Enable early UART on the RK3288 */
-       struct rk3288_grf * const grf = (void *)GRF_BASE;
-
-       rk_clrsetreg(&grf->gpio7ch_iomux, GPIO7C7_MASK << GPIO7C7_SHIFT |
-                    GPIO7C6_MASK << GPIO7C6_SHIFT,
-                    GPIO7C7_UART2DBG_SOUT << GPIO7C7_SHIFT |
-                    GPIO7C6_UART2DBG_SIN << GPIO7C6_SHIFT);
+#ifdef CONFIG_DEBUG_UART
        /*
         * Debug UART can be used from here if required:
         *
@@ -41,7 +30,7 @@ void board_init_f(ulong dummy)
         * printascii("string");
         */
        debug_uart_init();
-
+#endif
        ret = spl_early_init();
        if (ret) {
                debug("spl_early_init() failed: %d\n", ret);
index 9c4f7f219f1359b8d96e1005d1c39ea23215d142..41e9786d46fa473658252ca9ee0d16c7a503b6bc 100644 (file)
@@ -9,12 +9,12 @@
 #include <ram.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3288.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/pmu_rk3288.h>
-#include <asm/arch/qos_rk3288.h>
-#include <asm/arch/boot_mode.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3288.h>
+#include <asm/arch-rockchip/periph.h>
+#include <asm/arch-rockchip/pmu_rk3288.h>
+#include <asm/arch-rockchip/qos_rk3288.h>
+#include <asm/arch-rockchip/boot_mode.h>
 #include <asm/gpio.h>
 #include <dm/pinctrl.h>
 #include <dt-bindings/clock/rk3288-cru.h>
@@ -321,7 +321,6 @@ int board_early_init_f(void)
 {
        const uintptr_t GRF_SOC_CON0 = 0xff770244;
        const uintptr_t GRF_SOC_CON2 = 0xff77024c;
-       struct udevice *pinctrl;
        struct udevice *dev;
        int ret;
 
@@ -335,18 +334,7 @@ int board_early_init_f(void)
                debug("CLK init failed: %d\n", ret);
                return ret;
        }
-       ret = uclass_get_device(UCLASS_PINCTRL, 0, &pinctrl);
-       if (ret) {
-               debug("%s: Cannot find pinctrl device\n", __func__);
-               return ret;
-       }
 
-       /* Enable debug UART */
-       ret = pinctrl_request_noflags(pinctrl, PERIPH_ID_UART_DBG);
-       if (ret) {
-               debug("%s: Failed to set up console UART\n", __func__);
-               return ret;
-       }
        rk_setreg(GRF_SOC_CON2, 1 << 0);
 
        /*
index bce80238813a768c1ed9e9ed564c0449869d9c58..50680ce606b4c22be1c012e836a31e2a662777db 100644 (file)
@@ -148,7 +148,7 @@ config ROCKCHIP_FAST_SPL
          and have the required PMIC code.
 
 config SYS_SOC
-       default "rockchip"
+       default "rk3288"
 
 config SYS_MALLOC_F_LEN
        default 0x0800
index 6ca2271869a652cf906efc9914e979b1924d3339..e64ee86f081f970ae5aadb34c7033c84f33c1d16 100644 (file)
@@ -7,8 +7,8 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3288.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3288.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
index a725abc5a5640cf0daba060dac7a9fc10c6dab28..7941ca68a641e2c134d8527ef116bb1eca7e1f21 100644 (file)
@@ -3,16 +3,31 @@
  * Copyright (c) 2016 Rockchip Electronics Co., Ltd
  */
 #include <asm/io.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
 
-#define GRF_SOC_CON2 0xff77024c
+#define GRF_BASE       0xff770000
 
 int arch_cpu_init(void)
 {
        /* We do some SoC one time setting here. */
+       struct rk3288_grf * const grf = (void *)GRF_BASE;
 
        /* Use rkpwm by default */
-       rk_setreg(GRF_SOC_CON2, 1 << 0);
+       rk_setreg(&grf->soc_con2, 1 << 0);
 
        return 0;
 }
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
+void board_debug_uart_init(void)
+{
+       /* Enable early UART on the RK3288 */
+       struct rk3288_grf * const grf = (void *)GRF_BASE;
+
+       rk_clrsetreg(&grf->gpio7ch_iomux, GPIO7C7_MASK << GPIO7C7_SHIFT |
+                    GPIO7C6_MASK << GPIO7C6_SHIFT,
+                    GPIO7C7_UART2DBG_SOUT << GPIO7C7_SHIFT |
+                    GPIO7C6_UART2DBG_SIN << GPIO7C6_SHIFT);
+}
+#endif
index 3bc80281c7355e7af96d71a23fd76575c6c3f2ad..dff2caa5981b058024fe259b898a8cc69b16a20c 100644 (file)
@@ -7,7 +7,7 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 static const struct udevice_id rk3288_syscon_ids[] = {
        { .compatible = "rockchip,rk3288-noc", .data = ROCKCHIP_SYSCON_NOC },
index 43afba243046877ee4d21e94daba2eb7258bf904..6c5c4303a356edb3f1d69144bc1de12436133da4 100644 (file)
@@ -13,7 +13,7 @@ config TARGET_EVB_RK3328
 endchoice
 
 config SYS_SOC
-       default "rockchip"
+       default "rk3328"
 
 config SYS_MALLOC_F_LEN
        default 0x0800
index e5c2ce5766fdc4a36d94ce01e40d756391a219a4..f64f0cbbe5600790c6ad84c5de1659e32aaac7b1 100644 (file)
@@ -5,8 +5,8 @@
 
 #include <common.h>
 #include <dm.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3328.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3328.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
index a519f5fb846f55dcfbbd15b8f9780b829d718c64..1cf829dc3435c4e638fd12f005d3a8f74b7d9d53 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include <common.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <asm/armv8/mmu.h>
 #include <asm/io.h>
 
index 28dd8cb20a53401cf201ef51ab15bd7d189dbcec..8a0eceb17877b15495ea4d56a91ff675ea3892a3 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include <common.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 #include <dm.h>
 #include <syscon.h>
 
index 230850ad6c57b49ec974613f7ea465b2e286f193..b055ed4aee00d09c39d4e70eb9546f0950c1a4ad 100644 (file)
@@ -9,17 +9,9 @@
 #include <ram.h>
 #include <spl.h>
 #include <asm/io.h>
-#include <asm/arch/cru_rk3368.h>
-#include <asm/arch/grf_rk3368.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/periph.h>
 #include <dm/pinctrl.h>
 
-void board_debug_uart_init(void)
-{
-}
-
 void board_init_f(ulong dummy)
 {
        struct udevice *pinctrl;
index f90a1fdca7252fcdd06b0d3ff4238a5b1ff894b3..dc65a021c8124f81eeaebcb4095210c960a4ce6a 100644 (file)
 #include <spl.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/bootrom.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3368.h>
-#include <asm/arch/grf_rk3368.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/bootrom.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3368.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/timer.h>
 
 /*
  * The SPL (and also the full U-Boot stage on the RK3368) will run in
@@ -79,42 +78,12 @@ static void sgrf_init(void)
        rk_clrreg(&cru->softrst_con[4], DMA2_SRST_REQ);
 }
 
-void board_debug_uart_init(void)
-{
-       /*
-        * N.B.: This is called before the device-model has been
-        *       initialised. For this reason, we can not access
-        *       the GRF address range using the syscon API.
-        */
-       struct rk3368_grf * const grf =
-               (struct rk3368_grf * const)0xff770000;
-
-       enum {
-               GPIO2D1_MASK            = GENMASK(3, 2),
-               GPIO2D1_GPIO            = 0,
-               GPIO2D1_UART0_SOUT      = (1 << 2),
-
-               GPIO2D0_MASK            = GENMASK(1, 0),
-               GPIO2D0_GPIO            = 0,
-               GPIO2D0_UART0_SIN       = (1 << 0),
-       };
-
-#if defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff180000)
-       /* Enable early UART0 on the RK3368 */
-       rk_clrsetreg(&grf->gpio2d_iomux,
-                    GPIO2D0_MASK, GPIO2D0_UART0_SIN);
-       rk_clrsetreg(&grf->gpio2d_iomux,
-                    GPIO2D1_MASK, GPIO2D1_UART0_SOUT);
-#endif
-}
-
 void board_init_f(ulong dummy)
 {
        struct udevice *dev;
        int ret;
 
-#define EARLY_UART
-#ifdef EARLY_UART
+#ifdef CONFIG_DEBUG_UART
        /*
         * Debug UART can be used from here if required:
         *
index 7c9b722b002309fd82a77c0a80197492f871ebdd..325572a7e4079a69053982a3d8ca6dc02dcd795e 100644 (file)
@@ -43,7 +43,7 @@ config TARGET_EVB_PX5
 endchoice
 
 config SYS_SOC
-       default "rockchip"
+       default "rk3368"
 
 source "board/theobroma-systems/lion_rk3368/Kconfig"
 source "board/rockchip/sheep_rk3368/Kconfig"
index 722160dfdc5d6a68b76d2dd1165c1f5563e2da69..55e5dd768a9ff2184578ce4595b91b3d19fc6a72 100644 (file)
@@ -7,8 +7,8 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3368.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3368.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
index 6d5d4cc760ae554a030faf43d4748a5584223404..1ed06c5352a07ebcbb3359249bd1840722b0e063 100644 (file)
@@ -7,9 +7,9 @@
 #include <common.h>
 #include <asm/armv8/mmu.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3368.h>
-#include <asm/arch/grf_rk3368.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3368.h>
+#include <asm/arch-rockchip/grf_rk3368.h>
 #include <syscon.h>
 
 DECLARE_GLOBAL_DATA_PTR;
@@ -96,3 +96,34 @@ int arch_early_init_r(void)
        return mcu_init();
 }
 #endif
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
+void board_debug_uart_init(void)
+{
+       /*
+        * N.B.: This is called before the device-model has been
+        *       initialised. For this reason, we can not access
+        *       the GRF address range using the syscon API.
+        */
+#if defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff180000)
+       struct rk3368_grf * const grf =
+               (struct rk3368_grf * const)0xff770000;
+
+       enum {
+               GPIO2D1_MASK            = GENMASK(3, 2),
+               GPIO2D1_GPIO            = 0,
+               GPIO2D1_UART0_SOUT      = (1 << 2),
+
+               GPIO2D0_MASK            = GENMASK(1, 0),
+               GPIO2D0_GPIO            = 0,
+               GPIO2D0_UART0_SIN       = (1 << 0),
+       };
+
+       /* Enable early UART0 on the RK3368 */
+       rk_clrsetreg(&grf->gpio2d_iomux,
+                    GPIO2D0_MASK, GPIO2D0_UART0_SIN);
+       rk_clrsetreg(&grf->gpio2d_iomux,
+                    GPIO2D1_MASK, GPIO2D1_UART0_SOUT);
+#endif
+}
+#endif
index c08ce437ea41590f02039b62d3be62079ce2c67a..4ba94f2e805091c3d6bd5c12b87ff08bb966231e 100644 (file)
@@ -8,7 +8,7 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 static const struct udevice_id rk3368_syscon_ids[] = {
        { .compatible = "rockchip,rk3368-grf",
index ccc136f388193c36a74eb68213dd2d499918525c..800ca800223b5c8a25374d165d6c4b9ffa289eb8 100644 (file)
 #include <spl_gpio.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/bootrom.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3399.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/sys_proto.h>
+#include <asm/arch-rockchip/bootrom.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk3399.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/periph.h>
+#include <asm/arch-rockchip/sys_proto.h>
 #include <dm/pinctrl.h>
 
 void board_return_to_bootrom(void)
@@ -127,53 +127,6 @@ void secure_timer_init(void)
        writel(TIMER_EN | TIMER_FMODE, TIMER_CHN10_BASE + TIMER_CONTROL_REG);
 }
 
-void board_debug_uart_init(void)
-{
-#define GRF_BASE       0xff770000
-#define GPIO0_BASE     0xff720000
-#define PMUGRF_BASE    0xff320000
-       struct rk3399_grf_regs * const grf = (void *)GRF_BASE;
-#ifdef CONFIG_TARGET_CHROMEBOOK_BOB
-       struct rk3399_pmugrf_regs * const pmugrf = (void *)PMUGRF_BASE;
-       struct rockchip_gpio_regs * const gpio = (void *)GPIO0_BASE;
-#endif
-
-#if defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff180000)
-       /* Enable early UART0 on the RK3399 */
-       rk_clrsetreg(&grf->gpio2c_iomux,
-                    GRF_GPIO2C0_SEL_MASK,
-                    GRF_UART0BT_SIN << GRF_GPIO2C0_SEL_SHIFT);
-       rk_clrsetreg(&grf->gpio2c_iomux,
-                    GRF_GPIO2C1_SEL_MASK,
-                    GRF_UART0BT_SOUT << GRF_GPIO2C1_SEL_SHIFT);
-#else
-# ifdef CONFIG_TARGET_CHROMEBOOK_BOB
-       rk_setreg(&grf->io_vsel, 1 << 0);
-
-       /*
-        * Let's enable these power rails here, we are already running the SPI
-        * Flash based code.
-        */
-       spl_gpio_output(gpio, GPIO(BANK_B, 2), 1);  /* PP1500_EN */
-       spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_B, 2), GPIO_PULL_NORMAL);
-
-       spl_gpio_output(gpio, GPIO(BANK_B, 4), 1);  /* PP3000_EN */
-       spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_B, 4), GPIO_PULL_NORMAL);
-#endif /* CONFIG_TARGET_CHROMEBOOK_BOB */
-
-       /* Enable early UART2 channel C on the RK3399 */
-       rk_clrsetreg(&grf->gpio4c_iomux,
-                    GRF_GPIO4C3_SEL_MASK,
-                    GRF_UART2DGBC_SIN << GRF_GPIO4C3_SEL_SHIFT);
-       rk_clrsetreg(&grf->gpio4c_iomux,
-                    GRF_GPIO4C4_SEL_MASK,
-                    GRF_UART2DBGC_SOUT << GRF_GPIO4C4_SEL_SHIFT);
-       /* Set channel C as UART2 input */
-       rk_clrsetreg(&grf->soc_con7,
-                    GRF_UART_DBG_SEL_MASK,
-                    GRF_UART_DBG_SEL_C << GRF_UART_DBG_SEL_SHIFT);
-#endif
-}
 
 void board_init_f(ulong dummy)
 {
@@ -183,8 +136,7 @@ void board_init_f(ulong dummy)
        struct rk3399_grf_regs *grf;
        int ret;
 
-#define EARLY_UART
-#ifdef EARLY_UART
+#ifdef CONFIG_DEBUG_UART
        debug_uart_init();
 
 # ifdef CONFIG_TARGET_CHROMEBOOK_BOB
index 137ec714c2e04800242e22d7c3c456effe4d4426..443c87cccce118a396d88a9029e2fd4406ac6418 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include <common.h>
-#include <asm/arch/boot_mode.h>
+#include <asm/arch-rockchip/boot_mode.h>
 
 int board_late_init(void)
 {
index 2408adb4206793de54eeb7277191fa4779083677..2c5c93c0b85916d9add22ba9d61632930f587940 100644 (file)
@@ -65,7 +65,7 @@ config TARGET_CHROMEBOOK_BOB
 endchoice
 
 config SYS_SOC
-       default "rockchip"
+       default "rk3399"
 
 config SYS_MALLOC_F_LEN
        default 0x0800
index 98f7482f79f1a89ac5d1fefacb718bf2029742f3..f0411c0a21ecadf00fb443bb181e57dc67ece590 100644 (file)
@@ -7,8 +7,8 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3399.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3399.h>
 
 static int rockchip_get_cruclk(struct udevice **devp)
 {
index d8467d73335e3f9c2f8064f2af04dae489f9c80f..a7ccd4f3ed2c6177045883ba9a69bc638f0209a4 100644 (file)
@@ -4,13 +4,17 @@
  */
 
 #include <common.h>
+#include <spl_gpio.h>
 #include <asm/armv8/mmu.h>
 #include <asm/io.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/gpio.h>
+#include <asm/arch-rockchip/grf_rk3399.h>
+#include <asm/arch-rockchip/hardware.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
 #define GRF_EMMCCORE_CON11 0xff77f02c
+#define GRF_BASE       0xff770000
 
 static struct mm_region rk3399_mem_map[] = {
        {
@@ -48,9 +52,60 @@ int dram_init_banksize(void)
 int arch_cpu_init(void)
 {
        /* We do some SoC one time setting here. */
+       struct rk3399_grf_regs * const grf = (void *)GRF_BASE;
 
        /* Emmc clock generator: disable the clock multipilier */
-       rk_clrreg(GRF_EMMCCORE_CON11, 0x0ff);
+       rk_clrreg(&grf->emmccore_con[11], 0x0ff);
 
        return 0;
 }
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
+void board_debug_uart_init(void)
+{
+#define GRF_BASE       0xff770000
+#define GPIO0_BASE     0xff720000
+#define PMUGRF_BASE    0xff320000
+       struct rk3399_grf_regs * const grf = (void *)GRF_BASE;
+#ifdef CONFIG_TARGET_CHROMEBOOK_BOB
+       struct rk3399_pmugrf_regs * const pmugrf = (void *)PMUGRF_BASE;
+       struct rockchip_gpio_regs * const gpio = (void *)GPIO0_BASE;
+#endif
+
+#if defined(CONFIG_DEBUG_UART_BASE) && (CONFIG_DEBUG_UART_BASE == 0xff180000)
+       /* Enable early UART0 on the RK3399 */
+       rk_clrsetreg(&grf->gpio2c_iomux,
+                    GRF_GPIO2C0_SEL_MASK,
+                    GRF_UART0BT_SIN << GRF_GPIO2C0_SEL_SHIFT);
+       rk_clrsetreg(&grf->gpio2c_iomux,
+                    GRF_GPIO2C1_SEL_MASK,
+                    GRF_UART0BT_SOUT << GRF_GPIO2C1_SEL_SHIFT);
+#else
+# ifdef CONFIG_TARGET_CHROMEBOOK_BOB
+       rk_setreg(&grf->io_vsel, 1 << 0);
+
+       /*
+        * Let's enable these power rails here, we are already running the SPI
+        * Flash based code.
+        */
+       spl_gpio_output(gpio, GPIO(BANK_B, 2), 1);  /* PP1500_EN */
+       spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_B, 2), GPIO_PULL_NORMAL);
+
+       spl_gpio_output(gpio, GPIO(BANK_B, 4), 1);  /* PP3000_EN */
+       spl_gpio_set_pull(&pmugrf->gpio0_p, GPIO(BANK_B, 4), GPIO_PULL_NORMAL);
+#endif /* CONFIG_TARGET_CHROMEBOOK_BOB */
+
+       /* Enable early UART2 channel C on the RK3399 */
+       rk_clrsetreg(&grf->gpio4c_iomux,
+                    GRF_GPIO4C3_SEL_MASK,
+                    GRF_UART2DGBC_SIN << GRF_GPIO4C3_SEL_SHIFT);
+       rk_clrsetreg(&grf->gpio4c_iomux,
+                    GRF_GPIO4C4_SEL_MASK,
+                    GRF_UART2DBGC_SOUT << GRF_GPIO4C4_SEL_SHIFT);
+       /* Set channel C as UART2 input */
+       rk_clrsetreg(&grf->soc_con7,
+                    GRF_UART_DBG_SEL_MASK,
+                    GRF_UART_DBG_SEL_C << GRF_UART_DBG_SEL_SHIFT);
+#endif
+}
+#endif
index 98f4be970f8255f3f4e06cfcdd80fcef0247a9f4..a8bb5b11e56e53ecd5e506a51e563ed49fd7f01b 100644 (file)
@@ -6,7 +6,7 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 static const struct udevice_id rk3399_syscon_ids[] = {
        { .compatible = "rockchip,rk3399-grf", .data = ROCKCHIP_SYSCON_GRF },
index e751f29d0f64611f1377e11505b4266331cf032a..f20e64f48ece7ceb6d937286ed174eb7afd87593 100644 (file)
@@ -4,7 +4,7 @@
  */
 
 #include <common.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/timer.h>
 #include <asm/io.h>
 #include <linux/types.h>
 
index 8883aeae7a4e068045d52c6c256e7b81a9f53a74..e3a63b80e134c083ebd4c0fd17067493288f4a94 100644 (file)
@@ -23,7 +23,7 @@ config TARGET_ELGIN_RV1108
          RV1108 ELGIN is a board based on the Rockchip RV1108.
 
 config SYS_SOC
-       default "rockchip"
+       default "rv1108"
 
 config SYS_MALLOC_F_LEN
        default 0x400
index 5f3705cc390da05ee6b69c9f1f2aeea5973e2893..58a7e889cc36d145232090ee5beaa45219c5799b 100644 (file)
@@ -7,8 +7,8 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rv1108.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rv1108.h>
 
 int rockchip_get_clk(struct udevice **devp)
 {
index 5a0f0a56114ed891230c889a88c60e848958763a..babdf5720b248eb992a2f254b06f3cbbfc43472e 100644 (file)
@@ -6,7 +6,7 @@
 #include <common.h>
 #include <dm.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 static const struct udevice_id rv1108_syscon_ids[] = {
        { .compatible = "rockchip,rv1108-grf", .data = ROCKCHIP_SYSCON_GRF },
index a27138083ab9e11d9afbab52cf19e3286c19f761..8684dbd4fa67fca7691a4f523e0ccc648ec2d53a 100644 (file)
@@ -7,7 +7,7 @@
 #include <dm.h>
 #include <ram.h>
 #include <asm/io.h>
-#include <asm/arch/sdram_common.h>
+#include <asm/arch-rockchip/sdram_common.h>
 #include <dm/uclass-internal.h>
 
 DECLARE_GLOBAL_DATA_PTR;
index 86d5d2b62b079aed4afafbb91d9d3c81f3154d4c..c3ca8cdf3babc4a241f14b7eec77a9d1fb3f57db 100644 (file)
@@ -39,6 +39,6 @@ void socfpga_init_security_policies(void);
 void socfpga_sdram_remap_zero(void);
 #endif
 
-void do_bridge_reset(int enable);
+void do_bridge_reset(int enable, unsigned int mask);
 
 #endif /* _MISC_H_ */
index dd58922cecc60dbe49e3e969d50f98313769ee09..5e490d182e39bcde20b5c1f5e600e4d0571d23dc 100644 (file)
@@ -9,6 +9,7 @@
 #include <dt-bindings/reset/altr,rst-mgr.h>
 
 void reset_deassert_peripherals_handoff(void);
+void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h);
 void socfpga_bridges_reset(int enable);
 
 struct socfpga_reset_manager {
index ec8339e04574462af171b97f0f35cdb9ef74d6c0..e1ea8eb73e33ecd004f8a99adfa68b7f27cff8c8 100644 (file)
@@ -126,17 +126,22 @@ int arch_cpu_init(void)
 #ifndef CONFIG_SPL_BUILD
 static int do_bridge(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
 {
-       if (argc != 2)
+       unsigned int mask = ~0;
+
+       if (argc < 2 || argc > 3)
                return CMD_RET_USAGE;
 
        argv++;
 
+       if (argc == 3)
+               mask = simple_strtoul(argv[1], NULL, 16);
+
        switch (*argv[0]) {
        case 'e':       /* Enable */
-               do_bridge_reset(1);
+               do_bridge_reset(1, mask);
                break;
        case 'd':       /* Disable */
-               do_bridge_reset(0);
+               do_bridge_reset(0, mask);
                break;
        default:
                return CMD_RET_USAGE;
@@ -145,10 +150,10 @@ static int do_bridge(cmd_tbl_t *cmdtp, int flag, int argc, char * const argv[])
        return 0;
 }
 
-U_BOOT_CMD(bridge, 2, 1, do_bridge,
+U_BOOT_CMD(bridge, 3, 1, do_bridge,
           "SoCFPGA HPS FPGA bridge control",
-          "enable  - Enable HPS-to-FPGA, FPGA-to-HPS, LWHPS-to-FPGA bridges\n"
-          "bridge disable - Enable HPS-to-FPGA, FPGA-to-HPS, LWHPS-to-FPGA bridges\n"
+          "enable [mask] - Enable HPS-to-FPGA, FPGA-to-HPS, LWHPS-to-FPGA bridges\n"
+          "bridge disable [mask] - Enable HPS-to-FPGA, FPGA-to-HPS, LWHPS-to-FPGA bridges\n"
           ""
 );
 
index 63b8c75d31d134053ac521c62bded724315d8485..2e2a40b65dc13dd7578150b795e630f3be9a8f16 100644 (file)
@@ -115,7 +115,7 @@ int print_cpuinfo(void)
 }
 #endif
 
-void do_bridge_reset(int enable)
+void do_bridge_reset(int enable, unsigned int mask)
 {
        if (enable)
                socfpga_reset_deassert_bridges_handoff();
index 9865f5b5b12065cf739e5669d7843ed51c6635ec..71547d81ab69a10f7c3402aa28d00ad9eea00ab4 100644 (file)
@@ -210,47 +210,26 @@ static struct socfpga_reset_manager *reset_manager_base =
 static struct socfpga_sdr_ctrl *sdr_ctrl =
        (struct socfpga_sdr_ctrl *)SDR_CTRLGRP_ADDRESS;
 
-static void socfpga_sdram_apply_static_cfg(void)
+void do_bridge_reset(int enable, unsigned int mask)
 {
-       const u32 applymask = 0x8;
-       u32 val = readl(&sdr_ctrl->static_cfg) | applymask;
-
-       /*
-        * SDRAM staticcfg register specific:
-        * When applying the register setting, the CPU must not access
-        * SDRAM. Luckily for us, we can abuse i-cache here to help us
-        * circumvent the SDRAM access issue. The idea is to make sure
-        * that the code is in one full i-cache line by branching past
-        * it and back. Once it is in the i-cache, we execute the core
-        * of the code and apply the register settings.
-        *
-        * The code below uses 7 instructions, while the Cortex-A9 has
-        * 32-byte cachelines, thus the limit is 8 instructions total.
-        */
-       asm volatile(
-               ".align 5                       \n"
-               "       b       2f              \n"
-               "1:     str     %0,     [%1]    \n"
-               "       dsb                     \n"
-               "       isb                     \n"
-               "       b       3f              \n"
-               "2:     b       1b              \n"
-               "3:     nop                     \n"
-       : : "r"(val), "r"(&sdr_ctrl->static_cfg) : "memory", "cc");
-}
+       int i;
 
-void do_bridge_reset(int enable)
-{
        if (enable) {
+               socfpga_bridges_set_handoff_regs(!(mask & BIT(0)),
+                                                !(mask & BIT(1)),
+                                                !(mask & BIT(2)));
+               for (i = 0; i < 2; i++) {       /* Reload SW setting cache */
+                       iswgrp_handoff[i] =
+                               readl(&sysmgr_regs->iswgrp_handoff[i]);
+               }
+
                writel(iswgrp_handoff[2], &sysmgr_regs->fpgaintfgrp_module);
-               socfpga_sdram_apply_static_cfg();
                writel(iswgrp_handoff[3], &sdr_ctrl->fpgaport_rst);
                writel(iswgrp_handoff[0], &reset_manager_base->brg_mod_reset);
                writel(iswgrp_handoff[1], &nic301_regs->remap);
        } else {
                writel(0, &sysmgr_regs->fpgaintfgrp_module);
                writel(0, &sdr_ctrl->fpgaport_rst);
-               socfpga_sdram_apply_static_cfg();
                writel(0, &reset_manager_base->brg_mod_reset);
                writel(1, &nic301_regs->remap);
        }
index 113eace650edcfe12f3afd2566868362d11ab8ea..60c96090ce1c47ad2151e23d1986811f3006f38b 100644 (file)
@@ -150,7 +150,7 @@ int arch_early_init_r(void)
        return 0;
 }
 
-void do_bridge_reset(int enable)
+void do_bridge_reset(int enable, unsigned int mask)
 {
        socfpga_bridges_reset(enable);
 }
index 25baef79bc2660a4d7568fe0dd5ab8f09b4477b4..89a384b59c84c085f3202e4dfc2004996999009e 100644 (file)
@@ -73,6 +73,28 @@ void reset_deassert_peripherals_handoff(void)
 #define L3REGS_REMAP_HPS2FPGA_MASK     0x08
 #define L3REGS_REMAP_OCRAM_MASK                0x01
 
+void socfpga_bridges_set_handoff_regs(bool h2f, bool lwh2f, bool f2h)
+{
+       u32 brgmask = 0x0;
+       u32 l3rmask = L3REGS_REMAP_OCRAM_MASK;
+
+       if (h2f)
+               brgmask |= BIT(0);
+       else
+               l3rmask |= L3REGS_REMAP_HPS2FPGA_MASK;
+
+       if (lwh2f)
+               brgmask |= BIT(1);
+       else
+               l3rmask |= L3REGS_REMAP_LWHPS2FPGA_MASK;
+
+       if (f2h)
+               brgmask |= BIT(2);
+
+       writel(brgmask, &sysmgr_regs->iswgrp_handoff[0]);
+       writel(l3rmask, &sysmgr_regs->iswgrp_handoff[1]);
+}
+
 void socfpga_bridges_reset(int enable)
 {
        const u32 l3mask = L3REGS_REMAP_LWHPS2FPGA_MASK |
@@ -81,10 +103,10 @@ void socfpga_bridges_reset(int enable)
 
        if (enable) {
                /* brdmodrst */
-               writel(0xffffffff, &reset_manager_base->brg_mod_reset);
+               writel(0x7, &reset_manager_base->brg_mod_reset);
+               writel(L3REGS_REMAP_OCRAM_MASK, SOCFPGA_L3REGS_ADDRESS);
        } else {
-               writel(0, &sysmgr_regs->iswgrp_handoff[0]);
-               writel(l3mask, &sysmgr_regs->iswgrp_handoff[1]);
+               socfpga_bridges_set_handoff_regs(false, false, false);
 
                /* Check signal from FPGA. */
                if (!fpgamgr_test_fpga_ready()) {
index 9dd0afb4bcacd905e2287a52acdd011d09182b26..bd2a9fe5aed644ea8290375b9aa4941213a7fb2a 100644 (file)
@@ -175,8 +175,9 @@ void board_init_f(ulong dummy)
        sysmgr_pinmux_init();
        sysmgr_config_warmrstcfgio(0);
 
-       /* De-assert reset for bridges based on handoff */
-       socfpga_bridges_reset(0);
+       /* De-assert reset for peripherals and bridges based on handoff */
+       reset_deassert_peripherals_handoff();
+       socfpga_bridges_set_handoff_regs(true, true, true);
 
        debug("Unfreezing/Thaw all I/O banks\n");
        /* unfreeze / thaw all IO banks */
@@ -205,7 +206,4 @@ void board_init_f(ulong dummy)
                debug("DRAM init failed: %d\n", ret);
                hang();
        }
-
-       if (!socfpga_is_booting_from_fpga())
-               socfpga_bridges_reset(1);
 }
index 8a4872343b65d634edbc3751889e4372324716f4..3818e3752a00a0426f7e1395d6defc8c89da2cdf 100644 (file)
 #include <fdt_support.h>
 #include <environment.h>
 
-#ifdef CONFIG_WDT_ARMADA_37XX
-#include <wdt.h>
-#endif
-
 #include "mox_sp.h"
 
 #define MAX_MOX_MODULES                10
index 4c08f810a240712245cad9e2f1adfe33c6b5c537..ad6e29021e882755cb96e85d7cdd2fe3d1ca6edf 100644 (file)
 #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_init.h"
 #include <../serdes/a38x/high_speed_env_spec.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
-#define OMNIA_I2C_EEPROM_DM_NAME       "i2c@11000->i2cmux@70->i2c@0"
-#define OMNIA_I2C_EEPROM               0x54
-#define OMNIA_I2C_EEPROM_CONFIG_ADDR   0x0
-#define OMNIA_I2C_EEPROM_ADDRLEN       2
+#define OMNIA_I2C_BUS_NAME             "i2c@11000->i2cmux@70->i2c@0"
+
+#define OMNIA_I2C_MCU_CHIP_ADDR                0x2a
+#define OMNIA_I2C_MCU_CHIP_LEN         1
+
+#define OMNIA_I2C_EEPROM_CHIP_ADDR     0x54
+#define OMNIA_I2C_EEPROM_CHIP_LEN      2
 #define OMNIA_I2C_EEPROM_MAGIC         0x0341a034
 
-#define OMNIA_I2C_MCU_DM_NAME          "i2c@11000->i2cmux@70->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
+enum mcu_commands {
+       CMD_GET_STATUS_WORD     = 0x01,
+       CMD_GET_RESET           = 0x09,
+       CMD_WATCHDOG_STATE      = 0x0b,
+};
+
+enum status_word_bits {
+       CARD_DET_STSBIT         = 0x0010,
+       MSATA_IND_STSBIT        = 0x0020,
+};
 
 #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"
@@ -87,48 +85,97 @@ static struct serdes_map board_serdes_map_sata[] = {
        {SGMII2, SERDES_SPEED_1_25_GBPS, SERDES_DEFAULT_MODE, 0, 0}
 };
 
-static bool omnia_detect_sata(void)
+static struct udevice *omnia_get_i2c_chip(const char *name, uint addr,
+                                         uint offset_len)
 {
        struct udevice *bus, *dev;
-       int ret, retry = 3;
-       u16 mode;
-
-       puts("SERDES0 card detect: ");
+       int ret;
 
-       if (uclass_get_device_by_name(UCLASS_I2C, OMNIA_I2C_MCU_DM_NAME, &bus)) {
-               puts("Cannot find MCU bus!\n");
-               return false;
+       ret = uclass_get_device_by_name(UCLASS_I2C, OMNIA_I2C_BUS_NAME, &bus);
+       if (ret) {
+               printf("Cannot get I2C bus %s: uclass_get_device_by_name failed: %i\n",
+                      OMNIA_I2C_BUS_NAME, ret);
+               return NULL;
        }
 
-       ret = i2c_get_chip(bus, OMNIA_I2C_MCU, 1, &dev);
+       ret = i2c_get_chip(bus, addr, offset_len, &dev);
        if (ret) {
-               puts("Cannot get MCU chip!\n");
-               return false;
+               printf("Cannot get %s I2C chip: i2c_get_chip failed: %i\n",
+                      name, ret);
+               return NULL;
        }
 
-       for (; retry > 0; --retry) {
-               ret = dm_i2c_read(dev, OMNIA_I2C_MCU_ADDR_STATUS, (uchar *) &mode, 2);
-               if (!ret)
-                       break;
-       }
+       return dev;
+}
+
+static int omnia_mcu_read(u8 cmd, void *buf, int len)
+{
+       struct udevice *chip;
+
+       chip = omnia_get_i2c_chip("MCU", OMNIA_I2C_MCU_CHIP_ADDR,
+                                 OMNIA_I2C_MCU_CHIP_LEN);
+       if (!chip)
+               return -ENODEV;
+
+       return dm_i2c_read(chip, cmd, buf, len);
+}
 
-       if (!retry) {
-               puts("I2C read failed! Default PEX\n");
+#ifndef CONFIG_SPL_BUILD
+static int omnia_mcu_write(u8 cmd, const void *buf, int len)
+{
+       struct udevice *chip;
+
+       chip = omnia_get_i2c_chip("MCU", OMNIA_I2C_MCU_CHIP_ADDR,
+                                 OMNIA_I2C_MCU_CHIP_LEN);
+       if (!chip)
+               return -ENODEV;
+
+       return dm_i2c_write(chip, cmd, buf, len);
+}
+
+static bool disable_mcu_watchdog(void)
+{
+       int ret;
+
+       puts("Disabling MCU watchdog... ");
+
+       ret = omnia_mcu_write(CMD_WATCHDOG_STATE, "\x00", 1);
+       if (ret) {
+               printf("omnia_mcu_write failed: %i\n", ret);
                return false;
        }
 
-       if (!(mode & OMNIA_I2C_MCU_CARDDET)) {
-               puts("NONE\n");
+       puts("disabled\n");
+
+       return true;
+}
+#endif
+
+static bool omnia_detect_sata(void)
+{
+       int ret;
+       u16 stsword;
+
+       puts("MiniPCIe/mSATA card detection... ");
+
+       ret = omnia_mcu_read(CMD_GET_STATUS_WORD, &stsword, sizeof(stsword));
+       if (ret) {
+               printf("omnia_mcu_read failed: %i, defaulting to MiniPCIe card\n",
+                      ret);
                return false;
        }
 
-       if (mode & OMNIA_I2C_MCU_SATA) {
-               puts("SATA\n");
-               return true;
-       } else {
-               puts("PEX\n");
+       if (!(stsword & CARD_DET_STSBIT)) {
+               puts("none\n");
                return false;
        }
+
+       if (stsword & MSATA_IND_STSBIT)
+               puts("mSATA\n");
+       else
+               puts("MiniPCIe\n");
+
+       return stsword & MSATA_IND_STSBIT ? true : false;
 }
 
 int hws_board_topology_load(struct serdes_map **serdes_map_array, u8 *count)
@@ -153,48 +200,63 @@ struct omnia_eeprom {
 
 static bool omnia_read_eeprom(struct omnia_eeprom *oep)
 {
-       struct udevice *bus, *dev;
-       int ret, crc, retry = 3;
+       struct udevice *chip;
+       u32 crc;
+       int ret;
+
+       chip = omnia_get_i2c_chip("EEPROM", OMNIA_I2C_EEPROM_CHIP_ADDR,
+                                 OMNIA_I2C_EEPROM_CHIP_LEN);
 
-       if (uclass_get_device_by_name(UCLASS_I2C, OMNIA_I2C_EEPROM_DM_NAME, &bus)) {
-               puts("Cannot find EEPROM bus\n");
+       if (!chip)
                return false;
-       }
 
-       ret = i2c_get_chip(bus, OMNIA_I2C_EEPROM, OMNIA_I2C_EEPROM_ADDRLEN, &dev);
+       ret = dm_i2c_read(chip, 0, (void *)oep, sizeof(*oep));
        if (ret) {
-               puts("Cannot get EEPROM chip\n");
+               printf("dm_i2c_read failed: %i, cannot read EEPROM\n", ret);
                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 (oep->magic != OMNIA_I2C_EEPROM_MAGIC) {
+               printf("bad EEPROM magic number (%08x, should be %08x)\n",
+                      oep->magic, OMNIA_I2C_EEPROM_MAGIC);
+               return false;
        }
 
-       if (!retry) {
-               puts("I2C EEPROM read failed!\n");
+       crc = crc32(0, (void *)oep, sizeof(*oep) - 4);
+       if (crc != oep->crc) {
+               printf("bad EEPROM CRC (stored %08x, computed %08x)\n",
+                      oep->crc, crc);
                return false;
        }
 
        return true;
 }
 
+static int omnia_get_ram_size_gb(void)
+{
+       static int ram_size;
+       struct omnia_eeprom oep;
+
+       if (!ram_size) {
+               /* Get the board config from EEPROM */
+               if (omnia_read_eeprom(&oep)) {
+                       debug("Memory config in EEPROM: 0x%02x\n", oep.ramsize);
+
+                       if (oep.ramsize == 0x2)
+                               ram_size = 2;
+                       else
+                               ram_size = 1;
+               } else {
+                       /* Hardcoded fallback */
+                       puts("Memory config from EEPROM read failed!\n");
+                       puts("Falling back to default 1 GiB!\n");
+                       ram_size = 1;
+               }
+       }
+
+       return ram_size;
+}
+
 /*
  * 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
@@ -246,37 +308,10 @@ static struct mv_ddr_topology_map board_topology_map_2g = {
 
 struct mv_ddr_topology_map *mv_ddr_topology_map_get(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)
+       if (omnia_get_ram_size_gb() == 2)
                return &board_topology_map_2g;
-
-       return &board_topology_map_1g;
+       else
+               return &board_topology_map_1g;
 }
 
 #ifndef CONFIG_SPL_BUILD
@@ -293,12 +328,47 @@ static int set_regdomain(void)
        printf("Regdomain set to %s\n", rd);
        return env_set("regdomain", rd);
 }
+
+/*
+ * default factory reset bootcommand on Omnia first sets all the front LEDs
+ * to green and then tries to load the rescue image from SPI flash memory and
+ * boot it
+ */
+#define OMNIA_FACTORY_RESET_BOOTCMD \
+       "i2c dev 2; " \
+       "i2c mw 0x2a.1 0x3 0x1c 1; " \
+       "i2c mw 0x2a.1 0x4 0x1c 1; " \
+       "mw.l 0x01000000 0x00ff000c; " \
+       "i2c write 0x01000000 0x2a.1 0x5 4 -s; " \
+       "setenv bootargs \"$bootargs omniarescue=$omnia_reset\"; " \
+       "sf probe; " \
+       "sf read 0x1000000 0x100000 0x700000; " \
+       "bootm 0x1000000; " \
+       "bootz 0x1000000"
+
+static void handle_reset_button(void)
+{
+       int ret;
+       u8 reset_status;
+
+       ret = omnia_mcu_read(CMD_GET_RESET, &reset_status, 1);
+       if (ret) {
+               printf("omnia_mcu_read failed: %i, reset status unknown!\n",
+                      ret);
+               return;
+       }
+
+       env_set_ulong("omnia_reset", reset_status);
+
+       if (reset_status) {
+               printf("RESET button was pressed, overwriting bootcmd!\n");
+               env_set("bootcmd", OMNIA_FACTORY_RESET_BOOTCMD);
+       }
+}
 #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);
@@ -321,59 +391,16 @@ int board_early_init_f(void)
        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.
-        * Note: that would be redundant once Turris Omnia migrates to DM_I2C,
-        * because the mvtwsi driver includes equivalent code.
-        */
-       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
-
 int board_init(void)
 {
-       /* adress of boot parameters */
+       /* address of boot parameters */
        gd->bd->bi_boot_params = mvebu_sdram_bar(0) + 0x100;
 
 #ifndef CONFIG_SPL_BUILD
-       if (disable_mcu_watchdog())
-               puts("Disabled MCU startup watchdog.\n");
-
-       set_regdomain();
+       disable_mcu_watchdog();
 #endif
 
        return 0;
@@ -383,17 +410,17 @@ int board_late_init(void)
 {
 #ifndef CONFIG_SPL_BUILD
        set_regdomain();
+       handle_reset_button();
 #endif
 
        return 0;
 }
 
-#ifdef CONFIG_ATSHA204A
 static struct udevice *get_atsha204a_dev(void)
 {
-       static struct udevice *dev = NULL;
+       static struct udevice *dev;
 
-       if (dev != NULL)
+       if (dev)
                return dev;
 
        if (uclass_get_device_by_name(UCLASS_MISC, "atsha204a@64", &dev)) {
@@ -403,14 +430,12 @@ static struct udevice *get_atsha204a_dev(void)
 
        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) {
@@ -420,13 +445,13 @@ int checkboard(void)
 
                err = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
                                     OMNIA_ATSHA204_OTP_VERSION,
-                                    (u8 *) &version_num);
+                                    (u8 *)&version_num);
                if (err)
                        goto out;
 
                err = atsha204a_read(dev, ATSHA204A_ZONE_OTP, false,
                                     OMNIA_ATSHA204_OTP_SERIAL,
-                                    (u8 *) &serial_num);
+                                    (u8 *)&serial_num);
                if (err)
                        goto out;
 
@@ -434,13 +459,13 @@ int checkboard(void)
        }
 
 out:
-#endif
-
+       printf("Turris Omnia:\n");
+       printf("  RAM size: %i MiB\n", omnia_get_ram_size_gb() * 1024);
        if (err)
-               printf("Board: Turris Omnia (ver N/A). SN: N/A\n");
+               printf("  Serial Number: unknown\n");
        else
-               printf("Board: Turris Omnia SNL %08X%08X\n",
-                      be32_to_cpu(version_num), be32_to_cpu(serial_num));
+               printf("  Serial Number: %08X%08X\n", be32_to_cpu(version_num),
+                      be32_to_cpu(serial_num));
 
        return 0;
 }
@@ -458,7 +483,6 @@ static void increment_mac(u8 *mac)
 
 int misc_init_r(void)
 {
-#ifdef CONFIG_ATSHA204A
        int err;
        struct udevice *dev = get_atsha204a_dev();
        u8 mac0[4], mac1[4], mac[6];
@@ -503,8 +527,6 @@ int misc_init_r(void)
                eth_env_set_enetaddr("eth2addr", mac);
 
 out:
-#endif
-
        return 0;
 }
 
index 3abc51441299e7c01282bf460f4a4799e51c89f9..0de1f4243ebd326de1a763e6b54320ba3b7b98a6 100644 (file)
@@ -7,8 +7,8 @@
 #include <common.h>
 #include <asm/io.h>
 #include <fdtdec.h>
-#include <asm/arch/grf_rv1108.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/grf_rv1108.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <asm/gpio.h>
 
 DECLARE_GLOBAL_DATA_PTR;
index d5acc4fe27f785ca03e4e70f1e186219866106cb..8c606463e45528f50781569d24a5f4b53d57fc80 100644 (file)
@@ -6,8 +6,8 @@
 #include <common.h>
 #include <dm.h>
 #include <asm/io.h>
-#include <asm/arch/uart.h>
-#include <asm/arch/sdram_rk3036.h>
+#include <asm/arch-rockchip/uart.h>
+#include <asm/arch-rockchip/sdram_rk3036.h>
 
 void get_ddr_config(struct rk3036_ddr_config *config)
 {
index 63c84fccfe84c472191e4db877784e432037b3bc..c64c62f7b0f5586b4c85e5d2ec3695dcda96d349 100644 (file)
@@ -6,5 +6,5 @@
 #include <common.h>
 #include <dm.h>
 #include <asm/io.h>
-#include <asm/arch/uart.h>
+#include <asm/arch-rockchip/uart.h>
 
index caad30641ec31eb41e9232419afab35a1f18366e..07ee8ce92c9e930a59c402632983ca0dba279e2e 100644 (file)
@@ -5,3 +5,10 @@ F:      board/rockchip/evb_rk3399
 F:      include/configs/evb_rk3399.h
 F:      configs/evb-rk3399_defconfig
 F:      configs/firefly-rk3399_defconfig
+
+ORANGEPI-RK3399
+M:     Jagan Teki <jagan@amarulasolutions.com>
+S:     Maintained
+F:     configs/orangepi-rk3399_defconfig
+F:     arch/arm/dts/rk3399-u-boot.dtsi
+F:     arch/arm/dts/rk3399-orangepi-u-boot.dtsi
index 3e9e83f3ad06c271d1ceb4f7e3b65dd86b98b659..bf2ad98c473d6f23650d6e39e61b7b6824eaadca 100644 (file)
@@ -7,7 +7,7 @@
 #include <dm.h>
 #include <dm/pinctrl.h>
 #include <dm/uclass-internal.h>
-#include <asm/arch/periph.h>
+#include <asm/arch-rockchip/periph.h>
 #include <power/regulator.h>
 #include <spl.h>
 
index 107929ee8a884b5f31860c1a233e9de81c0f94e1..457b110cd52c1faf8ccde74934a0208f1bcb0e05 100644 (file)
@@ -7,8 +7,8 @@
 #include <common.h>
 #include <asm/io.h>
 #include <fdtdec.h>
-#include <asm/arch/grf_rv1108.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/grf_rv1108.h>
+#include <asm/arch-rockchip/hardware.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
index 3a2f08354f59e34521688ea7582898cf347ea497..2faeab9baf518245b42fe26e08fa5ed3d11209cf 100644 (file)
@@ -6,8 +6,8 @@
 #include <common.h>
 #include <dm.h>
 #include <asm/io.h>
-#include <asm/arch/uart.h>
-#include <asm/arch/sdram_rk3036.h>
+#include <asm/arch-rockchip/uart.h>
+#include <asm/arch-rockchip/sdram_rk3036.h>
 #include <asm/gpio.h>
 
 void get_ddr_config(struct rk3036_ddr_config *config)
index ea22cb985fe1974644de05ad0e2b5e8a32870208..9bb93c7d16696f8d67c453ee978963c733c7d273 100644 (file)
@@ -4,8 +4,8 @@
  */
 #include <common.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3368.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk3368.h>
 #include <syscon.h>
 
 int mach_cpu_init(void)
index cf71e4ce561138996486a701dbc7b0130492512e..28816bc1a0c1b7ecd7ea83010dfa874d36887c8f 100644 (file)
@@ -9,4 +9,20 @@ config SYS_VENDOR
 config SYS_CONFIG_NAME
        default "taurus"
 
+choice
+       prompt "Board Type AXM/TAURUS"
+       default BOARD_AXM
+
+config BOARD_AXM
+       bool "AXM board type"
+       help
+         Select this, if you want to build for AXM board.
+
+config BOARD_TAURUS
+       bool "TAURUS board type"
+       help
+         Select this, if you want to build for TAURUS board.
+
+endchoice
+
 endif
index 8396ce502b0f90e0e58340d67cf6a24fd55d1ee9..6ea97eb4e87ccb8ab982096d709799a3bd9ba074 100644 (file)
@@ -197,11 +197,11 @@ void mem_init(void)
 
        /* Mirrors at A15 on ATMEL G20 SDRAM Controller with 64MB*/
        if (ram_size == 0x800) {
-               printf("\n\r 64MB");
+               printf("\n\r 64MB\n");
                sdramc_configure(AT91_SDRAMC_NC_9);
        } else {
                /* Size already initialized */
-               printf("\n\r 128MB");
+               printf("\n\r 128MB\n");
        }
 }
 #endif
@@ -282,24 +282,6 @@ int board_early_init_f(void)
        return 0;
 }
 
-/* FIXME gpio code here need to handle through DM_GPIO */
-#ifndef CONFIG_DM_SPI
-int spi_cs_is_valid(unsigned int bus, unsigned int cs)
-{
-       return bus == 0 && cs == 0;
-}
-
-void spi_cs_activate(struct spi_slave *slave)
-{
-       at91_set_gpio_value(TAURUS_SPI_CS_PIN, 0);
-}
-
-void spi_cs_deactivate(struct spi_slave *slave)
-{
-       at91_set_gpio_value(TAURUS_SPI_CS_PIN, 1);
-}
-#endif
-
 #ifdef CONFIG_USB_GADGET_AT91
 #include <linux/usb/at91_udc.h>
 
@@ -347,17 +329,6 @@ int dram_init(void)
        return 0;
 }
 
-#ifndef CONFIG_DM_ETH
-int board_eth_init(bd_t *bis)
-{
-       int rc = 0;
-#ifdef CONFIG_MACB
-       rc = macb_eth_initialize(0, (void *)ATMEL_BASE_EMAC0, 0x00);
-#endif
-       return rc;
-}
-#endif
-
 #if !defined(CONFIG_SPL_BUILD)
 #if defined(CONFIG_BOARD_AXM)
 /*
index e207535df05361a46e9c3490c25b71c371ad73d7..6cd5a5f18efd78b78ca93a32be41962f780dd250 100644 (file)
@@ -6,9 +6,9 @@
 #include <dm.h>
 #include <ram.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3368.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk3368.h>
+#include <asm/arch-rockchip/timer.h>
 #include <syscon.h>
 
 int mach_cpu_init(void)
index 573e691457f75f0bed8cc72fffe52309ef85f336..c6b509c109c560b9c65483c41e34f0fbe05e94de 100644 (file)
 #include <asm/io.h>
 #include <asm/gpio.h>
 #include <asm/setup.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3399.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/grf_rk3399.h>
-#include <asm/arch/periph.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3399.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/grf_rk3399.h>
+#include <asm/arch-rockchip/periph.h>
 #include <power/regulator.h>
 #include <u-boot/sha256.h>
 
index 04f4b8e69347d49e7fde115f9339b4cb35835a49..37a599768b1054ceea478656db38c4fee00ff133 100644 (file)
@@ -399,7 +399,6 @@ void enable_board_pin_mux(void)
                        configure_module_pin_mux(mii1_pin_mux);
                }
                /* Beaglebone LT pinmux */
-               configure_module_pin_mux(mii1_pin_mux);
                configure_module_pin_mux(mmc0_pin_mux);
 #if defined(CONFIG_NAND) && defined(CONFIG_EMMC_BOOT)
                configure_module_pin_mux(nand_pin_mux);
index d3775b22191b5e373812e412f2567bcae5de808e..0f5ef3a09a434b290012530c9f639ed07d9e5f39 100644 (file)
@@ -7,7 +7,7 @@
 #include <dm.h>
 #include <dm/pinctrl.h>
 #include <dm/uclass-internal.h>
-#include <asm/arch/periph.h>
+#include <asm/arch-rockchip/periph.h>
 #include <power/regulator.h>
 #include <spl.h>
 
index efaa548be4d84dd41bf7f4ee3ef78baf03e66ca3..f1d7d8bc6634f4b1624959667457bcd0bbb21372 100644 (file)
@@ -297,18 +297,21 @@ static efi_status_t efi_install_fdt(const char *fdt_opt)
 static efi_status_t do_bootefi_exec(efi_handle_t handle)
 {
        efi_status_t ret;
+       efi_uintn_t exit_data_size = 0;
+       u16 *exit_data = NULL;
 
        /* Transfer environment variable as load options */
        ret = set_load_options(handle, "bootargs");
        if (ret != EFI_SUCCESS)
                return ret;
 
-       /* we don't support much: */
-       env_set("efi_8be4df61-93ca-11d2-aa0d-00e098032b8c_OsIndicationsSupported",
-               "{ro,boot}(blob)0000000000000000");
-
        /* Call our payload! */
-       ret = EFI_CALL(efi_start_image(handle, NULL, NULL));
+       ret = EFI_CALL(efi_start_image(handle, &exit_data_size, &exit_data));
+       printf("## Application terminated, r = %lu\n", ret & ~EFI_ERROR_MASK);
+       if (ret && exit_data) {
+               printf("## %ls\n", exit_data);
+               efi_free_pool(exit_data);
+       }
 
        efi_restore_gd();
 
@@ -361,7 +364,6 @@ static int do_efibootmgr(const char *fdt_opt)
        }
 
        ret = do_bootefi_exec(handle);
-       printf("## Application terminated, r = %lu\n", ret & ~EFI_ERROR_MASK);
 
        if (ret != EFI_SUCCESS)
                return CMD_RET_FAILURE;
@@ -476,7 +478,6 @@ static int do_bootefi_image(const char *image_opt, const char *fdt_opt)
                goto out;
 
        ret = do_bootefi_exec(handle);
-       printf("## Application terminated, r = %lu\n", ret & ~EFI_ERROR_MASK);
 
 out:
        if (mem_handle)
index a40c4f4be286ba49142719a00cae482e22006e33..c4ac9dd634e2628fe19472a47fd435d0114fae7a 100644 (file)
@@ -11,6 +11,7 @@
 #include <efi_loader.h>
 #include <environment.h>
 #include <exports.h>
+#include <hexdump.h>
 #include <malloc.h>
 #include <search.h>
 #include <linux/ctype.h>
@@ -545,7 +546,10 @@ static int do_efi_boot_add(cmd_tbl_t *cmdtp, int flag,
                                + sizeof(struct efi_device_path); /* for END */
 
        /* optional data */
-       lo.optional_data = (u8 *)(argc == 6 ? "" : argv[6]);
+       if (argc < 6)
+               lo.optional_data = NULL;
+       else
+               lo.optional_data = (const u8 *)argv[6];
 
        size = efi_serialize_load_option(&lo, (u8 **)&data);
        if (!size) {
@@ -615,12 +619,13 @@ static int do_efi_boot_rm(cmd_tbl_t *cmdtp, int flag,
 /**
  * show_efi_boot_opt_data() - dump UEFI load option
  *
- * @id:                Load option number
- * @data:      Value of UEFI load option variable
+ * @id:                load option number
+ * @data:      value of UEFI load option variable
+ * @size:      size of the boot option
  *
  * Decode the value of UEFI load option variable and print information.
  */
-static void show_efi_boot_opt_data(int id, void *data)
+static void show_efi_boot_opt_data(int id, void *data, size_t size)
 {
        struct efi_load_option lo;
        char *label, *p;
@@ -638,7 +643,7 @@ static void show_efi_boot_opt_data(int id, void *data)
        utf16_utf8_strncpy(&p, lo.label, label_len16);
 
        printf("Boot%04X:\n", id);
-       printf("\tattributes: %c%c%c (0x%08x)\n",
+       printf("  attributes: %c%c%c (0x%08x)\n",
               /* ACTIVE */
               lo.attributes & LOAD_OPTION_ACTIVE ? 'A' : '-',
               /* FORCE RECONNECT */
@@ -646,14 +651,16 @@ static void show_efi_boot_opt_data(int id, void *data)
               /* HIDDEN */
               lo.attributes & LOAD_OPTION_HIDDEN ? 'H' : '-',
               lo.attributes);
-       printf("\tlabel: %s\n", label);
+       printf("  label: %s\n", label);
 
        dp_str = efi_dp_str(lo.file_path);
-       printf("\tfile_path: %ls\n", dp_str);
+       printf("  file_path: %ls\n", dp_str);
        efi_free_pool(dp_str);
 
-       printf("\tdata: %s\n", lo.optional_data);
-
+       printf("  data:\n");
+       print_hex_dump("    ", DUMP_PREFIX_OFFSET, 16, 1,
+                      lo.optional_data, size + (u8 *)data -
+                      (u8 *)lo.optional_data, true);
        free(label);
 }
 
@@ -686,13 +693,24 @@ static void show_efi_boot_opt(int id)
                                                data));
        }
        if (ret == EFI_SUCCESS)
-               show_efi_boot_opt_data(id, data);
+               show_efi_boot_opt_data(id, data, size);
        else if (ret == EFI_NOT_FOUND)
                printf("Boot%04X: not found\n", id);
 
        free(data);
 }
 
+static int u16_tohex(u16 c)
+{
+       if (c >= '0' && c <= '9')
+               return c - '0';
+       if (c >= 'A' && c <= 'F')
+               return c - 'A' + 10;
+
+       /* not hexadecimal */
+       return -1;
+}
+
 /**
  * show_efi_boot_dump() - dump all UEFI load options
  *
@@ -709,38 +727,58 @@ static void show_efi_boot_opt(int id)
 static int do_efi_boot_dump(cmd_tbl_t *cmdtp, int flag,
                            int argc, char * const argv[])
 {
-       char regex[256];
-       char * const regexlist[] = {regex};
-       char *variables = NULL, *boot, *value;
-       int len;
-       int id;
+       u16 *var_name16, *p;
+       efi_uintn_t buf_size, size;
+       efi_guid_t guid;
+       int id, i, digit;
+       efi_status_t ret;
 
        if (argc > 1)
                return CMD_RET_USAGE;
 
-       snprintf(regex, 256, "efi_.*-.*-.*-.*-.*_Boot[0-9A-F]+");
-
-       /* TODO: use GetNextVariableName? */
-       len = hexport_r(&env_htab, '\n', H_MATCH_REGEX | H_MATCH_KEY,
-                       &variables, 0, 1, regexlist);
-
-       if (!len)
-               return CMD_RET_SUCCESS;
-
-       if (len < 0)
+       buf_size = 128;
+       var_name16 = malloc(buf_size);
+       if (!var_name16)
                return CMD_RET_FAILURE;
 
-       boot = variables;
-       while (*boot) {
-               value = strstr(boot, "Boot") + 4;
-               id = (int)simple_strtoul(value, NULL, 16);
-               show_efi_boot_opt(id);
-               boot = strchr(boot, '\n');
-               if (!*boot)
+       var_name16[0] = 0;
+       for (;;) {
+               size = buf_size;
+               ret = EFI_CALL(efi_get_next_variable_name(&size, var_name16,
+                                                         &guid));
+               if (ret == EFI_NOT_FOUND)
                        break;
-               boot++;
+               if (ret == EFI_BUFFER_TOO_SMALL) {
+                       buf_size = size;
+                       p = realloc(var_name16, buf_size);
+                       if (!p) {
+                               free(var_name16);
+                               return CMD_RET_FAILURE;
+                       }
+                       var_name16 = p;
+                       ret = EFI_CALL(efi_get_next_variable_name(&size,
+                                                                 var_name16,
+                                                                 &guid));
+               }
+               if (ret != EFI_SUCCESS) {
+                       free(var_name16);
+                       return CMD_RET_FAILURE;
+               }
+
+               if (memcmp(var_name16, L"Boot", 8))
+                       continue;
+
+               for (id = 0, i = 0; i < 4; i++) {
+                       digit = u16_tohex(var_name16[4 + i]);
+                       if (digit < 0)
+                               break;
+                       id = (id << 4) + digit;
+               }
+               if (i == 4 && !var_name16[8])
+                       show_efi_boot_opt(id);
        }
-       free(variables);
+
+       free(var_name16);
 
        return CMD_RET_SUCCESS;
 }
index 638870352f406d11f5738f6739a2d6731c26468b..33cda513969f659c63f0975721eb61831e66fa2b 100644 (file)
--- a/cmd/gpt.c
+++ b/cmd/gpt.c
@@ -876,21 +876,21 @@ U_BOOT_CMD(gpt, CONFIG_SYS_MAXARGS, 1, do_gpt,
        " Example usage:\n"
        " gpt write mmc 0 $partitions\n"
        " gpt verify mmc 0 $partitions\n"
-       " read <interface> <dev>\n"
-       "    - read GPT into a data structure for manipulation\n"
-       " guid <interface> <dev>\n"
+       " gpt guid <interface> <dev>\n"
        "    - print disk GUID\n"
-       " guid <interface> <dev> <varname>\n"
+       " gpt guid <interface> <dev> <varname>\n"
        "    - set environment variable to disk GUID\n"
        " Example usage:\n"
        " gpt guid mmc 0\n"
        " gpt guid mmc 0 varname\n"
 #ifdef CONFIG_CMD_GPT_RENAME
        "gpt partition renaming commands:\n"
-       "gpt swap <interface> <dev> <name1> <name2>\n"
+       " gpt read <interface> <dev>\n"
+       "    - read GPT into a data structure for manipulation\n"
+       " gpt swap <interface> <dev> <name1> <name2>\n"
        "    - change all partitions named name1 to name2\n"
        "      and vice-versa\n"
-       "gpt rename <interface> <dev> <part> <name>\n"
+       " gpt rename <interface> <dev> <part> <name>\n"
        "    - rename the specified partition\n"
        " Example usage:\n"
        " gpt swap mmc 0 foo bar\n"
index e65b38dbf399b9fbb22969de561b3abb2d215d04..2805e8182b41fbafba75d44724b1c7b1933eb5d5 100644 (file)
@@ -291,8 +291,11 @@ static int append_value(char **bufp, size_t *sizep, char *data)
                if (!tmp_buf)
                        return -1;
 
-               if (hex2bin((u8 *)tmp_buf, data, len) < 0)
+               if (hex2bin((u8 *)tmp_buf, data, len) < 0) {
+                       printf("Error: illegal hexadecimal string\n");
+                       free(tmp_buf);
                        return -1;
+               }
 
                value = tmp_buf;
        } else { /* string */
index e0c1480d6d43705ce6cde47543db98414670fea4..9b70c6a6aff7bf0f16c4269e98d876680bfa5d0d 100644 (file)
@@ -8,7 +8,7 @@
 #include <console.h>
 #include <g_dnl.h>
 #include <usb.h>
-#include <asm/arch/f_rockusb.h>
+#include <asm/arch-rockchip/f_rockusb.h>
 
 static int do_rockusb(cmd_tbl_t *cmdtp, int flag, int argc, char *const argv[])
 {
index 105ff01d14de3f0d6ee58becb2bb8fe47da7a8a5..967ee82bcadba644aaee392744c00facf2019a9d 100644 (file)
@@ -31,7 +31,7 @@ CONFIG_MTDPARTS_DEFAULT="mtdparts=nand.0:128k(NAND.SPL),128k(NAND.SPL.backup1),1
 # CONFIG_SPL_EFI_PARTITION is not set
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="am335x-evm"
-CONFIG_OF_LIST="am335x-evm am335x-bone am335x-boneblack am335x-evmsk am335x-bonegreen am335x-icev2"
+CONFIG_OF_LIST="am335x-evm am335x-bone am335x-boneblack am335x-evmsk am335x-bonegreen am335x-icev2 am335x-pocketbeagle"
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_SPL_ENV_IS_NOWHERE=y
 CONFIG_BOOTCOUNT_LIMIT=y
index 5d901d13a3ba03b70bd0c82b4ec70a48024f05cf..a3de7a4ec48ff9350185238329bde882273cf243 100644 (file)
@@ -59,6 +59,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
index c27916cbc97fbfeba065a7529a6a820720317fef..d2548ff66060419a79c727d129a8bd8648e55473 100644 (file)
@@ -57,6 +57,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
index 23310c38c739917c43e6c8f5aeafc5963f4d356b..b52d321a69a57444b1f276d87b4d139b756057d3 100644 (file)
@@ -63,6 +63,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
index b69702b677c75e384fa9ca0451062f4216650b17..be9d55e7d475ce8c38b816f0c5bcdd2526711976 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_SPL_DM=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_SYS_I2C_TEGRA=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_TEGRA124_MMC_DISABLE_EXT_LOOPBACK=y
 CONFIG_E1000=y
 CONFIG_PCI=y
index 234416e7f65624051f08b866c48ba5399b3a4868..3292d644aa37993ec438817cb5fd6bfbba700a95 100644 (file)
@@ -58,6 +58,7 @@ CONFIG_DFU_MMC=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
index 3a1a749f3f309761190abee718d3041950c9852a..9727d28c1241cb683cdbec8d5aff080a0a85c5aa 100644 (file)
@@ -26,6 +26,7 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_DEFAULT_DEVICE_TREE="exynos5250-arndale"
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM_I2C_COMPAT=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_S5P=y
index fc4429ba202394a45b7fb8f738d7e10a94051102..b504332ff006f1c788d3f656e55267154c3102e0 100644 (file)
@@ -56,6 +56,7 @@ CONFIG_I2C_MUX_PCA954x=y
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
 CONFIG_MISC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_ZYNQ=y
 CONFIG_SPI_FLASH=y
index 59ea252f5bceb24cc98cc3b2af4777494fcdebde..bcc5a0aa4aaa806e87f118cf920171432d264a98 100644 (file)
@@ -1,46 +1,74 @@
 CONFIG_ARM=y
-CONFIG_SPL_SYS_THUMB_BUILD=y
+CONFIG_SYS_THUMB_BUILD=y
 # CONFIG_SPL_USE_ARCH_MEMCPY is not set
 # CONFIG_SPL_USE_ARCH_MEMSET is not set
 CONFIG_ARCH_AT91=y
+CONFIG_SPL_LDSCRIPT="arch/$(ARCH)/cpu/u-boot-spl.lds"
 CONFIG_SYS_TEXT_BASE=0x21000000
 CONFIG_TARGET_TAURUS=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
-CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x1000
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_SPL=y
+CONFIG_DEBUG_UART_BASE=0xfffff200
+CONFIG_DEBUG_UART_CLOCK=18432000
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068,BOARD_AXM"
+CONFIG_DEBUG_UART=y
+CONFIG_TPL_SYS_MALLOC_F_LEN=0x1000
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2068"
 CONFIG_BOOTDELAY=3
-CONFIG_USE_BOOTARGS=y
-CONFIG_BOOTARGS="\0addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:${gatewayip}:${netmask}:${hostname}:${netdev}::off\0addtest=setenv bootargs ${bootargs} loglevel=4 test\0baudrate=115200\0boot_file=setenv bootfile /${project_dir}/kernel/uImage\0boot_retries=0\0bootcmd=run flash_self\0bootdelay=3\0ethact=macb0\0flash_nfs=run nand_kernel;run nfsargs;run addip;upgrade_available;bootm ${kernel_ram};reset\0flash_self=run nand_kernel;run setbootargs;upgrade_available;bootm ${kernel_ram};reset\0flash_self_test=run nand_kernel;run setbootargs addtest; upgrade_available;bootm ${kernel_ram};reset\0hostname=systemone\0kernel_Off=0x00200000\0kernel_Off_fallback=0x03800000\0kernel_ram=0x21500000\0kernel_size=0x00400000\0kernel_size_fallback=0x00400000\0loads_echo=1\0nand_kernel=nand read.e ${kernel_ram} ${kernel_Off} ${kernel_size}\0net_nfs=run boot_file;tftp ${kernel_ram} ${bootfile};run nfsargs;run addip;upgrade_available;bootm ${kernel_ram};reset\0netdev=eth0\0nfsargs=run root_path;setenv bootargs ${bootargs} root=/dev/nfs rw nfsroot=${serverip}:${rootpath} at91sam9_wdt.wdt_timeout=16\0partitionset_active=A\0preboot=echo;echo Type 'run flash_self' to use kernel and root filesystem on memory;echo Type 'run flash_nfs' to use kernel from memory and root filesystem over NFS;echo Type 'run net_nfs' to get Kernel over TFTP and mount root filesystem over NFS;echo\0project_dir=systemone\0root_path=setenv rootpath /home/projects/${project_dir}/rootfs\0rootfs=/dev/mtdblock5\0rootfs_fallback=/dev/mtdblock7\0setbootargs=setenv bootargs ${bootargs} console=ttyMTD,mtdoops root=${rootfs} rootfstype=jffs2 panic=7 at91sam9_wdt.wdt_timeout=16\0stderr=serial\0stdin=serial\0stdout=serial\0upgrade_available=0\0"
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND="run flash_self"
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
+# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
+CONFIG_SPL_SYS_MALLOC_SIMPLE=y
+# CONFIG_TPL_BANNER_PRINT is not set
+CONFIG_SPL_CRC32_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
-CONFIG_SPL_SPI_LOAD=y
 CONFIG_HUSH_PARSER=y
+CONFIG_SYS_PROMPT="U-Boot> "
 # CONFIG_CMD_BDI is not set
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMI is not set
 # CONFIG_CMD_LOADS is not set
 CONFIG_CMD_NAND=y
+# CONFIG_CMD_PINMUX is not set
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
 # CONFIG_CMD_SOURCE is not set
 # 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_SPL_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20-taurus"
+CONFIG_SPL_OF_PLATDATA=y
 CONFIG_ENV_IS_IN_NAND=y
+CONFIG_SPL_DM=y
+CONFIG_BLK=y
+CONFIG_HAVE_BLOCK_DEVICE=y
+CONFIG_CLK=y
+CONFIG_CLK_AT91=y
 # CONFIG_MMC is not set
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_AT91=y
+CONFIG_SPECIFY_CONSOLE_INDEX=y
+CONFIG_DEBUG_UART_ATMEL=y
+CONFIG_ATMEL_USART=y
+CONFIG_WDT=y
+CONFIG_WDT_AT91=y
 CONFIG_USE_TINY_PRINTF=y
+CONFIG_HEXDUMP=y
+# CONFIG_EFI_LOADER is not set
index c613962cbd3b60768cc19e968b336fd176e88ee0..73c78e23c65efecfa841c7ac217cad487dc77cee 100644 (file)
@@ -50,6 +50,7 @@ CONFIG_DEFAULT_DEVICE_TREE="imx7d-sdb"
 # CONFIG_ENV_IS_IN_MMC is not set
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
index 05b19b31c019ec0d5160889a9c3cc4f6824c0ebd..ee3fb149e465a3792f2a6a82611404f153011cd4 100644 (file)
@@ -45,6 +45,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_PCA953X=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_MVTWSI=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_MV=y
index fa9972b47fb71be64af65f626ba10f96a167401e..dedc8b573ac1cf9fdd0f94b2da7414549a000884 100644 (file)
@@ -32,6 +32,7 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_SCSI_AHCI=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SCSI=y
 CONFIG_CONS_INDEX=4
index 449f4f9de2534b1ea92e549a1659f0c196322e82..ba17ec00306dde3061adebfeb27389da3b3dbf58 100644 (file)
@@ -57,6 +57,7 @@ CONFIG_DFU_MMC=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
index 5e2a204a881b8a567bef4854c65227c9e8e46253..0617b120a05c01f69f4ee77ba45deed9a297a737 100644 (file)
@@ -45,6 +45,7 @@ CONFIG_DFU_MMC=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
index 5c0695481b11e7800c80dd6a1853ba2d2c9e39f2..e2f69eb64e8623e842a0361348d8f963b44b9174 100644 (file)
@@ -63,6 +63,7 @@ CONFIG_BOOTCOUNT_LIMIT=y
 CONFIG_BOOTCOUNT_BOOTLIMIT=3
 CONFIG_SYS_BOOTCOUNT_SINGLEWORD=y
 CONFIG_SYS_BOOTCOUNT_ADDR=0x020CC068
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD_DEVICE=y
 CONFIG_SPI_FLASH=y
index 8e2667101e54ef5e5f9e116e5f6e80726b5b21af..0d9eed3a3e841046082b95703a6827a3150ff8b2 100644 (file)
@@ -64,6 +64,7 @@ CONFIG_PARTITION_TYPE_GUID=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_SF=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD_DEVICE=y
 CONFIG_SPI_FLASH=y
index eed0b67a12786c3dcbe88d6138ae5a6ddab2bb09..980f7b4abb629cac03defe7a78604c033dcab152 100644 (file)
@@ -32,6 +32,7 @@ CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DWC_AHSATA=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
index d9f6d59874bf70dc9adcac179e1356e1cd125c25..bea75b5d23c99a12aa5ba9c5a5ec0785d606ae35 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_DWC_AHSATA=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
index ec6b5667e52fff56dce36d6fd919b7ebfca0c499..682e3018222e4b990b1fafa76323333fdd5b4ae1 100644 (file)
@@ -65,6 +65,7 @@ CONFIG_PCF8575_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_IO_VOLTAGE=y
 CONFIG_MMC_UHS_SUPPORT=y
 CONFIG_MMC_HS200_SUPPORT=y
index 3f64669814a2a372f8c59146c315b02df85e5329..7b50d2cbc6b3c3613a228c110a5acbb8dfbeebdf 100644 (file)
@@ -68,6 +68,7 @@ CONFIG_PCF8575_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_IO_VOLTAGE=y
 CONFIG_MMC_UHS_SUPPORT=y
 CONFIG_MMC_HS200_SUPPORT=y
index 47d4ad02b69b0e6c17847d4de0a92a7f39663a1a..6d6bfbc4937155595900ca1e943256a7f44e6809 100644 (file)
@@ -70,6 +70,7 @@ CONFIG_PCF8575_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_IO_VOLTAGE=y
 CONFIG_MMC_UHS_SUPPORT=y
 CONFIG_MMC_HS200_SUPPORT=y
index 22fc84a41e38000e017f49055c90aea640d96139..b99906a4d144e368aeee820f10ebe698d988100f 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_CPU=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_DM_PCI_COMPAT=y
 CONFIG_RTC_MC146818=y
 CONFIG_USB_DWC3_GADGET=y
index eba37939f914297d86028a62f3e1725813c6ac9b..3111451162c1c9c8455ee17d36ab89f44e5ec654 100644 (file)
@@ -42,6 +42,7 @@ CONFIG_SYS_BOOTCOUNT_EXT_DEVPART="1:5"
 CONFIG_SYS_BOOTCOUNT_ADDR=0x7000A000
 CONFIG_DM_GPIO=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
index ff88c3e77ccaf9b3cd82d591cd67dfbd7095c2c0..f9857d13caf6c37777fe032e1e2e5b60cfe4a21d 100644 (file)
@@ -62,6 +62,7 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
 CONFIG_DWC_AHSATA=y
 CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD_DEVICE=y
 CONFIG_PHYLIB=y
index b5251abab8effcedc904124db486fb9ad6014bf4..27ef264d821f4213e379499ebc103cafa44870d6 100644 (file)
@@ -62,6 +62,7 @@ CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
 CONFIG_DWC_AHSATA=y
 CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_MTD_DEVICE=y
 CONFIG_PHYLIB=y
index e90b3db3ff63ec71524ddbb30bd60fbf7265b09c..25af087820822ded929fdad40a51c7b167420d24 100644 (file)
@@ -64,6 +64,7 @@ CONFIG_ENV_IS_IN_NAND=y
 CONFIG_DM=y
 CONFIG_DWC_AHSATA=y
 CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_NAND=y
 CONFIG_NAND_MXS=y
index 6e668c5a04b9f895f1ce1e2bcfe1fc7871d51917..09f33755f9a230f06a9c89e2ac8dfc40b57a9cff 100644 (file)
@@ -32,6 +32,7 @@ CONFIG_FASTBOOT_BUF_SIZE=0x10000000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=2
 CONFIG_SYS_I2C_MXC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
index 989dc445d03a0bffc996b422dac1c0082e6d19d0..6811a62bd11cc74ff104c6daaa772fd8f347479f 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_DM_ETH=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX8M=y
index 2fb2fdf7fff831ce1969a251a066999585bd10c7..59675e56b926a61f09762e92888547f314775f79 100644 (file)
@@ -53,6 +53,7 @@ CONFIG_I2C_MUX=y
 CONFIG_I2C_MUX_PCA954x=y
 CONFIG_MISC=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_ADDR_ENABLE=y
 CONFIG_PHY_ATHEROS=y
index 393046edc8bfa2ef772803fd82b76718c4ac39ea..f6a18748a936de68a0942d3208786a7d10cff066 100644 (file)
@@ -7,8 +7,11 @@ CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_ROCKCHIP_RK3036=y
 CONFIG_TARGET_KYLIN_RK3036=y
 CONFIG_SPL_SYS_MALLOC_F_LEN=0x0
-CONFIG_NR_DRAM_BANKS=1
+CONFIG_DEBUG_UART_BASE=0x20068000
+CONFIG_DEBUG_UART_CLOCK=24000000
 CONFIG_SPL_STACK_R_ADDR=0x80000
+CONFIG_DEBUG_UART=y
+CONFIG_NR_DRAM_BANKS=1
 # CONFIG_ANDROID_BOOT_IMAGE is not set
 CONFIG_DEFAULT_FDT_FILE="rk3036-kylin.dtb"
 # CONFIG_DISPLAY_CPUINFO is not set
@@ -46,6 +49,7 @@ CONFIG_SF_DEFAULT_SPEED=20000000
 CONFIG_PINCTRL=y
 CONFIG_DM_REGULATOR_FIXED=y
 # CONFIG_SPL_DM_SERIAL is not set
+CONFIG_DEBUG_UART_SHIFT=2
 CONFIG_SYSRESET=y
 CONFIG_USB=y
 CONFIG_USB_DWC2=y
index 173ceedcc9cd8156b58d52ed8d2b77ad2109bb1d..a439631e91c3c3cf558a45e5e588b209e6a6ad39 100644 (file)
@@ -38,6 +38,7 @@ CONFIG_NET_RANDOM_ETHADDR=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_DM_ETH=y
index 5c411fe1d16620eba0663f7d4f4c966f66997296..ae8209831b4426c85c13414bf31aa346e5b2541b 100644 (file)
@@ -35,6 +35,7 @@ CONFIG_SYSCON=y
 CONFIG_CLK=y
 CONFIG_DM_MMC=y
 # CONFIG_MMC_QUIRKS is not set
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_HS400_SUPPORT=y
 CONFIG_MMC_MTK=y
 CONFIG_PHY_FIXED=y
index d232fbc76a901241282d5a5f88d3319ee345c51c..d3ed3c45430672e7da392a978043c7eee72ce011 100644 (file)
@@ -73,6 +73,7 @@ CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=2
 CONFIG_DM_GPIO=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
index 88d363a27e6193614d9f8525c621d797b4f5dccc..b2ca4f96ccdf9fcf9d2100d57f83a43d114754af 100644 (file)
@@ -44,6 +44,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_74X164=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_IO_VOLTAGE=y
 CONFIG_MMC_UHS_SUPPORT=y
 CONFIG_MMC_HS200_SUPPORT=y
index 3d74967432dadbeb5cc4f4100c35c7b1475d782c..27a838787a7c14d3ba6e4a4d20957027e8fb6de9 100644 (file)
@@ -44,6 +44,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_74X164=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_IO_VOLTAGE=y
 CONFIG_MMC_UHS_SUPPORT=y
 CONFIG_MMC_HS200_SUPPORT=y
index 6bbacaa68618e34c596ebc2950c349cfab1638b5..d125ccc1af04ae60f0cfd87a923fd50736585df6 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_IMX_RGPIO2P=y
 # CONFIG_MXC_GPIO is not set
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7ULP=y
index 549ca2e9643fd85bce931dfd171ce535049f00a4..fcead94f57b3f9f5f656655d0fc62079958ae085 100644 (file)
@@ -20,6 +20,7 @@ CONFIG_IMX_RGPIO2P=y
 # CONFIG_MXC_GPIO is not set
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7ULP=y
index 4ec4e5871c5d3a91bec38e416f5b037ee0d1c6a4..b8ebd56bf9d33c27c163fb5a9f1cd1ce93bd9889 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_ADC=y
 CONFIG_ADC_EXYNOS=y
 CONFIG_DFU_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_DW=y
 CONFIG_SMC911X=y
 CONFIG_SMC911X_BASE=0x5000000
index 9a7fccd93e10e36cc076298e1e78bc954ec50f19..719ab8dde8e25f4f84774b5438b123348f95fa33 100644 (file)
@@ -30,6 +30,7 @@ CONFIG_SCSI_AHCI=y
 CONFIG_DFU_MMC=y
 CONFIG_DFU_RAM=y
 CONFIG_CMD_TCA642X=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_OMAP_HS=y
 CONFIG_SCSI=y
 CONFIG_CONS_INDEX=3
index 6a5e8cc8535e66ce8e4aee25deb6b1d90daae111..409bea88eb5c452b4e3c7cfd3ff6fb690c3f34f3 100644 (file)
@@ -68,6 +68,7 @@ CONFIG_SYSCON=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_MXC=y
 CONFIG_PWRSEQ=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
diff --git a/configs/orangepi-rk3399_defconfig b/configs/orangepi-rk3399_defconfig
new file mode 100644 (file)
index 0000000..cdccf22
--- /dev/null
@@ -0,0 +1,75 @@
+CONFIG_ARM=y
+CONFIG_ARCH_ROCKCHIP=y
+CONFIG_SYS_TEXT_BASE=0x00200000
+CONFIG_SPL_LIBCOMMON_SUPPORT=y
+CONFIG_SPL_LIBGENERIC_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x4000
+CONFIG_ROCKCHIP_RK3399=y
+CONFIG_ROCKCHIP_SPL_RESERVE_IRAM=0x4000
+CONFIG_DEBUG_UART_BASE=0xFF1A0000
+CONFIG_DEBUG_UART_CLOCK=24000000
+CONFIG_SPL_STACK_R_ADDR=0x80000
+CONFIG_DEBUG_UART=y
+CONFIG_NR_DRAM_BANKS=1
+CONFIG_FIT=y
+CONFIG_SPL_LOAD_FIT=y
+CONFIG_SPL_FIT_GENERATOR="arch/arm/mach-rockchip/make_fit_atf.py"
+CONFIG_DEFAULT_FDT_FILE="rockchip/rk3399-orangepi.dtb"
+# CONFIG_DISPLAY_CPUINFO is not set
+CONFIG_DISPLAY_BOARDINFO_LATE=y
+CONFIG_SPL_STACK_R=y
+CONFIG_SPL_STACK_R_MALLOC_SIMPLE_LEN=0x4000
+CONFIG_SPL_ATF=y
+CONFIG_SPL_ATF_NO_PLATFORM_PARAM=y
+CONFIG_CMD_BOOTZ=y
+CONFIG_CMD_GPT=y
+CONFIG_CMD_MMC=y
+CONFIG_CMD_SF=y
+CONFIG_CMD_USB=y
+# CONFIG_CMD_SETEXPR is not set
+CONFIG_CMD_TIME=y
+CONFIG_SPL_OF_CONTROL=y
+CONFIG_DEFAULT_DEVICE_TREE="rk3399-orangepi"
+CONFIG_OF_SPL_REMOVE_PROPS="pinctrl-0 pinctrl-names clock-names interrupt-parent assigned-clocks assigned-clock-rates assigned-clock-parents"
+CONFIG_ENV_IS_IN_MMC=y
+CONFIG_REGMAP=y
+CONFIG_SPL_REGMAP=y
+CONFIG_SYSCON=y
+CONFIG_SPL_SYSCON=y
+CONFIG_CLK=y
+CONFIG_SPL_CLK=y
+CONFIG_ROCKCHIP_GPIO=y
+CONFIG_SYS_I2C_ROCKCHIP=y
+CONFIG_MMC_DW=y
+CONFIG_MMC_DW_ROCKCHIP=y
+CONFIG_MMC_SDHCI=y
+CONFIG_MMC_SDHCI_ROCKCHIP=y
+CONFIG_DM_ETH=y
+CONFIG_ETH_DESIGNWARE=y
+CONFIG_GMAC_ROCKCHIP=y
+CONFIG_PINCTRL=y
+CONFIG_SPL_PINCTRL=y
+CONFIG_DM_PMIC=y
+CONFIG_PMIC_RK8XX=y
+CONFIG_REGULATOR_PWM=y
+CONFIG_DM_REGULATOR_FIXED=y
+CONFIG_REGULATOR_RK8XX=y
+CONFIG_PWM_ROCKCHIP=y
+CONFIG_RAM=y
+CONFIG_SPL_RAM=y
+CONFIG_BAUDRATE=1500000
+CONFIG_DEBUG_UART_SHIFT=2
+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_HOST_ETHER=y
+CONFIG_USB_ETHER_ASIX=y
+CONFIG_USB_ETHER_ASIX88179=y
+CONFIG_USB_ETHER_MCS7830=y
+CONFIG_USB_ETHER_RTL8152=y
+CONFIG_USB_ETHER_SMSC95XX=y
+CONFIG_USE_TINY_PRINTF=y
+CONFIG_ERRNO_STR=y
index cf55764ae5fbbfa73f8f9798338da5a6854f3c45..c1904f102bcfa6f5c0ee40205788233578f3c668 100644 (file)
@@ -38,6 +38,7 @@ CONFIG_I2C_ARB_GPIO_CHALLENGE=y
 CONFIG_CROS_EC_KEYB=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_S5P=y
index cecb4ee619a14cbd295168ddb0c4c8f89bdc07d0..da4155b286fe788c2ada5ee635b400b7232672f2 100644 (file)
@@ -37,6 +37,7 @@ CONFIG_I2C_ARB_GPIO_CHALLENGE=y
 CONFIG_CROS_EC_KEYB=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_SPI=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_S5P=y
index fdebb55ecb995ef461f83f2bc9c2767d8cb71d17..5481fffa0c1241dea88787cfcd5ef60998e972d2 100644 (file)
@@ -45,6 +45,7 @@ CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
index 33f2a0ad71cb0f8ab67d7a9571e98118299091da..17043d5b22b3b0ba2ad4c84f865155c0a578d71c 100644 (file)
@@ -53,6 +53,7 @@ CONFIG_FASTBOOT_BUF_SIZE=0x10000000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=0
 CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_MII=y
index 0c587161dcab2bad0f057cd7559c97365a874be9..af8267777a6144b599f85374c3c6dc597612a119 100644 (file)
@@ -47,6 +47,7 @@ CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
index 41374a33bff990d577b8edcdd0e6a305e7702be3..81eda9dc6f4470d0ef6e4f4f6875b4e4a2ab5bbf 100644 (file)
@@ -53,6 +53,7 @@ CONFIG_FASTBOOT_BUF_SIZE=0x10000000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=0
 CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_MII=y
index d8d2661142687121f4fd51ceeea6b544b8b8df2d..295c822aa9c1952a359e99e2ada0ca3a37b14a19 100644 (file)
@@ -45,6 +45,7 @@ CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_PHY_MICREL=y
index 81d19df04c085229d9f67180e7e09e6643f66443..0aa14878e2eafb37174ec858517629a7168b3ee6 100644 (file)
@@ -53,6 +53,7 @@ CONFIG_FASTBOOT_BUF_SIZE=0x10000000
 CONFIG_FASTBOOT_FLASH=y
 CONFIG_FASTBOOT_FLASH_MMC_DEV=0
 CONFIG_FASTBOOT_CMD_OEM_FORMAT=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_MII=y
index f9f98c9590528ab46d3fcf4360fd2ea760393ff7..964464ac0fe0f35e0d5c4793a84f8c4945067ca6 100644 (file)
@@ -69,6 +69,7 @@ CONFIG_MMC_SDHCI_SDMA=y
 CONFIG_MMC_SDHCI_ROCKCHIP=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_SPEED=20000000
+CONFIG_SPI_FLASH_GIGADEVICE=y
 CONFIG_SPI_FLASH_WINBOND=y
 CONFIG_PHY_MICREL=y
 CONFIG_PHY_MICREL_KSZ90X1=y
index da08bb89186bf77b298754f4c1d9c25b83c27958..6b0d7e58532e7ce5d04c261f72bf0040ea63bf5f 100644 (file)
@@ -21,6 +21,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
index a485ceb42c25ed35c6c3fa761a884c28720d13fd..1b61232d5c46cf1e39ed8eee0a2cba60a5e8acdb 100644 (file)
@@ -31,6 +31,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_DM=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
index 69b58f5860de91b2448b933454d21bc6a383468f..1bdcc4797b84cd6e52108aa2e108583fffccb4fb 100644 (file)
@@ -33,6 +33,7 @@ CONFIG_DEFAULT_DEVICE_TREE="exynos5250-smdk5250"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_USE_ENV_SPI_BUS=y
 CONFIG_ENV_SPI_BUS=1
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_S5P=y
index 989cd6305ae280e36d628753cd25e1b71b1e0d2e..7510f80c2ef20ac4092f51a6a495ae8c62c3a220 100644 (file)
@@ -28,6 +28,7 @@ CONFIG_DEFAULT_DEVICE_TREE="exynos5420-smdk5420"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_USE_ENV_SPI_BUS=y
 CONFIG_ENV_SPI_BUS=1
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_S5P=y
index e87f5d59849e61da6d196ed8ade0752b1f060225..f4744095164ff41f2a876ff033a185429d7ce1f7 100644 (file)
@@ -43,6 +43,7 @@ CONFIG_I2C_ARB_GPIO_CHALLENGE=y
 CONFIG_CROS_EC_KEYB=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_I2C=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_S5P=y
index b4a8d5e55cd0c0f23131167f2525d3cca818573e..bfc7495a7343d291dfe42dcdc8dbf5bdadde3876 100644 (file)
@@ -43,6 +43,7 @@ CONFIG_I2C_ARB_GPIO_CHALLENGE=y
 CONFIG_CROS_EC_KEYB=y
 CONFIG_CROS_EC=y
 CONFIG_CROS_EC_I2C=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_DW=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_S5P=y
index bd75df8eac9f8bfcc629b9ffa0e79c4958bf61d6..0ea9dff43ded9c5ad5b802f91938030eb4699ca2 100644 (file)
@@ -53,6 +53,7 @@ CONFIG_SYS_I2C_STM32F7=y
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_STM32_SDMMC2=y
 CONFIG_PHY=y
 CONFIG_PHY_STM32_USBPHYC=y
index f82b770bc873a798326af54d028da3c61a99231d..3c2bb75564d40546f3749670058872bd88cef7be 100644 (file)
@@ -45,6 +45,7 @@ CONFIG_SYS_I2C_STM32F7=y
 CONFIG_LED=y
 CONFIG_LED_GPIO=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_STM32_SDMMC2=y
 CONFIG_PHY=y
 CONFIG_PHY_STM32_USBPHYC=y
index 0da77d8c94aaab3952f9e2bf7a48122d522590b0..02a89592d747bb5d31ca6eb24c6e2dbb96288cd5 100644 (file)
@@ -1,36 +1,48 @@
 CONFIG_ARM=y
-CONFIG_SPL_SYS_THUMB_BUILD=y
+CONFIG_SYS_THUMB_BUILD=y
 # CONFIG_SPL_USE_ARCH_MEMCPY is not set
 # CONFIG_SPL_USE_ARCH_MEMSET is not set
 CONFIG_ARCH_AT91=y
 CONFIG_SPL_LDSCRIPT="arch/$(ARCH)/cpu/u-boot-spl.lds"
 CONFIG_SYS_TEXT_BASE=0x21000000
 CONFIG_TARGET_TAURUS=y
+CONFIG_BOARD_TAURUS=y
 CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
-CONFIG_SYS_MALLOC_F_LEN=0x1000
-CONFIG_SPL_SERIAL_SUPPORT=y
+CONFIG_SYS_MALLOC_F_LEN=0x2000
+CONFIG_SPL_SYS_MALLOC_F_LEN=0x1000
 CONFIG_NR_DRAM_BANKS=1
 CONFIG_SPL=y
+CONFIG_DEBUG_UART_BASE=0xfffff200
+CONFIG_DEBUG_UART_CLOCK=18432000
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
-CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2067,BOARD_TAURUS"
+CONFIG_DEBUG_UART=y
+CONFIG_TPL_SYS_MALLOC_F_LEN=0x1000
+CONFIG_SYS_EXTRA_OPTIONS="AT91SAM9G20,MACH_TYPE=2067"
 CONFIG_BOOTDELAY=3
 CONFIG_USE_BOOTARGS=y
 CONFIG_BOOTARGS="console=ttyS0,115200 earlyprintk mtdparts=atmel_nand:256k(bootstrap)ro,512k(uboot)ro,256k(env),256k(env_redundant),256k(spare),512k(dtb),6M(kernel)ro,-(rootfs) root=/dev/mtdblock7 rw rootfstype=jffs2"
+CONFIG_USE_BOOTCOMMAND=y
+CONFIG_BOOTCOMMAND="nand read 0x22000000 0x200000 0x300000; bootm"
 # CONFIG_DISPLAY_BOARDINFO is not set
 CONFIG_BOARD_EARLY_INIT_F=y
+# CONFIG_SPL_LEGACY_IMAGE_SUPPORT is not set
+CONFIG_SPL_SYS_MALLOC_SIMPLE=y
+# CONFIG_TPL_BANNER_PRINT is not set
+CONFIG_SPL_CRC32_SUPPORT=y
 CONFIG_SPL_NAND_SUPPORT=y
-CONFIG_SPL_SPI_LOAD=y
 CONFIG_HUSH_PARSER=y
 CONFIG_SYS_PROMPT="U-Boot> "
+CONFIG_SYS_XTRACE="n"
 # CONFIG_CMD_BDI is not set
 CONFIG_CMD_BOOTZ=y
 # CONFIG_CMD_IMI is not set
 CONFIG_CMD_DFU=y
 # CONFIG_CMD_LOADS is not set
 CONFIG_CMD_NAND=y
+# CONFIG_CMD_PINMUX is not set
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
 CONFIG_CMD_USB=y
@@ -41,19 +53,30 @@ CONFIG_CMD_PING=y
 CONFIG_CMD_MTDPARTS=y
 # CONFIG_DOS_PARTITION is not set
 CONFIG_OF_CONTROL=y
-CONFIG_OF_EMBED=y
+CONFIG_SPL_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="at91sam9g20-taurus"
+CONFIG_SPL_OF_PLATDATA=y
 CONFIG_ENV_IS_IN_NAND=y
+CONFIG_SPL_DM=y
+CONFIG_BLK=y
 CONFIG_CLK=y
 CONFIG_CLK_AT91=y
 CONFIG_DFU_NAND=y
 # CONFIG_MMC is not set
 CONFIG_NAND=y
 CONFIG_NAND_ATMEL=y
+CONFIG_DM_SPI_FLASH=y
 CONFIG_SPI_FLASH=y
 CONFIG_SPI_FLASH_STMICRO=y
 CONFIG_PHYLIB=y
+CONFIG_PINCTRL=y
+CONFIG_PINCTRL_AT91=y
+CONFIG_SPECIFY_CONSOLE_INDEX=y
+CONFIG_DEBUG_UART_ATMEL=y
+CONFIG_ATMEL_USART=y
 CONFIG_USB=y
+CONFIG_DM_USB=y
+# CONFIG_SPL_DM_USB is not set
 CONFIG_USB_STORAGE=y
 CONFIG_USB_GADGET=y
 CONFIG_USB_GADGET_MANUFACTURER="Siemens AG"
@@ -63,3 +86,5 @@ CONFIG_USB_GADGET_DOWNLOAD=y
 CONFIG_WDT=y
 CONFIG_WDT_AT91=y
 CONFIG_USE_TINY_PRINTF=y
+CONFIG_HEXDUMP=y
+# CONFIG_EFI_LOADER is not set
index 999425e460da22d24d29667d02ca40b4d8692c89..e04156311f4956145fc7ad8378ac3f2f52471848 100644 (file)
@@ -2,6 +2,7 @@ CONFIG_ARM=y
 CONFIG_SPL_SYS_THUMB_BUILD=y
 CONFIG_ARCH_MVEBU=y
 CONFIG_SYS_TEXT_BASE=0x00800000
+CONFIG_SPL_GPIO_SUPPORT=y
 CONFIG_SPL_LIBCOMMON_SUPPORT=y
 CONFIG_SPL_LIBGENERIC_SUPPORT=y
 CONFIG_SYS_MALLOC_F_LEN=0x2000
@@ -14,7 +15,10 @@ CONFIG_DEBUG_UART_CLOCK=250000000
 CONFIG_SPL_SPI_FLASH_SUPPORT=y
 CONFIG_SPL_SPI_SUPPORT=y
 CONFIG_DEBUG_UART=y
+CONFIG_AHCI=y
 CONFIG_DISTRO_DEFAULTS=y
+CONFIG_FIT=y
+CONFIG_FIT_VERBOSE=y
 CONFIG_BOOTDELAY=3
 CONFIG_SYS_CONSOLE_INFO_QUIET=y
 CONFIG_MISC_INIT_R=y
@@ -23,16 +27,22 @@ CONFIG_DISPLAY_BOARDINFO_LATE=y
 CONFIG_SPL_TEXT_BASE=0x40000030
 CONFIG_SPL_I2C_SUPPORT=y
 CONFIG_SPL_SPI_LOAD=y
+CONFIG_CMD_SHA1SUM=y
+CONFIG_CMD_LZMADEC=y
 # CONFIG_CMD_FLASH is not set
+CONFIG_CMD_GPIO=y
 CONFIG_CMD_I2C=y
 CONFIG_CMD_MMC=y
 CONFIG_CMD_PCI=y
+CONFIG_CMD_SATA=y
 CONFIG_CMD_SF=y
 CONFIG_CMD_SPI=y
 CONFIG_CMD_USB=y
 CONFIG_CMD_TFTPPUT=y
 CONFIG_CMD_CACHE=y
 CONFIG_CMD_TIME=y
+CONFIG_CMD_AES=y
+CONFIG_CMD_HASH=y
 CONFIG_CMD_BTRFS=y
 # CONFIG_SPL_PARTITION_UUIDS is not set
 CONFIG_DEFAULT_DEVICE_TREE="armada-385-turris-omnia"
@@ -40,8 +50,11 @@ CONFIG_ENV_IS_IN_SPI_FLASH=y
 CONFIG_USE_ENV_SPI_MAX_HZ=y
 CONFIG_ENV_SPI_MAX_HZ=50000000
 CONFIG_SPL_OF_TRANSLATE=y
-CONFIG_SCSI_AHCI=y
-CONFIG_ATSHA204A=y
+CONFIG_AHCI_PCI=y
+CONFIG_AHCI_MVEBU=y
+CONFIG_DM_GPIO=y
+# CONFIG_MVEBU_GPIO is not set
+CONFIG_DM_PCA953X=y
 CONFIG_DM_MMC=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_MV=y
@@ -53,11 +66,13 @@ CONFIG_MVNETA=y
 CONFIG_MII=y
 CONFIG_PCI=y
 CONFIG_PCI_MVEBU=y
+CONFIG_SCSI=y
 CONFIG_DEBUG_UART_SHIFT=2
 CONFIG_SYS_NS16550=y
 CONFIG_KIRKWOOD_SPI=y
 CONFIG_USB=y
 CONFIG_DM_USB=y
+CONFIG_USB_XHCI_HCD=y
 CONFIG_USB_EHCI_HCD=y
 CONFIG_WDT=y
 CONFIG_WDT_ORION=y
index 25303e67898e585e2583c4b26798c2c12891e67a..2cc30e0fd2b0dc8507fe78a2686b577336636a3b 100644 (file)
@@ -40,6 +40,7 @@ CONFIG_GPIO_UNIPHIER=y
 CONFIG_MISC=y
 CONFIG_I2C_EEPROM=y
 CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS=10
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_UNIPHIER=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_CFI=y
index 296424ec6e53f2b2dea16610eb97b28ae100b3e2..61007a677063c74bb41182f5c9ce226cd405a15f 100644 (file)
@@ -39,6 +39,7 @@ CONFIG_GPIO_UNIPHIER=y
 CONFIG_MISC=y
 CONFIG_I2C_EEPROM=y
 CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS=10
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_UNIPHIER=y
 CONFIG_FLASH_CFI_DRIVER=y
 CONFIG_SYS_FLASH_CFI=y
index b0c673c98e5911a77fc540741a98d4c63a48b58b..83f78776b7d2b0f35938f2ad0aa71f46475ee29a 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_MISC=y
 CONFIG_I2C_EEPROM=y
 CONFIG_SYS_EEPROM_PAGE_WRITE_DELAY_MS=10
 CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_HS200_SUPPORT=y
 CONFIG_MMC_UNIPHIER=y
 CONFIG_MMC_SDHCI=y
index 5d929437bf358073938e27a31085e6e00acc385e..745aa85f3b6d1af3cd0726759fef1252d7e4bd6a 100644 (file)
@@ -27,6 +27,7 @@ CONFIG_CMD_FAT=y
 CONFIG_OF_CONTROL=y
 CONFIG_DEFAULT_DEVICE_TREE="at91-vinco"
 CONFIG_ENV_IS_IN_SPI_FLASH=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_MODE=0
 CONFIG_SF_DEFAULT_SPEED=50000000
index 5347ac8fe8515fbe2f7ae1db466d38e919009362..073ff4832968e9fd07b3105ff9822272ce0fdd77 100644 (file)
@@ -33,6 +33,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_EFI_PARTITION=y
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
 CONFIG_SUPPORT_EMMC_RPMB=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_MII=y
index 300dc3805afdc51663eeacf2f9fa0c3250aa88d8..a79f670ea01487ecd9fb55cb92b2e12479d10599 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_DFU_MMC=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7=y
index 1b5356c02ef6da45aa159dfe1fa36177eb5eef30..5b351133a829feee4d9d66c15f9ae6b33d2fa120 100644 (file)
@@ -38,6 +38,7 @@ CONFIG_DFU_MMC=y
 CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_DM_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PINCTRL=y
 CONFIG_PINCTRL_IMX7=y
index df43a79869785b5985c1966c00efef1798434fd3..a37d769296921896cd2134bf603856c2ce46aa7f 100644 (file)
@@ -29,6 +29,7 @@ CONFIG_CMD_FS_GENERIC=y
 CONFIG_ENV_IS_IN_MMC=y
 # CONFIG_NET is not set
 CONFIG_DFU_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_USB=y
 CONFIG_USB_STORAGE=y
index 91d7c6993f8c8b57c71cc128304270f5467ff0f4..c8d68864930807f9fb724c91db75d56a7c5271da 100644 (file)
@@ -53,6 +53,7 @@ CONFIG_SPL_DM=y
 # CONFIG_DM_WARN is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_ZYNQ=y
 # CONFIG_EFI_LOADER is not set
index 4515b2047db2fdb7fdd3fb3480104e4061e23d23..29e472842a46ab1518ac7266f9cec9485a75e13c 100644 (file)
@@ -53,6 +53,7 @@ CONFIG_SPL_DM=y
 # CONFIG_DM_WARN is not set
 # CONFIG_DM_DEVICE_REMOVE is not set
 CONFIG_SPL_DM_SEQ_ALIAS=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_ZYNQ=y
 # CONFIG_EFI_LOADER is not set
index a57c71eeac96f9afd5b87accbe76300fb287bac1..7b1f5e9d0ae3b9ca035fb034f501003aee5d6f8e 100644 (file)
@@ -58,6 +58,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_CADENCE=y
 CONFIG_MISC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_HS200_SUPPORT=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_ZYNQ=y
index f0706f31ef3c805b68ce783841a2e053fe2a2bb6..559a61e8d0200461e7b3fa8786925047daf67940 100644 (file)
@@ -50,6 +50,7 @@ CONFIG_DM_GPIO=y
 CONFIG_DM_I2C=y
 CONFIG_SYS_I2C_CADENCE=y
 CONFIG_MISC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_MMC_SDHCI=y
 CONFIG_MMC_SDHCI_ZYNQ=y
 CONFIG_MTD_DEVICE=y
index 2cbeeb39008703b00de1d5d097a59a2ad32aa1f2..709a7ef90842ef4926c9d6070d4cb0f5392e1c14 100644 (file)
@@ -25,6 +25,7 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ENV_IS_IN_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_MII=y
index fb2bf0a64a343598f78e983a29b2475e74fd69bb..e79a038816d5aea024207d5bf23be379aec7a072 100644 (file)
@@ -36,6 +36,7 @@ CONFIG_CMD_EXT4_WRITE=y
 CONFIG_CMD_FAT=y
 CONFIG_CMD_FS_GENERIC=y
 CONFIG_ENV_IS_IN_MMC=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_PHYLIB=y
 CONFIG_MII=y
index 9ba661cebe4c503e58c9979f8b650da4bee39b36..ae3a6b32bf21dc01dad4bb430af172720da2049d 100644 (file)
@@ -34,6 +34,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_BUS=3
index ba07f615bb4694ae9203dc416300aed5736fc519..65a19151a829f60211584f865c24514bed28e563 100644 (file)
@@ -33,6 +33,7 @@ CONFIG_CMD_CACHE=y
 CONFIG_CMD_EXT4_WRITE=y
 CONFIG_ENV_IS_IN_MMC=y
 CONFIG_ENV_VARS_UBOOT_RUNTIME_CONFIG=y
+CONFIG_SUPPORT_EMMC_BOOT=y
 CONFIG_FSL_ESDHC=y
 CONFIG_SPI_FLASH=y
 CONFIG_SF_DEFAULT_BUS=3
index 239455b8161edbbefdeb211d9ff63a17a38453a1..c0fa753339c80216e45fd8f9d3e33093db0cb19c 100644 (file)
@@ -209,6 +209,8 @@ int get_disk_guid(struct blk_desc * dev_desc, char *guid)
        guid_bin = gpt_head->disk_guid.b;
        uuid_bin_to_str(guid_bin, guid, UUID_STR_FORMAT_GUID);
 
+       /* Remember to free pte */
+       free(gpt_pte);
        return 0;
 }
 
@@ -696,6 +698,10 @@ int gpt_verify_headers(struct blk_desc *dev_desc, gpt_header *gpt_head,
                       __func__);
                return -1;
        }
+
+       /* Free pte before allocating again */
+       free(*gpt_pte);
+
        if (is_gpt_valid(dev_desc, (dev_desc->lba - 1),
                         gpt_head, gpt_pte) != 1) {
                printf("%s: *** ERROR: Invalid Backup GPT ***\n",
index aa7c85011a377fe1e71690561d6ea28f88988a36..6522c24eea1668a4d4fa143ec4b53ca75041272d 100644 (file)
 Summary
 =======
 
-This README is about U-Boot support for TI's ARM 926EJS based family of SoCs.
-These SOCs are used for cameras, video security and surveillance, DVR's, etc.
-DaVinci SOC's comprise of DM644x, DM646x, DM35x and DM36x series of SOC's
-Additionally there are some SOCs meant for the audio market which though have
-an OMAP part number are very similar to the DaVinci series of SOC's
-Additionally, some family members contain a TI DSP and/or graphics
-co processors along with a host of other peripherals.
+Note: this document used to be about the entire family of DaVinci SOCs but the
+support for the DM* family and DA830 has since been dropped.
 
-Currently the following boards are supported:
-
-* TI DaVinci DM644x EVM
-
-* TI DaVinci DM646x EVM
-
-* TI DaVinci DM355 EVM
-
-* TI DaVinci DM365 EVM
+This README is about U-Boot support for TI's DA850 SoC. This SOC has an OMAP
+part number but is very similar to the DaVinci series.
 
-* TI DA830 EVM
+Currently the following boards are supported:
 
 * TI DA850 EVM
 
-* DM355 based Leopard board
-
-* DM644x based schmoogie board
-
-* DM644x based sffsdr board
+* TI OMAP-L138 LCDK
 
-* DM644x based sonata board
+* Lego EV3
 
 Build
 =====
 
-* TI DaVinci DM644x EVM:
-
-make davinci_dvevm_config
-make
-
-* TI DaVinci DM646x EVM:
-
-make davinci_dm6467evm_config
-make
-
-* TI DaVinci DM355 EVM:
-
-make davinci_dm355evm_config
-make
-
-* TI DaVinci DM365 EVM:
-
-make davinci_dm365evm_config
-make
-
-* TI DA830 EVM:
-
-make da830evm_config
-make
-
 * TI DA850 EVM:
 
 make da850evm_config
 make
 
-* DM355 based Leopard board:
-
-make davinci_dm355leopard_config
-make
-
-* DM644x based schmoogie board:
+* TI OMAP-L138 LCDK
 
-make davinci_schmoogie_config
+make omapl138_lcdk_defconfig
 make
 
-* DM644x based sffsdr board:
+* Lego EV3
 
-make davinci_sffsdr_config
-make
-
-* DM644x based sonata board:
-
-make davinci_sonata_config
+make legoev3_defconfig
 make
 
 Bootloaders
 ===============
 
-The DaVinci SOC's use 2 bootloaders. The low level initialization
-is done by a UBL(user boot loader). The UBL is written to a NAND/NOR/SPI flash
-by a programmer. During initial bootup, the ROM Bootloader reads the UBL
-from a storage device and loads it into the IRAM. The UBL then loads the U-Boot
-into the RAM.
-The programmers and UBL are always released as part of any standard TI
-software release associated with an SOC.
-
-Alternative boot method (DA850 EVM only):
-For the DA850 EVM an SPL (secondary program loader, see doc/README.SPL)
-is provided to load U-Boot directly from SPI flash. In this case, the
-SPL does the low level initialization that is otherwise done by the SPL.
-To build U-Boot with this SPL, do
-make da850evm_config
-make u-boot.ais
-and program the resulting u-boot.ais file to the SPI flash of the DA850 EVM.
+For DA850 an SPL (secondary program loader, see doc/README.SPL) is provided
+to load U-Boot directly from SPI flash. The SPL takes care of the low level
+initialization.
+
+The SPL is built as u-boot.ais for all DA850 defconfigs. The resulting
+image file can be programmed to the SPI flash of the DA850 EVM/LCDK.
 
 Environment Variables
 =====================
@@ -121,34 +60,14 @@ is used to obtain this information.
 Links
 =====
 
-1) TI DaVinci DM355 EVM:
-http://focus.ti.com/docs/prod/folders/print/tms320dm355.html
-http://www.spectrumdigital.com/product_info.php?cPath=103&products_id=203&osCsid=c499af6087317f11b3da19b4e8f1af32
-
-2) TI DaVinci DM365 EVM:
-http://focus.ti.com/docs/prod/folders/print/tms320dm365.html?247SEM=
-http://support.spectrumdigital.com/boards/evmdm365/revc/
-
-3) DaVinci DM355 based leopard board
-http://designsomething.org/leopardboard/default.aspx
-http://www.spectrumdigital.com/product_info.php?cPath=103&products_id=192&osCsid=67c20335668ffc57cb35727106eb24b1
-
-4) TI DaVinci DM6467 EVM:
-http://focus.ti.com/docs/prod/folders/print/tms320dm6467.html
-http://support.spectrumdigital.com/boards/evmdm6467/revf/
-
-5) TI DaVinci DM6446 EVM:
-http://focus.ti.com/docs/prod/folders/print/tms320dm6446.html
-http://www.spectrumdigital.com/product_info.php?cPath=103&products_id=222
-
-6) TI DA830 EVM
-http://focus.ti.com/apps/docs/gencontent.tsp?appId=1&contentId=52385
-http://www.spectrumdigital.com/product_info.php?cPath=37&products_id=214
-
-7) TI DA850 EVM
+1) TI DA850 EVM
 http://focus.ti.com/docs/prod/folders/print/omap-l138.html
 http://www.logicpd.com/products/development-kits/zoom-omap-l138-evm-development-kit
 
+2) TI OMAP-L138 LCDK
+http://focus.ti.com/docs/prod/folders/print/omap-l138.html
+http://www.ti.com/tool/TMDXLCDK138
+
 Davinci special defines
 =======================
 
index 13137017fe4f1d15e94bf8a347dfa3fc8b39e336..a63b76befc5c8601748cae2b8e857a4bc81f8d5b 100644 (file)
@@ -22,10 +22,12 @@ alias bmeng          Bin Meng <bmeng.cn@gmail.com>
 alias danielschwierzeck Daniel Schwierzeck <daniel.schwierzeck@gmail.com>
 alias dinh           Dinh Nguyen <dinguyen@kernel.org>
 alias hs             Heiko Schocher <hs@denx.de>
+alias freenix        Peng Fan <peng.fan@nxp.com>
 alias iwamatsu       Nobuhiro Iwamatsu <iwamatsu@nigauri.org>
 alias jaehoon        Jaehoon Chung <jh80.chung@samsung.com>
 alias jagan          Jagan Teki <jagan@amarulasolutions.com>
 alias jhersh         Joe Hershberger <joe.hershberger@ni.com>
+alias kevery         Kever Yang <kever.yang@rock-chips.com>
 alias lukma          Lukasz Majewski <lukma@denx.de>
 alias macpaul        Macpaul Lin <macpaul@andestech.com>
 alias marex          Marek Vasut <marex@denx.de>
@@ -70,7 +72,7 @@ alias tegra2         tegra
 alias ti             uboot, trini
 alias uniphier       uboot, masahiro
 alias zynq           uboot, monstr
-alias rockchip       uboot, sjg, Kever Yang <kever.yang@rock-chips.com>, ptomsich
+alias rockchip       uboot, sjg, kevery, ptomsich
 
 alias m68k           uboot, alisonwang, angelo_ts
 alias coldfire       m68k
@@ -110,7 +112,7 @@ alias kerneldoc      uboot, marex
 alias fdt            uboot, sjg
 alias i2c            uboot, hs
 alias kconfig        uboot, masahiro
-alias mmc            uboot, jaehoon
+alias mmc            uboot, freenix
 alias nand           uboot
 alias net            uboot, jhersh
 alias phy            uboot, jhersh
index 9c4e8901e8098977704276b3d6609f81ed3b6b4f..9bf9cedaf8cded8b5aaa08adf6d96dac773be83e 100644 (file)
@@ -9,9 +9,9 @@
 #include <errno.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3036.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3036.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3036-cru.h>
 #include <linux/log2.h>
index 7da785abc670ca3dd4755c930814d5580e0a0d80..efda8c830b07fc8c754224ba85948e9ae8646157 100644 (file)
@@ -9,9 +9,9 @@
 #include <errno.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3128.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3128.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <bitfield.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3128-cru.h>
index db7479a237587c9f1dabb5f49664ca44cb23fd3d..9bb9959c9d3ac0512be40a741fa15b47c70d19c4 100644 (file)
 #include <mapmem.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3188.h>
-#include <asm/arch/grf_rk3188.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3188.h>
+#include <asm/arch-rockchip/grf_rk3188.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <dt-bindings/clock/rk3188-cru.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
index 46a569c9ecdaa739b1aa8d440ea801a361567890..48ed14b2aff85342e0d1a1ba0a7f24e52fd0156e 100644 (file)
@@ -9,9 +9,9 @@
 #include <errno.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk322x.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk322x.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3228-cru.h>
 #include <linux/log2.h>
index 930c99f4d9f1e57d6bfcb3a7b42bbee5ebadaf7d..375d7f8acbbb306e87aa963fa8e3a893c4e30bff 100644 (file)
 #include <mapmem.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3288.h>
-#include <asm/arch/grf_rk3288.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3288.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 #include <dm/device-internal.h>
 #include <dm/lists.h>
index 106621fe7cfce53e5297e9b0c82a1e008778d24e..a89e2ecc4ad6651cc73764448eb261d2a2d6a5e6 100644 (file)
@@ -9,10 +9,10 @@
 #include <dm.h>
 #include <errno.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3328.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/grf_rk3328.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3328.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/grf_rk3328.h>
 #include <asm/io.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3328-cru.h>
index 9492cc2a36ef8d4bd388d548f5c2b8c72f2d6371..89cbae59c5e0ca1eb58fc4c0a9394354e9176bcf 100644 (file)
@@ -13,9 +13,9 @@
 #include <mapmem.h>
 #include <syscon.h>
 #include <bitfield.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3368.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3368.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <asm/io.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3368-cru.h>
index cab2bd994331dfa1f0afc053d08c97a2b4dc9a21..93a652e5ff4d0c9fe48425c4290dc6ffcfb01370 100644 (file)
@@ -13,9 +13,9 @@
 #include <syscon.h>
 #include <bitfield.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3399.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3399.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rk3399-cru.h>
 
index 914e2f4b214d9f32fe24099a4d2c9c29fa437dbb..3ebb007fab36a31d1e3ba3f011ba76ebe6935e06 100644 (file)
@@ -11,9 +11,9 @@
 #include <errno.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rv1108.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rv1108.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <dm/lists.h>
 #include <dt-bindings/clock/rv1108-cru.h>
 
index f78a01aa8f8cd8eec884808601357338205d8c52..a5fc7809bc41919c8cf964b907abbebbdb0cb8ca 100644 (file)
@@ -575,14 +575,6 @@ static int udma_get_tchan(struct udma_chan *uc)
 
        pr_debug("chan%d: got tchan%d\n", uc->id, uc->tchan->id);
 
-       if (udma_is_chan_running(uc)) {
-               dev_warn(ud->dev, "chan%d: tchan%d is running!\n", uc->id,
-                        uc->tchan->id);
-               udma_stop(uc);
-               if (udma_is_chan_running(uc))
-                       dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
-       }
-
        return 0;
 }
 
@@ -602,14 +594,6 @@ static int udma_get_rchan(struct udma_chan *uc)
 
        pr_debug("chan%d: got rchan%d\n", uc->id, uc->rchan->id);
 
-       if (udma_is_chan_running(uc)) {
-               dev_warn(ud->dev, "chan%d: rchan%d is running!\n", uc->id,
-                        uc->rchan->id);
-               udma_stop(uc);
-               if (udma_is_chan_running(uc))
-                       dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
-       }
-
        return 0;
 }
 
@@ -652,14 +636,6 @@ static int udma_get_chan_pair(struct udma_chan *uc)
 
        pr_debug("chan%d: got t/rchan%d pair\n", uc->id, chan_id);
 
-       if (udma_is_chan_running(uc)) {
-               dev_warn(ud->dev, "chan%d: t/rchan%d pair is running!\n",
-                        uc->id, chan_id);
-               udma_stop(uc);
-               if (udma_is_chan_running(uc))
-                       dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
-       }
-
        return 0;
 }
 
@@ -1071,6 +1047,15 @@ static int udma_alloc_chan_resources(struct udma_chan *uc)
                }
        }
 
+       if (udma_is_chan_running(uc)) {
+               dev_warn(ud->dev, "chan%d: is running!\n", uc->id);
+               udma_stop(uc);
+               if (udma_is_chan_running(uc)) {
+                       dev_err(ud->dev, "chan%d: won't stop!\n", uc->id);
+                       goto err_free_res;
+               }
+       }
+
        /* PSI-L pairing */
        ret = udma_navss_psil_pair(ud, uc->src_thread, uc->dst_thread);
        if (ret) {
@@ -1492,7 +1477,7 @@ static int udma_send(struct dma *dma, void *src, size_t len, void *metadata)
        u32 tc_ring_id;
        int ret;
 
-       if (!metadata)
+       if (metadata)
                packet_data = *((struct ti_udma_drv_packet_data *)metadata);
 
        if (dma->id >= (ud->rchan_cnt + ud->tchan_cnt)) {
index 1196ce07123d7189c78c189df86602509fa5f2a1..303aa6a631147168b260428bceba294c1417c160 100644 (file)
@@ -158,7 +158,7 @@ static inline int ti_sci_get_response(struct ti_sci_info *info,
        int ret;
 
        /* Receive the response */
-       ret = mbox_recv(chan, msg, info->desc->max_rx_timeout_ms);
+       ret = mbox_recv(chan, msg, info->desc->max_rx_timeout_ms * 1000);
        if (ret) {
                dev_err(info->dev, "%s: Message receive failed. ret = %d\n",
                        __func__, ret);
@@ -257,7 +257,8 @@ static int ti_sci_cmd_get_revision(struct ti_sci_handle *handle)
 
        info = handle_to_ti_sci_info(handle);
 
-       xfer = ti_sci_setup_one_xfer(info, TI_SCI_MSG_VERSION, 0x0,
+       xfer = ti_sci_setup_one_xfer(info, TI_SCI_MSG_VERSION,
+                                    TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
                                     (u32 *)&hdr, sizeof(struct ti_sci_msg_hdr),
                                     sizeof(*rev_info));
        if (IS_ERR(xfer)) {
@@ -499,8 +500,8 @@ static int ti_sci_get_device_state(const struct ti_sci_handle *handle,
 
        info = handle_to_ti_sci_info(handle);
 
-       /* Response is expected, so need of any flags */
-       xfer = ti_sci_setup_one_xfer(info, TI_SCI_MSG_GET_DEVICE_STATE, 0,
+       xfer = ti_sci_setup_one_xfer(info, TI_SCI_MSG_GET_DEVICE_STATE,
+                                    TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
                                     (u32 *)&req, sizeof(req), sizeof(*resp));
        if (IS_ERR(xfer)) {
                ret = PTR_ERR(xfer);
@@ -2574,8 +2575,8 @@ static int ti_sci_cmd_change_fwl_owner(const struct ti_sci_handle *handle,
 
        info = handle_to_ti_sci_info(handle);
 
-       xfer = ti_sci_setup_one_xfer(info, TISCI_MSG_FWL_GET,
-                                    TISCI_MSG_FWL_CHANGE_OWNER,
+       xfer = ti_sci_setup_one_xfer(info, TISCI_MSG_FWL_CHANGE_OWNER,
+                                    TI_SCI_FLAG_REQ_ACK_ON_PROCESSED,
                                     (u32 *)&req, sizeof(req), sizeof(*resp));
        if (IS_ERR(xfer)) {
                ret = PTR_ERR(xfer);
index 21df227717617cdbca1d26ddce869574b84d981d..3d96678a45a71a0ada12767aeba690ff33fa29fe 100644 (file)
@@ -12,7 +12,8 @@
 #include <linux/errno.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/gpio.h>
 #include <dm/pinctrl.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 
index 74ac0a4aa78976487f8314ec7c531a7f781d9299..0a2dafcec6caceb1b0b25f1417112ae8da7657af 100644 (file)
@@ -271,6 +271,17 @@ static int twsi_wait(struct mvtwsi_registers *twsi, int expected_status,
        do {
                control = readl(&twsi->control);
                if (control & MVTWSI_CONTROL_IFLG) {
+                       /*
+                        * On Armada 38x it seems that the controller works as
+                        * if it first set the MVTWSI_CONTROL_IFLAG in the
+                        * control register and only after that it changed the
+                        * status register.
+                        * This sometimes caused weird bugs which only appeared
+                        * on selected I2C speeds and even then only sometimes.
+                        * We therefore add here a simple ndealy(100), which
+                        * seems to fix this weird bug.
+                        */
+                       ndelay(100);
                        status = readl(&twsi->status);
                        if (status == expected_status)
                                return 0;
index f9a5796b96b7bb19bac93daad5019ae602166bd1..cdd94bb05a9009c07e278667f086163e97597516 100644 (file)
@@ -12,9 +12,9 @@
 #include <errno.h>
 #include <i2c.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/i2c.h>
-#include <asm/arch/periph.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/i2c.h>
+#include <asm/arch-rockchip/periph.h>
 #include <dm/pinctrl.h>
 #include <linux/sizes.h>
 
index c34dd5d18790f1c005c2d6b4c4a0cf502b64b138..c23299ea962b6f435071550de5d6693e4c303a6b 100644 (file)
@@ -78,6 +78,12 @@ config SUPPORT_EMMC_RPMB
          Enable support for reading, writing and programming the
          key for the Replay Protection Memory Block partition in eMMC.
 
+config SUPPORT_EMMC_BOOT
+       bool "Support some additional features of the eMMC boot partitions"
+       help
+         Enable support for eMMC boot partitions. This also enables
+         extensions within the mmc command.
+
 config MMC_IO_VOLTAGE
        bool "Support IO voltage configuration"
        help
@@ -385,6 +391,20 @@ config MMC_SDHCI_SDMA
          This enables support for the SDMA (Single Operation DMA) defined
          in the SD Host Controller Standard Specification Version 1.00 .
 
+config MMC_SDHCI_ADMA
+       bool "Support SDHCI ADMA2"
+       depends on MMC_SDHCI
+       help
+         This enables support for the ADMA (Advanced DMA) defined
+         in the SD Host Controller Standard Specification Version 3.00
+
+config SPL_MMC_SDHCI_ADMA
+       bool "Support SDHCI ADMA2 in SPL"
+       depends on MMC_SDHCI
+       help
+         This enables support for the ADMA (Advanced DMA) defined
+         in the SD Host Controller Standard Specification Version 3.00 in SPL.
+
 config MMC_SDHCI_ATMEL
        bool "Atmel SDHCI controller support"
        depends on ARCH_AT91
index 93a836eac3629bde23f89e62747e17c41eea3ab0..1992d611821dc833398ca921b979c153b08e3135 100644 (file)
@@ -74,15 +74,15 @@ static void dwmci_prepare_data(struct dwmci_host *host,
                dwmci_set_idma_desc(cur_idmac, flags, cnt,
                                    (ulong)bounce_buffer + (i * PAGE_SIZE));
 
+               cur_idmac++;
                if (blk_cnt <= 8)
                        break;
                blk_cnt -= 8;
-               cur_idmac++;
                i++;
        } while(1);
 
        data_end = (ulong)cur_idmac;
-       flush_dcache_range(data_start, data_end + ARCH_DMA_MINALIGN);
+       flush_dcache_range(data_start, roundup(data_end, ARCH_DMA_MINALIGN));
 
        ctrl = dwmci_readl(host, DWMCI_CTRL);
        ctrl |= DWMCI_IDMAC_EN | DWMCI_DMA_EN;
@@ -114,22 +114,40 @@ static int dwmci_fifo_ready(struct dwmci_host *host, u32 bit, u32 *len)
        return 0;
 }
 
+static unsigned int dwmci_get_timeout(struct mmc *mmc, const unsigned int size)
+{
+       unsigned int timeout;
+
+       timeout = size * 8 * 1000;      /* counting in bits and msec */
+       timeout *= 2;                   /* wait twice as long */
+       timeout /= mmc->clock;
+       timeout /= mmc->bus_width;
+       timeout /= mmc->ddr_mode ? 2 : 1;
+       timeout = (timeout < 1000) ? 1000 : timeout;
+
+       return timeout;
+}
+
 static int dwmci_data_transfer(struct dwmci_host *host, struct mmc_data *data)
 {
+       struct mmc *mmc = host->mmc;
        int ret = 0;
-       u32 timeout = 240000;
-       u32 mask, size, i, len = 0;
+       u32 timeout, mask, size, i, len = 0;
        u32 *buf = NULL;
        ulong start = get_timer(0);
        u32 fifo_depth = (((host->fifoth_val & RX_WMARK_MASK) >>
                            RX_WMARK_SHIFT) + 1) * 2;
 
-       size = data->blocksize * data->blocks / 4;
+       size = data->blocksize * data->blocks;
        if (data->flags == MMC_DATA_READ)
                buf = (unsigned int *)data->dest;
        else
                buf = (unsigned int *)data->src;
 
+       timeout = dwmci_get_timeout(mmc, size);
+
+       size /= 4;
+
        for (;;) {
                mask = dwmci_readl(host, DWMCI_RINTSTS);
                /* Error during data transfer. */
@@ -252,14 +270,20 @@ static int dwmci_send_cmd(struct mmc *mmc, struct mmc_cmd *cmd,
                        dwmci_wait_reset(host, DWMCI_CTRL_FIFO_RESET);
                } else {
                        if (data->flags == MMC_DATA_READ) {
-                               bounce_buffer_start(&bbstate, (void*)data->dest,
+                               ret = bounce_buffer_start(&bbstate,
+                                               (void*)data->dest,
                                                data->blocksize *
                                                data->blocks, GEN_BB_WRITE);
                        } else {
-                               bounce_buffer_start(&bbstate, (void*)data->src,
+                               ret = bounce_buffer_start(&bbstate,
+                                               (void*)data->src,
                                                data->blocksize *
                                                data->blocks, GEN_BB_READ);
                        }
+
+                       if (ret)
+                               return ret;
+
                        dwmci_prepare_data(host, data, cur_idmac,
                                           bbstate.bounce_buffer);
                }
index 9e34557d165a183948496eb1a59b8a97c3d7ec14..1b7de74a72d15da124291c6d897d48adb7f6e801 100644 (file)
@@ -297,6 +297,13 @@ static int esdhc_setup_data(struct fsl_esdhc_priv *priv, struct mmc *mmc,
                                printf("\nThe SD card is locked. Can not write to a locked card.\n\n");
                                return -ETIMEDOUT;
                        }
+               } else {
+#ifdef CONFIG_DM_GPIO
+                       if (dm_gpio_is_valid(&priv->wp_gpio) && dm_gpio_get_value(&priv->wp_gpio)) {
+                               printf("\nThe SD card is locked. Can not write to a locked card.\n\n");
+                               return -ETIMEDOUT;
+                       }
+#endif
                }
 
                esdhc_clrsetbits32(&regs->wml, WML_WR_WML_MASK,
@@ -614,18 +621,31 @@ static void set_sysctl(struct fsl_esdhc_priv *priv, struct mmc *mmc, uint clock)
 #else
        int pre_div = 2;
 #endif
-       int ddr_pre_div = mmc->ddr_mode ? 2 : 1;
        int sdhc_clk = priv->sdhc_clk;
        uint clk;
 
+       /*
+        * For ddr mode, usdhc need to enable DDR mode first, after select
+        * this DDR mode, usdhc will automatically divide the usdhc clock
+        */
+       if (mmc->ddr_mode) {
+               writel(readl(&regs->mixctrl) | MIX_CTRL_DDREN, &regs->mixctrl);
+               sdhc_clk >>= 1;
+       }
+
        if (clock < mmc->cfg->f_min)
                clock = mmc->cfg->f_min;
 
-       while (sdhc_clk / (16 * pre_div * ddr_pre_div) > clock && pre_div < 256)
-               pre_div *= 2;
+       if (sdhc_clk / 16 > clock) {
+               for (; pre_div < 256; pre_div *= 2)
+                       if ((sdhc_clk / pre_div) <= (clock * 16))
+                               break;
+       } else
+               pre_div = 1;
 
-       while (sdhc_clk / (div * pre_div * ddr_pre_div) > clock && div < 16)
-               div++;
+       for (div = 1; div <= 16; div++)
+               if ((sdhc_clk / (div * pre_div)) <= clock)
+                       break;
 
        pre_div >>= 1;
        div -= 1;
@@ -1489,14 +1509,15 @@ static int fsl_esdhc_probe(struct udevice *dev)
 #endif
        }
 
-       priv->wp_enable = 1;
-
+       if (dev_read_prop(dev, "fsl,wp-controller", NULL)) {
+               priv->wp_enable = 1;
+       } else {
+               priv->wp_enable = 0;
 #ifdef CONFIG_DM_GPIO
-       ret = gpio_request_by_name(dev, "wp-gpios", 0, &priv->wp_gpio,
+               gpio_request_by_name(dev, "wp-gpios", 0, &priv->wp_gpio,
                                   GPIOD_IS_IN);
-       if (ret)
-               priv->wp_enable = 0;
 #endif
+       }
 
        priv->vs18_enable = 0;
 
index bf2d83a52c5c69428b86f8388dc9228f868525d5..b2a1201631a5cb2bfd9c7ee5ee73b265c3738bb1 100644 (file)
@@ -13,8 +13,8 @@
 #include <pwrseq.h>
 #include <syscon.h>
 #include <asm/gpio.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/periph.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/periph.h>
 #include <linux/err.h>
 
 struct rockchip_mmc_plat {
index cdeba914f95cac4037eaf9b9eb521963f9048186..e2bb90abbdf3c5b05af34a23526f75da985df62d 100644 (file)
@@ -67,17 +67,123 @@ static void sdhci_transfer_pio(struct sdhci_host *host, struct mmc_data *data)
        }
 }
 
-static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data,
-                               unsigned int start_addr)
+#if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA)
+static void sdhci_adma_desc(struct sdhci_host *host, char *buf, u16 len,
+                           bool end)
+{
+       struct sdhci_adma_desc *desc;
+       u8 attr;
+
+       desc = &host->adma_desc_table[host->desc_slot];
+
+       attr = ADMA_DESC_ATTR_VALID | ADMA_DESC_TRANSFER_DATA;
+       if (!end)
+               host->desc_slot++;
+       else
+               attr |= ADMA_DESC_ATTR_END;
+
+       desc->attr = attr;
+       desc->len = len;
+       desc->reserved = 0;
+       desc->addr_lo = (dma_addr_t)buf;
+#ifdef CONFIG_DMA_ADDR_T_64BIT
+       desc->addr_hi = (u64)buf >> 32;
+#endif
+}
+
+static void sdhci_prepare_adma_table(struct sdhci_host *host,
+                                    struct mmc_data *data)
+{
+       uint trans_bytes = data->blocksize * data->blocks;
+       uint desc_count = DIV_ROUND_UP(trans_bytes, ADMA_MAX_LEN);
+       int i = desc_count;
+       char *buf;
+
+       host->desc_slot = 0;
+
+       if (data->flags & MMC_DATA_READ)
+               buf = data->dest;
+       else
+               buf = (char *)data->src;
+
+       while (--i) {
+               sdhci_adma_desc(host, buf, ADMA_MAX_LEN, false);
+               buf += ADMA_MAX_LEN;
+               trans_bytes -= ADMA_MAX_LEN;
+       }
+
+       sdhci_adma_desc(host, buf, trans_bytes, true);
+
+       flush_cache((dma_addr_t)host->adma_desc_table,
+                   ROUND(desc_count * sizeof(struct sdhci_adma_desc),
+                         ARCH_DMA_MINALIGN));
+}
+#elif defined(CONFIG_MMC_SDHCI_SDMA)
+static void sdhci_prepare_adma_table(struct sdhci_host *host,
+                                    struct mmc_data *data)
+{}
+#endif
+#if (defined(CONFIG_MMC_SDHCI_SDMA) || CONFIG_IS_ENABLED(MMC_SDHCI_ADMA))
+static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data,
+                             int *is_aligned, int trans_bytes)
 {
-       unsigned int stat, rdy, mask, timeout, block = 0;
-       bool transfer_done = false;
-#ifdef CONFIG_MMC_SDHCI_SDMA
        unsigned char ctrl;
+
+       if (data->flags == MMC_DATA_READ)
+               host->start_addr = (dma_addr_t)data->dest;
+       else
+               host->start_addr = (dma_addr_t)data->src;
+
        ctrl = sdhci_readb(host, SDHCI_HOST_CONTROL);
        ctrl &= ~SDHCI_CTRL_DMA_MASK;
+       if (host->flags & USE_ADMA64)
+               ctrl |= SDHCI_CTRL_ADMA64;
+       else if (host->flags & USE_ADMA)
+               ctrl |= SDHCI_CTRL_ADMA32;
        sdhci_writeb(host, ctrl, SDHCI_HOST_CONTROL);
+
+       if (host->flags & USE_SDMA) {
+               if ((host->quirks & SDHCI_QUIRK_32BIT_DMA_ADDR) &&
+                   (host->start_addr & 0x7) != 0x0) {
+                       *is_aligned = 0;
+                       host->start_addr = (unsigned long)aligned_buffer;
+                       if (data->flags != MMC_DATA_READ)
+                               memcpy(aligned_buffer, data->src, trans_bytes);
+               }
+
+#if defined(CONFIG_FIXED_SDHCI_ALIGNED_BUFFER)
+               /*
+                * Always use this bounce-buffer when
+                * CONFIG_FIXED_SDHCI_ALIGNED_BUFFER is defined
+                */
+               *is_aligned = 0;
+               host->start_addr = (unsigned long)aligned_buffer;
+               if (data->flags != MMC_DATA_READ)
+                       memcpy(aligned_buffer, data->src, trans_bytes);
+#endif
+               sdhci_writel(host, host->start_addr, SDHCI_DMA_ADDRESS);
+
+       } else if (host->flags & (USE_ADMA | USE_ADMA64)) {
+               sdhci_prepare_adma_table(host, data);
+
+               sdhci_writel(host, (u32)host->adma_addr, SDHCI_ADMA_ADDRESS);
+               if (host->flags & USE_ADMA64)
+                       sdhci_writel(host, (u64)host->adma_addr >> 32,
+                                    SDHCI_ADMA_ADDRESS_HI);
+       }
+
+       flush_cache(host->start_addr, ROUND(trans_bytes, ARCH_DMA_MINALIGN));
+}
+#else
+static void sdhci_prepare_dma(struct sdhci_host *host, struct mmc_data *data,
+                             int *is_aligned, int trans_bytes)
+{}
 #endif
+static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data)
+{
+       dma_addr_t start_addr = host->start_addr;
+       unsigned int stat, rdy, mask, timeout, block = 0;
+       bool transfer_done = false;
 
        timeout = 1000000;
        rdy = SDHCI_INT_SPACE_AVAIL | SDHCI_INT_DATA_AVAIL;
@@ -104,14 +210,17 @@ static int sdhci_transfer_data(struct sdhci_host *host, struct mmc_data *data,
                                continue;
                        }
                }
-#ifdef CONFIG_MMC_SDHCI_SDMA
-               if (!transfer_done && (stat & SDHCI_INT_DMA_END)) {
+               if ((host->flags & USE_DMA) && !transfer_done &&
+                   (stat & SDHCI_INT_DMA_END)) {
                        sdhci_writel(host, SDHCI_INT_DMA_END, SDHCI_INT_STATUS);
-                       start_addr &= ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1);
-                       start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE;
-                       sdhci_writel(host, start_addr, SDHCI_DMA_ADDRESS);
+                       if (host->flags & USE_SDMA) {
+                               start_addr &=
+                               ~(SDHCI_DEFAULT_BOUNDARY_SIZE - 1);
+                               start_addr += SDHCI_DEFAULT_BOUNDARY_SIZE;
+                               sdhci_writel(host, start_addr,
+                                            SDHCI_DMA_ADDRESS);
+                       }
                }
-#endif
                if (timeout-- > 0)
                        udelay(10);
                else {
@@ -149,10 +258,11 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
        int ret = 0;
        int trans_bytes = 0, is_aligned = 1;
        u32 mask, flags, mode;
-       unsigned int time = 0, start_addr = 0;
+       unsigned int time = 0;
        int mmc_dev = mmc_get_blk_desc(mmc)->devnum;
        ulong start = get_timer(0);
 
+       host->start_addr = 0;
        /* Timeout unit - ms */
        static unsigned int cmd_timeout = SDHCI_CMD_DEFAULT_TIMEOUT;
 
@@ -218,33 +328,11 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
                if (data->flags == MMC_DATA_READ)
                        mode |= SDHCI_TRNS_READ;
 
-#ifdef CONFIG_MMC_SDHCI_SDMA
-               if (data->flags == MMC_DATA_READ)
-                       start_addr = (unsigned long)data->dest;
-               else
-                       start_addr = (unsigned long)data->src;
-               if ((host->quirks & SDHCI_QUIRK_32BIT_DMA_ADDR) &&
-                               (start_addr & 0x7) != 0x0) {
-                       is_aligned = 0;
-                       start_addr = (unsigned long)aligned_buffer;
-                       if (data->flags != MMC_DATA_READ)
-                               memcpy(aligned_buffer, data->src, trans_bytes);
+               if (host->flags & USE_DMA) {
+                       mode |= SDHCI_TRNS_DMA;
+                       sdhci_prepare_dma(host, data, &is_aligned, trans_bytes);
                }
 
-#if defined(CONFIG_FIXED_SDHCI_ALIGNED_BUFFER)
-               /*
-                * Always use this bounce-buffer when
-                * CONFIG_FIXED_SDHCI_ALIGNED_BUFFER is defined
-                */
-               is_aligned = 0;
-               start_addr = (unsigned long)aligned_buffer;
-               if (data->flags != MMC_DATA_READ)
-                       memcpy(aligned_buffer, data->src, trans_bytes);
-#endif
-
-               sdhci_writel(host, start_addr, SDHCI_DMA_ADDRESS);
-               mode |= SDHCI_TRNS_DMA;
-#endif
                sdhci_writew(host, SDHCI_MAKE_BLKSZ(SDHCI_DEFAULT_BOUNDARY_ARG,
                                data->blocksize),
                                SDHCI_BLOCK_SIZE);
@@ -255,12 +343,6 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
        }
 
        sdhci_writel(host, cmd->cmdarg, SDHCI_ARGUMENT);
-#ifdef CONFIG_MMC_SDHCI_SDMA
-       if (data) {
-               trans_bytes = ALIGN(trans_bytes, CONFIG_SYS_CACHELINE_SIZE);
-               flush_cache(start_addr, trans_bytes);
-       }
-#endif
        sdhci_writew(host, SDHCI_MAKE_CMD(cmd->cmdidx, flags), SDHCI_COMMAND);
        start = get_timer(0);
        do {
@@ -286,7 +368,7 @@ static int sdhci_send_command(struct mmc *mmc, struct mmc_cmd *cmd,
                ret = -1;
 
        if (!ret && data)
-               ret = sdhci_transfer_data(host, data, start_addr);
+               ret = sdhci_transfer_data(host, data);
 
        if (host->quirks & SDHCI_QUIRK_WAIT_SEND_CMD)
                udelay(1000);
@@ -570,6 +652,24 @@ int sdhci_setup_cfg(struct mmc_config *cfg, struct sdhci_host *host,
                       __func__);
                return -EINVAL;
        }
+
+       host->flags |= USE_SDMA;
+#endif
+#if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA)
+       if (!(caps & SDHCI_CAN_DO_ADMA2)) {
+               printf("%s: Your controller doesn't support SDMA!!\n",
+                      __func__);
+               return -EINVAL;
+       }
+       host->adma_desc_table = (struct sdhci_adma_desc *)
+                               memalign(ARCH_DMA_MINALIGN, ADMA_TABLE_SZ);
+
+       host->adma_addr = (dma_addr_t)host->adma_desc_table;
+#ifdef CONFIG_DMA_ADDR_T_64BIT
+       host->flags |= USE_ADMA64;
+#else
+       host->flags |= USE_ADMA;
+#endif
 #endif
        if (host->quirks & SDHCI_QUIRK_REG32_RW)
                host->version =
index e6a84a52b42b5f9c1204ab3266d0b89db11e2670..cfa9b535c8a2f8456c31c47e637757604e7042f5 100644 (file)
@@ -730,43 +730,6 @@ static int nand_davinci_dev_ready(struct mtd_info *mtd)
        return __raw_readl(&davinci_emif_regs->nandfsr) & 0x1;
 }
 
-static void nand_flash_init(void)
-{
-       /* This is for DM6446 EVM and *very* similar.  DO NOT GROW THIS!
-        * Instead, have your board_init() set EMIF timings, based on its
-        * knowledge of the clocks and what devices are hooked up ... and
-        * don't even do that unless no UBL handled it.
-        */
-#ifdef CONFIG_SOC_DM644X
-       u_int32_t       acfg1 = 0x3ffffffc;
-
-       /*------------------------------------------------------------------*
-        *  NAND FLASH CHIP TIMEOUT @ 459 MHz                               *
-        *                                                                  *
-        *  AEMIF.CLK freq   = PLL1/6 = 459/6 = 76.5 MHz                    *
-        *  AEMIF.CLK period = 1/76.5 MHz = 13.1 ns                         *
-        *                                                                  *
-        *------------------------------------------------------------------*/
-        acfg1 = 0
-               | (0 << 31)     /* selectStrobe */
-               | (0 << 30)     /* extWait */
-               | (1 << 26)     /* writeSetup   10 ns */
-               | (3 << 20)     /* writeStrobe  40 ns */
-               | (1 << 17)     /* writeHold    10 ns */
-               | (1 << 13)     /* readSetup    10 ns */
-               | (5 << 7)      /* readStrobe   60 ns */
-               | (1 << 4)      /* readHold     10 ns */
-               | (3 << 2)      /* turnAround   ?? ns */
-               | (0 << 0)      /* asyncSize    8-bit bus */
-               ;
-
-       __raw_writel(acfg1, &davinci_emif_regs->ab1cr); /* CS2 */
-
-       /* NAND flash on CS2 */
-       __raw_writel(0x00000101, &davinci_emif_regs->nandfcr);
-#endif
-}
-
 void davinci_nand_init(struct nand_chip *nand)
 {
 #if defined CONFIG_KEYSTONE_RBL_NAND
@@ -820,8 +783,6 @@ void davinci_nand_init(struct nand_chip *nand)
        nand->write_buf = nand_davinci_write_buf;
 
        nand->dev_ready = nand_davinci_dev_ready;
-
-       nand_flash_init();
 }
 
 int board_nand_init(struct nand_chip *chip) __attribute__((weak));
index c01ae758c76dbeb884c155d752671033ea79207a..26a612117506bf4059654cb48648bd290badab67 100644 (file)
 #include <phy.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/periph.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/grf_rk322x.h>
-#include <asm/arch/grf_rk3288.h>
-#include <asm/arch/grf_rk3328.h>
-#include <asm/arch/grf_rk3368.h>
-#include <asm/arch/grf_rk3399.h>
-#include <asm/arch/grf_rv1108.h>
+#include <asm/arch-rockchip/periph.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/grf_rk322x.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
+#include <asm/arch-rockchip/grf_rk3328.h>
+#include <asm/arch-rockchip/grf_rk3368.h>
+#include <asm/arch-rockchip/grf_rk3399.h>
+#include <asm/arch-rockchip/grf_rv1108.h>
 #include <dm/pinctrl.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 #include "designware.h"
index bb879d8d4fef1a398a806e7b5486ecebab81dd79..9d539849739f8eea919fc1757cdff14678da0d40 100644 (file)
@@ -816,55 +816,12 @@ int davinci_emac_initialize(void)
 
                phy_id |= tmp & 0x0000ffff;
 
-               switch (phy_id) {
-#ifdef PHY_KSZ8873
-               case PHY_KSZ8873:
-                       sprintf(phy[i].name, "KSZ8873 @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = ksz8873_init_phy;
-                       phy[i].is_phy_connected = ksz8873_is_phy_connected;
-                       phy[i].get_link_speed = ksz8873_get_link_speed;
-                       phy[i].auto_negotiate = ksz8873_auto_negotiate;
-                       break;
-#endif
-#ifdef PHY_LXT972
-               case PHY_LXT972:
-                       sprintf(phy[i].name, "LXT972 @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = lxt972_init_phy;
-                       phy[i].is_phy_connected = lxt972_is_phy_connected;
-                       phy[i].get_link_speed = lxt972_get_link_speed;
-                       phy[i].auto_negotiate = lxt972_auto_negotiate;
-                       break;
-#endif
-#ifdef PHY_DP83848
-               case PHY_DP83848:
-                       sprintf(phy[i].name, "DP83848 @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = dp83848_init_phy;
-                       phy[i].is_phy_connected = dp83848_is_phy_connected;
-                       phy[i].get_link_speed = dp83848_get_link_speed;
-                       phy[i].auto_negotiate = dp83848_auto_negotiate;
-                       break;
-#endif
-#ifdef PHY_ET1011C
-               case PHY_ET1011C:
-                       sprintf(phy[i].name, "ET1011C @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = gen_init_phy;
-                       phy[i].is_phy_connected = gen_is_phy_connected;
-                       phy[i].get_link_speed = et1011c_get_link_speed;
-                       phy[i].auto_negotiate = gen_auto_negotiate;
-                       break;
-#endif
-               default:
-                       sprintf(phy[i].name, "GENERIC @ 0x%02x",
-                                               active_phy_addr[i]);
-                       phy[i].init = gen_init_phy;
-                       phy[i].is_phy_connected = gen_is_phy_connected;
-                       phy[i].get_link_speed = gen_get_link_speed;
-                       phy[i].auto_negotiate = gen_auto_negotiate;
-               }
+               sprintf(phy[i].name, "GENERIC @ 0x%02x",
+                       active_phy_addr[i]);
+               phy[i].init = gen_init_phy;
+               phy[i].is_phy_connected = gen_is_phy_connected;
+               phy[i].get_link_speed = gen_get_link_speed;
+               phy[i].auto_negotiate = gen_auto_negotiate;
 
                debug("Ethernet PHY: %s\n", phy[i].name);
 
index 0e6c559d5efb21ed66325338ca86aadda70daed3..f01bc77a5761275013fef13e6d3e5476dc93aded 100644 (file)
@@ -116,6 +116,9 @@ static int pinconfig_post_bind(struct udevice *dev)
        ofnode node;
        int ret;
 
+       if (!dev_of_valid(dev))
+               return 0;
+
        dev_for_each_subnode(node, dev) {
                if (pre_reloc_only &&
                    !ofnode_pre_reloc(node))
index 9994cbafbffd8614ba4d45d6df7a72cb246167b9..88db294cf14911fcd6703068c5a4eb38036767cc 100644 (file)
@@ -12,7 +12,7 @@
 #include <regmap.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/pwm.h>
+#include <asm/arch-rockchip/pwm.h>
 #include <power/regulator.h>
 
 struct rk_pwm_priv {
index 8d1b9faacc01c39677317a30d5faf2de783921a1..92f584fadcb299d00853c8321380ff4e8dfdece3 100644 (file)
 #include <regmap.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3368.h>
-#include <asm/arch/grf_rk3368.h>
-#include <asm/arch/ddr_rk3368.h>
-#include <asm/arch/sdram.h>
-#include <asm/arch/sdram_common.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3368.h>
+#include <asm/arch-rockchip/grf_rk3368.h>
+#include <asm/arch-rockchip/ddr_rk3368.h>
+#include <asm/arch-rockchip/sdram.h>
+#include <asm/arch-rockchip/sdram_common.h>
 
 struct dram_info {
        struct ram_info info;
index df7b9887033b3836c365d6c55e938a3fbb3fc021..bfabc22a7d897e1cab9bf9930ee59a8eb0817e36 100644 (file)
@@ -7,9 +7,9 @@
 #include <dm.h>
 #include <ram.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3128.h>
-#include <asm/arch/sdram_common.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk3128.h>
+#include <asm/arch-rockchip/sdram_common.h>
 
 struct dram_info {
        struct ram_info info;
index fdd500aa472558913806f4cd4b70c384e29c9208..00e52ec949e721f63ef580d5b658740dc2f310fa 100644 (file)
 #include <regmap.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3188.h>
-#include <asm/arch/ddr_rk3188.h>
-#include <asm/arch/grf_rk3188.h>
-#include <asm/arch/pmu_rk3188.h>
-#include <asm/arch/sdram.h>
-#include <asm/arch/sdram_common.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3188.h>
+#include <asm/arch-rockchip/ddr_rk3188.h>
+#include <asm/arch-rockchip/grf_rk3188.h>
+#include <asm/arch-rockchip/pmu_rk3188.h>
+#include <asm/arch-rockchip/sdram.h>
+#include <asm/arch-rockchip/sdram_common.h>
 #include <linux/err.h>
 
 struct chan_info {
index 53835a9cd086249be920f367bb8d24e798fe6659..c596523d4ff03bc54ec8c59c4cfb5964128f6652 100644 (file)
 #include <regmap.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk322x.h>
-#include <asm/arch/grf_rk322x.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/sdram_rk322x.h>
-#include <asm/arch/timer.h>
-#include <asm/arch/uart.h>
-#include <asm/arch/sdram_common.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk322x.h>
+#include <asm/arch-rockchip/grf_rk322x.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/sdram_rk322x.h>
+#include <asm/arch-rockchip/timer.h>
+#include <asm/arch-rockchip/uart.h>
+#include <asm/arch-rockchip/sdram_common.h>
 #include <asm/types.h>
 #include <linux/err.h>
 
index d1e52d84e7af156ffbae343f125bf55d896ce0d5..6bb025a851aa5418588e7dce8bc53311edd40565 100644 (file)
 #include <regmap.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3288.h>
-#include <asm/arch/ddr_rk3288.h>
-#include <asm/arch/grf_rk3288.h>
-#include <asm/arch/pmu_rk3288.h>
-#include <asm/arch/sdram.h>
-#include <asm/arch/sdram_common.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3288.h>
+#include <asm/arch-rockchip/ddr_rk3288.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
+#include <asm/arch-rockchip/pmu_rk3288.h>
+#include <asm/arch-rockchip/sdram.h>
+#include <asm/arch-rockchip/sdram_common.h>
 #include <linux/err.h>
 #include <power/regulator.h>
 #include <power/rk8xx_pmic.h>
index e8b234d86651c881698ca86b1c8181e6ce4a0915..f4e0b1844703cbc88bad53bc9c9cd273cc0cfff1 100644 (file)
@@ -7,9 +7,9 @@
 #include <dm.h>
 #include <ram.h>
 #include <syscon.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3328.h>
-#include <asm/arch/sdram_common.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk3328.h>
+#include <asm/arch-rockchip/sdram_common.h>
 
 struct dram_info {
        struct ram_info info;
index 94dd01156a7749a423d2d6d16adcc38c0be0bd5a..05ec5fc28d7f4b9301511e32d64b5731d0c3dea2 100644 (file)
 #include <regmap.h>
 #include <syscon.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/sdram_common.h>
-#include <asm/arch/sdram_rk3399.h>
-#include <asm/arch/cru_rk3399.h>
-#include <asm/arch/grf_rk3399.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/sdram_common.h>
+#include <asm/arch-rockchip/sdram_rk3399.h>
+#include <asm/arch-rockchip/cru_rk3399.h>
+#include <asm/arch-rockchip/grf_rk3399.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <linux/err.h>
 #include <time.h>
 
index af0713404959e28a78fdba76ab52c2f6210b5e5b..3871fc00d0743e33eab7533bae2807c2f5b2ef95 100644 (file)
@@ -7,7 +7,7 @@
 #include <dm.h>
 #include <reset-uclass.h>
 #include <linux/io.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <dm/lists.h>
 /*
  * Each reg has 16 bits reset signal for devices
index 35fefd74c696348577df53b3064a3196017dd7ce..b1718f72d1ba53316b0aae2bde3f4c5d150987aa 100644 (file)
@@ -9,7 +9,7 @@
 #include <dt-structs.h>
 #include <ns16550.h>
 #include <serial.h>
-#include <asm/arch/clock.h>
+#include <asm/arch-rockchip/clock.h>
 
 #if defined(CONFIG_ROCKCHIP_RK3188)
 struct rockchip_uart_platdata {
index e7fb9fb1646970dcbf196a5525a6ffc5a429c49d..a092dbc4458c62f2a98e7537490b485f497341f0 100644 (file)
@@ -13,7 +13,7 @@
 #include <i2s.h>
 #include <misc.h>
 #include <sound.h>
-#include <asm/arch/periph.h>
+#include <asm/arch-rockchip/periph.h>
 #include <dm/pinctrl.h>
 
 static int rockchip_sound_setup(struct udevice *dev)
index 14437c0a9afe65808786fea09109f97dbef94680..a68553b75bf1d58226cc3669d1553d15a83402ae 100644 (file)
@@ -2,6 +2,8 @@
 /*
  * spi driver for rockchip
  *
+ * (C) 2019 Theobroma Systems Design und Consulting GmbH
+ *
  * (C) Copyright 2015 Google, Inc
  *
  * (C) Copyright 2008-2013 Rockchip Electronics
 #include <spi.h>
 #include <linux/errno.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/periph.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/periph.h>
 #include <dm/pinctrl.h>
 #include "rk_spi.h"
 
 /* Change to 1 to output registers at the start of each transaction */
 #define DEBUG_RK_SPI   0
 
+struct rockchip_spi_params {
+       /* RXFIFO overruns and TXFIFO underruns stop the master clock */
+       bool master_manages_fifo;
+};
+
 struct rockchip_spi_platdata {
 #if CONFIG_IS_ENABLED(OF_PLATDATA)
        struct dtd_rockchip_rk3288_spi of_plat;
@@ -40,11 +47,8 @@ struct rockchip_spi_priv {
        unsigned int max_freq;
        unsigned int mode;
        ulong last_transaction_us;      /* Time of last transaction end */
-       u8 bits_per_word;               /* max 16 bits per word */
-       u8 n_bytes;
        unsigned int speed_hz;
        unsigned int last_speed_hz;
-       unsigned int tmode;
        uint input_rate;
 };
 
@@ -130,8 +134,13 @@ static void spi_cs_activate(struct udevice *dev, uint cs)
        if (plat->deactivate_delay_us && priv->last_transaction_us) {
                ulong delay_us;         /* The delay completed so far */
                delay_us = timer_get_us() - priv->last_transaction_us;
-               if (delay_us < plat->deactivate_delay_us)
-                       udelay(plat->deactivate_delay_us - delay_us);
+               if (delay_us < plat->deactivate_delay_us) {
+                       ulong additional_delay_us =
+                               plat->deactivate_delay_us - delay_us;
+                       debug("%s: delaying by %ld us\n",
+                             __func__, additional_delay_us);
+                       udelay(additional_delay_us);
+               }
        }
 
        debug("activate cs%u\n", cs);
@@ -263,8 +272,6 @@ static int rockchip_spi_probe(struct udevice *bus)
        }
        priv->input_rate = ret;
        debug("%s: rate = %u\n", __func__, priv->input_rate);
-       priv->bits_per_word = 8;
-       priv->tmode = TMOD_TR; /* Tx & Rx */
 
        return 0;
 }
@@ -274,28 +281,10 @@ static int rockchip_spi_claim_bus(struct udevice *dev)
        struct udevice *bus = dev->parent;
        struct rockchip_spi_priv *priv = dev_get_priv(bus);
        struct rockchip_spi *regs = priv->regs;
-       u8 spi_dfs, spi_tf;
        uint ctrlr0;
 
        /* Disable the SPI hardware */
-       rkspi_enable_chip(regs, 0);
-
-       switch (priv->bits_per_word) {
-       case 8:
-               priv->n_bytes = 1;
-               spi_dfs = DFS_8BIT;
-               spi_tf = HALF_WORD_OFF;
-               break;
-       case 16:
-               priv->n_bytes = 2;
-               spi_dfs = DFS_16BIT;
-               spi_tf = HALF_WORD_ON;
-               break;
-       default:
-               debug("%s: unsupported bits: %dbits\n", __func__,
-                     priv->bits_per_word);
-               return -EPROTONOSUPPORT;
-       }
+       rkspi_enable_chip(regs, false);
 
        if (priv->speed_hz != priv->last_speed_hz)
                rkspi_set_clk(priv, priv->speed_hz);
@@ -304,7 +293,7 @@ static int rockchip_spi_claim_bus(struct udevice *dev)
        ctrlr0 = OMOD_MASTER << OMOD_SHIFT;
 
        /* Data Frame Size */
-       ctrlr0 |= spi_dfs << DFS_SHIFT;
+       ctrlr0 |= DFS_8BIT << DFS_SHIFT;
 
        /* set SPI mode 0..3 */
        if (priv->mode & SPI_CPOL)
@@ -325,7 +314,7 @@ static int rockchip_spi_claim_bus(struct udevice *dev)
        ctrlr0 |= FBM_MSB << FBM_SHIFT;
 
        /* Byte and Halfword Transform */
-       ctrlr0 |= spi_tf << HALF_WORD_TX_SHIFT;
+       ctrlr0 |= HALF_WORD_OFF << HALF_WORD_TX_SHIFT;
 
        /* Rxd Sample Delay */
        ctrlr0 |= 0 << RXDSD_SHIFT;
@@ -334,7 +323,7 @@ static int rockchip_spi_claim_bus(struct udevice *dev)
        ctrlr0 |= FRF_SPI << FRF_SHIFT;
 
        /* Tx and Rx mode */
-       ctrlr0 |= (priv->tmode & TMOD_MASK) << TMOD_SHIFT;
+       ctrlr0 |= TMOD_TR << TMOD_SHIFT;
 
        writel(ctrlr0, &regs->ctrlr0);
 
@@ -351,6 +340,83 @@ static int rockchip_spi_release_bus(struct udevice *dev)
        return 0;
 }
 
+static inline int rockchip_spi_16bit_reader(struct udevice *dev,
+                                           u8 **din, int *len)
+{
+       struct udevice *bus = dev->parent;
+       const struct rockchip_spi_params * const data =
+               (void *)dev_get_driver_data(bus);
+       struct rockchip_spi_priv *priv = dev_get_priv(bus);
+       struct rockchip_spi *regs = priv->regs;
+       const u32 saved_ctrlr0 = readl(&regs->ctrlr0);
+#if defined(DEBUG)
+       u32 statistics_rxlevels[33] = { };
+#endif
+       u32 frames = *len / 2;
+       u8 *in = (u8 *)(*din);
+       u32 max_chunk_size = SPI_FIFO_DEPTH;
+
+       if (!frames)
+               return 0;
+
+       /*
+        * If we know that the hardware will manage RXFIFO overruns
+        * (i.e. stop the SPI clock until there's space in the FIFO),
+        * we the allow largest possible chunk size that can be
+        * represented in CTRLR1.
+        */
+       if (data && data->master_manages_fifo)
+               max_chunk_size = 0x10000;
+
+       // rockchip_spi_configure(dev, mode, size)
+       rkspi_enable_chip(regs, false);
+       clrsetbits_le32(&regs->ctrlr0,
+                       TMOD_MASK << TMOD_SHIFT,
+                       TMOD_RO << TMOD_SHIFT);
+       /* 16bit data frame size */
+       clrsetbits_le32(&regs->ctrlr0, DFS_MASK, DFS_16BIT);
+
+       /* Update caller's context */
+       const u32 bytes_to_process = 2 * frames;
+       *din += bytes_to_process;
+       *len -= bytes_to_process;
+
+       /* Process our frames */
+       while (frames) {
+               u32 chunk_size = min(frames, max_chunk_size);
+
+               frames -= chunk_size;
+
+               writew(chunk_size - 1, &regs->ctrlr1);
+               rkspi_enable_chip(regs, true);
+
+               do {
+                       u32 rx_level = readw(&regs->rxflr);
+#if defined(DEBUG)
+                       statistics_rxlevels[rx_level]++;
+#endif
+                       chunk_size -= rx_level;
+                       while (rx_level--) {
+                               u16 val = readw(regs->rxdr);
+                               *in++ = val & 0xff;
+                               *in++ = val >> 8;
+                       }
+               } while (chunk_size);
+
+               rkspi_enable_chip(regs, false);
+       }
+
+#if defined(DEBUG)
+       debug("%s: observed rx_level during processing:\n", __func__);
+       for (int i = 0; i <= 32; ++i)
+               if (statistics_rxlevels[i])
+                       debug("\t%2d: %d\n", i, statistics_rxlevels[i]);
+#endif
+       /* Restore the original transfer setup and return error-free. */
+       writel(saved_ctrlr0, &regs->ctrlr0);
+       return 0;
+}
+
 static int rockchip_spi_xfer(struct udevice *dev, unsigned int bitlen,
                           const void *dout, void *din, unsigned long flags)
 {
@@ -362,7 +428,7 @@ static int rockchip_spi_xfer(struct udevice *dev, unsigned int bitlen,
        const u8 *out = dout;
        u8 *in = din;
        int toread, towrite;
-       int ret;
+       int ret = 0;
 
        debug("%s: dout=%p, din=%p, len=%x, flags=%lx\n", __func__, dout, din,
              len, flags);
@@ -373,8 +439,18 @@ static int rockchip_spi_xfer(struct udevice *dev, unsigned int bitlen,
        if (flags & SPI_XFER_BEGIN)
                spi_cs_activate(dev, slave_plat->cs);
 
+       /*
+        * To ensure fast loading of firmware images (e.g. full U-Boot
+        * stage, ATF, Linux kernel) from SPI flash, we optimise the
+        * case of read-only transfers by using the full 16bits of each
+        * FIFO element.
+        */
+       if (!out)
+               ret = rockchip_spi_16bit_reader(dev, &in, &len);
+
+       /* This is the original 8bit reader/writer code */
        while (len > 0) {
-               int todo = min(len, 0xffff);
+               int todo = min(len, 0x10000);
 
                rkspi_enable_chip(regs, false);
                writel(todo - 1, &regs->ctrlr1);
@@ -397,9 +473,18 @@ static int rockchip_spi_xfer(struct udevice *dev, unsigned int bitlen,
                                toread--;
                        }
                }
-               ret = rkspi_wait_till_not_busy(regs);
-               if (ret)
-                       break;
+
+               /*
+                * In case that there's a transmit-component, we need to wait
+                * until the control goes idle before we can disable the SPI
+                * control logic (as this will implictly flush the FIFOs).
+                */
+               if (out) {
+                       ret = rkspi_wait_till_not_busy(regs);
+                       if (ret)
+                               break;
+               }
+
                len -= todo;
        }
 
@@ -446,10 +531,16 @@ static const struct dm_spi_ops rockchip_spi_ops = {
         */
 };
 
+const  struct rockchip_spi_params rk3399_spi_params = {
+       .master_manages_fifo = true,
+};
+
 static const struct udevice_id rockchip_spi_ids[] = {
        { .compatible = "rockchip,rk3288-spi" },
-       { .compatible = "rockchip,rk3368-spi" },
-       { .compatible = "rockchip,rk3399-spi" },
+       { .compatible = "rockchip,rk3368-spi",
+         .data = (ulong)&rk3399_spi_params },
+       { .compatible = "rockchip,rk3399-spi",
+         .data = (ulong)&rk3399_spi_params },
        { }
 };
 
index 93d7cfe463a88d6a1dd12355ff4b24749057ef01..0fc6b683f2beb4c01fcb983b55076c6eed866b4b 100644 (file)
@@ -8,9 +8,9 @@
 #include <errno.h>
 #include <sysreset.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3328.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3328.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <linux/err.h>
 
 int rockchip_sysreset_request(struct udevice *dev, enum sysreset_t type)
index 69019740b0d1154c21e8c9cfa2b25b2b3f15cfea..54956e557a16e74e2de3b9a8791a7703da31ec72 100644 (file)
@@ -7,7 +7,7 @@
 #include <dm.h>
 #include <dm/ofnode.h>
 #include <mapmem.h>
-#include <asm/arch/timer.h>
+#include <asm/arch-rockchip/timer.h>
 #include <dt-structs.h>
 #include <timer.h>
 #include <asm/io.h>
index e81eb164b0d0a8afd1d031563769b644f8bdf326..f3d24772cdef0b30141e876497018884c30f8b91 100644 (file)
@@ -15,7 +15,7 @@
 #include <linux/compiler.h>
 #include <version.h>
 #include <g_dnl.h>
-#include <asm/arch/f_rockusb.h>
+#include <asm/arch-rockchip/f_rockusb.h>
 
 static inline struct f_rockusb *func_to_rockusb(struct usb_function *f)
 {
index 3b6f889f7b7a4df59b851303fd325b803f699a0b..2b0df88f49ecb0cbe580cda005fb89aee37f5d69 100644 (file)
@@ -1545,10 +1545,8 @@ static int submit_common_msg(ohci_t *ohci, struct usb_device *dev,
                return -1;
        }
 
-#if 0
        mdelay(10);
        /* ohci_dump_status(ohci); */
-#endif
 
        timeout = USB_TIMEOUT_MS(pipe);
 
index 2ee0f23b7ed6134e5bb6e12f9fc89439958f18b5..1f2805270aa3690d6a3b1d9db519e4f0986d19ba 100644 (file)
@@ -327,9 +327,7 @@ static int ctrlreq_out_data_phase(struct usb_device *dev, u32 len, void *buffer)
                csr = readw(&musbr->txcsr);
                        
                csr |= MUSB_CSR0_TXPKTRDY;
-#if !defined(CONFIG_SOC_DM365)
                csr |= MUSB_CSR0_H_DIS_PING;
-#endif
                writew(csr, &musbr->txcsr);
                result = wait_until_ep0_ready(dev, MUSB_CSR0_TXPKTRDY);
                if (result < 0)
@@ -352,9 +350,7 @@ static int ctrlreq_out_status_phase(struct usb_device *dev)
        /* Set the StatusPkt bit */
        csr = readw(&musbr->txcsr);
        csr |= (MUSB_CSR0_TXPKTRDY | MUSB_CSR0_H_STATUSPKT);
-#if !defined(CONFIG_SOC_DM365)
        csr |= MUSB_CSR0_H_DIS_PING;
-#endif
        writew(csr, &musbr->txcsr);
 
        /* Wait until TXPKTRDY bit is cleared */
@@ -372,9 +368,7 @@ static int ctrlreq_in_status_phase(struct usb_device *dev)
 
        /* Set the StatusPkt bit and ReqPkt bit */
        csr = MUSB_CSR0_H_REQPKT | MUSB_CSR0_H_STATUSPKT;
-#if !defined(CONFIG_SOC_DM365)
        csr |= MUSB_CSR0_H_DIS_PING;
-#endif
        writew(csr, &musbr->txcsr);
        result = wait_until_ep0_ready(dev, MUSB_CSR0_H_REQPKT);
 
index eb3692c38711d72706b9ef6fe031fa5d72b40170..315d3adf27588c7508fbb84418ee7feac61f8d34 100644 (file)
@@ -13,9 +13,9 @@
 #include <syscon.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/grf_rk3288.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
 #include <power/regulator.h>
 #include "rk_hdmi.h"
 
index d268b465148e7d9838b8d8f7d9f4cee43995c0d6..7c4a4cc53b0e576bf601c0e6a04ed8937f5d622e 100644 (file)
 #include "rk_mipi.h"
 #include <syscon.h>
 #include <asm/gpio.h>
-#include <asm/hardware.h>
 #include <asm/io.h>
 #include <dm/uclass-internal.h>
 #include <linux/kernel.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3288.h>
-#include <asm/arch/grf_rk3288.h>
-#include <asm/arch/rockchip_mipi_dsi.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3288.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/rockchip_mipi_dsi.h>
 
 #define MHz 1000000
 
index 7e953a628c191016900c40046b3cf0aceb122ab1..0f91dab1f255f4bb897085c3b9337d7176e2b1b7 100644 (file)
 #include <regmap.h>
 #include <syscon.h>
 #include <video.h>
-#include <asm/hardware.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/grf_rk3288.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
+#include <asm/arch-rockchip/hardware.h>
 #include "rk_vop.h"
 
 DECLARE_GLOBAL_DATA_PTR;
index b75efe6fc32fbd449bc6e0cbb83016c98a650ee9..a62be9832750145d31eea6e88b9c0ad9b3e31c28 100644 (file)
@@ -13,9 +13,9 @@
 #include <syscon.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/hardware.h>
-#include <asm/arch/grf_rk3399.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/grf_rk3399.h>
 #include <power/regulator.h>
 #include "rk_hdmi.h"
 
index bb9007bf3633000c19133ac973e6bc35d1dee444..a93b73400bed0d744f33d6bbf5649edfa8037ab3 100644 (file)
 #include "rk_mipi.h"
 #include <syscon.h>
 #include <asm/gpio.h>
-#include <asm/hardware.h>
 #include <asm/io.h>
 #include <dm/uclass-internal.h>
 #include <linux/kernel.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3399.h>
-#include <asm/arch/grf_rk3399.h>
-#include <asm/arch/rockchip_mipi_dsi.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3399.h>
+#include <asm/arch-rockchip/grf_rk3399.h>
+#include <asm/arch-rockchip/hardware.h>
+#include <asm/arch-rockchip/rockchip_mipi_dsi.h>
 
 /* Select mipi dsi source, big or little vop */
 static int rk_mipi_dsi_source_select(struct udevice *dev)
index 7a02221ae0bea6d3a79980e83fb4c8245c4803ee..81c122d7a9ee319d8de21284f23b6036c78abacf 100644 (file)
@@ -10,7 +10,7 @@
 #include <dm.h>
 #include <regmap.h>
 #include <video.h>
-#include <asm/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <asm/io.h>
 #include "rk_vop.h"
 
index e07410763248657c0e3671a38f4afd4b955a50ac..4330725a251380e5be1e3365fa75a707c40715a7 100644 (file)
@@ -14,9 +14,9 @@
 #include <syscon.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/edp_rk3288.h>
-#include <asm/arch/grf_rk3288.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/edp_rk3288.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 
 #define MAX_CR_LOOP 5
index 13d07ee304815e16b907edc060d42d616a338e34..51931ceefae35cf3e64622f20f6a876a70ec32f5 100644 (file)
 #include <regmap.h>
 #include <syscon.h>
 #include <asm/gpio.h>
-#include <asm/hardware.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/hardware.h>
 #include "rk_hdmi.h"
 #include "rk_vop.h" /* for rk_vop_probe_regulators */
 
index f0a528c0d6da3b211169e80b6d485c4c855e5bec..cf5c0439b1ad063c31031f6bf869c0097af1c4bf 100644 (file)
@@ -12,9 +12,9 @@
 #include <syscon.h>
 #include <asm/gpio.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/lvds_rk3288.h>
-#include <asm/arch/grf_rk3288.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/lvds_rk3288.h>
+#include <asm/arch-rockchip/grf_rk3288.h>
 #include <dt-bindings/clock/rk3288-cru.h>
 #include <dt-bindings/video/rk3288.h>
 
index 4f1a0f3a5f7ffcc1a117e5f07a6f328962e44ba7..bcd039b7bc67d1932a48bff56431e8ff8c6dda26 100644 (file)
 #include "rk_mipi.h"
 #include <syscon.h>
 #include <asm/gpio.h>
-#include <asm/hardware.h>
 #include <asm/io.h>
 #include <dm/uclass-internal.h>
 #include <linux/kernel.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/cru_rk3399.h>
-#include <asm/arch/grf_rk3399.h>
-#include <asm/arch/rockchip_mipi_dsi.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/cru_rk3399.h>
+#include <asm/arch-rockchip/grf_rk3399.h>
+#include <asm/arch-rockchip/rockchip_mipi_dsi.h>
 
 DECLARE_GLOBAL_DATA_PTR;
 
index faf4f24db04f00fd0c879e12a415cba6bd184a6c..b56c3f336c99f4f4b5d3052a54f76feb3a2d72ec 100644 (file)
 #include <syscon.h>
 #include <video.h>
 #include <asm/gpio.h>
-#include <asm/hardware.h>
 #include <asm/io.h>
-#include <asm/arch/clock.h>
-#include <asm/arch/edp_rk3288.h>
-#include <asm/arch/vop_rk3288.h>
+#include <asm/arch-rockchip/clock.h>
+#include <asm/arch-rockchip/edp_rk3288.h>
+#include <asm/arch-rockchip/vop_rk3288.h>
 #include <dm/device-internal.h>
 #include <dm/uclass-internal.h>
 #include <power/regulator.h>
index 828974d394fe92f03455a130336f16e5d5e45818..8fa2f3893900979b7c94711c79a27030ec6f45b8 100644 (file)
@@ -6,7 +6,7 @@
 #ifndef __RK_VOP_H__
 #define __RK_VOP_H__
 
-#include <asm/arch/vop_rk3288.h>
+#include <asm/arch-rockchip/vop_rk3288.h>
 
 struct rk_vop_priv {
        void *grf;
index 8eca3f3ca992b2de554c1caed0967d3d39bc97f5..f909d40f45588e27af74f626770268458fafc165 100644 (file)
@@ -55,7 +55,7 @@ config WDT
        help
          Enable driver model for watchdog timer. At the moment the API
          is very simple and only supports four operations:
-         start, restart, stop and reset (expire immediately).
+         start, stop, reset and expire_now (expire immediately).
          What exactly happens when the timer expires is up to a particular
          device/driver.
 
index 6f35854823efbec0f2a1d97cf06e7420d88e3c23..cb7e18274221463528149ea9ad4c7569e2c21031 100644 (file)
@@ -119,17 +119,17 @@ int btrfs_ls(const char *path)
 
        if (inr == -1ULL) {
                printf("Cannot lookup path %s\n", path);
-               return 1;
+               return -1;
        }
 
        if (type != BTRFS_FT_DIR) {
                printf("Not a directory: %s\n", path);
-               return 1;
+               return -1;
        }
 
        if (btrfs_readdir(&root, inr, readdir_callback)) {
                printf("An error occured while listing directory %s\n", path);
-               return 1;
+               return -1;
        }
 
        return 0;
@@ -158,12 +158,12 @@ int btrfs_size(const char *file, loff_t *size)
 
        if (inr == -1ULL) {
                printf("Cannot lookup file %s\n", file);
-               return 1;
+               return -1;
        }
 
        if (type != BTRFS_FT_REG_FILE) {
                printf("Not a regular file: %s\n", file);
-               return 1;
+               return -1;
        }
 
        *size = inode.size;
@@ -183,12 +183,12 @@ int btrfs_read(const char *file, void *buf, loff_t offset, loff_t len,
 
        if (inr == -1ULL) {
                printf("Cannot lookup file %s\n", file);
-               return 1;
+               return -1;
        }
 
        if (type != BTRFS_FT_REG_FILE) {
                printf("Not a regular file: %s\n", file);
-               return 1;
+               return -1;
        }
 
        if (!len)
@@ -200,7 +200,7 @@ int btrfs_read(const char *file, void *buf, loff_t offset, loff_t len,
        rd = btrfs_file_read(&root, inr, offset, len, buf);
        if (rd == -1ULL) {
                printf("An error occured while reading file %s\n", file);
-               return 1;
+               return -1;
        }
 
        *actread = rd;
index 7aaf8f9b0d860569921bc746ff5021a400590f43..2dc4a6fcd7a3da9b331aa0b4d84329d7594df281 100644 (file)
@@ -198,17 +198,16 @@ int btrfs_read_superblock(void)
                        break;
 
                if (btrfs_check_super_csum(raw_sb)) {
-                       printf("%s: invalid checksum at superblock mirror %i\n",
-                              __func__, i);
+                       debug("%s: invalid checksum at superblock mirror %i\n",
+                             __func__, i);
                        continue;
                }
 
                btrfs_super_block_to_cpu(sb);
 
                if (sb->magic != BTRFS_MAGIC) {
-                       printf("%s: invalid BTRFS magic 0x%016llX at "
-                              "superblock mirror %i\n", __func__, sb->magic,
-                              i);
+                       debug("%s: invalid BTRFS magic 0x%016llX at "
+                             "superblock mirror %i\n", __func__, sb->magic, i);
                } else if (sb->bytenr != superblock_offsets[i]) {
                        printf("%s: invalid bytenr 0x%016llX (expected "
                               "0x%016llX) at superblock mirror %i\n",
@@ -224,7 +223,7 @@ int btrfs_read_superblock(void)
        }
 
        if (!btrfs_info.sb.generation) {
-               printf("%s: No valid BTRFS superblock found!\n", __func__);
+               debug("%s: No valid BTRFS superblock found!\n", __func__);
                return -1;
        }
 
index 57edeee941e7e15fe241fa5d6562d8662f5c6e14..22d1e41bc8dcac903fdbaed34bcb2e95f6ce5fd7 100644 (file)
@@ -21,8 +21,6 @@
 #define CONFIG_LOADCMD "fatload"
 #define CONFIG_RFSPART "2"
 
-#define CONFIG_SUPPORT_EMMC_BOOT
-
 #include "mx6_common.h"
 #include <linux/sizes.h>
 
index c14b010550fe0c11642ae54ebf6a8371e61fe472..2c651aab178b1061f5ae0ba5cd414423fa580bd6 100644 (file)
@@ -63,8 +63,6 @@
 #define CONFIG_NET_RETRY_COUNT         10
 #define PHY_ANEG_TIMEOUT       8000    /* PHY needs longer aneg time at 1G */
 
-#define CONFIG_SUPPORT_EMMC_BOOT
-
 /* USB xHCI HOST */
 #define CONFIG_USB_XHCI_OMAP
 
index 1d296ba51a05edbd35f966b52c187340911f4d43..9c8c8979f046fcaa0dc3d9f120da2698594e5946 100644 (file)
@@ -18,9 +18,6 @@
 #define CONFIG_TEGRA_ENABLE_UARTA
 #define CONFIG_SYS_NS16550_COM1                NV_PA_APB_UARTA_BASE
 
-/* SD/MMC support */
-#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
-
 /* Environment in eMMC, before config block at the end of 1st "boot sector" */
 #define CONFIG_ENV_OFFSET              (-CONFIG_ENV_SIZE + \
                                         CONFIG_TDX_CFG_BLOCK_OFFSET)
index 91054d8c05b24990231d9628c584b67f6195d8fc..9d9e16e5d963d78c77493c99d17b576984d06b3a 100644 (file)
@@ -46,8 +46,6 @@
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 #define CONFIG_SYS_FSL_USDHC_NUM       3
 
-#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
-
 /*
  * SATA Configs
  */
index 06b02ce90a94c70e195679f5a7ceb91ac6f5bae0..dd321c4748d018437e724f79c15817c8695e5423 100644 (file)
@@ -14,9 +14,6 @@
 #include "exynos5250-common.h"
 #include <configs/exynos5-common.h>
 
-/* SD/MMC configuration */
-#define CONFIG_SUPPORT_EMMC_BOOT
-
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
 
index 84c801d10a992faa20a623f511a3a2692e27c47a..51af93a32f8ba91459776188270907b25833b896 100644 (file)
 /*#define CONFIG_MACH_TYPE             3589*/
 #define CONFIG_MACH_TYPE               0xFFFFFFFF /* TODO: check with kernel*/
 
-/* MMC/SD IP block */
-#if defined(CONFIG_EMMC_BOOT)
- #define CONFIG_SUPPORT_EMMC_BOOT
-#endif /* CONFIG_EMMC_BOOT */
-
 /*
  * When we have NAND flash we expect to be making use of mtdparts,
  * both for ease of use in U-Boot and for passing information on to
index 26d1a97891d806486f8d8f70d9e3c8757bb6dca1..4c93fc6cbea289a80ea2d2a4de78eb95782f0c11 100644 (file)
 
 #define CONFIG_SYS_FSL_USDHC_NUM       2
 #define CONFIG_MMCROOT                 "/dev/mmcblk0p2" /* USDHC1 */
-#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
 #endif
 
 /* USB Configs */
index a00329db2993b7cf9d4092bb7daeef63a2a2c500..4198ff0511770d7d12bc9b8de00a49845df7551f 100644 (file)
  */
 #define CONFIG_SYS_MMC_BASE            MVEBU_SDIO_BASE
 
-#ifdef CONFIG_CMD_MMC
-#define CONFIG_SUPPORT_EMMC_BOOT
-#endif
-
 /* USB/EHCI configuration */
 #define CONFIG_EHCI_IS_TDI
 
index cda1b5528ffa501f253960882443bc262a6fb561..2387f864e32b4e7d132c514344425f6a6a5928a2 100644 (file)
@@ -41,7 +41,6 @@
 
 /* Enhance our eMMC support / experience. */
 #define CONFIG_HSMMC2_8BIT
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /* SATA Boot related defines */
 #define CONFIG_SPL_SATA_BOOT_DEVICE            0
index 129a42466d45a5eaa297f040aaa8d83987b03843..b540b3e0749fe704d979da382ac0e1e46388d702 100644 (file)
@@ -44,8 +44,6 @@
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 #define CONFIG_SYS_FSL_USDHC_NUM       2
 
-#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
-
 /* Network */
 #define CONFIG_FEC_MXC
 #define IMX_FEC_BASE                   ENET_BASE_ADDR
index 5a4b9801cb7720ae14a15fa44c39fb3e047e89af..7dfc92c085b9aafb8ba333668a7b837cf2fdf38f 100644 (file)
@@ -35,8 +35,6 @@
 #define CONFIG_SYS_FSL_USDHC_NUM       1
 #elif CONFIG_TARGET_COLIBRI_IMX7_EMMC
 #define CONFIG_SYS_FSL_USDHC_NUM       2
-
-#define CONFIG_SUPPORT_EMMC_BOOT
 #endif
 
 #undef CONFIG_BOOTM_PLAN9
index 8ab47abfa85d0ffc36b19d24e76780618f321ff9..8829cbad913c05ff94d0009e7852b7171a94307a 100644 (file)
@@ -83,7 +83,6 @@
 #define CONFIG_FSL_USDHC
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 #define CONFIG_SYS_FSL_USDHC_NUM       2
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /* allow to overwrite serial and ethaddr */
 #define CONFIG_ENV_OVERWRITE
index f6be6595fe3c1ae781b955921157c90517d0192d..aec70ee7182d3eb4d4a650fad718b4d229be7896 100644 (file)
@@ -96,8 +96,6 @@
 /* SPI SPL */
 #define CONFIG_SYS_SPI_U_BOOT_OFFS     0x40000
 
-#define CONFIG_SUPPORT_EMMC_BOOT
-
 /* USB xHCI HOST */
 #define CONFIG_USB_XHCI_OMAP
 
index cf021083ae28833380bd74adb72c1dc375d480bb..7155ebac5c24c3c627e05033d48e37eec2a56440 100644 (file)
  * it has to be done after each HCD reset */
 #define CONFIG_EHCI_HCD_INIT_AFTER_RESET
 
-/* Support all possible USB ethernet dongles */
-
-/* Extra Commands */
-/* Enable that for switching of boot partitions */
-/* Disabled by default as some sub-commands can brick eMMC */
-/*#define CONFIG_SUPPORT_EMMC_BOOT */
-
 /* BOOTP options */
 #define CONFIG_BOOTP_BOOTFILESIZE
 
index a6155ba5a8b9cc546ca5aaafb6289ca0a3ca42e4..218b50a1d9bbb1fbd2e5e6ce61c2ff1ca689c29a 100644 (file)
@@ -34,7 +34,6 @@
 #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
 
 /* RTC */
 #define CONFIG_SYS_ISA_IO_BASE_ADDRESS 0
index 858bed012c6312918a511fbba172ee06e5a0c66a..8bc7a3ad2e13e57dc6a0d322c7750f334f927d45 100644 (file)
@@ -76,7 +76,6 @@
 #define CONFIG_SYS_FSL_USDHC_NUM       3
 #define CONFIG_SYS_MMC_ENV_DEV         2       /* SDHC4 */
 #define CONFIG_ENV_OFFSET              (6 * 64 * 1024)
-#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
 #elif defined(CONFIG_ENV_IS_IN_SPI_FLASH)
 /* MarSBoard */
 #define CONFIG_FDTFILE "imx6q-marsboard.dtb"
index db1fc934bbba08568952b357b643d779408bf1a3..397bbf6d9d305091a31b429151db459b9d109d8d 100644 (file)
@@ -44,7 +44,6 @@
 
 /* MMC SPL */
 #define COPY_BL2_FNPTR_ADDR    0x02020030
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /* specific .lds file */
 
index 196f114c60e874a6cdca93e5ec03e6f797ab4e0b..0481ed06a91f22ce4da0e700c3d19f7c0a9d6f2e 100644 (file)
@@ -19,9 +19,6 @@
 #define CONFIG_MXC_UART_BASE   UART3_BASE
 #define CONSOLE_DEV    "ttymxc2"
 
-#define CONFIG_SUPPORT_EMMC_BOOT
-
-
 #include "mx6_common.h"
 #include <linux/sizes.h>
 
index 93608e5aec4d15d7b4773b6608c225fd34690334..02ceb4c8fc8b027866cf90095d4d6997502af02a 100644 (file)
@@ -81,9 +81,6 @@
 /* MMC Configs */
 #define CONFIG_SYS_FSL_ESDHC_ADDR      0
 
-/* eMMC Configs */
-#define CONFIG_SUPPORT_EMMC_BOOT
-
 /*
  * SATA Configs
  */
index 030dbedce81b7677941cc8fe1981f7749df262c4..7605e145c2f3b7164cc6c69bc27624059e941b77 100644 (file)
@@ -51,7 +51,6 @@
 
 /* MMC */
 #define CONFIG_SYS_MMC_ENV_DEV         2
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /* Ethernet */
 #define CONFIG_FEC_MXC_PHYADDR         1
index aaecf6f053556364805e17f10af1a128c5485cd6..7759bbf2645f7d05ae303c91b409d9bcdbcd00a2 100644 (file)
 #define CONFIG_SYS_FSL_USDHC_NUM       2
 #define CONFIG_SYS_FSL_ESDHC_ADDR       0
 
-#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
 #define CONFIG_SYS_MMC_IMG_LOAD_PART   1
 
 #define CONFIG_MXC_GPIO
index 18ea5a8fb6d79e16ef80961c7991338faee386bd..40163c8d5049ef16acf4be399437f3758013676a 100644 (file)
@@ -53,7 +53,6 @@
 #define CONFIG_SYS_FSL_ESDHC_ADDR       0
 #define USDHC1_BASE_ADDR                0x5B010000
 #define USDHC2_BASE_ADDR                0x5B020000
-#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
 
 #define CONFIG_ENV_OVERWRITE
 
index a97ccb50b2ff35504dd2d861d94736e1c4c25a18..975f32474c4aee9f7842264f1789b2d5a78569ba 100644 (file)
@@ -24,7 +24,6 @@
 /* MMC Configs */
 #ifdef CONFIG_FSL_USDHC
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC1_BASE_ADDR
-#define CONFIG_SUPPORT_EMMC_BOOT
 #endif
 
 #define CONFIG_SYS_MMC_IMG_LOAD_PART   1
index e449364ad48a7b09e5917050e4af7f3640abad9a..5f67893f31279fe34f14071513e5cf1401d59bda 100644 (file)
@@ -42,7 +42,6 @@
 
 /* MMC */
 #define MMC_SUPPORTS_TUNING
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /* DRAM */
 #define CONFIG_SYS_SDRAM_BASE          0x80000000
index 555942a2c2ab79100e879c18b698b2a4fd371ddf..ec1537541aeadf5a95b4a6cc8511fb7f3944ce25 100644 (file)
@@ -16,8 +16,6 @@
 #define CONFIG_MXC_UART_BASE   UART1_BASE
 #define CONSOLE_DEV            "ttymxc0"
 
-#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
-
 #include "mx6sabre_common.h"
 
 /* Falcon Mode */
index 39d29de744683d3dda5d0e8eac411bd93bd64da0..77856a8f3a47991c2f0f18cfb57fa402e09b0a35 100644 (file)
@@ -38,7 +38,6 @@
 #define CONFIG_SYS_I2C_MXC
 #define CONFIG_SYS_I2C_SPEED           100000
 
-#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
 #define CONFIG_SYS_MMC_IMG_LOAD_PART   1
 
 #ifdef CONFIG_IMX_BOOTAUX
index b8dcaa10361d6df826941db4df778e9fe1550519..5bd63929735ebfa82383ff23e0a6f96fd10f449c 100644 (file)
@@ -28,7 +28,6 @@
 #define IOMUXC_BASE_ADDR               IOMUXC1_RBASE
 
 #define CONFIG_FSL_USDHC
-#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
 
 #define CONFIG_SYS_FSL_USDHC_NUM        1
 
index 66bd288040c1130fc5a4a1b4301aa41865d83444..0d8f945349dc7aa08850be4c5524a42c655c6c6b 100644 (file)
@@ -39,7 +39,6 @@
 
 /* Enhance our eMMC support / experience. */
 #define CONFIG_HSMMC2_8BIT
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /* Required support for the TCA642X GPIO we have on the uEVM */
 #define CONFIG_TCA642X
index 70cf4665df37f53bd6f89bff36bce922a940a456..e0c76ff43daa005d34c972782e4ae77d6fba54a5 100644 (file)
@@ -33,9 +33,6 @@
 #define CONFIG_SYS_INIT_SP_ADDR \
        (CONFIG_SYS_INIT_RAM_ADDR + CONFIG_SYS_INIT_SP_OFFSET)
 
-/* MMC */
-#define CONFIG_SUPPORT_EMMC_BOOT
-
 /* USB */
 #ifdef CONFIG_USB_EHCI_MX6
 #define CONFIG_EHCI_HCD_INIT_AFTER_RESET
index 050f69801b474002b3f3dab93e209f017a194fc5..cd051bf263f816c9111f52b1444e1d4f5b88395a 100644 (file)
@@ -41,7 +41,6 @@
 
 /* MMC Configs */
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC1_BASE_ADDR
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /* USB Configs */
 #define CONFIG_EHCI_HCD_INIT_AFTER_RESET
index 04d316f1132722b39a415c474eaaa14954d44fc1..365a5984e4d54268ca6cc9942eef6f14fca737b5 100644 (file)
@@ -58,7 +58,6 @@
        "bootmenu_1=Boot using PICO-Pi baseboard=" \
                "setenv fdtfile imx7d-pico-pi.dtb\0" \
 
-#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
 #define CONFIG_SYS_MMC_IMG_LOAD_PART   1
 
 #define CONFIG_EXTRA_ENV_SETTINGS \
index 6c02446a65a53c26e5e1b9a276392de4701bdeef..f5d09d18e5e2a44077bba6602daf3729fad4322e 100644 (file)
@@ -5,7 +5,7 @@
 #ifndef __CONFIG_RK3036_COMMON_H
 #define __CONFIG_RK3036_COMMON_H
 
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include "rockchip-common.h"
 
 #define CONFIG_SYS_MALLOC_LEN          (32 << 20)
index 4f6f4af957d7ff808e8d5e71ee060f53365b6382..1d417028467d19579ce50c25d64f10b9debeac07 100644 (file)
@@ -8,7 +8,7 @@
 
 #define CONFIG_SYS_CACHELINE_SIZE      64
 
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include "rockchip-common.h"
 
 #define CONFIG_SKIP_LOWLEVEL_INIT_ONLY
index 22eb064fadc3af0019db598944c52f01f8622640..3a96748f6b70be08c2101d748e3c13121619bd5d 100644 (file)
@@ -5,7 +5,7 @@
 #ifndef __CONFIG_RK322X_COMMON_H
 #define __CONFIG_RK322X_COMMON_H
 
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include "rockchip-common.h"
 
 #define CONFIG_SKIP_LOWLEVEL_INIT
index 3a1cbf28af8ea82896a63a819ec13644a2eee539..7c79ed6138241a4fa3ba81b956721ee90487edfa 100644 (file)
@@ -6,7 +6,7 @@
 #ifndef __CONFIG_RK3288_COMMON_H
 #define __CONFIG_RK3288_COMMON_H
 
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include "rockchip-common.h"
 
 #define CONFIG_SKIP_LOWLEVEL_INIT_ONLY
index cf51f25bf3433d9ff46b4aee94e574f1839c8f43..bb2e96ba05d0363f90bbeea8d50a005fe62da024 100644 (file)
@@ -10,7 +10,7 @@
 
 #define CONFIG_SYS_CACHELINE_SIZE      64
 
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include <linux/sizes.h>
 
 #define CONFIG_SYS_SDRAM_BASE          0
index 952ea9fdca431a398c0bdd823db793beeba03544..6f61f015387982c99a21743f195d9e8b779d6caa 100644 (file)
@@ -5,7 +5,7 @@
 #ifndef __CONFIG_RV1108_COMMON_H
 #define __CONFIG_RV1108_COMMON_H
 
-#include <asm/arch/hardware.h>
+#include <asm/arch-rockchip/hardware.h>
 #include "rockchip-common.h"
 
 #define CONFIG_SYS_MALLOC_LEN          (32 << 20)
index 3069373236b9f5067ee4ed701b0b6d44c1bfc1ef..fd6c97a0c619dbfea5e70fe1fd6047a947424b6f 100644 (file)
@@ -77,7 +77,6 @@
 
 /*MMC SD*/
 #define CONFIG_SYS_MMC_MAX_DEVICE      3
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /*****************************************************************************/
 #ifdef CONFIG_DISTRO_DEFAULTS
index c3353d74a9ec86e22366d10cbb64ee1dffc1d967..45a4a800c5809726641b47a861194d76fb180156 100644 (file)
@@ -41,6 +41,7 @@
 #define CONFIG_CMDLINE_TAG             /* enable passing of ATAGs */
 #define CONFIG_SETUP_MEMORY_TAGS
 #define CONFIG_INITRD_TAG
+
 #define CONFIG_SKIP_LOWLEVEL_INIT_ONLY
 
 /* general purpose I/O */
 #define CONFIG_AT91_GPIO
 #define CONFIG_AT91_GPIO_PULLUP        1       /* keep pullups on peripheral pins */
 
-/* serial console */
-#define CONFIG_ATMEL_USART
 #define CONFIG_USART_BASE              ATMEL_BASE_DBGU
 #define CONFIG_USART_ID                        ATMEL_ID_SYS
 
-
 /*
  * SDRAM: 1 bank, min 32, max 128 MB
  * Initialized before u-boot gets started.
 
 /* SPI EEPROM */
 #define TAURUS_SPI_MASK (1 << 4)
-#define TAURUS_SPI_CS_PIN      AT91_PIN_PA3
 
 #if defined(CONFIG_SPL_BUILD)
 /* SPL related */
 #define CONFIG_ENV_OFFSET              0x100000
 #define CONFIG_ENV_OFFSET_REDUND       0x180000
 #define CONFIG_ENV_SIZE                (SZ_128K)       /* 1 sector = 128 kB */
-#define CONFIG_BOOTCOMMAND     "nand read 0x22000000 0x200000 0x300000; bootm"
 
+#ifndef CONFIG_SPL_BUILD
+#if defined(CONFIG_BOARD_AXM)
+#define CONFIG_EXTRA_ENV_SETTINGS \
+       "addip=setenv bootargs ${bootargs} ip=${ipaddr}:${serverip}:" \
+               "${gatewayip}:${netmask}:${hostname}:${netdev}::off\0" \
+       "addtest=setenv bootargs ${bootargs} loglevel=4 test\0" \
+       "boot_file=setenv bootfile /${project_dir}/kernel/uImage\0" \
+       "boot_retries=0\0" \
+       "ethact=macb0\0" \
+       "flash_nfs=run nand_kernel;run nfsargs;run addip;" \
+               "upgrade_available;bootm ${kernel_ram};reset\0" \
+       "flash_self=run nand_kernel;run setbootargs;upgrade_available;" \
+               "bootm ${kernel_ram};reset\0" \
+       "flash_self_test=run nand_kernel;run setbootargs addtest;" \
+               "upgrade_available;bootm ${kernel_ram};reset\0" \
+       "hostname=systemone\0" \
+       "kernel_Off=0x00200000\0" \
+       "kernel_Off_fallback=0x03800000\0" \
+       "kernel_ram=0x21500000\0" \
+       "kernel_size=0x00400000\0" \
+       "kernel_size_fallback=0x00400000\0" \
+       "loads_echo=1\0" \
+       "nand_kernel=nand read.e ${kernel_ram} ${kernel_Off} " \
+               "${kernel_size}\0" \
+       "net_nfs=run boot_file;tftp ${kernel_ram} ${bootfile};" \
+               "run nfsargs;run addip;upgrade_available;" \
+               "bootm ${kernel_ram};reset\0" \
+       "netdev=eth0\0" \
+       "nfsargs=run root_path;setenv bootargs ${bootargs} root=/dev/nfs " \
+               "rw nfsroot=${serverip}:${rootpath} " \
+               "at91sam9_wdt.wdt_timeout=16\0" \
+       "partitionset_active=A\0" \
+       "preboot=echo;echo Type 'run flash_self' to use kernel and root " \
+               "filesystem on memory;echo Type 'run flash_nfs' to use " \
+               "kernel from memory and root filesystem over NFS;echo Type " \
+               "'run net_nfs' to get Kernel over TFTP and mount root " \
+               "filesystem over NFS;echo\0" \
+       "project_dir=systemone\0" \
+       "root_path=setenv rootpath /home/projects/${project_dir}/rootfs\0" \
+       "rootfs=/dev/mtdblock5\0" \
+       "rootfs_fallback=/dev/mtdblock7\0" \
+       "setbootargs=setenv bootargs ${bootargs} console=ttyMTD,mtdoops " \
+               "root=${rootfs} rootfstype=jffs2 panic=7 " \
+               "at91sam9_wdt.wdt_timeout=16\0" \
+       "stderr=serial\0" \
+       "stdin=serial\0" \
+       "stdout=serial\0" \
+       "upgrade_available=0\0"
+#endif
+#endif /* #ifndef CONFIG_SPL_BUILD */
 /*
  * Size of malloc() pool
  */
index 5a148873c78cd703db2195933d98c3c1d2cc6f0b..018f54428bccc94cf066be59477ea622abeedbf3 100644 (file)
  */
 #define CONFIG_SYS_TCLK                250000000       /* 250MHz */
 
-/*
- * Commands configuration
- */
-
-/* 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
-
-/*
- * SDIO/MMC Card Configuration
- */
-#define CONFIG_SYS_MMC_BASE            MVEBU_SDIO_BASE
-
-/*
- * SATA/SCSI/AHCI configuration
- */
-#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)
-
 /* USB/EHCI configuration */
 #define CONFIG_EHCI_IS_TDI
 
 #define BOOT_TARGET_DEVICES_USB(func)
 #endif
 
+#ifdef CONFIG_SCSI
+#define BOOT_TARGET_DEVICES_SCSI(func) func(SCSI, scsi, 0)
+#else
+#define BOOT_TARGET_DEVICES_SCSI(func)
+#endif
+
 #define BOOT_TARGET_DEVICES(func) \
        BOOT_TARGET_DEVICES_MMC(func) \
        BOOT_TARGET_DEVICES_USB(func) \
+       BOOT_TARGET_DEVICES_SCSI(func) \
        func(PXE, pxe, na) \
        func(DHCP, dhcp, na)
 
index 31a9c59ed5b356029969165cfabf4494c6f76c1c..bec7b68794cd572a731db019e397f1e8b52e2727 100644 (file)
@@ -94,9 +94,6 @@
 #define CONFIG_SYS_NAND_DATA_BASE                      0x68000000
 #define CONFIG_SYS_NAND_BAD_BLOCK_POS                  0
 
-/* SD/MMC */
-#define CONFIG_SUPPORT_EMMC_BOOT
-
 /* memtest works on */
 #define CONFIG_SYS_MEMTEST_START       CONFIG_SYS_SDRAM_BASE
 #define CONFIG_SYS_MEMTEST_END         (CONFIG_SYS_SDRAM_BASE + 0x01000000)
index ec22a30cda129b21cc1325cbf5f069c88c658704..eebb3f7ca789cdb913514687d4756649a502fe29 100644 (file)
@@ -43,7 +43,6 @@
 /* MMC */
 
 #ifdef CONFIG_CMD_MMC
-#define CONFIG_SUPPORT_EMMC_BOOT
 #define CONFIG_GENERIC_ATMEL_MCI
 #define ATMEL_BASE_MMCI                        0xfc000000
 #define CONFIG_SYS_MMC_CLK_OD          500000
index d3cbdc6f2e493965e23191fc8b76dbfb684fe177..fd98c1417e7040ac36bb8dd5aa851c1dbf5f1822 100644 (file)
@@ -95,7 +95,6 @@
 #define CONFIG_ENV_SIZE_REDUND         CONFIG_ENV_SIZE
 
 #ifdef CONFIG_ENV_IS_IN_MMC
-#define CONFIG_SUPPORT_EMMC_BOOT
 #define CONFIG_SYS_MMC_ENV_DEV         0 /* USDHC4 eMMC */
 /* 0=user, 1=boot0, 2=boot1, * 4..7=general0..3. */
 #define CONFIG_SYS_MMC_ENV_PART                1 /* boot0 */
index 9aa8a48d3d853f37ab6570d8190eeefb316ad098..5345f5314d66607af64fe52e9c525ee0ba2640cb 100644 (file)
@@ -23,7 +23,6 @@
 /* MMC Configs */
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC2_BASE_ADDR
 #define CONFIG_SYS_FSL_ESDHC_HAS_DDR_MODE
-#define CONFIG_SUPPORT_EMMC_BOOT
 
 /* Watchdog */
 #define CONFIG_WATCHDOG_TIMEOUT_MSECS 30000 /* 30s */
index 37649cf2c5f710aa09b2a25a3891b76b9a07852c..0ef8e3594804883169688d9cd1dfbe741be2e222 100644 (file)
@@ -29,7 +29,6 @@
 
 /* MMC Config*/
 #define CONFIG_SYS_FSL_ESDHC_ADDR       USDHC3_BASE_ADDR
-#define CONFIG_SUPPORT_EMMC_BOOT
 #define CONFIG_SYS_FSL_ESDHC_HAS_DDR_MODE
 #define CONFIG_SYS_MMC_IMG_LOAD_PART   1
 
index 37a9ae90e5c4a8e60a9f9f9cca1ab36dbb6e71b9..684faaee2e80da825662c100685f363a88e01b78 100644 (file)
 #define CONFIG_BOOTP_BOOTFILESIZE
 #define CONFIG_BOOTP_MAY_FAIL
 
-#if defined(CONFIG_MMC_SDHCI_ZYNQ)
-# define CONFIG_SUPPORT_EMMC_BOOT
-#endif
-
 #ifdef CONFIG_NAND_ARASAN
 # define CONFIG_SYS_MAX_NAND_DEVICE    1
 # define CONFIG_SYS_NAND_ONFI_DETECTION
index 08e0ca0c8f157c770f4b9742ac5bf3e8028e5885..4cbf8aa5261daf856e84e2ae6de53b5634540534 100644 (file)
@@ -21,7 +21,6 @@
 
 /* MMC Configs */
 #define CONFIG_SYS_FSL_ESDHC_ADDR      USDHC2_BASE_ADDR
-#define CONFIG_SUPPORT_EMMC_BOOT       /* eMMC specific */
 
 /* I2C configs */
 #define CONFIG_SYS_I2C
index 40d33f7830a52ba44e52d4281b15eaa4c009a0b1..77ff04754bc9b6eb287ba7f1d79cd1fdf4f2ee85 100644 (file)
@@ -12,8 +12,6 @@
 #define CONSOLE_DEV            "ttymxc1"
 #define CONFIG_MMCROOT                 "/dev/mmcblk0p2"
 
-#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
-
 #include "el6x_common.h"
 
 /* Ethernet */
index b9673e2c0651f029bfee40817489b34ec361aa66..e4fe7a462d237ca16f388721d95d3ec4a43b4abb 100644 (file)
@@ -13,8 +13,6 @@
 #define CONSOLE_DEV            "ttymxc1"
 #define CONFIG_MMCROOT                 "/dev/mmcblk0p1"
 
-#define CONFIG_SUPPORT_EMMC_BOOT /* eMMC specific */
-
 #include "el6x_common.h"
 
 /* Ethernet */
diff --git a/include/dt-bindings/pinctrl/k3-am65.h b/include/dt-bindings/pinctrl/k3-am65.h
deleted file mode 100644 (file)
index c86c9fd..0000000
+++ /dev/null
@@ -1,49 +0,0 @@
-/* SPDX-License-Identifier: GPL-2.0 */
-/*
- * This header provides constants for TI K3-AM65 pinctrl bindings.
- *
- * Copyright (C) 2018 Texas Instruments
- */
-#ifndef _DT_BINDINGS_PINCTRL_TI_K3_AM65_H
-#define _DT_BINDINGS_PINCTRL_TI_K3_AM65_H
-
-/* K3 mux mode options for each pin. See TRM for options */
-#define MUX_MODE0      0
-#define MUX_MODE1      1
-#define MUX_MODE2      2
-#define MUX_MODE3      3
-#define MUX_MODE4      4
-#define MUX_MODE5      5
-#define MUX_MODE6      6
-#define MUX_MODE7      7
-#define MUX_MODE15     15
-
-#define PULL_DISABLE           (1 << 16)
-#define PULL_UP                        (1 << 17)
-#define INPUT_EN               (1 << 18)
-#define SLEWCTRL_200MHZ                0
-#define SLEWCTRL_150MHZ                (1 << 19)
-#define SLEWCTRL_100MHZ                (2 << 19)
-#define SLEWCTRL_50MHZ         (3 << 19)
-#define TX_DIS                 (1 << 21)
-#define ISO_OVR                        (1 << 22)
-#define ISO_BYPASS             (1 << 23)
-#define DS_EN                  (1 << 24)
-#define DS_INPUT               (1 << 25)
-#define DS_FORCE_OUT_HIGH      (1 << 26)
-#define DS_PULL_UP_DOWN_EN     0
-#define DS_PULL_UP_DOWN_DIS    (1 << 27)
-#define DS_PULL_UP_SEL         (1 << 28)
-#define WAKEUP_ENABLE          (1 << 29)
-
-#define PIN_OUTPUT             (PULL_DISABLE)
-#define PIN_OUTPUT_PULLUP      (PULL_UP)
-#define PIN_OUTPUT_PULLDOWN    0
-#define PIN_INPUT              (INPUT_EN | PULL_DISABLE)
-#define PIN_INPUT_PULLUP       (INPUT_EN | PULL_UP)
-#define PIN_INPUT_PULLDOWN     (INPUT_EN)
-
-#define AM65X_IOPAD(pa, val)           (((pa) & 0x1fff)) (val)
-#define AM65X_WKUP_IOPAD(pa, val)      (((pa) & 0x1fff)) (val)
-
-#endif
diff --git a/include/dt-bindings/pinctrl/k3.h b/include/dt-bindings/pinctrl/k3.h
new file mode 100644 (file)
index 0000000..a67521c
--- /dev/null
@@ -0,0 +1,38 @@
+/* SPDX-License-Identifier: GPL-2.0 */
+/*
+ * This header provides constants for TI K3-AM65 pinctrl bindings.
+ *
+ * Copyright (C) 2018 Texas Instruments
+ */
+#ifndef _DT_BINDINGS_PINCTRL_TI_K3_AM65_H
+#define _DT_BINDINGS_PINCTRL_TI_K3_AM65_H
+
+#define PULL_DISABLE           (1 << 16)
+#define PULL_UP                        (1 << 17)
+#define INPUT_EN               (1 << 18)
+#define SLEWCTRL_200MHZ                0
+#define SLEWCTRL_150MHZ                (1 << 19)
+#define SLEWCTRL_100MHZ                (2 << 19)
+#define SLEWCTRL_50MHZ         (3 << 19)
+#define TX_DIS                 (1 << 21)
+#define ISO_OVR                        (1 << 22)
+#define ISO_BYPASS             (1 << 23)
+#define DS_EN                  (1 << 24)
+#define DS_INPUT               (1 << 25)
+#define DS_FORCE_OUT_HIGH      (1 << 26)
+#define DS_PULL_UP_DOWN_EN     0
+#define DS_PULL_UP_DOWN_DIS    (1 << 27)
+#define DS_PULL_UP_SEL         (1 << 28)
+#define WAKEUP_ENABLE          (1 << 29)
+
+#define PIN_OUTPUT             (PULL_DISABLE)
+#define PIN_OUTPUT_PULLUP      (PULL_UP)
+#define PIN_OUTPUT_PULLDOWN    0
+#define PIN_INPUT              (INPUT_EN | PULL_DISABLE)
+#define PIN_INPUT_PULLUP       (INPUT_EN | PULL_UP)
+#define PIN_INPUT_PULLDOWN     (INPUT_EN)
+
+#define AM65X_IOPAD(pa, val, muxmode)          (((pa) & 0x1fff)) ((val) | (muxmode))
+#define AM65X_WKUP_IOPAD(pa, val, muxmode)     (((pa) & 0x1fff)) ((val) | (muxmode))
+
+#endif
index 39ed8a6fa592de197fc483dbfb034a16b9e1708a..7af3f16ef840dd85856559825b3567025c4f0e02 100644 (file)
@@ -207,12 +207,17 @@ struct efi_object {
  * struct efi_loaded_image_obj - handle of a loaded image
  *
  * @header:            EFI object header
+ * @exit_status:       exit status passed to Exit()
+ * @exit_data_size:    exit data size passed to Exit()
+ * @exit_data:         exit data passed to Exit()
  * @exit_jmp:          long jump buffer for returning form started image
  * @entry:             entry address of the relocated image
  */
 struct efi_loaded_image_obj {
        struct efi_object header;
        efi_status_t exit_status;
+       efi_uintn_t *exit_data_size;
+       u16 **exit_data;
        struct jmp_buf_data exit_jmp;
        EFIAPI efi_status_t (*entry)(efi_handle_t image_handle,
                                     struct efi_system_table *st);
@@ -560,7 +565,7 @@ struct efi_load_option {
        u16 file_path_length;
        u16 *label;
        struct efi_device_path *file_path;
-       u8 *optional_data;
+       const u8 *optional_data;
 };
 
 void efi_deserialize_load_option(struct efi_load_option *lo, u8 *data);
index 49d3d6d0b47b96d2bfdf53f842f006090b8aa002..dd42e49023c3f29011cad9abf2b76a7c54724e35 100644 (file)
@@ -16,7 +16,7 @@
 
 #define EFI_ST_SUCCESS 0
 #define EFI_ST_FAILURE 1
-
+#define EFI_ST_SUCCESS_STR L"SUCCESS"
 /*
  * Prints a message.
  */
index 6854597700ff4d7298fec81f643ec9c249209b99..7601b0343bcd5f57ec649671c376a8b9531f36bc 100644 (file)
@@ -71,30 +71,33 @@ int fs_exists(const char *filename);
  */
 int fs_size(const char *filename, loff_t *size);
 
-/*
- * fs_read - Read file from the partition previously set by fs_set_blk_dev()
- * Note that not all filesystem types support either/both offset!=0 or len!=0.
+/**
+ * fs_read() - read file from the partition previously set by fs_set_blk_dev()
+ *
+ * Note that not all filesystem drivers support either or both of offset != 0
+ * and len != 0.
  *
- * @filename: Name of file to read from
- * @addr: The address to read into
- * @offset: The offset in file to read from
- * @len: The number of bytes to read. Maybe 0 to read entire file
- * @actread: Returns the actual number of bytes read
- * @return 0 if ok with valid *actread, -1 on error conditions
+ * @filename:  full path of the file to read from
+ * @addr:      address of the buffer to write to
+ * @offset:    offset in the file from where to start reading
+ * @len:       the number of bytes to read. Use 0 to read entire file.
+ * @actread:   returns the actual number of bytes read
+ * Return:     0 if OK with valid *actread, -1 on error conditions
  */
 int fs_read(const char *filename, ulong addr, loff_t offset, loff_t len,
            loff_t *actread);
 
-/*
- * fs_write - Write file to the partition previously set by fs_set_blk_dev()
- * Note that not all filesystem types support offset!=0.
+/**
+ * fs_write() - write file to the partition previously set by fs_set_blk_dev()
+ *
+ * Note that not all filesystem drivers support offset != 0.
  *
- * @filename: Name of file to read from
- * @addr: The address to read into
- * @offset: The offset in file to read from. Maybe 0 to write to start of file
- * @len: The number of bytes to write
- * @actwrite: Returns the actual number of bytes written
- * @return 0 if ok with valid *actwrite, -1 on error conditions
+ * @filename:  full path of the file to write to
+ * @addr:      address of the buffer to read from
+ * @offset:    offset in the file from where to start writing
+ * @len:       the number of bytes to write
+ * @actwrite:  returns the actual number of bytes written
+ * Return:     0 if OK with valid *actwrite, -1 on error conditions
  */
 int fs_write(const char *filename, ulong addr, loff_t offset, loff_t len,
             loff_t *actwrite);
index bef37df982e4e9e17d3a223d4c81377812f4bb13..eee493ab5f578fdd81082827ae2cf1f4ab65e8a3 100644 (file)
 /* 55-57 reserved */
 
 #define SDHCI_ADMA_ADDRESS     0x58
+#define SDHCI_ADMA_ADDRESS_HI  0x5c
 
 /* 60-FB reserved */
 
@@ -252,6 +253,38 @@ struct sdhci_ops {
        void (*set_delay)(struct sdhci_host *host);
 };
 
+#if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA)
+#define ADMA_MAX_LEN   65532
+#ifdef CONFIG_DMA_ADDR_T_64BIT
+#define ADMA_DESC_LEN  16
+#else
+#define ADMA_DESC_LEN  8
+#endif
+#define ADMA_TABLE_NO_ENTRIES (CONFIG_SYS_MMC_MAX_BLK_COUNT * \
+                              MMC_MAX_BLOCK_LEN) / ADMA_MAX_LEN
+
+#define ADMA_TABLE_SZ (ADMA_TABLE_NO_ENTRIES * ADMA_DESC_LEN)
+
+/* Decriptor table defines */
+#define ADMA_DESC_ATTR_VALID           BIT(0)
+#define ADMA_DESC_ATTR_END             BIT(1)
+#define ADMA_DESC_ATTR_INT             BIT(2)
+#define ADMA_DESC_ATTR_ACT1            BIT(4)
+#define ADMA_DESC_ATTR_ACT2            BIT(5)
+
+#define ADMA_DESC_TRANSFER_DATA                ADMA_DESC_ATTR_ACT2
+#define ADMA_DESC_LINK_DESC    (ADMA_DESC_ATTR_ACT1 | ADMA_DESC_ATTR_ACT2)
+
+struct sdhci_adma_desc {
+       u8 attr;
+       u8 reserved;
+       u16 len;
+       u32 addr_lo;
+#ifdef CONFIG_DMA_ADDR_T_64BIT
+       u32 addr_hi;
+#endif
+} __packed;
+#endif
 struct sdhci_host {
        const char *name;
        void *ioaddr;
@@ -272,6 +305,17 @@ struct sdhci_host {
        uint    voltages;
 
        struct mmc_config cfg;
+       dma_addr_t start_addr;
+       int flags;
+#define USE_SDMA       (0x1 << 0)
+#define USE_ADMA       (0x1 << 1)
+#define USE_ADMA64     (0x1 << 2)
+#define USE_DMA                (USE_SDMA | USE_ADMA | USE_ADMA64)
+       dma_addr_t adma_addr;
+#if CONFIG_IS_ENABLED(MMC_SDHCI_ADMA)
+       struct sdhci_adma_desc *adma_desc_table;
+       uint desc_slot;
+#endif
 };
 
 #ifdef CONFIG_MMC_SDHCI_IO_ACCESSORS
index 05f82d4a5025e68c832f11fc901ff22f6f884cee..38012506d294ccf1884aa9f633ae5915e0e261a0 100644 (file)
@@ -359,7 +359,7 @@ config LZO
          This enables support for LZO compression algorithm.r
 
 config GZIP
-       bool "Enable gzip decompression support for SPL build"
+       bool "Enable gzip decompression support"
        select ZLIB
        default y
        help
index 4ccba2287572a659d8363144c70e70fcc31b5705..7bf51874c1c12443ac858ecbbb96e275be3da402 100644 (file)
@@ -53,19 +53,20 @@ void efi_deserialize_load_option(struct efi_load_option *lo, u8 *data)
  */
 unsigned long efi_serialize_load_option(struct efi_load_option *lo, u8 **data)
 {
-       unsigned long label_len, option_len;
+       unsigned long label_len;
        unsigned long size;
        u8 *p;
 
        label_len = (u16_strlen(lo->label) + 1) * sizeof(u16);
-       option_len = strlen((char *)lo->optional_data);
 
        /* total size */
        size = sizeof(lo->attributes);
        size += sizeof(lo->file_path_length);
        size += label_len;
        size += lo->file_path_length;
-       size += option_len + 1;
+       if (lo->optional_data)
+               size += (utf8_utf16_strlen((const char *)lo->optional_data)
+                                          + 1) * sizeof(u16);
        p = malloc(size);
        if (!p)
                return 0;
@@ -84,10 +85,10 @@ unsigned long efi_serialize_load_option(struct efi_load_option *lo, u8 **data)
        memcpy(p, lo->file_path, lo->file_path_length);
        p += lo->file_path_length;
 
-       memcpy(p, lo->optional_data, option_len);
-       p += option_len;
-       *(char *)p = '\0';
-
+       if (lo->optional_data) {
+               utf8_utf16_strcpy((u16 **)&p, (const char *)lo->optional_data);
+               p += sizeof(u16); /* size of trailing \0 */
+       }
        return size;
 }
 
index 601b0a2cb88db82d1f9c3ef15d7d41c04f1fde86..e5c46e9f0819b58e4dc80d422f8f44423daa550f 100644 (file)
@@ -423,10 +423,12 @@ static efi_status_t EFIAPI efi_free_pool_ext(void *buffer)
 }
 
 /**
- * efi_add_handle() - add a new object to the object list
- * @obj: object to be added
+ * efi_add_handle() - add a new handle to the object list
  *
- * The protocols list is initialized. The object handle is set.
+ * @handle:    handle to be added
+ *
+ * The protocols list is initialized. The handle is added to the list of known
+ * UEFI objects.
  */
 void efi_add_handle(efi_handle_t handle)
 {
@@ -618,7 +620,7 @@ efi_status_t efi_create_event(uint32_t type, efi_uintn_t notify_tpl,
        }
 
        if ((type & (EVT_NOTIFY_WAIT | EVT_NOTIFY_SIGNAL)) &&
-           (is_valid_tpl(notify_tpl) != EFI_SUCCESS))
+           (!notify_function || is_valid_tpl(notify_tpl) != EFI_SUCCESS))
                return EFI_INVALID_PARAMETER;
 
        evt = calloc(1, sizeof(struct efi_event));
@@ -2626,6 +2628,9 @@ efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle,
 
        efi_is_direct_boot = false;
 
+       image_obj->exit_data_size = exit_data_size;
+       image_obj->exit_data = exit_data;
+
        /* call the image! */
        if (setjmp(&image_obj->exit_jmp)) {
                /*
@@ -2669,6 +2674,41 @@ efi_status_t EFIAPI efi_start_image(efi_handle_t image_handle,
        return EFI_CALL(systab.boottime->exit(image_handle, ret, 0, NULL));
 }
 
+/**
+ * efi_update_exit_data() - fill exit data parameters of StartImage()
+ *
+ * @image_obj          image handle
+ * @exit_data_size     size of the exit data buffer
+ * @exit_data          buffer with data returned by UEFI payload
+ * Return:             status code
+ */
+static efi_status_t efi_update_exit_data(struct efi_loaded_image_obj *image_obj,
+                                        efi_uintn_t exit_data_size,
+                                        u16 *exit_data)
+{
+       efi_status_t ret;
+
+       /*
+        * If exit_data is not provided to StartImage(), exit_data_size must be
+        * ignored.
+        */
+       if (!image_obj->exit_data)
+               return EFI_SUCCESS;
+       if (image_obj->exit_data_size)
+               *image_obj->exit_data_size = exit_data_size;
+       if (exit_data_size && exit_data) {
+               ret = efi_allocate_pool(EFI_BOOT_SERVICES_DATA,
+                                       exit_data_size,
+                                       (void **)image_obj->exit_data);
+               if (ret != EFI_SUCCESS)
+                       return ret;
+               memcpy(*image_obj->exit_data, exit_data, exit_data_size);
+       } else {
+               image_obj->exit_data = NULL;
+       }
+       return EFI_SUCCESS;
+}
+
 /**
  * efi_exit() - leave an EFI application or driver
  * @image_handle:   handle of the application or driver that is exiting
@@ -2709,6 +2749,15 @@ static efi_status_t EFIAPI efi_exit(efi_handle_t image_handle,
        if (ret != EFI_SUCCESS)
                goto out;
 
+       /* Exit data is only foreseen in case of failure. */
+       if (exit_status != EFI_SUCCESS) {
+               ret = efi_update_exit_data(image_obj, exit_data_size,
+                                          exit_data);
+               /* Exiting has priority. Don't return error to caller. */
+               if (ret != EFI_SUCCESS)
+                       EFI_PRINT("%s: out of memory\n", __func__);
+       }
+
        /* Make sure entry/exit counts for EFI world cross-overs match */
        EFI_EXIT(exit_status);
 
index 987cc6dc5f61aaaec7fea74c8e87ecbd0c927a90..776077cc35aa2f22fc55171127f7ba9bcf4d747d 100644 (file)
@@ -452,7 +452,7 @@ efi_status_t efi_free_pages(uint64_t memory, efi_uintn_t pages)
        uint64_t r = 0;
 
        /* Sanity check */
-       if (!memory || (memory & EFI_PAGE_MASK)) {
+       if (!memory || (memory & EFI_PAGE_MASK) || !pages) {
                printf("%s: illegal free 0x%llx, 0x%zx\n", __func__,
                       memory, pages);
                return EFI_INVALID_PARAMETER;
index b32a7b3f9346637d2719251aefafad683dd36982..87db51cbb74fa58c67fd5462e22ce67ca4b55afd 100644 (file)
@@ -79,6 +79,7 @@ out:
  */
 efi_status_t efi_init_obj_list(void)
 {
+       u64 os_indications_supported = 0; /* None */
        efi_status_t ret = EFI_SUCCESS;
 
        /* Initialize once only */
@@ -90,6 +91,16 @@ efi_status_t efi_init_obj_list(void)
        if (ret != EFI_SUCCESS)
                goto out;
 
+       /* Indicate supported features */
+       ret = EFI_CALL(efi_set_variable(L"OsIndicationsSupported",
+                                       &efi_global_variable_guid,
+                                       EFI_VARIABLE_BOOTSERVICE_ACCESS |
+                                       EFI_VARIABLE_RUNTIME_ACCESS,
+                                       sizeof(os_indications_supported),
+                                       &os_indications_supported));
+       if (ret != EFI_SUCCESS)
+               goto out;
+
        /* Initialize system table */
        ret = efi_initialize_system_table();
        if (ret != EFI_SUCCESS)
index b3ca109d811a4f28b08fddee5200a845134aa56f..6b5cfb01cf706b65a056d6becfbbf5d538ab485f 100644 (file)
@@ -9,7 +9,7 @@
  */
 
 #include <common.h>
-#include <efi_api.h>
+#include <efi_selftest.h>
 
 static efi_guid_t loaded_image_protocol_guid = EFI_LOADED_IMAGE_PROTOCOL_GUID;
 
@@ -66,15 +66,22 @@ efi_status_t EFIAPI efi_main(efi_handle_t handle,
                             struct efi_system_table *systable)
 {
        struct efi_simple_text_output_protocol *con_out = systable->con_out;
-       efi_status_t ret = EFI_UNSUPPORTED;
+       efi_status_t ret;
+       u16 text[] = EFI_ST_SUCCESS_STR;
 
        con_out->output_string(con_out, L"EFI application calling Exit\n");
 
-       if (check_loaded_image_protocol(handle, systable) != EFI_SUCCESS)
+       if (check_loaded_image_protocol(handle, systable) != EFI_SUCCESS) {
+               con_out->output_string(con_out,
+                                      L"Loaded image protocol missing\n");
                ret = EFI_NOT_FOUND;
+               goto out;
+       }
 
-       /* The return value is checked by the calling test */
-       systable->boottime->exit(handle, ret, 0, NULL);
+       /* This return value is expected by the calling test */
+       ret = EFI_UNSUPPORTED;
+out:
+       systable->boottime->exit(handle, ret, sizeof(text), text);
 
        /*
         * This statement should not be reached.
index fa4b7d4a9b6597a8455b61f9cf91690420058b08..96049dea868a16a8dc5c44b53aaa51561dc5f06e 100644 (file)
@@ -123,6 +123,9 @@ static int execute(void)
 {
        efi_status_t ret;
        efi_handle_t handle;
+       efi_uintn_t exit_data_size = 0;
+       u16 *exit_data = NULL;
+       u16 expected_text[] = EFI_ST_SUCCESS_STR;
 
        ret = boottime->load_image(false, image_handle, NULL, image,
                                   img.length, &handle);
@@ -130,11 +133,21 @@ static int execute(void)
                efi_st_error("Failed to load image\n");
                return EFI_ST_FAILURE;
        }
-       ret = boottime->start_image(handle, NULL, NULL);
+       ret = boottime->start_image(handle, &exit_data_size, &exit_data);
        if (ret != EFI_UNSUPPORTED) {
                efi_st_error("Wrong return value from application\n");
                return EFI_ST_FAILURE;
        }
+       if (!exit_data || exit_data_size != sizeof(expected_text) ||
+           efi_st_memcmp(exit_data, expected_text, sizeof(expected_text))) {
+               efi_st_error("Incorrect exit data\n");
+               return EFI_ST_FAILURE;
+       }
+       ret = boottime->free_pool(exit_data);
+       if (ret != EFI_SUCCESS) {
+               efi_st_error("Failed to free exit data\n");
+               return EFI_ST_FAILURE;
+       }
 
        return EFI_ST_SUCCESS;
 }
index fa20ee39fc3205e24b77f6faf86b5960b1ae0560..2d4d6ef7e461d15e85cf3a4dbd9a842af1b467bf 100644 (file)
@@ -238,6 +238,8 @@ void gen_rand_uuid(unsigned char *uuid_bin)
        unsigned int *ptr = (unsigned int *)&uuid;
        int i;
 
+       srand(get_ticks() + rand());
+
        /* Set all fields randomly */
        for (i = 0; i < sizeof(struct uuid) / sizeof(*ptr); i++)
                *(ptr + i) = cpu_to_be32(rand());
index 2403825dc98d9c0430eb5b76e8d0bbc83ae09440..3502b8088ff127e8fad7f9b16d4066925ef1039d 100644 (file)
@@ -16,7 +16,6 @@
 #include <efi_loader.h>
 #include <div64.h>
 #include <hexdump.h>
-#include <uuid.h>
 #include <stdarg.h>
 #include <linux/ctype.h>
 #include <linux/err.h>
index c450e1157a53b679c561cac3999e0f8e15522f9a..bc86b848a217f6f6c1c307b77cddb89f81be0f05 100644 (file)
@@ -118,7 +118,6 @@ CONFIG_BMP_32BPP
 CONFIG_BOARDDIR
 CONFIG_BOARDNAME
 CONFIG_BOARDNAME_LOCAL
-CONFIG_BOARD_AXM
 CONFIG_BOARD_COMMON
 CONFIG_BOARD_ECC_SUPPORT
 CONFIG_BOARD_IS_OPENRD_BASE
@@ -128,7 +127,6 @@ CONFIG_BOARD_NAME
 CONFIG_BOARD_POSTCLK_INIT
 CONFIG_BOARD_REVISION_TAG
 CONFIG_BOARD_SIZE_LIMIT
-CONFIG_BOARD_TAURUS
 CONFIG_BOOGER
 CONFIG_BOOTBLOCK
 CONFIG_BOOTFILE
@@ -1939,7 +1937,6 @@ CONFIG_ST_SMI
 CONFIG_SUNXI_GPIO
 CONFIG_SUNXI_MAX_FB_SIZE
 CONFIG_SUPERH_ON_CHIP_R8A66597
-CONFIG_SUPPORT_EMMC_BOOT
 CONFIG_SUVD3
 CONFIG_SXNI855T
 CONFIG_SYSFLAGS_ADDR
index 12a3027e234e819ec7c01f75d51396abc101d702..eadeba417dcb33fac788ed0e1891c146f4176773 100644 (file)
@@ -272,6 +272,7 @@ subdir- += env
 
 ifneq ($(CROSS_BUILD_TOOLS),)
 override HOSTCC = $(CC)
+override HOSTCFLAGS = $(CFLAGS)
 
 quiet_cmd_crosstools_strip = STRIP   $^
       cmd_crosstools_strip = $(STRIP) $^; touch $@
index dffaf9043a040815efedac502338308e3228eb9d..b8f8d38212f5c00ee79bf89dd63ef585b27eacb2 100644 (file)
@@ -701,7 +701,7 @@ int kwb_verify(RSA *key, void *data, int datasz, struct sig_v1 *sig,
                goto err_ctx;
        }
 
-       if (!EVP_VerifyFinal(ctx, sig->sig, sizeof(sig->sig), evp_key)) {
+       if (EVP_VerifyFinal(ctx, sig->sig, sizeof(sig->sig), evp_key) != 1) {
                ret = openssl_err("Could not verify signature");
                goto err_ctx;
        }