#
-# Copyright (C) 2013 OpenWrt.org
+# Copyright (C) 2013-2016 OpenWrt.org
+# Copyright (C) 2017 Yousong Zhou
#
# This is free software, licensed under the GNU General Public License v2.
# See /LICENSE for more information.
#
include $(TOPDIR)/rules.mk
+include $(INCLUDE_DIR)/kernel.mk
-PKG_NAME:=u-boot
-PKG_VERSION:=2013.10-rc2-sunxi
-PKG_RELEASE:=1
-PKG_SOURCE_PROTO:=git
-PKG_SOURCE_URL:=git://github.com/linux-sunxi/u-boot-sunxi
-PKG_SOURCE_SUBDIR:=$(PKG_NAME)-$(PKG_VERSION)
-PKG_SOURCE_VERSION:=b322f6723d59b9bb88701991c7b8b15867bf3692
-PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION)-$(PKG_SOURCE_VERSION).tar.gz
-PKG_BUILD_DIR:=$(BUILD_DIR)/$(PKG_NAME)-$(BUILD_VARIANT)/$(PKG_NAME)-$(PKG_VERSION)
+PKG_VERSION:=2017.07
+PKG_HASH:=5374bfdc8acb9a38c025371b1ff20f45e7533668e84e685d0df5d9e7c0e4feff
+
+PKG_MAINTAINER:=Zoltan HERPAI <wigyori@uid0.hu>
+
+include $(INCLUDE_DIR)/u-boot.mk
include $(INCLUDE_DIR)/package.mk
-define uboot/Default
- TITLE:=
- CONFIG:=
- IMAGE:=
+define U-Boot/Default
+ BUILD_TARGET:=sunxi
+ UBOOT_IMAGE:=u-boot-sunxi-with-spl.bin
+ UENV:=default
+ HIDDEN:=1
endef
-define uboot/A10-OLinuXino-Lime
- TITLE:=U-Boot 2013.10-rc2 for the A10 OLinuXino LIME
+define U-Boot/A10-OLinuXino-Lime
+ BUILD_SUBTARGET:=cortexa8
+ NAME:=A10 OLinuXino LIME
+ BUILD_DEVICES:=sun4i-a10-olinuxino-lime
endef
-define uboot/A13-OLinuXino
- TITLE:=U-Boot 2013.10-rc2 for the A13 OlinuXino
+define U-Boot/A13-OLinuXino
+ BUILD_SUBTARGET:=cortexa8
+ NAME:=A13 OlinuXino
+ BUILD_DEVICES:=sun5i-a13-olinuxino
endef
-define uboot/A20-OLinuXino_MICRO
- TITLE:=U-Boot 2013.10-rc2 for A20 OLinuXino MICRO
+define U-Boot/A20-OLinuXino-Lime
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=A20 OLinuXino LIME
+ BUILD_DEVICES:=sun7i-a20-olinuxino-lime
endef
-define uboot/Cubieboard
- TITLE:=U-Boot 2013.10-rc2 for Cubieboard
+define U-Boot/A20-OLinuXino-Lime2
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=A20 OLinuXino LIME2
+ BUILD_DEVICES:=sun7i-a20-olinuxino-lime2
endef
-define uboot/Cubieboard2
- TITLE:=U-Boot 2013.10-rc2 for Cubieboard2
+define U-Boot/A20-OLinuXino-Lime2-eMMC
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=A20 OLinuXino LIME2 eMMC
+ BUILD_DEVICES:=sun7i-a20-olinuxino-lime2-emmc
endef
-define uboot/Cubietruck
- TITLE:=U-Boot 2013.10-rc2 for Cubietruck
+define U-Boot/A20-OLinuXino_MICRO
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=A20 OLinuXino MICRO
+ BUILD_DEVICES:=sun7i-a20-olinuxino-micro
endef
-define uboot/Hackberry
- TITLE:=U-Boot 2013.10-rc2 for the Hackbeery
+define U-Boot/Bananapi
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Bananapi
+ BUILD_DEVICES:=sun7i-a20-bananapi
endef
-define uboot/pcDuino
- TITLE:=U-Boot 2013.10-rc2 for pcDuino
-endef
+define U-Boot/Bananapro
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Bananapro
+ BUILD_DEVICES:=sun7i-a20-bananapro
+endef
-UBOOTS:=A10-OLinuXino-Lime A13-OLinuXino A20-OLinuXino_MICRO Cubieboard Cubieboard2 Cubietruck Hackberry pcDuino
+define U-Boot/Cubieboard
+ BUILD_SUBTARGET:=cortexa8
+ NAME:=Cubieboard
+ BUILD_DEVICES:=sun4i-a10-cubieboard
+endef
-define Package/uboot/template
-define Package/uboot-sunxi-$(1)
- SECTION:=boot
- CATEGORY:=Boot Loaders
- DEPENDS:=@TARGET_sunxi
- TITLE:=$(2)
- URL:=http://www.denx.de/wiki/U-Boot
- VARIANT:=$(1)
- MAINTAINER:=Zoltan HERPAI <wigyori@uid0.hu>
+define U-Boot/Cubieboard2
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Cubieboard2
+ BUILD_DEVICES:=sun7i-a20-cubieboard2
endef
+
+define U-Boot/Cubietruck
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Cubietruck
+ BUILD_DEVICES:=sun7i-a20-cubietruck
endef
-define BuildUBootPackage
- $(eval $(uboot/Default))
- $(eval $(uboot/$(1)))
- $(call Package/uboot/template,$(1),$(TITLE))
+define U-Boot/Hummingbird_A31
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Hummingbird A31 board
endef
-ifdef BUILD_VARIANT
-$(eval $(call uboot/$(BUILD_VARIANT)))
-UBOOT_CONFIG:=$(if $(CONFIG),$(CONFIG),$(BUILD_VARIANT))
-UBOOT_IMAGE:=$(if $(IMAGE),$(IMAGE),openwrt-$(BOARD)-$(BUILD_VARIANT)-u-boot.bin)
-endif
+define U-Boot/Marsboard_A10
+ BUILD_SUBTARGET:=cortexa8
+ NAME:=Marsboard
+ BUILD_DEVICES:=sun4i-a10-marsboard
+endef
+
+define U-Boot/Mele_M9
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Mele M9 (A31)
+ BUILD_DEVICES:=sun6i-a31-m9
+endef
+
+define U-Boot/OLIMEX_A13_SOM
+ BUILD_SUBTARGET:=cortexa8
+ NAME:=Olimex A13 SOM
+ BUILD_DEVICES:=sun5i-a13-olimex-som
+endef
+
+define U-Boot/Linksprite_pcDuino
+ BUILD_SUBTARGET:=cortexa8
+ NAME:=Linksprite pcDuino
+ BUILD_DEVICES:=sun4i-a10-pcduino
+endef
+
+define U-Boot/Linksprite_pcDuino3
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Linksprite pcDuino3
+ BUILD_DEVICES:=sun7i-a20-pcduino3
+endef
+
+define U-Boot/Lamobo_R1
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Lamobo R1
+ BUILD_DEVICES:=sun7i-a20-lamobo-r1
+endef
+
+define U-Boot/nanopi_m1_plus
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=NanoPi M1 Plus (H3)
+ BUILD_DEVICES:=sun8i-h3-nanopi-m1-plus
+endef
+
+define U-Boot/nanopi_neo
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=U-Boot for NanoPi NEO (H3)
+ BUILD_DEVICES:=sun8i-h3-nanopi-neo
+endef
-define Build/Configure
- $(MAKE) -C $(PKG_BUILD_DIR) \
- USE_PRIVATE_LIBGCC=yes $(UBOOT_CONFIG)_config
+define U-Boot/orangepi_r1
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Orange Pi R1 (H2+)
+ BUILD_DEVICES:=sun8i-h2-plus-orangepi-r1
endef
-define Build/Compile
- $(MAKE) -C $(PKG_BUILD_DIR) \
- CROSS_COMPILE=$(TARGET_CROSS)
+define U-Boot/orangepi_plus
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Orange Pi Plus (H3)
+ BUILD_DEVICES:=sun8i-h3-orangepi-plus
endef
-define Package/uboot/install/default
- $(INSTALL_DIR) $(BIN_DIR)/uboot-$(BOARD)-$(1)
- $(CP) $(PKG_BUILD_DIR)/u-boot.bin \
- $(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-u-boot.bin
- $(CP) $(PKG_BUILD_DIR)/spl/sunxi-spl.bin \
- $(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-spl.bin
- $(CP) $(PKG_BUILD_DIR)/u-boot-sunxi-with-spl.bin \
- $(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-u-boot-with-spl.bin
- $(CP) uEnv.txt \
- $(BIN_DIR)/uboot-$(BOARD)-$(1)/openwrt-$(BOARD)-$(1)-uEnv.txt
+define U-Boot/orangepi_2
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Orange Pi 2 (H3)
+ BUILD_DEVICES:=sun8i-h3-orangepi-2
endef
-define Package/uboot/install/template
-define Package/uboot-sunxi-$(1)/install
- $(call Package/uboot/install/default,$(2))
+define U-Boot/pangolin
+ BUILD_SUBTARGET:=cortexa7
+ NAME:=Theobroma A31-yQ7 devboard
+ UENV:=pangolin
endef
+
+define U-Boot/nanopi_neo_plus2
+ BUILD_SUBTARGET:=cortexa53
+ NAME:=NanoPi NEO Plus2 (H5)
+ BUILD_DEVICES:=sun50i-h5-nanopi-neo-plus2
+ DEPENDS:=+PACKAGE_u-boot-nanopi_neo_plus2:arm-trusted-firmware-sunxi
+ UENV:=a64
+endef
+
+define U-Boot/pine64_plus
+ BUILD_SUBTARGET:=cortexa53
+ NAME:=Pine64 Plus A64
+ BUILD_DEVICES:=sun50i-a64-pine64-plus
+ DEPENDS:=+PACKAGE_u-boot-pine64_plus:arm-trusted-firmware-sunxi
+ UENV:=a64
endef
-$(foreach u,$(UBOOTS), \
- $(eval $(call Package/uboot/install/template,$(u),$(u))) \
-)
+UBOOT_TARGETS := \
+ A10-OLinuXino-Lime \
+ A13-OLinuXino \
+ A20-OLinuXino-Lime \
+ A20-OLinuXino-Lime2 \
+ A20-OLinuXino-Lime2-eMMC \
+ A20-OLinuXino_MICRO \
+ Bananapi \
+ Bananapro \
+ Cubieboard \
+ Cubieboard2 \
+ Cubietruck \
+ Hummingbird_A31 \
+ Marsboard_A10 \
+ Mele_M9 \
+ OLIMEX_A13_SOM \
+ Linksprite_pcDuino \
+ Linksprite_pcDuino3 \
+ Lamobo_R1 \
+ nanopi_m1_plus \
+ nanopi_neo \
+ nanopi_neo_plus2 \
+ orangepi_r1 \
+ orangepi_plus \
+ orangepi_2 \
+ pangolin \
+ pine64_plus
+
+UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes
+
+UBOOT_MAKE_FLAGS += \
+ BL31=$(STAGING_DIR_IMAGE)/bl31.bin
+
+define Build/InstallDev
+ $(INSTALL_DIR) $(STAGING_DIR_IMAGE)
+ifeq ($(SUBTARGET),cortexa53)
+ cat $(PKG_BUILD_DIR)/spl/sunxi-spl.bin $(PKG_BUILD_DIR)/u-boot.itb > $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-u-boot-with-spl.bin
+else
+ $(CP) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-u-boot-with-spl.bin
+endif
+ mkimage -C none -A arm -T script -d uEnv-$(UENV).txt \
+ $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-boot.scr
+endef
+
+define Package/u-boot/install/default
+endef
-$(foreach u,$(UBOOTS), \
- $(eval $(call BuildUBootPackage,$(u))) \
- $(eval $(call BuildPackage,uboot-sunxi-$(u))) \
-)
+$(eval $(call BuildPackage/U-Boot))