|
@@ -25,36 +25,41 @@ static volatile long pmu_lock;
|
|
|
|
|
|
static struct platform_device *pmu_devices[ARM_NUM_PMU_DEVICES];
|
|
|
|
|
|
-static int __devinit pmu_device_probe(struct platform_device *pdev)
|
|
|
+static int __devinit pmu_register(struct platform_device *pdev,
|
|
|
+ enum arm_pmu_type type)
|
|
|
{
|
|
|
-
|
|
|
- if (pdev->id < 0 || pdev->id >= ARM_NUM_PMU_DEVICES) {
|
|
|
+ if (type < 0 || type >= ARM_NUM_PMU_DEVICES) {
|
|
|
pr_warning("received registration request for unknown "
|
|
|
- "device %d\n", pdev->id);
|
|
|
+ "device %d\n", type);
|
|
|
return -EINVAL;
|
|
|
}
|
|
|
|
|
|
- if (pmu_devices[pdev->id])
|
|
|
+ if (pmu_devices[type])
|
|
|
pr_warning("registering new PMU device type %d overwrites "
|
|
|
- "previous registration!\n", pdev->id);
|
|
|
+ "previous registration!\n", type);
|
|
|
else
|
|
|
pr_info("registered new PMU device of type %d\n",
|
|
|
- pdev->id);
|
|
|
+ type);
|
|
|
|
|
|
- pmu_devices[pdev->id] = pdev;
|
|
|
+ pmu_devices[type] = pdev;
|
|
|
return 0;
|
|
|
}
|
|
|
|
|
|
-static struct platform_driver pmu_driver = {
|
|
|
+static int __devinit armpmu_device_probe(struct platform_device *pdev)
|
|
|
+{
|
|
|
+ return pmu_register(pdev, ARM_PMU_DEVICE_CPU);
|
|
|
+}
|
|
|
+
|
|
|
+static struct platform_driver armpmu_driver = {
|
|
|
.driver = {
|
|
|
.name = "arm-pmu",
|
|
|
},
|
|
|
- .probe = pmu_device_probe,
|
|
|
+ .probe = armpmu_device_probe,
|
|
|
};
|
|
|
|
|
|
static int __init register_pmu_driver(void)
|
|
|
{
|
|
|
- return platform_driver_register(&pmu_driver);
|
|
|
+ return platform_driver_register(&armpmu_driver);
|
|
|
}
|
|
|
device_initcall(register_pmu_driver);
|
|
|
|
|
@@ -77,11 +82,11 @@ reserve_pmu(enum arm_pmu_type device)
|
|
|
EXPORT_SYMBOL_GPL(reserve_pmu);
|
|
|
|
|
|
int
|
|
|
-release_pmu(struct platform_device *pdev)
|
|
|
+release_pmu(enum arm_pmu_type device)
|
|
|
{
|
|
|
- if (WARN_ON(pdev != pmu_devices[pdev->id]))
|
|
|
+ if (WARN_ON(!pmu_devices[device]))
|
|
|
return -EINVAL;
|
|
|
- clear_bit_unlock(pdev->id, &pmu_lock);
|
|
|
+ clear_bit_unlock(device, &pmu_lock);
|
|
|
return 0;
|
|
|
}
|
|
|
EXPORT_SYMBOL_GPL(release_pmu);
|