xf86-video-intel: Branch 'modesetting' - 6 commits - src/ch7xxx/ch7xxx.c src/ch7xxx/ch7xxx_reg.h src/i830_dvo.c

Eric Anholt anholt at kemper.freedesktop.org
Tue Dec 19 00:48:03 EET 2006


 src/ch7xxx/ch7xxx.c     |  259 ++++++++++++++++++++++--------------------------
 src/ch7xxx/ch7xxx_reg.h |   19 ---
 src/i830_dvo.c          |    8 -
 3 files changed, 130 insertions(+), 156 deletions(-)

New commits:
diff-tree 0305298405bd7018e5c520bdd5ea46a75be09f37 (from 23114fbccad849249b4b7200e3d085a9ac0e2e99)
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Dec 18 14:49:01 2006 -0800

    Limit modes to 165Mhz on CH7009, according to spec.

diff --git a/src/ch7xxx/ch7xxx.c b/src/ch7xxx/ch7xxx.c
index e4b21f2..d31a38c 100644
--- a/src/ch7xxx/ch7xxx.c
+++ b/src/ch7xxx/ch7xxx.c
@@ -157,6 +157,9 @@ ch7xxx_init(I2CDevPtr d)
 static ModeStatus
 ch7xxx_mode_valid(I2CDevPtr d, DisplayModePtr mode)
 {
+    if (mode->Clock > 165000)
+	return MODE_CLOCK_HIGH;
+
     return MODE_OK;
 }
 
diff-tree 23114fbccad849249b4b7200e3d085a9ac0e2e99 (from 633d718f6fb019844304228a81c84a8605da004f)
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Dec 18 14:47:44 2006 -0800

    Align the driver to the CH7009[AB] spec.
    
    With this, the driver works at 640x480 and 1280x1024 on my panel.

diff --git a/src/ch7xxx/ch7xxx.c b/src/ch7xxx/ch7xxx.c
index 59722b8..e4b21f2 100644
--- a/src/ch7xxx/ch7xxx.c
+++ b/src/ch7xxx/ch7xxx.c
@@ -50,7 +50,7 @@ struct ch7xxx_priv {
     struct ch7xxx_reg_state SavedReg;
     struct ch7xxx_reg_state ModeReg;
     CARD8 save_TCTL, save_TPCP, save_TPD, save_TPVT;
-    CARD8 save_TPF, save_TCT, save_PM;
+    CARD8 save_TLPF, save_TCT, save_PM, save_IDF;
 };
 
 static void ch7xxx_save(I2CDevPtr d);
@@ -164,44 +164,30 @@ static void
 ch7xxx_mode_set(I2CDevPtr d, DisplayModePtr mode)
 {
     struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
-    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++) {
-	dev_priv->ModeReg.regs[i] = freq_regs[i - 0x31];
-	ch7xxx_write(dev_priv, i, dev_priv->ModeReg.regs[i]);
-    }
-
-#if 0
-    xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
-	       "ch7xxx idf is 0x%02x, 0x%02x, 0x%02x, 0x%02x\n",
-	       idf, tpcp, tpd, tpf);
+    CARD8 tvco, tpcp, tpd, tlpf, idf;
 
