@@ -728,27 +728,27 @@ static const struct component_master_ops
tegra_drm_master_ops = {
.unbind = tegra_drm_unbind,
};
-static int host1x_interface_bind(struct interface *intf)
-{
- return component_master_add(intf->dev, &tegra_drm_master_ops);
-}
-
-static void host1x_interface_unbind(struct interface *intf)
-{
- component_master_del(intf->dev, &tegra_drm_master_ops);
-}
-
-static struct interface_driver host1x_interface_driver = {
- .name = "nvidia,tegra-host1x",
- .bind = host1x_interface_bind,
- .unbind = host1x_interface_unbind,
-};
+void itb_callback(struct interface_tracker_block *itb, const void *object,
+ unsigned long type, bool on, void *data)
+{
+ struct device *dev = data;
+
+ if (on)
+ component_master_add(dev, &tegra_drm_master_ops);
+ else
+ component_master_del(dev, &tegra_drm_master_ops);
+}
+static struct interface_tracker_block itb = {
+ .callback = itb_callback
+};
static int __init tegra_drm_init(void)
{
int err;
- err = interface_register_driver(&host1x_interface_driver);
+ err = interface_tracker_register("nvidia,tegra-host1x",
+ INTERFACE_TRACKER_TYPE_PARENT_DEV, &itb);
if (err < 0)
return err;
@@ -795,7 +795,8 @@ unregister_dsi:
unregister_dc:
platform_driver_unregister(&tegra_dc_driver);
unregister_host1x:
- interface_unregister_driver(&host1x_interface_driver);
+ interface_tracker_unregister("nvidia,tegra-host1x",
+ INTERFACE_TRACKER_TYPE_PARENT_DEV, &itb);
return err;
}
module_init(tegra_drm_init);
@@ -809,7 +810,8 @@ static void __exit tegra_drm_exit(void)
platform_driver_unregister(&tegra_sor_driver);
platform_driver_unregister(&tegra_dsi_driver);
platform_driver_unregister(&tegra_dc_driver);
- interface_unregister_driver(&host1x_interface_driver);
+ interface_tracker_unregister("nvidia,tegra-host1x",
+ INTERFACE_TRACKER_TYPE_PARENT_DEV, &itb);
}
module_exit(tegra_drm_exit);
@@ -175,10 +175,9 @@ static int host1x_probe(struct platform_device *pdev)
host1x_debug_init(host);
- host->interface.name = "nvidia,tegra-host1x";
- host->interface.dev = &pdev->dev;
-
- err = interface_add(&host->interface);
+ err = interface_tracker_ifup("nvidia,tegra-host1x",
+ INTERFACE_TRACKER_TYPE_PARENT_DEV, &pdev->dev);
if (err < 0)
goto fail_deinit_intr;
@@ -197,7 +196,9 @@ static int host1x_remove(struct platform_device *pdev)