treewide: Replace GPLv2 boilerplate/reference with SPDX - rule 257
[linux-2.6-microblaze.git] / scripts / coccinelle / api / platform_no_drv_owner.cocci
1 // SPDX-License-Identifier: GPL-2.0-only
2 /// Remove .owner field if calls are used which set it automatically
3 ///
4 // Confidence: High
5 // Copyright: (C) 2014 Wolfram Sang.
6
7 virtual patch
8 virtual context
9 virtual org
10 virtual report
11
12 @match1@
13 declarer name module_i2c_driver;
14 declarer name module_platform_driver;
15 declarer name module_platform_driver_probe;
16 identifier __driver;
17 @@
18 (
19         module_i2c_driver(__driver);
20 |
21         module_platform_driver(__driver);
22 |
23         module_platform_driver_probe(__driver, ...);
24 )
25
26 @fix1 depends on match1 && patch && !context && !org && !report@
27 identifier match1.__driver;
28 @@
29         static struct platform_driver __driver = {
30                 .driver = {
31 -                       .owner = THIS_MODULE,
32                 }
33         };
34
35 @fix1_i2c depends on match1 && patch && !context && !org && !report@
36 identifier match1.__driver;
37 @@
38         static struct i2c_driver __driver = {
39                 .driver = {
40 -                       .owner = THIS_MODULE,
41                 }
42         };
43
44 @match2@
45 identifier __driver;
46 @@
47 (
48         platform_driver_register(&__driver)
49 |
50         platform_driver_probe(&__driver, ...)
51 |
52         platform_create_bundle(&__driver, ...)
53 |
54         i2c_add_driver(&__driver)
55 )
56
57 @fix2 depends on match2 && patch && !context && !org && !report@
58 identifier match2.__driver;
59 @@
60         static struct platform_driver __driver = {
61                 .driver = {
62 -                       .owner = THIS_MODULE,
63                 }
64         };
65
66 @fix2_i2c depends on match2 && patch && !context && !org && !report@
67 identifier match2.__driver;
68 @@
69         static struct i2c_driver __driver = {
70                 .driver = {
71 -                       .owner = THIS_MODULE,
72                 }
73         };
74
75 // ----------------------------------------------------------------------------
76
77 @fix1_context depends on match1 && !patch && (context || org || report)@
78 identifier match1.__driver;
79 position j0;
80 @@
81
82         static struct platform_driver __driver = {
83                 .driver = {
84 *                       .owner@j0 = THIS_MODULE,
85                 }
86         };
87
88 @fix1_i2c_context depends on match1 && !patch && (context || org || report)@
89 identifier match1.__driver;
90 position j0;
91 @@
92
93         static struct i2c_driver __driver = {
94                 .driver = {
95 *                       .owner@j0 = THIS_MODULE,
96                 }
97         };
98
99 @fix2_context depends on match2 && !patch && (context || org || report)@
100 identifier match2.__driver;
101 position j0;
102 @@
103
104         static struct platform_driver __driver = {
105                 .driver = {
106 *                       .owner@j0 = THIS_MODULE,
107                 }
108         };
109
110 @fix2_i2c_context depends on match2 && !patch && (context || org || report)@
111 identifier match2.__driver;
112 position j0;
113 @@
114
115         static struct i2c_driver __driver = {
116                 .driver = {
117 *                       .owner@j0 = THIS_MODULE,
118                 }
119         };
120
121 // ----------------------------------------------------------------------------
122
123 @script:python fix1_org depends on org@
124 j0 << fix1_context.j0;
125 @@
126
127 msg = "No need to set .owner here. The core will do it."
128 coccilib.org.print_todo(j0[0], msg)
129
130 @script:python fix1_i2c_org depends on org@
131 j0 << fix1_i2c_context.j0;
132 @@
133
134 msg = "No need to set .owner here. The core will do it."
135 coccilib.org.print_todo(j0[0], msg)
136
137 @script:python fix2_org depends on org@
138 j0 << fix2_context.j0;
139 @@
140
141 msg = "No need to set .owner here. The core will do it."
142 coccilib.org.print_todo(j0[0], msg)
143
144 @script:python fix2_i2c_org depends on org@
145 j0 << fix2_i2c_context.j0;
146 @@
147
148 msg = "No need to set .owner here. The core will do it."
149 coccilib.org.print_todo(j0[0], msg)
150
151 // ----------------------------------------------------------------------------
152
153 @script:python fix1_report depends on report@
154 j0 << fix1_context.j0;
155 @@
156
157 msg = "No need to set .owner here. The core will do it."
158 coccilib.report.print_report(j0[0], msg)
159
160 @script:python fix1_i2c_report depends on report@
161 j0 << fix1_i2c_context.j0;
162 @@
163
164 msg = "No need to set .owner here. The core will do it."
165 coccilib.report.print_report(j0[0], msg)
166
167 @script:python fix2_report depends on report@
168 j0 << fix2_context.j0;
169 @@
170
171 msg = "No need to set .owner here. The core will do it."
172 coccilib.report.print_report(j0[0], msg)
173
174 @script:python fix2_i2c_report depends on report@
175 j0 << fix2_i2c_context.j0;
176 @@
177
178 msg = "No need to set .owner here. The core will do it."
179 coccilib.report.print_report(j0[0], msg)
180