-    xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
-	       "ch7xxx pm is %02X\n", pm);
-
-    if (mode->Clock < 65000) {
+    if (mode->Clock <= 65000) {
+	tvco = 0x23;
 	tpcp = 0x08;
 	tpd = 0x16;
-	tpf = 0x60;
+	tlpf = 0x60;
     } else {
+	tvco = 0x2d;
 	tpcp = 0x06;
 	tpd = 0x26;
-	tpf = 0xa0;
+	tlpf = 0xa0;
     }
 
+    ch7xxx_write(dev_priv, CH7xxx_TCTL, 0x00);
+    ch7xxx_write(dev_priv, CH7xxx_TVCO, tvco);
+    ch7xxx_write(dev_priv, CH7xxx_TPCP, tpcp);
+    ch7xxx_write(dev_priv, CH7xxx_TPD, tpd);
+    ch7xxx_write(dev_priv, CH7xxx_TPVT, 0x30);
+    ch7xxx_write(dev_priv, CH7xxx_TLPF, tlpf);
+    ch7xxx_write(dev_priv, CH7xxx_TCT, 0x00);
+
+    ch7xxx_read(dev_priv, CH7xxx_IDF, &idf);
+
     idf &= ~(CH7xxx_IDF_HSP | CH7xxx_IDF_VSP);
     if (mode->Flags & V_PHSYNC)
 	idf |= CH7xxx_IDF_HSP;
@@ -209,45 +195,19 @@ ch7xxx_mode_set(I2CDevPtr d, DisplayMode
     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; */
-
-    ch7xxx_write(dev_priv, CH7xxx_CM, cm);
-    ch7xxx_write(dev_priv, CH7xxx_TPCP, tpcp);
-    ch7xxx_write(dev_priv, CH7xxx_TPD, tpd);
-    ch7xxx_write(dev_priv, CH7xxx_TPF, tpf);
-    ch7xxx_write(dev_priv, CH7xxx_TPF, idf);
-    ch7xxx_write(dev_priv, CH7xxx_PM, pm);
-#endif
+    ch7xxx_write(dev_priv, CH7xxx_IDF, idf);
 }
 
 /* set the CH7xxx power state */
 static void
-ch7xxx_power(I2CDevPtr d, Bool On)
+ch7xxx_power(I2CDevPtr d, Bool on)
 {
     struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
-    int ret;
-    unsigned char ch;
-
-    ret = ch7xxx_read(dev_priv, CH7xxx_PM, &ch);
-    if (ret == FALSE)
-	return;
-
-#if 0
-    ret = ch7xxx_read(dev_priv, CH7xxx_REG8, &ch);
-    if (ret)
-	return;
 
-    if (On)
-	ch |= CH7xxx_8_PD;
+    if (on)
+	ch7xxx_write(dev_priv, CH7xxx_PM, CH7xxx_PM_DVIL | CH7xxx_PM_DVIP);
     else
-	ch &= ~CH7xxx_8_PD;
-
-    ch7xxx_write(dev_priv, CH7xxx_REG8, ch);
-#endif
+	ch7xxx_write(dev_priv, CH7xxx_PM, CH7xxx_PM_FPD);
 }
 
 static void
@@ -267,34 +227,28 @@ static void
 ch7xxx_save(I2CDevPtr d)
 {
     struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
-    int ret;
-    int i;
 
-    ch7xxx_read(dev_priv, CH7xxx_PM, &dev_priv->save_PM);
     ch7xxx_read(dev_priv, CH7xxx_TCTL, &dev_priv->save_TCTL);
     ch7xxx_read(dev_priv, CH7xxx_TPCP, &dev_priv->save_TPCP);
     ch7xxx_read(dev_priv, CH7xxx_TPD, &dev_priv->save_TPD);
     ch7xxx_read(dev_priv, CH7xxx_TPVT, &dev_priv->save_TPVT);
-    ch7xxx_read(dev_priv, CH7xxx_TPF, &dev_priv->save_TPF);
-
-    return;
+    ch7xxx_read(dev_priv, CH7xxx_TLPF, &dev_priv->save_TLPF);
+    ch7xxx_read(dev_priv, CH7xxx_PM, &dev_priv->save_PM);
+    ch7xxx_read(dev_priv, CH7xxx_IDF, &dev_priv->save_IDF);
 }
 
 static void
 ch7xxx_restore(I2CDevPtr d)
 {
     struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
-    int ret;
-    int i;
 
     ch7xxx_write(dev_priv, CH7xxx_TCTL, dev_priv->save_TCTL);
     ch7xxx_write(dev_priv, CH7xxx_TPCP, dev_priv->save_TPCP);
     ch7xxx_write(dev_priv, CH7xxx_TPD, dev_priv->save_TPD);
     ch7xxx_write(dev_priv, CH7xxx_TPVT, dev_priv->save_TPVT);
-    ch7xxx_write(dev_priv, CH7xxx_TPF, dev_priv->save_TPF);
+    ch7xxx_write(dev_priv, CH7xxx_TLPF, dev_priv->save_TLPF);
+    ch7xxx_write(dev_priv, CH7xxx_IDF, dev_priv->save_IDF);
     ch7xxx_write(dev_priv, CH7xxx_PM, dev_priv->save_PM);
-
-    return;
 }
 
 I830I2CVidOutputRec CH7xxxVidOutput = {
diff --git a/src/ch7xxx/ch7xxx_reg.h b/src/ch7xxx/ch7xxx_reg.h
index 0a5f188..c626e1f 100644
--- a/src/ch7xxx/ch7xxx_reg.h
+++ b/src/ch7xxx/ch7xxx_reg.h
@@ -53,11 +53,12 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define CH7301_DAC_CNTL 0x21
 #define CH7301_HOTPLUG 0x23
 #define CH7xxx_TCTL 0x31
+#define CH7xxx_TVCO 0x32
 #define CH7xxx_TPCP 0x33
 #define CH7xxx_TPD 0x34
 #define CH7xxx_TPVT 0x35
-#define CH7xxx_TPF 0x36
-#define CH7301_TCT 0x37
+#define CH7xxx_TLPF 0x36
+#define CH7xxx_TCT 0x37
 #define CH7301_TEST_PATTERN 0x48
 #define CH7xxx_PM 0x49
 
diff-tree 633d718f6fb019844304228a81c84a8605da004f (from 3167bc6b24bd74c50ca4c4d361b14aa24d77cfa3)
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Dec 18 13:59:17 2006 -0800

    Clean up a bunch of log noise from ch7xxx startup.

diff --git a/src/ch7xxx/ch7xxx.c b/src/ch7xxx/ch7xxx.c
index 5213646..59722b8 100644
--- a/src/ch7xxx/ch7xxx.c
+++ b/src/ch7xxx/ch7xxx.c
@@ -93,10 +93,9 @@ ch7xxx_probe(I2CBusPtr b, I2CSlaveAddr a
 {
     /* this will detect the CH7xxx chip on the specified i2c bus */
     struct ch7xxx_priv *dev_priv;
+    CARD8 vendor, device;
     unsigned char ch;
 
-    xf86DrvMsg(b->scrnIndex, X_INFO, "detecting ch7xxx\n");
-
     dev_priv = xcalloc(1, sizeof(struct ch7xxx_priv));
     if (dev_priv == NULL)
 	return NULL;
@@ -110,29 +109,31 @@ ch7xxx_probe(I2CBusPtr b, I2CSlaveAddr a
     dev_priv->d.ByteTimeout = b->ByteTimeout;
     dev_priv->d.DriverPrivate.ptr = dev_priv;
 
-    if (!ch7xxx_read(dev_priv, CH7xxx_REG_VID, &ch))
+    if (!ch7xxx_read(dev_priv, CH7xxx_REG_VID, &vendor))
 	goto out;
 
-    ErrorF("VID is %02X", ch);
-    if (ch!=(CH7xxx_VID & 0xFF)) {
-	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
-		   "ch7xxx not detected got %d: from %s Slave %d.\n",
-		   ch, dev_priv->d.pI2CBus->BusName, dev_priv->d.SlaveAddr);
+    if (vendor != CH7xxx_VID) {
+	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_INFO,
+		   "ch7xxx not detected; got 0x%02x from %s slave %d.\n",
+		   vendor, dev_priv->d.pI2CBus->BusName,
+		   dev_priv->d.SlaveAddr);
 	goto out;
     }
 
 
-    if (!ch7xxx_read(dev_priv, CH7xxx_REG_DID, &ch))
+    if (!ch7xxx_read(dev_priv, CH7xxx_REG_DID, &device))
 	goto out;
 
-    ErrorF("DID is %02X", ch);
-    if (ch!=(CH7xxx_DID & 0xFF)) {
-	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
-		   "ch7xxx not detected got %d: from %s Slave %d.\n",
-		   ch, dev_priv->d.pI2CBus->BusName, dev_priv->d.SlaveAddr);
+    if (device != CH7xxx_DID) {
+	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_INFO,
+		   "ch7xxx not detected; got 0x%02x from %s slave %d.\n",
+		   device, dev_priv->d.pI2CBus->BusName,
+		   dev_priv->d.SlaveAddr);
 	goto out;
     }
-
+	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_INFO,
+		   "Detected CH7xxx chipset, vendor/device ID 0x%02x/0x%02x\n",
+		   vendor, device);
 
     if (!xf86I2CDevInit(&dev_priv->d)) {
 	goto out;
@@ -235,9 +236,6 @@ ch7xxx_power(I2CDevPtr d, Bool On)
     if (ret == FALSE)
 	return;
 
-    xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
-	       "ch7xxx pm is %02X\n", ch);
-
 #if 0
     ret = ch7xxx_read(dev_priv, CH7xxx_REG8, &ch);
     if (ret)
diff --git a/src/ch7xxx/ch7xxx_reg.h b/src/ch7xxx/ch7xxx_reg.h
index 891fde8..0a5f188 100644
--- a/src/ch7xxx/ch7xxx_reg.h
+++ b/src/ch7xxx/ch7xxx_reg.h
@@ -29,7 +29,7 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 #define CH7xxx_REG_VID 0x4a
 #define CH7xxx_REG_DID 0x4b
 
-#define CH7011_VID 0x83
+#define CH7011_VID 0x83 /* 7010 as well */
 #define CH7009A_VID 0x84
 #define CH7009B_VID 0x85
 #define CH7301_VID 0x95
diff-tree 3167bc6b24bd74c50ca4c4d361b14aa24d77cfa3 (from 4ca92da5b93b07f0bff51843f8fb5d04a2a29443)
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Dec 18 13:45:55 2006 -0800

    Fix DVO mode valid function to not throw out all modes.

diff --git a/src/i830_dvo.c b/src/i830_dvo.c
index ed8d1c7..804f0fc 100644
--- a/src/i830_dvo.c
+++ b/src/i830_dvo.c
@@ -107,16 +107,14 @@ static int
 i830_dvo_mode_valid(xf86OutputPtr output, DisplayModePtr pMode)
 {
     I830OutputPrivatePtr    intel_output = output->driver_private;
-    
+    void *dev_priv = intel_output->i2c_drv->dev_priv;
+
     if (pMode->Flags & V_DBLSCAN)
 	return MODE_NO_DBLESCAN;
 
     /* XXX: Validate clock range */
 
-    if ((*intel_output->i2c_drv->vid_rec->ModeValid)(intel_output->i2c_drv->dev_priv, pMode))
-	return MODE_OK;
-    else
-	return MODE_BAD;
+    return intel_output->i2c_drv->vid_rec->ModeValid(dev_priv, pMode);
 }
 
 static Bool
diff-tree 4ca92da5b93b07f0bff51843f8fb5d04a2a29443 (from 31849edb3b503ade659981dfa36babf5ad8757c5)
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Dec 18 13:45:34 2006 -0800

    Add save/restore to ch7xxx to avoid segfaults on server start.

diff --git a/src/ch7xxx/ch7xxx.c b/src/ch7xxx/ch7xxx.c
index bf70d8e..5213646 100644
--- a/src/ch7xxx/ch7xxx.c
+++ b/src/ch7xxx/ch7xxx.c
@@ -49,6 +49,8 @@ struct ch7xxx_priv {
     I2CDevRec d;
     struct ch7xxx_reg_state SavedReg;
     struct ch7xxx_reg_state ModeReg;
+    CARD8 save_TCTL, save_TPCP, save_TPD, save_TPVT;
+    CARD8 save_TPF, save_TCT, save_PM;
 };
 
 static void ch7xxx_save(I2CDevPtr d);
@@ -270,13 +272,29 @@ ch7xxx_save(I2CDevPtr d)
     int ret;
     int i;
 
-    for (i = 0; i < CH7xxx_NUM_REGS; i++) {
-	ret = ch7xxx_read(dev_priv, i, &dev_priv->SavedReg.regs[i]);
-	if (ret == FALSE)
-	    break;
-    }
+    ch7xxx_read(dev_priv, CH7xxx_PM, &dev_priv->save_PM);
+    ch7xxx_read(dev_priv, CH7xxx_TCTL, &dev_priv->save_TCTL);
+    ch7xxx_read(dev_priv, CH7xxx_TPCP, &dev_priv->save_TPCP);
+    ch7xxx_read(dev_priv, CH7xxx_TPD, &dev_priv->save_TPD);
+    ch7xxx_read(dev_priv, CH7xxx_TPVT, &dev_priv->save_TPVT);
+    ch7xxx_read(dev_priv, CH7xxx_TPF, &dev_priv->save_TPF);
+
+    return;
+}
+
+static void
+ch7xxx_restore(I2CDevPtr d)
+{
+    struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
+    int ret;
+    int i;
 
-    memcpy(dev_priv->ModeReg.regs, dev_priv->SavedReg.regs, CH7xxx_NUM_REGS);
+    ch7xxx_write(dev_priv, CH7xxx_TCTL, dev_priv->save_TCTL);
+    ch7xxx_write(dev_priv, CH7xxx_TPCP, dev_priv->save_TPCP);
+    ch7xxx_write(dev_priv, CH7xxx_TPD, dev_priv->save_TPD);
+    ch7xxx_write(dev_priv, CH7xxx_TPVT, dev_priv->save_TPVT);
+    ch7xxx_write(dev_priv, CH7xxx_TPF, dev_priv->save_TPF);
+    ch7xxx_write(dev_priv, CH7xxx_PM, dev_priv->save_PM);
 
     return;
 }
@@ -289,5 +307,5 @@ I830I2CVidOutputRec CH7xxxVidOutput = {
     ch7xxx_power,
     ch7xxx_dump_regs,
     ch7xxx_save,
-    NULL,
+    ch7xxx_restore,
 };
diff-tree 31849edb3b503ade659981dfa36babf5ad8757c5 (from 2d0ca2202cb0d780bb4387bbe04e5caa6512e3b1)
Author: Eric Anholt <eric at anholt.net>
Date:   Mon Dec 18 13:32:21 2006 -0800

    Move the ch7xxx code to the style I've been settling on for output code.

diff --git a/src/ch7xxx/ch7xxx.c b/src/ch7xxx/ch7xxx.c
index df66d03..bf70d8e 100644
--- a/src/ch7xxx/ch7xxx.c
+++ b/src/ch7xxx/ch7xxx.c
@@ -41,113 +41,126 @@ SOFTWARE OR THE USE OR OTHER DEALINGS IN
  * driver for the Chrontel 7xxx DVI chip over DVO.
  */
 
-static void ch7xxxSaveRegs(I2CDevPtr d);
+struct ch7xxx_reg_state {
+    CARD8 regs[CH7xxx_NUM_REGS];
+};
+
+struct ch7xxx_priv {
+    I2CDevRec d;
+    struct ch7xxx_reg_state SavedReg;
+    struct ch7xxx_reg_state ModeReg;
+};
+
+static void ch7xxx_save(I2CDevPtr 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)
+/** Reads an 8 bit register */
+static Bool
+ch7xxx_read(struct ch7xxx_priv *dev_priv, int addr, unsigned char *ch)
 {
-    if (!xf86I2CReadByte(&(ch7xxx->d), addr, ch)) {
-	xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex,
+    if (!xf86I2CReadByte(&dev_priv->d, addr, ch)) {
+	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex,
 		   X_ERROR, "Unable to read from %s Slave %d.\n",
-		   ch7xxx->d.pI2CBus->BusName, ch7xxx->d.SlaveAddr);
+		   dev_priv->d.pI2CBus->BusName, dev_priv->d.SlaveAddr);
 	return FALSE;
     }
 
     return TRUE;
 }
 
