xref: /haiku/headers/private/graphics/radeon/mmio.h (revision 1deede7388b04dbeec5af85cae7164735ea9e70d)
1 /*
2 	Copyright (c) 2002, Thomas Kurschel
3 
4 
5 	Part of Radeon driver
6 
7 	Macros for easier memory mapped I/O access
8 */
9 
10 #ifndef _MMIO_H
11 #define _MMIO_H
12 
13 // read 8-bit register
14 #define INREG8( regs, addr ) (*(regs + (addr)))
15 // write 8-bit register
16 #define OUTREG8( regs, addr, val ) do { *(regs + (addr)) = (val); } while( 0 )
17 // read 32-bit register
18 #define INREG( regs, addr ) (*((vuint32 *)(regs + (addr))))
19 // write 32-bit register
20 #define OUTREG( regs, addr, val ) do { *(vuint32 *)(regs + (addr)) = (val); } while( 0 )
21 // write partial 32-bit register, keeping bits "mask"
22 #define OUTREGP( regs, addr, val, mask )                                  \
23 	do {                                                                  \
24 		uint32 tmp = INREG( (regs), (addr) );                             \
25 		tmp &= (mask);                                                    \
26 		tmp |= (val) & ~(mask);                                           \
27 		OUTREG( (regs), (addr), tmp );                                    \
28 	} while (0)
29 
30 #endif
31