comparison vidix/drivers/radeon_vid.c @ 8553:d952b097c720

correctly save and restore colorkey settings (based on patch by Svante Signell <svante.signell@telia.com>)
author alex
date Tue, 24 Dec 2002 17:40:57 +0000
parents 8996a4599a41
children 82ecba0b039b
comparison
equal deleted inserted replaced
8552:37dd9f68ab71 8553:d952b097c720
196 196
197 static void * radeon_mmio_base = 0; 197 static void * radeon_mmio_base = 0;
198 static void * radeon_mem_base = 0; 198 static void * radeon_mem_base = 0;
199 static int32_t radeon_overlay_off = 0; 199 static int32_t radeon_overlay_off = 0;
200 static uint32_t radeon_ram_size = 0; 200 static uint32_t radeon_ram_size = 0;
201 /* Restore on exit */
202 static uint32_t SAVED_OV0_GRAPHICS_KEY_CLR = 0;
203 static uint32_t SAVED_OV0_GRAPHICS_KEY_MSK = 0;
204 static uint32_t SAVED_OV0_VID_KEY_CLR = 0;
205 static uint32_t SAVED_OV0_VID_KEY_MSK = 0;
206 static uint32_t SAVED_OV0_KEY_CNTL = 0;
201 207
202 #define GETREG(TYPE,PTR,OFFZ) (*((volatile TYPE*)((PTR)+(OFFZ)))) 208 #define GETREG(TYPE,PTR,OFFZ) (*((volatile TYPE*)((PTR)+(OFFZ))))
203 #define SETREG(TYPE,PTR,OFFZ,VAL) (*((volatile TYPE*)((PTR)+(OFFZ))))=VAL 209 #define SETREG(TYPE,PTR,OFFZ,VAL) (*((volatile TYPE*)((PTR)+(OFFZ))))=VAL
204 210
205 #define INREG8(addr) GETREG(uint8_t,(uint32_t)(radeon_mmio_base),addr) 211 #define INREG8(addr) GETREG(uint8_t,(uint32_t)(radeon_mmio_base),addr)
930 radeon_vid_make_default(); 936 radeon_vid_make_default();
931 printf(RADEON_MSG" Video memory = %uMb\n",radeon_ram_size/0x100000); 937 printf(RADEON_MSG" Video memory = %uMb\n",radeon_ram_size/0x100000);
932 err = mtrr_set_type(pci_info.base0,radeon_ram_size,MTRR_TYPE_WRCOMB); 938 err = mtrr_set_type(pci_info.base0,radeon_ram_size,MTRR_TYPE_WRCOMB);
933 if(!err) printf(RADEON_MSG" Set write-combining type of video memory\n"); 939 if(!err) printf(RADEON_MSG" Set write-combining type of video memory\n");
934 940
941 radeon_fifo_wait(3);
942 SAVED_OV0_GRAPHICS_KEY_CLR = INREG(OV0_GRAPHICS_KEY_CLR);
943 SAVED_OV0_GRAPHICS_KEY_MSK = INREG(OV0_GRAPHICS_KEY_MSK);
944 SAVED_OV0_VID_KEY_CLR = INREG(OV0_VID_KEY_CLR);
945 SAVED_OV0_VID_KEY_MSK = INREG(OV0_VID_KEY_MSK);
946 SAVED_OV0_KEY_CNTL = INREG(OV0_KEY_CNTL);
947 printf(RADEON_MSG" Saved overlay colorkey settings\n");
948
935 #ifdef RADEON 949 #ifdef RADEON
936 switch(def_cap.device_id) 950 switch(def_cap.device_id)
937 { 951 {
938 case DEVICE_ATI_RADEON_QW: 952 case DEVICE_ATI_RADEON_QW:
939 case DEVICE_ATI_RADEON_MOBILITY_M6: 953 case DEVICE_ATI_RADEON_MOBILITY_M6:
961 975
962 void vixDestroy( void ) 976 void vixDestroy( void )
963 { 977 {
964 /* remove colorkeying */ 978 /* remove colorkeying */
965 radeon_fifo_wait(3); 979 radeon_fifo_wait(3);
966 OUTREG(OV0_GRAPHICS_KEY_CLR, 0); 980 OUTREG(OV0_GRAPHICS_KEY_CLR, SAVED_OV0_GRAPHICS_KEY_CLR);
967 OUTREG(OV0_GRAPHICS_KEY_MSK, 0); 981 OUTREG(OV0_GRAPHICS_KEY_MSK, SAVED_OV0_GRAPHICS_KEY_MSK);
968 OUTREG(OV0_VID_KEY_CLR, 0); 982 OUTREG(OV0_VID_KEY_CLR, SAVED_OV0_VID_KEY_CLR);
969 OUTREG(OV0_VID_KEY_MSK, 0); 983 OUTREG(OV0_VID_KEY_MSK, SAVED_OV0_VID_KEY_MSK);
970 OUTREG(OV0_KEY_CNTL, 0); 984 OUTREG(OV0_KEY_CNTL, SAVED_OV0_KEY_CNTL);
985 printf(RADEON_MSG" Restored overlay colorkey settings\n");
971 986
972 unmap_phys_mem(radeon_mem_base,radeon_ram_size); 987 unmap_phys_mem(radeon_mem_base,radeon_ram_size);
973 unmap_phys_mem(radeon_mmio_base,0xFFFF); 988 unmap_phys_mem(radeon_mmio_base,0xFFFF);
974 } 989 }
975 990