-static Bool ch7xxxWriteByte(CH7xxxPtr ch7xxx, int addr, unsigned char ch)
+/** Writes an 8 bit register */
+static Bool
+ch7xxx_write(struct ch7xxx_priv *dev_priv, int addr, unsigned char ch)
 {
-    if (!xf86I2CWriteByte(&(ch7xxx->d), addr, ch)) {
-	xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR,
+    if (!xf86I2CWriteByte(&dev_priv->d, addr, ch)) {
+	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
 		   "Unable to write to %s Slave %d.\n",
-		   ch7xxx->d.pI2CBus->BusName, ch7xxx->d.SlaveAddr);
+		   dev_priv->d.pI2CBus->BusName, dev_priv->d.SlaveAddr);
 	return FALSE;
     }
 
     return TRUE;
 }
 
-static void *ch7xxxDetect(I2CBusPtr b, I2CSlaveAddr addr)
+static void *
+ch7xxx_probe(I2CBusPtr b, I2CSlaveAddr addr)
 {
     /* this will detect the CH7xxx chip on the specified i2c bus */
-    CH7xxxPtr ch7xxx;
+    struct ch7xxx_priv *dev_priv;
     unsigned char ch;
 
-    xf86DrvMsg(b->scrnIndex, X_ERROR, "detecting ch7xxx\n");
+    xf86DrvMsg(b->scrnIndex, X_INFO, "detecting ch7xxx\n");
 
-    ch7xxx = xcalloc(1, sizeof(CH7xxxRec));
-    if (ch7xxx == NULL)
+    dev_priv = xcalloc(1, sizeof(struct ch7xxx_priv));
+    if (dev_priv == NULL)
 	return NULL;
 
-    ch7xxx->d.DevName = "CH7xxx TMDS Controller";
-    ch7xxx->d.SlaveAddr = addr;
-    ch7xxx->d.pI2CBus = b;
-    ch7xxx->d.StartTimeout = b->StartTimeout;
-    ch7xxx->d.BitTimeout = b->BitTimeout;
-    ch7xxx->d.AcknTimeout = b->AcknTimeout;
-    ch7xxx->d.ByteTimeout = b->ByteTimeout;
-    ch7xxx->d.DriverPrivate.ptr = ch7xxx;
+    dev_priv->d.DevName = "CH7xxx TMDS Controller";
+    dev_priv->d.SlaveAddr = addr;
+    dev_priv->d.pI2CBus = b;
+    dev_priv->d.StartTimeout = b->StartTimeout;
+    dev_priv->d.BitTimeout = b->BitTimeout;
+    dev_priv->d.AcknTimeout = b->AcknTimeout;
+    dev_priv->d.ByteTimeout = b->ByteTimeout;
+    dev_priv->d.DriverPrivate.ptr = dev_priv;
 
-    if (!ch7xxxReadByte(ch7xxx, CH7xxx_REG_VID, &ch))
+    if (!ch7xxx_read(dev_priv, CH7xxx_REG_VID, &ch))
 	goto out;
 
     ErrorF("VID is %02X", ch);
     if (ch!=(CH7xxx_VID & 0xFF)) {
-	xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR,
+	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
 		   "ch7xxx not detected got %d: from %s Slave %d.\n",
-		   ch, ch7xxx->d.pI2CBus->BusName, ch7xxx->d.SlaveAddr);
+		   ch, dev_priv->d.pI2CBus->BusName, dev_priv->d.SlaveAddr);
 	goto out;
     }
 
 
