00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #include <asm/types.h>
00022
00023 typedef __u8 uint8;
00024 typedef __u32 uint32;
00025
00026
00027 static inline void
00028 mga_out8(volatile uint8 *mmioaddr, uint8 value, uint32 reg)
00029 {
00030 *((uint8*)(mmioaddr+reg)) = value;
00031 }
00032
00033 static inline void
00034 mga_out32(volatile uint8 *mmioaddr, uint32 value, uint32 reg)
00035 {
00036 *((uint32*)(mmioaddr+reg)) = value;
00037 }
00038
00039 static inline volatile uint8
00040 mga_in8(volatile uint8 *mmioaddr, uint32 reg)
00041 {
00042 return *((uint8*)(mmioaddr+reg));
00043 }
00044
00045 static inline volatile uint32
00046 mga_in32(volatile uint8 *mmioaddr, uint32 reg)
00047 {
00048 return *((uint32*)(mmioaddr+reg));
00049 }
00050
00051
00052 static int grodis;
00053
00054 extern int fifos;
00055
00056
00057 static inline void
00058 mga_waitfifo(volatile uint8 *mmioaddr, int space)
00059 {
00060
00061 while (mga_in8(mmioaddr, FIFOSTATUS) < space) {
00062 grodis = 0;
00063 }
00064 }
00065
00066
00067
00068 static inline void
00069 mga_waitidle(volatile uint8 *mmioaddr)
00070 {
00071 while (mga_in32(mmioaddr, STATUS) & 0x10000) {
00072 grodis = 0;
00073 }
00074 }
00075