summaryrefslogtreecommitdiff
path: root/drivers/usb/dwc_otg_310/dwc_cfi_common.h
blob: 7a42268b1b5840c1e3ed10e8256f8ec04f4dcce1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
/* ==========================================================================
 * Synopsys HS OTG Linux Software Driver and documentation (hereinafter,
 * "Software") is an Unsupported proprietary work of Synopsys, Inc. unless
 * otherwise expressly agreed to in writing between Synopsys and you.
 *
 * The Software IS NOT an item of Licensed Software or Licensed Product under
 * any End User Software License Agreement or Agreement for Licensed Product
 * with Synopsys or any supplement thereto. You are permitted to use and
 * redistribute this Software in source and binary forms, with or without
 * modification, provided that redistributions of source code must retain this
 * notice. You may not view, use, disclose, copy or distribute this file or
 * any information contained herein except pursuant to this license grant from
 * Synopsys. If you do not agree with this notice, including the disclaimer
 * below, then you are not authorized to use the Software.
 *
 * THIS SOFTWARE IS BEING DISTRIBUTED BY SYNOPSYS SOLELY ON AN "AS IS" BASIS
 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
 * ARE HEREBY DISCLAIMED. IN NO EVENT SHALL SYNOPSYS BE LIABLE FOR ANY DIRECT,
 * INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
 * SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
 * CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
 * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
 * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
 * DAMAGE.
 * ========================================================================== */

#if !defined(__DWC_CFI_COMMON_H__)
#define __DWC_CFI_COMMON_H__

/* #include <linux/types.h> */

/**
 * @file
 *
 * This file contains the CFI specific common constants, interfaces
 * (functions and macros) and structures for Linux. No PCD specific
 * data structure or definition is to be included in this file.
 *
 */

/** This is a request for all Core Features */
#define VEN_CORE_GET_FEATURES		0xB1

/** This is a request to get the value of a specific Core Feature */
#define VEN_CORE_GET_FEATURE		0xB2

/** This command allows the host to set the value of a specific Core Feature */
#define VEN_CORE_SET_FEATURE		0xB3

/** This command allows the host to set the default values of
 * either all or any specific Core Feature
 */
#define VEN_CORE_RESET_FEATURES		0xB4

/** This command forces the PCD to write the deferred values of a Core Features */
#define VEN_CORE_ACTIVATE_FEATURES	0xB5

/** This request reads a DWORD value from a register at the specified offset */
#define VEN_CORE_READ_REGISTER		0xB6

/** This request writes a DWORD value into a register at the specified offset */
#define VEN_CORE_WRITE_REGISTER		0xB7

/** This structure is the header of the Core Features dataset returned to
 *  the Host
 */
struct cfi_all_features_header {
/** The features header structure length is */
#define CFI_ALL_FEATURES_HDR_LEN		8
	/**
	 * The total length of the features dataset returned to the Host
	 */
	uint16_t wTotalLen;

	/**
	 * CFI version number inBinary-Coded Decimal (i.e., 1.00 is 100H).
	 * This field identifies the version of the CFI Specification with which
	 * the device is compliant.
	 */
	uint16_t wVersion;

	/** The ID of the Core */
	uint16_t wCoreID;
#define CFI_CORE_ID_UDC		1
#define CFI_CORE_ID_OTG		2
#define CFI_CORE_ID_WUDEV	3

	/** Number of features returned by VEN_CORE_GET_FEATURES request */
	uint16_t wNumFeatures;
} UPACKED;

typedef struct cfi_all_features_header cfi_all_features_header_t;

/** This structure is a header of the Core Feature descriptor dataset returned to
 *  the Host after the VEN_CORE_GET_FEATURES request
 */
struct cfi_feature_desc_header {
#define CFI_FEATURE_DESC_HDR_LEN	8

	/** The feature ID */
	uint16_t wFeatureID;

	/** Length of this feature descriptor in bytes - including the
	 * length of the feature name string
	 */
	uint16_t wLength;

	/** The data length of this feature in bytes */
	uint16_t wDataLength;

	/**
	 * Attributes of this features
	 * D0: Access rights
	 * 0 - Read/Write
	 * 1 - Read only
	 */
	uint8_t bmAttributes;
#define CFI_FEATURE_ATTR_RO		1
#define CFI_FEATURE_ATTR_RW		0

	/** Length of the feature name in bytes */
	uint8_t bNameLen;

	/** The feature name buffer */
	/* uint8_t *name; */
} UPACKED;

typedef struct cfi_feature_desc_header cfi_feature_desc_header_t;

/**
 * This structure describes a NULL terminated string referenced by its id field.
 * It is very similar to usb_string structure but has the id field type set to 16-bit.
 */
struct cfi_string {
	uint16_t id;
	const uint8_t *s;
};
typedef struct cfi_string cfi_string_t;

#endif