43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			43 lines
		
	
	
		
			1.1 KiB
		
	
	
	
		
			C
		
	
	
	
/*
 | 
						|
 * Copyright (c) 2019, MediaTek Inc. All rights reserved.
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier: BSD-3-Clause
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef MTSPMC_H
 | 
						|
#define MTSPMC_H
 | 
						|
 | 
						|
/*
 | 
						|
 * CONFIG_SPMC_MODE: Select CPU power control mode.
 | 
						|
 *
 | 
						|
 * 0: Legacy
 | 
						|
 *   Control power flow from SW through SPM register (MP*_PWR_CON).
 | 
						|
 * 1: HW
 | 
						|
 *   Control power flow from SPMC. Most control flow and timing are handled
 | 
						|
 *   by SPMC.
 | 
						|
 */
 | 
						|
#define SPMC_MODE   1
 | 
						|
 | 
						|
int spmc_init(void);
 | 
						|
 | 
						|
void spm_poweron_cpu(int cluster, int cpu);
 | 
						|
void spm_poweroff_cpu(int cluster, int cpu);
 | 
						|
 | 
						|
void spm_poweroff_cluster(int cluster);
 | 
						|
void spm_poweron_cluster(int cluster);
 | 
						|
 | 
						|
int spm_get_cpu_powerstate(int cluster, int cpu);
 | 
						|
int spm_get_cluster_powerstate(int cluster);
 | 
						|
int spm_get_powerstate(uint32_t mask);
 | 
						|
 | 
						|
void spm_enable_cpu_auto_off(int cluster, int cpu);
 | 
						|
void spm_disable_cpu_auto_off(int cluster, int cpu);
 | 
						|
void spm_set_cpu_power_off(int cluster, int cpu);
 | 
						|
void spm_enable_cluster_auto_off(int cluster);
 | 
						|
 | 
						|
void mcucfg_init_archstate(int cluster, int cpu, int arm64);
 | 
						|
void mcucfg_set_bootaddr(int cluster, int cpu, uintptr_t bootaddr);
 | 
						|
uintptr_t mcucfg_get_bootaddr(int cluster, int cpu);
 | 
						|
 | 
						|
#endif /* MTSPMC_H */
 |