Use i8253.c lock for PC speaker on MIPS, too.
Subsystems (2)
A message that is not in the archive (sent off-list or not yet received): [email protected]
PATCH 1/1 Use i8253.c lock for PC speaker on MIPS, too.
The Jazz machines have to use the PIT timer for dyntick and highresolution kernels. This may break because currently just like i386 used to do MIPS uses two separate spinlocks in the actual PIT code and the PC speaker code. So switch to do it the same that x86 currently does PIT locking.
---
Linus, this patch is meant to be applied on top of the pull request I mailed you earlier today.
arch/mips/kernel/i8253.c | 2 +- drivers/input/misc/pcspkr.c | 2 +- include/asm-mips/i8253.h | 4 ++++ 3 files changed, 6 insertions(+), 2 deletions(-)
arch/mips/kernel/i8253.c +1 -1
@@ -14,7 +14,7 @@#include <asm/io.h> #include <asm/time.h> -static DEFINE_SPINLOCK (i8253_lock); +DEFINE_SPINLOCK (i8253_lock);/* * Initialize the PIT timer.
drivers/input/misc/pcspkr.c +1 -1
@@ -24,7 +24,7 @@ MODULE_DESCRIPTION("PC Speaker beeper driver");MODULE_LICENSE ("GPL" );MODULE_ALIAS ("platform:pcspkr" ); -#ifdef CONFIG_X86 +#if defined(CONFIG_MIPS ) || defined(CONFIG_X86 )/* Use the global PIT lock ! */ #include <asm/i8253.h> #else
include/asm-mips/i8253.h +4 -0
@@ -5,11 +5,15 @@#ifndef __ASM_I8253_H#define __ASM_I8253_H +#include <linux/spinlock.h> +/* i8253A PIT registers */ #define PIT_MODE 0x43#define PIT_CH0 0x40#define PIT_CH2 0x42 +extern spinlock_t i8253_lock; +extern void setup_pit_timer (void );#endif /* __ASM_I8253_H */
Quoted 5 lines · Ralf Baechle
The Jazz machines have to use the PIT timer for dyntick and highresolution kernels. This may break because currently just like i386 used to do MIPS uses two separate spinlocks in the actual PIT code and the PC speaker code. So switch to do it the same that x86 currently does PIT locking.
Hmm. That leaves apparently just alpha/ppc/powerpc as supporting pcspkr, and *not* doing this. Maybe they should be forced to do the i8253 lock in arch code too, and expose it through <asm/i8253.h>, instead of having that butt-ugly #ifdef remain in the sources?
Paul, Jay, Ivan: right now drivers/input/pcspkr.c does this:
#if defined(CONFIG_MIPS) || defined(CONFIG_X86) /* Use the global PIT lock ! */ #include <asm/i8253.h> #else #include <asm/8253pit.h> static DEFINE_SPINLOCK(i8253_lock); #endif
and wouldn't it be nice if we just changed it to
#include <asm/i8253.h>
and got rid of one totally unnecessary stupid arch difference?
Linus
Quoted 5 lines · Linus Torvalds
and wouldn't it be nice if we just changed it to
#include <asm/i8253.h>and got rid of one totally unnecessary stupid arch difference?
Looks fine to me. I'll do a patch for powerpc & ppc.
Paul.