1 /*
2     comedi/drivers/comedi_pci.h
3     Various PCI functions for drivers.
4 
5     Copyright (C) 2007 MEV Ltd. <http://www.mev.co.uk/>
6 
7     COMEDI - Linux Control and Measurement Device Interface
8     Copyright (C) 2000 David A. Schleef <ds@schleef.org>
9 
10     This program is free software; you can redistribute it and/or modify
11     it under the terms of the GNU General Public License as published by
12     the Free Software Foundation; either version 2 of the License, or
13     (at your option) any later version.
14 
15     This program is distributed in the hope that it will be useful,
16     but WITHOUT ANY WARRANTY; without even the implied warranty of
17     MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18     GNU General Public License for more details.
19 
20     You should have received a copy of the GNU General Public License
21     along with this program; if not, write to the Free Software
22     Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
23 
24 */
25 
26 #ifndef _COMEDI_PCI_H_
27 #define _COMEDI_PCI_H_
28 
29 #include <linux/pci.h>
30 
31 /*
32  * Enable the PCI device and request the regions.
33  */
comedi_pci_enable(struct pci_dev * pdev,const char * res_name)34 static inline int comedi_pci_enable(struct pci_dev *pdev, const char *res_name)
35 {
36 	int rc;
37 
38 	rc = pci_enable_device(pdev);
39 	if (rc < 0)
40 		return rc;
41 
42 	rc = pci_request_regions(pdev, res_name);
43 	if (rc < 0)
44 		pci_disable_device(pdev);
45 
46 	return rc;
47 }
48 
49 /*
50  * Release the regions and disable the PCI device.
51  *
52  * This must be matched with a previous successful call to comedi_pci_enable().
53  */
comedi_pci_disable(struct pci_dev * pdev)54 static inline void comedi_pci_disable(struct pci_dev *pdev)
55 {
56 	pci_release_regions(pdev);
57 	pci_disable_device(pdev);
58 }
59 
60 #endif
61