tree: https://git.kernel.org/pub/scm/linux/kernel/git/broonie/sound.git for-5.7 head: e37a0c313a0f8ba0b8de9c30db98fbc77bd8d446 commit: 6ae9ca9ce986bffe71fd0fbf9595de8500891b52 [65/70] ASoC: meson: aiu: add i2s and spdif support If you fix the issue, kindly add following tag Reported-by: kbuild test robot <lkp@xxxxxxxxx> coccinelle warnings: (new ones prefixed by >>) >> sound/soc/meson/aiu.c:186:31-37: ERROR: application of sizeof to pointer -- >> sound/soc/meson/aiu.c:298:2-9: line 298 is redundant because platform_get_irq() already prints an error sound/soc/meson/aiu.c:304:2-9: line 304 is redundant because platform_get_irq() already prints an error -- >> sound/soc/meson/aiu.c:297:5-17: WARNING: Unsigned expression compared with zero: aiu -> i2s . irq < 0 >> sound/soc/meson/aiu.c:303:5-19: WARNING: Unsigned expression compared with zero: aiu -> spdif . irq < 0 vim +186 sound/soc/meson/aiu.c 177 178 static int aiu_clk_bulk_get(struct device *dev, 179 const char * const *ids, 180 unsigned int num, 181 struct aiu_interface *interface) 182 { 183 struct clk_bulk_data *clks; 184 int i, ret; 185 > 186 clks = devm_kcalloc(dev, num, sizeof(clks), GFP_KERNEL); 187 if (!clks) 188 return -ENOMEM; 189 190 for (i = 0; i < num; i++) 191 clks[i].id = ids[i]; 192 193 ret = devm_clk_bulk_get(dev, num, clks); 194 if (ret < 0) 195 return ret; 196 197 interface->clks = clks; 198 interface->clk_num = num; 199 return 0; 200 } 201 202 static const char * const aiu_i2s_ids[] = { 203 [PCLK] = "i2s_pclk", 204 [AOCLK] = "i2s_aoclk", 205 [MCLK] = "i2s_mclk", 206 [MIXER] = "i2s_mixer", 207 }; 208 209 static const char * const aiu_spdif_ids[] = { 210 [PCLK] = "spdif_pclk", 211 [AOCLK] = "spdif_aoclk", 212 [MCLK] = "spdif_mclk_sel" 213 }; 214 215 static int aiu_clk_get(struct device *dev) 216 { 217 struct aiu *aiu = dev_get_drvdata(dev); 218 int ret; 219 220 aiu->pclk = devm_clk_get(dev, "pclk"); 221 if (IS_ERR(aiu->pclk)) { 222 if (PTR_ERR(aiu->pclk) != -EPROBE_DEFER) 223 dev_err(dev, "Can't get the aiu pclk\n"); 224 return PTR_ERR(aiu->pclk); 225 } 226 227 aiu->spdif_mclk = devm_clk_get(dev, "spdif_mclk"); 228 if (IS_ERR(aiu->spdif_mclk)) { 229 if (PTR_ERR(aiu->spdif_mclk) != -EPROBE_DEFER) 230 dev_err(dev, "Can't get the aiu spdif master clock\n"); 231 return PTR_ERR(aiu->spdif_mclk); 232 } 233 234 ret = aiu_clk_bulk_get(dev, aiu_i2s_ids, ARRAY_SIZE(aiu_i2s_ids), 235 &aiu->i2s); 236 if (ret) { 237 if (ret != -EPROBE_DEFER) 238 dev_err(dev, "Can't get the i2s clocks\n"); 239 return ret; 240 } 241 242 ret = aiu_clk_bulk_get(dev, aiu_spdif_ids, ARRAY_SIZE(aiu_spdif_ids), 243 &aiu->spdif); 244 if (ret) { 245 if (ret != -EPROBE_DEFER) 246 dev_err(dev, "Can't get the spdif clocks\n"); 247 return ret; 248 } 249 250 ret = clk_prepare_enable(aiu->pclk); 251 if (ret) { 252 dev_err(dev, "peripheral clock enable failed\n"); 253 return ret; 254 } 255 256 ret = devm_add_action_or_reset(dev, 257 (void(*)(void *))clk_disable_unprepare, 258 aiu->pclk); 259 if (ret) 260 dev_err(dev, "failed to add reset action on pclk"); 261 262 return ret; 263 } 264 265 static int aiu_probe(struct platform_device *pdev) 266 { 267 struct device *dev = &pdev->dev; 268 void __iomem *regs; 269 struct regmap *map; 270 struct aiu *aiu; 271 int ret; 272 273 aiu = devm_kzalloc(dev, sizeof(*aiu), GFP_KERNEL); 274 if (!aiu) 275 return -ENOMEM; 276 platform_set_drvdata(pdev, aiu); 277 278 ret = device_reset(dev); 279 if (ret) { 280 if (ret != -EPROBE_DEFER) 281 dev_err(dev, "Failed to reset device\n"); 282 return ret; 283 } 284 285 regs = devm_platform_ioremap_resource(pdev, 0); 286 if (IS_ERR(regs)) 287 return PTR_ERR(regs); 288 289 map = devm_regmap_init_mmio(dev, regs, &aiu_regmap_cfg); 290 if (IS_ERR(map)) { 291 dev_err(dev, "failed to init regmap: %ld\n", 292 PTR_ERR(map)); 293 return PTR_ERR(map); 294 } 295 296 aiu->i2s.irq = platform_get_irq_byname(pdev, "i2s"); > 297 if (aiu->i2s.irq < 0) { > 298 dev_err(dev, "Can't get i2s irq\n"); 299 return aiu->i2s.irq; 300 } 301 302 aiu->spdif.irq = platform_get_irq_byname(pdev, "spdif"); > 303 if (aiu->spdif.irq < 0) { 304 dev_err(dev, "Can't get spdif irq\n"); 305 return aiu->spdif.irq; 306 } 307 308 ret = aiu_clk_get(dev); 309 if (ret) 310 return ret; 311 312 /* Register the cpu component of the aiu */ 313 ret = snd_soc_register_component(dev, &aiu_cpu_component, 314 aiu_cpu_dai_drv, 315 ARRAY_SIZE(aiu_cpu_dai_drv)); 316 if (ret) 317 dev_err(dev, "Failed to register cpu component\n"); 318 319 return ret; 320 } 321 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@xxxxxxxxxxxx _______________________________________________ Alsa-devel mailing list Alsa-devel@xxxxxxxxxxxxxxxx https://mailman.alsa-project.org/mailman/listinfo/alsa-devel