comedi_pci.h revision 7b1f281350ca1ba1f740ced203136d27390b22c1
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 * Called to disable PCI device if PCI device has been enabled, but 33 * PCI regions have not been reserved. 34 * 35 * It only disables the PCI device if the kernel supports reference 36 * counting of PCI enables, otherwise it might stop the device working 37 * in another driver instance. 38 */ 39static inline void comedi_pci_disable_no_regions(struct pci_dev *pdev) 40{ 41 pci_disable_device(pdev); 42} 43 44/* 45 * Enable the PCI device and request the regions. 46 */ 47static inline int comedi_pci_enable(struct pci_dev *pdev, const char *res_name) 48{ 49 int rc; 50 51 rc = pci_enable_device(pdev); 52 if (rc < 0) 53 return rc; 54 55 rc = pci_request_regions(pdev, res_name); 56 if (rc < 0) 57 pci_disable_device(pdev); 58 59 return rc; 60} 61 62/* 63 * Release the regions and disable the PCI device. 64 * 65 * This must be matched with a previous successful call to comedi_pci_enable(). 66 */ 67static inline void comedi_pci_disable(struct pci_dev *pdev) 68{ 69 pci_release_regions(pdev); 70 pci_disable_device(pdev); 71} 72 73#endif 74