From mboxrd@z Thu Jan 1 00:00:00 1970 From: Kumar Gala Date: Wed, 27 Aug 2008 01:10:57 -0500 Subject: [U-Boot] [PATCH 24/24] mpc85xx: remove redudant code with lib_ppc/interrupts.c In-Reply-To: <1219817457-7432-23-git-send-email-galak@kernel.crashing.org> References: <1219817457-7432-1-git-send-email-galak@kernel.crashing.org> <1219817457-7432-2-git-send-email-galak@kernel.crashing.org> <1219817457-7432-3-git-send-email-galak@kernel.crashing.org> <1219817457-7432-4-git-send-email-galak@kernel.crashing.org> <1219817457-7432-5-git-send-email-galak@kernel.crashing.org> <1219817457-7432-6-git-send-email-galak@kernel.crashing.org> <1219817457-7432-7-git-send-email-galak@kernel.crashing.org> <1219817457-7432-8-git-send-email-galak@kernel.crashing.org> <1219817457-7432-9-git-send-email-galak@kernel.crashing.org> <1219817457-7432-10-git-send-email-galak@kernel.crashing.org> <1219817457-7432-11-git-send-email-galak@kernel.crashing.org> <1219817457-7432-12-git-send-email-galak@kernel.crashing.org> <1219817457-7432-13-git-send-email-galak@kernel.crashing.org> <1219817457-7432-14-git-send-email-galak@kernel.crashing.org> <1219817457-7432-15-git-send-email-galak@kernel.crashing.org> <1219817457-7432-16-git-send-email-galak@kernel.crashing.org> <1219817457-7432-17-git-send-email-galak@kernel.crashing.org> <1219817457-7432-18-git-send-email-galak@kernel.crashing.org> <1219817457-7432-19-git-send-email-galak@kernel.crashing.org> <1219817457-7432-20-git-send-email-galak@kernel.crashing.org> <1219817457-7432-21-git-send-email-galak@kernel.crashing.org> <1219817457-7432-22-git-send-email-galak@kernel.crashing.org> <1219817457-7432-23-git-send-email-galak@kernel.crashing.org> Message-ID: <1219817457-7432-24-git-send-email-galak@kernel.crashing.org> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de For some reason we duplicated the majority of code in lib_ppc/interrupts.c not show how that happened, but there is no good reason for it. Use the interrupt_init_cpu() and timer_interrupt_cpu() since its why they exist. Signed-off-by: Kumar Gala --- cpu/mpc85xx/interrupts.c | 109 +++++----------------------------------------- 1 files changed, 12 insertions(+), 97 deletions(-) diff --git a/cpu/mpc85xx/interrupts.c b/cpu/mpc85xx/interrupts.c index 4fe1fac..06d4d8b 100644 --- a/cpu/mpc85xx/interrupts.c +++ b/cpu/mpc85xx/interrupts.c @@ -31,64 +31,20 @@ #include #include #include -#include -unsigned decrementer_count; /* count value for 1e6/HZ microseconds */ - -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)); - asm volatile("isync"); -} - -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)); -} - -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); -} - -int interrupt_init (void) +int interrupt_init_cpu(unsigned long *decrementer_count) { volatile ccsr_pic_t *pic = (void *)(CFG_MPC85xx_PIC_ADDR); pic->gcr = MPC85xx_PICGCR_RST; - while (pic->gcr & MPC85xx_PICGCR_RST); + while (pic->gcr & MPC85xx_PICGCR_RST) + ; pic->gcr = MPC85xx_PICGCR_M; - decrementer_count = get_tbclk() / CFG_HZ; + + *decrementer_count = get_tbclk() / CFG_HZ; + + /* PIE is same as DIE, dec interrupt enable */ mtspr(SPRN_TCR, TCR_PIE); - set_dec (decrementer_count); - set_msr (get_msr () | MSR_EE); #ifdef CONFIG_INTERRUPTS pic->iivpr1 = 0x810001; /* 50220 enable ecm interrupts */ @@ -123,9 +79,7 @@ int interrupt_init (void) return (0); } -/* - * Install and free a interrupt handler. Not implemented yet. - */ +/* Install and free a interrupt handler. Not implemented yet. */ void irq_install_handler(int vec, interrupt_handler_t *handler, void *arg) @@ -139,55 +93,16 @@ irq_free_handler(int vec) return; } -/****************************************************************************/ - - -volatile ulong timestamp = 0; - -/* - * timer_interrupt - gets called when the decrementer overflows, - * with interrupts disabled. - * Trivial implementation - no need to be really accurate. - */ -void timer_interrupt(struct pt_regs *regs) +void timer_interrupt_cpu(struct pt_regs *regs) { - timestamp++; - set_dec (decrementer_count); + /* PIS is same as DIS, dec interrupt status */ mtspr(SPRN_TSR, TSR_PIS); -#if defined(CONFIG_WATCHDOG) - if ((timestamp % 1000) == 0) - reset_85xx_watchdog(); -#endif /* CONFIG_WATCHDOG */ -} - -void reset_timer (void) -{ - timestamp = 0; -} - -ulong get_timer (ulong base) -{ - return (timestamp - base); -} - -void set_timer (ulong t) -{ - timestamp = t; } #if defined(CONFIG_CMD_IRQ) - -/******************************************************************************* - * - * irqinfo - print information about PCI devices,not implemented. - * - */ -int -do_irqinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) +/* irqinfo - print information about PCI devices,not implemented. */ +int do_irqinfo(cmd_tbl_t *cmdtp, int flag, int argc, char *argv[]) { - printf ("\nInterrupt-unsupported:\n"); - return 0; } - #endif -- 1.5.5.1