18c2ecf20Sopenharmony_ci// SPDX-License-Identifier: GPL-2.0
28c2ecf20Sopenharmony_ci/// Remove dev_err() messages after platform_get_irq*() failures
38c2ecf20Sopenharmony_ci//
48c2ecf20Sopenharmony_ci// Confidence: Medium
58c2ecf20Sopenharmony_ci// Options: --include-headers
68c2ecf20Sopenharmony_ci
78c2ecf20Sopenharmony_civirtual patch
88c2ecf20Sopenharmony_civirtual context
98c2ecf20Sopenharmony_civirtual org
108c2ecf20Sopenharmony_civirtual report
118c2ecf20Sopenharmony_ci
128c2ecf20Sopenharmony_ci@depends on context@
138c2ecf20Sopenharmony_ciexpression ret;
148c2ecf20Sopenharmony_cistruct platform_device *E;
158c2ecf20Sopenharmony_ci@@
168c2ecf20Sopenharmony_ci
178c2ecf20Sopenharmony_ciret =
188c2ecf20Sopenharmony_ci(
198c2ecf20Sopenharmony_ciplatform_get_irq
208c2ecf20Sopenharmony_ci|
218c2ecf20Sopenharmony_ciplatform_get_irq_byname
228c2ecf20Sopenharmony_ci)(E, ...);
238c2ecf20Sopenharmony_ci
248c2ecf20Sopenharmony_ciif ( \( ret < 0 \| ret <= 0 \) )
258c2ecf20Sopenharmony_ci{
268c2ecf20Sopenharmony_ci(
278c2ecf20Sopenharmony_ciif (ret != -EPROBE_DEFER)
288c2ecf20Sopenharmony_ci{ ...
298c2ecf20Sopenharmony_ci*dev_err(...);
308c2ecf20Sopenharmony_ci... }
318c2ecf20Sopenharmony_ci|
328c2ecf20Sopenharmony_ci...
338c2ecf20Sopenharmony_ci*dev_err(...);
348c2ecf20Sopenharmony_ci)
358c2ecf20Sopenharmony_ci...
368c2ecf20Sopenharmony_ci}
378c2ecf20Sopenharmony_ci
388c2ecf20Sopenharmony_ci@depends on patch@
398c2ecf20Sopenharmony_ciexpression ret;
408c2ecf20Sopenharmony_cistruct platform_device *E;
418c2ecf20Sopenharmony_ci@@
428c2ecf20Sopenharmony_ci
438c2ecf20Sopenharmony_ciret =
448c2ecf20Sopenharmony_ci(
458c2ecf20Sopenharmony_ciplatform_get_irq
468c2ecf20Sopenharmony_ci|
478c2ecf20Sopenharmony_ciplatform_get_irq_byname
488c2ecf20Sopenharmony_ci)(E, ...);
498c2ecf20Sopenharmony_ci
508c2ecf20Sopenharmony_ciif ( \( ret < 0 \| ret <= 0 \) )
518c2ecf20Sopenharmony_ci{
528c2ecf20Sopenharmony_ci(
538c2ecf20Sopenharmony_ci-if (ret != -EPROBE_DEFER)
548c2ecf20Sopenharmony_ci-{ ...
558c2ecf20Sopenharmony_ci-dev_err(...);
568c2ecf20Sopenharmony_ci-... }
578c2ecf20Sopenharmony_ci|
588c2ecf20Sopenharmony_ci...
598c2ecf20Sopenharmony_ci-dev_err(...);
608c2ecf20Sopenharmony_ci)
618c2ecf20Sopenharmony_ci...
628c2ecf20Sopenharmony_ci}
638c2ecf20Sopenharmony_ci
648c2ecf20Sopenharmony_ci@r depends on org || report@
658c2ecf20Sopenharmony_ciposition p1;
668c2ecf20Sopenharmony_ciexpression ret;
678c2ecf20Sopenharmony_cistruct platform_device *E;
688c2ecf20Sopenharmony_ci@@
698c2ecf20Sopenharmony_ci
708c2ecf20Sopenharmony_ciret =
718c2ecf20Sopenharmony_ci(
728c2ecf20Sopenharmony_ciplatform_get_irq
738c2ecf20Sopenharmony_ci|
748c2ecf20Sopenharmony_ciplatform_get_irq_byname
758c2ecf20Sopenharmony_ci)(E, ...);
768c2ecf20Sopenharmony_ci
778c2ecf20Sopenharmony_ciif ( \( ret < 0 \| ret <= 0 \) )
788c2ecf20Sopenharmony_ci{
798c2ecf20Sopenharmony_ci(
808c2ecf20Sopenharmony_ciif (ret != -EPROBE_DEFER)
818c2ecf20Sopenharmony_ci{ ...
828c2ecf20Sopenharmony_cidev_err@p1(...);
838c2ecf20Sopenharmony_ci... }
848c2ecf20Sopenharmony_ci|
858c2ecf20Sopenharmony_ci...
868c2ecf20Sopenharmony_cidev_err@p1(...);
878c2ecf20Sopenharmony_ci)
888c2ecf20Sopenharmony_ci...
898c2ecf20Sopenharmony_ci}
908c2ecf20Sopenharmony_ci
918c2ecf20Sopenharmony_ci@script:python depends on org@
928c2ecf20Sopenharmony_cip1 << r.p1;
938c2ecf20Sopenharmony_ci@@
948c2ecf20Sopenharmony_ci
958c2ecf20Sopenharmony_cicocci.print_main(p1)
968c2ecf20Sopenharmony_ci
978c2ecf20Sopenharmony_ci@script:python depends on report@
988c2ecf20Sopenharmony_cip1 << r.p1;
998c2ecf20Sopenharmony_ci@@
1008c2ecf20Sopenharmony_ci
1018c2ecf20Sopenharmony_cimsg = "line %s is redundant because platform_get_irq() already prints an error" % (p1[0].line)
1028c2ecf20Sopenharmony_cicoccilib.report.print_report(p1[0],msg)
103