xf86-video-intel: Branch 'modesetting-airlied' - 7 commits - src/ch7xxx/ch7xxx.c src/ch7xxx/ch7xxx_reg.h src/common.h src/i2c_vid.h src/i810_reg.h src/i830_driver.c src/i830_modes.c src/i830_raw.c src/i830_sdvo.c src/Makefile.am src/sil164/sil164.c
Dave Airlie
airlied at kemper.freedesktop.org
Wed Jul 5 09:30:26 EEST 2006
src/Makefile.am | 2
src/ch7xxx/ch7xxx.c | 113 ++++++++++++++++++++++++++++++++++++++++--------
src/ch7xxx/ch7xxx_reg.h | 50 +++++++++++++++++++--
src/common.h | 2
src/i2c_vid.h | 4 -
src/i810_reg.h | 14 -----
src/i830_driver.c | 18 +++----
src/i830_modes.c | 11 +---
src/i830_raw.c | 38 ++++++++++++----
src/i830_sdvo.c | 51 ---------------------
src/sil164/sil164.c | 2
11 files changed, 186 insertions(+), 119 deletions(-)
New commits:
diff-tree 5dff1a1e20e1d428a48cec03e872df2b1b4ea530 (from 29612720709bef2f416b417b227afdab8c686563)
Author: Dave Airlie <airlied at linux.ie>
Date: Wed Jul 5 16:26:44 2006 +1000
raw modesetting callouts for i2c
Add callouts for DVO code for raw modesetting
diff --git a/src/i830_raw.c b/src/i830_raw.c
index bd88004..f4af7f6 100644
--- a/src/i830_raw.c
+++ b/src/i830_raw.c
@@ -423,16 +423,18 @@ I830RawSetHw(ScrnInfoPtr pScrn, DisplayM
*dpll &= ~DPLL_2X_CLOCK_ENABLE;
for (i=0; i<pI830->num_outputs; i++)
{
- if (pI830->output[i].sdvo_drv)
+ if (pI830->output[i].sdvo_drv || pI830->output[i].i2c_drv)
*dpll |= DPLL_2X_CLOCK_ENABLE;
}
- /* leave these alone for now */
- if (pMode->PrivFlags & I830_MFLAG_DOUBLE)
- new_dvo = 0x81c80080;
- else
- new_dvo = 0x80480080;
if (IS_I9XX(pI830)) {
+ /* leave these alone for now */
+ if (pMode->PrivFlags & I830_MFLAG_DOUBLE)
+ new_dvo = 0x81c80080;
+ else
+ new_dvo = 0x80480080;
+
+
for (i = 0; i < pI830->num_outputs; i++)
{
if (pI830->output[i].sdvo_drv)
@@ -448,8 +450,10 @@ I830RawSetHw(ScrnInfoPtr pScrn, DisplayM
}
}
}
- else
+ else {
+ new_dvo = 0x8000408c;
hw->dvoc = new_dvo;
+ }
// hw->dvob &= ~DVO_ENABLE;
//hw->dvoc &= ~DVO_ENABLE;
// hw->dvoc |= 0x4084 | DVO_ENABLE;
@@ -793,6 +797,12 @@ I830RawSaveState(ScrnInfoPtr pScrn, I830
hw->swf1x[count++] = INREG(i);
for (i = 0; i < pI830->num_outputs; i++) {
+ if (pI830->output[i].type == I830_OUTPUT_DVO &&
+ pI830->output[i].i2c_drv != NULL)
+ {
+ pI830->output[i].i2c_drv->vid_rec->SaveRegs(pI830->output[i].i2c_drv->devpriv);
+ }
+
if (pI830->output[i].type == I830_OUTPUT_SDVO &&
pI830->output[i].sdvo_drv != NULL)
{
@@ -821,6 +831,12 @@ I830RawRestoreState(ScrnInfoPtr pScrn, I
vgaHWLock(hwp);
for (i = 0; i < pI830->num_outputs; i++) {
+ if (pI830->output[i].type == I830_OUTPUT_DVO &&
+ pI830->output[i].i2c_drv != NULL)
+ {
+ pI830->output[i].i2c_drv->vid_rec->RestoreRegs(pI830->output[i].i2c_drv->devpriv);
+ }
+
if (pI830->output[i].type == I830_OUTPUT_SDVO &&
pI830->output[i].sdvo_drv != NULL)
{
@@ -988,6 +1004,11 @@ I830RawSetMode(ScrnInfoPtr pScrn, Displa
else
ret = TRUE;
}
+
+ if (pI830->output[i].i2c_drv)
+ {
+ pI830->output[i].i2c_drv->vid_rec->Mode(pI830->output[i].i2c_drv->devpriv, mode);
+ }
}
if (didLock)
I830DRIUnlock(pScrn);
diff-tree 29612720709bef2f416b417b227afdab8c686563 (from 29329dd5cfd26caa1982e2ab3c2c3a2e4c8c95a8)
Author: Dave Airlie <airlied at linux.ie>
Date: Wed Jul 5 16:23:12 2006 +1000
Add support for dumping i2c registers
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 75e5b65..1583d39 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -320,6 +320,8 @@ I830DumpModeDebugInfo(ScrnInfoPtr pScrn)
CARD32 temp, planeA, planeB;
planeA = INREG(DSPACNTR);
planeB = INREG(DSPBCNTR);
+ int i;
+
#if 1
DR(ADPA);
@@ -467,16 +469,14 @@ I830DumpModeDebugInfo(ScrnInfoPtr pScrn)
DR(0x240c);
-#if 0
- if (pI830->sdvo && pI830->sdvo->found) {
- I830SDVOWriteCommand10(pI830->sdvo);
- I830SDVOWriteCommand18(pI830->sdvo);
- I830SDVOWriteCommand10(pI830->sdvo);
- I830SDVOWriteCommand19(pI830->sdvo);
- I830SDVOWriteCommand10(pI830->sdvo);
+ for (i=0; i<pI830->num_outputs; i++) {
+ if (pI830->output[i].type == I830_OUTPUT_DVO &&
+ pI830->output[i].i2c_drv != NULL)
+ {
+ pI830->output[i].i2c_drv->vid_rec->PrintRegs(pI830->output[i].i2c_drv->devpriv);
+ }
}
#endif
-#endif
}
/* XXX Check if this is still needed. */
diff-tree 29329dd5cfd26caa1982e2ab3c2c3a2e4c8c95a8 (from c25f3758ee410a4a3385c6c4ea2b95254f3f43b0)
Author: Dave Airlie <airlied at linux.ie>
Date: Wed Jul 5 16:22:55 2006 +1000
i810: add register from intel
diff --git a/src/i810_reg.h b/src/i810_reg.h
index 6b8299d..862ea4c 100644
--- a/src/i810_reg.h
+++ b/src/i810_reg.h
@@ -692,6 +692,7 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
#define DPLL_P2_MASK 1
#define DPLL_P2_SHIFT 23
#define DPLL_I9XX_P2_SHIFT 24
+#define DPLL_P2_DIVIDE_BY_4 (1 << 23) /* i830, required in DVO non-gang */
#define DPLL_P1_FORCE_DIV2 (1 << 21)
#define DPLL_P1_MASK 0x1f
#define DPLL_P1_SHIFT 16
diff-tree c25f3758ee410a4a3385c6c4ea2b95254f3f43b0 (from 44ec07919183b2dc16aca6d710d0c1f941e006cb)
Author: Dave Airlie <airlied at linux.ie>
Date: Wed Jul 5 16:22:34 2006 +1000
i2c_vid: change some prototypes
change some prototypes
diff --git a/src/i2c_vid.h b/src/i2c_vid.h
index 69fa969..fbf7284 100644
--- a/src/i2c_vid.h
+++ b/src/i2c_vid.h
@@ -7,9 +7,9 @@ typedef struct _I830I2CVidOutputRec {
Bool (*Init)(I2CDevPtr d);
ModeStatus (*ModeValid)(I2CDevPtr d, DisplayModePtr mode);
void (*Mode)(I2CDevPtr d, DisplayModePtr mode);
- void (*Power)(I2CDevPtr d, DisplayModePtr mode);
+ void (*Power)(I2CDevPtr d, Bool On);
void (*PrintRegs)(I2CDevPtr d);
- void (*SaveRegs)(I2CDevPtr d);
+ void (*SaveRegs)(void *d);
void (*RestoreRegs)(I2CDevPtr d);
} I830I2CVidOutputRec, *I830I2CVidOutputPtr;
diff-tree 44ec07919183b2dc16aca6d710d0c1f941e006cb (from dd03e4852c0ff9d23ca7956e92e1bede5bec2365)
Author: Dave Airlie <airlied at linux.ie>
Date: Wed Jul 5 16:20:55 2006 +1000
ch7xxx: update ch7xxx driver support
This actually does some stuff with the ch7xxx registers
diff --git a/src/ch7xxx/ch7xxx.c b/src/ch7xxx/ch7xxx.c
index bb902a1..77c49b5 100644
--- a/src/ch7xxx/ch7xxx.c
+++ b/src/ch7xxx/ch7xxx.c
@@ -32,10 +32,20 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
#include "miscstruct.h"
#include "xf86i2c.h"
+#include <string.h>
+
#include "../i2c_vid.h"
#include "ch7xxx.h"
#include "ch7xxx_reg.h"
+static void ch7xxxSaveRegs(void *d);
+
+static CARD8 ch7xxxFreqRegs[][7] =
+ { { 0, 0x23, 0x08, 0x16, 0x30, 0x60, 0x00 },
+ { 0, 0x23, 0x04, 0x26, 0x30, 0x60, 0x00 },
+ { 0, 0x2D, 0x07, 0x26, 0x30, 0xE0, 0x00 } };
+
+
static Bool ch7xxxReadByte(CH7xxxPtr ch7xxx, int addr, unsigned char *ch)
{
if (!xf86I2CReadByte(&(ch7xxx->d), addr, ch)) {
@@ -79,6 +89,7 @@ static void *ch7xxxDetect(I2CBusPtr b, I
if (!ch7xxxReadByte(ch7xxx, CH7xxx_REG_VID, &ch))
goto out;
+ ErrorF("VID is %02X", ch);
if (ch!=(CH7xxx_VID & 0xFF))
{
xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR, "ch7xxx not detected got %d: from %s Slave %d.\n", ch, ch7xxx->d.pI2CBus->BusName, ch7xxx->d.SlaveAddr);
@@ -89,6 +100,7 @@ static void *ch7xxxDetect(I2CBusPtr b, I
if (!ch7xxxReadByte(ch7xxx, CH7xxx_REG_DID, &ch))
goto out;
+ ErrorF("DID is %02X", ch);
if (ch!=(CH7xxx_DID & 0xFF))
{
xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR, "ch7xxx not detected got %d: from %s Slave %d.\n", ch, ch7xxx->d.pI2CBus->BusName, ch7xxx->d.SlaveAddr);
@@ -127,7 +139,62 @@ static ModeStatus ch7xxxModeValid(I2CDev
static void ch7xxxMode(I2CDevPtr d, DisplayModePtr mode)
{
CH7xxxPtr ch7xxx = CH7PTR(d);
+ int ret;
+ unsigned char pm, idf;
+ unsigned char tpcp, tpd, tpf, cm;
+ CARD8 *freq_regs;
+ int i;
+ ErrorF("Clock is %d\n", mode->Clock);
+
+ if (mode->Clock < 75000)
+ freq_regs = ch7xxxFreqRegs[0];
+ else if (mode->Clock < 125000)
+ freq_regs = ch7xxxFreqRegs[1];
+ else
+ freq_regs = ch7xxxFreqRegs[2];
+
+ for (i = 0x31; i < 0x37; i++) {
+ ch7xxx->ModeReg.regs[i] = freq_regs[i - 0x31];
+ ch7xxxWriteByte(ch7xxx, i, ch7xxx->ModeReg.regs[i]);
+ }
+
+#if 0
+ xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR, "ch7xxx idf is 0x%02x, 0x%02x, 0x%02x, 0x%02x\n", idf, tpcp, tpd, tpf);
+
+ xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR, "ch7xxx pm is %02X\n", pm);
+
+ if (mode->Clock < 65000) {
+ tpcp = 0x08;
+ tpd = 0x16;
+ tpf = 0x60;
+ } else {
+ tpcp = 0x06;
+ tpd = 0x26;
+ tpf = 0xa0;
+ }
+
+ idf &= ~(CH7xxx_IDF_HSP | CH7xxx_IDF_VSP);
+ if (mode->Flags & V_PHSYNC)
+ idf |= CH7xxx_IDF_HSP;
+
+ if (mode->Flags & V_PVSYNC)
+ idf |= CH7xxx_IDF_HSP;
+
+ /* setup PM Registers */
+ pm &= ~CH7xxx_PM_FPD;
+ pm |= CH7xxx_PM_DVIL | CH7xxx_PM_DVIP;
+
+ // cm |= 1;
+
+ ch7xxxWriteByte(ch7xxx, CH7xxx_CM, cm);
+ ch7xxxWriteByte(ch7xxx, CH7xxx_TPCP, tpcp);
+ ch7xxxWriteByte(ch7xxx, CH7xxx_TPD, tpd);
+ ch7xxxWriteByte(ch7xxx, CH7xxx_TPF, tpf);
+ ch7xxxWriteByte(ch7xxx, CH7xxx_TPF, idf);
+ ch7xxxWriteByte(ch7xxx, CH7xxx_PM, pm);
+
+#endif
/* don't do much */
return;
}
@@ -138,6 +205,14 @@ static void ch7xxxPower(I2CDevPtr d, Boo
CH7xxxPtr ch7xxx = CH7PTR(d);
int ret;
unsigned char ch;
+
+
+ ret = ch7xxxReadByte(ch7xxx, CH7xxx_PM, &ch);
+ if (ret == FALSE)
+ return;
+
+ xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR, "ch7xxx pm is %02X\n", ch);
+
#if 0
ret = ch7xxxReadByte(ch7xxx, CH7xxx_REG8, &ch);
if (ret)
@@ -156,31 +231,33 @@ static void ch7xxxPower(I2CDevPtr d, Boo
static void ch7xxxPrintRegs(I2CDevPtr d)
{
CH7xxxPtr ch7xxx = CH7PTR(d);
+ int i;
+
+ ch7xxxSaveRegs(d);
+
+ for (i = 0; i < CH7xxx_NUM_REGS; i++) {
+ if (( i % 8 ) == 0 )
+ ErrorF("\n %02X: ", i);
+ ErrorF("%02X ", ch7xxx->ModeReg.regs[i]);
+
+ }
}
-static void ch7xxxSaveRegs(I2CDevPtr d)
+static void ch7xxxSaveRegs(void *d)
{
- CH7xxxPtr ch7xxx = CH7PTR(d);
-
-#if 0
- if (!ch7xxxReadByte(ch7xxx, CH7xxx_FREQ_LO, &ch7xxx->SavedReg.freq_lo))
- return;
+ CH7xxxPtr ch7xxx = CH7PTR(((I2CDevPtr)d));
+ int ret;
+ int i;
- if (!ch7xxxReadByte(ch7xxx, CH7xxx_FREQ_HI, &ch7xxx->SavedReg.freq_hi))
- return;
+ for (i = 0; i < CH7xxx_NUM_REGS; i++) {
+ ret = ch7xxxReadByte(ch7xxx, i, &ch7xxx->SavedReg.regs[i]);
+ if (ret == FALSE)
+ break;
+ }
- if (!ch7xxxReadByte(ch7xxx, CH7xxx_REG8, &ch7xxx->SavedReg.reg8))
- return;
-
- if (!ch7xxxReadByte(ch7xxx, CH7xxx_REG9, &ch7xxx->SavedReg.reg9))
- return;
+ memcpy(ch7xxx->ModeReg.regs, ch7xxx->SavedReg.regs, CH7xxx_NUM_REGS);
- if (!ch7xxxReadByte(ch7xxx, CH7xxx_REGC, &ch7xxx->SavedReg.regc))
- return;
-
-#endif
return;
-
}
I830I2CVidOutputRec CH7xxxVidOutput = {
diff --git a/src/ch7xxx/ch7xxx_reg.h b/src/ch7xxx/ch7xxx_reg.h
index 4b17314..59de13b 100644
--- a/src/ch7xxx/ch7xxx_reg.h
+++ b/src/ch7xxx/ch7xxx_reg.h
@@ -29,15 +29,19 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#define CH7xxx_REG_VID 0x4a
#define CH7xxx_REG_DID 0x4b
+
+#define CH7011_VID 0x83
+#define CH7009A_VID 0x84
+#define CH7009B_VID 0x85
+#define CH7301_VID 0x95
+
#define CH7xxx_VID 0x84
#define CH7xxx_DID 0x17
+#define CH7xxx_NUM_REGS 0x4c
+
typedef struct _CH7xxxSaveRec {
- CARD8 freq_lo;
- CARD8 freq_hi;
- CARD8 reg8;
- CARD8 reg9;
- CARD8 regc;
+ CARD8 regs[CH7xxx_NUM_REGS];
} CH7xxxSaveRec;
typedef struct {
@@ -48,4 +52,40 @@ typedef struct {
#define CH7PTR(d) ((CH7xxxPtr)(d->DriverPrivate.ptr))
+#define CH7xxx_CM 0x1C
+#define CH7xxx_CM_XCM (1<<0)
+#define CH7xxx_CM_MCP (1<<2)
+#define CH7xxx_INPUT_CLOCK 0x1D
+#define CH7xxx_GPIO 0x1E
+#define CH7xxx_IDF 0x1F
+
+#define CH7xxx_IDF_HSP (1<<3)
+#define CH7xxx_IDF_VSP (1<<4)
+
+#define CH7301_CONNECTION_DETECT 0x20
+#define CH7301_DAC_CNTL 0x21
+#define CH7301_HOTPLUG 0x23
+#define CH7xxx_TCTL 0x31
+#define CH7xxx_TPCP 0x33
+#define CH7xxx_TPD 0x34
+#define CH7xxx_TPVT 0x35
+#define CH7xxx_TPF 0x36
+#define CH7301_TCT 0x37
+#define CH7301_TEST_PATTERN 0x48
+#define CH7xxx_PM 0x49
+
+#define CH7xxx_PM_FPD (1<<0)
+#define CH7301_PM_DACPD0 (1<<1)
+#define CH7301_PM_DACPD1 (1<<2)
+#define CH7301_PM_DACPD2 (1<<3)
+#define CH7xxx_PM_DVIL (1<<6)
+#define CH7xxx_PM_DVIP (1<<7)
+
+#define CH7301_SYNC_POLARITY 0x56
+
+#define CH7301_SYNC_RGB_YUV (1<<0)
+#define CH7301_SYNC_POL_DVI (1<<5)
+
+
+
#endif
diff-tree dd03e4852c0ff9d23ca7956e92e1bede5bec2365 (from 064d0612f91e3fe051484f41ebeec3d6d0fa2768)
Author: Dave Airlie <airlied at linux.ie>
Date: Wed Jul 5 16:20:18 2006 +1000
sil164: fix return value check
this fixes a bad return value in sil164
diff --git a/src/sil164/sil164.c b/src/sil164/sil164.c
index 5c57082..5e35323 100644
--- a/src/sil164/sil164.c
+++ b/src/sil164/sil164.c
@@ -140,7 +140,7 @@ static void sil164Power(I2CDevPtr d, Boo
unsigned char ch;
ret = sil164ReadByte(sil, SIL164_REG8, &ch);
- if (ret)
+ if (ret == FALSE)
return;
if (On)
diff-tree 064d0612f91e3fe051484f41ebeec3d6d0fa2768 (from bb5c35484154494439288f87ca3ed6fd7f1207c1)
Author: Dave Airlie <airlied at linux.ie>
Date: Wed Jul 5 16:29:57 2006 +1000
Revert "Dump out registers so we can diff against modesetting branch"
This reverts bb5c35484154494439288f87ca3ed6fd7f1207c1 commit.
Get of my branch :-), also missed some added files breaks my build
diff --git a/src/Makefile.am b/src/Makefile.am
index b4dc72b..6dc3d57 100644
--- a/src/Makefile.am
+++ b/src/Makefile.am
@@ -46,8 +46,6 @@ i810_drv_la_SOURCES = \
i830_accel.c \
i830_common.h \
i830_cursor.c \
- i830_debug.c \
- i830_debug.h \
i830_dga.c \
i830_driver.c \
i830.h \
diff --git a/src/common.h b/src/common.h
index 18f67ff..316be13 100644
--- a/src/common.h
+++ b/src/common.h
@@ -1,4 +1,4 @@
-#define I830DEBUG
+
/**************************************************************************
Copyright 1998-1999 Precision Insight, Inc., Cedar Park, Texas.
diff --git a/src/i810_reg.h b/src/i810_reg.h
index a3cd95d..6b8299d 100644
--- a/src/i810_reg.h
+++ b/src/i810_reg.h
@@ -711,19 +711,6 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
#define FP_M1_DIVISOR_SHIFT 8
#define FP_M2_DIVISOR_SHIFT 0
-#define PORT_HOTPLUG_EN 0x61110
-# define SDVOB_HOTPLUG_INT_EN (1 << 26)
-# define SDVOC_HOTPLUG_INT_EN (1 << 25)
-# define TV_HOTPLUG_INT_EN (1 << 18)
-# define CRT_HOTPLUG_INT_EN (1 << 9)
-# define CRT_HOTPLUG_FORCE_DETECT (1 << 3)
-
-#define PORT_HOTPLUG_STAT 0x61114
-# define CRT_HOTPLUG_INT_STATUS (1 << 11)
-# define TV_HOTPLUG_INT_STATUS (1 << 10)
-# define SDVOC_HOTPLUG_INT_STATUS (1 << 7)
-# define SDVOB_HOTPLUG_INT_STATUS (1 << 6)
-
#define I830_HTOTAL_MASK 0xfff0000
#define I830_HACTIVE_MASK 0x7ff
diff --git a/src/i830_driver.c b/src/i830_driver.c
index 3d518fd..75e5b65 100644
--- a/src/i830_driver.c
+++ b/src/i830_driver.c
@@ -184,7 +184,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
#include "vbeModes.h"
#include "shadow.h"
#include "i830.h"
-#include "i830_debug.h"
#ifdef XF86DRI
#include "dri.h"
@@ -4773,7 +4772,6 @@ I830VESASetMode(ScrnInfoPtr pScrn, Displ
}
#endif
- i830DumpRegs (pScrn);
#if MODESWITCH_RESET_STATE
ResetState(pScrn, TRUE);
SetHWOperatingState(pScrn);
diff --git a/src/i830_modes.c b/src/i830_modes.c
index b866675..8323acd 100644
--- a/src/i830_modes.c
+++ b/src/i830_modes.c
@@ -895,10 +895,8 @@ DisplayModePtr I830xf86DDCModes(ScrnInfo
count++;
xf86DrvMsg(pScrn->scrnIndex, X_INFO,
- "Valid Mode from Detailed timing table: %s (ht %d hss %d hse %d vt %d vss %d vse %d)\n",
- new->name,
- new->HTotal, new->HSyncStart, new->HSyncEnd,
- new->VTotal, new->VSyncStart, new->VSyncEnd);
+ "Valid Mode from Detailed timing table: %s\n",
+ new->name);
I830xf86SortModes(&new, &first, &last);
}
@@ -914,11 +912,8 @@ DisplayModePtr I830xf86DDCModes(ScrnInfo
(ddc->timings2[j].vsize == p->VDisplay)) {
float refresh =
(float)p->Clock * 1000.0 / p->HTotal / p->VTotal;
- float err = (float)ddc->timings2[j].refresh - refresh;
- if (err < 0) err = -err;
-
- if (err < 1.0) {
+ if (abs((float)ddc->timings2[j].refresh - refresh) < 1.0) {
/* Is this good enough? */
new = xnfcalloc(1, sizeof (DisplayModeRec));
memcpy(new, p, sizeof(DisplayModeRec));
diff --git a/src/i830_raw.c b/src/i830_raw.c
index 201f734..bd88004 100644
--- a/src/i830_raw.c
+++ b/src/i830_raw.c
@@ -541,7 +541,8 @@ I830RawSetHw(ScrnInfoPtr pScrn, DisplayM
return FALSE;
*ht = (htotal << HTOTAL_SHIFT) | (hactive << HACTIVE_SHIFT);
- *hb = (hblank_start << HBLANKSTART_SHIFT) | (hblank_end << HBLANKEND_SHIFT);
+ *hb = (hblank_start << HBLANKSTART_SHIFT) |
+ (hblank_end << HSYNCEND_SHIFT);
*hs = (hsync_start << HSYNCSTART_SHIFT) | (hsync_end << HSYNCEND_SHIFT);
*vt = (vtotal << VTOTAL_SHIFT) | (vactive << VACTIVE_SHIFT);
diff --git a/src/i830_sdvo.c b/src/i830_sdvo.c
index 2a31c5a..726f28f 100644
--- a/src/i830_sdvo.c
+++ b/src/i830_sdvo.c
@@ -857,54 +857,3 @@ I830SDVOInit(ScrnInfoPtr pScrn, int outp
return sdvo;
}
-
-
-static void
-I830DumpSDVOCmd (I830SDVOPtr s, int opcode)
-{
- memset (s->sdvo_regs, 0, sizeof (s->sdvo_regs));
- s->sdvo_regs[SDVO_I2C_OPCODE] = opcode;
- I830SDVOWriteOutputs (s, 0);
- I830SDVOReadInputRegs (s);
-}
-
-static void
-I830DumpOneSDVO (I830SDVOPtr s)
-{
- ErrorF ("Dump %s\n", s->d.DevName);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_DEVICE_CAPS);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_FIRMWARE_REV);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_TRAINED_INPUTS);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_ACTIVE_OUTPUTS);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_IN_OUT_MAP);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_ATTACHED_DISPLAYS);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_HOT_PLUG_SUPPORT);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_ACTIVE_HOT_PLUG);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_INTR_EVENT_SOURCE);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_INPUT_TIMINGS_PART1);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_INPUT_TIMINGS_PART2);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_OUTPUT_TIMINGS_PART1);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_OUTPUT_TIMINGS_PART2);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART1);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_PREFERRED_INPUT_TIMING_PART2);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_INPUT_PIXEL_CLOCK_RANGE);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_OUTPUT_PIXEL_CLOCK_RANGE);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_SUPPORTED_CLOCK_RATE_MULTS);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_CLOCK_RATE_MULT);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_SUPPORTED_TV_FORMATS);
- I830DumpSDVOCmd (s, SDVO_CMD_GET_TV_FORMAT);
-}
-
-void
-I830DumpSDVO (ScrnInfoPtr pScrn)
-{
- I830Ptr pI830 = I830PTR(pScrn);
- I830SDVOPtr s;
- int i;
-
- for (i = 0; i < 4; i++) {
- s = pI830->output[i].sdvo_drv;
- if (s)
- I830DumpOneSDVO (s);
- }
-}
More information about the xorg-commit
mailing list