diff drivers/radeon/radeon_vid.c @ 3198:5eae81895171

Probably ugly attempt to fix Rage128 problems
author nick
date Thu, 29 Nov 2001 17:07:52 +0000
parents 3c5ad8d5ac00
children 7cec2396bde3
line wrap: on
line diff
--- a/drivers/radeon/radeon_vid.c	Thu Nov 29 17:06:58 2001 +0000
+++ b/drivers/radeon/radeon_vid.c	Thu Nov 29 17:07:52 2001 +0000
@@ -74,7 +74,11 @@
 
 
 MODULE_AUTHOR("Nick Kurshev <nickols_k@mail.ru>");
-MODULE_DESCRIPTION("Accelerated YUV BES driver for Rage128/Radeons. Version: "RADEON_VID_VERSION);
+#ifdef RAGE128
+MODULE_DESCRIPTION("Accelerated YUV BES driver for Rage128. Version: "RADEON_VID_VERSION);
+#else
+MODULE_DESCRIPTION("Accelerated YUV BES driver for Radeons. Version: "RADEON_VID_VERSION);
+#endif
 #ifdef MODULE_LICENSE
 MODULE_LICENSE("GPL");
 #endif
@@ -85,6 +89,9 @@
 #else
 #define RVID_MSG "radeon_vid: "
 #define X_ADJUST 8
+#ifndef RADEON
+#define RADEON
+#endif
 #endif
 
 typedef struct bes_registers_s
@@ -211,11 +218,16 @@
 	case IMGFMT_I420: return("Planar I420");
 	case IMGFMT_IYUV: return("Planar IYUV");
 	case IMGFMT_CLPL: return("Planar CLPL");
+	case IMGFMT_Y800: return("Planar Y800");
+	case IMGFMT_Y8: return("Planar Y8");
+	case IMGFMT_IUYV: return("Packed IUYV");
+	case IMGFMT_IY41: return("Packed IY41");
 	case IMGFMT_IYU1: return("Packed IYU1");
 	case IMGFMT_IYU2: return("Packed IYU2");
 	case IMGFMT_UYVY: return("Packed UYVY");
 	case IMGFMT_UYNV: return("Packed UYNV");
 	case IMGFMT_cyuv: return("Packed CYUV");
+	case IMGFMT_Y422: return("Packed Y422");
 	case IMGFMT_YUY2: return("Packed YUY2");
 	case IMGFMT_YUNV: return("Packed YUNV");
 	case IMGFMT_YVYU: return("Packed YVYU");
@@ -228,7 +240,7 @@
 	case IMGFMT_CLJR: return("Packed CLJR");
 	case IMGFMT_YUVP: return("Packed YUVP");
 	case IMGFMT_UYVP: return("Packed UYVP");
-/*	case IMGFMT_MPEGPES: return("Mpeg PES");*/
+	case IMGFMT_MPEGPES: return("Mpeg PES");
     }
     return("Unknown");
 }
@@ -307,7 +319,7 @@
     OUTREG(OV0_P1_X_START_END,		besr.p1_x_start_end);
     OUTREG(OV0_P2_X_START_END,		besr.p2_x_start_end);
     OUTREG(OV0_P3_X_START_END,		besr.p3_x_start_end);
-#if 1
+#if 0
     OUTREG(OV0_BASE_ADDR,		besr.base_addr);
 #endif
     OUTREG(OV0_VID_BUF0_BASE_ADRS,	besr.vid_buf0_base_adrs);
@@ -326,6 +338,9 @@
                 SCALER_ADAPTIVE_DEINT |
                 SCALER_SMART_SWITCH |
                 SCALER_HORZ_PICK_NEAREST;
+#ifdef RAGE128
+    bes_flags |= SCALER_BURST_PER_PLANE;
+#endif
     switch(besr.fourcc)
     {
         case IMGFMT_RGB15:
@@ -482,7 +497,7 @@
     else
     {
       besr.vid_buf0_base_adrs = radeon_overlay_off;
-      besr.vid_buf0_base_adrs += ((left & ~7) << 1)&0xfffffff0;
+      besr.vid_buf0_base_adrs += ((left & ~7) << 1)&VIF_BUF0_BASE_ADRS_MASK;
       besr.vid_buf1_base_adrs = besr.vid_buf0_base_adrs;
       besr.vid_buf2_base_adrs = besr.vid_buf0_base_adrs;
     }
@@ -587,7 +602,6 @@
 				return -EFAULT;
 			}
 
-                        /* FIXME: Fake of G400 ;) or would be better G200 ??? */
 			radeon_config.card_type = 0;
 			radeon_config.ram_size = radeon_ram_size;
 			radeon_overlay_off = radeon_ram_size*0x100000 - radeon_config.frame_size*radeon_config.num_frames;
@@ -694,12 +708,12 @@
  { PCI_DEVICE_ID_ATI_RAGE128_RN, "R128 RN" },
  { PCI_DEVICE_ID_ATI_RAGE128_RO, "R128 RO" },
 /* Rage128 M3 */
- { PCI_DEVICE_ID_ATI_RAGE128_LE, "R128 LE" },
- { PCI_DEVICE_ID_ATI_RAGE128_LF, "R128 LF" },
+ { PCI_DEVICE_ID_ATI_RAGE128_LE, "R128 M3 LE" },
+ { PCI_DEVICE_ID_ATI_RAGE128_LF, "R128 M3 LF" },
 /* Rage128 Pro Ultra */
- { PCI_DEVICE_ID_ATI_RAGE128_U1, "R128 U1" },
- { PCI_DEVICE_ID_ATI_RAGE128_U2, "R128 U2" },
- { PCI_DEVICE_ID_ATI_RAGE128_U3, "R128 U3" }
+ { PCI_DEVICE_ID_ATI_RAGE128_U1, "R128Pro U1" },
+ { PCI_DEVICE_ID_ATI_RAGE128_U2, "R128Pro U2" },
+ { PCI_DEVICE_ID_ATI_RAGE128_U3, "R128Pro U3" }
 #else
 /* Radeons (indeed: Rage 256 Pro ;) */
  { PCI_DEVICE_ID_RADEON_QD, "Radeon QD " },