blob: c060a70db3ff7f9b8c4478ce47d23ac69b82cdae [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
Kyösti Mälkki46249be22014-10-27 14:07:28 +020040#define DBGP_MAX_ENDPOINTS 4
41#define DBGP_SETUP_EP0 0 /* Compulsory endpoint 0. */
42#define DBGP_CONSOLE_EPOUT 1
43#define DBGP_CONSOLE_EPIN 2
44
Kyösti Mälkki83fe6d72014-02-25 20:11:52 +020045struct ehci_dbg_port;
46
Kyösti Mälkki8cde8522014-02-09 23:35:39 +020047struct dbgp_pipe
48{
49 u8 devnum;
50 u8 endpoint;
51 u8 pid;
52 u8 status;
53 int timeout;
54
55 u8 bufidx;
56 u8 buflen;
57 char buf[8];
58};
59
60void dbgp_put(struct dbgp_pipe *pipe);
61int dbgp_try_get(struct dbgp_pipe *pipe);
62
Kyösti Mälkkiea6736a2014-02-10 00:00:44 +020063struct dbgp_pipe *dbgp_console_output(void);
64struct dbgp_pipe *dbgp_console_input(void);
65int dbgp_ep_is_active(struct dbgp_pipe *pipe);
66int dbgp_bulk_write_x(struct dbgp_pipe *pipe, const char *bytes, int size);
67int dbgp_bulk_read_x(struct dbgp_pipe *pipe, void *data, int size);
68
Kyösti Mälkki83fe6d72014-02-25 20:11:52 +020069int dbgp_control_msg(struct ehci_dbg_port *ehci_debug, unsigned devnum,
70 int requesttype, int request, int value, int index, void *data, int size);
71void dbgp_mdelay(int ms);
72
73int dbgp_probe_gadget(struct ehci_dbg_port *ehci_debug, struct dbgp_pipe *pipe);
74
Kyösti Mälkkicb141bc2014-02-07 19:24:23 +020075#endif /* _EHCI_DEBUG_H_ */