mirror of
				git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
				synced 2025-09-04 20:19:47 +08:00 
			
		
		
		
	 fd587ff01d
			
		
	
	
		fd587ff01d
		
	
	
	
	
		
			
			Some OPP tables specify voltage for each frequency. Devfreq can handle these regulators but they should be get only 1 time to avoid issue and know who is in charge. If OPP table is probe don't init regulator. Reviewed-by: Steven Price <steven.price@arm.com> Reviewed-by: Alyssa Rosenzweig <alyssa.rosenzweig@collabora.com> Signed-off-by: Clément Péron <peron.clem@gmail.com> Signed-off-by: Rob Herring <robh@kernel.org> Link: https://patchwork.freedesktop.org/patch/msgid/20200710095409.407087-11-peron.clem@gmail.com
		
			
				
	
	
		
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /* Copyright 2019 Collabora ltd. */
 | |
| 
 | |
| #ifndef __PANFROST_DEVFREQ_H__
 | |
| #define __PANFROST_DEVFREQ_H__
 | |
| 
 | |
| #include <linux/spinlock.h>
 | |
| #include <linux/ktime.h>
 | |
| 
 | |
| struct devfreq;
 | |
| struct opp_table;
 | |
| struct thermal_cooling_device;
 | |
| 
 | |
| struct panfrost_device;
 | |
| 
 | |
| struct panfrost_devfreq {
 | |
| 	struct devfreq *devfreq;
 | |
| 	struct opp_table *regulators_opp_table;
 | |
| 	struct thermal_cooling_device *cooling;
 | |
| 	bool opp_of_table_added;
 | |
| 
 | |
| 	ktime_t busy_time;
 | |
| 	ktime_t idle_time;
 | |
| 	ktime_t time_last_update;
 | |
| 	int busy_count;
 | |
| 	/*
 | |
| 	 * Protect busy_time, idle_time, time_last_update and busy_count
 | |
| 	 * because these can be updated concurrently between multiple jobs.
 | |
| 	 */
 | |
| 	spinlock_t lock;
 | |
| };
 | |
| 
 | |
| int panfrost_devfreq_init(struct panfrost_device *pfdev);
 | |
| void panfrost_devfreq_fini(struct panfrost_device *pfdev);
 | |
| 
 | |
| void panfrost_devfreq_resume(struct panfrost_device *pfdev);
 | |
| void panfrost_devfreq_suspend(struct panfrost_device *pfdev);
 | |
| 
 | |
| void panfrost_devfreq_record_busy(struct panfrost_devfreq *devfreq);
 | |
| void panfrost_devfreq_record_idle(struct panfrost_devfreq *devfreq);
 | |
| 
 | |
| #endif /* __PANFROST_DEVFREQ_H__ */
 |