Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754382AbdLDPQA (ORCPT ); Mon, 4 Dec 2017 10:16:00 -0500 Received: from mail-by2nam03on0065.outbound.protection.outlook.com ([104.47.42.65]:60448 "EHLO NAM03-BY2-obe.outbound.protection.outlook.com" rhost-flags-OK-OK-OK-FAIL) by vger.kernel.org with ESMTP id S1754347AbdLDPPx (ORCPT ); Mon, 4 Dec 2017 10:15:53 -0500 Authentication-Results: spf=none (sender IP is 165.204.84.17) smtp.mailfrom=amd.com; gmail.com; dkim=none (message not signed) header.d=none;gmail.com; dmarc=permerror action=none header.from=amd.com; From: Vijendar Mukunda To: , CC: , , , , , Vijendar Mukunda Subject: [PATCH] ASoC: amd: added error checks in dma driver Date: Mon, 4 Dec 2017 20:46:24 +0530 Message-ID: <1512400584-28170-1-git-send-email-Vijendar.Mukunda@amd.com> X-Mailer: git-send-email 2.7.4 MIME-Version: 1.0 Content-Type: text/plain X-EOPAttributedMessage: 0 X-MS-Office365-Filtering-HT: Tenant X-Forefront-Antispam-Report: CIP:165.204.84.17;IPV:NLI;CTRY:US;EFV:NLI;SFV:NSPM;SFS:(10009020)(6009001)(376002)(39860400002)(346002)(2980300002)(428002)(199003)(189002)(50226002)(68736007)(81156014)(105586002)(101416001)(8676002)(110136005)(106466001)(16586007)(316002)(81166006)(54906003)(189998001)(2906002)(305945005)(53936002)(8936002)(356003)(47776003)(36756003)(50466002)(7696005)(48376002)(4326008)(97736004)(51416003)(39060400002)(77096006)(5660300001)(72206003)(478600001)(86362001)(6666003)(53416004);DIR:OUT;SFP:1101;SCL:1;SRVR:DM5PR1201MB0060;H:SATLEXCHOV02.amd.com;FPR:;SPF:None;PTR:InfoDomainNonexistent;A:1;MX:1;LANG:en; X-Microsoft-Exchange-Diagnostics: 1;BY2NAM03FT025;1:no1hwBKY2opT0487pih6OmtwCgQqksNN4mT9Qdk3H07fB96Ak4v+ivyOVdNua1melFoRZ9TzArYGn5zGvU6bcRw4MZKm4dC/6TLIziWu2c/iQdrF2zqHiyDrmRQQkgCl X-MS-PublicTrafficType: Email X-MS-Office365-Filtering-Correlation-Id: aa5cb2c7-a116-429d-05ee-08d53b29e7a6 X-Microsoft-Antispam: UriScan:;BCL:0;PCL:0;RULEID:(4534020)(4602075)(4627115)(201703031133081)(201702281549075)(5600026)(4604075)(2017052603286);SRVR:DM5PR1201MB0060; X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0060;3:vQTvqd0c9zDwISvnEnb3gSP+IPf6JM77JnprFrpK4TIo+vfG8u8msWa79+gPnCtqctirr+ert/5YIdq3kJmrJSUmAVmu1LYrhhYG9o+QcCez6b/M6xeFkxEG+xlZNJJAYcEsscJ10wSd0C6LmgjVmV9QptZqo6ko2mxUYEJO0jRuexLSQ5vhEfYjRoCWIdaexCIHeamVI1xKtylnMu+2KlDdWWaqo8795+CbIFxjvzX3aeBz00VGH3Di2EMd756Ycupe7FFE0RcFshLjnpvyFk8oaoUmJsZbXtjU7JIlPir8s/Hve+cfY4lrkEKRwa7cz20Ct+eJVh/UAY65TpY2pTEQb3m8IOLPebC6k4RD5XQ=;25:OtgHYDwd99qYMn0CiGm3cHQld9HgXPvXX5DVLvY2bLhlW6xmBsNxyGbsLuc1HoCCw/Zpusje4afNI89frIs+iKG/f07q6e6f6D+KQEHBBmQ4cMX+/kEWXJ1FuK100SKW7oG588cJMe8Llgt4693WD9vZ9Iu9vYR94kkIwxC2yitDYb2oRlErYs8I+pXZaGFMcGFGFOjsmbTPB/vpaz6oQ7crCCXcuo+bCpD24JG6c9Tbtf635MEijYv4n2UFDSduSDpWxoLIVj2sXfPqBqT/Aa/hRaPO7m4nB2uecFixTvgEqYGU4FHEF4zkXq6TIyldQr6Ch+wM/XJ9HM6JglAMfw== X-MS-TrafficTypeDiagnostic: DM5PR1201MB0060: X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0060;31:syhXNpfSYWPs0PLukA1iGp9SLd55xJCa/zL1cmbYMjKzHceUpUkku11k3amgmc/H3l5SClK5AprbSeUhoc3SLKUq9Xga6mSDOLiw0CkAF2OqI/PoRpK+AXyDtnIpxd8Y/z69bGX8M30Pe9EZZfLEmG0u7Ls1gWqa0Ws71WrVENytCaV5ZNinsNH2kXQ6JaYSBNqkYVT5zb8+RvTw46c6RNlsbiMkt+D3JQdOKa7GiFA=;20:oyhfseKL1fbJbhGsrRZiX/hBJ5QUHT6UCpQRxHEo8MATpqtFZnrkfQNOJ6nNAvXry/KfupukWYLfvckbEBbhESeBHg/82stm1Ol5yEhFwc2m3mvF1AVUluU5Y5jMfiwDRweE4Z5yTZWyR0NXjAQbQX7UiLm653FViaopTegJRDfYuB0eUSTrjHia8CyVYCVbwlqLeKlrksjhZH2PGqMstEAVRtAayhAP3QD9+KUppBbsw0jyKIDLGajidQce8ijkTalAd3ko7kzNS5/5kIvefkJkHL7qnmHdp0CxkFfBLKAi57uXjN/qemR3aJkVXOcac0ZSrBV5oHd1P4jBqKorForGH6bpTwVUiZZzVrAh/QPeua+x+NleRx4eCQQBO8C8/8cqYrsKK0gOROrdlyPlJUHK++Pp0Mj9koj98LzpxWyQsGyO5y08K6pfc1Ptgyqn4ZJYMIyJNp5APZF7fCfjuPfxRXu80RhjCnZHeiBQx0yR7TJ7XEvthlQxFfjtcM/Y X-Microsoft-Antispam-PRVS: X-Exchange-Antispam-Report-Test: UriScan:(767451399110); X-Exchange-Antispam-Report-CFA-Test: BCL:0;PCL:0;RULEID:(6040450)(2401047)(5005006)(8121501046)(93006095)(93003095)(3002001)(10201501046)(3231022)(6055026)(6041248)(20161123558100)(201703131423075)(201702281528075)(201703061421075)(201703061406153)(20161123555025)(20161123564025)(20161123560025)(20161123562025)(6072148)(201708071742011);SRVR:DM5PR1201MB0060;BCL:0;PCL:0;RULEID:(100000803101)(100110400095);SRVR:DM5PR1201MB0060; X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0060;4:zb3bEzvHUr8rc8dNP7ni47nIBMk1upUJsKHLaYvYwl9UgzFOwvdFd0NeKE7B5Jl2jEbFW2fvUmzURf3D1cljgZDgFqw3y77Ci7dsxcnKdPHH7sBbCGoEmuqp281ZGmXmEng80E0xkzQA4vpbmZJJ0eRn9xRtHrmwhpyEMh2g3BYYLxZ9/FuqfXeO+SGMY6PQJYSl6PbIZm7t41UInoG8X4XDO7kDKSNt9NZiH9gkE1yTN0n+OMZYfMXDnBN3TAlqmp6XpocifDY6e6TMfw/ANH7ZgV6lup7Fhhn5ccaR8KTLkKCUxNp0MbzU5Y9Z6PGt X-Forefront-PRVS: 051158ECBB X-Microsoft-Exchange-Diagnostics: =?us-ascii?Q?1;DM5PR1201MB0060;23:Ikl2J8syVwKD2LpCffoON4CfY+DtWI/8zrxjJ6S?= =?us-ascii?Q?YcI8CUkTP8IRQwWDyfABoR0YBuyqUMY93CIQV1JKrOg5m4Ltkw4TynLJInYY?= =?us-ascii?Q?aRs/UQMbgC0lUq/0wGnnGeiyTqq9tDrWlDU55xdhgHIKA0VTl7E3nYTbbK9s?= =?us-ascii?Q?yKnN9QDyniMGgr0UbEaYbGynkewPilkjHt0iJYmdK+lhiyK7HK9b/syGTdf2?= =?us-ascii?Q?EYdHY0gnwwJcUOgcS37txoMTA9m8eJVIJiBKnd8UFbGNJi8PRWNIy49SXBeM?= =?us-ascii?Q?o/Irs8VY2pYbUkY5o0tEOglZkrBNWrDU3mN0skOsg5NHgQbj49K94x6eQbat?= =?us-ascii?Q?Qj/2GOrvw+DDRedi8CTQ1aXiyHi/zp0LyZAVJmu7DlMV2LNHzir8iUmBuLgB?= =?us-ascii?Q?u+F3Sn2JSmPwPOZlmR0VL1PCXCkf0FfBXHRAArI9hmMXfxtT38WeCfjmhhGF?= =?us-ascii?Q?5cgC5lbvvDRTlct5+FfDhFzYAww9b1M3/O/NOI7GuDiMaDivJvGq5JaTDTlH?= =?us-ascii?Q?Gy8x9FMVrtMiHmrFWY4teeoqK0jM6loin/8Invdpp+/1+IVwptE0HC8+kgC7?= =?us-ascii?Q?dXgeJcZEwNy+paRBHsZoWanGFE0kNWQyy1tZaxasUVcGsmfsmRTny62kUu2W?= =?us-ascii?Q?xONb4x82RJGfW4SgvHc0Wv82bKkz+zx8Eun7tDDodIoBZZIVCSAfM4ob6pbo?= =?us-ascii?Q?I+oiF1scv4gSgwjHFq0EBXPlEqDUObsNwTZpiDIkgHCD1hsP7mfZ18z4hKOm?= =?us-ascii?Q?3iPiQF8Jj073xtzCI7O5jZQug35zsy7ZZZrQwQhPO8fXsB6FngSD7Ea3WblM?= =?us-ascii?Q?cfsfDYVMC/lfxmkfYnQJSY1cqFBz5Luq6HTPzfE1LTL4wNDcgv77bKjUzdOv?= =?us-ascii?Q?rntOI6JuuRUbiuPUxPl6acnIH0WDsMvvIllcieGgPPTNPRSoRKJfB54SL2+Y?= =?us-ascii?Q?UC8JeJ+ekAZHJFmoH21cJ3o8aQ3dtxdk8s+AmDG0nxxE/Ap4HGwjuil0A569?= =?us-ascii?Q?tGsE1AfJyasSd15z/f7Ty+NDb?= X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0060;6:sYWTioDW44tQLHX14qMszsaK2iqmHPjNxzCArYRO+W7FP6cXACSR7dZq1/oSxV3NtZv8vjZz7x7RdjfA2lwixx7KHY7fGoaLlXUA1ZIEVUlld6AqiEWziFhVrQT1xlMnvIxJ6o+rm2eZK7Go4RAJ6LkffNkBFLG3JzSyr2JWGXz0L64IlH+Jcx0Cm1EzbLcVhK38AGsCvATCRVO6xaTzBbJ66XPdjldh6BtK3+9VloixPxqDHCv1lKjbc+B1+rfgeZeYk+5eVPngsqtc9Jnx4gE2+iCmEECm+3LlOKTRwGPapr+ZKtJVBoe0UovpU2P6wBwO576CBaDrJzXsHehGlTdXlpuxftKGrYyAfzFrEUo=;5:Px2JxCUgbOiYEHxwi24noLer6uP4sfW4bH3G9LSX6FWXcHUDGrxjK03qaqFzJjB+I05NcaObq5aVmfjn20ucybUYgvuCgA/Mz9XEjZIB0MvhsEqI3N0tmY3vT08ZVOtFWvaayzlXbORLmARkEHMBBSUbQ9/urDRIYTy6ofPlqkk=;24:c4jQRzPtMXxaVdS+wtohbi51woV35lcCQlkEJgxsSkkAumyXIiwebPnO4atSPh3pMSFDVsbft575q+8lIi0cHIguJzr/cxgaMhwLMzky5k0=;7:I/NOn8eKPgVUXEK1JdRV19spWO1uBeuMPOieKPb9B27hua7gtkfeb/XYwX+sEZ2jFxOlmHO0DcbzrILPNFSFnVBVx8jcGXTgX35l08McwK6Rarhtm82QVyMQLLX6lipe/I9p+vP3KkkvtDeyKYRocmgE9A4Y5F7jnbbV5h+g/1U614mdATQohQ8UwpfyF4a+pyNxNKNHLo7kiPN7GE2zQgC4SO/335kVu3P5+F7N2pQhSF9xQi2xvSaxFjzqUilM SpamDiagnosticOutput: 1:99 SpamDiagnosticMetadata: NSPM X-Microsoft-Exchange-Diagnostics: 1;DM5PR1201MB0060;20:/GEGlKxVtiE3IOyrq5SGN6r/V5M+CRsqP1sYiBL/1wSawq8ShQbWettnzeX2c9ZX1hC/FB96heXPnRAtRID4l4hNkGGGeddTNbIGLl3sSn4M0WdXqNbENgukLGIrAEmOOM0M9dHngkn1//Cx1yVnh23qoDjoabAOkR2JSftFiBDOJa5RudvbD/RBXMCo+R4Zp6HSj1xLDMiZG69GD9SdXMMz6Qy9meVd7DwO/PBVl9UsCxSOkfzd5ezVIVvX6XK4 X-OriginatorOrg: amd.com X-MS-Exchange-CrossTenant-OriginalArrivalTime: 04 Dec 2017 15:15:50.7345 (UTC) X-MS-Exchange-CrossTenant-Network-Message-Id: aa5cb2c7-a116-429d-05ee-08d53b29e7a6 X-MS-Exchange-CrossTenant-Id: 3dd8961f-e488-4e60-8e11-a82d994e183d X-MS-Exchange-CrossTenant-OriginalAttributedTenantConnectingIp: TenantId=3dd8961f-e488-4e60-8e11-a82d994e183d;Ip=[165.204.84.17];Helo=[SATLEXCHOV02.amd.com] X-MS-Exchange-CrossTenant-FromEntityHeader: HybridOnPrem X-MS-Exchange-Transport-CrossTenantHeadersStamped: DM5PR1201MB0060 Sender: linux-kernel-owner@vger.kernel.org List-ID: X-Mailing-List: linux-kernel@vger.kernel.org Content-Length: 3547 Lines: 106 added additional error checks in acp dma driver v2: printed error codes for acp init & acp deinit failure cases. Signed-off-by: Vijendar Mukunda --- sound/soc/amd/acp-pcm-dma.c | 35 ++++++++++++++++++++++++++++++----- 1 file changed, 30 insertions(+), 5 deletions(-) diff --git a/sound/soc/amd/acp-pcm-dma.c b/sound/soc/amd/acp-pcm-dma.c index fb09578..29be517 100644 --- a/sound/soc/amd/acp-pcm-dma.c +++ b/sound/soc/amd/acp-pcm-dma.c @@ -848,6 +848,9 @@ static snd_pcm_uframes_t acp_dma_pointer(struct snd_pcm_substream *substream) struct snd_pcm_runtime *runtime = substream->runtime; struct audio_substream_data *rtd = runtime->private_data; + if (!rtd) + return -EINVAL; + buffersize = frames_to_bytes(runtime, runtime->buffer_size); bytescount = acp_get_byte_count(rtd->acp_mmio, substream->stream); @@ -873,6 +876,8 @@ static int acp_dma_prepare(struct snd_pcm_substream *substream) struct snd_pcm_runtime *runtime = substream->runtime; struct audio_substream_data *rtd = runtime->private_data; + if (!rtd) + return -EINVAL; if (substream->stream == SNDRV_PCM_STREAM_PLAYBACK) { config_acp_dma_channel(rtd->acp_mmio, SYSRAM_TO_ACP_CH_NUM, PLAYBACK_START_DMA_DESCR_CH12, @@ -1082,7 +1087,11 @@ static int acp_audio_probe(struct platform_device *pdev) dev_set_drvdata(&pdev->dev, audio_drv_data); /* Initialize the ACP */ - acp_init(audio_drv_data->acp_mmio, audio_drv_data->asic_type); + status = acp_init(audio_drv_data->acp_mmio, audio_drv_data->asic_type); + if (status) { + dev_err(&pdev->dev, "ACP Init failed status:%d\n", status); + return status; + } status = snd_soc_register_platform(&pdev->dev, &acp_asoc_platform); if (status != 0) { @@ -1099,9 +1108,12 @@ static int acp_audio_probe(struct platform_device *pdev) static int acp_audio_remove(struct platform_device *pdev) { + int status; struct audio_drv_data *adata = dev_get_drvdata(&pdev->dev); - acp_deinit(adata->acp_mmio); + status = acp_deinit(adata->acp_mmio); + if (status) + dev_err(&pdev->dev, "ACP Deinit failed status:%d\n", status); snd_soc_unregister_platform(&pdev->dev); pm_runtime_disable(&pdev->dev); @@ -1111,9 +1123,14 @@ static int acp_audio_remove(struct platform_device *pdev) static int acp_pcm_resume(struct device *dev) { u16 bank; + int status; struct audio_drv_data *adata = dev_get_drvdata(dev); - acp_init(adata->acp_mmio, adata->asic_type); + status = acp_init(adata->acp_mmio, adata->asic_type); + if (status) { + dev_err(dev, "ACP Init failed status:%d\n", status); + return status; + } if (adata->play_stream && adata->play_stream->runtime) { /* For Stoney, Memory gating is disabled,i.e SRAM Banks @@ -1145,18 +1162,26 @@ static int acp_pcm_resume(struct device *dev) static int acp_pcm_runtime_suspend(struct device *dev) { + int status; struct audio_drv_data *adata = dev_get_drvdata(dev); - acp_deinit(adata->acp_mmio); + status = acp_deinit(adata->acp_mmio); + if (status) + dev_err(dev, "ACP Deinit failed status:%d\n", status); acp_reg_write(0, adata->acp_mmio, mmACP_EXTERNAL_INTR_ENB); return 0; } static int acp_pcm_runtime_resume(struct device *dev) { + int status; struct audio_drv_data *adata = dev_get_drvdata(dev); - acp_init(adata->acp_mmio, adata->asic_type); + status = acp_init(adata->acp_mmio, adata->asic_type); + if (status) { + dev_err(dev, "ACP Init failed status:%d\n", status); + return status; + } acp_reg_write(1, adata->acp_mmio, mmACP_EXTERNAL_INTR_ENB); return 0; } -- 2.7.4