* radeonfb and newer radeons (Patch)
@ 2006-07-22 15:04 Claudio Ciccani
2006-07-22 17:20 ` Geert Uytterhoeven
0 siblings, 1 reply; 3+ messages in thread
From: Claudio Ciccani @ 2006-07-22 15:04 UTC (permalink / raw)
To: linux-fbdev-devel
[-- Attachment #1: Type: text/plain, Size: 490 bytes --]
Hi,
the attached patch fixes some issues with R300 based chipsets and
adds support for a number of new devices (mostly X800/X850).
It also enlarges the mmio size to 0x8000 because many 3d registers
of the R300 are located after offset 0x4000 and we need them for
DirectFB (DRI needs too).
The patch applies to linux-2.6.18-rc2, hope there have not been changes
in the meanwhile.
--
Regards,
Claudio Ciccani
klan@users.sf.net
http://directfb.org
http://sf.net/projects/php-directfb
[-- Attachment #2: radeonfb-r300fix-2.6.18-rc2.patch --]
[-- Type: text/x-patch, Size: 17950 bytes --]
--- linux-2.6.18-rc2/drivers/video/aty/radeon_accel.c 2006-01-03 04:21:10.000000000 +0100
+++ /usr/src/linux-2.6.18-rc2/drivers/video/aty/radeon_accel.c 2006-07-22 12:49:43.000000000 +0200
@@ -203,9 +203,7 @@
host_path_cntl = INREG(HOST_PATH_CNTL);
rbbm_soft_reset = INREG(RBBM_SOFT_RESET);
- if (rinfo->family == CHIP_FAMILY_R300 ||
- rinfo->family == CHIP_FAMILY_R350 ||
- rinfo->family == CHIP_FAMILY_RV350) {
+ if (IS_R300_VARIANT(rinfo)) {
u32 tmp;
OUTREG(RBBM_SOFT_RESET, (rbbm_soft_reset |
@@ -241,9 +239,7 @@
INREG(HOST_PATH_CNTL);
OUTREG(HOST_PATH_CNTL, host_path_cntl);
- if (rinfo->family != CHIP_FAMILY_R300 ||
- rinfo->family != CHIP_FAMILY_R350 ||
- rinfo->family != CHIP_FAMILY_RV350)
+ if (IS_R300_VARIANT(rinfo))
OUTREG(RBBM_SOFT_RESET, rbbm_soft_reset);
OUTREG(CLOCK_CNTL_INDEX, clock_cntl_index);
@@ -254,16 +250,14 @@
{
unsigned long temp;
- /* disable 3D engine */
- OUTREG(RB3D_CNTL, 0);
-
radeonfb_engine_reset(rinfo);
radeon_fifo_wait (1);
- if ((rinfo->family != CHIP_FAMILY_R300) &&
- (rinfo->family != CHIP_FAMILY_R350) &&
- (rinfo->family != CHIP_FAMILY_RV350))
+ if (IS_R300_VARIANT(rinfo)) {
+ //OUTREG(RB2D_DSTCACHE_MODE, 1<<17);
+ } else {
OUTREG(RB2D_DSTCACHE_MODE, 0);
+ }
radeon_fifo_wait (3);
/* We re-read MC_FB_LOCATION from card as it can have been
--- linux-2.6.18-rc2/drivers/video/aty/radeon_base.c 2006-07-22 12:41:58.000000000 +0200
+++ /usr/src/linux-2.6.18-rc2/drivers/video/aty/radeon_base.c 2006-07-22 14:24:30.000000000 +0200
@@ -91,7 +91,10 @@
#include "../edid.h" // MOVE THAT TO include/video
#include "ati_ids.h"
-#include "radeonfb.h"
+#include "radeonfb.h"
+
+/* Sorry, we have to limit video ram to 128M */
+#define MAX_VRAM (128*1024*1024)
#define MAX_MAPPED_VRAM (2048*2048*4)
#define MIN_MAPPED_VRAM (1024*768*1)
@@ -177,6 +180,7 @@
/* 9600/FireGL T2 */
CHIP_DEF(PCI_CHIP_RV350_AP, RV350, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_RV350_AQ, RV350, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_RV350_AU, RV350, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_RV360_AR, RV350, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_RV350_AS, RV350, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_RV350_AT, RV350, CHIP_HAS_CRTC2),
@@ -190,7 +194,7 @@
CHIP_DEF(PCI_CHIP_R350_NI, R350, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R360_NJ, R350, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R350_NK, R350, CHIP_HAS_CRTC2),
- /* Newer stuff */
+ /* X300/X600 */
CHIP_DEF(PCI_CHIP_RV380_3E50, RV380, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_RV380_3E54, RV380, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_RV380_3150, RV380, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
@@ -201,6 +205,19 @@
CHIP_DEF(PCI_CHIP_RV370_5B65, RV380, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_RV370_5460, RV380, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
CHIP_DEF(PCI_CHIP_RV370_5464, RV380, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ /* X700 */
+ CHIP_DEF(PCI_CHIP_RV410_VJ, RV410, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ CHIP_DEF(PCI_CHIP_RV410_VK, RV410, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ CHIP_DEF(PCI_CHIP_RV410_VO, RV410, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ CHIP_DEF(PCI_CHIP_RV410_VR, RV410, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ CHIP_DEF(PCI_CHIP_RV410_VS, RV410, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ CHIP_DEF(PCI_CHIP_RV410_5E48, RV410, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_RV410_5E4A, RV410, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_RV410_5E4B, RV410, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_RV410_5E4C, RV410, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_RV410_5E4D, RV410, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_RV410_5E4F, RV410, CHIP_HAS_CRTC2),
+ /* X800/X850 */
CHIP_DEF(PCI_CHIP_R420_JH, R420, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R420_JI, R420, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R420_JJ, R420, CHIP_HAS_CRTC2),
@@ -209,6 +226,8 @@
CHIP_DEF(PCI_CHIP_R420_JM, R420, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R420_JN, R420, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
CHIP_DEF(PCI_CHIP_R420_JP, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R420_JO, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R420_JT, R420, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R423_UH, R420, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R423_UI, R420, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R423_UJ, R420, CHIP_HAS_CRTC2),
@@ -217,6 +236,24 @@
CHIP_DEF(PCI_CHIP_R423_UR, R420, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R423_UT, R420, CHIP_HAS_CRTC2),
CHIP_DEF(PCI_CHIP_R423_5D57, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R423_UP, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R423_5D49, R420, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ CHIP_DEF(PCI_CHIP_R423_5D4A, R420, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ CHIP_DEF(PCI_CHIP_R423_5D48, R420, CHIP_HAS_CRTC2 | CHIP_IS_MOBILITY),
+ CHIP_DEF(PCI_CHIP_R423_UO, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R423_UM, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R423_UN, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R423_UL, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_5D4C, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_5D50, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_5D4E, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_5D4F, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_5D52, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_5D4D, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_KJ, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_KK, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_KI, R420, CHIP_HAS_CRTC2),
+ CHIP_DEF(PCI_CHIP_R480_KL, R420, CHIP_HAS_CRTC2),
/* Original Radeon/7200 */
CHIP_DEF(PCI_CHIP_RADEON_QD, RADEON, 0),
CHIP_DEF(PCI_CHIP_RADEON_QE, RADEON, 0),
@@ -442,7 +479,7 @@
{
unsigned char ppll_div_sel;
unsigned Ns, Nm, M;
- unsigned sclk, mclk, tmp, ref_div;
+ unsigned sclk, mclk, tmp;
int hTotal, vTotal, num, denom, m, n;
unsigned long long hz, vclk;
long xtal;
@@ -514,7 +551,7 @@
radeon_pll_errata_after_index(rinfo);
n = (INPLL(PPLL_DIV_0 + ppll_div_sel) & 0x7ff);
- m = (INPLL(PPLL_REF_DIV) & 0x3ff);
+ m = rinfo->pll.ref_div;
num *= n;
denom *= m;
@@ -556,8 +593,6 @@
}
tmp = INPLL(M_SPLL_REF_FB_DIV);
- ref_div = INPLL(PPLL_REF_DIV) & 0x3ff;
-
Ns = (tmp & 0xff0000) >> 16;
Nm = (tmp & 0xff00) >> 8;
M = (tmp & 0xff);
@@ -566,7 +601,6 @@
/* we're done, hopefully these are sane values */
rinfo->pll.ref_clk = xtal;
- rinfo->pll.ref_div = ref_div;
rinfo->pll.sclk = sclk;
rinfo->pll.mclk = mclk;
@@ -578,6 +612,8 @@
*/
static void __devinit radeon_get_pllinfo(struct radeonfb_info *rinfo)
{
+ __u32 tmp;
+
/*
* In the case nothing works, these are defaults; they are mostly
* incomplete, however. It does provide ppll_max and _min values
@@ -635,8 +671,16 @@
rinfo->pll.ref_clk = 2700;
break;
}
- rinfo->pll.ref_div = INPLL(PPLL_REF_DIV) & PPLL_REF_DIV_MASK;
-
+ tmp = INPLL(PPLL_REF_DIV);
+ if (IS_R300_VARIANT(rinfo) || rinfo->family == CHIP_FAMILY_RS300)
+ rinfo->pll.ref_div = (tmp & R300_PPLL_REF_DIV_ACC_MASK) >> R300_PPLL_REF_DIV_ACC_SHIFT;
+ else
+ rinfo->pll.ref_div = (tmp & PPLL_REF_DIV_MASK);
+
+ printk(KERN_INFO "radeonfb: PLL RefDiv=%d (from regs)\n", rinfo->pll.ref_div);
+
+ if (rinfo->pll.ref_div == 0)
+ rinfo->pll.ref_div = 12;
#ifdef CONFIG_PPC_OF
/*
@@ -652,15 +696,39 @@
* Check out if we have an X86 which gave us some PLL informations
* and if yes, retrieve them
*/
- if (!force_measure_pll && rinfo->bios_seg) {
- u16 pll_info_block = BIOS_IN16(rinfo->fp_bios_start + 0x30);
-
- rinfo->pll.sclk = BIOS_IN16(pll_info_block + 0x08);
- rinfo->pll.mclk = BIOS_IN16(pll_info_block + 0x0a);
- rinfo->pll.ref_clk = BIOS_IN16(pll_info_block + 0x0e);
- rinfo->pll.ref_div = BIOS_IN16(pll_info_block + 0x10);
- rinfo->pll.ppll_min = BIOS_IN32(pll_info_block + 0x12);
- rinfo->pll.ppll_max = BIOS_IN32(pll_info_block + 0x16);
+ if (!force_measure_pll && rinfo->bios_seg && rinfo->fp_bios_start) {
+ u16 pll_info_block;
+
+ if ((BIOS_IN8(rinfo->fp_bios_start+4) == 'A' &&
+ BIOS_IN8(rinfo->fp_bios_start+5) == 'T' &&
+ BIOS_IN8(rinfo->fp_bios_start+6) == 'O' &&
+ BIOS_IN8(rinfo->fp_bios_start+7) == 'M') ||
+ (BIOS_IN8(rinfo->fp_bios_start+4) == 'M' &&
+ BIOS_IN8(rinfo->fp_bios_start+5) == 'O' &&
+ BIOS_IN8(rinfo->fp_bios_start+6) == 'T' &&
+ BIOS_IN8(rinfo->fp_bios_start+7) == 'A'))
+ {
+ printk(KERN_INFO "radeonfb: Detected ATOM BIOS\n");
+
+ pll_info_block = BIOS_IN16(BIOS_IN16(rinfo->fp_bios_start+32) + 12);
+
+ rinfo->pll.sclk = BIOS_IN32(pll_info_block + 0x08);
+ rinfo->pll.mclk = BIOS_IN32(pll_info_block + 0x0c);
+ rinfo->pll.ref_clk = BIOS_IN16(pll_info_block + 0x52);
+ /* no PLL ref div */
+ rinfo->pll.ppll_min = BIOS_IN16(pll_info_block + 0x4e);
+ rinfo->pll.ppll_max = BIOS_IN32(pll_info_block + 0x20);
+ }
+ else {
+ pll_info_block = BIOS_IN16(rinfo->fp_bios_start + 0x30);
+
+ rinfo->pll.sclk = BIOS_IN16(pll_info_block + 0x08);
+ rinfo->pll.mclk = BIOS_IN16(pll_info_block + 0x0a);
+ rinfo->pll.ref_clk = BIOS_IN16(pll_info_block + 0x0e);
+ rinfo->pll.ref_div = BIOS_IN16(pll_info_block + 0x10);
+ rinfo->pll.ppll_min = BIOS_IN32(pll_info_block + 0x12);
+ rinfo->pll.ppll_max = BIOS_IN32(pll_info_block + 0x16);
+ }
printk(KERN_INFO "radeonfb: Retrieved PLL infos from BIOS\n");
goto found;
@@ -837,7 +905,7 @@
if (rinfo->asleep)
return 0;
- radeon_fifo_wait(2);
+ radeon_engine_idle();
OUTREG(CRTC_OFFSET, ((var->yoffset * var->xres_virtual + var->xoffset)
* var->bits_per_pixel / 8) & ~7);
return 0;
@@ -1272,10 +1340,7 @@
radeon_pll_errata_after_data(rinfo);
/* Set PPLL ref. div */
- if (rinfo->family == CHIP_FAMILY_R300 ||
- rinfo->family == CHIP_FAMILY_RS300 ||
- rinfo->family == CHIP_FAMILY_R350 ||
- rinfo->family == CHIP_FAMILY_RV350) {
+ if (IS_R300_VARIANT(rinfo) || rinfo->family == CHIP_FAMILY_RS300) {
if (mode->ppll_ref_div & R300_PPLL_REF_DIV_ACC_MASK) {
/* When restoring console mode, use saved PPLL_REF_DIV
* setting.
@@ -1372,6 +1437,7 @@
OUTREG(CRTC_OFFSET_CNTL, 0);
OUTREG(CRTC_PITCH, mode->crtc_pitch);
OUTREG(SURFACE_CNTL, mode->surface_cntl);
+ OUTREG(DISP_MERGE_CNTL, 0xffff0000);
radeon_write_pll_regs(rinfo, mode);
@@ -1986,9 +2052,7 @@
u32 tmp;
/* framebuffer size */
- if ((rinfo->family == CHIP_FAMILY_RS100) ||
- (rinfo->family == CHIP_FAMILY_RS200) ||
- (rinfo->family == CHIP_FAMILY_RS300)) {
+ if (rinfo->is_IGP) {
u32 tom = INREG(NB_TOM);
tmp = ((((tom >> 16) - (tom & 0xffff) + 1) << 6) * 1024);
@@ -2013,8 +2077,9 @@
tmp = INREG(CONFIG_MEMSIZE);
}
- /* mem size is bits [28:0], mask off the rest */
- rinfo->video_ram = tmp & CONFIG_MEMSIZE_MASK;
+ rinfo->video_ram = tmp;
+ if (rinfo->video_ram > MAX_VRAM)
+ rinfo->video_ram = MAX_VRAM;
/*
* Hack to get around some busted production M6's
@@ -2273,25 +2338,26 @@
* archs who would store that elsewhere and/or could initialize
* more than one adapter during boot).
*/
- if (!rinfo->is_mobility)
+ if (!rinfo->is_mobility) {
radeon_map_ROM(rinfo, pdev);
-
- /*
- * On x86, the primary display on laptop may have it's BIOS
- * ROM elsewhere, try to locate it at the legacy memory hole.
- * We probably need to make sure this is the primary display,
- * but that is difficult without some arch support.
- */
+ }
+ else {
+ /*
+ * On x86, the primary display on laptop may have it's BIOS
+ * ROM elsewhere, try to locate it at the legacy memory hole.
+ * We probably need to make sure this is the primary display,
+ * but that is difficult without some arch support.
+ */
#ifdef CONFIG_X86
- if (rinfo->bios_seg == NULL)
radeon_find_mem_vbios(rinfo);
#endif
- /* If both above failed, try the BIOS ROM again for mobility
- * chips
- */
- if (rinfo->bios_seg == NULL && rinfo->is_mobility)
- radeon_map_ROM(rinfo, pdev);
+ /* If both above failed, try the BIOS ROM again for mobility
+ * chips
+ */
+ if (rinfo->bios_seg == NULL)
+ radeon_map_ROM(rinfo, pdev);
+ }
/* Get informations about the board's PLL */
radeon_get_pllinfo(rinfo);
@@ -2461,6 +2527,8 @@
if (!strncmp(this_opt, "noaccel", 7)) {
noaccel = 1;
+ } else if (!strncmp( this_opt, "default_dynclk:", 15)) {
+ default_dynclk = simple_strtoul((this_opt+15), NULL, 10);
} else if (!strncmp(this_opt, "mirror", 6)) {
mirror = 1;
} else if (!strncmp(this_opt, "force_dfp", 9)) {
--- linux-2.6.18-rc2/drivers/video/aty/ati_ids.h 2006-01-03 04:21:10.000000000 +0100
+++ /usr/src/linux-2.6.18-rc2/drivers/video/aty/ati_ids.h 2006-07-22 12:49:43.000000000 +0200
@@ -31,6 +31,7 @@
#define PCI_CHIP_RV360_AR 0x4152
#define PCI_CHIP_RV350_AS 0x4153
#define PCI_CHIP_RV350_AT 0x4154
+#define PCI_CHIP_RV350_AU 0x4155
#define PCI_CHIP_RV350_AV 0x4156
#define PCI_CHIP_MACH32 0x4158
#define PCI_CHIP_RS250_4237 0x4237
@@ -64,14 +65,20 @@
#define PCI_CHIP_RV250_Ie 0x4965
#define PCI_CHIP_RV250_If 0x4966
#define PCI_CHIP_RV250_Ig 0x4967
-#define PCI_CHIP_R420_JH 0x4A48
-#define PCI_CHIP_R420_JI 0x4A49
-#define PCI_CHIP_R420_JJ 0x4A4A
-#define PCI_CHIP_R420_JK 0x4A4B
-#define PCI_CHIP_R420_JL 0x4A4C
-#define PCI_CHIP_R420_JM 0x4A4D
-#define PCI_CHIP_R420_JN 0x4A4E
-#define PCI_CHIP_R420_JP 0x4A50
+#define PCI_CHIP_R420_JH 0x4A48
+#define PCI_CHIP_R420_JI 0x4A49
+#define PCI_CHIP_R420_JJ 0x4A4A
+#define PCI_CHIP_R420_JK 0x4A4B
+#define PCI_CHIP_R420_JL 0x4A4C
+#define PCI_CHIP_R420_JM 0x4A4D
+#define PCI_CHIP_R420_JN 0x4A4E
+#define PCI_CHIP_R420_JO 0x4A4F
+#define PCI_CHIP_R420_JP 0x4A50
+#define PCI_CHIP_R420_JT 0x4A54
+#define PCI_CHIP_R480_KI 0x4B49
+#define PCI_CHIP_R480_KJ 0x4B4A
+#define PCI_CHIP_R480_KK 0x4B4B
+#define PCI_CHIP_R480_KL 0x4B4C
#define PCI_CHIP_MACH64LB 0x4C42
#define PCI_CHIP_MACH64LD 0x4C44
#define PCI_CHIP_RAGE128LE 0x4C45
@@ -178,20 +185,30 @@
#define PCI_CHIP_RV370_5465 0x5465
#define PCI_CHIP_RV370_5466 0x5466
#define PCI_CHIP_RV370_5467 0x5467
+#define PCI_CHIP_R423_UP 0x5550
#define PCI_CHIP_R423_UH 0x5548
#define PCI_CHIP_R423_UI 0x5549
#define PCI_CHIP_R423_UJ 0x554A
#define PCI_CHIP_R423_UK 0x554B
+#define PCI_CHIP_R423_UL 0x554C
+#define PCI_CHIP_R423_UM 0x554D
+#define PCI_CHIP_R423_UN 0x554E
+#define PCI_CHIP_R423_UO 0x554F
#define PCI_CHIP_R423_UQ 0x5551
#define PCI_CHIP_R423_UR 0x5552
#define PCI_CHIP_R423_UT 0x5554
-#define PCI_CHIP_MACH64VT 0x5654
-#define PCI_CHIP_MACH64VU 0x5655
-#define PCI_CHIP_MACH64VV 0x5656
-#define PCI_CHIP_RS300_5834 0x5834
-#define PCI_CHIP_RS300_5835 0x5835
-#define PCI_CHIP_RS300_5836 0x5836
-#define PCI_CHIP_RS300_5837 0x5837
+#define PCI_CHIP_RV410_VJ 0x564A
+#define PCI_CHIP_RV410_VK 0x564B
+#define PCI_CHIP_RV410_VO 0x564F
+#define PCI_CHIP_RV410_VR 0x5652
+#define PCI_CHIP_RV410_VS 0x5653
+#define PCI_CHIP_MACH64VT 0x5654
+#define PCI_CHIP_MACH64VU 0x5655
+#define PCI_CHIP_MACH64VV 0x5656
+#define PCI_CHIP_RS300_5834 0x5834
+#define PCI_CHIP_RS300_5835 0x5835
+#define PCI_CHIP_RS300_5836 0x5836
+#define PCI_CHIP_RS300_5837 0x5837
#define PCI_CHIP_RV370_5B60 0x5B60
#define PCI_CHIP_RV370_5B61 0x5B61
#define PCI_CHIP_RV370_5B62 0x5B62
@@ -200,13 +217,28 @@
#define PCI_CHIP_RV370_5B65 0x5B65
#define PCI_CHIP_RV370_5B66 0x5B66
#define PCI_CHIP_RV370_5B67 0x5B67
-#define PCI_CHIP_RV280_5960 0x5960
-#define PCI_CHIP_RV280_5961 0x5961
-#define PCI_CHIP_RV280_5962 0x5962
-#define PCI_CHIP_RV280_5964 0x5964
-#define PCI_CHIP_RV280_5C61 0x5C61
-#define PCI_CHIP_RV280_5C63 0x5C63
+#define PCI_CHIP_RV280_5960 0x5960
+#define PCI_CHIP_RV280_5961 0x5961
+#define PCI_CHIP_RV280_5962 0x5962
+#define PCI_CHIP_RV280_5964 0x5964
+#define PCI_CHIP_RV280_5C61 0x5C61
+#define PCI_CHIP_RV280_5C63 0x5C63
+#define PCI_CHIP_R423_5D48 0x5D48
+#define PCI_CHIP_R423_5D49 0x5D49
+#define PCI_CHIP_R423_5D4A 0x5D4A
+#define PCI_CHIP_R480_5D4C 0x5D4C
+#define PCI_CHIP_R480_5D4D 0x5D4D
+#define PCI_CHIP_R480_5D4E 0x5D4E
+#define PCI_CHIP_R480_5D4F 0x5D4F
+#define PCI_CHIP_R480_5D50 0x5D50
+#define PCI_CHIP_R480_5D52 0x5D52
#define PCI_CHIP_R423_5D57 0x5D57
+#define PCI_CHIP_RV410_5E48 0x5E48
+#define PCI_CHIP_RV410_5E4A 0x5E4A
+#define PCI_CHIP_RV410_5E4B 0x5E4B
+#define PCI_CHIP_RV410_5E4C 0x5E4C
+#define PCI_CHIP_RV410_5E4D 0x5E4D
+#define PCI_CHIP_RV410_5E4F 0x5E4F
#define PCI_CHIP_RS350_7834 0x7834
#define PCI_CHIP_RS350_7835 0x7835
--- linux-2.6.18-rc2/drivers/video/aty/radeonfb.h 2006-07-22 12:41:58.000000000 +0200
+++ /usr/src/linux-2.6.18-rc2/drivers/video/aty/radeonfb.h 2006-07-22 12:53:24.000000000 +0200
@@ -47,7 +47,8 @@
CHIP_FAMILY_R350,
CHIP_FAMILY_RV350,
CHIP_FAMILY_RV380, /* RV370/RV380/M22/M24 */
- CHIP_FAMILY_R420, /* R420/R423/M18 */
+ CHIP_FAMILY_RV410,
+ CHIP_FAMILY_R420, /* R420/R423/R480/M18 */
CHIP_FAMILY_LAST,
};
@@ -64,6 +65,7 @@
((rinfo)->family == CHIP_FAMILY_RV350) || \
((rinfo)->family == CHIP_FAMILY_R350) || \
((rinfo)->family == CHIP_FAMILY_RV380) || \
+ ((rinfo)->family == CHIP_FAMILY_RV410) || \
((rinfo)->family == CHIP_FAMILY_R420))
/*
--- linux-2.6.18-rc2/include/video/radeon.h 2006-01-03 04:21:10.000000000 +0100
+++ /usr/src/linux-2.6.18-rc2/include/video/radeon.h 2006-07-22 12:49:43.000000000 +0200
@@ -2,7 +2,7 @@
#define _RADEON_H
-#define RADEON_REGSIZE 0x4000
+#define RADEON_REGSIZE 0x8000
#define MM_INDEX 0x0000
[-- Attachment #3: Type: text/plain, Size: 348 bytes --]
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
[-- Attachment #4: Type: text/plain, Size: 182 bytes --]
_______________________________________________
Linux-fbdev-devel mailing list
Linux-fbdev-devel@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/linux-fbdev-devel
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: radeonfb and newer radeons (Patch)
2006-07-22 15:04 radeonfb and newer radeons (Patch) Claudio Ciccani
@ 2006-07-22 17:20 ` Geert Uytterhoeven
2006-07-23 9:59 ` Claudio Ciccani
0 siblings, 1 reply; 3+ messages in thread
From: Geert Uytterhoeven @ 2006-07-22 17:20 UTC (permalink / raw)
To: Linux Frame Buffer Device Development
On Sat, 22 Jul 2006, Claudio Ciccani wrote:
> the attached patch fixes some issues with R300 based chipsets and
> adds support for a number of new devices (mostly X800/X850).
> It also enlarges the mmio size to 0x8000 because many 3d registers
> of the R300 are located after offset 0x4000 and we need them for
> DirectFB (DRI needs too).
> The patch applies to linux-2.6.18-rc2, hope there have not been changes
> in the meanwhile.
> --- linux-2.6.18-rc2/drivers/video/aty/radeon_accel.c 2006-01-03 04:21:10.000000000 +0100
> +++ /usr/src/linux-2.6.18-rc2/drivers/video/aty/radeon_accel.c 2006-07-22 12:49:43.000000000 +0200
> @@ -203,9 +203,7 @@
> host_path_cntl = INREG(HOST_PATH_CNTL);
> rbbm_soft_reset = INREG(RBBM_SOFT_RESET);
>
> - if (rinfo->family == CHIP_FAMILY_R300 ||
> - rinfo->family == CHIP_FAMILY_R350 ||
> - rinfo->family == CHIP_FAMILY_RV350) {
> + if (IS_R300_VARIANT(rinfo)) {
> u32 tmp;
>
> OUTREG(RBBM_SOFT_RESET, (rbbm_soft_reset |
> @@ -241,9 +239,7 @@
> INREG(HOST_PATH_CNTL);
> OUTREG(HOST_PATH_CNTL, host_path_cntl);
>
> - if (rinfo->family != CHIP_FAMILY_R300 ||
^^ ^^
> - rinfo->family != CHIP_FAMILY_R350 ||
^^ ^^
> - rinfo->family != CHIP_FAMILY_RV350)
^^
> + if (IS_R300_VARIANT(rinfo))
^^
These trigger a warning in my head...
> OUTREG(RBBM_SOFT_RESET, rbbm_soft_reset);
>
> OUTREG(CLOCK_CNTL_INDEX, clock_cntl_index);
Gr{oetje,eeting}s,
Geert
--
Geert Uytterhoeven -- There's lots of Linux beyond ia32 -- geert@linux-m68k.org
In personal conversations with technical people, I call myself a hacker. But
when I'm talking to journalists I just say "programmer" or something like that.
-- Linus Torvalds
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: radeonfb and newer radeons (Patch)
2006-07-22 17:20 ` Geert Uytterhoeven
@ 2006-07-23 9:59 ` Claudio Ciccani
0 siblings, 0 replies; 3+ messages in thread
From: Claudio Ciccani @ 2006-07-23 9:59 UTC (permalink / raw)
To: linux-fbdev-devel
Geert Uytterhoeven wrote:
> On Sat, 22 Jul 2006, Claudio Ciccani wrote:
>> the attached patch fixes some issues with R300 based chipsets and
>> adds support for a number of new devices (mostly X800/X850).
>> It also enlarges the mmio size to 0x8000 because many 3d registers
>> of the R300 are located after offset 0x4000 and we need them for
>> DirectFB (DRI needs too).
>> The patch applies to linux-2.6.18-rc2, hope there have not been changes
>> in the meanwhile.
>
>> --- linux-2.6.18-rc2/drivers/video/aty/radeon_accel.c 2006-01-03 04:21:10.000000000 +0100
>> +++ /usr/src/linux-2.6.18-rc2/drivers/video/aty/radeon_accel.c 2006-07-22 12:49:43.000000000 +0200
>> @@ -203,9 +203,7 @@
>> host_path_cntl = INREG(HOST_PATH_CNTL);
>> rbbm_soft_reset = INREG(RBBM_SOFT_RESET);
>>
>> - if (rinfo->family == CHIP_FAMILY_R300 ||
>> - rinfo->family == CHIP_FAMILY_R350 ||
>> - rinfo->family == CHIP_FAMILY_RV350) {
>> + if (IS_R300_VARIANT(rinfo)) {
>> u32 tmp;
>>
>> OUTREG(RBBM_SOFT_RESET, (rbbm_soft_reset |
>> @@ -241,9 +239,7 @@
>> INREG(HOST_PATH_CNTL);
>> OUTREG(HOST_PATH_CNTL, host_path_cntl);
>>
>> - if (rinfo->family != CHIP_FAMILY_R300 ||
> ^^ ^^
>> - rinfo->family != CHIP_FAMILY_R350 ||
> ^^ ^^
>> - rinfo->family != CHIP_FAMILY_RV350)
> ^^
>> + if (IS_R300_VARIANT(rinfo))
> ^^
> These trigger a warning in my head...
If you have a look to the code from xorg, you will see this is right.
Indeed the previous code was REALLY wrong, because the condition returns
always true (while it should return true for R300 based chipsets).
--
Regards,
Claudio Ciccani
klan@users.sf.net
http://directfb.org
http://sf.net/projects/php-directfb
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys -- and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2006-07-23 9:59 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2006-07-22 15:04 radeonfb and newer radeons (Patch) Claudio Ciccani
2006-07-22 17:20 ` Geert Uytterhoeven
2006-07-23 9:59 ` Claudio Ciccani
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).