linux-fbdev.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [PATCH] atyfb: disable linear aperture register access
@ 2004-02-14 23:47 Ville Syrjälä
  0 siblings, 0 replies; only message in thread
From: Ville Syrjälä @ 2004-02-14 23:47 UTC (permalink / raw)
  To: linux-fbdev-devel

[-- Attachment #1: Type: text/plain, Size: 250 bytes --]

This atyfb patch disables register access through the linear aperture if 
the auxiliary aperture is used. This allows access to the full 8 MB of 
memory. Tested on 3D Rage LT Pro.

-- 
Ville Syrjälä
syrjala@sci.fi
http://www.sci.fi/~syrjala/

[-- Attachment #2: atyfb_reg_aperture.patch --]
[-- Type: text/plain, Size: 3860 bytes --]

diff -urN linux-2.4.24/drivers/video/aty/atyfb.h linux-2.4.24/drivers/video/aty/atyfb.h
--- linux-2.4.24/drivers/video/aty/atyfb.h	2004-02-15 01:25:31.000000000 +0200
+++ linux-2.4.24/drivers/video/aty/atyfb.h	2004-02-15 01:23:19.000000000 +0200
@@ -179,6 +179,7 @@
     unsigned char *save_framebuffer;
     unsigned long save_pll[64];
 #endif
+    int aux_app;
 };
 
 
diff -urN linux-2.4.24/drivers/video/aty/atyfb_base.c linux-2.4.24/drivers/video/aty/atyfb_base.c
--- linux-2.4.24/drivers/video/aty/atyfb_base.c	2004-02-15 01:25:52.000000000 +0200
+++ linux-2.4.24/drivers/video/aty/atyfb_base.c	2004-02-15 01:24:18.000000000 +0200
@@ -1006,11 +1006,13 @@
             aty_st_le32(BUS_CNTL, 0x680000f9, info);
         }  else if (M64_HAS(MOBIL_BUS)) {
             aty_st_le32(DAC_CNTL, 0x80010102, info);
-            aty_st_le32(BUS_CNTL, 0x7b33a040, info);
+            aty_st_le32(BUS_CNTL, 0x7b33a040 |
+                        (info->aux_app ? BUS_APER_REG_DIS : 0), info);
         } else {
             /* GT */
             aty_st_le32(DAC_CNTL, 0x86010102, info);
-            aty_st_le32(BUS_CNTL, 0x7b23a040, info);
+            aty_st_le32(BUS_CNTL, 0x7b23a040 |
+                        (info->aux_app ? BUS_APER_REG_DIS : 0), info);
             aty_st_le32(EXT_MEM_CNTL,
                         aty_ld_le32(EXT_MEM_CNTL, info) | 0x5000001, info);
         }
@@ -2263,13 +2265,20 @@
 
     /*
      *  Last page of 8 MB (4 MB on ISA) aperture is MMIO
-     *  FIXME: we should use the auxiliary aperture instead so we can access
-     *  the full 8 MB of video RAM on 8 MB boards
      */
-    if (info->total_vram == 0x800000 ||
+    if ((!info->aux_app && info->total_vram == 0x800000) ||
         (info->bus_type == ISA && info->total_vram == 0x400000))
             info->total_vram -= GUI_RESERVE;
 
+    /*
+     *  Disable register access through the linear aperture
+     *  if the auxiliary aperture is used so we can access
+     *  the full 8 MB of video RAM on 8 MB boards.
+     */
+    if (info->aux_app)
+        aty_st_le32(BUS_CNTL, aty_ld_le32(BUS_CNTL, info) |
+                    BUS_APER_REG_DIS, info);
+
     /* Clear the video memory */
     fb_memset((void *)info->frame_buffer, 0, info->total_vram);
 
@@ -2439,7 +2448,6 @@
         return -ENXIO;
 #else
     u16 tmp;
-    int aux_app;
     unsigned long raddr;
 #endif
 #if defined(CONFIG_FB_ATY_GENERIC_LCD)
@@ -2687,13 +2695,12 @@
 
 #else /* __sparc__ */
 
-            aux_app = 0;
             raddr = addr + 0x7ff000UL;
             rrp = &pdev->resource[2];
             if ((rrp->flags & IORESOURCE_MEM)
                 && request_mem_region(rrp->start, rrp->end - rrp->start + 1,
                                       "atyfb")) {
-                    aux_app = 1;
+                    info->aux_app = 1;
                     raddr = rrp->start;
                     printk(KERN_INFO "atyfb: using auxiliary register aperture\n");
             }
@@ -2707,8 +2714,8 @@
                     return -ENOMEM;
             }
 
-            info->ati_regbase_phys += aux_app? 0x400: 0xc00;
-            info->ati_regbase += aux_app? 0x400: 0xc00;
+            info->ati_regbase_phys += info->aux_app ? 0x400 : 0xc00;
+            info->ati_regbase += info->aux_app ? 0x400 : 0xc00;
 
             /*
              * Enable memory-space accesses using config-space
diff -urN linux-2.4.24/drivers/video/aty/mach64.h linux-2.4.24/drivers/video/aty/mach64.h
--- linux-2.4.24/drivers/video/aty/mach64.h	2004-02-15 01:25:31.000000000 +0200
+++ linux-2.4.24/drivers/video/aty/mach64.h	2004-02-15 01:13:09.000000000 +0200
@@ -635,6 +635,7 @@
 /* Mach64 engine bit constants - these are typically ORed together */
 
 /* BUS_CNTL register constants */
+#define BUS_APER_REG_DIS	0x00000010
 #define BUS_FIFO_ERR_ACK	0x00200000
 #define BUS_HOST_ERR_ACK	0x00800000
 

^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2004-02-14 23:50 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2004-02-14 23:47 [PATCH] atyfb: disable linear aperture register access Ville Syrjälä

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).