/* * linux/sound/soc/pxa/palm27x.c * * SoC Audio driver for Palm T|X, T5 and LifeDrive * * based on tosa.c * * Copyright (C) 2008 Marek Vasut * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License version 2 as * published by the Free Software Foundation. * */ #include #include #include #include #include #include #include #include #include #include #include #include "pxa2xx-ac97.h" static struct snd_soc_jack hs_jack; /* Headphones jack detection DAPM pins */ static struct snd_soc_jack_pin hs_jack_pins[] = { { .pin = "Headphone Jack", .mask = SND_JACK_HEADPHONE, }, }; /* Headphones jack detection gpios */ static struct snd_soc_jack_gpio hs_jack_gpios[] = { [0] = { /* gpio is set on per-platform basis */ .name = "hp-gpio", .report = SND_JACK_HEADPHONE, .debounce_time = 200, }, }; /* Palm27x machine dapm widgets */ static const struct snd_soc_dapm_widget palm27x_dapm_widgets[] = { SND_SOC_DAPM_HP("Headphone Jack", NULL), SND_SOC_DAPM_SPK("Ext. Speaker", NULL), SND_SOC_DAPM_MIC("Ext. Microphone", NULL), }; /* PalmTX audio map */ static const struct snd_soc_dapm_route audio_map[] = { /* headphone connected to HPOUTL, HPOUTR */ {"Headphone Jack", NULL, "HPOUTL"}, {"Headphone Jack", NULL, "HPOUTR"}, /* ext speaker connected to ROUT2, LOUT2 */ {"Ext. Speaker", NULL, "LOUT2"}, {"Ext. Speaker", NULL, "ROUT2"}, /* mic connected to MIC1 */ {"MIC1", NULL, "Ext. Microphone"}, }; static struct snd_soc_card palm27x_asoc; static int palm27x_ac97_init(struct snd_soc_pcm_runtime *rtd) { int err; /* Jack detection API stuff */ err = snd_soc_card_jack_new(rtd->card, "Headphone Jack", SND_JACK_HEADPHONE, &hs_jack, hs_jack_pins, ARRAY_SIZE(hs_jack_pins)); if (err) return err; err = snd_soc_jack_add_gpios(&hs_jack, ARRAY_SIZE(hs_jack_gpios), hs_jack_gpios); return err; } static struct snd_soc_dai_link palm27x_dai[] = { { .name = "AC97 HiFi", .stream_name = "AC97 HiFi", .cpu_dai_name = "pxa2xx-ac97", .codec_dai_name = "wm9712-hifi", .codec_name = "wm9712-codec", .platform_name = "pxa-pcm-audio", .init = palm27x_ac97_init, }, { .name = "AC97 Aux", .stream_name = "AC97 Aux", .cpu_dai_name = "pxa2xx-ac97-aux", .codec_dai_name = "wm9712-aux", .codec_name = "wm9712-codec", .platform_name = "pxa-pcm-audio", }, }; static struct snd_soc_card palm27x_asoc = { .name = "Palm/PXA27x", .owner = THIS_MODULE, .dai_link = palm27x_dai, .num_links = ARRAY_SIZE(palm27x_dai), .dapm_widgets = palm27x_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(palm27x_dapm_widgets), .dapm_routes = audio_map, .num_dapm_routes = ARRAY_SIZE(audio_map), .fully_routed = true, }; static int palm27x_asoc_probe(struct platform_device *pdev) { int ret; if (!(machine_is_palmtx() || machine_is_palmt5() || machine_is_palmld() || machine_is_palmte2())) return -ENODEV; if (!pdev->dev.platform_data) { dev_err(&pdev->dev, "please supply platform_data\n"); return -ENODEV; } hs_jack_gpios[0].gpio = ((struct palm27x_asoc_info *) (pdev->dev.platform_data))->jack_gpio; palm27x_asoc.dev = &pdev->dev; ret = devm_snd_soc_register_card(&pdev->dev, &palm27x_asoc); if (ret) dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret); return ret; } static struct platform_driver palm27x_wm9712_driver = { .probe = palm27x_asoc_probe, .driver = { .name = "palm27x-asoc", .pm = &snd_soc_pm_ops, }, }; module_platform_driver(palm27x_wm9712_driver); /* Module information */ MODULE_AUTHOR("Marek Vasut "); MODULE_DESCRIPTION("ALSA SoC Palm T|X, T5 and LifeDrive"); MODULE_LICENSE("GPL"); MODULE_ALIAS("platform:palm27x-asoc"); ='ctrl'>mode:
authorLinus Torvalds <torvalds@linux-foundation.org>2016-12-20 15:48:34 -0800
committerLinus Torvalds <torvalds@linux-foundation.org>2016-12-20 15:48:34 -0800
commitba6d973f78eb62ffebb32f6ef3334fc9a3b33d22 (patch)
tree81b4e19de7308ce46ac7d0f670302906a906f0d0 /include/acpi/acpi_io.h
parent3eb86259eca6a363ed7bb13ecea5cda809f7b97d (diff)
parenta763f78cea845c91b8d91f93dabf70c407635dc5 (diff)
Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net
Pull networking fixes and cleanups from David Miller: 1) Use rb_entry() instead of hardcoded container_of(), from Geliang Tang. 2) Use correct memory barriers in stammac driver, from Pavel Machek. 3) Fix assoc bind address handling in SCTP, from Xin Long. 4) Make the length check for UFO handling consistent between __ip_append_data() and ip_finish_output(), from Zheng Li. 5) HSI driver compatible strings were busted fro hix5hd2, from Dongpo Li. 6) Handle devm_ioremap() errors properly in cavium driver, from Arvind Yadav. * git://git.kernel.org/pub/scm/linux/kernel/git/davem/net: (22 commits) RDS: use rb_entry() net_sched: sch_netem: use rb_entry() net_sched: sch_fq: use rb_entry() net/mlx5: use rb_entry() ethernet: sfc: Add Kconfig entry for vendor Solarflare sctp: not copying duplicate addrs to the assoc's bind address list sctp: reduce indent level in sctp_copy_local_addr_list ARM: dts: hix5hd2: don't change the existing compatible string net: hix5hd2_gmac: fix compatible strings name openvswitch: Add a missing break statement. net: netcp: ethss: fix 10gbe host port tx pri map configuration net: netcp: ethss: fix errors in ethtool ops fsl/fman: enable compilation on ARM64 fsl/fman: A007273 only applies to PPC SoCs powerpc: fsl/fman: remove fsl,fman from of_device_ids[] fsl/fman: fix 1G support for QSGMII interfaces dt: bindings: net: use boolean dt properties for eee broken modes net: phy: use boolean dt properties for eee broken modes net: phy: fix sign type error in genphy_config_eee_advert ipv4: Should use consistent conditional judgement for ip fragment in __ip_append_data and ip_finish_output ...
Diffstat (limited to 'include/acpi/acpi_io.h')