usbdebug: Initialize the HW once in CAR stages

The EHCI hardware needs to be initialized only once during CAR stages.
Some exception need to be made when a blob messes with the EHCI
hardware. To achieve this add a fixed location in the car.ld linker
script such that the ehci debug information can be shared across CAR
stages.

Currently this means only romstage and bootblock, but verstage can
also be hooked up later on.

Tested on google/peppy: Both the bootblock and the romstage properly
output console.

Change-Id: I78e20a172fd5cc81f366d580f3cce57b9545d7a2
Signed-off-by: Arthur Heymans <arthur@aheymans.xyz>
Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com>
Reviewed-on: https://review.coreboot.org/c/30481
Tested-by: build bot (Jenkins) <no-reply@coreboot.org>
Reviewed-by: Nico Huber <nico.h@gmx.de>
This commit is contained in:
Arthur Heymans
2018-12-28 17:53:36 +01:00
committed by Kyösti Mälkki
parent 930d96e1b6
commit 4cc9b6c78d
3 changed files with 13 additions and 3 deletions

View File

@ -18,6 +18,7 @@
#include <console/console.h>
#include <console/usb.h>
#include <arch/io.h>
#include <arch/symbols.h>
#include <arch/early_variables.h>
#include <string.h>
#include <cbmem.h>
@ -61,6 +62,10 @@ static struct ehci_debug_info * glob_dbg_info_p CAR_GLOBAL;
static inline struct ehci_debug_info *dbgp_ehci_info(void)
{
if (IS_ENABLED(CONFIG_USBDEBUG_IN_PRE_RAM)
&& (ENV_ROMSTAGE || ENV_BOOTBLOCK || ENV_VERSTAGE))
glob_dbg_info_p =
(struct ehci_debug_info *)_car_ehci_dbg_info_start;
if (car_get_var(glob_dbg_info_p) == NULL)
car_set_var(glob_dbg_info_p, &glob_dbg_info);