summaryrefslogtreecommitdiff
path: root/arch/arm/mach-bcm2708
diff options
context:
space:
mode:
authorpopcornmix <popcornmix@gmail.com>2012-03-26 22:15:50 +0100
committerpopcornmix <popcornmix@gmail.com>2015-05-18 14:10:25 +0100
commitd812b2fc4ea85d1e4765939ca074a566a705d174 (patch)
treef0bba10dda4424661d9a5f02390d8e39124d5345 /arch/arm/mach-bcm2708
parentf9de7c31b59afa92f56a38cc82dfeeaa70ba7bd1 (diff)
downloadlinux-d812b2fc4ea85d1e4765939ca074a566a705d174.tar.gz
bcm2708: alsa sound driver
Signed-off-by: popcornmix <popcornmix@gmail.com> alsa: add mmap support and some cleanups to bcm2835 ALSA driver snd-bcm2835: Add support for spdif/hdmi passthrough This adds a dedicated subdevice which can be used for passthrough of non-audio formats (ie encoded a52) through the hdmi audio link. In addition to this driver extension an appropriate card config is required to make alsa-lib support the AES parameters for this device. snd-bcm2708: Add mutex, improve logging Fix for ALSA driver crash Avoids an issue when closing and opening vchiq where a message can arrive before service handle has been written alsa: reduce severity of expected warning message snd-bcm2708: Fix dmesg spam for non-error case alsa: Ensure mutexes are released through error paths alsa: Make interrupted close paths quieter
Diffstat (limited to 'arch/arm/mach-bcm2708')
-rw-r--r--arch/arm/mach-bcm2708/bcm2708.c54
1 files changed, 54 insertions, 0 deletions
diff --git a/arch/arm/mach-bcm2708/bcm2708.c b/arch/arm/mach-bcm2708/bcm2708.c
index d1308edaea87..f54e3e9b8a33 100644
--- a/arch/arm/mach-bcm2708/bcm2708.c
+++ b/arch/arm/mach-bcm2708/bcm2708.c
@@ -447,6 +447,58 @@ struct platform_device bcm2708_powerman_device = {
.coherent_dma_mask = 0xffffffffUL},
};
+
+static struct platform_device bcm2708_alsa_devices[] = {
+ [0] = {
+ .name = "bcm2835_AUD0",
+ .id = 0, /* first audio device */
+ .resource = 0,
+ .num_resources = 0,
+ },
+ [1] = {
+ .name = "bcm2835_AUD1",
+ .id = 1, /* second audio device */
+ .resource = 0,
+ .num_resources = 0,
+ },
+ [2] = {
+ .name = "bcm2835_AUD2",
+ .id = 2, /* third audio device */
+ .resource = 0,
+ .num_resources = 0,
+ },
+ [3] = {
+ .name = "bcm2835_AUD3",
+ .id = 3, /* forth audio device */
+ .resource = 0,
+ .num_resources = 0,
+ },
+ [4] = {
+ .name = "bcm2835_AUD4",
+ .id = 4, /* fifth audio device */
+ .resource = 0,
+ .num_resources = 0,
+ },
+ [5] = {
+ .name = "bcm2835_AUD5",
+ .id = 5, /* sixth audio device */
+ .resource = 0,
+ .num_resources = 0,
+ },
+ [6] = {
+ .name = "bcm2835_AUD6",
+ .id = 6, /* seventh audio device */
+ .resource = 0,
+ .num_resources = 0,
+ },
+ [7] = {
+ .name = "bcm2835_AUD7",
+ .id = 7, /* eighth audio device */
+ .resource = 0,
+ .num_resources = 0,
+ },
+};
+
int __init bcm_register_device(struct platform_device *pdev)
{
int ret;
@@ -556,6 +608,8 @@ void __init bcm2708_init(void)
bcm_register_device(&bcm2835_emmc_device);
#endif
bcm2708_init_led();
+ for (i = 0; i < ARRAY_SIZE(bcm2708_alsa_devices); i++)
+ bcm_register_device(&bcm2708_alsa_devices[i]);
for (i = 0; i < ARRAY_SIZE(amba_devs); i++) {
struct amba_device *d = amba_devs[i];