From: Andrzej Hajda <a.hajda@samsung.com>
To: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
Cc: Andrzej Hajda <a.hajda@samsung.com>,
Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>,
Marek Szyprowski <m.szyprowski@samsung.com>,
Shawn Lin <shawn.lin@rock-chips.com>,
Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>,
Heiko Stuebner <heiko@sntech.de>,
"Rafael J. Wysocki" <rafael@kernel.org>,
linux-kernel@vger.kernel.org,
Javier Martinez Canillas <javierm@redhat.com>,
linux-arm-kernel@lists.infradead.org, andy.shevchenko@gmail.com,
Mark Brown <broonie@kernel.org>,
Russell King - ARM Linux <linux@armlinux.org.uk>
Subject: [PATCH] PCI: pcie-rockchip: use probe_err helpers instead of open coding
Date: Fri, 21 Dec 2018 09:32:38 +0100 [thread overview]
Message-ID: <20181221083238.10020-1-a.hajda@samsung.com> (raw)
In-Reply-To: <20181220111434.GC10978@kroah.com>
probe_err helpers makes probe error handling easier and less error prone.
Signed-off-by: Andrzej Hajda <a.hajda@samsung.com>
---
Hi all,
This is sample conversion of one of drivers to proposed probe_err* helpers.
It was created to convince Greg that these helpers are useful.
With this helper we gain:
- corect error handling (deferral does not spam dmesg, other errors are logged),
- uniform error logging,
- simplified code,
- possibilty to check why some devices are deferred,
- shorter code.
Here are links to patchsets adding helpers v1[1], v4[2], in v1 I have added
big patch doing conversion to probe_err to show scale of the 'issue'.
If the helpers will be accepted I plan to send patches converting other drivers
as well.
[1]: https://lkml.org/lkml/2018/10/16/601
[2]: https://lkml.org/lkml/2018/12/20/438
Regards
Andrzej
---
drivers/pci/controller/pcie-rockchip.c | 100 ++++++++++---------------
1 file changed, 39 insertions(+), 61 deletions(-)
diff --git a/drivers/pci/controller/pcie-rockchip.c b/drivers/pci/controller/pcie-rockchip.c
index c53d1322a3d6..0d4f012c02ba 100644
--- a/drivers/pci/controller/pcie-rockchip.c
+++ b/drivers/pci/controller/pcie-rockchip.c
@@ -69,86 +69,67 @@ int rockchip_pcie_parse_dt(struct rockchip_pcie *rockchip)
rockchip->link_gen = 2;
rockchip->core_rst = devm_reset_control_get_exclusive(dev, "core");
- if (IS_ERR(rockchip->core_rst)) {
- if (PTR_ERR(rockchip->core_rst) != -EPROBE_DEFER)
- dev_err(dev, "missing core reset property in node\n");
- return PTR_ERR(rockchip->core_rst);
- }
+ if (IS_ERR(rockchip->core_rst))
+ return probe_err_ptr(dev, rockchip->core_rst,
+ "missing core reset property in node\n");
rockchip->mgmt_rst = devm_reset_control_get_exclusive(dev, "mgmt");
- if (IS_ERR(rockchip->mgmt_rst)) {
- if (PTR_ERR(rockchip->mgmt_rst) != -EPROBE_DEFER)
- dev_err(dev, "missing mgmt reset property in node\n");
- return PTR_ERR(rockchip->mgmt_rst);
- }
+ if (IS_ERR(rockchip->mgmt_rst))
+ return probe_err_ptr(dev, rockchip->mgmt_rst,
+ "missing mgmt reset property in node\n");
rockchip->mgmt_sticky_rst = devm_reset_control_get_exclusive(dev,
"mgmt-sticky");
- if (IS_ERR(rockchip->mgmt_sticky_rst)) {
- if (PTR_ERR(rockchip->mgmt_sticky_rst) != -EPROBE_DEFER)
- dev_err(dev, "missing mgmt-sticky reset property in node\n");
- return PTR_ERR(rockchip->mgmt_sticky_rst);
- }
+ if (IS_ERR(rockchip->mgmt_sticky_rst))
+ return probe_err_ptr(dev, rockchip->mgmt_sticky_rst,
+ "missing mgmt-sticky reset property in node\n");
rockchip->pipe_rst = devm_reset_control_get_exclusive(dev, "pipe");
- if (IS_ERR(rockchip->pipe_rst)) {
- if (PTR_ERR(rockchip->pipe_rst) != -EPROBE_DEFER)
- dev_err(dev, "missing pipe reset property in node\n");
- return PTR_ERR(rockchip->pipe_rst);
- }
+ if (IS_ERR(rockchip->pipe_rst))
+ return probe_err_ptr(dev, rockchip->pipe_rst,
+ "missing pipe reset property in node\n");
rockchip->pm_rst = devm_reset_control_get_exclusive(dev, "pm");
- if (IS_ERR(rockchip->pm_rst)) {
- if (PTR_ERR(rockchip->pm_rst) != -EPROBE_DEFER)
- dev_err(dev, "missing pm reset property in node\n");
- return PTR_ERR(rockchip->pm_rst);
- }
+ if (IS_ERR(rockchip->pm_rst))
+ return probe_err_ptr(dev, rockchip->pm_rst,
+ "missing pm reset property in node\n");
rockchip->pclk_rst = devm_reset_control_get_exclusive(dev, "pclk");
- if (IS_ERR(rockchip->pclk_rst)) {
- if (PTR_ERR(rockchip->pclk_rst) != -EPROBE_DEFER)
- dev_err(dev, "missing pclk reset property in node\n");
- return PTR_ERR(rockchip->pclk_rst);
- }
+ if (IS_ERR(rockchip->pclk_rst))
+ return probe_err_ptr(dev, rockchip->pclk_rst,
+ "missing pclk reset property in node\n");
rockchip->aclk_rst = devm_reset_control_get_exclusive(dev, "aclk");
- if (IS_ERR(rockchip->aclk_rst)) {
- if (PTR_ERR(rockchip->aclk_rst) != -EPROBE_DEFER)
- dev_err(dev, "missing aclk reset property in node\n");
- return PTR_ERR(rockchip->aclk_rst);
- }
+ if (IS_ERR(rockchip->aclk_rst))
+ return probe_err_ptr(dev, rockchip->aclk_rst,
+ "missing aclk reset property in node\n");
if (rockchip->is_rc) {
rockchip->ep_gpio = devm_gpiod_get(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);
- }
+ if (IS_ERR(rockchip->ep_gpio))
+ return probe_err_ptr(dev, rockchip->ep_gpio,
+ "missing ep-gpios property in node\n");
}
rockchip->aclk_pcie = devm_clk_get(dev, "aclk");
- if (IS_ERR(rockchip->aclk_pcie)) {
- dev_err(dev, "aclk clock not found\n");
- return PTR_ERR(rockchip->aclk_pcie);
- }
+ if (IS_ERR(rockchip->aclk_pcie))
+ return probe_err_ptr(dev, rockchip->aclk_pcie,
+ "aclk clock not found\n");
rockchip->aclk_perf_pcie = devm_clk_get(dev, "aclk-perf");
- if (IS_ERR(rockchip->aclk_perf_pcie)) {
- dev_err(dev, "aclk_perf clock not found\n");
- return PTR_ERR(rockchip->aclk_perf_pcie);
- }
+ if (IS_ERR(rockchip->aclk_perf_pcie))
+ return probe_err_ptr(dev, rockchip->aclk_perf_pcie,
+ "aclk_perf clock not found\n");
rockchip->hclk_pcie = devm_clk_get(dev, "hclk");
- if (IS_ERR(rockchip->hclk_pcie)) {
- dev_err(dev, "hclk clock not found\n");
- return PTR_ERR(rockchip->hclk_pcie);
- }
+ if (IS_ERR(rockchip->hclk_pcie))
+ return probe_err_ptr(dev, rockchip->hclk_pcie,
+ "hclk clock not found\n");
rockchip->clk_pcie_pm = devm_clk_get(dev, "pm");
- if (IS_ERR(rockchip->clk_pcie_pm)) {
- dev_err(dev, "pm clock not found\n");
- return PTR_ERR(rockchip->clk_pcie_pm);
- }
+ if (IS_ERR(rockchip->clk_pcie_pm))
+ return probe_err_ptr(dev, rockchip->clk_pcie_pm,
+ "pm clock not found\n");
return 0;
}
@@ -323,12 +304,9 @@ int rockchip_pcie_get_phys(struct rockchip_pcie *rockchip)
phy = devm_of_phy_get(dev, dev->of_node, name);
kfree(name);
- if (IS_ERR(phy)) {
- if (PTR_ERR(phy) != -EPROBE_DEFER)
- dev_err(dev, "missing phy for lane %d: %ld\n",
- i, PTR_ERR(phy));
- return PTR_ERR(phy);
- }
+ if (IS_ERR(phy))
+ return probe_err_ptr(dev, phy,
+ "missing phy for lane %d\n", i);
rockchip->phys[i] = phy;
}
--
2.17.1
next prev parent reply other threads:[~2018-12-21 8:32 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <CGME20181220102258eucas1p1ca5abb0b48d1f13d9234a4a7702a13da@eucas1p1.samsung.com>
2018-12-20 10:22 ` [PATCH v4 0/3] driver core: add probe error check helper Andrzej Hajda
[not found] ` <CGME20181220102259eucas1p2f748c68e01cd4e09a266da879722e218@eucas1p2.samsung.com>
2018-12-20 10:22 ` [PATCH v4 1/3] driver core: add probe_err log helper Andrzej Hajda
2018-12-20 10:35 ` Rafael J. Wysocki
2018-12-20 11:14 ` Greg Kroah-Hartman
2018-12-20 11:37 ` Andrzej Hajda
2018-12-21 22:47 ` Rob Herring
2018-12-22 7:24 ` [PATCH] driver core: platform: Add an error message to platform_get_irq*() Stephen Boyd
2018-12-22 10:33 ` Russell King - ARM Linux
2018-12-28 21:53 ` Stephen Boyd
2018-12-24 9:29 ` [PATCH v4 1/3] driver core: add probe_err log helper Andrzej Hajda
2018-12-28 21:56 ` [PATCH v2] driver core: platform: Add an error message to platform_get_irq*() Stephen Boyd
2018-12-30 10:42 ` Andy Shevchenko
2019-01-02 18:17 ` Stephen Boyd
2019-01-02 18:51 ` [PATCH v3] " Stephen Boyd
2019-01-03 9:40 ` Rafael J. Wysocki
2019-01-03 16:11 ` Stephen Boyd
2019-01-03 17:22 ` Rafael J. Wysocki
2019-01-03 17:25 ` Stephen Boyd
2019-01-03 17:38 ` Rafael J. Wysocki
2019-01-03 17:51 ` Andy Shevchenko
[not found] ` <CGME20181220102259eucas1p1884a0b68ce342239c2a43a74cc50725a@eucas1p1.samsung.com>
2018-12-20 10:22 ` [PATCH v4 2/3] driver core: add deferring probe reason to devices_deferred property Andrzej Hajda
2018-12-20 11:04 ` Rafael J. Wysocki
2018-12-20 12:27 ` Andrzej Hajda
2018-12-20 11:12 ` Greg Kroah-Hartman
2018-12-20 11:51 ` Andrzej Hajda
[not found] ` <CGME20181220102300eucas1p210735c7753688a52a73ccf026884dd11@eucas1p2.samsung.com>
2018-12-20 10:22 ` [PATCH v4 3/3] driver core: add probe_err_ptr helper Andrzej Hajda
2018-12-20 11:05 ` Rafael J. Wysocki
2018-12-20 11:14 ` Greg Kroah-Hartman
[not found] ` <CGME20181221083246eucas1p22cade911a455344d351db6060d39ddce@eucas1p2.samsung.com>
2018-12-21 8:32 ` Andrzej Hajda [this message]
2018-12-22 5:42 ` [PATCH] PCI: pcie-rockchip: use probe_err helpers instead of open coding kbuild test robot
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20181221083238.10020-1-a.hajda@samsung.com \
--to=a.hajda@samsung.com \
--cc=andy.shevchenko@gmail.com \
--cc=b.zolnierkie@samsung.com \
--cc=broonie@kernel.org \
--cc=gregkh@linuxfoundation.org \
--cc=heiko@sntech.de \
--cc=javierm@redhat.com \
--cc=linux-arm-kernel@lists.infradead.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux@armlinux.org.uk \
--cc=lorenzo.pieralisi@arm.com \
--cc=m.szyprowski@samsung.com \
--cc=rafael@kernel.org \
--cc=shawn.lin@rock-chips.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®