162306a36Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0 262306a36Sopenharmony_ci/* 362306a36Sopenharmony_ci * linux/arch/arm/mach-footbridge/isa-timer.c 462306a36Sopenharmony_ci * 562306a36Sopenharmony_ci * Copyright (C) 1998 Russell King. 662306a36Sopenharmony_ci * Copyright (C) 1998 Phil Blundell 762306a36Sopenharmony_ci */ 862306a36Sopenharmony_ci#include <linux/clockchips.h> 962306a36Sopenharmony_ci#include <linux/i8253.h> 1062306a36Sopenharmony_ci#include <linux/init.h> 1162306a36Sopenharmony_ci#include <linux/interrupt.h> 1262306a36Sopenharmony_ci#include <linux/irq.h> 1362306a36Sopenharmony_ci#include <linux/spinlock.h> 1462306a36Sopenharmony_ci#include <linux/timex.h> 1562306a36Sopenharmony_ci 1662306a36Sopenharmony_ci#include <asm/irq.h> 1762306a36Sopenharmony_ci#include <asm/mach/time.h> 1862306a36Sopenharmony_ci 1962306a36Sopenharmony_ci#include "common.h" 2062306a36Sopenharmony_ci 2162306a36Sopenharmony_cistatic irqreturn_t pit_timer_interrupt(int irq, void *dev_id) 2262306a36Sopenharmony_ci{ 2362306a36Sopenharmony_ci struct clock_event_device *ce = dev_id; 2462306a36Sopenharmony_ci ce->event_handler(ce); 2562306a36Sopenharmony_ci return IRQ_HANDLED; 2662306a36Sopenharmony_ci} 2762306a36Sopenharmony_ci 2862306a36Sopenharmony_civoid __init isa_timer_init(void) 2962306a36Sopenharmony_ci{ 3062306a36Sopenharmony_ci clocksource_i8253_init(); 3162306a36Sopenharmony_ci 3262306a36Sopenharmony_ci if (request_irq(i8253_clockevent.irq, pit_timer_interrupt, 3362306a36Sopenharmony_ci IRQF_TIMER | IRQF_IRQPOLL, "pit", &i8253_clockevent)) 3462306a36Sopenharmony_ci pr_err("Failed to request irq %d(pit)\n", i8253_clockevent.irq); 3562306a36Sopenharmony_ci clockevent_i8253_init(false); 3662306a36Sopenharmony_ci} 37