|
@@ -100,12 +100,18 @@ static struct notifier_block gic_cpu_nb = {
|
|
|
|
|
|
static int gic_clockevent_init(void)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
if (!cpu_has_counter || !gic_frequency)
|
|
|
return -ENXIO;
|
|
|
|
|
|
- setup_percpu_irq(gic_timer_irq, &gic_compare_irqaction);
|
|
|
+ ret = setup_percpu_irq(gic_timer_irq, &gic_compare_irqaction);
|
|
|
+ if (ret < 0)
|
|
|
+ return ret;
|
|
|
|
|
|
- register_cpu_notifier(&gic_cpu_nb);
|
|
|
+ ret = register_cpu_notifier(&gic_cpu_nb);
|
|
|
+ if (ret < 0)
|
|
|
+ pr_warn("GIC: Unable to register CPU notifier\n");
|
|
|
|
|
|
gic_clockevent_cpu_init(this_cpu_ptr(&gic_clockevent_device));
|
|
|
|
|
@@ -125,13 +131,17 @@ static struct clocksource gic_clocksource = {
|
|
|
|
|
|
static void __init __gic_clocksource_init(void)
|
|
|
{
|
|
|
+ int ret;
|
|
|
+
|
|
|
/* Set clocksource mask. */
|
|
|
gic_clocksource.mask = CLOCKSOURCE_MASK(gic_get_count_width());
|
|
|
|
|
|
/* Calculate a somewhat reasonable rating value. */
|
|
|
gic_clocksource.rating = 200 + gic_frequency / 10000000;
|
|
|
|
|
|
- clocksource_register_hz(&gic_clocksource, gic_frequency);
|
|
|
+ ret = clocksource_register_hz(&gic_clocksource, gic_frequency);
|
|
|
+ if (ret < 0)
|
|
|
+ pr_warn("GIC: Unable to register clocksource\n");
|
|
|
|
|
|
gic_clockevent_init();
|
|
|
|