Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
ihbai
rt-thread
提交
600eb257
R
rt-thread
项目概览
ihbai
/
rt-thread
与 Fork 源项目一致
Fork自
RT-Thread / rt-thread
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
DevOps
流水线
流水线任务
计划
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
R
rt-thread
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
DevOps
DevOps
流水线
流水线任务
计划
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
流水线任务
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
提交
600eb257
编写于
6月 02, 2020
作者:
W
Wayne Lin
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Solved USB device class issue.
上级
997c6527
变更
3
隐藏空白更改
内联
并排
Showing
3 changed file
with
29 addition
and
11 deletion
+29
-11
components/drivers/usb/usbdevice/class/cdc_vcom.c
components/drivers/usb/usbdevice/class/cdc_vcom.c
+3
-2
components/drivers/usb/usbdevice/class/hid.c
components/drivers/usb/usbdevice/class/hid.c
+10
-8
components/drivers/usb/usbdevice/class/mstorage.c
components/drivers/usb/usbdevice/class/mstorage.c
+16
-1
未找到文件。
components/drivers/usb/usbdevice/class/cdc_vcom.c
浏览文件 @
600eb257
...
...
@@ -589,8 +589,9 @@ ufunction_t rt_usbd_function_cdc_create(udevice_t device)
/* create a cdc function */
func
=
rt_usbd_function_new
(
device
,
&
dev_desc
,
&
ops
);
//not support HS
//rt_usbd_device_set_qualifier(device, &dev_qualifier);
/* support HS */
rt_usbd_device_set_qualifier
(
device
,
&
dev_qualifier
);
/* allocate memory for cdc vcom data */
data
=
(
struct
vcom
*
)
rt_malloc
(
sizeof
(
struct
vcom
));
...
...
components/drivers/usb/usbdevice/class/hid.c
浏览文件 @
600eb257
...
...
@@ -29,7 +29,7 @@ struct hid_s
uep_t
ep_in
;
uep_t
ep_out
;
int
status
;
rt_uint
16
_t
protocol
;
rt_uint
8
_t
protocol
;
rt_uint8_t
report_buf
[
MAX_REPORT_SIZE
];
struct
rt_messagequeue
hid_mq
;
};
...
...
@@ -246,7 +246,7 @@ static struct udevice_descriptor _dev_desc =
USB_DESC_LENGTH_DEVICE
,
//bLength;
USB_DESC_TYPE_DEVICE
,
//type;
USB_BCD_VERSION
,
//bcdUSB;
USB_CLASS_HID
,
//bDeviceClass;
0x0
,
//bDeviceClass;
0x00
,
//bDeviceSubClass;
0x00
,
//bDeviceProtocol;
64
,
//bMaxPacketSize0;
...
...
@@ -266,8 +266,8 @@ static struct usb_qualifier_descriptor dev_qualifier =
sizeof
(
dev_qualifier
),
//bLength
USB_DESC_TYPE_DEVICEQUALIFIER
,
//bDescriptorType
0x0200
,
//bcdUSB
USB_CLASS_MASS_STORAGE
,
//bDeviceClass
0x0
6
,
//bDeviceSubClass
0x0
,
//bDeviceClass
0x0
,
//bDeviceSubClass
0x50
,
//bDeviceProtocol
64
,
//bMaxPacketSize0
0x01
,
//bNumConfigurations
...
...
@@ -347,7 +347,7 @@ const static struct uhid_comm_descriptor _hid_comm_desc =
USB_DYNAMIC
|
USB_DIR_IN
,
USB_EP_ATTR_INT
,
0x40
,
0x0
1
,
0x0
A
,
},
/* Endpoint Descriptor OUT */
...
...
@@ -458,6 +458,7 @@ static rt_err_t _interface_handler(ufunction_t func, ureq_t setup)
struct
hid_s
*
data
=
(
struct
hid_s
*
)
func
->
user_data
;
switch
(
setup
->
bRequest
)
{
case
USB_REQ_GET_DESCRIPTOR
:
...
...
@@ -486,7 +487,7 @@ static rt_err_t _interface_handler(ufunction_t func, ureq_t setup)
dcd_ep0_send_status
(
func
->
device
->
dcd
);
break
;
case
USB_HID_REQ_GET_PROTOCOL
:
rt_usbd_ep0_write
(
func
->
device
,
&
data
->
protocol
,
2
);
rt_usbd_ep0_write
(
func
->
device
,
&
data
->
protocol
,
1
);
break
;
case
USB_HID_REQ_SET_REPORT
:
...
...
@@ -692,8 +693,9 @@ ufunction_t rt_usbd_function_hid_create(udevice_t device)
/* create a cdc function */
func
=
rt_usbd_function_new
(
device
,
&
_dev_desc
,
&
ops
);
//not support hs
//rt_usbd_device_set_qualifier(device, &_dev_qualifier);
/* For high speed mode supporting */
rt_usbd_device_set_qualifier
(
device
,
&
dev_qualifier
);
/* allocate memory for cdc vcom data */
data
=
(
struct
hid_s
*
)
rt_malloc
(
sizeof
(
struct
hid_s
));
...
...
components/drivers/usb/usbdevice/class/mstorage.c
浏览文件 @
600eb257
...
...
@@ -611,7 +611,9 @@ static rt_err_t _ep_in_handler(ufunction_t func, rt_size_t size)
}
else
{
rt_usbd_ep_set_stall
(
func
->
device
,
data
->
ep_in
);
//rt_kprintf("warning:in stall path but not stall\n");
/* FIXME: Disable the operation or the disk cannot work. */
//rt_usbd_ep_set_stall(func->device, data->ep_in);
}
data
->
csw_response
.
data_reside
=
0
;
}
...
...
@@ -719,6 +721,19 @@ static void _cb_len_calc(ufunction_t func, struct scsi_cmd* cmd,
break
;
}
}
//workaround: for stability in full-speed mode
else
if
(
cmd
->
cmd_len
==
12
)
{
switch
(
cmd
->
type
)
{
case
COUNT
:
data
->
cb_data_size
=
cbw
->
cb
[
4
];
break
;
default:
break
;
}
}
else
{
// rt_kprintf("cmd_len error %d\n", cmd->cmd_len);
...
...
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录