configure.ac | 3 man/radeon.man | 120 ++++-- src/AtomBios/CD_Operations.c | 8 src/AtomBios/includes/atombios.h | 11 src/Makefile.am | 4 src/ati_pciids_gen.h | 29 + src/atombios_crtc.c | 14 src/atombios_output.c | 439 +++++++++++++--------- src/legacy_crtc.c | 44 +- src/legacy_output.c | 17 src/pcidb/ati_pciids.csv | 43 +- src/radeon.h | 56 ++ src/radeon_accel.c | 5 src/radeon_atombios.c | 224 +++++++---- src/radeon_atombios.h | 6 src/radeon_bios.c | 19 src/radeon_chipinfo_gen.h | 29 + src/radeon_chipset_gen.h | 43 +- src/radeon_commonfuncs.c | 123 +++--- src/radeon_crtc.c | 51 ++ src/radeon_dri.c | 6 src/radeon_driver.c | 7 src/radeon_drm.h | 26 - src/radeon_exa.c | 61 +-- src/radeon_exa_funcs.c | 15 src/radeon_exa_render.c | 174 +++++--- src/radeon_modes.c | 65 +++ src/radeon_output.c | 68 ++- src/radeon_pci_chipset_gen.h | 29 + src/radeon_pci_device_match_gen.h | 29 + src/radeon_probe.c | 2 src/radeon_probe.h | 8 src/radeon_reg.h | 222 ++++++----- src/radeon_textured_video.c | 75 +++ src/radeon_textured_videofuncs.c | 735 ++++++++++++++++++++++++++++++-------- src/radeon_video.c | 32 + src/radeon_video.h | 10 37 files changed, 2061 insertions(+), 791 deletions(-)
New commits: commit 631123d144d088d4f77a0599c34deaa31d551d71 Author: Dave Airlie <[email protected]> Date: Tue Dec 23 10:08:46 2008 +1000 radeon: update to 6.9.0.91 do a prerelease for end of year. diff --git a/configure.ac b/configure.ac index 5ffe0d9..4b9c6b1 100644 --- a/configure.ac +++ b/configure.ac @@ -22,7 +22,7 @@ AC_PREREQ(2.57) AC_INIT([xf86-video-ati], - 6.9.0, + 6.9.0.91, [https://bugs.freedesktop.org/enter_bug.cgi?product=xorg], xf86-video-ati) commit 047f7603174f6047090f4fafbe6488d697eb78bc Author: Dave Airlie <[email protected]> Date: Tue Dec 23 08:16:25 2008 +1000 radeon: pass distcheck diff --git a/src/Makefile.am b/src/Makefile.am index d65a3e4..a13bfad 100644 --- a/src/Makefile.am +++ b/src/Makefile.am @@ -130,18 +130,16 @@ EXTRA_DIST = \ radeon_textured_videofuncs.c \ ati.h \ ativersion.h \ + bicubic_table.h \ generic_bus.h \ - radeon_common.h \ radeon_commonfuncs.c \ radeon_dri.h \ - radeon_dripriv.h \ radeon_exa_render.c \ radeon_exa_funcs.c \ radeon.h \ radeon_macros.h \ radeon_probe.h \ radeon_reg.h \ - radeon_sarea.h \ radeon_version.h \ radeon_video.h \ radeon_tv.h \ commit c0c33dab44e6966b1702d4e8cfba3537fc6e2d5c Author: Patrick Haller <[email protected]> Date: Mon Dec 22 03:06:23 2008 -0500 Fix off by one in EXA composite limit checking Patch from Patrick, with some updates from me: - fix r200 limits - note about r100 limits diff --git a/src/radeon_exa_render.c b/src/radeon_exa_render.c index 55e55be..c285109 100644 --- a/src/radeon_exa_render.c +++ b/src/radeon_exa_render.c @@ -320,7 +320,11 @@ static Bool R100CheckCompositeTexture(PicturePtr pPict, int unit) int h = pPict->pDrawable->height; int i; - if ((w > 0x7ff) || (h > 0x7ff)) + /* r100 limit should be 2048, there are issues with 2048 + * see 197a62704742a4a19736c2637ac92d1dc5ab34ed + */ + + if ((w > 2047) || (h > 2047)) RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); for (i = 0; i < sizeof(R100TexFormats) / sizeof(R100TexFormats[0]); i++) { @@ -456,10 +460,14 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, if (!pSrcPicture->pDrawable) return FALSE; + /* r100 limit should be 2048, there are issues with 2048 + * see 197a62704742a4a19736c2637ac92d1dc5ab34ed + */ + pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); - if (pSrcPixmap->drawable.width >= 2048 || - pSrcPixmap->drawable.height >= 2048) { + if (pSrcPixmap->drawable.width > 2047 || + pSrcPixmap->drawable.height > 2047) { RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", pSrcPixmap->drawable.width, pSrcPixmap->drawable.height)); @@ -467,8 +475,8 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); - if (pDstPixmap->drawable.width >= 2048 || - pDstPixmap->drawable.height >= 2048) { + if (pDstPixmap->drawable.width > 2047 || + pDstPixmap->drawable.height > 2047) { RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", pDstPixmap->drawable.width, pDstPixmap->drawable.height)); @@ -477,8 +485,8 @@ static Bool R100CheckComposite(int op, PicturePtr pSrcPicture, if (pMaskPicture) { PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); - if (pMaskPixmap->drawable.width >= 2048 || - pMaskPixmap->drawable.height >= 2048) { + if (pMaskPixmap->drawable.width > 2047 || + pMaskPixmap->drawable.height > 2047) { RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", pMaskPixmap->drawable.width, pMaskPixmap->drawable.height)); @@ -531,7 +539,7 @@ static Bool FUNC_NAME(R100PrepareComposite)(int op, return FALSE; if (pDstPicture->format == PICT_a8 && RadeonBlendOp[op].dst_alpha) - RADEON_FALLBACK("Can't dst alpha blend A8\n"); + RADEON_FALLBACK("Can't dst alpha blend A8\n"); if (pMask) info->accel_state->has_mask = TRUE; @@ -635,7 +643,7 @@ static Bool R200CheckCompositeTexture(PicturePtr pPict, int unit) int h = pPict->pDrawable->height; int i; - if ((w > 0x7ff) || (h > 0x7ff)) + if ((w > 2048) || (h > 2048)) RADEON_FALLBACK(("Picture w/h too large (%dx%d)\n", w, h)); for (i = 0; i < sizeof(R200TexFormats) / sizeof(R200TexFormats[0]); i++) @@ -762,8 +770,8 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP pSrcPixmap = RADEONGetDrawablePixmap(pSrcPicture->pDrawable); - if (pSrcPixmap->drawable.width >= 2048 || - pSrcPixmap->drawable.height >= 2048) { + if (pSrcPixmap->drawable.width > 2048 || + pSrcPixmap->drawable.height > 2048) { RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", pSrcPixmap->drawable.width, pSrcPixmap->drawable.height)); @@ -771,8 +779,8 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); - if (pDstPixmap->drawable.width >= 2048 || - pDstPixmap->drawable.height >= 2048) { + if (pDstPixmap->drawable.width > 2048 || + pDstPixmap->drawable.height > 2048) { RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", pDstPixmap->drawable.width, pDstPixmap->drawable.height)); @@ -781,8 +789,8 @@ static Bool R200CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP if (pMaskPicture) { PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); - if (pMaskPixmap->drawable.width >= 2048 || - pMaskPixmap->drawable.height >= 2048) { + if (pMaskPixmap->drawable.width > 2048 || + pMaskPixmap->drawable.height > 2048) { RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", pMaskPixmap->drawable.width, pMaskPixmap->drawable.height)); @@ -831,7 +839,7 @@ static Bool FUNC_NAME(R200PrepareComposite)(int op, PicturePtr pSrcPicture, return FALSE; if (pDstPicture->format == PICT_a8 && RadeonBlendOp[op].dst_alpha) - RADEON_FALLBACK("Can't dst alpha blend A8\n"); + RADEON_FALLBACK("Can't dst alpha blend A8\n"); if (pMask) info->accel_state->has_mask = TRUE; @@ -1054,7 +1062,7 @@ static Bool FUNC_NAME(R300TextureSetup)(PicturePtr pPict, PixmapPtr pPix, txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_WRAP); else txfilter |= R300_TX_CLAMP_T(R300_TX_CLAMP_CLAMP_GL); - + txfilter |= (unit << R300_TX_ID_SHIFT); switch (pPict->filter) { @@ -1121,8 +1129,8 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP max_dst_h = 2560; } - if (pSrcPixmap->drawable.width >= max_tex_w || - pSrcPixmap->drawable.height >= max_tex_h) { + if (pSrcPixmap->drawable.width > max_tex_w || + pSrcPixmap->drawable.height > max_tex_h) { RADEON_FALLBACK(("Source w/h too large (%d,%d).\n", pSrcPixmap->drawable.width, pSrcPixmap->drawable.height)); @@ -1130,8 +1138,8 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP pDstPixmap = RADEONGetDrawablePixmap(pDstPicture->pDrawable); - if (pDstPixmap->drawable.width >= max_dst_w || - pDstPixmap->drawable.height >= max_dst_h) { + if (pDstPixmap->drawable.width > max_dst_w || + pDstPixmap->drawable.height > max_dst_h) { RADEON_FALLBACK(("Dest w/h too large (%d,%d).\n", pDstPixmap->drawable.width, pDstPixmap->drawable.height)); @@ -1140,8 +1148,8 @@ static Bool R300CheckComposite(int op, PicturePtr pSrcPicture, PicturePtr pMaskP if (pMaskPicture) { PixmapPtr pMaskPixmap = RADEONGetDrawablePixmap(pMaskPicture->pDrawable); - if (pMaskPixmap->drawable.width >= max_tex_w || - pMaskPixmap->drawable.height >= max_tex_h) { + if (pMaskPixmap->drawable.width > max_tex_w || + pMaskPixmap->drawable.height > max_tex_h) { RADEON_FALLBACK(("Mask w/h too large (%d,%d).\n", pMaskPixmap->drawable.width, pMaskPixmap->drawable.height)); commit d01a609a2b07da4ca0f182e79459432584ec61f6 Author: Alex Deucher <[email protected]> Date: Mon Dec 22 02:18:43 2008 -0500 R3xx-R5xx: better fix for xv primitive tearing issues R5xx: always use single clipped triangle R3xx/R4xx: use single clipped triangle up to guardband limit, then use quad. diff --git a/src/radeon_textured_videofuncs.c b/src/radeon_textured_videofuncs.c index 410430c..2fe852d 100644 --- a/src/radeon_textured_videofuncs.c +++ b/src/radeon_textured_videofuncs.c @@ -1486,16 +1486,30 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv pPriv->drw_y + pPriv->dst_h, pPriv->vsync); - BEGIN_ACCEL(2); - OUT_ACCEL_REG(R300_SC_SCISSOR0, ((0 << R300_SCISSOR_X_SHIFT) | - (0 << R300_SCISSOR_Y_SHIFT))); - OUT_ACCEL_REG(R300_SC_SCISSOR1, ((8191 << R300_SCISSOR_X_SHIFT) | - (8191 << R300_SCISSOR_Y_SHIFT))); - FINISH_ACCEL(); + /* + * Rendering of the actual polygon is done in two different + * ways depending on chip generation: + * + * < R300: + * + * These chips can render a rectangle in one pass, so + * handling is pretty straight-forward. + * + * >= R300: + * + * These chips can accept a quad, but will render it as + * two triangles which results in a diagonal tear. Instead + * We render a single, large triangle and use the scissor + * functionality to restrict it to the desired rectangle. + * Due to guardband limits on r3xx/r4xx, we can only use + * the single triangle up to 2880 pixels; above that we + * render as a quad. + */ while (nBox--) { int srcX, srcY, srcw, srch; int dstX, dstY, dstw, dsth; + Bool use_quad = FALSE; dstX = pBox->x1 + dstxoff; dstY = pBox->y1 + dstyoff; dstw = pBox->x2 - pBox->x1; @@ -1514,6 +1528,28 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv ErrorF("src: %d, %d, %d, %d\n", srcX, srcY, srcw, srch); #endif + if (IS_R300_3D || IS_R500_3D) { + if (IS_R300_3D && ((dstw > 1440) || (dsth > 1440))) + use_quad = TRUE; + /* + * Set up the scissor area to that of the output size. + */ + BEGIN_ACCEL(2); + if (IS_R300_3D) { + /* R300 has an offset */ + OUT_ACCEL_REG(R300_SC_SCISSOR0, (((dstX + 1088) << R300_SCISSOR_X_SHIFT) | + ((dstY + 1088) << R300_SCISSOR_Y_SHIFT))); + OUT_ACCEL_REG(R300_SC_SCISSOR1, (((dstX + dstw + 1088 - 1) << R300_SCISSOR_X_SHIFT) | + ((dstY + dsth + 1088 - 1) << R300_SCISSOR_Y_SHIFT))); + } else { + OUT_ACCEL_REG(R300_SC_SCISSOR0, (((dstX) << R300_SCISSOR_X_SHIFT) | + ((dstY) << R300_SCISSOR_Y_SHIFT))); + OUT_ACCEL_REG(R300_SC_SCISSOR1, (((dstX + dstw - 1) << R300_SCISSOR_X_SHIFT) | + ((dstY + dsth - 1) << R300_SCISSOR_Y_SHIFT))); + } + FINISH_ACCEL(); + } + #ifdef ACCEL_CP if (info->ChipFamily < CHIP_FAMILY_R200) { BEGIN_RING(3 * vtx_count + 3); @@ -1527,12 +1563,21 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv RADEON_CP_VC_CNTL_VTX_FMT_RADEON_MODE | (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); } else if (IS_R300_3D || IS_R500_3D) { - BEGIN_RING(4 * vtx_count + 4); - OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, - 4 * vtx_count)); - OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST | - RADEON_CP_VC_CNTL_PRIM_WALK_RING | - (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + if (use_quad) { + BEGIN_RING(4 * vtx_count + 4); + OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, + 4 * vtx_count)); + OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_QUAD_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + (4 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } else { + BEGIN_RING(3 * vtx_count + 4); + OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, + 3 * vtx_count)); + OUT_RING(RADEON_CP_VC_CNTL_PRIM_TYPE_TRI_LIST | + RADEON_CP_VC_CNTL_PRIM_WALK_RING | + (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); + } } else { BEGIN_RING(3 * vtx_count + 2); OUT_RING(CP_PACKET3(R200_CP_PACKET3_3D_DRAW_IMMD_2, @@ -1542,9 +1587,12 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv (3 << RADEON_CP_VC_CNTL_NUM_SHIFT)); } #else /* ACCEL_CP */ - if (IS_R300_3D || IS_R500_3D) - BEGIN_ACCEL(2 + vtx_count * 4); - else + if (IS_R300_3D || IS_R500_3D) { + if (use_quad) + BEGIN_ACCEL(2 + vtx_count * 4); + else + BEGIN_ACCEL(2 + vtx_count * 3); + } else BEGIN_ACCEL(1 + vtx_count * 3); if (info->ChipFamily < CHIP_FAMILY_R200) @@ -1552,11 +1600,16 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv RADEON_VF_PRIM_WALK_DATA | RADEON_VF_RADEON_MODE | (3 << RADEON_VF_NUM_VERTICES_SHIFT))); - else if (IS_R300_3D || IS_R500_3D) - OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | - RADEON_VF_PRIM_WALK_DATA | - (4 << RADEON_VF_NUM_VERTICES_SHIFT))); - else + else if (IS_R300_3D || IS_R500_3D) { + if (use_quad) + OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_QUAD_LIST | + RADEON_VF_PRIM_WALK_DATA | + (4 << RADEON_VF_NUM_VERTICES_SHIFT))); + else + OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_TRIANGLE_LIST | + RADEON_VF_PRIM_WALK_DATA | + (3 << RADEON_VF_NUM_VERTICES_SHIFT))); + } else OUT_ACCEL_REG(RADEON_SE_VF_CNTL, (RADEON_VF_PRIM_TYPE_RECTANGLE_LIST | RADEON_VF_PRIM_WALK_DATA | (3 << RADEON_VF_NUM_VERTICES_SHIFT))); @@ -1567,6 +1620,7 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv * This code is only executed on >= R300, so we don't * have to deal with the legacy handling. */ + if (use_quad) { VTX_OUT_FILTER((float)dstX, (float)dstY, (float)srcX / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0], (float)srcX + 0.5, (float)srcY + 0.5); @@ -1579,27 +1633,52 @@ FUNC_NAME(RADEONDisplayTexturedVideo)(ScrnInfoPtr pScrn, RADEONPortPrivPtr pPriv VTX_OUT_FILTER((float)(dstX + dstw), (float)dstY, (float)(srcX + srcw) / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0], (float)(srcX + srcw) + 0.5, (float)srcY + 0.5); + } else { + VTX_OUT_FILTER((float)dstX, (float)dstY, + (float)srcX / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0], + (float)srcX + 0.5, (float)srcY + 0.5); + VTX_OUT_FILTER((float)dstX, (float)(dstY + dsth * 2), + (float)srcX / info->accel_state->texW[0], (float)(srcY + srch * 2) / info->accel_state->texH[0], + (float)srcX + 0.5, (float)(srcY + srch * 2) + 0.5); + VTX_OUT_FILTER((float)(dstX + dstw * 2), (float)dstY, + (float)(srcX + srcw * 2) / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0], + (float)(srcX + srcw * 2) + 0.5, (float)srcY + 0.5); + } } else { - if (IS_R300_3D || IS_R500_3D) { - VTX_OUT((float)dstX, (float)dstY, - (float)srcX / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0]); - VTX_OUT((float)dstX, (float)(dstY + dsth), - (float)srcX / info->accel_state->texW[0], (float)(srcY + srch) / info->accel_state->texH[0]); - VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth), - (float)(srcX + srcw) / info->accel_state->texW[0], (float)(srcY + srch) / info->accel_state->texH[0]); - VTX_OUT((float)(dstX + dstw), (float)dstY, - (float)(srcX + srcw) / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0]); + if (IS_R300_3D || IS_R500_3D) { + if (use_quad) { + VTX_OUT((float)dstX, (float)dstY, + (float)srcX / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0]); + VTX_OUT((float)dstX, (float)(dstY + dsth), + (float)srcX / info->accel_state->texW[0], (float)(srcY + srch) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth), + (float)(srcX + srcw) / info->accel_state->texW[0], (float)(srcY + srch) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + dstw), (float)dstY, + (float)(srcX + srcw) / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0]); } else { - /* - * Just render a rect (using three coords). - */ - VTX_OUT((float)dstX, (float)(dstY + dsth), - (float)srcX / info->accel_state->texW[0], (float)(srcY + srch) / info->accel_state->texH[0]); - VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth), - (float)(srcX + srcw) / info->accel_state->texW[0], (float)(srcY + srch) / info->accel_state->texH[0]); - VTX_OUT((float)(dstX + dstw), (float)dstY, - (float)(srcX + srcw) / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0]); + /* + * Render a big, scissored triangle. This means + * doubling the triangle size and adjusting + * texture coordinates. + */ + VTX_OUT((float)dstX, (float)dstY, + (float)srcX / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0]); + VTX_OUT((float)dstX, (float)(dstY + dsth * 2), + (float)srcX / info->accel_state->texW[0], (float)(srcY + srch * 2) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + dstw * 2), (float)dstY, + (float)(srcX + srcw * 2) / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0]); } + } else { + /* + * Just render a rect (using three coords). + */ + VTX_OUT((float)dstX, (float)(dstY + dsth), + (float)srcX / info->accel_state->texW[0], (float)(srcY + srch) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + dstw), (float)(dstY + dsth), + (float)(srcX + srcw) / info->accel_state->texW[0], (float)(srcY + srch) / info->accel_state->texH[0]); + VTX_OUT((float)(dstX + dstw), (float)dstY, + (float)(srcX + srcw) / info->accel_state->texW[0], (float)srcY / info->accel_state->texH[0]); + } } if (IS_R300_3D || IS_R500_3D) commit 4e96278b581e296c1203d97a6d7aa3bff3977222 Author: Dave Airlie <[email protected]> Date: Mon Dec 22 15:58:35 2008 +1000 atombios/tv: add an option to enable atom tv-out for users. This code is still experimental but we will allow users to enable it for experimental reasons diff --git a/man/radeon.man b/man/radeon.man index f8526df..19ffb94 100644 --- a/man/radeon.man +++ b/man/radeon.man @@ -550,6 +550,12 @@ controller has passed the destination region. It reduces tearing at the cost of performance. The default is .B off. +.TP +.BI "Option \*qATOMTvOut\*q \*q" boolean \*q +This option enables experimental TV-out support for r500 and r600 atombios chips. +tv-out is experimental and may not function on these chips as well as hoped for. +The default is +.B off. .SH SEE ALSO __xservername__(__appmansuffix__), __xconfigfile__(__filemansuffix__), xorgconfig(__appmansuffix__), Xserver(__appmansuffix__), X(__miscmansuffix__) diff --git a/src/radeon.h b/src/radeon.h index 818ec4d..f7f9c09 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -205,7 +205,8 @@ typedef enum { OPTION_IGNORE_LID_STATUS, OPTION_DEFAULT_TVDAC_ADJ, OPTION_INT10, - OPTION_EXA_VSYNC + OPTION_EXA_VSYNC, + OPTION_ATOM_TVOUT } RADEONOpts; diff --git a/src/radeon_atombios.c b/src/radeon_atombios.c index c9c7ae2..3cd7eae 100644 --- a/src/radeon_atombios.c +++ b/src/radeon_atombios.c @@ -1572,6 +1572,10 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) ATOM_CONNECTOR_OBJECT_TABLE *con_obj; ATOM_INTEGRATED_SYSTEM_INFO_V2 *igp_obj = NULL; int i, j; + Bool enable_tv = FALSE; + + if (xf86ReturnOptValBool(info->Options, OPTION_ATOM_TVOUT, FALSE)) + enable_tv = TRUE; atomDataPtr = info->atomBIOS->atomDataPtr; if (!rhdAtomGetTableRevisionAndSize((ATOM_COMMON_TABLE_HEADER *)(atomDataPtr->Object_Header), &crev, &frev, &size)) @@ -1702,7 +1706,10 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) if (info->BiosConnector[i].ConnectorType == CONNECTOR_DIN || info->BiosConnector[i].ConnectorType == CONNECTOR_STV || info->BiosConnector[i].ConnectorType == CONNECTOR_CTV) - info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_TV1_INDEX); + if (enable_tv) + info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_TV1_INDEX); + else + info->BiosConnector[i].valid = FALSE; else info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_CRT1_INDEX); info->BiosConnector[i].DACType = DAC_PRIMARY; @@ -1715,7 +1722,10 @@ RADEONGetATOMConnectorInfoFromBIOSObject (ScrnInfoPtr pScrn) if (info->BiosConnector[i].ConnectorType == CONNECTOR_DIN || info->BiosConnector[i].ConnectorType == CONNECTOR_STV || info->BiosConnector[i].ConnectorType == CONNECTOR_CTV) - info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_TV1_INDEX); + if (enable_tv) + info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_TV1_INDEX); + else + info->BiosConnector[i].valid = FALSE; else info->BiosConnector[i].devices |= (1 << ATOM_DEVICE_CRT2_INDEX); info->BiosConnector[i].DACType = DAC_TVDAC; @@ -1978,6 +1988,10 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn) atomDataTablesPtr atomDataPtr; uint8_t crev, frev; int i, j; + Bool enable_tv = FALSE; + + if (xf86ReturnOptValBool(info->Options, OPTION_ATOM_TVOUT, FALSE)) + enable_tv = TRUE; atomDataPtr = info->atomBIOS->atomDataPtr; @@ -1998,20 +2012,16 @@ RADEONGetATOMConnectorInfoFromBIOSConnectorTable (ScrnInfoPtr pScrn) continue; } -#if 1 - if (i == ATOM_DEVICE_CV_INDEX) { + if (!enable_tv && (i == ATOM_DEVICE_CV_INDEX)) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Skipping Component Video\n"); info->BiosConnector[i].valid = FALSE; continue; } -#endif -#if 1 - if (i == ATOM_DEVICE_TV1_INDEX) { + if (!enable_tv && (i == ATOM_DEVICE_TV1_INDEX)) { xf86DrvMsg(pScrn->scrnIndex, X_INFO, "Skipping TV-Out\n"); info->BiosConnector[i].valid = FALSE; continue; } -#endif info->BiosConnector[i].valid = TRUE; info->BiosConnector[i].load_detection = TRUE; diff --git a/src/radeon_driver.c b/src/radeon_driver.c index d414854..e53edbb 100644 --- a/src/radeon_driver.c +++ b/src/radeon_driver.c @@ -192,6 +192,7 @@ static const OptionInfoRec RADEONOptions[] = { { OPTION_DEFAULT_TVDAC_ADJ, "DefaultTVDACAdj", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_INT10, "Int10", OPTV_BOOLEAN, {0}, FALSE }, { OPTION_EXA_VSYNC, "EXAVSync", OPTV_BOOLEAN, {0}, FALSE }, + { OPTION_ATOM_TVOUT, "ATOMTVOut", OPTV_BOOLEAN, {0}, FALSE }, { -1, NULL, OPTV_NONE, {0}, FALSE } }; commit d52882d8188830dd52fa112dadcf5ea7f3e5fd5e Author: Dave Airlie <[email protected]> Date: Mon Dec 22 09:27:47 2008 +1000 radeon: setup 3D engine even when no DRI. This should fix some missing font issues in EXA without DRI cases. diff --git a/src/radeon.h b/src/radeon.h index a67962c..9f0e55a 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -1329,8 +1329,9 @@ do { \ case EXA_ENGINEMODE_3D: \ break; \ } \ - if (flush && info->directRenderingEnabled) { \ - RADEONCPFlushIndirect(pScrn, 1); \ + if (flush) { \ + if (info->directRenderingEnabled) \ + RADEONCPFlushIndirect(pScrn, 1); \ RADEONInit3DEngine(pScrn); \ } \ info->accel_state->engineMode = EXA_ENGINEMODE_3D; \ commit 2346fd7cbd90dcdce2b361d374a53da064fa6a12 Author: Dave Airlie <[email protected]> Date: Thu Dec 18 16:35:13 2008 +1000 radeon: add all new pci ids for rv730/rv710 families diff --git a/src/ati_pciids_gen.h b/src/ati_pciids_gen.h index 7819cf6..6f23628 100644 --- a/src/ati_pciids_gen.h +++ b/src/ati_pciids_gen.h @@ -334,8 +334,23 @@ #define PCI_CHIP_RV770_9440 0x9440 #define PCI_CHIP_RV770_9441 0x9441 #define PCI_CHIP_RV770_9442 0x9442 +#define PCI_CHIP_RV770_9444 0x9444 +#define PCI_CHIP_RV770_9446 0x9446 +#define PCI_CHIP_RV770_944A 0x944A +#define PCI_CHIP_RV770_944B 0x944B +#define PCI_CHIP_RV770_944C 0x944C +#define PCI_CHIP_RV770_944E 0x944E +#define PCI_CHIP_RV770_9450 0x9450 +#define PCI_CHIP_RV770_9452 0x9452 +#define PCI_CHIP_RV770_9456 0x9456 +#define PCI_CHIP_RV770_945A 0x945A +#define PCI_CHIP_RV770_945B 0x945B +#define PCI_CHIP_RV730_9487 0x9487 +#define PCI_CHIP_RV730_948F 0x948F #define PCI_CHIP_RV730_9490 0x9490 #define PCI_CHIP_RV730_9498 0x9498 +#define PCI_CHIP_RV730_949C 0x949C +#define PCI_CHIP_RV730_949E 0x949E #define PCI_CHIP_RV730_949F 0x949F #define PCI_CHIP_RV610_94C0 0x94C0 #define PCI_CHIP_RV610_94C1 0x94C1 @@ -355,6 +370,12 @@ #define PCI_CHIP_RV670_950F 0x950F #define PCI_CHIP_RV670_9511 0x9511 #define PCI_CHIP_RV670_9515 0x9515 +#define PCI_CHIP_RV710_9540 0x9540 +#define PCI_CHIP_RV710_9541 0x9541 +#define PCI_CHIP_RV710_954E 0x954E +#define PCI_CHIP_RV710_954F 0x954F +#define PCI_CHIP_RV710_9552 0x9552 +#define PCI_CHIP_RV710_9553 0x9553 #define PCI_CHIP_RV630_9580 0x9580 #define PCI_CHIP_RV630_9581 0x9581 #define PCI_CHIP_RV630_9583 0x9583 @@ -367,11 +388,12 @@ #define PCI_CHIP_RV630_958C 0x958C #define PCI_CHIP_RV630_958D 0x958D #define PCI_CHIP_RV630_958E 0x958E +#define PCI_CHIP_RV710_9592 0x9592 #define PCI_CHIP_RV620_95C0 0x95C0 -#define PCI_CHIP_RV620_95C5 0x95C5 -#define PCI_CHIP_RV620_95C7 0x95C7 #define PCI_CHIP_RV620_95C2 0x95C2 #define PCI_CHIP_RV620_95C4 0x95C4 +#define PCI_CHIP_RV620_95C5 0x95C5 +#define PCI_CHIP_RV620_95C7 0x95C7 #define PCI_CHIP_RV620_95CD 0x95CD #define PCI_CHIP_RV620_95CE 0x95CE #define PCI_CHIP_RV620_95CF 0x95CF diff --git a/src/pcidb/ati_pciids.csv b/src/pcidb/ati_pciids.csv index ff9979f..aea0931 100644 --- a/src/pcidb/ati_pciids.csv +++ b/src/pcidb/ati_pciids.csv @@ -335,9 +335,24 @@ "0x9440","RV770_9440","RV770",,,,,,"ATI Radeon 4800 Series" "0x9441","RV770_9441","RV770",,,,,,"ATI Radeon HD 4870 x2" "0x9442","RV770_9442","RV770",,,,,,"ATI Radeon 4800 Series" +"0x9444","RV770_9444","RV770",,,,,,"ATI FirePro V8750 (FireGL)" +"0x9446","RV770_9446","RV770",,,,,,"ATI FirePro V7760 (FireGL)" +"0x944A","RV770_944A","RV770",1,,,,,"ATI Mobility RADEON HD 4850" +"0x944B","RV770_944B","RV770",1,,,,,"ATI Mobility RADEON HD 4850 X2" +"0x944C","RV770_944C","RV770",,,,,,"ATI Radeon 4800 Series" +"0x944E","RV770_944E","RV770",,,,,,"ATI FirePro RV770" +"0x9450","RV770_9450","RV770",,,,,,"AMD FireStream 9270" +"0x9452","RV770_9452","RV770",,,,,,"AMD FireStream 9250" +"0x9456","RV770_9456","RV770",,,,,,"ATI FirePro V8700 (FireGL)" +"0x945A","RV770_945A","RV770",1,,,,,"ATI Mobility RADEON HD 4870" +"0x945B","RV770_945B","RV770",1,,,,,"ATI Mobility RADEON M98" +"0x9487","RV730_9487","RV730",,,,,,"ATI Radeon RV730 (AGP)" +"0x948F","RV730_948F","RV730",,,,,,"ATI Radeon RV730 (AGP)" "0x9490","RV730_9490","RV730",,,,,,"ATI RV730XT [Radeon HD 4670]" "0x9498","RV730_9498","RV730",,,,,,"ATI RV730 PRO [Radeon HD 4650]" -"0x949F","RV730_949F","RV730",,,,,,"ATI RV730 [FirePro V5700]" +"0x949C","RV730_949C","RV730",,,,,,"ATI FirePro V7750 (FireGL)" +"0x949E","RV730_949E","RV730",,,,,,"ATI FirePro V5700 (FireGL)" +"0x949F","RV730_949F","RV730",,,,,,"ATI FirePro V3750 (FireGL)" "0x94C0","RV610_94C0","RV610",,,,,,"ATI RV610" "0x94C1","RV610_94C1","RV610",,,,,,"ATI Radeon HD 2400 XT" "0x94C3","RV610_94C3","RV610",,,,,,"ATI Radeon HD 2400 Pro" @@ -356,6 +371,12 @@ "0x950F","RV670_950F","RV670",,,,,,"ATI Radeon HD3870 X2" "0x9511","RV670_9511","RV670",,,,,,"ATI FireGL V7700" "0x9515","RV670_9515","RV670",,,,,,"ATI Radeon HD3850" +"0x9540","RV710_9540","RV710",,,,,,"ATI Radeon HD 4550" +"0x9541","RV710_9541","RV710",,,,,,"ATI Radeon RV710" +"0x954E","RV710_954E","RV710",,,,,,"ATI Radeon RV710" +"0x954F","RV710_954F","RV710",,,,,,"ATI Radeon HD 4350" +"0x9552","RV710_9552","RV710",1,,,,,"ATI Mobility Radeon 4300 Series" +"0x9553","RV710_9553","RV710",1,,,,,"ATI Mobility Radeon 4500 Series" "0x9580","RV630_9580","RV630",,,,,,"ATI RV630" "0x9581","RV630_9581","RV630",1,,,,,"ATI Mobility Radeon HD 2600" "0x9583","RV630_9583","RV630",1,,,,,"ATI Mobility Radeon HD 2600 XT" @@ -368,11 +389,12 @@ "0x958C","RV630_958C","RV630",,,,,,"ATI FireGL V5600" "0x958D","RV630_958D","RV630",,,,,,"ATI FireGL V3600" "0x958E","RV630_958E","RV630",,,,,,"ATI Radeon HD 2600 LE" +"0x9592","RV710_9592","RV710",,,,,,"ATI Radeon RV710" "0x95C0","RV620_95C0","RV620",,,,,,"ATI Radeon HD 3470" -"0x95C5","RV620_95C5","RV620",,,,,,"ATI Radeon HD 3450" -"0x95C7","RV620_95C7","RV620",,,,,,"ATI Radeon HD 3430" "0x95C2","RV620_95C2","RV620",1,,,,,"ATI Mobility Radeon HD 3430" "0x95C4","RV620_95C4","RV620",1,,,,,"ATI Mobility Radeon HD 3400 Series" +"0x95C5","RV620_95C5","RV620",,,,,,"ATI Radeon HD 3450" +"0x95C7","RV620_95C7","RV620",,,,,,"ATI Radeon HD 3430" "0x95CD","RV620_95CD","RV620",,,,,,"ATI FireMV 2450" "0x95CE","RV620_95CE","RV620",,,,,,"ATI FireMV 2260" "0x95CF","RV620_95CF","RV620",,,,,,"ATI FireMV 2260" diff --git a/src/radeon.h b/src/radeon.h index 818ec4d..a67962c 100644 --- a/src/radeon.h +++ b/src/radeon.h @@ -325,6 +325,7 @@ typedef enum { CHIP_FAMILY_RS780, CHIP_FAMILY_RV770, CHIP_FAMILY_RV730, + CHIP_FAMILY_RV710, CHIP_FAMILY_LAST } RADEONChipFamily; diff --git a/src/radeon_chipinfo_gen.h b/src/radeon_chipinfo_gen.h index a321fa1..627520b 100644 --- a/src/radeon_chipinfo_gen.h +++ b/src/radeon_chipinfo_gen.h @@ -254,8 +254,23 @@ RADEONCardInfo RADEONCards[] = { { 0x9440, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, { 0x9441, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, { 0x9442, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x9444, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x9446, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x944A, CHIP_FAMILY_RV770, 1, 0, 0, 0, 0 }, + { 0x944B, CHIP_FAMILY_RV770, 1, 0, 0, 0, 0 }, + { 0x944C, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x944E, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x9450, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x9452, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x9456, CHIP_FAMILY_RV770, 0, 0, 0, 0, 0 }, + { 0x945A, CHIP_FAMILY_RV770, 1, 0, 0, 0, 0 }, + { 0x945B, CHIP_FAMILY_RV770, 1, 0, 0, 0, 0 }, + { 0x9487, CHIP_FAMILY_RV730, 0, 0, 0, 0, 0 }, + { 0x948F, CHIP_FAMILY_RV730, 0, 0, 0, 0, 0 }, { 0x9490, CHIP_FAMILY_RV730, 0, 0, 0, 0, 0 }, { 0x9498, CHIP_FAMILY_RV730, 0, 0, 0, 0, 0 }, + { 0x949C, CHIP_FAMILY_RV730, 0, 0, 0, 0, 0 }, + { 0x949E, CHIP_FAMILY_RV730, 0, 0, 0, 0, 0 }, { 0x949F, CHIP_FAMILY_RV730, 0, 0, 0, 0, 0 }, { 0x94C0, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 }, { 0x94C1, CHIP_FAMILY_RV610, 0, 0, 0, 0, 0 }, @@ -275,6 +290,12 @@ RADEONCardInfo RADEONCards[] = { { 0x950F, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, { 0x9511, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, { 0x9515, CHIP_FAMILY_RV670, 0, 0, 0, 0, 0 }, + { 0x9540, CHIP_FAMILY_RV710, 0, 0, 0, 0, 0 }, + { 0x9541, CHIP_FAMILY_RV710, 0, 0, 0, 0, 0 }, + { 0x954E, CHIP_FAMILY_RV710, 0, 0, 0, 0, 0 }, + { 0x954F, CHIP_FAMILY_RV710, 0, 0, 0, 0, 0 }, + { 0x9552, CHIP_FAMILY_RV710, 1, 0, 0, 0, 0 }, + { 0x9553, CHIP_FAMILY_RV710, 1, 0, 0, 0, 0 }, { 0x9580, CHIP_FAMILY_RV630, 0, 0, 0, 0, 0 }, { 0x9581, CHIP_FAMILY_RV630, 1, 0, 0, 0, 0 }, { 0x9583, CHIP_FAMILY_RV630, 1, 0, 0, 0, 0 }, @@ -287,11 +308,12 @@ RADEONCardInfo RADEONCards[] = { { 0x958C, CHIP_FAMILY_RV630, 0, 0, 0, 0, 0 }, { 0x958D, CHIP_FAMILY_RV630, 0, 0, 0, 0, 0 }, { 0x958E, CHIP_FAMILY_RV630, 0, 0, 0, 0, 0 }, + { 0x9592, CHIP_FAMILY_RV710, 0, 0, 0, 0, 0 }, { 0x95C0, CHIP_FAMILY_RV620, 0, 0, 0, 0, 0 }, - { 0x95C5, CHIP_FAMILY_RV620, 0, 0, 0, 0, 0 }, - { 0x95C7, CHIP_FAMILY_RV620, 0, 0, 0, 0, 0 }, { 0x95C2, CHIP_FAMILY_RV620, 1, 0, 0, 0, 0 }, { 0x95C4, CHIP_FAMILY_RV620, 1, 0, 0, 0, 0 }, + { 0x95C5, CHIP_FAMILY_RV620, 0, 0, 0, 0, 0 }, + { 0x95C7, CHIP_FAMILY_RV620, 0, 0, 0, 0, 0 }, { 0x95CD, CHIP_FAMILY_RV620, 0, 0, 0, 0, 0 }, { 0x95CE, CHIP_FAMILY_RV620, 0, 0, 0, 0, 0 }, { 0x95CF, CHIP_FAMILY_RV620, 0, 0, 0, 0, 0 }, diff --git a/src/radeon_chipset_gen.h b/src/radeon_chipset_gen.h index 03328e5..b8a8a65 100644 --- a/src/radeon_chipset_gen.h +++ b/src/radeon_chipset_gen.h @@ -254,9 +254,24 @@ static SymTabRec RADEONChipsets[] = { { PCI_CHIP_RV770_9440, "ATI Radeon 4800 Series" }, { PCI_CHIP_RV770_9441, "ATI Radeon HD 4870 x2" }, { PCI_CHIP_RV770_9442, "ATI Radeon 4800 Series" }, + { PCI_CHIP_RV770_9444, "ATI FirePro V8750 (FireGL)" }, + { PCI_CHIP_RV770_9446, "ATI FirePro V7760 (FireGL)" }, + { PCI_CHIP_RV770_944A, "ATI Mobility RADEON HD 4850" }, + { PCI_CHIP_RV770_944B, "ATI Mobility RADEON HD 4850 X2" }, + { PCI_CHIP_RV770_944C, "ATI Radeon 4800 Series" }, + { PCI_CHIP_RV770_944E, "ATI FirePro RV770" }, + { PCI_CHIP_RV770_9450, "AMD FireStream 9270" }, + { PCI_CHIP_RV770_9452, "AMD FireStream 9250" }, + { PCI_CHIP_RV770_9456, "ATI FirePro V8700 (FireGL)" }, + { PCI_CHIP_RV770_945A, "ATI Mobility RADEON HD 4870" }, + { PCI_CHIP_RV770_945B, "ATI Mobility RADEON M98" }, + { PCI_CHIP_RV730_9487, "ATI Radeon RV730 (AGP)" }, + { PCI_CHIP_RV730_948F, "ATI Radeon RV730 (AGP)" }, { PCI_CHIP_RV730_9490, "ATI RV730XT [Radeon HD 4670]" }, { PCI_CHIP_RV730_9498, "ATI RV730 PRO [Radeon HD 4650]" }, - { PCI_CHIP_RV730_949F, "ATI RV730 [FirePro V5700]" }, + { PCI_CHIP_RV730_949C, "ATI FirePro V7750 (FireGL)" }, + { PCI_CHIP_RV730_949E, "ATI FirePro V5700 (FireGL)" }, + { PCI_CHIP_RV730_949F, "ATI FirePro V3750 (FireGL)" }, { PCI_CHIP_RV610_94C0, "ATI RV610" }, { PCI_CHIP_RV610_94C1, "ATI Radeon HD 2400 XT" }, { PCI_CHIP_RV610_94C3, "ATI Radeon HD 2400 Pro" }, @@ -275,6 +290,12 @@ static SymTabRec RADEONChipsets[] = { { PCI_CHIP_RV670_950F, "ATI Radeon HD3870 X2" }, { PCI_CHIP_RV670_9511, "ATI FireGL V7700" }, { PCI_CHIP_RV670_9515, "ATI Radeon HD3850" }, + { PCI_CHIP_RV710_9540, "ATI Radeon HD 4550" }, + { PCI_CHIP_RV710_9541, "ATI Radeon RV710" }, + { PCI_CHIP_RV710_954E, "ATI Radeon RV710" }, + { PCI_CHIP_RV710_954F, "ATI Radeon HD 4350" }, + { PCI_CHIP_RV710_9552, "ATI Mobility Radeon 4300 Series" }, + { PCI_CHIP_RV710_9553, "ATI Mobility Radeon 4500 Series" }, { PCI_CHIP_RV630_9580, "ATI RV630" }, { PCI_CHIP_RV630_9581, "ATI Mobility Radeon HD 2600" }, { PCI_CHIP_RV630_9583, "ATI Mobility Radeon HD 2600 XT" }, @@ -287,11 +308,12 @@ static SymTabRec RADEONChipsets[] = { { PCI_CHIP_RV630_958C, "ATI FireGL V5600" }, { PCI_CHIP_RV630_958D, "ATI FireGL V3600" }, { PCI_CHIP_RV630_958E, "ATI Radeon HD 2600 LE" }, + { PCI_CHIP_RV710_9592, "ATI Radeon RV710" }, { PCI_CHIP_RV620_95C0, "ATI Radeon HD 3470" }, - { PCI_CHIP_RV620_95C5, "ATI Radeon HD 3450" }, - { PCI_CHIP_RV620_95C7, "ATI Radeon HD 3430" }, { PCI_CHIP_RV620_95C2, "ATI Mobility Radeon HD 3430" }, { PCI_CHIP_RV620_95C4, "ATI Mobility Radeon HD 3400 Series" }, + { PCI_CHIP_RV620_95C5, "ATI Radeon HD 3450" }, + { PCI_CHIP_RV620_95C7, "ATI Radeon HD 3430" }, { PCI_CHIP_RV620_95CD, "ATI FireMV 2450" }, { PCI_CHIP_RV620_95CE, "ATI FireMV 2260" }, { PCI_CHIP_RV620_95CF, "ATI FireMV 2260" }, diff --git a/src/radeon_pci_chipset_gen.h b/src/radeon_pci_chipset_gen.h index 1e97289..525eafa 100644 --- a/src/radeon_pci_chipset_gen.h +++ b/src/radeon_pci_chipset_gen.h @@ -254,8 +254,23 @@ PciChipsets RADEONPciChipsets[] = { { PCI_CHIP_RV770_9440, PCI_CHIP_RV770_9440, RES_SHARED_VGA }, { PCI_CHIP_RV770_9441, PCI_CHIP_RV770_9441, RES_SHARED_VGA }, { PCI_CHIP_RV770_9442, PCI_CHIP_RV770_9442, RES_SHARED_VGA }, + { PCI_CHIP_RV770_9444, PCI_CHIP_RV770_9444, RES_SHARED_VGA }, + { PCI_CHIP_RV770_9446, PCI_CHIP_RV770_9446, RES_SHARED_VGA }, + { PCI_CHIP_RV770_944A, PCI_CHIP_RV770_944A, RES_SHARED_VGA }, + { PCI_CHIP_RV770_944B, PCI_CHIP_RV770_944B, RES_SHARED_VGA }, + { PCI_CHIP_RV770_944C, PCI_CHIP_RV770_944C, RES_SHARED_VGA }, + { PCI_CHIP_RV770_944E, PCI_CHIP_RV770_944E, RES_SHARED_VGA }, + { PCI_CHIP_RV770_9450, PCI_CHIP_RV770_9450, RES_SHARED_VGA }, + { PCI_CHIP_RV770_9452, PCI_CHIP_RV770_9452, RES_SHARED_VGA }, + { PCI_CHIP_RV770_9456, PCI_CHIP_RV770_9456, RES_SHARED_VGA }, + { PCI_CHIP_RV770_945A, PCI_CHIP_RV770_945A, RES_SHARED_VGA }, + { PCI_CHIP_RV770_945B, PCI_CHIP_RV770_945B, RES_SHARED_VGA }, + { PCI_CHIP_RV730_9487, PCI_CHIP_RV730_9487, RES_SHARED_VGA }, + { PCI_CHIP_RV730_948F, PCI_CHIP_RV730_948F, RES_SHARED_VGA }, { PCI_CHIP_RV730_9490, PCI_CHIP_RV730_9490, RES_SHARED_VGA }, { PCI_CHIP_RV730_9498, PCI_CHIP_RV730_9498, RES_SHARED_VGA }, + { PCI_CHIP_RV730_949C, PCI_CHIP_RV730_949C, RES_SHARED_VGA }, + { PCI_CHIP_RV730_949E, PCI_CHIP_RV730_949E, RES_SHARED_VGA }, { PCI_CHIP_RV730_949F, PCI_CHIP_RV730_949F, RES_SHARED_VGA }, { PCI_CHIP_RV610_94C0, PCI_CHIP_RV610_94C0, RES_SHARED_VGA }, { PCI_CHIP_RV610_94C1, PCI_CHIP_RV610_94C1, RES_SHARED_VGA }, @@ -275,6 +290,12 @@ PciChipsets RADEONPciChipsets[] = { { PCI_CHIP_RV670_950F, PCI_CHIP_RV670_950F, RES_SHARED_VGA }, { PCI_CHIP_RV670_9511, PCI_CHIP_RV670_9511, RES_SHARED_VGA }, { PCI_CHIP_RV670_9515, PCI_CHIP_RV670_9515, RES_SHARED_VGA }, + { PCI_CHIP_RV710_9540, PCI_CHIP_RV710_9540, RES_SHARED_VGA }, + { PCI_CHIP_RV710_9541, PCI_CHIP_RV710_9541, RES_SHARED_VGA }, + { PCI_CHIP_RV710_954E, PCI_CHIP_RV710_954E, RES_SHARED_VGA }, + { PCI_CHIP_RV710_954F, PCI_CHIP_RV710_954F, RES_SHARED_VGA }, + { PCI_CHIP_RV710_9552, PCI_CHIP_RV710_9552, RES_SHARED_VGA }, + { PCI_CHIP_RV710_9553, PCI_CHIP_RV710_9553, RES_SHARED_VGA }, { PCI_CHIP_RV630_9580, PCI_CHIP_RV630_9580, RES_SHARED_VGA }, { PCI_CHIP_RV630_9581, PCI_CHIP_RV630_9581, RES_SHARED_VGA }, { PCI_CHIP_RV630_9583, PCI_CHIP_RV630_9583, RES_SHARED_VGA }, @@ -287,11 +308,12 @@ PciChipsets RADEONPciChipsets[] = { { PCI_CHIP_RV630_958C, PCI_CHIP_RV630_958C, RES_SHARED_VGA }, { PCI_CHIP_RV630_958D, PCI_CHIP_RV630_958D, RES_SHARED_VGA }, { PCI_CHIP_RV630_958E, PCI_CHIP_RV630_958E, RES_SHARED_VGA }, + { PCI_CHIP_RV710_9592, PCI_CHIP_RV710_9592, RES_SHARED_VGA }, { PCI_CHIP_RV620_95C0, PCI_CHIP_RV620_95C0, RES_SHARED_VGA }, - { PCI_CHIP_RV620_95C5, PCI_CHIP_RV620_95C5, RES_SHARED_VGA }, - { PCI_CHIP_RV620_95C7, PCI_CHIP_RV620_95C7, RES_SHARED_VGA }, { PCI_CHIP_RV620_95C2, PCI_CHIP_RV620_95C2, RES_SHARED_VGA }, { PCI_CHIP_RV620_95C4, PCI_CHIP_RV620_95C4, RES_SHARED_VGA }, + { PCI_CHIP_RV620_95C5, PCI_CHIP_RV620_95C5, RES_SHARED_VGA }, + { PCI_CHIP_RV620_95C7, PCI_CHIP_RV620_95C7, RES_SHARED_VGA }, { PCI_CHIP_RV620_95CD, PCI_CHIP_RV620_95CD, RES_SHARED_VGA }, { PCI_CHIP_RV620_95CE, PCI_CHIP_RV620_95CE, RES_SHARED_VGA }, { PCI_CHIP_RV620_95CF, PCI_CHIP_RV620_95CF, RES_SHARED_VGA }, diff --git a/src/radeon_pci_device_match_gen.h b/src/radeon_pci_device_match_gen.h index e05697b..878fe56 100644 --- a/src/radeon_pci_device_match_gen.h +++ b/src/radeon_pci_device_match_gen.h @@ -254,8 +254,23 @@ static const struct pci_id_match radeon_device_match[] = { ATI_DEVICE_MATCH( PCI_CHIP_RV770_9440, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV770_9441, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV770_9442, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_9444, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_9446, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_944A, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_944B, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_944C, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_944E, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_9450, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_9452, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_9456, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_945A, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV770_945B, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV730_9487, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV730_948F, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV730_9490, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV730_9498, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV730_949C, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV730_949E, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV730_949F, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C0, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV610_94C1, 0 ), @@ -275,6 +290,12 @@ static const struct pci_id_match radeon_device_match[] = { ATI_DEVICE_MATCH( PCI_CHIP_RV670_950F, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV670_9511, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV670_9515, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV710_9540, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV710_9541, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV710_954E, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV710_954F, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV710_9552, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV710_9553, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV630_9580, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV630_9581, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV630_9583, 0 ), @@ -287,11 +308,12 @@ static const struct pci_id_match radeon_device_match[] = { ATI_DEVICE_MATCH( PCI_CHIP_RV630_958C, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV630_958D, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV630_958E, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV710_9592, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV620_95C0, 0 ), - ATI_DEVICE_MATCH( PCI_CHIP_RV620_95C5, 0 ), - ATI_DEVICE_MATCH( PCI_CHIP_RV620_95C7, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV620_95C2, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV620_95C4, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV620_95C5, 0 ), + ATI_DEVICE_MATCH( PCI_CHIP_RV620_95C7, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV620_95CD, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV620_95CE, 0 ), ATI_DEVICE_MATCH( PCI_CHIP_RV620_95CF, 0 ), commit b2b43905a5385a8bb0b59b8e50952863d8dacb59 Author: Alex Deucher <[email protected]> Date: Wed Dec 17 00:59:52 2008 -0500 -- To UNSUBSCRIBE, email to [email protected] with a subject of "unsubscribe". Trouble? Contact [email protected]

