forked from torvalds/linux
-
Notifications
You must be signed in to change notification settings - Fork 0
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
leds: Fix leds-gpio driver multiple module_init/exit usage
You can't have multiple module_init()/module_exit calls so resort to messy ifdefs potentially pending some code refactoring. Signed-off-by: Richard Purdie <[email protected]>
- Loading branch information
Showing
1 changed file
with
27 additions
and
19 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -178,19 +178,6 @@ static struct platform_driver gpio_led_driver = { | |
}, | ||
}; | ||
|
||
static int __init gpio_led_init(void) | ||
{ | ||
return platform_driver_register(&gpio_led_driver); | ||
} | ||
|
||
static void __exit gpio_led_exit(void) | ||
{ | ||
platform_driver_unregister(&gpio_led_driver); | ||
} | ||
|
||
module_init(gpio_led_init); | ||
module_exit(gpio_led_exit); | ||
|
||
MODULE_ALIAS("platform:leds-gpio"); | ||
#endif /* CONFIG_LEDS_GPIO_PLATFORM */ | ||
|
||
|
@@ -283,19 +270,40 @@ static struct of_platform_driver of_gpio_leds_driver = { | |
.probe = of_gpio_leds_probe, | ||
.remove = __devexit_p(of_gpio_leds_remove), | ||
}; | ||
#endif | ||
|
||
static int __init of_gpio_leds_init(void) | ||
static int __init gpio_led_init(void) | ||
{ | ||
return of_register_platform_driver(&of_gpio_leds_driver); | ||
int ret; | ||
|
||
#ifdef CONFIG_LEDS_GPIO_PLATFORM | ||
ret = platform_driver_register(&gpio_led_driver); | ||
if (ret) | ||
return ret; | ||
#endif | ||
#ifdef CONFIG_LEDS_GPIO_OF | ||
ret = of_register_platform_driver(&of_gpio_leds_driver); | ||
#endif | ||
#ifdef CONFIG_LEDS_GPIO_PLATFORM | ||
if (ret) | ||
platform_driver_unregister(&gpio_led_driver); | ||
#endif | ||
|
||
return ret; | ||
} | ||
module_init(of_gpio_leds_init); | ||
|
||
static void __exit of_gpio_leds_exit(void) | ||
static void __exit gpio_led_exit(void) | ||
{ | ||
#ifdef CONFIG_LEDS_GPIO_PLATFORM | ||
platform_driver_unregister(&gpio_led_driver); | ||
#endif | ||
#ifdef CONFIG_LEDS_GPIO_OF | ||
of_unregister_platform_driver(&of_gpio_leds_driver); | ||
} | ||
module_exit(of_gpio_leds_exit); | ||
#endif | ||
} | ||
|
||
module_init(gpio_led_init); | ||
module_exit(gpio_led_exit); | ||
|
||
MODULE_AUTHOR("Raphael Assenat <[email protected]>, Trent Piepho <[email protected]>"); | ||
MODULE_DESCRIPTION("GPIO LED driver"); | ||
|