blob: 39f5f7239a232f4bdb3fdfca06fbc5a318f83a88 [file] [log] [blame]
Kyösti Mälkkicb141bc2014-02-07 19:24:23 +02001/*
2 * This file is part of the coreboot project.
3 *
4 * Copyright (C) 2007 AMD
5 * Written by Yinghai Lu <yinghai.lu@amd.com> for AMD.
6 *
7 * This program is free software; you can redistribute it and/or modify
8 * it under the terms of the GNU General Public License as published by
9 * the Free Software Foundation; version 2 of the License.
10 *
11 * This program is distributed in the hope that it will be useful,
12 * but WITHOUT ANY WARRANTY; without even the implied warranty of
13 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
14 * GNU General Public License for more details.
15 *
16 * You should have received a copy of the GNU General Public License
17 * along with this program; if not, write to the Free Software
18 * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA, 02110-1301 USA
19 */
20
21#ifndef _EHCI_DEBUG_H_
22#define _EHCI_DEBUG_H_
23
Kyösti Mälkkiea6736a2014-02-10 00:00:44 +020024#include <types.h>
25
Kyösti Mälkkicb141bc2014-02-07 19:24:23 +020026void usbdebug_re_enable(unsigned ehci_base);
27void usbdebug_disable(void);
28
Kyösti Mälkki6f6a2492014-02-09 19:21:30 +020029/* Returns 0 on success and sets MMIO base and dbg_offset if EHCI debug
30 * capability was found and enabled. Returns non-zero on error.
31 */
32int ehci_debug_hw_enable(unsigned *base, unsigned *dbg_offset);
Kyösti Mälkkicb141bc2014-02-07 19:24:23 +020033void ehci_debug_select_port(unsigned int port);
34
Kyösti Mälkki8cde8522014-02-09 23:35:39 +020035#define DBGP_EP_VALID (1<<0)
36#define DBGP_EP_ENABLED (1<<1)
37#define DBGP_EP_BUSY (1<<2)
38#define DBGP_EP_STATMASK (DBGP_EP_VALID | DBGP_EP_ENABLED)
39
40struct dbgp_pipe
41{
42 u8 devnum;
43 u8 endpoint;
44 u8 pid;
45 u8 status;
46 int timeout;
47
48 u8 bufidx;
49 u8 buflen;
50 char buf[8];
51};
52
53void dbgp_put(struct dbgp_pipe *pipe);
54int dbgp_try_get(struct dbgp_pipe *pipe);
55
Kyösti Mälkkiea6736a2014-02-10 00:00:44 +020056struct dbgp_pipe *dbgp_console_output(void);
57struct dbgp_pipe *dbgp_console_input(void);
58int dbgp_ep_is_active(struct dbgp_pipe *pipe);
59int dbgp_bulk_write_x(struct dbgp_pipe *pipe, const char *bytes, int size);
60int dbgp_bulk_read_x(struct dbgp_pipe *pipe, void *data, int size);
61
Kyösti Mälkkicb141bc2014-02-07 19:24:23 +020062#endif /* _EHCI_DEBUG_H_ */