[PATCH] x86_64: make PC Speaker driver work
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>
This commit is contained in:
committed by
Linus Torvalds
parent
f3537ea7b9
commit
160bd18e5e
@@ -1426,3 +1426,22 @@ struct seq_operations cpuinfo_op = {
|
|||||||
.show = show_cpuinfo,
|
.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
|
||||||
|
Reference in New Issue
Block a user