[coreboot-gerrit] Patch set updated for coreboot: 8fd8525 Vladimir Serbinenko's x201 drop, USB debug part
Stefan Reinauer (stefan.reinauer@coreboot.org)
gerrit at coreboot.org
Fri Jun 7 01:12:39 CEST 2013
Stefan Reinauer (stefan.reinauer at coreboot.org) just uploaded a new patch set to gerrit, which you can find at http://review.coreboot.org/3398
-gerrit
commit 8fd85258049b31847c5f6220469f166474bcf10b
Author: Stefan Reinauer <stefan.reinauer at coreboot.org>
Date: Fri Jun 7 00:19:35 2013 +0200
Vladimir Serbinenko's x201 drop, USB debug part
WIP, DO NOT SUBMIT
Change-Id: Ia1b906c29dc3721a62c5039304daee4b9f078e61
Signed-off-by: Vladimir Serbinenko <phcoder at gmail.com>
---
src/console/usbdebug_console.c | 8 ++++++--
src/include/usbdebug.h | 1 +
src/lib/usbdebug.c | 22 ++++++++++++++++++++++
3 files changed, 29 insertions(+), 2 deletions(-)
diff --git a/src/console/usbdebug_console.c b/src/console/usbdebug_console.c
index 58a62b8..38719f2 100644
--- a/src/console/usbdebug_console.c
+++ b/src/console/usbdebug_console.c
@@ -50,12 +50,15 @@ unsigned get_ehci_debug(void)
static void dbgp_init(void)
{
+ enable_usbdebug(CONFIG_USBDEBUG_DEFAULT_PORT);
+
usbdebug_init(CONFIG_EHCI_BAR, CONFIG_EHCI_DEBUG_OFFSET, &dbg_info);
}
static void dbgp_tx_byte(unsigned char data)
{
- usbdebug_tx_byte(&dbg_info, data);
+ if (dbg_info.ehci_debug)
+ usbdebug_tx_byte(&dbg_info, data);
}
static unsigned char dbgp_rx_byte(void)
@@ -70,7 +73,8 @@ static unsigned char dbgp_rx_byte(void)
static void dbgp_tx_flush(void)
{
- usbdebug_tx_flush(&dbg_info);
+ if (dbg_info.ehci_debug)
+ usbdebug_tx_flush(&dbg_info);
}
static int dbgp_tst_byte(void)
diff --git a/src/include/usbdebug.h b/src/include/usbdebug.h
index c3b3437..09152cd 100644
--- a/src/include/usbdebug.h
+++ b/src/include/usbdebug.h
@@ -45,4 +45,5 @@ int early_usbdebug_init(void);
void usbdebug_tx_byte(struct ehci_debug_info *info, unsigned char data);
void usbdebug_tx_flush(struct ehci_debug_info *info);
int usbdebug_init(unsigned ehci_bar, unsigned offset, struct ehci_debug_info *info);
+unsigned char usbdebug_rx_byte(struct ehci_debug_info *dbg_info);
#endif
diff --git a/src/lib/usbdebug.c b/src/lib/usbdebug.c
index 24d7967..974aba4 100644
--- a/src/lib/usbdebug.c
+++ b/src/lib/usbdebug.c
@@ -607,3 +607,25 @@ void usbdebug_tx_flush(struct ehci_debug_info *dbg_info)
dbg_info->bufidx = 0;
}
}
+
+unsigned char usbdebug_rx_byte(struct ehci_debug_info *dbg_info)
+{
+ if (!dbg_info) {
+ /* "Find" dbg_info structure in Cache */
+ dbg_info = (struct ehci_debug_info *)
+ (CONFIG_DCACHE_RAM_BASE + CONFIG_DCACHE_RAM_SIZE - sizeof(struct ehci_debug_info));
+ }
+
+ if (dbg_info->ehci_debug) {
+ unsigned char c = 0xff;
+ u32 pids;
+ usbdebug_tx_flush (dbg_info);
+ pids = read32((unsigned long)&((struct ehci_dbg_port *) dbg_info->ehci_debug)->pids);
+ while (dbgp_bulk_read_x (dbg_info, &c, 1) <= 0);
+ write32((unsigned long)&((struct ehci_dbg_port *) dbg_info->ehci_debug)->pids, pids);
+ usbdebug_tx_byte(dbg_info, c);
+ usbdebug_tx_flush (dbg_info);
+ return c;
+ }
+ return 0xff;
+}
More information about the coreboot-gerrit
mailing list