Commit 586655d2 authored by Alexandre Belloni's avatar Alexandre Belloni

rtc: jz4740: make the driver buildable as a module again

By using kernel_halt() instead of machine_halt(), we can make the driver
build as a module.
However, jz4740 platforms not loading this module will not be able to power
off.
Suggested-by: default avatarGeert Uytterhoeven <geert@linux-m68k.org>
Signed-off-by: default avatarAlexandre Belloni <alexandre.belloni@free-electrons.com>

Revert "rtc: jz4740: make the driver builtin only"

This reverts commit b9168c53.
parent 7ce7d89f
...@@ -1551,12 +1551,15 @@ config RTC_DRV_MPC5121 ...@@ -1551,12 +1551,15 @@ config RTC_DRV_MPC5121
will be called rtc-mpc5121. will be called rtc-mpc5121.
config RTC_DRV_JZ4740 config RTC_DRV_JZ4740
bool "Ingenic JZ4740 SoC" tristate "Ingenic JZ4740 SoC"
depends on MACH_INGENIC || COMPILE_TEST depends on MACH_INGENIC || COMPILE_TEST
help help
If you say yes here you get support for the Ingenic JZ47xx SoCs RTC If you say yes here you get support for the Ingenic JZ47xx SoCs RTC
controllers. controllers.
This driver can also be buillt as a module. If so, the module
will be called rtc-jz4740.
config RTC_DRV_LPC24XX config RTC_DRV_LPC24XX
tristate "NXP RTC for LPC178x/18xx/408x/43xx" tristate "NXP RTC for LPC178x/18xx/408x/43xx"
depends on ARCH_LPC18XX || COMPILE_TEST depends on ARCH_LPC18XX || COMPILE_TEST
......
...@@ -17,6 +17,7 @@ ...@@ -17,6 +17,7 @@
#include <linux/clk.h> #include <linux/clk.h>
#include <linux/io.h> #include <linux/io.h>
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/module.h>
#include <linux/of_device.h> #include <linux/of_device.h>
#include <linux/platform_device.h> #include <linux/platform_device.h>
#include <linux/reboot.h> #include <linux/reboot.h>
...@@ -294,7 +295,7 @@ static void jz4740_rtc_power_off(void) ...@@ -294,7 +295,7 @@ static void jz4740_rtc_power_off(void)
JZ_REG_RTC_RESET_COUNTER, reset_counter_ticks); JZ_REG_RTC_RESET_COUNTER, reset_counter_ticks);
jz4740_rtc_poweroff(dev_for_power_off); jz4740_rtc_poweroff(dev_for_power_off);
machine_halt(); kernel_halt();
} }
static const struct of_device_id jz4740_rtc_of_match[] = { static const struct of_device_id jz4740_rtc_of_match[] = {
...@@ -302,6 +303,7 @@ static const struct of_device_id jz4740_rtc_of_match[] = { ...@@ -302,6 +303,7 @@ static const struct of_device_id jz4740_rtc_of_match[] = {
{ .compatible = "ingenic,jz4780-rtc", .data = (void *)ID_JZ4780 }, { .compatible = "ingenic,jz4780-rtc", .data = (void *)ID_JZ4780 },
{}, {},
}; };
MODULE_DEVICE_TABLE(of, jz4740_rtc_of_match);
static int jz4740_rtc_probe(struct platform_device *pdev) static int jz4740_rtc_probe(struct platform_device *pdev)
{ {
...@@ -429,6 +431,7 @@ static const struct platform_device_id jz4740_rtc_ids[] = { ...@@ -429,6 +431,7 @@ static const struct platform_device_id jz4740_rtc_ids[] = {
{ "jz4780-rtc", ID_JZ4780 }, { "jz4780-rtc", ID_JZ4780 },
{} {}
}; };
MODULE_DEVICE_TABLE(platform, jz4740_rtc_ids);
static struct platform_driver jz4740_rtc_driver = { static struct platform_driver jz4740_rtc_driver = {
.probe = jz4740_rtc_probe, .probe = jz4740_rtc_probe,
...@@ -440,4 +443,9 @@ static struct platform_driver jz4740_rtc_driver = { ...@@ -440,4 +443,9 @@ static struct platform_driver jz4740_rtc_driver = {
.id_table = jz4740_rtc_ids, .id_table = jz4740_rtc_ids,
}; };
builtin_platform_driver(jz4740_rtc_driver); module_platform_driver(jz4740_rtc_driver);
MODULE_AUTHOR("Lars-Peter Clausen <lars@metafoo.de>");
MODULE_LICENSE("GPL");
MODULE_DESCRIPTION("RTC driver for the JZ4740 SoC\n");
MODULE_ALIAS("platform:jz4740-rtc");
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment