/* * This file is subject to the terms and conditions of the GNU General Public * License. See the file "COPYING" in the main directory of this archive * for more details. * * Copyright (C) 2001 Keith M Wesolowski * Copyright (C) 2001 Paul Mundt * Copyright (C) 2003 Guido Guenther <agx@sigxcpu.org> */ #include <linux/compiler.h> #include <linux/init.h> #include <linux/kernel.h> #include <linux/module.h> #include <linux/sched.h> #include <linux/notifier.h> #include <linux/delay.h> #include <linux/rtc/ds1685.h> #include <linux/interrupt.h> #include <linux/pm.h> #include <asm/addrspace.h> #include <asm/irq.h> #include <asm/reboot.h> #include <asm/wbflush.h> #include <asm/ip32/mace.h> #include <asm/ip32/crime.h> #include <asm/ip32/ip32_ints.h> #define POWERDOWN_TIMEOUT 120 /* * Blink frequency during reboot grace period and when panicked. */ #define POWERDOWN_FREQ (HZ / 4) #define PANIC_FREQ (HZ / 8) extern struct platform_device ip32_rtc_device; static struct timer_list power_timer, blink_timer; static int has_panicked, shutting_down;
static __noreturn void ip32_poweroff(void *data) { void (*poweroff_func)(struct platform_device *) = symbol_get(ds1685_rtc_poweroff); #ifdef CONFIG_MODULES /* If the first __symbol_get failed, our module wasn't loaded. */ if (!poweroff_func) { request_module("rtc-ds1685"); poweroff_func = symbol_get(ds1685_rtc_poweroff); } #endif if (!poweroff_func) pr_emerg("RTC not available for power-off. Spinning forever ...\n"); else { (*poweroff_func)((struct platform_device *)data); symbol_put(ds1685_rtc_poweroff); } unreachable(); }Contributors
Person | Tokens | Prop | Commits | CommitProp | |
joshua kinard | joshua kinard | 56 | 65.12% | 1 | 50.00% |
ralf baechle | ralf baechle | 30 | 34.88% | 1 | 50.00% |
Total | 86 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
joshua kinard | joshua kinard | 16 | 66.67% | 1 | 50.00% |
ralf baechle | ralf baechle | 8 | 33.33% | 1 | 50.00% |
Total | 24 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
ralf baechle | ralf baechle | 37 | 84.09% | 2 | 66.67% |
andrew morton | andrew morton | 7 | 15.91% | 1 | 33.33% |
Total | 44 | 100.00% | 3 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
ralf baechle | ralf baechle | 10 | 71.43% | 1 | 50.00% |
joshua kinard | joshua kinard | 4 | 28.57% | 1 | 50.00% |
Total | 14 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
joshua kinard | joshua kinard | 11 | 68.75% | 1 | 50.00% |
ralf baechle | ralf baechle | 5 | 31.25% | 1 | 50.00% |
Total | 16 | 100.00% | 2 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
ralf baechle | ralf baechle | 65 | 86.67% | 1 | 25.00% |
joshua kinard | joshua kinard | 8 | 10.67% | 1 | 25.00% |
lee revell | lee revell | 1 | 1.33% | 1 | 25.00% |
cedric le goater | cedric le goater | 1 | 1.33% | 1 | 25.00% |
Total | 75 | 100.00% | 4 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
ralf baechle | ralf baechle | 62 | 87.32% | 2 | 50.00% |
andrew morton | andrew morton | 7 | 9.86% | 1 | 25.00% |
lee revell | lee revell | 2 | 2.82% | 1 | 25.00% |
Total | 71 | 100.00% | 4 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
ralf baechle | ralf baechle | 59 | 76.62% | 3 | 50.00% |
andrew morton | andrew morton | 16 | 20.78% | 1 | 16.67% |
alan stern | alan stern | 1 | 1.30% | 1 | 16.67% |
joshua kinard | joshua kinard | 1 | 1.30% | 1 | 16.67% |
Total | 77 | 100.00% | 6 | 100.00% |
Person | Tokens | Prop | Commits | CommitProp | |
ralf baechle | ralf baechle | 357 | 69.05% | 5 | 50.00% |
joshua kinard | joshua kinard | 116 | 22.44% | 1 | 10.00% |
andrew morton | andrew morton | 37 | 7.16% | 1 | 10.00% |
lee revell | lee revell | 5 | 0.97% | 1 | 10.00% |
alan stern | alan stern | 1 | 0.19% | 1 | 10.00% |
cedric le goater | cedric le goater | 1 | 0.19% | 1 | 10.00% |
Total | 517 | 100.00% | 10 | 100.00% |