From 5970e15e49f97122a540d30a55df02f10ef888ca Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Tue, 12 Dec 2017 18:55:53 +0100 Subject: MIPS: provide HAS_NO_BOARD_HL_CODE some boards have PBL code, but no board specific high level code. Instead of creating dummy.c files, better provide config to avoid compiling of board code. Signed-off-by: Oleksij Rempel Signed-off-by: Sascha Hauer --- arch/mips/Kconfig | 3 +++ arch/mips/Makefile | 6 +++++- 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/arch/mips/Kconfig b/arch/mips/Kconfig index 06a516d70f..c2c555dc37 100644 --- a/arch/mips/Kconfig +++ b/arch/mips/Kconfig @@ -22,6 +22,9 @@ config GENERIC_LINKER_SCRIPT bool default y +config HAS_NO_BOARD_HL_CODE + bool + menu "Machine selection" config BUILTIN_DTB diff --git a/arch/mips/Makefile b/arch/mips/Makefile index dd5ceea200..ecc91111bf 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile @@ -124,7 +124,11 @@ else MACH := endif -common-y += $(BOARD) $(MACH) +ifndef CONFIG_HAS_NO_BOARD_HL_CODE +common-y += $(BOARD) +endif + +common-y += $(MACH) common-y += arch/mips/lib/ common-y += arch/mips/boot/ -- cgit v1.2.3 From c552c154fef0ac149815c8aff75ef5744150536b Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Tue, 12 Dec 2017 18:55:55 +0100 Subject: MIPS: ath79: ar9331: add generic RAM macro with this macro, we should be able to cover most of existing ar9331 based boards. Signed-off-by: Oleksij Rempel Signed-off-by: Sascha Hauer --- arch/mips/mach-ath79/include/mach/ar71xx_regs.h | 1 + arch/mips/mach-ath79/include/mach/pbl_macros.h | 37 +++++++++++++++++++++++-- 2 files changed, 35 insertions(+), 3 deletions(-) diff --git a/arch/mips/mach-ath79/include/mach/ar71xx_regs.h b/arch/mips/mach-ath79/include/mach/ar71xx_regs.h index 31d33b3c42..f73700b5b9 100644 --- a/arch/mips/mach-ath79/include/mach/ar71xx_regs.h +++ b/arch/mips/mach-ath79/include/mach/ar71xx_regs.h @@ -139,6 +139,7 @@ #define AR71XX_RESET_FULL_CHIP BIT(24) +#define AR933X_BOOTSTRAP_MEM_TYPE BIT(13) #define AR933X_BOOTSTRAP_REF_CLK_40 BIT(0) #endif /* __ASM_MACH_AR71XX_REGS_H */ diff --git a/arch/mips/mach-ath79/include/mach/pbl_macros.h b/arch/mips/mach-ath79/include/mach/pbl_macros.h index 680fcbb867..9e4859b19f 100644 --- a/arch/mips/mach-ath79/include/mach/pbl_macros.h +++ b/arch/mips/mach-ath79/include/mach/pbl_macros.h @@ -172,6 +172,40 @@ .set pop .endm +#define RESET_REG_BOOTSTRAP ((KSEG1 | AR71XX_RESET_BASE) \ + | AR933X_RESET_REG_BOOTSTRAP) + +.macro pbl_ar9331_ram_generic_config + .set push + .set noreorder + + li t5, RESET_REG_BOOTSTRAP + /* Documentation and source code of existing boot loaders disagree at + * this place. Doc says: MEM_TYPE[13:12]: + * - 00 = SDRAM + * - 01 = DDR1 + * - 10 = DDR2 + * The source code of most loaders do not care about BIT(12). So we do + * the same. + */ + li t6, AR933X_BOOTSTRAP_MEM_TYPE + lw t7, 0(t5); + and t6, t7, t6 + beq zero, t6, pbl_ar9331_ram_generic_ddr1 + nop + +pbl_ar9331_ram_generic_ddr2: + pbl_ar9331_ddr2_config + b pbl_ar9331_ram_generic_config + nop + +pbl_ar9331_ram_generic_ddr1: + pbl_ar9331_ddr1_config + +pbl_ar9331_ram_generic_config: + .set pop +.endm + #define GPIO_FUNC ((KSEG1 | AR71XX_GPIO_BASE) | AR71XX_GPIO_REG_FUNC) .macro pbl_ar9331_uart_enable @@ -179,9 +213,6 @@ | AR933X_GPIO_FUNC_RSRV15, GPIO_FUNC .endm -#define RESET_REG_BOOTSTRAP ((KSEG1 | AR71XX_RESET_BASE) \ - | AR933X_RESET_REG_BOOTSTRAP) - .macro pbl_ar9331_mdio_gpio_enable /* Bit 18 enables MDC and MDIO function on GPIO26 and GPIO28 */ pbl_reg_set (1 << 18), RESET_REG_BOOTSTRAP -- cgit v1.2.3 From 6d82245b00d35de260d3473283480e451d8a198e Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Tue, 12 Dec 2017 18:55:56 +0100 Subject: MIPS: ath79: ar9331: add ar9331_pbl_generic_start macro Most of ar9331 boards have identical PBL. So we can sync the code to single macro. Signed-off-by: Oleksij Rempel Signed-off-by: Sascha Hauer --- arch/mips/mach-ath79/include/mach/pbl_macros.h | 35 ++++++++++++++++++++++++++ 1 file changed, 35 insertions(+) diff --git a/arch/mips/mach-ath79/include/mach/pbl_macros.h b/arch/mips/mach-ath79/include/mach/pbl_macros.h index 9e4859b19f..906d73e8c7 100644 --- a/arch/mips/mach-ath79/include/mach/pbl_macros.h +++ b/arch/mips/mach-ath79/include/mach/pbl_macros.h @@ -368,4 +368,39 @@ normal_path: .set pop .endm + .macro ar9331_pbl_generic_start + .set push + .set noreorder + + mips_barebox_10h + + pbl_blt 0xbf000000 skip_pll_ram_config t8 + + hornet_mips24k_cp0_setup + + pbl_ar9331_wmac_enable + + hornet_1_1_war + + pbl_ar9331_pll + pbl_ar9331_ram_generic_config + +skip_pll_ram_config: + /* Initialize caches... */ + mips_cache_reset + + /* ... and enable them */ + dcache_enable + + pbl_ar9331_uart_enable + debug_ll_ar9331_init + mips_nmon + + pbl_ar9331_mdio_gpio_enable + + copy_to_link_location pbl_start + + .set pop + .endm + #endif /* __ASM_MACH_ATH79_PBL_MACROS_H */ -- cgit v1.2.3 From bd61482cba36abd315d14e4335eb8cf70fe99970 Mon Sep 17 00:00:00 2001 From: Oleksij Rempel Date: Tue, 12 Dec 2017 18:55:57 +0100 Subject: MIPS: add support for DPTechnics DPT-Module v1 This product can be found here: https://dptechnics.com/en/products/dpt-module-v1.html Signed-off-by: Oleksij Rempel Signed-off-by: Sascha Hauer --- arch/mips/Makefile | 1 + .../include/board/board_pbl_start.h | 20 +++++ arch/mips/configs/dptechnics-dpt-module_defconfig | 89 ++++++++++++++++++++++ arch/mips/dts/ar9331-dptechnics-dpt-module.dts | 31 ++++++++ arch/mips/mach-ath79/Kconfig | 8 ++ 5 files changed, 149 insertions(+) create mode 100644 arch/mips/boards/dptechnics-dpt-module/include/board/board_pbl_start.h create mode 100644 arch/mips/configs/dptechnics-dpt-module_defconfig create mode 100644 arch/mips/dts/ar9331-dptechnics-dpt-module.dts diff --git a/arch/mips/Makefile b/arch/mips/Makefile index ecc91111bf..1ef44a0f19 100644 --- a/arch/mips/Makefile +++ b/arch/mips/Makefile @@ -79,6 +79,7 @@ machine-$(CONFIG_MACH_MIPS_AR231X) := ar231x board-$(CONFIG_BOARD_NETGEAR_WG102) := netgear-wg102 machine-$(CONFIG_MACH_MIPS_ATH79) := ath79 +board-$(CONFIG_BOARC_DPTECHNICS_DPT_MODULE) := dptechnics-dpt-module board-$(CONFIG_BOARD_TPLINK_MR3020) := tplink-mr3020 board-$(CONFIG_BOARD_TPLINK_WDR4300) := tplink-wdr4300 board-$(CONFIG_BOARD_BLACK_SWIFT) := black-swift diff --git a/arch/mips/boards/dptechnics-dpt-module/include/board/board_pbl_start.h b/arch/mips/boards/dptechnics-dpt-module/include/board/board_pbl_start.h new file mode 100644 index 0000000000..9d6b1b86bc --- /dev/null +++ b/arch/mips/boards/dptechnics-dpt-module/include/board/board_pbl_start.h @@ -0,0 +1,20 @@ +/* + * Copyright (C) 2017 Oleksij Rempel + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 + * as published by the Free Software Foundation. + */ + +#include +#include +#include + + .macro board_pbl_start + .set push + .set noreorder + + ar9331_pbl_generic_start + + .set pop + .endm diff --git a/arch/mips/configs/dptechnics-dpt-module_defconfig b/arch/mips/configs/dptechnics-dpt-module_defconfig new file mode 100644 index 0000000000..dbad08fe62 --- /dev/null +++ b/arch/mips/configs/dptechnics-dpt-module_defconfig @@ -0,0 +1,89 @@ +CONFIG_BUILTIN_DTB=y +CONFIG_BUILTIN_DTB_NAME="ar9331-dptechnics-dpt-module" +CONFIG_MACH_MIPS_ATH79=y +CONFIG_BOARC_QCA_AR9331_GENERIC=y +CONFIG_PBL_IMAGE=y +CONFIG_IMAGE_COMPRESSION_XZKERN=y +CONFIG_MMU=y +CONFIG_TEXT_BASE=0x82000000 +CONFIG_MALLOC_TLSF=y +CONFIG_HUSH_FANCY_PROMPT=y +CONFIG_CMDLINE_EDITING=y +CONFIG_AUTO_COMPLETE=y +CONFIG_CONSOLE_RATP=y +CONFIG_DEFAULT_ENVIRONMENT_GENERIC_NEW=y +CONFIG_RESET_SOURCE=y +CONFIG_CMD_DMESG=y +CONFIG_LONGHELP=y +CONFIG_CMD_IOMEM=y +CONFIG_CMD_IMD=y +CONFIG_CMD_MEMINFO=y +CONFIG_CMD_GO=y +CONFIG_CMD_LOADB=y +CONFIG_CMD_LOADY=y +CONFIG_CMD_RESET=y +CONFIG_CMD_EXPORT=y +CONFIG_CMD_DEFAULTENV=y +CONFIG_CMD_LOADENV=y +CONFIG_CMD_MAGICVAR=y +CONFIG_CMD_MAGICVAR_HELP=y +CONFIG_CMD_SAVEENV=y +CONFIG_CMD_SHA1SUM=y +CONFIG_CMD_UNCOMPRESS=y +CONFIG_CMD_LET=y +CONFIG_CMD_MSLEEP=y +CONFIG_CMD_READF=y +CONFIG_CMD_SLEEP=y +CONFIG_CMD_DHCP=y +CONFIG_CMD_HOST=y +CONFIG_CMD_MIITOOL=y +CONFIG_CMD_PING=y +CONFIG_CMD_ECHO_E=y +CONFIG_CMD_EDIT=y +CONFIG_CMD_READLINE=y +CONFIG_CMD_TIMEOUT=y +CONFIG_CMD_CRC=y +CONFIG_CMD_MEMTEST=y +CONFIG_CMD_MM=y +CONFIG_CMD_CLK=y +CONFIG_CMD_DETECT=y +CONFIG_CMD_FLASH=y +CONFIG_CMD_GPIO=y +CONFIG_CMD_LED=y +CONFIG_CMD_POWEROFF=y +CONFIG_CMD_SPI=y +CONFIG_CMD_LED_TRIGGER=y +CONFIG_CMD_WD=y +CONFIG_CMD_BAREBOX_UPDATE=y +CONFIG_CMD_OF_NODE=y +CONFIG_CMD_OF_PROPERTY=y +CONFIG_CMD_OFTREE=y +CONFIG_CMD_TIME=y +CONFIG_NET=y +CONFIG_NET_NFS=y +CONFIG_NET_NETCONSOLE=y +CONFIG_NET_SNTP=y +CONFIG_OFDEVICE=y +CONFIG_OF_BAREBOX_DRIVERS=y +CONFIG_OF_BAREBOX_ENV_IN_FS=y +CONFIG_DRIVER_SERIAL_AR933X=y +CONFIG_DRIVER_NET_AG71XX=y +CONFIG_AR8327N_PHY=y +CONFIG_AT803X_PHY=y +CONFIG_MDIO_BITBANG=y +CONFIG_MDIO_GPIO=y +CONFIG_DRIVER_SPI_ATH79=y +CONFIG_MTD=y +# CONFIG_MTD_OOB_DEVICE is not set +CONFIG_MTD_M25P80=y +CONFIG_LED=y +CONFIG_LED_GPIO=y +CONFIG_LED_GPIO_OF=y +CONFIG_LED_TRIGGERS=y +CONFIG_WATCHDOG=y +CONFIG_WATCHDOG_AR9344=y +CONFIG_FS_TFTP=y +CONFIG_FS_NFS=y +CONFIG_FS_RATP=y +CONFIG_DIGEST_SHA224_GENERIC=y +CONFIG_DIGEST_SHA256_GENERIC=y diff --git a/arch/mips/dts/ar9331-dptechnics-dpt-module.dts b/arch/mips/dts/ar9331-dptechnics-dpt-module.dts new file mode 100644 index 0000000000..39eb36600d --- /dev/null +++ b/arch/mips/dts/ar9331-dptechnics-dpt-module.dts @@ -0,0 +1,31 @@ +#include +#include "ar9331.dtsi" + +/ { + aliases { + spiflash = &spiflash; + }; + + chosen { + environment@0 { + compatible = "barebox,environment"; + device-path = &spiflash, "partname:barebox-environment"; + }; + }; +}; + +&spiflash { + partition@0 { + label = "barebox"; + reg = <0 0x80000>; + }; + + partition@80000 { + label = "barebox-environment"; + reg = <0x80000 0x10000>; + }; +}; + +&mac0 { + status = "okay"; +}; diff --git a/arch/mips/mach-ath79/Kconfig b/arch/mips/mach-ath79/Kconfig index 9fec00c982..c7ce77568c 100644 --- a/arch/mips/mach-ath79/Kconfig +++ b/arch/mips/mach-ath79/Kconfig @@ -13,6 +13,14 @@ config SOC_QCA_AR9344 choice prompt "Board type" +config BOARC_DPTECHNICS_DPT_MODULE + bool "DPTechnics DPT-Module" + select SOC_QCA_AR9331 + select HAVE_PBL_IMAGE + select HAVE_IMAGE_COMPRESSION + select HAS_NMON + select HAS_NO_BOARD_HL_CODE + config BOARD_TPLINK_MR3020 bool "TP-LINK MR3020" select SOC_QCA_AR9331 -- cgit v1.2.3