mirror of
				https://github.com/Ysurac/openmptcprouter.git
				synced 2025-03-09 15:40:20 +00:00 
			
		
		
		
	Remove BPI-R2 image generation, now available upstream
This commit is contained in:
		
							parent
							
								
									9ae587ca64
								
							
						
					
					
						commit
						a5813fe1e4
					
				
					 18 changed files with 0 additions and 1458 deletions
				
			
		|  | @ -1,58 +0,0 @@ | |||
| #
 | ||||
| # Copyright (C) 2013-2019 OpenWrt.org
 | ||||
| # Copyright (C) 2019 Alexey Loukianov
 | ||||
| #
 | ||||
| # 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_VERSION:=2020.04 | ||||
| 
 | ||||
| PKG_HASH:=fe732aaf037d9cc3c0909bad8362af366ae964bbdac6913a34081ff4ad565372 | ||||
| 
 | ||||
| PKG_MAINTAINER:=Cristian Ciobanu <cioby.service@gmail.com> | ||||
| 
 | ||||
| include $(INCLUDE_DIR)/u-boot.mk | ||||
| include $(INCLUDE_DIR)/package.mk | ||||
| 
 | ||||
| define U-Boot/Default | ||||
|   BUILD_TARGET:=mediatek | ||||
|   UBOOT_IMAGE:=u-boot.bin | ||||
|   UENV:=default | ||||
|   HIDDEN:=1 | ||||
| endef | ||||
| 
 | ||||
| define U-Boot/mt7623n_bpir2 | ||||
|   BUILD_SUBTARGET:=mt7623 | ||||
|   NAME:=Bannana PI R2 (mt7623) | ||||
|   BUILD_DEVICES:=bpi_bananapi-r2 | ||||
| endef | ||||
| 
 | ||||
| UBOOT_TARGETS := \
 | ||||
| 	mt7623n_bpir2 | ||||
| 
 | ||||
| UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes | ||||
| 
 | ||||
| UBOOT_MAKE_FLAGS = \
 | ||||
| 	HOSTCC="$(HOSTCC)" \
 | ||||
| 	HOSTCFLAGS="$(HOST_CFLAGS) $(HOST_CPPFLAGS) -std=gnu11" \
 | ||||
| 	HOSTLDFLAGS="$(HOST_LDFLAGS)" | ||||
| 
 | ||||
| define Build/Prepare | ||||
|         $(call Build/Prepare/Default) | ||||
| 	$(CP) uEnv-$(UENV).txt ${PKG_BUILD_DIR}/uEnv.txt | ||||
| endef | ||||
| 
 | ||||
| define Build/InstallDev | ||||
| 	$(INSTALL_DIR) $(STAGING_DIR_IMAGE) | ||||
| 	$(CP) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-uboot-mediatek.bin | ||||
| 	$(CP) $(PKG_BUILD_DIR)/uEnv.txt $(STAGING_DIR_IMAGE)/$(BUILD_DEVICES)-uEnv.txt | ||||
| endef | ||||
| 
 | ||||
| define Package/u-boot/install/default | ||||
| endef | ||||
| 
 | ||||
| $(eval $(call BuildPackage/U-Boot)) | ||||
|  | @ -1,64 +0,0 @@ | |||
| From 075db54b57761868cd63434b466fffe7ba7a564f Mon Sep 17 00:00:00 2001 | ||||
| From: Cristian Ciobanu <cioby.service@gmail.com> | ||||
| Date: Thu, 9 Apr 2020 17:59:27 +0300 | ||||
| Subject: [PATCH] defconfig: r2: Add additional U-boot options for mt7623n | ||||
| 
 | ||||
| ---
 | ||||
|  configs/mt7623n_bpir2_defconfig | 30 ++++++++++++++++++++++++++++-- | ||||
|  1 file changed, 28 insertions(+), 2 deletions(-) | ||||
| 
 | ||||
| diff --git a/configs/mt7623n_bpir2_defconfig b/configs/mt7623n_bpir2_defconfig
 | ||||
| index 07ddade76a..36a903cbe7 100644
 | ||||
| --- a/configs/mt7623n_bpir2_defconfig
 | ||||
| +++ b/configs/mt7623n_bpir2_defconfig
 | ||||
| @@ -3,7 +3,7 @@ CONFIG_SYS_THUMB_BUILD=y
 | ||||
|  CONFIG_ARCH_MEDIATEK=y | ||||
|  CONFIG_SYS_TEXT_BASE=0x81e00000 | ||||
|  CONFIG_SYS_MALLOC_F_LEN=0x4000 | ||||
| -CONFIG_ENV_SIZE=0x1000
 | ||||
| +CONFIG_ENV_SIZE=0x2000
 | ||||
|  CONFIG_ENV_OFFSET=0x100000 | ||||
|  CONFIG_TARGET_MT7623=y | ||||
|  CONFIG_NR_DRAM_BANKS=1 | ||||
| @@ -14,7 +14,7 @@ CONFIG_SYS_CONSOLE_IS_IN_ENV=y
 | ||||
|  CONFIG_DEFAULT_FDT_FILE="mt7623n-bananapi-bpi-r2" | ||||
|  # CONFIG_DISPLAY_BOARDINFO is not set | ||||
|  CONFIG_HUSH_PARSER=y | ||||
| -CONFIG_SYS_PROMPT="U-Boot> "
 | ||||
| +CONFIG_SYS_PROMPT="BPI-R2> "
 | ||||
|  CONFIG_CMD_BOOTMENU=y | ||||
|  # CONFIG_CMD_ELF is not set | ||||
|  # CONFIG_CMD_XIMG is not set | ||||
| @@ -57,3 +57,29 @@ CONFIG_MTK_TIMER=y
 | ||||
|  CONFIG_WDT_MTK=y | ||||
|  CONFIG_LZMA=y | ||||
|  # CONFIG_EFI_LOADER is not set | ||||
| +
 | ||||
| +CONFIG_LOCALVERSION_AUTO=n
 | ||||
| +CONFIG_USE_DEFAULT_ENV_FILE=y
 | ||||
| +CONFIG_DEFAULT_ENV_FILE="uEnv.txt"
 | ||||
| +CONFIG_CMD_BOOTZ=y
 | ||||
| +CONFIG_OF_LIBFDT_OVERLAY=y
 | ||||
| +
 | ||||
| +#commands used in uenv.txt
 | ||||
| +CONFIG_CMD_ASKENV=y
 | ||||
| +CONFIG_CMD_STRINGS=y
 | ||||
| +CONFIG_CMD_SETEXPR=y
 | ||||
| +CONFIG_CMD_CACHE=y
 | ||||
| +CONFIG_CMD_ERASEENV=y
 | ||||
| +CONFIG_PCI=y
 | ||||
| +CONFIG_DM_PCI=y
 | ||||
| +CONFIG_PCIE_MEDIATEK=y
 | ||||
| +CONFIG_PHY=y
 | ||||
| +CONFIG_PHY_MTK_TPHY=y
 | ||||
| +CONFIG_CMD_PCI=y
 | ||||
| +CONFIG_AHCI=y
 | ||||
| +CONFIG_AHCI_PCI=y
 | ||||
| +CONFIG_SCSI=y
 | ||||
| +CONFIG_DM_SCSI=y
 | ||||
| +CONFIG_SCSI_AHCI=y
 | ||||
| +CONFIG_HAVE_BLOCK_DEVICE=y
 | ||||
| +CONFIG_POWER_MT6323=y
 | ||||
| -- 
 | ||||
| 2.25.1 | ||||
| 
 | ||||
|  | @ -1,23 +0,0 @@ | |||
| From 15e032f5b06ba97a7777bc32aef15e10d0086041 Mon Sep 17 00:00:00 2001 | ||||
| From: Cristian Ciobanu <cioby.service@gmail.com> | ||||
| Date: Wed, 8 Apr 2020 22:27:01 +0300 | ||||
| Subject: [PATCH] u-boot: Modify environment offset for mt7623 | ||||
| 
 | ||||
| ---
 | ||||
|  include/configs/mt7623.h | 1 + | ||||
|  1 file changed, 1 insertion(+) | ||||
| 
 | ||||
| diff --git a/include/configs/mt7623.h b/include/configs/mt7623.h
 | ||||
| index faab0913fc..5d0da71ce9 100644
 | ||||
| --- a/include/configs/mt7623.h
 | ||||
| +++ b/include/configs/mt7623.h
 | ||||
| @@ -56,5 +56,6 @@
 | ||||
|  #define CONFIG_SERVERIP			192.168.1.2 | ||||
|   | ||||
|  #define CONFIG_SYS_MMC_ENV_DEV		0 | ||||
| +#define CONFIG_ENV_OFFSET      0xF3800
 | ||||
|   | ||||
|  #endif | ||||
| -- 
 | ||||
| 2.25.1 | ||||
| 
 | ||||
|  | @ -1,219 +0,0 @@ | |||
| From 798f0fc54926093a074a9cbb011de833a0614c3a Mon Sep 17 00:00:00 2001 | ||||
| From: Frank Wunderlich <frank-w@public-files.de> | ||||
| Date: Fri, 28 Dec 2018 17:56:19 +0100 | ||||
| Subject: [PATCH 1/2] bootmenu: added key-input (1-9,a-f) | ||||
| 
 | ||||
| ---
 | ||||
|  cmd/bootmenu.c | 145 ++++++++++++++++++++++++++++++++----------------- | ||||
|  1 file changed, 94 insertions(+), 51 deletions(-) | ||||
| 
 | ||||
| diff --git a/cmd/bootmenu.c b/cmd/bootmenu.c
 | ||||
| index 3dc2c854ac..fd6ba6c8af 100644
 | ||||
| --- a/cmd/bootmenu.c
 | ||||
| +++ b/cmd/bootmenu.c
 | ||||
