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