1e404297eSAxel Dörfler /* 2e404297eSAxel Dörfler * Copyright 2006, Haiku, Inc. All Rights Reserved. 3e404297eSAxel Dörfler * Distributed under the terms of the MIT License. 4e404297eSAxel Dörfler * 5e404297eSAxel Dörfler * Authors: 6e404297eSAxel Dörfler * Axel Dörfler, axeld@pinc-software.de 7e404297eSAxel Dörfler */ 8e404297eSAxel Dörfler #ifndef DRIVER_H 9e404297eSAxel Dörfler #define DRIVER_H 10e404297eSAxel Dörfler 11e404297eSAxel Dörfler 12e404297eSAxel Dörfler #include <KernelExport.h> 13e404297eSAxel Dörfler #include <PCI.h> 14e404297eSAxel Dörfler 15*4955c11bSAxel Dörfler #include "intel_extreme_private.h" 16*4955c11bSAxel Dörfler 17e404297eSAxel Dörfler 18e404297eSAxel Dörfler // PCI Communications 19e404297eSAxel Dörfler 20e404297eSAxel Dörfler #define read8(address) (*((volatile uint8 *)(address))) 21e404297eSAxel Dörfler #define read16(address) (*((volatile uint16 *)(address))) 22e404297eSAxel Dörfler #define read32(address) (*((volatile uint32 *)(address))) 23e404297eSAxel Dörfler #define write8(address,data) (*((volatile uint8 *)(address)) = data) 24e404297eSAxel Dörfler #define write16(address,data) (*((volatile uint16 *)(address)) = (data)) 25e404297eSAxel Dörfler #define write32(address,data) (*((volatile uint32 *)(address)) = (data)) 26e404297eSAxel Dörfler 27e404297eSAxel Dörfler 28e404297eSAxel Dörfler extern char *gDeviceNames[]; 29e404297eSAxel Dörfler extern intel_info *gDeviceInfo[]; 30e404297eSAxel Dörfler extern pci_module_info *gPCI; 31e404297eSAxel Dörfler extern struct lock gLock; 32e404297eSAxel Dörfler 33e404297eSAxel Dörfler 34e404297eSAxel Dörfler static inline uint32 35e404297eSAxel Dörfler get_pci_config(pci_info *info, uint8 offset, uint8 size) 36e404297eSAxel Dörfler { 37e404297eSAxel Dörfler return gPCI->read_pci_config(info->bus, info->device, info->function, offset, size); 38e404297eSAxel Dörfler } 39e404297eSAxel Dörfler 40e404297eSAxel Dörfler 41e404297eSAxel Dörfler static inline void 42e404297eSAxel Dörfler set_pci_config(pci_info *info, uint8 offset, uint8 size, uint32 value) 43e404297eSAxel Dörfler { 44e404297eSAxel Dörfler gPCI->write_pci_config(info->bus, info->device, info->function, offset, size, value); 45e404297eSAxel Dörfler } 46e404297eSAxel Dörfler 47e404297eSAxel Dörfler #endif /* DRIVER_H */ 48