mirror of
git://nv-tegra.nvidia.com/linux-nv-oot.git
synced 2025-12-22 09:11:26 +03:00
platform: dce: Add suspend resume hooks
Add suspend resume hooks function and handling of sc7 events. Bug 3583331 Bug 3826630 Signed-off-by: Mahesh Kumar <mahkumar@nvidia.com> Change-Id: I920b02ad46a76330febe666fe17e8d328f744b1d Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2834856 Reviewed-by: Arun Swain <arswain@nvidia.com> GVS: Gerrit_Virtual_Submit <buildbot_gerritrpt@nvidia.com> Reviewed-on: https://git-master.nvidia.com/r/c/linux-nvidia/+/2824218 Reviewed-by: svc-mobile-coverity <svc-mobile-coverity@nvidia.com> Reviewed-by: svc-mobile-cert <svc-mobile-cert@nvidia.com> Reviewed-by: svc_kernel_abi <svc_kernel_abi@nvidia.com>
This commit is contained in:
committed by
Laxman Dewangan
parent
31b6d913ab
commit
75bfcf326d
@@ -1,5 +1,5 @@
|
||||
/*
|
||||
* Copyright (c) 2019-2023, NVIDIA CORPORATION. All rights reserved.
|
||||
* Copyright (c) 2019-2023, NVIDIA CORPORATION & AFFILIATES. All rights reserved.
|
||||
*
|
||||
* This program is free software; you can redistribute it and/or modify it
|
||||
* under the terms and conditions of the GNU General Public License,
|
||||
@@ -59,6 +59,19 @@ static inline struct tegra_dce *dce_get_pdata_dce(struct platform_device *pdev)
|
||||
return (&((struct dce_device *)dev_get_drvdata(&pdev->dev))->d);
|
||||
}
|
||||
|
||||
/**
|
||||
* dce_get_tegra_dce_from_dev - inline function to get the tegra_dce pointer
|
||||
* from devicve struct.
|
||||
*
|
||||
* @pdev : Pointer to the device data structure.
|
||||
*
|
||||
* Return : Pointer pointing to tegra_dce data structure.
|
||||
*/
|
||||
static inline struct tegra_dce *dce_get_tegra_dce_from_dev(struct device *dev)
|
||||
{
|
||||
return (&((struct dce_device *)dev_get_drvdata(dev))->d);
|
||||
}
|
||||
|
||||
/**
|
||||
* dce_init_dev_data - Function to initialize the dce device data structure.
|
||||
*
|
||||
@@ -273,11 +286,35 @@ static int tegra_dce_remove(struct platform_device *pdev)
|
||||
return 0;
|
||||
}
|
||||
|
||||
#ifdef CONFIG_PM
|
||||
static int dce_pm_suspend(struct device *dev)
|
||||
{
|
||||
struct tegra_dce *d = dce_get_tegra_dce_from_dev(dev);
|
||||
|
||||
return dce_pm_enter_sc7(d);
|
||||
}
|
||||
|
||||
static int dce_pm_resume(struct device *dev)
|
||||
{
|
||||
struct tegra_dce *d = dce_get_tegra_dce_from_dev(dev);
|
||||
|
||||
return dce_pm_exit_sc7(d);
|
||||
}
|
||||
|
||||
const struct dev_pm_ops dce_pm_ops = {
|
||||
.suspend = dce_pm_suspend,
|
||||
.resume = dce_pm_resume,
|
||||
};
|
||||
#endif
|
||||
|
||||
static struct platform_driver tegra_dce_driver = {
|
||||
.driver = {
|
||||
.name = "tegra-dce",
|
||||
.of_match_table =
|
||||
of_match_ptr(tegra_dce_of_match),
|
||||
#ifdef CONFIG_PM
|
||||
.pm = &dce_pm_ops,
|
||||
#endif
|
||||
},
|
||||
.probe = tegra_dce_probe,
|
||||
.remove = tegra_dce_remove,
|
||||
|
||||
Reference in New Issue
Block a user