Unverified Commit 660a8fc1 authored by openeuler-ci-bot's avatar openeuler-ci-bot Committed by Gitee
Browse files

!9557 i2c: acpi: Unbind mux adapters before delete

parents 3d1f69ac cb81860e
Loading
Loading
Loading
Loading
+15 −4
Original line number Diff line number Diff line
@@ -445,6 +445,11 @@ static struct i2c_client *i2c_acpi_find_client_by_adev(struct acpi_device *adev)
	return i2c_find_device_by_fwnode(acpi_fwnode_handle(adev));
}

static struct i2c_adapter *i2c_acpi_find_adapter_by_adev(struct acpi_device *adev)
{
	return i2c_find_adapter_by_fwnode(acpi_fwnode_handle(adev));
}

static int i2c_acpi_notify(struct notifier_block *nb, unsigned long value,
			   void *arg)
{
@@ -471,11 +476,17 @@ static int i2c_acpi_notify(struct notifier_block *nb, unsigned long value,
			break;

		client = i2c_acpi_find_client_by_adev(adev);
		if (!client)
			break;

		if (client) {
			i2c_unregister_device(client);
			put_device(&client->dev);
		}

		adapter = i2c_acpi_find_adapter_by_adev(adev);
		if (adapter) {
			acpi_unbind_one(&adapter->dev);
			put_device(&adapter->dev);
		}

		break;
	}