sor.c (ad2139cb80a7a9afbfe428d0448d351a84e22ee6) sor.c (c472a0b0a1fd1688157b4ad6efc1c3fb8e571a53)
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2013 NVIDIA Corporation
4 */
5
6#include <linux/clk.h>
7#include <linux/clk-provider.h>
8#include <linux/debugfs.h>

--- 3900 unchanged lines hidden (view full) ---

3909 if (err < 0) {
3910 dev_err(&pdev->dev, "failed to use safe clock: %d\n", err);
3911 goto remove;
3912 }
3913
3914 platform_set_drvdata(pdev, sor);
3915 pm_runtime_enable(&pdev->dev);
3916
1// SPDX-License-Identifier: GPL-2.0-only
2/*
3 * Copyright (C) 2013 NVIDIA Corporation
4 */
5
6#include <linux/clk.h>
7#include <linux/clk-provider.h>
8#include <linux/debugfs.h>

--- 3900 unchanged lines hidden (view full) ---

3909 if (err < 0) {
3910 dev_err(&pdev->dev, "failed to use safe clock: %d\n", err);
3911 goto remove;
3912 }
3913
3914 platform_set_drvdata(pdev, sor);
3915 pm_runtime_enable(&pdev->dev);
3916
3917 INIT_LIST_HEAD(&sor->client.list);
3918 sor->client.ops = &sor_client_ops;
3919 sor->client.dev = &pdev->dev;
3920
3921 err = host1x_client_register(&sor->client);
3922 if (err < 0) {
3923 dev_err(&pdev->dev, "failed to register host1x client: %d\n",
3924 err);
3925 goto rpm_disable;
3926 }
3927
3917 /*
3918 * On Tegra210 and earlier, provide our own implementation for the
3919 * pad output clock.
3920 */
3921 if (!sor->clk_pad) {
3922 char *name;
3923
3924 name = devm_kasprintf(sor->dev, GFP_KERNEL, "sor%u_pad_clkout",
3925 sor->index);
3926 if (!name) {
3927 err = -ENOMEM;
3928 /*
3929 * On Tegra210 and earlier, provide our own implementation for the
3930 * pad output clock.
3931 */
3932 if (!sor->clk_pad) {
3933 char *name;
3934
3935 name = devm_kasprintf(sor->dev, GFP_KERNEL, "sor%u_pad_clkout",
3936 sor->index);
3937 if (!name) {
3938 err = -ENOMEM;
3928 goto rpm_disable;
3939 goto unregister;
3929 }
3930
3931 err = host1x_client_resume(&sor->client);
3932 if (err < 0) {
3933 dev_err(sor->dev, "failed to resume: %d\n", err);
3940 }
3941
3942 err = host1x_client_resume(&sor->client);
3943 if (err < 0) {
3944 dev_err(sor->dev, "failed to resume: %d\n", err);
3934 goto rpm_disable;
3945 goto unregister;
3935 }
3936
3937 sor->clk_pad = tegra_clk_sor_pad_register(sor, name);
3938 host1x_client_suspend(&sor->client);
3939 }
3940
3941 if (IS_ERR(sor->clk_pad)) {
3942 err = PTR_ERR(sor->clk_pad);
3946 }
3947
3948 sor->clk_pad = tegra_clk_sor_pad_register(sor, name);
3949 host1x_client_suspend(&sor->client);
3950 }
3951
3952 if (IS_ERR(sor->clk_pad)) {
3953 err = PTR_ERR(sor->clk_pad);
3943 dev_err(&pdev->dev, "failed to register SOR pad clock: %d\n",
3954 dev_err(sor->dev, "failed to register SOR pad clock: %d\n",
3944 err);
3955 err);
3945 goto rpm_disable;
3956 goto unregister;
3946 }
3947
3957 }
3958
3948 INIT_LIST_HEAD(&sor->client.list);
3949 sor->client.ops = &sor_client_ops;
3950 sor->client.dev = &pdev->dev;
3951
3952 err = host1x_client_register(&sor->client);
3953 if (err < 0) {
3954 dev_err(&pdev->dev, "failed to register host1x client: %d\n",
3955 err);
3956 goto rpm_disable;
3957 }
3958
3959 return 0;
3960
3959 return 0;
3960
3961unregister:
3962 host1x_client_unregister(&sor->client);
3961rpm_disable:
3962 pm_runtime_disable(&pdev->dev);
3963remove:
3964 if (sor->ops && sor->ops->remove)
3965 sor->ops->remove(sor);
3966output:
3967 tegra_output_remove(&sor->output);
3968 return err;

--- 86 unchanged lines hidden ---
3963rpm_disable:
3964 pm_runtime_disable(&pdev->dev);
3965remove:
3966 if (sor->ops && sor->ops->remove)
3967 sor->ops->remove(sor);
3968output:
3969 tegra_output_remove(&sor->output);
3970 return err;

--- 86 unchanged lines hidden ---