diff options
| author | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-12-17 16:53:07 +0100 | 
|---|---|---|
| committer | Haavard Skinnemoen <haavard.skinnemoen@atmel.com> | 2008-12-17 16:53:07 +0100 | 
| commit | cb5473205206c7f14cbb1e747f28ec75b48826e2 (patch) | |
| tree | 8f4808d60917100b18a10b05230f7638a0a9bbcc /cpu/mpc86xx/interrupts.c | |
| parent | baf449fc5ff96f071bb0e3789fd3265f6d4fd9a0 (diff) | |
| parent | 92c78a3bbcb2ce508b4bf1c4a1e0940406a024bb (diff) | |
| download | olio-uboot-2014.01-cb5473205206c7f14cbb1e747f28ec75b48826e2.tar.xz olio-uboot-2014.01-cb5473205206c7f14cbb1e747f28ec75b48826e2.zip | |
Merge branch 'fixes' into cleanups
Conflicts:
	board/atmel/atngw100/atngw100.c
	board/atmel/atstk1000/atstk1000.c
	cpu/at32ap/at32ap700x/gpio.c
	include/asm-avr32/arch-at32ap700x/clk.h
	include/configs/atngw100.h
	include/configs/atstk1002.h
	include/configs/atstk1003.h
	include/configs/atstk1004.h
	include/configs/atstk1006.h
	include/configs/favr-32-ezkit.h
	include/configs/hammerhead.h
	include/configs/mimc200.h
Diffstat (limited to 'cpu/mpc86xx/interrupts.c')
| -rw-r--r-- | cpu/mpc86xx/interrupts.c | 133 | 
1 files changed, 8 insertions, 125 deletions
| diff --git a/cpu/mpc86xx/interrupts.c b/cpu/mpc86xx/interrupts.c index f16744bfd..c78fc7225 100644 --- a/cpu/mpc86xx/interrupts.c +++ b/cpu/mpc86xx/interrupts.c @@ -35,78 +35,23 @@  #include <mpc86xx.h>  #include <command.h>  #include <asm/processor.h> -#include <ppc_asm.tmpl> -#include <watchdog.h> -unsigned long decrementer_count;    /* count value for 1e6/HZ microseconds */ -unsigned long timestamp; - - -static __inline__ unsigned long get_msr(void) -{ -	unsigned long msr; - -	asm volatile ("mfmsr %0":"=r" (msr):); - -	return msr; -} - -static __inline__ void set_msr(unsigned long msr) -{ -	asm volatile ("mtmsr %0"::"r" (msr)); -} - -static __inline__ unsigned long get_dec(void) -{ -	unsigned long val; - -	asm volatile ("mfdec %0":"=r" (val):); - -	return val; -} - -static __inline__ void set_dec(unsigned long val) -{ -	if (val) -		asm volatile ("mtdec %0"::"r" (val)); -} - -/* interrupt is not supported yet */  int interrupt_init_cpu(unsigned long *decrementer_count)  { -	return 0; -} - -int interrupt_init(void) -{ -	int ret; - -	volatile immap_t *immr = (immap_t *)CFG_IMMR; -	immr->im_pic.gcr = MPC86xx_PICGCR_RST; -	while (immr->im_pic.gcr & MPC86xx_PICGCR_RST); -	immr->im_pic.gcr = MPC86xx_PICGCR_MODE; - -	/* call cpu specific function from $(CPU)/interrupts.c */ -	ret = interrupt_init_cpu(&decrementer_count); +	volatile immap_t *immr = (immap_t *)CONFIG_SYS_IMMR; +	volatile ccsr_pic_t *pic = &immr->im_pic; -	if (ret) -		return ret; +	pic->gcr = MPC86xx_PICGCR_RST; +	while (pic->gcr & MPC86xx_PICGCR_RST) +		; +	pic->gcr = MPC86xx_PICGCR_MODE; -	decrementer_count = get_tbclk() / CFG_HZ; +	*decrementer_count = get_tbclk() / CONFIG_SYS_HZ;  	debug("interrupt init: tbclk() = %d MHz, decrementer_count = %ld\n",  	      (get_tbclk() / 1000000), -	      decrementer_count); - -	set_dec(decrementer_count); - -	set_msr(get_msr() | MSR_EE); - -	debug("MSR = 0x%08lx, Decrementer reg = 0x%08lx\n", -	      get_msr(), -	      get_dec()); +	      *decrementer_count);  #ifdef CONFIG_INTERRUPTS -	volatile ccsr_pic_t *pic = &immr->im_pic;  	pic->iivpr1 = 0x810001;	/* 50220 enable mcm interrupts */  	debug("iivpr1@%x = %x\n", &pic->iivpr1, pic->iivpr1); @@ -132,25 +77,6 @@ int interrupt_init(void)  	return 0;  } -void enable_interrupts(void) -{ -	set_msr(get_msr() | MSR_EE); -} - -/* returns flag if MSR_EE was set before */ -int disable_interrupts(void) -{ -	ulong msr = get_msr(); - -	set_msr(msr & ~MSR_EE); -	return (msr & MSR_EE) != 0; -} - -void increment_timestamp(void) -{ -	timestamp++; -} -  /*   * timer_interrupt - gets called when the decrementer overflows,   * with interrupts disabled. @@ -161,50 +87,9 @@ void timer_interrupt_cpu(struct pt_regs *regs)  	/* nothing to do here */  } -void timer_interrupt(struct pt_regs *regs) -{ -	/* call cpu specific function from $(CPU)/interrupts.c */ -	timer_interrupt_cpu(regs); - -	timestamp++; - -	/* Restore Decrementer Count */ -	set_dec(decrementer_count); - -#if defined(CONFIG_WATCHDOG) || defined (CONFIG_HW_WATCHDOG) -	if ((timestamp % (CFG_WATCHDOG_FREQ)) == 0) -		WATCHDOG_RESET(); -#endif /* CONFIG_WATCHDOG || CONFIG_HW_WATCHDOG */ - -#ifdef CONFIG_STATUS_LED -	status_led_tick(timestamp); -#endif /* CONFIG_STATUS_LED */ - -#ifdef CONFIG_SHOW_ACTIVITY -	board_show_activity(timestamp); -#endif /* CONFIG_SHOW_ACTIVITY */ - -} - -void reset_timer(void) -{ -	timestamp = 0; -} - -ulong get_timer(ulong base) -{ -	return timestamp - base; -} - -void set_timer(ulong t) -{ -	timestamp = t; -} -  /*   * Install and free a interrupt handler. Not implemented yet.   */ -  void irq_install_handler(int vec, interrupt_handler_t *handler, void *arg)  {  } @@ -218,8 +103,6 @@ void irq_free_handler(int vec)   */  int do_irqinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])  { -	printf("\nInterrupt-unsupported:\n"); -  	return 0;  } |