From 9a26e9f843132cb826555159c1b7799f083f83ff Mon Sep 17 00:00:00 2001 From: Gabor Juhos Date: Sun, 27 May 2012 15:01:32 +0000 Subject: xburst: add support for 3.3 SVN-Revision: 31902 --- ...-Convert-qi_lb60-to-use-snd_soc_register_.patch | 121 +++++++++++++++++++++ 1 file changed, 121 insertions(+) create mode 100644 target/linux/xburst/patches-3.3/0018-ASoC-jz4740-Convert-qi_lb60-to-use-snd_soc_register_.patch (limited to 'target/linux/xburst/patches-3.3/0018-ASoC-jz4740-Convert-qi_lb60-to-use-snd_soc_register_.patch') diff --git a/target/linux/xburst/patches-3.3/0018-ASoC-jz4740-Convert-qi_lb60-to-use-snd_soc_register_.patch b/target/linux/xburst/patches-3.3/0018-ASoC-jz4740-Convert-qi_lb60-to-use-snd_soc_register_.patch new file mode 100644 index 0000000000..e7e617510b --- /dev/null +++ b/target/linux/xburst/patches-3.3/0018-ASoC-jz4740-Convert-qi_lb60-to-use-snd_soc_register_.patch @@ -0,0 +1,121 @@ +From 94f2b91d2a42854a8869d54a758bc88757d7f6d9 Mon Sep 17 00:00:00 2001 +From: Axel Lin +Date: Fri, 6 Jan 2012 11:30:10 +0800 +Subject: [PATCH 18/21] ASoC: jz4740: Convert qi_lb60 to use + snd_soc_register_card() + +Use snd_soc_register_card() instead of creating a "soc-audio" platform device. + +Signed-off-by: Axel Lin +--- + arch/mips/jz4740/board-qi_lb60.c | 6 ++++ + sound/soc/jz4740/qi_lb60.c | 56 +++++++++++++++++-------------------- + 2 files changed, 32 insertions(+), 30 deletions(-) + +--- a/arch/mips/jz4740/board-qi_lb60.c ++++ b/arch/mips/jz4740/board-qi_lb60.c +@@ -418,6 +418,11 @@ static struct platform_device qi_lb60_ch + }, + }; + ++/* audio */ ++static struct platform_device qi_lb60_audio_device = { ++ .name = "qi-lb60-audio", ++ .id = -1, ++}; + + static struct platform_device *jz_platform_devices[] __initdata = { + &jz4740_udc_device, +@@ -434,6 +439,7 @@ static struct platform_device *jz_platfo + &qi_lb60_gpio_keys, + &qi_lb60_pwm_beeper, + &qi_lb60_charger_device, ++ &qi_lb60_audio_device, + }; + + static void __init board_gpio_setup(void) +--- a/sound/soc/jz4740/qi_lb60.c ++++ b/sound/soc/jz4740/qi_lb60.c +@@ -91,56 +91,52 @@ static struct snd_soc_card qi_lb60 = { + .num_dapm_routes = ARRAY_SIZE(qi_lb60_routes), + }; + +-static struct platform_device *qi_lb60_snd_device; +- + static const struct gpio qi_lb60_gpios[] = { + { QI_LB60_SND_GPIO, GPIOF_OUT_INIT_LOW, "SND" }, + { QI_LB60_AMP_GPIO, GPIOF_OUT_INIT_LOW, "AMP" }, + }; + +-static int __init qi_lb60_init(void) ++static int __devinit qi_lb60_probe(struct platform_device *pdev) + { ++ struct snd_soc_card *card = &qi_lb60; + int ret; + +- qi_lb60_snd_device = platform_device_alloc("soc-audio", -1); +- +- if (!qi_lb60_snd_device) +- return -ENOMEM; +- + ret = gpio_request_array(qi_lb60_gpios, ARRAY_SIZE(qi_lb60_gpios)); +- if (ret) { +- pr_err("qi_lb60 snd: Failed to request gpios: %d\n", ret); +- goto err_device_put; +- } ++ if (ret) ++ return ret; + +- platform_set_drvdata(qi_lb60_snd_device, &qi_lb60); ++ card->dev = &pdev->dev; + +- ret = platform_device_add(qi_lb60_snd_device); ++ ret = snd_soc_register_card(card); + if (ret) { +- pr_err("qi_lb60 snd: Failed to add snd soc device: %d\n", ret); +- goto err_unset_pdata; ++ dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ++ ret); ++ gpio_free_array(qi_lb60_gpios, ARRAY_SIZE(qi_lb60_gpios)); + } +- +- return 0; +- +-err_unset_pdata: +- platform_set_drvdata(qi_lb60_snd_device, NULL); +-/*err_gpio_free_array:*/ +- gpio_free_array(qi_lb60_gpios, ARRAY_SIZE(qi_lb60_gpios)); +-err_device_put: +- platform_device_put(qi_lb60_snd_device); +- + return ret; + } +-module_init(qi_lb60_init); + +-static void __exit qi_lb60_exit(void) ++static int __devexit qi_lb60_remove(struct platform_device *pdev) + { +- platform_device_unregister(qi_lb60_snd_device); ++ struct snd_soc_card *card = platform_get_drvdata(pdev); ++ ++ snd_soc_unregister_card(card); + gpio_free_array(qi_lb60_gpios, ARRAY_SIZE(qi_lb60_gpios)); ++ return 0; + } +-module_exit(qi_lb60_exit); ++ ++static struct platform_driver qi_lb60_driver = { ++ .driver = { ++ .name = "qi-lb60-audio", ++ .owner = THIS_MODULE, ++ }, ++ .probe = qi_lb60_probe, ++ .remove = __devexit_p(qi_lb60_remove), ++}; ++ ++module_platform_driver(qi_lb60_driver); + + MODULE_AUTHOR("Lars-Peter Clausen "); + MODULE_DESCRIPTION("ALSA SoC QI LB60 Audio support"); + MODULE_LICENSE("GPL v2"); ++MODULE_ALIAS("platform:qi-lb60-audio"); -- cgit v1.2.3