Skip to contentSkip to conversation

MIPS: call debug_uart_init right before board_init_f

PATCH New Álvaro Fernández Rojas 3 participants 24 messages Apr 23, 2017 – Apr 30, 2017 MIPS

lore
Share & tools
lore
#0 lore raw

cover MIPS: call debug_uart_init right before board_init_f

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

Daniel Schwierzeck (1):
MIPS: call debug_uart_init right before board_init_f

Álvaro Fernández Rojas (3):
MIPS: QCA AP121: remove debug_uart_init call
MIPS: QCA AP143: remove debug_uart_init call
MIPS: tl-wdr4300: remove debug_uart_init call

 arch/mips/cpu/start.S          |  6 ++++++
 board/qca/ap121/ap121.c        |  3 ---
 board/qca/ap143/ap143.c        |  3 ---
 board/tplink/wdr4300/wdr4300.c | 18 ++++++++++++++----
 4 files changed, 20 insertions(+), 10 deletions(-)
Signature · 1 line
2.1.4
#1 lore raw

PATCH 1/4 MIPS: QCA AP121: remove debug_uart_init call

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.

---
 board/qca/ap121/ap121.c | 3 ---
 1 file changed, 3 deletions(-)
board/qca/ap121/ap121.c +0 -3
index e245faa..ac9be35 100644
@@ -43,9 +43,6 @@ void board_debug_uart_init(void)
 
 int board_early_init_f(void)
 {
-#ifdef CONFIG_DEBUG_UART
-	debug_uart_init();
-#endif
 	ddr_init();
 	ath79_eth_reset();
 	return 0;
Signature · 1 line
2.1.4
#2 lore raw

PATCH 2/4 MIPS: QCA AP143: remove debug_uart_init call

In reply to Álvaro Fernández Rojas

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.

---
 board/qca/ap143/ap143.c | 3 ---
 1 file changed, 3 deletions(-)
board/qca/ap143/ap143.c +0 -3
index e921ea5..19b55ac 100644
@@ -59,9 +59,6 @@ void board_debug_uart_init(void)
 
 int board_early_init_f(void)
 {
-#ifdef CONFIG_DEBUG_UART
-	debug_uart_init();
-#endif
 	ddr_init();
 	ath79_eth_reset();
 	return 0;
Signature · 1 line
2.1.4
#3 lore raw

PATCH 3/4 MIPS: tl-wdr4300: remove debug_uart_init call

In reply to Álvaro Fernández Rojas

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.
WDR4300 doesn't provide a board_debug_uart_init and configures pinmux in board_early_init_f instead. Since I have no idead of what's the needed uart pinmux config, I copied the whole pinmux config to a new function that is called from board_early_init_f if CONFIG_DEBUG_UART_BOARD_INIT is not enabled.

---
 board/tplink/wdr4300/wdr4300.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)
board/tplink/wdr4300/wdr4300.c +14 -4
index 6e070fd..0f59648 100644
@@ -34,8 +34,7 @@ static void wdr4300_usb_start(void)
 static inline void wdr4300_usb_start(void) {}
 #endif
 
-#ifdef CONFIG_BOARD_EARLY_INIT_F
-int board_early_init_f(void)
+void wdr4300_pinmux_config(void)
 {
 	void __iomem *regs;
 
@@ -56,9 +55,20 @@ int board_early_init_f(void)
 	writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC3);
 	writel(0x0000004d, regs + AR934X_GPIO_REG_OUT_FUNC4);
 	writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC5);
+}
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
+void board_debug_uart_init(void)
+{
+	wdr4300_pinmux_config();
+}
+#endif
 
