Loading Documentation/devicetree/bindings/sound/simple-card.txt +3 −0 Original line number Original line Diff line number Diff line Loading @@ -140,6 +140,7 @@ sound { simple-audio-card,name = "Cubox Audio"; simple-audio-card,name = "Cubox Audio"; simple-audio-card,dai-link@0 { /* I2S - HDMI */ simple-audio-card,dai-link@0 { /* I2S - HDMI */ reg = <0>; format = "i2s"; format = "i2s"; cpu { cpu { sound-dai = <&audio1 0>; sound-dai = <&audio1 0>; Loading @@ -150,6 +151,7 @@ sound { }; }; simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */ simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */ reg = <1>; cpu { cpu { sound-dai = <&audio1 1>; sound-dai = <&audio1 1>; }; }; Loading @@ -159,6 +161,7 @@ sound { }; }; simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */ simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */ reg = <2>; cpu { cpu { sound-dai = <&audio1 1>; sound-dai = <&audio1 1>; }; }; Loading Documentation/devicetree/bindings/sound/st,stm32-adfsdm.txt 0 → 100644 +63 −0 Original line number Original line Diff line number Diff line STMicroelectronics Audio Digital Filter Sigma Delta modulators(DFSDM) The DFSDM allows PDM microphones capture through SPI interface. The Audio interface is seems as a sub block of the DFSDM device. For details on DFSDM bindings refer to ../iio/adc/st,stm32-dfsdm-adc.txt Required properties: - compatible: "st,stm32h7-dfsdm-dai". - #sound-dai-cells : Must be equal to 0 - io-channels : phandle to iio dfsdm instance node. Example of a sound card using audio DFSDM node. sound_card { compatible = "audio-graph-card"; dais = <&cpu_port>; }; dfsdm: dfsdm@40017000 { compatible = "st,stm32h7-dfsdm"; reg = <0x40017000 0x400>; clocks = <&rcc DFSDM1_CK>; clock-names = "dfsdm"; #interrupt-cells = <1>; #address-cells = <1>; #size-cells = <0>; dfsdm_adc0: filter@0 { compatible = "st,stm32-dfsdm-dmic"; reg = <0>; interrupts = <110>; dmas = <&dmamux1 101 0x400 0x00>; dma-names = "rx"; st,adc-channels = <1>; st,adc-channel-names = "dmic0"; st,adc-channel-types = "SPI_R"; st,adc-channel-clk-src = "CLKOUT"; st,filter-order = <5>; dfsdm_dai0: dfsdm-dai { compatible = "st,stm32h7-dfsdm-dai"; #sound-dai-cells = <0>; io-channels = <&dfsdm_adc0 0>; cpu_port: port { dfsdm_endpoint: endpoint { remote-endpoint = <&dmic0_endpoint>; }; }; }; }; dmic0: dmic@0 { compatible = "dmic-codec"; #sound-dai-cells = <0>; port { dmic0_endpoint: endpoint { remote-endpoint = <&dfsdm_endpoint>; }; }; }; sound/soc/codecs/sgtl5000.c +4 −1 Original line number Original line Diff line number Diff line Loading @@ -1332,10 +1332,13 @@ static int sgtl5000_i2c_probe(struct i2c_client *client, sgtl5000->mclk = devm_clk_get(&client->dev, NULL); sgtl5000->mclk = devm_clk_get(&client->dev, NULL); if (IS_ERR(sgtl5000->mclk)) { if (IS_ERR(sgtl5000->mclk)) { ret = PTR_ERR(sgtl5000->mclk); ret = PTR_ERR(sgtl5000->mclk); dev_err(&client->dev, "Failed to get mclock: %d\n", ret); /* Defer the probe to see if the clk will be provided later */ /* Defer the probe to see if the clk will be provided later */ if (ret == -ENOENT) if (ret == -ENOENT) ret = -EPROBE_DEFER; ret = -EPROBE_DEFER; if (ret != -EPROBE_DEFER) dev_err(&client->dev, "Failed to get mclock: %d\n", ret); goto disable_regs; goto disable_regs; } } Loading sound/soc/codecs/si476x.c +6 −3 Original line number Original line Diff line number Diff line Loading @@ -231,14 +231,17 @@ static struct snd_soc_dai_driver si476x_dai = { .ops = &si476x_dai_ops, .ops = &si476x_dai_ops, }; }; static struct regmap *si476x_get_regmap(struct device *dev) static int si476x_probe(struct snd_soc_component *component) { { return dev_get_regmap(dev->parent, NULL); snd_soc_component_init_regmap(component, dev_get_regmap(component->dev->parent, NULL)); return 0; } } static const struct snd_soc_codec_driver soc_codec_dev_si476x = { static const struct snd_soc_codec_driver soc_codec_dev_si476x = { .get_regmap = si476x_get_regmap, .component_driver = { .component_driver = { .probe = si476x_probe, .dapm_widgets = si476x_dapm_widgets, .dapm_widgets = si476x_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(si476x_dapm_widgets), .num_dapm_widgets = ARRAY_SIZE(si476x_dapm_widgets), .dapm_routes = si476x_dapm_routes, .dapm_routes = si476x_dapm_routes, Loading sound/soc/codecs/spdif_receiver.c +3 −2 Original line number Original line Diff line number Diff line Loading @@ -35,9 +35,10 @@ static const struct snd_soc_dapm_route dir_routes[] = { #define STUB_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ #define STUB_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ SNDRV_PCM_FMTBIT_S20_3LE | \ SNDRV_PCM_FMTBIT_S20_3LE | \ SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S32_LE | \ SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE) SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE) static const struct snd_soc_codec_driver soc_codec_spdif_dir = { static struct snd_soc_codec_driver soc_codec_spdif_dir = { .component_driver = { .component_driver = { .dapm_widgets = dir_widgets, .dapm_widgets = dir_widgets, .num_dapm_widgets = ARRAY_SIZE(dir_widgets), .num_dapm_widgets = ARRAY_SIZE(dir_widgets), Loading Loading
Documentation/devicetree/bindings/sound/simple-card.txt +3 −0 Original line number Original line Diff line number Diff line Loading @@ -140,6 +140,7 @@ sound { simple-audio-card,name = "Cubox Audio"; simple-audio-card,name = "Cubox Audio"; simple-audio-card,dai-link@0 { /* I2S - HDMI */ simple-audio-card,dai-link@0 { /* I2S - HDMI */ reg = <0>; format = "i2s"; format = "i2s"; cpu { cpu { sound-dai = <&audio1 0>; sound-dai = <&audio1 0>; Loading @@ -150,6 +151,7 @@ sound { }; }; simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */ simple-audio-card,dai-link@1 { /* S/PDIF - HDMI */ reg = <1>; cpu { cpu { sound-dai = <&audio1 1>; sound-dai = <&audio1 1>; }; }; Loading @@ -159,6 +161,7 @@ sound { }; }; simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */ simple-audio-card,dai-link@2 { /* S/PDIF - S/PDIF */ reg = <2>; cpu { cpu { sound-dai = <&audio1 1>; sound-dai = <&audio1 1>; }; }; Loading
Documentation/devicetree/bindings/sound/st,stm32-adfsdm.txt 0 → 100644 +63 −0 Original line number Original line Diff line number Diff line STMicroelectronics Audio Digital Filter Sigma Delta modulators(DFSDM) The DFSDM allows PDM microphones capture through SPI interface. The Audio interface is seems as a sub block of the DFSDM device. For details on DFSDM bindings refer to ../iio/adc/st,stm32-dfsdm-adc.txt Required properties: - compatible: "st,stm32h7-dfsdm-dai". - #sound-dai-cells : Must be equal to 0 - io-channels : phandle to iio dfsdm instance node. Example of a sound card using audio DFSDM node. sound_card { compatible = "audio-graph-card"; dais = <&cpu_port>; }; dfsdm: dfsdm@40017000 { compatible = "st,stm32h7-dfsdm"; reg = <0x40017000 0x400>; clocks = <&rcc DFSDM1_CK>; clock-names = "dfsdm"; #interrupt-cells = <1>; #address-cells = <1>; #size-cells = <0>; dfsdm_adc0: filter@0 { compatible = "st,stm32-dfsdm-dmic"; reg = <0>; interrupts = <110>; dmas = <&dmamux1 101 0x400 0x00>; dma-names = "rx"; st,adc-channels = <1>; st,adc-channel-names = "dmic0"; st,adc-channel-types = "SPI_R"; st,adc-channel-clk-src = "CLKOUT"; st,filter-order = <5>; dfsdm_dai0: dfsdm-dai { compatible = "st,stm32h7-dfsdm-dai"; #sound-dai-cells = <0>; io-channels = <&dfsdm_adc0 0>; cpu_port: port { dfsdm_endpoint: endpoint { remote-endpoint = <&dmic0_endpoint>; }; }; }; }; dmic0: dmic@0 { compatible = "dmic-codec"; #sound-dai-cells = <0>; port { dmic0_endpoint: endpoint { remote-endpoint = <&dfsdm_endpoint>; }; }; };
sound/soc/codecs/sgtl5000.c +4 −1 Original line number Original line Diff line number Diff line Loading @@ -1332,10 +1332,13 @@ static int sgtl5000_i2c_probe(struct i2c_client *client, sgtl5000->mclk = devm_clk_get(&client->dev, NULL); sgtl5000->mclk = devm_clk_get(&client->dev, NULL); if (IS_ERR(sgtl5000->mclk)) { if (IS_ERR(sgtl5000->mclk)) { ret = PTR_ERR(sgtl5000->mclk); ret = PTR_ERR(sgtl5000->mclk); dev_err(&client->dev, "Failed to get mclock: %d\n", ret); /* Defer the probe to see if the clk will be provided later */ /* Defer the probe to see if the clk will be provided later */ if (ret == -ENOENT) if (ret == -ENOENT) ret = -EPROBE_DEFER; ret = -EPROBE_DEFER; if (ret != -EPROBE_DEFER) dev_err(&client->dev, "Failed to get mclock: %d\n", ret); goto disable_regs; goto disable_regs; } } Loading
sound/soc/codecs/si476x.c +6 −3 Original line number Original line Diff line number Diff line Loading @@ -231,14 +231,17 @@ static struct snd_soc_dai_driver si476x_dai = { .ops = &si476x_dai_ops, .ops = &si476x_dai_ops, }; }; static struct regmap *si476x_get_regmap(struct device *dev) static int si476x_probe(struct snd_soc_component *component) { { return dev_get_regmap(dev->parent, NULL); snd_soc_component_init_regmap(component, dev_get_regmap(component->dev->parent, NULL)); return 0; } } static const struct snd_soc_codec_driver soc_codec_dev_si476x = { static const struct snd_soc_codec_driver soc_codec_dev_si476x = { .get_regmap = si476x_get_regmap, .component_driver = { .component_driver = { .probe = si476x_probe, .dapm_widgets = si476x_dapm_widgets, .dapm_widgets = si476x_dapm_widgets, .num_dapm_widgets = ARRAY_SIZE(si476x_dapm_widgets), .num_dapm_widgets = ARRAY_SIZE(si476x_dapm_widgets), .dapm_routes = si476x_dapm_routes, .dapm_routes = si476x_dapm_routes, Loading
sound/soc/codecs/spdif_receiver.c +3 −2 Original line number Original line Diff line number Diff line Loading @@ -35,9 +35,10 @@ static const struct snd_soc_dapm_route dir_routes[] = { #define STUB_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ #define STUB_FORMATS (SNDRV_PCM_FMTBIT_S16_LE | \ SNDRV_PCM_FMTBIT_S20_3LE | \ SNDRV_PCM_FMTBIT_S20_3LE | \ SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S24_LE | \ SNDRV_PCM_FMTBIT_S32_LE | \ SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE) SNDRV_PCM_FMTBIT_IEC958_SUBFRAME_LE) static const struct snd_soc_codec_driver soc_codec_spdif_dir = { static struct snd_soc_codec_driver soc_codec_spdif_dir = { .component_driver = { .component_driver = { .dapm_widgets = dir_widgets, .dapm_widgets = dir_widgets, .num_dapm_widgets = ARRAY_SIZE(dir_widgets), .num_dapm_widgets = ARRAY_SIZE(dir_widgets), Loading