Android Mediatek USB 核心驱动中增加设备 PID/VID 检查

简介: Android Mediatek USB 核心驱动中增加设备 PID/VID 检查

这个是在mtk usb核心驱动增加的检查文件 , 并且对vid、pid进行过滤的。

这个修改主要在Mediatek  USB 核心驱动的 usb_new_device 函数中增加了设备 PID/VID 的检查。当新的 USB 设备连接时,驱动会检查设备的 PID/VID 是否在预定义的列表中,如果不在,则不会继续初始化该设备。

修改的文件:

  1. kernel-3.10/drivers/usb/core/hub.c

文件修改说明:

  1. hub.c: 在 usb_new_device 函数中,增加了设备 PID/VID 的检查。首先,打开预定义的设备列表文件,然后读取文件内容到缓冲区。接着,将设备的 PID/VID 转换为字符串格式,并在缓冲区中查找该字符串。如果找不到,则跳转到 fail 标签,不会继续初始化该设备。
 kernel-3.10/drivers/usb/core/hub.c | 38 +++++++++++++++++++++++++++++++++++++-
 1 file changed, 37 insertions(+), 1 deletion(-)
 mode change 100644 => 100755 kernel-3.10/drivers/usb/core/hub.c
 
diff --git a/kernel-3.10/drivers/usb/core/hub.c b/kernel-3.10/drivers/usb/core/hub.c
old mode 100644
new mode 100755
index 812d3a4..2a4b4a1
--- a/kernel-3.10/drivers/usb/core/hub.c
+++ b/kernel-3.10/drivers/usb/core/hub.c
@@ -28,6 +28,9 @@
 #include <linux/random.h>
 #include <linux/pm_qos.h>
 
+#include <linux/fs.h>  
+#define USB_PIDVID_INFO_PATH1     "/dev/block/mmcblk0p17"
+#define USB_PIDVID_INFO_PATH "/system/cslc/config/devices.lst"
 #include <asm/uaccess.h>
 #include <asm/byteorder.h>
 #include "hub.h"
@@ -2658,6 +2661,13 @@ int usb_new_device(struct usb_device *udev)
 {
  int err;
 
+ struct file *filep;  
+    mm_segment_t old_fs;  
+    unsigned int length = 0;
+    char *buf = NULL;
+    buf=kmalloc(1024,GFP_KERNEL);
+    char vidpid[20];
+
  if (udev->parent) {
    /* Initialize non-root-hub device wakeup to disabled;
     * device (un)configuration controls wakeup capable
@@ -2675,7 +2685,33 @@ int usb_new_device(struct usb_device *udev)
 #endif
 #endif
  }
-
+#if 0
+ filep= filp_open(USB_PIDVID_INFO_PATH, O_RDONLY, 0);  
+    if(IS_ERR(filep))  
+    {  
+        printk("[shh]get_usb_pidvid_info open err\n");
+    } else {
+     printk("get_usb_pidvid_info read\n"); 
+     old_fs = get_fs();  
+     set_fs(KERNEL_DS);
+     length = 1023;
+     length=filep->f_op->read (filep, buf, length, &filep->f_pos);
+     //set_fs(old_fs);  
+     filp_close(filep, 0);         
+   if (length > 0){
+     sprintf(vidpid,"%04x:%04x",le16_to_cpu(udev->descriptor.idProduct),le16_to_cpu(udev->descriptor.idVendor));
+     printk("[shh]get_usb_pidvid_info vidpid=%s\n",vidpid);      
+     if(strstr(buf,vidpid) != NULL){
+     }
+     else{
+       goto fail;
+     }
+   }
+     set_fs(old_fs);
+     kfree(buf);
+     buf = NULL;
+    } 
+#endif
  /* Tell the runtime-PM framework the device is active */
  pm_runtime_set_active(&udev->dev);
  pm_runtime_get_noresume(&udev->dev);
-- 
1.9.1




相关文章
|
2月前
|
Android开发
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
Android基于gradle task检查各个module之间资源文件冲突情况
|
2月前
|
Android开发
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
Android gradle task任务检查各个module之间资源文件冲突.md
|
4月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(五):基于GPIO、LED子系统的LED驱动
这篇文章是关于如何在基于Amlogic T972的Android 9.0系统上,使用GPIO和LED子系统来实现LED驱动的教程,包括了DTS设备树配置、驱动源码编写以及如何在用户空间控制LED的亮度和开关。
136 0
基于Amlogic 安卓9.0, 驱动简说(五):基于GPIO、LED子系统的LED驱动
|
4月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
本文介绍了如何在基于Amlogic T972的Android 9.0系统上使用Platform平台驱动框架和设备树(DTS),实现设备与驱动的分离,并通过静态枚举在设备树中描述设备,自动触发驱动程序的加载和设备创建。
86 0
基于Amlogic 安卓9.0, 驱动简说(四):Platform平台驱动,驱动与设备的分离
|
4月前
|
Android开发
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
如何使用Amlogic T972安卓9.0系统上的misc框架来简化驱动程序开发,通过misc框架自动分配设备号并创建设备文件,从而减少代码量并避免设备号冲突。
57 0
基于Amlogic 安卓9.0, 驱动简说(三):使用misc框架,让驱动更简单
|
4月前
|
Android开发 C语言
基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备
这篇文章是关于如何在基于Amlogic T972的Android 9.0系统上,通过自动分配设备号和自动创建设备节点文件的方式,开发字符设备驱动程序的教程。
84 0
基于Amlogic 安卓9.0, 驱动简说(二):字符设备驱动,自动创建设备
|
4月前
|
自然语言处理 Shell Linux
基于Amlogic 安卓9.0, 驱动简说(一):字符设备驱动,手动创建设备
本文是关于在Amlogic安卓9.0平台上创建字符设备驱动的教程,详细介绍了驱动程序的编写、编译、部署和测试过程,并提供了完整的源码和应用层调用示例。
115 0
基于Amlogic 安卓9.0, 驱动简说(一):字符设备驱动,手动创建设备
|
1月前
|
开发框架 前端开发 Android开发
安卓与iOS开发中的跨平台策略
在移动应用开发的战场上,安卓和iOS两大阵营各据一方。随着技术的演进,跨平台开发框架成为开发者的新宠,旨在实现一次编码、多平台部署的梦想。本文将探讨跨平台开发的优势与挑战,并分享实用的开发技巧,帮助开发者在安卓和iOS的世界中游刃有余。
|
20天前
|
搜索推荐 前端开发 API
探索安卓开发中的自定义视图:打造个性化用户界面
在安卓应用开发的广阔天地中,自定义视图是一块神奇的画布,让开发者能够突破标准控件的限制,绘制出独一无二的用户界面。本文将带你走进自定义视图的世界,从基础概念到实战技巧,逐步揭示如何在安卓平台上创建和运用自定义视图来提升用户体验。无论你是初学者还是有一定经验的开发者,这篇文章都将为你打开新的视野,让你的应用在众多同质化产品中脱颖而出。
40 19
|
20天前
|
JSON Java API
探索安卓开发:打造你的首个天气应用
在这篇技术指南中,我们将一起潜入安卓开发的海洋,学习如何从零开始构建一个简单的天气应用。通过这个实践项目,你将掌握安卓开发的核心概念、界面设计、网络编程以及数据解析等技能。无论你是初学者还是有一定基础的开发者,这篇文章都将为你提供一个清晰的路线图和实用的代码示例,帮助你在安卓开发的道路上迈出坚实的一步。让我们一起开始这段旅程,打造属于你自己的第一个安卓应用吧!
45 14