Message ID | 20201118071724.4866-2-wens@kernel.org |
---|---|
State | Superseded |
Headers | show |
Series | arm64: rockchip: Fix PCIe ep-gpios requirement and Add Nanopi M4B | expand |
Am Mittwoch, 18. November 2020, 08:17:21 CET schrieb Chen-Yu Tsai: > From: Chen-Yu Tsai <wens@csie.org> > > The Rockchip PCIe controller DT binding clearly states that 'ep-gpios' is > an optional property. And indeed there are boards that don't require it. > > Make the driver follow the binding by using devm_gpiod_get_optional() > instead of devm_gpiod_get(). > > Fixes: e77f847df54c ("PCI: rockchip: Add Rockchip PCIe controller support") > Fixes: 956cd99b35a8 ("PCI: rockchip: Separate common code from RC driver") > Fixes: 964bac9455be ("PCI: rockchip: Split out rockchip_pcie_parse_dt() to parse DT") > Signed-off-by: Chen-Yu Tsai <wens@csie.org> Reviewed-by: Heiko Stuebner <heiko@sntech.de I'll pick up patches 2-4 separately, after giving Rob a chance to look at the simple binding. Heiko > --- > Changes since v1: > > - Rewrite subject to match existing convention and reference > 'ep-gpios' DT property instead of the 'ep_gpio' field > --- > drivers/pci/controller/pcie-rockchip.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c > index 904dec0d3a88..c95950e9004f 100644 > --- a/drivers/pci/controller/pcie-rockchip.c > +++ b/drivers/pci/controller/pcie-rockchip.c > @@ -118,7 +118,7 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip) > } > > if (rockchip->is_rc) { > - rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH); > + rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep", GPIOD_OUT_HIGH); > if (IS_ERR(rockchip->ep_gpio)) { > dev_err(dev, "missing ep-gpios property in node\n"); > return PTR_ERR(rockchip->ep_gpio); >
Ping On Wed, Nov 18, 2020 at 4:49 PM Heiko Stübner <heiko@sntech.de> wrote: > > Am Mittwoch, 18. November 2020, 08:17:21 CET schrieb Chen-Yu Tsai: > > From: Chen-Yu Tsai <wens@csie.org> > > > > The Rockchip PCIe controller DT binding clearly states that 'ep-gpios' is > > an optional property. And indeed there are boards that don't require it. > > > > Make the driver follow the binding by using devm_gpiod_get_optional() > > instead of devm_gpiod_get(). > > > > Fixes: e77f847df54c ("PCI: rockchip: Add Rockchip PCIe controller support") > > Fixes: 956cd99b35a8 ("PCI: rockchip: Separate common code from RC driver") > > Fixes: 964bac9455be ("PCI: rockchip: Split out rockchip_pcie_parse_dt() to parse DT") > > Signed-off-by: Chen-Yu Tsai <wens@csie.org> > > Reviewed-by: Heiko Stuebner <heiko@sntech.de It's been close to three weeks since this was sent. Any chance we can get this into v5.10 or v5.11? Regards ChenYu > I'll pick up patches 2-4 separately, after giving Rob a chance to look at > the simple binding. > > > Heiko > > > --- > > Changes since v1: > > > > - Rewrite subject to match existing convention and reference > > 'ep-gpios' DT property instead of the 'ep_gpio' field > > --- > > drivers/pci/controller/pcie-rockchip.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c > > index 904dec0d3a88..c95950e9004f 100644 > > --- a/drivers/pci/controller/pcie-rockchip.c > > +++ b/drivers/pci/controller/pcie-rockchip.c > > @@ -118,7 +118,7 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip) > > } > > > > if (rockchip->is_rc) { > > - rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH); > > + rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep", GPIOD_OUT_HIGH); > > if (IS_ERR(rockchip->ep_gpio)) { > > dev_err(dev, "missing ep-gpios property in node\n"); > > return PTR_ERR(rockchip->ep_gpio); > > > > > >
On Wed, Nov 18, 2020 at 1:17 AM Chen-Yu Tsai <wens@kernel.org> wrote: > > From: Chen-Yu Tsai <wens@csie.org> > > The Rockchip PCIe controller DT binding clearly states that 'ep-gpios' is > an optional property. And indeed there are boards that don't require it. > > Make the driver follow the binding by using devm_gpiod_get_optional() > instead of devm_gpiod_get(). > > Fixes: e77f847df54c ("PCI: rockchip: Add Rockchip PCIe controller support") > Fixes: 956cd99b35a8 ("PCI: rockchip: Separate common code from RC driver") > Fixes: 964bac9455be ("PCI: rockchip: Split out rockchip_pcie_parse_dt() to parse DT") > Signed-off-by: Chen-Yu Tsai <wens@csie.org> > --- > Changes since v1: > > - Rewrite subject to match existing convention and reference > 'ep-gpios' DT property instead of the 'ep_gpio' field > --- > drivers/pci/controller/pcie-rockchip.c | 2 +- > 1 file changed, 1 insertion(+), 1 deletion(-) > > diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c > index 904dec0d3a88..c95950e9004f 100644 > --- a/drivers/pci/controller/pcie-rockchip.c > +++ b/drivers/pci/controller/pcie-rockchip.c > @@ -118,7 +118,7 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip) > } > > if (rockchip->is_rc) { > - rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH); > + rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep", GPIOD_OUT_HIGH); > if (IS_ERR(rockchip->ep_gpio)) { > dev_err(dev, "missing ep-gpios property in node\n"); You should drop the error message. What it says is now never the reason for the error and it could most likely be a deferred probe which you don't want an error message for. > return PTR_ERR(rockchip->ep_gpio); > -- > 2.29.1 >
On Mon, Dec 7, 2020 at 10:11 PM Rob Herring <robh@kernel.org> wrote: > > On Wed, Nov 18, 2020 at 1:17 AM Chen-Yu Tsai <wens@kernel.org> wrote: > > > > From: Chen-Yu Tsai <wens@csie.org> > > > > The Rockchip PCIe controller DT binding clearly states that 'ep-gpios' is > > an optional property. And indeed there are boards that don't require it. > > > > Make the driver follow the binding by using devm_gpiod_get_optional() > > instead of devm_gpiod_get(). > > > > Fixes: e77f847df54c ("PCI: rockchip: Add Rockchip PCIe controller support") > > Fixes: 956cd99b35a8 ("PCI: rockchip: Separate common code from RC driver") > > Fixes: 964bac9455be ("PCI: rockchip: Split out rockchip_pcie_parse_dt() to parse DT") > > Signed-off-by: Chen-Yu Tsai <wens@csie.org> > > --- > > Changes since v1: > > > > - Rewrite subject to match existing convention and reference > > 'ep-gpios' DT property instead of the 'ep_gpio' field > > --- > > drivers/pci/controller/pcie-rockchip.c | 2 +- > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c > > index 904dec0d3a88..c95950e9004f 100644 > > --- a/drivers/pci/controller/pcie-rockchip.c > > +++ b/drivers/pci/controller/pcie-rockchip.c > > @@ -118,7 +118,7 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip) > > } > > > > if (rockchip->is_rc) { > > - rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH); > > + rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep", GPIOD_OUT_HIGH); > > if (IS_ERR(rockchip->ep_gpio)) { > > dev_err(dev, "missing ep-gpios property in node\n"); > > You should drop the error message. What it says is now never the > reason for the error and it could most likely be a deferred probe > which you don't want an error message for. What about switching to dev_err_probe() instead? That way deferred probe errors get silenced (or get a better debug message), and error messages for other issues, such as miswritten gpio properties are still produced. ChenYu > > return PTR_ERR(rockchip->ep_gpio); > > -- > > 2.29.1 > >
On Sat, Dec 12, 2020 at 9:18 AM Chen-Yu Tsai <wens@kernel.org> wrote: > > On Mon, Dec 7, 2020 at 10:11 PM Rob Herring <robh@kernel.org> wrote: > > > > On Wed, Nov 18, 2020 at 1:17 AM Chen-Yu Tsai <wens@kernel.org> wrote: > > > > > > From: Chen-Yu Tsai <wens@csie.org> > > > > > > The Rockchip PCIe controller DT binding clearly states that 'ep-gpios' is > > > an optional property. And indeed there are boards that don't require it. > > > > > > Make the driver follow the binding by using devm_gpiod_get_optional() > > > instead of devm_gpiod_get(). > > > > > > Fixes: e77f847df54c ("PCI: rockchip: Add Rockchip PCIe controller support") > > > Fixes: 956cd99b35a8 ("PCI: rockchip: Separate common code from RC driver") > > > Fixes: 964bac9455be ("PCI: rockchip: Split out rockchip_pcie_parse_dt() to parse DT") > > > Signed-off-by: Chen-Yu Tsai <wens@csie.org> > > > --- > > > Changes since v1: > > > > > > - Rewrite subject to match existing convention and reference > > > 'ep-gpios' DT property instead of the 'ep_gpio' field > > > --- > > > drivers/pci/controller/pcie-rockchip.c | 2 +- > > > 1 file changed, 1 insertion(+), 1 deletion(-) > > > > > > diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c > > > index 904dec0d3a88..c95950e9004f 100644 > > > --- a/drivers/pci/controller/pcie-rockchip.c > > > +++ b/drivers/pci/controller/pcie-rockchip.c > > > @@ -118,7 +118,7 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip) > > > } > > > > > > if (rockchip->is_rc) { > > > - rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH); > > > + rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep", GPIOD_OUT_HIGH); > > > if (IS_ERR(rockchip->ep_gpio)) { > > > dev_err(dev, "missing ep-gpios property in node\n"); > > > > You should drop the error message. What it says is now never the > > reason for the error and it could most likely be a deferred probe > > which you don't want an error message for. > > What about switching to dev_err_probe() instead? > > That way deferred probe errors get silenced (or get a better debug message), > and error messages for other issues, such as miswritten gpio properties are > still produced. I guess, but those errors should be in the subsystem code IMO rather than every driver. Rob
diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c index 904dec0d3a88..c95950e9004f 100644 --- a/drivers/pci/controller/pcie-rockchip.c +++ b/drivers/pci/controller/pcie-rockchip.c @@ -118,7 +118,7 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip) } if (rockchip->is_rc) { - rockchip->ep_gpio = devm_gpiod_get(dev, "ep", GPIOD_OUT_HIGH); + rockchip->ep_gpio = devm_gpiod_get_optional(dev, "ep", GPIOD_OUT_HIGH); if (IS_ERR(rockchip->ep_gpio)) { dev_err(dev, "missing ep-gpios property in node\n"); return PTR_ERR(rockchip->ep_gpio);