cregit-Linux how code gets into the kernel

Release 4.14 arch/score/kernel/time.c

/*
 * arch/score/kernel/time.c
 *
 * Score Processor version.
 *
 * Copyright (C) 2009 Sunplus Core Technology Co., Ltd.
 *  Chen Liqin <liqin.chen@sunplusct.com>
 *  Lennox Wu <lennox.wu@sunplusct.com>
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License as published by
 * the Free Software Foundation; either version 2 of the License, or
 * (at your option) any later version.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program; if not, see the file COPYING, or write
 * to the Free Software Foundation, Inc.,
 * 51 Franklin St, Fifth Floor, Boston, MA  02110-1301  USA
 */

#include <linux/clockchips.h>
#include <linux/interrupt.h>

#include <asm/scoreregs.h>


static irqreturn_t timer_interrupt(int irq, void *dev_id) { struct clock_event_device *evdev = dev_id; /* clear timer interrupt flag */ outl(1, P_TIMER0_CPP_REG); evdev->event_handler(evdev); return IRQ_HANDLED; }

Contributors

PersonTokensPropCommitsCommitProp
Chen Liqin3797.37%150.00%
Arnd Bergmann12.63%150.00%
Total38100.00%2100.00%

static struct irqaction timer_irq = { .handler = timer_interrupt, .flags = IRQF_TIMER, .name = "timer", };
static int score_timer_set_next_event(unsigned long delta, struct clock_event_device *evdev) { outl((TMR_M_PERIODIC | TMR_IE_ENABLE), P_TIMER0_CTRL); outl(delta, P_TIMER0_PRELOAD); outl(inl(P_TIMER0_CTRL) | TMR_ENABLE, P_TIMER0_CTRL); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Chen Liqin48100.00%1100.00%
Total48100.00%1100.00%


static int score_timer_set_periodic(struct clock_event_device *evt) { outl((TMR_M_PERIODIC | TMR_IE_ENABLE), P_TIMER0_CTRL); outl(SYSTEM_CLOCK / HZ, P_TIMER0_PRELOAD); outl(inl(P_TIMER0_CTRL) | TMR_ENABLE, P_TIMER0_CTRL); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Chen Liqin4086.96%150.00%
Viresh Kumar613.04%150.00%
Total46100.00%2100.00%

static struct clock_event_device score_clockevent = { .name = "score_clockevent", .features = CLOCK_EVT_FEAT_PERIODIC, .shift = 16, .set_next_event = score_timer_set_next_event, .set_state_periodic = score_timer_set_periodic, };
void __init time_init(void) { timer_irq.dev_id = &score_clockevent; setup_irq(IRQ_TIMER , &timer_irq); /* setup COMPARE clockevent */ score_clockevent.mult = div_sc(SYSTEM_CLOCK, NSEC_PER_SEC, score_clockevent.shift); score_clockevent.max_delta_ns = clockevent_delta2ns((u32)~0, &score_clockevent); score_clockevent.max_delta_ticks = (u32)~0; score_clockevent.min_delta_ns = clockevent_delta2ns(50, &score_clockevent) + 1; score_clockevent.min_delta_ticks = 50; score_clockevent.cpumask = cpumask_of(0); clockevents_register_device(&score_clockevent); }

Contributors

PersonTokensPropCommitsCommitProp
Chen Liqin8484.00%150.00%
Nicolai Stange1616.00%150.00%
Total100100.00%2100.00%


Overall Contributors

PersonTokensPropCommitsCommitProp
Chen Liqin27191.55%125.00%
Nicolai Stange165.41%125.00%
Viresh Kumar82.70%125.00%
Arnd Bergmann10.34%125.00%
Total296100.00%4100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.