From 2d92354edca71d61146924618032007f42ddddca Mon Sep 17 00:00:00 2001 From: Barry Song Date: Thu, 20 Dec 2012 17:20:46 +0800 Subject: [PATCH] --- yaml --- r: 355478 b: refs/heads/master c: ea38960fb63ab5cce2442fa88f5041bcfb1ae8e3 h: refs/heads/master v: v3 --- [refs] | 2 +- trunk/arch/arm/mach-prima2/l2x0.c | 29 ++++++++++++++++++++++++----- 2 files changed, 25 insertions(+), 6 deletions(-) diff --git a/[refs] b/[refs] index acee80fb39e4..dba365f24d03 100644 --- a/[refs] +++ b/[refs] @@ -1,2 +1,2 @@ --- -refs/heads/master: 20ddfa9324b470764125f5ca555c315b5af13507 +refs/heads/master: ea38960fb63ab5cce2442fa88f5041bcfb1ae8e3 diff --git a/trunk/arch/arm/mach-prima2/l2x0.c b/trunk/arch/arm/mach-prima2/l2x0.c index c99837797d76..cbcbe9cb094c 100644 --- a/trunk/arch/arm/mach-prima2/l2x0.c +++ b/trunk/arch/arm/mach-prima2/l2x0.c @@ -11,19 +11,38 @@ #include #include -static struct of_device_id prima2_l2x0_ids[] = { - { .compatible = "sirf,prima2-pl310-cache" }, +struct l2x0_aux +{ + u32 val; + u32 mask; +}; + +static struct l2x0_aux prima2_l2x0_aux __initconst = { + .val = 2 << L2X0_AUX_CTRL_WAY_SIZE_SHIFT, + .mask = 0, +}; + +static struct l2x0_aux marco_l2x0_aux __initconst = { + .val = (2 << L2X0_AUX_CTRL_WAY_SIZE_SHIFT) | + (1 << L2X0_AUX_CTRL_ASSOCIATIVITY_SHIFT), + .mask = L2X0_AUX_CTRL_MASK, +}; + +static struct of_device_id sirf_l2x0_ids[] __initconst = { + { .compatible = "sirf,prima2-pl310-cache", .data = &prima2_l2x0_aux, }, + { .compatible = "sirf,marco-pl310-cache", .data = &marco_l2x0_aux, }, {}, }; static int __init sirfsoc_l2x0_init(void) { struct device_node *np; + const struct l2x0_aux *aux; - np = of_find_matching_node(NULL, prima2_l2x0_ids); + np = of_find_matching_node(NULL, sirf_l2x0_ids); if (np) { - pr_info("Initializing prima2 L2 cache\n"); - return l2x0_of_init(0x40000, 0); + aux = of_match_node(sirf_l2x0_ids, np)->data; + return l2x0_of_init(aux->val, aux->mask); } return 0;