* [PATCH v2 0/4] PCI: controller: Move to agnostic GPIO API
@ 2024-04-23 17:19 Andy Shevchenko
2024-04-23 17:19 ` [PATCH v2 1/4] PCI: aardvark: Remove unused of_gpio.h Andy Shevchenko
` (4 more replies)
0 siblings, 5 replies; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-23 17:19 UTC (permalink / raw)
To: Manivannan Sadhasivam, Frank Li, Krzysztof Wilczyński,
Andy Shevchenko, Uwe Kleine-König, linux-omap, linux-pci,
linux-arm-kernel, linux-kernel, imx, linux-amlogic,
linux-arm-msm, linux-tegra
Cc: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
Convert the PCI controller drivers to use GPIO agnostic API.
While at it, remove of_gpio.h leftover from some of the drivers.
In v2:
- combined previously sent patches into a series (Manivannan)
- added tags (Rob, Manivannan)
- converted iMX.6 driver (Manivannan)
- dropped leftover in aadvark drivers (Manivannan)
Andy Shevchenko (4):
PCI: aardvark: Remove unused of_gpio.h
PCI: dwc: Remove unused of_gpio.h
PCI: imx6: Convert to agnostic GPIO API
PCI: kirin: Convert to agnostic GPIO API
drivers/pci/controller/dwc/pci-dra7xx.c | 1 -
drivers/pci/controller/dwc/pci-imx6.c | 37 +++-----
drivers/pci/controller/dwc/pci-meson.c | 1 -
drivers/pci/controller/dwc/pcie-kirin.c | 105 +++++++--------------
drivers/pci/controller/dwc/pcie-qcom.c | 1 -
drivers/pci/controller/dwc/pcie-tegra194.c | 2 -
drivers/pci/controller/pci-aardvark.c | 1 -
7 files changed, 49 insertions(+), 99 deletions(-)
--
2.43.0.rc1.1336.g36b5255a03ac
^ permalink raw reply [flat|nested] 20+ messages in thread
* [PATCH v2 1/4] PCI: aardvark: Remove unused of_gpio.h
2024-04-23 17:19 [PATCH v2 0/4] PCI: controller: Move to agnostic GPIO API Andy Shevchenko
@ 2024-04-23 17:19 ` Andy Shevchenko
2024-04-27 6:38 ` Manivannan Sadhasivam
2024-04-23 17:19 ` [PATCH v2 2/4] PCI: dwc: " Andy Shevchenko
` (3 subsequent siblings)
4 siblings, 1 reply; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-23 17:19 UTC (permalink / raw)
To: Manivannan Sadhasivam, Frank Li, Krzysztof Wilczyński,
Andy Shevchenko, Uwe Kleine-König, linux-omap, linux-pci,
linux-arm-kernel, linux-kernel, imx, linux-amlogic,
linux-arm-msm, linux-tegra
Cc: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
of_gpio.h is deprecated and subject to remove.
The driver doesn't use it, simply remove the unused header.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pci/controller/pci-aardvark.c | 1 -
1 file changed, 1 deletion(-)
diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
index 71ecd7ddcc8a..8b3e1a079cf3 100644
--- a/drivers/pci/controller/pci-aardvark.c
+++ b/drivers/pci/controller/pci-aardvark.c
@@ -23,7 +23,6 @@
#include <linux/platform_device.h>
#include <linux/msi.h>
#include <linux/of_address.h>
-#include <linux/of_gpio.h>
#include <linux/of_pci.h>
#include "../pci.h"
--
2.43.0.rc1.1336.g36b5255a03ac
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
2024-04-23 17:19 [PATCH v2 0/4] PCI: controller: Move to agnostic GPIO API Andy Shevchenko
2024-04-23 17:19 ` [PATCH v2 1/4] PCI: aardvark: Remove unused of_gpio.h Andy Shevchenko
@ 2024-04-23 17:19 ` Andy Shevchenko
2024-04-23 22:51 ` kernel test robot
2024-04-23 23:42 ` kernel test robot
2024-04-23 17:19 ` [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API Andy Shevchenko
` (2 subsequent siblings)
4 siblings, 2 replies; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-23 17:19 UTC (permalink / raw)
To: Manivannan Sadhasivam, Frank Li, Krzysztof Wilczyński,
Andy Shevchenko, Uwe Kleine-König, linux-omap, linux-pci,
linux-arm-kernel, linux-kernel, imx, linux-amlogic,
linux-arm-msm, linux-tegra
Cc: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
of_gpio.h is deprecated and subject to remove.
The driver doesn't use it, simply remove the unused header.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
---
drivers/pci/controller/dwc/pci-dra7xx.c | 1 -
drivers/pci/controller/dwc/pci-meson.c | 1 -
drivers/pci/controller/dwc/pcie-qcom.c | 1 -
drivers/pci/controller/dwc/pcie-tegra194.c | 2 --
4 files changed, 5 deletions(-)
diff --git a/drivers/pci/controller/dwc/pci-dra7xx.c b/drivers/pci/controller/dwc/pci-dra7xx.c
index d2d17d37d3e0..2015f51664bc 100644
--- a/drivers/pci/controller/dwc/pci-dra7xx.c
+++ b/drivers/pci/controller/dwc/pci-dra7xx.c
@@ -17,7 +17,6 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
-#include <linux/of_gpio.h>
#include <linux/of_pci.h>
#include <linux/pci.h>
#include <linux/phy/phy.h>
diff --git a/drivers/pci/controller/dwc/pci-meson.c b/drivers/pci/controller/dwc/pci-meson.c
index 6477c83262c2..db9482a113e9 100644
--- a/drivers/pci/controller/dwc/pci-meson.c
+++ b/drivers/pci/controller/dwc/pci-meson.c
@@ -9,7 +9,6 @@
#include <linux/clk.h>
#include <linux/delay.h>
#include <linux/gpio/consumer.h>
-#include <linux/of_gpio.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
#include <linux/reset.h>
diff --git a/drivers/pci/controller/dwc/pcie-qcom.c b/drivers/pci/controller/dwc/pcie-qcom.c
index 14772edcf0d3..436076612c8f 100644
--- a/drivers/pci/controller/dwc/pcie-qcom.c
+++ b/drivers/pci/controller/dwc/pcie-qcom.c
@@ -20,7 +20,6 @@
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/of.h>
-#include <linux/of_gpio.h>
#include <linux/pci.h>
#include <linux/pm_runtime.h>
#include <linux/platform_device.h>
diff --git a/drivers/pci/controller/dwc/pcie-tegra194.c b/drivers/pci/controller/dwc/pcie-tegra194.c
index 93f5433c5c55..e8cd8c1bd4f4 100644
--- a/drivers/pci/controller/dwc/pcie-tegra194.c
+++ b/drivers/pci/controller/dwc/pcie-tegra194.c
@@ -13,7 +13,6 @@
#include <linux/clk.h>
#include <linux/debugfs.h>
#include <linux/delay.h>
-#include <linux/gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/interconnect.h>
#include <linux/interrupt.h>
@@ -21,7 +20,6 @@
#include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of.h>
-#include <linux/of_gpio.h>
#include <linux/of_pci.h>
#include <linux/pci.h>
#include <linux/phy/phy.h>
--
2.43.0.rc1.1336.g36b5255a03ac
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API
2024-04-23 17:19 [PATCH v2 0/4] PCI: controller: Move to agnostic GPIO API Andy Shevchenko
2024-04-23 17:19 ` [PATCH v2 1/4] PCI: aardvark: Remove unused of_gpio.h Andy Shevchenko
2024-04-23 17:19 ` [PATCH v2 2/4] PCI: dwc: " Andy Shevchenko
@ 2024-04-23 17:19 ` Andy Shevchenko
2024-04-23 19:56 ` Frank Li
2024-04-27 6:43 ` Manivannan Sadhasivam
2024-04-23 17:19 ` [PATCH v2 4/4] PCI: kirin: " Andy Shevchenko
2024-04-26 14:26 ` [PATCH v2 0/4] PCI: controller: Move " Andy Shevchenko
4 siblings, 2 replies; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-23 17:19 UTC (permalink / raw)
To: Manivannan Sadhasivam, Frank Li, Krzysztof Wilczyński,
Andy Shevchenko, Uwe Kleine-König, linux-omap, linux-pci,
linux-arm-kernel, linux-kernel, imx, linux-amlogic,
linux-arm-msm, linux-tegra
Cc: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
The of_gpio.h is going to be removed. In preparation of that convert
the driver to the agnostic API.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
---
drivers/pci/controller/dwc/pci-imx6.c | 37 ++++++++++-----------------
1 file changed, 14 insertions(+), 23 deletions(-)
diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
index 917c69edee1d..d620f1e1a43c 100644
--- a/drivers/pci/controller/dwc/pci-imx6.c
+++ b/drivers/pci/controller/dwc/pci-imx6.c
@@ -11,14 +11,13 @@
#include <linux/bitfield.h>
#include <linux/clk.h>
#include <linux/delay.h>
-#include <linux/gpio.h>
+#include <linux/gpio/consumer.h>
#include <linux/kernel.h>
#include <linux/mfd/syscon.h>
#include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
#include <linux/mfd/syscon/imx7-iomuxc-gpr.h>
#include <linux/module.h>
#include <linux/of.h>
-#include <linux/of_gpio.h>
#include <linux/of_address.h>
#include <linux/pci.h>
#include <linux/platform_device.h>
@@ -107,7 +106,7 @@ struct imx6_pcie_drvdata {
struct imx6_pcie {
struct dw_pcie *pci;
- int reset_gpio;
+ struct gpio_desc *reset_gpiod;
bool gpio_active_high;
bool link_is_up;
struct clk_bulk_data clks[IMX6_PCIE_MAX_CLKS];
@@ -721,9 +720,8 @@ static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie)
}
/* Some boards don't have PCIe reset GPIO. */
- if (gpio_is_valid(imx6_pcie->reset_gpio))
- gpio_set_value_cansleep(imx6_pcie->reset_gpio,
- imx6_pcie->gpio_active_high);
+ gpiod_set_raw_value_cansleep(imx6_pcie->reset_gpiod,
+ imx6_pcie->gpio_active_high);
}
static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
@@ -771,10 +769,10 @@ static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
}
/* Some boards don't have PCIe reset GPIO. */
- if (gpio_is_valid(imx6_pcie->reset_gpio)) {
+ if (imx6_pcie->reset_gpiod) {
msleep(100);
- gpio_set_value_cansleep(imx6_pcie->reset_gpio,
- !imx6_pcie->gpio_active_high);
+ gpiod_set_raw_value_cansleep(imx6_pcie->reset_gpiod,
+ !imx6_pcie->gpio_active_high);
/* Wait for 100ms after PERST# deassertion (PCIe r5.0, 6.6.1) */
msleep(100);
}
@@ -1285,22 +1283,15 @@ static int imx6_pcie_probe(struct platform_device *pdev)
return PTR_ERR(pci->dbi_base);
/* Fetch GPIOs */
- imx6_pcie->reset_gpio = of_get_named_gpio(node, "reset-gpio", 0);
imx6_pcie->gpio_active_high = of_property_read_bool(node,
"reset-gpio-active-high");
- if (gpio_is_valid(imx6_pcie->reset_gpio)) {
- ret = devm_gpio_request_one(dev, imx6_pcie->reset_gpio,
- imx6_pcie->gpio_active_high ?
- GPIOF_OUT_INIT_HIGH :
- GPIOF_OUT_INIT_LOW,
- "PCIe reset");
- if (ret) {
- dev_err(dev, "unable to get reset gpio\n");
- return ret;
- }
- } else if (imx6_pcie->reset_gpio == -EPROBE_DEFER) {
- return imx6_pcie->reset_gpio;
- }
+ imx6_pcie->reset_gpiod =
+ devm_gpiod_get_optional(dev, "reset",
+ imx6_pcie->gpio_active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
+ if (IS_ERR(imx6_pcie->reset_gpiod))
+ return dev_err_probe(dev, PTR_ERR(imx6_pcie->reset_gpiod),
+ "unable to get reset gpio\n");
+ gpiod_set_consumer_name(imx6_pcie->reset_gpiod, "PCIe reset");
if (imx6_pcie->drvdata->clks_cnt >= IMX6_PCIE_MAX_CLKS)
return dev_err_probe(dev, -ENOMEM, "clks_cnt is too big\n");
--
2.43.0.rc1.1336.g36b5255a03ac
^ permalink raw reply related [flat|nested] 20+ messages in thread
* [PATCH v2 4/4] PCI: kirin: Convert to agnostic GPIO API
2024-04-23 17:19 [PATCH v2 0/4] PCI: controller: Move to agnostic GPIO API Andy Shevchenko
` (2 preceding siblings ...)
2024-04-23 17:19 ` [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API Andy Shevchenko
@ 2024-04-23 17:19 ` Andy Shevchenko
2024-04-27 7:23 ` Manivannan Sadhasivam
2024-04-26 14:26 ` [PATCH v2 0/4] PCI: controller: Move " Andy Shevchenko
4 siblings, 1 reply; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-23 17:19 UTC (permalink / raw)
To: Manivannan Sadhasivam, Frank Li, Krzysztof Wilczyński,
Andy Shevchenko, Uwe Kleine-König, linux-omap, linux-pci,
linux-arm-kernel, linux-kernel, imx, linux-amlogic,
linux-arm-msm, linux-tegra
Cc: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
The of_gpio.h is going to be removed. In preparation of that convert
the driver to the agnostic API.
Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Rob Herring <robh@kernel.org>
---
drivers/pci/controller/dwc/pcie-kirin.c | 105 ++++++++----------------
1 file changed, 35 insertions(+), 70 deletions(-)
diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c
index d5523f302102..1753ab63a541 100644
--- a/drivers/pci/controller/dwc/pcie-kirin.c
+++ b/drivers/pci/controller/dwc/pcie-kirin.c
@@ -12,12 +12,10 @@
#include <linux/compiler.h>
#include <linux/delay.h>
#include <linux/err.h>
-#include <linux/gpio.h>
#include <linux/gpio/consumer.h>
#include <linux/interrupt.h>
#include <linux/mfd/syscon.h>
#include <linux/of.h>
-#include <linux/of_gpio.h>
#include <linux/of_pci.h>
#include <linux/phy/phy.h>
#include <linux/pci.h>
@@ -78,16 +76,16 @@ struct kirin_pcie {
void *phy_priv; /* only for PCIE_KIRIN_INTERNAL_PHY */
/* DWC PERST# */
- int gpio_id_dwc_perst;
+ struct gpio_desc *id_dwc_perst_gpio;
/* Per-slot PERST# */
int num_slots;
- int gpio_id_reset[MAX_PCI_SLOTS];
+ struct gpio_desc *id_reset_gpio[MAX_PCI_SLOTS];
const char *reset_names[MAX_PCI_SLOTS];
/* Per-slot clkreq */
int n_gpio_clkreq;
- int gpio_id_clkreq[MAX_PCI_SLOTS];
+ struct gpio_desc *id_clkreq_gpio[MAX_PCI_SLOTS];
const char *clkreq_names[MAX_PCI_SLOTS];
};
@@ -381,15 +379,20 @@ static int kirin_pcie_get_gpio_enable(struct kirin_pcie *pcie,
pcie->n_gpio_clkreq = ret;
for (i = 0; i < pcie->n_gpio_clkreq; i++) {
- pcie->gpio_id_clkreq[i] = of_get_named_gpio(dev->of_node,
- "hisilicon,clken-gpios", i);
- if (pcie->gpio_id_clkreq[i] < 0)
- return pcie->gpio_id_clkreq[i];
+ pcie->id_clkreq_gpio[i] = devm_gpiod_get_index(dev,
+ "hisilicon,clken", i,
+ GPIOD_ASIS);
+ 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");
pcie->clkreq_names[i] = devm_kasprintf(dev, GFP_KERNEL,
"pcie_clkreq_%d", i);
if (!pcie->clkreq_names[i])
return -ENOMEM;
+
+ gpiod_set_consumer_name(pcie->id_clkreq_gpio[i],
+ pcie->clkreq_names[i]);
}
return 0;
@@ -407,10 +410,16 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie,
for_each_available_child_of_node(parent, child) {
i = pcie->num_slots;
- pcie->gpio_id_reset[i] = of_get_named_gpio(child,
- "reset-gpios", 0);
- if (pcie->gpio_id_reset[i] < 0)
- continue;
+ pcie->id_reset_gpio[i] = devm_fwnode_gpiod_get_index(dev,
+ of_fwnode_handle(child),
+ "reset", 0, GPIOD_ASIS,
+ NULL);
+ if (IS_ERR(pcie->id_reset_gpio[i])) {
+ 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");
+ }
pcie->num_slots++;
if (pcie->num_slots > MAX_PCI_SLOTS) {
@@ -434,6 +443,9 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie,
ret = -ENOMEM;
goto put_node;
}
+
+ gpiod_set_consumer_name(pcie->id_reset_gpio[i],
+ pcie->reset_names[i]);
}
}
@@ -463,14 +475,11 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
return PTR_ERR(kirin_pcie->apb);
/* pcie internal PERST# gpio */
- kirin_pcie->gpio_id_dwc_perst = of_get_named_gpio(dev->of_node,
- "reset-gpios", 0);
- if (kirin_pcie->gpio_id_dwc_perst == -EPROBE_DEFER) {
- return -EPROBE_DEFER;
- } else if (!gpio_is_valid(kirin_pcie->gpio_id_dwc_perst)) {
- dev_err(dev, "unable to get a valid gpio pin\n");
- return -ENODEV;
- }
+ kirin_pcie->id_dwc_perst_gpio = devm_gpiod_get(dev, "reset", GPIOD_ASIS);
+ 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");
+ gpiod_set_consumer_name(kirin_pcie->id_dwc_perst_gpio, "pcie_perst_bridge");
ret = kirin_pcie_get_gpio_enable(kirin_pcie, pdev);
if (ret)
@@ -553,7 +562,7 @@ static int kirin_pcie_add_bus(struct pci_bus *bus)
/* Send PERST# to each slot */
for (i = 0; i < kirin_pcie->num_slots; i++) {
- ret = gpio_direction_output(kirin_pcie->gpio_id_reset[i], 1);
+ ret = gpiod_direction_output_raw(kirin_pcie->id_reset_gpio[i], 1);
if (ret) {
dev_err(pci->dev, "PERST# %s error: %d\n",
kirin_pcie->reset_names[i], ret);
@@ -623,44 +632,6 @@ static int kirin_pcie_host_init(struct dw_pcie_rp *pp)
return 0;
}
-static int kirin_pcie_gpio_request(struct kirin_pcie *kirin_pcie,
- struct device *dev)
-{
- int ret, i;
-
- for (i = 0; i < kirin_pcie->num_slots; i++) {
- if (!gpio_is_valid(kirin_pcie->gpio_id_reset[i])) {
- dev_err(dev, "unable to get a valid %s gpio\n",
- kirin_pcie->reset_names[i]);
- return -ENODEV;
- }
-
- ret = devm_gpio_request(dev, kirin_pcie->gpio_id_reset[i],
- kirin_pcie->reset_names[i]);
- if (ret)
- return ret;
- }
-
- for (i = 0; i < kirin_pcie->n_gpio_clkreq; i++) {
- if (!gpio_is_valid(kirin_pcie->gpio_id_clkreq[i])) {
- dev_err(dev, "unable to get a valid %s gpio\n",
- kirin_pcie->clkreq_names[i]);
- return -ENODEV;
- }
-
- ret = devm_gpio_request(dev, kirin_pcie->gpio_id_clkreq[i],
- kirin_pcie->clkreq_names[i]);
- if (ret)
- return ret;
-
- ret = gpio_direction_output(kirin_pcie->gpio_id_clkreq[i], 0);
- if (ret)
- return ret;
- }
-
- return 0;
-}
-
static const struct dw_pcie_ops kirin_dw_pcie_ops = {
.read_dbi = kirin_pcie_read_dbi,
.write_dbi = kirin_pcie_write_dbi,
@@ -680,7 +651,7 @@ static int kirin_pcie_power_off(struct kirin_pcie *kirin_pcie)
return hi3660_pcie_phy_power_off(kirin_pcie);
for (i = 0; i < kirin_pcie->n_gpio_clkreq; i++)
- gpio_direction_output(kirin_pcie->gpio_id_clkreq[i], 1);
+ gpiod_direction_output_raw(kirin_pcie->id_clkreq_gpio[i], 1);
phy_power_off(kirin_pcie->phy);
phy_exit(kirin_pcie->phy);
@@ -707,10 +678,6 @@ static int kirin_pcie_power_on(struct platform_device *pdev,
if (IS_ERR(kirin_pcie->phy))
return PTR_ERR(kirin_pcie->phy);
- ret = kirin_pcie_gpio_request(kirin_pcie, dev);
- if (ret)
- return ret;
-
ret = phy_init(kirin_pcie->phy);
if (ret)
goto err;
@@ -723,11 +690,9 @@ static int kirin_pcie_power_on(struct platform_device *pdev,
/* perst assert Endpoint */
usleep_range(REF_2_PERST_MIN, REF_2_PERST_MAX);
- if (!gpio_request(kirin_pcie->gpio_id_dwc_perst, "pcie_perst_bridge")) {
- ret = gpio_direction_output(kirin_pcie->gpio_id_dwc_perst, 1);
- if (ret)
- goto err;
- }
+ ret = gpiod_direction_output_raw(kirin_pcie->id_dwc_perst_gpio, 1);
+ if (ret)
+ goto err;
usleep_range(PERST_2_ACCESS_MIN, PERST_2_ACCESS_MAX);
--
2.43.0.rc1.1336.g36b5255a03ac
^ permalink raw reply related [flat|nested] 20+ messages in thread
* Re: [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API
2024-04-23 17:19 ` [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API Andy Shevchenko
@ 2024-04-23 19:56 ` Frank Li
2024-04-23 20:03 ` Andy Shevchenko
2024-04-27 6:43 ` Manivannan Sadhasivam
1 sibling, 1 reply; 20+ messages in thread
From: Frank Li @ 2024-04-23 19:56 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Manivannan Sadhasivam, Krzysztof Wilczyński,
Uwe Kleine-König, linux-omap, linux-pci, linux-arm-kernel,
linux-kernel, imx, linux-amlogic, linux-arm-msm, linux-tegra,
Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 08:19:06PM +0300, Andy Shevchenko wrote:
> The of_gpio.h is going to be removed. In preparation of that convert
> the driver to the agnostic API.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> ---
> drivers/pci/controller/dwc/pci-imx6.c | 37 ++++++++++-----------------
> 1 file changed, 14 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
> index 917c69edee1d..d620f1e1a43c 100644
> --- a/drivers/pci/controller/dwc/pci-imx6.c
> +++ b/drivers/pci/controller/dwc/pci-imx6.c
> @@ -11,14 +11,13 @@
> #include <linux/bitfield.h>
> #include <linux/clk.h>
> #include <linux/delay.h>
> -#include <linux/gpio.h>
> +#include <linux/gpio/consumer.h>
> #include <linux/kernel.h>
> #include <linux/mfd/syscon.h>
> #include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
> #include <linux/mfd/syscon/imx7-iomuxc-gpr.h>
> #include <linux/module.h>
> #include <linux/of.h>
> -#include <linux/of_gpio.h>
> #include <linux/of_address.h>
> #include <linux/pci.h>
> #include <linux/platform_device.h>
> @@ -107,7 +106,7 @@ struct imx6_pcie_drvdata {
>
> struct imx6_pcie {
> struct dw_pcie *pci;
> - int reset_gpio;
> + struct gpio_desc *reset_gpiod;
> bool gpio_active_high;
> bool link_is_up;
> struct clk_bulk_data clks[IMX6_PCIE_MAX_CLKS];
> @@ -721,9 +720,8 @@ static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie)
> }
>
> /* Some boards don't have PCIe reset GPIO. */
> - if (gpio_is_valid(imx6_pcie->reset_gpio))
> - gpio_set_value_cansleep(imx6_pcie->reset_gpio,
> - imx6_pcie->gpio_active_high);
> + gpiod_set_raw_value_cansleep(imx6_pcie->reset_gpiod,
> + imx6_pcie->gpio_active_high);
> }
>
> static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
> @@ -771,10 +769,10 @@ static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
> }
>
> /* Some boards don't have PCIe reset GPIO. */
> - if (gpio_is_valid(imx6_pcie->reset_gpio)) {
> + if (imx6_pcie->reset_gpiod) {
> msleep(100);
> - gpio_set_value_cansleep(imx6_pcie->reset_gpio,
> - !imx6_pcie->gpio_active_high);
> + gpiod_set_raw_value_cansleep(imx6_pcie->reset_gpiod,
> + !imx6_pcie->gpio_active_high);
> /* Wait for 100ms after PERST# deassertion (PCIe r5.0, 6.6.1) */
> msleep(100);
> }
> @@ -1285,22 +1283,15 @@ static int imx6_pcie_probe(struct platform_device *pdev)
> return PTR_ERR(pci->dbi_base);
>
> /* Fetch GPIOs */
> - imx6_pcie->reset_gpio = of_get_named_gpio(node, "reset-gpio", 0);
> imx6_pcie->gpio_active_high = of_property_read_bool(node,
> "reset-gpio-active-high");
> - if (gpio_is_valid(imx6_pcie->reset_gpio)) {
> - ret = devm_gpio_request_one(dev, imx6_pcie->reset_gpio,
> - imx6_pcie->gpio_active_high ?
> - GPIOF_OUT_INIT_HIGH :
> - GPIOF_OUT_INIT_LOW,
> - "PCIe reset");
> - if (ret) {
> - dev_err(dev, "unable to get reset gpio\n");
> - return ret;
> - }
> - } else if (imx6_pcie->reset_gpio == -EPROBE_DEFER) {
> - return imx6_pcie->reset_gpio;
> - }
> + imx6_pcie->reset_gpiod =
> + devm_gpiod_get_optional(dev, "reset",
> + imx6_pcie->gpio_active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
> + if (IS_ERR(imx6_pcie->reset_gpiod))
> + return dev_err_probe(dev, PTR_ERR(imx6_pcie->reset_gpiod),
> + "unable to get reset gpio\n");
Small problem here. err message "unable to get reset gpio\n" will print
when -EPROBE_DEFER happen. EPROBE_DEFER is quite common when use i2c
expand gpio chip.
Frank
> + gpiod_set_consumer_name(imx6_pcie->reset_gpiod, "PCIe reset");
>
> if (imx6_pcie->drvdata->clks_cnt >= IMX6_PCIE_MAX_CLKS)
> return dev_err_probe(dev, -ENOMEM, "clks_cnt is too big\n");
> --
> 2.43.0.rc1.1336.g36b5255a03ac
>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API
2024-04-23 19:56 ` Frank Li
@ 2024-04-23 20:03 ` Andy Shevchenko
2024-04-23 20:16 ` Frank Li
0 siblings, 1 reply; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-23 20:03 UTC (permalink / raw)
To: Frank Li
Cc: Manivannan Sadhasivam, Krzysztof Wilczyński,
Uwe Kleine-König, linux-omap, linux-pci, linux-arm-kernel,
linux-kernel, imx, linux-amlogic, linux-arm-msm, linux-tegra,
Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 03:56:56PM -0400, Frank Li wrote:
> On Tue, Apr 23, 2024 at 08:19:06PM +0300, Andy Shevchenko wrote:
...
> > + imx6_pcie->reset_gpiod =
> > + devm_gpiod_get_optional(dev, "reset",
> > + imx6_pcie->gpio_active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
> > + if (IS_ERR(imx6_pcie->reset_gpiod))
> > + return dev_err_probe(dev, PTR_ERR(imx6_pcie->reset_gpiod),
> > + "unable to get reset gpio\n");
>
> Small problem here. err message "unable to get reset gpio\n" will print
> when -EPROBE_DEFER happen. EPROBE_DEFER is quite common when use i2c
> expand gpio chip.
I'm not sure how you come to this conclusion. Can you elaborate, please?
P.S> I do not see a problem as described.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API
2024-04-23 20:03 ` Andy Shevchenko
@ 2024-04-23 20:16 ` Frank Li
2024-04-23 20:22 ` Fabio Estevam
2024-04-23 20:23 ` Frank Li
0 siblings, 2 replies; 20+ messages in thread
From: Frank Li @ 2024-04-23 20:16 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Manivannan Sadhasivam, Krzysztof Wilczyński,
Uwe Kleine-König, linux-omap, linux-pci, linux-arm-kernel,
linux-kernel, imx, linux-amlogic, linux-arm-msm, linux-tegra,
Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 11:03:59PM +0300, Andy Shevchenko wrote:
> On Tue, Apr 23, 2024 at 03:56:56PM -0400, Frank Li wrote:
> > On Tue, Apr 23, 2024 at 08:19:06PM +0300, Andy Shevchenko wrote:
>
> ...
>
> > > + imx6_pcie->reset_gpiod =
> > > + devm_gpiod_get_optional(dev, "reset",
> > > + imx6_pcie->gpio_active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
> > > + if (IS_ERR(imx6_pcie->reset_gpiod))
> > > + return dev_err_probe(dev, PTR_ERR(imx6_pcie->reset_gpiod),
> > > + "unable to get reset gpio\n");
> >
> > Small problem here. err message "unable to get reset gpio\n" will print
> > when -EPROBE_DEFER happen. EPROBE_DEFER is quite common when use i2c
> > expand gpio chip.
>
> I'm not sure how you come to this conclusion. Can you elaborate, please?
> P.S> I do not see a problem as described.
If i2c gpio-expander driver have not load when imx6_pcie probe, I supposed
devm_gpiod_get_optional() will return -EPROBE_DEFER,
if (IS_ERR(imx6_pcie->reset_gpiod)) should be true. then dev_err_probe()
will run and print "unable to get reset gpio\n" with error code
-EPROBE_DEFER.
driver framework will retry imx6_pcie probe again when a new device appear.
it may retry sevial times utill i2c gpio-expander driver probe success or
timeout.
Frank
>
> --
> With Best Regards,
> Andy Shevchenko
>
>
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API
2024-04-23 20:16 ` Frank Li
@ 2024-04-23 20:22 ` Fabio Estevam
2024-04-23 20:23 ` Frank Li
1 sibling, 0 replies; 20+ messages in thread
From: Fabio Estevam @ 2024-04-23 20:22 UTC (permalink / raw)
To: Frank Li
Cc: Andy Shevchenko, Manivannan Sadhasivam,
Krzysztof Wilczyński, Uwe Kleine-König, linux-omap,
linux-pci, linux-arm-kernel, linux-kernel, imx, linux-amlogic,
linux-arm-msm, linux-tegra, Vignesh Raghavendra,
Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Yue Wang, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xiaowei Song, Binghui Wang,
Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 5:16 PM Frank Li <Frank.li@nxp.com> wrote:
> if (IS_ERR(imx6_pcie->reset_gpiod)) should be true. then dev_err_probe()
> will run and print "unable to get reset gpio\n" with error code
> -EPROBE_DEFER.
dev_err_probe() will not print an error message when the error code is
-EPROBE_DEFER.
That's exactly the point of using dev_err_probe().
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API
2024-04-23 20:16 ` Frank Li
2024-04-23 20:22 ` Fabio Estevam
@ 2024-04-23 20:23 ` Frank Li
2024-04-24 14:15 ` Andy Shevchenko
1 sibling, 1 reply; 20+ messages in thread
From: Frank Li @ 2024-04-23 20:23 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Manivannan Sadhasivam, Krzysztof Wilczyński,
Uwe Kleine-König, linux-omap, linux-pci, linux-arm-kernel,
linux-kernel, imx, linux-amlogic, linux-arm-msm, linux-tegra,
Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 04:16:36PM -0400, Frank Li wrote:
> On Tue, Apr 23, 2024 at 11:03:59PM +0300, Andy Shevchenko wrote:
> > On Tue, Apr 23, 2024 at 03:56:56PM -0400, Frank Li wrote:
> > > On Tue, Apr 23, 2024 at 08:19:06PM +0300, Andy Shevchenko wrote:
> >
> > ...
> >
> > > > + imx6_pcie->reset_gpiod =
> > > > + devm_gpiod_get_optional(dev, "reset",
> > > > + imx6_pcie->gpio_active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
> > > > + if (IS_ERR(imx6_pcie->reset_gpiod))
> > > > + return dev_err_probe(dev, PTR_ERR(imx6_pcie->reset_gpiod),
> > > > + "unable to get reset gpio\n");
> > >
> > > Small problem here. err message "unable to get reset gpio\n" will print
> > > when -EPROBE_DEFER happen. EPROBE_DEFER is quite common when use i2c
> > > expand gpio chip.
> >
> > I'm not sure how you come to this conclusion. Can you elaborate, please?
> > P.S> I do not see a problem as described.
>
> If i2c gpio-expander driver have not load when imx6_pcie probe, I supposed
> devm_gpiod_get_optional() will return -EPROBE_DEFER,
>
> if (IS_ERR(imx6_pcie->reset_gpiod)) should be true. then dev_err_probe()
> will run and print "unable to get reset gpio\n" with error code
> -EPROBE_DEFER.
Sorry for that. dev_err_probe() already consider this. Please forget my
comments.
dev_err_probe()
{
if (err != -EPROBE_DEFER) {
dev_err(dev, "error %pe: %pV", ERR_PTR(err), &vaf);
}
}
So:
Reviewed-by: Frank Li <Frank.Li@nxp.com>
>
> driver framework will retry imx6_pcie probe again when a new device appear.
> it may retry sevial times utill i2c gpio-expander driver probe success or
> timeout.
>
> Frank
>
> >
> > --
> > With Best Regards,
> > Andy Shevchenko
> >
> >
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
2024-04-23 17:19 ` [PATCH v2 2/4] PCI: dwc: " Andy Shevchenko
@ 2024-04-23 22:51 ` kernel test robot
2024-04-24 14:14 ` Andy Shevchenko
2024-04-23 23:42 ` kernel test robot
1 sibling, 1 reply; 20+ messages in thread
From: kernel test robot @ 2024-04-23 22:51 UTC (permalink / raw)
To: Andy Shevchenko, Manivannan Sadhasivam, Frank Li,
Krzysztof Wilczyński, Uwe Kleine-König, linux-omap,
linux-pci, linux-arm-kernel, linux-kernel, imx, linux-amlogic,
linux-arm-msm, linux-tegra
Cc: llvm, oe-kbuild-all, Vignesh Raghavendra, Siddharth Vadapalli,
Lorenzo Pieralisi, Rob Herring, Bjorn Helgaas, Richard Zhu,
Lucas Stach, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, Yue Wang, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xiaowei Song
Hi Andy,
kernel test robot noticed the following build errors:
[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus mani-mhi/mhi-next linus/master v6.9-rc5 next-20240423]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/PCI-aardvark-Remove-unused-of_gpio-h/20240424-012448
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20240423172208.2723892-3-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
config: arm-defconfig (https://download.01.org/0day-ci/archive/20240424/202404240649.QgY8lto8-lkp@intel.com/config)
compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240424/202404240649.QgY8lto8-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404240649.QgY8lto8-lkp@intel.com/
All errors (new ones prefixed by >>):
>> drivers/pci/controller/dwc/pci-dra7xx.c:262:2: error: implicit declaration of function 'chained_irq_enter' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
chained_irq_enter(chip, desc);
^
>> drivers/pci/controller/dwc/pci-dra7xx.c:284:2: error: implicit declaration of function 'chained_irq_exit' is invalid in C99 [-Werror,-Wimplicit-function-declaration]
chained_irq_exit(chip, desc);
^
drivers/pci/controller/dwc/pci-dra7xx.c:284:2: note: did you mean 'chained_irq_enter'?
drivers/pci/controller/dwc/pci-dra7xx.c:262:2: note: 'chained_irq_enter' declared here
chained_irq_enter(chip, desc);
^
2 errors generated.
vim +/chained_irq_enter +262 drivers/pci/controller/dwc/pci-dra7xx.c
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 252
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 253 static void dra7xx_pcie_msi_irq_handler(struct irq_desc *desc)
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 254 {
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 255 struct irq_chip *chip = irq_desc_get_chip(desc);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 256 struct dra7xx_pcie *dra7xx;
60b3c27fb9b92b drivers/pci/controller/dwc/pci-dra7xx.c Serge Semin 2022-06-24 257 struct dw_pcie_rp *pp;
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 258 struct dw_pcie *pci;
09b2d20349e37a drivers/pci/dwc/pci-dra7xx.c Vignesh R 2017-12-29 259 unsigned long reg;
d21faba11693c1 drivers/pci/controller/dwc/pci-dra7xx.c Marc Zyngier 2021-08-02 260 u32 bit;
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 261
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 @262 chained_irq_enter(chip, desc);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 263
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 264 pp = irq_desc_get_handler_data(desc);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 265 pci = to_dw_pcie_from_pp(pp);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 266 dra7xx = to_dra7xx_pcie(pci);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 267
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 268 reg = dra7xx_pcie_readl(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 269 dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI, reg);
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 270
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 271 switch (reg) {
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 272 case MSI:
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 273 dra7xx_pcie_handle_msi_irq(pp);
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 274 break;
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 275 case INTA:
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 276 case INTB:
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 277 case INTC:
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 278 case INTD:
d21faba11693c1 drivers/pci/controller/dwc/pci-dra7xx.c Marc Zyngier 2021-08-02 279 for_each_set_bit(bit, ®, PCI_NUM_INTX)
d21faba11693c1 drivers/pci/controller/dwc/pci-dra7xx.c Marc Zyngier 2021-08-02 280 generic_handle_domain_irq(dra7xx->irq_domain, bit);
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 281 break;
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 282 }
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 283
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 @284 chained_irq_exit(chip, desc);
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 285 }
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 286
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
2024-04-23 17:19 ` [PATCH v2 2/4] PCI: dwc: " Andy Shevchenko
2024-04-23 22:51 ` kernel test robot
@ 2024-04-23 23:42 ` kernel test robot
1 sibling, 0 replies; 20+ messages in thread
From: kernel test robot @ 2024-04-23 23:42 UTC (permalink / raw)
To: Andy Shevchenko, Manivannan Sadhasivam, Frank Li,
Krzysztof Wilczyński, Uwe Kleine-König, linux-omap,
linux-pci, linux-arm-kernel, linux-kernel, imx, linux-amlogic,
linux-arm-msm, linux-tegra
Cc: llvm, oe-kbuild-all, Vignesh Raghavendra, Siddharth Vadapalli,
Lorenzo Pieralisi, Rob Herring, Bjorn Helgaas, Richard Zhu,
Lucas Stach, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, Yue Wang, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xiaowei Song
Hi Andy,
kernel test robot noticed the following build errors:
[auto build test ERROR on pci/next]
[also build test ERROR on pci/for-linus mani-mhi/mhi-next linus/master v6.9-rc5 next-20240423]
[If your patch is applied to the wrong git tree, kindly drop us a note.
And when submitting patch, we suggest to use '--base' as documented in
https://git-scm.com/docs/git-format-patch#_base_tree_information]
url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/PCI-aardvark-Remove-unused-of_gpio-h/20240424-012448
base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
patch link: https://lore.kernel.org/r/20240423172208.2723892-3-andriy.shevchenko%40linux.intel.com
patch subject: [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
config: s390-allmodconfig (https://download.01.org/0day-ci/archive/20240424/202404240725.Jlvuk7P3-lkp@intel.com/config)
compiler: clang version 19.0.0git (https://github.com/llvm/llvm-project 5ef5eb66fb428aaf61fb51b709f065c069c11242)
reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240424/202404240725.Jlvuk7P3-lkp@intel.com/reproduce)
If you fix the issue in a separate patch/commit (i.e. not just a new version of
the same patch/commit), kindly add following tags
| Reported-by: kernel test robot <lkp@intel.com>
| Closes: https://lore.kernel.org/oe-kbuild-all/202404240725.Jlvuk7P3-lkp@intel.com/
All errors (new ones prefixed by >>):
In file included from drivers/pci/controller/dwc/pci-dra7xx.c:12:
In file included from include/linux/device.h:32:
In file included from include/linux/device/driver.h:21:
In file included from include/linux/module.h:19:
In file included from include/linux/elf.h:6:
In file included from arch/s390/include/asm/elf.h:173:
In file included from arch/s390/include/asm/mmu_context.h:11:
In file included from arch/s390/include/asm/pgalloc.h:18:
In file included from include/linux/mm.h:2208:
include/linux/vmstat.h:508:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
508 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
509 | item];
| ~~~~
include/linux/vmstat.h:515:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
515 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
516 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:522:36: warning: arithmetic between different enumeration types ('enum node_stat_item' and 'enum lru_list') [-Wenum-enum-conversion]
522 | return node_stat_name(NR_LRU_BASE + lru) + 3; // skip "nr_"
| ~~~~~~~~~~~ ^ ~~~
include/linux/vmstat.h:527:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
527 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
528 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
include/linux/vmstat.h:536:43: warning: arithmetic between different enumeration types ('enum zone_stat_item' and 'enum numa_stat_item') [-Wenum-enum-conversion]
536 | return vmstat_text[NR_VM_ZONE_STAT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~ ^
537 | NR_VM_NUMA_EVENT_ITEMS +
| ~~~~~~~~~~~~~~~~~~~~~~
In file included from drivers/pci/controller/dwc/pci-dra7xx.c:15:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:78:
include/asm-generic/io.h:547:31: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
547 | val = __raw_readb(PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:560:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
560 | val = __le16_to_cpu((__le16 __force)__raw_readw(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:37:59: note: expanded from macro '__le16_to_cpu'
37 | #define __le16_to_cpu(x) __swab16((__force __u16)(__le16)(x))
| ^
include/uapi/linux/swab.h:102:54: note: expanded from macro '__swab16'
102 | #define __swab16(x) (__u16)__builtin_bswap16((__u16)(x))
| ^
In file included from drivers/pci/controller/dwc/pci-dra7xx.c:15:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:78:
include/asm-generic/io.h:573:61: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
573 | val = __le32_to_cpu((__le32 __force)__raw_readl(PCI_IOBASE + addr));
| ~~~~~~~~~~ ^
include/uapi/linux/byteorder/big_endian.h:35:59: note: expanded from macro '__le32_to_cpu'
35 | #define __le32_to_cpu(x) __swab32((__force __u32)(__le32)(x))
| ^
include/uapi/linux/swab.h:115:54: note: expanded from macro '__swab32'
115 | #define __swab32(x) (__u32)__builtin_bswap32((__u32)(x))
| ^
In file included from drivers/pci/controller/dwc/pci-dra7xx.c:15:
In file included from include/linux/irq.h:20:
In file included from include/linux/io.h:13:
In file included from arch/s390/include/asm/io.h:78:
include/asm-generic/io.h:584:33: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
584 | __raw_writeb(value, PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:594:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
594 | __raw_writew((u16 __force)cpu_to_le16(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:604:59: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
604 | __raw_writel((u32 __force)cpu_to_le32(value), PCI_IOBASE + addr);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:692:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
692 | readsb(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:700:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
700 | readsw(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:708:20: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
708 | readsl(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:717:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
717 | writesb(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:726:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
726 | writesw(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
include/asm-generic/io.h:735:21: warning: performing pointer arithmetic on a null pointer has undefined behavior [-Wnull-pointer-arithmetic]
735 | writesl(PCI_IOBASE + addr, buffer, count);
| ~~~~~~~~~~ ^
>> drivers/pci/controller/dwc/pci-dra7xx.c:262:2: error: call to undeclared function 'chained_irq_enter'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
262 | chained_irq_enter(chip, desc);
| ^
>> drivers/pci/controller/dwc/pci-dra7xx.c:284:2: error: call to undeclared function 'chained_irq_exit'; ISO C99 and later do not support implicit function declarations [-Wimplicit-function-declaration]
284 | chained_irq_exit(chip, desc);
| ^
17 warnings and 2 errors generated.
vim +/chained_irq_enter +262 drivers/pci/controller/dwc/pci-dra7xx.c
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 252
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 253 static void dra7xx_pcie_msi_irq_handler(struct irq_desc *desc)
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 254 {
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 255 struct irq_chip *chip = irq_desc_get_chip(desc);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 256 struct dra7xx_pcie *dra7xx;
60b3c27fb9b92b drivers/pci/controller/dwc/pci-dra7xx.c Serge Semin 2022-06-24 257 struct dw_pcie_rp *pp;
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 258 struct dw_pcie *pci;
09b2d20349e37a drivers/pci/dwc/pci-dra7xx.c Vignesh R 2017-12-29 259 unsigned long reg;
d21faba11693c1 drivers/pci/controller/dwc/pci-dra7xx.c Marc Zyngier 2021-08-02 260 u32 bit;
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 261
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 @262 chained_irq_enter(chip, desc);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 263
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 264 pp = irq_desc_get_handler_data(desc);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 265 pci = to_dw_pcie_from_pp(pp);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 266 dra7xx = to_dra7xx_pcie(pci);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 267
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 268 reg = dra7xx_pcie_readl(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI);
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 269 dra7xx_pcie_writel(dra7xx, PCIECTRL_DRA7XX_CONF_IRQSTATUS_MSI, reg);
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 270
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 271 switch (reg) {
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 272 case MSI:
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 273 dra7xx_pcie_handle_msi_irq(pp);
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 274 break;
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 275 case INTA:
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 276 case INTB:
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 277 case INTC:
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 278 case INTD:
d21faba11693c1 drivers/pci/controller/dwc/pci-dra7xx.c Marc Zyngier 2021-08-02 279 for_each_set_bit(bit, ®, PCI_NUM_INTX)
d21faba11693c1 drivers/pci/controller/dwc/pci-dra7xx.c Marc Zyngier 2021-08-02 280 generic_handle_domain_irq(dra7xx->irq_domain, bit);
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 281 break;
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 282 }
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 283
9a5595ab21a9d1 drivers/pci/controller/dwc/pci-dra7xx.c Vignesh Raghavendra 2020-03-27 @284 chained_irq_exit(chip, desc);
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 285 }
47ff3de911a728 drivers/pci/host/pci-dra7xx.c Kishon Vijay Abraham I 2014-07-22 286
--
0-DAY CI Kernel Test Service
https://github.com/intel/lkp-tests/wiki
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
2024-04-23 22:51 ` kernel test robot
@ 2024-04-24 14:14 ` Andy Shevchenko
2024-04-24 14:29 ` Andy Shevchenko
0 siblings, 1 reply; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-24 14:14 UTC (permalink / raw)
To: kernel test robot
Cc: Manivannan Sadhasivam, Frank Li, Krzysztof Wilczyński,
Uwe Kleine-König, linux-omap, linux-pci, linux-arm-kernel,
linux-kernel, imx, linux-amlogic, linux-arm-msm, linux-tegra,
llvm, oe-kbuild-all, Vignesh Raghavendra, Siddharth Vadapalli,
Lorenzo Pieralisi, Rob Herring, Bjorn Helgaas, Richard Zhu,
Lucas Stach, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, Yue Wang, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xiaowei Song
On Wed, Apr 24, 2024 at 06:51:05AM +0800, kernel test robot wrote:
> Hi Andy,
>
> kernel test robot noticed the following build errors:
>
> [auto build test ERROR on pci/next]
> [also build test ERROR on pci/for-linus mani-mhi/mhi-next linus/master v6.9-rc5 next-20240423]
> [If your patch is applied to the wrong git tree, kindly drop us a note.
> And when submitting patch, we suggest to use '--base' as documented in
> https://git-scm.com/docs/git-format-patch#_base_tree_information]
>
> url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/PCI-aardvark-Remove-unused-of_gpio-h/20240424-012448
> base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
> patch link: https://lore.kernel.org/r/20240423172208.2723892-3-andriy.shevchenko%40linux.intel.com
> patch subject: [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
> config: arm-defconfig (https://download.01.org/0day-ci/archive/20240424/202404240649.QgY8lto8-lkp@intel.com/config)
> compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
> reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240424/202404240649.QgY8lto8-lkp@intel.com/reproduce)
>
> If you fix the issue in a separate patch/commit (i.e. not just a new version of
> the same patch/commit), kindly add following tags
> | Reported-by: kernel test robot <lkp@intel.com>
> | Closes: https://lore.kernel.org/oe-kbuild-all/202404240649.QgY8lto8-lkp@intel.com/
>
> All errors (new ones prefixed by >>):
Right, I need to add a chained_irq.h which I have in a separate patch for now.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API
2024-04-23 20:23 ` Frank Li
@ 2024-04-24 14:15 ` Andy Shevchenko
0 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-24 14:15 UTC (permalink / raw)
To: Frank Li
Cc: Manivannan Sadhasivam, Krzysztof Wilczyński,
Uwe Kleine-König, linux-omap, linux-pci, linux-arm-kernel,
linux-kernel, imx, linux-amlogic, linux-arm-msm, linux-tegra,
Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 04:23:06PM -0400, Frank Li wrote:
> On Tue, Apr 23, 2024 at 04:16:36PM -0400, Frank Li wrote:
...
> Reviewed-by: Frank Li <Frank.Li@nxp.com>
Thank you!
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
2024-04-24 14:14 ` Andy Shevchenko
@ 2024-04-24 14:29 ` Andy Shevchenko
0 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-24 14:29 UTC (permalink / raw)
To: kernel test robot
Cc: Manivannan Sadhasivam, Frank Li, Krzysztof Wilczyński,
Uwe Kleine-König, linux-omap, linux-pci, linux-arm-kernel,
linux-kernel, imx, linux-amlogic, linux-arm-msm, linux-tegra,
llvm, oe-kbuild-all, Vignesh Raghavendra, Siddharth Vadapalli,
Lorenzo Pieralisi, Rob Herring, Bjorn Helgaas, Richard Zhu,
Lucas Stach, Shawn Guo, Sascha Hauer, Pengutronix Kernel Team,
Fabio Estevam, Yue Wang, Neil Armstrong, Kevin Hilman,
Jerome Brunet, Martin Blumenstingl, Xiaowei Song
On Wed, Apr 24, 2024 at 05:14:43PM +0300, Andy Shevchenko wrote:
> On Wed, Apr 24, 2024 at 06:51:05AM +0800, kernel test robot wrote:
> > Hi Andy,
> >
> > kernel test robot noticed the following build errors:
> >
> > [auto build test ERROR on pci/next]
> > [also build test ERROR on pci/for-linus mani-mhi/mhi-next linus/master v6.9-rc5 next-20240423]
> > [If your patch is applied to the wrong git tree, kindly drop us a note.
> > And when submitting patch, we suggest to use '--base' as documented in
> > https://git-scm.com/docs/git-format-patch#_base_tree_information]
> >
> > url: https://github.com/intel-lab-lkp/linux/commits/Andy-Shevchenko/PCI-aardvark-Remove-unused-of_gpio-h/20240424-012448
> > base: https://git.kernel.org/pub/scm/linux/kernel/git/pci/pci.git next
> > patch link: https://lore.kernel.org/r/20240423172208.2723892-3-andriy.shevchenko%40linux.intel.com
> > patch subject: [PATCH v2 2/4] PCI: dwc: Remove unused of_gpio.h
> > config: arm-defconfig (https://download.01.org/0day-ci/archive/20240424/202404240649.QgY8lto8-lkp@intel.com/config)
> > compiler: clang version 14.0.6 (https://github.com/llvm/llvm-project.git f28c006a5895fc0e329fe15fead81e37457cb1d1)
> > reproduce (this is a W=1 build): (https://download.01.org/0day-ci/archive/20240424/202404240649.QgY8lto8-lkp@intel.com/reproduce)
> >
> > If you fix the issue in a separate patch/commit (i.e. not just a new version of
> > the same patch/commit), kindly add following tags
> > | Reported-by: kernel test robot <lkp@intel.com>
> > | Closes: https://lore.kernel.org/oe-kbuild-all/202404240649.QgY8lto8-lkp@intel.com/
> >
> > All errors (new ones prefixed by >>):
>
> Right, I need to add a chained_irq.h which I have in a separate patch for now.
This is here
20240423211817.3995488-1-andriy.shevchenko@linux.intel.com
Which should be applied before this one.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 0/4] PCI: controller: Move to agnostic GPIO API
2024-04-23 17:19 [PATCH v2 0/4] PCI: controller: Move to agnostic GPIO API Andy Shevchenko
` (3 preceding siblings ...)
2024-04-23 17:19 ` [PATCH v2 4/4] PCI: kirin: " Andy Shevchenko
@ 2024-04-26 14:26 ` Andy Shevchenko
4 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-26 14:26 UTC (permalink / raw)
To: Manivannan Sadhasivam, Frank Li, Krzysztof Wilczyński,
Uwe Kleine-König, linux-omap, linux-pci, linux-arm-kernel,
linux-kernel, imx, linux-amlogic, linux-arm-msm, linux-tegra
Cc: Vignesh Raghavendra, Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 08:19:03PM +0300, Andy Shevchenko wrote:
> Convert the PCI controller drivers to use GPIO agnostic API.
> While at it, remove of_gpio.h leftover from some of the drivers.
So, can we move forward with this series and its prerequisite?
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 1/4] PCI: aardvark: Remove unused of_gpio.h
2024-04-23 17:19 ` [PATCH v2 1/4] PCI: aardvark: Remove unused of_gpio.h Andy Shevchenko
@ 2024-04-27 6:38 ` Manivannan Sadhasivam
0 siblings, 0 replies; 20+ messages in thread
From: Manivannan Sadhasivam @ 2024-04-27 6:38 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Frank Li, Krzysztof Wilczyński, Uwe Kleine-König,
linux-omap, linux-pci, linux-arm-kernel, linux-kernel, imx,
linux-amlogic, linux-arm-msm, linux-tegra, Vignesh Raghavendra,
Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 08:19:04PM +0300, Andy Shevchenko wrote:
> of_gpio.h is deprecated and subject to remove.
> The driver doesn't use it, simply remove the unused header.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
- Mani
> ---
> drivers/pci/controller/pci-aardvark.c | 1 -
> 1 file changed, 1 deletion(-)
>
> diff --git a/drivers/pci/controller/pci-aardvark.c b/drivers/pci/controller/pci-aardvark.c
> index 71ecd7ddcc8a..8b3e1a079cf3 100644
> --- a/drivers/pci/controller/pci-aardvark.c
> +++ b/drivers/pci/controller/pci-aardvark.c
> @@ -23,7 +23,6 @@
> #include <linux/platform_device.h>
> #include <linux/msi.h>
> #include <linux/of_address.h>
> -#include <linux/of_gpio.h>
> #include <linux/of_pci.h>
>
> #include "../pci.h"
> --
> 2.43.0.rc1.1336.g36b5255a03ac
>
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API
2024-04-23 17:19 ` [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API Andy Shevchenko
2024-04-23 19:56 ` Frank Li
@ 2024-04-27 6:43 ` Manivannan Sadhasivam
1 sibling, 0 replies; 20+ messages in thread
From: Manivannan Sadhasivam @ 2024-04-27 6:43 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Frank Li, Krzysztof Wilczyński, Uwe Kleine-König,
linux-omap, linux-pci, linux-arm-kernel, linux-kernel, imx,
linux-amlogic, linux-arm-msm, linux-tegra, Vignesh Raghavendra,
Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 08:19:06PM +0300, Andy Shevchenko wrote:
> The of_gpio.h is going to be removed. In preparation of that convert
> the driver to the agnostic API.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
Reviewed-by: Manivannan Sadhasivam <manivannan.sadhasivam@linaro.org>
- Mani
> ---
> drivers/pci/controller/dwc/pci-imx6.c | 37 ++++++++++-----------------
> 1 file changed, 14 insertions(+), 23 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pci-imx6.c b/drivers/pci/controller/dwc/pci-imx6.c
> index 917c69edee1d..d620f1e1a43c 100644
> --- a/drivers/pci/controller/dwc/pci-imx6.c
> +++ b/drivers/pci/controller/dwc/pci-imx6.c
> @@ -11,14 +11,13 @@
> #include <linux/bitfield.h>
> #include <linux/clk.h>
> #include <linux/delay.h>
> -#include <linux/gpio.h>
> +#include <linux/gpio/consumer.h>
> #include <linux/kernel.h>
> #include <linux/mfd/syscon.h>
> #include <linux/mfd/syscon/imx6q-iomuxc-gpr.h>
> #include <linux/mfd/syscon/imx7-iomuxc-gpr.h>
> #include <linux/module.h>
> #include <linux/of.h>
> -#include <linux/of_gpio.h>
> #include <linux/of_address.h>
> #include <linux/pci.h>
> #include <linux/platform_device.h>
> @@ -107,7 +106,7 @@ struct imx6_pcie_drvdata {
>
> struct imx6_pcie {
> struct dw_pcie *pci;
> - int reset_gpio;
> + struct gpio_desc *reset_gpiod;
> bool gpio_active_high;
> bool link_is_up;
> struct clk_bulk_data clks[IMX6_PCIE_MAX_CLKS];
> @@ -721,9 +720,8 @@ static void imx6_pcie_assert_core_reset(struct imx6_pcie *imx6_pcie)
> }
>
> /* Some boards don't have PCIe reset GPIO. */
> - if (gpio_is_valid(imx6_pcie->reset_gpio))
> - gpio_set_value_cansleep(imx6_pcie->reset_gpio,
> - imx6_pcie->gpio_active_high);
> + gpiod_set_raw_value_cansleep(imx6_pcie->reset_gpiod,
> + imx6_pcie->gpio_active_high);
> }
>
> static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
> @@ -771,10 +769,10 @@ static int imx6_pcie_deassert_core_reset(struct imx6_pcie *imx6_pcie)
> }
>
> /* Some boards don't have PCIe reset GPIO. */
> - if (gpio_is_valid(imx6_pcie->reset_gpio)) {
> + if (imx6_pcie->reset_gpiod) {
> msleep(100);
> - gpio_set_value_cansleep(imx6_pcie->reset_gpio,
> - !imx6_pcie->gpio_active_high);
> + gpiod_set_raw_value_cansleep(imx6_pcie->reset_gpiod,
> + !imx6_pcie->gpio_active_high);
> /* Wait for 100ms after PERST# deassertion (PCIe r5.0, 6.6.1) */
> msleep(100);
> }
> @@ -1285,22 +1283,15 @@ static int imx6_pcie_probe(struct platform_device *pdev)
> return PTR_ERR(pci->dbi_base);
>
> /* Fetch GPIOs */
> - imx6_pcie->reset_gpio = of_get_named_gpio(node, "reset-gpio", 0);
> imx6_pcie->gpio_active_high = of_property_read_bool(node,
> "reset-gpio-active-high");
> - if (gpio_is_valid(imx6_pcie->reset_gpio)) {
> - ret = devm_gpio_request_one(dev, imx6_pcie->reset_gpio,
> - imx6_pcie->gpio_active_high ?
> - GPIOF_OUT_INIT_HIGH :
> - GPIOF_OUT_INIT_LOW,
> - "PCIe reset");
> - if (ret) {
> - dev_err(dev, "unable to get reset gpio\n");
> - return ret;
> - }
> - } else if (imx6_pcie->reset_gpio == -EPROBE_DEFER) {
> - return imx6_pcie->reset_gpio;
> - }
> + imx6_pcie->reset_gpiod =
> + devm_gpiod_get_optional(dev, "reset",
> + imx6_pcie->gpio_active_high ? GPIOD_OUT_HIGH : GPIOD_OUT_LOW);
> + if (IS_ERR(imx6_pcie->reset_gpiod))
> + return dev_err_probe(dev, PTR_ERR(imx6_pcie->reset_gpiod),
> + "unable to get reset gpio\n");
> + gpiod_set_consumer_name(imx6_pcie->reset_gpiod, "PCIe reset");
>
> if (imx6_pcie->drvdata->clks_cnt >= IMX6_PCIE_MAX_CLKS)
> return dev_err_probe(dev, -ENOMEM, "clks_cnt is too big\n");
> --
> 2.43.0.rc1.1336.g36b5255a03ac
>
>
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/4] PCI: kirin: Convert to agnostic GPIO API
2024-04-23 17:19 ` [PATCH v2 4/4] PCI: kirin: " Andy Shevchenko
@ 2024-04-27 7:23 ` Manivannan Sadhasivam
2024-04-29 8:47 ` Andy Shevchenko
0 siblings, 1 reply; 20+ messages in thread
From: Manivannan Sadhasivam @ 2024-04-27 7:23 UTC (permalink / raw)
To: Andy Shevchenko
Cc: Frank Li, Krzysztof Wilczyński, Uwe Kleine-König,
linux-omap, linux-pci, linux-arm-kernel, linux-kernel, imx,
linux-amlogic, linux-arm-msm, linux-tegra, Vignesh Raghavendra,
Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Tue, Apr 23, 2024 at 08:19:07PM +0300, Andy Shevchenko wrote:
> The of_gpio.h is going to be removed. In preparation of that convert
> the driver to the agnostic API.
>
> Signed-off-by: Andy Shevchenko <andriy.shevchenko@linux.intel.com>
> Reviewed-by: Rob Herring <robh@kernel.org>
> ---
> drivers/pci/controller/dwc/pcie-kirin.c | 105 ++++++++----------------
> 1 file changed, 35 insertions(+), 70 deletions(-)
>
> diff --git a/drivers/pci/controller/dwc/pcie-kirin.c b/drivers/pci/controller/dwc/pcie-kirin.c
> index d5523f302102..1753ab63a541 100644
> --- a/drivers/pci/controller/dwc/pcie-kirin.c
> +++ b/drivers/pci/controller/dwc/pcie-kirin.c
> @@ -12,12 +12,10 @@
> #include <linux/compiler.h>
> #include <linux/delay.h>
> #include <linux/err.h>
> -#include <linux/gpio.h>
> #include <linux/gpio/consumer.h>
> #include <linux/interrupt.h>
> #include <linux/mfd/syscon.h>
> #include <linux/of.h>
> -#include <linux/of_gpio.h>
> #include <linux/of_pci.h>
> #include <linux/phy/phy.h>
> #include <linux/pci.h>
> @@ -78,16 +76,16 @@ struct kirin_pcie {
> void *phy_priv; /* only for PCIE_KIRIN_INTERNAL_PHY */
>
> /* DWC PERST# */
> - int gpio_id_dwc_perst;
> + struct gpio_desc *id_dwc_perst_gpio;
>
> /* Per-slot PERST# */
> int num_slots;
> - int gpio_id_reset[MAX_PCI_SLOTS];
> + struct gpio_desc *id_reset_gpio[MAX_PCI_SLOTS];
> const char *reset_names[MAX_PCI_SLOTS];
>
> /* Per-slot clkreq */
> int n_gpio_clkreq;
> - int gpio_id_clkreq[MAX_PCI_SLOTS];
> + struct gpio_desc *id_clkreq_gpio[MAX_PCI_SLOTS];
> const char *clkreq_names[MAX_PCI_SLOTS];
> };
>
> @@ -381,15 +379,20 @@ static int kirin_pcie_get_gpio_enable(struct kirin_pcie *pcie,
> pcie->n_gpio_clkreq = ret;
>
> for (i = 0; i < pcie->n_gpio_clkreq; i++) {
> - pcie->gpio_id_clkreq[i] = of_get_named_gpio(dev->of_node,
> - "hisilicon,clken-gpios", i);
> - if (pcie->gpio_id_clkreq[i] < 0)
> - return pcie->gpio_id_clkreq[i];
> + pcie->id_clkreq_gpio[i] = devm_gpiod_get_index(dev,
> + "hisilicon,clken", i,
> + GPIOD_ASIS);
Please don't use GPIOD_ASIS even if the old code was using it.
For all 3 GPIOs in this driver, GPIOD_OUT_LOW flag should be used as the default
state is assert (considering the fact that the DT uses GPIO_ACTIVE_HIGH).
- Mani
> + 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");
>
> pcie->clkreq_names[i] = devm_kasprintf(dev, GFP_KERNEL,
> "pcie_clkreq_%d", i);
> if (!pcie->clkreq_names[i])
> return -ENOMEM;
> +
> + gpiod_set_consumer_name(pcie->id_clkreq_gpio[i],
> + pcie->clkreq_names[i]);
> }
>
> return 0;
> @@ -407,10 +410,16 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie,
> for_each_available_child_of_node(parent, child) {
> i = pcie->num_slots;
>
> - pcie->gpio_id_reset[i] = of_get_named_gpio(child,
> - "reset-gpios", 0);
> - if (pcie->gpio_id_reset[i] < 0)
> - continue;
> + pcie->id_reset_gpio[i] = devm_fwnode_gpiod_get_index(dev,
> + of_fwnode_handle(child),
> + "reset", 0, GPIOD_ASIS,
> + NULL);
> + if (IS_ERR(pcie->id_reset_gpio[i])) {
> + 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");
> + }
>
> pcie->num_slots++;
> if (pcie->num_slots > MAX_PCI_SLOTS) {
> @@ -434,6 +443,9 @@ static int kirin_pcie_parse_port(struct kirin_pcie *pcie,
> ret = -ENOMEM;
> goto put_node;
> }
> +
> + gpiod_set_consumer_name(pcie->id_reset_gpio[i],
> + pcie->reset_names[i]);
> }
> }
>
> @@ -463,14 +475,11 @@ static long kirin_pcie_get_resource(struct kirin_pcie *kirin_pcie,
> return PTR_ERR(kirin_pcie->apb);
>
> /* pcie internal PERST# gpio */
> - kirin_pcie->gpio_id_dwc_perst = of_get_named_gpio(dev->of_node,
> - "reset-gpios", 0);
> - if (kirin_pcie->gpio_id_dwc_perst == -EPROBE_DEFER) {
> - return -EPROBE_DEFER;
> - } else if (!gpio_is_valid(kirin_pcie->gpio_id_dwc_perst)) {
> - dev_err(dev, "unable to get a valid gpio pin\n");
> - return -ENODEV;
> - }
> + kirin_pcie->id_dwc_perst_gpio = devm_gpiod_get(dev, "reset", GPIOD_ASIS);
> + 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");
> + gpiod_set_consumer_name(kirin_pcie->id_dwc_perst_gpio, "pcie_perst_bridge");
>
> ret = kirin_pcie_get_gpio_enable(kirin_pcie, pdev);
> if (ret)
> @@ -553,7 +562,7 @@ static int kirin_pcie_add_bus(struct pci_bus *bus)
>
> /* Send PERST# to each slot */
> for (i = 0; i < kirin_pcie->num_slots; i++) {
> - ret = gpio_direction_output(kirin_pcie->gpio_id_reset[i], 1);
> + ret = gpiod_direction_output_raw(kirin_pcie->id_reset_gpio[i], 1);
> if (ret) {
> dev_err(pci->dev, "PERST# %s error: %d\n",
> kirin_pcie->reset_names[i], ret);
> @@ -623,44 +632,6 @@ static int kirin_pcie_host_init(struct dw_pcie_rp *pp)
> return 0;
> }
>
> -static int kirin_pcie_gpio_request(struct kirin_pcie *kirin_pcie,
> - struct device *dev)
> -{
> - int ret, i;
> -
> - for (i = 0; i < kirin_pcie->num_slots; i++) {
> - if (!gpio_is_valid(kirin_pcie->gpio_id_reset[i])) {
> - dev_err(dev, "unable to get a valid %s gpio\n",
> - kirin_pcie->reset_names[i]);
> - return -ENODEV;
> - }
> -
> - ret = devm_gpio_request(dev, kirin_pcie->gpio_id_reset[i],
> - kirin_pcie->reset_names[i]);
> - if (ret)
> - return ret;
> - }
> -
> - for (i = 0; i < kirin_pcie->n_gpio_clkreq; i++) {
> - if (!gpio_is_valid(kirin_pcie->gpio_id_clkreq[i])) {
> - dev_err(dev, "unable to get a valid %s gpio\n",
> - kirin_pcie->clkreq_names[i]);
> - return -ENODEV;
> - }
> -
> - ret = devm_gpio_request(dev, kirin_pcie->gpio_id_clkreq[i],
> - kirin_pcie->clkreq_names[i]);
> - if (ret)
> - return ret;
> -
> - ret = gpio_direction_output(kirin_pcie->gpio_id_clkreq[i], 0);
> - if (ret)
> - return ret;
> - }
> -
> - return 0;
> -}
> -
> static const struct dw_pcie_ops kirin_dw_pcie_ops = {
> .read_dbi = kirin_pcie_read_dbi,
> .write_dbi = kirin_pcie_write_dbi,
> @@ -680,7 +651,7 @@ static int kirin_pcie_power_off(struct kirin_pcie *kirin_pcie)
> return hi3660_pcie_phy_power_off(kirin_pcie);
>
> for (i = 0; i < kirin_pcie->n_gpio_clkreq; i++)
> - gpio_direction_output(kirin_pcie->gpio_id_clkreq[i], 1);
> + gpiod_direction_output_raw(kirin_pcie->id_clkreq_gpio[i], 1);
>
> phy_power_off(kirin_pcie->phy);
> phy_exit(kirin_pcie->phy);
> @@ -707,10 +678,6 @@ static int kirin_pcie_power_on(struct platform_device *pdev,
> if (IS_ERR(kirin_pcie->phy))
> return PTR_ERR(kirin_pcie->phy);
>
> - ret = kirin_pcie_gpio_request(kirin_pcie, dev);
> - if (ret)
> - return ret;
> -
> ret = phy_init(kirin_pcie->phy);
> if (ret)
> goto err;
> @@ -723,11 +690,9 @@ static int kirin_pcie_power_on(struct platform_device *pdev,
> /* perst assert Endpoint */
> usleep_range(REF_2_PERST_MIN, REF_2_PERST_MAX);
>
> - if (!gpio_request(kirin_pcie->gpio_id_dwc_perst, "pcie_perst_bridge")) {
> - ret = gpio_direction_output(kirin_pcie->gpio_id_dwc_perst, 1);
> - if (ret)
> - goto err;
> - }
> + ret = gpiod_direction_output_raw(kirin_pcie->id_dwc_perst_gpio, 1);
> + if (ret)
> + goto err;
>
> usleep_range(PERST_2_ACCESS_MIN, PERST_2_ACCESS_MAX);
>
> --
> 2.43.0.rc1.1336.g36b5255a03ac
>
--
மணிவண்ணன் சதாசிவம்
^ permalink raw reply [flat|nested] 20+ messages in thread
* Re: [PATCH v2 4/4] PCI: kirin: Convert to agnostic GPIO API
2024-04-27 7:23 ` Manivannan Sadhasivam
@ 2024-04-29 8:47 ` Andy Shevchenko
0 siblings, 0 replies; 20+ messages in thread
From: Andy Shevchenko @ 2024-04-29 8:47 UTC (permalink / raw)
To: Manivannan Sadhasivam
Cc: Frank Li, Krzysztof Wilczyński, Uwe Kleine-König,
linux-omap, linux-pci, linux-arm-kernel, linux-kernel, imx,
linux-amlogic, linux-arm-msm, linux-tegra, Vignesh Raghavendra,
Siddharth Vadapalli, Lorenzo Pieralisi,
Krzysztof Wilczyński, Rob Herring, Bjorn Helgaas,
Richard Zhu, Lucas Stach, Shawn Guo, Sascha Hauer,
Pengutronix Kernel Team, Fabio Estevam, Yue Wang, Neil Armstrong,
Kevin Hilman, Jerome Brunet, Martin Blumenstingl, Xiaowei Song,
Binghui Wang, Thierry Reding, Jonathan Hunter, Thomas Petazzoni,
Pali Rohár
On Sat, Apr 27, 2024 at 12:53:35PM +0530, Manivannan Sadhasivam wrote:
> On Tue, Apr 23, 2024 at 08:19:07PM +0300, Andy Shevchenko wrote:
> > The of_gpio.h is going to be removed. In preparation of that convert
> > the driver to the agnostic API.
...
> > + pcie->id_clkreq_gpio[i] = devm_gpiod_get_index(dev,
> > + "hisilicon,clken", i,
> > + GPIOD_ASIS);
>
> Please don't use GPIOD_ASIS even if the old code was using it.
>
> For all 3 GPIOs in this driver, GPIOD_OUT_LOW flag should be used as the default
> state is assert (considering the fact that the DT uses GPIO_ACTIVE_HIGH).
And if not? I believe we may not assume that all of DTBs around the globe put
the flags correctly. But I think you know much more about them than me, hence
I am okay to update this.
--
With Best Regards,
Andy Shevchenko
^ permalink raw reply [flat|nested] 20+ messages in thread
end of thread, other threads:[~2024-04-29 8:48 UTC | newest]
Thread overview: 20+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-04-23 17:19 [PATCH v2 0/4] PCI: controller: Move to agnostic GPIO API Andy Shevchenko
2024-04-23 17:19 ` [PATCH v2 1/4] PCI: aardvark: Remove unused of_gpio.h Andy Shevchenko
2024-04-27 6:38 ` Manivannan Sadhasivam
2024-04-23 17:19 ` [PATCH v2 2/4] PCI: dwc: " Andy Shevchenko
2024-04-23 22:51 ` kernel test robot
2024-04-24 14:14 ` Andy Shevchenko
2024-04-24 14:29 ` Andy Shevchenko
2024-04-23 23:42 ` kernel test robot
2024-04-23 17:19 ` [PATCH v2 3/4] PCI: imx6: Convert to agnostic GPIO API Andy Shevchenko
2024-04-23 19:56 ` Frank Li
2024-04-23 20:03 ` Andy Shevchenko
2024-04-23 20:16 ` Frank Li
2024-04-23 20:22 ` Fabio Estevam
2024-04-23 20:23 ` Frank Li
2024-04-24 14:15 ` Andy Shevchenko
2024-04-27 6:43 ` Manivannan Sadhasivam
2024-04-23 17:19 ` [PATCH v2 4/4] PCI: kirin: " Andy Shevchenko
2024-04-27 7:23 ` Manivannan Sadhasivam
2024-04-29 8:47 ` Andy Shevchenko
2024-04-26 14:26 ` [PATCH v2 0/4] PCI: controller: Move " Andy Shevchenko
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).