Merge branch 'next'
[u-boot/qq2440-u-boot.git] / drivers / usb / gadget / f_thor.h
blob833a9d24ae7e632ba18173738491b5c6f65a1650
1 /*
2 * f_thor.h - USB TIZEN THOR - internal gadget definitions
4 * Copyright (C) 2013 Samsung Electronics
5 * Lukasz Majewski <l.majewski@samsung.com>
7 * SPDX-License-Identifier: GPL-2.0+
8 */
10 #ifndef _USB_THOR_H_
11 #define _USB_THOR_H_
13 #include <linux/compiler.h>
14 #include <linux/sizes.h>
16 /* THOR Composite Gadget */
17 #define STRING_MANUFACTURER_IDX 0
18 #define STRING_PRODUCT_IDX 1
19 #define STRING_SERIAL_IDX 2
21 /* ********************************************************** */
22 /* THOR protocol definitions */
23 /* ********************************************************** */
26 * Attribute Vendor descriptor - necessary to prevent ZLP transmission
27 * from Windows XP HOST PC
29 struct usb_cdc_attribute_vendor_descriptor {
30 __u8 bLength;
31 __u8 bDescriptorType;
32 __u8 bDescriptorSubType;
33 __u16 DAUType;
34 __u16 DAULength;
35 __u8 DAUValue;
36 } __packed;
38 #define VER_PROTOCOL_MAJOR 4
39 #define VER_PROTOCOL_MINOR 0
41 enum rqt {
42 RQT_INFO = 200,
43 RQT_CMD,
44 RQT_DL,
45 RQT_UL,
48 enum rqt_data {
49 /* RQT_INFO */
50 RQT_INFO_VER_PROTOCOL = 1,
51 RQT_INIT_VER_HW,
52 RQT_INIT_VER_BOOT,
53 RQT_INIT_VER_KERNEL,
54 RQT_INIT_VER_PLATFORM,
55 RQT_INIT_VER_CSC,
57 /* RQT_CMD */
58 RQT_CMD_REBOOT = 1,
59 RQT_CMD_POWEROFF,
60 RQT_CMD_EFSCLEAR,
62 /* RQT_DL */
63 RQT_DL_INIT = 1,
64 RQT_DL_FILE_INFO,
65 RQT_DL_FILE_START,
66 RQT_DL_FILE_END,
67 RQT_DL_EXIT,
69 /* RQT_UL */
70 RQT_UL_INIT = 1,
71 RQT_UL_START,
72 RQT_UL_END,
73 RQT_UL_EXIT,
76 struct rqt_box { /* total: 256B */
77 s32 rqt; /* request id */
78 s32 rqt_data; /* request data id */
79 s32 int_data[14]; /* int data */
80 char str_data[5][32]; /* string data */
81 char md5[32]; /* md5 checksum */
82 } __packed;
84 struct rsp_box { /* total: 128B */
85 s32 rsp; /* response id (= request id) */
86 s32 rsp_data; /* response data id */
87 s32 ack; /* ack */
88 s32 int_data[5]; /* int data */
89 char str_data[3][32]; /* string data */
90 } __packed;
92 struct data_rsp_box { /* total: 8B */
93 s32 ack; /* response id (= request id) */
94 s32 count; /* response data id */
95 } __packed;
97 enum {
98 FILE_TYPE_NORMAL,
99 FILE_TYPE_PIT,
102 struct thor_dev {
103 struct usb_gadget *gadget;
104 struct usb_request *req; /* EP0 -> control responses */
106 /* IN/OUT EP's and correspoinding requests */
107 struct usb_ep *in_ep, *out_ep, *int_ep;
108 struct usb_request *in_req, *out_req;
110 /* Control flow variables */
111 unsigned char configuration_done;
112 unsigned char rxdata;
113 unsigned char txdata;
116 struct f_thor {
117 struct usb_function usb_function;
118 struct thor_dev *dev;
121 #define F_NAME_BUF_SIZE 32
122 #define THOR_PACKET_SIZE SZ_1M /* 1 MiB */
123 #define THOR_STORE_UNIT_SIZE SZ_32M /* 32 MiB */
124 #endif /* _USB_THOR_H_ */