brintos

brintos / linux-shallow public Read only

0
0
Text · 1.4 KiB · 3e05ce7 Raw
69 lines · c
1// SPDX-License-Identifier: GPL-2.02 3#include <linux/module.h>4#include <linux/pci.h>5#include "fdomain.h"6 7static int fdomain_pci_probe(struct pci_dev *pdev,8			     const struct pci_device_id *d)9{10	int err;11	struct Scsi_Host *sh;12 13	err = pci_enable_device(pdev);14	if (err)15		goto fail;16 17	err = pci_request_regions(pdev, "fdomain_pci");18	if (err)19		goto disable_device;20 21	err = -ENODEV;22	if (pci_resource_len(pdev, 0) == 0)23		goto release_region;24 25	sh = fdomain_create(pci_resource_start(pdev, 0), pdev->irq, 7,26			    &pdev->dev);27	if (!sh)28		goto release_region;29 30	pci_set_drvdata(pdev, sh);31	return 0;32 33release_region:34	pci_release_regions(pdev);35disable_device:36	pci_disable_device(pdev);37fail:38	return err;39}40 41static void fdomain_pci_remove(struct pci_dev *pdev)42{43	struct Scsi_Host *sh = pci_get_drvdata(pdev);44 45	fdomain_destroy(sh);46	pci_release_regions(pdev);47	pci_disable_device(pdev);48}49 50static struct pci_device_id fdomain_pci_table[] = {51	{ PCI_DEVICE(PCI_VENDOR_ID_FD, PCI_DEVICE_ID_FD_36C70) },52	{}53};54MODULE_DEVICE_TABLE(pci, fdomain_pci_table);55 56static struct pci_driver fdomain_pci_driver = {57	.name		= "fdomain_pci",58	.id_table	= fdomain_pci_table,59	.probe		= fdomain_pci_probe,60	.remove		= fdomain_pci_remove,61	.driver.pm	= FDOMAIN_PM_OPS,62};63 64module_pci_driver(fdomain_pci_driver);65 66MODULE_AUTHOR("Ondrej Zary, Rickard E. Faith");67MODULE_DESCRIPTION("Future Domain TMC-3260 PCI SCSI driver");68MODULE_LICENSE("GPL");69