* [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop)
@ 2024-07-07 13:54 Javier Carrasco
2024-07-07 13:54 ` [PATCH v2 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco
` (2 more replies)
0 siblings, 3 replies; 6+ messages in thread
From: Javier Carrasco @ 2024-07-07 13:54 UTC (permalink / raw)
To: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Jonathan Cameron,
Bjorn Helgaas
Cc: linux-pci, linux-kernel, Javier Carrasco
This series removes some patterns that require multiple steps to achieve
what single calls can achieve.
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
Changes in v2:
- Remove error value from the message "failed to parse devfn: %d\n", as
it is already handled by dev_err_probe().
- Fix capitalization in error messages.
- Return -ENODEV and provide more appropriate error message if no
dev->of_node is available.
- Link to v1: https://lore.kernel.org/r/20240706-pcie-kirin-dev_err_probe-v1-0-56df797fb8ee@gmail.com
---
Javier Carrasco (2):
PCI: kirin: use dev_err_probe() in probe error paths
PCI: kirin: use for_each_available_child_of_node_scoped()
drivers/pci/controller/dwc/pcie-kirin.c | 54 ++++++++++++---------------------
1 file changed, 20 insertions(+), 34 deletions(-)
---
base-commit: 412d6f897b7a494b373986e63a14a94d0fbd0fdb
change-id: 20240705-pcie-kirin-dev_err_probe-0c9035188ff9
Best regards,
--
Javier Carrasco <javier.carrasco.cruz@gmail.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* [PATCH v2 1/2] PCI: kirin: use dev_err_probe() in probe error paths
2024-07-07 13:54 [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Javier Carrasco
@ 2024-07-07 13:54 ` Javier Carrasco
2024-07-09 14:43 ` Jonathan Cameron
2024-07-07 13:54 ` [PATCH v2 2/2] PCI: kirin: use for_each_available_child_of_node_scoped() Javier Carrasco
2024-07-08 0:42 ` [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Krzysztof Wilczyński
2 siblings, 1 reply; 6+ messages in thread
From: Javier Carrasco @ 2024-07-07 13:54 UTC (permalink / raw)
To: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Jonathan Cameron,
Bjorn Helgaas
Cc: linux-pci, linux-kernel, Javier Carrasco
dev_err_probe() is used in some probe error paths, yet the
"dev_err() + return" pattern is used in some others.
Use dev_err_probe() in all error paths with that construction.
Suggested-by: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
drivers/pci/controller/dwc/pcie-kirin.c | 44 +++++++++++++--------------------
1 file changed, 17 insertions(+), 27 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c
index 0a29136491b8..e00152b1ee99 100644
--- a/drivers/pci/controller/dwc/pcie-kirin.c
+++ b/drivers/pci/controller/dwc/pcie-kirin.c
@@ -216,10 +216,8 @@ static int hi3660_pcie_phy_start(struct hi3660_pcie_phy *phy)
usleep_range(PIPE_CLK_WAIT_MIN, PIPE_CLK_WAIT_MAX);
reg_val = kirin_apb_phy_readl(phy, PCIE_APB_PHY_STATUS0);
- if (reg_val & PIPE_CLK_STABLE) {
- dev_err(dev, "PIPE clk is not stable\n");
- return -EINVAL;
- }
+ if (reg_val & PIPE_CLK_STABLE)
+ return dev_err_probe(dev, -EINVAL, "PIPE clk is not stable\n");
return 0;
}
@@ -371,10 +369,9 @@ static int kirin_pcie_get_gpio_enable(struct kirin_pcie *pcie,
if (ret < 0)
return 0;
- if (ret > MAX_PCI_SLOTS) {
- dev_err(dev, "Too many GPIO clock requests!\n");
- return -EINVAL;
- }
+ if (ret > MAX_PCI_SLOTS)
+ return dev_err_probe(dev, -EINVAL,
+ "Too many GPIO clock requests!\n");
pcie->n_gpio_clkreq = ret;
@@ -384,7 +381,7 @@ static int kirin_pcie_get_gpio_enable(struct kirin_pcie *pcie,
GPIOD_OUT_LOW);
if (IS_ERR(pcie->id_clkreq_gpio[i]))
return dev_err_probe(dev, PTR_ERR(pcie->id_clkreq_gpio[i]),
- "unable to get a valid clken gpio\n");
+ "Unable to get a valid clken gpio\n");
pcie->clkreq_names[i] = devm_kasprintf(dev, GFP_KERNEL,
"pcie_clkreq_%d", i);
@@ -417,20 +414,17 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie,
if (PTR_ERR(pcie->id_reset_gpio[i]) == -ENOENT)
continue;
return dev_err_probe(dev, PTR_ERR(pcie->id_reset_gpio[i]),
- "unable to get a valid reset gpio\n");
+ "Unable to get a valid reset gpio\n");
}
pcie->num_slots++;
- if (pcie->num_slots > MAX_PCI_SLOTS) {
- dev_err(dev, "Too many PCI slots!\n");
- return -EINVAL;
- }
+ if (pcie->num_slots > MAX_PCI_SLOTS)
+ return dev_err_probe(dev, -EINVAL,
+ "Too many PCI slots!\n");
ret = of_pci_get_devfn(child);
- if (ret < 0) {
- dev_err(dev, "failed to parse devfn: %d\n", ret);
- return ret;
- }
+ if (ret < 0)
+ return dev_err_probe(dev, ret, "Failed to parse devfn\n");
slot = PCI_SLOT(ret);
@@ -469,7 +463,7 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
kirin_pcie->id_dwc_perst_gpio = devm_gpiod_get(dev, "reset", GPIOD_OUT_LOW);
if (IS_ERR(kirin_pcie->id_dwc_perst_gpio))
return dev_err_probe(dev, PTR_ERR(kirin_pcie->id_dwc_perst_gpio),
- "unable to get a valid gpio pin\n");
+ "Unable to get a valid gpio pin\n");
gpiod_set_consumer_name(kirin_pcie->id_dwc_perst_gpio, "pcie_perst_bridge");
ret = kirin_pcie_get_gpio_enable(kirin_pcie, pdev);
@@ -729,16 +723,12 @@ static int kirin_pcie_probe(struct platform_device *pdev)
struct dw_pcie *pci;
int ret;
- if (!dev->of_node) {
- dev_err(dev, "NULL node\n");
- return -EINVAL;
- }
+ if (!dev->of_node)
+ return dev_err_probe(dev, -ENODEV, "OF node not found\n");
data = of_device_get_match_data(dev);
- if (!data) {
- dev_err(dev, "OF data missing\n");
- return -EINVAL;
- }
+ if (!data)
+ return dev_err_probe(dev, -EINVAL, "OF data missing\n");
kirin_pcie = devm_kzalloc(dev, sizeof(struct kirin_pcie), GFP_KERNEL);
if (!kirin_pcie)
--
2.40.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* [PATCH v2 2/2] PCI: kirin: use for_each_available_child_of_node_scoped()
2024-07-07 13:54 [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Javier Carrasco
2024-07-07 13:54 ` [PATCH v2 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco
@ 2024-07-07 13:54 ` Javier Carrasco
2024-07-09 15:40 ` Jonathan Cameron
2024-07-08 0:42 ` [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Krzysztof Wilczyński
2 siblings, 1 reply; 6+ messages in thread
From: Javier Carrasco @ 2024-07-07 13:54 UTC (permalink / raw)
To: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Jonathan Cameron,
Bjorn Helgaas
Cc: linux-pci, linux-kernel, Javier Carrasco
The scoped version of the macro automatically decrements the child node
refcount on early exits, removing the need for the `goto` and
`of_node_put()`.
Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
---
drivers/pci/controller/dwc/pcie-kirin.c | 10 +++-------
1 file changed, 3 insertions(+), 7 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c
index e00152b1ee99..7c591f50d0b2 100644
--- a/drivers/pci/controller/dwc/pcie-kirin.c
+++ b/drivers/pci/controller/dwc/pcie-kirin.c
@@ -446,7 +446,7 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
struct platform_device *pdev)
{
struct device *dev = &pdev->dev;
- struct device_node *child, *node = dev->of_node;
+ struct device_node *node = dev->of_node;
void __iomem *apb_base;
int ret;
@@ -471,17 +471,13 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
return ret;
/* Parse OF children */
- for_each_available_child_of_node(node, child) {
+ for_each_available_child_of_node_scoped(node, child) {
ret = kirin_pcie_parse_port(kirin_pcie, pdev, child);
if (ret)
- goto put_node;
+ return ret;
}
return 0;
-
-put_node:
- of_node_put(child);
- return ret;
}
static void kirin_pcie_sideband_dbi_w_mode(struct kirin_pcie *kirin_pcie,
--
2.40.1
^ permalink raw reply related [flat|nested] 6+ messages in thread
* Re: [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop)
2024-07-07 13:54 [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Javier Carrasco
2024-07-07 13:54 ` [PATCH v2 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco
2024-07-07 13:54 ` [PATCH v2 2/2] PCI: kirin: use for_each_available_child_of_node_scoped() Javier Carrasco
@ 2024-07-08 0:42 ` Krzysztof Wilczyński
2 siblings, 0 replies; 6+ messages in thread
From: Krzysztof Wilczyński @ 2024-07-08 0:42 UTC (permalink / raw)
To: Javier Carrasco
Cc: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi, Rob Herring,
Jonathan Cameron, Bjorn Helgaas, linux-pci, linux-kernel
Hello,
> This series removes some patterns that require multiple steps to achieve
> what single calls can achieve.
Thank you!
Reviewed-by: Krzysztof Wilczyński <kw@linux.com>
... for botch patches.
Krzysztof
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 1/2] PCI: kirin: use dev_err_probe() in probe error paths
2024-07-07 13:54 ` [PATCH v2 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco
@ 2024-07-09 14:43 ` Jonathan Cameron
0 siblings, 0 replies; 6+ messages in thread
From: Jonathan Cameron @ 2024-07-09 14:43 UTC (permalink / raw)
To: Javier Carrasco
Cc: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas, linux-pci,
linux-kernel
On Sun, 07 Jul 2024 15:54:01 +0200
Javier Carrasco <javier.carrasco.cruz@gmail.com> wrote:
> dev_err_probe() is used in some probe error paths, yet the
> "dev_err() + return" pattern is used in some others.
>
> Use dev_err_probe() in all error paths with that construction.
>
> Suggested-by: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
^ permalink raw reply [flat|nested] 6+ messages in thread
* Re: [PATCH v2 2/2] PCI: kirin: use for_each_available_child_of_node_scoped()
2024-07-07 13:54 ` [PATCH v2 2/2] PCI: kirin: use for_each_available_child_of_node_scoped() Javier Carrasco
@ 2024-07-09 15:40 ` Jonathan Cameron
0 siblings, 0 replies; 6+ messages in thread
From: Jonathan Cameron @ 2024-07-09 15:40 UTC (permalink / raw)
To: Javier Carrasco
Cc: Xiaowei Song, Binghui Wang, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas, linux-pci,
linux-kernel
On Sun, 07 Jul 2024 15:54:02 +0200
Javier Carrasco <javier.carrasco.cruz@gmail.com> wrote:
> The scoped version of the macro automatically decrements the child node
> refcount on early exits, removing the need for the `goto` and
> `of_node_put()`.
>
> Signed-off-by: Javier Carrasco <javier.carrasco.cruz@gmail.com>
Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
> drivers/pci/controller/dwc/pcie-kirin.c | 10 +++-------
> 1 file changed, 3 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c
> index e00152b1ee99..7c591f50d0b2 100644
> --- a/drivers/pci/controller/dwc/pcie-kirin.c
> +++ b/drivers/pci/controller/dwc/pcie-kirin.c
> @@ -446,7 +446,7 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
> struct platform_device *pdev)
> {
> struct device *dev = &pdev->dev;
> - struct device_node *child, *node = dev->of_node;
> + struct device_node *node = dev->of_node;
> void __iomem *apb_base;
> int ret;
>
> @@ -471,17 +471,13 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
> return ret;
>
> /* Parse OF children */
> - for_each_available_child_of_node(node, child) {
> + for_each_available_child_of_node_scoped(node, child) {
> ret = kirin_pcie_parse_port(kirin_pcie, pdev, child);
> if (ret)
> - goto put_node;
> + return ret;
> }
>
> return 0;
> -
> -put_node:
> - of_node_put(child);
> - return ret;
> }
>
> static void kirin_pcie_sideband_dbi_w_mode(struct kirin_pcie *kirin_pcie,
>
^ permalink raw reply [flat|nested] 6+ messages in thread
end of thread, other threads:[~2024-07-09 15:40 UTC | newest]
Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2024-07-07 13:54 [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Javier Carrasco
2024-07-07 13:54 ` [PATCH v2 1/2] PCI: kirin: use dev_err_probe() in probe error paths Javier Carrasco
2024-07-09 14:43 ` Jonathan Cameron
2024-07-07 13:54 ` [PATCH v2 2/2] PCI: kirin: use for_each_available_child_of_node_scoped() Javier Carrasco
2024-07-09 15:40 ` Jonathan Cameron
2024-07-08 0:42 ` [PATCH v2 0/2] PCI: kirin: cleanup (dev_err_probe() and scoped loop) Krzysztof Wilczyński
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.