imx-sgtl5000.c (de4fb176622d54a82ea3ceb7362392aaf5ff0b5a) | imx-sgtl5000.c (41cd312dfe980af869c3503b4d38e62ed20dd3b7) |
---|---|
1// SPDX-License-Identifier: GPL-2.0+ 2// 3// Copyright 2012 Freescale Semiconductor, Inc. 4// Copyright 2012 Linaro Ltd. 5 6#include <linux/module.h> 7#include <linux/of.h> 8#include <linux/of_platform.h> --- 106 unchanged lines hidden (view full) --- 115 dev_dbg(&pdev->dev, "failed to find codec platform device\n"); 116 ret = -EPROBE_DEFER; 117 goto fail; 118 } 119 120 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); 121 if (!data) { 122 ret = -ENOMEM; | 1// SPDX-License-Identifier: GPL-2.0+ 2// 3// Copyright 2012 Freescale Semiconductor, Inc. 4// Copyright 2012 Linaro Ltd. 5 6#include <linux/module.h> 7#include <linux/of.h> 8#include <linux/of_platform.h> --- 106 unchanged lines hidden (view full) --- 115 dev_dbg(&pdev->dev, "failed to find codec platform device\n"); 116 ret = -EPROBE_DEFER; 117 goto fail; 118 } 119 120 data = devm_kzalloc(&pdev->dev, sizeof(*data), GFP_KERNEL); 121 if (!data) { 122 ret = -ENOMEM; |
123 goto fail; | 123 goto put_device; |
124 } 125 126 comp = devm_kzalloc(&pdev->dev, 3 * sizeof(*comp), GFP_KERNEL); 127 if (!comp) { 128 ret = -ENOMEM; | 124 } 125 126 comp = devm_kzalloc(&pdev->dev, 3 * sizeof(*comp), GFP_KERNEL); 127 if (!comp) { 128 ret = -ENOMEM; |
129 goto fail; | 129 goto put_device; |
130 } 131 132 data->codec_clk = clk_get(&codec_dev->dev, NULL); 133 if (IS_ERR(data->codec_clk)) { 134 ret = PTR_ERR(data->codec_clk); | 130 } 131 132 data->codec_clk = clk_get(&codec_dev->dev, NULL); 133 if (IS_ERR(data->codec_clk)) { 134 ret = PTR_ERR(data->codec_clk); |
135 goto fail; | 135 goto put_device; |
136 } 137 138 data->clk_frequency = clk_get_rate(data->codec_clk); 139 140 data->dai.cpus = &comp[0]; 141 data->dai.codecs = &comp[1]; 142 data->dai.platforms = &comp[2]; 143 --- 9 unchanged lines hidden (view full) --- 153 data->dai.platforms->of_node = ssi_np; 154 data->dai.init = &imx_sgtl5000_dai_init; 155 data->dai.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | 156 SND_SOC_DAIFMT_CBP_CFP; 157 158 data->card.dev = &pdev->dev; 159 ret = snd_soc_of_parse_card_name(&data->card, "model"); 160 if (ret) | 136 } 137 138 data->clk_frequency = clk_get_rate(data->codec_clk); 139 140 data->dai.cpus = &comp[0]; 141 data->dai.codecs = &comp[1]; 142 data->dai.platforms = &comp[2]; 143 --- 9 unchanged lines hidden (view full) --- 153 data->dai.platforms->of_node = ssi_np; 154 data->dai.init = &imx_sgtl5000_dai_init; 155 data->dai.dai_fmt = SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF | 156 SND_SOC_DAIFMT_CBP_CFP; 157 158 data->card.dev = &pdev->dev; 159 ret = snd_soc_of_parse_card_name(&data->card, "model"); 160 if (ret) |
161 goto fail; | 161 goto put_device; |
162 ret = snd_soc_of_parse_audio_routing(&data->card, "audio-routing"); 163 if (ret) | 162 ret = snd_soc_of_parse_audio_routing(&data->card, "audio-routing"); 163 if (ret) |
164 goto fail; | 164 goto put_device; |
165 data->card.num_links = 1; 166 data->card.owner = THIS_MODULE; 167 data->card.dai_link = &data->dai; 168 data->card.dapm_widgets = imx_sgtl5000_dapm_widgets; 169 data->card.num_dapm_widgets = ARRAY_SIZE(imx_sgtl5000_dapm_widgets); 170 171 platform_set_drvdata(pdev, &data->card); 172 snd_soc_card_set_drvdata(&data->card, data); 173 174 ret = devm_snd_soc_register_card(&pdev->dev, &data->card); 175 if (ret) { 176 dev_err_probe(&pdev->dev, ret, "snd_soc_register_card failed\n"); | 165 data->card.num_links = 1; 166 data->card.owner = THIS_MODULE; 167 data->card.dai_link = &data->dai; 168 data->card.dapm_widgets = imx_sgtl5000_dapm_widgets; 169 data->card.num_dapm_widgets = ARRAY_SIZE(imx_sgtl5000_dapm_widgets); 170 171 platform_set_drvdata(pdev, &data->card); 172 snd_soc_card_set_drvdata(&data->card, data); 173 174 ret = devm_snd_soc_register_card(&pdev->dev, &data->card); 175 if (ret) { 176 dev_err_probe(&pdev->dev, ret, "snd_soc_register_card failed\n"); |
177 goto fail; | 177 goto put_device; |
178 } 179 180 of_node_put(ssi_np); 181 of_node_put(codec_np); 182 183 return 0; 184 | 178 } 179 180 of_node_put(ssi_np); 181 of_node_put(codec_np); 182 183 return 0; 184 |
185put_device: 186 put_device(&codec_dev->dev); |
|
185fail: 186 if (data && !IS_ERR(data->codec_clk)) 187 clk_put(data->codec_clk); 188 of_node_put(ssi_np); 189 of_node_put(codec_np); 190 191 return ret; 192} --- 32 unchanged lines hidden --- | 187fail: 188 if (data && !IS_ERR(data->codec_clk)) 189 clk_put(data->codec_clk); 190 of_node_put(ssi_np); 191 of_node_put(codec_np); 192 193 return ret; 194} --- 32 unchanged lines hidden --- |