* [PATCH v3 1/2] PCI: j721e: Use devm_clk_get_optional_enabled() to get the clock
2025-10-28 15:42 [PATCH v3 0/2] PCI: j721e: A couple of cleanups Anand Moon
@ 2025-10-28 15:42 ` Anand Moon
2025-10-28 15:42 ` [PATCH v3 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable Anand Moon
` (3 subsequent siblings)
4 siblings, 0 replies; 11+ messages in thread
From: Anand Moon @ 2025-10-28 15:42 UTC (permalink / raw)
To: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
Bjorn Helgaas, open list:PCI DRIVER FOR TI DRA7XX/J721E,
open list:PCI DRIVER FOR TI DRA7XX/J721E,
moderated list:PCI DRIVER FOR TI DRA7XX/J721E, open list
Cc: Anand Moon, Markus Elfring, Dan Carpenter
Use devm_clk_get_optional_enabled() helper instead of calling
devm_clk_get_optional() and then clk_prepare_enable(). It simplifies
the clk_prepare_enable() and clk_disable_unprepare() with proper error
handling and makes the code more compact.
The result of devm_clk_get_optional_enabled() is now assigned directly
to pcie->refclk. This removes a superfluous local clk variable,
improving code readability and compactness. The functionality
remains unchanged, but the code is now more streamlined.
Cc: Siddharth Vadapalli <s-vadapalli@ti.com>
Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
---
v4: Add Rb Siddharth
---
drivers/pci/controller/cadence/pci-j721e.c | 20 +++++---------------
1 file changed, 5 insertions(+), 15 deletions(-)
diff --git a/drivers/pci/controller/cadence/pci-j721e.c b/drivers/pci/controller/cadence/pci-j721e.c
index 5bc5ab20aa6d..a88b2e52fd78 100644
--- a/drivers/pci/controller/cadence/pci-j721e.c
+++ b/drivers/pci/controller/cadence/pci-j721e.c
@@ -479,7 +479,6 @@ static int j721e_pcie_probe(struct platform_device *pdev)
struct cdns_pcie_ep *ep = NULL;
struct gpio_desc *gpiod;
void __iomem *base;
- struct clk *clk;
u32 num_lanes;
u32 mode;
int ret;
@@ -603,19 +602,13 @@ static int j721e_pcie_probe(struct platform_device *pdev)
goto err_get_sync;
}
- clk = devm_clk_get_optional(dev, "pcie_refclk");
- if (IS_ERR(clk)) {
- ret = dev_err_probe(dev, PTR_ERR(clk), "failed to get pcie_refclk\n");
+ pcie->refclk = devm_clk_get_optional_enabled(dev, "pcie_refclk");
+ if (IS_ERR(pcie->refclk)) {
+ ret = dev_err_probe(dev, PTR_ERR(pcie->refclk),
+ "failed to enable pcie_refclk\n");
goto err_pcie_setup;
}
- ret = clk_prepare_enable(clk);
- if (ret) {
- dev_err_probe(dev, ret, "failed to enable pcie_refclk\n");
- goto err_pcie_setup;
- }
- pcie->refclk = clk;
-
/*
* Section 2.2 of the PCI Express Card Electromechanical
* Specification (Revision 5.1) mandates that the deassertion
@@ -629,10 +622,8 @@ static int j721e_pcie_probe(struct platform_device *pdev)
}
ret = cdns_pcie_host_setup(rc);
- if (ret < 0) {
- clk_disable_unprepare(pcie->refclk);
+ if (ret < 0)
goto err_pcie_setup;
- }
break;
case PCI_MODE_EP:
@@ -679,7 +670,6 @@ static void j721e_pcie_remove(struct platform_device *pdev)
gpiod_set_value_cansleep(pcie->reset_gpio, 0);
- clk_disable_unprepare(pcie->refclk);
cdns_pcie_disable_phy(cdns_pcie);
j721e_pcie_disable_link_irq(pcie);
pm_runtime_put(dev);
--
2.50.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* [PATCH v3 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable
2025-10-28 15:42 [PATCH v3 0/2] PCI: j721e: A couple of cleanups Anand Moon
2025-10-28 15:42 ` [PATCH v3 1/2] PCI: j721e: Use devm_clk_get_optional_enabled() to get the clock Anand Moon
@ 2025-10-28 15:42 ` Anand Moon
2025-10-28 19:58 ` [PATCH v? " Markus Elfring
2025-10-28 17:00 ` [PATCH v3 0/2] PCI: j721e: A couple of cleanups Anand Moon
` (2 subsequent siblings)
4 siblings, 1 reply; 11+ messages in thread
From: Anand Moon @ 2025-10-28 15:42 UTC (permalink / raw)
To: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
Bjorn Helgaas, open list:PCI DRIVER FOR TI DRA7XX/J721E,
open list:PCI DRIVER FOR TI DRA7XX/J721E,
moderated list:PCI DRIVER FOR TI DRA7XX/J721E, open list
Cc: Anand Moon, Markus Elfring, Dan Carpenter
Assign the result of devm_gpiod_get_optional() directly to pcie->reset_gpio.
Thus removes a superfluous local variable, which simplifies control flow
and improves code clarity without affecting functional behavior.
Cc: Siddharth Vadapalli <s-vadapalli@ti.com>
Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
---
v4: Improve the commit message
---
drivers/pci/controller/cadence/pci-j721e.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/pci/controller/cadence/pci-j721e.c b/drivers/pci/controller/cadence/pci-j721e.c
index a88b2e52fd78..ecd1b0312400 100644
--- a/drivers/pci/controller/cadence/pci-j721e.c
+++ b/drivers/pci/controller/cadence/pci-j721e.c
@@ -477,7 +477,6 @@ static int j721e_pcie_probe(struct platform_device *pdev)
struct j721e_pcie *pcie;
struct cdns_pcie_rc *rc = NULL;
struct cdns_pcie_ep *ep = NULL;
- struct gpio_desc *gpiod;
void __iomem *base;
u32 num_lanes;
u32 mode;
@@ -589,12 +588,12 @@ static int j721e_pcie_probe(struct platform_device *pdev)
switch (mode) {
case PCI_MODE_RC:
- gpiod = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
- if (IS_ERR(gpiod)) {
- ret = dev_err_probe(dev, PTR_ERR(gpiod), "Failed to get reset GPIO\n");
+ pcie->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
+ if (IS_ERR(pcie->reset_gpio)) {
+ ret = dev_err_probe(dev, PTR_ERR(pcie->reset_gpio),
+ "Failed to get reset GPIO\n");
goto err_get_sync;
}
- pcie->reset_gpio = gpiod;
ret = cdns_pcie_init_phy(dev, cdns_pcie);
if (ret) {
@@ -616,9 +615,9 @@ static int j721e_pcie_probe(struct platform_device *pdev)
* This shall ensure that the power and the reference clock
* are stable.
*/
- if (gpiod) {
+ if (pcie->reset_gpio) {
msleep(PCIE_T_PVPERL_MS);
- gpiod_set_value_cansleep(gpiod, 1);
+ gpiod_set_value_cansleep(pcie->reset_gpio, 1);
}
ret = cdns_pcie_host_setup(rc);
--
2.50.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v? 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable
2025-10-28 15:42 ` [PATCH v3 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable Anand Moon
@ 2025-10-28 19:58 ` Markus Elfring
0 siblings, 0 replies; 11+ messages in thread
From: Markus Elfring @ 2025-10-28 19:58 UTC (permalink / raw)
To: Anand Moon, linux-omap, linux-pci, linux-arm-kernel,
Bjorn Helgaas, Krzysztof Wilczyński, Lorenzo Pieralisi,
Manivannan Sadhasivam, Rob Herring, Siddharth Vadapalli,
Vignesh Raghavendra
Cc: LKML, Dan Carpenter
…> Thus removes a superfluous local variable, which simplifies control flow
remove? Simplify?
> and improves code clarity without affecting functional behavior.
improve?
Regards,
Markus
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] PCI: j721e: A couple of cleanups
2025-10-28 15:42 [PATCH v3 0/2] PCI: j721e: A couple of cleanups Anand Moon
2025-10-28 15:42 ` [PATCH v3 1/2] PCI: j721e: Use devm_clk_get_optional_enabled() to get the clock Anand Moon
2025-10-28 15:42 ` [PATCH v3 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable Anand Moon
@ 2025-10-28 17:00 ` Anand Moon
2025-10-28 19:51 ` [PATCH v? " Markus Elfring
2025-10-31 8:53 ` [PATCH v3 " Manivannan Sadhasivam
4 siblings, 0 replies; 11+ messages in thread
From: Anand Moon @ 2025-10-28 17:00 UTC (permalink / raw)
To: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
Bjorn Helgaas, open list:PCI DRIVER FOR TI DRA7XX/J721E,
open list:PCI DRIVER FOR TI DRA7XX/J721E,
moderated list:PCI DRIVER FOR TI DRA7XX/J721E, open list
Cc: Markus Elfring, Dan Carpenter
Hi All,
On Tue, 28 Oct 2025 at 21:12, Anand Moon <linux.amoon@gmail.com> wrote:
>
> Refactor the J721e probe function to use devres helpers for resource
> management. This replaces manual clock handling with
> devm_clk_get_optional_enabled() and assigns the reset GPIO directly
> to the struct members, eliminating unnecessary local variables.
>
> These patches have been compile-tested only, as I do not have access
> to the hardware for runtime verification.
>
These changes are v4 revision. This got messed up in the format output folder
Sorry for the inconvenience.
Thanks
-Anand
> v3 : https://lore.kernel.org/all/20251027090310.38999-1-linux.amoon@gmail.com/
> v2 : https://lore.kernel.org/all/20251025074336.26743-1-linux.amoon@gmail.com/
> v1 : https://lore.kernel.org/all/20251014113234.44418-1-linux.amoon@gmail.com/
> RFC : https://lore.kernel.org/all/20251013101727.129260-1-linux.amoon@gmail.com/
>
> Changes
> v4 : Improve the commit message.
>
> v2 Drop the dev_err_probe return patch.
> Fix small issue address issue by Dan and Markus.
> v1:
> Add new patch for dev_err_probe return.
> dropped unsesary clk_disable_unprepare as its handle by
> devm_clk_get_optional_enabled.
>
> Thanks
> -Anand
>
> Anand Moon (2):
> PCI: j721e: Use devm_clk_get_optional_enabled() to get the clock
> PCI: j721e: Use inline reset GPIO assignment and drop local variable
>
> drivers/pci/controller/cadence/pci-j721e.c | 33 ++++++++--------------
> 1 file changed, 11 insertions(+), 22 deletions(-)
>
>
> base-commit: fd57572253bc356330dbe5b233c2e1d8426c66fd
> --
> 2.50.1
>
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v? 0/2] PCI: j721e: A couple of cleanups
2025-10-28 15:42 [PATCH v3 0/2] PCI: j721e: A couple of cleanups Anand Moon
` (2 preceding siblings ...)
2025-10-28 17:00 ` [PATCH v3 0/2] PCI: j721e: A couple of cleanups Anand Moon
@ 2025-10-28 19:51 ` Markus Elfring
2025-10-30 5:13 ` Anand Moon
2025-10-31 8:53 ` [PATCH v3 " Manivannan Sadhasivam
4 siblings, 1 reply; 11+ messages in thread
From: Markus Elfring @ 2025-10-28 19:51 UTC (permalink / raw)
To: Anand Moon, linux-omap, linux-pci, linux-arm-kernel,
Bjorn Helgaas, Krzysztof Wilczyński, Lorenzo Pieralisi,
Manivannan Sadhasivam, Rob Herring, Siddharth Vadapalli,
Vignesh Raghavendra
Cc: LKML, Dan Carpenter
…> Changes
> v4 : Improve the commit message.
Would an other version number be more appropriate for the subject prefixes
of this patch series?
…> v1:
…> dropped unsesary clk_disable_unprepare as its handle by
…
unnecessary?
Regards,
Markus
^ permalink raw reply [flat|nested] 11+ messages in thread* Re: [PATCH v? 0/2] PCI: j721e: A couple of cleanups
2025-10-28 19:51 ` [PATCH v? " Markus Elfring
@ 2025-10-30 5:13 ` Anand Moon
0 siblings, 0 replies; 11+ messages in thread
From: Anand Moon @ 2025-10-30 5:13 UTC (permalink / raw)
To: Markus Elfring
Cc: linux-omap, linux-pci, linux-arm-kernel, Bjorn Helgaas,
Krzysztof Wilczyński, Lorenzo Pieralisi,
Manivannan Sadhasivam, Rob Herring, Siddharth Vadapalli,
Vignesh Raghavendra, LKML, Dan Carpenter
Hi Markus,
On Wed, 29 Oct 2025 at 01:21, Markus Elfring <Markus.Elfring@web.de> wrote:
>
> …> Changes
> > v4 : Improve the commit message.
>
> Would an other version number be more appropriate for the subject prefixes
> of this patch series?
>
Yes, if there are some more review comments on these patches,
Or they get lost in emails.
>
> …> v1:
> …> dropped unsesary clk_disable_unprepare as its handle by
> …
>
> unnecessary?
>
> Regards,
> Markus
>
Thanks
-Anand
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 0/2] PCI: j721e: A couple of cleanups
2025-10-28 15:42 [PATCH v3 0/2] PCI: j721e: A couple of cleanups Anand Moon
` (3 preceding siblings ...)
2025-10-28 19:51 ` [PATCH v? " Markus Elfring
@ 2025-10-31 8:53 ` Manivannan Sadhasivam
4 siblings, 0 replies; 11+ messages in thread
From: Manivannan Sadhasivam @ 2025-10-31 8:53 UTC (permalink / raw)
To: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas, linux-omap,
linux-pci, linux-arm-kernel, linux-kernel, Anand Moon
Cc: Markus Elfring, Dan Carpenter
On Tue, 28 Oct 2025 21:12:22 +0530, Anand Moon wrote:
> Refactor the J721e probe function to use devres helpers for resource
> management. This replaces manual clock handling with
> devm_clk_get_optional_enabled() and assigns the reset GPIO directly
> to the struct members, eliminating unnecessary local variables.
>
> These patches have been compile-tested only, as I do not have access
> to the hardware for runtime verification.
>
> [...]
Applied, thanks!
[1/2] PCI: j721e: Use devm_clk_get_optional_enabled() to get the clock
commit: 59ba8c0981e73cb2bb70074be4ef46b4188424ea
[2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable
commit: 8895c0fc0671f38746ee1c02b728b126f7dbbf97
Best regards,
--
Manivannan Sadhasivam <mani@kernel.org>
^ permalink raw reply [flat|nested] 11+ messages in thread
* [PATCH v3 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable
2025-10-27 9:03 Anand Moon
@ 2025-10-27 9:03 ` Anand Moon
2025-10-27 13:43 ` Markus Elfring
0 siblings, 1 reply; 11+ messages in thread
From: Anand Moon @ 2025-10-27 9:03 UTC (permalink / raw)
To: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Manivannan Sadhasivam, Rob Herring,
Bjorn Helgaas, open list:PCI DRIVER FOR TI DRA7XX/J721E,
open list:PCI DRIVER FOR TI DRA7XX/J721E,
moderated list:PCI DRIVER FOR TI DRA7XX/J721E, open list
Cc: Anand Moon, Markus Elfring, Dan Carpenter
The result of devm_gpiod_get_optional() is now assigned directly
assigned to pcie->reset_gpio. This removes a superfluous local gpiod
variable, improving code readability and compactness. The functionality
remains unchanged, but the code is now more streamlined
Cc: Siddharth Vadapalli <s-vadapalli@ti.com>
Reviewed-by: Siddharth Vadapalli <s-vadapalli@ti.com>
Signed-off-by: Anand Moon <linux.amoon@gmail.com>
---
drivers/pci/controller/cadence/pci-j721e.c | 13 ++++++-------
1 file changed, 6 insertions(+), 7 deletions(-)
diff --git a/drivers/pci/controller/cadence/pci-j721e.c b/drivers/pci/controller/cadence/pci-j721e.c
index a88b2e52fd78..ecd1b0312400 100644
--- a/drivers/pci/controller/cadence/pci-j721e.c
+++ b/drivers/pci/controller/cadence/pci-j721e.c
@@ -477,7 +477,6 @@ static int j721e_pcie_probe(struct platform_device *pdev)
struct j721e_pcie *pcie;
struct cdns_pcie_rc *rc = NULL;
struct cdns_pcie_ep *ep = NULL;
- struct gpio_desc *gpiod;
void __iomem *base;
u32 num_lanes;
u32 mode;
@@ -589,12 +588,12 @@ static int j721e_pcie_probe(struct platform_device *pdev)
switch (mode) {
case PCI_MODE_RC:
- gpiod = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
- if (IS_ERR(gpiod)) {
- ret = dev_err_probe(dev, PTR_ERR(gpiod), "Failed to get reset GPIO\n");
+ pcie->reset_gpio = devm_gpiod_get_optional(dev, "reset", GPIOD_OUT_LOW);
+ if (IS_ERR(pcie->reset_gpio)) {
+ ret = dev_err_probe(dev, PTR_ERR(pcie->reset_gpio),
+ "Failed to get reset GPIO\n");
goto err_get_sync;
}
- pcie->reset_gpio = gpiod;
ret = cdns_pcie_init_phy(dev, cdns_pcie);
if (ret) {
@@ -616,9 +615,9 @@ static int j721e_pcie_probe(struct platform_device *pdev)
* This shall ensure that the power and the reference clock
* are stable.
*/
- if (gpiod) {
+ if (pcie->reset_gpio) {
msleep(PCIE_T_PVPERL_MS);
- gpiod_set_value_cansleep(gpiod, 1);
+ gpiod_set_value_cansleep(pcie->reset_gpio, 1);
}
ret = cdns_pcie_host_setup(rc);
--
2.50.1
^ permalink raw reply related [flat|nested] 11+ messages in thread* Re: [PATCH v3 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable
2025-10-27 9:03 ` [PATCH v3 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable Anand Moon
@ 2025-10-27 13:43 ` Markus Elfring
2025-10-28 7:06 ` Anand Moon
0 siblings, 1 reply; 11+ messages in thread
From: Markus Elfring @ 2025-10-27 13:43 UTC (permalink / raw)
To: Anand Moon, linux-omap, linux-pci, linux-arm-kernel,
Bjorn Helgaas, Krzysztof Wilczyński, Lorenzo Pieralisi,
Manivannan Sadhasivam, Rob Herring, Siddharth Vadapalli,
Vignesh Raghavendra
Cc: LKML, Dan Carpenter
> The result of devm_gpiod_get_optional() is now assigned directly
> assigned to pcie->reset_gpio. This removes a superfluous local gpiod
> variable, improving code readability and compactness. The functionality
> remains unchanged, but the code is now more streamlined
Would a corresponding imperative wording become helpful for an improved change description?
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.18-rc3#n94
Regards,
Markus
^ permalink raw reply [flat|nested] 11+ messages in thread
* Re: [PATCH v3 2/2] PCI: j721e: Use inline reset GPIO assignment and drop local variable
2025-10-27 13:43 ` Markus Elfring
@ 2025-10-28 7:06 ` Anand Moon
0 siblings, 0 replies; 11+ messages in thread
From: Anand Moon @ 2025-10-28 7:06 UTC (permalink / raw)
To: Markus Elfring
Cc: linux-omap, linux-pci, linux-arm-kernel, Bjorn Helgaas,
Krzysztof Wilczyński, Lorenzo Pieralisi,
Manivannan Sadhasivam, Rob Herring, Siddharth Vadapalli,
Vignesh Raghavendra, LKML, Dan Carpenter
Hi Markus,
Thanks for your review comments.
On Mon, 27 Oct 2025 at 19:13, Markus Elfring <Markus.Elfring@web.de> wrote:
>
> > The result of devm_gpiod_get_optional() is now assigned directly
> > assigned to pcie->reset_gpio. This removes a superfluous local gpiod
> > variable, improving code readability and compactness. The functionality
> > remains unchanged, but the code is now more streamlined
>
> Would a corresponding imperative wording become helpful for an improved change description?
> https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git/tree/Documentation/process/submitting-patches.rst?h=v6.18-rc3#n94
>
Assign the result of devm_gpiod_get_optional() directly to pcie->reset_gpio.
This removes a superfluous local variable, improving code clarity without
altering the driver's behavior.
Is this ok with you?
> Regards,
> Markus
Thanks
-Anand
^ permalink raw reply [flat|nested] 11+ messages in thread