From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from bombadil.infradead.org (bombadil.infradead.org [198.137.202.133]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id B332BC433F5 for ; Tue, 8 Feb 2022 20:49:06 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=lists.infradead.org; s=bombadil.20210309; h=Sender: Content-Transfer-Encoding:Content-Type:List-Subscribe:List-Help:List-Post: List-Archive:List-Unsubscribe:List-Id:MIME-Version:Message-ID:Subject:cc:To: From:Date:Reply-To:Content-ID:Content-Description:Resent-Date:Resent-From: Resent-Sender:Resent-To:Resent-Cc:Resent-Message-ID:In-Reply-To:References: List-Owner; bh=tGjexNW+dKjdFcbnVJh/VACNGpaZtrCviwsHRBGHsQI=; b=zqQ7Xxf5L4NWJJ GyZ/ENd+Y/zkhoEccLGC0BdkOWtjqnDClXIFIOM7UCy3gSaXYjXjpS8nlsZbW3DwQGP6NlhSmQD7r XHSF7YBc1JRTu9igI78ENlg5V5UjuUiMstDPYYtTz3h2Q70Q0LGTZ+tH4km8xQkNR/KvuCq1KicH9 lI/XyXRCY76JvVXyEfb5NDs2FKDJse9ZrWKxSf1cnswo6+DtKCoy85Q7Dw0m4fPe0F9Ac55ljctas o9Q2nXPphvQqQdoo8T+842lO28yZejk/DH78JtQS/zwMBZrvdhjubl+HVELp9t93p6BlWbDqo3FcF 2xWpPE5Zswb1/44DFJaA==; Received: from localhost ([::1] helo=bombadil.infradead.org) by bombadil.infradead.org with esmtp (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHXOr-00FWz1-20; Tue, 08 Feb 2022 20:47:45 +0000 Received: from mail2-relais-roc.national.inria.fr ([192.134.164.83]) by bombadil.infradead.org with esmtps (Exim 4.94.2 #2 (Red Hat Linux)) id 1nHXOl-00FWxJ-Jk for linux-arm-kernel@lists.infradead.org; Tue, 08 Feb 2022 20:47:42 +0000 X-IronPort-AV: E=Sophos;i="5.88,353,1635199200"; d="scan'208";a="20362921" Received: from 173.121.68.85.rev.sfr.net (HELO hadrien) ([85.68.121.173]) by mail2-relais-roc.national.inria.fr with ESMTP/TLS/ECDHE-RSA-AES256-GCM-SHA384; 08 Feb 2022 21:47:38 +0100 Date: Tue, 8 Feb 2022 21:47:37 +0100 (CET) From: Julia Lawall X-X-Sender: jll@hadrien To: Maruthi Srinivas Bayyavarapu , Michal Simek , Hyun Kwon , linux-arm-kernel@lists.infradead.org cc: kbuild-all@lists.01.org Subject: [xilinx-xlnx:xlnx_rebase_v5.15 561/872] sound/soc/xilinx/xlnx_pl_snd_card.c:391:3-9: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. (fwd) Message-ID: User-Agent: Alpine 2.22 (DEB 394 2020-01-19) MIME-Version: 1.0 X-CRM114-Version: 20100106-BlameMichelson ( TRE 0.8.0 (BSD) ) MR-646709E3 X-CRM114-CacheID: sfid-20220208_124740_102122_CF5D448C X-CRM114-Status: GOOD ( 11.04 ) X-BeenThere: linux-arm-kernel@lists.infradead.org X-Mailman-Version: 2.1.34 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Sender: "linux-arm-kernel" Errors-To: linux-arm-kernel-bounces+linux-arm-kernel=archiver.kernel.org@lists.infradead.org Hello, I think that the rule output is not really correct, but there are some problems: * line 390: pnode is NULL, os the of_node_put is not needed. * line 407: There should be an of_node_put before this return, like there is before the previous one. julia ---------- Forwarded message ---------- Date: Wed, 9 Feb 2022 00:10:21 +0800 From: kernel test robot To: kbuild@lists.01.org Cc: lkp@intel.com, Julia Lawall Subject: [xilinx-xlnx:xlnx_rebase_v5.15 561/872] sound/soc/xilinx/xlnx_pl_snd_card.c:391:3-9: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. CC: kbuild-all@lists.01.org CC: linux-arm-kernel@lists.infradead.org TO: Maruthi Srinivas Bayyavarapu CC: Michal Simek CC: Hyun Kwon tree: https://github.com/Xilinx/linux-xlnx xlnx_rebase_v5.15 head: 1183ce490adb103e5e569b8ebd74c50c885ddc05 commit: c078611ad13fd9b920a3aa5a206a014322742227 [561/872] ASoC: xlnx: add PL sound card support :::::: branch date: 7 days ago :::::: commit date: 7 days ago config: ia64-randconfig-c023-20220208 (https://download.01.org/0day-ci/archive/20220208/202202082343.teK89qWC-lkp@intel.com/config) compiler: ia64-linux-gcc (GCC) 11.2.0 If you fix the issue, kindly add following tag as appropriate Reported-by: kernel test robot Reported-by: Julia Lawall cocci warnings: (new ones prefixed by >>) >> sound/soc/xilinx/xlnx_pl_snd_card.c:391:3-9: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. sound/soc/xilinx/xlnx_pl_snd_card.c:407:4-10: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. sound/soc/xilinx/xlnx_pl_snd_card.c:475:3-9: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. sound/soc/xilinx/xlnx_pl_snd_card.c:489:3-9: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. sound/soc/xilinx/xlnx_pl_snd_card.c:495:3-9: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. sound/soc/xilinx/xlnx_pl_snd_card.c:507:3-9: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. sound/soc/xilinx/xlnx_pl_snd_card.c:514:1-7: ERROR: missing put_device; call of_find_device_by_node on line 399, but without a corresponding object release within this function. vim +391 sound/soc/xilinx/xlnx_pl_snd_card.c c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 337 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 338 static int xlnx_snd_probe(struct platform_device *pdev) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 339 { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 340 u32 i, max_links = 0, start_count = 0; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 341 size_t sz; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 342 char *buf; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 343 int ret, audio_interface; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 344 struct snd_soc_dai_link *dai; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 345 struct pl_card_data *prv; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 346 struct platform_device *iface_pdev; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 347 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 348 struct snd_soc_card *card; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 349 struct device_node **node = pdev->dev.platform_data; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 350 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 351 if (!node) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 352 return -ENODEV; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 353 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 354 if (node[XLNX_PLAYBACK] && node[XLNX_CAPTURE]) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 355 max_links = 2; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 356 start_count = XLNX_PLAYBACK; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 357 } else if (node[XLNX_PLAYBACK]) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 358 max_links = 1; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 359 start_count = XLNX_PLAYBACK; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 360 } else if (node[XLNX_CAPTURE]) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 361 max_links = 1; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 362 start_count = XLNX_CAPTURE; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 363 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 364 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 365 card = devm_kzalloc(&pdev->dev, sizeof(struct snd_soc_card), c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 366 GFP_KERNEL); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 367 if (!card) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 368 return -ENOMEM; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 369 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 370 card->dev = &pdev->dev; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 371 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 372 card->dai_link = devm_kzalloc(card->dev, c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 373 sizeof(*dai) * max_links, c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 374 GFP_KERNEL); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 375 if (!card->dai_link) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 376 return -ENOMEM; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 377 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 378 prv = devm_kzalloc(card->dev, c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 379 sizeof(struct pl_card_data), c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 380 GFP_KERNEL); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 381 if (!prv) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 382 return -ENOMEM; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 383 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 384 card->num_links = 0; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 385 for (i = start_count; i < (start_count + max_links); i++) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 386 struct device_node *pnode = of_parse_phandle(node[i], c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 387 "xlnx,snd-pcm", 0); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 388 if (!pnode) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 389 dev_err(card->dev, "platform node not found\n"); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 390 of_node_put(pnode); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 @391 return -ENODEV; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 392 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 393 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 394 /* c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 395 * Check for either playback or capture is enough, as c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 396 * same clock is used for both. c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 397 */ c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 398 if (i == XLNX_PLAYBACK) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 @399 iface_pdev = of_find_device_by_node(pnode); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 400 if (!iface_pdev) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 401 of_node_put(pnode); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 402 return -ENODEV; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 403 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 404 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 405 prv->mclk = devm_clk_get(&iface_pdev->dev, "aud_mclk"); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 406 if (IS_ERR(prv->mclk)) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 407 return PTR_ERR(prv->mclk); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 408 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 409 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 410 of_node_put(pnode); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 411 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 412 if (max_links == 2) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 413 dai = &card->dai_link[i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 414 else c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 415 dai = &card->dai_link[0]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 416 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 417 audio_interface = find_link(node[i], i); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 418 switch (audio_interface) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 419 case I2S_AUDIO: c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 420 *dai = xlnx_snd_dai[I2S_AUDIO][i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 421 dai->platforms->of_node = pnode; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 422 dai->cpus->of_node = node[i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 423 card->num_links++; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 424 snd_soc_card_set_drvdata(card, prv); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 425 dev_dbg(card->dev, "%s registered\n", c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 426 card->dai_link[i].name); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 427 break; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 428 case HDMI_AUDIO: c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 429 *dai = xlnx_snd_dai[HDMI_AUDIO][i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 430 dai->platforms->of_node = pnode; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 431 if (i == XLNX_CAPTURE) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 432 dai->codecs->of_node = node[i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 433 card->num_links++; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 434 /* TODO: support multiple sampling rates */ c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 435 prv->mclk_ratio = 384; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 436 snd_soc_card_set_drvdata(card, prv); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 437 dev_dbg(card->dev, "%s registered\n", c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 438 card->dai_link[i].name); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 439 break; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 440 case SDI_AUDIO: c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 441 *dai = xlnx_snd_dai[SDI_AUDIO][i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 442 dai->platforms->of_node = pnode; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 443 dai->codecs->of_node = node[i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 444 card->num_links++; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 445 /* TODO: support multiple sampling rates */ c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 446 prv->mclk_ratio = 384; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 447 snd_soc_card_set_drvdata(card, prv); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 448 dev_dbg(card->dev, "%s registered\n", c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 449 card->dai_link[i].name); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 450 break; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 451 case SPDIF_AUDIO: c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 452 *dai = xlnx_snd_dai[SPDIF_AUDIO][i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 453 dai->platforms->of_node = pnode; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 454 dai->codecs->of_node = node[i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 455 card->num_links++; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 456 prv->mclk_ratio = 384; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 457 snd_soc_card_set_drvdata(card, prv); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 458 dev_dbg(card->dev, "%s registered\n", c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 459 card->dai_link[i].name); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 460 break; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 461 case DP_AUDIO: c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 462 *dai = xlnx_snd_dai[DP_AUDIO][i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 463 dai->platforms->of_node = pnode; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 464 if (i == XLNX_CAPTURE) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 465 dai->codecs->of_node = node[i]; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 466 card->num_links++; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 467 /* TODO: support multiple sampling rates */ c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 468 prv->mclk_ratio = 512; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 469 snd_soc_card_set_drvdata(card, prv); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 470 dev_dbg(card->dev, "%s registered\n", c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 471 card->dai_link[i].name); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 472 break; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 473 default: c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 474 dev_err(card->dev, "Invalid audio interface\n"); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 475 return -ENODEV; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 476 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 477 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 478 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 479 if (card->num_links) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 480 /* c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 481 * Example : i2s card name = xlnx-i2s-snd-card-0 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 482 * length = number of chars in "xlnx-i2s-snd-card" c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 483 * + 1 ('-'), + 1 (card instance num) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 484 * + 1 ('\0') c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 485 */ c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 486 sz = strlen(xlnx_snd_card_name[audio_interface]) + 3; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 487 buf = devm_kzalloc(card->dev, sz, GFP_KERNEL); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 488 if (!buf) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 489 return -ENOMEM; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 490 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 491 prv->xlnx_snd_dev_id = ida_simple_get(&xlnx_snd_card_dev, 0, c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 492 XLNX_MAX_PL_SND_DEV, c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 493 GFP_KERNEL); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 494 if (prv->xlnx_snd_dev_id < 0) c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 495 return prv->xlnx_snd_dev_id; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 496 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 497 snprintf(buf, sz, "%s-%d", xlnx_snd_card_name[audio_interface], c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 498 prv->xlnx_snd_dev_id); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 499 card->name = buf; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 500 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 501 ret = devm_snd_soc_register_card(card->dev, card); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 502 if (ret) { c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 503 dev_err(card->dev, "%s registration failed\n", c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 504 card->name); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 505 ida_simple_remove(&xlnx_snd_card_dev, c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 506 prv->xlnx_snd_dev_id); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 507 return ret; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 508 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 509 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 510 dev_set_drvdata(card->dev, prv); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 511 dev_info(card->dev, "%s registered\n", card->name); c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 512 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 513 c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 514 return 0; c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 515 } c078611ad13fd9 Maruthi Srinivas Bayyavarapu 2018-09-06 516 --- 0-DAY CI Kernel Test Service, Intel Corporation https://lists.01.org/hyperkitty/list/kbuild-all@lists.01.org _______________________________________________ linux-arm-kernel mailing list linux-arm-kernel@lists.infradead.org http://lists.infradead.org/mailman/listinfo/linux-arm-kernel