Loading Documentation/devicetree/bindings/sound/ak4554.c 0 → 100644 +11 −0 Original line number Diff line number Diff line AK4554 ADC/DAC Required properties: - compatible : "asahi-kasei,ak4554" Example: ak4554-adc-dac { compatible = "asahi-kasei,ak4554"; }; sound/soc/codecs/Kconfig +3 −0 Original line number Diff line number Diff line Loading @@ -199,6 +199,9 @@ config SND_SOC_AK4104 config SND_SOC_AK4535 tristate config SND_SOC_AK4554 tristate config SND_SOC_AK4641 tristate Loading sound/soc/codecs/Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ snd-soc-adav80x-objs := adav80x.o snd-soc-ads117x-objs := ads117x.o snd-soc-ak4104-objs := ak4104.o snd-soc-ak4535-objs := ak4535.o snd-soc-ak4554-objs := ak4554.o snd-soc-ak4641-objs := ak4641.o snd-soc-ak4642-objs := ak4642.o snd-soc-ak4671-objs := ak4671.o Loading Loading @@ -138,6 +139,7 @@ obj-$(CONFIG_SND_SOC_ADAV80X) += snd-soc-adav80x.o obj-$(CONFIG_SND_SOC_ADS117X) += snd-soc-ads117x.o obj-$(CONFIG_SND_SOC_AK4104) += snd-soc-ak4104.o obj-$(CONFIG_SND_SOC_AK4535) += snd-soc-ak4535.o obj-$(CONFIG_SND_SOC_AK4554) += snd-soc-ak4554.o obj-$(CONFIG_SND_SOC_AK4641) += snd-soc-ak4641.o obj-$(CONFIG_SND_SOC_AK4642) += snd-soc-ak4642.o obj-$(CONFIG_SND_SOC_AK4671) += snd-soc-ak4671.o Loading sound/soc/codecs/ak4554.c 0 → 100644 +106 −0 Original line number Diff line number Diff line /* * ak4554.c * * Copyright (C) 2013 Renesas Solutions Corp. * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> * * 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 <linux/module.h> #include <sound/soc.h> /* * ak4554 is very simple DA/AD converter which has no setting register. * * CAUTION * * ak4554 playback format is SND_SOC_DAIFMT_RIGHT_J, * and, capture format is SND_SOC_DAIFMT_LEFT_J * on same bit clock, LR clock. * But, this driver doesn't have snd_soc_dai_ops :: set_fmt * * CPU/Codec DAI image * * CPU-DAI1 (plaback only fmt = RIGHT_J) --+-- ak4554 * | * CPU-DAI2 (capture only fmt = LEFT_J) ---+ */ static const struct snd_soc_dapm_widget ak4554_dapm_widgets[] = { SND_SOC_DAPM_INPUT("AINL"), SND_SOC_DAPM_INPUT("AINR"), SND_SOC_DAPM_OUTPUT("AOUTL"), SND_SOC_DAPM_OUTPUT("AOUTR"), }; static const struct snd_soc_dapm_route ak4554_dapm_routes[] = { { "Capture", NULL, "AINL" }, { "Capture", NULL, "AINR" }, { "AOUTL", NULL, "Playback" }, { "AOUTR", NULL, "Playback" }, }; static struct snd_soc_dai_driver ak4554_dai = { .name = "ak4554-hifi", .playback = { .stream_name = "Playback", .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_8000_48000, .formats = SNDRV_PCM_FMTBIT_S16_LE, }, .capture = { .stream_name = "Capture", .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_8000_48000, .formats = SNDRV_PCM_FMTBIT_S16_LE, }, .symmetric_rates = 1, }; static struct snd_soc_codec_driver soc_codec_dev_ak4554 = { .dapm_widgets = ak4554_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(ak4554_dapm_widgets), .dapm_routes = ak4554_dapm_routes, .num_dapm_routes = ARRAY_SIZE(ak4554_dapm_routes), }; static int ak4554_soc_probe(struct platform_device *pdev) { return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_ak4554, &ak4554_dai, 1); } static int ak4554_soc_remove(struct platform_device *pdev) { snd_soc_unregister_codec(&pdev->dev); return 0; } static struct of_device_id ak4554_of_match[] = { { .compatible = "asahi-kasei,ak4554" }, {}, }; MODULE_DEVICE_TABLE(of, ak4554_of_match); static struct platform_driver ak4554_driver = { .driver = { .name = "ak4554-adc-dac", .owner = THIS_MODULE, .of_match_table = ak4554_of_match, }, .probe = ak4554_soc_probe, .remove = ak4554_soc_remove, }; module_platform_driver(ak4554_driver); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SoC AK4554 driver"); MODULE_AUTHOR("Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>"); Loading
Documentation/devicetree/bindings/sound/ak4554.c 0 → 100644 +11 −0 Original line number Diff line number Diff line AK4554 ADC/DAC Required properties: - compatible : "asahi-kasei,ak4554" Example: ak4554-adc-dac { compatible = "asahi-kasei,ak4554"; };
sound/soc/codecs/Kconfig +3 −0 Original line number Diff line number Diff line Loading @@ -199,6 +199,9 @@ config SND_SOC_AK4104 config SND_SOC_AK4535 tristate config SND_SOC_AK4554 tristate config SND_SOC_AK4641 tristate Loading
sound/soc/codecs/Makefile +2 −0 Original line number Diff line number Diff line Loading @@ -11,6 +11,7 @@ snd-soc-adav80x-objs := adav80x.o snd-soc-ads117x-objs := ads117x.o snd-soc-ak4104-objs := ak4104.o snd-soc-ak4535-objs := ak4535.o snd-soc-ak4554-objs := ak4554.o snd-soc-ak4641-objs := ak4641.o snd-soc-ak4642-objs := ak4642.o snd-soc-ak4671-objs := ak4671.o Loading Loading @@ -138,6 +139,7 @@ obj-$(CONFIG_SND_SOC_ADAV80X) += snd-soc-adav80x.o obj-$(CONFIG_SND_SOC_ADS117X) += snd-soc-ads117x.o obj-$(CONFIG_SND_SOC_AK4104) += snd-soc-ak4104.o obj-$(CONFIG_SND_SOC_AK4535) += snd-soc-ak4535.o obj-$(CONFIG_SND_SOC_AK4554) += snd-soc-ak4554.o obj-$(CONFIG_SND_SOC_AK4641) += snd-soc-ak4641.o obj-$(CONFIG_SND_SOC_AK4642) += snd-soc-ak4642.o obj-$(CONFIG_SND_SOC_AK4671) += snd-soc-ak4671.o Loading
sound/soc/codecs/ak4554.c 0 → 100644 +106 −0 Original line number Diff line number Diff line /* * ak4554.c * * Copyright (C) 2013 Renesas Solutions Corp. * Kuninori Morimoto <kuninori.morimoto.gx@renesas.com> * * 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 <linux/module.h> #include <sound/soc.h> /* * ak4554 is very simple DA/AD converter which has no setting register. * * CAUTION * * ak4554 playback format is SND_SOC_DAIFMT_RIGHT_J, * and, capture format is SND_SOC_DAIFMT_LEFT_J * on same bit clock, LR clock. * But, this driver doesn't have snd_soc_dai_ops :: set_fmt * * CPU/Codec DAI image * * CPU-DAI1 (plaback only fmt = RIGHT_J) --+-- ak4554 * | * CPU-DAI2 (capture only fmt = LEFT_J) ---+ */ static const struct snd_soc_dapm_widget ak4554_dapm_widgets[] = { SND_SOC_DAPM_INPUT("AINL"), SND_SOC_DAPM_INPUT("AINR"), SND_SOC_DAPM_OUTPUT("AOUTL"), SND_SOC_DAPM_OUTPUT("AOUTR"), }; static const struct snd_soc_dapm_route ak4554_dapm_routes[] = { { "Capture", NULL, "AINL" }, { "Capture", NULL, "AINR" }, { "AOUTL", NULL, "Playback" }, { "AOUTR", NULL, "Playback" }, }; static struct snd_soc_dai_driver ak4554_dai = { .name = "ak4554-hifi", .playback = { .stream_name = "Playback", .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_8000_48000, .formats = SNDRV_PCM_FMTBIT_S16_LE, }, .capture = { .stream_name = "Capture", .channels_min = 2, .channels_max = 2, .rates = SNDRV_PCM_RATE_8000_48000, .formats = SNDRV_PCM_FMTBIT_S16_LE, }, .symmetric_rates = 1, }; static struct snd_soc_codec_driver soc_codec_dev_ak4554 = { .dapm_widgets = ak4554_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(ak4554_dapm_widgets), .dapm_routes = ak4554_dapm_routes, .num_dapm_routes = ARRAY_SIZE(ak4554_dapm_routes), }; static int ak4554_soc_probe(struct platform_device *pdev) { return snd_soc_register_codec(&pdev->dev, &soc_codec_dev_ak4554, &ak4554_dai, 1); } static int ak4554_soc_remove(struct platform_device *pdev) { snd_soc_unregister_codec(&pdev->dev); return 0; } static struct of_device_id ak4554_of_match[] = { { .compatible = "asahi-kasei,ak4554" }, {}, }; MODULE_DEVICE_TABLE(of, ak4554_of_match); static struct platform_driver ak4554_driver = { .driver = { .name = "ak4554-adc-dac", .owner = THIS_MODULE, .of_match_table = ak4554_of_match, }, .probe = ak4554_soc_probe, .remove = ak4554_soc_remove, }; module_platform_driver(ak4554_driver); MODULE_LICENSE("GPL"); MODULE_DESCRIPTION("SoC AK4554 driver"); MODULE_AUTHOR("Kuninori Morimoto <kuninori.morimoto.gx@renesas.com>");