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