powerpc: Retain compatible property for L2 cache
When setting the compatible property for the L2 cache ensure that we follow the documented binding by setting both "<chip>-l2-cache-controller" and "cache" as values. Signed-off-by: Chris Packham <judge.packham@gmail.com> Reviewed-by: York Sun <york.sun@nxp.com>
This commit is contained in:
		
							parent
							
								
									0b4bc1b3ab
								
							
						
					
					
						commit
						01b25d42c1
					
				|  | @ -180,6 +180,39 @@ static inline void ft_fixup_l3cache(void *blob, int off) | ||||||
| #define ft_fixup_l3cache(x, y) | #define ft_fixup_l3cache(x, y) | ||||||
| #endif | #endif | ||||||
| 
 | 
 | ||||||
|  | #if defined(CONFIG_L2_CACHE) || \ | ||||||
|  | 	defined(CONFIG_BACKSIDE_L2_CACHE) || \ | ||||||
|  | 	defined(CONFIG_SYS_FSL_QORIQ_CHASSIS2) | ||||||
|  | static inline void ft_fixup_l2cache_compatible(void *blob, int off) | ||||||
|  | { | ||||||
|  | 	int len; | ||||||
|  | 	struct cpu_type *cpu = identify_cpu(SVR_SOC_VER(get_svr())); | ||||||
|  | 
 | ||||||
|  | 	if (cpu) { | ||||||
|  | 		char buf[40]; | ||||||
|  | 
 | ||||||
|  | 		if (isdigit(cpu->name[0])) { | ||||||
|  | 			/* MPCxxxx, where xxxx == 4-digit number */ | ||||||
|  | 			len = sprintf(buf, "fsl,mpc%s-l2-cache-controller", | ||||||
|  | 				cpu->name) + 1; | ||||||
|  | 		} else { | ||||||
|  | 			/* Pxxxx or Txxxx, where xxxx == 4-digit number */ | ||||||
|  | 			len = sprintf(buf, "fsl,%c%s-l2-cache-controller", | ||||||
|  | 			tolower(cpu->name[0]), cpu->name + 1) + 1; | ||||||
|  | 		} | ||||||
|  | 
 | ||||||
|  | 		/*
 | ||||||
|  | 		 * append "cache" after the NULL character that the previous | ||||||
|  | 		 * sprintf wrote.  This is how a device tree stores multiple | ||||||
|  | 		 * strings in a property. | ||||||
|  | 		 */ | ||||||
|  | 		len += sprintf(buf + len, "cache") + 1; | ||||||
|  | 
 | ||||||
|  | 		fdt_setprop(blob, off, "compatible", buf, len); | ||||||
|  | 	} | ||||||
|  | } | ||||||
|  | #endif | ||||||
|  | 
 | ||||||
| #if defined(CONFIG_L2_CACHE) | #if defined(CONFIG_L2_CACHE) | ||||||
| /* return size in kilobytes */ | /* return size in kilobytes */ | ||||||
| static inline u32 l2cache_size(void) | static inline u32 l2cache_size(void) | ||||||
|  | @ -215,9 +248,8 @@ static inline u32 l2cache_size(void) | ||||||
| 
 | 
 | ||||||
| static inline void ft_fixup_l2cache(void *blob) | static inline void ft_fixup_l2cache(void *blob) | ||||||
| { | { | ||||||
| 	int len, off; | 	int off; | ||||||
| 	u32 *ph; | 	u32 *ph; | ||||||
| 	struct cpu_type *cpu = identify_cpu(SVR_SOC_VER(get_svr())); |  | ||||||
| 
 | 
 | ||||||
| 	const u32 line_size = 32; | 	const u32 line_size = 32; | ||||||
| 	const u32 num_ways = 8; | 	const u32 num_ways = 8; | ||||||
|  | @ -243,28 +275,7 @@ static inline void ft_fixup_l2cache(void *blob) | ||||||
| 		return ; | 		return ; | ||||||
| 	} | 	} | ||||||
| 
 | 
 | ||||||
| 	if (cpu) { | 	ft_fixup_l2cache_compatible(blob, off); | ||||||
| 		char buf[40]; |  | ||||||
| 
 |  | ||||||
| 		if (isdigit(cpu->name[0])) { |  | ||||||
| 			/* MPCxxxx, where xxxx == 4-digit number */ |  | ||||||
| 			len = sprintf(buf, "fsl,mpc%s-l2-cache-controller", |  | ||||||
| 				cpu->name) + 1; |  | ||||||
| 		} else { |  | ||||||
| 			/* Pxxxx or Txxxx, where xxxx == 4-digit number */ |  | ||||||
| 			len = sprintf(buf, "fsl,%c%s-l2-cache-controller", |  | ||||||
| 				tolower(cpu->name[0]), cpu->name + 1) + 1; |  | ||||||
| 		} |  | ||||||
| 
 |  | ||||||
| 		/*
 |  | ||||||
| 		 * append "cache" after the NULL character that the previous |  | ||||||
| 		 * sprintf wrote.  This is how a device tree stores multiple |  | ||||||
| 		 * strings in a property. |  | ||||||
| 		 */ |  | ||||||
| 		len += sprintf(buf + len, "cache") + 1; |  | ||||||
| 
 |  | ||||||
| 		fdt_setprop(blob, off, "compatible", buf, len); |  | ||||||
| 	} |  | ||||||
| 	fdt_setprop(blob, off, "cache-unified", NULL, 0); | 	fdt_setprop(blob, off, "cache-unified", NULL, 0); | ||||||
| 	fdt_setprop_cell(blob, off, "cache-block-size", line_size); | 	fdt_setprop_cell(blob, off, "cache-block-size", line_size); | ||||||
| 	fdt_setprop_cell(blob, off, "cache-size", size); | 	fdt_setprop_cell(blob, off, "cache-size", size); | ||||||
|  | @ -337,7 +348,7 @@ static inline void ft_fixup_l2cache(void *blob) | ||||||
| 			fdt_setprop_cell(blob, l2_off, "cache-size", size); | 			fdt_setprop_cell(blob, l2_off, "cache-size", size); | ||||||
| 			fdt_setprop_cell(blob, l2_off, "cache-sets", num_sets); | 			fdt_setprop_cell(blob, l2_off, "cache-sets", num_sets); | ||||||
| 			fdt_setprop_cell(blob, l2_off, "cache-level", 2); | 			fdt_setprop_cell(blob, l2_off, "cache-level", 2); | ||||||
| 			fdt_setprop(blob, l2_off, "compatible", "cache", 6); | 			ft_fixup_l2cache_compatible(blob, l2_off); | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
| 		if (l3_off < 0) { | 		if (l3_off < 0) { | ||||||
|  |  | ||||||
		Loading…
	
		Reference in New Issue