Skip to content

Commit

Permalink
[PATCH] x86_64: make PC Speaker driver work
Browse files Browse the repository at this point in the history
The PC Speaker driver's ->probe() routine doesn't even get called in the
64-bit kernels.  The reason for that is that the arch code apparently has
to explictly add a "pcspkr" platform device in order for the driver core to
call the ->probe() routine.  arch/i386/kernel/setup.c unconditionally adds
a "pcspkr" device, but the x86_64 kernel has no code at all related to the
PC Speaker.

The patch below copies the relevant code from i386 to x86_64, which makes
the PC Speaker work for me on x86_64.

Cc: Dmitry Torokhov <dtor_core@ameritech.net>
Acked-by: Andi Kleen <ak@muc.de>
Signed-off-by: Andrew Morton <akpm@osdl.org>
Signed-off-by: Linus Torvalds <torvalds@osdl.org>
  • Loading branch information
Mikael Pettersson authored and Linus Torvalds committed May 2, 2006
1 parent f3537ea commit 160bd18
Showing 1 changed file with 19 additions and 0 deletions.
19 changes: 19 additions & 0 deletions arch/x86_64/kernel/setup.c
Original file line number Diff line number Diff line change
Expand Up @@ -1426,3 +1426,22 @@ struct seq_operations cpuinfo_op = {
.show = show_cpuinfo,
};

#ifdef CONFIG_INPUT_PCSPKR
#include <linux/platform_device.h>
static __init int add_pcspkr(void)
{
struct platform_device *pd;
int ret;

pd = platform_device_alloc("pcspkr", -1);
if (!pd)
return -ENOMEM;

ret = platform_device_add(pd);
if (ret)
platform_device_put(pd);

return ret;
}
device_initcall(add_pcspkr);
#endif

0 comments on commit 160bd18

Please sign in to comment.