-#ifdef CONFIG_DEBUG_UART
-	debug_uart_init();
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+int board_early_init_f(void)
+{
+#ifndef CONFIG_DEBUG_UART_BOARD_INIT
+	wdr4300_pinmux_config();
 #endif
 
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
Signature · 1 line
2.1.4
#4 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

In reply to Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +6 -0
index 6740fdf..f7dee81 100644
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init
+	jalr	t9
+	 nop
+#endif
+
 	move	a0, zero		# a0 <-- boot_flags = 0
 	PTR_LA	t9, board_init_f
 
Signature · 1 line
2.1.4
#5 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

Quoted 18 lines · Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +0 -0
index 6740fdf..f7dee81 100644

arch/mips/cpu/start.S wr_done: · line 269

Quoted 5 lines
arch/mips/cpu/start.S +2 -0
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init

This should be called from C code somewhere, in fact, doesn't SPL's common code call debug_uart_init already ?

Quoted 8 lines
arch/mips/cpu/start.S +4 -0
+	jalr	t9
+	 nop
+#endif
+
 	move	a0, zero		# a0 <-- boot_flags = 0
 	PTR_LA	t9, board_init_f
 
Signature · 2 lines
Best regards,
Marek Vasut
#6 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

Hi Marek,

Quoted 22 lines · Marek Vasut
Quoted 21 lines · Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +0 -0
index 6740fdf..f7dee81 100644
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
Quoted 5 lines

arch/mips/cpu/start.S wr_done: · line 269

Quoted 2 lines
arch/mips/cpu/start.S +2 -0
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init

This should be called from C code somewhere, in fact, doesn't SPL's common code call debug_uart_init already ?

Why should this be called from C code?
BTW, I don't think that SPL common code calls debug_uart_init.

Quoted 11 lines

arch/mips/cpu/start.S wr_done: · line 276

Quoted 9 lines
arch/mips/cpu/start.S +4 -0
+	jalr	t9
+	 nop
+#endif
+
 	move	a0, zero		# a0 <-- boot_flags = 0
 	PTR_LA	t9, board_init_f
 

Regards,
Álvaro.

#7 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

Quoted 25 lines · Álvaro Fernández Rojas

Hi Marek,

Quoted 22 lines · Marek Vasut
Quoted 21 lines · Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +0 -0
index 6740fdf..f7dee81 100644
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
Quoted 7 lines
Quoted 5 lines

arch/mips/cpu/start.S wr_done: · line 269

Quoted 2 lines
arch/mips/cpu/start.S +2 -0
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init

This should be called from C code somewhere, in fact, doesn't SPL's common code call debug_uart_init already ?

Why should this be called from C code?

Because the less stuff we have in assembler the better.

Quoted 1 line

BTW, I don't think that SPL common code calls debug_uart_init.

That's where it would make sense, grepping through the source indicates a lot of boards call this from their spl code. Also, you enter board_init_f right below, so you can start there ...

Quoted 15 lines
Quoted 11 lines

arch/mips/cpu/start.S wr_done: · line 276

Quoted 9 lines
arch/mips/cpu/start.S +4 -0
+	jalr	t9
+	 nop
+#endif
+
 	move	a0, zero		# a0 <-- boot_flags = 0
 	PTR_LA	t9, board_init_f
 

Regards,
Álvaro.

Signature · 2 lines
Best regards,
Marek Vasut
#8 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

Hi Marek,

Quoted 32 lines · Marek Vasut
Quoted 31 lines · Álvaro Fernández Rojas

Hi Marek,

Quoted 27 lines · Marek Vasut
Quoted 18 lines · Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +0 -0
index 6740fdf..f7dee81 100644

arch/mips/cpu/start.S wr_done: · line 269

Quoted 5 lines
arch/mips/cpu/start.S +2 -0
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init

This should be called from C code somewhere, in fact, doesn't SPL's common code call debug_uart_init already ?

Quoted 3 lines
Quoted 1 line

Why should this be called from C code?

Because the less stuff we have in assembler the better.

... or not.

Quoted 6 lines
Quoted 2 lines

BTW, I don't think that SPL common code calls debug_uart_init.

That's where it would make sense, grepping through the source indicates a lot of boards call this from their spl code. Also, you enter board_init_f right below, so you can start there ...

Actually I was going to do that and Daniel suggested otherwise :)
https://lists.denx.de/pipermail/u-boot/2017-April/287388.html
---
I think we should move this to MIPS start.S to support this for all MIPS boards in a generic way. Puttings following code between 'setup_stack_gd' and the jump to 'board_init_f' should work:

#ifdef CONFIG_DEBUG_UART
	PTR_LA	t9, debug_uart_init
	jalr	t9
	 nop

