mirror of
https://github.com/linux-sunxi/u-boot-sunxi.git
synced 2024-02-12 11:16:03 +08:00

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>
30 lines
585 B
ArmAsm
30 lines
585 B
ArmAsm
/*
|
|
* On-chip UART initializaion for low-level debugging
|
|
*
|
|
* Copyright (C) 2014 Panasonic Corporation
|
|
* Author: Masahiro Yamada <yamada.m@jp.panasonic.com>
|
|
*
|
|
* SPDX-License-Identifier: GPL-2.0+
|
|
*/
|
|
|
|
#include <linux/linkage.h>
|
|
#include <mach/sg-regs.h>
|
|
|
|
#define UART_CLK 36864000
|
|
#include <mach/debug-uart.S>
|
|
|
|
ENTRY(setup_lowlevel_debug)
|
|
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
|
|
|
|
init_debug_uart r0, r1, r2
|
|
|
|
mov pc, lr
|
|
ENDPROC(setup_lowlevel_debug)
|