xref: /openbmc/linux/scripts/coccinelle/api/platform_no_drv_owner.cocci (revision 75bf465f0bc33e9b776a46d6a1b9b990f5fb7c37)
1*fb9e53ccSThomas Gleixner// SPDX-License-Identifier: GPL-2.0-only
21f648f88SWolfram Sang/// Remove .owner field if calls are used which set it automatically
31f648f88SWolfram Sang///
41f648f88SWolfram Sang// Confidence: High
5*fb9e53ccSThomas Gleixner// Copyright: (C) 2014 Wolfram Sang.
61f648f88SWolfram Sang
71f648f88SWolfram Sangvirtual patch
81f648f88SWolfram Sangvirtual context
91f648f88SWolfram Sangvirtual org
101f648f88SWolfram Sangvirtual report
111f648f88SWolfram Sang
121f648f88SWolfram Sang@match1@
13bec8a5a2SKrzysztof Kozlowskideclarer name module_i2c_driver;
141f648f88SWolfram Sangdeclarer name module_platform_driver;
151f648f88SWolfram Sangdeclarer name module_platform_driver_probe;
161f648f88SWolfram Sangidentifier __driver;
171f648f88SWolfram Sang@@
181f648f88SWolfram Sang(
19bec8a5a2SKrzysztof Kozlowski	module_i2c_driver(__driver);
20bec8a5a2SKrzysztof Kozlowski|
211f648f88SWolfram Sang	module_platform_driver(__driver);
221f648f88SWolfram Sang|
231f648f88SWolfram Sang	module_platform_driver_probe(__driver, ...);
241f648f88SWolfram Sang)
251f648f88SWolfram Sang
261f648f88SWolfram Sang@fix1 depends on match1 && patch && !context && !org && !report@
271f648f88SWolfram Sangidentifier match1.__driver;
281f648f88SWolfram Sang@@
291f648f88SWolfram Sang	static struct platform_driver __driver = {
301f648f88SWolfram Sang		.driver = {
311f648f88SWolfram Sang-			.owner = THIS_MODULE,
321f648f88SWolfram Sang		}
331f648f88SWolfram Sang	};
341f648f88SWolfram Sang
35bec8a5a2SKrzysztof Kozlowski@fix1_i2c depends on match1 && patch && !context && !org && !report@
36bec8a5a2SKrzysztof Kozlowskiidentifier match1.__driver;
37bec8a5a2SKrzysztof Kozlowski@@
38bec8a5a2SKrzysztof Kozlowski	static struct i2c_driver __driver = {
39bec8a5a2SKrzysztof Kozlowski		.driver = {
40bec8a5a2SKrzysztof Kozlowski-			.owner = THIS_MODULE,
41bec8a5a2SKrzysztof Kozlowski		}
42bec8a5a2SKrzysztof Kozlowski	};
43bec8a5a2SKrzysztof Kozlowski
441f648f88SWolfram Sang@match2@
451f648f88SWolfram Sangidentifier __driver;
461f648f88SWolfram Sang@@
471f648f88SWolfram Sang(
481f648f88SWolfram Sang	platform_driver_register(&__driver)
491f648f88SWolfram Sang|
501f648f88SWolfram Sang	platform_driver_probe(&__driver, ...)
511f648f88SWolfram Sang|
521f648f88SWolfram Sang	platform_create_bundle(&__driver, ...)
53bec8a5a2SKrzysztof Kozlowski|
54bec8a5a2SKrzysztof Kozlowski	i2c_add_driver(&__driver)
551f648f88SWolfram Sang)
561f648f88SWolfram Sang
571f648f88SWolfram Sang@fix2 depends on match2 && patch && !context && !org && !report@
581f648f88SWolfram Sangidentifier match2.__driver;
591f648f88SWolfram Sang@@
601f648f88SWolfram Sang	static struct platform_driver __driver = {
611f648f88SWolfram Sang		.driver = {
621f648f88SWolfram Sang-			.owner = THIS_MODULE,
631f648f88SWolfram Sang		}
641f648f88SWolfram Sang	};
651f648f88SWolfram Sang
66bec8a5a2SKrzysztof Kozlowski@fix2_i2c depends on match2 && patch && !context && !org && !report@
67bec8a5a2SKrzysztof Kozlowskiidentifier match2.__driver;
68bec8a5a2SKrzysztof Kozlowski@@
69bec8a5a2SKrzysztof Kozlowski	static struct i2c_driver __driver = {
70bec8a5a2SKrzysztof Kozlowski		.driver = {
71bec8a5a2SKrzysztof Kozlowski-			.owner = THIS_MODULE,
72bec8a5a2SKrzysztof Kozlowski		}
73bec8a5a2SKrzysztof Kozlowski	};
74bec8a5a2SKrzysztof Kozlowski
751f648f88SWolfram Sang// ----------------------------------------------------------------------------
761f648f88SWolfram Sang
771f648f88SWolfram Sang@fix1_context depends on match1 && !patch && (context || org || report)@
781f648f88SWolfram Sangidentifier match1.__driver;
791f648f88SWolfram Sangposition j0;
801f648f88SWolfram Sang@@
811f648f88SWolfram Sang
821f648f88SWolfram Sang 	static struct platform_driver __driver = {
831f648f88SWolfram Sang		.driver = {
841f648f88SWolfram Sang*			.owner@j0 = THIS_MODULE,
851f648f88SWolfram Sang		}
861f648f88SWolfram Sang	};
871f648f88SWolfram Sang
88bec8a5a2SKrzysztof Kozlowski@fix1_i2c_context depends on match1 && !patch && (context || org || report)@
89bec8a5a2SKrzysztof Kozlowskiidentifier match1.__driver;
90bec8a5a2SKrzysztof Kozlowskiposition j0;
91bec8a5a2SKrzysztof Kozlowski@@
92bec8a5a2SKrzysztof Kozlowski
93bec8a5a2SKrzysztof Kozlowski	static struct i2c_driver __driver = {
94bec8a5a2SKrzysztof Kozlowski		.driver = {
95bec8a5a2SKrzysztof Kozlowski*			.owner@j0 = THIS_MODULE,
96bec8a5a2SKrzysztof Kozlowski		}
97bec8a5a2SKrzysztof Kozlowski	};
98bec8a5a2SKrzysztof Kozlowski
991f648f88SWolfram Sang@fix2_context depends on match2 && !patch && (context || org || report)@
1001f648f88SWolfram Sangidentifier match2.__driver;
1011f648f88SWolfram Sangposition j0;
1021f648f88SWolfram Sang@@
1031f648f88SWolfram Sang
1041f648f88SWolfram Sang 	static struct platform_driver __driver = {
1051f648f88SWolfram Sang		.driver = {
1061f648f88SWolfram Sang*			.owner@j0 = THIS_MODULE,
1071f648f88SWolfram Sang		}
1081f648f88SWolfram Sang	};
1091f648f88SWolfram Sang
110bec8a5a2SKrzysztof Kozlowski@fix2_i2c_context depends on match2 && !patch && (context || org || report)@
111bec8a5a2SKrzysztof Kozlowskiidentifier match2.__driver;
112bec8a5a2SKrzysztof Kozlowskiposition j0;
113bec8a5a2SKrzysztof Kozlowski@@
114bec8a5a2SKrzysztof Kozlowski
115bec8a5a2SKrzysztof Kozlowski	static struct i2c_driver __driver = {
116bec8a5a2SKrzysztof Kozlowski		.driver = {
117bec8a5a2SKrzysztof Kozlowski*			.owner@j0 = THIS_MODULE,
118bec8a5a2SKrzysztof Kozlowski		}
119bec8a5a2SKrzysztof Kozlowski	};
120bec8a5a2SKrzysztof Kozlowski
1211f648f88SWolfram Sang// ----------------------------------------------------------------------------
1221f648f88SWolfram Sang
1231f648f88SWolfram Sang@script:python fix1_org depends on org@
1241f648f88SWolfram Sangj0 << fix1_context.j0;
1251f648f88SWolfram Sang@@
1261f648f88SWolfram Sang
1271f648f88SWolfram Sangmsg = "No need to set .owner here. The core will do it."
1281f648f88SWolfram Sangcoccilib.org.print_todo(j0[0], msg)
1291f648f88SWolfram Sang
130bec8a5a2SKrzysztof Kozlowski@script:python fix1_i2c_org depends on org@
131bec8a5a2SKrzysztof Kozlowskij0 << fix1_i2c_context.j0;
132bec8a5a2SKrzysztof Kozlowski@@
133bec8a5a2SKrzysztof Kozlowski
134bec8a5a2SKrzysztof Kozlowskimsg = "No need to set .owner here. The core will do it."
135bec8a5a2SKrzysztof Kozlowskicoccilib.org.print_todo(j0[0], msg)
136bec8a5a2SKrzysztof Kozlowski
1371f648f88SWolfram Sang@script:python fix2_org depends on org@
1381f648f88SWolfram Sangj0 << fix2_context.j0;
1391f648f88SWolfram Sang@@
1401f648f88SWolfram Sang
1411f648f88SWolfram Sangmsg = "No need to set .owner here. The core will do it."
1421f648f88SWolfram Sangcoccilib.org.print_todo(j0[0], msg)
1431f648f88SWolfram Sang
144bec8a5a2SKrzysztof Kozlowski@script:python fix2_i2c_org depends on org@
145bec8a5a2SKrzysztof Kozlowskij0 << fix2_i2c_context.j0;
146bec8a5a2SKrzysztof Kozlowski@@
147bec8a5a2SKrzysztof Kozlowski
148bec8a5a2SKrzysztof Kozlowskimsg = "No need to set .owner here. The core will do it."
149bec8a5a2SKrzysztof Kozlowskicoccilib.org.print_todo(j0[0], msg)
150bec8a5a2SKrzysztof Kozlowski
1511f648f88SWolfram Sang// ----------------------------------------------------------------------------
1521f648f88SWolfram Sang
1531f648f88SWolfram Sang@script:python fix1_report depends on report@
1541f648f88SWolfram Sangj0 << fix1_context.j0;
1551f648f88SWolfram Sang@@
1561f648f88SWolfram Sang
1571f648f88SWolfram Sangmsg = "No need to set .owner here. The core will do it."
1581f648f88SWolfram Sangcoccilib.report.print_report(j0[0], msg)
1591f648f88SWolfram Sang
160bec8a5a2SKrzysztof Kozlowski@script:python fix1_i2c_report depends on report@
161bec8a5a2SKrzysztof Kozlowskij0 << fix1_i2c_context.j0;
162bec8a5a2SKrzysztof Kozlowski@@
163bec8a5a2SKrzysztof Kozlowski
164bec8a5a2SKrzysztof Kozlowskimsg = "No need to set .owner here. The core will do it."
165bec8a5a2SKrzysztof Kozlowskicoccilib.report.print_report(j0[0], msg)
166bec8a5a2SKrzysztof Kozlowski
1671f648f88SWolfram Sang@script:python fix2_report depends on report@
1681f648f88SWolfram Sangj0 << fix2_context.j0;
1691f648f88SWolfram Sang@@
1701f648f88SWolfram Sang
1711f648f88SWolfram Sangmsg = "No need to set .owner here. The core will do it."
1721f648f88SWolfram Sangcoccilib.report.print_report(j0[0], msg)
1731f648f88SWolfram Sang
174bec8a5a2SKrzysztof Kozlowski@script:python fix2_i2c_report depends on report@
175bec8a5a2SKrzysztof Kozlowskij0 << fix2_i2c_context.j0;
176bec8a5a2SKrzysztof Kozlowski@@
177bec8a5a2SKrzysztof Kozlowski
178bec8a5a2SKrzysztof Kozlowskimsg = "No need to set .owner here. The core will do it."
179bec8a5a2SKrzysztof Kozlowskicoccilib.report.print_report(j0[0], msg)
180bec8a5a2SKrzysztof Kozlowski
181