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

Chanwoo Choi
2015-02-26T08:18:41Z

On 02/24/2015 08:59 PM, Arnd Bergmann wrote:
> On Tuesday 24 February 2015 20:04:17 Chanwoo Choi wrote:
>> On 02/24/2015 06:48 PM, Arnd Bergmann wrote:
>>> On Tuesday 24 February 2015 17:52:01 Chanwoo Choi wrote:
>>>>
>>>> But, I have a question.
>>>> If we put the aliases into the board dts file instaed of SoC dtsi,
>>>> each board dts file may use the different alias name about same phandle.
>>>
>>> Yes, that is the idea. In particular with the uarts, the intention is
>>> that the numbering of the device nodes in /dev is the same that is
>>> printed on the board (if any), which may be different from the numbering
>>> internal to the SoC.
>>
>> I check the uart device with Exynos5433 SoC based on Linux 4.0-rc1
>> If some board use the serial_0 and serial_3 as following in board dtsi,
>>
>> &serial_0 { --> UART 0 device
>> status = "okay";
>> };
>>
>> &serial_3 { --> UART 3 device
>> status = "okay";
>> };
>>
>> The serial core driver create the follwoing /dev/ttySACx device node
>> by using the number of alias. It maintain the same device number of internel to the SoC.
>>
>> root at localhost:~# ls /dev/ttySAC
>> ttySAC1 ttySAC3
>>
>
> I'm not completely following. So you have set the serial1 alias to
> the &serial_0 device node and serial3 to &serial_3?
>
> Why not use serial0=&serial_0 and serial1=&serial_3? Does the serial0
> alias have a special meaning?

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 at chan) (gcc version 4.9.2 20140904 (prerelease) (crosstool-NG l5
[snip]
[ 0.000000] Kernel command line: console=ttySAC1,115200 earlycon=exynos4210,0x14C20000
[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;
};

Thanks,
Chanwoo Choi