xref: /rk3399_rockchip-uboot/include/rockusb.h (revision f16e43f88dac0a4388778d4548e1482b04c353b1)
1*f16e43f8SFrank Wang /*
2*f16e43f8SFrank Wang  * Copyright 2017 Rockchip Electronics Co., Ltd
3*f16e43f8SFrank Wang  * Frank Wang <frank.wang@rock-chips.com>
4*f16e43f8SFrank Wang  *
5*f16e43f8SFrank Wang  * SPDX-License-Identifier:	GPL-2.0+
6*f16e43f8SFrank Wang  */
7*f16e43f8SFrank Wang 
8*f16e43f8SFrank Wang #ifndef __ROCKUSB_H__
9*f16e43f8SFrank Wang #define __ROCKUSB_H__
10*f16e43f8SFrank Wang 
11*f16e43f8SFrank Wang #include <common.h>
12*f16e43f8SFrank Wang #include <part.h>
13*f16e43f8SFrank Wang #include <linux/usb/composite.h>
14*f16e43f8SFrank Wang 
15*f16e43f8SFrank Wang enum rkusb_cmd {
16*f16e43f8SFrank Wang 	RKUSB_TEST_UNIT_READY	= 0x00,
17*f16e43f8SFrank Wang 	RKUSB_READ_FLASH_ID	= 0x01,
18*f16e43f8SFrank Wang 	RKUSB_SET_DEVICE_ID	= 0x02,
19*f16e43f8SFrank Wang 	RKUSB_TEST_BAD_BLOCK	= 0x03,
20*f16e43f8SFrank Wang 	RKUSB_READ_10		= 0x04,
21*f16e43f8SFrank Wang 	RKUSB_WRITE_10		= 0x05,
22*f16e43f8SFrank Wang 	RKUSB_ERASE_10		= 0x06,
23*f16e43f8SFrank Wang 	RKUSB_WRITE_SPARE	= 0x07,
24*f16e43f8SFrank Wang 	RKUSB_READ_SPARE	= 0x08,
25*f16e43f8SFrank Wang 	RKUSB_ERASE_10_FORCE	= 0x0B,
26*f16e43f8SFrank Wang 	RKUSB_GET_VERSION	= 0x0C,
27*f16e43f8SFrank Wang 	RKUSB_LBA_READ_10	= 0x14,
28*f16e43f8SFrank Wang 	RKUSB_LBA_WRITE_10	= 0x15,
29*f16e43f8SFrank Wang 	RKUSB_ERASE_SYS_DISK	= 0x16,
30*f16e43f8SFrank Wang 	RKUSB_SDRAM_READ_10	= 0x17,
31*f16e43f8SFrank Wang 	RKUSB_SDRAM_WRITE_10	= 0x18,
32*f16e43f8SFrank Wang 	RKUSB_SDRAM_EXECUTE	= 0x19,
33*f16e43f8SFrank Wang 	RKUSB_READ_FLASH_INFO	= 0x1A,
34*f16e43f8SFrank Wang 	RKUSB_GET_CHIP_VER	= 0x1B,
35*f16e43f8SFrank Wang 	RKUSB_LOW_FORMAT	= 0x1C,
36*f16e43f8SFrank Wang 	RKUSB_SET_RESET_FLAG	= 0x1E,
37*f16e43f8SFrank Wang 	RKUSB_SPI_READ_10	= 0x21,
38*f16e43f8SFrank Wang 	RKUSB_SPI_WRITE_10	= 0x22,
39*f16e43f8SFrank Wang 	RKUSB_LBA_ERASE		= 0x25,
40*f16e43f8SFrank Wang 	RKUSB_SESSION		= 0x30,
41*f16e43f8SFrank Wang 	RKUSB_READ_CAPACITY	= 0xAA,
42*f16e43f8SFrank Wang 	RKUSB_RESET		= 0xFF,
43*f16e43f8SFrank Wang };
44*f16e43f8SFrank Wang 
45*f16e43f8SFrank Wang enum rkusb_rc {
46*f16e43f8SFrank Wang 	RKUSB_RC_ERROR		= -1,
47*f16e43f8SFrank Wang 	RKUSB_RC_CONTINUE	= 0,
48*f16e43f8SFrank Wang 	RKUSB_RC_FINISHED	= 1,
49*f16e43f8SFrank Wang 	RKUSB_RC_UNKNOWN_CMND	= 2,
50*f16e43f8SFrank Wang };
51*f16e43f8SFrank Wang 
52*f16e43f8SFrank Wang #ifdef CONFIG_CMD_ROCKUSB
53*f16e43f8SFrank Wang #define IS_RKUSB_UMS_DNL(name)	(!strncmp((name), "rkusb_ums_dnl", 13))
54*f16e43f8SFrank Wang #else
55*f16e43f8SFrank Wang #define IS_RKUSB_UMS_DNL(name)	0
56*f16e43f8SFrank Wang 
57*f16e43f8SFrank Wang struct fsg_buffhd;
58*f16e43f8SFrank Wang struct fsg_dev;
59*f16e43f8SFrank Wang struct fsg_common;
60*f16e43f8SFrank Wang struct fsg_config;
61*f16e43f8SFrank Wang 
62*f16e43f8SFrank Wang static struct usb_descriptor_header *rkusb_fs_function[];
63*f16e43f8SFrank Wang static struct usb_descriptor_header *rkusb_hs_function[];
64*f16e43f8SFrank Wang 
65*f16e43f8SFrank Wang static inline int rkusb_cmd_process(struct fsg_common *common,
66*f16e43f8SFrank Wang 				    struct fsg_buffhd *bh, int *reply)
67*f16e43f8SFrank Wang {
68*f16e43f8SFrank Wang 	return -EPERM;
69*f16e43f8SFrank Wang }
70*f16e43f8SFrank Wang #endif
71*f16e43f8SFrank Wang 
72*f16e43f8SFrank Wang #endif /* __ROCKUSB_H__ */
73