From patchwork Mon Feb 3 06:20:58 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 13956797 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011065.outbound.protection.outlook.com [52.101.125.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 84FBF35970 for ; Mon, 3 Feb 2025 06:21:00 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563666; cv=fail; b=QcRxaILga1zqIAqdM7G8GEIUrn9032hVZBLSSqyxIw4b0fXFS+m824vb0yqiWSh1FNTLbFjyzgHSgq+e+MHC8dX6CshIDrKuDWf5Yj19mcojKDKzbkRt9riHIPAobElZfnEw8JrCw3+7A4D46DVaGoQpAcHFeNxyEvnDwHpDl7g= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563666; c=relaxed/simple; bh=M7KvZq3HaKsC10kf0x7t26JUqzm2xYQcLuIa0XSM6Rs=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date:MIME-Version; b=YKLEuhrk7FaSu/xNL6x8tDmvbc4Hq+8oeh3cozh2mFEyhsxIxXtuHqL2eNVDzAVkFfDkN7B+TqoWWhryfMuyfBJBRtxDuzchHBPY70oRNeGnoeER+PUd3iB4trqXVUgk1xHzSM8rSem5rDFw/onip/2d5CYc7zMFFGf2OJUOruo= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=jVdxAAHq; arc=fail smtp.client-ip=52.101.125.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="jVdxAAHq" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=qLBP/XZUT51js6WN6MfgbNkQUfBmwC2/NyEQhS599nVaCv955HdfrmzrqqYg7ng0qoyfqWpS9mYam/NZAZ7K3CT9zdoLCT20Z8jzfrHQWkrh7chYnO3yVl6CfrUXqwu3m8tbZ+3Dwg7Z0irEHQSm2c4Wf2HEKx9kMlYJ7fDlJBBUKNjd39MormIX7N+1pnwtfaWfqYSfPIk/9jmNOTdVv0RjCJta17xx2XcUzBPoZGLX3bremWrKjzjwZHRnZPV3qUv57/XhuhoERcNJnEaXvyKeCo/Dr310RWkryxMIXDjXqzfZDpTKom1ccVF6VjmboMtyQdQIqnKhXOZMRhqLMw== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=aFlu4SiIrgs35QgDmbrkGCASX3EegmPiHwMNnKIDVOU=; b=msFJDtpc8QW1o/9tf+urgVmjBq9gjsU53IGQHmvBm0tt20WnqwAndcnUpdA30ZieODEb2emuB7nuRfxY34AG/K+n710X62F/LXi2xjS5VV1BqqSvO2G3QozmpQjYYd+f7Dc2UZRc/ku0bVtBcDbi6cu4QrVrR+N2ebYGk2BwYUxqQtVBb4W9WaX34zs4+1FbsbTUVlwhkpfkxyYmivxu0PJOMnhXaR9FTCgY3t03UVubCc/mjCWhycCW8s/su8zUycHJtpLoy0hSN+mqOMvAEKtvQrHPq4tPeusZI/vT/QJTUk3QPGCf1dHt0RsUdBL3/ityTxICT5o3YE4nTLFExg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=aFlu4SiIrgs35QgDmbrkGCASX3EegmPiHwMNnKIDVOU=; b=jVdxAAHq0rjWAK/4xNhbvHYChQxQ8daMFWs5wzPJ6Md/zGgAMj+3SqQ3WxY5Y/gwW6i8iBW718jJDEpxAwzfIjDKgslLai9hvrBk8dB+VsB5YF8+4YOuxQGeo7QZwwptWe0IdEph9RnMpeb24cuIut4x5JQB2pQkGcznPxiqxbo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TY3PR01MB11036.jpnprd01.prod.outlook.com (2603:1096:400:3ad::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Mon, 3 Feb 2025 06:20:58 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11%5]) with mapi id 15.20.8398.025; Mon, 3 Feb 2025 06:20:58 +0000 Message-ID: <871pwfsg51.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH 1/6] ASoC: add common snd_soc_ret() and use it User-Agent: Wanderlust/2.15.9 Emacs/29.3 Mule/6.0 To: Mark Brown Cc: linux-sound@vger.kernel.org In-Reply-To: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> References: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 3 Feb 2025 06:20:58 +0000 X-ClientProxiedBy: TYAPR01CA0236.jpnprd01.prod.outlook.com (2603:1096:404:11e::32) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYCPR01MB10914:EE_|TY3PR01MB11036:EE_ X-MS-Office365-Filtering-Correlation-Id: f8f60c2a-6dc9-4577-9c2c-08dd441aec82 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: IgPHnRpmxP2lJk/wHv9rx8j7QgCm37Nrdb/AQN9BalgLFEkUeKEUb7yk31FABZH1XzV3G4GBeyOEtm5xmGyMEwC514s31P++miK/fUZVhm2RwmorztE9OH0v/NViXdLBP3Ptih3eTNoeGFRb3/U+6pnKGn+fUQRZ0dk7sB3yQqDOO5QKVVz/gasYaXI6LS32RHRNOq+IuUna22w11WfaFOu9aww7fAGvUoOB/UU3VDGjvVhH1fvM+gutEbVPdVX6HEHDl9+Z1KQF7yJ5Lk3BT4cwgRxkomScoq2KyYh7kN9l8Pe4MYKweOyORhDCWTPKmBb1gXDhqn2YE+C+NJa1bnKe2P9DTos2DC+zm80HItqE9QA28mgJkAWutwZFrRJzPioEz5wUKL8Yvnk95r1jAnStYeu1hAW75LvCGgaxYEAHtyhS4o9yKrrm5psOUF70RRmQSvvIiliQ+XCsDbyTngyfCoVDu/cMSlUZnygtfnsJhWJouxnk4XBUSpqe2/F+6ikmZxN3pvHB3PCYO4B/P+7hkz9qy7lBCaZgLXNZHUGkuO0KsOAfiydJ0QUbhbH9aSukk3oL6HeM4Xt0MGyNJqpnwPfawBTTa+A7X/Kki1JoyCSmLMAoiQoDNXtnXrVHCZLURkacBV/jTYQQQeNTc7O36nII5P3BHBlUirM6BfK7hXxzi72qez1za+C2OG1y+iq8oATcBP/XXLMaPyXphbbKIYIDSfKwoS8VJ8/ZQFxb/4PPEtImNtD9n2JLrQfkYrNa+ur8d8mX7Y2f7MO1ihmb2m6LGVQAoCdj8w4fjc44nXnTkcTQ2SNUrcd5C2LCuq/HuNfKMvdl6PHMVsa0EA/9RSZOYfKgWZTwhs70r5eKu8oiio+MOcizMgdvBmWW6FtTvtloXr8uEs7V1kmbDPBPAO7YiLC8Hga4efxBiGjaTGIRnDeoGdF0o8mHyd6VQwSOFoBb0k4I02LJiwdfgIGbe5dyt2h+9IItJcGUXyNNbDcZgnLItfMw3K9uiJHZK1OYM5okg3bb+pNTx8LWvYFLPBe0SxBKjYGqGi/tvH1mtl9dfS2uvL18cVNYUkF96Tc4gPReQXeRIu/EGFmfxJvGaezSgSTCD8XUDZ5c09c6ZjWE5Zo042XIm+XnopJ4qaR5fXYNHkngiAbTFAr+eVJEsrJu97/ASqALu56dSa8Y0mKoqTWIB/i7ShMifU1lq+xjsMAzK4ben/8eFlPr1ChUV1Sar0GcH3DcuAeIO0JpDPw6MJ7s8v1PYlxC2Q0jAQscj5RPt3JMNvxHvyBgPLCu0B8bkRfoiI/mOtJRrYl8nX0pU3iGsBM7doUSHjEZy4bytB20ichzdMC9yOWnFGyA+elTym0Z4hMdBNPd3wE+v7oVO8KSySoyE0ynAObr9AkX2AzVB5pLw5i54NgqJr5/k5g82l0zpLxb+rPbbE3epEB3MbP9ffYYb1axmVh7 X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: cq0P+ClXN+lxPiFDnl7ZnRU4Yhi0W/bRI2aWoOtl6mJWVpm0W2pqNrHvRwfoE+vu4774ZlyqYSRKwCKoMn60aDDnSYQKemr/MDRJu+4J4h7mORMhmKE/7E61v0HX8cyu6LXzam/vp1zoV2qa3ShKIhUipqVs+iuD4O7rmCCvClJKRB8Ss0ljmVJjHPK7wf1P2R38o5sov80jLvXKMpgsBRRTbkuidrXNP0WSGQZdw4Xgsm4yS/EXU2N7/ftIMqggppDM8b3q32XGMA9Z0lx+0Sbk5AnVoMwE0a+WpsrLHngQOpdPWdT28xfu3Cxf0EnlY06fCVuUAfryzrW4JRYHRG9E/LqQ8PMWLVBWGQ04zD76+JXUwcneZxKZyhCWGmnPSSdYCtP5sQN2AHUoQhrx+BwdC9a7Hwliv0I3xLOhtvlniHqV8MZfIT+CAYfDccIgBc6spBca3YMJxS6ScF4e03sTYvupfTnniRfv9G2uAq3aQOv5B5DJjZ3QxKBm0xdHR3D7K2k/pjNek4RG1bxcDUJL9cQtMeH9cgbRsFUsyKdEpOhQryHh4o8y2dPcFgU2fVK07QZHgFH9yQTQFd6wOCayK3U1bV1EMv2NS92QB5aYyZSf3+pfnpbXNbf0i+fjJ/bZnfII9aT5NKsf9YupA2pgM4slMHet7knY1lXLuuqsL54i1BDIORCLFH2creeCZkYf3BnK3jkXiyqQW9OEz7usymtxbozE2sZeLnTNqq8M3xTY5l2MDFbkz24bwQZEXsIML94Nz1kyhG9AiBJQzHku6VVtHhhwVlh35n09/y1gvHKhN+cHS6vlhQJ90KIBVD6PRfOmJd2HdKSJKr3lUnZBEjvjdQKCz38n7bbHzaoUZJJs4UWmIZhaVAHvZmPevZoBgKnUcG3iF8BvF3br79vnuGLwgo4e75TluN1g0Ew6RzAnIiimftr6IKqiBj7HvJ14cIlJ+iPI9Aa//oE9wVZlpycPt1t4mJsRqpjPkuiAAqUzFhv/ojGzL+Iz5tdlXf8ebM6uZjoS5+W0ynAWAhgZjl0HspOYag7NzcbjgGR5ZZLTwKSym+131E+dPqClh8KQz4fI0nNeCkV+q6nkVF9n/ZYZ7kv6VRs618l+gk57RQB07f9Q+vE7YZRc2Ui7x2D7/w+Dl4IUpOAVxG0mPFZyfMJGZKpjoNnzbIIriiJKlqKoavDq44fqSALaLQeaazQMRkrhfNYJx+oznVC62k88AYq47C7kOqWJPMXzPSWMyEoDAdPw96Ua+rlUVXEo70MZkkV4iAmzq1weu86DgXxn6B4fN+9u/UTLhdBE1YGz/wDIfxbUMPhYv1qykNTma3ZGsNJvdgqnI0xxwYUvYOHUNi/Mve3Gy4S9vwS1j4QXHdx/rvvEY3iTObz00myOs3r2WBqO/6P3m3hvXUsbFcG/dVJJp+kxeo68Fx2+5HPCPwLK9lZmxFy6nmbb+OhtkOygtYCezTnzolifZZPGOng7lRfqf8AFd54tM/iz2XdfDITDEs1W61LTRus0WvCvAT4URfEQherS0O1mnz7mGSYLxmUDoG2YKxewBsZI1UydJ3PG3f4cOFEmY+kK74L40WtjQye9Ir9IWX0Tn/HKpeC7qVlqhp93Pm1uD/1aDEc= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: f8f60c2a-6dc9-4577-9c2c-08dd441aec82 X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2025 06:20:58.5122 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: eumGLzEzcLMaHYdQ8eMd5+ujuCC9ei7gsF3F+3fTiiv3WsycQaZWFIxsOMAmbGMC+eHAZfDAtPjBX4TB0gHlMc7Vse0dvZe3beEYj+/WdtZhGNoxM9vGtXgTkn9yeoY1 X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB11036 Each soc-xxx.c is using own snd_xxx_ret(), but we want to share it. Let's add common snd_soc_ret() for it. Signed-off-by: Kuninori Morimoto --- include/sound/soc.h | 1 + sound/soc/soc-card.c | 14 ++------------ sound/soc/soc-component.c | 38 +++++++++++++------------------------- sound/soc/soc-dai.c | 18 ++---------------- sound/soc/soc-link.c | 18 ++---------------- sound/soc/soc-pcm.c | 18 ++---------------- sound/soc/soc-utils.c | 26 ++++++++++++++++++++++++++ 7 files changed, 48 insertions(+), 85 deletions(-) diff --git a/include/sound/soc.h b/include/sound/soc.h index fcdb5adfcd5ec..16e4e488521c0 100644 --- a/include/sound/soc.h +++ b/include/sound/soc.h @@ -539,6 +539,7 @@ int snd_soc_calc_bclk(int fs, int sample_size, int channels, int tdm_slots); int snd_soc_params_to_bclk(const struct snd_pcm_hw_params *parms); int snd_soc_tdm_params_to_bclk(const struct snd_pcm_hw_params *params, int tdm_width, int tdm_slots, int slot_multiple); +int snd_soc_ret(const struct device *dev, int ret, const char *fmt, ...); /* set runtime hw params */ static inline int snd_soc_set_runtime_hwparams(struct snd_pcm_substream *substream, diff --git a/sound/soc/soc-card.c b/sound/soc/soc-card.c index e6eb71b3010a8..235427d690617 100644 --- a/sound/soc/soc-card.c +++ b/sound/soc/soc-card.c @@ -15,18 +15,8 @@ static inline int _soc_card_ret(struct snd_soc_card *card, const char *func, int ret) { - switch (ret) { - case -EPROBE_DEFER: - case -ENOTSUPP: - case 0: - break; - default: - dev_err(card->dev, - "ASoC: error at %s on %s: %d\n", - func, card->name, ret); - } - - return ret; + return snd_soc_ret(card->dev, ret, + "at %s() on %s\n", func, card->name); } struct snd_kcontrol *snd_soc_card_get_kcontrol(struct snd_soc_card *soc_card, diff --git a/sound/soc/soc-component.c b/sound/soc/soc-component.c index b67ef78f405c3..25f5e543ae8d3 100644 --- a/sound/soc/soc-component.c +++ b/sound/soc/soc-component.c @@ -13,32 +13,20 @@ #include #include -#define soc_component_ret(dai, ret) _soc_component_ret(dai, __func__, ret, -1) -#define soc_component_ret_reg_rw(dai, ret, reg) _soc_component_ret(dai, __func__, ret, reg) -static inline int _soc_component_ret(struct snd_soc_component *component, - const char *func, int ret, int reg) -{ - /* Positive/Zero values are not errors */ - if (ret >= 0) - return ret; - - /* Negative values might be errors */ - switch (ret) { - case -EPROBE_DEFER: - case -ENOTSUPP: - break; - default: - if (reg == -1) - dev_err(component->dev, - "ASoC: error at %s on %s: %d\n", - func, component->name, ret); - else - dev_err(component->dev, - "ASoC: error at %s on %s for register: [0x%08x] %d\n", - func, component->name, reg, ret); - } +#define soc_component_ret(dai, ret) _soc_component_ret(dai, __func__, ret) +static inline int _soc_component_ret(struct snd_soc_component *component, const char *func, int ret) +{ + return snd_soc_ret(component->dev, ret, + "at %s() on %s\n", func, component->name); +} - return ret; +#define soc_component_ret_reg_rw(dai, ret, reg) _soc_component_ret_reg_rw(dai, __func__, ret, reg) +static inline int _soc_component_ret_reg_rw(struct snd_soc_component *component, + const char *func, int ret, int reg) +{ + return snd_soc_ret(component->dev, ret, + "at %s() on %s for register: [0x%08x]\n", + func, component->name, reg); } static inline int soc_component_field_shift(struct snd_soc_component *component, diff --git a/sound/soc/soc-dai.c b/sound/soc/soc-dai.c index ca0308f6d41c1..7c4c9127e5f3f 100644 --- a/sound/soc/soc-dai.c +++ b/sound/soc/soc-dai.c @@ -14,22 +14,8 @@ static inline int _soc_dai_ret(const struct snd_soc_dai *dai, const char *func, int ret) { - /* Positive, Zero values are not errors */ - if (ret >= 0) - return ret; - - /* Negative values might be errors */ - switch (ret) { - case -EPROBE_DEFER: - case -ENOTSUPP: - break; - default: - dev_err(dai->dev, - "ASoC: error at %s on %s: %d\n", - func, dai->name, ret); - } - - return ret; + return snd_soc_ret(dai->dev, ret, + "at %s() on %s\n", func, dai->name); } /* diff --git a/sound/soc/soc-link.c b/sound/soc/soc-link.c index 7f1f1bc717e2c..02fd68f2e7028 100644 --- a/sound/soc/soc-link.c +++ b/sound/soc/soc-link.c @@ -12,22 +12,8 @@ static inline int _soc_link_ret(struct snd_soc_pcm_runtime *rtd, const char *func, int ret) { - /* Positive, Zero values are not errors */ - if (ret >= 0) - return ret; - - /* Negative values might be errors */ - switch (ret) { - case -EPROBE_DEFER: - case -ENOTSUPP: - break; - default: - dev_err(rtd->dev, - "ASoC: error at %s on %s: %d\n", - func, rtd->dai_link->name, ret); - } - - return ret; + return snd_soc_ret(rtd->dev, ret, + "at %s() on %s\n", func, rtd->dai_link->name); } /* diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index 88b3ad5a25520..a2caa146cac2c 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -30,22 +30,8 @@ static inline int _soc_pcm_ret(struct snd_soc_pcm_runtime *rtd, const char *func, int ret) { - /* Positive, Zero values are not errors */ - if (ret >= 0) - return ret; - - /* Negative values might be errors */ - switch (ret) { - case -EPROBE_DEFER: - case -ENOTSUPP: - break; - default: - dev_err(rtd->dev, - "ASoC: error at %s on %s: %d\n", - func, rtd->dai_link->name, ret); - } - - return ret; + return snd_soc_ret(rtd->dev, ret, + "at %s() on %s\n", func, rtd->dai_link->name); } /* is the current PCM operation for this FE ? */ diff --git a/sound/soc/soc-utils.c b/sound/soc/soc-utils.c index aa93e77ac937b..e8958158acc11 100644 --- a/sound/soc/soc-utils.c +++ b/sound/soc/soc-utils.c @@ -15,6 +15,32 @@ #include #include +int snd_soc_ret(const struct device *dev, int ret, const char *fmt, ...) +{ + struct va_format vaf; + va_list args; + + /* Positive, Zero values are not errors */ + if (ret >= 0) + return ret; + + /* Negative values might be errors */ + switch (ret) { + case -EPROBE_DEFER: + case -ENOTSUPP: + break; + default: + va_start(args, fmt); + vaf.fmt = fmt; + vaf.va = &args; + + dev_err(dev, "ASoC error (%d): %pV", ret, &vaf); + } + + return ret; +} +EXPORT_SYMBOL_GPL(snd_soc_ret); + int snd_soc_calc_frame_size(int sample_size, int channels, int tdm_slots) { return sample_size * channels * tdm_slots; From patchwork Mon Feb 3 06:21:03 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 13956798 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011065.outbound.protection.outlook.com [52.101.125.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 9A4AA1D7998 for ; Mon, 3 Feb 2025 06:21:06 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563668; cv=fail; b=UXSKmEhURIafs4bqh5Qn1ChtYSrAAfPZ3EfDyOKlPZJk1KQ26RZEq9c32LJDobsiUV/7Tm1wK6fsfMb6DwvjLCAjw3AhAbzzkhDlPBLo8ovHN6ZaTOCXAjB2OGIMeV+0L0nd74qgreJ2ASwa1oybgN3qGkbJ4DIqSlrTIpgoeIU= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563668; c=relaxed/simple; bh=A7YiVsue5VvvxZlhlCucooQJ1jqNZtS7Z5+RPKEt0Ng=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date:MIME-Version; b=iHCZayczf/9NvfLV26E68TCDYaIiPx7lDPmLwBGkXb8t1E94RFzLYGFQFqPoAgvKzpSPXhzd3wDZCjVBNDCUa+d4csVguCr/eiTVCzWA7++t1JSgGVDE7SVJWWUpajiK1/VTdM75LmtSCtFVuyM4gSZVddBV7OO74KdPne7p3Xg= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=fPmlr/q9; arc=fail smtp.client-ip=52.101.125.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="fPmlr/q9" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=CvmSEMeHPF0C8HJmDxUia4T3m39I+cf541tK6mw4H2HkmR7T4FN7xKCAGIXS7I//z2/7oD1SpRF09tdwEJj3VKeGIMCPCJdQC4FMj2BOvld5Y3YjM8l9KtCJUy53i5LAWMZuF2VNdnSn2q9MVP2dSMQ+OcedtmNBaInArg21eTOMx5dSJJuAwlA9yHAFP+c6afhcE+AfXXwt2i6EJcW77xULpNysAL5wz6dz63iMVit3mN1dbgRN8r5unz1lDZ+XgVxQmJHjywEZHNtiEqgkihKRBCdG67daWz+znTPj1UScUOSaSHm9ZZFTpkDzYgu1ZHdkI7ZnBiJvza8scd35VA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=zSZXzy755ku0916s7MgbRyhMd/OhV2SyZkbnFN3OOlk=; b=yXrShXK4a0G9W50cIeyd6oqQhXh4Jalm6QmA7XZwXgi2BQ6qi4yYr4xDKhZt2ZdLQwMzJUHb0EJ++PRyXI1ssGV/mMdUXDcsr7JD8rNR3skJ/O2Sc6oNsBfsKSfZiuegNta81Qmr0AC+UWRtWHxfeG53c5UXB31FDtul1djyQ8bTfu4VYKpzi/kxZHY28AbxBHvZYZbVxolBbrmCz7Yvq+R/eLHW0mDVW7ZxnnvarXEEtPAAFvX+sGXI4knBTQ5NQXjjTmQp8+7eeWpibMLJfoN+jo3ZWmRZk7sQLFL8sWNY9EJqSYa6nqXRljzmrZx0+lOgEf+Y+SUHBEgwfUtKXg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=zSZXzy755ku0916s7MgbRyhMd/OhV2SyZkbnFN3OOlk=; b=fPmlr/q9/mVQywjzCiQdW9HzHzjLDUQvvIPYQ/c/RBCkApEekMoE3dSK4foAaHrVMA3w8JOULFjFO9iIk2W9tGT9Fye99xEPgVupM/kJW6sQIGrveVyyhuraB24mjgxYIYzLl/KaGyt7oO3UiRXgXnoTo10jTsMB3L5bt5SuNjU= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TY3PR01MB11036.jpnprd01.prod.outlook.com (2603:1096:400:3ad::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Mon, 3 Feb 2025 06:21:03 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11%5]) with mapi id 15.20.8398.025; Mon, 3 Feb 2025 06:21:03 +0000 Message-ID: <87zfj3r1kg.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH 2/6] ASoC: soc-pcm: use snd_soc_ret() User-Agent: Wanderlust/2.15.9 Emacs/29.3 Mule/6.0 To: Mark Brown Cc: linux-sound@vger.kernel.org In-Reply-To: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> References: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 3 Feb 2025 06:21:03 +0000 X-ClientProxiedBy: TYBP286CA0035.JPNP286.PROD.OUTLOOK.COM (2603:1096:404:10a::23) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYCPR01MB10914:EE_|TY3PR01MB11036:EE_ X-MS-Office365-Filtering-Correlation-Id: c1502494-8d7c-4f97-6ea2-08dd441aef6e X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: 6WmjDfMV/8DDWp374wx6Z5CRRt5HcG17olXBw+d/evMs1YW7oV1mULQiktvT39Fi8Wl9x0uetGInCsBS/boPlRJaTt52DaGjAgKI76FSuExI6mQ6B00b9dzjzWl22ot2ZFjavay0lAWZ3QL5NJV1sJkPFayK8izR7o1qLx76Qr2HhF0mSeqPTWTpnQjtTR870BLeoHn7F7NOon1CBncQSfEriwqZmvFQtJm+JJB46H3x02w5TcB9v0iie00QyrdrILFSyu2WK/b98AK+IFmSpq2UXyMocy9s03uuzr6+Pmtz7wTGMr1Q/3c4kcW6hzJnCTrujw8T9DQtVnUVRXwatZLePCvebIZEj/b3XCeSLC4nhArB1Sh5BVG21TbGE+tVkN9ZbUT3uttSknwjsqcZ84PpyQ3COVTrNUi4kif4tz6QDa/+yvLhvZCQHgiuOsPWywfKH2ekmDd8el+DJTldydk7sYit4uo/jhRW3pvPVN3Dm0bdQu7i9rd4j65fGBNKpX9d6EwUyWH2HfVuHT44jHOOBAz46lHoI3PCyiDLi1eIEeiYzGPCLjOOQmDbq5PDvsflJ3w7wj1IddJXieHNWYd5OqL3QOx9FyIK8bN0H9kMB7g3M4lJFhf8YHeQrbMDyqFO+IglXE1HGQigdAv0CjhOw8u7M6bEybweu7Pah0fQ1Ct2cjZD9JKhYgkHLHRsizAxd0uv4d2FhMZUz+dK7VR74t8bc9qr2s/8aC6Bhg+BaiHCxd7Ohiz6Eq08paHfS5E63sJrzcEYQJPmSY5wB9DJRVcyCWxSGrwZ5ZtPNQ6jyQpaFeA+y0oYnXqUUuRD1rRUMvjiWuMT4kJsKi3ZkHQxafRUV4HmtuUFJSRhrloP8iRYYKkVZa0ocRyj1Hm69dSg9Oz+BQj4zN+EgYfcBIIkBzKd7Kic/ynHfInjJm/HZE0gDHIprXiwD5rQ1knO/P7WbhpdPO8HOOxAFcNHxAwWudfj535ujAGb5XBs5FcqoqVFee+czClGZVMvua7snq4avemz/6AFIFmWBlExAKMSvK6FkIXte//wJbSrJniNwYppcrTDcnU6Al7u2/xEPEaYB6MA3Eyr8t4fdOVpkS0Rk8uH33WZnMylsMgkKgP+y23WJ/ZGggQ3Psv58Z84rc2+EdWovvUzPBhtI5WLyQra6fI5Sg0XI5kPK60s680nF2qrvZMPaw/53zuvjn28M7xYNmQ/SAJzj83tlai7eJuY4zTY7szl1w7A1lGvQt4XumG41RO0ju1G0/P3+ZjTMgAI05AmOTSVphO7bH6gkkHHaJR865I6LfCGjG4dnthNtSJ7f1qrzocOUq8HLTPg3xLkt73cJSv2nv0091JvHsq6tSv9+KphXhgUoQK9vARpG8WT3uHF7xsDyGlBAShDU5pn7rFJ++NQVVx9kLSEt8YS6TkxMkK9k0ezVKpB7FSKaXeF9JAEmDK77j+/v0ew X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: fRikKTaExBi5h1bNc6ZOswu8JzRLG8p8iOk4r7vpFoEAw6EfbS/p52OTnqEloszv29FuiTrXnET9jI7eEcY/LJirzabgZIWAOq2The91axuSBnb77j4RDMVa5jHFC0CJ/+7o/PPGT39AKCzn+ncxWgq9X4fABuRBFlD42ZEpjVj9EhG/hoHfnYPLwz8gFKGyRIn0UbZC/0U9yt5vyCYdNRgOiMxQMd9+LpFkY9RmbG1k9BMdfRnf9JFn+ZIKoT0QGIk5FBfxNFmWU8Uj0G8rVtbIr/nKqmwyaudI4UWt6xKozJGj20IWHNn9ckMbmseINBLHLUXsuYuW9YxFXxxImq1vovZ4OVk1Tp/AeTMvVM8A4STpG90KO3zaYdBHlrE2gZhWVv9e8IGWE6dQ6n00snd+EHK+XLXiWZkMJDnY5cekqo1jV+sz8Lag+WDu3jTef9emGLfyye5nSzGwcNf7Ewi5BDz0kjxChyCBFNvHpodQttEOHq7ZpkBWA6m0mNvXdpVMREW/oyQULxH6zmbazM5/jAP9CGHVYe2kRjB1ch3O+lBMpFHkuB4laAXtEgtPL/2Z3h/QjjGWmuslgk8BezENGrPD5Y55ItpLmEs2ZJA6umXPW7cZDiE89V565lKu9ZqMnpvSAHHWfmjoU+yVBtf9ZzuTSgAlYy0bLn4OB2Pcl/C4jnDU+1id+/mhy86qM/t/KYTplK1KOGFXpjjQclmmmMfkvoRTyfZnogwCQKplOMPj7qOw7JzhRDUe5kHei8tklhEFmc2ZfNkApJoZ+D7APMzRvwA/KLlHcl34RbyK+0bvvWuul1tdsoRA9X51Lvdg/zVHBXVSioNtcRDwHXFh2mObF5S3Amu7+5+JRwhMktVKp8lMiWa7YXaIGmPLa+gPsOtBGgcd+JjTVNntgNH9+0nM/rm0YlI7ExQuaktITjqDiOeflqHJIvJxitY+hW5uK0ZUk3mBqGX5L5/E8WQJUk32RL/s3C9EgCPwSxEIokwiKCLH3Tt8Fq/h1TUluK3DAMRPmV80PPAKlMVcrIVDOnMssvsnD/FAA55bgeILYULEB/Mr0kOw4jMqY4X3xh2nx2glMW3CLR/dp48smakp4+XaDzXw2AWmgSr+YiiRqp3JE3EzQ4Ja1gcrqsdxi2NxLf15HVaiQNdp5/Li/ZAw1kaW2ycbgf42CbH7Q9peGXrl7r3dNlJxhTT+gABaISne4Ux3aK5eSt6BsReW9do311mNqlxzWgcKfhvvUYUbV5s/xTG9vToFIkQfAO1L4Wo6ITBpmqotY6hVS2xtFNtsV2vhKcWcv9sSX8URXkEhupJf1pSaatzhEE0O5+5oFieLMdD15fozNyQnby1HlatJfFu3t9ij6lhUTcrE7R4rJtQS8bKwNaUR+7K7s92VaEuNFNKIbuN3J3Re0/gVfQ8NanrpUQdM/F1dEenn0QBZ1J5lWoxTzyelYRyd0T9toN6EVbQwOxh0jbtBW76wfMSAB/ZDP9k5X5QV9avxkOfF/oK7ugA6U/JKI0xOH87jY17kwwvDPZqJVmPheRTZ2mdc2nBWbHignEFbf4d03DD2ucPSAmxHqP1LAKSVQiU2MgyuvMa4l5Sd45kLG1YKds68+NaPJczWI2RtFaelypE= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: c1502494-8d7c-4f97-6ea2-08dd441aef6e X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2025 06:21:03.4204 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: QCLuu/RriIctUlEveGSC5h6dbCpasZDR4MUcJJEAb0d7kHfnxcGHC7qTdyKO1of3I83JY8jwCHMNPioYQ8znMhZLNhwuGpaMWvdWGPitevPYXbbOnDkvcLLLandeBMCL X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB11036 Many functions uses below style for error return dev_err(dev, "message"); return -Exxxx; We can merge these into snd_soc_ret() which can use same error format. Let's cleaup code. Signed-off-by: Kuninori Morimoto --- sound/soc/soc-pcm.c | 96 ++++++++++++++++++--------------------------- 1 file changed, 39 insertions(+), 57 deletions(-) diff --git a/sound/soc/soc-pcm.c b/sound/soc/soc-pcm.c index a2caa146cac2c..ebe99d369ca9e 100644 --- a/sound/soc/soc-pcm.c +++ b/sound/soc/soc-pcm.c @@ -238,11 +238,9 @@ static ssize_t dpcm_state_read_file(struct file *file, char __user *user_buf, int stream; char *buf; - if (fe->dai_link->num_cpus > 1) { - dev_err(fe->dev, + if (fe->dai_link->num_cpus > 1) + return snd_soc_ret(fe->dev, -EINVAL, "%s doesn't support Multi CPU yet\n", __func__); - return -EINVAL; - } buf = kmalloc(out_count, GFP_KERNEL); if (!buf) @@ -460,12 +458,9 @@ static int soc_pcm_apply_symmetry(struct snd_pcm_substream *substream, ret = snd_pcm_hw_constraint_single(substream->runtime, \ SNDRV_PCM_HW_PARAM_##NAME,\ soc_dai->symmetric_##name); \ - if (ret < 0) { \ - dev_err(soc_dai->dev, \ - "ASoC: Unable to apply %s constraint: %d\n",\ - #name, ret); \ - return ret; \ - } \ + if (ret < 0) \ + return snd_soc_ret(soc_dai->dev, ret, \ + "Unable to apply %s constraint\n", #name); \ } __soc_pcm_apply_symmetry(rate, RATE); @@ -496,12 +491,11 @@ static int soc_pcm_params_symmetry(struct snd_pcm_substream *substream, for_each_rtd_cpu_dais(rtd, i, cpu_dai) \ if (!snd_soc_dai_is_dummy(cpu_dai) && \ cpu_dai->symmetric_##xxx && \ - cpu_dai->symmetric_##xxx != d.symmetric_##xxx) { \ - dev_err(rtd->dev, "ASoC: unmatched %s symmetry: %s:%d - %s:%d\n", \ - #xxx, cpu_dai->name, cpu_dai->symmetric_##xxx, \ - d.name, d.symmetric_##xxx); \ - return -EINVAL; \ - } + cpu_dai->symmetric_##xxx != d.symmetric_##xxx) \ + return snd_soc_ret(rtd->dev, -EINVAL, \ + "unmatched %s symmetry: %s:%d - %s:%d\n", \ + #xxx, cpu_dai->name, cpu_dai->symmetric_##xxx, \ + d.name, d.symmetric_##xxx); /* reject unmatched parameters when applying symmetry */ __soc_pcm_params_symmetry(rate); @@ -846,9 +840,8 @@ static int soc_hw_sanity_check(struct snd_pcm_substream *substream) return 0; config_err: - dev_err(dev, "ASoC: %s <-> %s No matching %s\n", - name_codec, name_cpu, err_msg); - return -EINVAL; + return snd_soc_ret(dev, -EINVAL, + "%s <-> %s No matching %s\n", name_codec, name_cpu, err_msg); } /* @@ -1319,11 +1312,11 @@ static int dpcm_be_connect(struct snd_soc_pcm_runtime *fe, fe_substream = snd_soc_dpcm_get_substream(fe, stream); be_substream = snd_soc_dpcm_get_substream(be, stream); - if (!fe_substream->pcm->nonatomic && be_substream->pcm->nonatomic) { - dev_err(be->dev, "%s: FE is atomic but BE is nonatomic, invalid configuration\n", - __func__); - return -EINVAL; - } + if (!fe_substream->pcm->nonatomic && be_substream->pcm->nonatomic) + return snd_soc_ret(be->dev, -EINVAL, + "%s: %s is atomic but %s is nonatomic, invalid configuration\n", + __func__, fe->dai_link->name, be->dai_link->name); + if (fe_substream->pcm->nonatomic && !be_substream->pcm->nonatomic) { dev_dbg(be->dev, "FE is nonatomic but BE is not, forcing BE as nonatomic\n"); be_substream->pcm->nonatomic = 1; @@ -1493,11 +1486,9 @@ int dpcm_path_get(struct snd_soc_pcm_runtime *fe, struct snd_soc_dai *cpu_dai = snd_soc_rtd_to_cpu(fe, 0); int paths; - if (fe->dai_link->num_cpus > 1) { - dev_err(fe->dev, + if (fe->dai_link->num_cpus > 1) + return snd_soc_ret(fe->dev, -EINVAL, "%s doesn't support Multi CPU yet\n", __func__); - return -EINVAL; - } /* get number of valid DAI paths and their widgets */ paths = snd_soc_dapm_dai_get_connected_widgets(cpu_dai, stream, list, @@ -2388,23 +2379,23 @@ static int dpcm_dai_trigger_fe_be(struct snd_pcm_substream *substream, ret = soc_pcm_trigger(substream, cmd); if (ret < 0) - return ret; + goto end; ret = dpcm_be_dai_trigger(fe, substream->stream, cmd); - return ret; + goto end; } /* call trigger on the frontend after the backend. */ ret = dpcm_be_dai_trigger(fe, substream->stream, cmd); if (ret < 0) - return ret; + goto end; dev_dbg(fe->dev, "ASoC: post trigger FE %s cmd %d\n", fe->dai_link->name, cmd); ret = soc_pcm_trigger(substream, cmd); - - return ret; +end: + return snd_soc_ret(fe->dev, ret, "trigger FE cmd: %d failed\n", cmd); } static int dpcm_fe_dai_do_trigger(struct snd_pcm_substream *substream, int cmd) @@ -2460,11 +2451,8 @@ static int dpcm_fe_dai_do_trigger(struct snd_pcm_substream *substream, int cmd) goto out; } - if (ret < 0) { - dev_err(fe->dev, "ASoC: trigger FE cmd: %d failed: %d\n", - cmd, ret); + if (ret < 0) goto out; - } switch (cmd) { case SNDRV_PCM_TRIGGER_START: @@ -2693,11 +2681,9 @@ static int soc_dpcm_fe_runtime_update(struct snd_soc_pcm_runtime *fe, int new) if (!fe->dai_link->dynamic) return 0; - if (fe->dai_link->num_cpus > 1) { - dev_err(fe->dev, + if (fe->dai_link->num_cpus > 1) + return snd_soc_ret(fe->dev, -EINVAL, "%s doesn't support Multi CPU yet\n", __func__); - return -EINVAL; - } /* only check active links */ if (!snd_soc_dai_active(snd_soc_rtd_to_cpu(fe, 0))) @@ -2768,7 +2754,8 @@ int snd_soc_dpcm_runtime_update(struct snd_soc_card *card) out: snd_soc_dpcm_mutex_unlock(card); - return ret; + + return snd_soc_ret(card->dev, ret, "%s() failed\n", __func__); } EXPORT_SYMBOL_GPL(snd_soc_dpcm_runtime_update); @@ -2842,10 +2829,9 @@ static int soc_get_playback_capture(struct snd_soc_pcm_runtime *rtd, int has_capture = 0; int i; - if (dai_link->dynamic && dai_link->num_cpus > 1) { - dev_err(rtd->dev, "DPCM doesn't support Multi CPU for Front-Ends yet\n"); - return -EINVAL; - } + if (dai_link->dynamic && dai_link->num_cpus > 1) + return snd_soc_ret(rtd->dev, -EINVAL, + "DPCM doesn't support Multi CPU for Front-Ends yet\n"); /* Adapt stream for codec2codec links */ cpu_capture = snd_soc_get_stream_cpu(dai_link, SNDRV_PCM_STREAM_CAPTURE); @@ -2887,12 +2873,9 @@ static int soc_get_playback_capture(struct snd_soc_pcm_runtime *rtd, if (dai_link->capture_only) has_playback = 0; - if (!has_playback && !has_capture) { - dev_err(rtd->dev, "substream %s has no playback, no capture\n", - dai_link->stream_name); - - return -EINVAL; - } + if (!has_playback && !has_capture) + return snd_soc_ret(rtd->dev, -EINVAL, + "substream %s has no playback, no capture\n", dai_link->stream_name); *playback = has_playback; *capture = has_capture; @@ -2932,11 +2915,10 @@ static int soc_create_pcm(struct snd_pcm **pcm, ret = snd_pcm_new(rtd->card->snd_card, new_name, rtd->id, playback, capture, pcm); } - if (ret < 0) { - dev_err(rtd->card->dev, "ASoC: can't create pcm %s for dailink %s: %d\n", - new_name, rtd->dai_link->name, ret); - return ret; - } + if (ret < 0) + return snd_soc_ret(rtd->dev, ret, + "can't create pcm %s for dailink %s\n", new_name, rtd->dai_link->name); + dev_dbg(rtd->card->dev, "ASoC: registered pcm #%d %s\n", rtd->id, new_name); return 0; From patchwork Mon Feb 3 06:21:08 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 13956799 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011065.outbound.protection.outlook.com [52.101.125.65]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 1DD4E1D7E4C for ; Mon, 3 Feb 2025 06:21:09 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.65 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563672; cv=fail; b=b9husFtsOD1oMDEq7JvJ79oBK4Ga85CRzjhjaQgYT3/aS6pV9T4qp30FDDnwPt5489HlBjv2xygnTTajb3jKoU3PV1JRCJ9WzoMOBmYgjxHDzSq3/rJNwoRbjQ8vHm6x8fB3YK8Jba2VwyKZc2C6KYiR5l3C/T3ywDDk7GelddE= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563672; c=relaxed/simple; bh=2N7R+/1XE0pMg+3cGG7F9YaQSlyeBrfuKJCNErxAtwY=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date:MIME-Version; b=hPeXnPCat2F2UEvemSMbdCLYQhdNqAMpoyLxcLWHYqz6QLEPvniZw50Xab5ycr/AYqGxPKt/j4waxpI2YGUG1IV+icoDBOVh4f55T7fAhQsxj7BaVyScPl17YZrgtQynMDoiMiK7zktSHSBnoeQe3NFAnUXSW8NzXXKi2bHis6M= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=Vmn0MtZP; arc=fail smtp.client-ip=52.101.125.65 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="Vmn0MtZP" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=Od0XvngcgF7wckB28ubjAdK58CEnfLQ3lCjoZKw+xL3AQFzEpjyfMIDWb+zfgeiKCXFWWzCvgJH3e0OEFnvH8IbGdyHuq8nS/oepRaG8SSHzFlaCxnqHZ+f+h4UidOPnLOVAM//xw3gejuQYET/k2M0oqaHJTz97Dgv0yQPCEjHsGrWm4Z432HzIe/vINMMxXC6j46yi8YvZ9hIHK3jipVqn+1iM3FXS4vn48pbARY8Pfb32t6CTV25tIM3QsmYxUcdBI9QpoWFuvgZvmMdPnssTHIah8ASBeYenp3Kq4T2vEmQZPbUAu4qYyNGC4gnfyk/egVRI5sYJSBIBhUcvLg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=45ej9izMZ7IL0v2qHPl//3PtYamrYKGW29CuNl2lVpk=; b=GZ63NJlz9wjzJVmONBkziAuZ4O0C6K3U8zkM6MTgai7M077Wfi6ezH/aElPjwXSVtUjwV0CEvdwadpUL6NaPEXpiN9HTq/0rHNcT7wG51zk9gaTAYGQSrijlxLpHM1EutlPqLn4b8EDtvGgUM2b6D7V+Lkct2kqt5qthYPWgaaxXmfO8Z2r4HRJFkHEaeC2yE6CCltp/tdIqlP4Tq4nbx7x0Kkknwkkdg9cqaDeAVKEPpAAU2oFMHpWqErSRWKuaO0qodWZk5NtUThFdAu9KwaKzoOaDf2yQ/RAshYbYbAUxC9GljURHKgVyZ+XpJpj221zbxN5IDUGotNMoRRvLtg== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=45ej9izMZ7IL0v2qHPl//3PtYamrYKGW29CuNl2lVpk=; b=Vmn0MtZPmJCWHIbPcIKykIMR+HG2POiElfTSQNmkw8UEp3JXl4iICqYAxiAZhu41fr3h5o/BX/12IeQUCKEcbyb9emnmy9JjTeaO+z17kLAJN5skohtpVApUhnT22zaxlwgrFDcRNZkSq3DXCxhmjMbDHcz3ifL4EepKlNXSC+Y= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TY3PR01MB11036.jpnprd01.prod.outlook.com (2603:1096:400:3ad::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Mon, 3 Feb 2025 06:21:08 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11%5]) with mapi id 15.20.8398.025; Mon, 3 Feb 2025 06:21:08 +0000 Message-ID: <87y0ynr1kc.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH 3/6] ASoC: simple-card: use snd_soc_ret() User-Agent: Wanderlust/2.15.9 Emacs/29.3 Mule/6.0 To: Mark Brown Cc: linux-sound@vger.kernel.org In-Reply-To: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> References: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 3 Feb 2025 06:21:08 +0000 X-ClientProxiedBy: TYCP286CA0259.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:455::7) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYCPR01MB10914:EE_|TY3PR01MB11036:EE_ X-MS-Office365-Filtering-Correlation-Id: 9fdb6cb6-35d8-456b-d999-08dd441af253 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: 3vSQeOEjk1gEhUFodwdQ5V1ASwhCqyhMflDMtP4gRWaPDkzYwUOAfEmKf3SvKUh91HGQsw3iYclPEZvGIVaQfwq4QNaQTGIPltMrk3pWx+g8UcnhzQVv0zrPH2PPEgjIfQH1oiq11Z2UJq1KYqgSbQAMEqoyHpLAWG7hRSDB+PqyH89AEiWG8z76us7tSwJ1kG8/ngWGBfg0PMU3wAOa0jWpK8bIJ15o6YMH7crrSrr+2eivNp+cfaZpap1dlC7xxzVnvvi8EnkZTBgqTDrqMzh4YopTRyCj6T8rxhgOVEGUNxn3hUxIR4AQAYxwpFjiZ6kGEgzycedOnIUIyZuDeysULtclOj/mVimB5PERHaGJJRYC7GQflqeZlOdM1rFyTgXgqumVrj9uUAorU2igM/AlMGDPazwUiPTeigFBSX/CltLrReDdVCoIesKj0E2di93yq4X8ceh5uComW22bAdiL88S6fih/vWJKurw+XFO/PK3wVzdeNR1vqnj5XwNF83xuEl5mv6KlUy/hV0lykCUajGMPU0Uc5U5j/ZXb7dr8eYco8CgoVY4OjjR+su95H0Y3BysiMKujWqj8bFsIIJkfWI7gK2D7Pn/iJELLd/Oi8o+yKzXrMxiFqV/1uW20lAkCqmtSwPS74aT2tgrUT1JMu4lIg6sL8kwhURlmxfBrJZ8Aiul5Hbz9CZgxN1eU4Ngq+PjEu4cOTtcSidefjaHLZvDsE/ycVLEVbQw/wjQBCQc0cHX5FNjxnMDqhF/svZu8xX/+/cD25CvWcp4dSHmwXhZEnkokzYIkNQ8jnJNpXUXW28yn0XshEumyzC+qrg2uOQ5YniTum4GaTZvf/6Q2+fEouK3XsSdBrsSaquX05paOqw8zuWUCFwaz7AxKykWFMhIACs0cVnGXmyaWeDp9tnzp0OiogJiE8Ex/xQ95GhHhW7yJDfwAmg0EHNep8Nk5e3css63mHF/2e7e04mQO7mHHz2jL9jRazz30rQQKDS0GOK6GOJxa7Kl/+hwCragwuoBlR+D397MDTg2+F5g/RO09S2n2n/Ib6aXq5Q/aV249lLsEX02yXF5wb7rbhx7msD43SZ9eU12Buame5HarAYur+0XvqZkH3Vot/s6IoaD80OeKwwhqlC3+emU5CetrjeaNlZdSzm2u7d814AN/tF+fcifJ7ItD9SfKrtIBv8OWx3diOKygpxOhiu8o61eRA2AxsWb+oTFu7YNv8exIri1zYjbjawvMiqUsfax49+poE+gcEgvzVe3jWt63AMmpD8UUSsHyLxS/Gxp9gcLitXqVmNlvro1RV0V2k0YJ9hY1o9m8zOKrisCEcmjcQQrv8XuzIsnBmhS3PjPRSEE/r+/ACWykqheoeLUj7MMvA9iBVCJwnZUy/ZtdS25hU+fGWUQfjBR6+gPKBZUJ5LiFEMrP3mlJunqqanhmsDeCnhdDKW6CEd4lTf4LH0BB X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 8qbSgTj9QroNB+w0HzjnSHDaccu0JcdVTRw+vQyP4mSi4T82oc+WpTM0EFZHDjbfa33CoUsb03pzQpzw+lyaXWcthYqJlQ2OPT6thrC+ENv+glK8G08SIvVOSmxVyH3ewFC863o8SxtREPCR62HQs7eC5hJNaUvcOkbreTMoRklIkFAk41UaHAl0IGEc5CZoxZmnW9qb0IlbswRfFeWctv4+rAgi/jsq0GLOO3/SdOPvrLrk1LBVRHzSlZFPU3DqZYNWAWGpr1FlDCWfCXFxw0MGEzOmPKqqYfYsZJ0vAGER/KNdRtjqISKVZIva031mq6PZB319sf7hMZqlbP7x6rWPz9llcOruzyb2N0rqQVuyCh9K4o87knpB9IG9lqS/pC0WxEp6QOW0FFoWWs6LmForW1WoCLCgolyXbIQnbUCka9CzCNMROUsNaD5KS0XPkRQByVRvRx1GXQfiI4nNsQXvHZJT3IpRAZkmfApahs8WrajQkZt25vTf9+jGQCONF4nm2myFrIgeitZrgWug6UcZJXMY52+NIeYG/99LxFCNoq+YxSSr7cKsqly/VQsM7KaZ2LYQmCDGM8v3JfIS1ucYuge3n4NCcxQGpb2Xl//zwW5E8TJHAQGUB7PDDPt2pL8SwEDSTA5n8X92kChsFREw+7SmGwyIZngD+3oLRdOjLs6seLm9p5SeiC2M3UUHhIDbfkII0vqkwZM1eVm0zjAN3QcKe4OAxebwP/9NoWletg69hV25Y1ziO8xe08CnQ1aAA1Cr7up01eHHEDYfQGsiBwwmzfAPqxQX6fgp1hCBHFqASuO/1UDHw/nz1ASlu64/XV5WJ6jb4bdjBmX143HSP5bq72bnZjHZvJOmWq6bI9iF+MjtxK/UVbqxWHpw6EQZXCw/iN0mBJ2XBHqZP2OvQUxBNqN+q0KDKcXOzpjR3ZD2gIE/tRcI2JKAQPu1zOyxWc3Cp+4wfwNvkOglKG3SrSeIhuhUQEbTPvZmGSwuJ38J4XV8K+xvtW6HPDrlTEYjAt21JDcBrku9O8bI3ivb1ilxsEY3f+yaN/3QyWEQr5n/RgDa7nI5TVWDBSPqKWJ1E6SvGW8a7kU82ZYJW/21ypDj2nDirBfuyAESMPzMhnMHw3o4Mnfy4j656eNm4ggbBmlib39c+YU1Y7xQJ3+1eOhbs2ueKb6qlrAvnEBwQYy/ojSFvl7bo4w/NtGFmEBk3vaDwmK0OjFWao8TU3wVkwO4TYEdwOomC20tICzuIcNJ/F+9gEl8oaorsBXKh2u2MyVV6QedXSUUY7i05QjDfTYvlKK5Q0JBtosOtZTeW/yTgBw7z2SDvZuC3/wQWbHnZX85t4inPoiQ8kRHCQUcPAbtuoPjNf+95JZUSq84gWLDY8k96fRFzi81FVd42FOy4Agw4Culy6ILewJVJBZJ/jZUwUuAb0D/FG4ue6wV7oju2bB+8QFhk4EJoz6VuxWUw+kh+JNUv6CBuOzoEcrgnzeYJWzKBrd0Yrey3IaJO6HxCtTHnA9E5NOVBSYOwEMmgH1wpMwcIORxxoJ4nLcO9Xab684tsjUWpaIpsz9YGKr4w3B+sxIRK9KSIsXr0P52GERFDqJJWxhp+GlqNPQqeDBVfEBGY0TL2einQcI= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 9fdb6cb6-35d8-456b-d999-08dd441af253 X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2025 06:21:08.3047 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ITcRA29T6eHQurpov5WCgw6yyHYRsHWpSZ3Jdc52osZXAz+Aw572jnk3D2xS7BQQ5DCCAVbhNyPFCI1yxHMNfCFJM71xDQ6r5zR42C2+93I1SFHaOwgaUrMipdE5aNeG X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB11036 We can use snd_soc_ret() to indicate error message when return. Let's use it. Signed-off-by: Kuninori Morimoto --- sound/soc/generic/simple-card.c | 130 +++++++++++++++++--------------- 1 file changed, 71 insertions(+), 59 deletions(-) diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c index afe7e79ffdbdb..004fda4504c42 100644 --- a/sound/soc/generic/simple-card.c +++ b/sound/soc/generic/simple-card.c @@ -29,7 +29,16 @@ static const struct snd_soc_ops simple_ops = { .hw_params = simple_util_hw_params, }; -static int simple_parse_platform(struct device_node *node, struct snd_soc_dai_link_component *dlc) +#define simple_ret(priv, ret) _simple_ret(priv, __func__, ret) +static inline int _simple_ret(struct simple_util_priv *priv, + const char *func, int ret) +{ + return snd_soc_ret(simple_priv_to_dev(priv), ret, "at %s()\n", func); +} + +static int simple_parse_platform(struct simple_util_priv *priv, + struct device_node *node, + struct snd_soc_dai_link_component *dlc) { struct of_phandle_args args; int ret; @@ -43,7 +52,7 @@ static int simple_parse_platform(struct device_node *node, struct snd_soc_dai_li */ ret = of_parse_phandle_with_args(node, DAI, CELL, 0, &args); if (ret) - return ret; + return simple_ret(priv, ret); /* dai_name is not required and may not exist for plat component */ @@ -52,11 +61,12 @@ static int simple_parse_platform(struct device_node *node, struct snd_soc_dai_li return 0; } -static int simple_parse_dai(struct device *dev, +static int simple_parse_dai(struct simple_util_priv *priv, struct device_node *node, struct snd_soc_dai_link_component *dlc, int *is_single_link) { + struct device *dev = simple_priv_to_dev(priv); struct of_phandle_args args; struct snd_soc_dai *dai; int ret; @@ -70,17 +80,18 @@ static int simple_parse_dai(struct device *dev, */ ret = of_parse_phandle_with_args(node, DAI, CELL, 0, &args); if (ret) - return ret; + goto end; /* * Try to find from DAI args */ dai = snd_soc_get_dai_via_args(&args); if (dai) { + ret = -ENOMEM; dlc->dai_name = snd_soc_dai_name_get(dai); dlc->dai_args = snd_soc_copy_dai_args(dev, &args); if (!dlc->dai_args) - return -ENOMEM; + goto end; goto parse_dai_end; } @@ -106,13 +117,14 @@ static int simple_parse_dai(struct device *dev, */ ret = snd_soc_get_dlc(&args, dlc); if (ret < 0) - return ret; + goto end; parse_dai_end: if (is_single_link) *is_single_link = !args.args_count; - - return 0; + ret = 0; +end: + return simple_ret(priv, ret); } static void simple_parse_convert(struct device *dev, @@ -149,19 +161,17 @@ static int simple_parse_node(struct simple_util_priv *priv, dai = simple_props_to_dai_codec(dai_props, 0); } - ret = simple_parse_dai(dev, np, dlc, cpu); + ret = simple_parse_dai(priv, np, dlc, cpu); if (ret) - return ret; + goto end; ret = simple_util_parse_clk(dev, np, dai, dlc); if (ret) - return ret; + goto end; ret = simple_util_parse_tdm(np, dai); - if (ret) - return ret; - - return 0; +end: + return simple_ret(priv, ret); } static int simple_link_init(struct simple_util_priv *priv, @@ -183,7 +193,7 @@ static int simple_link_init(struct simple_util_priv *priv, ret = simple_util_parse_daifmt(dev, node, codec, prefix, &dai_link->dai_fmt); if (ret < 0) - return ret; + goto end; graph_util_parse_link_direction(top, &playback_only, &capture_only); graph_util_parse_link_direction(node, &playback_only, &capture_only); @@ -213,7 +223,9 @@ static int simple_link_init(struct simple_util_priv *priv, dai_link->init = simple_util_dai_init; dai_link->ops = &simple_ops; - return simple_util_set_dailink_name(dev, dai_link, name); + ret = simple_util_set_dailink_name(dev, dai_link, name); +end: + return simple_ret(priv, ret); } static int simple_dai_link_of_dpcm(struct simple_util_priv *priv, @@ -290,7 +302,7 @@ static int simple_dai_link_of_dpcm(struct simple_util_priv *priv, out_put_node: li->link++; - return ret; + return simple_ret(priv, ret); } static int simple_dai_link_of(struct simple_util_priv *priv, @@ -330,7 +342,7 @@ static int simple_dai_link_of(struct simple_util_priv *priv, if (ret < 0) goto dai_link_of_err; - ret = simple_parse_platform(plat, platforms); + ret = simple_parse_platform(priv, plat, platforms); if (ret < 0) goto dai_link_of_err; @@ -345,7 +357,7 @@ static int simple_dai_link_of(struct simple_util_priv *priv, dai_link_of_err: li->link++; - return ret; + return simple_ret(priv, ret); } static int __simple_for_each_link(struct simple_util_priv *priv, @@ -443,10 +455,10 @@ static int __simple_for_each_link(struct simple_util_priv *priv, node = of_get_next_child(top, node); } while (!is_top && node); - error: +error: of_node_put(node); - return ret; + return simple_ret(priv, ret); } static int simple_for_each_link(struct simple_util_priv *priv, @@ -479,7 +491,7 @@ static int simple_for_each_link(struct simple_util_priv *priv, break; } - return ret; + return simple_ret(priv, ret); } static void simple_depopulate_aux(void *data) @@ -500,9 +512,11 @@ static int simple_populate_aux(struct simple_util_priv *priv) ret = of_platform_populate(node, NULL, NULL, dev); if (ret) - return ret; + goto end; - return devm_add_action_or_reset(dev, simple_depopulate_aux, priv); + ret = devm_add_action_or_reset(dev, simple_depopulate_aux, priv); +end: + return simple_ret(priv, ret); } static int simple_parse_of(struct simple_util_priv *priv, struct link_info *li) @@ -512,15 +526,15 @@ static int simple_parse_of(struct simple_util_priv *priv, struct link_info *li) ret = simple_util_parse_widgets(card, PREFIX); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_routing(card, PREFIX); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_pin_switches(card, PREFIX); if (ret < 0) - return ret; + goto end; /* Single/Muti DAI link(s) & New style of DT node */ memset(li, 0, sizeof(*li)); @@ -528,19 +542,19 @@ static int simple_parse_of(struct simple_util_priv *priv, struct link_info *li) simple_dai_link_of, simple_dai_link_of_dpcm); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_card_name(card, PREFIX); if (ret < 0) - return ret; + goto end; ret = simple_populate_aux(priv); if (ret < 0) - return ret; + goto end; ret = snd_soc_of_parse_aux_devs(card, PREFIX "aux-devs"); - - return ret; +end: + return simple_ret(priv, ret); } static int simple_count_noml(struct simple_util_priv *priv, @@ -548,12 +562,10 @@ static int simple_count_noml(struct simple_util_priv *priv, struct device_node *codec, struct link_info *li, bool is_top) { - if (li->link >= SNDRV_MAX_LINKS) { - struct device *dev = simple_priv_to_dev(priv); + int ret = -EINVAL; - dev_err(dev, "too many links\n"); - return -EINVAL; - } + if (li->link >= SNDRV_MAX_LINKS) + goto end; /* * DON'T REMOVE platforms @@ -575,8 +587,9 @@ static int simple_count_noml(struct simple_util_priv *priv, li->num[li->link].codecs = 1; li->link += 1; - - return 0; + ret = 0; +end: + return simple_ret(priv, ret); } static int simple_count_dpcm(struct simple_util_priv *priv, @@ -584,12 +597,10 @@ static int simple_count_dpcm(struct simple_util_priv *priv, struct device_node *codec, struct link_info *li, bool is_top) { - if (li->link >= SNDRV_MAX_LINKS) { - struct device *dev = simple_priv_to_dev(priv); + int ret = -EINVAL; - dev_err(dev, "too many links\n"); - return -EINVAL; - } + if (li->link >= SNDRV_MAX_LINKS) + goto end; if (li->cpu) { /* @@ -606,8 +617,9 @@ static int simple_count_dpcm(struct simple_util_priv *priv, li->link++; /* dummy-Codec */ } - - return 0; + ret = 0; +end: + return simple_ret(priv, ret); } static int simple_get_dais_count(struct simple_util_priv *priv, @@ -683,17 +695,15 @@ static int simple_soc_probe(struct snd_soc_card *card) ret = simple_util_init_hp(card, &priv->hp_jack, PREFIX); if (ret < 0) - return ret; + goto end; ret = simple_util_init_mic(card, &priv->mic_jack, PREFIX); if (ret < 0) - return ret; + goto end; ret = simple_util_init_aux_jacks(priv, PREFIX); - if (ret < 0) - return ret; - - return 0; +end: + return simple_ret(priv, ret); } static int simple_probe(struct platform_device *pdev) @@ -715,20 +725,22 @@ static int simple_probe(struct platform_device *pdev) card->probe = simple_soc_probe; card->driver_name = "simple-card"; + ret = -ENOMEM; struct link_info *li __free(kfree) = kzalloc(sizeof(*li), GFP_KERNEL); if (!li) - return -ENOMEM; + goto end; ret = simple_get_dais_count(priv, li); if (ret < 0) - return ret; + goto end; + ret = -EINVAL; if (!li->link) - return -EINVAL; + goto end; ret = simple_util_init_priv(priv, li); if (ret < 0) - return ret; + goto end; if (np && of_device_is_available(np)) { @@ -795,8 +807,8 @@ static int simple_probe(struct platform_device *pdev) return 0; err: simple_util_clean_reference(card); - - return ret; +end: + return dev_err_probe(dev, ret, "parse error\n"); } static const struct of_device_id simple_of_match[] = { From patchwork Mon Feb 3 06:21:12 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 13956800 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011053.outbound.protection.outlook.com [52.101.125.53]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E6A6F42A9B for ; Mon, 3 Feb 2025 06:21:14 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.53 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563677; cv=fail; b=uFFuGm8eIqoRUy/P7LkOT1zgfU2eDOgsF7Ea6wbBUikfTda//3NlWfNB1/LQdvcWU7fB0HHMJldebnD9UvaE3yA4++96rlovIEh0Fvi//Zg8/ZGvlb6oHNgXOUeGB8FOLflOJw2uRtZHHr8vI1/MdiYNXikyT0GHhFpX3ZqXLEo= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563677; c=relaxed/simple; bh=bklo2Cy6XasKkCBkTFuljKlqVcGEZ3Pm7Z5W2Cn2Q0M=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date:MIME-Version; b=nhTePBIjABMgQAmDshbQ1l6oUkyxZSvnzTXJt08XwS6v3ucdggnmncQa64C/vNU5HzQL0lqu4RZxxq4tFRvBOHG9VBltoS849A+oRJIHJJXZJQxCIw0r4KWiYFfR4UsCyLESB1JkIw7gFtwv8KQPjHTrZuqqnUqx9xVYWC2ieoI= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=gDtYHlcX; arc=fail smtp.client-ip=52.101.125.53 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="gDtYHlcX" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=RxDyaKaoynjo98Zxzrd+drqWEbc/XJ/V+a9zABDoAOcPRr7fRcfYr6WgyfEB2g+wr3y891bHFlSIQpWURzJvOwvIgl3KOk1tq3zfe3Rge8NYDTExmDRnCNUEQjYegvYnph6VS4a9wbIFWZG3gASsGpGUNd7m3CmgU7P/feLk/wHZzmkmvylBbl4y+orPqpEADG3IgAzUB/6DBAh3TiBAGucrLRlVK1LNnKG1ZE7iZfOGNC++wgcwa1wRYDUS4ACynva+7sj7tVT/bCI0kyo3KtF8f0g+SYdgZTDSMkAtzP1Bu0TIUVuP2bBU6YjZRFVoLfNd3KSu5KCoZs9A+89Otg== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=PasvSKpzQQExdlIwY0+XHI8GSwUwRkhp+ceZjXyL9fM=; b=PXFs8RGWIrP2hLlMe6dK+NRGuquLVCKxp7RS6+vHEY5/+rNbjn7e3cdOhyHw1SdXVGXfiLIMuzPTuhYFB3G1aONpPJ6P031pfcPIH66YSPaGnXYeFVpFEAJ4DMCQSObLUovwTWR7aUeOKp3aoZwXb2cI8JBW7jlfKxeZZKsJvyodxM1y1i696QIMYAAS4k+Xl+0FUuDBLBdVmwwG2IM3NHIbzC9k2rQ9DStVERP7J2zMDleFmTfVIu6HhWhQHcgpB+LuRMXmApbzwKywPEEO72IHZ22x0gReKrcrYBRkzrB5fflRtm3PEdqzpOQ3M6e0ecJ4rTcsfWzIZLPnmajxZw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=PasvSKpzQQExdlIwY0+XHI8GSwUwRkhp+ceZjXyL9fM=; b=gDtYHlcXqRFxnkEKBZd3CI+6p9ULwAetYimFk4oCvzr0HeJq5dTf12HI93MINx5wf9YLD6evXSrTn1SOUmaq0Kz95M8bF33UUMTwacEQ1s8pIuA5b38XzqKBB0sIKQMB3+/GFHOQTi8b/qVYbA/GhW4H+x+MefDbcLWNoXo3w8Y= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TY3PR01MB11036.jpnprd01.prod.outlook.com (2603:1096:400:3ad::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Mon, 3 Feb 2025 06:21:13 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11%5]) with mapi id 15.20.8398.025; Mon, 3 Feb 2025 06:21:13 +0000 Message-ID: <87wme7r1k7.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH 4/6] ASoC: simple-card-utils: use snd_soc_ret() User-Agent: Wanderlust/2.15.9 Emacs/29.3 Mule/6.0 To: Mark Brown Cc: linux-sound@vger.kernel.org In-Reply-To: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> References: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 3 Feb 2025 06:21:12 +0000 X-ClientProxiedBy: TYCP286CA0184.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:382::7) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYCPR01MB10914:EE_|TY3PR01MB11036:EE_ X-MS-Office365-Filtering-Correlation-Id: c957e2e5-7b3c-4d31-340d-08dd441af52f X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: WoVHCWmuhXvICoiaMZMulUsS2w1g4gy4wzeraglr9NnmxCAwaw9idXP8/+cNXBMfDt7xt6YAW4K4QYWU1v8XHyLC4w7CkjqJorIcX4WFFY0I8NAPgEPj+Rn1RObaOhNZB3KavQ1NNwfdfaEHO2EH7j8McQuC2ND4vphe7AEgFtnLev0EKBOwSI0u+ndOO0IcPQZD2lu22QhUgdEKLNTNrhHuB6MmAvTDGetwKSX3/1DF5xNA0IOBIQhau/7yqwe0PLH+lwxLMzvlqrOYG07DVBaDJMo/rYPNBahTA3hIHMOKyOrFuhAt8VydeW4EwEgfZU44pNYYS+gtrtHNAUh0MzWLei6/LTFB7kCgSfghn5gHfu4TFs5e1S4IpFwS3jMmPdMJqZAI3H+aBMJPJPbz2zBISD1zCKA4aR8VkvjDnVr3lKWRFWKxw15Cv72MHKf93hIzQNU1N8Je6PEw1qbmrOELU3vkNKFYdqqCxghXE/RBWO09teLLwS9oORlR8+39T4YlDq/FLbD0e0tBD+kXi0z02/Mn+XGNKSxq7YQ/CzCcGPUkcRTLeBU8/Z759J6NEV8CS8VRzIMgYv65QZ9E5pHLNAtXdyxmqghFsEaOWOkgn+thqRDB11lG4rwHUkZLWBWE9zHBQFhHv2EFdhjjhResFLsBcf3DwSJD+fh7MdiL3QrwCoknW6euSF0w6QS1GjqAoo3qaPkbVlPQKUwXsgQtANYZfTaYxktZBnn74nyzJOTvfK5IzfXPf89QzI/vsy5S9qYseqJOAjxldnfN+FNlxIHMIh/QbiZN6va5bSjF6BoMIZ5yZ/eupMpE3I/bFh9FubRkN9BDiETpDmQK0uDjCangHFvHAfAZDITKitYA/Mgp8qVkq/1uw1I5ZiJjUxEodeFSbogP0H8mQRfQ9o7UmZZ4Oh3pBwbvedGbuBEtJBOzIR+r8ddPxpqV5aRJcD9rDNKHgEbAGyUC2saMeekjEH5I1IbOU08EfhJ0S/XFsau1Yf15z5brxLaCbZbF2XakN8BEK7g88DQ+In0jTmTP6Gb+qpSAePfkCBdnaX76EhOpFga12Jos1r2ejlAx11knpoHp1+cRdPSJVSnhwdWMIf+Zi7/NRBsL26BzcV+XBGruI55exZjKfPpKEF7dUxwvNYQl2Z6qz2SFXU6YU+Z8CnyXw19o+sOf9adXTPSmJsViSadASI7yTzH3f0VnFZigQotLd7CJTJ9WxV8+ZON2H9d10V/HSOeLShx4/EBqAeHTFT4Xd/v9KVdazfbvwZGCKLxKq8vZJvixwmPCU2WBpupzN6032S6t4rsyQw+ipQqQFoWdIEMM/jY0K1PQlc+cxXaxLexykneDNUlLYfb+vEgip94QtgCYRdpbbobYelRs7S9H7+Cngz7zkyt50v5L9eys508659gZi62eirHzIF5FUHAo/UmN50M8XKdnlxcXz74+4w4Z8HNu/46m X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: DA8WTt/+mj5JR6gYjhmvxCwLdFODixN8vuFE7ShNWBFdb2Pd49egSk+6w8wnqf/QdMsWusakMWQqR7DFaaq4WJWPbNAmHeq+yyGj2jluBDDOrNCqb3VaYMGx0JvQNt1jVv3gzwgxioUEgEKs953UNo/lhWHbSQQ5D5xRyLgqUVPK44sTXMk/2qxgu9IHvKZNBVSuZ9VPCP6vbC8Rsp8b3YHIGCwKuRRwX2qNUE80FaMaJDMi9zA9rxZ2B26K29pYGdQ+fmgSxMlhhJaBc42oRhJuFytHeuGxiMVKXggNjsvCnmpBPsYpphQG9JebTea07JWiRFeknx73gFF3WYBG8TFlkAtvJS2RgcqwU+OW0xPRSE4ug+9JVd3I2SL3JwpClSIRFOcoawZ82j5jqlNFO4dHrGp+x+ZHzfshgaOh9AL7K8uXhg+koFgPBFXE/A95P8dFtkc9mEHQk27l0cJKMurL5v1s5lHG9WbWYt5BQmrVltFcsfWasJNvsSocmTrwRRTI0iNRfq038NFAgkbYmVzEtdODqBn1tBnv6NPvhEzn7leSfhUVoSLALb8sxe4yLcY1/m6iiWtWh1m+ZoJjM7ihiQLzZrgsiislkVyVvSVu+dRV+Bry7M3ByDZxUsqeBXbkH2hbTzSnQA7ZveL0YdaWMmUbQMjx4YMBdfgvVCeOGR91hl8qqEAMzjrtkwyhk9UdOcEwbuNw8N/7vnV7rW90H+Obm/uisyj3Ll/oF9PVDBxuRvUh0ZtSi/D7MQn/Z95UvtOZLhW8BdfoKZPTRKcKZVK+JgvhoQLh6ANsgWHWsbvqEDbJASdr+Cn2Jvfe74F5Jy18KCvLx/keiZ/uzzRnuySc8kLuN/MOKv9ZYnmWyMAzFM7PPTynZBVwykucp9HohlSxIX4C8lN2kipXtNWB/mEo+B9WXRgBZKXidCDduH4IcGX3yKMyVTbY6xhq3mh5YmbUISkUqyu0DO3IpQZYJ/9JUsRqlPlkC66VC6Z04sdZGlBGGgcujGICbJagG1somDyDa9pL2Wp9t2GWJSvsIbcsHztq8JUGtwsw8IbnIyofg2+qfEs5ktWjDYaNDGLzQVzPJhYjtHid2OI5Tj47Em1JF6wCqzm4XbOt9BD3twwZEgM1tEHVLzoo5xxsHHK/B9BcQ8jtZAOlen/K0pAReUh8ZCx++pymntPp0pKsfTu4jkkc5sqNG01+9bWkjFCZMZWkUxp4tNARgS4K8O1g3cFj7YP61LbKOnJhgnN54LPYFI/A4t5lDZ/n/KHxGUBI/CKIGkio0wPyLS3+6JX/jKmm+5K26eYsC5drU1AzrdTGTkKWEQMB+WLjInd4DA8XDwH5TvHv0sMBWMi8KGjR/12nbx4GVp8trlVVxNEgvFfNvnGB0e9ClLJjYAl2uwMTAXk5DbHm31CzGfsco/lUjGLy5tBtyGmuho9Lm595fkw8ppR8w4TgUs6aTqn7k9hO/lggj82GU9H6WwkW3TS+AZO8uLlUwPTcp9IlPj3hyxLJGSetjN4tFt2SmcKcNru3m7oEf+//MSiqUxcEUN6OZ2MoGJHAG3wipaeW4xxqXj1aDezeR889tMRIrjssyE+Yh+Btw+RaMwKduaHCl8R875LkYG2NWVnDhILb43Q= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: c957e2e5-7b3c-4d31-340d-08dd441af52f X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2025 06:21:13.0698 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: /GnqHWDg4PrphV8nxqCaA/6/K2qlChN27Xod1w6GKr9n8xldn1zUUPWnEKZxOSKuj/FZNjyeKm8E8rUuBVGTj9vSaAkvn3apxwg6Q6bxgVLvnMvkYAmoM52lxfUZPuRr X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB11036 We can use snd_soc_ret() to indicate error message when return. Let's use it. Signed-off-by: Kuninori Morimoto --- include/sound/simple_card_utils.h | 8 +- sound/soc/generic/audio-graph-card.c | 6 +- sound/soc/generic/audio-graph-card2.c | 14 +-- sound/soc/generic/simple-card-utils.c | 170 +++++++++++++++----------- sound/soc/generic/simple-card.c | 4 +- 5 files changed, 115 insertions(+), 87 deletions(-) diff --git a/include/sound/simple_card_utils.h b/include/sound/simple_card_utils.h index 892f70532363e..69a9c9c4d0e9c 100644 --- a/include/sound/simple_card_utils.h +++ b/include/sound/simple_card_utils.h @@ -142,14 +142,14 @@ int simple_util_parse_daifmt(struct device *dev, struct device_node *codec, char *prefix, unsigned int *retfmt); -int simple_util_parse_tdm_width_map(struct device *dev, struct device_node *np, +int simple_util_parse_tdm_width_map(struct simple_util_priv *priv, struct device_node *np, struct simple_util_dai *dai); __printf(3, 4) -int simple_util_set_dailink_name(struct device *dev, +int simple_util_set_dailink_name(struct simple_util_priv *priv, struct snd_soc_dai_link *dai_link, const char *fmt, ...); -int simple_util_parse_card_name(struct snd_soc_card *card, +int simple_util_parse_card_name(struct simple_util_priv *priv, char *prefix); int simple_util_parse_clk(struct device *dev, @@ -201,7 +201,7 @@ void simple_util_remove(struct platform_device *pdev); int graph_util_card_probe(struct snd_soc_card *card); int graph_util_is_ports0(struct device_node *port); -int graph_util_parse_dai(struct device *dev, struct device_node *ep, +int graph_util_parse_dai(struct simple_util_priv *priv, struct device_node *ep, struct snd_soc_dai_link_component *dlc, int *is_single_link); void graph_util_parse_link_direction(struct device_node *np, diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c index 7c422535b01a2..bd7ebbec0fc9c 100644 --- a/sound/soc/generic/audio-graph-card.c +++ b/sound/soc/generic/audio-graph-card.c @@ -111,7 +111,7 @@ static int graph_parse_node(struct simple_util_priv *priv, dai = simple_props_to_dai_codec(dai_props, 0); } - ret = graph_util_parse_dai(dev, ep, dlc, cpu); + ret = graph_util_parse_dai(priv, ep, dlc, cpu); if (ret < 0) return ret; @@ -183,7 +183,7 @@ static int graph_link_init(struct simple_util_priv *priv, if (priv->ops) dai_link->ops = priv->ops; - return simple_util_set_dailink_name(dev, dai_link, name); + return simple_util_set_dailink_name(priv, dai_link, name); } static int graph_dai_link_of_dpcm(struct simple_util_priv *priv, @@ -586,7 +586,7 @@ int audio_graph_parse_of(struct simple_util_priv *priv, struct device *dev) if (ret < 0) goto err; - ret = simple_util_parse_card_name(card, NULL); + ret = simple_util_parse_card_name(priv, NULL); if (ret < 0) goto err; diff --git a/sound/soc/generic/audio-graph-card2.c b/sound/soc/generic/audio-graph-card2.c index ee94b256b7707..945a16e6d6919 100644 --- a/sound/soc/generic/audio-graph-card2.c +++ b/sound/soc/generic/audio-graph-card2.c @@ -409,7 +409,7 @@ static int __graph_parse_node(struct simple_util_priv *priv, dai = simple_props_to_dai_codec(dai_props, idx); } - ret = graph_util_parse_dai(dev, ep, dlc, &is_single_links); + ret = graph_util_parse_dai(priv, ep, dlc, &is_single_links); if (ret < 0) return ret; @@ -417,7 +417,7 @@ static int __graph_parse_node(struct simple_util_priv *priv, if (ret < 0) return ret; - ret = simple_util_parse_tdm_width_map(dev, ep, dai); + ret = simple_util_parse_tdm_width_map(priv, ep, dai); if (ret < 0) return ret; @@ -443,22 +443,22 @@ static int __graph_parse_node(struct simple_util_priv *priv, case GRAPH_NORMAL: /* run is_cpu only. see audio_graph2_link_normal() */ if (is_cpu) - simple_util_set_dailink_name(dev, dai_link, "%s%s-%s%s", + simple_util_set_dailink_name(priv, dai_link, "%s%s-%s%s", cpus->dai_name, cpu_multi, codecs->dai_name, codec_multi); break; case GRAPH_DPCM: if (is_cpu) - simple_util_set_dailink_name(dev, dai_link, "fe.%pOFP.%s%s", + simple_util_set_dailink_name(priv, dai_link, "fe.%pOFP.%s%s", cpus->of_node, cpus->dai_name, cpu_multi); else - simple_util_set_dailink_name(dev, dai_link, "be.%pOFP.%s%s", + simple_util_set_dailink_name(priv, dai_link, "be.%pOFP.%s%s", codecs->of_node, codecs->dai_name, codec_multi); break; case GRAPH_C2C: /* run is_cpu only. see audio_graph2_link_c2c() */ if (is_cpu) - simple_util_set_dailink_name(dev, dai_link, "c2c.%s%s-%s%s", + simple_util_set_dailink_name(priv, dai_link, "c2c.%s%s-%s%s", cpus->dai_name, cpu_multi, codecs->dai_name, codec_multi); break; @@ -1332,7 +1332,7 @@ int audio_graph2_parse_of(struct simple_util_priv *priv, struct device *dev, if (ret < 0) goto err; - ret = simple_util_parse_card_name(card, NULL); + ret = simple_util_parse_card_name(priv, NULL); if (ret < 0) goto err; diff --git a/sound/soc/generic/simple-card-utils.c b/sound/soc/generic/simple-card-utils.c index dd414634b4ac7..eec6b8b5c4d8b 100644 --- a/sound/soc/generic/simple-card-utils.c +++ b/sound/soc/generic/simple-card-utils.c @@ -15,6 +15,13 @@ #include #include +#define simple_ret(priv, ret) _simple_ret(priv, __func__, ret) +static inline int _simple_ret(struct simple_util_priv *priv, + const char *func, int ret) +{ + return snd_soc_ret(simple_priv_to_dev(priv), ret, "at %s()\n", func); +} + int simple_util_get_sample_fmt(struct simple_util_data *data) { int i; @@ -133,33 +140,42 @@ int simple_util_parse_daifmt(struct device *dev, } EXPORT_SYMBOL_GPL(simple_util_parse_daifmt); -int simple_util_parse_tdm_width_map(struct device *dev, struct device_node *np, +int simple_util_parse_tdm_width_map(struct simple_util_priv *priv, struct device_node *np, struct simple_util_dai *dai) { + struct device *dev = simple_priv_to_dev(priv); int n, i, ret; u32 *p; + /* + * NOTE + * + * Clang doesn't allow to use "goto end" before calling __free(), + * because it bypasses the initialization. Use simple_ret() directly. + */ + n = of_property_count_elems_of_size(np, "dai-tdm-slot-width-map", sizeof(u32)); if (n <= 0) return 0; + if (n % 3) { dev_err(dev, "Invalid number of cells for dai-tdm-slot-width-map\n"); - return -EINVAL; + return simple_ret(priv, -EINVAL); /* see NOTE */ } + ret = -ENOMEM; dai->tdm_width_map = devm_kcalloc(dev, n, sizeof(*dai->tdm_width_map), GFP_KERNEL); if (!dai->tdm_width_map) - return -ENOMEM; + return simple_ret(priv, ret); /* see NOTE */ - u32 *array_values __free(kfree) = kcalloc(n, sizeof(*array_values), - GFP_KERNEL); + u32 *array_values __free(kfree) = kcalloc(n, sizeof(*array_values), GFP_KERNEL); if (!array_values) - return -ENOMEM; + goto end; ret = of_property_read_u32_array(np, "dai-tdm-slot-width-map", array_values, n); if (ret < 0) { dev_err(dev, "Could not read dai-tdm-slot-width-map: %d\n", ret); - return ret; + goto end; } p = array_values; @@ -170,15 +186,17 @@ int simple_util_parse_tdm_width_map(struct device *dev, struct device_node *np, } dai->n_tdm_widths = i; - - return 0; + ret = 0; +end: + return simple_ret(priv, ret); } EXPORT_SYMBOL_GPL(simple_util_parse_tdm_width_map); -int simple_util_set_dailink_name(struct device *dev, +int simple_util_set_dailink_name(struct simple_util_priv *priv, struct snd_soc_dai_link *dai_link, const char *fmt, ...) { + struct device *dev = simple_priv_to_dev(priv); va_list ap; char *name = NULL; int ret = -ENOMEM; @@ -194,13 +212,14 @@ int simple_util_set_dailink_name(struct device *dev, dai_link->stream_name = name; } - return ret; + return simple_ret(priv, ret); } EXPORT_SYMBOL_GPL(simple_util_set_dailink_name); -int simple_util_parse_card_name(struct snd_soc_card *card, +int simple_util_parse_card_name(struct simple_util_priv *priv, char *prefix) { + struct snd_soc_card *card = simple_priv_to_card(priv); int ret; if (!prefix) @@ -214,13 +233,13 @@ int simple_util_parse_card_name(struct snd_soc_card *card, snprintf(prop, sizeof(prop), "%sname", prefix); ret = snd_soc_of_parse_card_name(card, prop); if (ret < 0) - return ret; + goto end; } if (!card->name && card->dai_link) card->name = card->dai_link->name; - - return 0; +end: + return simple_ret(priv, ret); } EXPORT_SYMBOL_GPL(simple_util_parse_card_name); @@ -348,7 +367,8 @@ int simple_util_startup(struct snd_pcm_substream *substream) break; simple_clk_disable(dai); } - return ret; + + return simple_ret(priv, ret); } EXPORT_SYMBOL_GPL(simple_util_startup); @@ -379,16 +399,19 @@ void simple_util_shutdown(struct snd_pcm_substream *substream) } EXPORT_SYMBOL_GPL(simple_util_shutdown); -static int simple_set_clk_rate(struct device *dev, - struct simple_util_dai *simple_dai, - unsigned long rate) +static int simple_set_clk_rate(struct simple_util_priv *priv, + struct simple_util_dai *simple_dai, + unsigned long rate) { + struct device *dev = simple_priv_to_dev(priv); + int ret = -EINVAL; + if (!simple_dai) return 0; if (simple_dai->clk_fixed && rate != simple_dai->sysclk) { dev_err(dev, "dai %s invalid clock rate %lu\n", simple_dai->name, rate); - return -EINVAL; + goto end; } if (!simple_dai->clk) @@ -397,12 +420,15 @@ static int simple_set_clk_rate(struct device *dev, if (clk_get_rate(simple_dai->clk) == rate) return 0; - return clk_set_rate(simple_dai->clk, rate); + ret = clk_set_rate(simple_dai->clk, rate); +end: + return simple_ret(priv, ret); } -static int simple_set_tdm(struct snd_soc_dai *dai, - struct simple_util_dai *simple_dai, - struct snd_pcm_hw_params *params) +static int simple_set_tdm(struct simple_util_priv *priv, + struct snd_soc_dai *dai, + struct simple_util_dai *simple_dai, + struct snd_pcm_hw_params *params) { int sample_bits = params_width(params); int slot_width, slot_count; @@ -430,12 +456,8 @@ static int simple_set_tdm(struct snd_soc_dai *dai, simple_dai->rx_slot_mask, slot_count, slot_width); - if (ret && ret != -ENOTSUPP) { - dev_err(dai->dev, "simple-card: set_tdm_slot error: %d\n", ret); - return ret; - } - return 0; + return simple_ret(priv, ret); } int simple_util_hw_params(struct snd_pcm_substream *substream, @@ -457,15 +479,15 @@ int simple_util_hw_params(struct snd_pcm_substream *substream, mclk = params_rate(params) * mclk_fs; for_each_prop_dai_codec(props, i, pdai) { - ret = simple_set_clk_rate(rtd->dev, pdai, mclk); + ret = simple_set_clk_rate(priv, pdai, mclk); if (ret < 0) - return ret; + goto end; } for_each_prop_dai_cpu(props, i, pdai) { - ret = simple_set_clk_rate(rtd->dev, pdai, mclk); + ret = simple_set_clk_rate(priv, pdai, mclk); if (ret < 0) - return ret; + goto end; } /* Ensure sysclk is set on all components in case any @@ -476,39 +498,40 @@ int simple_util_hw_params(struct snd_pcm_substream *substream, ret = snd_soc_component_set_sysclk(component, 0, 0, mclk, SND_SOC_CLOCK_IN); if (ret && ret != -ENOTSUPP) - return ret; + goto end; } for_each_rtd_codec_dais(rtd, i, sdai) { pdai = simple_props_to_dai_codec(props, i); ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); if (ret && ret != -ENOTSUPP) - return ret; + goto end; } for_each_rtd_cpu_dais(rtd, i, sdai) { pdai = simple_props_to_dai_cpu(props, i); ret = snd_soc_dai_set_sysclk(sdai, 0, mclk, pdai->clk_direction); if (ret && ret != -ENOTSUPP) - return ret; + goto end; } } for_each_prop_dai_codec(props, i, pdai) { sdai = snd_soc_rtd_to_codec(rtd, i); - ret = simple_set_tdm(sdai, pdai, params); + ret = simple_set_tdm(priv, sdai, pdai, params); if (ret < 0) - return ret; + goto end; } for_each_prop_dai_cpu(props, i, pdai) { sdai = snd_soc_rtd_to_cpu(rtd, i); - ret = simple_set_tdm(sdai, pdai, params); + ret = simple_set_tdm(priv, sdai, pdai, params); if (ret < 0) - return ret; + goto end; } - - return 0; + ret = 0; +end: + return simple_ret(priv, ret); } EXPORT_SYMBOL_GPL(simple_util_hw_params); @@ -536,7 +559,8 @@ int simple_util_be_hw_params_fixup(struct snd_soc_pcm_runtime *rtd, } EXPORT_SYMBOL_GPL(simple_util_be_hw_params_fixup); -static int simple_init_dai(struct snd_soc_dai *dai, struct simple_util_dai *simple_dai) +static int simple_init_dai(struct simple_util_priv *priv, + struct snd_soc_dai *dai, struct simple_util_dai *simple_dai) { int ret; @@ -548,7 +572,7 @@ static int simple_init_dai(struct snd_soc_dai *dai, struct simple_util_dai *simp simple_dai->clk_direction); if (ret && ret != -ENOTSUPP) { dev_err(dai->dev, "simple-card: set_sysclk error\n"); - return ret; + goto end; } } @@ -560,11 +584,12 @@ static int simple_init_dai(struct snd_soc_dai *dai, struct simple_util_dai *simp simple_dai->slot_width); if (ret && ret != -ENOTSUPP) { dev_err(dai->dev, "simple-card: set_tdm_slot error\n"); - return ret; + goto end; } } - - return 0; + ret = 0; +end: + return simple_ret(priv, ret); } static inline int simple_component_is_codec(struct snd_soc_component *component) @@ -572,7 +597,8 @@ static inline int simple_component_is_codec(struct snd_soc_component *component) return component->driver->endianness; } -static int simple_init_for_codec2codec(struct snd_soc_pcm_runtime *rtd, +static int simple_init_for_codec2codec(struct simple_util_priv *priv, + struct snd_soc_pcm_runtime *rtd, struct simple_dai_props *dai_props) { struct snd_soc_dai_link *dai_link = rtd->dai_link; @@ -604,12 +630,13 @@ static int simple_init_for_codec2codec(struct snd_soc_pcm_runtime *rtd, if (ret < 0) { dev_err(rtd->dev, "simple-card: no valid dai_link params\n"); - return ret; + goto end; } + ret = -ENOMEM; c2c_params = devm_kzalloc(rtd->dev, sizeof(*c2c_params), GFP_KERNEL); if (!c2c_params) - return -ENOMEM; + goto end; c2c_params->formats = hw.formats; c2c_params->rates = hw.rates; @@ -621,7 +648,9 @@ static int simple_init_for_codec2codec(struct snd_soc_pcm_runtime *rtd, dai_link->c2c_params = c2c_params; dai_link->num_c2c_params = 1; - return 0; + ret = 0; +end: + return simple_ret(priv, ret); } int simple_util_dai_init(struct snd_soc_pcm_runtime *rtd) @@ -632,21 +661,19 @@ int simple_util_dai_init(struct snd_soc_pcm_runtime *rtd) int i, ret; for_each_prop_dai_codec(props, i, dai) { - ret = simple_init_dai(snd_soc_rtd_to_codec(rtd, i), dai); + ret = simple_init_dai(priv, snd_soc_rtd_to_codec(rtd, i), dai); if (ret < 0) - return ret; + goto end; } for_each_prop_dai_cpu(props, i, dai) { - ret = simple_init_dai(snd_soc_rtd_to_cpu(rtd, i), dai); + ret = simple_init_dai(priv, snd_soc_rtd_to_cpu(rtd, i), dai); if (ret < 0) - return ret; + goto end; } - ret = simple_init_for_codec2codec(rtd, props); - if (ret < 0) - return ret; - - return 0; + ret = simple_init_for_codec2codec(priv, rtd, props); +end: + return simple_ret(priv, ret); } EXPORT_SYMBOL_GPL(simple_util_dai_init); @@ -831,7 +858,7 @@ int simple_util_init_aux_jacks(struct simple_util_priv *priv, char *prefix) priv->aux_jacks = devm_kcalloc(card->dev, num, sizeof(struct snd_soc_jack), GFP_KERNEL); if (!priv->aux_jacks) - return -ENOMEM; + return simple_ret(priv, -ENOMEM); for_each_card_auxs(card, component) { char id[128]; @@ -992,13 +1019,11 @@ int graph_util_card_probe(struct snd_soc_card *card) ret = simple_util_init_hp(card, &priv->hp_jack, NULL); if (ret < 0) - return ret; + goto end; ret = simple_util_init_mic(card, &priv->mic_jack, NULL); - if (ret < 0) - return ret; - - return 0; +end: + return simple_ret(priv, ret); } EXPORT_SYMBOL_GPL(graph_util_card_probe); @@ -1074,9 +1099,10 @@ static int graph_get_dai_id(struct device_node *ep) return id; } -int graph_util_parse_dai(struct device *dev, struct device_node *ep, +int graph_util_parse_dai(struct simple_util_priv *priv, struct device_node *ep, struct snd_soc_dai_link_component *dlc, int *is_single_link) { + struct device *dev = simple_priv_to_dev(priv); struct of_phandle_args args = {}; struct snd_soc_dai *dai; int ret; @@ -1092,10 +1118,11 @@ int graph_util_parse_dai(struct device *dev, struct device_node *ep, args.np = ep; dai = snd_soc_get_dai_via_args(&args); if (dai) { + ret = -ENOMEM; dlc->dai_name = snd_soc_dai_name_get(dai); dlc->dai_args = snd_soc_copy_dai_args(dev, &args); if (!dlc->dai_args) - return -ENOMEM; + goto end; goto parse_dai_end; } @@ -1126,13 +1153,14 @@ int graph_util_parse_dai(struct device *dev, struct device_node *ep, */ ret = snd_soc_get_dlc(&args, dlc); if (ret < 0) - return ret; + goto end; parse_dai_end: if (is_single_link) *is_single_link = of_graph_get_endpoint_count(node) == 1; - - return 0; + ret = 0; +end: + return simple_ret(priv, ret); } EXPORT_SYMBOL_GPL(graph_util_parse_dai); diff --git a/sound/soc/generic/simple-card.c b/sound/soc/generic/simple-card.c index 004fda4504c42..5af6d1b308f23 100644 --- a/sound/soc/generic/simple-card.c +++ b/sound/soc/generic/simple-card.c @@ -223,7 +223,7 @@ static int simple_link_init(struct simple_util_priv *priv, dai_link->init = simple_util_dai_init; dai_link->ops = &simple_ops; - ret = simple_util_set_dailink_name(dev, dai_link, name); + ret = simple_util_set_dailink_name(priv, dai_link, name); end: return simple_ret(priv, ret); } @@ -544,7 +544,7 @@ static int simple_parse_of(struct simple_util_priv *priv, struct link_info *li) if (ret < 0) goto end; - ret = simple_util_parse_card_name(card, PREFIX); + ret = simple_util_parse_card_name(priv, PREFIX); if (ret < 0) goto end; From patchwork Mon Feb 3 06:21:17 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 13956801 Received: from TYVP286CU001.outbound.protection.outlook.com (mail-japaneastazon11011041.outbound.protection.outlook.com [52.101.125.41]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 644A31D6DBB for ; Mon, 3 Feb 2025 06:21:19 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.125.41 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563681; cv=fail; b=u4URabOVheaxqCuYBnZkPool7c8/q20yIi65qlZCS1bUmpEenITpZRM9y8OAEBMAIGdg3FLBgfIGmmN47xpxP9DDMFaZQkEkLPJH+UHDms555VCLa/YbWzntiT2ZhTS3P0435ytXFgAn2H3tfehCFt2QCh85wcNOA5tKd2stz9Y= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563681; c=relaxed/simple; bh=IVGnLprdo0zGKCi1LJIPIKnCNfZMYIIQLgf649tKQBM=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date:MIME-Version; b=ZDPHLsYnKDHsr8y3zZE8mRUr8F9Qm43al8Tj4LbXwYpDM8sFLD+DcXSM6AvJaGCehyaZhsXfw+Jqn81gNrUTHrxgoWQ1QNgk4QDW4hG4731n6ySm9yh2VYQPxSwAqmQ6939ykpeXEpjqxSexGN8a5bI4nXQ6q8mPB/tFryIUtQc= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=Gm4ZNJ6j; arc=fail smtp.client-ip=52.101.125.41 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="Gm4ZNJ6j" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=hFc2U8sT8NU970Sf12d5AQINZxUA6s71lhYrwDTspVxt/AmHde+FA6++yjPrKtYKC5izVXNP/rNMTOGAPB1iSKhorFdkSwJU+hqNIWpzmY3BI2BPnZ3Q5pZWXC4XkrhTVaNZChKYBOe14i3JaabjW856+7mQDjQ7fHVyj5i1My+9F4WJ+V/kWcNOR8e8Cw68g4/yXwB60jpZQrIqanSEdBQvumgVBdwr3lAbOsAuQZgwI4nLLJc/s63Od9JZDL9cRdNvR0ES1lTwsTV6IwwBILHqAxLAz3QwEeILkhuWL0UkM0pMl4/zQ1jLnh0d7pij+r3iIwyOQmAMqu0Qto9q8Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=vTz+vqdbADRFQolMei7rN2GF79qipJy6VvBA0f6lK+w=; b=HQjxcG8deoMylYoz9qmJZPRIOCgW60k7i2GKKspsHDegE43H7+OCk12lUTLOsMbOLGZ31vPjC2hI1jqPoUyFVCFS0DwtUluJjP6oUysL9Hgg7+uqkZD2uYFiVGNX6Y/Ns1PhV+S92Rrrs/DqFF/S8WxB/v5LvIHz+aYYuPXD7MecoFBe0x9aUQWEFgAln84YPWjwZZ0BC2buT+3cx7iYgNPR1KPFhG9L59Gq7e9coU3fvJkpZhzEP3sF5gkWApLkHChOhMXh98jfl86I/7l6Nfxo7BrfzkqNzw4js4O49Ct9O7Ks5bNMrlSzCih+rl/f7IzxSIKSHRWICjIc8ipi5A== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=vTz+vqdbADRFQolMei7rN2GF79qipJy6VvBA0f6lK+w=; b=Gm4ZNJ6j7n+4Slkj73gc2wdd2FpfgNkJjeEuPGTrR3pYJaJaQO/sak+K/ydBtD5i6frE1o2BV1kTTXZEuarFVL/m9FmXMtn9rcRO6Z4YHNVP6rZYcxDyrOfXHodSALGOoHDxAdjmJp07eWxjulmRu9A2lBTCm52gXvGCGH8CTGo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TY3PR01MB11036.jpnprd01.prod.outlook.com (2603:1096:400:3ad::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Mon, 3 Feb 2025 06:21:17 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11%5]) with mapi id 15.20.8398.025; Mon, 3 Feb 2025 06:21:17 +0000 Message-ID: <87v7trr1k2.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH 5/6] ASoC: audio-graph-card: use snd_soc_ret() User-Agent: Wanderlust/2.15.9 Emacs/29.3 Mule/6.0 To: Mark Brown Cc: linux-sound@vger.kernel.org In-Reply-To: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> References: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 3 Feb 2025 06:21:17 +0000 X-ClientProxiedBy: TYCP286CA0274.JPNP286.PROD.OUTLOOK.COM (2603:1096:400:3c9::10) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYCPR01MB10914:EE_|TY3PR01MB11036:EE_ X-MS-Office365-Filtering-Correlation-Id: 4f20c8d1-22b7-4204-9483-08dd441af805 X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: 2pkNXPbMAvPsT3Vxrfuwjx0YcVGOUxmRhg5ryEGAXM41yPMwp1rUNpCTlYeL9qIP+7WMb9TMWLdzZiQY7oPwJTxEulgLvetXmCMyHZbUsm0tAitiqdB7N/G+l7r+ZJcE+gN6SqBfcAbZydNunvmFiohGDgqNGSm+YiraViKm0mHMsgJBrgXtte535NkI/1Wdsh7etn7kn+Dcg01RsfrVF6hhbJMeS9S3V5VGyfV/hTErNc3XAa0IRfEqkBjNt028RsL7ah5/2MHqExC2qY+ueZk2OL3w9+KLUc4pjF4957hMh45IYzr1ri/CnM1LCb+3LX52bX9nu8s9knnzmwUsiEmUViqb8J1LDa/iqyaQZssvtcRlQN8eWv+pfF2memFfoYE3Gi7RGuev6YK8+lXHe5V/PDh1aOinIWZMGkHiSkganqtW1EDin9RrkN9y5mVOTwUA50IQjQBJi8UFxUVRzjKVMVay8FnGtQS5rbM+Rb8MJws8K/DCR3vg3VjR/dRHxx8AUUo/TGA2SNrUtKU1oHqCmebFm6exrmNDyJNC7dapOyJDtAdjU0M4IF+PgHfXFMQJETPhNWOVWYYIHFB4x/muCqJxMGV08s1KlulQ4/2ZGLkRmUmYE8GVbfCZkdrOyz0gamKXT5O1U0IDR/Iq3s5vKJrfsh8zQOi57LXTVj1KwO0mOhSRzrvTwaaDomFAB/V7IpqcKuDqnxGaNEdLGA/dF0f/35zodX3NN1R/Rdrpyv/NnSX31loRHbq0T7XU3HBAqLsrIptmXRyH2etpgqs4hBaZecdi1e3Ik9QdgN8xDSw4TCODGz5rzmwx2o3hncLc5ezKy6NFqL4XsmV0hBbd3bj3U7XkTsUdSZAxLfdW9Vgc/1G1gQRFi3u5KjIjK4s/HT0WPRnoCmpE12aECIj20v4CpwB2EIUPtcl2YcYVYsJ3Q12MOzEUwM/vqm5nch+5sRLQ6DjgP5fgHcH66poxHNJ0t+8r2kIgHSJY+uEXXSP7G5rugsdoGyYtiaYmVOxV2hvTEpsWitp919my7vHIZ0A418iy3Djgd4QIKYQcx7jBjWLluLJFMN3L7gihG0fphqT5CTUmcJVEZiyUpWlE1A7IVdR8XXy+lzPor9sGQ5zHavq/k0izj/EfCM1YEW0rj1mO4N30OmaCt8bAYM+pITsjKtnXOmPhjrBXHiAiMP+ggxJkZnOXpi/PWpGLj2QvN/HF60EjBFYWUjD4HSP+Ijiu069bPC8oqO86gj/deTKiNMDL1upr46cfwR793kXSdL+YsfdSbB7Eqw840xoebL/pdSpFtuVB12hZZ/JJ0Nn2N2+TjMSDaM0ITkBAWVnl/V74NB5GTivFWwoEZtvSZxYmIpZ9Z45zVJWTwJ8wDaSigs4zTEYYmmw5CWdzAHybfXICIfpvIZkR8WzloTN31w8OKLkNBnWNPM9zmdNU3j7k3wA3SNgV3UAKwKCJ X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: /4dkqhZc3zQYY5z9xpbaOeoSFkLJ/tvlqk1LNSY2N1jXc5fANU+yozCD7yj5cfaHqzU2p3HbNZWVMPSutHe11oy0rVOwKEpRBjpvlO0PmHjdTWY0WCG+1+Gl2YHpCKEth96MsQ6V5igDpm4HdXCJjkcLEDQ9wWtB7pSIOMXJN0BAjzeabBLNurPp/xue+AHQ/LsmLVK6ZHnTycVJmb6xybi7cF8d3zWLPfFDkF75r3k/UiuQxhOMTKYWh8ZWrxDtL5OjLFQyrgdqigqnKtSrt7acb91zMPkCVj9PtbLjSPQAkCn6Y7t2EGI4o/RgIYvYlHBQxD3xKrVxcHdisau4dbTZ7S5QdRmSlSjTefFXLcH2tlE31GRaO0WzOpj50KVlFCFkR5L6lTWbtjsuUU4Od3bg7S3AvGr09dTepmZMuarZf3X2Iw+CsvWI8+j9XZRikBk+VSpcMZZN4oxm1ZFYL4ffkJhlaORDj75y59eTYQVhLx1bzetpNfpcmqbQ+kAbtcMoJdH7DYA+Gg6h/mZ5A0D1uiWMugvfd2Qn1zURqqZSvRJvoOducAnkgJdC5GKrsNXY3Irt6beEB11l7vOkXYClJZP4NmQ5bvPNnyK+Qd+D2e57sViJ+R0KpSeQAQyobk0DafAEusdLEgGkOubFSZDcmPFC2DCqK50MR1tyf97+pTWm8qQjMXbMdz6O3JSXCLJ5VztgYqwu8XpPEcS7H12XE/lhAL/TELSENKtlOnjU7imEZUqpDDftSWpzR6DrhZThNcUBM4q4fpltRwtF+UK8YnWkbiVJ8eeKbtF7chY9vv0mAg5TKNRLyau6Tj/K5x3lUggM9ygcFuC4O2J8qD8Hh4yMkBKK0npaLNYB0ExuYHGt8FpHvDjlPvq/Ot1PdQQ2itiYCObvWbJncFvDCGWMkEIiEnrBrjSaeZjjM4YcuMoI/L3rJPsYUUUyjwxq1FxpI2gpYE8adBpVn8NPMHph2TwSlp8Oj2Vt1n+tCrb1KTe2DqoSk5gtZyPNruplUi1IVF2jZ1i85R66pFetIbe/2dZ486W6v6Kxx93BofCvO9y4UnS7NYuPCrtvAQ1MGTFHiZhwDGAwz85RWat2iNfk41XGxc2R4r4r9jqGd5rrgFhR2fdOFqSrXbDnQ09RxEGGQPiGmqObX1M5fak+Mv9t8MHWvDThZyCL8YdZ6JZXU5w9QYsUAPgL761zdyNEg1WyNpQZUkntNrel/npLRPmHqNGmDNccbPCG83ktHQU8LVfW0eqDUR1yJGqrfu0xCVtm4KFX9shaAgIBsj76Wat4FMGOZMVIDQDuohBSdkz+rPCW5xc1CAb2CxwmN+ja0z/n5pEzfe1jTJStskyWfccvzQt8CAHPLCPpj89s0Als8Z65ZscgmqkjKC2hkG1NeOpOK8/XxeEsnaoJj31+VbLakKC9CnbJwbsUgdO6GJooJ1acn0KvriEBnIZpdpETk+0RjHR3xDkEsyN4fQIAUvXGxybNwn4oXpppwm/qF1EFrGR+2tQzcwULqm8tzhAZnYjL+G/+jmaThsgwG1edRAYRaZ62PLrcAa9A36n4nlD4Ttb9NVOQELYPzEvfBIQt56fyYoZp5tKIm22JN5R5Nbx9FUg0le/VghToTrOtako= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: 4f20c8d1-22b7-4204-9483-08dd441af805 X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2025 06:21:17.8367 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: ZU4asHCYkAnsyWr2AxjNYPuJaETnjgQm8ApECzgyz/xaBlWbZM7mVMgq5/QANNVjoJvNPBr3xm+/SM5JS11heEXBmKrqq7GmhkViwTQHw/ZeoUwZP4QvB5pqdjj/TKqu X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB11036 We can use snd_soc_ret() to indicate error message when return. Let's use it. Signed-off-by: Kuninori Morimoto --- sound/soc/generic/audio-graph-card.c | 93 +++++++++++++++------------- 1 file changed, 50 insertions(+), 43 deletions(-) diff --git a/sound/soc/generic/audio-graph-card.c b/sound/soc/generic/audio-graph-card.c index bd7ebbec0fc9c..a8a3bad3df00d 100644 --- a/sound/soc/generic/audio-graph-card.c +++ b/sound/soc/generic/audio-graph-card.c @@ -20,6 +20,13 @@ #define DPCM_SELECTABLE 1 +#define graph_ret(priv, ret) _graph_ret(priv, __func__, ret) +static inline int _graph_ret(struct simple_util_priv *priv, + const char *func, int ret) +{ + return snd_soc_ret(simple_priv_to_dev(priv), ret, "at %s()\n", func); +} + #define ep_to_port(ep) of_get_parent(ep) static struct device_node *port_to_ports(struct device_node *port) { @@ -113,17 +120,15 @@ static int graph_parse_node(struct simple_util_priv *priv, ret = graph_util_parse_dai(priv, ep, dlc, cpu); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_tdm(ep, dai); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_clk(dev, ep, dai, dlc); - if (ret < 0) - return ret; - - return 0; +end: + return graph_ret(priv, ret); } static int graph_link_init(struct simple_util_priv *priv, @@ -148,7 +153,7 @@ static int graph_link_init(struct simple_util_priv *priv, ret = simple_util_parse_daifmt(dev, ep_cpu, ep_codec, NULL, &dai_link->dai_fmt); if (ret < 0) - return ret; + goto end; graph_util_parse_link_direction(top, &playback_only, &capture_only); graph_util_parse_link_direction(port_cpu, &playback_only, &capture_only); @@ -183,7 +188,9 @@ static int graph_link_init(struct simple_util_priv *priv, if (priv->ops) dai_link->ops = priv->ops; - return simple_util_set_dailink_name(priv, dai_link, name); + ret = simple_util_set_dailink_name(priv, dai_link, name); +end: + return graph_ret(priv, ret); } static int graph_dai_link_of_dpcm(struct simple_util_priv *priv, @@ -215,7 +222,7 @@ static int graph_dai_link_of_dpcm(struct simple_util_priv *priv, ret = graph_parse_node(priv, cpu_ep, li, &is_single_links); if (ret) - return ret; + goto end; snprintf(dai_name, sizeof(dai_name), "fe.%pOFP.%s", cpus->of_node, cpus->dai_name); @@ -248,7 +255,7 @@ static int graph_dai_link_of_dpcm(struct simple_util_priv *priv, ret = graph_parse_node(priv, codec_ep, li, NULL); if (ret < 0) - return ret; + goto end; snprintf(dai_name, sizeof(dai_name), "be.%pOFP.%s", codecs->of_node, codecs->dai_name); @@ -267,8 +274,8 @@ static int graph_dai_link_of_dpcm(struct simple_util_priv *priv, ret = graph_link_init(priv, cpu_ep, codec_ep, li, dai_name); li->link++; - - return ret; +end: + return graph_ret(priv, ret); } static int graph_dai_link_of(struct simple_util_priv *priv, @@ -288,11 +295,11 @@ static int graph_dai_link_of(struct simple_util_priv *priv, ret = graph_parse_node(priv, cpu_ep, li, &is_single_links); if (ret < 0) - return ret; + goto end; ret = graph_parse_node(priv, codec_ep, li, NULL); if (ret < 0) - return ret; + goto end; snprintf(dai_name, sizeof(dai_name), "%s-%s", cpus->dai_name, codecs->dai_name); @@ -302,11 +309,11 @@ static int graph_dai_link_of(struct simple_util_priv *priv, ret = graph_link_init(priv, cpu_ep, codec_ep, li, dai_name); if (ret < 0) - return ret; + goto end; li->link++; - - return 0; +end: + return graph_ret(priv, ret); } static inline bool parse_as_dpcm_link(struct simple_util_priv *priv, @@ -383,13 +390,13 @@ static int __graph_for_each_link(struct simple_util_priv *priv, } if (ret < 0) - return ret; + goto end; codec_port_old = codec_port; } } - - return 0; +end: + return graph_ret(priv, ret); } static int graph_for_each_link(struct simple_util_priv *priv, @@ -422,7 +429,7 @@ static int graph_for_each_link(struct simple_util_priv *priv, break; } - return ret; + return graph_ret(priv, ret); } static int graph_count_noml(struct simple_util_priv *priv, @@ -431,11 +438,10 @@ static int graph_count_noml(struct simple_util_priv *priv, struct link_info *li) { struct device *dev = simple_priv_to_dev(priv); + int ret = -EINVAL; - if (li->link >= SNDRV_MAX_LINKS) { - dev_err(dev, "too many links\n"); - return -EINVAL; - } + if (li->link >= SNDRV_MAX_LINKS) + goto end; /* * DON'T REMOVE platforms @@ -450,8 +456,9 @@ static int graph_count_noml(struct simple_util_priv *priv, li->link += 1; /* 1xCPU-Codec */ dev_dbg(dev, "Count As Normal\n"); - - return 0; + ret = 0; +end: + return graph_ret(priv, ret); } static int graph_count_dpcm(struct simple_util_priv *priv, @@ -460,11 +467,10 @@ static int graph_count_dpcm(struct simple_util_priv *priv, struct link_info *li) { struct device *dev = simple_priv_to_dev(priv); + int ret = -EINVAL; - if (li->link >= SNDRV_MAX_LINKS) { - dev_err(dev, "too many links\n"); - return -EINVAL; - } + if (li->link >= SNDRV_MAX_LINKS) + goto end; if (li->cpu) { /* @@ -483,8 +489,9 @@ static int graph_count_dpcm(struct simple_util_priv *priv, } dev_dbg(dev, "Count As DPCM\n"); - - return 0; + ret = 0; +end: + return graph_ret(priv, ret); } static int graph_get_dais_count(struct simple_util_priv *priv, @@ -544,40 +551,41 @@ static int graph_get_dais_count(struct simple_util_priv *priv, int audio_graph_parse_of(struct simple_util_priv *priv, struct device *dev) { struct snd_soc_card *card = simple_priv_to_card(priv); - int ret; + int ret = -ENOMEM; struct link_info *li __free(kfree) = kzalloc(sizeof(*li), GFP_KERNEL); if (!li) - return -ENOMEM; + goto end; card->owner = THIS_MODULE; card->dev = dev; ret = graph_get_dais_count(priv, li); if (ret < 0) - return ret; + goto end; + ret = -EINVAL; if (!li->link) - return -EINVAL; + goto end; ret = simple_util_init_priv(priv, li); if (ret < 0) - return ret; + goto end; priv->pa_gpio = devm_gpiod_get_optional(dev, "pa", GPIOD_OUT_LOW); if (IS_ERR(priv->pa_gpio)) { ret = PTR_ERR(priv->pa_gpio); dev_err(dev, "failed to get amplifier gpio: %d\n", ret); - return ret; + goto end; } ret = simple_util_parse_widgets(card, NULL); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_routing(card, NULL); if (ret < 0) - return ret; + goto end; memset(li, 0, sizeof(*li)); ret = graph_for_each_link(priv, li, @@ -599,10 +607,9 @@ int audio_graph_parse_of(struct simple_util_priv *priv, struct device *dev) goto err; return 0; - err: simple_util_clean_reference(card); - +end: return dev_err_probe(dev, ret, "parse error\n"); } EXPORT_SYMBOL_GPL(audio_graph_parse_of); From patchwork Mon Feb 3 06:21:22 2025 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Kuninori Morimoto X-Patchwork-Id: 13956802 Received: from TY3P286CU002.outbound.protection.outlook.com (mail-japaneastazon11010005.outbound.protection.outlook.com [52.101.229.5]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id 830011D86FF for ; Mon, 3 Feb 2025 06:21:24 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=fail smtp.client-ip=52.101.229.5 ARC-Seal: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563686; cv=fail; b=OXwNghPHrp8Els3/sApIu31qFgrGQ49G/4NvFTZE4wSyOX9lfAJ7PF9gA6b9qnk6RZ6twVHtWRNlh9ZZUyPBNU5EFAYwVSWOcaUyZ7ZAPxTAP2HZ+eghZ3xToz8kW3yZnS4oR9NhRh3r3bwVkN4CGsVfSLduew5LMZ4IQPjPXq0= ARC-Message-Signature: i=2; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1738563686; c=relaxed/simple; bh=qH84IT/IqlbFAgVR2p1wfRlwO8I9S65tYlwNWm5qrDk=; h=Message-ID:From:Subject:To:Cc:In-Reply-To:References:Content-Type: Date:MIME-Version; b=UYCgaYX3qx9eF0owJsutn8x3DRIBHjCJhipGANQbsm/1Pm6tS6cCZ8IpJA34qa8veiCfOAG7XLg6suFcrmkMDLT/16/W8SPJnrQD7eIOP8bKMtTN0D5vLl1tmWc2gK2Z4PB/BzFIKuY3AdH6XUvxRanBOosQdFRrKPejDPgdm+U= ARC-Authentication-Results: i=2; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com; spf=pass smtp.mailfrom=renesas.com; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b=a70PQCja; arc=fail smtp.client-ip=52.101.229.5 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=renesas.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=renesas.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (1024-bit key) header.d=renesas.com header.i=@renesas.com header.b="a70PQCja" ARC-Seal: i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none; b=VxJ6w7Cv0jodHQ1wD5EeK+VzYrcS5Oj32npNCWMCVEQxSSInnT/5mgSIHCuVsTV/mwphVipz71YkyNHZb/tzGaSXBqU+8BdrLsuOBa2uiZG6KHqTDDSqfdEcIQVLTQ5Z3l+IgIeqgHHKqUXxfNOBmOrmwoJK3kxPEuwMbh7PIFSn8cM1P7mSMavCmlHGRJ22ZQ98zM8QlIU/EftLdHnqey1xnrFKJeE48f1RUpQO1Tir4NTpYBz1xJMUn2vtHYEm6FBQ2LBwZfqVsRcy8Lss1n74DWefyt5oSNqZhMl0lKAyjpNKkPmKFfRBe//l+ZKhATzx9s+9PeXvG7zkuwV1FA== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com; s=arcselector10001; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-AntiSpam-MessageData-ChunkCount:X-MS-Exchange-AntiSpam-MessageData-0:X-MS-Exchange-AntiSpam-MessageData-1; bh=oTZi0kjDixf8Wq4KTG7Dluh4B9mULwFJaK/IvjXagJc=; b=ELQzr0HyemkOAmElOz5/h5AcmY3ZmD4SRDaJhnVkWa3Pp7DfQ9RK1McTyVtSV2XXb1trNkzj3PylcCBWQbHsW/RcyQqIyBQ7lQ7pKwHZKIQhBJX0ZlQvGO1fi5MervnO2eJYNpJQBK4nd0PMCAS6qjyNMrcA/xl71hgvph85a+at3gTxhYeKg69+0S3uekLgUaU9Jcbc3vKOq0DFNo/LnBAlqCiibdpQkFyH0FxHYCnFo+nd+ppWTR7jIHWi0iKmh08iqGK4qsWZvAqqC5ncGFMJ29i4cjtNlV8vT9n5xSuVB5MpihHlh66pI+atZy1TEYaO3XBtAsDw2nWhkPoOpw== ARC-Authentication-Results: i=1; mx.microsoft.com 1; spf=pass smtp.mailfrom=renesas.com; dmarc=pass action=none header.from=renesas.com; dkim=pass header.d=renesas.com; arc=none DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=renesas.com; s=selector1; h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck; bh=oTZi0kjDixf8Wq4KTG7Dluh4B9mULwFJaK/IvjXagJc=; b=a70PQCjam/ikuOEyiZ/0n92HKx5qhSgcMzuFf81wBzM2PkwKcUvIOYSl/AWV51jyjXaZ+fN/2vZ1QSDuI50ZYEkEreE7Y9QSRWM5UJN3s0LqXDuS2H2E/8A5R9ScQkJs+oSNCMbUMxhUKNpT4T7FqgWmYSD6DDf+Y0833YxjhIo= Authentication-Results: dkim=none (message not signed) header.d=none;dmarc=none action=none header.from=renesas.com; Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) by TY3PR01MB11036.jpnprd01.prod.outlook.com (2603:1096:400:3ad::8) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.8398.24; Mon, 3 Feb 2025 06:21:22 +0000 Received: from TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11]) by TYCPR01MB10914.jpnprd01.prod.outlook.com ([fe80::c568:1028:2fd1:6e11%5]) with mapi id 15.20.8398.025; Mon, 3 Feb 2025 06:21:22 +0000 Message-ID: <87tt9br1jy.wl-kuninori.morimoto.gx@renesas.com> From: Kuninori Morimoto Subject: [PATCH 6/6] ASoC: audio-graph-card2: use snd_soc_ret() User-Agent: Wanderlust/2.15.9 Emacs/29.3 Mule/6.0 To: Mark Brown Cc: linux-sound@vger.kernel.org In-Reply-To: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> References: <8734gvsg5i.wl-kuninori.morimoto.gx@renesas.com> Date: Mon, 3 Feb 2025 06:21:22 +0000 X-ClientProxiedBy: TYCP301CA0086.JPNP301.PROD.OUTLOOK.COM (2603:1096:405:7b::12) To TYCPR01MB10914.jpnprd01.prod.outlook.com (2603:1096:400:3a9::11) Precedence: bulk X-Mailing-List: linux-sound@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 X-MS-PublicTrafficType: Email X-MS-TrafficTypeDiagnostic: TYCPR01MB10914:EE_|TY3PR01MB11036:EE_ X-MS-Office365-Filtering-Correlation-Id: a4883382-5dd3-4f69-44a8-08dd441afaca X-MS-Exchange-SenderADCheck: 1 X-MS-Exchange-AntiSpam-Relay: 0 X-Microsoft-Antispam: BCL:0;ARA:13230040|376014|52116014|366016|1800799024|38350700014; X-Microsoft-Antispam-Message-Info: lZDiUbftGJ5814vvipeTIf732DsjCNBZHuQaSUGvQyv+YWSzRkPb2NH9k8RbWABinkNXLWErMVfrgCVfdWWK42I9czBnbiLDjHM5BYk9lBSALkZ0BmaZ4Oeo2EKNhiTt42U/XAnCasEd/JQsPsg2veFMnlWXBmiRhfivvM96ihoJHLCNwjLru6A+C3CWY3dxYhCkA/8ZkKx/IAmSGDFD+EbOOXFfOK82i8UGZkzaIqmxQ4IYOT9LvbkDm5C4kR6R7f0veqsU+lJl2LJFTi23UuLWBFA2tASBn7pmgaI4Tl/hRf89SlgJdmFjAp4Z0AGGxu8VRnd7G9bMYRQkGDhsBHU/z3Dhq+13vMQN21OVf90box42O1Zk1nPsIwotrS8PbnWvIsJifTUzOqq+5lMpPDZU9J5iLgNXwHSimVwKDvUmcJ5TpBZBZxKMLQD5IwYsyx5xkm/JTR6spqK0hg5yQ85zo2l1sYMq+yTtSF76nBZQYwx3qA3VW2j+KnuHd228iSLIDiATNEne3DQrwyzbxqgMOVpUZBiAkIFuzIGN3Dg6itDGpako7nFkKOf5xZ+DK9+f4HOzEFe0ABQmoYvBmIPpuhMXjxH2BgstWQKIHG46cJcRr6DZpO3Qg67+diEZGgpRxxwcpr7IGr+0ty9QPWISLXxkA7sLJsa/yPbuF5rtTFDQJGsJWj8RMAd+90u34xX8AhOrS59oAsFomD3Qn0Z6BdQkDNOG9/tLsvNP2vfsMCCPNdvnCc2fp01emJanNu8GhXNA9s/M9UazRIUmaw+5KE7CMdOKFRYduQtbWsBwuCxuUeT+X9JrKgVuv8oFiI3I7tKzRIYIsHd/Q1ckX172vybiSxGDQlIMnQLTuydqqjwQrnmAxMZqUScEc2JxtDbZAvUrY8ZsUC/yIzsuIwV/KWHev7G7QiLf5VypDV2vYPBFrJdTErSRbyyxlX2J5YbiqQjsk/TJldBPBZW0ITNBQ1UQwEdC+7DT7IzgYs5tLlbZb69JS79ccPKpngQhkAs0e4ZiBsNCM13yidTdfewGKivFyxnt4jlcbEw+IMYx5tXYsvX+1RChJKHHgPOFiggCsbL5JQ+Pm5kpzKSFw3sH9j3GcImB+HcsapZofMxT1z9TdvR4VpfB9H2nv+hTCVdXnKEK7RopmYqHjhomUBNVmSP5dkj+bFn01Z0wWRhZ7Gx3k+UO81LHrdpOENxAbq+e3rcIOW21W6k1ex59MWgl6R1bqnZsIKXfkuBVZWQjaOjjjY3ddtK1uSxpioFPsNl8LmrfdOgSLx2sw6s4+RTjrXZN8dtwzJyiFrK8+NEg6znhtlZMOAxRBQySi3xnaDWGId1SbT82mdaRtvST7AUm054lUeU7b0+FjO9Jb59GGOAh2YycJxcYsDsQM6f7Nc8ix0lFv7ceJDFY48wySi37ZcX2g5e1mlNQPIuU39+NULP8cDx+d9HQDBZefsmY X-Forefront-Antispam-Report: CIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:TYCPR01MB10914.jpnprd01.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(376014)(52116014)(366016)(1800799024)(38350700014);DIR:OUT;SFP:1101; X-MS-Exchange-AntiSpam-MessageData-ChunkCount: 1 X-MS-Exchange-AntiSpam-MessageData-0: 1CHyWWcNOkDYmvXmB7GGVK90FKLpLAqrnr1U5qerFzW46xe/k+M8Zg0SmwSvsyYhff0dxj4tW6LJS5LXTTjQEZRqjYdLGUmTzSsV+h0CGY/4q43ZodFEwJk9lfyfOz6we8mft091m4CjKXU1goUJY0kxEZ99E/BGyoihSu6uWkSWkvPkLgfRliVdL8NaOuzOJ0YfzOrFMpUk0pAcDARR/j+WCXE/CgbBpLNbmcUp/hJnGpSG83E0cnPEQz6cLPon7bhPb8LjNpTc0xPb9j3daqcy1PpEi6fH130t4gkjQ8oW8Fh8zoUuMHi3dhsggyJjGpwon7UNrWxZdJfMwjxs8nQ7SLY1UAyD9mQ4nOWywFs5O0/R57ELyO4OXy6b/u1ciNLuuE9On52a+nzZqebiqLbAqvu+05vi5G/7I9hIQ+c8mm8WqpTgFW3VDQVqHQ0RPiWgdaaeJwmYg6LH6lfzTZ34NOs6vR54NGupayOHxTRvaFMDF7XRuYqN2heVovAvQdlTLQQslGJolDsGulzMdFBD7rLyauzoh3VcNC0Ga0CwgWmm/VjyaubktqWYRoHYvb9PQpH3J3yvwKgb6yedYKOS9W0xk5cFJsEgA2rNwOQ642WXmJQLgO2YtMwyrJ2Jt1f4K6hD96jQVzgIIfG5/7lbdie7T/42CRZfmO2WRzNBPve59Qgw4oPRUZ3ZplY52PHN4CA6+w5grBRVwtp3m/B/jV+rtmW/+siLpkl2M4Jv0UGAFtrvZdvMjTudHhkan8n7BTBogpT7PByNRXE1lM0zFw0YRaepO/kDlBb/zMJADuyGwn/nuEe4+dCSRxQ5VMs8TSyeesOOGMY3gZ95cqy4V1T/gUqBsDvt3rxunvP9t/fFlKApCXqkB5gl8Nbl1czbRbgDpq02TcoTHaEPUB7JeVyMDidHUtt9pChvJNx6XG7m3H99Ji5ZOpaRlWPXw9iVlMJ/VEtPprLl7+LYzFHcJ24/A/Jq/nllBrkKmxB7pflLynkZCueLnkPuDM+nFOH4cuQDAee+hJeyV2GuFQqN/0GDje9W943gcueQ+a7pTZ11cGrYHtQ2527fxwU0cqPG9JOdaL43487ES6AGmYPdc/zjRP+ZtpQqM+T5vrevcznM60hdyhNk9+VsnuRVcBtqye5VK+GMFMNEa0RuNt1mAJSRdpPE39LuzxWXVHTBPx6lgAxpleJiUPwNQ9/uBMQzoAOLwoU678EqI8FWn1kKyaJaoc1qGR6FYKn3109lv0mjG5kfl0P0UNYBhRXXrKUR8IznRcxqJH1PUmJN3YtGP+hh9hGL8soj4FqkmYLLGOZ0ZpuUHuV3pFtQ1MWGl3Qb+LwOlELAD00zaB/mKTD4ATgE8ncJCsBn4U3ze790PVg4DOcHoagqCYCHaK9zaGHCB/kskDKFa4cHH516B8wwgleSCwfV8T8B1TioQB1wYN/hqGQFwJDnWIoS+y8PSN8sU6msOrByZHtFzY5Mvbyzz4TW3cHMysvc0VgnacexMPyRppq++kILKIcbadD6x+E5AnHTN82agwL2D/ziDGGi5Ldv00JHbN3nIQtS1EKvnalkjAJXrWRvN4hRgq7mCkQ8ZS/xDuYiVjWDJPYefhPVohrTKgqhZmet1GSGy1o= X-OriginatorOrg: renesas.com X-MS-Exchange-CrossTenant-Network-Message-Id: a4883382-5dd3-4f69-44a8-08dd441afaca X-MS-Exchange-CrossTenant-AuthSource: TYCPR01MB10914.jpnprd01.prod.outlook.com X-MS-Exchange-CrossTenant-AuthAs: Internal X-MS-Exchange-CrossTenant-OriginalArrivalTime: 03 Feb 2025 06:21:22.4659 (UTC) X-MS-Exchange-CrossTenant-FromEntityHeader: Hosted X-MS-Exchange-CrossTenant-Id: 53d82571-da19-47e4-9cb4-625a166a4a2a X-MS-Exchange-CrossTenant-MailboxType: HOSTED X-MS-Exchange-CrossTenant-UserPrincipalName: Lde7XN4RRYpugeTDGRDbFSzoCLul42g8bYOt0OePINyJJUiWIt1yoIIWQsxSz1qskTROovd2AMaQg4WiCqkCxDsLD4rczLhLB0BshMuWuh1EQidcPsrNJVGCAUycxjzz X-MS-Exchange-Transport-CrossTenantHeadersStamped: TY3PR01MB11036 We can use snd_soc_ret() to indicate error message when return. Let's use it. Signed-off-by: Kuninori Morimoto --- sound/soc/generic/audio-graph-card2.c | 81 ++++++++++++++++----------- 1 file changed, 49 insertions(+), 32 deletions(-) diff --git a/sound/soc/generic/audio-graph-card2.c b/sound/soc/generic/audio-graph-card2.c index 945a16e6d6919..5dcc78c551a25 100644 --- a/sound/soc/generic/audio-graph-card2.c +++ b/sound/soc/generic/audio-graph-card2.c @@ -234,6 +234,13 @@ enum graph_type { #define GRAPH_NODENAME_DPCM "dpcm" #define GRAPH_NODENAME_C2C "codec2codec" +#define graph_ret(priv, ret) _graph_ret(priv, __func__, ret) +static inline int _graph_ret(struct simple_util_priv *priv, + const char *func, int ret) +{ + return snd_soc_ret(simple_priv_to_dev(priv), ret, "at %s()\n", func); +} + #define ep_to_port(ep) of_get_parent(ep) static struct device_node *port_to_ports(struct device_node *port) { @@ -411,19 +418,19 @@ static int __graph_parse_node(struct simple_util_priv *priv, ret = graph_util_parse_dai(priv, ep, dlc, &is_single_links); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_tdm(ep, dai); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_tdm_width_map(priv, ep, dai); if (ret < 0) - return ret; + goto end; ret = simple_util_parse_clk(dev, ep, dai, dlc); if (ret < 0) - return ret; + goto end; /* * set DAI Name @@ -488,11 +495,12 @@ static int __graph_parse_node(struct simple_util_priv *priv, simple_util_canonicalize_cpu(cpus, is_single_links); simple_util_canonicalize_platform(platforms, cpus); } - - return 0; +end: + return graph_ret(priv, ret); } -static int graph_parse_node_multi_nm(struct snd_soc_dai_link *dai_link, +static int graph_parse_node_multi_nm(struct simple_util_priv *priv, + struct snd_soc_dai_link *dai_link, int *nm_idx, int cpu_idx, struct device_node *mcpu_port) { @@ -534,10 +542,10 @@ static int graph_parse_node_multi_nm(struct snd_soc_dai_link *dai_link, struct device_node *mcodec_port_top __free(device_node) = ep_to_port(mcodec_ep_top); struct device_node *mcodec_ports __free(device_node) = port_to_ports(mcodec_port_top); int nm_max = max(dai_link->num_cpus, dai_link->num_codecs); - int ret = 0; + int ret = -EINVAL; if (cpu_idx > dai_link->num_cpus) - return -EINVAL; + goto end; for_each_of_graph_port_endpoint(mcpu_port, mcpu_ep_n) { int codec_idx = 0; @@ -578,8 +586,8 @@ static int graph_parse_node_multi_nm(struct snd_soc_dai_link *dai_link, if (ret < 0) break; } - - return ret; +end: + return graph_ret(priv, ret); } static int graph_parse_node_multi(struct simple_util_priv *priv, @@ -633,7 +641,7 @@ static int graph_parse_node_multi(struct simple_util_priv *priv, /* CPU:Codec = N:M */ if (is_cpu && dai_link->ch_maps) { - ret = graph_parse_node_multi_nm(dai_link, &nm_idx, idx, port); + ret = graph_parse_node_multi_nm(priv, dai_link, &nm_idx, idx, port); if (ret < 0) goto multi_err; } @@ -643,7 +651,7 @@ static int graph_parse_node_multi(struct simple_util_priv *priv, ret = -EINVAL; multi_err: - return ret; + return graph_ret(priv, ret); } static int graph_parse_node_single(struct simple_util_priv *priv, @@ -651,7 +659,7 @@ static int graph_parse_node_single(struct simple_util_priv *priv, struct device_node *ep, struct link_info *li, int is_cpu) { - return __graph_parse_node(priv, gtype, ep, li, is_cpu, 0); + return graph_ret(priv, __graph_parse_node(priv, gtype, ep, li, is_cpu, 0)); } static int graph_parse_node(struct simple_util_priv *priv, @@ -660,11 +668,14 @@ static int graph_parse_node(struct simple_util_priv *priv, struct link_info *li, int is_cpu) { struct device_node *port __free(device_node) = ep_to_port(ep); + int ret; if (graph_lnk_is_multi(port)) - return graph_parse_node_multi(priv, gtype, port, li, is_cpu); + ret = graph_parse_node_multi(priv, gtype, port, li, is_cpu); else - return graph_parse_node_single(priv, gtype, ep, li, is_cpu); + ret = graph_parse_node_single(priv, gtype, ep, li, is_cpu); + + return graph_ret(priv, ret); } static void graph_parse_daifmt(struct device_node *node, unsigned int *daifmt) @@ -842,18 +853,19 @@ int audio_graph2_link_normal(struct simple_util_priv *priv, */ ret = graph_parse_node(priv, GRAPH_NORMAL, codec_ep, li, 0); if (ret < 0) - return ret; + goto end; /* * call CPU, and set DAI Name */ ret = graph_parse_node(priv, GRAPH_NORMAL, cpu_ep, li, 1); if (ret < 0) - return ret; + goto end; graph_link_init(priv, lnk, cpu_ep, codec_ep, li, 1); - return ret; +end: + return graph_ret(priv, ret); } EXPORT_SYMBOL_GPL(audio_graph2_link_normal); @@ -946,7 +958,7 @@ int audio_graph2_link_dpcm(struct simple_util_priv *priv, graph_link_init(priv, lnk, cpu_ep, codec_ep, li, is_cpu); - return ret; + return graph_ret(priv, ret); } EXPORT_SYMBOL_GPL(audio_graph2_link_dpcm); @@ -992,8 +1004,13 @@ int audio_graph2_link_c2c(struct simple_util_priv *priv, struct snd_soc_pcm_stream *c2c_conf; c2c_conf = devm_kzalloc(dev, sizeof(*c2c_conf), GFP_KERNEL); - if (!c2c_conf) - return ret; + if (!c2c_conf) { + /* + * Clang doesn't allow to use "goto end" before calling __free(), + * because it bypasses the initialization. Use graph_ret() directly. + */ + return graph_ret(priv, -ENOMEM); + } c2c_conf->formats = SNDRV_PCM_FMTBIT_S32_LE; /* update ME */ c2c_conf->rates = SNDRV_PCM_RATE_8000_384000; @@ -1019,18 +1036,18 @@ int audio_graph2_link_c2c(struct simple_util_priv *priv, */ ret = graph_parse_node(priv, GRAPH_C2C, codec1_ep, li, 0); if (ret < 0) - return ret; + goto end; /* * call CPU, and set DAI Name */ ret = graph_parse_node(priv, GRAPH_C2C, codec0_ep, li, 1); if (ret < 0) - return ret; + goto end; graph_link_init(priv, lnk, codec0_ep, codec1_ep, li, 1); - - return ret; +end: + return graph_ret(priv, ret); } EXPORT_SYMBOL_GPL(audio_graph2_link_c2c); @@ -1078,7 +1095,7 @@ static int graph_link(struct simple_util_priv *priv, li->link++; err: - return ret; + return graph_ret(priv, ret); } static int graph_counter(struct device_node *lnk) @@ -1249,7 +1266,7 @@ static int graph_count(struct simple_util_priv *priv, li->link++; err: - return ret; + return graph_ret(priv, ret); } static int graph_for_each_link(struct simple_util_priv *priv, @@ -1266,7 +1283,7 @@ static int graph_for_each_link(struct simple_util_priv *priv, struct device_node *node = dev->of_node; struct device_node *lnk; enum graph_type gtype; - int rc, ret; + int rc, ret = 0; /* loop for all listed CPU port */ of_for_each_phandle(&it, rc, node, "links", NULL, 0) { @@ -1276,10 +1293,10 @@ static int graph_for_each_link(struct simple_util_priv *priv, ret = func(priv, hooks, gtype, lnk, li); if (ret < 0) - return ret; + break; } - return 0; + return graph_ret(priv, ret); } int audio_graph2_parse_of(struct simple_util_priv *priv, struct device *dev, @@ -1355,7 +1372,7 @@ int audio_graph2_parse_of(struct simple_util_priv *priv, struct device *dev, if (ret < 0) dev_err_probe(dev, ret, "parse error\n"); - return ret; + return graph_ret(priv, ret); } EXPORT_SYMBOL_GPL(audio_graph2_parse_of);