Commit e426f8e3 authored by Russell King's avatar Russell King

Merge branch '3.1-fixes-for-rmk' of git://linux-arm.org/linux-2.6-wd into fixes

parents 73e0881d 72dc53ac
...@@ -41,7 +41,7 @@ struct arm_pmu_platdata { ...@@ -41,7 +41,7 @@ struct arm_pmu_platdata {
* encoded error on failure. * encoded error on failure.
*/ */
extern struct platform_device * extern struct platform_device *
reserve_pmu(enum arm_pmu_type device); reserve_pmu(enum arm_pmu_type type);
/** /**
* release_pmu() - Relinquish control of the performance counters * release_pmu() - Relinquish control of the performance counters
...@@ -62,26 +62,26 @@ release_pmu(enum arm_pmu_type type); ...@@ -62,26 +62,26 @@ release_pmu(enum arm_pmu_type type);
* the actual hardware initialisation. * the actual hardware initialisation.
*/ */
extern int extern int
init_pmu(enum arm_pmu_type device); init_pmu(enum arm_pmu_type type);
#else /* CONFIG_CPU_HAS_PMU */ #else /* CONFIG_CPU_HAS_PMU */
#include <linux/err.h> #include <linux/err.h>
static inline struct platform_device * static inline struct platform_device *
reserve_pmu(enum arm_pmu_type device) reserve_pmu(enum arm_pmu_type type)
{ {
return ERR_PTR(-ENODEV); return ERR_PTR(-ENODEV);
} }
static inline int static inline int
release_pmu(struct platform_device *pdev) release_pmu(enum arm_pmu_type type)
{ {
return -ENODEV; return -ENODEV;
} }
static inline int static inline int
init_pmu(enum arm_pmu_type device) init_pmu(enum arm_pmu_type type)
{ {
return -ENODEV; return -ENODEV;
} }
......
...@@ -31,7 +31,7 @@ static int __devinit pmu_register(struct platform_device *pdev, ...@@ -31,7 +31,7 @@ static int __devinit pmu_register(struct platform_device *pdev,
{ {
if (type < 0 || type >= ARM_NUM_PMU_DEVICES) { if (type < 0 || type >= ARM_NUM_PMU_DEVICES) {
pr_warning("received registration request for unknown " pr_warning("received registration request for unknown "
"device %d\n", type); "PMU device type %d\n", type);
return -EINVAL; return -EINVAL;
} }
...@@ -112,17 +112,17 @@ static int __init register_pmu_driver(void) ...@@ -112,17 +112,17 @@ static int __init register_pmu_driver(void)
device_initcall(register_pmu_driver); device_initcall(register_pmu_driver);
struct platform_device * struct platform_device *
reserve_pmu(enum arm_pmu_type device) reserve_pmu(enum arm_pmu_type type)
{ {
struct platform_device *pdev; struct platform_device *pdev;
if (test_and_set_bit_lock(device, &pmu_lock)) { if (test_and_set_bit_lock(type, &pmu_lock)) {
pdev = ERR_PTR(-EBUSY); pdev = ERR_PTR(-EBUSY);
} else if (pmu_devices[device] == NULL) { } else if (pmu_devices[type] == NULL) {
clear_bit_unlock(device, &pmu_lock); clear_bit_unlock(type, &pmu_lock);
pdev = ERR_PTR(-ENODEV); pdev = ERR_PTR(-ENODEV);
} else { } else {
pdev = pmu_devices[device]; pdev = pmu_devices[type];
} }
return pdev; return pdev;
...@@ -130,11 +130,11 @@ reserve_pmu(enum arm_pmu_type device) ...@@ -130,11 +130,11 @@ reserve_pmu(enum arm_pmu_type device)
EXPORT_SYMBOL_GPL(reserve_pmu); EXPORT_SYMBOL_GPL(reserve_pmu);
int int
release_pmu(enum arm_pmu_type device) release_pmu(enum arm_pmu_type type)
{ {
if (WARN_ON(!pmu_devices[device])) if (WARN_ON(!pmu_devices[type]))
return -EINVAL; return -EINVAL;
clear_bit_unlock(device, &pmu_lock); clear_bit_unlock(type, &pmu_lock);
return 0; return 0;
} }
EXPORT_SYMBOL_GPL(release_pmu); EXPORT_SYMBOL_GPL(release_pmu);
...@@ -182,17 +182,17 @@ init_cpu_pmu(void) ...@@ -182,17 +182,17 @@ init_cpu_pmu(void)
} }
int int
init_pmu(enum arm_pmu_type device) init_pmu(enum arm_pmu_type type)
{ {
int err = 0; int err = 0;
switch (device) { switch (type) {
case ARM_PMU_DEVICE_CPU: case ARM_PMU_DEVICE_CPU:
err = init_cpu_pmu(); err = init_cpu_pmu();
break; break;
default: default:
pr_warning("attempt to initialise unknown device %d\n", pr_warning("attempt to initialise PMU of unknown "
device); "type %d\n", type);
err = -EINVAL; err = -EINVAL;
} }
......
...@@ -280,18 +280,19 @@ static void __init cacheid_init(void) ...@@ -280,18 +280,19 @@ static void __init cacheid_init(void)
if (arch >= CPU_ARCH_ARMv6) { if (arch >= CPU_ARCH_ARMv6) {
if ((cachetype & (7 << 29)) == 4 << 29) { if ((cachetype & (7 << 29)) == 4 << 29) {
/* ARMv7 register format */ /* ARMv7 register format */
arch = CPU_ARCH_ARMv7;
cacheid = CACHEID_VIPT_NONALIASING; cacheid = CACHEID_VIPT_NONALIASING;
if ((cachetype & (3 << 14)) == 1 << 14) if ((cachetype & (3 << 14)) == 1 << 14)
cacheid |= CACHEID_ASID_TAGGED; cacheid |= CACHEID_ASID_TAGGED;
else if (cpu_has_aliasing_icache(CPU_ARCH_ARMv7))
cacheid |= CACHEID_VIPT_I_ALIASING;
} else if (cachetype & (1 << 23)) {
cacheid = CACHEID_VIPT_ALIASING;
} else { } else {
arch = CPU_ARCH_ARMv6;
if (cachetype & (1 << 23))
cacheid = CACHEID_VIPT_ALIASING;
else
cacheid = CACHEID_VIPT_NONALIASING; cacheid = CACHEID_VIPT_NONALIASING;
if (cpu_has_aliasing_icache(CPU_ARCH_ARMv6))
cacheid |= CACHEID_VIPT_I_ALIASING;
} }
if (cpu_has_aliasing_icache(arch))
cacheid |= CACHEID_VIPT_I_ALIASING;
} else { } else {
cacheid = CACHEID_VIVT; cacheid = CACHEID_VIVT;
} }
......
...@@ -137,8 +137,8 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk) ...@@ -137,8 +137,8 @@ void __cpuinit twd_timer_setup(struct clock_event_device *clk)
clk->max_delta_ns = clockevent_delta2ns(0xffffffff, clk); clk->max_delta_ns = clockevent_delta2ns(0xffffffff, clk);
clk->min_delta_ns = clockevent_delta2ns(0xf, clk); clk->min_delta_ns = clockevent_delta2ns(0xf, clk);
clockevents_register_device(clk);
/* Make sure our local interrupt controller has this enabled */ /* Make sure our local interrupt controller has this enabled */
gic_enable_ppi(clk->irq); gic_enable_ppi(clk->irq);
clockevents_register_device(clk);
} }
...@@ -44,6 +44,7 @@ static inline void arch_reset(char mode, const char *cmd) ...@@ -44,6 +44,7 @@ static inline void arch_reset(char mode, const char *cmd)
*/ */
if (realview_reset) if (realview_reset)
realview_reset(mode); realview_reset(mode);
dsb();
} }
#endif #endif
...@@ -8,7 +8,10 @@ ...@@ -8,7 +8,10 @@
* published by the Free Software Foundation. * published by the Free Software Foundation.
*/ */
#include <stdlib.h>
#ifndef __UCLIBC__
#include <libio.h> #include <libio.h>
#endif
#include <dwarf-regs.h> #include <dwarf-regs.h>
struct pt_regs_dwarfnum { struct pt_regs_dwarfnum {
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment