blob: 7eb65e6b10d06c306e26683e96c35c4ad02199cd [file] [log] [blame]
Tom Rini10e47792018-05-06 17:58:06 -04001/* SPDX-License-Identifier: GPL-2.0+ */
Thomas Abraham38f424f2009-01-04 09:41:03 +05302/*
3 * Mentor USB OTG Core host controller driver.
4 *
5 * Copyright (c) 2008 Texas Instruments
6 *
Thomas Abraham38f424f2009-01-04 09:41:03 +05307 * Author: Thomas Abraham t-abraham@ti.com, Texas Instruments
8 */
9
10#ifndef __MUSB_HCD_H__
11#define __MUSB_HCD_H__
12
13#include "musb_core.h"
14#ifdef CONFIG_USB_KEYBOARD
Jean-Christophe PLAGNIOL-VILLARD2a7a0312009-05-16 12:14:54 +020015#include <stdio_dev.h>
Thomas Abraham38f424f2009-01-04 09:41:03 +053016extern unsigned char new[];
17#endif
18
Paul Kocialkowskif34dfcb2015-08-04 17:04:06 +020019#ifndef CONFIG_USB_MUSB_TIMEOUT
20# define CONFIG_USB_MUSB_TIMEOUT 100000
Bryan Wu3169ce82009-06-16 05:26:27 -040021#endif
22
Thomas Abraham38f424f2009-01-04 09:41:03 +053023/* This defines the endpoint number used for control transfers */
24#define MUSB_CONTROL_EP 0
25
26/* This defines the endpoint number used for bulk transfer */
Bryan Wue956f342009-12-16 22:04:02 -050027#ifndef MUSB_BULK_EP
28# define MUSB_BULK_EP 1
29#endif
Thomas Abraham38f424f2009-01-04 09:41:03 +053030
31/* This defines the endpoint number used for interrupt transfer */
32#define MUSB_INTR_EP 2
33
34/* Determine the operating speed of MUSB core */
35#define musb_ishighspeed() \
36 ((readb(&musbr->power) & MUSB_POWER_HSMODE) \
37 >> MUSB_POWER_HSMODE_SHIFT)
38
Bryan Wu73073cc2010-01-09 16:53:54 -050039/* USB HUB CONSTANTS (not OHCI-specific; see hub.h) */
40
41/* destination of request */
42#define RH_INTERFACE 0x01
43#define RH_ENDPOINT 0x02
44#define RH_OTHER 0x03
45
46#define RH_CLASS 0x20
47#define RH_VENDOR 0x40
48
49/* Requests: bRequest << 8 | bmRequestType */
50#define RH_GET_STATUS 0x0080
51#define RH_CLEAR_FEATURE 0x0100
52#define RH_SET_FEATURE 0x0300
53#define RH_SET_ADDRESS 0x0500
54#define RH_GET_DESCRIPTOR 0x0680
55#define RH_SET_DESCRIPTOR 0x0700
56#define RH_GET_CONFIGURATION 0x0880
57#define RH_SET_CONFIGURATION 0x0900
58#define RH_GET_STATE 0x0280
59#define RH_GET_INTERFACE 0x0A80
60#define RH_SET_INTERFACE 0x0B00
61#define RH_SYNC_FRAME 0x0C80
62/* Our Vendor Specific Request */
63#define RH_SET_EP 0x2000
64
65/* Hub port features */
66#define RH_PORT_CONNECTION 0x00
67#define RH_PORT_ENABLE 0x01
68#define RH_PORT_SUSPEND 0x02
69#define RH_PORT_OVER_CURRENT 0x03
70#define RH_PORT_RESET 0x04
71#define RH_PORT_POWER 0x08
72#define RH_PORT_LOW_SPEED 0x09
73
74#define RH_C_PORT_CONNECTION 0x10
75#define RH_C_PORT_ENABLE 0x11
76#define RH_C_PORT_SUSPEND 0x12
77#define RH_C_PORT_OVER_CURRENT 0x13
78#define RH_C_PORT_RESET 0x14
79
80/* Hub features */
81#define RH_C_HUB_LOCAL_POWER 0x00
82#define RH_C_HUB_OVER_CURRENT 0x01
83
84#define RH_DEVICE_REMOTE_WAKEUP 0x00
85#define RH_ENDPOINT_STALL 0x01
86
87#define RH_ACK 0x01
88#define RH_REQ_ERR -1
89#define RH_NACK 0x00
90
Thomas Abraham38f424f2009-01-04 09:41:03 +053091/* extern functions */
92extern int musb_platform_init(void);
93extern void musb_platform_deinit(void);
94
95#endif /* __MUSB_HCD_H__ */