Linux内核限制对应PID/VID usb audio 驱动的加载

在项目中遇到多个usb audio驱动加载的情况,但是只需要使用其中的我想要的那个usb audio设备,一开始想在安卓上做选择,但是因为都是同类型usb audio设备,安卓上没看到有对同类型usb audio设备做出区分,后面便在内核上看看。
usb audio的加载在sound/usb/card.c文件下实现的,里面实现了声卡的创建,加载、释放等一系列内容,其中可以关注usb_audio_probe函数,这里便可以达到限制usb audio设备加载的目的。

static int usb_audio_probe(struct usb_interface *intf,
			   const struct usb_device_id *usb_id)
{
	...
	if (! chip) {
		/* it's a fresh one.
		 * now look for an empty slot and create a new card instance
		 */
		for (i = 0; i < SNDRV_CARDS; i++)
			if (enable[i] && ! usb_chip[i] &&
			    (vid[i] == -1 || vid[i] == USB_ID_VENDOR(id)) &&
			    (pid[i] == -1 || pid[i] == USB_ID_PRODUCT(id))) {
				err = snd_usb_audio_create(intf, dev, i, quirk,
							   &chip);
				if (err < 0)
					goto __error;
				chip->pm_intf = intf;
				break;
			}
		if (!chip) {
			dev_err(&dev->dev, "no available usb audio device\n");
			err = -ENODEV;
			goto __error;
		}
		
		...
	}

在这段代码里面会对PID/VID做出相应的识别,可以对我们不想加载的对应pid/vid的设备进行限制,或者只加载想要加载的PID/VID设备。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值