198051ba2SStephen Boyd// SPDX-License-Identifier: GPL-2.0
298051ba2SStephen Boyd/// Remove dev_err() messages after platform_get_irq*() failures
398051ba2SStephen Boyd//
498051ba2SStephen Boyd// Confidence: Medium
598051ba2SStephen Boyd// Options: --include-headers
698051ba2SStephen Boyd
798051ba2SStephen Boydvirtual patch
898051ba2SStephen Boydvirtual context
998051ba2SStephen Boydvirtual org
1098051ba2SStephen Boydvirtual report
1198051ba2SStephen Boyd
1298051ba2SStephen Boyd@depends on context@
1398051ba2SStephen Boydexpression ret;
1498051ba2SStephen Boydstruct platform_device *E;
1598051ba2SStephen Boyd@@
1698051ba2SStephen Boyd
1798051ba2SStephen Boydret =
1898051ba2SStephen Boyd(
1998051ba2SStephen Boydplatform_get_irq
2098051ba2SStephen Boyd|
2198051ba2SStephen Boydplatform_get_irq_byname
2298051ba2SStephen Boyd)(E, ...);
2398051ba2SStephen Boyd
24ca7ce5a2SYueHaibingif ( \( ret < 0 \| ret <= 0 \) )
2598051ba2SStephen Boyd{
2698051ba2SStephen Boyd(
2798051ba2SStephen Boydif (ret != -EPROBE_DEFER)
2898051ba2SStephen Boyd{ ...
2998051ba2SStephen Boyd*dev_err(...);
3098051ba2SStephen Boyd... }
3198051ba2SStephen Boyd|
3298051ba2SStephen Boyd...
3398051ba2SStephen Boyd*dev_err(...);
3498051ba2SStephen Boyd)
3598051ba2SStephen Boyd...
3698051ba2SStephen Boyd}
3798051ba2SStephen Boyd
3898051ba2SStephen Boyd@depends on patch@
3998051ba2SStephen Boydexpression ret;
4098051ba2SStephen Boydstruct platform_device *E;
4198051ba2SStephen Boyd@@
4298051ba2SStephen Boyd
4398051ba2SStephen Boydret =
4498051ba2SStephen Boyd(
4598051ba2SStephen Boydplatform_get_irq
4698051ba2SStephen Boyd|
4798051ba2SStephen Boydplatform_get_irq_byname
4898051ba2SStephen Boyd)(E, ...);
4998051ba2SStephen Boyd
50ca7ce5a2SYueHaibingif ( \( ret < 0 \| ret <= 0 \) )
5198051ba2SStephen Boyd{
5298051ba2SStephen Boyd(
5398051ba2SStephen Boyd-if (ret != -EPROBE_DEFER)
5498051ba2SStephen Boyd-{ ...
5598051ba2SStephen Boyd-dev_err(...);
5698051ba2SStephen Boyd-... }
5798051ba2SStephen Boyd|
5898051ba2SStephen Boyd...
5998051ba2SStephen Boyd-dev_err(...);
6098051ba2SStephen Boyd)
6198051ba2SStephen Boyd...
6298051ba2SStephen Boyd}
6398051ba2SStephen Boyd
6498051ba2SStephen Boyd@r depends on org || report@
6598051ba2SStephen Boydposition p1;
6698051ba2SStephen Boydexpression ret;
6798051ba2SStephen Boydstruct platform_device *E;
6898051ba2SStephen Boyd@@
6998051ba2SStephen Boyd
7098051ba2SStephen Boydret =
7198051ba2SStephen Boyd(
7298051ba2SStephen Boydplatform_get_irq
7398051ba2SStephen Boyd|
7498051ba2SStephen Boydplatform_get_irq_byname
7598051ba2SStephen Boyd)(E, ...);
7698051ba2SStephen Boyd
77ca7ce5a2SYueHaibingif ( \( ret < 0 \| ret <= 0 \) )
7898051ba2SStephen Boyd{
7998051ba2SStephen Boyd(
8098051ba2SStephen Boydif (ret != -EPROBE_DEFER)
8198051ba2SStephen Boyd{ ...
8298051ba2SStephen Boyddev_err@p1(...);
8398051ba2SStephen Boyd... }
8498051ba2SStephen Boyd|
8598051ba2SStephen Boyd...
8698051ba2SStephen Boyddev_err@p1(...);
8798051ba2SStephen Boyd)
8898051ba2SStephen Boyd...
8998051ba2SStephen Boyd}
9098051ba2SStephen Boyd
9198051ba2SStephen Boyd@script:python depends on org@
9298051ba2SStephen Boydp1 << r.p1;
9398051ba2SStephen Boyd@@
9498051ba2SStephen Boyd
9598051ba2SStephen Boydcocci.print_main(p1)
9698051ba2SStephen Boyd
9798051ba2SStephen Boyd@script:python depends on report@
9898051ba2SStephen Boydp1 << r.p1;
9998051ba2SStephen Boyd@@
10098051ba2SStephen Boyd
10198051ba2SStephen Boydmsg = "line %s is redundant because platform_get_irq() already prints an error" % (p1[0].line)
10298051ba2SStephen Boydcoccilib.report.print_report(p1[0],msg)
103