12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182 |
- From 4ffe79de7272234408a9179aa4c403ee1b67a362 Mon Sep 17 00:00:00 2001
- From: Myy Miouyouyou <myy@miouyouyou.fr>
- Date: Thu, 7 Dec 2017 21:27:52 +0100
- Subject: [PATCH] soc: rockchip: power-domain: export idle request
- We need to put the power status of HEVC/RKVDEC IP into IDLE
- unless we can't reset that IP or the SoC would crash down.
- rockchip_pmu_idle_request(dev, true)---> enter idle
- rockchip_pmu_idle_request(dev, false)---> exit idle
- Only the video codec drivers of rockchip platform would
- request this patch currently.
- I am not sure whether it is necessary to add a new function
- at generic power domain. I want someone give me some advises
- here.
- Signed-off-by: Myy Miouyouyou <myy@miouyouyou.fr>
- ---
- drivers/soc/rockchip/pm_domains.c | 23 +++++++++++++++++++++++
- include/linux/rockchip_pmu.h | 15 +++++++++++++++
- 2 files changed, 38 insertions(+)
- create mode 100644 include/linux/rockchip_pmu.h
- diff --git a/drivers/soc/rockchip/pm_domains.c b/drivers/soc/rockchip/pm_domains.c
- index 40b75748..0006ed53 100644
- --- a/drivers/soc/rockchip/pm_domains.c
- +++ b/drivers/soc/rockchip/pm_domains.c
- @@ -180,6 +180,29 @@ static int rockchip_pmu_set_idle_request(struct rockchip_pm_domain *pd,
- return 0;
- }
-
- +int rockchip_pmu_idle_request(struct device *dev, bool idle)
- +{
- + struct generic_pm_domain *genpd;
- + struct rockchip_pm_domain *pd;
- + int ret;
- +
- + if (IS_ERR_OR_NULL(dev))
- + return -EINVAL;
- +
- + if (IS_ERR_OR_NULL(dev->pm_domain))
- + return -EINVAL;
- +
- + genpd = pd_to_genpd(dev->pm_domain);
- + pd = to_rockchip_pd(genpd);
- +
- + mutex_lock(&pd->pmu->mutex);
- + ret = rockchip_pmu_set_idle_request(pd, idle);
- + mutex_unlock(&pd->pmu->mutex);
- +
- + return ret;
- +}
- +EXPORT_SYMBOL(rockchip_pmu_idle_request);
- +
- static int rockchip_pmu_save_qos(struct rockchip_pm_domain *pd)
- {
- int i;
- diff --git a/include/linux/rockchip_pmu.h b/include/linux/rockchip_pmu.h
- new file mode 100644
- index 00000000..720b3314
- --- /dev/null
- +++ b/include/linux/rockchip_pmu.h
- @@ -0,0 +1,15 @@
- +/*
- + * pm_domain.h - Definitions and headers related to device power domains.
- + *
- + * Copyright (C) 2017 Randy Li <ayaka@soulik.info>.
- + *
- + * This file is released under the GPLv2.
- + */
- +
- +#ifndef _LINUX_ROCKCHIP_PM_H
- +#define _LINUX_ROCKCHIP_PM_H
- +#include <linux/device.h>
- +
- +int rockchip_pmu_idle_request(struct device *dev, bool idle);
- +
- +#endif /* _LINUX_ROCKCHIP_PM_H */
- --
- 2.14.1
|