usbdebug: Unify console API
Struct dbgp_pipe would not be suitable for use with xHCI. Just use an index, it is easy to setup in Kconfig if our future debug setup has separate pipes for console output and debugging/traceings. Change-Id: Icbbd28f03113b208016f80217ab801d598d443a8 Signed-off-by: Kyösti Mälkki <kyosti.malkki@gmail.com> Reviewed-on: http://review.coreboot.org/5227 Tested-by: build bot (Jenkins) Reviewed-by: Aaron Durbin <adurbin@google.com>
This commit is contained in:
parent
902626c23c
commit
ea6736a2d0
|
@ -49,7 +49,7 @@ void console_tx_byte(unsigned char byte)
|
||||||
uart8250_tx_byte(CONFIG_TTYS0_BASE, byte);
|
uart8250_tx_byte(CONFIG_TTYS0_BASE, byte);
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_USBDEBUG && (CONFIG_USBDEBUG_IN_ROMSTAGE || !defined(__PRE_RAM__))
|
#if CONFIG_USBDEBUG && (CONFIG_USBDEBUG_IN_ROMSTAGE || !defined(__PRE_RAM__))
|
||||||
usbdebug_tx_byte(dbgp_console_output(), byte);
|
usb_tx_byte(0, byte);
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_CONSOLE_NE2K
|
#if CONFIG_CONSOLE_NE2K
|
||||||
ne2k_append_data(&byte, 1, CONFIG_CONSOLE_NE2K_IO_PORT);
|
ne2k_append_data(&byte, 1, CONFIG_CONSOLE_NE2K_IO_PORT);
|
||||||
|
@ -74,7 +74,7 @@ void console_tx_flush(void)
|
||||||
ne2k_transmit(CONFIG_CONSOLE_NE2K_IO_PORT);
|
ne2k_transmit(CONFIG_CONSOLE_NE2K_IO_PORT);
|
||||||
#endif
|
#endif
|
||||||
#if CONFIG_USBDEBUG && (CONFIG_USBDEBUG_IN_ROMSTAGE || !defined(__PRE_RAM__))
|
#if CONFIG_USBDEBUG && (CONFIG_USBDEBUG_IN_ROMSTAGE || !defined(__PRE_RAM__))
|
||||||
usbdebug_tx_flush(dbgp_console_output());
|
usb_tx_flush(0);
|
||||||
#endif
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -29,22 +29,22 @@ static void dbgp_init(void)
|
||||||
|
|
||||||
static void dbgp_tx_byte(unsigned char data)
|
static void dbgp_tx_byte(unsigned char data)
|
||||||
{
|
{
|
||||||
usbdebug_tx_byte(dbgp_console_output(), data);
|
usb_tx_byte(0, data);
|
||||||
}
|
}
|
||||||
|
|
||||||
static unsigned char dbgp_rx_byte(void)
|
static unsigned char dbgp_rx_byte(void)
|
||||||
{
|
{
|
||||||
return usbdebug_rx_byte(dbgp_console_input());
|
return usb_rx_byte(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void dbgp_tx_flush(void)
|
static void dbgp_tx_flush(void)
|
||||||
{
|
{
|
||||||
usbdebug_tx_flush(dbgp_console_output());
|
usb_tx_flush(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static int dbgp_tst_byte(void)
|
static int dbgp_tst_byte(void)
|
||||||
{
|
{
|
||||||
return dbgp_ep_is_active(dbgp_console_input());
|
return usb_can_rx_byte(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
static const struct console_driver usbdebug_direct_console __console = {
|
static const struct console_driver usbdebug_direct_console __console = {
|
||||||
|
|
|
@ -18,12 +18,10 @@
|
||||||
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
|
* Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include <stddef.h>
|
|
||||||
#include <console/console.h>
|
|
||||||
#include <console/usb.h>
|
#include <console/usb.h>
|
||||||
#include "ehci_debug.h"
|
#include "ehci_debug.h"
|
||||||
|
|
||||||
void usbdebug_tx_byte(struct dbgp_pipe *pipe, unsigned char data)
|
static void usbdebug_tx_byte(struct dbgp_pipe *pipe, unsigned char data)
|
||||||
{
|
{
|
||||||
if (!dbgp_try_get(pipe))
|
if (!dbgp_try_get(pipe))
|
||||||
return;
|
return;
|
||||||
|
@ -35,7 +33,7 @@ void usbdebug_tx_byte(struct dbgp_pipe *pipe, unsigned char data)
|
||||||
dbgp_put(pipe);
|
dbgp_put(pipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
void usbdebug_tx_flush(struct dbgp_pipe *pipe)
|
static void usbdebug_tx_flush(struct dbgp_pipe *pipe)
|
||||||
{
|
{
|
||||||
if (!dbgp_try_get(pipe))
|
if (!dbgp_try_get(pipe))
|
||||||
return;
|
return;
|
||||||
|
@ -46,7 +44,7 @@ void usbdebug_tx_flush(struct dbgp_pipe *pipe)
|
||||||
dbgp_put(pipe);
|
dbgp_put(pipe);
|
||||||
}
|
}
|
||||||
|
|
||||||
unsigned char usbdebug_rx_byte(struct dbgp_pipe *pipe)
|
static unsigned char usbdebug_rx_byte(struct dbgp_pipe *pipe)
|
||||||
{
|
{
|
||||||
unsigned char data = 0xff;
|
unsigned char data = 0xff;
|
||||||
if (!dbgp_try_get(pipe))
|
if (!dbgp_try_get(pipe))
|
||||||
|
@ -62,3 +60,23 @@ unsigned char usbdebug_rx_byte(struct dbgp_pipe *pipe)
|
||||||
dbgp_put(pipe);
|
dbgp_put(pipe);
|
||||||
return data;
|
return data;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void usb_tx_byte(int idx, unsigned char data)
|
||||||
|
{
|
||||||
|
usbdebug_tx_byte(dbgp_console_output(), data);
|
||||||
|
}
|
||||||
|
|
||||||
|
void usb_tx_flush(int idx)
|
||||||
|
{
|
||||||
|
usbdebug_tx_flush(dbgp_console_output());
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned char usb_rx_byte(int idx)
|
||||||
|
{
|
||||||
|
return usbdebug_rx_byte(dbgp_console_input());
|
||||||
|
}
|
||||||
|
|
||||||
|
int usb_can_rx_byte(int idx)
|
||||||
|
{
|
||||||
|
return dbgp_ep_is_active(dbgp_console_input());
|
||||||
|
}
|
||||||
|
|
|
@ -21,6 +21,8 @@
|
||||||
#ifndef _EHCI_DEBUG_H_
|
#ifndef _EHCI_DEBUG_H_
|
||||||
#define _EHCI_DEBUG_H_
|
#define _EHCI_DEBUG_H_
|
||||||
|
|
||||||
|
#include <types.h>
|
||||||
|
|
||||||
void usbdebug_re_enable(unsigned ehci_base);
|
void usbdebug_re_enable(unsigned ehci_base);
|
||||||
void usbdebug_disable(void);
|
void usbdebug_disable(void);
|
||||||
|
|
||||||
|
@ -51,4 +53,10 @@ struct dbgp_pipe
|
||||||
void dbgp_put(struct dbgp_pipe *pipe);
|
void dbgp_put(struct dbgp_pipe *pipe);
|
||||||
int dbgp_try_get(struct dbgp_pipe *pipe);
|
int dbgp_try_get(struct dbgp_pipe *pipe);
|
||||||
|
|
||||||
|
struct dbgp_pipe *dbgp_console_output(void);
|
||||||
|
struct dbgp_pipe *dbgp_console_input(void);
|
||||||
|
int dbgp_ep_is_active(struct dbgp_pipe *pipe);
|
||||||
|
int dbgp_bulk_write_x(struct dbgp_pipe *pipe, const char *bytes, int size);
|
||||||
|
int dbgp_bulk_read_x(struct dbgp_pipe *pipe, void *data, int size);
|
||||||
|
|
||||||
#endif /* _EHCI_DEBUG_H_ */
|
#endif /* _EHCI_DEBUG_H_ */
|
||||||
|
|
|
@ -21,17 +21,11 @@
|
||||||
#ifndef _CONSOLE_USB_H_
|
#ifndef _CONSOLE_USB_H_
|
||||||
#define _CONSOLE_USB_H_
|
#define _CONSOLE_USB_H_
|
||||||
|
|
||||||
struct dbgp_pipe;
|
|
||||||
|
|
||||||
int usbdebug_init(void);
|
int usbdebug_init(void);
|
||||||
|
|
||||||
struct dbgp_pipe *dbgp_console_output(void);
|
void usb_tx_byte(int idx, unsigned char data);
|
||||||
struct dbgp_pipe *dbgp_console_input(void);
|
void usb_tx_flush(int idx);
|
||||||
int dbgp_ep_is_active(struct dbgp_pipe *pipe);
|
unsigned char usb_rx_byte(int idx);
|
||||||
int dbgp_bulk_write_x(struct dbgp_pipe *pipe, const char *bytes, int size);
|
int usb_can_rx_byte(int idx);
|
||||||
int dbgp_bulk_read_x(struct dbgp_pipe *pipe, void *data, int size);
|
|
||||||
void usbdebug_tx_byte(struct dbgp_pipe *pipe, unsigned char data);
|
|
||||||
void usbdebug_tx_flush(struct dbgp_pipe *pipe);
|
|
||||||
unsigned char usbdebug_rx_byte(struct dbgp_pipe *pipe);
|
|
||||||
|
|
||||||
#endif /* _CONSOLE_USB_H_ */
|
#endif /* _CONSOLE_USB_H_ */
|
||||||
|
|
Loading…
Reference in New Issue