diff --git a/src/add-ons/accelerants/nvidia/engine/nv_general.c b/src/add-ons/accelerants/nvidia/engine/nv_general.c index 514ec83a51..6f88ec54d5 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_general.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_general.c @@ -1,7 +1,7 @@ /* Authors: Mark Watson 12/1999, Apsed, - Rudolf Cornelissen 10/2002-6/2009 + Rudolf Cornelissen 10/2002-8/2009 tst.. */ @@ -92,7 +92,7 @@ status_t nv_general_powerup() { status_t status; - LOG(1,("POWERUP: Haiku nVidia Accelerant 0.94 running.\n")); + LOG(1,("POWERUP: Haiku nVidia Accelerant 0.95 running.\n")); /* log VBLANK INT usability status */ if (si->ps.int_assigned) diff --git a/src/add-ons/accelerants/nvidia/engine/nv_i2c.c b/src/add-ons/accelerants/nvidia/engine/nv_i2c.c index 1badc8859b..8ce9da1f3b 100644 --- a/src/add-ons/accelerants/nvidia/engine/nv_i2c.c +++ b/src/add-ons/accelerants/nvidia/engine/nv_i2c.c @@ -2,7 +2,7 @@ * i2c interface. * Bus should be run at max. 100kHz: see original Philips I2C specification * - * Rudolf Cornelissen 12/2002-6/2009 + * Rudolf Cornelissen 12/2002-8/2009 */ #define MODULE_BIT 0x00004000 @@ -323,11 +323,13 @@ status_t i2c_init(void) /* check for hardware coupling of SCL and SDA -out and -in lines */ snooze(6); OutSCL(bus, false); + snooze(3); OutSDA(bus, true); snooze(3); if (InSCL(bus) || !InSDA(bus)) continue; snooze(3); OutSCL(bus, true); + snooze(3); OutSDA(bus, false); snooze(3); if (!InSCL(bus) || InSDA(bus)) continue; @@ -535,6 +537,10 @@ set_signals(void *cookie, int clk, int data) else OutSCL(info->port, false); + /* waiting for SCL output to become stable before reading it back. + * ('typical' error-prone read-modify-write situation..) */ + snooze(3); + if (data) OutSDA(info->port, true); else