rtl8812驱动分析(二)

本文详细阐述了在insmod过程中,如何通过处理特殊设备、初始化设备对象、接口及网络节点,实现USB驱动的注册与功能初始化。

我们已经知道在insmod 8812.ko的时候,已经注册了一个usb驱动usb_drv->usbdrv, 其中的成员probe是最关键的,接下来我们来详细看一下probe的过程。

.usbdrv.probe = rtw_drv_init,
第一步:

static int rtw_drv_init(struct usb_interface *pusb_intf, const struct usb_device_id *did)
{
	int i;
	uint status = _FAIL;
	_adapter *if1 = NULL, *if2 = NULL;
	struct dvobj_priv *dvobj = NULL;


	RT_TRACE(_module_hci_intfs_c_, _drv_err_, ("+rtw_drv_init\n"));


	//step 0.
	process_spec_devid(did);

从函数名可以知道这是为了处理一些特别的设备,识别这些特殊设备也是通过PIDVID信息来的。

static void process_spec_devid(const struct usb_device_id *pdid)
{
	u16 vid, pid;
	u32 flags;
	int i;
	int num = sizeof(specific_device_id_tbl)/sizeof(struct specific_device_id);

	for(i=0; i<num; i++)
	{
		vid = specific_device_id_tbl[i].idVendor;
		pid = specific_device_id_tbl[i].idProduct;
		flags = specific_device_id_tbl[i].flags;

#ifdef CONFIG_80211N_HT
		if((pdid->idVendor==vid) && (pdid->idProduct==pid) && (f
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值