-    if (!ch7xxxReadByte(ch7xxx, CH7xxx_REG_DID, &ch))
+    if (!ch7xxx_read(dev_priv, CH7xxx_REG_DID, &ch))
 	goto out;
 
     ErrorF("DID is %02X", ch);
     if (ch!=(CH7xxx_DID & 0xFF)) {
-	xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR,
+	xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
 		   "ch7xxx not detected got %d: from %s Slave %d.\n",
-		   ch, ch7xxx->d.pI2CBus->BusName, ch7xxx->d.SlaveAddr);
+		   ch, dev_priv->d.pI2CBus->BusName, dev_priv->d.SlaveAddr);
 	goto out;
     }
 
 
-    if (!xf86I2CDevInit(&(ch7xxx->d))) {
+    if (!xf86I2CDevInit(&dev_priv->d)) {
 	goto out;
     }
 
-    return ch7xxx;
+    return dev_priv;
 
 out:
-    xfree(ch7xxx);
+    xfree(dev_priv);
     return NULL;
 }
 
 
-static Bool ch7xxxInit(I2CDevPtr d)
+static Bool
+ch7xxx_init(I2CDevPtr d)
 {
-    CH7xxxPtr ch7xxx = CH7PTR(d);
-
     /* not much to do */
     return TRUE;
 }
 
