1e404297eSAxel Dörfler /* 2*b3be7a41SAxel Dörfler * Copyright 2006-2009, 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*b3be7a41SAxel Dörfler #include <kernel/lock.h> 16*b3be7a41SAxel Dörfler 174955c11bSAxel Dörfler #include "intel_extreme_private.h" 184955c11bSAxel Dörfler 19e404297eSAxel Dörfler 20e404297eSAxel Dörfler // PCI Communications 21e404297eSAxel Dörfler 22e404297eSAxel Dörfler #define read8(address) (*((volatile uint8*)(address))) 23e404297eSAxel Dörfler #define read16(address) (*((volatile uint16*)(address))) 24e404297eSAxel Dörfler #define read32(address) (*((volatile uint32*)(address))) 254dfa9e42SAxel Dörfler #define write8(address, data) (*((volatile uint8*)(address)) = (data)) 26e404297eSAxel Dörfler #define write16(address, data) (*((volatile uint16*)(address)) = (data)) 27e404297eSAxel Dörfler #define write32(address, data) (*((volatile uint32*)(address)) = (data)) 28e404297eSAxel Dörfler 29e404297eSAxel Dörfler 30e404297eSAxel Dörfler extern char* gDeviceNames[]; 31e404297eSAxel Dörfler extern intel_info* gDeviceInfo[]; 32e404297eSAxel Dörfler extern pci_module_info* gPCI; 331c34b9b1SAxel Dörfler extern agp_gart_module_info* gGART; 34*b3be7a41SAxel Dörfler extern mutex gLock; 35e404297eSAxel Dörfler 36e404297eSAxel Dörfler 37e404297eSAxel Dörfler static inline uint32 38e404297eSAxel Dörfler get_pci_config(pci_info* info, uint8 offset, uint8 size) 39e404297eSAxel Dörfler { 40*b3be7a41SAxel Dörfler return gPCI->read_pci_config(info->bus, info->device, info->function, 41*b3be7a41SAxel Dörfler offset, size); 42e404297eSAxel Dörfler } 43e404297eSAxel Dörfler 44e404297eSAxel Dörfler 45e404297eSAxel Dörfler static inline void 46e404297eSAxel Dörfler set_pci_config(pci_info* info, uint8 offset, uint8 size, uint32 value) 47e404297eSAxel Dörfler { 48*b3be7a41SAxel Dörfler gPCI->write_pci_config(info->bus, info->device, info->function, offset, 49*b3be7a41SAxel Dörfler size, value); 50e404297eSAxel Dörfler } 51e404297eSAxel Dörfler 52e404297eSAxel Dörfler #endif /* DRIVER_H */ 53