blob: 8d4d26342b5a760fe097af6346a2edd566ee7f21 [file] [log] [blame]
/*******************************************************************************
This software file (the "File") is distributed by Marvell International Ltd.
or its affiliate(s) under the terms of the GNU General Public License Version 2,
June 1991 (the "License"). You may use, redistribute and/or modify this File
in accordance with the terms and conditions of the License, a copy of which
is available along with the File in the license.txt file or by writing to the
Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
or on the worldwide web at http://www.gnu.org/licenses/gpl.txt.
THE FILE IS DISTRIBUTED AS-IS, WITHOUT WARRANTY OF ANY KIND, AND THE IMPLIED
WARRANTIES OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE ARE EXPRESSLY
DISCLAIMED. The GPL License provides additional details about this warranty
disclaimer.
(C) Copyright 2004 - 2007 Marvell Semiconductor Israel Ltd. All Rights Reserved.
(C) Copyright 1999 - 2004 Chipidea Microelectronica, S.A. All Rights Reserved.
*******************************************************************************/
#ifndef __mvUsbCh9_h__
#define __mvUsbCh9_h__
#include "usb/api/mvUsbTypes.h"
/*----------------------------------------------------------------**
** Chapter 9.4 Standard Device Requests -- all devices **
** See Table 9-3 p. 250 of USB 2.0 spec for combinations **
** of request type bitfields with requests, WVALUE, WINDEX etc. **
**----------------------------------------------------------------*/
#define REQ_RECIP_MASK 0x1f
#define REQ_RECIP_DEVICE 0x00
#define REQ_RECIP_INTERFACE 0x01
#define REQ_RECIP_ENDPOINT 0x02
#define REQ_RECIP_OTHER 0x03
/* Also for class requests set the following bit */
#define REQ_TYPE_OFFSET 5
#define REQ_TYPE_MASK (0x03 << REQ_TYPE_OFFSET)
#define REQ_TYPE_STANDARD (0x00 << REQ_TYPE_OFFSET)
#define REQ_TYPE_CLASS (0x01 << REQ_TYPE_OFFSET)
#define REQ_TYPE_VENDOR (0x02 << REQ_TYPE_OFFSET)
#define REQ_TYPE_RESERVED (0x03 << REQ_TYPE_OFFSET)
/* Combine one of the 3 above with one of the following 2 */
#define REQ_DIR_OFFSET 7
#define REQ_DIR_IN (1 << REQ_DIR_OFFSET)
#define REQ_DIR_OUT (0 << REQ_DIR_OFFSET)
/* Standard USB requests, see Chapter 9 */
#define REQ_GET_STATUS 0
#define REQ_CLEAR_FEATURE 1
#define REQ_SET_FEATURE 3
#define REQ_SET_ADDRESS 5
#define REQ_GET_DESCRIPTOR 6
#define REQ_SET_DESCRIPTOR 7
#define REQ_GET_CONFIGURATION 8
#define REQ_SET_CONFIGURATION 9
#define REQ_GET_INTERFACE 10
#define REQ_SET_INTERFACE 11
#define REQ_SYNCH_FRAME 12
#define DESC_TYPE_DEVICE 0x1
#define DESC_TYPE_CONFIG 0x2
#define DESC_TYPE_STRING 0x3
#define DESC_TYPE_INTERFACE 0x4
#define DESC_TYPE_ENDPOINT 0x5
#define DESC_TYPE_QUALIFIER 0x6
#define DESC_TYPE_OTHER_SPEED 0x7
#define DESC_TYPE_INTF_POWER 0x8
#define DESC_TYPE_OTG 0x9
/*******************************************************************
**
** Values specific to CLEAR FEATURE commands (must go to common.h later)
*/
#define ENDPOINT_HALT 0
#define DEVICE_SELF_POWERED 0
#define DEVICE_REMOTE_WAKEUP 1
#define DEVICE_TEST_MODE 2
/* States of device instances on the device list */
/* initial device state */
#define DEVSTATE_INITIAL 0x00
/* device descriptor [0..7]*/
#define DEVSTATE_DEVDESC8 0x01
/* address set */
#define DEVSTATE_ADDR_SET 0x02
/* full device descriptor */
#define DEVSTATE_DEV_DESC 0x03
/* config descriptor [0..7] */
#define DEVSTATE_GET_CFG9 0x04
/* config set */
#define DEVSTATE_SET_CFG 0x05
/* full config desc. read in */
#define DEVSTATE_CFG_READ 0x06
/* application callbacks */
#define DEVSTATE_APP_CALL 0x07
/* Select interface done */
#define DEVSTATE_SET_INTF 0x08
#define DEVSTATE_ENUM_OK 0x09
#define DEVSTATE_CHK_OTG 0x0A
/* Event codes for attach/detach etc. callback */
#define USB_ATTACH_EVENT 1 /* device attach */
#define USB_DETACH_EVENT 2 /* device detach */
#define USB_CONFIG_EVENT 3 /* device reconfigured */
#define USB_INTF_EVENT 4 /* device interface selected */
#endif /* __mvUsbCh9_h__ */
/* EOF */