Re: [PATCH v4 2/8] arm64: dts: exynos: Add dts files for 64-bit Exynos5433 SoC

Arnd Bergmann
2015-02-26T15:42:20Z

On Thursday 26 February 2015 17:18:41 Chanwoo Choi wrote:
> I add following aliases and serial_1/serial_3 dt node in board dtsi:
> I tested that change the alias of serial_x node.
>
> aliases {
> serial0 = &serial_1;
> serial1 = &serial_3;
> };
>
> /* Add 'linux,stdout-path' property to print kernel log by using ealycon */
> chosen {
> linux,stdout-path = &serial_1;
> };
>
> [snip]
>
> /* serial_1 is used for printing kernel log throught JIG cable */
> &serial_1 {
> status = "okay";
> };
>
> &serial_3 {
> status = "okay";
> };
>
> In result, serial driver create the /dev/ttySAC0 for serial_1 and /dev/ttySAC1 for serial_3.
> But, I cannot complete the kernel booting and stop it with following kernel log
>
> [ 0.000000] Booting Linux on physical CPU 0x100
> [ 0.000000] Initializing cgroup subsys cpuset
> [ 0.000000] Initializing cgroup subsys cpu
> [ 0.000000] Initializing cgroup subsys cpuacct
> [ 0.000000] Linux version 4.0.0-rc1-00066-g49bfcec-dirty (cwchoi00@chan) (gcc version 4.9.2 20140904 (prerelease) (crosstool-NG l5
> [snip]
> [ 0.000000] Kernel command line: console=ttySAC1,115200 earlycon=exynos4210,0x14C20000

What is the "earlycon=exynos4210,0x14C20000" doing here? Should that not just be
"earlycon=exynos" or something like that when you set the correct stdout-path?

> [snip]
> [ 0.651647] dma-pl330 15610000.pdma: Loaded driver for PL330 DMAC-341330
> [ 0.651851] dma-pl330 15610000.pdma: DBUFF-32x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32
> [ 0.658566] dma-pl330 15600000.pdma: Loaded driver for PL330 DMAC-341330
> [ 0.662872] dma-pl330 15600000.pdma: DBUFF-32x4bytes Num_Chans-8 Num_Peri-32 Num_Events-32
> [ 0.672487] dma-pl330 11420000.adma: Loaded driver for PL330 DMAC-341330
> [ 8466.414900] dma-pl330 11420000.adma: DBUFF-8x8bytes Num_Chans-8 Num_Peri-16 Num_Events-8
> [ 8466.481648] 14c20000.serial: ttySAC0 at MMIO 0x14c20000 (irq = 21, base_baud = 0) is a S3C6400/10
> (dont' print any kernel log)
>
> So, I change the kernel command line about ('console' bootparam) as following:
> because tty framework must use the 'console' bootparam to print kernel log.
> - original : Kernel command line: console=ttySAC1,115200 ... (cannot the kernel log from serial driver probed)
> - modification : Kernel command line: console=ttySAC0,115200 ... (got the successful kernel booting)
>
> After modification, I got the successful kernel booting.
>
> If should use the serial_0 device and then modify the 'aliases' as following:
> I have to modify the commandline of bootloader if the commandline of bootloader is used
> instad of default kernel command line.
>
> aliases {
> serial0 = &serial_0;
> serial1 = &serial_1;
> serial2 = &serial_3;
> };

If you need the numbers to match, maybe there is still a bug in the serial port
driver and it uses some arbitrary number (e.g. probe order, or ascending
MMIO address) for the console instead of the alias?

Arnd