-static ModeStatus ch7xxxModeValid(I2CDevPtr d, DisplayModePtr mode)
+static ModeStatus
+ch7xxx_mode_valid(I2CDevPtr d, DisplayModePtr mode)
 {
-    CH7xxxPtr ch7xxx = CH7PTR(d);
-
     return MODE_OK;
 }
 
-static void ch7xxxMode(I2CDevPtr d, DisplayModePtr mode)
+static void
+ch7xxx_mode_set(I2CDevPtr d, DisplayModePtr mode)
 {
-    CH7xxxPtr ch7xxx = CH7PTR(d);
+    struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
     int ret;
     unsigned char pm, idf;
     unsigned char tpcp, tpd, tpf, cm;
@@ -164,16 +177,16 @@ static void ch7xxxMode(I2CDevPtr d, Disp
 	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]);
+	dev_priv->ModeReg.regs[i] = freq_regs[i - 0x31];
+	ch7xxx_write(dev_priv, i, dev_priv->ModeReg.regs[i]);
     }
 
 #if 0
-    xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR,
+    xf86DrvMsg(dev_priv->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,
+    xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
 	       "ch7xxx pm is %02X\n", pm);
 
     if (mode->Clock < 65000) {
@@ -199,31 +212,32 @@ static void ch7xxxMode(I2CDevPtr d, Disp
 
     /* 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);
+    ch7xxx_write(dev_priv, CH7xxx_CM, cm);
+    ch7xxx_write(dev_priv, CH7xxx_TPCP, tpcp);
+    ch7xxx_write(dev_priv, CH7xxx_TPD, tpd);
+    ch7xxx_write(dev_priv, CH7xxx_TPF, tpf);
+    ch7xxx_write(dev_priv, CH7xxx_TPF, idf);
+    ch7xxx_write(dev_priv, CH7xxx_PM, pm);
 #endif
 }
 
 /* set the CH7xxx power state */
-static void ch7xxxPower(I2CDevPtr d, Bool On)
+static void
+ch7xxx_power(I2CDevPtr d, Bool On)
 {
-    CH7xxxPtr ch7xxx = CH7PTR(d);
+    struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
     int ret;
     unsigned char ch;
 
-    ret = ch7xxxReadByte(ch7xxx, CH7xxx_PM, &ch);
+    ret = ch7xxx_read(dev_priv, CH7xxx_PM, &ch);
     if (ret == FALSE)
 	return;
 
-    xf86DrvMsg(ch7xxx->d.pI2CBus->scrnIndex, X_ERROR,
+    xf86DrvMsg(dev_priv->d.pI2CBus->scrnIndex, X_ERROR,
 	       "ch7xxx pm is %02X\n", ch);
 
 #if 0
-    ret = ch7xxxReadByte(ch7xxx, CH7xxx_REG8, &ch);
+    ret = ch7xxx_read(dev_priv, CH7xxx_REG8, &ch);
     if (ret)
 	return;
 
@@ -232,48 +246,48 @@ static void ch7xxxPower(I2CDevPtr d, Boo
     else
 	ch &= ~CH7xxx_8_PD;
 
-    ch7xxxWriteByte(ch7xxx, CH7xxx_REG8, ch);
+    ch7xxx_write(dev_priv, CH7xxx_REG8, ch);
 #endif
 }
 
-static void ch7xxxPrintRegs(I2CDevPtr d)
+static void
+ch7xxx_dump_regs(I2CDevPtr d)
 {
-    CH7xxxPtr ch7xxx = CH7PTR(d);
+    struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
     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]);
+	ErrorF("%02X ", dev_priv->ModeReg.regs[i]);
     }
 }
 
-static void ch7xxxSaveRegs(I2CDevPtr d)
+static void
+ch7xxx_save(I2CDevPtr d)
 {
-    CH7xxxPtr ch7xxx = CH7PTR(d);
+    struct ch7xxx_priv *dev_priv = d->DriverPrivate.ptr;
     int ret;
     int i;
 
     for (i = 0; i < CH7xxx_NUM_REGS; i++) {
-	ret = ch7xxxReadByte(ch7xxx, i, &ch7xxx->SavedReg.regs[i]);
+	ret = ch7xxx_read(dev_priv, i, &dev_priv->SavedReg.regs[i]);
 	if (ret == FALSE)
 	    break;
     }
 
-    memcpy(ch7xxx->ModeReg.regs, ch7xxx->SavedReg.regs, CH7xxx_NUM_REGS);
+    memcpy(dev_priv->ModeReg.regs, dev_priv->SavedReg.regs, CH7xxx_NUM_REGS);
 
     return;
 }
 
 I830I2CVidOutputRec CH7xxxVidOutput = {
-    ch7xxxDetect,
-    ch7xxxInit,
-    ch7xxxModeValid,
-    ch7xxxMode,
-    ch7xxxPower,
-    ch7xxxPrintRegs,
-    ch7xxxSaveRegs,
+    ch7xxx_probe,
+    ch7xxx_init,
+    ch7xxx_mode_valid,
+    ch7xxx_mode_set,
+    ch7xxx_power,
+    ch7xxx_dump_regs,
+    ch7xxx_save,
     NULL,
 };
diff --git a/src/ch7xxx/ch7xxx_reg.h b/src/ch7xxx/ch7xxx_reg.h
index e24e9a6..891fde8 100644
--- a/src/ch7xxx/ch7xxx_reg.h
+++ b/src/ch7xxx/ch7xxx_reg.h
@@ -39,18 +39,6 @@ USE OR OTHER DEALINGS IN THE SOFTWARE.
 
 #define CH7xxx_NUM_REGS 0x4c
 
-typedef struct _CH7xxxSaveRec {
-    CARD8 regs[CH7xxx_NUM_REGS];
-} CH7xxxSaveRec;
-
-typedef struct {
-    I2CDevRec d;
-    CH7xxxSaveRec SavedReg;
-    CH7xxxSaveRec ModeReg;
-} CH7xxxRec, *CH7xxxPtr;
-
-#define CH7PTR(d) ((CH7xxxPtr)(d->DriverPrivate.ptr))
-
 #define CH7xxx_CM 0x1C
 #define CH7xxx_CM_XCM (1<<0)
 #define CH7xxx_CM_MCP (1<<2)



More information about the xorg-commit mailing list