diff options
Diffstat (limited to 'arch/arm')
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 | ||
298 | struct platform_device davinci_pcm_device = { | ||
299 | .name = "davinci-pcm-audio", | ||
300 | .id = -1, | ||
301 | }; | ||
302 | |||
303 | static void davinci_init_pcm(void) | ||
304 | { | ||
305 | platform_device_register(&davinci_pcm_device); | ||
306 | } | ||
307 | |||
308 | /*-------------------------------------------------------------------------*/ | ||
309 | |||
298 | struct davinci_timer_instance davinci_timer_instance[2] = { | 310 | struct 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 | ||
735 | static struct platform_device ep93xx_pcm_device = { | ||
736 | .name = "ep93xx-pcm-audio", | ||
737 | .id = -1, | ||
738 | }; | ||
739 | |||
735 | void __init ep93xx_register_i2s(void) | 740 | void __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 | ||
899 | static struct platform_device kirkwood_pcm_device = { | ||
900 | .name = "kirkwood-pcm", | ||
901 | .id = -1, | ||
902 | }; | ||
903 | |||
899 | void __init kirkwood_audio_init(void) | 904 | void __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 | ||
564 | struct platform_device imx_ssi_device0 = { | 564 | struct 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 | ||
571 | struct platform_device imx_ssi_device1 = { | 571 | struct 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) | |||
267 | static inline void omap_init_sti(void) {} | 268 | static inline void omap_init_sti(void) {} |
268 | #endif | 269 | #endif |
269 | 270 | ||
271 | #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) | ||
272 | |||
273 | static struct platform_device omap_pcm = { | ||
274 | .name = "omap-pcm-audio", | ||
275 | .id = -1, | ||
276 | }; | ||
277 | |||
278 | OMAP_MCBSP_PLATFORM_DEVICE(1); | ||
279 | OMAP_MCBSP_PLATFORM_DEVICE(2); | ||
280 | OMAP_MCBSP_PLATFORM_DEVICE(3); | ||
281 | |||
282 | static 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 | ||
292 | static 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 | ||
616 | static 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 | |||
621 | static struct aic3x_pdata n810_aic33_data = { | ||
622 | .setup = &n810_aic33_setup, | ||
623 | .gpio_reset = -1, | ||
624 | }; | ||
625 | |||
615 | static struct i2c_board_info __initdata n8x0_i2c_board_info_1[] = { | 626 | static 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 | ||
622 | static struct menelaus_platform_data n8x0_menelaus_platform_data = { | 637 | static 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 | |||
690 | static struct twl4030_platform_data rx51_twldata __initdata = { | 690 | static 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 */ | ||
720 | static 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 | |||
725 | static struct aic3x_pdata rx51_aic34_data = { | ||
726 | .setup = &rx51_aic34_setup, | ||
727 | .gpio_reset = 60, | ||
728 | }; | ||
729 | |||
719 | static struct i2c_board_info __initdata rx51_peripherals_i2c_board_info_2[] = { | 730 | static 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 | 39 | void zoom2_set_hs_extmute(int mute) |
40 | { | ||
41 | gpio_set_value(ZOOM2_HEADSET_EXTMUTE_GPIO, mute); | ||
42 | } | ||
39 | 43 | ||
40 | static struct twl4030_madc_platform_data zoom2_madc_data = { | 44 | static 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 | ||
44 | static struct twl4030_codec_audio_data zoom2_audio_data = { | 48 | static 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 | ||
48 | static struct twl4030_codec_data zoom2_codec_data = { | 55 | static 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 | ||
76 | static 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 | 85 | static 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 |
73 | static struct omap_board_mux board_mux[] __initdata = { | 94 | static 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) | |||
289 | static inline void omap_init_sti(void) {} | 290 | static inline void omap_init_sti(void) {} |
290 | #endif | 291 | #endif |
291 | 292 | ||
293 | #if defined(CONFIG_SND_SOC) || defined(CONFIG_SND_SOC_MODULE) | ||
294 | |||
295 | static 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 | */ | ||
306 | OMAP_MCBSP_PLATFORM_DEVICE(1); | ||
307 | OMAP_MCBSP_PLATFORM_DEVICE(2); | ||
308 | OMAP_MCBSP_PLATFORM_DEVICE(3); | ||
309 | OMAP_MCBSP_PLATFORM_DEVICE(4); | ||
310 | OMAP_MCBSP_PLATFORM_DEVICE(5); | ||
311 | |||
312 | static 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 | ||
327 | static 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 | */ |
4 | extern int __init zoom_debugboard_init(void); | 4 | extern int __init zoom_debugboard_init(void); |
5 | extern void __init zoom_peripherals_init(void); | 5 | extern 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 | ||
343 | struct platform_device pxa_device_asoc_ssp1 = { | ||
344 | .name = "pxa-ssp-dai", | ||
345 | .id = 0, | ||
346 | }; | ||
347 | |||
348 | struct platform_device pxa_device_asoc_ssp2= { | ||
349 | .name = "pxa-ssp-dai", | ||
350 | .id = 1, | ||
351 | }; | ||
352 | |||
353 | struct platform_device pxa_device_asoc_ssp3 = { | ||
354 | .name = "pxa-ssp-dai", | ||
355 | .id = 2, | ||
356 | }; | ||
357 | |||
358 | struct platform_device pxa_device_asoc_ssp4 = { | ||
359 | .name = "pxa-ssp-dai", | ||
360 | .id = 3, | ||
361 | }; | ||
362 | |||
363 | struct platform_device pxa_device_asoc_platform = { | ||
364 | .name = "pxa-pcm-audio", | ||
365 | .id = -1, | ||
366 | }; | ||
367 | |||
343 | static u64 pxaficp_dmamask = ~(u32)0; | 368 | static u64 pxaficp_dmamask = ~(u32)0; |
344 | 369 | ||
345 | struct platform_device pxa_device_ficp = { | 370 | struct 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 | ||
38 | extern struct platform_device pxa3xx_device_gcu; | 38 | extern struct platform_device pxa3xx_device_gcu; |
39 | 39 | ||
40 | extern struct platform_device pxa_device_asoc_platform; | ||
41 | extern struct platform_device pxa_device_asoc_ssp1; | ||
42 | extern struct platform_device pxa_device_asoc_ssp2; | ||
43 | extern struct platform_device pxa_device_asoc_ssp3; | ||
44 | extern struct platform_device pxa_device_asoc_ssp4; | ||
45 | |||
40 | void __init pxa_register_device(struct platform_device *dev, void *data); | 46 | void __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) | |||
384 | static struct platform_device *devices[] __initdata = { | 384 | static 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) | |||
597 | static struct platform_device *devices[] __initdata = { | 597 | static 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; | |||
45 | int lcd_id; | 45 | int lcd_id; |
46 | int lcd_orientation; | 46 | int lcd_orientation; |
47 | 47 | ||
48 | struct platform_device pxa_device_wm9713_audio = { | ||
49 | .name = "wm9713-codec", | ||
50 | .id = -1, | ||
51 | }; | ||
52 | |||
53 | static void __init zylonite_init_wm9713_audio(void) | ||
54 | { | ||
55 | platform_device_register(&pxa_device_wm9713_audio); | ||
56 | } | ||
57 | |||
48 | static struct resource smc91x_resources[] = { | 58 | static 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 | ||
413 | MACHINE_START(ZYLONITE, "PXA3xx Platform Development Kit (aka Zylonite)") | 424 | MACHINE_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 | |||
337 | static u64 s3c_device_audio_dmamask = 0xffffffffUL; | ||
338 | |||
339 | struct 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 | }; | ||
347 | EXPORT_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) \ | ||
35 | static 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 | ||
484 | static u64 s3c_device_ac97_dmamask = 0xffffffffUL; | 484 | static u64 s3c_device_audio_dmamask = 0xffffffffUL; |
485 | 485 | ||
486 | struct platform_device s3c_device_ac97 = { | 486 | struct 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 | ||
497 | EXPORT_SYMBOL(s3c_device_ac97); | 497 | EXPORT_SYMBOL(s3c_device_ac97); |
498 | 498 | ||
499 | /* ASoC PCM DMA */ | ||
500 | |||
501 | struct 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 | |||
510 | EXPORT_SYMBOL(s3c_device_pcm); | ||
511 | |||
512 | /* ASoC I2S */ | ||
513 | |||
514 | struct 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 | |||
523 | EXPORT_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; | |||
32 | extern struct platform_device s3c64xx_device_spi0; | 32 | extern struct platform_device s3c64xx_device_spi0; |
33 | extern struct platform_device s3c64xx_device_spi1; | 33 | extern struct platform_device s3c64xx_device_spi1; |
34 | 34 | ||
35 | extern struct platform_device s3c_device_pcm; | ||
36 | |||
35 | extern struct platform_device s3c64xx_device_pcm0; | 37 | extern struct platform_device s3c64xx_device_pcm0; |
36 | extern struct platform_device s3c64xx_device_pcm1; | 38 | extern struct platform_device s3c64xx_device_pcm1; |
37 | 39 | ||