1/* 2 * Copyright 2006-2009, Haiku, Inc. All Rights Reserved. 3 * Distributed under the terms of the MIT License. 4 * 5 * Authors: 6 * Axel D��rfler, axeld@pinc-software.de 7 */ 8#ifndef DRIVER_H 9#define DRIVER_H 10 11 12#include <KernelExport.h> 13#include <PCI.h> 14 15#include <kernel/lock.h> 16 17#include "intel_extreme_private.h" 18 19 20extern char* gDeviceNames[]; 21extern intel_info* gDeviceInfo[]; 22extern pci_module_info* gPCI; 23extern agp_gart_module_info* gGART; 24extern mutex gLock; 25 26 27static inline uint32 28get_pci_config(pci_info* info, uint8 offset, uint8 size) 29{ 30 return gPCI->read_pci_config(info->bus, info->device, info->function, 31 offset, size); 32} 33 34 35static inline void 36set_pci_config(pci_info* info, uint8 offset, uint8 size, uint32 value) 37{ 38 gPCI->write_pci_config(info->bus, info->device, info->function, offset, 39 size, value); 40} 41 42 43static inline uint16 44read16(intel_info &info, uint32 encodedRegister) 45{ 46 return *(volatile uint16*)(info.registers 47 + info.shared_info->register_blocks[REGISTER_BLOCK(encodedRegister)] 48 + REGISTER_REGISTER(encodedRegister)); 49} 50 51 52static inline uint32 53read32(intel_info &info, uint32 encodedRegister) 54{ 55 return *(volatile uint32*)(info.registers 56 + info.shared_info->register_blocks[REGISTER_BLOCK(encodedRegister)] 57 + REGISTER_REGISTER(encodedRegister)); 58} 59 60 61static inline void 62write16(intel_info &info, uint32 encodedRegister, uint16 value) 63{ 64 *(volatile uint16*)(info.registers 65 + info.shared_info->register_blocks[REGISTER_BLOCK(encodedRegister)] 66 + REGISTER_REGISTER(encodedRegister)) = value; 67} 68 69 70static inline void 71write32(intel_info &info, uint32 encodedRegister, uint32 value) 72{ 73 *(volatile uint32*)(info.registers 74 + info.shared_info->register_blocks[REGISTER_BLOCK(encodedRegister)] 75 + REGISTER_REGISTER(encodedRegister)) = value; 76} 77 78#endif /* DRIVER_H */ 79