Commit 1d9e6664 authored by Paul Cercueil's avatar Paul Cercueil

drm: exynos: Remove #ifdef guards for PM related functions

Use the DEFINE_RUNTIME_DEV_PM_OPS(), SYSTEM_SLEEP_PM_OPS(),
RUNTIME_PM_OPS() and pm_ptr() macros to handle the runtime and suspend
PM callbacks.

These macros allow the suspend and resume functions to be automatically
dropped by the compiler when CONFIG_PM is disabled, without having
to use #ifdef guards.

This has the advantage of always compiling these functions in,
independently of any Kconfig option. Thanks to that, bugs and other
regressions are subsequently easier to catch.
Signed-off-by: default avatarPaul Cercueil <paul@crapouillou.net>
Acked-by: default avatarInki Dae <inki.dae@samsung.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20221129191733.137897-10-paul@crapouillou.net
parent 196c9226
...@@ -710,7 +710,6 @@ static irqreturn_t decon_irq_handler(int irq, void *dev_id) ...@@ -710,7 +710,6 @@ static irqreturn_t decon_irq_handler(int irq, void *dev_id)
return IRQ_HANDLED; return IRQ_HANDLED;
} }
#ifdef CONFIG_PM
static int exynos5433_decon_suspend(struct device *dev) static int exynos5433_decon_suspend(struct device *dev)
{ {
struct decon_context *ctx = dev_get_drvdata(dev); struct decon_context *ctx = dev_get_drvdata(dev);
...@@ -741,14 +740,10 @@ static int exynos5433_decon_resume(struct device *dev) ...@@ -741,14 +740,10 @@ static int exynos5433_decon_resume(struct device *dev)
return ret; return ret;
} }
#endif
static const struct dev_pm_ops exynos5433_decon_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(exynos5433_decon_pm_ops,
SET_RUNTIME_PM_OPS(exynos5433_decon_suspend, exynos5433_decon_resume, exynos5433_decon_suspend,
NULL) exynos5433_decon_resume, NULL);
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
pm_runtime_force_resume)
};
static const struct of_device_id exynos5433_decon_driver_dt_match[] = { static const struct of_device_id exynos5433_decon_driver_dt_match[] = {
{ {
...@@ -881,7 +876,7 @@ struct platform_driver exynos5433_decon_driver = { ...@@ -881,7 +876,7 @@ struct platform_driver exynos5433_decon_driver = {
.remove = exynos5433_decon_remove, .remove = exynos5433_decon_remove,
.driver = { .driver = {
.name = "exynos5433-decon", .name = "exynos5433-decon",
.pm = &exynos5433_decon_pm_ops, .pm = pm_ptr(&exynos5433_decon_pm_ops),
.of_match_table = exynos5433_decon_driver_dt_match, .of_match_table = exynos5433_decon_driver_dt_match,
}, },
}; };
...@@ -779,7 +779,6 @@ static int decon_remove(struct platform_device *pdev) ...@@ -779,7 +779,6 @@ static int decon_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM
static int exynos7_decon_suspend(struct device *dev) static int exynos7_decon_suspend(struct device *dev)
{ {
struct decon_context *ctx = dev_get_drvdata(dev); struct decon_context *ctx = dev_get_drvdata(dev);
...@@ -836,21 +835,16 @@ static int exynos7_decon_resume(struct device *dev) ...@@ -836,21 +835,16 @@ static int exynos7_decon_resume(struct device *dev)
err_pclk_enable: err_pclk_enable:
return ret; return ret;
} }
#endif
static const struct dev_pm_ops exynos7_decon_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(exynos7_decon_pm_ops, exynos7_decon_suspend,
SET_RUNTIME_PM_OPS(exynos7_decon_suspend, exynos7_decon_resume, exynos7_decon_resume, NULL);
NULL)
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
pm_runtime_force_resume)
};
struct platform_driver decon_driver = { struct platform_driver decon_driver = {
.probe = decon_probe, .probe = decon_probe,
.remove = decon_remove, .remove = decon_remove,
.driver = { .driver = {
.name = "exynos-decon", .name = "exynos-decon",
.pm = &exynos7_decon_pm_ops, .pm = pm_ptr(&exynos7_decon_pm_ops),
.of_match_table = decon_driver_dt_match, .of_match_table = decon_driver_dt_match,
}, },
}; };
...@@ -260,7 +260,6 @@ static int exynos_dp_remove(struct platform_device *pdev) ...@@ -260,7 +260,6 @@ static int exynos_dp_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM
static int exynos_dp_suspend(struct device *dev) static int exynos_dp_suspend(struct device *dev)
{ {
struct exynos_dp_device *dp = dev_get_drvdata(dev); struct exynos_dp_device *dp = dev_get_drvdata(dev);
...@@ -274,13 +273,9 @@ static int exynos_dp_resume(struct device *dev) ...@@ -274,13 +273,9 @@ static int exynos_dp_resume(struct device *dev)
return analogix_dp_resume(dp->adp); return analogix_dp_resume(dp->adp);
} }
#endif
static const struct dev_pm_ops exynos_dp_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(exynos_dp_pm_ops, exynos_dp_suspend,
SET_RUNTIME_PM_OPS(exynos_dp_suspend, exynos_dp_resume, NULL) exynos_dp_resume, NULL);
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
pm_runtime_force_resume)
};
static const struct of_device_id exynos_dp_match[] = { static const struct of_device_id exynos_dp_match[] = {
{ .compatible = "samsung,exynos5-dp" }, { .compatible = "samsung,exynos5-dp" },
...@@ -294,7 +289,7 @@ struct platform_driver dp_driver = { ...@@ -294,7 +289,7 @@ struct platform_driver dp_driver = {
.driver = { .driver = {
.name = "exynos-dp", .name = "exynos-dp",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &exynos_dp_pm_ops, .pm = pm_ptr(&exynos_dp_pm_ops),
.of_match_table = exynos_dp_match, .of_match_table = exynos_dp_match,
}, },
}; };
......
...@@ -1381,7 +1381,6 @@ static int fimc_remove(struct platform_device *pdev) ...@@ -1381,7 +1381,6 @@ static int fimc_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM
static int fimc_runtime_suspend(struct device *dev) static int fimc_runtime_suspend(struct device *dev)
{ {
struct fimc_context *ctx = get_fimc_context(dev); struct fimc_context *ctx = get_fimc_context(dev);
...@@ -1398,13 +1397,9 @@ static int fimc_runtime_resume(struct device *dev) ...@@ -1398,13 +1397,9 @@ static int fimc_runtime_resume(struct device *dev)
DRM_DEV_DEBUG_KMS(dev, "id[%d]\n", ctx->id); DRM_DEV_DEBUG_KMS(dev, "id[%d]\n", ctx->id);
return clk_prepare_enable(ctx->clocks[FIMC_CLK_GATE]); return clk_prepare_enable(ctx->clocks[FIMC_CLK_GATE]);
} }
#endif
static const struct dev_pm_ops fimc_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(fimc_pm_ops, fimc_runtime_suspend,
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, fimc_runtime_resume, NULL);
pm_runtime_force_resume)
SET_RUNTIME_PM_OPS(fimc_runtime_suspend, fimc_runtime_resume, NULL)
};
static const struct of_device_id fimc_of_match[] = { static const struct of_device_id fimc_of_match[] = {
{ .compatible = "samsung,exynos4210-fimc" }, { .compatible = "samsung,exynos4210-fimc" },
...@@ -1420,6 +1415,6 @@ struct platform_driver fimc_driver = { ...@@ -1420,6 +1415,6 @@ struct platform_driver fimc_driver = {
.of_match_table = fimc_of_match, .of_match_table = fimc_of_match,
.name = "exynos-drm-fimc", .name = "exynos-drm-fimc",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &fimc_pm_ops, .pm = pm_ptr(&fimc_pm_ops),
}, },
}; };
...@@ -1287,7 +1287,6 @@ static int fimd_remove(struct platform_device *pdev) ...@@ -1287,7 +1287,6 @@ static int fimd_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM
static int exynos_fimd_suspend(struct device *dev) static int exynos_fimd_suspend(struct device *dev)
{ {
struct fimd_context *ctx = dev_get_drvdata(dev); struct fimd_context *ctx = dev_get_drvdata(dev);
...@@ -1321,13 +1320,9 @@ static int exynos_fimd_resume(struct device *dev) ...@@ -1321,13 +1320,9 @@ static int exynos_fimd_resume(struct device *dev)
return 0; return 0;
} }
#endif
static const struct dev_pm_ops exynos_fimd_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(exynos_fimd_pm_ops, exynos_fimd_suspend,
SET_RUNTIME_PM_OPS(exynos_fimd_suspend, exynos_fimd_resume, NULL) exynos_fimd_resume, NULL);
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
pm_runtime_force_resume)
};
struct platform_driver fimd_driver = { struct platform_driver fimd_driver = {
.probe = fimd_probe, .probe = fimd_probe,
...@@ -1335,7 +1330,7 @@ struct platform_driver fimd_driver = { ...@@ -1335,7 +1330,7 @@ struct platform_driver fimd_driver = {
.driver = { .driver = {
.name = "exynos4-fb", .name = "exynos4-fb",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &exynos_fimd_pm_ops, .pm = pm_ptr(&exynos_fimd_pm_ops),
.of_match_table = fimd_driver_dt_match, .of_match_table = fimd_driver_dt_match,
}, },
}; };
...@@ -1549,7 +1549,6 @@ static int g2d_remove(struct platform_device *pdev) ...@@ -1549,7 +1549,6 @@ static int g2d_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM_SLEEP
static int g2d_suspend(struct device *dev) static int g2d_suspend(struct device *dev)
{ {
struct g2d_data *g2d = dev_get_drvdata(dev); struct g2d_data *g2d = dev_get_drvdata(dev);
...@@ -1574,9 +1573,7 @@ static int g2d_resume(struct device *dev) ...@@ -1574,9 +1573,7 @@ static int g2d_resume(struct device *dev)
return 0; return 0;
} }
#endif
#ifdef CONFIG_PM
static int g2d_runtime_suspend(struct device *dev) static int g2d_runtime_suspend(struct device *dev)
{ {
struct g2d_data *g2d = dev_get_drvdata(dev); struct g2d_data *g2d = dev_get_drvdata(dev);
...@@ -1597,11 +1594,10 @@ static int g2d_runtime_resume(struct device *dev) ...@@ -1597,11 +1594,10 @@ static int g2d_runtime_resume(struct device *dev)
return ret; return ret;
} }
#endif
static const struct dev_pm_ops g2d_pm_ops = { static const struct dev_pm_ops g2d_pm_ops = {
SET_SYSTEM_SLEEP_PM_OPS(g2d_suspend, g2d_resume) SYSTEM_SLEEP_PM_OPS(g2d_suspend, g2d_resume)
SET_RUNTIME_PM_OPS(g2d_runtime_suspend, g2d_runtime_resume, NULL) RUNTIME_PM_OPS(g2d_runtime_suspend, g2d_runtime_resume, NULL)
}; };
static const struct of_device_id exynos_g2d_match[] = { static const struct of_device_id exynos_g2d_match[] = {
...@@ -1617,7 +1613,7 @@ struct platform_driver g2d_driver = { ...@@ -1617,7 +1613,7 @@ struct platform_driver g2d_driver = {
.driver = { .driver = {
.name = "exynos-drm-g2d", .name = "exynos-drm-g2d",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &g2d_pm_ops, .pm = pm_ptr(&g2d_pm_ops),
.of_match_table = exynos_g2d_match, .of_match_table = exynos_g2d_match,
}, },
}; };
...@@ -340,7 +340,6 @@ static const struct component_ops exynos_mic_component_ops = { ...@@ -340,7 +340,6 @@ static const struct component_ops exynos_mic_component_ops = {
.unbind = exynos_mic_unbind, .unbind = exynos_mic_unbind,
}; };
#ifdef CONFIG_PM
static int exynos_mic_suspend(struct device *dev) static int exynos_mic_suspend(struct device *dev)
{ {
struct exynos_mic *mic = dev_get_drvdata(dev); struct exynos_mic *mic = dev_get_drvdata(dev);
...@@ -369,13 +368,9 @@ static int exynos_mic_resume(struct device *dev) ...@@ -369,13 +368,9 @@ static int exynos_mic_resume(struct device *dev)
} }
return 0; return 0;
} }
#endif
static const struct dev_pm_ops exynos_mic_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(exynos_mic_pm_ops, exynos_mic_suspend,
SET_RUNTIME_PM_OPS(exynos_mic_suspend, exynos_mic_resume, NULL) exynos_mic_resume, NULL);
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend,
pm_runtime_force_resume)
};
static int exynos_mic_probe(struct platform_device *pdev) static int exynos_mic_probe(struct platform_device *pdev)
{ {
...@@ -470,7 +465,7 @@ struct platform_driver mic_driver = { ...@@ -470,7 +465,7 @@ struct platform_driver mic_driver = {
.remove = exynos_mic_remove, .remove = exynos_mic_remove,
.driver = { .driver = {
.name = "exynos-mic", .name = "exynos-mic",
.pm = &exynos_mic_pm_ops, .pm = pm_ptr(&exynos_mic_pm_ops),
.owner = THIS_MODULE, .owner = THIS_MODULE,
.of_match_table = exynos_mic_of_match, .of_match_table = exynos_mic_of_match,
}, },
......
...@@ -340,7 +340,6 @@ static int rotator_remove(struct platform_device *pdev) ...@@ -340,7 +340,6 @@ static int rotator_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM
static int rotator_runtime_suspend(struct device *dev) static int rotator_runtime_suspend(struct device *dev)
{ {
struct rot_context *rot = dev_get_drvdata(dev); struct rot_context *rot = dev_get_drvdata(dev);
...@@ -355,7 +354,6 @@ static int rotator_runtime_resume(struct device *dev) ...@@ -355,7 +354,6 @@ static int rotator_runtime_resume(struct device *dev)
return clk_prepare_enable(rot->clock); return clk_prepare_enable(rot->clock);
} }
#endif
static const struct drm_exynos_ipp_limit rotator_s5pv210_rbg888_limits[] = { static const struct drm_exynos_ipp_limit rotator_s5pv210_rbg888_limits[] = {
{ IPP_SIZE_LIMIT(BUFFER, .h = { 8, SZ_16K }, .v = { 8, SZ_16K }) }, { IPP_SIZE_LIMIT(BUFFER, .h = { 8, SZ_16K }, .v = { 8, SZ_16K }) },
...@@ -450,12 +448,8 @@ static const struct of_device_id exynos_rotator_match[] = { ...@@ -450,12 +448,8 @@ static const struct of_device_id exynos_rotator_match[] = {
}; };
MODULE_DEVICE_TABLE(of, exynos_rotator_match); MODULE_DEVICE_TABLE(of, exynos_rotator_match);
static const struct dev_pm_ops rotator_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(rotator_pm_ops, rotator_runtime_suspend,
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, rotator_runtime_resume, NULL);
pm_runtime_force_resume)
SET_RUNTIME_PM_OPS(rotator_runtime_suspend, rotator_runtime_resume,
NULL)
};
struct platform_driver rotator_driver = { struct platform_driver rotator_driver = {
.probe = rotator_probe, .probe = rotator_probe,
...@@ -463,7 +457,7 @@ struct platform_driver rotator_driver = { ...@@ -463,7 +457,7 @@ struct platform_driver rotator_driver = {
.driver = { .driver = {
.name = "exynos-rotator", .name = "exynos-rotator",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &rotator_pm_ops, .pm = pm_ptr(&rotator_pm_ops),
.of_match_table = exynos_rotator_match, .of_match_table = exynos_rotator_match,
}, },
}; };
...@@ -550,8 +550,6 @@ static int scaler_remove(struct platform_device *pdev) ...@@ -550,8 +550,6 @@ static int scaler_remove(struct platform_device *pdev)
return 0; return 0;
} }
#ifdef CONFIG_PM
static int clk_disable_unprepare_wrapper(struct clk *clk) static int clk_disable_unprepare_wrapper(struct clk *clk)
{ {
clk_disable_unprepare(clk); clk_disable_unprepare(clk);
...@@ -584,13 +582,9 @@ static int scaler_runtime_resume(struct device *dev) ...@@ -584,13 +582,9 @@ static int scaler_runtime_resume(struct device *dev)
return scaler_clk_ctrl(scaler, true); return scaler_clk_ctrl(scaler, true);
} }
#endif
static const struct dev_pm_ops scaler_pm_ops = { static DEFINE_RUNTIME_DEV_PM_OPS(scaler_pm_ops, scaler_runtime_suspend,
SET_SYSTEM_SLEEP_PM_OPS(pm_runtime_force_suspend, scaler_runtime_resume, NULL);
pm_runtime_force_resume)
SET_RUNTIME_PM_OPS(scaler_runtime_suspend, scaler_runtime_resume, NULL)
};
static const struct drm_exynos_ipp_limit scaler_5420_two_pixel_hv_limits[] = { static const struct drm_exynos_ipp_limit scaler_5420_two_pixel_hv_limits[] = {
{ IPP_SIZE_LIMIT(BUFFER, .h = { 16, SZ_8K }, .v = { 16, SZ_8K }) }, { IPP_SIZE_LIMIT(BUFFER, .h = { 16, SZ_8K }, .v = { 16, SZ_8K }) },
...@@ -731,7 +725,7 @@ struct platform_driver scaler_driver = { ...@@ -731,7 +725,7 @@ struct platform_driver scaler_driver = {
.driver = { .driver = {
.name = "exynos-scaler", .name = "exynos-scaler",
.owner = THIS_MODULE, .owner = THIS_MODULE,
.pm = &scaler_pm_ops, .pm = pm_ptr(&scaler_pm_ops),
.of_match_table = exynos_scaler_match, .of_match_table = exynos_scaler_match,
}, },
}; };
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment