1*4882a593Smuzhiyun /*
2*4882a593Smuzhiyun * Copyright 2017 Rockchip Electronics Co., Ltd
3*4882a593Smuzhiyun * Frank Wang <frank.wang@rock-chips.com>
4*4882a593Smuzhiyun *
5*4882a593Smuzhiyun * SPDX-License-Identifier: GPL-2.0+
6*4882a593Smuzhiyun */
7*4882a593Smuzhiyun
8*4882a593Smuzhiyun #ifndef __ROCKUSB_H__
9*4882a593Smuzhiyun #define __ROCKUSB_H__
10*4882a593Smuzhiyun
11*4882a593Smuzhiyun #include <common.h>
12*4882a593Smuzhiyun #include <part.h>
13*4882a593Smuzhiyun #include <linux/usb/composite.h>
14*4882a593Smuzhiyun
15*4882a593Smuzhiyun enum rkusb_cmd {
16*4882a593Smuzhiyun RKUSB_TEST_UNIT_READY = 0x00,
17*4882a593Smuzhiyun RKUSB_READ_FLASH_ID = 0x01,
18*4882a593Smuzhiyun RKUSB_SET_DEVICE_ID = 0x02,
19*4882a593Smuzhiyun RKUSB_TEST_BAD_BLOCK = 0x03,
20*4882a593Smuzhiyun RKUSB_READ_10 = 0x04,
21*4882a593Smuzhiyun RKUSB_WRITE_10 = 0x05,
22*4882a593Smuzhiyun RKUSB_ERASE_10 = 0x06,
23*4882a593Smuzhiyun RKUSB_WRITE_SPARE = 0x07,
24*4882a593Smuzhiyun RKUSB_READ_SPARE = 0x08,
25*4882a593Smuzhiyun RKUSB_ERASE_10_FORCE = 0x0B,
26*4882a593Smuzhiyun RKUSB_GET_VERSION = 0x0C,
27*4882a593Smuzhiyun RKUSB_LBA_READ_10 = 0x14,
28*4882a593Smuzhiyun RKUSB_LBA_WRITE_10 = 0x15,
29*4882a593Smuzhiyun RKUSB_ERASE_SYS_DISK = 0x16,
30*4882a593Smuzhiyun RKUSB_SDRAM_READ_10 = 0x17,
31*4882a593Smuzhiyun RKUSB_SDRAM_WRITE_10 = 0x18,
32*4882a593Smuzhiyun RKUSB_SDRAM_EXECUTE = 0x19,
33*4882a593Smuzhiyun RKUSB_READ_FLASH_INFO = 0x1A,
34*4882a593Smuzhiyun RKUSB_GET_CHIP_VER = 0x1B,
35*4882a593Smuzhiyun RKUSB_LOW_FORMAT = 0x1C,
36*4882a593Smuzhiyun RKUSB_SET_RESET_FLAG = 0x1E,
37*4882a593Smuzhiyun RKUSB_SPI_READ_10 = 0x21,
38*4882a593Smuzhiyun RKUSB_SPI_WRITE_10 = 0x22,
39*4882a593Smuzhiyun RKUSB_LBA_ERASE = 0x25,
40*4882a593Smuzhiyun RKUSB_VS_WRITE = 0x26,
41*4882a593Smuzhiyun RKUSB_VS_READ = 0x27,
42*4882a593Smuzhiyun RKUSB_GET_STORAGE_MEDIA = 0x2B,
43*4882a593Smuzhiyun RKUSB_SESSION = 0x30,
44*4882a593Smuzhiyun RKUSB_READ_CAPACITY = 0xAA,
45*4882a593Smuzhiyun RKUSB_RESET = 0xFF,
46*4882a593Smuzhiyun };
47*4882a593Smuzhiyun
48*4882a593Smuzhiyun enum rkusb_rc {
49*4882a593Smuzhiyun RKUSB_RC_ERROR = -1,
50*4882a593Smuzhiyun RKUSB_RC_CONTINUE = 0,
51*4882a593Smuzhiyun RKUSB_RC_FINISHED = 1,
52*4882a593Smuzhiyun RKUSB_RC_UNKNOWN_CMND = 2,
53*4882a593Smuzhiyun };
54*4882a593Smuzhiyun
55*4882a593Smuzhiyun struct fsg_common;
56*4882a593Smuzhiyun
57*4882a593Smuzhiyun #ifdef CONFIG_CMD_ROCKUSB
58*4882a593Smuzhiyun #define IS_RKUSB_UMS_DNL(name) (!strncmp((name), "rkusb_ums_dnl", 13))
59*4882a593Smuzhiyun
60*4882a593Smuzhiyun int rkusb_do_check_parity(struct fsg_common *common);
61*4882a593Smuzhiyun #else
62*4882a593Smuzhiyun #define IS_RKUSB_UMS_DNL(name) 0
63*4882a593Smuzhiyun
64*4882a593Smuzhiyun struct fsg_buffhd;
65*4882a593Smuzhiyun struct fsg_dev;
66*4882a593Smuzhiyun struct fsg_common;
67*4882a593Smuzhiyun struct fsg_config;
68*4882a593Smuzhiyun
69*4882a593Smuzhiyun static struct usb_descriptor_header *rkusb_fs_function[];
70*4882a593Smuzhiyun static struct usb_descriptor_header *rkusb_hs_function[];
71*4882a593Smuzhiyun
rkusb_cmd_process(struct fsg_common * common,struct fsg_buffhd * bh,int * reply)72*4882a593Smuzhiyun static inline int rkusb_cmd_process(struct fsg_common *common,
73*4882a593Smuzhiyun struct fsg_buffhd *bh, int *reply)
74*4882a593Smuzhiyun {
75*4882a593Smuzhiyun return -EPERM;
76*4882a593Smuzhiyun }
77*4882a593Smuzhiyun
rkusb_do_check_parity(struct fsg_common * common)78*4882a593Smuzhiyun static inline int rkusb_do_check_parity(struct fsg_common *common)
79*4882a593Smuzhiyun {
80*4882a593Smuzhiyun return -EOPNOTSUPP;
81*4882a593Smuzhiyun }
82*4882a593Smuzhiyun #endif
83*4882a593Smuzhiyun
84*4882a593Smuzhiyun /* Wait at maximum 60 seconds for cable connection */
85*4882a593Smuzhiyun #define RKUSB_CABLE_READY_TIMEOUT 60
86*4882a593Smuzhiyun #define SECTOR_SIZE 0x200
87*4882a593Smuzhiyun
88*4882a593Smuzhiyun #define RKUSB_READ_LIMIT_ADDR (32 * 2048) /* 32MB */
89*4882a593Smuzhiyun
90*4882a593Smuzhiyun struct rockusb {
91*4882a593Smuzhiyun struct ums *ums;
92*4882a593Smuzhiyun int ums_cnt;
93*4882a593Smuzhiyun };
94*4882a593Smuzhiyun
95*4882a593Smuzhiyun #endif /* __ROCKUSB_H__ */
96