]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
ALSA: ppc: Remove i2c client removal hack
authorHeiner Kallweit <hkallweit1@gmail.com>
Fri, 1 Nov 2024 22:07:14 +0000 (23:07 +0100)
committerWolfram Sang <wsa+renesas@sang-engineering.com>
Fri, 3 Jan 2025 12:21:54 +0000 (13:21 +0100)
The i2c_driver.clients list is internal to I2C core and is going
to be removed.  No driver should access it. Unregister the
i2c client explicitly before deleting the i2c driver.

Reviewed-by: Takashi Iwai <tiwai@suse.de>
Signed-off-by: Heiner Kallweit <hkallweit1@gmail.com>
Signed-off-by: Wolfram Sang <wsa+renesas@sang-engineering.com>
sound/ppc/keywest.c

index 3d3513d9def5ccb56d9bbec928f3b036e7647b83..4ce81ac7f7005213a80ec880a46f62f9a664b9af 100644 (file)
@@ -61,12 +61,6 @@ static int keywest_attach_adapter(struct i2c_adapter *adapter)
                return -ENODEV;
        }
        
-       /*
-        * Let i2c-core delete that device on driver removal.
-        * This is safe because i2c-core holds the core_lock mutex for us.
-        */
-       list_add_tail(&keywest_ctx->client->detected,
-                     &to_i2c_driver(keywest_ctx->client->dev.driver)->clients);
        return 0;
 }
 
@@ -99,6 +93,7 @@ static struct i2c_driver keywest_driver = {
 void snd_pmac_keywest_cleanup(struct pmac_keywest *i2c)
 {
        if (keywest_ctx && keywest_ctx == i2c) {
+               i2c_unregister_device(keywest_ctx->client);
                i2c_del_driver(&keywest_driver);
                keywest_ctx = NULL;
        }