From 02553f5ac2b3e7d0405e5a51d87ef0727ad6fb2f Mon Sep 17 00:00:00 2001 From: Peter Ujfalusi Date: Wed, 5 Dec 2012 14:40:30 +0100 Subject: ARM: OMAP2+: twl-common: Add default twl4030 audio configuration Select the most commonly used audio configuration on boards with twl4030 audio: Headset, Handsfree output and Line in input Signed-off-by: Peter Ujfalusi --- arch/arm/mach-omap2/twl-common.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) (limited to 'arch/arm/mach-omap2/twl-common.c') diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index e49b40b4c90a..cd1cba84bcd9 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c @@ -528,7 +528,12 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data, defined(CONFIG_SND_OMAP_SOC_OMAP_TWL4030_MODULE) #include -static struct omap_tw4030_pdata omap_twl4030_audio_data; +/* Commonly used configuration */ +static struct omap_tw4030_pdata omap_twl4030_audio_data = { + .has_hs = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, + .has_hf = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, + .has_linein = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, +}; static struct platform_device audio_device = { .name = "omap-twl4030", -- cgit v1.2.3 From 40234bf733042eb4343cb47c816619758e477eeb Mon Sep 17 00:00:00 2001 From: Peter Ujfalusi Date: Wed, 5 Dec 2012 14:45:23 +0100 Subject: ARM: OMAP2+: twl-common: Allow boards to customize the twl4030 audio setup Boards with special audio routing can pass a custom omap_tw4030_pdata to the audio machine driver. At the same time update the board files using the same audio driver. Signed-off-by: Peter Ujfalusi --- arch/arm/mach-omap2/board-cm-t35.c | 2 +- arch/arm/mach-omap2/board-devkit8000.c | 2 +- arch/arm/mach-omap2/board-igep0020.c | 2 +- arch/arm/mach-omap2/board-omap3beagle.c | 2 +- arch/arm/mach-omap2/board-omap3evm.c | 2 +- arch/arm/mach-omap2/board-overo.c | 2 +- arch/arm/mach-omap2/twl-common.c | 22 +++++++++++----------- arch/arm/mach-omap2/twl-common.h | 3 ++- 8 files changed, 19 insertions(+), 18 deletions(-) (limited to 'arch/arm/mach-omap2/twl-common.c') diff --git a/arch/arm/mach-omap2/board-cm-t35.c b/arch/arm/mach-omap2/board-cm-t35.c index b3102c2f4a3c..eec635e15edd 100644 --- a/arch/arm/mach-omap2/board-cm-t35.c +++ b/arch/arm/mach-omap2/board-cm-t35.c @@ -722,7 +722,7 @@ static void __init cm_t3x_common_init(void) cm_t35_init_ethernet(); cm_t35_init_led(); cm_t35_init_display(); - omap_twl4030_audio_init("cm-t3x"); + omap_twl4030_audio_init("cm-t3x", NULL); usb_musb_init(NULL); cm_t35_init_usbh(); diff --git a/arch/arm/mach-omap2/board-devkit8000.c b/arch/arm/mach-omap2/board-devkit8000.c index 12865af25d3a..f0aa64b1e977 100644 --- a/arch/arm/mach-omap2/board-devkit8000.c +++ b/arch/arm/mach-omap2/board-devkit8000.c @@ -627,7 +627,7 @@ static void __init devkit8000_init(void) board_nand_init(devkit8000_nand_partitions, ARRAY_SIZE(devkit8000_nand_partitions), NAND_CS, NAND_BUSWIDTH_16, NULL); - omap_twl4030_audio_init("omap3beagle"); + omap_twl4030_audio_init("omap3beagle", NULL); /* Ensure SDRC pins are mux'd for self-refresh */ omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); diff --git a/arch/arm/mach-omap2/board-igep0020.c b/arch/arm/mach-omap2/board-igep0020.c index 0f24cb84ba5a..d1a735291596 100644 --- a/arch/arm/mach-omap2/board-igep0020.c +++ b/arch/arm/mach-omap2/board-igep0020.c @@ -629,7 +629,7 @@ static void __init igep_init(void) igep_flash_init(); igep_leds_init(); - omap_twl4030_audio_init("igep2"); + omap_twl4030_audio_init("igep2", NULL); /* * WLAN-BT combo module from MuRata which has a Marvell WLAN diff --git a/arch/arm/mach-omap2/board-omap3beagle.c b/arch/arm/mach-omap2/board-omap3beagle.c index 22c483d5dfa8..909e7fa6d299 100644 --- a/arch/arm/mach-omap2/board-omap3beagle.c +++ b/arch/arm/mach-omap2/board-omap3beagle.c @@ -524,7 +524,7 @@ static void __init omap3_beagle_init(void) board_nand_init(omap3beagle_nand_partitions, ARRAY_SIZE(omap3beagle_nand_partitions), NAND_CS, NAND_BUSWIDTH_16, NULL); - omap_twl4030_audio_init("omap3beagle"); + omap_twl4030_audio_init("omap3beagle", NULL); /* Ensure msecure is mux'd to be able to set the RTC. */ omap_mux_init_signal("sys_drm_msecure", OMAP_PIN_OFF_OUTPUT_HIGH); diff --git a/arch/arm/mach-omap2/board-omap3evm.c b/arch/arm/mach-omap2/board-omap3evm.c index 3985f35aee06..8803b5cff09d 100644 --- a/arch/arm/mach-omap2/board-omap3evm.c +++ b/arch/arm/mach-omap2/board-omap3evm.c @@ -744,7 +744,7 @@ static void __init omap3_evm_init(void) omap3evm_init_smsc911x(); omap3_evm_display_init(); omap3_evm_wl12xx_init(); - omap_twl4030_audio_init("omap3evm"); + omap_twl4030_audio_init("omap3evm", NULL); } MACHINE_START(OMAP3EVM, "OMAP3 EVM") diff --git a/arch/arm/mach-omap2/board-overo.c b/arch/arm/mach-omap2/board-overo.c index c8fde3e56441..fe644ebe7657 100644 --- a/arch/arm/mach-omap2/board-overo.c +++ b/arch/arm/mach-omap2/board-overo.c @@ -506,7 +506,7 @@ static void __init overo_init(void) overo_display_init(); overo_init_led(); overo_init_keys(); - omap_twl4030_audio_init("overo"); + omap_twl4030_audio_init("overo", NULL); /* Ensure SDRC pins are mux'd for self-refresh */ omap_mux_init_signal("sdrc_cke0", OMAP_PIN_OUTPUT); diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index cd1cba84bcd9..931495a25872 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c @@ -529,28 +529,28 @@ void __init omap4_pmic_get_config(struct twl4030_platform_data *pmic_data, #include /* Commonly used configuration */ -static struct omap_tw4030_pdata omap_twl4030_audio_data = { - .has_hs = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, - .has_hf = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, - .has_linein = OMAP_TWL4030_LEFT | OMAP_TWL4030_RIGHT, -}; +static struct omap_tw4030_pdata omap_twl4030_audio_data; static struct platform_device audio_device = { .name = "omap-twl4030", .id = -1, - .dev = { - .platform_data = &omap_twl4030_audio_data, - }, }; -void __init omap_twl4030_audio_init(char *card_name) +void __init omap_twl4030_audio_init(char *card_name, + struct omap_tw4030_pdata *pdata) { - omap_twl4030_audio_data.card_name = card_name; + if (!pdata) + pdata = &omap_twl4030_audio_data; + + pdata->card_name = card_name; + + audio_device.dev.platform_data = pdata; platform_device_register(&audio_device); } #else /* SOC_OMAP_TWL4030 */ -void __init omap_twl4030_audio_init(char *card_name) +void __init omap_twl4030_audio_init(char *card_name, + struct omap_tw4030_pdata *pdata) { return; } diff --git a/arch/arm/mach-omap2/twl-common.h b/arch/arm/mach-omap2/twl-common.h index dcfbad5ac471..24b65d081b69 100644 --- a/arch/arm/mach-omap2/twl-common.h +++ b/arch/arm/mach-omap2/twl-common.h @@ -32,6 +32,7 @@ struct twl4030_platform_data; struct twl6040_platform_data; +struct omap_tw4030_pdata; struct i2c_board_info; void omap_pmic_init(int bus, u32 clkrate, const char *pmic_type, int pmic_irq, @@ -60,6 +61,6 @@ void omap3_pmic_get_config(struct twl4030_platform_data *pmic_data, void omap4_pmic_get_config(struct twl4030_platform_data *pmic_data, u32 pdata_flags, u32 regulators_flags); -void omap_twl4030_audio_init(char *card_name); +void omap_twl4030_audio_init(char *card_name, struct omap_tw4030_pdata *pdata); #endif /* __OMAP_PMIC_COMMON__ */ -- cgit v1.2.3 From 6689c87555839d90f2a0b76d1f982713487a11d2 Mon Sep 17 00:00:00 2001 From: Tony Lindgren Date: Tue, 5 Feb 2013 10:36:21 -0800 Subject: ARM: OMAP2+: Fix twl section warnings related to omap_twl4030_audio_init With the recent twl related changes we can now get: WARNING: arch/arm/mach-omap2/built-in.o(.text+0x15f88): Section mismatch in reference from the function sdp3430_twl_gpio_setup() to the function .init.text:omap_twl4030_audio_init() The function sdp3430_twl_gpio_setup() references the function __init omap_twl4030_audio_init(). This is often because sdp3430_twl_gpio_setup lacks a __init annotation or the annotation of omap_twl4030_audio_init is wrong. WARNING: arch/arm/mach-omap2/built-in.o(.text+0x16968): Section mismatch in reference from the function zoom_twl_gpio_setup() to the function .init.text:omap_twl4030_audio_init() The function zoom_twl_gpio_setup() references the function __init omap_twl4030_audio_init(). This is often because zoom_twl_gpio_setup lacks a __init annotation or the annotation of omap_twl4030_audio_init is wrong. Fix this by removing __init from omap_twl4030_audio_init() as suggested by Peter Ujfalusi . Signed-off-by: Tony Lindgren --- arch/arm/mach-omap2/twl-common.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) (limited to 'arch/arm/mach-omap2/twl-common.c') diff --git a/arch/arm/mach-omap2/twl-common.c b/arch/arm/mach-omap2/twl-common.c index 931495a25872..62cf40b86e4a 100644 --- a/arch/arm/mach-omap2/twl-common.c +++ b/arch/arm/mach-omap2/twl-common.c @@ -536,7 +536,7 @@ static struct platform_device audio_device = { .id = -1, }; -void __init omap_twl4030_audio_init(char *card_name, +void omap_twl4030_audio_init(char *card_name, struct omap_tw4030_pdata *pdata) { if (!pdata) @@ -549,7 +549,7 @@ void __init omap_twl4030_audio_init(char *card_name, } #else /* SOC_OMAP_TWL4030 */ -void __init omap_twl4030_audio_init(char *card_name, +void omap_twl4030_audio_init(char *card_name, struct omap_tw4030_pdata *pdata) { return; -- cgit v1.2.3