 7993a9ef53
			
		
	
	
		7993a9ef53
		
	
	
	
	
		
			
			Trackpad working, setup install script, wifi works. Speakers work. TODO: headphones, keybindings
		
			
				
	
	
		
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			83 lines
		
	
	
		
			2.3 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| 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
 | |
| 
 |