| @@ -40,7 +40,22 @@ struct bootmenu_data {
 | ||||
|   | ||||
|  enum bootmenu_key { | ||||
|  	KEY_NONE = 0, | ||||
| -	KEY_UP,
 | ||||
| +	KEY_1,
 | ||||
| +	KEY_2,
 | ||||
| +	KEY_3,
 | ||||
| +	KEY_4,
 | ||||
| +	KEY_5,
 | ||||
| +	KEY_6,
 | ||||
| +	KEY_7,
 | ||||
| +	KEY_8,
 | ||||
| +	KEY_9,
 | ||||
| +	KEY_a,
 | ||||
| +	KEY_b,
 | ||||
| +	KEY_c,
 | ||||
| +	KEY_d,
 | ||||
| +	KEY_e,
 | ||||
| +	KEY_f,
 | ||||
| +	KEY_UP = 20,
 | ||||
|  	KEY_DOWN, | ||||
|  	KEY_SELECT, | ||||
|  }; | ||||
| @@ -78,6 +93,23 @@ static void bootmenu_print_entry(void *data)
 | ||||
|  		puts(ANSI_COLOR_RESET); | ||||
|  } | ||||
|   | ||||
| +bool get_bootmenu_key(enum bootmenu_key *key, int c)
 | ||||
| +{
 | ||||
| +	/* ANSI '1~9' - was pressed */
 | ||||
| +	if (c <= '9' && c >= '1' )
 | ||||
| +	{
 | ||||
| +		*key = c-48;
 | ||||
| +		return true;
 | ||||
| +	}else
 | ||||
| +	/* ANSI 'a~f' -  was pressed */
 | ||||
| +	if (c <= 'f' && c >= 'a' )
 | ||||
| +	{
 | ||||
| +		*key = c-87;
 | ||||
| +		return true;
 | ||||
| +	}
 | ||||
| +	return false;
 | ||||
| +}
 | ||||
| +
 | ||||
