From 5decf6a577443f22b5e1feb410342715c3f28560 Mon Sep 17 00:00:00 2001 From: Philip Edelbrock Date: Fri, 24 Sep 1999 05:38:30 +0000 Subject: [PATCH] (Phil) Slight timing adjustments. git-svn-id: http://lm-sensors.org/svn/lm-sensors/trunk@577 7894878c-1315-0410-8ee3-d5d059ff63e0 --- kernel/busses/i2c-voodoo3.c | 24 ++++++++++-------------- 1 file changed, 10 insertions(+), 14 deletions(-) diff --git a/kernel/busses/i2c-voodoo3.c b/kernel/busses/i2c-voodoo3.c index fbf201a1..84d245b4 100644 --- a/kernel/busses/i2c-voodoo3.c +++ b/kernel/busses/i2c-voodoo3.c @@ -165,11 +165,13 @@ void Voodoo3_I2CStart(void) { clkon(); /* in theory, clk is already on */ out(); + out(); + out(); + out(); dat(0); out(); clkoff(); out(); - clkon(); } void Voodoo3_I2CStop(void) @@ -182,6 +184,7 @@ void Voodoo3_I2CStop(void) out(); clkoff(); out(); + out(); clkon(); out(); } @@ -190,14 +193,13 @@ int Voodoo3_I2CAck(void) { int ack; - dat(1); /* put data line in tristate/hi */ - clkon(); out(); + clkon(); ack=rdat(); + out(); clkoff(); out(); return ack; - } int Voodoo3_I2CReadByte(void) @@ -205,16 +207,13 @@ int Voodoo3_I2CReadByte(void) int i,temp; unsigned char data=0; - clkoff(); - out(); for (i=7; i>=0; i--) { - out(); out(); clkon(); data|=(rdat()<=0; i--) { dat(temp=data&(1<>8)) { #ifdef DEBUG - printk("i2c-voodoo3: No Ack on data WriteByte to addr 0x%X\n",addr); + printk("i2c-voodoo3: No Ack on data byte 2 WriteByte to addr 0x%X\n",addr); #endif result=-1; } ENDWRITE3: Voodoo3_I2CStop(); @@ -429,7 +426,6 @@ void config_v3(struct pci_dev *dev, int num) cadr&=PCI_BASE_ADDRESS_MEM_MASK; mem=ioremap(cadr, 0x1000); - /* Enable TV out mode, Voodoo3_I2C bus, etc. */ *((unsigned int *)(mem+0x70))=0x8160; *((unsigned int *)(mem+0x78))=0xcf980020; printk("i2c-voodoo3: Using Banshee/Voodoo3 at 0x%p\n",mem);