1/* 2 ************************************************************************* 3 * Ralink Tech Inc. 4 * 5F., No.36, Taiyuan St., Jhubei City, 5 * Hsinchu County 302, 6 * Taiwan, R.O.C. 7 * 8 * (c) Copyright 2002-2007, Ralink Technology, Inc. 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 * 22 * Free Software Foundation, Inc., * 23 * 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. * 24 * * 25 ************************************************************************* 26*/ 27 28#ifndef __RTMP_PCI_H__ 29#define __RTMP_PCI_H__ 30 31#define RT28XX_HANDLE_DEV_ASSIGN(handle, dev_p) \ 32 ((struct os_cookie *)handle)->pci_dev = dev_p; 33 34// set driver data 35#define RT28XX_DRVDATA_SET(_a) pci_set_drvdata(_a, net_dev); 36 37#define RT28XX_PUT_DEVICE(dev_p) 38 39#define SA_SHIRQ IRQF_SHARED 40 41#ifdef PCI_MSI_SUPPORT 42#define RTMP_MSI_ENABLE(_pAd) \ 43 { struct os_cookie *_pObj = (struct os_cookie *)(_pAd->OS_Cookie); \ 44 (_pAd)->HaveMsi = pci_enable_msi(_pObj->pci_dev) == 0 ? TRUE : FALSE; \ 45 } 46 47#define RTMP_MSI_DISABLE(_pAd) \ 48 { struct os_cookie *_pObj = (struct os_cookie *)(_pAd->OS_Cookie); \ 49 if (_pAd->HaveMsi == TRUE) \ 50 pci_disable_msi(_pObj->pci_dev); \ 51 _pAd->HaveMsi = FALSE; \ 52 } 53#else 54#define RTMP_MSI_ENABLE(_pAd) do{}while(0) 55#define RTMP_MSI_DISABLE(_pAd) do{}while(0) 56#endif // PCI_MSI_SUPPORT // 57 58#define RTMP_PCI_DEV_UNMAP() \ 59{ if (net_dev->base_addr) { \ 60 iounmap((void *)(net_dev->base_addr)); \ 61 release_mem_region(pci_resource_start(dev_p, 0), \ 62 pci_resource_len(dev_p, 0)); } \ 63 if (net_dev->irq) pci_release_regions(dev_p); } 64 65#define PCI_REG_READ_WORD(pci_dev, offset, Configuration) \ 66 if (pci_read_config_word(pci_dev, offset, ®16) == 0) \ 67 Configuration = le2cpu16(reg16); \ 68 else \ 69 Configuration = 0; 70 71#define PCI_REG_WIRTE_WORD(pci_dev, offset, Configuration) \ 72 reg16 = cpu2le16(Configuration); \ 73 pci_write_config_word(pci_dev, offset, reg16); 74 75#endif // __RTMP_PCI_H__ // 76