{"id":2223389,"url":"http://patchwork.ozlabs.org/api/patches/2223389/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260415081942.4183108-3-chancel.liu@nxp.com/","project":{"id":2,"url":"http://patchwork.ozlabs.org/api/projects/2/?format=json","name":"Linux PPC development","link_name":"linuxppc-dev","list_id":"linuxppc-dev.lists.ozlabs.org","list_email":"linuxppc-dev@lists.ozlabs.org","web_url":"https://github.com/linuxppc/wiki/wiki","scm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git","webscm_url":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/","list_archive_url":"https://lore.kernel.org/linuxppc-dev/","list_archive_url_format":"https://lore.kernel.org/linuxppc-dev/{}/","commit_url_format":"https://git.kernel.org/pub/scm/linux/kernel/git/powerpc/linux.git/commit/?id={}"},"msgid":"<20260415081942.4183108-3-chancel.liu@nxp.com>","list_archive_url":"https://lore.kernel.org/linuxppc-dev/20260415081942.4183108-3-chancel.liu@nxp.com/","date":"2026-04-15T08:19:41","name":"[v2,2/3] ASoC: soc-core: Add core support for ignoring suspend on selected DAPM widgets","commit_ref":null,"pull_url":null,"state":"handled-elsewhere","archived":false,"hash":"2d1ca5af66dc91e46b9f66b91e86c5963cd4c6b0","submitter":{"id":84739,"url":"http://patchwork.ozlabs.org/api/people/84739/?format=json","name":"Chancel Liu","email":"chancel.liu@nxp.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260415081942.4183108-3-chancel.liu@nxp.com/mbox/","series":[{"id":499943,"url":"http://patchwork.ozlabs.org/api/series/499943/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=499943","date":"2026-04-15T08:19:39","name":"ASoC: soc-core: Add core support for ignoring suspend on selected DAPM widgets","version":2,"mbox":"http://patchwork.ozlabs.org/series/499943/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2223389/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2223389/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linuxppc-dev+bounces-19757-incoming=patchwork.ozlabs.org@lists.ozlabs.org>","X-Original-To":["incoming@patchwork.ozlabs.org","linuxppc-dev@lists.ozlabs.org"],"Delivered-To":"patchwork-incoming@legolas.ozlabs.org","Authentication-Results":["legolas.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=QYmnUQx8;\n\tdkim-atps=neutral","legolas.ozlabs.org;\n spf=pass (sender SPF authorized) smtp.mailfrom=lists.ozlabs.org\n (client-ip=2404:9400:21b9:f100::1; helo=lists.ozlabs.org;\n envelope-from=linuxppc-dev+bounces-19757-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)","lists.ozlabs.org;\n arc=pass smtp.remote-ip=\"2a01:111:f403:c20a::7\" arc.chain=microsoft.com","lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com","lists.ozlabs.org;\n\tdkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=QYmnUQx8;\n\tdkim-atps=neutral","lists.ozlabs.org;\n spf=permerror (SPF Permanent Error: Void lookup limit of 2 exceeded)\n smtp.mailfrom=nxp.com (client-ip=2a01:111:f403:c20a::7;\n helo=pa4pr04cu001.outbound.protection.outlook.com;\n envelope-from=chancel.liu@nxp.com; receiver=lists.ozlabs.org)","dkim=none (message not signed)\n header.d=none;dmarc=none action=none header.from=nxp.com;"],"Received":["from lists.ozlabs.org (lists.ozlabs.org\n [IPv6:2404:9400:21b9:f100::1])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange x25519 server-signature ECDSA (secp384r1 raw public key)\n server-digest SHA384)\n\t(No client certificate requested)\n\tby legolas.ozlabs.org (Postfix) with ESMTPS id 4fwYxx05V6z1yDF\n\tfor <incoming@patchwork.ozlabs.org>; Wed, 15 Apr 2026 18:21:09 +1000 (AEST)","from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4fwYxr4VH7z301X;\n\tWed, 15 Apr 2026 18:21:04 +1000 (AEST)","from PA4PR04CU001.outbound.protection.outlook.com\n (mail-francecentralazlp170130007.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c20a::7])\n\t(using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits)\n\t key-exchange secp256r1 server-signature RSA-PSS (2048 bits) server-digest\n SHA256)\n\t(No client certificate requested)\n\tby lists.ozlabs.org (Postfix) with ESMTPS id 4fwYxq63Khz2yvL\n\tfor <linuxppc-dev@lists.ozlabs.org>; Wed, 15 Apr 2026 18:21:03 +1000 (AEST)","from AM9PR04MB8353.eurprd04.prod.outlook.com (2603:10a6:20b:3ef::22)\n by DU2PR04MB8600.eurprd04.prod.outlook.com (2603:10a6:10:2db::12) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9769.48; Wed, 15 Apr\n 2026 08:20:39 +0000","from AM9PR04MB8353.eurprd04.prod.outlook.com\n ([fe80::46ae:f774:f04c:a1bc]) by AM9PR04MB8353.eurprd04.prod.outlook.com\n ([fe80::46ae:f774:f04c:a1bc%5]) with mapi id 15.20.9769.016; Wed, 15 Apr 2026\n 08:20:39 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1776241264;\n\tcv=pass;\n b=ZRxezXIzefJkkDXiT+pobFd4BIDL2Yixr7VinaENCWPGZvY9AyUqorHf+PkKAXz0sAEDoDVUnReChf2mG6ry8iUb5adt4Ck7E65v4GOCkuZVb9frBMPJIog2POW4k/Tnhzck5aE3SUckFIOoroMhrwo1V0owZbsGAcJJspy7pQ/37LJkZBpavRXeu4TRoyOJliSCswnNjr6dRkeBV5nnRC4Jt3Fpj8LhXpOYv/+xrA8+g3+/1XjEv1THOu9UN82YTWFrbxPlaGgRlHCaLAGfqhjS3YMESdm7rYmrNd0Gug4s/z9AjWAjMLEaSoaLJSRn5DZW/juaJKW0w4se0ERuBg==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=FwNJG//nBM26R1UlEfC+fEt2TSTvW55GPuZCiTuZ2oJV+wmiO/SxmBYxJ5kAxYV0r2JzglwDTRAMjHhQui4G1lFYINw4T8j4oWN9Q87O81GJdSs4Y+dGL+LI6bcIM9G9lUW3svqBKfFqG4g9ENVFcMNrYjWb14WIcqO55levfBgCLmARS3HddhDCsFpCaKvUBSfjyB2mwcR4M9z6A7VTuw4m/U4qoNpq0FpcU/DxCS83brhtUGPz002dOzJ18YRtA1ckAgV+UWZRqfCUmOQ4i8xxdkqXjfyTJ1xK+ynMCWoZzF03td2sqaR7B8VshEX7Goz01/7UzoMiojwL5QSMqg=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1776241264; c=relaxed/relaxed;\n\tbh=Lj4ow+POcv6qIcuPkA6csArudyjVdjzN2opgHF+HGKw=;\n\th=From:To:Subject:Date:Message-ID:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=FvGonXBlIyiLiPvOccxTTiVi0EBPsFSJ9e0dUhbfuarchqUf95z8GUerjw2laDs/eFHmlQCoIWaiAuzEMZTYnaRyt6J/vKmaNJ+evNPSSyNJBF4r359lTks+smF0MectUhvbP/m1CujCitVp0pH3vQogyXsSdPbMJn+6ljQMCt6DaSfilzksF5J+wA7JlrzxDshKzAb5LkiNSKr8sqaHFCAgJQUiOko8anUPQbGxfmfjf4x6fctWPLRVcHu6Q4I1sFsoNV2a8KWpERstz7CPyjRb3tSjVMHfwUxzNff7MJH4er9IWrER5CfjgqK6hnDsbeFAIp2V7LoQVVp5Aw8PiQ==","i=1; a=rsa-sha256; c=relaxed/relaxed; d=microsoft.com;\n s=arcselector10001;\n 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;\n bh=Lj4ow+POcv6qIcuPkA6csArudyjVdjzN2opgHF+HGKw=;\n b=e0VjgC815kQUP/58Cjje4oyFS2i27wdlJdle7AxcEjFYJ/jTic8A0PbzwsbkeWI7LWpbWy3BsV4XYD/tdccMXBSI85e3UocuCT8uLeM96PyFYsK6KxI5FyKd9fDwq7CE+uQeOWsSogLFYXcdtdzFHIm7P1710cs9bw5pRV0MgE1i1oxD/e2DyFSIVNDvY9EPgUqoEWLRwWKw6brEipSe7OrLt8iVJaDr8RDVPFCfZVpAQk6G0hxlrfesNNylRlqBoGHWGbRz118ndVDXB+HumfIRWMpYJ1xqa8x67j7GrU4t7u8CJzgsMVYom+LQPnV3UMO9Dch/uds2QyDIsDJQ2A=="],"ARC-Authentication-Results":["i=2; lists.ozlabs.org;\n dmarc=pass (p=none dis=none) header.from=nxp.com; dkim=pass (2048-bit key;\n unprotected) header.d=nxp.com header.i=@nxp.com header.a=rsa-sha256\n header.s=selector1 header.b=QYmnUQx8; dkim-atps=neutral;\n spf=permerror (client-ip=2a01:111:f403:c20a::7;\n helo=pa4pr04cu001.outbound.protection.outlook.com;\n envelope-from=chancel.liu@nxp.com;\n receiver=lists.ozlabs.org) smtp.mailfrom=nxp.com","i=1; mx.microsoft.com 1; spf=pass\n smtp.mailfrom=nxp.com; dmarc=pass action=none header.from=nxp.com; dkim=pass\n header.d=nxp.com; arc=none"],"DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed; d=nxp.com; s=selector1;\n h=From:Date:Subject:Message-ID:Content-Type:MIME-Version:X-MS-Exchange-SenderADCheck;\n bh=Lj4ow+POcv6qIcuPkA6csArudyjVdjzN2opgHF+HGKw=;\n b=QYmnUQx8p+mWEMxCkGPOvyivRNP9hFV6/xNxTQmLume+tKi9LbxbTDX8BToNTgDYOhbd31RM9u7VcrgYroKIGxEcskP8k0BRZFWTzVYEa0mWtPkd/M8rwXnM+OTP8hO0B7CSZ10J/7QJ2f1+sjmdQHe/AN5o9yhL9Rln+eN9mvC/tQaNnie77uFn615GMWRKs2WBTUPUJ21xE34qB13JqKvDyJwHg+oSkk7qKpv1z40ezCz4gvQjpEbYRe3A9ZIkecPb2fPS7h3EDL/rqMntjk1Rm0pvd+mcNLW+HPTWoqXfT2BxjQFR+iDflfg4FNQk6MFnQCzTLjmT1iHwBGAc6A==","From":"Chancel Liu <chancel.liu@nxp.com>","To":"lgirdwood@gmail.com,\n\tbroonie@kernel.org,\n\tperex@perex.cz,\n\ttiwai@suse.com,\n\tshengjiu.wang@gmail.com,\n\tXiubo.Lee@gmail.com,\n\tfestevam@gmail.com,\n\tnicoleotsuka@gmail.com,\n\tFrank.Li@nxp.com,\n\ts.hauer@pengutronix.de,\n\tkernel@pengutronix.de,\n\tshumingf@realtek.com,\n\trander.wang@linux.intel.com,\n\tpierre-louis.bossart@linux.dev,\n\tlinux-sound@vger.kernel.org,\n\tlinux-kernel@vger.kernel.org,\n\tlinuxppc-dev@lists.ozlabs.org,\n\timx@lists.linux.dev,\n\tlinux-arm-kernel@lists.infradead.org","Subject":"[PATCH v2 2/3] ASoC: soc-core: Add core support for ignoring suspend\n on selected DAPM widgets","Date":"Wed, 15 Apr 2026 17:19:41 +0900","Message-ID":"<20260415081942.4183108-3-chancel.liu@nxp.com>","X-Mailer":"git-send-email 2.50.1","In-Reply-To":"<20260415081942.4183108-1-chancel.liu@nxp.com>","References":"<20260415081942.4183108-1-chancel.liu@nxp.com>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"SE2P216CA0029.KORP216.PROD.OUTLOOK.COM\n (2603:1096:101:114::6) To AM9PR04MB8353.eurprd04.prod.outlook.com\n (2603:10a6:20b:3ef::22)","X-Mailing-List":"linuxppc-dev@lists.ozlabs.org","List-Id":"<linuxppc-dev.lists.ozlabs.org>","List-Help":"<mailto:linuxppc-dev+help@lists.ozlabs.org>","List-Owner":"<mailto:linuxppc-dev+owner@lists.ozlabs.org>","List-Post":"<mailto:linuxppc-dev@lists.ozlabs.org>","List-Archive":"<https://lore.kernel.org/linuxppc-dev/>,\n  <https://lists.ozlabs.org/pipermail/linuxppc-dev/>","List-Subscribe":"<mailto:linuxppc-dev+subscribe@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-digest@lists.ozlabs.org>,\n  <mailto:linuxppc-dev+subscribe-nomail@lists.ozlabs.org>","List-Unsubscribe":"<mailto:linuxppc-dev+unsubscribe@lists.ozlabs.org>","Precedence":"list","MIME-Version":"1.0","X-MS-PublicTrafficType":"Email","X-MS-TrafficTypeDiagnostic":"AM9PR04MB8353:EE_|DU2PR04MB8600:EE_","X-MS-Office365-Filtering-Correlation-Id":"1918e796-6ec6-450f-7af2-08de9ac7e0b5","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|1800799024|19092799006|7416014|376014|52116014|366016|18002099003|22082099003|56012099003|38350700014|921020;","X-Microsoft-Antispam-Message-Info":"\n\tVbMPzJixtTu/s7/IpEofYJf0/DOjvGaz7GeyNNd5NbCrxAEn6t7VGVHRcSmTOBOt1deHEH4+/DodoGX0hVMuuhyOT9KwPy4ayzABmSLcZSMA/7/Ldb8itXYsyHk3K8NN4TpM+c1KPwW4RZ3PKCYEhWp7+XBMf9hOQvV6JkR8P0R72d6qkwv15LZ9Egv0BueD6FtcYucJTl6PFrow1XlVG17JUTmxHVKorYq/ppJMQ7ONaDYkSI1TJT+EnciEnpVCkqtChOwJby1M/4fSvQ2yEQdIWQ3l2SdjOzwDkapTiWfvsb1qDQDkCYVv6oTVMX7mMhTiVgSBp3fgje7AHelDgWwrOSeCv34vPhqUPBIEDo4oCaLFO9D1Rl3z5t62i6f4Eu3ofvi4iQ2G5TZCswgcA8nb2rxH+Cj0a2h5rZaIIRxq27q26mZXDRkNmFKruo8JPOvEjPrugOROswuBK5Dz2cE3eG2Y8zZ/ibWVBEw6fNthUE2w2+/ftfXTIbjH9+B22Yxh73fFJ1ojRVMgs0ewClFK3kSfvu26lbEDxZcbss0bUk2lZUThbMAeiu6U6FXVvNgcOoZ0Nf741TyJv83rGFAc6YVRu+HhHVGZV2+tHu8wwIpvrWACCUqf/4ykMToH1A5/KzIIpe5kBtR2AX51EBpjGhAXamE05G5miQvViXqRNTyXkTXM4IcdVq8GSP///iuqiKoj3pWLerN7nHuqByapu7j/Zydd8v7DGUHvZMElufCXt6700v/FF35/9fPcjx/kSMyZ0cJkB2Yyjk9ZiPUpGky8CZh612V6A6SMnYESzeu3KTHaP1lsdjrYAMFx","X-Forefront-Antispam-Report":"\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM9PR04MB8353.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(1800799024)(19092799006)(7416014)(376014)(52116014)(366016)(18002099003)(22082099003)(56012099003)(38350700014)(921020);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n FWKMuKvgiCPJw1gpZrzVWsQNxPcb/FS0O8yAmtIvxjcRJX7JTlf297JbJ0bxSS3iptzNkBS7snmQF3/CiCQoPZcza/q9GSxKHTOxy7VFHhSSoZ9HAUw4iypZjtJXD6JO8RBnS8DxCc4n0H84M4IQAHCF5XPkQVE0LdTQhwt4PzeCpMSLcm3HWoFXVuLxnGaIqVmBxN3tp2ocxVD2aD7CZnmZ811LLnDJbX0qrQRtZ/oNvTifjo8oQN2RMK7ckfUX2vqdBYoMfUlh/GL/x2LlQVwjVqUKQxV0Ej4RS+rAF/DFPwGwcqkntP9DksYTHtzfEhJepcwjkLr2g0NR6cId5MO6YNRx5T3iwRYGzwNj8PGPWhIj8goDshIf3XZcOE8Nfec6yIyVBb1Uk3dIyTm+4wJJOQt1nfIiSMjz4G3EUs8igopR0uM3+8tNF4h4Xe4z5Pk8KhJYYlZ87EUk2DZmt/1m+PDoHwfy0fSV4Fx/ttahNv20bCvQmyMjTTkVjhnK9xA/g8sElLJ7FbZEvXaN+zVWBYPCJG2zEkHdrphSb7Vdo7nK1E/jB+xJr6j0nQr1lZ0lDvL0OhxUFBdQFCYHX4WSMi14fz757FokC6SP6jjLEYe/M6AysqLRHLugLPwOsyf5EnhVokIxrc0iMxWydKox3K5mNhN1IJFbzYsjnzR10yt2Wm9Y3MtWwJM7OGwxuz4aU3nngmHdRfY/2kHd6bpxkvmgLAUiJ5tjm9s3YM2s7f1aSqpqc1oetG64H6xFAyc6IockzuoMxbGl4nOPyKgzpDntH+YmyREJ5/1FUDC/GkZkU0NxpD6nBvUXLVcQOpqcgteU0vGJMqBZVRtBg60+VSCgLxlatlZLwGcYC3Qy9bIyDs/kcInTWa3jGJTRdq6P/1CEiKePQf0C6OkyAKaDSR+D1r0sQUPojP8F5gZp8DzKilpqzQGopXQLQHxtUe5rwzmjVtNxpeyitYxuTkBaeNA0yKLT1YVtTEGIxb7/7pTr0Czr40HasmuYR/LHZbj/vGjeBZLlEJliEbYVhLMxy1sxC993mGEaBW++QkDR7e5GHZ/zu431BPR7CxNQ29oO35D8iuKKP35IuDjCIdKMvt8YQi4KR/AqAAxflcwQy232gRNaumY17jVR5V8ueIj2R3GiG/zwm5J2FdBWqNcUiEICchVgcPcNqjy3HJbS2otm66jmDCYPKJnDg8KA5OftD626IQDPanzBpo+S20l677NzMHVexWENluWgR5jptBBa3QnuUgWY9pO+5qy0dMnUEL3wWD0PPhGufmwkkEku2FUc2Rx8mxpCeS/GM1mfYbO2ZZskyjLzS2WkERP4yeNU/gC3RRwWgy+2Pv6IgkJB/r5BwsDyaOxpSHTjfu6YS/YmV/W/xbpAxrT2+cjJ8Z8eUx39Yui+dMc8OyiUU0eC2kPwxAgz6YCc/kAbR//W6AZCWK/n/C5jm2U7OKXSSRgzsvjQb4MKeoxPSGMqMRNfEoqvElFTF+e1ujgS3FEkBSEqU/vSo/j24YQMhuoR2cPGodw6V4BeFYChdMytHOftvlAbz8vAT85fRQ5IeOH7k3k2bp4sY0/YS/qVkgpR/3IYIOmFgeaDYXFYjUJ6vPrJZ79xyBNZRnkzGqnkOqgKQMKiNh0RFoo78XKRsJcV5guyTqaf8KAosp5F+iFrcQsDbqgUuUvbzS9+pySVyQULqSoCsSB8mgeCVky0QD39puLeiw6BMS3whgBSXNmHWQ==","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n 1918e796-6ec6-450f-7af2-08de9ac7e0b5","X-MS-Exchange-CrossTenant-AuthSource":"AM9PR04MB8353.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"15 Apr 2026 08:20:39.3418\n (UTC)","X-MS-Exchange-CrossTenant-FromEntityHeader":"Hosted","X-MS-Exchange-CrossTenant-Id":"686ea1d3-bc2b-4c6f-a92c-d99c5c301635","X-MS-Exchange-CrossTenant-MailboxType":"HOSTED","X-MS-Exchange-CrossTenant-UserPrincipalName":"\n u1lG8+Ebfde0jGJOcwTG+UUpwblyNsbUHXDidS4FemYhxEskN8u9jjmB3eBYMgXYvllga15Znw4mi2CXCIsO0Q==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"DU2PR04MB8600","X-Spam-Status":"No, score=0.8 required=3.0 tests=ARC_SIGNED,ARC_VALID,\n\tDKIM_SIGNED,DKIM_VALID,DKIM_VALID_AU,DKIM_VALID_EF,FORGED_SPF_HELO,\n\tRCVD_IN_DNSWL_NONE,SPF_HELO_PASS,T_SPF_PERMERROR autolearn=disabled\n\tversion=4.0.1 OzLabs 8","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"},"content":"Some audio systems require specific DAPM widgets to remain powered\nduring system suspend. Introduce a generic and reusable mechanism in\nthe ASoC core to mark selected DAPM widgets as ignore_suspend.\n\nThe unified mechanism consists of two parts:\n1. Parse and store the name list of widgets to ignore suspend in\nstruct snd_soc_card\n\nThe list of widgets can be provided either by the machine driver or\nparsed from Device Tree. Different machines have different routing and\npower requirements. Each machine can specify its own widgets to ignore\nsuspend through DT property. It enables flexible policy without hard\ncode. A new helper, snd_soc_of_parse_ignore_suspend_widgets() is added\nfor this purpose.\n\n2. Apply ignore_suspend flags during snd_soc_bind_card()\n\nAfter all components have been probed and all DAPM widgets have been\nregistered, snd_soc_bind_card() performs a unified lookup of the\nconfigured widget names across all DAPM contexts of the card and marks\nthe matching widgets with ignore_suspend = 1.\n\nSigned-off-by: Chancel Liu <chancel.liu@nxp.com>\n---\n include/sound/soc-dapm.h |  1 +\n include/sound/soc.h      |  5 +++++\n sound/soc/soc-core.c     | 43 ++++++++++++++++++++++++++++++++++++++++\n sound/soc/soc-dapm.c     | 30 ++++++++++++++++++++++++++++\n 4 files changed, 79 insertions(+)","diff":"diff --git a/include/sound/soc-dapm.h b/include/sound/soc-dapm.h\nindex 4f8fb7622a13..39c290e0eb7f 100644\n--- a/include/sound/soc-dapm.h\n+++ b/include/sound/soc-dapm.h\n@@ -636,6 +636,7 @@ int snd_soc_dapm_new_dai_widgets(struct snd_soc_dapm_context *dapm, struct snd_s\n void snd_soc_dapm_free_widget(struct snd_soc_dapm_widget *w);\n int snd_soc_dapm_link_dai_widgets(struct snd_soc_card *card);\n void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card);\n+int snd_soc_dapm_ignore_suspend_widgets(struct snd_soc_card *card);\n \n int snd_soc_dapm_update_dai(struct snd_pcm_substream *substream,\n \t\t\t    struct snd_pcm_hw_params *params, struct snd_soc_dai *dai);\ndiff --git a/include/sound/soc.h b/include/sound/soc.h\nindex 5e3eb617d832..7d6fa79f48e3 100644\n--- a/include/sound/soc.h\n+++ b/include/sound/soc.h\n@@ -1057,10 +1057,14 @@ struct snd_soc_card {\n \tint num_dapm_widgets;\n \tconst struct snd_soc_dapm_route *dapm_routes;\n \tint num_dapm_routes;\n+\tconst char **ignore_suspend_widgets;\n+\tint num_ignore_suspend_widgets;\n \tconst struct snd_soc_dapm_widget *of_dapm_widgets;\n \tint num_of_dapm_widgets;\n \tconst struct snd_soc_dapm_route *of_dapm_routes;\n \tint num_of_dapm_routes;\n+\tconst char **of_ignore_suspend_widgets;\n+\tint num_of_ignore_suspend_widgets;\n \n \t/* lists of probed devices belonging to this card */\n \tstruct list_head component_dev_list;\n@@ -1339,6 +1343,7 @@ void snd_soc_of_parse_node_prefix(struct device_node *np,\n int snd_soc_of_parse_audio_routing(struct snd_soc_card *card,\n \t\t\t\t   const char *propname);\n int snd_soc_of_parse_aux_devs(struct snd_soc_card *card, const char *propname);\n+int snd_soc_of_parse_ignore_suspend_widgets(struct snd_soc_card *card, const char *propname);\n \n unsigned int snd_soc_daifmt_clock_provider_flipped(unsigned int dai_fmt);\n unsigned int snd_soc_daifmt_clock_provider_from_bitmap(unsigned int bit_frame);\ndiff --git a/sound/soc/soc-core.c b/sound/soc/soc-core.c\nindex 3fecf9fc903c..705181dae472 100644\n--- a/sound/soc/soc-core.c\n+++ b/sound/soc/soc-core.c\n@@ -2289,6 +2289,10 @@ static int snd_soc_bind_card(struct snd_soc_card *card)\n \tif (ret < 0)\n \t\tgoto probe_end;\n \n+\tret = snd_soc_dapm_ignore_suspend_widgets(card);\n+\tif (ret < 0)\n+\t\tgoto probe_end;\n+\n \tsnd_soc_dapm_new_widgets(card);\n \tsnd_soc_card_fixup_controls(card);\n \n@@ -3294,6 +3298,45 @@ int snd_soc_of_parse_aux_devs(struct snd_soc_card *card, const char *propname)\n }\n EXPORT_SYMBOL_GPL(snd_soc_of_parse_aux_devs);\n \n+int snd_soc_of_parse_ignore_suspend_widgets(struct snd_soc_card *card,\n+\t\t\t\t\t    const char *propname)\n+{\n+\tstruct device_node *np = card->dev->of_node;\n+\tint num_widgets;\n+\tconst char **widgets;\n+\tint i;\n+\n+\tnum_widgets = of_property_count_strings(np, propname);\n+\tif (num_widgets < 0) {\n+\t\tdev_err(card->dev,\n+\t\t\t\"ASoC: Property '%s' does not exist\\n\", propname);\n+\t\treturn -EINVAL;\n+\t}\n+\n+\twidgets = devm_kcalloc(card->dev, num_widgets, sizeof(char *), GFP_KERNEL);\n+\tif (!widgets)\n+\t\treturn -ENOMEM;\n+\n+\tfor (i = 0; i < num_widgets; i++) {\n+\t\tconst char *name;\n+\t\tint ret = of_property_read_string_index(np, propname, i, &name);\n+\n+\t\tif (ret) {\n+\t\t\tdev_err(card->dev,\n+\t\t\t\t\"ASoC: Property '%s' could not be read: %d\\n\",\n+\t\t\t\tpropname, ret);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t\twidgets[i] = name;\n+\t}\n+\n+\tcard->num_of_ignore_suspend_widgets = num_widgets;\n+\tcard->of_ignore_suspend_widgets = widgets;\n+\n+\treturn 0;\n+}\n+EXPORT_SYMBOL_GPL(snd_soc_of_parse_ignore_suspend_widgets);\n+\n unsigned int snd_soc_daifmt_clock_provider_flipped(unsigned int dai_fmt)\n {\n \tunsigned int inv_dai_fmt = dai_fmt & ~SND_SOC_DAIFMT_CLOCK_PROVIDER_MASK;\ndiff --git a/sound/soc/soc-dapm.c b/sound/soc/soc-dapm.c\nindex c5b80d9ed64b..209f86b9add6 100644\n--- a/sound/soc/soc-dapm.c\n+++ b/sound/soc/soc-dapm.c\n@@ -4595,6 +4595,36 @@ void snd_soc_dapm_connect_dai_link_widgets(struct snd_soc_card *card)\n \t}\n }\n \n+int snd_soc_dapm_ignore_suspend_widgets(struct snd_soc_card *card)\n+{\n+\tstruct snd_soc_dapm_widget *w;\n+\tint i;\n+\n+\tfor (i = 0; i < card->num_ignore_suspend_widgets; i++) {\n+\t\tw = dapm_find_widget(snd_soc_card_to_dapm(card),\n+\t\t\t\t     card->ignore_suspend_widgets[i], true);\n+\t\tif (!w) {\n+\t\t\tdev_err(card->dev, \"ASoC: DAPM unknown ignore suspend widget %s\\n\",\n+\t\t\t\tcard->ignore_suspend_widgets[i]);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t\tw->ignore_suspend = 1;\n+\t}\n+\n+\tfor (i = 0; i < card->num_of_ignore_suspend_widgets; i++) {\n+\t\tw = dapm_find_widget(snd_soc_card_to_dapm(card),\n+\t\t\t\t     card->of_ignore_suspend_widgets[i], true);\n+\t\tif (!w) {\n+\t\t\tdev_err(card->dev, \"ASoC: DAPM unknown ignore suspend widget %s\\n\",\n+\t\t\t\tcard->of_ignore_suspend_widgets[i]);\n+\t\t\treturn -EINVAL;\n+\t\t}\n+\t\tw->ignore_suspend = 1;\n+\t}\n+\n+\treturn 0;\n+}\n+\n static void dapm_stream_event(struct snd_soc_pcm_runtime *rtd, int stream, int event)\n {\n \tstruct snd_soc_dai *dai;\n","prefixes":["v2","2/3"]}