Messages in this thread | | | Date | Wed, 14 Sep 2005 23:00:43 +0400 | From | Manu Abraham <> | Subject | Re: PCI driver |
| |
Jiri Slaby wrote: > Manu Abraham napsal(a): > >> Jiri Slaby wrote: >> >>> you do NOT do this at all, because you have pdev already (the param >>> of the probe function) >>> >> >> I rewrote the entire thing like this including the pci_remove function >> too, but now it so seems that in the remove function, >> pci_get_drvdata(pdev) returns NULL, and hence i get an Oops at module >> removal. > > Maybe because this is badly written driver.
I have not written the driver, but this is my first go at it ..
> >> static int mantis_pci_probe(struct pci_dev *pdev, const struct >> pci_device_id *mantis_pci_table) >> { >> struct mantis_pci *mantis; >> struct mantis_eeprom eeprom; >> u8 revision, latency; >> u8 data[2]; >> if (pci_enable_device(pdev)) { dprintk(verbose, >> MANTIS_DEBUG, 1, "Found a mantis chip"); >> if ((mantis = (struct mantis_pci *) kmalloc(sizeof (struct >> mantis_pci), GFP_KERNEL)) == NULL) { >> dprintk(verbose, MANTIS_ERROR, 1, "Out of memory"); >> return -ENOMEM; >> } >> pci_set_master(pdev); >> mantis->mantis_addr = pci_resource_start(pdev, 0); >> if (!request_mem_region(pci_resource_start(pdev, 0), >> pci_resource_len(pdev, 0), DRIVER_NAME)) { >> kfree(mantis); >> return -EBUSY; >> } >> pci_read_config_byte(pdev, PCI_CLASS_REVISION, &revision); >> pci_read_config_byte(pdev, PCI_LATENCY_TIMER, &latency); >> mantis->mantis_mmio = ioremap(mantis->mantis_addr, 0x1000); >> pci_set_drvdata(pdev, mantis); > > if pci_enable_device fails, you set this?? Maybe you haven't read the > doc enough.
I just found that, pci_enable_device() fails. So what's the way to go ahead ?
Manu - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |