//return 0 means success static int probe(struct pci_dev *dev, const struct pci_device_id *id) { /* Do probing type stuff here. Like calling request_region(); */ //lin: unsigned char revision_id; unsigned long len; void __iomem *addressio; int bar ; if(skel_get_revision(dev) != MEM_PCI_REVISION_ID) return 1; if (pci_enable_device(dev) < 0) { return 1; } bar = 1; //lin: resource_size_t start = pci_resource_start(dev, bar); len = pci_resource_len(dev, bar); //lin: unsigned long flags = pci_resource_flags(dev, bar); addressio = pci_iomap(dev,bar,len); if (addressio == NULL) { return 1; } //*(byte *)addressio = 0x57; //iowrite8(0x89,addressio + 8); //printk("%x\n",ioread8(addressio + 8)); //printk("%x\n",*(byte *)addressio); iowrite8(0x89,addressio + 0); printk("%x\n",ioread8(addressio + 0)); iowrite16(0x50,addressio + 8); printk("%x\n",ioread16(addressio + 8)); printk("len=%ld\n",len); return 0; }
static int probe(struct pci_dev *dev, const struct pci_device_id *id) { /* Do probing type stuff here. * Like calling request_region(); */ pci_enable_device(dev); if (skel_get_revision(dev) == 0x42) return -ENODEV; return 0; }