aboutsummaryrefslogtreecommitdiffstats
path: root/arch/arm
diff options
context:
space:
mode:
Diffstat (limited to 'arch/arm')
-rw-r--r--arch/arm/mach-davinci/devices.c13
-rw-r--r--arch/arm/mach-ep93xx/core.c6
-rw-r--r--arch/arm/mach-kirkwood/common.c6
-rw-r--r--arch/arm/mach-mx2/clock_imx27.c4
-rw-r--r--arch/arm/mach-mx2/devices.c2
-rw-r--r--arch/arm/mach-mx3/clock-imx31.c4
-rw-r--r--arch/arm/mach-mx3/clock-imx35.c4
-rw-r--r--arch/arm/mach-mx3/devices.c4
-rw-r--r--arch/arm/mach-omap1/devices.c26
-rw-r--r--arch/arm/mach-omap2/board-n8x0.c15
-rw-r--r--arch/arm/mach-omap2/board-rx51-peripherals.c14
-rw-r--r--arch/arm/mach-omap2/board-zoom2.c28
-rw-r--r--arch/arm/mach-omap2/devices.c39
-rw-r--r--arch/arm/mach-omap2/include/mach/board-zoom.h2
-rw-r--r--arch/arm/mach-pxa/devices.c25
-rw-r--r--arch/arm/mach-pxa/devices.h6
-rw-r--r--arch/arm/mach-pxa/pxa27x.c4
-rw-r--r--arch/arm/mach-pxa/pxa3xx.c5
-rw-r--r--arch/arm/mach-pxa/zylonite.c11
-rw-r--r--arch/arm/mach-s3c64xx/dev-audio.c13
-rw-r--r--arch/arm/mach-s3c64xx/mach-smdk6410.c1
-rw-r--r--arch/arm/plat-mxc/audmux-v2.c4
-rw-r--r--arch/arm/plat-omap/include/plat/mcbsp.h7
-rw-r--r--arch/arm/plat-s3c24xx/devs.c30
-rw-r--r--arch/arm/plat-samsung/include/plat/devs.h2
25 files changed, 258 insertions, 17 deletions
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c
index 8b7201e4c79..de40e9c787e 100644
--- a/arch/arm/mach-davinci/devices.c
+++ b/arch/arm/mach-davinci/devices.c
@@ -295,6 +295,18 @@ static void davinci_init_wdt(void)
295 295
296/*-------------------------------------------------------------------------*/ 296/*-------------------------------------------------------------------------*/
297 297
298struct platform_device davinci_pcm_device = {
299 .name = "davinci-pcm-audio",
300 .id = -1,
301};
302
303static void davinci_init_pcm(void)
304{
305 platform_device_register(&davinci_pcm_device);
306}
307
308/*-------------------------------------------------------------------------*/
309
298struct davinci_timer_instance davinci_timer_instance[2] = { 310struct davinci_timer_instance davinci_timer_instance[2] = {
299 { 311 {
300 .base = DAVINCI_TIMER0_BASE, 312 .base = DAVINCI_TIMER0_BASE,
@@ -315,6 +327,7 @@ static int __init davinci_init_devices(void)
315 /* please keep these calls, and their implementations above, 327 /* please keep these calls, and their implementations above,
316 * in alphabetical order so they're easier to sort through. 328 * in alphabetical order so they're easier to sort through.
317 */ 329 */
330 davinci_init_pcm();
318 davinci_init_wdt(); 331 davinci_init_wdt();
319 332
320 return 0; 333 return 0;
diff --git a/arch/arm/mach-ep93xx/core.c b/arch/arm/mach-ep93xx/core.c
index b4ee5409eb7..b5261d44b26 100644
--- a/arch/arm/mach-ep93xx/core.c
+++ b/arch/arm/mach-ep93xx/core.c
@@ -732,9 +732,15 @@ static struct platform_device ep93xx_i2s_device = {
732 .resource = ep93xx_i2s_resource, 732 .resource = ep93xx_i2s_resource,
733}; 733};
734 734
735static struct platform_device ep93xx_pcm_device = {
736 .name = "ep93xx-pcm-audio",
737 .id = -1,
738};
739
735void __init ep93xx_register_i2s(void) 740void __init ep93xx_register_i2s(void)
736{ 741{
737 platform_device_register(&ep93xx_i2s_device); 742 platform_device_register(&ep93xx_i2s_device);
743 platform_device_register(&ep93xx_pcm_device);
738} 744}
739 745
740#define EP93XX_SYSCON_DEVCFG_I2S_MASK (EP93XX_SYSCON_DEVCFG_I2SONSSP | \ 746#define EP93XX_SYSCON_DEVCFG_I2S_MASK (EP93XX_SYSCON_DEVCFG_I2SONSSP | \
diff --git a/arch/arm/mach-kirkwood/common.c b/arch/arm/mach-kirkwood/common.c
index e1f3efedbcf..07690132cdb 100644
--- a/arch/arm/mach-kirkwood/common.c
+++ b/arch/arm/mach-kirkwood/common.c
@@ -896,10 +896,16 @@ static struct platform_device kirkwood_i2s_device = {
896 }, 896 },
897}; 897};
898 898
899static struct platform_device kirkwood_pcm_device = {
900 .name = "kirkwood-pcm",
901 .id = -1,
902};
903
899void __init kirkwood_audio_init(void) 904void __init kirkwood_audio_init(void)
900{ 905{
901 kirkwood_clk_ctrl |= CGC_AUDIO; 906 kirkwood_clk_ctrl |= CGC_AUDIO;
902 platform_device_register(&kirkwood_i2s_device); 907 platform_device_register(&kirkwood_i2s_device);
908 platform_device_register(&kirkwood_pcm_device);
903} 909}
904 910
905/***************************************************************************** 911/*****************************************************************************
diff --git a/arch/arm/mach-mx2/clock_imx27.c b/arch/arm/mach-mx2/clock_imx27.c
index 0f0823c8b17..379de9c5933 100644
--- a/arch/arm/mach-mx2/clock_imx27.c
+++ b/arch/arm/mach-mx2/clock_imx27.c
@@ -653,8 +653,8 @@ static struct clk_lookup lookups[] = {
653 _REGISTER_CLOCK("mxc-ehci.1", "usb_ahb", usb_clk1) 653 _REGISTER_CLOCK("mxc-ehci.1", "usb_ahb", usb_clk1)
654 _REGISTER_CLOCK("mxc-ehci.2", "usb", usb_clk) 654 _REGISTER_CLOCK("mxc-ehci.2", "usb", usb_clk)
655 _REGISTER_CLOCK("mxc-ehci.2", "usb_ahb", usb_clk1) 655 _REGISTER_CLOCK("mxc-ehci.2", "usb_ahb", usb_clk1)
656 _REGISTER_CLOCK("imx-ssi.0", NULL, ssi1_clk) 656 _REGISTER_CLOCK("imx-ssi-dai.0", NULL, ssi1_clk)
657 _REGISTER_CLOCK("imx-ssi.1", NULL, ssi2_clk) 657 _REGISTER_CLOCK("imx-ssi-dai.1", NULL, ssi2_clk)
658 _REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk) 658 _REGISTER_CLOCK("mxc_nand.0", NULL, nfc_clk)
659 _REGISTER_CLOCK(NULL, "vpu", vpu_clk) 659 _REGISTER_CLOCK(NULL, "vpu", vpu_clk)
660 _REGISTER_CLOCK(NULL, "dma", dma_clk) 660 _REGISTER_CLOCK(NULL, "dma", dma_clk)
diff --git a/arch/arm/mach-mx2/devices.c b/arch/arm/mach-mx2/devices.c
index a0aeb8a4adc..2354d67a10d 100644
--- a/arch/arm/mach-mx2/devices.c
+++ b/arch/arm/mach-mx2/devices.c
@@ -415,7 +415,7 @@ struct platform_device mxc_usbh2 = {
415 }; \ 415 }; \
416 \ 416 \
417 struct platform_device imx_ssi_device ## n = { \ 417 struct platform_device imx_ssi_device ## n = { \
418 .name = "imx-ssi", \ 418 .name = "imx-ssi-dai", \
419 .id = n, \ 419 .id = n, \
420 .num_resources = ARRAY_SIZE(imx_ssi_resources ## n), \ 420 .num_resources = ARRAY_SIZE(imx_ssi_resources ## n), \
421 .resource = imx_ssi_resources ## n, \ 421 .resource = imx_ssi_resources ## n, \
diff --git a/arch/arm/mach-mx3/clock-imx31.c b/arch/arm/mach-mx3/clock-imx31.c
index 9a9eb6de612..9b52a67abf2 100644
--- a/arch/arm/mach-mx3/clock-imx31.c
+++ b/arch/arm/mach-mx3/clock-imx31.c
@@ -558,8 +558,8 @@ static struct clk_lookup lookups[] = {
558 _REGISTER_CLOCK("mxc_w1.0", NULL, owire_clk) 558 _REGISTER_CLOCK("mxc_w1.0", NULL, owire_clk)
559 _REGISTER_CLOCK("mxc-mmc.0", NULL, sdhc1_clk) 559 _REGISTER_CLOCK("mxc-mmc.0", NULL, sdhc1_clk)
560 _REGISTER_CLOCK("mxc-mmc.1", NULL, sdhc2_clk) 560 _REGISTER_CLOCK("mxc-mmc.1", NULL, sdhc2_clk)
561 _REGISTER_CLOCK("imx-ssi.0", NULL, ssi1_clk) 561 _REGISTER_CLOCK("imx-ssi-dai.0", NULL, ssi1_clk)
562 _REGISTER_CLOCK("imx-ssi.1", NULL, ssi2_clk) 562 _REGISTER_CLOCK("imx-ssi-dai.1", NULL, ssi2_clk)
563 _REGISTER_CLOCK(NULL, "firi", firi_clk) 563 _REGISTER_CLOCK(NULL, "firi", firi_clk)
564 _REGISTER_CLOCK(NULL, "ata", ata_clk) 564 _REGISTER_CLOCK(NULL, "ata", ata_clk)
565 _REGISTER_CLOCK(NULL, "rtic", rtic_clk) 565 _REGISTER_CLOCK(NULL, "rtic", rtic_clk)
diff --git a/arch/arm/mach-mx3/clock-imx35.c b/arch/arm/mach-mx3/clock-imx35.c
index 9f3e943e223..7b5acd5aa7c 100644
--- a/arch/arm/mach-mx3/clock-imx35.c
+++ b/arch/arm/mach-mx3/clock-imx35.c
@@ -464,8 +464,8 @@ static struct clk_lookup lookups[] = {
464 _REGISTER_CLOCK(NULL, "sdma", sdma_clk) 464 _REGISTER_CLOCK(NULL, "sdma", sdma_clk)
465 _REGISTER_CLOCK(NULL, "spba", spba_clk) 465 _REGISTER_CLOCK(NULL, "spba", spba_clk)
466 _REGISTER_CLOCK(NULL, "spdif", spdif_clk) 466 _REGISTER_CLOCK(NULL, "spdif", spdif_clk)
467 _REGISTER_CLOCK("imx-ssi.0", NULL, ssi1_clk) 467 _REGISTER_CLOCK("imx-ssi-dai.0", NULL, ssi1_clk)
468 _REGISTER_CLOCK("imx-ssi.1", NULL, ssi2_clk) 468 _REGISTER_CLOCK("imx-ssi-dai.1", NULL, ssi2_clk)
469 _REGISTER_CLOCK("imx-uart.0", NULL, uart1_clk) 469 _REGISTER_CLOCK("imx-uart.0", NULL, uart1_clk)
470 _REGISTER_CLOCK("imx-uart.1", NULL, uart2_clk) 470 _REGISTER_CLOCK("imx-uart.1", NULL, uart2_clk)
471 _REGISTER_CLOCK("imx-uart.2", NULL, uart3_clk) 471 _REGISTER_CLOCK("imx-uart.2", NULL, uart3_clk)
diff --git a/arch/arm/mach-mx3/devices.c b/arch/arm/mach-mx3/devices.c
index db7acd6e910..27cfc39106a 100644
--- a/arch/arm/mach-mx3/devices.c
+++ b/arch/arm/mach-mx3/devices.c
@@ -562,14 +562,14 @@ static struct resource imx_ssi_resources1[] = {
562}; 562};
563 563
564struct platform_device imx_ssi_device0 = { 564struct platform_device imx_ssi_device0 = {
565 .name = "imx-ssi", 565 .name = "imx-ssi-dai",
566 .id = 0, 566 .id = 0,
567 .num_resources = ARRAY_SIZE(imx_ssi_resources0), 567 .num_resources = ARRAY_SIZE(imx_ssi_resources0),
568 .resource = imx_ssi_resources0, 568 .resource = imx_ssi_resources0,
569}; 569};
570 570
571struct platform_device imx_ssi_device1 = { 571struct platform_device imx_ssi_device1 = {
572 .name = "imx-ssi", 572 .name = "imx-ssi-dai",
573 .id = 1, 573 .id = 1,
574 .num_resources = ARRAY_SIZE(imx_ssi_resources1), 574 .num_resources = ARRAY_SIZE(imx_ssi_resources1),
575 .resource = imx_ssi_resources1, 575 .resource = imx_ssi_resources1,
diff --git a/arch/arm/mach-omap1/devices.c b/arch/arm/mach-omap1/devices.c
index 379100c1763..eb98eb8d373 100644
--- a/arch/arm/mach-omap1/devices.c
+++ b/arch/arm/mach-omap1/devices.c
@@ -25,6 +25,7 @@
25#include <mach/gpio.h> 25#include <mach/gpio.h>
26#include <plat/mmc.h> 26#include <plat/mmc.h>
27#include <plat/omap7xx.h> 27#include <plat/omap7xx.h>
28#include <plat/mcbsp.h>
28 29
29/*-------------------------------------------------------------------------*/ 30/*-------------------------------------------------------------------------*/
30 31
@@ -267,6 +268,30 @@ static inline void omap_init_sti(void)
267static inline void omap_init_sti(void) {} 268static inline void omap_init_sti(void) {}
268#endif 269#endif
269 270
271#if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE)
272
273static struct platform_device omap_pcm = {
274 .name = "omap-pcm-audio",
275 .id = -1,
276};
277
278OMAP_MCBSP_PLATFORM_DEVICE(1);
279OMAP_MCBSP_PLATFORM_DEVICE(2);
280OMAP_MCBSP_PLATFORM_DEVICE(3);
281
282static void omap_init_audio(void)
283{
284 platform_device_register(&omap_mcbsp1);
285 platform_device_register(&omap_mcbsp2);
286 if (!cpu_is_omap7xx())
287 platform_device_register(&omap_mcbsp3);
288 platform_device_register(&omap_pcm);
289}
290
291#else
292static inline void omap_init_audio(void) {}
293#endif
294
270/*-------------------------------------------------------------------------*/ 295/*-------------------------------------------------------------------------*/
271 296
272/* 297/*
@@ -299,6 +324,7 @@ static int __init omap1_init_devices(void)
299 omap_init_rtc(); 324 omap_init_rtc();
300 omap_init_spi100k(); 325 omap_init_spi100k();
301 omap_init_sti(); 326 omap_init_sti();
327 omap_init_audio();
302 328
303 return 0; 329 return 0;
304} 330}
diff --git a/arch/arm/mach-omap2/board-n8x0.c b/arch/arm/mach-omap2/board-n8x0.c
index 3ccc34ebdcc..04df912a7b5 100644
--- a/arch/arm/mach-omap2/board-n8x0.c
+++ b/arch/arm/mach-omap2/board-n8x0.c
@@ -20,6 +20,7 @@
20#include <linux/i2c.h> 20#include <linux/i2c.h>
21#include <linux/spi/spi.h> 21#include <linux/spi/spi.h>
22#include <linux/usb/musb.h> 22#include <linux/usb/musb.h>
23#include <sound/tlv320aic3x.h>
23 24
24#include <asm/mach/arch.h> 25#include <asm/mach/arch.h>
25#include <asm/mach-types.h> 26#include <asm/mach-types.h>
@@ -612,11 +613,25 @@ static int n8x0_menelaus_late_init(struct device *dev)
612 return 0; 613 return 0;
613} 614}
614 615
616static struct aic3x_setup_data n810_aic33_setup = {
617 .gpio_func[0] = AIC3X_GPIO1_FUNC_DISABLED,
618 .gpio_func[1] = AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT,
619};
620
621static struct aic3x_pdata n810_aic33_data = {
622 .setup = &n810_aic33_setup,
623 .gpio_reset = -1,
624};
625
615static struct i2c_board_info __initdata n8x0_i2c_board_info_1[] = { 626static struct i2c_board_info __initdata n8x0_i2c_board_info_1[] = {
616 { 627 {
617 I2C_BOARD_INFO("menelaus", 0x72), 628 I2C_BOARD_INFO("menelaus", 0x72),
618 .irq = INT_24XX_SYS_NIRQ, 629 .irq = INT_24XX_SYS_NIRQ,
619 }, 630 },
631 {
632 I2C_BOARD_INFO("tlv320aic3x", 0x1b),
633 .platform_data = &n810_aic33_data,
634 },
620}; 635};
621 636
622static struct menelaus_platform_data n8x0_menelaus_platform_data = { 637static struct menelaus_platform_data n8x0_menelaus_platform_data = {
diff --git a/arch/arm/mach-omap2/board-rx51-peripherals.c b/arch/arm/mach-omap2/board-rx51-peripherals.c
index abdf321c2d4..28978c08bce 100644
--- a/arch/arm/mach-omap2/board-rx51-peripherals.c
+++ b/arch/arm/mach-omap2/board-rx51-peripherals.c
@@ -23,6 +23,7 @@
23#include <linux/gpio.h> 23#include <linux/gpio.h>
24#include <linux/gpio_keys.h> 24#include <linux/gpio_keys.h>
25#include <linux/mmc/host.h> 25#include <linux/mmc/host.h>
26#include <sound/tlv320aic3x.h>
26 27
27#include <plat/mcspi.h> 28#include <plat/mcspi.h>
28#include <plat/mux.h> 29#include <plat/mux.h>
@@ -686,7 +687,6 @@ static struct twl4030_power_data rx51_t2scripts_data __initdata = {
686}; 687};
687 688
688 689
689
690static struct twl4030_platform_data rx51_twldata __initdata = { 690static struct twl4030_platform_data rx51_twldata __initdata = {
691 .irq_base = TWL4030_IRQ_BASE, 691 .irq_base = TWL4030_IRQ_BASE,
692 .irq_end = TWL4030_IRQ_END, 692 .irq_end = TWL4030_IRQ_END,
@@ -716,9 +716,21 @@ static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_1[] = {
716 }, 716 },
717}; 717};
718 718
719/* Audio setup data */
720static struct aic3x_setup_data rx51_aic34_setup = {
721 .gpio_func[0] = AIC3X_GPIO1_FUNC_DISABLED,
722 .gpio_func[1] = AIC3X_GPIO2_FUNC_DIGITAL_MIC_INPUT,
723};
724
725static struct aic3x_pdata rx51_aic34_data = {
726 .setup = &rx51_aic34_setup,
727 .gpio_reset = 60,
728};
729
719static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_2[] = { 730static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_2[] = {
720 { 731 {
721 I2C_BOARD_INFO("tlv320aic3x", 0x18), 732 I2C_BOARD_INFO("tlv320aic3x", 0x18),
733 .platform_data = &rx51_aic34_data,
722 }, 734 },
723}; 735};
724 736
diff --git a/arch/arm/mach-omap2/board-zoom2.c b/arch/arm/mach-omap2/board-zoom2.c
index 803ef14cbf2..410fe006c0f 100644
--- a/arch/arm/mach-omap2/board-zoom2.c
+++ b/arch/arm/mach-omap2/board-zoom2.c
@@ -14,6 +14,7 @@
14#include <linux/platform_device.h> 14#include <linux/platform_device.h>
15#include <linux/input.h> 15#include <linux/input.h>
16#include <linux/gpio.h> 16#include <linux/gpio.h>
17#include <linux/i2c/twl.h>
17 18
18#include <asm/mach-types.h> 19#include <asm/mach-types.h>
19#include <asm/mach/arch.h> 20#include <asm/mach/arch.h>
@@ -34,8 +35,11 @@ static void __init omap_zoom2_init_irq(void)
34 omap_gpio_init(); 35 omap_gpio_init();
35} 36}
36 37
37/* REVISIT: These audio entries can be removed once MFD code is merged */ 38/* EXTMUTE callback function */
38#if 0 39void zoom2_set_hs_extmute(int mute)
40{
41 gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute);
42}
39 43
40static struct twl4030_madc_platform_data zoom2_madc_data = { 44static struct twl4030_madc_platform_data zoom2_madc_data = {
41 .irq_line = 1, 45 .irq_line = 1,
@@ -43,6 +47,9 @@ static struct twl4030_madc_platform_data zoom2_madc_data = {
43 47
44static struct twl4030_codec_audio_data zoom2_audio_data = { 48static struct twl4030_codec_audio_data zoom2_audio_data = {
45 .audio_mclk = 26000000, 49 .audio_mclk = 26000000,
50 .ramp_delay_value = 3, /* 161 ms */
51 .hs_extmute = 1,
52 .set_hs_extmute = zoom2_set_hs_extmute,
46}; 53};
47 54
48static struct twl4030_codec_data zoom2_codec_data = { 55static struct twl4030_codec_data zoom2_codec_data = {
@@ -64,10 +71,24 @@ static struct twl4030_platform_data zoom2_twldata = {
64 .vmmc1 = &zoom2_vmmc1, 71 .vmmc1 = &zoom2_vmmc1,
65 .vmmc2 = &zoom2_vmmc2, 72 .vmmc2 = &zoom2_vmmc2,
66 .vsim = &zoom2_vsim, 73 .vsim = &zoom2_vsim,
74};
67 75
76static struct i2c_board_info __initdata zoom2_i2c_boardinfo[] = {
77 {
78 I2C_BOARD_INFO("twl4030", 0x48),
79 .flags = I2C_CLIENT_WAKE,
80 .irq = INT_34XX_SYS_NIRQ,
81 .platform_data = &zoom2_twldata,
82 },
68}; 83};
69 84
70#endif 85static int __init omap3_zoom2_i2c_init(void)
86{
87 omap_register_i2c_bus(1, 2600, zoom2_i2c_boardinfo,
88 ARRAY_SIZE(zoom2_i2c_boardinfo));
89 return 0;
90}
91
71 92
72#ifdef CONFIG_OMAP_MUX 93#ifdef CONFIG_OMAP_MUX
73static struct omap_board_mux board_mux[] __initdata = { 94static struct omap_board_mux board_mux[] __initdata = {
@@ -81,6 +102,7 @@ static void __init omap_zoom2_init(void)
81{ 102{
82 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB); 103 omap3_mux_init(board_mux, OMAP_PACKAGE_CBB);
83 zoom_peripherals_init(); 104 zoom_peripherals_init();
105 omap3_zoom2_i2c_init();
84 zoom_debugboard_init(); 106 zoom_debugboard_init();
85} 107}
86 108
diff --git a/arch/arm/mach-omap2/devices.c b/arch/arm/mach-omap2/devices.c
index 03e6c9ed82a..f9a5961d23a 100644
--- a/arch/arm/mach-omap2/devices.c
+++ b/arch/arm/mach-omap2/devices.c
@@ -29,6 +29,7 @@
29#include <mach/gpio.h> 29#include <mach/gpio.h>
30#include <plat/mmc.h> 30#include <plat/mmc.h>
31#include <plat/dma.h> 31#include <plat/dma.h>
32#include <plat/mcbsp.h>
32 33
33#include "mux.h" 34#include "mux.h"
34 35
@@ -289,6 +290,43 @@ static inline void omap_init_sti(void)
289static inline void omap_init_sti(void) {} 290static inline void omap_init_sti(void) {}
290#endif 291#endif
291 292
293#if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE)
294
295static struct platform_device omap_pcm = {
296 .name = "omap-pcm-audio",
297 .id = -1,
298};
299
300/*
301 * OMAP2420 has 2 McBSP ports
302 * OMAP2430 has 5 McBSP ports
303 * OMAP3 has 5 McBSP ports
304 * OMAP4 has 4 McBSP ports
305 */
306OMAP_MCBSP_PLATFORM_DEVICE(1);
307OMAP_MCBSP_PLATFORM_DEVICE(2);
308OMAP_MCBSP_PLATFORM_DEVICE(3);
309OMAP_MCBSP_PLATFORM_DEVICE(4);
310OMAP_MCBSP_PLATFORM_DEVICE(5);
311
312static void omap_init_audio(void)
313{
314 platform_device_register(&omap_mcbsp1);
315 platform_device_register(&omap_mcbsp2);
316 if (cpu_is_omap243x() || cpu_is_omap34xx() || cpu_is_omap44xx()) {
317 platform_device_register(&omap_mcbsp3);
318 platform_device_register(&omap_mcbsp4);
319 }
320 if (cpu_is_omap243x() || cpu_is_omap34xx())
321 platform_device_register(&omap_mcbsp5);
322
323 platform_device_register(&omap_pcm);
324}
325
326#else
327static inline void omap_init_audio(void) {}
328#endif
329
292#if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE) 330#if defined(CONFIG_SPI_OMAP24XX) || defined(CONFIG_SPI_OMAP24XX_MODULE)
293 331
294#include <plat/mcspi.h> 332#include <plat/mcspi.h>
@@ -901,6 +939,7 @@ static int __init omap2_init_devices(void)
901 * in alphabetical order so they're easier to sort through. 939 * in alphabetical order so they're easier to sort through.
902 */ 940 */
903 omap_hsmmc_reset(); 941 omap_hsmmc_reset();
942 omap_init_audio();
904 omap_init_camera(); 943 omap_init_camera();
905 omap_init_mbox(); 944 omap_init_mbox();
906 omap_init_mcspi(); 945 omap_init_mcspi();
diff --git a/arch/arm/mach-omap2/include/mach/board-zoom.h b/arch/arm/mach-omap2/include/mach/board-zoom.h
index c93b29e21b7..b6a010fc8bd 100644
--- a/arch/arm/mach-omap2/include/mach/board-zoom.h
+++ b/arch/arm/mach-omap2/include/mach/board-zoom.h
@@ -3,3 +3,5 @@
3 */ 3 */
4extern int __init zoom_debugboard_init(void); 4extern int __init zoom_debugboard_init(void);
5extern void __init zoom_peripherals_init(void); 5extern void __init zoom_peripherals_init(void);
6
7#define ZOOM2_HEADSET_EXTMUTE_GPIO 153
diff --git a/arch/arm/mach-pxa/devices.c b/arch/arm/mach-pxa/devices.c
index 8e10db148f1..200c31a2730 100644
--- a/arch/arm/mach-pxa/devices.c
+++ b/arch/arm/mach-pxa/devices.c
@@ -340,6 +340,31 @@ struct platform_device pxa_device_i2s = {
340 .num_resources = ARRAY_SIZE(pxai2s_resources), 340 .num_resources = ARRAY_SIZE(pxai2s_resources),
341}; 341};
342 342
343struct platform_device pxa_device_asoc_ssp1 = {
344 .name = "pxa-ssp-dai",
345 .id = 0,
346};
347
348struct platform_device pxa_device_asoc_ssp2= {
349 .name = "pxa-ssp-dai",
350 .id = 1,
351};
352
353struct platform_device pxa_device_asoc_ssp3 = {
354 .name = "pxa-ssp-dai",
355 .id = 2,
356};
357
358struct platform_device pxa_device_asoc_ssp4 = {
359 .name = "pxa-ssp-dai",
360 .id = 3,
361};
362
363struct platform_device pxa_device_asoc_platform = {
364 .name = "pxa-pcm-audio",
365 .id = -1,
366};
367
343static u64 pxaficp_dmamask = ~(u32)0; 368static u64 pxaficp_dmamask = ~(u32)0;
344 369
345struct platform_device pxa_device_ficp = { 370struct platform_device pxa_device_ficp = {
diff --git a/arch/arm/mach-pxa/devices.h b/arch/arm/mach-pxa/devices.h
index 93817d99761..506fd5753cc 100644
--- a/arch/arm/mach-pxa/devices.h
+++ b/arch/arm/mach-pxa/devices.h
@@ -37,4 +37,10 @@ extern struct platform_device pxa3xx_device_i2c_power;
37 37
38extern struct platform_device pxa3xx_device_gcu; 38extern struct platform_device pxa3xx_device_gcu;
39 39
40extern struct platform_device pxa_device_asoc_platform;
41extern struct platform_device pxa_device_asoc_ssp1;
42extern struct platform_device pxa_device_asoc_ssp2;
43extern struct platform_device pxa_device_asoc_ssp3;
44extern struct platform_device pxa_device_asoc_ssp4;
45
40void __init pxa_register_device(struct platform_device *dev, void *data); 46void __init pxa_register_device(struct platform_device *dev, void *data);
diff --git a/arch/arm/mach-pxa/pxa27x.c b/arch/arm/mach-pxa/pxa27x.c
index 0af36177ff0..465008293a2 100644
--- a/arch/arm/mach-pxa/pxa27x.c
+++ b/arch/arm/mach-pxa/pxa27x.c
@@ -384,6 +384,10 @@ void __init pxa27x_set_i2c_power_info(struct i2c_pxa_platform_data *info)
384static struct platform_device *devices[] __initdata = { 384static struct platform_device *devices[] __initdata = {
385 &pxa27x_device_udc, 385 &pxa27x_device_udc,
386 &pxa_device_i2s, 386 &pxa_device_i2s,
387 &pxa_device_asoc_ssp1,
388 &pxa_device_asoc_ssp2,
389 &pxa_device_asoc_ssp3,
390 &pxa_device_asoc_platform,
387 &sa1100_device_rtc, 391 &sa1100_device_rtc,
388 &pxa_device_rtc, 392 &pxa_device_rtc,
389 &pxa27x_device_ssp1, 393 &pxa27x_device_ssp1,
diff --git a/arch/arm/mach-pxa/pxa3xx.c b/arch/arm/mach-pxa/pxa3xx.c
index f544e58e153..f7a3b158ca9 100644
--- a/arch/arm/mach-pxa/pxa3xx.c
+++ b/arch/arm/mach-pxa/pxa3xx.c
@@ -597,6 +597,11 @@ void __init pxa3xx_set_i2c_power_info(struct i2c_pxa_platform_data *info)
597static struct platform_device *devices[] __initdata = { 597static struct platform_device *devices[] __initdata = {
598 &pxa27x_device_udc, 598 &pxa27x_device_udc,
599 &pxa_device_i2s, 599 &pxa_device_i2s,
600 &pxa_device_asoc_ssp1,
601 &pxa_device_asoc_ssp2,
602 &pxa_device_asoc_ssp3,
603 &pxa_device_asoc_ssp4,
604 &pxa_device_asoc_platform,
600 &sa1100_device_rtc, 605 &sa1100_device_rtc,
601 &pxa_device_rtc, 606 &pxa_device_rtc,
602 &pxa27x_device_ssp1, 607 &pxa27x_device_ssp1,
diff --git a/arch/arm/mach-pxa/zylonite.c b/arch/arm/mach-pxa/zylonite.c
index c479cbecf78..5ba9d99a1bf 100644
--- a/arch/arm/mach-pxa/zylonite.c
+++ b/arch/arm/mach-pxa/zylonite.c
@@ -45,6 +45,16 @@ int wm9713_irq;
45int lcd_id; 45int lcd_id;
46int lcd_orientation; 46int lcd_orientation;
47 47
48struct platform_device pxa_device_wm9713_audio = {
49 .name = "wm9713-codec",
50 .id = -1,
51};
52
53static void __init zylonite_init_wm9713_audio(void)
54{
55 platform_device_register(&pxa_device_wm9713_audio);
56}
57
48static struct resource smc91x_resources[] = { 58static struct resource smc91x_resources[] = {
49 [0] = { 59 [0] = {
50 .start = ZYLONITE_ETH_PHYS + 0x300, 60 .start = ZYLONITE_ETH_PHYS + 0x300,
@@ -408,6 +418,7 @@ static void __init zylonite_init(void)
408 zylonite_init_nand(); 418 zylonite_init_nand();
409 zylonite_init_leds(); 419 zylonite_init_leds();
410 zylonite_init_ohci(); 420 zylonite_init_ohci();
421 zylonite_init_wm9713_audio();
411} 422}
412 423
413MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)") 424MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)")
diff --git a/arch/arm/mach-s3c64xx/dev-audio.c b/arch/arm/mach-s3c64xx/dev-audio.c
index c3e9e73bd0f..55ae1b0afae 100644
--- a/arch/arm/mach-s3c64xx/dev-audio.c
+++ b/arch/arm/mach-s3c64xx/dev-audio.c
@@ -333,3 +333,16 @@ void __init s3c64xx_ac97_setup_gpio(int num)
333 else 333 else
334 s3c_ac97_pdata.cfg_gpio = s3c64xx_ac97_cfg_gpe; 334 s3c_ac97_pdata.cfg_gpio = s3c64xx_ac97_cfg_gpe;
335} 335}
336
337static u64 s3c_device_audio_dmamask = 0xffffffffUL;
338
339struct platform_device s3c_device_pcm = {
340 .name = "s3c24xx-pcm-audio",
341 .id = -1,
342 .dev = {
343 .dma_mask = &s3c_device_audio_dmamask,
344 .coherent_dma_mask = 0xffffffffUL
345 }
346};
347EXPORT_SYMBOL(s3c_device_pcm);
348
diff --git a/arch/arm/mach-s3c64xx/mach-smdk6410.c b/arch/arm/mach-s3c64xx/mach-smdk6410.c
index d9a03555f88..362fc76ee72 100644
--- a/arch/arm/mach-s3c64xx/mach-smdk6410.c
+++ b/arch/arm/mach-s3c64xx/mach-smdk6410.c
@@ -256,6 +256,7 @@ static struct platform_device *smdk6410_devices[] __initdata = {
256 &s3c_device_fb, 256 &s3c_device_fb,
257 &s3c_device_ohci, 257 &s3c_device_ohci,
258 &s3c_device_usb_hsotg, 258 &s3c_device_usb_hsotg,
259 &s3c_device_pcm,
259 &s3c64xx_device_iisv4, 260 &s3c64xx_device_iisv4,
260 261
261#ifdef CONFIG_REGULATOR 262#ifdef CONFIG_REGULATOR
diff --git a/arch/arm/plat-mxc/audmux-v2.c b/arch/arm/plat-mxc/audmux-v2.c
index 0c2cc5cd4d8..7c479e4fa99 100644
--- a/arch/arm/plat-mxc/audmux-v2.c
+++ b/arch/arm/plat-mxc/audmux-v2.c
@@ -49,9 +49,9 @@ static const char *audmux_port_string(int port)
49{ 49{
50 switch (port) { 50 switch (port) {
51 case MX31_AUDMUX_PORT1_SSI0: 51 case MX31_AUDMUX_PORT1_SSI0:
52 return "imx-ssi.0"; 52 return "imx-ssi-dai.0";
53 case MX31_AUDMUX_PORT2_SSI1: 53 case MX31_AUDMUX_PORT2_SSI1:
54 return "imx-ssi.1"; 54 return "imx-ssi-dai.1";
55 case MX31_AUDMUX_PORT3_SSI_PINS_3: 55 case MX31_AUDMUX_PORT3_SSI_PINS_3:
56 return "SSI3"; 56 return "SSI3";
57 case MX31_AUDMUX_PORT4_SSI_PINS_4: 57 case MX31_AUDMUX_PORT4_SSI_PINS_4:
diff --git a/arch/arm/plat-omap/include/plat/mcbsp.h b/arch/arm/plat-omap/include/plat/mcbsp.h
index b4ff6a11a8f..5b20103e68e 100644
--- a/arch/arm/plat-omap/include/plat/mcbsp.h
+++ b/arch/arm/plat-omap/include/plat/mcbsp.h
@@ -30,6 +30,13 @@
30#include <mach/hardware.h> 30#include <mach/hardware.h>
31#include <plat/clock.h> 31#include <plat/clock.h>
32 32
33/* macro for building platform_device for McBSP ports */
34#define OMAP_MCBSP_PLATFORM_DEVICE(port_nr) \
35static struct platform_device omap_mcbsp##port_nr = { \
36 .name = "omap-mcbsp-dai", \
37 .id = OMAP_MCBSP##port_nr, \
38}
39
33#define OMAP7XX_MCBSP1_BASE 0xfffb1000 40#define OMAP7XX_MCBSP1_BASE 0xfffb1000
34#define OMAP7XX_MCBSP2_BASE 0xfffb1800 41#define OMAP7XX_MCBSP2_BASE 0xfffb1800
35 42
diff --git a/arch/arm/plat-s3c24xx/devs.c b/arch/arm/plat-s3c24xx/devs.c
index 452e18438b4..9f8ee5e3861 100644
--- a/arch/arm/plat-s3c24xx/devs.c
+++ b/arch/arm/plat-s3c24xx/devs.c
@@ -481,7 +481,7 @@ static struct resource s3c_ac97_resource[] = {
481 }, 481 },
482}; 482};
483 483
484static u64 s3c_device_ac97_dmamask = 0xffffffffUL; 484static u64 s3c_device_audio_dmamask = 0xffffffffUL;
485 485
486struct platform_device s3c_device_ac97 = { 486struct platform_device s3c_device_ac97 = {
487 .name = "s3c-ac97", 487 .name = "s3c-ac97",
@@ -489,11 +489,37 @@ struct platform_device s3c_device_ac97 = {
489 .num_resources = ARRAY_SIZE(s3c_ac97_resource), 489 .num_resources = ARRAY_SIZE(s3c_ac97_resource),
490 .resource = s3c_ac97_resource, 490 .resource = s3c_ac97_resource,
491 .dev = { 491 .dev = {
492 .dma_mask = &s3c_device_ac97_dmamask, 492 .dma_mask = &s3c_device_audio_dmamask,
493 .coherent_dma_mask = 0xffffffffUL 493 .coherent_dma_mask = 0xffffffffUL
494 } 494 }
495}; 495};
496 496
497EXPORT_SYMBOL(s3c_device_ac97); 497EXPORT_SYMBOL(s3c_device_ac97);
498 498
499/* ASoC PCM DMA */
500
501struct platform_device s3c_device_pcm = {
502 .name = "s3c24xx-pcm-audio",
503 .id = -1,
504 .dev = {
505 .dma_mask = &s3c_device_audio_dmamask,
506 .coherent_dma_mask = 0xffffffffUL
507 }
508};
509
510EXPORT_SYMBOL(s3c_device_pcm);
511
512/* ASoC I2S */
513
514struct platform_device s3c2412_device_iis = {
515 .name = "s3c2412-iis",
516 .id = -1,
517 .dev = {
518 .dma_mask = &s3c_device_audio_dmamask,
519 .coherent_dma_mask = 0xffffffffUL
520 }
521};
522
523EXPORT_SYMBOL(s3c2412_device_iis);
524
499#endif // CONFIG_CPU_S32440 525#endif // CONFIG_CPU_S32440
diff --git a/arch/arm/plat-samsung/include/plat/devs.h b/arch/arm/plat-samsung/include/plat/devs.h
index e6144e4b911..9ea6786d459 100644
--- a/arch/arm/plat-samsung/include/plat/devs.h
+++ b/arch/arm/plat-samsung/include/plat/devs.h
@@ -32,6 +32,8 @@ extern struct platform_device s3c64xx_device_iisv4;
32extern struct platform_device s3c64xx_device_spi0; 32extern struct platform_device s3c64xx_device_spi0;
33extern struct platform_device s3c64xx_device_spi1; 33extern struct platform_device s3c64xx_device_spi1;
34 34
35extern struct platform_device s3c_device_pcm;
36
35extern struct platform_device s3c64xx_device_pcm0; 37extern struct platform_device s3c64xx_device_pcm0;
36extern struct platform_device s3c64xx_device_pcm1; 38extern struct platform_device s3c64xx_device_pcm1;
37 39