summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/setup-common.c
diff options
context:
space:
mode:
authorMichael Neuling <mikey@neuling.org>2006-03-14 06:11:50 +0100
committerDmitry Torokhov <dtor_core@ameritech.net>2006-03-14 06:11:50 +0100
commite5c6c8e457d16c7cbc12f849ad18d4d508950de2 (patch)
tree25a6342ef5fa5ae19f1fbaed8538290225dba38d /arch/powerpc/kernel/setup-common.c
parentInput: atkbd - allow disabling on X86_PC (if EMBEDDED) (diff)
downloadlinux-e5c6c8e457d16c7cbc12f849ad18d4d508950de2.tar.xz
linux-e5c6c8e457d16c7cbc12f849ad18d4d508950de2.zip
Input: pcspkr - separate device and driver registration
The current pcspkr code combines the device and driver registration. This patch splits these, putting the device registration in the arch specific code. PowerPC and MIPS only have the pcspkr present sometimes. Signed-off-by: Michael Neuling <mikey@neuling.org> Signed-off-by: Ralf Baechle <ralf@linux-mips.org> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Dmitry Torokhov <dtor@mail.ru>
Diffstat (limited to 'arch/powerpc/kernel/setup-common.c')
-rw-r--r--arch/powerpc/kernel/setup-common.c24
1 files changed, 24 insertions, 0 deletions
diff --git a/arch/powerpc/kernel/setup-common.c b/arch/powerpc/kernel/setup-common.c
index be12041c0fc5..fc89d009d18d 100644
--- a/arch/powerpc/kernel/setup-common.c
+++ b/arch/powerpc/kernel/setup-common.c
@@ -18,6 +18,7 @@
#include <linux/reboot.h>
#include <linux/delay.h>
#include <linux/initrd.h>
+#include <linux/platform_device.h>
#include <linux/ide.h>
#include <linux/seq_file.h>
#include <linux/ioport.h>
@@ -469,3 +470,26 @@ static int __init early_xmon(char *p)
}
early_param("xmon", early_xmon);
#endif
+
+static __init int add_pcspkr(void)
+{
+ struct device_node *np;
+ struct platform_device *pd;
+ int ret;
+
+ np = of_find_compatible_node(NULL, NULL, "pnpPNP,100");
+ of_node_put(np);
+ if (!np)
+ return -ENODEV;
+
+ 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);