[U-Boot] Enabling uart 3 in arndale

armdev armdev.ftm at gmail.com
Fri Mar 28 10:42:09 CET 2014


Dear Tomasz,

On 16-Mar-2014, at 6:23 pm, Tomasz Figa <tomasz.figa at gmail.com> wrote:

> Hi,
> 
> On 14.03.2014 09:04, armdev wrote:
>> Hi,
>> 
>> We are trying to enable the UART3 on COM18 pins of arndale board. The UART3 RXD and TXD are on pins 2 and 4 which as per the base board specification is connected as
>> 
>> XuRXD3 : UART_3_RXD/GPA1[4] : 2
>> XuTXD3 : UART_3_TXD/GPA1[5] : 4
>> 
>> As per the public reference manual of exynos 5250, there is a register GPACON (0x1140_0000)
>> Setting GPACON |= 0x0010_0000 should enable the pins, but I am not able to see any output on UART3.
>> 
>> Can you please suggest what is the right procedure
> 
> The register is GPA1CON and its GPA1CON[4] and [5] bit fields need both to be set to 0x2 - see Pad Control chapter of Exynos5250 public datasheet. Also GPA1PUD should be reconfigured to disable default pull-down on both pins, again you can find details of the register in the datasheet.
> 
> Best regards,
> Tomasz

Based on the steps provided, we are still not able to get some output on UART3 simultaneously with UART2.
Can you please help us find out what we are missing.

On the current u-boot, Following was the observation and steps to enable UART3 on arndale

Observations / Questions
——————————————
a) The board has the default UART set to UART2 which is at 0x12c20000, while the include/configs/arndale.h has the UART_OFFSET set to 0x010000.
Shouldn’t it be set to 0x20000 ?

b) board_uart_init in board/samsung/arndale/arndale.c is configuring all the uarts, 
Clocks would be set properly for all 4 uarts ?

Steps / Code Modified
——————————————
a) GPAICON[4] and [5] set to 0x2 in board/samsung/arndale/arndale.c
b) GPA1PUD [4] and [5] set to 0.

diff --git a/board/samsung/arndale/arndale.c b/board/samsung/arndale/arndale.c
index 9efc355..4fb291e 100644
--- a/board/samsung/arndale/arndale.c
+++ b/board/samsung/arndale/arndale.c
@@ -102,12 +102,18 @@ static int board_uart_init(void)
 int board_early_init_f(void)
 {
 	int err;
-
+	volatile unsigned int *gpa1con = (volatile unsigned int *)0x11400020;
+	volatile unsigned int *gpa1pud = (volatile unsigned int *)0x11400028;
 	err = board_uart_init();
 	if (err) {
 		debug("UART init failed\n");
 		return err;
 	}
+	serial_init_dev(2);
+	serial_setbrg_dev(2);
+	*gpa1con |= 0x00220000;	
+	*gpa1pud &= 0xfffff0ff;	
+
 	return err;
 }
 #endif



More information about the U-Boot mailing list