#endif
---
BTW, like Daniel I also think this is the proper way to go.

Quoted 13 lines
Quoted 13 lines
Quoted 12 lines
Quoted 10 lines
arch/mips/cpu/start.S +4 -0
+	jalr	t9
+	 nop
+#endif
+
 	move	a0, zero		# a0 <-- boot_flags = 0
 	PTR_LA	t9, board_init_f
 
Quoted 5 lines
Quoted 3 lines

Regards,
Álvaro.

Regards,
Álvaro.

#9 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

Quoted 53 lines · Álvaro Fernández Rojas

Hi Marek,

Quoted 32 lines · Marek Vasut
Quoted 31 lines · Álvaro Fernández Rojas

Hi Marek,

Quoted 27 lines · Marek Vasut
Quoted 18 lines · Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +0 -0
index 6740fdf..f7dee81 100644

arch/mips/cpu/start.S wr_done: · line 269

Quoted 5 lines
arch/mips/cpu/start.S +2 -0
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init

This should be called from C code somewhere, in fact, doesn't SPL's common code call debug_uart_init already ?

Quoted 3 lines
Quoted 1 line

Why should this be called from C code?

Because the less stuff we have in assembler the better.

... or not.

Quoted 6 lines
Quoted 2 lines

BTW, I don't think that SPL common code calls debug_uart_init.

That's where it would make sense, grepping through the source indicates a lot of boards call this from their spl code. Also, you enter board_init_f right below, so you can start there ...

Actually I was going to do that and Daniel suggested otherwise :)
https://lists.denx.de/pipermail/u-boot/2017-April/287388.html
---
I think we should move this to MIPS start.S to support this for all MIPS boards in a generic way. Puttings following code between 'setup_stack_gd' and the jump to 'board_init_f' should work:

Quoted 7 lines
#ifdef CONFIG_DEBUG_UART
	PTR_LA	t9, debug_uart_init
	jalr	t9
	 nop

#endif
---
BTW, like Daniel I also think this is the proper way to go.

Can you elaborate why is it better to put more stuff into the assembler rather than C? I'd love to hear the rationale for that.

I agree this should be called from common code , I disagree this should be called from assembler.

Signature · 2 lines
Best regards,
Marek Vasut
#10 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

Am 23.04.2017 um 19:08 schrieb Marek Vasut:

Quoted 62 lines · Álvaro Fernández Rojas
Quoted 53 lines

Hi Marek,

Quoted 32 lines · Marek Vasut
Quoted 31 lines · Álvaro Fernández Rojas

Hi Marek,

Quoted 27 lines · Marek Vasut
Quoted 18 lines · Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +0 -0
index 6740fdf..f7dee81 100644

arch/mips/cpu/start.S wr_done: · line 269

Quoted 5 lines
arch/mips/cpu/start.S +2 -0
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init

This should be called from C code somewhere, in fact, doesn't SPL's common code call debug_uart_init already ?

Quoted 3 lines
Quoted 1 line

Why should this be called from C code?

Because the less stuff we have in assembler the better.

... or not.

Quoted 6 lines
Quoted 2 lines

BTW, I don't think that SPL common code calls debug_uart_init.

That's where it would make sense, grepping through the source indicates a lot of boards call this from their spl code. Also, you enter board_init_f right below, so you can start there ...

Actually I was going to do that and Daniel suggested otherwise :)
https://lists.denx.de/pipermail/u-boot/2017-April/287388.html
---
I think we should move this to MIPS start.S to support this for all MIPS boards in a generic way. Puttings following code between 'setup_stack_gd' and the jump to 'board_init_f' should work:

Quoted 7 lines
#ifdef CONFIG_DEBUG_UART
	PTR_LA	t9, debug_uart_init
	jalr	t9
	 nop

#endif
---
BTW, like Daniel I also think this is the proper way to go.

Quoted 6 lines

Can you elaborate why is it better to put more stuff into the assembler rather than C? I'd love to hear the rationale for that.

I agree this should be called from common code , I disagree this should be called from assembler.

