]> git.ipfire.org Git - thirdparty/kernel/stable.git/commitdiff
drm/amd/pm: Use devm_i2c_add_adapter() in the i2c init
authorRodrigo Siqueira <siqueira@igalia.com>
Wed, 10 Sep 2025 17:39:37 +0000 (11:39 -0600)
committerAlex Deucher <alexander.deucher@amd.com>
Tue, 16 Sep 2025 21:47:26 +0000 (17:47 -0400)
Instead of using i2c_add_adapter() and i2c_del_adapter(), replace them
with devm_i2c_add_adapter() to simplify the i2c logic.

Signed-off-by: Rodrigo Siqueira <siqueira@igalia.com>
Signed-off-by: Alex Deucher <alexander.deucher@amd.com>
drivers/gpu/drm/amd/pm/swsmu/smu13/aldebaran_ppt.c

index b067147b7c41fd722d824f70fd697677329563c6..18d5d07045098fde4f439c9ed30a83442f099d95 100644 (file)
@@ -1641,33 +1641,22 @@ static int aldebaran_i2c_control_init(struct smu_context *smu)
        control->quirks = &aldebaran_i2c_control_quirks;
        i2c_set_adapdata(control, smu_i2c);
 
-       res = i2c_add_adapter(control);
+       res = devm_i2c_add_adapter(adev->dev, control);
        if (res) {
                DRM_ERROR("Failed to register hw i2c, err: %d\n", res);
-               goto Out_err;
+               return res;
        }
 
        adev->pm.ras_eeprom_i2c_bus = &adev->pm.smu_i2c[0].adapter;
        adev->pm.fru_eeprom_i2c_bus = &adev->pm.smu_i2c[0].adapter;
 
        return 0;
-Out_err:
-       i2c_del_adapter(control);
-
-       return res;
 }
 
 static void aldebaran_i2c_control_fini(struct smu_context *smu)
 {
        struct amdgpu_device *adev = smu->adev;
-       int i;
-
-       for (i = 0; i < MAX_SMU_I2C_BUSES; i++) {
-               struct amdgpu_smu_i2c_bus *smu_i2c = &adev->pm.smu_i2c[i];
-               struct i2c_adapter *control = &smu_i2c->adapter;
 
-               i2c_del_adapter(control);
-       }
        adev->pm.ras_eeprom_i2c_bus = NULL;
        adev->pm.fru_eeprom_i2c_bus = NULL;
 }