提交 0bd1f96a 编写于 作者: T Tom Rini
...@@ -180,6 +180,39 @@ static inline void ft_fixup_l3cache(void *blob, int off) ...@@ -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) ...@@ -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) ...@@ -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) ...@@ -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) {
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册