diff options
author | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-03-15 18:49:59 -0400 |
---|---|---|
committer | Russell King <rmk+kernel@arm.linux.org.uk> | 2014-05-29 19:48:11 -0400 |
commit | faf9b2e7018b0afede92329c5b35e5d113a07f1c (patch) | |
tree | 86a6748abfa16cb98818195971f0ae5bbf1fac3b /arch/arm/mm | |
parent | 09a5d180ed9d5aeb9bd6b0ba2c63ad4be05cb9b9 (diff) |
ARM: l2c: simplify l2x0 unlocking code
The l2x0 unlocking code is only called from l2x0_enable() now, so move
the logic entirely into that function and simplify it.
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
Diffstat (limited to 'arch/arm/mm')
-rw-r--r-- | arch/arm/mm/cache-l2x0.c | 25 |
1 files changed, 8 insertions, 17 deletions
diff --git a/arch/arm/mm/cache-l2x0.c b/arch/arm/mm/cache-l2x0.c index e3f4fcbcc88b..157fd7ae331a 100644 --- a/arch/arm/mm/cache-l2x0.c +++ b/arch/arm/mm/cache-l2x0.c | |||
@@ -352,30 +352,21 @@ static void l2x0_disable(void) | |||
352 | raw_spin_unlock_irqrestore(&l2x0_lock, flags); | 352 | raw_spin_unlock_irqrestore(&l2x0_lock, flags); |
353 | } | 353 | } |
354 | 354 | ||
355 | static void l2x0_unlock(u32 cache_id) | 355 | static void l2x0_enable(void __iomem *base, u32 aux, unsigned num_lock) |
356 | { | 356 | { |
357 | int lockregs; | 357 | unsigned id; |
358 | 358 | ||
359 | switch (cache_id & L2X0_CACHE_ID_PART_MASK) { | 359 | id = readl_relaxed(base + L2X0_CACHE_ID) & L2X0_CACHE_ID_PART_MASK; |
360 | case L2X0_CACHE_ID_PART_L310: | 360 | if (id == L2X0_CACHE_ID_PART_L310) |
361 | lockregs = 8; | 361 | num_lock = 8; |
362 | break; | 362 | else |
363 | default: | 363 | num_lock = 1; |
364 | /* L210 and unknown types */ | ||
365 | lockregs = 1; | ||
366 | break; | ||
367 | } | ||
368 | |||
369 | l2c_unlock(l2x0_base, lockregs); | ||
370 | } | ||
371 | 364 | ||
372 | static void l2x0_enable(void __iomem *base, u32 aux, unsigned num_lock) | ||
373 | { | ||
374 | /* l2x0 controller is disabled */ | 365 | /* l2x0 controller is disabled */ |
375 | writel_relaxed(aux, base + L2X0_AUX_CTRL); | 366 | writel_relaxed(aux, base + L2X0_AUX_CTRL); |
376 | 367 | ||
377 | /* Make sure that I&D is not locked down when starting */ | 368 | /* Make sure that I&D is not locked down when starting */ |
378 | l2x0_unlock(readl_relaxed(base + L2X0_CACHE_ID)); | 369 | l2c_unlock(base, num_lock); |
379 | 370 | ||
380 | l2x0_inv_all(); | 371 | l2x0_inv_all(); |
381 | 372 | ||