コード例 #1
0
ファイル: time.c プロジェクト: ZHAW-INES/rioxo-linux-2.6
void __init time_init(void)
{
	unsigned int year, mon, day, hour, min, sec;
	extern void arch_gettod(int *year, int *mon, int *day, int *hour,
				int *min, int *sec);
	unsigned ctrl;

	arch_gettod(&year, &mon, &day, &hour, &min, &sec);

	if ((year += 1900) < 1970)
		year += 100;
	xtime.tv_sec = mktime(year, mon, day, hour, min, sec);
	xtime.tv_nsec = 0;
	wall_to_monotonic.tv_sec = -xtime.tv_sec;

	timer_membase = (unsigned long)ioremap((unsigned long)na_timer0, 32);
	setup_irq(na_timer0_irq, &nios2_timer_irq);
	write_timerperiod(NIOS2_TIMER_PERIOD - 1);

	/* clocksource initialize */
	nios2_timer.mult =
	    clocksource_hz2mult(nasys_clock_freq, nios2_timer.shift);
	clocksource_register(&nios2_timer);

	/* interrupt enable + continuous + start */
	ctrl =
	    ALTERA_TIMER_CONTROL_ITO_MSK | ALTERA_TIMER_CONTROL_CONT_MSK |
	    ALTERA_TIMER_CONTROL_START_MSK;
	outw(ctrl, timer_membase + ALTERA_TIMER_CONTROL_REG);
}
コード例 #2
0
static void __init nios2_time_init(struct device_node *timer)
{
	int irq;
	unsigned int ctrl;

	timer_membase = of_iomap(timer, 0);
	if (!timer_membase)
		panic("Unable to map timer resource\n");

	if (of_property_read_u32(timer, "clock-frequency", &timer_freq))
		panic("Unable to get timer clock frequency\n");

	irq = irq_of_parse_and_map(timer, 0);
	if (irq < 0)
		panic("Unable to parse timer irq\n");

	if (setup_irq(irq, &nios2_timer_irq))
		panic("Unable to setup timer irq\n");

	write_timerperiod(NIOS2_TIMER_PERIOD - 1);

	/* clocksource initialize */
	nios2_timer.mult = clocksource_hz2mult(timer_freq, nios2_timer.shift);
	clocksource_register(&nios2_timer);

	/* interrupt enable + continuous + start */
	ctrl = ALTERA_TIMER_CONTROL_ITO_MSK | ALTERA_TIMER_CONTROL_CONT_MSK |
		ALTERA_TIMER_CONTROL_START_MSK;
	outw(ctrl, timer_membase + ALTERA_TIMER_CONTROL_REG);
}
コード例 #3
0
ファイル: time.c プロジェクト: PODuser/PODhead
void __init nios2_late_time_init(void)
{
	u32 irq;
	unsigned int ctrl;
	struct device_node *timer =
		of_find_compatible_node(NULL, NULL, "ALTR,timer-1.0");

	BUG_ON(!timer);

	timer_membase = of_iomap(timer, 0);
	if (WARN_ON(!timer_membase))
		return;

	if (of_property_read_u32(timer, "clock-frequency", &timer_freq)) {
		pr_err("Can't get timer clock-frequency from device tree\n");
		return;
	}

	irq = irq_of_parse_and_map(timer, 0);
	if (irq < 0) {
		pr_err("Can't get timer interrupt\n");
		return;
	}
	setup_irq(irq, &nios2_timer_irq);

	write_timerperiod(NIOS2_TIMER_PERIOD - 1);

	/* clocksource initialize */
	nios2_timer.mult = clocksource_hz2mult(timer_freq, nios2_timer.shift);
	clocksource_register(&nios2_timer);

	/* interrupt enable + continuous + start */
	ctrl = ALTERA_TIMER_CONTROL_ITO_MSK | ALTERA_TIMER_CONTROL_CONT_MSK |
		ALTERA_TIMER_CONTROL_START_MSK;
	outw(ctrl, timer_membase + ALTERA_TIMER_CONTROL_REG);
}