39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
			
		
		
	
	
			39 lines
		
	
	
		
			1.0 KiB
		
	
	
	
		
			C
		
	
	
	
/*
 | 
						|
 * Copyright 2014-2015, Freescale Semiconductor
 | 
						|
 *
 | 
						|
 * SPDX-License-Identifier:	GPL-2.0+
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef _FSL_LAYERSCAPE_MP_H
 | 
						|
#define _FSL_LAYERSCAPE_MP_H
 | 
						|
 | 
						|
/*
 | 
						|
* Each spin table element is defined as
 | 
						|
* struct {
 | 
						|
*      uint64_t entry_addr;
 | 
						|
*      uint64_t status;
 | 
						|
*      uint64_t lpid;
 | 
						|
* };
 | 
						|
* we pad this struct to 64 bytes so each entry is in its own cacheline
 | 
						|
* the actual spin table is an array of these structures
 | 
						|
*/
 | 
						|
#define SPIN_TABLE_ELEM_ENTRY_ADDR_IDX	0
 | 
						|
#define SPIN_TABLE_ELEM_STATUS_IDX	1
 | 
						|
#define SPIN_TABLE_ELEM_LPID_IDX	2
 | 
						|
#define WORDS_PER_SPIN_TABLE_ENTRY	8	/* pad to 64 bytes */
 | 
						|
#define SPIN_TABLE_ELEM_SIZE		64
 | 
						|
 | 
						|
#define id_to_core(x)	((x & 3) | (x >> 6))
 | 
						|
#ifndef __ASSEMBLY__
 | 
						|
extern u64 __spin_table[];
 | 
						|
extern u64 __real_cntfrq;
 | 
						|
extern u64 *secondary_boot_code;
 | 
						|
extern size_t __secondary_boot_code_size;
 | 
						|
int fsl_layerscape_wake_seconday_cores(void);
 | 
						|
void *get_spin_tbl_addr(void);
 | 
						|
phys_addr_t determine_mp_bootpg(void);
 | 
						|
void secondary_boot_func(void);
 | 
						|
int is_core_online(u64 cpu_id);
 | 
						|
#endif
 | 
						|
#endif /* _FSL_LAYERSCAPE_MP_H */
 |