xf86-video-intel: 3 commits - src/i830_debug.c src/i830_display.c src/i830_memory.c src/i830_sdvo.c
Zhenyu Wang
zhen at kemper.freedesktop.org
Mon Feb 4 17:09:18 PST 2008
src/i830_debug.c | 6 +++++-
src/i830_display.c | 6 +++++-
src/i830_memory.c | 14 +++++++++-----
src/i830_sdvo.c | 16 ++++++++++++----
4 files changed, 31 insertions(+), 11 deletions(-)
New commits:
commit 9536515d7717969795edc1b80d6e6a36820dd575
Author: Hong Liu <hong.liu at intel.com>
Date: Tue Feb 5 09:06:14 2008 +0800
Allow non-strict free order for bo_list
diff --git a/src/i830_memory.c b/src/i830_memory.c
index 5dbafee..e24e526 100644
--- a/src/i830_memory.c
+++ b/src/i830_memory.c
@@ -274,12 +274,16 @@ i830_free_memory(ScrnInfoPtr pScrn, i830_memory *mem)
I830Ptr pI830 = I830PTR(pScrn);
drmBOUnreference(pI830->drmSubFD, &mem->bo);
- if (pI830->bo_list == mem)
+ if (pI830->bo_list == mem) {
pI830->bo_list = mem->next;
- if (mem->next)
- mem->next->prev = NULL;
- if (mem->prev)
- mem->prev->next = NULL;
+ if (mem->next)
+ mem->next->prev = NULL;
+ } else {
+ if (mem->prev)
+ mem->prev->next = mem->next;
+ if (mem->next)
+ mem->next->prev = mem->prev;
+ }
xfree(mem->name);
xfree(mem);
return;
commit 11de831cb706025c003e98fef6d666d273192bcd
Author: Hong Liu <hong.liu at intel.com>
Date: Tue Feb 5 08:58:44 2008 +0800
Bug 10584: Mac Mini EDID data assigned to TMDS output
EDID data for TMDS output got from crt should be applied
to TMDS output on mac mini.
diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index 4b04994..c7cbfac 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -1100,8 +1100,10 @@ i830_sdvo_get_modes(xf86OutputPtr output)
{
ScrnInfoPtr pScrn = output->scrn;
xf86CrtcConfigPtr xf86_config = XF86_CRTC_CONFIG_PTR(pScrn);
- DisplayModePtr modes;
+ DisplayModePtr modes = NULL;
xf86OutputPtr crt;
+ I830OutputPrivatePtr intel_output;
+ xf86MonPtr edid_mon = NULL;
modes = i830_ddc_get_modes(output);
if (modes != NULL)
@@ -1113,11 +1115,17 @@ i830_sdvo_get_modes(xf86OutputPtr output)
* analog when we fail at finding it the right way.
*/
crt = xf86_config->output[0];
- if (crt->funcs->detect(crt) == XF86OutputStatusDisconnected) {
- return crt->funcs->get_modes(crt);
+ intel_output = crt->driver_private;
+ if (intel_output->type == I830_OUTPUT_ANALOG &&
+ crt->funcs->detect(crt) == XF86OutputStatusDisconnected) {
+ edid_mon = xf86OutputGetEDID(crt, intel_output->pDDCBus);
+ }
+ if (edid_mon) {
+ xf86OutputSetEDID(output, edid_mon);
+ modes = xf86OutputGetEDIDModes(output);
}
- return NULL;
+ return modes;
}
static void
commit 95327571134d8ebb9d936d80b70c2f642393aa9f
Author: Hong Liu <hong.liu at intel.com>
Date: Mon Feb 4 17:14:23 2008 +0800
Bug 10773: fix i8xx pll p2 value in i830_crtc_clock_get()
Also fix debug dump, slightly modified to use macro instead.
diff --git a/src/i830_debug.c b/src/i830_debug.c
index 8f8ef9b..5b70cd9 100644
--- a/src/i830_debug.c
+++ b/src/i830_debug.c
@@ -191,7 +191,11 @@ DEBUGSTRING(i830_debug_dpll)
mode = "LVDS";
p1 = ffs((val & DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS) >>
DPLL_FPA01_P1_POST_DIV_SHIFT);
- p2 = 14;
+ if ((INREG(LVDS) & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP)
+ p2 = I8XX_P2_LVDS_SLOW;
+ else
+ p2 = I8XX_P2_LVDS_FAST;
+
} else {
mode = "DAC/serial";
if (val & PLL_P1_DIVIDE_BY_TWO) {
diff --git a/src/i830_display.c b/src/i830_display.c
index 39f3637..a4916d0 100644
--- a/src/i830_display.c
+++ b/src/i830_display.c
@@ -1708,7 +1708,11 @@ i830_crtc_clock_get(ScrnInfoPtr pScrn, xf86CrtcPtr crtc)
if (is_lvds) {
clock.p1 = ffs((dpll & DPLL_FPA01_P1_POST_DIV_MASK_I830_LVDS) >>
DPLL_FPA01_P1_POST_DIV_SHIFT);
- clock.p2 = 14;
+
+ if ((INREG(LVDS) & LVDS_CLKB_POWER_MASK) == LVDS_CLKB_POWER_UP)
+ clock.p2 = I8XX_P2_LVDS_SLOW;
+ else
+ clock.p2 = I8XX_P2_LVDS_FAST;
if ((dpll & PLL_REF_INPUT_MASK) == PLLB_REF_INPUT_SPREADSPECTRUMIN)
i8xx_clock(66000, &clock); /* XXX: might not be 66MHz */
More information about the xorg-commit
mailing list