mirror of
				https://github.com/physwizz/a155-U-u1.git
				synced 2025-10-28 16:15:46 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			96 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			96 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
| /* SPDX-License-Identifier: GPL-2.0 */
 | |
| /*
 | |
|  * Copyright (c) 2019 MediaTek Inc.
 | |
|  */
 | |
| 
 | |
| #ifndef _SLBC_IPI_H_
 | |
| #define _SLBC_IPI_H_
 | |
| 
 | |
| enum {
 | |
| 	IPI_SLBC_ENABLE,
 | |
| 	IPI_SLBC_SYNC_FROM_AP,
 | |
| 	IPI_SLBC_SYNC_TO_AP,
 | |
| 	IPI_SLBC_CACHE_REQUEST_FROM_AP,
 | |
| 	IPI_SLBC_CACHE_REQUEST_TO_AP,
 | |
| 	IPI_SLBC_CACHE_RELEASE_FROM_AP,
 | |
| 	IPI_SLBC_CACHE_RELEASE_TO_AP,
 | |
| 	IPI_SLBC_BUFFER_REQUEST_FROM_AP,
 | |
| 	IPI_SLBC_BUFFER_REQUEST_TO_AP,
 | |
| 	IPI_SLBC_BUFFER_RELEASE_FROM_AP,
 | |
| 	IPI_SLBC_BUFFER_RELEASE_TO_AP,
 | |
| 	IPI_SLBC_ACP_REQUEST_FROM_AP,
 | |
| 	IPI_SLBC_ACP_REQUEST_TO_AP,
 | |
| 	IPI_SLBC_ACP_RELEASE_FROM_AP,
 | |
| 	IPI_SLBC_ACP_RELEASE_TO_AP,
 | |
| 	IPI_SLBC_SUSPEND_RESUME_NOTIFY,
 | |
| 	IPI_SLBC_BUFFER_POWER_ON,
 | |
| 	IPI_SLBC_BUFFER_POWER_OFF,
 | |
| 	IPI_SLBC_FORCE,
 | |
| 	IPI_SLBC_MIC_NUM,
 | |
| 	IPI_SLBC_INNER,
 | |
| 	IPI_SLBC_OUTER,
 | |
| 	IPI_SLBC_MEM_BARRIER,
 | |
| 	IPI_SLB_DISABLE,
 | |
| 	IPI_SLC_DISABLE,
 | |
| 	NR_IPI_SLBC,
 | |
| };
 | |
| 
 | |
| struct slbc_ipi_data {
 | |
| 	unsigned int cmd;
 | |
| 	unsigned int arg;
 | |
| };
 | |
| 
 | |
| struct slbc_ipi_ops {
 | |
| 	int (*slbc_request_acp)(void *ptr);
 | |
| 	int (*slbc_release_acp)(void *ptr);
 | |
| 	void (*slbc_mem_barrier)(void);
 | |
| };
 | |
| 
 | |
| extern int slbc_scmi_set(void *buffer, int slot);
 | |
| extern int slbc_scmi_get(void *buffer, int slot, void *ptr);
 | |
| 
 | |
| #define SLBC_IPI(x, y)			((x) & 0xffff | ((y) & 0xffff) << 16)
 | |
| #define SLBC_IPI_CMD_GET(x)		((x) & 0xffff)
 | |
| #define SLBC_IPI_UID_GET(x)		((x) >> 16 & 0xffff)
 | |
| 
 | |
| #if IS_ENABLED(CONFIG_MTK_SLBC_IPI)
 | |
| extern int slbc_suspend_resume_notify(int suspend);
 | |
| extern int slbc_scmi_init(void);
 | |
| extern int slbc_sspm_slb_disable(int disable);
 | |
| extern int slbc_sspm_slc_disable(int disable);
 | |
| extern int slbc_sspm_enable(int enable);
 | |
| extern int slbc_get_scmi_enable(void);
 | |
| extern void slbc_set_scmi_enable(int enable);
 | |
| extern int slbc_force_scmi_cmd(unsigned int force);
 | |
| extern int slbc_mic_num_cmd(unsigned int num);
 | |
| extern int slbc_inner_cmd(unsigned int inner);
 | |
| extern int slbc_outer_cmd(unsigned int outer);
 | |
| extern int _slbc_request_cache_scmi(void *ptr);
 | |
| extern int _slbc_release_cache_scmi(void *ptr);
 | |
| extern int _slbc_request_buffer_scmi(void *ptr);
 | |
| extern int _slbc_release_buffer_scmi(void *ptr);
 | |
| extern void slbc_register_ipi_ops(struct slbc_ipi_ops *ops);
 | |
| extern void slbc_unregister_ipi_ops(struct slbc_ipi_ops *ops);
 | |
| #else
 | |
| __attribute__ ((weak)) int slbc_suspend_resume_notify(int) {}
 | |
| __attribute__ ((weak)) int slbc_scmi_init(void) { return 0; }
 | |
| __attribute__ ((weak)) int slbc_sspm_slb_disable(int disable) {}
 | |
| __attribute__ ((weak)) int slbc_sspm_slc_disable(int disable) {}
 | |
| __attribute__ ((weak)) int slbc_sspm_enable(int enable) {}
 | |
| __attribute__ ((weak)) int slbc_get_scmi_enable(void) { return 0; }
 | |
| __attribute__ ((weak)) void slbc_set_scmi_enable(int enable) {}
 | |
| __attribute__ ((weak)) int slbc_force_scmi_cmd(unsigned int force) {}
 | |
| __attribute__ ((weak)) int slbc_mic_num_cmd(unsigned int num) {}
 | |
| __attribute__ ((weak)) int slbc_inner_cmd(unsigned int inner) {}
 | |
| __attribute__ ((weak)) int slbc_outer_cmd(unsigned int outer) {}
 | |
| __attribute__ ((weak)) int _slbc_request_cache_scmi(void *ptr) {}
 | |
| __attribute__ ((weak)) int _slbc_release_cache_scmi(void *ptr) {}
 | |
| __attribute__ ((weak)) int _slbc_request_buffer_scmi(void *ptr) {}
 | |
| __attribute__ ((weak)) int _slbc_release_buffer_scmi(void *ptr) {}
 | |
| __attribute__ ((weak)) void slbc_register_ipi_ops(struct slbc_ipi_ops *ops) {}
 | |
| __attribute__ ((weak)) void slbc_unregister_ipi_ops(struct slbc_ipi_ops *ops) {}
 | |
| #endif /* CONFIG_MTK_SLBC_IPI */
 | |
| 
 | |
| #endif /* _SLBC_IPI_H_ */
 | |
| 
 |