Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/intel_sdvo.c |   18 ++++++++++++------
 1 files changed, 12 insertions(+), 6 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_sdvo.c 
b/drivers/gpu/drm/i915/intel_sdvo.c
index 093e914..4f73cb8 100644
--- a/drivers/gpu/drm/i915/intel_sdvo.c
+++ b/drivers/gpu/drm/i915/intel_sdvo.c
@@ -525,8 +525,8 @@ static int intel_sdvo_get_pixel_multiplier(struct 
drm_display_mode *mode)
  * another I2C transaction after issuing the DDC bus switch, it will be
  * switched to the internal SDVO register.
  */
-static void intel_sdvo_set_control_bus_switch(struct intel_sdvo *intel_sdvo,
-                                             u8 target)
+static int intel_sdvo_set_control_bus_switch(struct intel_sdvo *intel_sdvo,
+                                            u8 target)
 {
        u8 out_buf[2], cmd_buf[2], ret_value[2], ret;
        struct i2c_msg msgs[] = {
@@ -567,14 +567,15 @@ static void intel_sdvo_set_control_bus_switch(struct 
intel_sdvo *intel_sdvo,
        if (ret != 3) {
                /* failure in I2C transfer */
                DRM_DEBUG_KMS("I2c transfer returned %d\n", ret);
-               return;
+               return -EIO;
        }
        if (ret_value[0] != SDVO_CMD_STATUS_SUCCESS) {
                DRM_DEBUG_KMS("DDC switch command returns response %d\n",
                                        ret_value[0]);
-               return;
+               return -EIO;
        }
-       return;
+
+       return 0;
 }
 
 static bool intel_sdvo_set_value(struct intel_sdvo *intel_sdvo, u8 cmd, const 
void *data, int len)
@@ -1984,6 +1985,7 @@ static int intel_sdvo_master_xfer(struct i2c_adapter 
*i2c_adap,
        struct intel_sdvo *intel_sdvo;
        struct i2c_algo_bit_data *algo_data;
        const struct i2c_algorithm *algo;
+       int ret;
 
        algo_data = (struct i2c_algo_bit_data *)i2c_adap->algo_data;
        intel_sdvo =
@@ -1994,7 +1996,11 @@ static int intel_sdvo_master_xfer(struct i2c_adapter 
*i2c_adap,
 
        algo = intel_sdvo->base.i2c_bus->algo;
 
-       intel_sdvo_set_control_bus_switch(intel_sdvo, intel_sdvo->ddc_bus);
+       ret = intel_sdvo_set_control_bus_switch(intel_sdvo,
+                                               intel_sdvo->ddc_bus);
+       if (ret)
+               return ret;
+
        return algo->master_xfer(i2c_adap, msgs, num);
 }
 
-- 
1.7.1

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to