Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux

w1: add helper macro module_w1_family

The helper macro module_w1_family can be used in module drivers that
only register a w1 driver in their module init functions. Add this
macro and use it in all applicable drivers.

Link: http://lkml.kernel.org/r/20160531204313.20979-2-afd@ti.com
Signed-off-by: Andrew F. Davis <afd@ti.com>
Acked-by: Evgeniy Polyakov <zbr@ioremap.net>
Cc: Greg KH <greg@kroah.com>
Signed-off-by: Andrew Morton <akpm@linux-foundation.org>
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>

authored by

Andrew F. Davis and committed by
Linus Torvalds
939fc832 098f9fb0

+22 -131
+1 -13
drivers/w1/slaves/w1_ds2406.c
··· 153 153 .fid = W1_FAMILY_DS2406, 154 154 .fops = &w1_f12_fops, 155 155 }; 156 - 157 - static int __init w1_f12_init(void) 158 - { 159 - return w1_register_family(&w1_family_12); 160 - } 161 - 162 - static void __exit w1_f12_exit(void) 163 - { 164 - w1_unregister_family(&w1_family_12); 165 - } 166 - 167 - module_init(w1_f12_init); 168 - module_exit(w1_f12_exit); 156 + module_w1_family(w1_family_12);
+1 -13
drivers/w1/slaves/w1_ds2408.c
··· 351 351 .fid = W1_FAMILY_DS2408, 352 352 .fops = &w1_f29_fops, 353 353 }; 354 - 355 - static int __init w1_f29_init(void) 356 - { 357 - return w1_register_family(&w1_family_29); 358 - } 359 - 360 - static void __exit w1_f29_exit(void) 361 - { 362 - w1_unregister_family(&w1_family_29); 363 - } 364 - 365 - module_init(w1_f29_init); 366 - module_exit(w1_f29_exit); 354 + module_w1_family(w1_family_29);
+1 -13
drivers/w1/slaves/w1_ds2413.c
··· 135 135 .fid = W1_FAMILY_DS2413, 136 136 .fops = &w1_f3a_fops, 137 137 }; 138 - 139 - static int __init w1_f3a_init(void) 140 - { 141 - return w1_register_family(&w1_family_3a); 142 - } 143 - 144 - static void __exit w1_f3a_exit(void) 145 - { 146 - w1_unregister_family(&w1_family_3a); 147 - } 148 - 149 - module_init(w1_f3a_init); 150 - module_exit(w1_f3a_exit); 138 + module_w1_family(w1_family_3a);
+1 -13
drivers/w1/slaves/w1_ds2423.c
··· 138 138 .fid = W1_COUNTER_DS2423, 139 139 .fops = &w1_f1d_fops, 140 140 }; 141 - 142 - static int __init w1_f1d_init(void) 143 - { 144 - return w1_register_family(&w1_family_1d); 145 - } 146 - 147 - static void __exit w1_f1d_exit(void) 148 - { 149 - w1_unregister_family(&w1_family_1d); 150 - } 151 - 152 - module_init(w1_f1d_init); 153 - module_exit(w1_f1d_exit); 141 + module_w1_family(w1_family_1d); 154 142 155 143 MODULE_LICENSE("GPL"); 156 144 MODULE_AUTHOR("Mika Laitio <lamikr@pilppa.org>");
+1 -13
drivers/w1/slaves/w1_ds2431.c
··· 288 288 .fid = W1_EEPROM_DS2431, 289 289 .fops = &w1_f2d_fops, 290 290 }; 291 - 292 - static int __init w1_f2d_init(void) 293 - { 294 - return w1_register_family(&w1_family_2d); 295 - } 296 - 297 - static void __exit w1_f2d_fini(void) 298 - { 299 - w1_unregister_family(&w1_family_2d); 300 - } 301 - 302 - module_init(w1_f2d_init); 303 - module_exit(w1_f2d_fini); 291 + module_w1_family(w1_family_2d); 304 292 305 293 MODULE_LICENSE("GPL"); 306 294 MODULE_AUTHOR("Bernhard Weirich <bernhard.weirich@riedel.net>");
+1 -13
drivers/w1/slaves/w1_ds2433.c
··· 305 305 .fid = W1_EEPROM_DS2433, 306 306 .fops = &w1_f23_fops, 307 307 }; 308 - 309 - static int __init w1_f23_init(void) 310 - { 311 - return w1_register_family(&w1_family_23); 312 - } 313 - 314 - static void __exit w1_f23_fini(void) 315 - { 316 - w1_unregister_family(&w1_family_23); 317 - } 318 - 319 - module_init(w1_f23_init); 320 - module_exit(w1_f23_fini); 308 + module_w1_family(w1_family_23);
+1 -14
drivers/w1/slaves/w1_ds2760.c
··· 162 162 .fid = W1_FAMILY_DS2760, 163 163 .fops = &w1_ds2760_fops, 164 164 }; 165 - 166 - static int __init w1_ds2760_init(void) 167 - { 168 - pr_info("1-Wire driver for the DS2760 battery monitor chip - (c) 2004-2005, Szabolcs Gyurko\n"); 169 - return w1_register_family(&w1_ds2760_family); 170 - } 171 - 172 - static void __exit w1_ds2760_exit(void) 173 - { 174 - w1_unregister_family(&w1_ds2760_family); 175 - } 165 + module_w1_family(w1_ds2760_family); 176 166 177 167 EXPORT_SYMBOL(w1_ds2760_read); 178 168 EXPORT_SYMBOL(w1_ds2760_write); 179 169 EXPORT_SYMBOL(w1_ds2760_store_eeprom); 180 170 EXPORT_SYMBOL(w1_ds2760_recall_eeprom); 181 - 182 - module_init(w1_ds2760_init); 183 - module_exit(w1_ds2760_exit); 184 171 185 172 MODULE_LICENSE("GPL"); 186 173 MODULE_AUTHOR("Szabolcs Gyurko <szabolcs.gyurko@tlt.hu>");
+1 -13
drivers/w1/slaves/w1_ds2780.c
··· 154 154 .fid = W1_FAMILY_DS2780, 155 155 .fops = &w1_ds2780_fops, 156 156 }; 157 - 158 - static int __init w1_ds2780_init(void) 159 - { 160 - return w1_register_family(&w1_ds2780_family); 161 - } 162 - 163 - static void __exit w1_ds2780_exit(void) 164 - { 165 - w1_unregister_family(&w1_ds2780_family); 166 - } 167 - 168 - module_init(w1_ds2780_init); 169 - module_exit(w1_ds2780_exit); 157 + module_w1_family(w1_ds2780_family); 170 158 171 159 MODULE_LICENSE("GPL"); 172 160 MODULE_AUTHOR("Clifton Barnes <cabarnes@indesign-llc.com>");
+1 -13
drivers/w1/slaves/w1_ds2781.c
··· 151 151 .fid = W1_FAMILY_DS2781, 152 152 .fops = &w1_ds2781_fops, 153 153 }; 154 - 155 - static int __init w1_ds2781_init(void) 156 - { 157 - return w1_register_family(&w1_ds2781_family); 158 - } 159 - 160 - static void __exit w1_ds2781_exit(void) 161 - { 162 - w1_unregister_family(&w1_ds2781_family); 163 - } 164 - 165 - module_init(w1_ds2781_init); 166 - module_exit(w1_ds2781_exit); 154 + module_w1_family(w1_ds2781_family); 167 155 168 156 MODULE_LICENSE("GPL"); 169 157 MODULE_AUTHOR("Renata Sayakhova <renata@oktetlabs.ru>");
+1 -13
drivers/w1/slaves/w1_ds28e04.c
··· 427 427 .fid = W1_FAMILY_DS28E04, 428 428 .fops = &w1_f1C_fops, 429 429 }; 430 - 431 - static int __init w1_f1C_init(void) 432 - { 433 - return w1_register_family(&w1_family_1C); 434 - } 435 - 436 - static void __exit w1_f1C_fini(void) 437 - { 438 - w1_unregister_family(&w1_family_1C); 439 - } 440 - 441 - module_init(w1_f1C_init); 442 - module_exit(w1_f1C_fini); 430 + module_w1_family(w1_family_1C);
+12
drivers/w1/w1_family.h
··· 88 88 void w1_unregister_family(struct w1_family *); 89 89 int w1_register_family(struct w1_family *); 90 90 91 + /** 92 + * module_w1_driver() - Helper macro for registering a 1-Wire families 93 + * @__w1_family: w1_family struct 94 + * 95 + * Helper macro for 1-Wire families which do not do anything special in module 96 + * init/exit. This eliminates a lot of boilerplate. Each module may only 97 + * use this macro once, and calling it replaces module_init() and module_exit() 98 + */ 99 + #define module_w1_family(__w1_family) \ 100 + module_driver(__w1_family, w1_register_family, \ 101 + w1_unregister_family) 102 + 91 103 #endif /* __W1_FAMILY_H */