1/* 2 * Mentor USB OTG Core host controller driver. 3 * 4 * Copyright (c) 2008 Texas Instruments 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License as 8 * published by the Free Software Foundation; either version 2 of 9 * the License, or (at your option) any later version. 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., 59 Temple Place, Suite 330, Boston, 19 * MA 02111-1307 USA 20 * 21 * Author: Thomas Abraham t-abraham@ti.com, Texas Instruments 22 */ 23 24#ifndef __MUSB_HCD_H__ 25#define __MUSB_HCD_H__ 26 27#include "musb_core.h" 28#ifdef CONFIG_USB_KEYBOARD 29#include <stdio_dev.h> 30extern unsigned char new[]; 31#endif 32 33#ifndef CONFIG_MUSB_TIMEOUT 34# define CONFIG_MUSB_TIMEOUT 100000 35#endif 36 37/* This defines the endpoint number used for control transfers */ 38#define MUSB_CONTROL_EP 0 39 40/* This defines the endpoint number used for bulk transfer */ 41#ifndef MUSB_BULK_EP 42# define MUSB_BULK_EP 1 43#endif 44 45/* This defines the endpoint number used for interrupt transfer */ 46#define MUSB_INTR_EP 2 47 48/* Determine the operating speed of MUSB core */ 49#define musb_ishighspeed() \ 50 ((readb(&musbr->power) & MUSB_POWER_HSMODE) \ 51 >> MUSB_POWER_HSMODE_SHIFT) 52 53#define min_t(type, x, y) \ 54 ({ type __x = (x); type __y = (y); __x < __y ? __x : __y; }) 55 56/* USB HUB CONSTANTS (not OHCI-specific; see hub.h) */ 57 58/* destination of request */ 59#define RH_INTERFACE 0x01 60#define RH_ENDPOINT 0x02 61#define RH_OTHER 0x03 62 63#define RH_CLASS 0x20 64#define RH_VENDOR 0x40 65 66/* Requests: bRequest << 8 | bmRequestType */ 67#define RH_GET_STATUS 0x0080 68#define RH_CLEAR_FEATURE 0x0100 69#define RH_SET_FEATURE 0x0300 70#define RH_SET_ADDRESS 0x0500 71#define RH_GET_DESCRIPTOR 0x0680 72#define RH_SET_DESCRIPTOR 0x0700 73#define RH_GET_CONFIGURATION 0x0880 74#define RH_SET_CONFIGURATION 0x0900 75#define RH_GET_STATE 0x0280 76#define RH_GET_INTERFACE 0x0A80 77#define RH_SET_INTERFACE 0x0B00 78#define RH_SYNC_FRAME 0x0C80 79/* Our Vendor Specific Request */ 80#define RH_SET_EP 0x2000 81 82/* Hub port features */ 83#define RH_PORT_CONNECTION 0x00 84#define RH_PORT_ENABLE 0x01 85#define RH_PORT_SUSPEND 0x02 86#define RH_PORT_OVER_CURRENT 0x03 87#define RH_PORT_RESET 0x04 88#define RH_PORT_POWER 0x08 89#define RH_PORT_LOW_SPEED 0x09 90 91#define RH_C_PORT_CONNECTION 0x10 92#define RH_C_PORT_ENABLE 0x11 93#define RH_C_PORT_SUSPEND 0x12 94#define RH_C_PORT_OVER_CURRENT 0x13 95#define RH_C_PORT_RESET 0x14 96 97/* Hub features */ 98#define RH_C_HUB_LOCAL_POWER 0x00 99#define RH_C_HUB_OVER_CURRENT 0x01 100 101#define RH_DEVICE_REMOTE_WAKEUP 0x00 102#define RH_ENDPOINT_STALL 0x01 103 104#define RH_ACK 0x01 105#define RH_REQ_ERR -1 106#define RH_NACK 0x00 107 108/* extern functions */ 109extern int musb_platform_init(void); 110extern void musb_platform_deinit(void); 111 112#endif /* __MUSB_HCD_H__ */ 113