From nobody Sun Feb 8 05:42:22 2026 Received: from mail-ed1-f48.google.com (mail-ed1-f48.google.com [209.85.208.48]) (using TLSv1.2 with cipher ECDHE-RSA-AES128-GCM-SHA256 (128/128 bits)) (No client certificate requested) by smtp.subspace.kernel.org (Postfix) with ESMTPS id E165F2253AB for ; Fri, 14 Nov 2025 14:35:56 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.208.48 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763130958; cv=none; b=iBlAvT/e3chjIpjar4qFrqT7Ifr7e0d/5qkY3CNZLMJemDlVu+4nYRWR85cjPhEfAkFaW+ZOF8TWnxQ1IxJ8pIgrIE41IZxodtxgIZXlC/DS8gtohbyKn7XB4LJUDBBR63dFJhB6n8iTUeb0RKXmpU9sSPJdkBGl9YIz6o/T/K0= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1763130958; c=relaxed/simple; bh=CjD4q1ZMbBJWQvc4Bgiana/20OE4djcpHnIJ+VkNDyA=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=jXmptTd5BGnL5WhP5B8K3vbA0YvWYmVljcAuT9+I9rS0imRgPuHEPph+NG3UGyEqMEMKwaRwgYC6en0pnkoOHInJmGkv0ryGoynGwbQqJk8LL25IfWrAPeCtPhQkjrm2gFyu23U95enZTQA7hE+puULPnowAQz26fgencotKgu8= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com; spf=pass smtp.mailfrom=gmail.com; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b=TXdiqQV6; arc=none smtp.client-ip=209.85.208.48 Authentication-Results: smtp.subspace.kernel.org; dmarc=pass (p=none dis=none) header.from=gmail.com Authentication-Results: smtp.subspace.kernel.org; spf=pass smtp.mailfrom=gmail.com Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=gmail.com header.i=@gmail.com header.b="TXdiqQV6" Received: by mail-ed1-f48.google.com with SMTP id 4fb4d7f45d1cf-640a503fbe8so3482048a12.1 for ; Fri, 14 Nov 2025 06:35:56 -0800 (PST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1763130955; x=1763735755; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=usqzkbXAktOV+QTZEhZmGU1PKdliPqoVmQQvPTmUm64=; b=TXdiqQV6NcYruV7Dt4b7flyKgNuimcwFZaXs8bSHz46HtgWWwsopO/VRrdAmrtHNEX afb4m1KXxYK/LEwb7O0ur0inrWqt6g7uNgwUBfbEc9EH0BW/Lj/LFqGQjYPCilKKiIEz 9qndtx3Fr+0coV0FMLkONsaKrXUrXOpk2b2rgHwL45o5HfE39VpY9dqVLlckjoqTjjee FrL+dBB8/k6lM5gtAaecOOIl35/cv5UCfIQuwZDCLViVZYp2v2S8VUm7fkHwl5u88sWh wFMEzrK9lR4HIEaeu/uRSo1lYhkavSITOLx/v9NV4g3/VEKfTMmjEht++nbhzYz6yBh7 YhLA== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1763130955; x=1763735755; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=usqzkbXAktOV+QTZEhZmGU1PKdliPqoVmQQvPTmUm64=; b=DPRORsiicwsj49C7Ng/KioF9Jhe/2VHKCZUWV2wyzYY3kxYPW0tuF7iRfL/AMu0JIL btyTdTIJCP9ouBmP6lC25ngbg6ZFihnXzKoKCJtDwQgjCoxWmPAe6D6QignJY+sUBVTf c0tkLkrU8oBetpFNT0iG4KWkpdV8+SG2ELW/TWpKn9RoHIJiVYz4ZPBKyBdALMhmOky1 M4XTPKDDGMdxGjLaGTd9lbEUfcTHItq0BQI0T73xOz86e3PPqorNNCuMtiviWF+GcLOi 5DA8IYj1lUce2cALRcKWd+Dj6Js7Oe1c+D1A58W52TQ1UkTlfMmQefLpAFX1pMOL214u ZMsQ== X-Forwarded-Encrypted: i=1; AJvYcCXSLQy6OMAssxVdyloGG8M77NkNIw4SckoKwZmSnHkMNK6q2bjxiqDTNsJ9CNCaM5xQEw/UWk84J4k5Nb4=@vger.kernel.org X-Gm-Message-State: AOJu0YyJdRbmTI+PPzd22yeQ1g7RVYnPiZda9ERUlbd/9bkf77TxBDBi s29em3B5br2QiIJ/Sna6aPB66GgQGEaxJSqf+nT323Bxec0RuUmo5AQE X-Gm-Gg: ASbGnctW8QnLkWlz+LOn7JTj6u4S/CJvkVLHfZDipdO30LkCcpAZI/mo+lorNHrVl1x 2/UCHmMIXHmQQkuWkmdIr3vnTjvbjwq+UUKNZm2zDMFCrfJ5JFKOYQenYMBsLMOtIzo0NNMmKhm W6CR77E9khVksHFKc+ib5iexr5tVVOVDhd5chKqbSFaDYSfx0S26aBaqMKPyIIlxfbPr5T2VJV+ TJ610Qc/XkHH+wBsJTaxVn4eWsrAWsD4dh5mR/2oE3Y89TwcTNTAt7g8nKjk4xboEl9uKFNMl3D wacDwnAwVIMyAVM7fLKNUghI5okWoPufYoa2DsIR1iAougHBqFDN2mqunimIS5Y9aQNboubRKx+ LipU+6UhEuYdiGO/oGjclCR4dcrseBPXfyVoajoJAtTFk3LYTZxg/505qs8xWUxiWcCNqI16ctM IOmuHPcpISGA30XB6G2RrLST42AWtA3iP2t4CBkQ== X-Google-Smtp-Source: AGHT+IEkXh8aOaEa9VYbV+mSh0EevYMCtp8lTPm/U4emLvWPOqyGjxIaHiTsSpt8P+ehxwrwdlpbfQ== X-Received: by 2002:a17:907:6d1b:b0:b72:ad95:c1c2 with SMTP id a640c23a62f3a-b7367828c43mr340632166b.11.1763130954832; Fri, 14 Nov 2025 06:35:54 -0800 (PST) Received: from SMW024614.wbi.nxp.com ([128.77.115.158]) by smtp.gmail.com with ESMTPSA id a640c23a62f3a-b734fa80afbsm391264766b.11.2025.11.14.06.35.53 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Fri, 14 Nov 2025 06:35:54 -0800 (PST) From: Laurentiu Mihalcea To: Liam Girdwood , Peter Ujfalusi , Bard Liao , Ranjani Sridharan , Daniel Baluta , Kai Vehmanen , Mark Brown , Iuliana Prodan Cc: linux-sound@vger.kernel.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-kernel@vger.kernel.org Subject: [PATCH v2] ASoC: SOF: imx9: use SCMI API for LM management Date: Fri, 14 Nov 2025 06:35:03 -0800 Message-ID: <20251114143503.2139-1-laurentiumihalcea111@gmail.com> X-Mailer: git-send-email 2.43.0 Precedence: bulk X-Mailing-List: linux-kernel@vger.kernel.org List-Id: List-Subscribe: List-Unsubscribe: MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset="utf-8" From: Laurentiu Mihalcea Linux supports NXP's LMM SCMI protocol so switch to using the appropriate API. The SIPs were intended to act as placeholders until the support for said protocol was upstreamed. The underlying CPU protocol command from IMX_SIP_SRC_M_RESET_ADDR_SET is replaced by a LMM protocol command with the same effect (i.e. setting the boot address) since using the CPU protocol would require additional permissions (which TF-A already had). Apart from this, the SIPs are replaced by their equivalent Linux LMM commands. Signed-off-by: Laurentiu Mihalcea Reviewed-by: Iuliana Prodan --- Changes in v2: * add dependency on CONFIG_IMX_SCMI_LMM_DRV. * link to v1: https://lore.kernel.org/lkml/20251112144124.680-1-laurentiumi= halcea111@gmail.com/ sound/soc/sof/imx/Kconfig | 1 + sound/soc/sof/imx/imx9.c | 36 ++++++++---------------------------- 2 files changed, 9 insertions(+), 28 deletions(-) diff --git a/sound/soc/sof/imx/Kconfig b/sound/soc/sof/imx/Kconfig index 327e2df94a58..09d88ce5b9e6 100644 --- a/sound/soc/sof/imx/Kconfig +++ b/sound/soc/sof/imx/Kconfig @@ -35,6 +35,7 @@ config SND_SOC_SOF_IMX8 config SND_SOC_SOF_IMX9 tristate "SOF support for i.MX9" depends on IMX_DSP + depends on IMX_SCMI_LMM_DRV select SND_SOC_SOF_IMX_COMMON help This adds support for Sound Open Firmware for NXP i.MX9 platforms. diff --git a/sound/soc/sof/imx/imx9.c b/sound/soc/sof/imx/imx9.c index 853155d5990a..e56e8a1c8022 100644 --- a/sound/soc/sof/imx/imx9.c +++ b/sound/soc/sof/imx/imx9.c @@ -3,19 +3,11 @@ * Copyright 2025 NXP */ =20 -#include +#include =20 #include "imx-common.h" =20 -#define IMX_SIP_SRC 0xC2000005 -#define IMX_SIP_SRC_M_RESET_ADDR_SET 0x03 - -#define IMX95_CPU_VEC_FLAGS_BOOT BIT(29) - -#define IMX_SIP_LMM 0xC200000F -#define IMX_SIP_LMM_BOOT 0x0 -#define IMX_SIP_LMM_SHUTDOWN 0x1 - +#define IMX95_M7_CPU_ID 0x1 #define IMX95_M7_LM_ID 0x1 =20 static struct snd_soc_dai_driver imx95_dai[] =3D { @@ -38,7 +30,6 @@ static int imx95_ops_init(struct snd_sof_dev *sdev) =20 static int imx95_chip_probe(struct snd_sof_dev *sdev) { - struct arm_smccc_res smc_res; struct platform_device *pdev; struct resource *res; =20 @@ -49,31 +40,20 @@ static int imx95_chip_probe(struct snd_sof_dev *sdev) return dev_err_probe(sdev->dev, -ENODEV, "failed to fetch SRAM region\n"); =20 - /* set core boot reset address */ - arm_smccc_smc(IMX_SIP_SRC, IMX_SIP_SRC_M_RESET_ADDR_SET, res->start, - IMX95_CPU_VEC_FLAGS_BOOT, 0, 0, 0, 0, &smc_res); - - return smc_res.a0; + return scmi_imx_lmm_reset_vector_set(IMX95_M7_LM_ID, IMX95_M7_CPU_ID, + 0, res->start); } =20 static int imx95_core_kick(struct snd_sof_dev *sdev) { - struct arm_smccc_res smc_res; - - arm_smccc_smc(IMX_SIP_LMM, IMX_SIP_LMM_BOOT, - IMX95_M7_LM_ID, 0, 0, 0, 0, 0, &smc_res); - - return smc_res.a0; + return scmi_imx_lmm_operation(IMX95_M7_LM_ID, SCMI_IMX_LMM_BOOT, 0); } =20 static int imx95_core_shutdown(struct snd_sof_dev *sdev) { - struct arm_smccc_res smc_res; - - arm_smccc_smc(IMX_SIP_LMM, IMX_SIP_LMM_SHUTDOWN, - IMX95_M7_LM_ID, 0, 0, 0, 0, 0, &smc_res); - - return smc_res.a0; + return scmi_imx_lmm_operation(IMX95_M7_LM_ID, + SCMI_IMX_LMM_SHUTDOWN, + SCMI_IMX_LMM_OP_FORCEFUL); } =20 static const struct imx_chip_ops imx95_chip_ops =3D { --=20 2.43.0