* [PATCH v2 0/3] ath79: enhancements
@ 2019-01-23 7:24 Oleksij Rempel
2019-01-23 7:24 ` [PATCH v2 1/3] MIPS: tplink-mr3020: use ar9331_pbl_generic_start Oleksij Rempel
` (3 more replies)
0 siblings, 4 replies; 7+ messages in thread
From: Oleksij Rempel @ 2019-01-23 7:24 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
changes v2 20190123:
- squash bootstrap helper patches to one patch
- rename helper macro
- Add more comments
Oleksij Rempel (3):
MIPS: tplink-mr3020: use ar9331_pbl_generic_start
MIPS: black-swift: use ar9331_pbl_generic_start
MIPS: ath79: add spi and sram bootstrap helpers
arch/mips/boards/black-swift/lowlevel.S | 29 +------------------
arch/mips/boards/tplink-mr3020/lowlevel.S | 29 +------------------
arch/mips/include/asm/asm.h | 20 +++++++++++++
arch/mips/lib/Makefile | 1 +
arch/mips/lib/end.S | 16 ++++++++++
arch/mips/mach-ath79/Makefile | 3 ++
.../mips/mach-ath79/include/mach/pbl_macros.h | 21 ++++++++++++++
.../mach-ath79/lowlevel_ar9331_spi_trap.S | 18 ++++++++++++
arch/mips/mach-ath79/lowlevel_ar9331_sram.S | 18 ++++++++++++
images/Makefile.ath79 | 8 +++++
10 files changed, 107 insertions(+), 56 deletions(-)
create mode 100644 arch/mips/lib/end.S
create mode 100644 arch/mips/mach-ath79/lowlevel_ar9331_spi_trap.S
create mode 100644 arch/mips/mach-ath79/lowlevel_ar9331_sram.S
--
2.20.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 1/3] MIPS: tplink-mr3020: use ar9331_pbl_generic_start
2019-01-23 7:24 [PATCH v2 0/3] ath79: enhancements Oleksij Rempel
@ 2019-01-23 7:24 ` Oleksij Rempel
2019-01-23 8:12 ` Sam Ravnborg
2019-01-23 7:24 ` [PATCH v2 2/3] MIPS: black-swift: " Oleksij Rempel
` (2 subsequent siblings)
3 siblings, 1 reply; 7+ messages in thread
From: Oleksij Rempel @ 2019-01-23 7:24 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
From: Oleksij Rempel <linux@rempel-privat.de>
most ar9331 boards are almost identical. Remove as match duplicate code
as possible.
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
---
arch/mips/boards/tplink-mr3020/lowlevel.S | 29 +----------------------
1 file changed, 1 insertion(+), 28 deletions(-)
diff --git a/arch/mips/boards/tplink-mr3020/lowlevel.S b/arch/mips/boards/tplink-mr3020/lowlevel.S
index e3e6a61b78..0a1c193c1e 100644
--- a/arch/mips/boards/tplink-mr3020/lowlevel.S
+++ b/arch/mips/boards/tplink-mr3020/lowlevel.S
@@ -14,33 +14,6 @@
ENTRY_FUNCTION(BOARD_PBL_START)
- 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_ddr1_config
-
- /* Initialize caches... */
- mips_cache_reset
-
- /* ... and enable them */
- dcache_enable
-
-skip_pll_ram_config:
- pbl_ar9331_uart_enable
- debug_ll_ath79_init
-
- /*
- * It is amazing but we have to enable MDIO on GPIO
- * to use GPIO26 for the "WPS" LED and GPIO27 for the "3G" LED.
- */
- pbl_ar9331_mdio_gpio_enable
+ ar9331_pbl_generic_start
ENTRY_FUNCTION_END(BOARD_PBL_START, tplink_mr3020)
--
2.20.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 2/3] MIPS: black-swift: use ar9331_pbl_generic_start
2019-01-23 7:24 [PATCH v2 0/3] ath79: enhancements Oleksij Rempel
2019-01-23 7:24 ` [PATCH v2 1/3] MIPS: tplink-mr3020: use ar9331_pbl_generic_start Oleksij Rempel
@ 2019-01-23 7:24 ` Oleksij Rempel
2019-01-23 8:12 ` Sam Ravnborg
2019-01-23 7:24 ` [PATCH v2 3/3] MIPS: ath79: add spi and sram bootstrap helpers Oleksij Rempel
2019-01-24 7:33 ` [PATCH v2 0/3] ath79: enhancements Sascha Hauer
3 siblings, 1 reply; 7+ messages in thread
From: Oleksij Rempel @ 2019-01-23 7:24 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
From: Oleksij Rempel <linux@rempel-privat.de>
most ar9331 boards are almost identical. Remove as match duplicate code
as possible.
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
---
arch/mips/boards/black-swift/lowlevel.S | 29 +------------------------
1 file changed, 1 insertion(+), 28 deletions(-)
diff --git a/arch/mips/boards/black-swift/lowlevel.S b/arch/mips/boards/black-swift/lowlevel.S
index 104dd26d1c..0ba77435f8 100644
--- a/arch/mips/boards/black-swift/lowlevel.S
+++ b/arch/mips/boards/black-swift/lowlevel.S
@@ -14,33 +14,6 @@
ENTRY_FUNCTION(BOARD_PBL_START)
- mips_barebox_10h
-
- pbl_ar9331_wmac_enable
-
- hornet_mips24k_cp0_setup
-
- pbl_blt 0xbf000000 skip_pll_ram_config t8
-
- hornet_1_1_war
-
- pbl_ar9331_pll
- pbl_ar9331_ddr2_config
-
- /* Initialize caches... */
- mips_cache_reset
-
- /* ... and enable them */
- dcache_enable
-
-skip_pll_ram_config:
- pbl_ar9331_uart_enable
- debug_ll_ath79_init
-
- /*
- * It is amazing but we have to enable MDIO on GPIO
- * to use GPIO27 for LED1.
- */
- pbl_ar9331_mdio_gpio_enable
+ ar9331_pbl_generic_start
ENTRY_FUNCTION_END(BOARD_PBL_START, black_swift)
--
2.20.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* [PATCH v2 3/3] MIPS: ath79: add spi and sram bootstrap helpers
2019-01-23 7:24 [PATCH v2 0/3] ath79: enhancements Oleksij Rempel
2019-01-23 7:24 ` [PATCH v2 1/3] MIPS: tplink-mr3020: use ar9331_pbl_generic_start Oleksij Rempel
2019-01-23 7:24 ` [PATCH v2 2/3] MIPS: black-swift: " Oleksij Rempel
@ 2019-01-23 7:24 ` Oleksij Rempel
2019-01-24 7:33 ` [PATCH v2 0/3] ath79: enhancements Sascha Hauer
3 siblings, 0 replies; 7+ messages in thread
From: Oleksij Rempel @ 2019-01-23 7:24 UTC (permalink / raw)
To: barebox; +Cc: Oleksij Rempel
From: Oleksij Rempel <linux@rempel-privat.de>
At least some ath79 SoC have build in 32K RAM. It allow us to use
lowlevel portion of barebox to bootstrap the system by using JTAG
debugger (For example OpenOCD).
Since ath79 has no reliable way to stop the CPU execution before
reading SPI Flash, this can cause different issues. To avoid it, we
need to flash a execution trap with software debug breakpoint to the
flash.
The workflow should be as follow:
- After power on or reset the CPU will start execution of SPI flash.
As soon as software debug breakpoint is executed, CPU will halt and
notify OpenOCD about breakpoint event.
- OpenOCD will load reduced barebox to SRAM and execute it.
This part will do all needed low level initialization - PLL, RAM and
trigger second breakpoint event.
- OpenOCD will load full barebox version to the main RAM and start
execution.
It can be used for bring-up, so no regular flashing is needed.
Signed-off-by: Oleksij Rempel <linux@rempel-privat.de>
---
arch/mips/include/asm/asm.h | 20 ++++++++++++++++++
arch/mips/lib/Makefile | 1 +
arch/mips/lib/end.S | 16 ++++++++++++++
arch/mips/mach-ath79/Makefile | 3 +++
.../mips/mach-ath79/include/mach/pbl_macros.h | 21 +++++++++++++++++++
.../mach-ath79/lowlevel_ar9331_spi_trap.S | 18 ++++++++++++++++
arch/mips/mach-ath79/lowlevel_ar9331_sram.S | 18 ++++++++++++++++
images/Makefile.ath79 | 8 +++++++
8 files changed, 105 insertions(+)
create mode 100644 arch/mips/lib/end.S
create mode 100644 arch/mips/mach-ath79/lowlevel_ar9331_spi_trap.S
create mode 100644 arch/mips/mach-ath79/lowlevel_ar9331_sram.S
diff --git a/arch/mips/include/asm/asm.h b/arch/mips/include/asm/asm.h
index 7a23f4ed82..7d2b673bd9 100644
--- a/arch/mips/include/asm/asm.h
+++ b/arch/mips/include/asm/asm.h
@@ -105,6 +105,26 @@ __error: \
b __error; \
nop;
+/*
+ * STOP_WITH_DEBUG_EVENT - Stop code execution by triggering
+ * Software Debug Breakpoint. It is needed stop CPU and
+ * notify debugger (for example OpenOCD) about break point event.
+ * It should allow to simplify bootstrapping a system over JTAG.
+ */
+#define STOP_WITH_DEBUG_EVENT \
+ /* trigger a soft breakpoint for OpenOCD */ \
+ SDBBP; \
+ /* position independent variant of dead loop */ \
+ __error: \
+ b __error; \
+ nop; \
+ /* Call some code from .text section. \
+ * It is needed to keep same linker script for \
+ * all images. */ \
+ la v0, mips_dead_end; \
+ jal v0; \
+ nop;
+
/*
* FEXPORT - export definition of a function symbol
*/
diff --git a/arch/mips/lib/Makefile b/arch/mips/lib/Makefile
index 1a049c7914..7372e8dc27 100644
--- a/arch/mips/lib/Makefile
+++ b/arch/mips/lib/Makefile
@@ -1,6 +1,7 @@
extra-$(CONFIG_GENERIC_LINKER_SCRIPT) += barebox.lds
obj-$(CONFIG_CSRC_R4K_LIB) += csrc-r4k.o
obj-y += cpu-probe.o
+lwl-y += end.o
obj-y += traps.o
obj-y += genex.o
obj-y += shutdown.o
diff --git a/arch/mips/lib/end.S b/arch/mips/lib/end.S
new file mode 100644
index 0000000000..78bd15ec17
--- /dev/null
+++ b/arch/mips/lib/end.S
@@ -0,0 +1,16 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2018 Oleksij Rempel <linux@rempel-privat.de>
+ */
+
+#include <asm/asm.h>
+#include <asm/regdef.h>
+
+ .text
+ .set noreorder
+LEAF(mips_dead_end)
+__error:
+ b __error;
+ nop;
+
+ END(mips_dead_end)
diff --git a/arch/mips/mach-ath79/Makefile b/arch/mips/mach-ath79/Makefile
index b827b363cf..396df66bf1 100644
--- a/arch/mips/mach-ath79/Makefile
+++ b/arch/mips/mach-ath79/Makefile
@@ -1,3 +1,6 @@
+lwl-y += lowlevel_ar9331_spi_trap.o
+lwl-y += lowlevel_ar9331_sram.o
+
obj-y += reset.o
obj-y += bbu.o
obj-y += art.o
diff --git a/arch/mips/mach-ath79/include/mach/pbl_macros.h b/arch/mips/mach-ath79/include/mach/pbl_macros.h
index 70736b3680..c5f3d4150e 100644
--- a/arch/mips/mach-ath79/include/mach/pbl_macros.h
+++ b/arch/mips/mach-ath79/include/mach/pbl_macros.h
@@ -400,4 +400,25 @@ skip_pll_ram_config:
.set pop
.endm
+ .macro ar9331_pbl_generic_sram_start
+ .set push
+ .set noreorder
+
+ mips_barebox_10h
+
+ hornet_mips24k_cp0_setup
+
+ hornet_1_1_war
+
+ pbl_ar9331_pll
+ pbl_ar9331_ram_generic_config
+
+ pbl_ar9331_uart_enable
+ debug_ll_ath79_init
+
+ pbl_ar9331_mdio_gpio_enable
+
+ .set pop
+ .endm
+
#endif /* __ASM_MACH_ATH79_PBL_MACROS_H */
diff --git a/arch/mips/mach-ath79/lowlevel_ar9331_spi_trap.S b/arch/mips/mach-ath79/lowlevel_ar9331_spi_trap.S
new file mode 100644
index 0000000000..82452c74ca
--- /dev/null
+++ b/arch/mips/mach-ath79/lowlevel_ar9331_spi_trap.S
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2018 Oleksij Rempel <linux@rempel-privat.de>
+ */
+
+#define BOARD_PBL_START start_ar9331_spi_trap
+
+#include <mach/debug_ll.h>
+#include <asm/asm.h>
+#include <asm/pbl_macros.h>
+#include <mach/pbl_macros.h>
+#include <asm/pbl_nmon.h>
+
+ENTRY_FUNCTION(BOARD_PBL_START)
+
+ /* nothing should be done here */
+
+STOP_WITH_DEBUG_EVENT
diff --git a/arch/mips/mach-ath79/lowlevel_ar9331_sram.S b/arch/mips/mach-ath79/lowlevel_ar9331_sram.S
new file mode 100644
index 0000000000..1ef40be905
--- /dev/null
+++ b/arch/mips/mach-ath79/lowlevel_ar9331_sram.S
@@ -0,0 +1,18 @@
+/* SPDX-License-Identifier: GPL-2.0-or-later */
+/*
+ * Copyright (C) 2018 Oleksij Rempel <linux@rempel-privat.de>
+ */
+
+#define BOARD_PBL_START start_ar9331_sram
+
+#include <mach/debug_ll.h>
+#include <asm/asm.h>
+#include <asm/pbl_macros.h>
+#include <mach/pbl_macros.h>
+#include <asm/pbl_nmon.h>
+
+ENTRY_FUNCTION(BOARD_PBL_START)
+
+ ar9331_pbl_generic_sram_start
+
+STOP_WITH_DEBUG_EVENT
diff --git a/images/Makefile.ath79 b/images/Makefile.ath79
index c7e97f0ac3..5dda411d8f 100644
--- a/images/Makefile.ath79
+++ b/images/Makefile.ath79
@@ -1,3 +1,11 @@
+pblb-$(CONFIG_SOC_QCA_AR9331) += start_ar9331_spi_trap
+FILE_barebox-ar9331-spi-trap.img = start_ar9331_spi_trap.pblb
+image-$(CONFIG_SOC_QCA_AR9331) += barebox-ar9331-spi-trap.img
+
+pblb-$(CONFIG_SOC_QCA_AR9331) += start_ar9331_sram
+FILE_barebox-ar9331-sram.img = start_ar9331_sram.pblb
+image-$(CONFIG_SOC_QCA_AR9331) += barebox-ar9331-sram.img
+
pblb-$(CONFIG_BOARD_8DEVICES_LIMA) += start_8devices_lima
FILE_barebox-8devices-lima.img = start_8devices_lima.pblb
image-$(CONFIG_BOARD_8DEVICES_LIMA) += barebox-8devices-lima.img
--
2.20.1
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 1/3] MIPS: tplink-mr3020: use ar9331_pbl_generic_start
2019-01-23 7:24 ` [PATCH v2 1/3] MIPS: tplink-mr3020: use ar9331_pbl_generic_start Oleksij Rempel
@ 2019-01-23 8:12 ` Sam Ravnborg
0 siblings, 0 replies; 7+ messages in thread
From: Sam Ravnborg @ 2019-01-23 8:12 UTC (permalink / raw)
To: Oleksij Rempel; +Cc: barebox, Oleksij Rempel
Hi Oleksij.
On Wed, Jan 23, 2019 at 08:24:01AM +0100, Oleksij Rempel wrote:
> From: Oleksij Rempel <linux@rempel-privat.de>
>
> most ar9331 boards are almost identical. Remove as match duplicate code
s/match/much/
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 2/3] MIPS: black-swift: use ar9331_pbl_generic_start
2019-01-23 7:24 ` [PATCH v2 2/3] MIPS: black-swift: " Oleksij Rempel
@ 2019-01-23 8:12 ` Sam Ravnborg
0 siblings, 0 replies; 7+ messages in thread
From: Sam Ravnborg @ 2019-01-23 8:12 UTC (permalink / raw)
To: Oleksij Rempel; +Cc: barebox, Oleksij Rempel
On Wed, Jan 23, 2019 at 08:24:02AM +0100, Oleksij Rempel wrote:
> From: Oleksij Rempel <linux@rempel-privat.de>
>
> most ar9331 boards are almost identical. Remove as match duplicate code
Here too.
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
* Re: [PATCH v2 0/3] ath79: enhancements
2019-01-23 7:24 [PATCH v2 0/3] ath79: enhancements Oleksij Rempel
` (2 preceding siblings ...)
2019-01-23 7:24 ` [PATCH v2 3/3] MIPS: ath79: add spi and sram bootstrap helpers Oleksij Rempel
@ 2019-01-24 7:33 ` Sascha Hauer
3 siblings, 0 replies; 7+ messages in thread
From: Sascha Hauer @ 2019-01-24 7:33 UTC (permalink / raw)
To: Oleksij Rempel; +Cc: barebox
On Wed, Jan 23, 2019 at 08:24:00AM +0100, Oleksij Rempel wrote:
> changes v2 20190123:
> - squash bootstrap helper patches to one patch
> - rename helper macro
> - Add more comments
>
> Oleksij Rempel (3):
> MIPS: tplink-mr3020: use ar9331_pbl_generic_start
> MIPS: black-swift: use ar9331_pbl_generic_start
> MIPS: ath79: add spi and sram bootstrap helpers
Applied with typos fixed, thanks
Sascha
--
Pengutronix e.K. | |
Industrial Linux Solutions | http://www.pengutronix.de/ |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0 |
Amtsgericht Hildesheim, HRA 2686 | Fax: +49-5121-206917-5555 |
_______________________________________________
barebox mailing list
barebox@lists.infradead.org
http://lists.infradead.org/mailman/listinfo/barebox
^ permalink raw reply [flat|nested] 7+ messages in thread
end of thread, other threads:[~2019-01-24 7:33 UTC | newest]
Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-01-23 7:24 [PATCH v2 0/3] ath79: enhancements Oleksij Rempel
2019-01-23 7:24 ` [PATCH v2 1/3] MIPS: tplink-mr3020: use ar9331_pbl_generic_start Oleksij Rempel
2019-01-23 8:12 ` Sam Ravnborg
2019-01-23 7:24 ` [PATCH v2 2/3] MIPS: black-swift: " Oleksij Rempel
2019-01-23 8:12 ` Sam Ravnborg
2019-01-23 7:24 ` [PATCH v2 3/3] MIPS: ath79: add spi and sram bootstrap helpers Oleksij Rempel
2019-01-24 7:33 ` [PATCH v2 0/3] ath79: enhancements Sascha Hauer
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox