From 93e29a2ecaa8372c5bb9b996b8b43e03a7c37f3c Mon Sep 17 00:00:00 2001 From: Robert Schwebel Date: Mon, 5 Nov 2007 17:55:24 +0100 Subject: [ARM] 4641/2: netX: fix kobject_name type With commit 5984a2fc7e7c9ab118e78ae9799e98fc4ade40f9 kobject_name() is correctly being used to access the name field of kobj, but that function needs a pointer to a kobject, not the kobject itself. Signed-off-by: Robert Schwebel Signed-off-by: Russell King --- arch/arm/mach-netx/xc.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-netx/xc.c b/arch/arm/mach-netx/xc.c index bd5184fe177..ca9c5b61283 100644 --- a/arch/arm/mach-netx/xc.c +++ b/arch/arm/mach-netx/xc.c @@ -190,15 +190,15 @@ struct xc *request_xc(int xcno, struct device *dev) goto exit; if (!request_mem_region - (NETX_PA_XPEC(xcno), XPEC_MEM_SIZE, kobject_name(dev->kobj))) + (NETX_PA_XPEC(xcno), XPEC_MEM_SIZE, kobject_name(&dev->kobj))) goto exit_free; if (!request_mem_region - (NETX_PA_XMAC(xcno), XMAC_MEM_SIZE, kobject_name(dev->kobj))) + (NETX_PA_XMAC(xcno), XMAC_MEM_SIZE, kobject_name(&dev->kobj))) goto exit_release_1; if (!request_mem_region - (SRAM_INTERNAL_PHYS(xcno), SRAM_MEM_SIZE, kobject_name(dev->kobj))) + (SRAM_INTERNAL_PHYS(xcno), SRAM_MEM_SIZE, kobject_name(&dev->kobj))) goto exit_release_2; x->xpec_base = (void * __iomem)io_p2v(NETX_PA_XPEC(xcno)); -- cgit v1.2.3-70-g09d2 From 342fb3dda337f4b0c49e468cd930138c401ccce0 Mon Sep 17 00:00:00 2001 From: David Brownell Date: Fri, 26 Oct 2007 21:48:37 +0100 Subject: [ARM] 4633/1: omap build fix when FB enabled This fixes a section error on OMAP when the framebuffer is enabled. Signed-off-by: David Brownell Acked-by: Tony Lindgren Signed-off-by: Russell King --- arch/arm/plat-omap/fb.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'arch') diff --git a/arch/arm/plat-omap/fb.c b/arch/arm/plat-omap/fb.c index 4493bcff517..ee40c1a0b83 100644 --- a/arch/arm/plat-omap/fb.c +++ b/arch/arm/plat-omap/fb.c @@ -171,7 +171,7 @@ static int check_fbmem_region(int region_idx, struct omapfb_mem_region *rg, * Called from map_io. We need to call to this early enough so that we * can reserve the fixed SDRAM regions before VM could get hold of them. */ -void omapfb_reserve_sdram(void) +void __init omapfb_reserve_sdram(void) { struct bootmem_data *bdata; unsigned long sdram_start, sdram_size; -- cgit v1.2.3-70-g09d2 From 70dfa3f8756afa106a468e81649bf0c1d7dbf99e Mon Sep 17 00:00:00 2001 From: Russell King Date: Wed, 7 Nov 2007 14:13:35 +0000 Subject: [ARM] Allow watchdog drivers to be selected again Signed-off-by: Russell King --- arch/arm/Kconfig | 2 ++ 1 file changed, 2 insertions(+) (limited to 'arch') diff --git a/arch/arm/Kconfig b/arch/arm/Kconfig index a0cdaafa115..a7e9fea978a 100644 --- a/arch/arm/Kconfig +++ b/arch/arm/Kconfig @@ -1040,6 +1040,8 @@ source "drivers/power/Kconfig" source "drivers/hwmon/Kconfig" +source "drivers/watchdog/Kconfig" + source "drivers/ssb/Kconfig" #source "drivers/l3/Kconfig" -- cgit v1.2.3-70-g09d2 From 91bc51d8a10b00d8233dd5b6f07d7eb40828b87d Mon Sep 17 00:00:00 2001 From: Russell King Date: Thu, 8 Nov 2007 23:35:46 +0000 Subject: [ARM] pxa: fix one-shot timer mode One-shot timer mode on PXA has various bugs which prevent kernels build with NO_HZ enabled booting. They end up spinning on a permanently asserted timer interrupt because we don't properly clear it down - clearing the OIER bit does not stop the pending interrupt status. Fix this in the set_mode handler as well. Moreover, the code which sets the next expiry point may race with the hardware, and we might not set the match register sufficiently in the future. If we encounter that situation, return -ETIME so the generic time code retries. Acked-by: Thomas Gleixner Acked-by: Nicolas Pitre Signed-off-by: Russell King --- arch/arm/mach-pxa/time.c | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) (limited to 'arch') diff --git a/arch/arm/mach-pxa/time.c b/arch/arm/mach-pxa/time.c index a2d45d742ce..fbfa1920353 100644 --- a/arch/arm/mach-pxa/time.c +++ b/arch/arm/mach-pxa/time.c @@ -68,6 +68,7 @@ pxa_ost0_interrupt(int irq, void *dev_id) if (c->mode == CLOCK_EVT_MODE_ONESHOT) { /* Disarm the compare/match, signal the event. */ OIER &= ~OIER_E0; + OSSR = OSSR_M0; c->event_handler(c); } else if (c->mode == CLOCK_EVT_MODE_PERIODIC) { /* Call the event handler as many times as necessary @@ -100,9 +101,9 @@ pxa_ost0_interrupt(int irq, void *dev_id) * anything that might put us "very close". */ #define MIN_OSCR_DELTA 16 - do { + do { OSSR = OSSR_M0; - next_match = (OSMR0 += LATCH); + next_match = (OSMR0 += LATCH); c->event_handler(c); } while (((signed long)(next_match - OSCR) <= MIN_OSCR_DELTA) && (c->mode == CLOCK_EVT_MODE_PERIODIC)); @@ -114,14 +115,16 @@ pxa_ost0_interrupt(int irq, void *dev_id) static int pxa_osmr0_set_next_event(unsigned long delta, struct clock_event_device *dev) { - unsigned long irqflags; + unsigned long flags, next, oscr; - raw_local_irq_save(irqflags); - OSMR0 = OSCR + delta; - OSSR = OSSR_M0; + raw_local_irq_save(flags); OIER |= OIER_E0; - raw_local_irq_restore(irqflags); - return 0; + next = OSCR + delta; + OSMR0 = next; + oscr = OSCR; + raw_local_irq_restore(flags); + + return (signed)(next - oscr) <= MIN_OSCR_DELTA ? -ETIME : 0; } static void @@ -132,15 +135,16 @@ pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev) switch (mode) { case CLOCK_EVT_MODE_PERIODIC: raw_local_irq_save(irqflags); - OSMR0 = OSCR + LATCH; OSSR = OSSR_M0; OIER |= OIER_E0; + OSMR0 = OSCR + LATCH; raw_local_irq_restore(irqflags); break; case CLOCK_EVT_MODE_ONESHOT: raw_local_irq_save(irqflags); OIER &= ~OIER_E0; + OSSR = OSSR_M0; raw_local_irq_restore(irqflags); break; @@ -149,6 +153,7 @@ pxa_osmr0_set_mode(enum clock_event_mode mode, struct clock_event_device *dev) /* initializing, released, or preparing for suspend */ raw_local_irq_save(irqflags); OIER &= ~OIER_E0; + OSSR = OSSR_M0; raw_local_irq_restore(irqflags); break; -- cgit v1.2.3-70-g09d2