diff options
| -rw-r--r-- | arch/m68k/amiga/platform.c | 5 | ||||
| -rw-r--r-- | sound/oss/dmasound/dmasound_paula.c | 51 |
2 files changed, 36 insertions, 20 deletions
diff --git a/arch/m68k/amiga/platform.c b/arch/m68k/amiga/platform.c index 7fa929cf9a3a..2e308e7a0949 100644 --- a/arch/m68k/amiga/platform.c +++ b/arch/m68k/amiga/platform.c | |||
| @@ -67,6 +67,11 @@ static int __init amiga_init_devices(void) | |||
| 67 | if (AMIGAHW_PRESENT(AMI_VIDEO)) | 67 | if (AMIGAHW_PRESENT(AMI_VIDEO)) |
| 68 | platform_device_register_simple("amiga-video", -1, NULL, 0); | 68 | platform_device_register_simple("amiga-video", -1, NULL, 0); |
| 69 | 69 | ||
| 70 | |||
| 71 | /* sound hardware */ | ||
| 72 | if (AMIGAHW_PRESENT(AMI_AUDIO)) | ||
| 73 | platform_device_register_simple("amiga-audio", -1, NULL, 0); | ||
| 74 | |||
| 70 | return 0; | 75 | return 0; |
| 71 | } | 76 | } |
| 72 | 77 | ||
diff --git a/sound/oss/dmasound/dmasound_paula.c b/sound/oss/dmasound/dmasound_paula.c index bb14e4c67e89..87910e992133 100644 --- a/sound/oss/dmasound/dmasound_paula.c +++ b/sound/oss/dmasound/dmasound_paula.c | |||
| @@ -21,6 +21,7 @@ | |||
| 21 | #include <linux/ioport.h> | 21 | #include <linux/ioport.h> |
| 22 | #include <linux/soundcard.h> | 22 | #include <linux/soundcard.h> |
| 23 | #include <linux/interrupt.h> | 23 | #include <linux/interrupt.h> |
| 24 | #include <linux/platform_device.h> | ||
| 24 | 25 | ||
| 25 | #include <asm/uaccess.h> | 26 | #include <asm/uaccess.h> |
| 26 | #include <asm/setup.h> | 27 | #include <asm/setup.h> |
| @@ -710,31 +711,41 @@ static MACHINE machAmiga = { | |||
| 710 | /*** Config & Setup **********************************************************/ | 711 | /*** Config & Setup **********************************************************/ |
| 711 | 712 | ||
| 712 | 713 | ||
| 713 | static int __init dmasound_paula_init(void) | 714 | static int __init amiga_audio_probe(struct platform_device *pdev) |
| 714 | { | 715 | { |
| 715 | int err; | 716 | dmasound.mach = machAmiga; |
| 716 | 717 | dmasound.mach.default_hard = def_hard ; | |
| 717 | if (MACH_IS_AMIGA && AMIGAHW_PRESENT(AMI_AUDIO)) { | 718 | dmasound.mach.default_soft = def_soft ; |
| 718 | if (!request_mem_region(CUSTOM_PHYSADDR+0xa0, 0x40, | 719 | return dmasound_init(); |
| 719 | "dmasound [Paula]")) | ||
| 720 | return -EBUSY; | ||
| 721 | dmasound.mach = machAmiga; | ||
| 722 | dmasound.mach.default_hard = def_hard ; | ||
| 723 | dmasound.mach.default_soft = def_soft ; | ||
| 724 | err = dmasound_init(); | ||
| 725 | if (err) | ||
| 726 | release_mem_region(CUSTOM_PHYSADDR+0xa0, 0x40); | ||
| 727 | return err; | ||
| 728 | } else | ||
| 729 | return -ENODEV; | ||
| 730 | } | 720 | } |
| 731 | 721 | ||
| 732 | static void __exit dmasound_paula_cleanup(void) | 722 | static int __exit amiga_audio_remove(struct platform_device *pdev) |
| 733 | { | 723 | { |
| 734 | dmasound_deinit(); | 724 | dmasound_deinit(); |
| 735 | release_mem_region(CUSTOM_PHYSADDR+0xa0, 0x40); | 725 | return 0; |
| 726 | } | ||
| 727 | |||
| 728 | static struct platform_driver amiga_audio_driver = { | ||
| 729 | .remove = __exit_p(amiga_audio_remove), | ||
| 730 | .driver = { | ||
| 731 | .name = "amiga-audio", | ||
| 732 | .owner = THIS_MODULE, | ||
| 733 | }, | ||
| 734 | }; | ||
| 735 | |||
| 736 | static int __init amiga_audio_init(void) | ||
| 737 | { | ||
| 738 | return platform_driver_probe(&amiga_audio_driver, amiga_audio_probe); | ||
| 736 | } | 739 | } |
| 737 | 740 | ||
| 738 | module_init(dmasound_paula_init); | 741 | module_init(amiga_audio_init); |
| 739 | module_exit(dmasound_paula_cleanup); | 742 | |
| 743 | static void __exit amiga_audio_exit(void) | ||
| 744 | { | ||
| 745 | platform_driver_unregister(&amiga_audio_driver); | ||
| 746 | } | ||
| 747 | |||
| 748 | module_exit(amiga_audio_exit); | ||
| 749 | |||
| 740 | MODULE_LICENSE("GPL"); | 750 | MODULE_LICENSE("GPL"); |
| 751 | MODULE_ALIAS("platform:amiga-audio"); | ||
