* 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.