#include #include #include struct ehci_debug_info dbg_info; void set_ehci_base(unsigned ehci_base) { unsigned diff; if(!dbg_info.ehci_debug) return; diff = dbg_info.ehci_caps - ehci_base; dbg_info.ehci_regs -= diff; dbg_info.ehci_debug -= diff; dbg_info.ehci_caps = ehci_base; } void set_ehci_debug(unsigned ehci_debug) { dbg_info.ehci_debug = ehci_debug; } unsigned get_ehci_debug(void) { return dbg_info.ehci_debug; } static void dbgp_init(void) { struct ehci_debug_info *dbg_infox; dbg_infox = (struct ehci_debug_info *)((CONFIG_LB_MEM_TOPK<<10) - sizeof (struct ehci_debug_info)); //in RAM memcpy(&dbg_info, dbg_infox, sizeof(struct ehci_debug_info) ); } static void dbgp_tx_byte(unsigned char data) { if(dbg_info.ehci_debug) dbgp_bulk_write_x(&dbg_info,&data,1); } static unsigned char dbgp_rx_byte(void) { unsigned char data = 0xff; if(dbg_info.ehci_debug) dbgp_bulk_read_x(&dbg_info,&data,1); return data; } static int dbgp_tst_byte(void) { return dbg_info.ehci_debug; } static const struct console_driver usbdebug_direct_console __console = { .init = dbgp_init, .tx_byte = dbgp_tx_byte, .rx_byte = dbgp_rx_byte, .tst_byte = dbgp_tst_byte, };