Hi Sylwester, I love your patch! Yet something to improve: [auto build test ERROR on asoc/for-next] [cannot apply to v5.4-rc1 next-20191001] [if your patch is applied to the wrong git tree, please drop us a note to help improve the system. BTW, we also suggest to use '--base' option to specify the base tree in git format-patch, please see https://stackoverflow.com/a/37406982] url: https://github.com/0day-ci/linux/commits/Sylwester-Nawrocki/ASoC-samsung-arndale-Simplify-DAI-link-initialization/20191002-000244 base: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-next config: mips-allmodconfig (attached as .config) compiler: mips-linux-gcc (GCC) 7.4.0 reproduce: wget https://raw.githubusercontent.com/intel/lkp-tests/master/sbin/make.cross -O ~/bin/make.cross chmod +x ~/bin/make.cross # save the attached .config to linux build tree GCC_VERSION=7.4.0 make.cross ARCH=mips If you fix the issue, kindly add following tag Reported-by: kbuild test robot All error/warnings (new ones prefixed by >>): In file included from sound/soc/samsung/arndale.c:7:0: >> sound/soc/samsung/arndale.c:201:25: error: 'arndale_of_match' undeclared here (not in a function); did you mean 'arndale_audio_of_match'? MODULE_DEVICE_TABLE(of, arndale_of_match); ^ include/linux/module.h:227:15: note: in definition of macro 'MODULE_DEVICE_TABLE' extern typeof(name) __mod_##type##__##name##_device_table \ ^~~~ >> include/linux/module.h:227:21: error: '__mod_of__arndale_of_match_device_table' aliased to undefined symbol 'arndale_of_match' extern typeof(name) __mod_##type##__##name##_device_table \ ^ >> sound/soc/samsung/arndale.c:201:1: note: in expansion of macro 'MODULE_DEVICE_TABLE' MODULE_DEVICE_TABLE(of, arndale_of_match); ^~~~~~~~~~~~~~~~~~~ -- In file included from sound/soc//samsung/arndale.c:7:0: sound/soc//samsung/arndale.c:201:25: error: 'arndale_of_match' undeclared here (not in a function); did you mean 'arndale_audio_of_match'? MODULE_DEVICE_TABLE(of, arndale_of_match); ^ include/linux/module.h:227:15: note: in definition of macro 'MODULE_DEVICE_TABLE' extern typeof(name) __mod_##type##__##name##_device_table \ ^~~~ >> include/linux/module.h:227:21: error: '__mod_of__arndale_of_match_device_table' aliased to undefined symbol 'arndale_of_match' extern typeof(name) __mod_##type##__##name##_device_table \ ^ sound/soc//samsung/arndale.c:201:1: note: in expansion of macro 'MODULE_DEVICE_TABLE' MODULE_DEVICE_TABLE(of, arndale_of_match); ^~~~~~~~~~~~~~~~~~~ vim +201 sound/soc/samsung/arndale.c d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 6 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 @7 #include fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 8 #include d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 9 #include d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 10 #include d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 11 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 12 #include d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 13 #include d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 14 #include d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 15 #include d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 16 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 17 #include "../codecs/wm8994.h" d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 18 #include "i2s.h" d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 19 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 20 static int arndale_rt5631_hw_params(struct snd_pcm_substream *substream, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 21 struct snd_pcm_hw_params *params) d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 22 { d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 23 struct snd_soc_pcm_runtime *rtd = substream->private_data; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 24 struct snd_soc_dai *cpu_dai = rtd->cpu_dai; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 25 struct snd_soc_dai *codec_dai = rtd->codec_dai; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 26 int rfs, ret; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 27 unsigned long rclk; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 28 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 29 rfs = 256; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 30 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 31 rclk = params_rate(params) * rfs; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 32 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 33 ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_CDCLK, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 34 0, SND_SOC_CLOCK_OUT); d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 35 if (ret < 0) d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 36 return ret; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 37 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 38 ret = snd_soc_dai_set_sysclk(cpu_dai, SAMSUNG_I2S_RCLKSRC_0, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 39 0, SND_SOC_CLOCK_OUT); d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 40 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 41 if (ret < 0) d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 42 return ret; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 43 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 44 ret = snd_soc_dai_set_sysclk(codec_dai, 0, rclk, SND_SOC_CLOCK_OUT); d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 45 if (ret < 0) d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 46 return ret; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 47 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 48 return 0; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 49 } d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 50 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 51 static struct snd_soc_ops arndale_rt5631_ops = { 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 52 .hw_params = arndale_rt5631_hw_params, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 53 }; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 54 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 55 static int arndale_wm1811_hw_params(struct snd_pcm_substream *substream, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 56 struct snd_pcm_hw_params *params) 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 57 { 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 58 struct snd_soc_pcm_runtime *rtd = substream->private_data; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 59 struct snd_soc_dai *codec_dai = rtd->codec_dai; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 60 unsigned int rfs, rclk; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 61 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 62 /* Ensure AIF1CLK is >= 3 MHz for optimal performance */ 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 63 if (params_width(params) == 24) 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 64 rfs = 384; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 65 else if (params_rate(params) == 8000 || params_rate(params) == 11025) 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 66 rfs = 512; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 67 else 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 68 rfs = 256; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 69 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 70 rclk = params_rate(params) * rfs; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 71 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 72 /* 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 73 * We add 1 to the frequency value to ensure proper EPLL setting 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 74 * for each audio sampling rate (see epll_24mhz_tbl in drivers/clk/ 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 75 * samsung/clk-exynos5250.c for list of available EPLL rates). 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 76 * The CODEC uses clk API and the value will be rounded hence the MCLK1 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 77 * clock's frequency will still be exact multiple of the sample rate. 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 78 */ 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 79 return snd_soc_dai_set_sysclk(codec_dai, WM8994_SYSCLK_MCLK1, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 80 rclk + 1, SND_SOC_CLOCK_IN); 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 81 } 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 82 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 83 static struct snd_soc_ops arndale_wm1811_ops = { 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 84 .hw_params = arndale_wm1811_hw_params, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 85 }; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 86 930f74a171f5f3 sound/soc/samsung/arndale_rt5631.c Kuninori Morimoto 2019-06-06 87 SND_SOC_DAILINK_DEFS(rt5631_hifi, 930f74a171f5f3 sound/soc/samsung/arndale_rt5631.c Kuninori Morimoto 2019-06-06 88 DAILINK_COMP_ARRAY(COMP_EMPTY()), 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 89 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "rt5631-aif1")), a0e95c4d376d30 sound/soc/samsung/arndale_rt5631.c Kuninori Morimoto 2019-06-28 90 DAILINK_COMP_ARRAY(COMP_EMPTY())); 930f74a171f5f3 sound/soc/samsung/arndale_rt5631.c Kuninori Morimoto 2019-06-06 91 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 92 static struct snd_soc_dai_link arndale_rt5631_dai[] = { d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 93 { d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 94 .name = "RT5631 HiFi", d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 95 .stream_name = "Primary", d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 96 .dai_fmt = SND_SOC_DAIFMT_I2S d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 97 | SND_SOC_DAIFMT_NB_NF d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 98 | SND_SOC_DAIFMT_CBS_CFS, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 99 .ops = &arndale_rt5631_ops, 930f74a171f5f3 sound/soc/samsung/arndale_rt5631.c Kuninori Morimoto 2019-06-06 100 SND_SOC_DAILINK_REG(rt5631_hifi), d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 101 }, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 102 }; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 103 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 104 SND_SOC_DAILINK_DEFS(wm1811_hifi, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 105 DAILINK_COMP_ARRAY(COMP_EMPTY()), 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 106 DAILINK_COMP_ARRAY(COMP_CODEC(NULL, "wm8994-aif1")), 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 107 DAILINK_COMP_ARRAY(COMP_EMPTY())); 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 108 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 109 static struct snd_soc_dai_link arndale_wm1811_dai[] = { 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 110 { 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 111 .name = "WM1811 HiFi", 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 112 .stream_name = "Primary", 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 113 .dai_fmt = SND_SOC_DAIFMT_I2S 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 114 | SND_SOC_DAIFMT_NB_NF 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 115 | SND_SOC_DAIFMT_CBM_CFM, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 116 .ops = &arndale_wm1811_ops, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 117 SND_SOC_DAILINK_REG(wm1811_hifi), 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 118 }, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 119 }; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 120 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 121 static struct snd_soc_card arndale_rt5631 = { d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 122 .name = "Arndale RT5631", 54d8697fa5036d sound/soc/samsung/arndale_rt5631.c Axel Lin 2015-08-21 123 .owner = THIS_MODULE, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 124 .dai_link = arndale_rt5631_dai, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 125 .num_links = ARRAY_SIZE(arndale_rt5631_dai), d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 126 }; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 127 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 128 static struct snd_soc_card arndale_wm1811 = { 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 129 .name = "Arndale WM1811", 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 130 .owner = THIS_MODULE, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 131 .dai_link = arndale_wm1811_dai, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 132 .num_links = ARRAY_SIZE(arndale_wm1811_dai), 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 133 }; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 134 fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 135 static void arndale_put_of_nodes(struct snd_soc_card *card) fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 136 { fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 137 struct snd_soc_dai_link *dai_link; fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 138 int i; fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 139 fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 140 for_each_card_prelinks(card, i, dai_link) { fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 141 of_node_put(dai_link->cpus->of_node); fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 142 of_node_put(dai_link->codecs->of_node); fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 143 } fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 144 } fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 145 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 146 static int arndale_audio_probe(struct platform_device *pdev) d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 147 { d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 148 struct device_node *np = pdev->dev.of_node; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 149 struct snd_soc_card *card; bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 150 struct snd_soc_dai_link *dai_link; bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 151 int ret; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 152 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 153 card = (struct snd_soc_card *)of_device_get_match_data(&pdev->dev); d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 154 card->dev = &pdev->dev; bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 155 dai_link = card->dai_link; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 156 bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 157 dai_link->cpus->of_node = of_parse_phandle(np, "samsung,audio-cpu", 0); bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 158 if (!dai_link->cpus->of_node) { d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 159 dev_err(&pdev->dev, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 160 "Property 'samsung,audio-cpu' missing or invalid\n"); d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 161 return -EINVAL; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 162 } bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 163 bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 164 if (!dai_link->platforms->name) bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 165 dai_link->platforms->of_node = dai_link->cpus->of_node; bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 166 bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 167 dai_link->codecs->of_node = of_parse_phandle(np, "samsung,audio-codec", 0); bd728e26684606 sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 168 if (!dai_link->codecs->of_node) { d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 169 dev_err(&pdev->dev, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 170 "Property 'samsung,audio-codec' missing or invalid\n"); fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 171 ret = -EINVAL; fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 172 goto err_put_of_nodes; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 173 } d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 174 d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 175 ret = devm_snd_soc_register_card(card->dev, card); fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 176 if (ret) { d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 177 dev_err(&pdev->dev, "snd_soc_register_card() failed: %d\n", ret); fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 178 goto err_put_of_nodes; fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 179 } fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 180 return 0; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 181 fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 182 err_put_of_nodes: fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 183 arndale_put_of_nodes(card); d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 184 return ret; d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 185 } d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 186 fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 187 static int arndale_audio_remove(struct platform_device *pdev) fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 188 { fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 189 struct snd_soc_card *card = platform_get_drvdata(pdev); fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 190 fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 191 arndale_put_of_nodes(card); fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 192 return 0; fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 193 } fb629fa2587d0c sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-09-20 194 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 195 static const struct of_device_id arndale_audio_of_match[] = { 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 196 { .compatible = "samsung,arndale-rt5631", .data = &arndale_rt5631 }, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 197 { .compatible = "samsung,arndale-alc5631", .data = &arndale_rt5631 }, 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 198 { .compatible = "samsung,arndale-wm1811", .data = &arndale_wm1811 }, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 199 {}, d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 200 }; 613da35b4aeddb sound/soc/samsung/arndale_rt5631.c Sylwester Nawrocki 2019-10-01 @201 MODULE_DEVICE_TABLE(of, arndale_of_match); d683d0b690c134 sound/soc/samsung/arndale_rt5631.c Krishna Mohan Dani 2014-11-26 202 :::::: The code at line 201 was first introduced by commit :::::: 613da35b4aeddbee0c0a329e6911a7be4c7df854 ASoC: samsung: arndale: Add support for WM1811 CODEC :::::: TO: Sylwester Nawrocki :::::: CC: 0day robot --- 0-DAY kernel test infrastructure Open Source Technology Center https://lists.01.org/pipermail/kbuild-all Intel Corporation