提交 7afada45 编写于 作者: I Ian Wienand 提交者: Dmitry Torokhov

Input: convert dmasound_awacs (OSS) to dynamic input allocation

Signed-off-by: NIan Wienand <ianw@gelato.unsw.edu.au>
Signed-off-by: NDmitry Torokhov <dtor@mail.ru>
上级 cfa024f4
...@@ -2805,16 +2805,7 @@ __init setup_beep(void) ...@@ -2805,16 +2805,7 @@ __init setup_beep(void)
return 0 ; return 0 ;
} }
static struct input_dev awacs_beep_dev = { static struct input_dev *awacs_beep_dev;
.evbit = { BIT(EV_SND) },
.sndbit = { BIT(SND_BELL) | BIT(SND_TONE) },
.event = awacs_beep_event,
.name = "dmasound beeper",
.phys = "macio/input0", /* what the heck is this?? */
.id = {
.bustype = BUS_HOST,
},
};
int __init dmasound_awacs_init(void) int __init dmasound_awacs_init(void)
{ {
...@@ -2907,6 +2898,22 @@ printk("dmasound_pmac: couldn't find a Codec we can handle\n"); ...@@ -2907,6 +2898,22 @@ printk("dmasound_pmac: couldn't find a Codec we can handle\n");
return -ENODEV; return -ENODEV;
} }
awacs_beep_dev = input_allocate_device();
if (!awacs_beep_dev) {
release_OF_resource(io, 0);
release_OF_resource(io, 1);
release_OF_resource(io, 2);
printk(KERN_ERR "dmasound: can't allocate input device !\n");
return -ENOMEM;
}
awacs_beep_dev->name = "dmasound beeper";
awacs_beep_dev->phys = "macio/input0";
awacs_beep_dev->id.bustype = BUS_HOST;
awacs_beep_dev->event = awacs_beep_event;
awacs_beep_dev->sndbit[0] = BIT(SND_BELL) | BIT(SND_TONE);
awacs_beep_dev->evbit[0] = BIT(EV_SND);
/* all OF versions I've seen use this value */ /* all OF versions I've seen use this value */
if (i2s_node) if (i2s_node)
i2s = ioremap(io->addrs[0].address, 0x1000); i2s = ioremap(io->addrs[0].address, 0x1000);
...@@ -3140,14 +3147,14 @@ printk("dmasound_pmac: Awacs/Screamer Codec Mfct: %d Rev %d\n", mfg, rev); ...@@ -3140,14 +3147,14 @@ printk("dmasound_pmac: Awacs/Screamer Codec Mfct: %d Rev %d\n", mfg, rev);
* XXX: we should handle errors here, but that would mean * XXX: we should handle errors here, but that would mean
* rewriting the whole init code. later.. * rewriting the whole init code. later..
*/ */
input_register_device(&awacs_beep_dev); input_register_device(awacs_beep_dev);
return dmasound_init(); return dmasound_init();
} }
static void __exit dmasound_awacs_cleanup(void) static void __exit dmasound_awacs_cleanup(void)
{ {
input_unregister_device(&awacs_beep_dev); input_unregister_device(awacs_beep_dev);
switch (awacs_revision) { switch (awacs_revision) {
case AWACS_TUMBLER: case AWACS_TUMBLER:
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册