The purpose of debug_uart_init is to run as early as possible to provide debug output in the init code until serial_init/console_init_f have been executed. The earliest point for debug_uart_init depends on arch and/or SoC. On MIPS this point is directly after the setup_stack_gd macro. Actually there are two points on MIPS. One is before calling lowlevel_init when the stack can be used from some SRAM (option CONFIG_MIPS_INIT_STACK_IN_SRAM). This allows on some MIPS SoC's (not on all!) to implement lowlevel_init in C and to use debug_uart. This can't be realized with common code called from board_init_f. And no MIPS board currently boots with SPL, so calling debug_uart_init from spl.c is also not an option.

Also the earliest board-specific callback from board_init_f is board_early_init_f from where some MIPS boards already call debug_uart_init. Before each new MIPS board copies this style, it's better to solve this in a generic way at least for MIPS. Solving this for all archs would mean to call debug_uart_init as the first function in board_init_f. But this would conflict with some archs (x86, xtensa, nios) which already calling debug_uart_init from start.S.

Signature · 9 lines
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170423/6356693c/attachment.sig>
#11 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

Quoted 84 lines · Daniel Schwierzeck

Am 23.04.2017 um 19:08 schrieb Marek Vasut:

Quoted 62 lines · Álvaro Fernández Rojas
Quoted 53 lines

Hi Marek,

Quoted 32 lines · Marek Vasut
Quoted 31 lines · Álvaro Fernández Rojas

Hi Marek,

Quoted 27 lines · Marek Vasut
Quoted 18 lines · Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +0 -0
index 6740fdf..f7dee81 100644

arch/mips/cpu/start.S wr_done: · line 269

Quoted 5 lines
arch/mips/cpu/start.S +2 -0
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init

This should be called from C code somewhere, in fact, doesn't SPL's common code call debug_uart_init already ?

Quoted 3 lines
Quoted 1 line

Why should this be called from C code?

Because the less stuff we have in assembler the better.

... or not.

Quoted 6 lines
Quoted 2 lines

BTW, I don't think that SPL common code calls debug_uart_init.

That's where it would make sense, grepping through the source indicates a lot of boards call this from their spl code. Also, you enter board_init_f right below, so you can start there ...

Actually I was going to do that and Daniel suggested otherwise :)
https://lists.denx.de/pipermail/u-boot/2017-April/287388.html
---
I think we should move this to MIPS start.S to support this for all MIPS boards in a generic way. Puttings following code between 'setup_stack_gd' and the jump to 'board_init_f' should work:

Quoted 7 lines
#ifdef CONFIG_DEBUG_UART
	PTR_LA	t9, debug_uart_init
	jalr	t9
	 nop

#endif
---
BTW, like Daniel I also think this is the proper way to go.

Quoted 6 lines

Can you elaborate why is it better to put more stuff into the assembler rather than C? I'd love to hear the rationale for that.

I agree this should be called from common code , I disagree this should be called from assembler.

The purpose of debug_uart_init is to run as early as possible to provide debug output in the init code until serial_init/console_init_f have been executed. The earliest point for debug_uart_init depends on arch and/or SoC. On MIPS this point is directly after the setup_stack_gd macro. Actually there are two points on MIPS. One is before calling lowlevel_init when the stack can be used from some SRAM (option CONFIG_MIPS_INIT_STACK_IN_SRAM). This allows on some MIPS SoC's (not on all!) to implement lowlevel_init in C and to use debug_uart. This can't be realized with common code called from board_init_f. And no MIPS board currently boots with SPL, so calling debug_uart_init from spl.c is also not an option.

Quoted 7 lines

Also the earliest board-specific callback from board_init_f is board_early_init_f from where some MIPS boards already call debug_uart_init. Before each new MIPS board copies this style, it's better to solve this in a generic way at least for MIPS. Solving this for all archs would mean to call debug_uart_init as the first function in board_init_f. But this would conflict with some archs (x86, xtensa, nios) which already calling debug_uart_init from start.S.

Then it might be time to drain the swamp ? Although that'd likely be way out of scope of this patchset.

Isn't arch_cpu_init() called way before board_early_init_f() and possibly the right place for you to put it ? If not, adding another entry into init_sequence_f might be an option (note that this patch adds the call to debug_uart_init() right before jumping into board_init_f , not right after setup_stack_gd ).

