{"id":2227834,"url":"http://patchwork.ozlabs.org/api/patches/2227834/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260424103806.2276780-4-shengjiu.wang@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":"<20260424103806.2276780-4-shengjiu.wang@nxp.com>","list_archive_url":"https://lore.kernel.org/linuxppc-dev/20260424103806.2276780-4-shengjiu.wang@nxp.com/","date":"2026-04-24T10:38:04","name":"[3/5] ASoC: fsl-asoc-card: add channel and rate constraints for CS42888","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"e3b00389f8a24dda2b71410e19eb7a613c373946","submitter":{"id":75958,"url":"http://patchwork.ozlabs.org/api/people/75958/?format=json","name":"Shengjiu Wang","email":"shengjiu.wang@nxp.com"},"delegate":null,"mbox":"http://patchwork.ozlabs.org/project/linuxppc-dev/patch/20260424103806.2276780-4-shengjiu.wang@nxp.com/mbox/","series":[{"id":501341,"url":"http://patchwork.ozlabs.org/api/series/501341/?format=json","web_url":"http://patchwork.ozlabs.org/project/linuxppc-dev/list/?series=501341","date":"2026-04-24T10:38:01","name":"ASoC: fsl-asoc-card: Add some improvements","version":1,"mbox":"http://patchwork.ozlabs.org/series/501341/mbox/"}],"comments":"http://patchwork.ozlabs.org/api/patches/2227834/comments/","check":"pending","checks":"http://patchwork.ozlabs.org/api/patches/2227834/checks/","tags":{},"related":[],"headers":{"Return-Path":"\n <linuxppc-dev+bounces-20072-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=Ql0aF/8K;\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-20072-incoming=patchwork.ozlabs.org@lists.ozlabs.org;\n receiver=patchwork.ozlabs.org)","lists.ozlabs.org;\n arc=pass smtp.remote-ip=\"2a01:111:f403:c200::5\" 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=Ql0aF/8K;\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:c200::5;\n helo=duzpr83cu001.outbound.protection.outlook.com;\n envelope-from=shengjiu.wang@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 4g28Xg0v6Zz1yD5\n\tfor <incoming@patchwork.ozlabs.org>; Fri, 24 Apr 2026 20:37:07 +1000 (AEST)","from boromir.ozlabs.org (localhost [127.0.0.1])\n\tby lists.ozlabs.org (Postfix) with ESMTP id 4g28X03Xyfz30B4;\n\tFri, 24 Apr 2026 20:36:32 +1000 (AEST)","from DUZPR83CU001.outbound.protection.outlook.com\n (mail-northeuropeazlp170120005.outbound.protection.outlook.com\n [IPv6:2a01:111:f403:c200::5])\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 4g28Wz3Hf3z306l\n\tfor <linuxppc-dev@lists.ozlabs.org>; Fri, 24 Apr 2026 20:36:31 +1000 (AEST)","from AM0PR04MB7044.eurprd04.prod.outlook.com (2603:10a6:208:191::20)\n by PAXPR04MB9075.eurprd04.prod.outlook.com (2603:10a6:102:229::12) with\n Microsoft SMTP Server (version=TLS1_2,\n cipher=TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384) id 15.20.9846.18; Fri, 24 Apr\n 2026 10:36:11 +0000","from AM0PR04MB7044.eurprd04.prod.outlook.com\n ([fe80::bab2:d15c:fcf8:ef2b]) by AM0PR04MB7044.eurprd04.prod.outlook.com\n ([fe80::bab2:d15c:fcf8:ef2b%4]) with mapi id 15.20.9846.021; Fri, 24 Apr 2026\n 10:36:11 +0000"],"ARC-Seal":["i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707; t=1777026992;\n\tcv=pass;\n b=oOeHO98nqhCNs6Ksk3UYxjEBSB2qGl/UIXMaCnxPc5WRPnMiwwt7nq//c1b1zbDsHGACkub07VSv+M6FjfWJe/eEsXrwjdw3UODe2q6cDUrCSoQYNVnSczBpCoZJybf3Gpx7PG15eXRfsoghnLT0KbMNyzDE2Mvy/VXscPUhuSrlOc7ZiJvCztI22I7Z81wlGUhzpYRDcb+soGktcZ/F0N+cZ5AoUEENIcrMbcGnADTcXKglDVosGsLLM6w1B2rSXuvak/17vXsmBGUc3RyM+Yaw5RXtP+btHR+oRNhiycyOt6x0a0AmbAhvzySLGVdQEtHEHCFFXfYMls0kqM4Bmw==","i=1; a=rsa-sha256; s=arcselector10001; d=microsoft.com; cv=none;\n b=guKcXoc1FtwhpmvNfofW39dCw+xhdmwxZLU8GR8XjwE4Vf2ZHkcmVOceKo6tMhhfuIR24T6535H0pfpAXjjoaiBycAUgntxA8QoODl10YvPZO1yJENaV6bYHZ9sGkzIbRasU1fMD53k7pLNhd5uXSgDkBMVSjZnY0zVrme/wbKzJI2t2l1Hqpal6IT9F6JRcZHJP8jTFy8Krd5TWTMZy0SXup7OOTekZYKSZrYJkK4enDgKk7JWR5J+cC/q0MG5rARi1vYndWtBcHbuGBsUg5eo0C7z8inNnKhO9GDiLD4mE8NUwNlms4mTULMTX7PCS+w+mXE+DQOSB/UY2WwmWiA=="],"ARC-Message-Signature":["i=2; a=rsa-sha256; d=lists.ozlabs.org; s=201707;\n\tt=1777026992; c=relaxed/relaxed;\n\tbh=TwhxlCSX9y1bU/FKDoek3ENuNuFmzm0dwhHrVGfnGiA=;\n\th=From:To:Subject:Date:Message-Id:In-Reply-To:References:\n\t Content-Type:MIME-Version;\n b=A9o5FybZWqcvD2Ajm3NpC+k4YLaJIhIWxwPgEJttijR00u+AM5NjcDR0sPGk0t6ea5py9r2di5dPOdmD98gP6UUScH7Cq35bcjUsO2GuYHMKRFbjlgWznFwRIN81Udt7LHdqL/uuaKIENDCcyRMKUUY7jnVaOrisj+oM3+89xNWvT5lIM3JcJ5Pz2Wdk+Oy9iCcuBXn7df14wulnZl1ZV+ppydOwz83uyLWOMxbnCeaLxn/mAzwqO8SFRywfAETxb76yUqL+KNFfUh0dXEZwUmdlFlZZZZ2yi2cVQmW+gohglLy7MimeStjZpHxGm9Sz6gsDZRIvaJmdqRqPcWlNXA==","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=TwhxlCSX9y1bU/FKDoek3ENuNuFmzm0dwhHrVGfnGiA=;\n b=eklYPXPKbCsT46DVA6P+I4dtRm0h9/X8Dze7dM/g/zaiNHDQ8fgfWl1sJ4Km3imsGr7pthLTc6d6dnaqJpYxCRqt4J1XVwDXYwhsb0YdMrdqPPz/nuEvQd9IrUPh+cY+6QQf4MMvJ1BTRV1hEmS+TAO653OGYv1OUYEdNyxMQV1IaHVmEbya/ZUcJYXvtrG30r5key0sZhTUjyGYj5B38eqQSA5I1GfxdiCqZkt/K825ki8ZFIV5X54oORXSAR3g/fVhkAIL1azPmhXRJCRqBQ31xnuGZBtqrZoOcRj68UPb0cSpKrEo+u+xb3w5MwwofB9/fDqmfRu/cqBNsVUvww=="],"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=Ql0aF/8K; dkim-atps=neutral;\n spf=permerror (client-ip=2a01:111:f403:c200::5;\n helo=duzpr83cu001.outbound.protection.outlook.com;\n envelope-from=shengjiu.wang@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=TwhxlCSX9y1bU/FKDoek3ENuNuFmzm0dwhHrVGfnGiA=;\n b=Ql0aF/8KT8HaG4dNv/tD+QX5puGhXmFmpHfLMU5n2seZcR+cpjAmic0KwN3hyRUqmrfIF/eapsPx5N4F/7PjljaqFsNC1JSwimCgnFP8LzZfVQlkh5TgZl5U+N/5Zn+sVBF1vPf2l4tM2iLaU5nmJgHP+U6yCQ7E+vOzMiW8N4N3vc4agWNUMQh/HObhZQ2OYflgXkEk9b9e9KapFbgVcE3zATAnlwEpmEcytD4J0VjiREq2lS+Oufn1BENMThZpGHiHs8Zlu2oUplCZtfO8QoHbVSlp8rpiKiDLhKuuwmQNEZkYbOnJUfWRcFV6R2hvF20UfBndsq3nScTKg8kc3Q==","From":"Shengjiu Wang <shengjiu.wang@nxp.com>","To":"shengjiu.wang@gmail.com,\n\tXiubo.Lee@gmail.com,\n\tfestevam@gmail.com,\n\tnicoleotsuka@gmail.com,\n\tlgirdwood@gmail.com,\n\tbroonie@kernel.org,\n\tperex@perex.cz,\n\ttiwai@suse.com,\n\tlinux-sound@vger.kernel.org,\n\tlinuxppc-dev@lists.ozlabs.org,\n\tlinux-kernel@vger.kernel.org","Subject":"[PATCH 3/5] ASoC: fsl-asoc-card: add channel and rate constraints for\n CS42888","Date":"Fri, 24 Apr 2026 18:38:04 +0800","Message-Id":"<20260424103806.2276780-4-shengjiu.wang@nxp.com>","X-Mailer":"git-send-email 2.37.1","In-Reply-To":"<20260424103806.2276780-1-shengjiu.wang@nxp.com>","References":"<20260424103806.2276780-1-shengjiu.wang@nxp.com>","Content-Transfer-Encoding":"8bit","Content-Type":"text/plain","X-ClientProxiedBy":"MA5PR01CA0027.INDPRD01.PROD.OUTLOOK.COM\n (2603:1096:a01:178::15) To AM0PR04MB7044.eurprd04.prod.outlook.com\n (2603:10a6:208:191::20)","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":"AM0PR04MB7044:EE_|PAXPR04MB9075:EE_","X-MS-Office365-Filtering-Correlation-Id":"a879f782-cb8a-48d7-4ea2-08dea1ed4d4e","X-MS-Exchange-SenderADCheck":"1","X-MS-Exchange-AntiSpam-Relay":"0","X-Microsoft-Antispam":"\n\tBCL:0;ARA:13230040|19092799006|1800799024|366016|376014|7416014|52116014|38350700014|921020|56012099003|22082099003|18002099003;","X-Microsoft-Antispam-Message-Info":"\n\tkrAXIUycBn+dBGFpYQ7wDXCNU7LfRurzzZEYLI64psf6HyhGPxukSiLAy//g11EJXS8yWXIcAHxHRNl1WbfEB0Wv8DVqqA0oI8HMC26P9fzFx7GA7h76VKg7wRtnaZYndWaW6APrFvTh+UhPTQ4jfSK/8XFC+xoPjXqMVJADz8Wh8FujKLRfzK2yIm5di+inUr5qWCqsSj6yLBaj8VXoO3q21asw5RiSFFZYMv/VVgOhLhiiNp8ndGt5BczPBKuv72UPahA8zFHvn8WwQe89cu48sfgevuuqAGEAhTmKJ5KopQ2CNYKEacWEE3tJmkYVqgYAc0PYsbLlCYvS6xo25wV0oRz7UkuNsOqioZMk+Dcw8npki54TbaMRJOUEcwQyFUrX617yry2zIH2k98ljxhES0KBqxtGq1TuS3zaHauppK0FZNLlP6CNYq8VYgnVjQSUucbHVAC6MoJHHtGtmuu/Gs6Cgm12eX9OeIncZETl8IGw0+X4nOYwLMwnN8mpNi1JmJgdCU8TF1Ar2XIO10INBoIO432/D0Yqk5LHarFGeJjhQAq2htiEviszWEOUx/eyEeyuLdgu7VXI0fG2IN22pFeZfz7nJ+sdkC10I6DItS5cNOKVmx0fgg/A69VHBba51VwjNxv69RcZFE+r8DC0679gFD3Axpa9d9XoKoix3uqtFZ1mqUBGVUZnbIi0IzCbkzuIdxXR3Z+UhL7TtrmFZ4QX7/FAB6vuPeO0K4avIA+b4RgRXHBR2kn+uNdEoWf0SZsl+2Pe0FJPLTE0kQb5vqqLliWRDHZaaVHRy71YKto7l2QXMTRIh+idnXJtH","X-Forefront-Antispam-Report":"\n\tCIP:255.255.255.255;CTRY:;LANG:en;SCL:1;SRV:;IPV:NLI;SFV:NSPM;H:AM0PR04MB7044.eurprd04.prod.outlook.com;PTR:;CAT:NONE;SFS:(13230040)(19092799006)(1800799024)(366016)(376014)(7416014)(52116014)(38350700014)(921020)(56012099003)(22082099003)(18002099003);DIR:OUT;SFP:1101;","X-MS-Exchange-AntiSpam-MessageData-ChunkCount":"1","X-MS-Exchange-AntiSpam-MessageData-0":"\n CWsooSkpVYEwnqIM9A8RPB1xZl9u0JR4owWjhqTHYdPHuK815eWosmUHuxveh2LTz7ka3XRivyMeCTTPe2V56SLuEVCNmkr9wi3rHV6ktOvf/FNBT+KDJvYiEOvgy2+dF4RPPhyB2od6JRLT79sxRzTLsMGvX+K1uJ3Lst1cFcEwQkofVJncd4ILQ9egPmEI01fZdPP69HNVFbpUl9iPztLhiTY41RzWC7nRf23MIZJGAXlUhP+C3RxcQmXfF+VOo8y0ZmU5hH4GRw5ZSEEWktIvl2DRW8q3pnyFyj24OVpDIdi65fq0+e2PFPCSps8ig5zAuBxxqxSGHrsw5xcgAzPdgmCpR03x7da399WBTk5j5Ageln3hi6vPqY2ADjArqk723oyJh/I6GTa+vnrOMk9DL9+qJSBEAlULoMaH1vywBYPJ5wWTkaJN8XPkUqFsUQfNO/ogpfku4gmNhFH6dL2kbj+p95BRv4Y+EsonC1CJ2iWA0AMQ9q+eGL21ZsW9+IMoa9GuRQetvlvnYpveZQVeDK+qfMZWUkj2+YoBesJPOf/BEZmGkBiLiD7bw99nJBtBs3IcmrQYFO7C4eWCU798jaKcYIeHsHJpKoR9cPMvSVWWVthHeFQ6UJbNgQshktVze7aKx/Bn1hnnse6aIXo4b0NqjnEVbD54TtH/R6bIzaKQUO81E8XC/tEypkJyj7mRSTZH9tmmaLPloKpUHraPOYNU9cWnURxTV9tf/XkKKmXHYoJdSd9OIvmhxqSCwZMx06+Vi1sNprX8a+C+hU805XoaKpjCrhPLgdAFDUNJp5ZhHDMsN2H7jN0ZnzuLwigeEpKL/zPiQkaugyuHPeETFU5m0p8mETKlZCBfjFNzQ6fcTIJtEmjaqmS1SdUo9NoadifcoMDYmYVTz/bbNUNhX8mLHP4I/rz4CmoMyfwhoxJ0qjSeB/k36aHzEZezi+RflvgT5x8PKS9AfijgBYE+LSv9LCG4BCaUuw5g+nHObaGNrYDO4sg2Wv1cD1KLrGJbVctQUHCYtkr/IER9sdnwOGCh/kNwyTmKoNH3So+xFmaRhNvymEwX3nnzdOLdK0LEIejztMWojx8UUVDBD1yRrC46XZWVOE1G8mw0g6mGvZuh7jEOTGPnNjRsQpeswLpE3AZ4l0JemARBKz10Ra7a8kLJE7Xzo9pobagPkyZARaboeCmHqhCcp+ZX3Nb8TE8xs6AnkF0xQx9VvqIZLNbHx0PReR7ywa5GcUUpkFMgHc8y32iKvyEwAlCwc0cDA6CM82m8c9I4YgJUTtMLNdNr+NEyW4zMgWVXuTP6ADUNnaUWxscMoATazDmdSpHa70bnkN8qSlCvnL2oH7UMz7RFnV99TIBNDuSAbR8p90fS7JU5TPFghoEHqqmlr9l2dgQHPwPqgfF/C5sSv8vppr79oeLLHXKUI7eSCd4f4cGrS3BIqW8xnsQdW9BuDJHFhuP7TEswT6O9jTzZ0ac9hQHmocKotOwQyIkUZp5WipflxbUuyTNrVQ8aWrkwIJIUifQ5I/NiMIe7WBzfLN16orF1frXc+sHR1dfgeRdjsvrqPlmAU7/TXcDeIOEzPFFiq4bkIVq73YzRlH7KdpP+88cRPXE6woaZTa/l87TUP0WlnPjddofxtD6MCFTmjl2MPRhgTcvC4kW/H+9xo21hBlh7WTkkZMVhYRoQ4IkgwYu268R4vblhZCRIc3KHggX/8OlCu8ayVdT/ueBEuccx8g==","X-OriginatorOrg":"nxp.com","X-MS-Exchange-CrossTenant-Network-Message-Id":"\n a879f782-cb8a-48d7-4ea2-08dea1ed4d4e","X-MS-Exchange-CrossTenant-AuthSource":"AM0PR04MB7044.eurprd04.prod.outlook.com","X-MS-Exchange-CrossTenant-AuthAs":"Internal","X-MS-Exchange-CrossTenant-OriginalArrivalTime":"24 Apr 2026 10:36:11.0560\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 AApZTkCCiGORExMCpfkj98CwmXP27DLPsqIyFAJd6Xsvj8Q3DpSWfZRQCuH9jQFZ6IO6HqUHqjACj3B1GZ8mDA==","X-MS-Exchange-Transport-CrossTenantHeadersStamped":"PAXPR04MB9075","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\tSPF_HELO_PASS,T_SPF_PERMERROR autolearn=disabled version=4.0.1 OzLabs 8","X-Spam-Checker-Version":"SpamAssassin 4.0.1 (2024-03-25) on lists.ozlabs.org"},"content":"The CS42888 codec has 4 I2S lanes with 2 channels per lane. Using odd\nchannel counts (3, 5, 7) causes data misalignment in the I2S frame,\nresulting in incorrect channel mapping. Only mono and even channel\ncounts (1, 2, 4, 6, 8) work correctly.\n\nAdditionally, the fixed system clock on i.MX platforms limits supported\nsample rates. With 12.288 MHz MCLK, only 48kHz family rates (48k, 96k,\n192k) achieve valid MCLK:LRCK ratios. With 11.2896 MHz MCLK, only 44k\nfamily rates are supported.\n\nAdd a startup callback to apply PCM constraints for both channels and\nrates, preventing userspace from requesting unsupported configurations.\n\nSigned-off-by: Shengjiu Wang <shengjiu.wang@nxp.com>\n---\n sound/soc/fsl/fsl-asoc-card.c | 67 +++++++++++++++++++++++++++++++++++\n 1 file changed, 67 insertions(+)","diff":"diff --git a/sound/soc/fsl/fsl-asoc-card.c b/sound/soc/fsl/fsl-asoc-card.c\nindex e08e135886f7..50d7a5f2d79e 100644\n--- a/sound/soc/fsl/fsl-asoc-card.c\n+++ b/sound/soc/fsl/fsl-asoc-card.c\n@@ -40,6 +40,18 @@\n /* Default DAI format without Master and Slave flag */\n #define DAI_FMT_BASE (SND_SOC_DAIFMT_I2S | SND_SOC_DAIFMT_NB_NF)\n \n+static const u32 cs42888_rates_48k[] = {\n+\t48000, 96000, 192000,\n+};\n+\n+static const u32 cs42888_rates_44k[] = {\n+\t44100, 88200, 176400,\n+};\n+\n+static const u32 cs42888_channels[] = {\n+\t1, 2, 4, 6, 8,\n+};\n+\n /**\n  * struct codec_priv - CODEC private data\n  * @mclk: Main clock of the CODEC\n@@ -93,6 +105,10 @@ struct cpu_priv {\n  * @asrc_rate: ASRC sample rate used by Back-Ends\n  * @asrc_format: ASRC sample format used by Back-Ends\n  * @dai_fmt: DAI format between CPU and CODEC\n+ * @support_rates: array of supported rates\n+ * @support_channels: array of supported channels\n+ * @num_rates: Number of entries in support_rates array\n+ * @num_channels: Number of entries in support_channels array\n  * @name: Card name\n  */\n \n@@ -110,6 +126,10 @@ struct fsl_asoc_card_priv {\n \tu32 asrc_rate;\n \tsnd_pcm_format_t asrc_format;\n \tu32 dai_fmt;\n+\tconst u32 *support_rates;\n+\tconst u32 *support_channels;\n+\tu32 num_rates;\n+\tu32 num_channels;\n \tchar name[32];\n };\n \n@@ -291,7 +311,41 @@ static int fsl_asoc_card_hw_free(struct snd_pcm_substream *substream)\n \treturn 0;\n }\n \n+static int fsl_asoc_card_startup(struct snd_pcm_substream *substream)\n+{\n+\tstruct snd_soc_pcm_runtime *rtd = substream->private_data;\n+\tstruct fsl_asoc_card_priv *priv = snd_soc_card_get_drvdata(rtd->card);\n+\tstruct snd_pcm_runtime *runtime = substream->runtime;\n+\tstatic struct snd_pcm_hw_constraint_list constraint_rates;\n+\tstatic struct snd_pcm_hw_constraint_list constraint_channels;\n+\tint ret;\n+\n+\tconstraint_channels.list = priv->support_channels;\n+\tconstraint_channels.count = priv->num_channels;\n+\tconstraint_rates.list = priv->support_rates;\n+\tconstraint_rates.count = priv->num_rates;\n+\n+\tif (constraint_channels.count) {\n+\t\tret = snd_pcm_hw_constraint_list(runtime, 0,\n+\t\t\t\t\t\t SNDRV_PCM_HW_PARAM_CHANNELS,\n+\t\t\t\t\t\t &constraint_channels);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\t}\n+\n+\tif (constraint_rates.count) {\n+\t\tret = snd_pcm_hw_constraint_list(runtime, 0,\n+\t\t\t\t\t\t SNDRV_PCM_HW_PARAM_RATE,\n+\t\t\t\t\t\t &constraint_rates);\n+\t\tif (ret)\n+\t\t\treturn ret;\n+\t}\n+\n+\treturn 0;\n+}\n+\n static const struct snd_soc_ops fsl_asoc_card_ops = {\n+\t.startup = fsl_asoc_card_startup,\n \t.hw_params = fsl_asoc_card_hw_params,\n \t.hw_free = fsl_asoc_card_hw_free,\n };\n@@ -753,6 +807,19 @@ static int fsl_asoc_card_probe(struct platform_device *pdev)\n \t\tpriv->cpu_priv.sysclk_dir[RX] = SND_SOC_CLOCK_OUT;\n \t\tpriv->cpu_priv.slot_width = 32;\n \t\tpriv->dai_fmt |= SND_SOC_DAIFMT_CBC_CFC;\n+\t\tpriv->support_channels = cs42888_channels;\n+\t\tpriv->num_channels = ARRAY_SIZE(cs42888_channels);\n+\t\tif (priv->codec_priv[0].mclk_freq % 12288000 == 0) {\n+\t\t\tpriv->support_rates = cs42888_rates_48k;\n+\t\t\tpriv->num_rates = ARRAY_SIZE(cs42888_rates_48k);\n+\t\t} else if (priv->codec_priv[0].mclk_freq % 11289600 == 0) {\n+\t\t\tpriv->support_rates = cs42888_rates_44k;\n+\t\t\tpriv->num_rates = ARRAY_SIZE(cs42888_rates_44k);\n+\t\t} else {\n+\t\t\t/* Unknown MCLK, no rate constraints */\n+\t\t\tdev_warn(&pdev->dev, \"Unknown MCLK frequency %lu, no rate constraints\\n\",\n+\t\t\t\t priv->codec_priv[0].mclk_freq);\n+\t\t}\n \t} else if (of_device_is_compatible(np, \"fsl,imx-audio-cs427x\")) {\n \t\tcodec_dai_name[0] = \"cs4271-hifi\";\n \t\tpriv->codec_priv[0].mclk_id = CS427x_SYSCLK_MCLK;\n","prefixes":["3/5"]}