Hi, Arnd
2014-09-29 21:47 GMT+08:00 Arnd Bergmann <[email protected]>:
> On Monday 29 September 2014 20:04:49 [email protected] wrote:
>> +
>> +/memreserve/ 0x80000000 0x00010000;
>
> Maybe add a comment explaining why it is reserved?
>
>> + chosen {
>> + bootargs = "earlycon=serial_sprd,0x70000000";
>> + };
>
> Just remove this for now, the command line should really be set by the
> boot loader, not hardcoded in the dts file.
>
> IIRC, the earlycon=... syntax is not recommended on DT based systems,
> better use the "stdout-path" syntax instead.
>
I have tried to use "stdout-path" instead of "bootargs= "earlycon=
..." like below :
/ {
...
chosen {
stdout-path = "/serial@70000000";
};
uart0: serial@70000000 {
status="okay";
};
...
};
But then there is nothing output information on serial console.(I have
been testing in Fast Model)
I saw the below code in init/main.c
/* Check for early params. */
static int __init do_early_param(char *param, char *val, const char *unused)
{
const struct obs_kernel_param *p;
for (p = __setup_start; p < __setup_end; p++) {
if ((p->early && parameq(param, p->str)) ||
(strcmp(param, "console") == 0 &&
strcmp(p->str, "earlycon") == 0)
) {
if (p->setup_func(val) != 0)
pr_warn("Malformed early option '%s'\n", param);
}
}
/* We accept everything at this stage. */
return 0;
}
And I saw a patch from Grant Likely, he had a comment in it :
"If the devicetree specifies a serial port as a stdout device, then the
kernel can use it as the default console if nothing else was selected on
the command line. For any serial port that uses the uart_add_one_port()
feature, the uart_add_one_port() has all the information needed to
automatically enable the console device, which is what this patch does."
So, I guess that the reason why I can't see any output information on
console after using "stdout-path" instead of "earlycon" is that I
haven't a driver of Spreadtrum's serial, and dose not use the
uart_add_one_port() feature.
I don't know is correct what I guess.
Could you give me some suggestions to solve this problem?
Thanks,
Chunyan
On Wednesday 15 October 2014 11:17:07 Lyra Zhang wrote:
> Hi, Arnd
Hi Lyra,
Sorry for the late reply, I've been away travelling and am just
now catching up on email. Have you found a solution or do
you still need help with this?
Arnd
> 2014-09-29 21:47 GMT+08:00 Arnd Bergmann <[email protected]>:
> > On Monday 29 September 2014 20:04:49 [email protected] wrote:
> >> +
> >> +/memreserve/ 0x80000000 0x00010000;
> >
> > Maybe add a comment explaining why it is reserved?
> >
> >> + chosen {
> >> + bootargs = "earlycon=serial_sprd,0x70000000";
> >> + };
> >
> > Just remove this for now, the command line should really be set by the
> > boot loader, not hardcoded in the dts file.
> >
> > IIRC, the earlycon=... syntax is not recommended on DT based systems,
> > better use the "stdout-path" syntax instead.
> >
>
> I have tried to use "stdout-path" instead of "bootargs= "earlycon=
> ..." like below :
>
> / {
> ...
>
> chosen {
> stdout-path = "/serial@70000000";
> };
>
> uart0: serial@70000000 {
> status="okay";
> };
> ...
> };
>
> But then there is nothing output information on serial console.(I have
> been testing in Fast Model)
>
>
> I saw the below code in init/main.c
>
> /* Check for early params. */
> static int __init do_early_param(char *param, char *val, const char *unused)
> {
> const struct obs_kernel_param *p;
>
> for (p = __setup_start; p < __setup_end; p++) {
> if ((p->early && parameq(param, p->str)) ||
> (strcmp(param, "console") == 0 &&
> strcmp(p->str, "earlycon") == 0)
> ) {
> if (p->setup_func(val) != 0)
> pr_warn("Malformed early option '%s'\n", param);
> }
> }
> /* We accept everything at this stage. */
> return 0;
> }
>
> And I saw a patch from Grant Likely, he had a comment in it :
> "If the devicetree specifies a serial port as a stdout device, then the
> kernel can use it as the default console if nothing else was selected on
> the command line. For any serial port that uses the uart_add_one_port()
> feature, the uart_add_one_port() has all the information needed to
> automatically enable the console device, which is what this patch does."
>
> So, I guess that the reason why I can't see any output information on
> console after using "stdout-path" instead of "earlycon" is that I
> haven't a driver of Spreadtrum's serial, and dose not use the
> uart_add_one_port() feature.
>
> I don't know is correct what I guess.
>
> Could you give me some suggestions to solve this problem?
>
Hi, Arnd
This problem have been solved, and was submitted in v2.
Thanks for your answer to the question(which Orson asked for me) about
this on Freenode.
Best regards,
Lyra
2014-10-21 3:00 GMT+08:00 Arnd Bergmann <[email protected]>:
> On Wednesday 15 October 2014 11:17:07 Lyra Zhang wrote:
>> Hi, Arnd
>
> Hi Lyra,
>
> Sorry for the late reply, I've been away travelling and am just
> now catching up on email. Have you found a solution or do
> you still need help with this?
>
> Arnd
>
>> 2014-09-29 21:47 GMT+08:00 Arnd Bergmann <[email protected]>:
>> > On Monday 29 September 2014 20:04:49 [email protected] wrote:
>> >> +
>> >> +/memreserve/ 0x80000000 0x00010000;
>> >
>> > Maybe add a comment explaining why it is reserved?
>> >
>> >> + chosen {
>> >> + bootargs = "earlycon=serial_sprd,0x70000000";
>> >> + };
>> >
>> > Just remove this for now, the command line should really be set by the
>> > boot loader, not hardcoded in the dts file.
>> >
>> > IIRC, the earlycon=... syntax is not recommended on DT based systems,
>> > better use the "stdout-path" syntax instead.
>> >
>>
>> I have tried to use "stdout-path" instead of "bootargs= "earlycon=
>> ..." like below :
>>
>> / {
>> ...
>>
>> chosen {
>> stdout-path = "/serial@70000000";
>> };
>>
>> uart0: serial@70000000 {
>> status="okay";
>> };
>> ...
>> };
>>
>> But then there is nothing output information on serial console.(I have
>> been testing in Fast Model)
>>
>>
>> I saw the below code in init/main.c
>>
>> /* Check for early params. */
>> static int __init do_early_param(char *param, char *val, const char *unused)
>> {
>> const struct obs_kernel_param *p;
>>
>> for (p = __setup_start; p < __setup_end; p++) {
>> if ((p->early && parameq(param, p->str)) ||
>> (strcmp(param, "console") == 0 &&
>> strcmp(p->str, "earlycon") == 0)
>> ) {
>> if (p->setup_func(val) != 0)
>> pr_warn("Malformed early option '%s'\n", param);
>> }
>> }
>> /* We accept everything at this stage. */
>> return 0;
>> }
>>
>> And I saw a patch from Grant Likely, he had a comment in it :
>> "If the devicetree specifies a serial port as a stdout device, then the
>> kernel can use it as the default console if nothing else was selected on
>> the command line. For any serial port that uses the uart_add_one_port()
>> feature, the uart_add_one_port() has all the information needed to
>> automatically enable the console device, which is what this patch does."
>>
>> So, I guess that the reason why I can't see any output information on
>> console after using "stdout-path" instead of "earlycon" is that I
>> haven't a driver of Spreadtrum's serial, and dose not use the
>> uart_add_one_port() feature.
>>
>> I don't know is correct what I guess.
>>
>> Could you give me some suggestions to solve this problem?
>>
>