I cannot say I'm a big fan of growing something comparable to init_sequence_f in mips assembler ... the assembler parts should only be used to bring up the most basic environment to run C code, the rest should be implemented in C code.

Signature · 2 lines
Best regards,
Marek Vasut
#12 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

In reply to Álvaro Fernández Rojas

Am 23.04.2017 um 12:50 schrieb Álvaro Fernández Rojas:

Quoted 18 lines

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

---
 arch/mips/cpu/start.S | 6 ++++++
 1 file changed, 6 insertions(+)
arch/mips/cpu/start.S +0 -0
index 6740fdf..f7dee81 100644

arch/mips/cpu/start.S wr_done: · line 273

Quoted 9 lines
arch/mips/cpu/start.S +6 -0
@@ -265,6 +265,12 @@ wr_done:
 	setup_stack_gd
 #endif
 
+#ifdef CONFIG_DEBUG_UART
+	PTR_LA	t9, debug_uart_init
+	jalr	t9
+	 nop
+#endif
+

I think we should move this inside the "#ifndef CONFIG_MIPS_INIT_STACK_IN_SRAM ... #endif" block and also add this in the "#ifdef CONFIG_MIPS_INIT_STACK_IN_SRAM ... #endif" block above. This way a SoC can use debug_uart also in lowlevel_init if it supports the initial stack in SRAM with option CONFIG_MIPS_INIT_STACK_IN_SRAM.

Quoted 4 lines
arch/mips/cpu/start.S +0 -0
 	move	a0, zero		# a0 <-- boot_flags = 0
 	PTR_LA	t9, board_init_f
 
Signature · 9 lines
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170423/bcf1c422/attachment.sig>
#13 lore raw

cover MIPS: call debug_uart_init right before board_init_f

In reply to Álvaro Fernández Rojas

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

v2: Introduce the changes suggested by Daniel Schwierzeck:
- Call debug_uart_init before low level init for boards with stack in SRAM.

Daniel Schwierzeck (1):
MIPS: call debug_uart_init right before board_init_f

Álvaro Fernández Rojas (3):
MIPS: QCA AP121: remove debug_uart_init call
MIPS: QCA AP143: remove debug_uart_init call
MIPS: tl-wdr4300: remove debug_uart_init call

 arch/mips/cpu/start.S          | 14 ++++++++++++++
 board/qca/ap121/ap121.c        |  3 ---
 board/qca/ap143/ap143.c        |  3 ---
 board/tplink/wdr4300/wdr4300.c | 18 ++++++++++++++----
 4 files changed, 28 insertions(+), 10 deletions(-)
Signature · 1 line
2.1.4
#14 lore raw

PATCH 1/4 MIPS: QCA AP121: remove debug_uart_init call

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.

---
v2: No changes.

 board/qca/ap121/ap121.c | 3 ---
 1 file changed, 3 deletions(-)
