Merge branch '3.1-fixes-for-rmk' of git://linux-arm.org/linux-2.6-wd into fixes
This commit is contained in:
commit
e426f8e39b
@ -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);
|
|||||||
* 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,
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
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)
|
|||||||
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)
|
|||||||
}
|
}
|
||||||
|
|
||||||
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)
|
|||||||
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 {
|
||||||
cacheid = CACHEID_VIPT_NONALIASING;
|
arch = CPU_ARCH_ARMv6;
|
||||||
if (cpu_has_aliasing_icache(CPU_ARCH_ARMv6))
|
if (cachetype & (1 << 23))
|
||||||
cacheid |= CACHEID_VIPT_I_ALIASING;
|
cacheid = CACHEID_VIPT_ALIASING;
|
||||||
|
else
|
||||||
|
cacheid = CACHEID_VIPT_NONALIASING;
|
||||||
}
|
}
|
||||||
|
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)
|
|||||||
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)
|
|||||||
*/
|
*/
|
||||||
if (realview_reset)
|
if (realview_reset)
|
||||||
realview_reset(mode);
|
realview_reset(mode);
|
||||||
|
dsb();
|
||||||
}
|
}
|
||||||
|
|
||||||
#endif
|
#endif
|
||||||
|
@ -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 {
|
||||||
|
Loading…
Reference in New Issue
Block a user