From nobody Wed Oct 8 00:28:40 2025 Received: from smtp.kernel.org (aws-us-west-2-korg-mail-1.web.codeaurora.org [10.30.226.201]) (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 0D0872E9EC9; Thu, 3 Jul 2025 18:35:33 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=10.30.226.201 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751567733; cv=none; b=hwyCBFn1u2pI5wNQVqf00uJ2dvzgmJhY23gX4QvXv9UnzRJwGUbcHBSM8YEbXXBK4DgrLMxPklFo4SDX3j4ksGOAZ1jV6IiTkNkPinKtnMjjdlUYYTdnxHrFV3g3J/YK0cjihI5xrqT40Mbp5xMBnq+Dvknv99knEljwTWtZP4s= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1751567733; c=relaxed/simple; bh=MBHO2Lp90PjrfqVCqAlyfS1xa5ydxsxVFITQfZTnBrQ=; h=From:To:Cc:Subject:Date:Message-ID:MIME-Version; b=Erm1IbYf43yP7c8lvu3AAWQeQs2qztgHIUwMm42hacEm2bCHHge1sx7xPpW+gYC3bgQ7ajz1oOi1W79m3ORk1joW/08GO70mtTbTky0k/8BIsg7iK7WgWcmjsnlcZJp3pzwkJ1j1HNMt86c5hdhn1TXAQDEA71sL3p5kwbG5leg= ARC-Authentication-Results: i=1; smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b=LzzOVJm5; arc=none smtp.client-ip=10.30.226.201 Authentication-Results: smtp.subspace.kernel.org; dkim=pass (2048-bit key) header.d=kernel.org header.i=@kernel.org header.b="LzzOVJm5" Received: by smtp.kernel.org (Postfix) with ESMTPSA id 85A71C4CEE3; Thu, 3 Jul 2025 18:35:32 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=kernel.org; s=k20201202; t=1751567732; bh=MBHO2Lp90PjrfqVCqAlyfS1xa5ydxsxVFITQfZTnBrQ=; h=From:To:Cc:Subject:Date:From; b=LzzOVJm5R/ZxgePynHa0bVwans+jGaLjduqqB8omRZUFK/UsZxI7mB7YFt1OhLpIJ 2drrZ+QEKyTda8SfmOaBBZ4ME0du8/rXZeEXITq81ZtvtZYreW74elidIZU5+inc02 8HRqIu302nb+VKLdctcTyQ/rCQ76hsr5XDH1y1uGIMKk60wG6gDWu+WBvRFPFCoYZR 8u+waa0geqvAult9hoCG2FMohPB3dGBBmfzBW0uZgdBHKkPU92BSG2pnI8tDKIksNk EM5NvJ4BXxvIG0Xz1JgzTxUqQggpY9kJlhZagkHheB9ybX8vUHGkP5d3ECW1+zroLO MxZSC4nI5Qk6g== From: "Rob Herring (Arm)" To: Cheng-Yi Chiang , Tzung-Bi Shih , Guenter Roeck , Liam Girdwood , Mark Brown , Jaroslav Kysela , Takashi Iwai , Benson Leung , Peter Ujfalusi , Bard Liao , Ranjani Sridharan , Daniel Baluta , Kai Vehmanen , Pierre-Louis Bossart , Shawn Guo , Sascha Hauer , Pengutronix Kernel Team , Fabio Estevam , Matthias Brugger , AngeloGioacchino Del Regno Cc: chrome-platform@lists.linux.dev, linux-sound@vger.kernel.org, linux-kernel@vger.kernel.org, sound-open-firmware@alsa-project.org, imx@lists.linux.dev, linux-arm-kernel@lists.infradead.org, linux-mediatek@lists.infradead.org Subject: [PATCH] ASoC: Use of_reserved_mem_region_to_resource() for "memory-region" Date: Thu, 3 Jul 2025 13:35:21 -0500 Message-ID: <20250703183523.2075276-1-robh@kernel.org> X-Mailer: git-send-email 2.47.2 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" Use the newly added of_reserved_mem_region_to_resource() function to handle "memory-region" properties. Signed-off-by: Rob Herring (Arm) Reviewed-by: AngeloGioacchino Del Regno Reviewed-by: Cheng-Yi Chiang Reviewed-by: Tzung-Bi Shih --- sound/soc/codecs/cros_ec_codec.c | 30 ++++++++++----------- sound/soc/sof/imx/imx-common.c | 36 +++++--------------------- sound/soc/sof/mediatek/mt8186/mt8186.c | 11 +------- sound/soc/sof/mediatek/mt8195/mt8195.c | 11 +------- 4 files changed, 22 insertions(+), 66 deletions(-) diff --git a/sound/soc/codecs/cros_ec_codec.c b/sound/soc/codecs/cros_ec_co= dec.c index 571222ec520c..937c8cec682a 100644 --- a/sound/soc/codecs/cros_ec_codec.c +++ b/sound/soc/codecs/cros_ec_codec.c @@ -18,6 +18,7 @@ #include #include #include +#include #include #include #include @@ -961,7 +962,6 @@ static int cros_ec_codec_platform_probe(struct platform= _device *pdev) struct ec_response_ec_codec_get_capabilities r; int ret; #ifdef CONFIG_OF - struct device_node *node; struct resource res; u64 ec_shm_size; const __be32 *regaddr_p; @@ -981,22 +981,18 @@ static int cros_ec_codec_platform_probe(struct platfo= rm_device *pdev) priv->ec_shm_addr, priv->ec_shm_len); } =20 - node =3D of_parse_phandle(dev->of_node, "memory-region", 0); - if (node) { - ret =3D of_address_to_resource(node, 0, &res); - if (!ret) { - priv->ap_shm_phys_addr =3D res.start; - priv->ap_shm_len =3D resource_size(&res); - priv->ap_shm_addr =3D - (uint64_t)(uintptr_t)devm_ioremap_wc( - dev, priv->ap_shm_phys_addr, - priv->ap_shm_len); - priv->ap_shm_last_alloc =3D priv->ap_shm_phys_addr; - - dev_dbg(dev, "ap_shm_phys_addr=3D%#llx len=3D%#x\n", - priv->ap_shm_phys_addr, priv->ap_shm_len); - } - of_node_put(node); + ret =3D of_reserved_mem_region_to_resource(dev->of_node, 0, &res); + if (!ret) { + priv->ap_shm_phys_addr =3D res.start; + priv->ap_shm_len =3D resource_size(&res); + priv->ap_shm_addr =3D + (uint64_t)(uintptr_t)devm_ioremap_wc( + dev, priv->ap_shm_phys_addr, + priv->ap_shm_len); + priv->ap_shm_last_alloc =3D priv->ap_shm_phys_addr; + + dev_dbg(dev, "ap_shm_phys_addr=3D%#llx len=3D%#x\n", + priv->ap_shm_phys_addr, priv->ap_shm_len); } #endif =20 diff --git a/sound/soc/sof/imx/imx-common.c b/sound/soc/sof/imx/imx-common.c index 62bf707aa909..f00b381cec3b 100644 --- a/sound/soc/sof/imx/imx-common.c +++ b/sound/soc/sof/imx/imx-common.c @@ -282,11 +282,8 @@ static int imx_region_name_to_blk_type(const char *reg= ion_name) static int imx_parse_ioremap_memory(struct snd_sof_dev *sdev) { const struct imx_chip_info *chip_info; - struct reserved_mem *reserved; struct platform_device *pdev; - struct device_node *res_np; - phys_addr_t base, size; - struct resource *res; + struct resource *res, _res; int i, blk_type, ret; =20 pdev =3D to_platform_device(sdev->dev); @@ -307,37 +304,18 @@ static int imx_parse_ioremap_memory(struct snd_sof_de= v *sdev) "failed to fetch %s resource\n", chip_info->memory[i].name); =20 - base =3D res->start; - size =3D resource_size(res); } else { - ret =3D of_property_match_string(pdev->dev.of_node, - "memory-region-names", - chip_info->memory[i].name); + ret =3D of_reserved_mem_region_to_resource_byname(pdev->dev.of_node, + chip_info->memory[i].name, + &_res); if (ret < 0) return dev_err_probe(sdev->dev, ret, - "no valid index for %s\n", + "no valid entry for %s\n", chip_info->memory[i].name); - - res_np =3D of_parse_phandle(pdev->dev.of_node, - "memory-region", - ret); - if (!res_np) - return dev_err_probe(sdev->dev, -ENODEV, - "failed to parse phandle %s\n", - chip_info->memory[i].name); - - reserved =3D of_reserved_mem_lookup(res_np); - of_node_put(res_np); - if (!reserved) - return dev_err_probe(sdev->dev, -ENODEV, - "failed to get %s reserved\n", - chip_info->memory[i].name); - - base =3D reserved->base; - size =3D reserved->size; + res =3D &_res; } =20 - sdev->bar[blk_type] =3D devm_ioremap(sdev->dev, base, size); + sdev->bar[blk_type] =3D devm_ioremap_resource(sdev->dev, res); if (!sdev->bar[blk_type]) return dev_err_probe(sdev->dev, -ENOMEM, diff --git a/sound/soc/sof/mediatek/mt8186/mt8186.c b/sound/soc/sof/mediate= k/mt8186/mt8186.c index 7ff080452cbe..c1bea967737d 100644 --- a/sound/soc/sof/mediatek/mt8186/mt8186.c +++ b/sound/soc/sof/mediatek/mt8186/mt8186.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -46,7 +45,6 @@ static int platform_parse_resource(struct platform_device= *pdev, void *data) { struct resource *mmio; struct resource res; - struct device_node *mem_region; struct device *dev =3D &pdev->dev; struct mtk_adsp_chip_info *adsp =3D data; int ret; @@ -57,14 +55,7 @@ static int platform_parse_resource(struct platform_devic= e *pdev, void *data) return ret; } =20 - mem_region =3D of_parse_phandle(dev->of_node, "memory-region", 1); - if (!mem_region) { - dev_err(dev, "no memory-region sysmem phandle\n"); - return -ENODEV; - } - - ret =3D of_address_to_resource(mem_region, 0, &res); - of_node_put(mem_region); + ret =3D of_reserved_mem_region_to_resource(dev->of_node, 1, &res); if (ret) { dev_err(dev, "of_address_to_resource sysmem failed\n"); return ret; diff --git a/sound/soc/sof/mediatek/mt8195/mt8195.c b/sound/soc/sof/mediate= k/mt8195/mt8195.c index 3b3582d74510..4d6e9300a9c0 100644 --- a/sound/soc/sof/mediatek/mt8195/mt8195.c +++ b/sound/soc/sof/mediatek/mt8195/mt8195.c @@ -12,7 +12,6 @@ #include #include #include -#include #include #include #include @@ -46,7 +45,6 @@ static int platform_parse_resource(struct platform_device= *pdev, void *data) { struct resource *mmio; struct resource res; - struct device_node *mem_region; struct device *dev =3D &pdev->dev; struct mtk_adsp_chip_info *adsp =3D data; int ret; @@ -57,14 +55,7 @@ static int platform_parse_resource(struct platform_devic= e *pdev, void *data) return ret; } =20 - mem_region =3D of_parse_phandle(dev->of_node, "memory-region", 1); - if (!mem_region) { - dev_err(dev, "no memory-region sysmem phandle\n"); - return -ENODEV; - } - - ret =3D of_address_to_resource(mem_region, 0, &res); - of_node_put(mem_region); + ret =3D of_reserved_mem_region_to_resource(dev->of_node, 1, &res); if (ret) { dev_err(dev, "of_address_to_resource sysmem failed\n"); return ret; --=20 2.47.2