From nobody Sat Feb 7 13:41:48 2026 Received: from mail-yw1-f177.google.com (mail-yw1-f177.google.com [209.85.128.177]) (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 B8644D53B for ; Sun, 7 Jul 2024 05:54:04 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.128.177 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720331646; cv=none; b=I8w6jQNC4aMUr+3fidrj0NQa22SH5gCPX6EsVl5ca8357IpdTYONRu/7ghvy+aoSPNyokgr4Gldj4iIelyZ3ofryGXSghxNiAGNkMn/0kj3ardtyJz9XeafS6K02qyVnXWBWtuQQilxIh8OPqATzM/laWfvKRPpN522pCmLzrcI= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720331646; c=relaxed/simple; bh=qPFTc3FO5hdRbWD/xpZXkA2hnMsn8o0ImHjlbGM0Pyg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=SS95NSA5bSTvH0C6d0s8qXmZsE8AJdmrNcnRIdQajVEPQBm3LfqcueHCizX+kAv1JAEpcCz1fggYSk5tW6jw+iZ1eg6QSHEhaR/popHhRXLnuIY/MPRGwg23MeLQ6XAzBlSuZiew/hhUku2jjrFOIE4ii7G7zUE5Mq7VMS0PLfA= 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=XnAGuIEw; arc=none smtp.client-ip=209.85.128.177 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="XnAGuIEw" Received: by mail-yw1-f177.google.com with SMTP id 00721157ae682-64b29539d87so25593437b3.0 for ; Sat, 06 Jul 2024 22:54:04 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720331644; x=1720936444; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=5AFnd+VA8Z38aedFSnDQhJz5LXWpxu4cJVkL+MlMwtg=; b=XnAGuIEwgvpcT70cDrSFyrv+p8SkpcDny8P6BEWqeK07w4Vs6CU72fQFPXREmxYz5I o/mJa7D+qqb4x35PAf2EYA7NFsb/HKX1GHbXt6VKhtXJxyusoAd9q/d3pN7zZiFcqCtW SRzVWXS1tSFCTLH864oJ1qboc501syT3a1YU4lAPplOkhJD+X751ACcdTgXAciBdi092 8TPOWzZtrMIuQOLI8BsfISJlX0u5frLnA9b9CmcvRTJZBmwK0ek5+GnhNRbYrfTJWDLS 1rD//eKL/4Xo2XvoLBYEJ0Orp1snLUrh3i7k40Qz773SKbidGkfdntemp4ZmOWBmBr2l 86fg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720331644; x=1720936444; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=5AFnd+VA8Z38aedFSnDQhJz5LXWpxu4cJVkL+MlMwtg=; b=mjLmB5yTHwejvaalvuGsdEE4MupjV4mYjHbmavRTPh6NIlrV1vKtFL6BMX6eLdy9yq L00QaK41HV3bcqdJzi0Hn8Fi/UUceawOdcDO1ctVsmGG9V+n1rv9FecN/jRvuMRBAFsn JGDfslTKGQKImQ5W/rcT/6lgZ/qI7cG8iZ9zYYr1gjVXt7tbcUjtxa1hNmk99DqXrhZN TMt9aBwlMiDvWPypAh4FgY9sGHJ80n1gZCaJRyXA1/Xpp75a5rDMdGR4wItxSzRMmodm Vr88if+m72iCJGfHQfvDDVYz99ecYEDm6HCWbfY1qJ4qG5TRQDvp80qEUrBel1pN+4lz 93YQ== X-Forwarded-Encrypted: i=1; AJvYcCXLpEekKShcZApvzsOvV73DS0TconvfTbtsG3hA4kbtQFY82OAc1+YsvN5bY8+7fwDS0RwIrHacfdDAb51/Ar8h5VN8FxUqYcY23vtf X-Gm-Message-State: AOJu0YzPeumR4UiCfy3kIdNFFF39y3Ep5waUSMlm7MKMpfNGgcFBYmgb 73PInlBCXeEvzIR1O6mryB5nXMro9b2+3MuZRz8AVY9lRrstDGZ8 X-Google-Smtp-Source: AGHT+IEM8rXNId+q2iXUTZrQl0UTkENIr3G4q3CoYS4vqe0FwmaON3MklvnPUYn/y1DOmJ4MEAs5FQ== X-Received: by 2002:a05:690c:986:b0:63b:d711:f06d with SMTP id 00721157ae682-652d7b5c8d9mr79208147b3.33.1720331643688; Sat, 06 Jul 2024 22:54:03 -0700 (PDT) Received: from kousik.local ([2405:201:c006:312d:252d:94b8:b79c:d7bb]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70b2e5fe3dfsm94429b3a.97.2024.07.06.22.53.59 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jul 2024 22:54:03 -0700 (PDT) From: Kousik Sanagavarapu To: Nishanth Menon , Jonathan Cameron , Santosh Shilimkar , Nathan Chancellor , Julia Lawall Cc: Shuah Khan , Javier Carrasco , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Kousik Sanagavarapu Subject: [PATCH v3 1/4] soc: ti: pruss: factor out memories setup Date: Sun, 7 Jul 2024 10:44:16 +0530 Message-ID: <20240707055341.3656-2-five231003@gmail.com> X-Mailer: git-send-email 2.45.2.561.g66ac6e4bcd In-Reply-To: <20240707055341.3656-1-five231003@gmail.com> References: <20240707055341.3656-1-five231003@gmail.com> 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" Factor out memories setup code from probe() into a new function pruss_of_setup_memories(). This sets the stage for introducing auto cleanup of the device node (done in the subsequent patch), since the clean up depends on the scope of the pointer and factoring out code into a seperate function obviously limits the scope of the various variables used in that function. Apart from the above, this change also has the advantage of making the code look more neat. While at it, use dev_err_probe() instead of plain dev_err() as this new function is called by the probe(). Signed-off-by: Kousik Sanagavarapu --- drivers/soc/ti/pruss.c | 111 ++++++++++++++++++++++------------------- 1 file changed, 61 insertions(+), 50 deletions(-) diff --git a/drivers/soc/ti/pruss.c b/drivers/soc/ti/pruss.c index 24a42e0b645c..a3c55a291b0b 100644 --- a/drivers/soc/ti/pruss.c +++ b/drivers/soc/ti/pruss.c @@ -415,6 +415,63 @@ static int pruss_clk_init(struct pruss *pruss, struct = device_node *cfg_node) return ret; } =20 +static int pruss_of_setup_memories(struct device *dev, struct pruss *pruss) +{ + struct device_node *np =3D dev_of_node(dev); + struct device_node *child; + const struct pruss_private_data *data =3D of_device_get_match_data(dev); + const char *mem_names[PRUSS_MEM_MAX] =3D { "dram0", "dram1", "shrdram2" }; + int i; + + child =3D of_get_child_by_name(np, "memories"); + if (!child) + return dev_err_probe(dev, -ENODEV, + "%pOF is missing its 'memories' node\n", + child); + + for (i =3D 0; i < PRUSS_MEM_MAX; i++) { + struct resource res; + int index; + + /* + * On AM437x one of two PRUSS units don't contain Shared RAM, + * skip it + */ + if (data && data->has_no_sharedram && i =3D=3D PRUSS_MEM_SHRD_RAM2) + continue; + + index =3D of_property_match_string(child, "reg-names", + mem_names[i]); + if (index < 0) { + of_node_put(child); + return index; + } + + if (of_address_to_resource(child, index, &res)) { + of_node_put(child); + return -EINVAL; + } + + pruss->mem_regions[i].va =3D devm_ioremap(dev, res.start, + resource_size(&res)); + if (!pruss->mem_regions[i].va) { + of_node_put(child); + return dev_err_probe(dev, -ENOMEM, + "failed to parse and map memory resource %d %s\n", + i, mem_names[i]); + } + pruss->mem_regions[i].pa =3D res.start; + pruss->mem_regions[i].size =3D resource_size(&res); + + dev_dbg(dev, "memory %8s: pa %pa size 0x%zx va %pK\n", + mem_names[i], &pruss->mem_regions[i].pa, + pruss->mem_regions[i].size, pruss->mem_regions[i].va); + } + of_node_put(child); + + return 0; +} + static struct regmap_config regmap_conf =3D { .reg_bits =3D 32, .val_bits =3D 32, @@ -471,15 +528,8 @@ static int pruss_cfg_of_init(struct device *dev, struc= t pruss *pruss) static int pruss_probe(struct platform_device *pdev) { struct device *dev =3D &pdev->dev; - struct device_node *np =3D dev_of_node(dev); - struct device_node *child; struct pruss *pruss; - struct resource res; - int ret, i, index; - const struct pruss_private_data *data; - const char *mem_names[PRUSS_MEM_MAX] =3D { "dram0", "dram1", "shrdram2" }; - - data =3D of_device_get_match_data(&pdev->dev); + int ret; =20 ret =3D dma_set_coherent_mask(dev, DMA_BIT_MASK(32)); if (ret) { @@ -494,48 +544,9 @@ static int pruss_probe(struct platform_device *pdev) pruss->dev =3D dev; mutex_init(&pruss->lock); =20 - child =3D of_get_child_by_name(np, "memories"); - if (!child) { - dev_err(dev, "%pOF is missing its 'memories' node\n", child); - return -ENODEV; - } - - for (i =3D 0; i < PRUSS_MEM_MAX; i++) { - /* - * On AM437x one of two PRUSS units don't contain Shared RAM, - * skip it - */ - if (data && data->has_no_sharedram && i =3D=3D PRUSS_MEM_SHRD_RAM2) - continue; - - index =3D of_property_match_string(child, "reg-names", - mem_names[i]); - if (index < 0) { - of_node_put(child); - return index; - } - - if (of_address_to_resource(child, index, &res)) { - of_node_put(child); - return -EINVAL; - } - - pruss->mem_regions[i].va =3D devm_ioremap(dev, res.start, - resource_size(&res)); - if (!pruss->mem_regions[i].va) { - dev_err(dev, "failed to parse and map memory resource %d %s\n", - i, mem_names[i]); - of_node_put(child); - return -ENOMEM; - } - pruss->mem_regions[i].pa =3D res.start; - pruss->mem_regions[i].size =3D resource_size(&res); - - dev_dbg(dev, "memory %8s: pa %pa size 0x%zx va %pK\n", - mem_names[i], &pruss->mem_regions[i].pa, - pruss->mem_regions[i].size, pruss->mem_regions[i].va); - } - of_node_put(child); + ret =3D pruss_of_setup_memories(dev, pruss); + if (ret < 0) + goto rpm_put; =20 platform_set_drvdata(pdev, pruss); =20 --=20 2.45.2.561.g66ac6e4bcd From nobody Sat Feb 7 13:41:48 2026 Received: from mail-pf1-f178.google.com (mail-pf1-f178.google.com [209.85.210.178]) (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 84D9A10A0A for ; Sun, 7 Jul 2024 05:54:10 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.210.178 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720331652; cv=none; b=ru7U1H1+pnFl/oabV/Qm1GnjFU+N5LIj2uT2cXCEzwhuWPLvDRIyEprvsQr/CLcBsv0RAOz4ZFaEUcCexpcxZPDII3q0yUQ81B/G0XmdIc8g/T8PlVnXmG75UJjrj+wHYOHcHRdpMcPgwSIBcaytHyUF9VZx98uzvtLRZMk5918= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720331652; c=relaxed/simple; bh=L6kGp0yQ/1I5sbHd1feIDteukGCJQBEVDTYbRX9lmmc=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=MoQCUS5gYtNNN6uStJajTi1LLrDTkA3gEw9wcWRB+LS+OuxxIstbu/YSI7yRxKS8hNreRdgNXvk912FdvZfVqkpLZAfenYJFJ7b6SCDmUbvVQnrp3i+HK+02ZuVG4bfNXo6VUJz+yG8o1AWFm/XI6QJDvUswXFbNCx0rltv+PHU= 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=Cg68b9uX; arc=none smtp.client-ip=209.85.210.178 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="Cg68b9uX" Received: by mail-pf1-f178.google.com with SMTP id d2e1a72fcca58-70b2a0542c2so194564b3a.3 for ; Sat, 06 Jul 2024 22:54:10 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720331650; x=1720936450; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=D0ao/bHiRilB5S2e2EOSdMSTC1iVfP4AjXJyo+t6sd4=; b=Cg68b9uXdCBXoiZDDsatrgEsAtF9p0YrLzCt0T+0hFJK7NqY82JLbcKErIC/hrFHjP vqZPvfMtX5QOgyeCFTCl1gvC715FOsmXjzhdDF8TvZxYPoeLsFyoraklKizJW237O9Jj 9aQAjUUD7cgWJAIT5uw4PNS5YHgc667r5Vzbe67ikyFRyuJ3erO/7wZH2ufo6ua7BcFl l/yc2wo45fIT5kr8pL5OEHYmLar0l+hge5lovEDXOB9VDaNDNZPrhSmlrcsmfmCEz2c4 cuRMVjmBVOt00F0q+7bXTRpYBsIrY4jJuOlOWz9SmvJIg8rw1kMKSIEOn/Mv/Nbku99T nafw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720331650; x=1720936450; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=D0ao/bHiRilB5S2e2EOSdMSTC1iVfP4AjXJyo+t6sd4=; b=NlGtEBJp9G9LVS29/GL9jd/GkRpqwH1MROCfY2NRGosux4v3ZUR7cQELj8NFTDWNXD Vp9HDJspnh4vO9b3xIjDI9BM72J6GpMDB8/eFJhwbV7b6F5NVlO8x6tDjzP6CtQOHRgU VUvq2avweoYGe2/IxpD9DF9EqpViLnd5m4kV7jmHRlUECf8GmLrBcAQIs+9lFdd5EEXM ItbVkD09QeU4ZLk697vJnlA0MLHyw6QdlrNfzhbmkDDY7jHuJgt2hOgwBZgPnVja5ZCK OmhtKmB9ZLaqlXyqSH3iRl0adx7zBbR7T7S6ZdCseTBnaMJeE2qg3iexYDNYfcsmrkn9 aMaA== X-Forwarded-Encrypted: i=1; AJvYcCWCloM1ykEY5jm7dGcJq1APmwnHiC+bPKOBnc7SMZAlpX/iCUQc/Uht+bdjXljSLSG82kL96DoaAwG24NeTfbQsajwJj1n78WZq0wqs X-Gm-Message-State: AOJu0YzFlJS4yrP12BdIrZmPlvfMrYuZpWNVBhTssaHqJ/qr6CQy/xMO pmtd1pHVk5pjRQJGKxIBgGL0eAkDUKG2kCISmZffKuRxyAPHY5aB X-Google-Smtp-Source: AGHT+IGG7pp0NWsGPjDUHxaPtmH314w9l9YdSMp2LYg0SS7OJEi0aKYm9s3XK1kO6NxeK/Uks5f+5Q== X-Received: by 2002:a05:6a00:2ea6:b0:70b:2589:3a55 with SMTP id d2e1a72fcca58-70b25893db3mr2139078b3a.32.1720331649578; Sat, 06 Jul 2024 22:54:09 -0700 (PDT) Received: from kousik.local ([2405:201:c006:312d:252d:94b8:b79c:d7bb]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70b2e5fe3dfsm94429b3a.97.2024.07.06.22.54.05 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jul 2024 22:54:09 -0700 (PDT) From: Kousik Sanagavarapu To: Nishanth Menon , Jonathan Cameron , Santosh Shilimkar , Nathan Chancellor , Julia Lawall Cc: Shuah Khan , Javier Carrasco , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Kousik Sanagavarapu Subject: [PATCH v3 2/4] soc: ti: pruss: do device_node auto cleanup Date: Sun, 7 Jul 2024 10:44:17 +0530 Message-ID: <20240707055341.3656-3-five231003@gmail.com> X-Mailer: git-send-email 2.45.2.561.g66ac6e4bcd In-Reply-To: <20240707055341.3656-1-five231003@gmail.com> References: <20240707055341.3656-1-five231003@gmail.com> 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 scope based cleanup instead of manual of_node_put() calls, hence simplifying the handling of error paths at various places. While at it, use dev_err_probe() instead of dev_err() in all the code paths touched. Suggested-by: Julia Lawall Signed-off-by: Kousik Sanagavarapu --- drivers/soc/ti/pruss.c | 91 +++++++++++++++--------------------------- 1 file changed, 33 insertions(+), 58 deletions(-) diff --git a/drivers/soc/ti/pruss.c b/drivers/soc/ti/pruss.c index a3c55a291b0b..a01eabb0ca26 100644 --- a/drivers/soc/ti/pruss.c +++ b/drivers/soc/ti/pruss.c @@ -380,50 +380,42 @@ static int pruss_clk_mux_setup(struct pruss *pruss, s= truct clk *clk_mux, =20 static int pruss_clk_init(struct pruss *pruss, struct device_node *cfg_nod= e) { - const struct pruss_private_data *data; - struct device_node *clks_np; struct device *dev =3D pruss->dev; - int ret =3D 0; - - data =3D of_device_get_match_data(dev); + struct device_node *clks_np __free(device_node) =3D + of_get_child_by_name(cfg_node, "clocks"); + const struct pruss_private_data *data =3D of_device_get_match_data(dev); + int ret; =20 - clks_np =3D of_get_child_by_name(cfg_node, "clocks"); - if (!clks_np) { - dev_err(dev, "%pOF is missing its 'clocks' node\n", cfg_node); - return -ENODEV; - } + if (!clks_np) + return dev_err_probe(dev, -ENODEV, + "%pOF is missing its 'clocks' node\n", + cfg_node); =20 if (data && data->has_core_mux_clock) { ret =3D pruss_clk_mux_setup(pruss, pruss->core_clk_mux, "coreclk-mux", clks_np); - if (ret) { - dev_err(dev, "failed to setup coreclk-mux\n"); - goto put_clks_node; - } + if (ret) + return dev_err_probe(dev, ret, + "failed to setup coreclk-mux\n"); } =20 ret =3D pruss_clk_mux_setup(pruss, pruss->iep_clk_mux, "iepclk-mux", clks_np); - if (ret) { - dev_err(dev, "failed to setup iepclk-mux\n"); - goto put_clks_node; - } - -put_clks_node: - of_node_put(clks_np); + if (ret) + return dev_err_probe(dev, ret, "failed to setup iepclk-mux\n"); =20 - return ret; + return 0; } =20 static int pruss_of_setup_memories(struct device *dev, struct pruss *pruss) { struct device_node *np =3D dev_of_node(dev); - struct device_node *child; + struct device_node *child __free(device_node) =3D + of_get_child_by_name(np, "memories"); const struct pruss_private_data *data =3D of_device_get_match_data(dev); const char *mem_names[PRUSS_MEM_MAX] =3D { "dram0", "dram1", "shrdram2" }; int i; =20 - child =3D of_get_child_by_name(np, "memories"); if (!child) return dev_err_probe(dev, -ENODEV, "%pOF is missing its 'memories' node\n", @@ -442,24 +434,18 @@ static int pruss_of_setup_memories(struct device *dev= , struct pruss *pruss) =20 index =3D of_property_match_string(child, "reg-names", mem_names[i]); - if (index < 0) { - of_node_put(child); + if (index < 0) return index; - } =20 - if (of_address_to_resource(child, index, &res)) { - of_node_put(child); + if (of_address_to_resource(child, index, &res)) return -EINVAL; - } =20 pruss->mem_regions[i].va =3D devm_ioremap(dev, res.start, resource_size(&res)); - if (!pruss->mem_regions[i].va) { - of_node_put(child); + if (!pruss->mem_regions[i].va) return dev_err_probe(dev, -ENOMEM, "failed to parse and map memory resource %d %s\n", i, mem_names[i]); - } pruss->mem_regions[i].pa =3D res.start; pruss->mem_regions[i].size =3D resource_size(&res); =20 @@ -467,7 +453,6 @@ static int pruss_of_setup_memories(struct device *dev, = struct pruss *pruss) mem_names[i], &pruss->mem_regions[i].pa, pruss->mem_regions[i].size, pruss->mem_regions[i].va); } - of_node_put(child); =20 return 0; } @@ -481,26 +466,21 @@ static struct regmap_config regmap_conf =3D { static int pruss_cfg_of_init(struct device *dev, struct pruss *pruss) { struct device_node *np =3D dev_of_node(dev); - struct device_node *child; + struct device_node *child __free(device_node) =3D + of_get_child_by_name(np, "cfg"); struct resource res; int ret; =20 - child =3D of_get_child_by_name(np, "cfg"); - if (!child) { - dev_err(dev, "%pOF is missing its 'cfg' node\n", child); - return -ENODEV; - } + if (!child) + return dev_err_probe(dev, -ENODEV, + "%pOF is missing its 'cfg' node\n", child); =20 - if (of_address_to_resource(child, 0, &res)) { - ret =3D -ENOMEM; - goto node_put; - } + if (of_address_to_resource(child, 0, &res)) + return -ENOMEM; =20 pruss->cfg_base =3D devm_ioremap(dev, res.start, resource_size(&res)); - if (!pruss->cfg_base) { - ret =3D -ENOMEM; - goto node_put; - } + if (!pruss->cfg_base) + return -ENOMEM; =20 regmap_conf.name =3D kasprintf(GFP_KERNEL, "%pOFn@%llx", child, (u64)res.start); @@ -509,20 +489,15 @@ static int pruss_cfg_of_init(struct device *dev, stru= ct pruss *pruss) pruss->cfg_regmap =3D devm_regmap_init_mmio(dev, pruss->cfg_base, ®map_conf); kfree(regmap_conf.name); - if (IS_ERR(pruss->cfg_regmap)) { - dev_err(dev, "regmap_init_mmio failed for cfg, ret =3D %ld\n", - PTR_ERR(pruss->cfg_regmap)); - ret =3D PTR_ERR(pruss->cfg_regmap); - goto node_put; - } + if (IS_ERR(pruss->cfg_regmap)) + return dev_err_probe(dev, PTR_ERR(pruss->cfg_regmap), + "regmap_init_mmio failed for cfg\n"); =20 ret =3D pruss_clk_init(pruss, child); if (ret) - dev_err(dev, "pruss_clk_init failed, ret =3D %d\n", ret); + return dev_err_probe(dev, ret, "pruss_clk_init failed\n"); =20 -node_put: - of_node_put(child); - return ret; + return 0; } =20 static int pruss_probe(struct platform_device *pdev) --=20 2.45.2.561.g66ac6e4bcd From nobody Sat Feb 7 13:41:48 2026 Received: from mail-oo1-f43.google.com (mail-oo1-f43.google.com [209.85.161.43]) (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 3BCC012E6D for ; Sun, 7 Jul 2024 05:54:17 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.161.43 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720331658; cv=none; b=SMnp3LI6HsiNi9szI+gs9PZxZcamkXcJYU9EAcnThxfVANUea/Hb2YcFMVIZHODT5FeCs7DusfcbmO/R3sArFcnb4QoC8CiNpR6+XZjryF1aUQDMK3CERQEu1hrvcaR0/tvabiLPX8YeSCXsim9/y+kn88P9PwKjWMh71hHbxBw= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720331658; c=relaxed/simple; bh=aGupbIWhOuEPGiinUvpLYSMe8w+/SDbrcOcNts9puZg=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=Yf5nkJNjH/9hR9pgRreq8u3ZvZf5IV3EsDAw97Z5DYX330XLdzDDHeO5zk7Cdhr0+idO8bKLB2RTtCQzS3RCh1xT3nT3pU6XvAhQzV0X4Gkq0TXEwM++82/M347lXQgNKeyJ7EzqnAPKcbvgRucY3zcgAaCTWk/8cZOPt8J6ew4= 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=QsaKOunD; arc=none smtp.client-ip=209.85.161.43 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="QsaKOunD" Received: by mail-oo1-f43.google.com with SMTP id 006d021491bc7-5c66de0c24bso377220eaf.1 for ; Sat, 06 Jul 2024 22:54:17 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720331656; x=1720936456; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=PkYP94kjr/8aPWc+0tv0/ZqO8o4iHRZmdZ252DF4P2Y=; b=QsaKOunDIns7LqeXAJ8aSKuaZF07kA0F/BIDa8MfWIsP5peIJNt5ddA6mA9OxtAzIL udNw9iRAxIWvlwSZ515S3X6PXVnvsI2CCewwTKmkp2TsDmnaK9eI8/8oM/Q39yED0mma B42foOtxznAHJmARmVJnYuwbFiqu21qHJU0gCSDFvrhbOUnhr5jDN2v2M3xv/iZ3qE5m AaixwHAkoYR7IUmydgPewkk2EmwKW4CzY79Q7HMtH4fTc0Wifwte+gP5eRnWQI5ikVbK oPWHXh//H5LdjMlBjtyLC0HI+fdCl62GcKYOufhBQ4+Ew2PJxkDW158uuuURpIMh8MM5 KPJg== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720331656; x=1720936456; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=PkYP94kjr/8aPWc+0tv0/ZqO8o4iHRZmdZ252DF4P2Y=; b=ReHY6w5Mfuy/L0w22YnXUuvRG0YB7ojgD7DWiKPQgjn85xARAvzx98HtpiCw+hAljP 5weM0KY5LVq7rpvyWz6X6ub+IgiZWX+oWxuOyUBmiHk8z/rIUosJTthyvV6DJ74lwOl0 jCF+4WBerU/zwKyVoN+gpbG/LEzie71lgWztc65HgeKZQxuCvmpIh5Bvewk6yIJYDI3h Oanac/h0nCt3eOLiy9vGACpB/b3KEeQJnABig8HpsJBC/wV1Th3OOpQ+jg7SO4cDRarm cTx5SZvNR+c5vUv2yXwoL5e/6JcWxGiyBp+OujngFGalhnK08fB5IVlJUPOF/VCy35Hm 7BnQ== X-Forwarded-Encrypted: i=1; AJvYcCV+Hag2Ooh5vZm1xArKvSBHHhOpVXxedOAChwJoAL1HXD4dmqTnfrtxQ7KgbQAU8JcmRaF6Y+lKVkSUKQuTuToKYjtaqsEGlVtfxJmB X-Gm-Message-State: AOJu0YyUF1K6+570OT752XToKsMtmnyj7zSXxLD/OXBVSBcH1tG1GtRH c6Yj4lIXizpemJnS5PvTaIgToxKmpSoI7W8nxodTqzC1+b7PoJv4 X-Google-Smtp-Source: AGHT+IEu5EHIYcnfrC8/ox3w5DEvJ6bgrLaIpMPaGoA9D9FGa+MnvW04XbpcHN+amV5ID3TB24rIOQ== X-Received: by 2002:a05:6870:d8c8:b0:24c:adc0:ffa1 with SMTP id 586e51a60fabf-25e2b5aec6fmr7214256fac.0.1720331656199; Sat, 06 Jul 2024 22:54:16 -0700 (PDT) Received: from kousik.local ([2405:201:c006:312d:252d:94b8:b79c:d7bb]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70b2e5fe3dfsm94429b3a.97.2024.07.06.22.54.11 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jul 2024 22:54:15 -0700 (PDT) From: Kousik Sanagavarapu To: Nishanth Menon , Jonathan Cameron , Santosh Shilimkar , Nathan Chancellor , Julia Lawall Cc: Shuah Khan , Javier Carrasco , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Kousik Sanagavarapu , Jonathan Cameron Subject: [PATCH v3 3/4] soc: ti: knav_qmss_queue: do device_node auto cleanup Date: Sun, 7 Jul 2024 10:44:18 +0530 Message-ID: <20240707055341.3656-4-five231003@gmail.com> X-Mailer: git-send-email 2.45.2.561.g66ac6e4bcd In-Reply-To: <20240707055341.3656-1-five231003@gmail.com> References: <20240707055341.3656-1-five231003@gmail.com> 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 scope based cleanup, instead of manual of_node_put() calls, which automatically free()s "struct device_node". While at it, refactor the code from knav_queue_probe() into the seperate functions to make auto cleanup look more neat. Doing the cleanup this way has the advantage of reducing the chance of memory leaks in case we need to read from new OF nodes in the future when we probe. Suggested-by: Julia Lawall Reviewed-by: Jonathan Cameron Signed-off-by: Kousik Sanagavarapu --- drivers/soc/ti/knav_qmss_queue.c | 100 ++++++++++++++++--------------- 1 file changed, 53 insertions(+), 47 deletions(-) diff --git a/drivers/soc/ti/knav_qmss_queue.c b/drivers/soc/ti/knav_qmss_qu= eue.c index 06fb5505c22c..f4b603719055 100644 --- a/drivers/soc/ti/knav_qmss_queue.c +++ b/drivers/soc/ti/knav_qmss_queue.c @@ -1076,14 +1076,20 @@ static const char *knav_queue_find_name(struct devi= ce_node *node) } =20 static int knav_queue_setup_regions(struct knav_device *kdev, - struct device_node *regions) + struct device_node *node) { struct device *dev =3D kdev->dev; + struct device_node *regions __free(device_node) =3D + of_get_child_by_name(node, "descriptor-regions"); struct knav_region *region; struct device_node *child; u32 temp[2]; int ret; =20 + if (!regions) + return dev_err_probe(dev, -ENODEV, + "descriptor-regions not specified\n"); + for_each_child_of_node(regions, child) { region =3D devm_kzalloc(dev, sizeof(*region), GFP_KERNEL); if (!region) { @@ -1121,10 +1127,9 @@ static int knav_queue_setup_regions(struct knav_devi= ce *kdev, INIT_LIST_HEAD(®ion->pools); list_add_tail(®ion->list, &kdev->regions); } - if (list_empty(&kdev->regions)) { - dev_err(dev, "no valid region information found\n"); - return -ENODEV; - } + if (list_empty(&kdev->regions)) + return dev_err_probe(dev, -ENODEV, + "no valid region information found\n"); =20 /* Next, we run through the regions and set things up */ for_each_region(kdev, region) @@ -1306,10 +1311,16 @@ static int knav_setup_queue_range(struct knav_devic= e *kdev, } =20 static int knav_setup_queue_pools(struct knav_device *kdev, - struct device_node *queue_pools) + struct device_node *node) { + struct device_node *queue_pools __free(device_node) =3D + of_get_child_by_name(node, "queue-pools"); struct device_node *type, *range; =20 + if (!queue_pools) + return dev_err_probe(kdev->dev, -ENODEV, + "queue-pools not specified\n"); + for_each_child_of_node(queue_pools, type) { for_each_child_of_node(type, range) { /* return value ignored, we init the rest... */ @@ -1318,10 +1329,9 @@ static int knav_setup_queue_pools(struct knav_device= *kdev, } =20 /* ... and barf if they all failed! */ - if (list_empty(&kdev->queue_ranges)) { - dev_err(kdev->dev, "no valid queue range found\n"); - return -ENODEV; - } + if (list_empty(&kdev->queue_ranges)) + return dev_err_probe(kdev->dev, -ENODEV, + "no valid queue range found\n"); return 0; } =20 @@ -1389,14 +1399,20 @@ static void __iomem *knav_queue_map_reg(struct knav= _device *kdev, } =20 static int knav_queue_init_qmgrs(struct knav_device *kdev, - struct device_node *qmgrs) + struct device_node *node) { struct device *dev =3D kdev->dev; + struct device_node *qmgrs __free(device_node) =3D + of_get_child_by_name(node, "qmgrs"); struct knav_qmgr_info *qmgr; struct device_node *child; u32 temp[2]; int ret; =20 + if (!qmgrs) + return dev_err_probe(dev, -ENODEV, + "queue manager info not specified\n"); + for_each_child_of_node(qmgrs, child) { qmgr =3D devm_kzalloc(dev, sizeof(*qmgr), GFP_KERNEL); if (!qmgr) { @@ -1668,6 +1684,26 @@ static int knav_queue_start_pdsps(struct knav_device= *kdev) return 0; } =20 +static int knav_queue_setup_pdsps(struct knav_device *kdev, + struct device_node *node) +{ + struct device_node *pdsps __free(device_node) =3D + of_get_child_by_name(node, "pdsps"); + + if (pdsps) { + int ret; + + ret =3D knav_queue_init_pdsps(kdev, pdsps); + if (ret) + return ret; + + ret =3D knav_queue_start_pdsps(kdev); + if (ret) + return ret; + } + return 0; +} + static inline struct knav_qmgr_info *knav_find_qmgr(unsigned id) { struct knav_qmgr_info *qmgr; @@ -1755,7 +1791,6 @@ MODULE_DEVICE_TABLE(of, keystone_qmss_of_match); static int knav_queue_probe(struct platform_device *pdev) { struct device_node *node =3D pdev->dev.of_node; - struct device_node *qmgrs, *queue_pools, *regions, *pdsps; struct device *dev =3D &pdev->dev; u32 temp[2]; int ret; @@ -1799,39 +1834,17 @@ static int knav_queue_probe(struct platform_device = *pdev) kdev->num_queues =3D temp[1]; =20 /* Initialize queue managers using device tree configuration */ - qmgrs =3D of_get_child_by_name(node, "qmgrs"); - if (!qmgrs) { - dev_err(dev, "queue manager info not specified\n"); - ret =3D -ENODEV; - goto err; - } - ret =3D knav_queue_init_qmgrs(kdev, qmgrs); - of_node_put(qmgrs); + ret =3D knav_queue_init_qmgrs(kdev, node); if (ret) goto err; =20 /* get pdsp configuration values from device tree */ - pdsps =3D of_get_child_by_name(node, "pdsps"); - if (pdsps) { - ret =3D knav_queue_init_pdsps(kdev, pdsps); - if (ret) - goto err; - - ret =3D knav_queue_start_pdsps(kdev); - if (ret) - goto err; - } - of_node_put(pdsps); + ret =3D knav_queue_setup_pdsps(kdev, node); + if (ret) + goto err; =20 /* get usable queue range values from device tree */ - queue_pools =3D of_get_child_by_name(node, "queue-pools"); - if (!queue_pools) { - dev_err(dev, "queue-pools not specified\n"); - ret =3D -ENODEV; - goto err; - } - ret =3D knav_setup_queue_pools(kdev, queue_pools); - of_node_put(queue_pools); + ret =3D knav_setup_queue_pools(kdev, node); if (ret) goto err; =20 @@ -1853,14 +1866,7 @@ static int knav_queue_probe(struct platform_device *= pdev) if (ret) goto err; =20 - regions =3D of_get_child_by_name(node, "descriptor-regions"); - if (!regions) { - dev_err(dev, "descriptor-regions not specified\n"); - ret =3D -ENODEV; - goto err; - } - ret =3D knav_queue_setup_regions(kdev, regions); - of_node_put(regions); + ret =3D knav_queue_setup_regions(kdev, node); if (ret) goto err; =20 --=20 2.45.2.561.g66ac6e4bcd From nobody Sat Feb 7 13:41:48 2026 Received: from mail-oi1-f174.google.com (mail-oi1-f174.google.com [209.85.167.174]) (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 A185815EA6 for ; Sun, 7 Jul 2024 05:54:23 +0000 (UTC) Authentication-Results: smtp.subspace.kernel.org; arc=none smtp.client-ip=209.85.167.174 ARC-Seal: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720331665; cv=none; b=rK0H+nOqSA4hWM5xXO5S5/S19cjJd/U7OJ77LhUxJFtUuFm9qNUUzRo22AAiAjnibkLtG/q9LHpCfDOqM+jjGiVhOJPGd7EJubVin6h3S22pXFcxt4RjEylMzM5jwl4XRyh/FPNOu65M+mBIPhRtCCoG/2A2u8pICIhcPVobAKE= ARC-Message-Signature: i=1; a=rsa-sha256; d=subspace.kernel.org; s=arc-20240116; t=1720331665; c=relaxed/simple; bh=A+Yqc0Y2sY3QERD0+cTYtcAee5yJA/eRgm7s+R2BFY8=; h=From:To:Cc:Subject:Date:Message-ID:In-Reply-To:References: MIME-Version; b=WqR319DbYSNtdJB60Co9F0ChiQztMeCe9Zh0p8N/o2Hh+QnHtBVvOxZSCwqQm+6JnK/2DWA7JPNQv6yq1LmSN1q4houMGdSBvx4WgByVSzbDCHYN9fOKcXwo/JpXG6E8w62plxmSb7rdFmDYTc5MDhsKO7un3DNSNfWhezH+TwI= 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=VHqv+qM8; arc=none smtp.client-ip=209.85.167.174 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="VHqv+qM8" Received: by mail-oi1-f174.google.com with SMTP id 5614622812f47-3c9cc66c649so1525129b6e.1 for ; Sat, 06 Jul 2024 22:54:23 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20230601; t=1720331663; x=1720936463; darn=vger.kernel.org; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:from:to:cc:subject:date :message-id:reply-to; bh=oUg4PV29CFOGLmMvmdWs76G4kY/lh/K0XHciozPPEOE=; b=VHqv+qM8T+cRtDJKRy8AicAxbxMelKJNDFTJw62tyzmkdrYqknu9MI2HK0YelX6clu vfqGZ3j7Iz9tPXY4gAxCeQ18YgC/cSfgffchfV+u9XC4jpyik6R2Q57MLtRjvvmqM53D ot0K7QpaRy0qasMuBphzJtZ33/gIv+BZJtEhtnKMOoyrfVARhxuhloZHhLVYiAH4PzTf Y3Oznt24hATjBlgtda6DKASxvwgO46+GPOfqUM44no+10gokz28BykH/vW2pzNugeJeq li1VcFXs1ysdgB/kEPqCGROx1BgwSNvPvk5AZ+pHOGBfeGN4EmF4cMN+qwDIRUn27Kde e7Yw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1720331663; x=1720936463; h=content-transfer-encoding:mime-version:references:in-reply-to :message-id:date:subject:cc:to:from:x-gm-message-state:from:to:cc :subject:date:message-id:reply-to; bh=oUg4PV29CFOGLmMvmdWs76G4kY/lh/K0XHciozPPEOE=; b=NnqNJpUVXYqkludzUWNmr8rNtyp8QlvXPEZkpg6yOKrygCcgZgzIOIs4+S0yrKouFH 9VH0EmyGlQoFOgsistkGHXniFZW8iZRVzfovOhXaHWwIYZCdaNMVs94aIw3fTfBgeANv XH7NjvqJwkk6XbRLQoY2gp09SmQ768zoSbHj4OBNef5NPm/rf/WsMay4xDWP8EqnTACT iQEg4bZvp4Zbhwb/RH2+tP2ppLeRZooJBhVguyvHISfk4590edlrPKUf/G1PFjKxi3nr rQQN19MdHxKLzOoZXi4RXebaHLT4twomzB2V8mezA98uWGJV/hj6/Pxprj2H4vCOJkum ffyg== X-Forwarded-Encrypted: i=1; AJvYcCVJvhIK/z3zrAl0BuIkMEspq5p4Y5KC7Cl0jESsW0KQREeDkpc0cpfc7mu0pOaQc7ENIVyY0q1jH/xuo3AC5goCdZKGlENgtNyN/SoR X-Gm-Message-State: AOJu0YxA7qHei2YrgJI98o9SdO2Z4yoP08Jin7ESKokuO9OkbJWmv+LT tzbp8QvtWNTuP2oh+8qVgLdv3gYaVSeYrWPY7qgs/YCo9vy8mJSG X-Google-Smtp-Source: AGHT+IFUJJDPOBesbBpJmBoRvVb3Ess8NluFY8+9Qxo64gDShTCPBuINQn3LHw7EIoQS+c8DkpXYLQ== X-Received: by 2002:a05:6808:1392:b0:3d9:1f05:845 with SMTP id 5614622812f47-3d91f050a43mr7087381b6e.19.1720331662674; Sat, 06 Jul 2024 22:54:22 -0700 (PDT) Received: from kousik.local ([2405:201:c006:312d:252d:94b8:b79c:d7bb]) by smtp.gmail.com with ESMTPSA id d2e1a72fcca58-70b2e5fe3dfsm94429b3a.97.2024.07.06.22.54.18 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jul 2024 22:54:22 -0700 (PDT) From: Kousik Sanagavarapu To: Nishanth Menon , Jonathan Cameron , Santosh Shilimkar , Nathan Chancellor , Julia Lawall Cc: Shuah Khan , Javier Carrasco , linux-kernel@vger.kernel.org, linux-arm-kernel@lists.infradead.org, Kousik Sanagavarapu Subject: [PATCH v3 4/4] soc: ti: pm33xx: do device_node auto cleanup Date: Sun, 7 Jul 2024 10:44:19 +0530 Message-ID: <20240707055341.3656-5-five231003@gmail.com> X-Mailer: git-send-email 2.45.2.561.g66ac6e4bcd In-Reply-To: <20240707055341.3656-1-five231003@gmail.com> References: <20240707055341.3656-1-five231003@gmail.com> 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 scope based cleanup instead of manual of_node_put() calls, hence simplifying the handling of error paths. Suggested-by: Julia Lawall Signed-off-by: Kousik Sanagavarapu --- drivers/soc/ti/pm33xx.c | 52 +++++++++++++++++------------------------ 1 file changed, 21 insertions(+), 31 deletions(-) diff --git a/drivers/soc/ti/pm33xx.c b/drivers/soc/ti/pm33xx.c index 8e983c3c4e03..d0edce53c793 100644 --- a/drivers/soc/ti/pm33xx.c +++ b/drivers/soc/ti/pm33xx.c @@ -383,54 +383,44 @@ static void am33xx_pm_free_sram(void) */ static int am33xx_pm_alloc_sram(void) { - struct device_node *np; - int ret =3D 0; + struct device_node *np __free(device_node) =3D + of_find_compatible_node(NULL, NULL, "ti,omap3-mpu"); =20 - np =3D of_find_compatible_node(NULL, NULL, "ti,omap3-mpu"); if (!np) { np =3D of_find_compatible_node(NULL, NULL, "ti,omap4-mpu"); - if (!np) { - dev_err(pm33xx_dev, "PM: %s: Unable to find device node for mpu\n", - __func__); - return -ENODEV; - } + if (!np) + return dev_err_probe(pm33xx_dev, -ENODEV, + "PM: %s: Unable to find device node for mpu\n", + __func__); } =20 sram_pool =3D of_gen_pool_get(np, "pm-sram", 0); - if (!sram_pool) { - dev_err(pm33xx_dev, "PM: %s: Unable to get sram pool for ocmcram\n", - __func__); - ret =3D -ENODEV; - goto mpu_put_node; - } + if (!sram_pool) + return dev_err_probe(pm33xx_dev, -ENODEV, + "PM: %s: Unable to get sram pool for ocmcram\n", + __func__); =20 sram_pool_data =3D of_gen_pool_get(np, "pm-sram", 1); - if (!sram_pool_data) { - dev_err(pm33xx_dev, "PM: %s: Unable to get sram data pool for ocmcram\n", - __func__); - ret =3D -ENODEV; - goto mpu_put_node; - } + if (!sram_pool_data) + return dev_err_probe(pm33xx_dev, -ENODEV, + "PM: %s: Unable to get sram data pool for ocmcram\n", + __func__); =20 ocmcram_location =3D gen_pool_alloc(sram_pool, *pm_sram->do_wfi_sz); - if (!ocmcram_location) { - dev_err(pm33xx_dev, "PM: %s: Unable to allocate memory from ocmcram\n", - __func__); - ret =3D -ENOMEM; - goto mpu_put_node; - } + if (!ocmcram_location) + return dev_err_probe(pm33xx_dev, -ENOMEM, + "PM: %s: Unable to allocate memory from ocmcram\n", + __func__); =20 ocmcram_location_data =3D gen_pool_alloc(sram_pool_data, sizeof(struct emif_regs_amx3)); if (!ocmcram_location_data) { - dev_err(pm33xx_dev, "PM: Unable to allocate memory from ocmcram\n"); gen_pool_free(sram_pool, ocmcram_location, *pm_sram->do_wfi_sz); - ret =3D -ENOMEM; + return dev_err_probe(pm33xx_dev, -ENOMEM, + "PM: Unable to allocate memory from ocmcram\n"); } =20 -mpu_put_node: - of_node_put(np); - return ret; + return 0; } =20 static int am33xx_pm_rtc_setup(void) --=20 2.45.2.561.g66ac6e4bcd