board/qca/ap121/ap121.c +0 -3
index e245faa..ac9be35 100644
@@ -43,9 +43,6 @@ void board_debug_uart_init(void)
 
 int board_early_init_f(void)
 {
-#ifdef CONFIG_DEBUG_UART
-	debug_uart_init();
-#endif
 	ddr_init();
 	ath79_eth_reset();
 	return 0;
Signature · 1 line
2.1.4
#15 lore raw

PATCH 1/4 MIPS: QCA AP121: remove debug_uart_init call

Am 24.04.2017 um 19:03 schrieb Álvaro Fernández Rojas:

Quoted 11 lines

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.

---
v2: No changes.

 board/qca/ap121/ap121.c | 3 ---
 1 file changed, 3 deletions(-)

applied to u-boot-mips/next, thanks!

Signature · 9 lines
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170430/04ec7149/attachment.sig>
#16 lore raw

PATCH 2/4 MIPS: QCA AP143: remove debug_uart_init call

In reply to Álvaro Fernández Rojas

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.

---
v2: No changes.

 board/qca/ap143/ap143.c | 3 ---
 1 file changed, 3 deletions(-)
board/qca/ap143/ap143.c +0 -3
index e921ea5..19b55ac 100644
@@ -59,9 +59,6 @@ void board_debug_uart_init(void)
 
 int board_early_init_f(void)
 {
-#ifdef CONFIG_DEBUG_UART
-	debug_uart_init();
-#endif
 	ddr_init();
 	ath79_eth_reset();
 	return 0;
Signature · 1 line
2.1.4
#17 lore raw

PATCH 2/4 MIPS: QCA AP143: remove debug_uart_init call

Am 24.04.2017 um 19:03 schrieb Álvaro Fernández Rojas:

Quoted 11 lines

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.

---
v2: No changes.

 board/qca/ap143/ap143.c | 3 ---
 1 file changed, 3 deletions(-)

applied to u-boot-mips/next, thanks!

Signature · 9 lines
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170430/abf62bba/attachment.sig>
#18 lore raw

PATCH 3/4 MIPS: tl-wdr4300: remove debug_uart_init call

In reply to Álvaro Fernández Rojas

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.
WDR4300 doesn't provide a board_debug_uart_init and configures pinmux in board_early_init_f instead. Since I have no idead of what's the needed uart pinmux config, I copied the whole pinmux config to a new function that is called from board_early_init_f if CONFIG_DEBUG_UART_BOARD_INIT is not enabled.

---
v2: No changes.

 board/tplink/wdr4300/wdr4300.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)
board/tplink/wdr4300/wdr4300.c +14 -4
index 6e070fd..0f59648 100644
@@ -34,8 +34,7 @@ static void wdr4300_usb_start(void)
 static inline void wdr4300_usb_start(void) {}
 #endif
 
-#ifdef CONFIG_BOARD_EARLY_INIT_F
-int board_early_init_f(void)
+void wdr4300_pinmux_config(void)
 {
 	void __iomem *regs;
 
@@ -56,9 +55,20 @@ int board_early_init_f(void)
 	writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC3);
 	writel(0x0000004d, regs + AR934X_GPIO_REG_OUT_FUNC4);
 	writel(0x00000000, regs + AR934X_GPIO_REG_OUT_FUNC5);
+}
+
+#ifdef CONFIG_DEBUG_UART_BOARD_INIT
+void board_debug_uart_init(void)
+{
+	wdr4300_pinmux_config();
+}
+#endif
 
