All of lore.kernel.org
 help / color / mirror / Atom feed
* KT 400 ATI-Only Patch for AGP 8x
@ 2003-06-19  0:06 Gregor Essers
  0 siblings, 0 replies; only message in thread
From: Gregor Essers @ 2003-06-19  0:06 UTC (permalink / raw)
  To: linux-kernel

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

Hi all, 

long searches have bring me to a thread on rage3d.com, and someone there has 
patched the Ati-Drivers from schneider-digital.de (13.5.2003).

I home that can help :)

Regards 

Gregor Essers

[-- Attachment #2: fglrx-glc22-4.2.0-2.5.1.i586-kt400agp3.patch --]
[-- Type: text/x-diff, Size: 4461 bytes --]

--- build_mod/agp.h	2002-11-27 14:53:19.000000000 -0500
+++ build_mod_kt400/agp.h	2003-02-10 15:19:33.000000000 -0500
@@ -47,8 +47,9 @@
 #define _FGL_AGP_H
 
 // build config defines
+#ifndef VIA_KT400_AGP3
 #define FGL_USE_AGPV3_OFFICIAL_ENABLE       /* use offical AGP V3 code */
-
+#endif
 // helper defines - for any public source of firegl code tree.
 
 // min/max defines taken from include/linux/kernel.h of linux-2.4.10-pre9
@@ -837,6 +838,12 @@
 #define VIA_APSIZE      0x84
 #define VIA_ATTBASE     0x88
 
+/* VIA KT400 */
+#define VIA_AGP3_GARTCTRL 0x90
+#define VIA_AGP3_APSIZE	  0x94
+#define VIA_AGP3_ATTBASE  0x98
+#define VIA_AGPSEL        0xfd
+
 /* SiS registers */
 #define SIS_APBASE      0x10
 #define SIS_ATTBASE     0x90
--- build_mod/agpgart_be.c	2002-11-27 14:53:19.000000000 -0500
+++ build_mod_kt400/agpgart_be.c	2003-02-10 15:21:09.000000000 -0500
@@ -2561,6 +2561,8 @@
     (void) pdev; /* unused */
 }
 
+#ifndef VIA_KT400_AGP3
+
 static int via_fetch_size(void)
 {
 	int i;
@@ -2619,6 +2621,63 @@
 	pci_write_config_dword(agp_bridge.dev, VIA_GARTCTRL, 0x0000000f);
 }
 
+#else
+
+static int via_fetch_size(void)
+{
+	int i;
+	u16 temp;
+	struct aper_size_info_16 *values;
+
+	values = A_SIZE_16(agp_bridge.aperture_sizes);
+	pci_read_config_word(agp_bridge.dev, VIA_AGP3_APSIZE, &temp);
+	for (i = 0; i < agp_bridge.num_aperture_sizes; i++) {
+		if (temp == values[i].size_value) {
+			agp_bridge.previous_size =
+			agp_bridge.current_size = (void *) (values + i);
+			agp_bridge.aperture_size_idx = i;
+			return values[i].size;
+		}
+	}
+	return 0;
+}
+
+static int via_configure(void)
+{
+	u32 temp;
+	struct aper_size_info_16 *current_size;
+    
+	current_size = A_SIZE_16(agp_bridge.current_size);
+
+	/* address to map too */
+	pci_read_config_dword(agp_bridge.dev, VIA_APBASE, &temp);
+	agp_bridge.gart_bus_addr = (temp & PCI_BASE_ADDRESS_MEM_MASK);
+
+	/* attbase - aperture GATT base */
+	pci_write_config_dword(agp_bridge.dev, VIA_AGP3_ATTBASE,
+		agp_bridge.gatt_bus_addr & 0xfffff000);
+	return 0;
+}
+
+static void via_cleanup(void)
+{
+	struct aper_size_info_16 *previous_size;
+
+	previous_size = A_SIZE_16(agp_bridge.previous_size);
+	pci_write_config_byte(agp_bridge.dev, VIA_APSIZE, previous_size->size_value);
+}
+
+static void via_tlbflush(agp_memory * mem)
+{
+	u32 temp;
+
+	pci_read_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, &temp);
+	pci_write_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, temp & ~(1<<7));
+	pci_write_config_dword(agp_bridge.dev, VIA_AGP3_GARTCTRL, temp);
+}
+
+#endif
+
 static unsigned long via_mask_memory(unsigned long addr, int type)
 {
 	/* Memory type is ignored */
@@ -2626,6 +2685,8 @@
 	return addr | agp_bridge.masks[0].mask;
 }
 
+#ifndef VIA_KT400_AGP3
+
 static struct aper_size_info_8 via_generic_sizes[7] =
 {
 	{256, 65536, 6, 0},
@@ -2637,6 +2698,24 @@
 	{4, 1024, 0, 252}
 };
 
+#else
+
+static struct aper_size_info_16 via_generic_sizes[11] =
+{
+	{ 4,     1024,  0, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4|1<<3|1<<2|1<<1|1<<0 },
+	{ 8,     2048,  1, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4|1<<3|1<<2|1<<1},
+	{ 16,    4096,  2, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4|1<<3|1<<2},
+	{ 32,    8192,  3, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4|1<<3},
+	{ 64,   16384,  4, 1<<11|1<<10|1<<9|1<<8|1<<5|1<<4},
+	{ 128,  32768,  5, 1<<11|1<<10|1<<9|1<<8|1<<5},
+	{ 256,  65536,  6, 1<<11|1<<10|1<<9|1<<8},
+	{ 512,  131072, 7, 1<<11|1<<10|1<<9},
+	{ 1024, 262144, 8, 1<<11|1<<10},
+	{ 2048, 524288, 9, 1<<11}	/* 2GB <- Max supported */
+};
+
+#endif
+
 static struct gatt_mask via_generic_masks[] =
 {
 	{0x00000000, 0}
@@ -2648,7 +2727,11 @@
 	agp_bridge.num_of_masks = 1;
 	agp_bridge.aperture_sizes = (void *) via_generic_sizes;
 	agp_bridge.size_type = U8_APER_SIZE;
+#ifndef VIA_KT400_AGP3   
 	agp_bridge.num_aperture_sizes = 7;
+#else 
+	agp_bridge.num_aperture_sizes = 11;
+#endif   
 	agp_bridge.dev_private_data = NULL;
 	agp_bridge.needs_scratch_page = FALSE;
 	agp_bridge.configure = via_configure;
--- build_mod/make.sh	2002-11-27 14:53:19.000000000 -0500
+++ build_mod_kt400/make.sh	2003-02-08 22:44:23.000000000 -0500
@@ -781,7 +781,7 @@
 
 # ==============================================================
 # defines for all targets
-def_for_all="-DATI_AGP_HOOK -DATI -DFGL -D${target_define} -DFGL_CUSTOM_MODULE"
+def_for_all="-DATI_AGP_HOOK -DATI -DFGL -D${target_define} -DFGL_CUSTOM_MODULE -DVIA_KT400_AGP3"
 
 
 # ==============================================================

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

only message in thread, other threads:[~2003-06-18 23:52 UTC | newest]

Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2003-06-19  0:06 KT 400 ATI-Only Patch for AGP 8x Gregor Essers

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.