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