diff options
author | Sekhar Nori <nsekhar@ti.com> | 2014-02-25 23:59:43 -0500 |
---|---|---|
committer | Sekhar Nori <nsekhar@ti.com> | 2014-03-06 08:38:29 -0500 |
commit | 1233090cf6d8a75c8dca3b37e65a6e12f79502af (patch) | |
tree | bea49d5fd8c84fc8d00f1358a7ef72af46c12e65 /arch/arm/mach-davinci | |
parent | f26a9968e2eedb3cb7eb46c2d1fbe09f3b8fcf15 (diff) |
ARM: davinci: da8xx: fix multiple watchdog device registration
Fix multiple watchdog device registration on da8xx devices
due to davinci_init_devices blindly registering watchdog
device.
Fix this by getting rid of the initcall and instead registering
watchdog for each soc.
Signed-off-by: Sekhar Nori <nsekhar@ti.com>
Diffstat (limited to 'arch/arm/mach-davinci')
-rw-r--r-- | arch/arm/mach-davinci/davinci.h | 2 | ||||
-rw-r--r-- | arch/arm/mach-davinci/devices.c | 17 | ||||
-rw-r--r-- | arch/arm/mach-davinci/dm355.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-davinci/dm365.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-davinci/dm644x.c | 8 | ||||
-rw-r--r-- | arch/arm/mach-davinci/dm646x.c | 8 |
6 files changed, 32 insertions, 19 deletions
diff --git a/arch/arm/mach-davinci/davinci.h b/arch/arm/mach-davinci/davinci.h index 2eebc4338802..4ffc37accce0 100644 --- a/arch/arm/mach-davinci/davinci.h +++ b/arch/arm/mach-davinci/davinci.h | |||
@@ -79,6 +79,8 @@ int davinci_gpio_register(struct resource *res, int size, void *pdata); | |||
79 | #define DM646X_ASYNC_EMIF_CONTROL_BASE 0x20008000 | 79 | #define DM646X_ASYNC_EMIF_CONTROL_BASE 0x20008000 |
80 | #define DM646X_ASYNC_EMIF_CS2_SPACE_BASE 0x42000000 | 80 | #define DM646X_ASYNC_EMIF_CS2_SPACE_BASE 0x42000000 |
81 | 81 | ||
82 | int davinci_init_wdt(void); | ||
83 | |||
82 | /* DM355 function declarations */ | 84 | /* DM355 function declarations */ |
83 | void dm355_init(void); | 85 | void dm355_init(void); |
84 | void dm355_init_spi0(unsigned chipselect_mask, | 86 | void dm355_init_spi0(unsigned chipselect_mask, |
diff --git a/arch/arm/mach-davinci/devices.c b/arch/arm/mach-davinci/devices.c index 5cf9a027dcc6..6257aa452568 100644 --- a/arch/arm/mach-davinci/devices.c +++ b/arch/arm/mach-davinci/devices.c | |||
@@ -313,9 +313,9 @@ void davinci_restart(enum reboot_mode mode, const char *cmd) | |||
313 | davinci_watchdog_reset(&davinci_wdt_device); | 313 | davinci_watchdog_reset(&davinci_wdt_device); |
314 | } | 314 | } |
315 | 315 | ||
316 | static void davinci_init_wdt(void) | 316 | int davinci_init_wdt(void) |
317 | { | 317 | { |
318 | platform_device_register(&davinci_wdt_device); | 318 | return platform_device_register(&davinci_wdt_device); |
319 | } | 319 | } |
320 | 320 | ||
321 | static struct platform_device davinci_gpio_device = { | 321 | static struct platform_device davinci_gpio_device = { |
@@ -348,16 +348,3 @@ struct davinci_timer_instance davinci_timer_instance[2] = { | |||
348 | }, | 348 | }, |
349 | }; | 349 | }; |
350 | 350 | ||
351 | /*-------------------------------------------------------------------------*/ | ||
352 | |||
353 | static int __init davinci_init_devices(void) | ||
354 | { | ||
355 | /* please keep these calls, and their implementations above, | ||
356 | * in alphabetical order so they're easier to sort through. | ||
357 | */ | ||
358 | davinci_init_wdt(); | ||
359 | |||
360 | return 0; | ||
361 | } | ||
362 | arch_initcall(davinci_init_devices); | ||
363 | |||
diff --git a/arch/arm/mach-davinci/dm355.c b/arch/arm/mach-davinci/dm355.c index 4668c0e19767..07381d8cea62 100644 --- a/arch/arm/mach-davinci/dm355.c +++ b/arch/arm/mach-davinci/dm355.c | |||
@@ -1076,12 +1076,18 @@ int __init dm355_init_video(struct vpfe_config *vpfe_cfg, | |||
1076 | 1076 | ||
1077 | static int __init dm355_init_devices(void) | 1077 | static int __init dm355_init_devices(void) |
1078 | { | 1078 | { |
1079 | int ret = 0; | ||
1080 | |||
1079 | if (!cpu_is_davinci_dm355()) | 1081 | if (!cpu_is_davinci_dm355()) |
1080 | return 0; | 1082 | return 0; |
1081 | 1083 | ||
1082 | davinci_cfg_reg(DM355_INT_EDMA_CC); | 1084 | davinci_cfg_reg(DM355_INT_EDMA_CC); |
1083 | platform_device_register(&dm355_edma_device); | 1085 | platform_device_register(&dm355_edma_device); |
1084 | 1086 | ||
1085 | return 0; | 1087 | ret = davinci_init_wdt(); |
1088 | if (ret) | ||
1089 | pr_warn("%s: watchdog init failed: %d\n", __func__, ret); | ||
1090 | |||
1091 | return ret; | ||
1086 | } | 1092 | } |
1087 | postcore_initcall(dm355_init_devices); | 1093 | postcore_initcall(dm355_init_devices); |
diff --git a/arch/arm/mach-davinci/dm365.c b/arch/arm/mach-davinci/dm365.c index b44b49e2801a..08a61b938333 100644 --- a/arch/arm/mach-davinci/dm365.c +++ b/arch/arm/mach-davinci/dm365.c | |||
@@ -1436,6 +1436,8 @@ int __init dm365_init_video(struct vpfe_config *vpfe_cfg, | |||
1436 | 1436 | ||
1437 | static int __init dm365_init_devices(void) | 1437 | static int __init dm365_init_devices(void) |
1438 | { | 1438 | { |
1439 | int ret = 0; | ||
1440 | |||
1439 | if (!cpu_is_davinci_dm365()) | 1441 | if (!cpu_is_davinci_dm365()) |
1440 | return 0; | 1442 | return 0; |
1441 | 1443 | ||
@@ -1445,6 +1447,10 @@ static int __init dm365_init_devices(void) | |||
1445 | platform_device_register(&dm365_mdio_device); | 1447 | platform_device_register(&dm365_mdio_device); |
1446 | platform_device_register(&dm365_emac_device); | 1448 | platform_device_register(&dm365_emac_device); |
1447 | 1449 | ||
1448 | return 0; | 1450 | ret = davinci_init_wdt(); |
1451 | if (ret) | ||
1452 | pr_warn("%s: watchdog init failed: %d\n", __func__, ret); | ||
1453 | |||
1454 | return ret; | ||
1449 | } | 1455 | } |
1450 | postcore_initcall(dm365_init_devices); | 1456 | postcore_initcall(dm365_init_devices); |
diff --git a/arch/arm/mach-davinci/dm644x.c b/arch/arm/mach-davinci/dm644x.c index 5c3e0be95ef3..5debffba4b24 100644 --- a/arch/arm/mach-davinci/dm644x.c +++ b/arch/arm/mach-davinci/dm644x.c | |||
@@ -964,6 +964,8 @@ int __init dm644x_init_video(struct vpfe_config *vpfe_cfg, | |||
964 | 964 | ||
965 | static int __init dm644x_init_devices(void) | 965 | static int __init dm644x_init_devices(void) |
966 | { | 966 | { |
967 | int ret = 0; | ||
968 | |||
967 | if (!cpu_is_davinci_dm644x()) | 969 | if (!cpu_is_davinci_dm644x()) |
968 | return 0; | 970 | return 0; |
969 | 971 | ||
@@ -972,6 +974,10 @@ static int __init dm644x_init_devices(void) | |||
972 | platform_device_register(&dm644x_mdio_device); | 974 | platform_device_register(&dm644x_mdio_device); |
973 | platform_device_register(&dm644x_emac_device); | 975 | platform_device_register(&dm644x_emac_device); |
974 | 976 | ||
975 | return 0; | 977 | ret = davinci_init_wdt(); |
978 | if (ret) | ||
979 | pr_warn("%s: watchdog init failed: %d\n", __func__, ret); | ||
980 | |||
981 | return ret; | ||
976 | } | 982 | } |
977 | postcore_initcall(dm644x_init_devices); | 983 | postcore_initcall(dm644x_init_devices); |
diff --git a/arch/arm/mach-davinci/dm646x.c b/arch/arm/mach-davinci/dm646x.c index 81768dd47096..332d00d24dc2 100644 --- a/arch/arm/mach-davinci/dm646x.c +++ b/arch/arm/mach-davinci/dm646x.c | |||
@@ -955,12 +955,18 @@ void __init dm646x_init(void) | |||
955 | 955 | ||
956 | static int __init dm646x_init_devices(void) | 956 | static int __init dm646x_init_devices(void) |
957 | { | 957 | { |
958 | int ret = 0; | ||
959 | |||
958 | if (!cpu_is_davinci_dm646x()) | 960 | if (!cpu_is_davinci_dm646x()) |
959 | return 0; | 961 | return 0; |
960 | 962 | ||
961 | platform_device_register(&dm646x_mdio_device); | 963 | platform_device_register(&dm646x_mdio_device); |
962 | platform_device_register(&dm646x_emac_device); | 964 | platform_device_register(&dm646x_emac_device); |
963 | 965 | ||
964 | return 0; | 966 | ret = davinci_init_wdt(); |
967 | if (ret) | ||
968 | pr_warn("%s: watchdog init failed: %d\n", __func__, ret); | ||
969 | |||
970 | return ret; | ||
965 | } | 971 | } |
966 | postcore_initcall(dm646x_init_devices); | 972 | postcore_initcall(dm646x_init_devices); |