xref: /haiku/src/add-ons/kernel/drivers/graphics/intel_extreme/driver.h (revision b3be7a4135863bcf10210ddcbb879bd822ee3a17)
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