Commit ff2db7c5 authored by Geert Uytterhoeven's avatar Geert Uytterhoeven

m68k: amiga - Sound platform device conversion

Signed-off-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
parent fa6688e1
...@@ -67,6 +67,11 @@ static int __init amiga_init_devices(void) ...@@ -67,6 +67,11 @@ static int __init amiga_init_devices(void)
if (AMIGAHW_PRESENT(AMI_VIDEO)) if (AMIGAHW_PRESENT(AMI_VIDEO))
platform_device_register_simple("amiga-video", -1, NULL, 0); platform_device_register_simple("amiga-video", -1, NULL, 0);
/* sound hardware */
if (AMIGAHW_PRESENT(AMI_AUDIO))
platform_device_register_simple("amiga-audio", -1, NULL, 0);
return 0; return 0;
} }
......
...@@ -21,6 +21,7 @@ ...@@ -21,6 +21,7 @@
#include <linux/ioport.h> #include <linux/ioport.h>
#include <linux/soundcard.h> #include <linux/soundcard.h>
#include <linux/interrupt.h> #include <linux/interrupt.h>
#include <linux/platform_device.h>
#include <asm/uaccess.h> #include <asm/uaccess.h>
#include <asm/setup.h> #include <asm/setup.h>
...@@ -710,31 +711,41 @@ static MACHINE machAmiga = { ...@@ -710,31 +711,41 @@ static MACHINE machAmiga = {
/*** Config & Setup **********************************************************/ /*** Config & Setup **********************************************************/
static int __init dmasound_paula_init(void) static int __init amiga_audio_probe(struct platform_device *pdev)
{ {
int err; dmasound.mach = machAmiga;
dmasound.mach.default_hard = def_hard ;
if (MACH_IS_AMIGA && AMIGAHW_PRESENT(AMI_AUDIO)) { dmasound.mach.default_soft = def_soft ;
if (!request_mem_region(CUSTOM_PHYSADDR+0xa0, 0x40, return dmasound_init();
"dmasound [Paula]"))
return -EBUSY;
dmasound.mach = machAmiga;
dmasound.mach.default_hard = def_hard ;
dmasound.mach.default_soft = def_soft ;
err = dmasound_init();
if (err)
release_mem_region(CUSTOM_PHYSADDR+0xa0, 0x40);
return err;
} else
return -ENODEV;
} }
static void __exit dmasound_paula_cleanup(void) static int __exit amiga_audio_remove(struct platform_device *pdev)
{ {
dmasound_deinit(); dmasound_deinit();
release_mem_region(CUSTOM_PHYSADDR+0xa0, 0x40); return 0;
}
static struct platform_driver amiga_audio_driver = {
.remove = __exit_p(amiga_audio_remove),
.driver = {
.name = "amiga-audio",
.owner = THIS_MODULE,
},
};
static int __init amiga_audio_init(void)
{
return platform_driver_probe(&amiga_audio_driver, amiga_audio_probe);
} }
module_init(dmasound_paula_init); module_init(amiga_audio_init);
module_exit(dmasound_paula_cleanup);
static void __exit amiga_audio_exit(void)
{
platform_driver_unregister(&amiga_audio_driver);
}
module_exit(amiga_audio_exit);
MODULE_LICENSE("GPL"); MODULE_LICENSE("GPL");
MODULE_ALIAS("platform:amiga-audio");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment