pci_device_id *id) { int node, result = -ENOMEM; struct nvme_dev *dev; unsigned long quirks = id->driver_data; size_t alloc_size; node = dev_to_node(&pdev->dev); if (node == NUMA_NO_NODE) set_dev_node(&pdev->dev
static int __devinit tg3_init_one(struct pci_dev *pdev, const struct pci_device_id *ent) { //初始化设备,使I/O,memory可用,唤醒设备 pci_enable_device(pdev); //申请内存空间,配置网卡的I/O,memory资源 pci_request_regions(pdev, DRV_MODULE_NAME); pci_set_master(pdev); //设置DMA属性 ...
driver_probe_device首先会调用总线上的match函数(drv->bus->match:pci_bus_match),以判断当前的PCI驱动能否支持该PCI设备,执行路径pci_bus_match()->pci_match_device()->pci_match_one_device(); pci_match_one_device函数的作用是将一个PCI设备与PCI驱动进行比较,以查看它们是否相匹配(验证vendor,id,class...
intpci_request_regions(structpci_dev*pdev,constchar*res_name);voidpci_release_regions(structpci_dev*pdev); 获取/设置驱动私有数据: void*pci_get_drvdata(structpci_dev*pdev);voidpci_set_drvdata((structpci_dev*pdev,void*data); 使能/禁止 PCI 设备: intpci_enable_device(structpci_dev*pdev);in...
pci_set_drvdata(pdev, dev); return 0; err_disable_device: pci_disable_device(pdev); return err; } static void my_pcie_remove(struct pci_dev *pdev) { struct my_pcie_dev *dev = pci_get_drvdata(pdev); // 注销资源(如字符设备、中断等)... // 释放内存映射区域 pci_iounmap(pdev,...
pci_set_drvdata ( dev, priv ); ret = pci_enable_device ( dev );if( ret ) {gotoout_deregister; } pci_set_master ( dev ); pci_read_config_byte ( dev, PCI_REVISION_ID, &priv->revision ); pci_read_config_byte ( dev, PCI_INTERRUPT_PIN, &priv->irq_pin ); ...
pci_set_drvdata(pdev, dev); } 3.注销网络设备 static void __devexit tg3_remove_one(struct pci_dev *pdev) { struct net_device *dev = pci_get_drvdata(pdev); //注销网络设备 unregister_netdev(dev); //取消地址映射 iounmap((void *) ((struct tg3 *)(dev->priv))->regs); ...
err = pci_enable_device_mem(pdev); if (err) return err; pci_using_dac = 0; err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(64)); if (!err) { pci_using_dac = 1; } else { err = dma_set_mask_and_coherent(&pdev->dev, DMA_BIT_MASK(32)); ...
resourcestart返回pci地址范围的总线起始地址pciresourceend返回pci地址范围的总线终止地址pciresourcelen返回pci地址范围的长度以字节为单位pcisetdrvdata为pcidev设置私有数据指针pcigetdrvdata从pcidev结构中得到其私有数据指针pcisetmwi启用设备内存写无效事务pciclearmwi禁用设备内存写无效事务其它提示当向用户显示pci插槽时如...