[U-Boot] [PATCH 2/3] x86: BayTrail: Add function to disable the internal legacy UART
Bin Meng
bmeng.cn at gmail.com
Tue Jan 19 11:15:10 CET 2016
Hi Stefan,
On Tue, Jan 19, 2016 at 5:29 PM, Stefan Roese <sr at denx.de> wrote:
> Hi Bin,
>
> (added Simon again to Cc)
>
> On 19.01.2016 09:44, Bin Meng wrote:
>> Hi Stefan,
>>
>> On Tue, Jan 19, 2016 at 4:40 PM, Bin Meng <bmeng.cn at gmail.com> wrote:
>>> Hi Stefan,
>>>
>>> On Mon, Jan 18, 2016 at 5:56 PM, Stefan Roese <sr at denx.de> wrote:
>>>> Some BayTrail boards may want to use a different legacy UART than the
>>>> internal one. E.g. one provided by a Winbond Super IO chip, like the
>>>> W83627. This patch adds a function to disable this BayTrail internal
>>>> UART for this purpose.
>>>>
>>>> Signed-off-by: Stefan Roese <sr at denx.de>
>>>> Cc: Bin Meng <bmeng.cn at gmail.com>
>>>> Cc: Simon Glass <sjg at chromium.org>
>>>> ---
>>>> arch/x86/cpu/baytrail/early_uart.c | 9 +++++++++
>>>> arch/x86/include/asm/u-boot-x86.h | 3 +++
>>>> 2 files changed, 12 insertions(+)
>>>>
>>>> diff --git a/arch/x86/cpu/baytrail/early_uart.c b/arch/x86/cpu/baytrail/early_uart.c
>>>> index b64a3a9..716783c 100644
>>>> --- a/arch/x86/cpu/baytrail/early_uart.c
>>>> +++ b/arch/x86/cpu/baytrail/early_uart.c
>>>> @@ -76,3 +76,12 @@ int setup_early_uart(void)
>>>>
>>>> return 0;
>>>> }
>>>> +
>>>> +int disable_internal_uart(void)
>>>> +{
>>>> + /* Disable the legacy UART hardware. */
>>>
>>> nits: please remove the ending peirod.
>>>
>>>> + x86_pci_write_config32(PCI_DEV_CONFIG(0, LPC_DEV, LPC_FUNC), UART_CONT,
>>>> + 0);
>>>> +
>>>> + return 0;
>>>> +}
>>>> diff --git a/arch/x86/include/asm/u-boot-x86.h b/arch/x86/include/asm/u-boot-x86.h
>>>> index dbf8e95..0c95796 100644
>>>> --- a/arch/x86/include/asm/u-boot-x86.h
>>>> +++ b/arch/x86/include/asm/u-boot-x86.h
>>>> @@ -47,6 +47,9 @@ int default_print_cpuinfo(void);
>>>> /* Set up a UART which can be used with printch(), printhex8(), etc. */
>>>> int setup_early_uart(void);
>>>>
>>>> +/* Disable the internal legacy UART */
>>>> +int disable_internal_uart(void);
>>
>> If we can call disable_internal_uart() in board-specific codes, then
>> this declaration can be moved to SoC-specific header instead of x86
>> generic one.
>
> Do you have a preferred header for this in mind?
>
How about arch/x86/include/asm/arch-baytrail/baytrail.h?
> Another idea would be, to add a parameter to the existing function
> setup_early_uart() to either enable or disable the internal UART:
>
> Like this:
>
> int setup_early_uart(int enable)
> {
> /* Enable the legacy UART hardware. */
> x86_pci_write_config32(PCI_DEV_CONFIG(0, LPC_DEV, LPC_FUNC), UART_CONT,
> enable);
> if (!enable)
> return 0;
> ...
>
> What do you think? Should I change it this way?
>
The issue with setup_early_uart() is that it is only called when
CONFIG_DEBUG_UART is on. I think CONFIG_DEBUG_UART is only for debug
purpose IOW it's still legal to have a U-Boot booting without
CONFIG_DEBUG_UART.
Regards,
Bin
More information about the U-Boot
mailing list