1*83d290c5STom Rini /* SPDX-License-Identifier: GPL-2.0+ */ 22731b9a8SJean-Christophe PLAGNIOL-VILLARD /* 32731b9a8SJean-Christophe PLAGNIOL-VILLARD * Mentor USB OTG Core host controller driver. 42731b9a8SJean-Christophe PLAGNIOL-VILLARD * 52731b9a8SJean-Christophe PLAGNIOL-VILLARD * Copyright (c) 2008 Texas Instruments 62731b9a8SJean-Christophe PLAGNIOL-VILLARD * 72731b9a8SJean-Christophe PLAGNIOL-VILLARD * Author: Thomas Abraham t-abraham@ti.com, Texas Instruments 82731b9a8SJean-Christophe PLAGNIOL-VILLARD */ 92731b9a8SJean-Christophe PLAGNIOL-VILLARD 102731b9a8SJean-Christophe PLAGNIOL-VILLARD #ifndef __MUSB_HCD_H__ 112731b9a8SJean-Christophe PLAGNIOL-VILLARD #define __MUSB_HCD_H__ 122731b9a8SJean-Christophe PLAGNIOL-VILLARD 132731b9a8SJean-Christophe PLAGNIOL-VILLARD #include "musb_core.h" 142731b9a8SJean-Christophe PLAGNIOL-VILLARD #ifdef CONFIG_USB_KEYBOARD 1552cb4d4fSJean-Christophe PLAGNIOL-VILLARD #include <stdio_dev.h> 162731b9a8SJean-Christophe PLAGNIOL-VILLARD extern unsigned char new[]; 172731b9a8SJean-Christophe PLAGNIOL-VILLARD #endif 182731b9a8SJean-Christophe PLAGNIOL-VILLARD 1995de1e2fSPaul Kocialkowski #ifndef CONFIG_USB_MUSB_TIMEOUT 2095de1e2fSPaul Kocialkowski # define CONFIG_USB_MUSB_TIMEOUT 100000 21c3a012ceSBryan Wu #endif 22c3a012ceSBryan Wu 232731b9a8SJean-Christophe PLAGNIOL-VILLARD /* This defines the endpoint number used for control transfers */ 242731b9a8SJean-Christophe PLAGNIOL-VILLARD #define MUSB_CONTROL_EP 0 252731b9a8SJean-Christophe PLAGNIOL-VILLARD 262731b9a8SJean-Christophe PLAGNIOL-VILLARD /* This defines the endpoint number used for bulk transfer */ 27e608f221SBryan Wu #ifndef MUSB_BULK_EP 282731b9a8SJean-Christophe PLAGNIOL-VILLARD # define MUSB_BULK_EP 1 29e608f221SBryan Wu #endif 302731b9a8SJean-Christophe PLAGNIOL-VILLARD 312731b9a8SJean-Christophe PLAGNIOL-VILLARD /* This defines the endpoint number used for interrupt transfer */ 322731b9a8SJean-Christophe PLAGNIOL-VILLARD #define MUSB_INTR_EP 2 332731b9a8SJean-Christophe PLAGNIOL-VILLARD 342731b9a8SJean-Christophe PLAGNIOL-VILLARD /* Determine the operating speed of MUSB core */ 352731b9a8SJean-Christophe PLAGNIOL-VILLARD #define musb_ishighspeed() \ 362731b9a8SJean-Christophe PLAGNIOL-VILLARD ((readb(&musbr->power) & MUSB_POWER_HSMODE) \ 372731b9a8SJean-Christophe PLAGNIOL-VILLARD >> MUSB_POWER_HSMODE_SHIFT) 382731b9a8SJean-Christophe PLAGNIOL-VILLARD 39321790f6SBryan Wu /* USB HUB CONSTANTS (not OHCI-specific; see hub.h) */ 40321790f6SBryan Wu 41321790f6SBryan Wu /* destination of request */ 42321790f6SBryan Wu #define RH_INTERFACE 0x01 43321790f6SBryan Wu #define RH_ENDPOINT 0x02 44321790f6SBryan Wu #define RH_OTHER 0x03 45321790f6SBryan Wu 46321790f6SBryan Wu #define RH_CLASS 0x20 47321790f6SBryan Wu #define RH_VENDOR 0x40 48321790f6SBryan Wu 49321790f6SBryan Wu /* Requests: bRequest << 8 | bmRequestType */ 50321790f6SBryan Wu #define RH_GET_STATUS 0x0080 51321790f6SBryan Wu #define RH_CLEAR_FEATURE 0x0100 52321790f6SBryan Wu #define RH_SET_FEATURE 0x0300 53321790f6SBryan Wu #define RH_SET_ADDRESS 0x0500 54321790f6SBryan Wu #define RH_GET_DESCRIPTOR 0x0680 55321790f6SBryan Wu #define RH_SET_DESCRIPTOR 0x0700 56321790f6SBryan Wu #define RH_GET_CONFIGURATION 0x0880 57321790f6SBryan Wu #define RH_SET_CONFIGURATION 0x0900 58321790f6SBryan Wu #define RH_GET_STATE 0x0280 59321790f6SBryan Wu #define RH_GET_INTERFACE 0x0A80 60321790f6SBryan Wu #define RH_SET_INTERFACE 0x0B00 61321790f6SBryan Wu #define RH_SYNC_FRAME 0x0C80 62321790f6SBryan Wu /* Our Vendor Specific Request */ 63321790f6SBryan Wu #define RH_SET_EP 0x2000 64321790f6SBryan Wu 65321790f6SBryan Wu /* Hub port features */ 66321790f6SBryan Wu #define RH_PORT_CONNECTION 0x00 67321790f6SBryan Wu #define RH_PORT_ENABLE 0x01 68321790f6SBryan Wu #define RH_PORT_SUSPEND 0x02 69321790f6SBryan Wu #define RH_PORT_OVER_CURRENT 0x03 70321790f6SBryan Wu #define RH_PORT_RESET 0x04 71321790f6SBryan Wu #define RH_PORT_POWER 0x08 72321790f6SBryan Wu #define RH_PORT_LOW_SPEED 0x09 73321790f6SBryan Wu 74321790f6SBryan Wu #define RH_C_PORT_CONNECTION 0x10 75321790f6SBryan Wu #define RH_C_PORT_ENABLE 0x11 76321790f6SBryan Wu #define RH_C_PORT_SUSPEND 0x12 77321790f6SBryan Wu #define RH_C_PORT_OVER_CURRENT 0x13 78321790f6SBryan Wu #define RH_C_PORT_RESET 0x14 79321790f6SBryan Wu 80321790f6SBryan Wu /* Hub features */ 81321790f6SBryan Wu #define RH_C_HUB_LOCAL_POWER 0x00 82321790f6SBryan Wu #define RH_C_HUB_OVER_CURRENT 0x01 83321790f6SBryan Wu 84321790f6SBryan Wu #define RH_DEVICE_REMOTE_WAKEUP 0x00 85321790f6SBryan Wu #define RH_ENDPOINT_STALL 0x01 86321790f6SBryan Wu 87321790f6SBryan Wu #define RH_ACK 0x01 88321790f6SBryan Wu #define RH_REQ_ERR -1 89321790f6SBryan Wu #define RH_NACK 0x00 90321790f6SBryan Wu 912731b9a8SJean-Christophe PLAGNIOL-VILLARD /* extern functions */ 922731b9a8SJean-Christophe PLAGNIOL-VILLARD extern int musb_platform_init(void); 932731b9a8SJean-Christophe PLAGNIOL-VILLARD extern void musb_platform_deinit(void); 942731b9a8SJean-Christophe PLAGNIOL-VILLARD 952731b9a8SJean-Christophe PLAGNIOL-VILLARD #endif /* __MUSB_HCD_H__ */ 96