-#ifdef CONFIG_DEBUG_UART
-	debug_uart_init();
+#ifdef CONFIG_BOARD_EARLY_INIT_F
+int board_early_init_f(void)
+{
+#ifndef CONFIG_DEBUG_UART_BOARD_INIT
+	wdr4300_pinmux_config();
 #endif
 
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
Signature · 1 line
2.1.4
#19 lore raw

PATCH 3/4 MIPS: tl-wdr4300: remove debug_uart_init call

Am 24.04.2017 um 19:03 schrieb Álvaro Fernández Rojas:

Quoted 8 lines

In order to add a generic MIPS debug_uart_init call right before the call to board_early_init_f, we need to remove all calls to debug_uart_init from every MIPS boards.
WDR4300 doesn't provide a board_debug_uart_init and configures pinmux in board_early_init_f instead. Since I have no idead of what's the needed uart pinmux config, I copied the whole pinmux config to a new function that is called from board_early_init_f if CONFIG_DEBUG_UART_BOARD_INIT is not enabled.

Quoted 7 lines

---
v2: No changes.

 board/tplink/wdr4300/wdr4300.c | 18 ++++++++++++++----
 1 file changed, 14 insertions(+), 4 deletions(-)

applied to u-boot-mips/next, thanks!

Signature · 9 lines
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170430/987d7c49/attachment.sig>
#20 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

In reply to Álvaro Fernández Rojas

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled for boards without stack in SRAM.
On the other hand, boards with stack in SRAM can call earlier (right before low level init).

---
v2: Introduce the changes suggested by Daniel Schwierzeck:
- Call debug_uart_init before low level init for boards with stack in SRAM.

 arch/mips/cpu/start.S | 14 ++++++++++++++
 1 file changed, 14 insertions(+)
arch/mips/cpu/start.S +14 -0
index 6740fdf..a6b7a04 100644
@@ -237,6 +237,13 @@ wr_done:
 #ifdef CONFIG_MIPS_INIT_STACK_IN_SRAM
 	/* Set up initial stack and global data */
 	setup_stack_gd
+
+# ifdef CONFIG_DEBUG_UART
+	/* Earliest point to set up debug uart */
+	PTR_LA	t9, debug_uart_init
+	jalr	t9
+	 nop
+# endif
 #endif
 
 #ifndef CONFIG_SKIP_LOWLEVEL_INIT
@@ -263,6 +270,13 @@ wr_done:
 #ifndef CONFIG_MIPS_INIT_STACK_IN_SRAM
 	/* Set up initial stack and global data */
 	setup_stack_gd
+
+# ifdef CONFIG_DEBUG_UART
+	/* Earliest point to set up debug uart */
+	PTR_LA	t9, debug_uart_init
+	jalr	t9
+	 nop
+# endif
 #endif
 
 	move	a0, zero		# a0 <-- boot_flags = 0
Signature · 1 line
2.1.4
#21 lore raw

PATCH 4/4 MIPS: call debug_uart_init right before board_init_f

Am 24.04.2017 um 19:03 schrieb Álvaro Fernández Rojas:

Quoted 10 lines

From: Daniel Schwierzeck <[email protected]>

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled for boards without stack in SRAM.
On the other hand, boards with stack in SRAM can call earlier (right before low level init).

Quoted 9 lines

---
v2: Introduce the changes suggested by Daniel Schwierzeck:
- Call debug_uart_init before low level init for boards with stack in SRAM.

 arch/mips/cpu/start.S | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

applied to u-boot-mips/next, thanks!

Signature · 9 lines
- Daniel

-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: OpenPGP digital signature
URL: <http://lists.denx.de/pipermail/u-boot/attachments/20170430/738a1195/attachment.sig>
#22 lore raw

cover MIPS: call debug_uart_init right before board_init_f

In reply to Álvaro Fernández Rojas

I've just realized I sent this without v2 prefix.
Should I resend it?

Quoted 22 lines · Álvaro Fernández Rojas

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

v2: Introduce the changes suggested by Daniel Schwierzeck:
- Call debug_uart_init before low level init for boards with stack in SRAM.

Daniel Schwierzeck (1):
MIPS: call debug_uart_init right before board_init_f

Álvaro Fernández Rojas (3):
MIPS: QCA AP121: remove debug_uart_init call
MIPS: QCA AP143: remove debug_uart_init call
MIPS: tl-wdr4300: remove debug_uart_init call

 arch/mips/cpu/start.S          | 14 ++++++++++++++
 board/qca/ap121/ap121.c        |  3 ---
 board/qca/ap143/ap143.c        |  3 ---
 board/tplink/wdr4300/wdr4300.c | 18 ++++++++++++++----
 4 files changed, 28 insertions(+), 10 deletions(-)
#23 lore raw

cover MIPS: call debug_uart_init right before board_init_f

2017-04-25 17:48 GMT+02:00 Álvaro Fernández Rojas <[email protected]>:

Quoted 2 lines

I've just realized I sent this without v2 prefix.
Should I resend it?

no, I've found the right patches in patchwork ;)

Quoted 24 lines · Álvaro Fernández Rojas
Quoted 22 lines

All MIPS boards that support debug uart are calling debug_uart_init right at the beginning of board_early_init_f.
Instead of doing that, let's provide a generic call to debug_uart_init right before the call to board_init_f if debug uart is enabled.

v2: Introduce the changes suggested by Daniel Schwierzeck:
- Call debug_uart_init before low level init for boards with stack in SRAM.

Daniel Schwierzeck (1):
MIPS: call debug_uart_init right before board_init_f

Álvaro Fernández Rojas (3):
MIPS: QCA AP121: remove debug_uart_init call
MIPS: QCA AP143: remove debug_uart_init call
MIPS: tl-wdr4300: remove debug_uart_init call

 arch/mips/cpu/start.S          | 14 ++++++++++++++
 board/qca/ap121/ap121.c        |  3 ---
 board/qca/ap143/ap143.c        |  3 ---
 board/tplink/wdr4300/wdr4300.c | 18 ++++++++++++++----
 4 files changed, 28 insertions(+), 10 deletions(-)
Signature · 1 line
- Daniel