Factor out function to find driver for a CPU
This function can be used outside of the normal CPU setup Change-Id: I810c63b8aff868a6f69d5b992bea1cfae5a5996b Signed-off-by: Duncan Laurie <dlaurie@google.com> Signed-off-by: Stefan Reinauer <reinauer@google.com> Reviewed-on: http://review.coreboot.org/868 Tested-by: build bot (Jenkins) Reviewed-by: Ronald G. Minnich <rminnich@gmail.com>
This commit is contained in:
		
				
					committed by
					
						 Stefan Reinauer
						Stefan Reinauer
					
				
			
			
				
	
			
			
			
						parent
						
							61f4a744c0
						
					
				
				
					commit
					6293d30768
				
			| @@ -154,6 +154,9 @@ struct cpu_driver { | |||||||
| 	struct cpu_device_id *id_table; | 	struct cpu_device_id *id_table; | ||||||
| }; | }; | ||||||
|  |  | ||||||
|  | struct device; | ||||||
|  | struct cpu_driver *find_cpu_driver(struct device *cpu); | ||||||
|  |  | ||||||
| struct cpu_info { | struct cpu_info { | ||||||
| 	device_t cpu; | 	device_t cpu; | ||||||
| 	unsigned long index; | 	unsigned long index; | ||||||
|   | |||||||
| @@ -211,23 +211,27 @@ static void identify_cpu(struct device *cpu) | |||||||
| 	} | 	} | ||||||
| } | } | ||||||
|  |  | ||||||
| static void set_cpu_ops(struct device *cpu) | struct cpu_driver *find_cpu_driver(struct device *cpu) | ||||||
| { | { | ||||||
| 	struct cpu_driver *driver; | 	struct cpu_driver *driver; | ||||||
| 	cpu->ops = 0; |  | ||||||
| 	for (driver = cpu_drivers; driver < ecpu_drivers; driver++) { | 	for (driver = cpu_drivers; driver < ecpu_drivers; driver++) { | ||||||
| 		struct cpu_device_id *id; | 		struct cpu_device_id *id; | ||||||
| 		for(id = driver->id_table; id->vendor != X86_VENDOR_INVALID; id++) { | 		for (id = driver->id_table; | ||||||
|  | 		     id->vendor != X86_VENDOR_INVALID; id++) { | ||||||
| 			if ((cpu->vendor == id->vendor) && | 			if ((cpu->vendor == id->vendor) && | ||||||
| 				(cpu->device == id->device)) | 				(cpu->device == id->device)) | ||||||
| 			{ | 			{ | ||||||
| 				goto found; | 				return driver; | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 	} | 	} | ||||||
| 	return; | 	return NULL; | ||||||
| found: | } | ||||||
| 	cpu->ops = driver->ops; |  | ||||||
|  | static void set_cpu_ops(struct device *cpu) | ||||||
|  | { | ||||||
|  | 	struct cpu_driver *driver = find_cpu_driver(cpu); | ||||||
|  | 	cpu->ops = driver ? driver->ops : NULL; | ||||||
| } | } | ||||||
|  |  | ||||||
| void cpu_initialize(void) | void cpu_initialize(void) | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user