From b9f0b7305278feba7dc295e58c58f22cfcfe8009 Mon Sep 17 00:00:00 2001 From: Stephan Linz Date: Wed, 22 Feb 2012 22:39:57 +0100 Subject: [PATCH 1/3] microblaze: fix build failure due to undefined reference to `get_ticks' after commit "common: add possibility for readline_into_buffer timeout" (sha1:9c34831) was applied. The Microblaze generic build fails with error below: common/libcommon.o: In function `cread_line': /devel/u-boot/common/main.c:717: undefined reference to `get_ticks' /devel/u-boot/common/main.c:717: undefined reference to `get_tbclk' /devel/u-boot/common/main.c:720: undefined reference to `get_ticks' Signed-off-by: Stephan Linz Acked-by: Michal Simek --- arch/microblaze/cpu/timer.c | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/arch/microblaze/cpu/timer.c b/arch/microblaze/cpu/timer.c index a167755bdd..1952804eaf 100644 --- a/arch/microblaze/cpu/timer.c +++ b/arch/microblaze/cpu/timer.c @@ -62,3 +62,21 @@ int timer_init (void) } #endif #endif + +/* + * This function is derived from PowerPC code (read timebase as long long). + * On Microblaze it just returns the timer value. + */ +unsigned long long get_ticks(void) +{ + return get_timer(0); +} + +/* + * This function is derived from PowerPC code (timebase clock frequency). + * On Microblaze it returns the number of timer ticks per second. + */ +ulong get_tbclk(void) +{ + return CONFIG_SYS_HZ; +} From 0f883267a877314f83236a3397c8e0040f8a1129 Mon Sep 17 00:00:00 2001 From: Stephan Linz Date: Wed, 22 Feb 2012 19:12:43 +0100 Subject: [PATCH 2/3] microblaze: avoid interrupt race conditions The interrupt acknowledge action have to run after the registered interrupt handler. So we have a chance to bear out the corresponding interrupt request in the corresponding controller hardware. With this reordering, we optain a proper interrupt handling for level triggered interrupt sources -- for example the new axi_timer v1.02.a introduced in ISE 13.2. Signed-off-by: Stephan Linz Acked-by: Michal Simek --- arch/microblaze/cpu/interrupts.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/arch/microblaze/cpu/interrupts.c b/arch/microblaze/cpu/interrupts.c index 5a1321128a..e7ca859bfe 100644 --- a/arch/microblaze/cpu/interrupts.c +++ b/arch/microblaze/cpu/interrupts.c @@ -155,8 +155,6 @@ void interrupt_handler (void) #endif struct irq_action *act = vecs + irqs; - intc->iar = mask << irqs; - #ifdef DEBUG_INT printf ("Jumping to interrupt handler rutine addr %x,count %x,arg %x\n", @@ -165,6 +163,8 @@ void interrupt_handler (void) act->handler (act->arg); act->count++; + intc->iar = mask << irqs; + #ifdef DEBUG_INT printf ("Dump INTC reg, isr %x, ier %x, iar %x, mer %x\n", intc->isr, intc->ier, intc->iar, intc->mer); From 4eb29cf043afb36b414482c117413a8ff8f00410 Mon Sep 17 00:00:00 2001 From: Stephan Linz Date: Sat, 21 Jan 2012 22:02:57 +0100 Subject: [PATCH 3/3] microblaze: Enable TFTP put command Signed-off-by: Stephan Linz --- include/configs/microblaze-generic.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/configs/microblaze-generic.h b/include/configs/microblaze-generic.h index 03a6f5ad0b..1f4aefde13 100644 --- a/include/configs/microblaze-generic.h +++ b/include/configs/microblaze-generic.h @@ -255,6 +255,7 @@ #else # define CONFIG_CMD_PING # define CONFIG_CMD_DHCP +# define CONFIG_CMD_TFTPPUT #endif #if defined(CONFIG_SYSTEMACE)