drm/tegra: Output cleanup functions cannot fail
authorThierry Reding <treding@nvidia.com>
Fri, 19 Dec 2014 14:55:08 +0000 (15:55 +0100)
committerThierry Reding <treding@nvidia.com>
Tue, 27 Jan 2015 09:14:49 +0000 (10:14 +0100)
The tegra_output_exit() and tegra_output_remove() functions cannot fail,
so make them return void.

Signed-off-by: Thierry Reding <treding@nvidia.com>
drivers/gpu/drm/tegra/drm.h
drivers/gpu/drm/tegra/dsi.c
drivers/gpu/drm/tegra/hdmi.c
drivers/gpu/drm/tegra/output.c
drivers/gpu/drm/tegra/rgb.c
drivers/gpu/drm/tegra/sor.c

index 699211a89a2e8125d33987e2703cc5bb18a09cde..bf1c47ec46b6a8db05cb603439711c8daeb2bece 100644 (file)
@@ -213,9 +213,9 @@ int tegra_dc_rgb_exit(struct tegra_dc *dc);
 
 /* from output.c */
 int tegra_output_probe(struct tegra_output *output);
-int tegra_output_remove(struct tegra_output *output);
+void tegra_output_remove(struct tegra_output *output);
 int tegra_output_init(struct drm_device *drm, struct tegra_output *output);
-int tegra_output_exit(struct tegra_output *output);
+void tegra_output_exit(struct tegra_output *output);
 
 int tegra_output_connector_get_modes(struct drm_connector *connector);
 struct drm_encoder *
index 1401d0d7108a60693e920842ed8210a84aa44c9a..23f4b0fc9734edad42eb3b2c555ee435f0f06f6a 100644 (file)
@@ -1577,11 +1577,7 @@ static int tegra_dsi_remove(struct platform_device *pdev)
                return err;
        }
 
-       err = tegra_output_remove(&dsi->output);
-       if (err < 0) {
-               dev_err(&pdev->dev, "failed to remove output: %d\n", err);
-               return err;
-       }
+       tegra_output_remove(&dsi->output);
 
        mipi_dsi_host_unregister(&dsi->host);
        tegra_mipi_free(dsi->mipi);
index 03ceb50b1dc9a12aae897de1ee03239c79a4aded..d41530f1097c00ad9e42b618fd0b979c9d425c22 100644 (file)
@@ -1563,11 +1563,7 @@ static int tegra_hdmi_remove(struct platform_device *pdev)
                return err;
        }
 
-       err = tegra_output_remove(&hdmi->output);
-       if (err < 0) {
-               dev_err(&pdev->dev, "failed to remove output: %d\n", err);
-               return err;
-       }
+       tegra_output_remove(&hdmi->output);
 
        clk_disable_unprepare(hdmi->clk_parent);
        clk_disable_unprepare(hdmi->clk);
index 2d3b656bfd22604c27bcedfa679921c169b8149e..8bb66008b8aa19f335b9f0b3c5f3689c23cbf741 100644 (file)
@@ -172,7 +172,7 @@ int tegra_output_probe(struct tegra_output *output)
        return 0;
 }
 
-int tegra_output_remove(struct tegra_output *output)
+void tegra_output_remove(struct tegra_output *output)
 {
        if (gpio_is_valid(output->hpd_gpio)) {
                free_irq(output->hpd_irq, output);
@@ -181,8 +181,6 @@ int tegra_output_remove(struct tegra_output *output)
 
        if (output->ddc)
                put_device(&output->ddc->dev);
-
-       return 0;
 }
 
 int tegra_output_init(struct drm_device *drm, struct tegra_output *output)
@@ -205,7 +203,7 @@ int tegra_output_init(struct drm_device *drm, struct tegra_output *output)
        return 0;
 }
 
-int tegra_output_exit(struct tegra_output *output)
+void tegra_output_exit(struct tegra_output *output)
 {
        /*
         * The connector is going away, so the interrupt must be disabled to
@@ -216,6 +214,4 @@ int tegra_output_exit(struct tegra_output *output)
 
        if (output->panel)
                drm_panel_detach(output->panel);
-
-       return 0;
 }
index ab6093889be8f02837effaf3e9b136336dfd88a1..0c932f9dc12d1318e27f3fe0823de83e06abbd5e 100644 (file)
@@ -287,15 +287,10 @@ int tegra_dc_rgb_probe(struct tegra_dc *dc)
 
 int tegra_dc_rgb_remove(struct tegra_dc *dc)
 {
-       int err;
-
        if (!dc->rgb)
                return 0;
 
-       err = tegra_output_remove(dc->rgb);
-       if (err < 0)
-               return err;
-
+       tegra_output_remove(dc->rgb);
        dc->rgb = NULL;
 
        return 0;
@@ -342,8 +337,8 @@ int tegra_dc_rgb_init(struct drm_device *drm, struct tegra_dc *dc)
 
 int tegra_dc_rgb_exit(struct tegra_dc *dc)
 {
-       if (!dc->rgb)
-               return 0;
+       if (dc->rgb)
+               tegra_output_exit(dc->rgb);
 
-       return tegra_output_exit(dc->rgb);
+       return 0;
 }
index ee18adf7f6536aee4e761e59a1087cc3eefa3be7..9e67838c1562859cdf34689d9acf9c432744b271 100644 (file)
@@ -1396,6 +1396,8 @@ static int tegra_sor_exit(struct host1x_client *client)
        struct tegra_sor *sor = host1x_client_to_sor(client);
        int err;
 
+       tegra_output_exit(&sor->output);
+
        if (sor->dpaux) {
                err = tegra_dpaux_detach(sor->dpaux);
                if (err < 0) {
@@ -1500,11 +1502,7 @@ static int tegra_sor_remove(struct platform_device *pdev)
                return err;
        }
 
-       err = tegra_output_remove(&sor->output);
-       if (err < 0) {
-               dev_err(&pdev->dev, "failed to remove output: %d\n", err);
-               return err;
-       }
+       tegra_output_remove(&sor->output);
 
        return 0;
 }