| 
									
										
										
										
											2009-03-27 14:25:11 +01:00
										 |  |  | /*
 | 
					
						
							|  |  |  |  * Generic support for queying CPU info | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * Copyright (C) 2007-2009 Michal Simek <monstr@monstr.eu> | 
					
						
							|  |  |  |  * Copyright (C) 2007-2009 PetaLogix | 
					
						
							|  |  |  |  * Copyright (C) 2007 John Williams <jwilliams@itee.uq.edu.au> | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file is subject to the terms and conditions of the GNU General | 
					
						
							|  |  |  |  * Public License. See the file COPYING in the main directory of this | 
					
						
							|  |  |  |  * archive for more details. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #ifndef _ASM_MICROBLAZE_CPUINFO_H
 | 
					
						
							|  |  |  | #define _ASM_MICROBLAZE_CPUINFO_H
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #include <asm/prom.h>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* CPU Version and FPGA Family code conversion table type */ | 
					
						
							|  |  |  | struct cpu_ver_key { | 
					
						
							|  |  |  | 	const char *s; | 
					
						
							|  |  |  | 	const unsigned k; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern const struct cpu_ver_key cpu_ver_lookup[]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct family_string_key { | 
					
						
							|  |  |  | 	const char *s; | 
					
						
							|  |  |  | 	const unsigned k; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern const struct family_string_key family_string_lookup[]; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | struct cpuinfo { | 
					
						
							|  |  |  | 	/* Core CPU configuration */ | 
					
						
							|  |  |  | 	u32 use_instr; | 
					
						
							|  |  |  | 	u32 use_mult; | 
					
						
							|  |  |  | 	u32 use_fpu; | 
					
						
							|  |  |  | 	u32 use_exc; | 
					
						
							|  |  |  | 	u32 ver_code; | 
					
						
							|  |  |  | 	u32 mmu; | 
					
						
							| 
									
										
										
										
											2011-05-24 18:57:11 +10:00
										 |  |  | 	u32 mmu_privins; | 
					
						
							| 
									
										
										
										
											2010-08-13 12:47:42 +02:00
										 |  |  | 	u32 endian; | 
					
						
							| 
									
										
										
										
											2009-03-27 14:25:11 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | 	/* CPU caches */ | 
					
						
							|  |  |  | 	u32 use_icache; | 
					
						
							|  |  |  | 	u32 icache_tagbits; | 
					
						
							|  |  |  | 	u32 icache_write; | 
					
						
							| 
									
										
										
										
											2009-10-08 13:06:42 +02:00
										 |  |  | 	u32 icache_line_length; | 
					
						
							| 
									
										
										
										
											2009-03-27 14:25:11 +01:00
										 |  |  | 	u32 icache_size; | 
					
						
							|  |  |  | 	unsigned long icache_base; | 
					
						
							|  |  |  | 	unsigned long icache_high; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	u32 use_dcache; | 
					
						
							|  |  |  | 	u32 dcache_tagbits; | 
					
						
							|  |  |  | 	u32 dcache_write; | 
					
						
							| 
									
										
										
										
											2009-10-08 13:06:42 +02:00
										 |  |  | 	u32 dcache_line_length; | 
					
						
							| 
									
										
										
										
											2009-03-27 14:25:11 +01:00
										 |  |  | 	u32 dcache_size; | 
					
						
							| 
									
										
										
										
											2009-10-14 11:12:50 +02:00
										 |  |  | 	u32 dcache_wb; | 
					
						
							| 
									
										
										
										
											2009-03-27 14:25:11 +01:00
										 |  |  | 	unsigned long dcache_base; | 
					
						
							|  |  |  | 	unsigned long dcache_high; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* Bus connections */ | 
					
						
							|  |  |  | 	u32 use_dopb; | 
					
						
							|  |  |  | 	u32 use_iopb; | 
					
						
							|  |  |  | 	u32 use_dlmb; | 
					
						
							|  |  |  | 	u32 use_ilmb; | 
					
						
							|  |  |  | 	u32 num_fsl; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* CPU interrupt line info */ | 
					
						
							|  |  |  | 	u32 irq_edge; | 
					
						
							|  |  |  | 	u32 irq_positive; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	u32 area_optimised; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* HW debug support */ | 
					
						
							|  |  |  | 	u32 hw_debug; | 
					
						
							|  |  |  | 	u32 num_pc_brk; | 
					
						
							|  |  |  | 	u32 num_rd_brk; | 
					
						
							|  |  |  | 	u32 num_wr_brk; | 
					
						
							|  |  |  | 	u32 cpu_clock_freq; /* store real freq of cpu */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* FPGA family */ | 
					
						
							|  |  |  | 	u32 fpga_family_code; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 	/* User define */ | 
					
						
							|  |  |  | 	u32 pvr_user1; | 
					
						
							|  |  |  | 	u32 pvr_user2; | 
					
						
							|  |  |  | }; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | extern struct cpuinfo cpuinfo; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /* fwd declarations of the various CPUinfo populators */ | 
					
						
							|  |  |  | void setup_cpuinfo(void); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | void set_cpuinfo_static(struct cpuinfo *ci, struct device_node *cpu); | 
					
						
							|  |  |  | void set_cpuinfo_pvr_full(struct cpuinfo *ci, struct device_node *cpu); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | static inline unsigned int fcpu(struct device_node *cpu, char *n) | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2011-02-07 11:56:14 +01:00
										 |  |  | 	const __be32 *val; | 
					
						
							|  |  |  | 	return (val = of_get_property(cpu, n, NULL)) ? | 
					
						
							| 
									
										
										
										
											2010-09-28 16:04:14 +10:00
										 |  |  | 							be32_to_cpup(val) : 0; | 
					
						
							| 
									
										
										
										
											2009-03-27 14:25:11 +01:00
										 |  |  | } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | #endif /* _ASM_MICROBLAZE_CPUINFO_H */
 |