@@ -4317,8 +4317,9 @@ static struct snd_soc_dai_driver wcd938x_dais[] = {
},
};
-static int wcd938x_bind(struct device *dev)
+static int wcd938x_bind(struct aggregate_device *adev)
{
+ struct device *dev = aggregate_device_parent(adev);
struct wcd938x_priv *wcd938x = dev_get_drvdata(dev);
int ret;
@@ -4401,8 +4402,9 @@ static int wcd938x_bind(struct device *dev)
}
-static void wcd938x_unbind(struct device *dev)
+static void wcd938x_unbind(struct aggregate_device *adev)
{
+ struct device *dev = aggregate_device_parent(adev);
struct wcd938x_priv *wcd938x = dev_get_drvdata(dev);
device_link_remove(dev, wcd938x->txdev);
@@ -4412,9 +4414,13 @@ static void wcd938x_unbind(struct device *dev)
component_unbind_all(dev, wcd938x);
}
-static const struct component_master_ops wcd938x_comp_ops = {
- .bind = wcd938x_bind,
- .unbind = wcd938x_unbind,
+static struct aggregate_driver wcd938x_aggregate_driver = {
+ .probe = wcd938x_bind,
+ .remove = wcd938x_unbind,
+ .driver = {
+ .name = "wcd938x_snd",
+ .owner = THIS_MODULE,
+ },
};
static int wcd938x_compare_of(struct device *dev, void *data)
@@ -4483,7 +4489,7 @@ static int wcd938x_probe(struct platform_device *pdev)
wcd938x_reset(wcd938x);
- ret = component_master_add_with_match(dev, &wcd938x_comp_ops, match);
+ ret = component_aggregate_register(dev, &wcd938x_aggregate_driver, match);
if (ret)
return ret;
@@ -4499,7 +4505,7 @@ static int wcd938x_probe(struct platform_device *pdev)
static int wcd938x_remove(struct platform_device *pdev)
{
- component_master_del(&pdev->dev, &wcd938x_comp_ops);
+ component_aggregate_unregister(&pdev->dev, &wcd938x_aggregate_driver);
return 0;
}