|  static void bootmenu_autoboot_loop(struct bootmenu_data *menu, | ||||
|  				enum bootmenu_key *key, int *esc) | ||||
|  { | ||||
| @@ -98,23 +130,23 @@ static void bootmenu_autoboot_loop(struct bootmenu_data *menu,
 | ||||
|   | ||||
|  			menu->delay = -1; | ||||
|  			c = getc(); | ||||
| -
 | ||||
| -			switch (c) {
 | ||||
| -			case '\e':
 | ||||
| -				*esc = 1;
 | ||||
| -				*key = KEY_NONE;
 | ||||
| -				break;
 | ||||
| -			case '\r':
 | ||||
| -				*key = KEY_SELECT;
 | ||||
| -				break;
 | ||||
| -			default:
 | ||||
| -				*key = KEY_NONE;
 | ||||
| -				break;
 | ||||
| +			if (!get_bootmenu_key(key,c))
 | ||||
| +			{
 | ||||
| +				switch (c) {
 | ||||
| +				case '\e':
 | ||||
| +					*esc = 1;
 | ||||
| +					*key = KEY_NONE;
 | ||||
| +					break;
 | ||||
| +				case '\r':
 | ||||
| +					*key = KEY_SELECT;
 | ||||
| +					break;
 | ||||
| +				default:
 | ||||
| +					*key = KEY_NONE;
 | ||||
| +					break;
 | ||||
| +				}
 | ||||
|  			} | ||||
| -
 | ||||
|  			break; | ||||
|  		} | ||||
| -
 | ||||
|  		if (menu->delay < 0) | ||||
|  			break; | ||||
|   | ||||
| @@ -141,47 +173,49 @@ static void bootmenu_loop(struct bootmenu_data *menu,
 | ||||
|   | ||||
|  	c = getc(); | ||||
|   | ||||
| -	switch (*esc) {
 | ||||
| -	case 0:
 | ||||
| -		/* First char of ANSI escape sequence '\e' */
 | ||||
| -		if (c == '\e') {
 | ||||
| -			*esc = 1;
 | ||||
| -			*key = KEY_NONE;
 | ||||
| -		}
 | ||||
| -		break;
 | ||||
| -	case 1:
 | ||||
| -		/* Second char of ANSI '[' */
 | ||||
| -		if (c == '[') {
 | ||||
| -			*esc = 2;
 | ||||
| -			*key = KEY_NONE;
 | ||||
| -		} else {
 | ||||
| -			*esc = 0;
 | ||||
| -		}
 | ||||
| -		break;
 | ||||
| -	case 2:
 | ||||
| -	case 3:
 | ||||
| -		/* Third char of ANSI (number '1') - optional */
 | ||||
| -		if (*esc == 2 && c == '1') {
 | ||||
| -			*esc = 3;
 | ||||
| +	if (!get_bootmenu_key(key,c))
 | ||||
| +	{
 | ||||
| +		switch (*esc) {
 | ||||
| +		case 0:
 | ||||
| +			/* First char of ANSI escape sequence '\e' */
 | ||||
| +			if (c == '\e') {
 | ||||
| +				*esc = 1;
 | ||||
| +				*key = KEY_NONE;
 | ||||
| +			}
 | ||||
| +			break;
 | ||||
| +		case 1:
 | ||||
| +			/* Second char of ANSI '[' */
 | ||||
| +			if (c == '[') {
 | ||||
| +				*esc = 2;
 | ||||
|  			*key = KEY_NONE; | ||||
| +			} else {
 | ||||
| +				*esc = 0;
 | ||||
| +			}
 | ||||
|  			break; | ||||
| -		}
 | ||||
| +		case 2:
 | ||||
| +		case 3:
 | ||||
| +			/* Third char of ANSI (number '1') - optional */
 | ||||
| +			if (*esc == 2 && c == '1') {
 | ||||
| +				*esc = 3;
 | ||||
| +				*key = KEY_NONE;
 | ||||
| +				break;
 | ||||
| +			}
 | ||||
|   | ||||
| -		*esc = 0;
 | ||||
| +			*esc = 0;
 | ||||
|   | ||||
| -		/* ANSI 'A' - key up was pressed */
 | ||||
| -		if (c == 'A')
 | ||||
| -			*key = KEY_UP;
 | ||||
| -		/* ANSI 'B' - key down was pressed */
 | ||||
| -		else if (c == 'B')
 | ||||
| -			*key = KEY_DOWN;
 | ||||
| -		/* other key was pressed */
 | ||||
| -		else
 | ||||
| -			*key = KEY_NONE;
 | ||||
| +			/* ANSI 'A' - key up was pressed */
 | ||||
| +			if (c == 'A')
 | ||||
| +				*key = KEY_UP;
 | ||||
| +			/* ANSI 'B' - key down was pressed */
 | ||||
| +			else if (c == 'B')
 | ||||
| +				*key = KEY_DOWN;
 | ||||
| +			/* other key was pressed */
 | ||||
| +			else
 | ||||
| +				*key = KEY_NONE;
 | ||||
|   | ||||
| -		break;
 | ||||
| +			break;
 | ||||
| +		}
 | ||||
|  	} | ||||
| -
 | ||||
|  	/* enter key was pressed */ | ||||
|  	if (c == '\r') | ||||
|  		*key = KEY_SELECT; | ||||
| @@ -204,6 +238,14 @@ static char *bootmenu_choice_entry(void *data)
 | ||||
|  			bootmenu_loop(menu, &key, &esc); | ||||
|  		} | ||||
|   | ||||
| +		if (key < KEY_UP && key > KEY_NONE)
 | ||||
| +		{
 | ||||
| +			menu->active = key-1;
 | ||||
| +			return NULL;
 | ||||
| +		}
 | ||||
| +		else
 | ||||
| +		{
 | ||||
| +
 | ||||
|  		switch (key) { | ||||
|  		case KEY_UP: | ||||
|  			if (menu->active > 0) | ||||
| @@ -223,6 +265,7 @@ static char *bootmenu_choice_entry(void *data)
 | ||||
|  		default: | ||||
|  			break; | ||||
|  		} | ||||
| +		}
 | ||||
|  	} | ||||
|   | ||||
|  	/* never happens */ | ||||
| @@ -467,7 +510,7 @@ void menu_display_statusline(struct menu *m)
 | ||||
|  	printf(ANSI_CURSOR_POSITION, menu->count + 5, 1); | ||||
|  	puts(ANSI_CLEAR_LINE); | ||||
|  	printf(ANSI_CURSOR_POSITION, menu->count + 6, 1); | ||||
| -	puts("  Press UP/DOWN to move, ENTER to select");
 | ||||
| +	puts("  Press UP/DOWN to move or Press 1~9,a~f to choose, ENTER to select");
 | ||||
|  	puts(ANSI_CLEAR_LINE_TO_END); | ||||
|  	printf(ANSI_CURSOR_POSITION, menu->count + 7, 1); | ||||
|  	puts(ANSI_CLEAR_LINE); | ||||
| -- 
 | ||||
| 2.25.1 | ||||
| 
 | ||||
|  | @ -1,25 +0,0 @@ | |||
| From 39b0c824b56be1000844cedb5faba506b6b09b9b Mon Sep 17 00:00:00 2001 | ||||
| From: Cristian Ciobanu <cioby.service@gmail.com> | ||||
| Date: Fri, 10 Apr 2020 00:41:42 +0300 | ||||
| Subject: [PATCH] Add EXT4 support in U-boot | ||||
| 
 | ||||
| ---
 | ||||
|  configs/mt7623n_bpir2_defconfig | 5 +++++ | ||||
|  1 file changed, 5 insertions(+) | ||||
| 
 | ||||
| diff --git a/configs/mt7623n_bpir2_defconfig b/configs/mt7623n_bpir2_defconfig
 | ||||
| index 36a903cbe7..09b9b6f797 100644
 | ||||
| --- a/configs/mt7623n_bpir2_defconfig
 | ||||
| +++ b/configs/mt7623n_bpir2_defconfig
 | ||||
| @@ -83,3 +83,8 @@ CONFIG_DM_SCSI=y
 | ||||
|  CONFIG_SCSI_AHCI=y | ||||
|  CONFIG_HAVE_BLOCK_DEVICE=y | ||||
|  CONFIG_POWER_MT6323=y | ||||
| +
 | ||||
| +CONFIG_CMD_EXT4=y
 | ||||
| +CONFIG_CMD_EXT4_WRITE=y
 | ||||
| +CONFIG_FS_EXT4=y
 | ||||
| +CONFIG_EXT4_WRITE=y
 | ||||
| -- 
 | ||||
| 2.25.1 | ||||
| 
 | ||||
|  | @ -1,91 +0,0 @@ | |||
| scriptaddr=0x83000000 | ||||
| device=mmc | ||||
| bootenv=uEnv.txt | ||||
| kernel=uImage | ||||
| loadaddr=0x80200000 | ||||
| #default bootargs will be overidden by buildargs | ||||
| bootargs=console=ttyS2,115200 root=/dev/mmcblk1p2 rw rootwait ip=dhcp | ||||
| 
 | ||||
| console=earlyprintk console=ttyS2,115200 console=tty1 fbcon=map:0 | ||||
| roottmpl=${rootdev} rootfstype=ext4 rootwait | ||||
| prepsetroot=setenv setroot setenv root ${roottmpl} | ||||
| bootopts=vmalloc=496M debug=7 initcall_debug=0 | ||||
| graphic=video=1920x1080 drm.debug=0x7 | ||||
| 
 | ||||
| buildargs=setenv bootargs "console=${console} root=${root} ${bootopts} ${graphic}" | ||||
| 
 | ||||
| checkenv=test -e ${device} ${partition} ${bootenv} | ||||
| importenv=env import -t ${scriptaddr} ${filesize} | ||||
| loadbootenv=if fatload ${device} ${partition} ${scriptaddr} ${bootenv};then run importenv;else echo "fatload (${bootenv}) failed";fi | ||||
| resetenv=env default -a;printenv; | ||||
| 
 | ||||
| # Here we assume that SD card id mmcblk1 and eMMC is mmcblk0 in linux. Swap them if your DTS define them in reverse order. | ||||
| usesd=setenv partition 1:1; setenv rootdev /dev/mmcblk1p2; setenv bootdev SD; setenv swaproot 'run useemmc'; | ||||
| useemmc=setenv partition 0:1; setenv rootdev /dev/mmcblk0p2; setenv bootdev eMMC; setenv swaproot 'run usesd'; | ||||
| 
 | ||||
| checkbootedfrom=if itest.l *81dffff0 == 434d4d65 ; then setenv bootedfrom eMMC; else setenv bootedfrom SD; fi; | ||||
| 
 | ||||
| checkroot=fatinfo ${device} ${partition} | ||||
| checksd=fatinfo ${device} 1:1 | ||||
| checkmmc=fatinfo ${device} 0:1 | ||||
| 
 | ||||
| reportbootedfrom=echo "Preloader/U-Boot loaded from ${bootedfrom}."; run validroot || echo "Both SD and eMMC pt#1 are not FAT, falling back to U-Boot shell." | ||||
| reportvalidroot=run validroot || echo "Both SD and eMMC pt#1 are not FAT, falling back to U-Boot shell." | ||||
| reportrootswapwarn=if test "${bootedfrom}" != "${bootdev}" ; then echo "Warning: Partition 1 on ${bootedfrom} is not FAT, failing back to ${bootdev}"; fi; true; | ||||
| reportbootdev=echo "Booting from ${bootdev}." | ||||
| reportboot=run reportbootedfrom reportvalidroot reportrootswapwarn reportbootdev | ||||
| 
 | ||||
| detectroot=run useemmc; run checkbootedfrom; if test "${bootedfrom}" == "SD"; then run usesd; fi; run validateroot; | ||||
| validateroot=setenv validroot false; run checkroot || run swaproot; run checkroot && setenv validroot true || run swaproot; | ||||
| 
 | ||||
| newboot=run prepsetroot; run setroot;run buildargs;printenv bootargs;fatload ${device} ${partition} ${loadaddr} ${kernel}; bootm | ||||
| 
 | ||||
| reloadenv=run detectroot; if run validroot; then if run checkenv; then run loadbootenv; run detectroot; else echo uEnv.txt file not found on ${bootdev}; fi; fi; | ||||
| reloadmenu=run reloadenv; run reportboot; if run validroot; then if run checkenv; then run loadbootenv; else echo uEnv.txt file not found on ${bootdev}; fi; bootmenu; fi; | ||||
| 
 | ||||
| lskernel=ls ${device} ${partition}; | ||||
| lsdtb=ls ${device} ${partition} dtb | ||||
| askkernel=askenv kernelinput "enter uImage-name:"; | ||||
| askdtb=askenv dtbinput "enter dtb-name:"; | ||||
| 
 | ||||
| #bootmenu | ||||
| boot0=run lskernel;run askkernel;if printenv kernelinput ;then setenv kernel ${kernelinput};run lsdtb;run askdtb;if printenv dtbinput ;then setenv fdt ${dtbinput};fi; run newboot2; fi; | ||||
| boot1=run newboot; | ||||
| 
 | ||||
| bootmenu_default=2 | ||||
| bootmenu_0=1. Enter kernel-name to boot from SD/EMMC.=run boot0 | ||||
| bootmenu_1=2. Boot kernel from TFTP.=run bootnet | ||||
| bootmenu_2=3. Boot from SD/EMMC.=run boot1 | ||||
| bootmenu_3=4. Boot from eMMC.=run useemmc; run boot1 | ||||
| bootmenu_4=5. Boot from SD.=run usesd; run boot1 | ||||
| 
 | ||||
| #Netboot | ||||
| ipaddr=192.168.0.11 | ||||
| netmask=255.255.255.0 | ||||
| serverip=192.168.0.10 | ||||
| 
 | ||||
| bootfile=uImage | ||||
| netbootargs=console=ttyS2,115200 root=/dev/mmcblk1p2 rw rootwait | ||||
| #ip=dhcp sets ip on eth0 instead of wan | ||||
| 
 | ||||
| lstftp=tftp ${loadaddr} ${serverip}:files.lst;setexpr listend ${loadaddr} + ${filesize};mw.b ${listend} 00 2;strings ${loadaddr}; | ||||
| #md.b ${loadaddr} 60; | ||||
| 
 | ||||
| bootnet=run lstftp;run askkernel;if printenv kernelinput ;then setenv bootfile "${kernelinput}"; fi;printenv; setenv bootargs ${netbootargs};tftp ${loadaddr} ${bootfile};bootm | ||||
| 
 | ||||
| #separate fdt+dto | ||||
| dtaddr=0x83f00000 | ||||
| fdt_high=0xffffffff | ||||
| 
 | ||||
| loadfdt=fatload ${device} ${partition} ${dtaddr} dtb/${fdt} | ||||
| loadkernel=echo "loading kernel ${kernel}...";fatload ${device} ${partition} ${loadaddr} ${kernel} | ||||
| 
 | ||||
| loaddto=echo "loaddto:${dto}";fdt addr ${dtaddr};fdt resize 8192; setexpr fdtovaddr ${dtaddr} + F000;fatload ${device} ${partition} ${fdtovaddr} dtb/${dto} && fdt apply ${fdtovaddr} | ||||
| loaddtolist=for dto in ${dtolist} ; do run loaddto ; done | ||||
| 
 | ||||
| bootall=if printenv fdt; then run loadfdt; if printenv dtolist;then run loaddtolist;fi; bootm ${loadaddr} - ${dtaddr} ;else bootm; fi | ||||
| newboot2=run prepsetroot; run setroot;run buildargs; printenv bootargs; run loadkernel; run bootall; | ||||
| 
 | ||||
| #automatic reload from sd/emmc | ||||
| bootdelay=0 | ||||
| bootcmd=setenv bootdelay 3; run reloadmenu; | ||||
|  | @ -1,49 +0,0 @@ | |||
| #
 | ||||
| # Copyright (C) 2016 Gary Wang <gary.wang@bananapi.org>
 | ||||
| #
 | ||||
| # 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:=uboot-mtk-bpi-r2 | ||||
| PKG_VERSION:=v1.0 | ||||
| PKG_RELEASE:=1 | ||||
| HOSTCPPFLAGS:="-I." | ||||
| PKG_SOURCE_PROTO:=git | ||||
| PKG_SOURCE_URL:=https://github.com/BPI-SINOVOIP/BPI-R2-LEDE-Uboot.git | ||||
| PKG_SOURCE_VERSION:=b05a4e323e1fd8727fcfe32c35d562f12b88a23b | ||||
| 
 | ||||
| PKG_LICENSE:=GPL-2.0 GPL-2.0+ | ||||
| PKG_LICENSE_FILES:=Licenses/README | ||||
| 
 | ||||
| PKG_MAINTAINER:=Gary Wang <gary.wang@bananapi.com> | ||||
| 
 | ||||
| include $(INCLUDE_DIR)/u-boot.mk | ||||
| include $(INCLUDE_DIR)/package.mk | ||||
| 
 | ||||
| define U-Boot/bpi_r2 | ||||
|   BUILD_TARGET:=mediatek | ||||
|   NAME:=Mediatek Banana Pi R2 board | ||||
|   BUILD_DEVICES:=7623n-bananapi-bpi-r2 | ||||
| endef | ||||
| 
 | ||||
| UBOOT_TARGETS := \
 | ||||
| 	bpi_r2 | ||||
| 
 | ||||
| 
 | ||||
| UBOOT_CONFIGURE_VARS += USE_PRIVATE_LIBGCC=yes | ||||
| 
 | ||||
| define Build/InstallDev | ||||
| 	$(INSTALL_DIR) $(STAGING_DIR_IMAGE) | ||||
| 	$(CP) $(PKG_BUILD_DIR)/$(UBOOT_IMAGE) $(STAGING_DIR_IMAGE)/mtk-bpi-r2-uboot.bin | ||||
| 	$(CP) $(PKG_BUILD_DIR)/bpi_r2_preloader/EMMC_PRELOADER_1600MHz.img $(STAGING_DIR_IMAGE)/mtk-bpi-r2-preloader-emmc.bin | ||||
| 	$(CP) $(PKG_BUILD_DIR)/bpi_r2_preloader/SD_PRELOADER_1600MHz.img $(STAGING_DIR_IMAGE)/mtk-bpi-r2-preloader-sd.bin | ||||
| endef | ||||
| 
 | ||||
| define Package/u-boot/install/default | ||||
| endef | ||||
| 
 | ||||
| $(eval $(call BuildPackage/U-Boot)) | ||||
|  | @ -1,56 +0,0 @@ | |||
| Index: uboot-mtk-bpi-r2-v1.0/arch/arm/include/asm/io.h
 | ||||
| ===================================================================
 | ||||
| --- uboot-mtk-bpi-r2-v1.0.orig/arch/arm/include/asm/io.h
 | ||||
| +++ uboot-mtk-bpi-r2-v1.0/arch/arm/include/asm/io.h
 | ||||
| @@ -75,7 +75,7 @@ static inline phys_addr_t virt_to_phys(v
 | ||||
|  #define __arch_putw(v,a)		(*(volatile unsigned short *)(a) = (v)) | ||||
|  #define __arch_putl(v,a)		(*(volatile unsigned int *)(a) = (v)) | ||||
|   | ||||
| -extern inline void __raw_writesb(unsigned long addr, const void *data,
 | ||||
| +static inline void __raw_writesb(unsigned long addr, const void *data,
 | ||||
|  				 int bytelen) | ||||
|  { | ||||
|  	uint8_t *buf = (uint8_t *)data; | ||||
| @@ -83,7 +83,7 @@ extern inline void __raw_writesb(unsigne
 | ||||
|  		__arch_putb(*buf++, addr); | ||||
|  } | ||||
|   | ||||
| -extern inline void __raw_writesw(unsigned long addr, const void *data,
 | ||||
| +static inline void __raw_writesw(unsigned long addr, const void *data,
 | ||||
|  				 int wordlen) | ||||
|  { | ||||
|  	uint16_t *buf = (uint16_t *)data; | ||||
| @@ -91,7 +91,7 @@ extern inline void __raw_writesw(unsigne
 | ||||
|  		__arch_putw(*buf++, addr); | ||||
|  } | ||||
|   | ||||
| -extern inline void __raw_writesl(unsigned long addr, const void *data,
 | ||||
| +static inline void __raw_writesl(unsigned long addr, const void *data,
 | ||||
|  				 int longlen) | ||||
|  { | ||||
|  	uint32_t *buf = (uint32_t *)data; | ||||
| @@ -99,21 +99,21 @@ extern inline void __raw_writesl(unsigne
 | ||||
|  		__arch_putl(*buf++, addr); | ||||
|  } | ||||
|   | ||||
| -extern inline void __raw_readsb(unsigned long addr, void *data, int bytelen)
 | ||||
| +static inline void __raw_readsb(unsigned long addr, void *data, int bytelen)
 | ||||
|  { | ||||
|  	uint8_t *buf = (uint8_t *)data; | ||||
|  	while(bytelen--) | ||||
|  		*buf++ = __arch_getb(addr); | ||||
|  } | ||||
|   | ||||
| -extern inline void __raw_readsw(unsigned long addr, void *data, int wordlen)
 | ||||
| +static inline void __raw_readsw(unsigned long addr, void *data, int wordlen)
 | ||||
|  { | ||||
|  	uint16_t *buf = (uint16_t *)data; | ||||
|  	while(wordlen--) | ||||
|  		*buf++ = __arch_getw(addr); | ||||
|  } | ||||
|   | ||||
| -extern inline void __raw_readsl(unsigned long addr, void *data, int longlen)
 | ||||
| +static inline void __raw_readsl(unsigned long addr, void *data, int longlen)
 | ||||
|  { | ||||
|  	uint32_t *buf = (uint32_t *)data; | ||||
|  	while(longlen--) | ||||
|  | @ -1,38 +0,0 @@ | |||
| Index: uboot-mtk-bpi-r2-v1.0/arch/arm/lib/board.c
 | ||||
| ===================================================================
 | ||||
| --- uboot-mtk-bpi-r2-v1.0.orig/arch/arm/lib/board.c
 | ||||
| +++ uboot-mtk-bpi-r2-v1.0/arch/arm/lib/board.c
 | ||||
| @@ -69,24 +69,15 @@ extern void dataflash_print_info(void);
 | ||||
|   ************************************************************************ | ||||
|   * May be supplied by boards if desired | ||||
|   */ | ||||
| -inline void __coloured_LED_init(void) {}
 | ||||
| -void coloured_LED_init(void) __attribute__((weak, alias("__coloured_LED_init")));
 | ||||
| -inline void __red_led_on(void) {}
 | ||||
| -void red_led_on(void) __attribute__((weak, alias("__red_led_on")));
 | ||||
| -inline void __red_led_off(void) {}
 | ||||
| -void red_led_off(void) __attribute__((weak, alias("__red_led_off")));
 | ||||
| -inline void __green_led_on(void) {}
 | ||||
| -void green_led_on(void) __attribute__((weak, alias("__green_led_on")));
 | ||||
| -inline void __green_led_off(void) {}
 | ||||
| -void green_led_off(void) __attribute__((weak, alias("__green_led_off")));
 | ||||
| -inline void __yellow_led_on(void) {}
 | ||||
| -void yellow_led_on(void) __attribute__((weak, alias("__yellow_led_on")));
 | ||||
| -inline void __yellow_led_off(void) {}
 | ||||
| -void yellow_led_off(void) __attribute__((weak, alias("__yellow_led_off")));
 | ||||
| -inline void __blue_led_on(void) {}
 | ||||
| -void blue_led_on(void) __attribute__((weak, alias("__blue_led_on")));
 | ||||
| -inline void __blue_led_off(void) {}
 | ||||
| -void blue_led_off(void) __attribute__((weak, alias("__blue_led_off")));
 | ||||
| +__weak void coloured_LED_init(void) {}
 | ||||
| +__weak void red_led_on(void) {}
 | ||||
| +__weak void red_led_off(void) {}
 | ||||
| +__weak void green_led_on(void) {}
 | ||||
| +__weak void green_led_off(void) {}
 | ||||
| +__weak void yellow_led_on(void) {}
 | ||||
| +__weak void yellow_led_off(void) {}
 | ||||
| +__weak void blue_led_on(void) {}
 | ||||
| +__weak void blue_led_off(void) {}
 | ||||
|   | ||||
|  /* | ||||
|   ************************************************************************ | ||||
|  | @ -1,14 +0,0 @@ | |||
| Index: uboot-mtk-bpi-r2-v1.0/common/main.c
 | ||||
| ===================================================================
 | ||||
| --- uboot-mtk-bpi-r2-v1.0.orig/common/main.c
 | ||||
| +++ uboot-mtk-bpi-r2-v1.0/common/main.c
 | ||||
| @@ -27,8 +27,7 @@ DECLARE_GLOBAL_DATA_PTR;
 | ||||
|  /* | ||||
|   * Board-specific Platform code can reimplement show_boot_progress () if needed | ||||
|   */ | ||||
| -void inline __show_boot_progress (int val) {}
 | ||||
| -void show_boot_progress (int val) __attribute__((weak, alias("__show_boot_progress")));
 | ||||
| +__weak void show_boot_progress(int val) {}
 | ||||
|   | ||||
|  #define MAX_DELAY_STOP_STR 32 | ||||
|   | ||||
|  | @ -1,19 +0,0 @@ | |||
| --- a/include/libfdt_env.h
 | ||||
| +++ b/include/libfdt_env.h
 | ||||
| @@ -8,6 +8,7 @@
 | ||||
|   | ||||
|  #ifndef _LIBFDT_ENV_H | ||||
|  #define _LIBFDT_ENV_H | ||||
| +#define LIBFDT_ENV_H
 | ||||
|   | ||||
|  #include "compiler.h" | ||||
|  #include "linux/types.h" | ||||
| --- a/include/libfdt.h
 | ||||
| +++ b/include/libfdt.h
 | ||||
| @@ -1,5 +1,6 @@
 | ||||
|  #ifndef _LIBFDT_H | ||||
|  #define _LIBFDT_H | ||||
| +#define LIBFDT_H
 | ||||
|  /* | ||||
|   * libfdt - Flat Device Tree manipulation | ||||
|   * Copyright (C) 2006 David Gibson, IBM Corporation. | ||||
|  | @ -1,287 +0,0 @@ | |||
| --- /dev/null
 | ||||
| +++ b/include/linux/compiler-gcc7.h
 | ||||
| @@ -0,0 +1,284 @@
 | ||||
| +#ifndef __LINUX_COMPILER_H
 | ||||
| +#error "Please don't include <linux/compiler-gcc.h> directly, include <linux/compiler.h> instead."
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * Common definitions for all gcc versions go here.
 | ||||
| + */
 | ||||
| +#define GCC_VERSION (__GNUC__ * 10000		\
 | ||||
| +		     + __GNUC_MINOR__ * 100	\
 | ||||
| +		     + __GNUC_PATCHLEVEL__)
 | ||||
| +
 | ||||
| +/* Optimization barrier */
 | ||||
| +
 | ||||
| +/* The "volatile" is due to gcc bugs */
 | ||||
| +#define barrier() __asm__ __volatile__("": : :"memory")
 | ||||
| +/*
 | ||||
| + * This version is i.e. to prevent dead stores elimination on @ptr
 | ||||
| + * where gcc and llvm may behave differently when otherwise using
 | ||||
| + * normal barrier(): while gcc behavior gets along with a normal
 | ||||
| + * barrier(), llvm needs an explicit input variable to be assumed
 | ||||
| + * clobbered. The issue is as follows: while the inline asm might
 | ||||
| + * access any memory it wants, the compiler could have fit all of
 | ||||
| + * @ptr into memory registers instead, and since @ptr never escaped
 | ||||
| + * from that, it proofed that the inline asm wasn't touching any of
 | ||||
| + * it. This version works well with both compilers, i.e. we're telling
 | ||||
| + * the compiler that the inline asm absolutely may see the contents
 | ||||
| + * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495
 | ||||
| + */
 | ||||
| +#define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory")
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * This macro obfuscates arithmetic on a variable address so that gcc
 | ||||
| + * shouldn't recognize the original var, and make assumptions about it.
 | ||||
| + *
 | ||||
| + * This is needed because the C standard makes it undefined to do
 | ||||
| + * pointer arithmetic on "objects" outside their boundaries and the
 | ||||
| + * gcc optimizers assume this is the case. In particular they
 | ||||
| + * assume such arithmetic does not wrap.
 | ||||
| + *
 | ||||
| + * A miscompilation has been observed because of this on PPC.
 | ||||
| + * To work around it we hide the relationship of the pointer and the object
 | ||||
| + * using this macro.
 | ||||
| + *
 | ||||
| + * Versions of the ppc64 compiler before 4.1 had a bug where use of
 | ||||
| + * RELOC_HIDE could trash r30. The bug can be worked around by changing
 | ||||
| + * the inline assembly constraint from =g to =r, in this particular
 | ||||
| + * case either is valid.
 | ||||
| + */
 | ||||
| +#define RELOC_HIDE(ptr, off)						\
 | ||||
| +({									\
 | ||||
| +	unsigned long __ptr;						\
 | ||||
| +	__asm__ ("" : "=r"(__ptr) : "0"(ptr));				\
 | ||||
| +	(typeof(ptr)) (__ptr + (off));					\
 | ||||
| +})
 | ||||
| +
 | ||||
| +/* Make the optimizer believe the variable can be manipulated arbitrarily. */
 | ||||
| +#define OPTIMIZER_HIDE_VAR(var)						\
 | ||||
| +	__asm__ ("" : "=r" (var) : "0" (var))
 | ||||
| +
 | ||||
| +#ifdef __CHECKER__
 | ||||
| +#define __must_be_array(a)	0
 | ||||
| +#else
 | ||||
| +/* &a[0] degrades to a pointer: a different type from an array */
 | ||||
| +#define __must_be_array(a)	BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * Force always-inline if the user requests it so via the .config,
 | ||||
| + * or if gcc is too old:
 | ||||
| + */
 | ||||
| +#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) ||		\
 | ||||
| +    !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4)
 | ||||
| +#define inline		inline		__attribute__((always_inline)) notrace
 | ||||
| +#define __inline__	__inline__	__attribute__((always_inline)) notrace
 | ||||
| +#define __inline	__inline	__attribute__((always_inline)) notrace
 | ||||
| +#else
 | ||||
| +/* A lot of inline functions can cause havoc with function tracing */
 | ||||
| +#define inline		inline		notrace
 | ||||
| +#define __inline__	__inline__	notrace
 | ||||
| +#define __inline	__inline	notrace
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#define __always_inline	inline __attribute__((always_inline))
 | ||||
| +#define  noinline	__attribute__((noinline))
 | ||||
| +
 | ||||
| +#define __deprecated	__attribute__((deprecated))
 | ||||
| +#define __packed	__attribute__((packed))
 | ||||
| +#define __weak		__attribute__((weak))
 | ||||
| +#define __alias(symbol)	__attribute__((alias(#symbol)))
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * it doesn't make sense on ARM (currently the only user of __naked)
 | ||||
| + * to trace naked functions because then mcount is called without
 | ||||
| + * stack and frame pointer being set up and there is no chance to
 | ||||
| + * restore the lr register to the value before mcount was called.
 | ||||
| + *
 | ||||
| + * The asm() bodies of naked functions often depend on standard calling
 | ||||
| + * conventions, therefore they must be noinline and noclone.
 | ||||
| + *
 | ||||
| + * GCC 4.[56] currently fail to enforce this, so we must do so ourselves.
 | ||||
| + * See GCC PR44290.
 | ||||
| + */
 | ||||
| +#define __naked		__attribute__((naked)) noinline __noclone notrace
 | ||||
| +
 | ||||
| +#define __noreturn	__attribute__((noreturn))
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * From the GCC manual:
 | ||||
| + *
 | ||||
| + * Many functions have no effects except the return value and their
 | ||||
| + * return value depends only on the parameters and/or global
 | ||||
| + * variables.  Such a function can be subject to common subexpression
 | ||||
| + * elimination and loop optimization just as an arithmetic operator
 | ||||
| + * would be.
 | ||||
| + * [...]
 | ||||
| + */
 | ||||
| +#define __pure			__attribute__((pure))
 | ||||
| +#define __aligned(x)		__attribute__((aligned(x)))
 | ||||
| +#define __printf(a, b)		__attribute__((format(printf, a, b)))
 | ||||
| +#define __scanf(a, b)		__attribute__((format(scanf, a, b)))
 | ||||
| +#define __attribute_const__	__attribute__((__const__))
 | ||||
| +#define __maybe_unused		__attribute__((unused))
 | ||||
| +#define __always_unused		__attribute__((unused))
 | ||||
| +
 | ||||
| +/* gcc version specific checks */
 | ||||
| +
 | ||||
| +#if GCC_VERSION < 30200
 | ||||
| +# error Sorry, your compiler is too old - please upgrade it.
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if GCC_VERSION < 30300
 | ||||
| +# define __used			__attribute__((__unused__))
 | ||||
| +#else
 | ||||
| +# define __used			__attribute__((__used__))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#ifdef CONFIG_GCOV_KERNEL
 | ||||
| +# if GCC_VERSION < 30400
 | ||||
| +#   error "GCOV profiling support for gcc versions below 3.4 not included"
 | ||||
| +# endif /* __GNUC_MINOR__ */
 | ||||
| +#endif /* CONFIG_GCOV_KERNEL */
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 30400
 | ||||
| +#define __must_check		__attribute__((warn_unused_result))
 | ||||
| +#define __malloc		__attribute__((__malloc__))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40000
 | ||||
| +
 | ||||
| +/* GCC 4.1.[01] miscompiles __weak */
 | ||||
| +#ifdef __KERNEL__
 | ||||
| +# if GCC_VERSION >= 40100 &&  GCC_VERSION <= 40101
 | ||||
| +#  error Your version of gcc miscompiles the __weak directive
 | ||||
| +# endif
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#define __used			__attribute__((__used__))
 | ||||
| +#define __compiler_offsetof(a, b)					\
 | ||||
| +	__builtin_offsetof(a, b)
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
 | ||||
| +# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40300
 | ||||
| +/* Mark functions as cold. gcc will assume any path leading to a call
 | ||||
| + * to them will be unlikely.  This means a lot of manual unlikely()s
 | ||||
| + * are unnecessary now for any paths leading to the usual suspects
 | ||||
| + * like BUG(), printk(), panic() etc. [but let's keep them for now for
 | ||||
| + * older compilers]
 | ||||
| + *
 | ||||
| + * Early snapshots of gcc 4.3 don't support this and we can't detect this
 | ||||
| + * in the preprocessor, but we can live with this because they're unreleased.
 | ||||
| + * Maketime probing would be overkill here.
 | ||||
| + *
 | ||||
| + * gcc also has a __attribute__((__hot__)) to move hot functions into
 | ||||
| + * a special section, but I don't see any sense in this right now in
 | ||||
| + * the kernel context
 | ||||
| + */
 | ||||
| +#define __cold			__attribute__((__cold__))
 | ||||
| +
 | ||||
| +#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
 | ||||
| +
 | ||||
| +#ifndef __CHECKER__
 | ||||
| +# define __compiletime_warning(message) __attribute__((warning(message)))
 | ||||
| +# define __compiletime_error(message) __attribute__((error(message)))
 | ||||
| +#endif /* __CHECKER__ */
 | ||||
| +#endif /* GCC_VERSION >= 40300 */
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40500
 | ||||
| +/*
 | ||||
| + * Mark a position in code as unreachable.  This can be used to
 | ||||
| + * suppress control flow warnings after asm blocks that transfer
 | ||||
| + * control elsewhere.
 | ||||
| + *
 | ||||
| + * Early snapshots of gcc 4.5 don't support this and we can't detect
 | ||||
| + * this in the preprocessor, but we can live with this because they're
 | ||||
| + * unreleased.  Really, we need to have autoconf for the kernel.
 | ||||
| + */
 | ||||
| +#define unreachable() __builtin_unreachable()
 | ||||
| +
 | ||||
| +/* Mark a function definition as prohibited from being cloned. */
 | ||||
| +#define __noclone	__attribute__((__noclone__, __optimize__("no-tracer")))
 | ||||
| +
 | ||||
| +#endif /* GCC_VERSION >= 40500 */
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40600
 | ||||
| +/*
 | ||||
| + * When used with Link Time Optimization, gcc can optimize away C functions or
 | ||||
| + * variables which are referenced only from assembly code.  __visible tells the
 | ||||
| + * optimizer that something else uses this function or variable, thus preventing
 | ||||
| + * this.
 | ||||
| + */
 | ||||
| +#define __visible	__attribute__((externally_visible))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40900 && !defined(__CHECKER__)
 | ||||
| +/*
 | ||||
| + * __assume_aligned(n, k): Tell the optimizer that the returned
 | ||||
| + * pointer can be assumed to be k modulo n. The second argument is
 | ||||
| + * optional (default 0), so we use a variadic macro to make the
 | ||||
| + * shorthand.
 | ||||
| + *
 | ||||
| + * Beware: Do not apply this to functions which may return
 | ||||
| + * ERR_PTRs. Also, it is probably unwise to apply it to functions
 | ||||
| + * returning extra information in the low bits (but in that case the
 | ||||
| + * compiler should see some alignment anyway, when the return value is
 | ||||
| + * massaged by 'flags = ptr & 3; ptr &= ~3;').
 | ||||
| + */
 | ||||
| +#define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * GCC 'asm goto' miscompiles certain code sequences:
 | ||||
| + *
 | ||||
| + *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
 | ||||
| + *
 | ||||
| + * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
 | ||||
| + *
 | ||||
| + * (asm goto is automatically volatile - the naming reflects this.)
 | ||||
| + */
 | ||||
| +#define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
 | ||||
| +
 | ||||
| +#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
 | ||||
| +#if GCC_VERSION >= 40400
 | ||||
| +#define __HAVE_BUILTIN_BSWAP32__
 | ||||
| +#define __HAVE_BUILTIN_BSWAP64__
 | ||||
| +#endif
 | ||||
| +#if GCC_VERSION >= 40800
 | ||||
| +#define __HAVE_BUILTIN_BSWAP16__
 | ||||
| +#endif
 | ||||
| +#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 50000
 | ||||
| +#define KASAN_ABI_VERSION 4
 | ||||
| +#elif GCC_VERSION >= 40902
 | ||||
| +#define KASAN_ABI_VERSION 3
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40902
 | ||||
| +/*
 | ||||
| + * Tell the compiler that address safety instrumentation (KASAN)
 | ||||
| + * should not be applied to that function.
 | ||||
| + * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
 | ||||
| + */
 | ||||
| +#define __no_sanitize_address __attribute__((no_sanitize_address))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#endif	/* gcc version >= 40000 specific checks */
 | ||||
| +
 | ||||
| +#if !defined(__noclone)
 | ||||
| +#define __noclone	/* not needed */
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if !defined(__no_sanitize_address)
 | ||||
| +#define __no_sanitize_address
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * A trick to suppress uninitialized variable warning without generating any
 | ||||
| + * code
 | ||||
| + */
 | ||||
| +#define uninitialized_var(x) x = x
 | ||||
|  | @ -1,287 +0,0 @@ | |||
| --- /dev/null
 | ||||
| +++ b/include/linux/compiler-gcc8.h
 | ||||
| @@ -0,0 +1,284 @@
 | ||||
| +#ifndef __LINUX_COMPILER_H
 | ||||
| +#error "Please don't include <linux/compiler-gcc.h> directly, include <linux/compiler.h> instead."
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * Common definitions for all gcc versions go here.
 | ||||
| + */
 | ||||
| +#define GCC_VERSION (__GNUC__ * 10000		\
 | ||||
| +		     + __GNUC_MINOR__ * 100	\
 | ||||
| +		     + __GNUC_PATCHLEVEL__)
 | ||||
| +
 | ||||
| +/* Optimization barrier */
 | ||||
| +
 | ||||
| +/* The "volatile" is due to gcc bugs */
 | ||||
| +#define barrier() __asm__ __volatile__("": : :"memory")
 | ||||
| +/*
 | ||||
| + * This version is i.e. to prevent dead stores elimination on @ptr
 | ||||
| + * where gcc and llvm may behave differently when otherwise using
 | ||||
| + * normal barrier(): while gcc behavior gets along with a normal
 | ||||
| + * barrier(), llvm needs an explicit input variable to be assumed
 | ||||
| + * clobbered. The issue is as follows: while the inline asm might
 | ||||
| + * access any memory it wants, the compiler could have fit all of
 | ||||
| + * @ptr into memory registers instead, and since @ptr never escaped
 | ||||
| + * from that, it proofed that the inline asm wasn't touching any of
 | ||||
| + * it. This version works well with both compilers, i.e. we're telling
 | ||||
| + * the compiler that the inline asm absolutely may see the contents
 | ||||
| + * of @ptr. See also: https://llvm.org/bugs/show_bug.cgi?id=15495
 | ||||
| + */
 | ||||
| +#define barrier_data(ptr) __asm__ __volatile__("": :"r"(ptr) :"memory")
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * This macro obfuscates arithmetic on a variable address so that gcc
 | ||||
| + * shouldn't recognize the original var, and make assumptions about it.
 | ||||
| + *
 | ||||
| + * This is needed because the C standard makes it undefined to do
 | ||||
| + * pointer arithmetic on "objects" outside their boundaries and the
 | ||||
| + * gcc optimizers assume this is the case. In particular they
 | ||||
| + * assume such arithmetic does not wrap.
 | ||||
| + *
 | ||||
| + * A miscompilation has been observed because of this on PPC.
 | ||||
| + * To work around it we hide the relationship of the pointer and the object
 | ||||
| + * using this macro.
 | ||||
| + *
 | ||||
| + * Versions of the ppc64 compiler before 4.1 had a bug where use of
 | ||||
| + * RELOC_HIDE could trash r30. The bug can be worked around by changing
 | ||||
| + * the inline assembly constraint from =g to =r, in this particular
 | ||||
| + * case either is valid.
 | ||||
| + */
 | ||||
| +#define RELOC_HIDE(ptr, off)						\
 | ||||
| +({									\
 | ||||
| +	unsigned long __ptr;						\
 | ||||
| +	__asm__ ("" : "=r"(__ptr) : "0"(ptr));				\
 | ||||
| +	(typeof(ptr)) (__ptr + (off));					\
 | ||||
| +})
 | ||||
| +
 | ||||
| +/* Make the optimizer believe the variable can be manipulated arbitrarily. */
 | ||||
| +#define OPTIMIZER_HIDE_VAR(var)						\
 | ||||
| +	__asm__ ("" : "=r" (var) : "0" (var))
 | ||||
| +
 | ||||
| +#ifdef __CHECKER__
 | ||||
| +#define __must_be_array(a)	0
 | ||||
| +#else
 | ||||
| +/* &a[0] degrades to a pointer: a different type from an array */
 | ||||
| +#define __must_be_array(a)	BUILD_BUG_ON_ZERO(__same_type((a), &(a)[0]))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * Force always-inline if the user requests it so via the .config,
 | ||||
| + * or if gcc is too old:
 | ||||
| + */
 | ||||
| +#if !defined(CONFIG_ARCH_SUPPORTS_OPTIMIZED_INLINING) ||		\
 | ||||
| +    !defined(CONFIG_OPTIMIZE_INLINING) || (__GNUC__ < 4)
 | ||||
| +#define inline		inline		__attribute__((always_inline)) notrace
 | ||||
| +#define __inline__	__inline__	__attribute__((always_inline)) notrace
 | ||||
| +#define __inline	__inline	__attribute__((always_inline)) notrace
 | ||||
| +#else
 | ||||
| +/* A lot of inline functions can cause havoc with function tracing */
 | ||||
| +#define inline		inline		notrace
 | ||||
| +#define __inline__	__inline__	notrace
 | ||||
| +#define __inline	__inline	notrace
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#define __always_inline	inline __attribute__((always_inline))
 | ||||
| +#define  noinline	__attribute__((noinline))
 | ||||
| +
 | ||||
| +#define __deprecated	__attribute__((deprecated))
 | ||||
| +#define __packed	__attribute__((packed))
 | ||||
| +#define __weak		__attribute__((weak))
 | ||||
| +#define __alias(symbol)	__attribute__((alias(#symbol)))
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * it doesn't make sense on ARM (currently the only user of __naked)
 | ||||
| + * to trace naked functions because then mcount is called without
 | ||||
| + * stack and frame pointer being set up and there is no chance to
 | ||||
| + * restore the lr register to the value before mcount was called.
 | ||||
| + *
 | ||||
| + * The asm() bodies of naked functions often depend on standard calling
 | ||||
| + * conventions, therefore they must be noinline and noclone.
 | ||||
| + *
 | ||||
| + * GCC 4.[56] currently fail to enforce this, so we must do so ourselves.
 | ||||
| + * See GCC PR44290.
 | ||||
| + */
 | ||||
| +#define __naked		__attribute__((naked)) noinline __noclone notrace
 | ||||
| +
 | ||||
| +#define __noreturn	__attribute__((noreturn))
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * From the GCC manual:
 | ||||
| + *
 | ||||
| + * Many functions have no effects except the return value and their
 | ||||
| + * return value depends only on the parameters and/or global
 | ||||
| + * variables.  Such a function can be subject to common subexpression
 | ||||
| + * elimination and loop optimization just as an arithmetic operator
 | ||||
| + * would be.
 | ||||
| + * [...]
 | ||||
| + */
 | ||||
| +#define __pure			__attribute__((pure))
 | ||||
| +#define __aligned(x)		__attribute__((aligned(x)))
 | ||||
| +#define __printf(a, b)		__attribute__((format(printf, a, b)))
 | ||||
| +#define __scanf(a, b)		__attribute__((format(scanf, a, b)))
 | ||||
| +#define __attribute_const__	__attribute__((__const__))
 | ||||
| +#define __maybe_unused		__attribute__((unused))
 | ||||
| +#define __always_unused		__attribute__((unused))
 | ||||
| +
 | ||||
| +/* gcc version specific checks */
 | ||||
| +
 | ||||
| +#if GCC_VERSION < 30200
 | ||||
| +# error Sorry, your compiler is too old - please upgrade it.
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if GCC_VERSION < 30300
 | ||||
| +# define __used			__attribute__((__unused__))
 | ||||
| +#else
 | ||||
| +# define __used			__attribute__((__used__))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#ifdef CONFIG_GCOV_KERNEL
 | ||||
| +# if GCC_VERSION < 30400
 | ||||
| +#   error "GCOV profiling support for gcc versions below 3.4 not included"
 | ||||
| +# endif /* __GNUC_MINOR__ */
 | ||||
| +#endif /* CONFIG_GCOV_KERNEL */
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 30400
 | ||||
| +#define __must_check		__attribute__((warn_unused_result))
 | ||||
| +#define __malloc		__attribute__((__malloc__))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40000
 | ||||
| +
 | ||||
| +/* GCC 4.1.[01] miscompiles __weak */
 | ||||
| +#ifdef __KERNEL__
 | ||||
| +# if GCC_VERSION >= 40100 &&  GCC_VERSION <= 40101
 | ||||
| +#  error Your version of gcc miscompiles the __weak directive
 | ||||
| +# endif
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#define __used			__attribute__((__used__))
 | ||||
| +#define __compiler_offsetof(a, b)					\
 | ||||
| +	__builtin_offsetof(a, b)
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40100 && GCC_VERSION < 40600
 | ||||
| +# define __compiletime_object_size(obj) __builtin_object_size(obj, 0)
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40300
 | ||||
| +/* Mark functions as cold. gcc will assume any path leading to a call
 | ||||
| + * to them will be unlikely.  This means a lot of manual unlikely()s
 | ||||
| + * are unnecessary now for any paths leading to the usual suspects
 | ||||
| + * like BUG(), printk(), panic() etc. [but let's keep them for now for
 | ||||
| + * older compilers]
 | ||||
| + *
 | ||||
| + * Early snapshots of gcc 4.3 don't support this and we can't detect this
 | ||||
| + * in the preprocessor, but we can live with this because they're unreleased.
 | ||||
| + * Maketime probing would be overkill here.
 | ||||
| + *
 | ||||
| + * gcc also has a __attribute__((__hot__)) to move hot functions into
 | ||||
| + * a special section, but I don't see any sense in this right now in
 | ||||
| + * the kernel context
 | ||||
| + */
 | ||||
| +#define __cold			__attribute__((__cold__))
 | ||||
| +
 | ||||
| +#define __UNIQUE_ID(prefix) __PASTE(__PASTE(__UNIQUE_ID_, prefix), __COUNTER__)
 | ||||
| +
 | ||||
| +#ifndef __CHECKER__
 | ||||
| +# define __compiletime_warning(message) __attribute__((warning(message)))
 | ||||
| +# define __compiletime_error(message) __attribute__((error(message)))
 | ||||
| +#endif /* __CHECKER__ */
 | ||||
| +#endif /* GCC_VERSION >= 40300 */
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40500
 | ||||
| +/*
 | ||||
| + * Mark a position in code as unreachable.  This can be used to
 | ||||
| + * suppress control flow warnings after asm blocks that transfer
 | ||||
| + * control elsewhere.
 | ||||
| + *
 | ||||
| + * Early snapshots of gcc 4.5 don't support this and we can't detect
 | ||||
| + * this in the preprocessor, but we can live with this because they're
 | ||||
| + * unreleased.  Really, we need to have autoconf for the kernel.
 | ||||
| + */
 | ||||
| +#define unreachable() __builtin_unreachable()
 | ||||
| +
 | ||||
| +/* Mark a function definition as prohibited from being cloned. */
 | ||||
| +#define __noclone	__attribute__((__noclone__, __optimize__("no-tracer")))
 | ||||
| +
 | ||||
| +#endif /* GCC_VERSION >= 40500 */
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40600
 | ||||
| +/*
 | ||||
| + * When used with Link Time Optimization, gcc can optimize away C functions or
 | ||||
| + * variables which are referenced only from assembly code.  __visible tells the
 | ||||
| + * optimizer that something else uses this function or variable, thus preventing
 | ||||
| + * this.
 | ||||
| + */
 | ||||
| +#define __visible	__attribute__((externally_visible))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40900 && !defined(__CHECKER__)
 | ||||
| +/*
 | ||||
| + * __assume_aligned(n, k): Tell the optimizer that the returned
 | ||||
| + * pointer can be assumed to be k modulo n. The second argument is
 | ||||
| + * optional (default 0), so we use a variadic macro to make the
 | ||||
| + * shorthand.
 | ||||
| + *
 | ||||
| + * Beware: Do not apply this to functions which may return
 | ||||
| + * ERR_PTRs. Also, it is probably unwise to apply it to functions
 | ||||
| + * returning extra information in the low bits (but in that case the
 | ||||
| + * compiler should see some alignment anyway, when the return value is
 | ||||
| + * massaged by 'flags = ptr & 3; ptr &= ~3;').
 | ||||
| + */
 | ||||
| +#define __assume_aligned(a, ...) __attribute__((__assume_aligned__(a, ## __VA_ARGS__)))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * GCC 'asm goto' miscompiles certain code sequences:
 | ||||
| + *
 | ||||
| + *   http://gcc.gnu.org/bugzilla/show_bug.cgi?id=58670
 | ||||
| + *
 | ||||
| + * Work it around via a compiler barrier quirk suggested by Jakub Jelinek.
 | ||||
| + *
 | ||||
| + * (asm goto is automatically volatile - the naming reflects this.)
 | ||||
| + */
 | ||||
| +#define asm_volatile_goto(x...)	do { asm goto(x); asm (""); } while (0)
 | ||||
| +
 | ||||
| +#ifdef CONFIG_ARCH_USE_BUILTIN_BSWAP
 | ||||
| +#if GCC_VERSION >= 40400
 | ||||
| +#define __HAVE_BUILTIN_BSWAP32__
 | ||||
| +#define __HAVE_BUILTIN_BSWAP64__
 | ||||
| +#endif
 | ||||
| +#if GCC_VERSION >= 40800
 | ||||
| +#define __HAVE_BUILTIN_BSWAP16__
 | ||||
| +#endif
 | ||||
| +#endif /* CONFIG_ARCH_USE_BUILTIN_BSWAP */
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 50000
 | ||||
| +#define KASAN_ABI_VERSION 4
 | ||||
| +#elif GCC_VERSION >= 40902
 | ||||
| +#define KASAN_ABI_VERSION 3
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if GCC_VERSION >= 40902
 | ||||
| +/*
 | ||||
| + * Tell the compiler that address safety instrumentation (KASAN)
 | ||||
| + * should not be applied to that function.
 | ||||
| + * Conflicts with inlining: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=67368
 | ||||
| + */
 | ||||
| +#define __no_sanitize_address __attribute__((no_sanitize_address))
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#endif	/* gcc version >= 40000 specific checks */
 | ||||
| +
 | ||||
| +#if !defined(__noclone)
 | ||||
| +#define __noclone	/* not needed */
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +#if !defined(__no_sanitize_address)
 | ||||
| +#define __no_sanitize_address
 | ||||
| +#endif
 | ||||
| +
 | ||||
| +/*
 | ||||
| + * A trick to suppress uninitialized variable warning without generating any
 | ||||
| + * code
 | ||||
| + */
 | ||||
| +#define uninitialized_var(x) x = x
 | ||||
|  | @ -1,65 +0,0 @@ | |||
| #
 | ||||
| # Copyright (C) 2012-2016 OpenWrt.org
 | ||||
| # Copyright (C) 2017 LEDE project
 | ||||
| #
 | ||||
| # 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 | ||||
| #include $(INCLUDE_DIR)/image.mk
 | ||||
| 
 | ||||
| PKG_NAME:=mt7623n-preloader | ||||
| PKG_VERSION:=2019-10-24 | ||||
| PKG_RELEASE:=1b7b6039b9d92c48193f38ac29dd2f71e303e280 | ||||
| 
 | ||||
| PKG_BUILD_DIR:=$(KERNEL_BUILD_DIR)/$(PKG_NAME)/$(PKG_NAME)-$(PKG_RELEASE) | ||||
| 
 | ||||
| PKG_FLAGS:=nonshared | ||||
| 
 | ||||
| include $(INCLUDE_DIR)/package.mk | ||||
| 
 | ||||
| BPI_PRELOADER_URL:=@GITHUB/BPI-SINOVOIP/BPI-files/$(PKG_RELEASE)/SD/100MB/ | ||||
| BPI_PRELOADER_PREFIX:=bpi-preloader-$(PKG_RELEASE) | ||||
| 
 | ||||
| define Download/BPI-R2-preloader-DDR1600-20191024-2k.img.gz | ||||
|   FILE:=$(BPI_PRELOADER_PREFIX)-BPI-R2-preloader-DDR1600-20191024-2k.img.gz | ||||
|   URL:=$(BPI_PRELOADER_URL) | ||||
|   URL_FILE:=BPI-R2-preloader-DDR1600-20191024-2k.img.gz | ||||
|   HASH:=c731cc166c912c84846e2ed5faf727504e4dec1463754baa6328e9908c84a373 | ||||
| endef | ||||
| $(eval $(call Download,BPI-R2-preloader-DDR1600-20191024-2k.img.gz)) | ||||
| 
 | ||||
| 
 | ||||
| define Package/mt7623n-preloader | ||||
|   SECTION:=boot | ||||
|   CATEGORY:=Boot Loaders | ||||
|   DEPENDS:=@TARGET_mediatek_mt7623 | ||||
|   TITLE:=mt7623n-preloader | ||||
|   DEFAULT:=y if TARGET_mediatek | ||||
| endef | ||||
| 
 | ||||
| define Package/mt7623n-preloader/description | ||||
|  Preloader image for mt7623n based boards like Bannana Pi R2.  | ||||
| endef | ||||
| 
 | ||||
| define Build/Prepare | ||||
| 	rm -rf $(PKG_BUILD_DIR) | ||||
| 	mkdir -p $(PKG_BUILD_DIR) | ||||
| 	cp $(DL_DIR)/$(BPI_PRELOADER_PREFIX)-BPI-R2-preloader-DDR1600-20191024-2k.img.gz $(PKG_BUILD_DIR)/bpi-r2-preloader.bin.gz | ||||
| endef | ||||
| 
 | ||||
| define Build/Compile | ||||
| 	true | ||||
| endef | ||||
| 
 | ||||
| define Package/brcm2708-gpu-fw/install | ||||
| 	true | ||||
| endef | ||||
| 
 | ||||
| define Build/InstallDev | ||||
| 	mkdir -p $(STAGING_DIR_IMAGE) | ||||
| 	gunzip -c $(PKG_BUILD_DIR)/bpi-r2-preloader.bin.gz > $(STAGING_DIR_IMAGE)/bpi-r2-preloader.bin | ||||
| endef | ||||
| 
 | ||||
| $(eval $(call BuildPackage,mt7623n-preloader)) | ||||
|  | @ -1,4 +0,0 @@ | |||
| config MEDIATEK_SD_BOOT_PARTSIZE | ||||
| 	int "Boot (SD Card) filesystem partition size (in MB)" | ||||
| 	depends on TARGET_mediatek | ||||
| 	default 128 | ||||
|  | @ -1,90 +0,0 @@ | |||
| #
 | ||||
| # Copyright (C) 2012-2015 OpenWrt.org
 | ||||
| # Copyright (C) 2016-2017 LEDE project
 | ||||
| #
 | ||||
| # This is free software, licensed under the GNU General Public License v2.
 | ||||
| # See /LICENSE for more information.
 | ||||
| #
 | ||||
| include $(TOPDIR)/rules.mk | ||||
| include $(INCLUDE_DIR)/image.mk | ||||
| 
 | ||||
| FAT32_BLOCK_SIZE=1024 | ||||
| FAT32_BLOCKS=$(shell echo $$(($(CONFIG_MEDIATEK_SD_BOOT_PARTSIZE)*1024*1024/$(FAT32_BLOCK_SIZE)))) | ||||
| 
 | ||||
| # for arm
 | ||||
| KERNEL_LOADADDR := 0x80008000 | ||||
| 
 | ||||
| define Build/mediatek-sdcard | ||||
|         rm -f $@.boot | ||||
|         mkfs.fat $@.boot -C $(FAT32_BLOCKS) | ||||
| 
 | ||||
|         mcopy -i $@.boot $(STAGING_DIR_IMAGE)/$(DEVICE_NAME)-uEnv.txt ::uEnv.txt | ||||
|         mcopy -i $@.boot $(IMAGE_KERNEL) ::uImage | ||||
|         ./gen_mt7623_sdcard_img.sh $@ \
 | ||||
|                 $(STAGING_DIR_IMAGE)/bpi-r2-preloader.bin \
 | ||||
|                 $(STAGING_DIR_IMAGE)/$(DEVICE_NAME)-uboot-mediatek.bin \
 | ||||
|                 $@.boot \
 | ||||
|                 $(IMAGE_ROOTFS) \
 | ||||
|                 $(CONFIG_MEDIATEK_SD_BOOT_PARTSIZE) \
 | ||||
|                 $(CONFIG_TARGET_ROOTFS_PARTSIZE) | ||||
|         rm -f $@.boot | ||||
| 
 | ||||
| endef | ||||
| 
 | ||||
| # for arm64
 | ||||
| ifeq ($(SUBTARGET),mt7622) | ||||
| KERNEL_LOADADDR = 0x41080000 | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(SUBTARGET),mt7629) | ||||
| KERNEL_LOADADDR = 0x40008000 | ||||
| endif | ||||
| 
 | ||||
| define Build/sysupgrade-emmc | ||||
| 	rm -f $@.recovery | ||||
| 	mkfs.fat -C $@.recovery 3070 | ||||
| 
 | ||||
| 	./gen_mt7623_emmc_img.sh $@ \
 | ||||
| 		$(IMAGE_KERNEL) \
 | ||||
| 		$@.recovery \
 | ||||
| 		$(IMAGE_ROOTFS) | ||||
| endef | ||||
| 
 | ||||
| # default all platform image(fit) build 
 | ||||
| define Device/Default | ||||
|   PROFILES = Default $$(DEVICE_NAME) | ||||
|   KERNEL_NAME := zImage | ||||
|   FILESYSTEMS := squashfs | ||||
|   DEVICE_DTS_DIR := $(DTS_DIR) | ||||
|   IMAGES := sysupgrade.bin | ||||
|   IMAGE/sysupgrade.bin := append-kernel | append-rootfs | pad-rootfs | append-metadata | ||||
|   SUPPORTED_DEVICES := $(subst _,$(comma),$(1)) | ||||
| ifeq ($(SUBTARGET),mt7623) | ||||
|   DEVICE_VARS := MEDIATEK_UBOOT | ||||
|   KERNEL_NAME := zImage | ||||
|   KERNEL := kernel-bin | append-dtb | uImage none | ||||
|   KERNEL_INITRAMFS := kernel-bin | append-dtb | uImage none | ||||
|   FILESYSTEMS += ext4 | ||||
|   IMAGES := sysupgrade.tar sdcard.img.gz | ||||
|   IMAGE/sysupgrade.tar := sysupgrade-tar | append-metadata | ||||
|   IMAGE/sdcard.img.gz := mediatek-sdcard | gzip | append-metadata | ||||
| else | ||||
|   KERNEL_NAME := Image | ||||
|   KERNEL = kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | ||||
|   KERNEL_INITRAMFS = kernel-bin | lzma | fit lzma $$(KDIR)/image-$$(firstword $$(DEVICE_DTS)).dtb | ||||
| endif | ||||
| endef | ||||
| 
 | ||||
| ifeq ($(SUBTARGET),mt7622) | ||||
| include mt7622.mk | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(SUBTARGET),mt7623) | ||||
| include mt7623.mk | ||||
| endif | ||||
| 
 | ||||
| ifeq ($(SUBTARGET),mt7629) | ||||
| include mt7629.mk | ||||
| endif | ||||
| 
 | ||||
| $(eval $(call BuildImage)) | ||||
|  | @ -1,48 +0,0 @@ | |||
| #!/usr/bin/env bash | ||||
| # | ||||
| # Copyright (C) 2013 OpenWrt.org | ||||
| # | ||||
| # This is free software, licensed under the GNU General Public License v2. | ||||
| # See /LICENSE for more information. | ||||
| # | ||||
| 
 | ||||
| set -e | ||||
| [ $# -eq 7 ] || { | ||||
|     echo "SYNTAX: $0 <file> <preloader image> <u-boot image> <bootfs image> <rootfs image> <bootfs size> <rootfs size>" | ||||
|     exit 1 | ||||
| } | ||||
| 
 | ||||
| OUTPUT="$1" | ||||
| PRELOADER="$2" | ||||
| UBOOT="$3" | ||||
| BOOTFS="$4" | ||||
| ROOTFS="$5" | ||||
| BOOTFSSIZE="$6" | ||||
| ROOTFSSIZE="$7" | ||||
| 
 | ||||
| head=4 | ||||
| sect=63 | ||||
| 
 | ||||
| set `ptgen -o $OUTPUT -h $head -s $sect -l 1024 -t c -p ${BOOTFSSIZE}M -t 83 -p ${ROOTFSSIZE}M -a 0` | ||||
| 
 | ||||
| BOOT_OFFSET="$(($1 / 512))" | ||||
| BOOT_SIZE="$(($2 / 512))" | ||||
| ROOTFS_OFFSET="$(($3 / 512))" | ||||
| ROOTFS_SIZE="$(($4 / 512))" | ||||
| 
 | ||||
| PRELOADER_OFFSET=2     # 2KB | ||||
| UBOOT_OFFSET=320       # 320KB | ||||
| 
 | ||||
| SDMMC_BOOT="SDMMC_BOOT\x00\x00\x01\x00\x00\x00\x00\x02\x00\x00" | ||||
| BRLYT="\ | ||||
| BRLYT\x00\x00\x00\x01\x00\x00\x00\x00\x08\x00\x00\ | ||||
| \x00\x08\x00\x00\x42\x42\x42\x42\x08\x00\x01\x00\x00\x08\x00\x00\ | ||||
| \x00\x08\x00\x00\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" | ||||
| 
 | ||||
| echo -en "${SDMMC_BOOT}" | dd bs=1 of="${OUTPUT}" seek=0   conv=notrunc | ||||
| echo -en "${BRLYT}"      | dd bs=1 of="${OUTPUT}" seek=512 conv=notrunc | ||||
| 
 | ||||
| dd bs=1024 if="${PRELOADER}" of="${OUTPUT}" seek="${PRELOADER_OFFSET}" conv=notrunc | ||||
| dd bs=1024 if="${UBOOT}"     of="${OUTPUT}" seek="${UBOOT_OFFSET}"     conv=notrunc | ||||
| dd bs=512  if="${BOOTFS}"    of="${OUTPUT}" seek="${BOOT_OFFSET}"      conv=notrunc | ||||
| dd bs=512  if="${ROOTFS}"    of="${OUTPUT}" seek="${ROOTFS_OFFSET}"    conv=notrunc | ||||
|  | @ -1,21 +0,0 @@ | |||
| define Device/unielec_u7623-02-emmc-512m | ||||
|   DEVICE_VENDOR := UniElec | ||||
|   DEVICE_MODEL := U7623-02 | ||||
|   DEVICE_VARIANT := eMMC/512MB RAM | ||||
|   DEVICE_DTS := mt7623a-unielec-u7623-02-emmc-512m | ||||
|   DEVICE_PACKAGES := mkf2fs e2fsprogs kmod-fs-vfat kmod-nls-cp437 kmod-nls-iso8859-1 kmod-mmc | ||||
|   IMAGES := sysupgrade-emmc.bin.gz | ||||
|   IMAGE/sysupgrade-emmc.bin.gz := sysupgrade-emmc | gzip | append-metadata | ||||
| endef | ||||
| TARGET_DEVICES += unielec_u7623-02-emmc-512m | ||||
| 
 | ||||
| define Device/bpi_bananapi-r2 | ||||
|   DEVICE_VENDOR := Bpi | ||||
|   DEVICE_MODEL := Banana Pi R2 | ||||
|   DEVICE_DTS := mt7623n-bananapi-bpi-r2 | ||||
|   DEVICE_PACKAGES := kmod-usb-core kmod-usb-ohci kmod-usb2 kmod-usb3 \
 | ||||
|                      kmod-ata-core kmod-ata-ahci-mtk \
 | ||||
|                      mt7623n-preloader | ||||
|   SUPPORTED_DEVICES := bananapi,bpi-r2 | ||||
| endef | ||||
| TARGET_DEVICES += bpi_bananapi-r2 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue