[haiku-commits] r42746 - haiku/trunk/src/add-ons/accelerants/radeon_hd

  • From: kallisti5@xxxxxxxxxxx
  • To: haiku-commits@xxxxxxxxxxxxx
  • Date: Mon, 12 Sep 2011 01:26:13 +0200 (CEST)

Author: kallisti5
Date: 2011-09-12 01:26:12 +0200 (Mon, 12 Sep 2011)
New Revision: 42746
Changeset: https://dev.haiku-os.org/changeset/42746

Modified:
   haiku/trunk/src/add-ons/accelerants/radeon_hd/gpu.cpp
Log:
* i2c locking should happen just before reading the edid
  locking and unlocked on every bit read sounds excessive
* set vdif and vdif size to NULL... they really aren't needed


Modified: haiku/trunk/src/add-ons/accelerants/radeon_hd/gpu.cpp
===================================================================
--- haiku/trunk/src/add-ons/accelerants/radeon_hd/gpu.cpp       2011-09-11 
21:34:06 UTC (rev 42745)
+++ haiku/trunk/src/add-ons/accelerants/radeon_hd/gpu.cpp       2011-09-11 
23:26:12 UTC (rev 42746)
@@ -327,10 +327,8 @@
 {
        ddc_info *info = (ddc_info*)cookie;
 
-       lock_i2c(cookie, true);
        uint32 scl = Read32(OUT, info->gpio_y_scl_reg) & info->gpio_y_scl_mask;
        uint32 sda = Read32(OUT, info->gpio_y_sda_reg) & info->gpio_y_sda_mask;
-       lock_i2c(cookie, false);
 
        *_clock = (scl != 0);
        *_data = (sda != 0);
@@ -347,7 +345,6 @@
 {
        ddc_info* info = (ddc_info*)cookie;
 
-       lock_i2c(cookie, true);
        uint32 scl = Read32(OUT, info->gpio_en_scl_reg)
                & ~info->gpio_en_scl_mask;
        uint32 sda = Read32(OUT, info->gpio_en_sda_reg)
@@ -358,7 +355,6 @@
 
        Write32(OUT, info->gpio_a_scl_reg, clock);
        Write32(OUT, info->gpio_a_sda_reg, data);
-       lock_i2c(cookie, false);
 
        TRACE("%s: GPIO 0x%" B_PRIX8 ", clock: %d, data: %d\n",
                __func__, info->gpio_id, clock, data);
@@ -382,16 +378,16 @@
        bus.set_signals = &set_i2c_signals;
        bus.get_signals = &get_i2c_signals;
 
-       void *vdif;
-       size_t vdifLength;
+       lock_i2c(bus.cookie, true);
+       status_t edid_result = ddc2_read_edid1(&bus, edid, NULL, NULL);
+       lock_i2c(bus.cookie, false);
 
-       if (ddc2_read_edid1(&bus, edid, &vdif, &vdifLength) != B_OK)
+       if (edid_result != B_OK)
                return false;
 
        TRACE("%s: found edid monitor on connector #%" B_PRId32 "\n",
                __func__, connector);
 
-       free(vdif);
        return true;
 }
 


Other related posts:

  • » [haiku-commits] r42746 - haiku/trunk/src/add-ons/accelerants/radeon_hd - kallisti5