platform_set_drvdata(pdev, sor);
        pm_runtime_enable(&pdev->dev);
 
+       INIT_LIST_HEAD(&sor->client.list);
+       sor->client.ops = &sor_client_ops;
+       sor->client.dev = &pdev->dev;
+
+       err = host1x_client_register(&sor->client);
+       if (err < 0) {
+               dev_err(&pdev->dev, "failed to register host1x client: %d\n",
+                       err);
+               goto rpm_disable;
+       }
+
        /*
         * On Tegra210 and earlier, provide our own implementation for the
         * pad output clock.
                                      sor->index);
                if (!name) {
                        err = -ENOMEM;
-                       goto rpm_disable;
+                       goto unregister;
                }
 
                err = host1x_client_resume(&sor->client);
                if (err < 0) {
                        dev_err(sor->dev, "failed to resume: %d\n", err);
-                       goto rpm_disable;
+                       goto unregister;
                }
 
                sor->clk_pad = tegra_clk_sor_pad_register(sor, name);
 
        if (IS_ERR(sor->clk_pad)) {
                err = PTR_ERR(sor->clk_pad);
-               dev_err(&pdev->dev, "failed to register SOR pad clock: %d\n",
+               dev_err(sor->dev, "failed to register SOR pad clock: %d\n",
                        err);
-               goto rpm_disable;
-       }
-
-       INIT_LIST_HEAD(&sor->client.list);
-       sor->client.ops = &sor_client_ops;
-       sor->client.dev = &pdev->dev;
-
-       err = host1x_client_register(&sor->client);
-       if (err < 0) {
-               dev_err(&pdev->dev, "failed to register host1x client: %d\n",
-                       err);
-               goto rpm_disable;
+               goto unregister;
        }
 
        return 0;
 
+unregister:
+       host1x_client_unregister(&sor->client);
 rpm_disable:
        pm_runtime_disable(&pdev->dev);
 remove: