summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMasahiro Yamada <yamada.masahiro@socionext.com>2015-09-22 00:27:36 +0900
committerMasahiro Yamada <yamada.masahiro@socionext.com>2015-09-25 00:27:53 +0900
commitfcbcd59730255018dbe78af9294598273a85a0de (patch)
tree6ca5a91bea033ed8545fa9566d765627bdb266ab
parent257b11f32d0ba451b8b7eba72f0db5e182d425dd (diff)
downloadu-boot-imx-fcbcd59730255018dbe78af9294598273a85a0de.zip
u-boot-imx-fcbcd59730255018dbe78af9294598273a85a0de.tar.gz
u-boot-imx-fcbcd59730255018dbe78af9294598273a85a0de.tar.bz2
ARM: uniphier: fix glitch signal problem for low-level debug
Currently, IECTRL is enabled after pin-mux settings for the low-level debugging for PH1-LD4 and PH1-sLD8. While IECTRL is disabled, input signals are pulled-down, i.e. glitch signal (Low to High transition) problem occurs if pin-mux is set up first. As a result, one invalid character is input to the UART block and the auto-boot counting is terminated immediately. The correct initialization procedure is: [1] Enable IECTRL (if IECTRL exists for the pins) [2] Set up pin-muxing [3] Deassert the reset of the hardware block Currently, the low-level debugging is working for PH1-sLD3 and PH1-Pro4, but just in case, follow the sequence for all the SoCs. Signed-off-by: Masahiro Yamada <yamada.masahiro@socionext.com>
-rw-r--r--arch/arm/mach-uniphier/ph1-ld4/lowlevel_debug.S10
-rw-r--r--arch/arm/mach-uniphier/ph1-pro4/lowlevel_debug.S14
-rw-r--r--arch/arm/mach-uniphier/ph1-sld3/lowlevel_debug.S6
-rw-r--r--arch/arm/mach-uniphier/ph1-sld8/lowlevel_debug.S10
4 files changed, 20 insertions, 20 deletions
diff --git a/arch/arm/mach-uniphier/ph1-ld4/lowlevel_debug.S b/arch/arm/mach-uniphier/ph1-ld4/lowlevel_debug.S
index fd393dc..c0f14e0 100644
--- a/arch/arm/mach-uniphier/ph1-ld4/lowlevel_debug.S
+++ b/arch/arm/mach-uniphier/ph1-ld4/lowlevel_debug.S
@@ -14,16 +14,16 @@
#include <mach/debug-uart.S>
ENTRY(setup_lowlevel_debug)
- init_debug_uart r0, r1, r2
+ ldr r0, =SG_IECTRL
+ ldr r1, [r0]
+ orr r1, r1, #1
+ str r1, [r0]
/* UART Port 0 */
sg_set_pinsel 85, 1, 8, 4, r0, r1
sg_set_pinsel 88, 1, 8, 4, r0, r1
- ldr r0, =SG_IECTRL
- ldr r1, [r0]
- orr r1, r1, #1
- str r1, [r0]
+ init_debug_uart r0, r1, r2
mov pc, lr
ENDPROC(setup_lowlevel_debug)
diff --git a/arch/arm/mach-uniphier/ph1-pro4/lowlevel_debug.S b/arch/arm/mach-uniphier/ph1-pro4/lowlevel_debug.S
index ce5dd4b..56f3851 100644
--- a/arch/arm/mach-uniphier/ph1-pro4/lowlevel_debug.S
+++ b/arch/arm/mach-uniphier/ph1-pro4/lowlevel_debug.S
@@ -15,13 +15,6 @@
#include <mach/debug-uart.S>
ENTRY(setup_lowlevel_debug)
- ldr r0, =SC_CLKCTRL
- ldr r1, [r0]
- orr r1, r1, #SC_CLKCTRL_CEN_PERI
- str r1, [r0]
-
- init_debug_uart r0, r1, r2
-
/* UART Port 0 */
sg_set_pinsel 127, 0, 4, 8, r0, r1
sg_set_pinsel 128, 0, 4, 8, r0, r1
@@ -30,5 +23,12 @@ ENTRY(setup_lowlevel_debug)
mov r1, #1
str r1, [r0]
+ ldr r0, =SC_CLKCTRL
+ ldr r1, [r0]
+ orr r1, r1, #SC_CLKCTRL_CEN_PERI
+ str r1, [r0]
+
+ init_debug_uart r0, r1, r2
+
mov pc, lr
ENDPROC(setup_lowlevel_debug)
diff --git a/arch/arm/mach-uniphier/ph1-sld3/lowlevel_debug.S b/arch/arm/mach-uniphier/ph1-sld3/lowlevel_debug.S
index ee2eae6..f4eccb4 100644
--- a/arch/arm/mach-uniphier/ph1-sld3/lowlevel_debug.S
+++ b/arch/arm/mach-uniphier/ph1-sld3/lowlevel_debug.S
@@ -15,6 +15,9 @@
#include <mach/debug-uart.S>
ENTRY(setup_lowlevel_debug)
+ sg_set_pinsel 63, 0, 4, 4, r0, r1
+ sg_set_pinsel 64, 1, 4, 4, r0, r1
+
ldr r0, =BCSCR5
ldr r1, =0x24440000
str r1, [r0]
@@ -26,8 +29,5 @@ ENTRY(setup_lowlevel_debug)
init_debug_uart r0, r1, r2
- sg_set_pinsel 63, 0, 4, 4, r0, r1
- sg_set_pinsel 64, 1, 4, 4, r0, r1
-
mov pc, lr
ENDPROC(setup_lowlevel_debug)
diff --git a/arch/arm/mach-uniphier/ph1-sld8/lowlevel_debug.S b/arch/arm/mach-uniphier/ph1-sld8/lowlevel_debug.S
index 3ada4c9..571ce60 100644
--- a/arch/arm/mach-uniphier/ph1-sld8/lowlevel_debug.S
+++ b/arch/arm/mach-uniphier/ph1-sld8/lowlevel_debug.S
@@ -14,16 +14,16 @@
#include <mach/debug-uart.S>
ENTRY(setup_lowlevel_debug)
- init_debug_uart r0, r1, r2
+ ldr r0, =SG_IECTRL
+ ldr r1, [r0]
+ orr r1, r1, #1
+ str r1, [r0]
/* UART Port 0 */
sg_set_pinsel 70, 3, 8, 4, r0, r1
sg_set_pinsel 71, 3, 8, 4, r0, r1
- ldr r0, =SG_IECTRL
- ldr r1, [r0]
- orr r1, r1, #1
- str r1, [r0]
+ init_debug_uart r0, r1, r2
mov pc, lr
ENDPROC(setup_lowlevel_debug)