@@ -279,7 +279,7 @@ amdgpu_i2c_lookup(struct amdgpu_device *adev,
279279 return NULL ;
280280}
281281
282- static void amdgpu_i2c_get_byte (struct amdgpu_i2c_chan * i2c_bus ,
282+ static int amdgpu_i2c_get_byte (struct amdgpu_i2c_chan * i2c_bus ,
283283 u8 slave_addr ,
284284 u8 addr ,
285285 u8 * val )
@@ -304,16 +304,18 @@ static void amdgpu_i2c_get_byte(struct amdgpu_i2c_chan *i2c_bus,
304304 out_buf [0 ] = addr ;
305305 out_buf [1 ] = 0 ;
306306
307- if (i2c_transfer (& i2c_bus -> adapter , msgs , 2 ) == 2 ) {
308- * val = in_buf [0 ];
309- DRM_DEBUG ("val = 0x%02x\n" , * val );
310- } else {
311- DRM_DEBUG ("i2c 0x%02x 0x%02x read failed\n" ,
312- addr , * val );
307+ if (i2c_transfer (& i2c_bus -> adapter , msgs , 2 ) != 2 ) {
308+ DRM_DEBUG ("i2c 0x%02x read failed\n" , addr );
309+ return - EIO ;
313310 }
311+
312+ * val = in_buf [0 ];
313+ DRM_DEBUG ("val = 0x%02x\n" , * val );
314+
315+ return 0 ;
314316}
315317
316- static void amdgpu_i2c_put_byte (struct amdgpu_i2c_chan * i2c_bus ,
318+ static int amdgpu_i2c_put_byte (struct amdgpu_i2c_chan * i2c_bus ,
317319 u8 slave_addr ,
318320 u8 addr ,
319321 u8 val )
@@ -329,9 +331,12 @@ static void amdgpu_i2c_put_byte(struct amdgpu_i2c_chan *i2c_bus,
329331 out_buf [0 ] = addr ;
330332 out_buf [1 ] = val ;
331333
332- if (i2c_transfer (& i2c_bus -> adapter , & msg , 1 ) != 1 )
333- DRM_DEBUG ("i2c 0x%02x 0x%02x write failed\n" ,
334- addr , val );
334+ if (i2c_transfer (& i2c_bus -> adapter , & msg , 1 ) != 1 ) {
335+ DRM_DEBUG ("i2c 0x%02x 0x%02x write failed\n" , addr , val );
336+ return - EIO ;
337+ }
338+
339+ return 0 ;
335340}
336341
337342/* ddc router switching */
@@ -346,16 +351,18 @@ amdgpu_i2c_router_select_ddc_port(const struct amdgpu_connector *amdgpu_connecto
346351 if (!amdgpu_connector -> router_bus )
347352 return ;
348353
349- amdgpu_i2c_get_byte (amdgpu_connector -> router_bus ,
354+ if ( amdgpu_i2c_get_byte (amdgpu_connector -> router_bus ,
350355 amdgpu_connector -> router .i2c_addr ,
351- 0x3 , & val );
356+ 0x3 , & val ))
357+ return ;
352358 val &= ~amdgpu_connector -> router .ddc_mux_control_pin ;
353359 amdgpu_i2c_put_byte (amdgpu_connector -> router_bus ,
354360 amdgpu_connector -> router .i2c_addr ,
355361 0x3 , val );
356- amdgpu_i2c_get_byte (amdgpu_connector -> router_bus ,
362+ if ( amdgpu_i2c_get_byte (amdgpu_connector -> router_bus ,
357363 amdgpu_connector -> router .i2c_addr ,
358- 0x1 , & val );
364+ 0x1 , & val ))
365+ return ;
359366 val &= ~amdgpu_connector -> router .ddc_mux_control_pin ;
360367 val |= amdgpu_connector -> router .ddc_mux_state ;
361368 amdgpu_i2c_put_byte (amdgpu_connector -> router_bus ,
@@ -375,16 +382,18 @@ amdgpu_i2c_router_select_cd_port(const struct amdgpu_connector *amdgpu_connector
375382 if (!amdgpu_connector -> router_bus )
376383 return ;
377384
378- amdgpu_i2c_get_byte (amdgpu_connector -> router_bus ,
385+ if ( amdgpu_i2c_get_byte (amdgpu_connector -> router_bus ,
379386 amdgpu_connector -> router .i2c_addr ,
380- 0x3 , & val );
387+ 0x3 , & val ))
388+ return ;
381389 val &= ~amdgpu_connector -> router .cd_mux_control_pin ;
382390 amdgpu_i2c_put_byte (amdgpu_connector -> router_bus ,
383391 amdgpu_connector -> router .i2c_addr ,
384392 0x3 , val );
385- amdgpu_i2c_get_byte (amdgpu_connector -> router_bus ,
393+ if ( amdgpu_i2c_get_byte (amdgpu_connector -> router_bus ,
386394 amdgpu_connector -> router .i2c_addr ,
387- 0x1 , & val );
395+ 0x1 , & val ))
396+ return ;
388397 val &= ~amdgpu_connector -> router .cd_mux_control_pin ;
389398 val |= amdgpu_connector -> router .cd_mux_state ;
390399 amdgpu_i2c_put_byte (amdgpu_connector -> router_bus ,
0 commit comments