Loading arch/arm/Kconfig.debug +78 −78 Original line number Original line Diff line number Diff line Loading @@ -81,25 +81,6 @@ choice prompt "Kernel low-level debugging port" prompt "Kernel low-level debugging port" depends on DEBUG_LL depends on DEBUG_LL config DEBUG_LL_UART_NONE bool "No low-level debugging UART" help Say Y here if your platform doesn't provide a UART option below. This relies on your platform choosing the right UART definition internally in order for low-level debugging to work. config DEBUG_ICEDCC bool "Kernel low-level debugging via EmbeddedICE DCC channel" help Say Y here if you want the debug print routines to direct their output to the EmbeddedICE macrocell's DCC channel using co-processor 14. This is known to work on the ARM9 style ICE channel and on the XScale with the PEEDI. Note that the system will appear to hang during boot if there is nothing connected to read from the DCC. config AT91_DEBUG_LL_DBGU0 config AT91_DEBUG_LL_DBGU0 bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" depends on HAVE_AT91_DBGU0 depends on HAVE_AT91_DBGU0 Loading @@ -108,20 +89,6 @@ choice bool "Kernel low-level debugging on 9263, 9g45 and cap9" bool "Kernel low-level debugging on 9263, 9g45 and cap9" depends on HAVE_AT91_DBGU1 depends on HAVE_AT91_DBGU1 config DEBUG_FOOTBRIDGE_COM1 bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1" depends on FOOTBRIDGE help Say Y here if you want the debug print routines to direct their output to the 8250 at PCI COM1. config DEBUG_DC21285_PORT bool "Kernel low-level debugging messages via footbridge serial port" depends on FOOTBRIDGE help Say Y here if you want the debug print routines to direct their output to the serial port in the DC21285 (Footbridge). config DEBUG_CLPS711X_UART1 config DEBUG_CLPS711X_UART1 bool "Kernel low-level debugging messages via UART1" bool "Kernel low-level debugging messages via UART1" depends on ARCH_CLPS711X depends on ARCH_CLPS711X Loading @@ -136,6 +103,20 @@ choice Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the second serial port on these devices. their output to the second serial port on these devices. config DEBUG_DC21285_PORT bool "Kernel low-level debugging messages via footbridge serial port" depends on FOOTBRIDGE help Say Y here if you want the debug print routines to direct their output to the serial port in the DC21285 (Footbridge). config DEBUG_FOOTBRIDGE_COM1 bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1" depends on FOOTBRIDGE help Say Y here if you want the debug print routines to direct their output to the 8250 at PCI COM1. config DEBUG_HIGHBANK_UART config DEBUG_HIGHBANK_UART bool "Kernel low-level debugging messages via Highbank UART" bool "Kernel low-level debugging messages via Highbank UART" depends on ARCH_HIGHBANK depends on ARCH_HIGHBANK Loading Loading @@ -206,38 +187,42 @@ choice Say Y here if you want kernel low-level debugging support Say Y here if you want kernel low-level debugging support on i.MX6Q. on i.MX6Q. config DEBUG_S3C_UART0 config DEBUG_MSM_UART1 depends on PLAT_SAMSUNG bool "Kernel low-level debugging messages via MSM UART1" bool "Use S3C UART 0 for low-level debug" depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to UART 0. The port must have been initialised their output to the first serial port on MSM devices. by the boot-loader before use. The uncompressor code port configuration is now handled by CONFIG_S3C_LOWLEVEL_UART_PORT. config DEBUG_S3C_UART1 config DEBUG_MSM_UART2 depends on PLAT_SAMSUNG bool "Kernel low-level debugging messages via MSM UART2" bool "Use S3C UART 1 for low-level debug" depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to UART 1. The port must have been initialised their output to the second serial port on MSM devices. by the boot-loader before use. The uncompressor code port configuration is now handled config DEBUG_MSM_UART3 by CONFIG_S3C_LOWLEVEL_UART_PORT. bool "Kernel low-level debugging messages via MSM UART3" depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 help Say Y here if you want the debug print routines to direct their output to the third serial port on MSM devices. config DEBUG_S3C_UART2 config DEBUG_MSM8660_UART depends on PLAT_SAMSUNG bool "Kernel low-level debugging messages via MSM 8660 UART" bool "Use S3C UART 2 for low-level debug" depends on ARCH_MSM8X60 select MSM_HAS_DEBUG_UART_HS help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to UART 2. The port must have been initialised their output to the serial port on MSM 8660 devices. by the boot-loader before use. The uncompressor code port configuration is now handled config DEBUG_MSM8960_UART by CONFIG_S3C_LOWLEVEL_UART_PORT. bool "Kernel low-level debugging messages via MSM 8960 UART" depends on ARCH_MSM8960 select MSM_HAS_DEBUG_UART_HS help Say Y here if you want the debug print routines to direct their output to the serial port on MSM 8960 devices. config DEBUG_REALVIEW_STD_PORT config DEBUG_REALVIEW_STD_PORT bool "RealView Default UART" bool "RealView Default UART" Loading @@ -255,42 +240,57 @@ choice their output to the standard serial port on the RealView their output to the standard serial port on the RealView PB1176 platform. PB1176 platform. config DEBUG_MSM_UART1 config DEBUG_S3C_UART0 bool "Kernel low-level debugging messages via MSM UART1" depends on PLAT_SAMSUNG depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 bool "Use S3C UART 0 for low-level debug" help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the first serial port on MSM devices. their output to UART 0. The port must have been initialised by the boot-loader before use. config DEBUG_MSM_UART2 The uncompressor code port configuration is now handled bool "Kernel low-level debugging messages via MSM UART2" by CONFIG_S3C_LOWLEVEL_UART_PORT. depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 config DEBUG_S3C_UART1 depends on PLAT_SAMSUNG bool "Use S3C UART 1 for low-level debug" help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the second serial port on MSM devices. their output to UART 1. The port must have been initialised by the boot-loader before use. config DEBUG_MSM_UART3 The uncompressor code port configuration is now handled bool "Kernel low-level debugging messages via MSM UART3" by CONFIG_S3C_LOWLEVEL_UART_PORT. depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 config DEBUG_S3C_UART2 depends on PLAT_SAMSUNG bool "Use S3C UART 2 for low-level debug" help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the third serial port on MSM devices. their output to UART 2. The port must have been initialised by the boot-loader before use. config DEBUG_MSM8660_UART The uncompressor code port configuration is now handled bool "Kernel low-level debugging messages via MSM 8660 UART" by CONFIG_S3C_LOWLEVEL_UART_PORT. depends on ARCH_MSM8X60 select MSM_HAS_DEBUG_UART_HS config DEBUG_LL_UART_NONE bool "No low-level debugging UART" help help Say Y here if you want the debug print routines to direct Say Y here if your platform doesn't provide a UART option their output to the serial port on MSM 8660 devices. below. This relies on your platform choosing the right UART definition internally in order for low-level debugging to work. config DEBUG_MSM8960_UART config DEBUG_ICEDCC bool "Kernel low-level debugging messages via MSM 8960 UART" bool "Kernel low-level debugging via EmbeddedICE DCC channel" depends on ARCH_MSM8960 select MSM_HAS_DEBUG_UART_HS help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the serial port on MSM 8960 devices. their output to the EmbeddedICE macrocell's DCC channel using co-processor 14. This is known to work on the ARM9 style ICE channel and on the XScale with the PEEDI. Note that the system will appear to hang during boot if there is nothing connected to read from the DCC. endchoice endchoice Loading arch/arm/include/asm/system.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -110,6 +110,7 @@ extern void cpu_init(void); void soft_restart(unsigned long); void soft_restart(unsigned long); extern void (*arm_pm_restart)(char str, const char *cmd); extern void (*arm_pm_restart)(char str, const char *cmd); extern void (*arm_pm_idle)(void); #define UDBG_UNDEFINED (1 << 0) #define UDBG_UNDEFINED (1 << 0) #define UDBG_SYSCALL (1 << 1) #define UDBG_SYSCALL (1 << 1) Loading arch/arm/kernel/process.c +16 −11 Original line number Original line Diff line number Diff line Loading @@ -61,8 +61,6 @@ extern void setup_mm_for_reboot(void); static volatile int hlt_counter; static volatile int hlt_counter; #include <mach/system.h> void disable_hlt(void) void disable_hlt(void) { { hlt_counter++; hlt_counter++; Loading Loading @@ -181,13 +179,17 @@ void cpu_idle_wait(void) EXPORT_SYMBOL_GPL(cpu_idle_wait); EXPORT_SYMBOL_GPL(cpu_idle_wait); /* /* * This is our default idle handler. We need to disable * This is our default idle handler. * interrupts here to ensure we don't miss a wakeup call. */ */ void (*arm_pm_idle)(void); static void default_idle(void) static void default_idle(void) { { if (!need_resched()) if (arm_pm_idle) arch_idle(); arm_pm_idle(); else cpu_do_idle(); local_irq_enable(); local_irq_enable(); } } Loading Loading @@ -215,6 +217,10 @@ void cpu_idle(void) cpu_die(); cpu_die(); #endif #endif /* * We need to disable interrupts here * to ensure we don't miss a wakeup call. */ local_irq_disable(); local_irq_disable(); #ifdef CONFIG_PL310_ERRATA_769419 #ifdef CONFIG_PL310_ERRATA_769419 wmb(); wmb(); Loading @@ -222,20 +228,19 @@ void cpu_idle(void) if (hlt_counter) { if (hlt_counter) { local_irq_enable(); local_irq_enable(); cpu_relax(); cpu_relax(); } else { } else if (!need_resched()) { stop_critical_timings(); stop_critical_timings(); if (cpuidle_idle_call()) if (cpuidle_idle_call()) pm_idle(); pm_idle(); start_critical_timings(); start_critical_timings(); /* /* * This will eventually be removed - pm_idle * pm_idle functions must always * functions should always return with IRQs * return with IRQs enabled. * enabled. */ */ WARN_ON(irqs_disabled()); WARN_ON(irqs_disabled()); } else local_irq_enable(); local_irq_enable(); } } } leds_event(led_idle_end); leds_event(led_idle_end); rcu_idle_exit(); rcu_idle_exit(); tick_nohz_idle_exit(); tick_nohz_idle_exit(); Loading arch/arm/mach-at91/at91cap9.c +8 −0 Original line number Original line Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/module.h> #include <linux/module.h> #include <asm/proc-fns.h> #include <asm/irq.h> #include <asm/irq.h> #include <asm/mach/arch.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/map.h> Loading Loading @@ -313,6 +314,12 @@ static struct at91_gpio_bank at91cap9_gpio[] __initdata = { } } }; }; static void at91cap9_idle(void) { at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); cpu_do_idle(); } /* -------------------------------------------------------------------- /* -------------------------------------------------------------------- * AT91CAP9 processor initialization * AT91CAP9 processor initialization * -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */ Loading @@ -332,6 +339,7 @@ static void __init at91cap9_ioremap_registers(void) static void __init at91cap9_initialize(void) static void __init at91cap9_initialize(void) { { arm_pm_idle = at91cap9_idle; arm_pm_restart = at91sam9g45_restart; arm_pm_restart = at91sam9g45_restart; at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); Loading arch/arm/mach-at91/at91rm9200.c +10 −0 Original line number Original line Diff line number Diff line Loading @@ -289,6 +289,15 @@ static struct at91_gpio_bank at91rm9200_gpio[] __initdata = { } } }; }; static void at91rm9200_idle(void) { /* * Disable the processor clock. The processor will be automatically * re-enabled by an interrupt or by a reset. */ at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); } static void at91rm9200_restart(char mode, const char *cmd) static void at91rm9200_restart(char mode, const char *cmd) { { /* /* Loading @@ -314,6 +323,7 @@ static void __init at91rm9200_ioremap_registers(void) static void __init at91rm9200_initialize(void) static void __init at91rm9200_initialize(void) { { arm_pm_idle = at91rm9200_idle; arm_pm_restart = at91rm9200_restart; arm_pm_restart = at91rm9200_restart; at91_extern_irq = (1 << AT91RM9200_ID_IRQ0) | (1 << AT91RM9200_ID_IRQ1) at91_extern_irq = (1 << AT91RM9200_ID_IRQ0) | (1 << AT91RM9200_ID_IRQ1) | (1 << AT91RM9200_ID_IRQ2) | (1 << AT91RM9200_ID_IRQ3) | (1 << AT91RM9200_ID_IRQ2) | (1 << AT91RM9200_ID_IRQ3) Loading Loading
arch/arm/Kconfig.debug +78 −78 Original line number Original line Diff line number Diff line Loading @@ -81,25 +81,6 @@ choice prompt "Kernel low-level debugging port" prompt "Kernel low-level debugging port" depends on DEBUG_LL depends on DEBUG_LL config DEBUG_LL_UART_NONE bool "No low-level debugging UART" help Say Y here if your platform doesn't provide a UART option below. This relies on your platform choosing the right UART definition internally in order for low-level debugging to work. config DEBUG_ICEDCC bool "Kernel low-level debugging via EmbeddedICE DCC channel" help Say Y here if you want the debug print routines to direct their output to the EmbeddedICE macrocell's DCC channel using co-processor 14. This is known to work on the ARM9 style ICE channel and on the XScale with the PEEDI. Note that the system will appear to hang during boot if there is nothing connected to read from the DCC. config AT91_DEBUG_LL_DBGU0 config AT91_DEBUG_LL_DBGU0 bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" bool "Kernel low-level debugging on rm9200, 9260/9g20, 9261/9g10 and 9rl" depends on HAVE_AT91_DBGU0 depends on HAVE_AT91_DBGU0 Loading @@ -108,20 +89,6 @@ choice bool "Kernel low-level debugging on 9263, 9g45 and cap9" bool "Kernel low-level debugging on 9263, 9g45 and cap9" depends on HAVE_AT91_DBGU1 depends on HAVE_AT91_DBGU1 config DEBUG_FOOTBRIDGE_COM1 bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1" depends on FOOTBRIDGE help Say Y here if you want the debug print routines to direct their output to the 8250 at PCI COM1. config DEBUG_DC21285_PORT bool "Kernel low-level debugging messages via footbridge serial port" depends on FOOTBRIDGE help Say Y here if you want the debug print routines to direct their output to the serial port in the DC21285 (Footbridge). config DEBUG_CLPS711X_UART1 config DEBUG_CLPS711X_UART1 bool "Kernel low-level debugging messages via UART1" bool "Kernel low-level debugging messages via UART1" depends on ARCH_CLPS711X depends on ARCH_CLPS711X Loading @@ -136,6 +103,20 @@ choice Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the second serial port on these devices. their output to the second serial port on these devices. config DEBUG_DC21285_PORT bool "Kernel low-level debugging messages via footbridge serial port" depends on FOOTBRIDGE help Say Y here if you want the debug print routines to direct their output to the serial port in the DC21285 (Footbridge). config DEBUG_FOOTBRIDGE_COM1 bool "Kernel low-level debugging messages via footbridge 8250 at PCI COM1" depends on FOOTBRIDGE help Say Y here if you want the debug print routines to direct their output to the 8250 at PCI COM1. config DEBUG_HIGHBANK_UART config DEBUG_HIGHBANK_UART bool "Kernel low-level debugging messages via Highbank UART" bool "Kernel low-level debugging messages via Highbank UART" depends on ARCH_HIGHBANK depends on ARCH_HIGHBANK Loading Loading @@ -206,38 +187,42 @@ choice Say Y here if you want kernel low-level debugging support Say Y here if you want kernel low-level debugging support on i.MX6Q. on i.MX6Q. config DEBUG_S3C_UART0 config DEBUG_MSM_UART1 depends on PLAT_SAMSUNG bool "Kernel low-level debugging messages via MSM UART1" bool "Use S3C UART 0 for low-level debug" depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to UART 0. The port must have been initialised their output to the first serial port on MSM devices. by the boot-loader before use. The uncompressor code port configuration is now handled by CONFIG_S3C_LOWLEVEL_UART_PORT. config DEBUG_S3C_UART1 config DEBUG_MSM_UART2 depends on PLAT_SAMSUNG bool "Kernel low-level debugging messages via MSM UART2" bool "Use S3C UART 1 for low-level debug" depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to UART 1. The port must have been initialised their output to the second serial port on MSM devices. by the boot-loader before use. The uncompressor code port configuration is now handled config DEBUG_MSM_UART3 by CONFIG_S3C_LOWLEVEL_UART_PORT. bool "Kernel low-level debugging messages via MSM UART3" depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 help Say Y here if you want the debug print routines to direct their output to the third serial port on MSM devices. config DEBUG_S3C_UART2 config DEBUG_MSM8660_UART depends on PLAT_SAMSUNG bool "Kernel low-level debugging messages via MSM 8660 UART" bool "Use S3C UART 2 for low-level debug" depends on ARCH_MSM8X60 select MSM_HAS_DEBUG_UART_HS help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to UART 2. The port must have been initialised their output to the serial port on MSM 8660 devices. by the boot-loader before use. The uncompressor code port configuration is now handled config DEBUG_MSM8960_UART by CONFIG_S3C_LOWLEVEL_UART_PORT. bool "Kernel low-level debugging messages via MSM 8960 UART" depends on ARCH_MSM8960 select MSM_HAS_DEBUG_UART_HS help Say Y here if you want the debug print routines to direct their output to the serial port on MSM 8960 devices. config DEBUG_REALVIEW_STD_PORT config DEBUG_REALVIEW_STD_PORT bool "RealView Default UART" bool "RealView Default UART" Loading @@ -255,42 +240,57 @@ choice their output to the standard serial port on the RealView their output to the standard serial port on the RealView PB1176 platform. PB1176 platform. config DEBUG_MSM_UART1 config DEBUG_S3C_UART0 bool "Kernel low-level debugging messages via MSM UART1" depends on PLAT_SAMSUNG depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 bool "Use S3C UART 0 for low-level debug" help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the first serial port on MSM devices. their output to UART 0. The port must have been initialised by the boot-loader before use. config DEBUG_MSM_UART2 The uncompressor code port configuration is now handled bool "Kernel low-level debugging messages via MSM UART2" by CONFIG_S3C_LOWLEVEL_UART_PORT. depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 config DEBUG_S3C_UART1 depends on PLAT_SAMSUNG bool "Use S3C UART 1 for low-level debug" help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the second serial port on MSM devices. their output to UART 1. The port must have been initialised by the boot-loader before use. config DEBUG_MSM_UART3 The uncompressor code port configuration is now handled bool "Kernel low-level debugging messages via MSM UART3" by CONFIG_S3C_LOWLEVEL_UART_PORT. depends on ARCH_MSM7X00A || ARCH_MSM7X30 || ARCH_QSD8X50 config DEBUG_S3C_UART2 depends on PLAT_SAMSUNG bool "Use S3C UART 2 for low-level debug" help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the third serial port on MSM devices. their output to UART 2. The port must have been initialised by the boot-loader before use. config DEBUG_MSM8660_UART The uncompressor code port configuration is now handled bool "Kernel low-level debugging messages via MSM 8660 UART" by CONFIG_S3C_LOWLEVEL_UART_PORT. depends on ARCH_MSM8X60 select MSM_HAS_DEBUG_UART_HS config DEBUG_LL_UART_NONE bool "No low-level debugging UART" help help Say Y here if you want the debug print routines to direct Say Y here if your platform doesn't provide a UART option their output to the serial port on MSM 8660 devices. below. This relies on your platform choosing the right UART definition internally in order for low-level debugging to work. config DEBUG_MSM8960_UART config DEBUG_ICEDCC bool "Kernel low-level debugging messages via MSM 8960 UART" bool "Kernel low-level debugging via EmbeddedICE DCC channel" depends on ARCH_MSM8960 select MSM_HAS_DEBUG_UART_HS help help Say Y here if you want the debug print routines to direct Say Y here if you want the debug print routines to direct their output to the serial port on MSM 8960 devices. their output to the EmbeddedICE macrocell's DCC channel using co-processor 14. This is known to work on the ARM9 style ICE channel and on the XScale with the PEEDI. Note that the system will appear to hang during boot if there is nothing connected to read from the DCC. endchoice endchoice Loading
arch/arm/include/asm/system.h +1 −0 Original line number Original line Diff line number Diff line Loading @@ -110,6 +110,7 @@ extern void cpu_init(void); void soft_restart(unsigned long); void soft_restart(unsigned long); extern void (*arm_pm_restart)(char str, const char *cmd); extern void (*arm_pm_restart)(char str, const char *cmd); extern void (*arm_pm_idle)(void); #define UDBG_UNDEFINED (1 << 0) #define UDBG_UNDEFINED (1 << 0) #define UDBG_SYSCALL (1 << 1) #define UDBG_SYSCALL (1 << 1) Loading
arch/arm/kernel/process.c +16 −11 Original line number Original line Diff line number Diff line Loading @@ -61,8 +61,6 @@ extern void setup_mm_for_reboot(void); static volatile int hlt_counter; static volatile int hlt_counter; #include <mach/system.h> void disable_hlt(void) void disable_hlt(void) { { hlt_counter++; hlt_counter++; Loading Loading @@ -181,13 +179,17 @@ void cpu_idle_wait(void) EXPORT_SYMBOL_GPL(cpu_idle_wait); EXPORT_SYMBOL_GPL(cpu_idle_wait); /* /* * This is our default idle handler. We need to disable * This is our default idle handler. * interrupts here to ensure we don't miss a wakeup call. */ */ void (*arm_pm_idle)(void); static void default_idle(void) static void default_idle(void) { { if (!need_resched()) if (arm_pm_idle) arch_idle(); arm_pm_idle(); else cpu_do_idle(); local_irq_enable(); local_irq_enable(); } } Loading Loading @@ -215,6 +217,10 @@ void cpu_idle(void) cpu_die(); cpu_die(); #endif #endif /* * We need to disable interrupts here * to ensure we don't miss a wakeup call. */ local_irq_disable(); local_irq_disable(); #ifdef CONFIG_PL310_ERRATA_769419 #ifdef CONFIG_PL310_ERRATA_769419 wmb(); wmb(); Loading @@ -222,20 +228,19 @@ void cpu_idle(void) if (hlt_counter) { if (hlt_counter) { local_irq_enable(); local_irq_enable(); cpu_relax(); cpu_relax(); } else { } else if (!need_resched()) { stop_critical_timings(); stop_critical_timings(); if (cpuidle_idle_call()) if (cpuidle_idle_call()) pm_idle(); pm_idle(); start_critical_timings(); start_critical_timings(); /* /* * This will eventually be removed - pm_idle * pm_idle functions must always * functions should always return with IRQs * return with IRQs enabled. * enabled. */ */ WARN_ON(irqs_disabled()); WARN_ON(irqs_disabled()); } else local_irq_enable(); local_irq_enable(); } } } leds_event(led_idle_end); leds_event(led_idle_end); rcu_idle_exit(); rcu_idle_exit(); tick_nohz_idle_exit(); tick_nohz_idle_exit(); Loading
arch/arm/mach-at91/at91cap9.c +8 −0 Original line number Original line Diff line number Diff line Loading @@ -14,6 +14,7 @@ #include <linux/module.h> #include <linux/module.h> #include <asm/proc-fns.h> #include <asm/irq.h> #include <asm/irq.h> #include <asm/mach/arch.h> #include <asm/mach/arch.h> #include <asm/mach/map.h> #include <asm/mach/map.h> Loading Loading @@ -313,6 +314,12 @@ static struct at91_gpio_bank at91cap9_gpio[] __initdata = { } } }; }; static void at91cap9_idle(void) { at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); cpu_do_idle(); } /* -------------------------------------------------------------------- /* -------------------------------------------------------------------- * AT91CAP9 processor initialization * AT91CAP9 processor initialization * -------------------------------------------------------------------- */ * -------------------------------------------------------------------- */ Loading @@ -332,6 +339,7 @@ static void __init at91cap9_ioremap_registers(void) static void __init at91cap9_initialize(void) static void __init at91cap9_initialize(void) { { arm_pm_idle = at91cap9_idle; arm_pm_restart = at91sam9g45_restart; arm_pm_restart = at91sam9g45_restart; at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); at91_extern_irq = (1 << AT91CAP9_ID_IRQ0) | (1 << AT91CAP9_ID_IRQ1); Loading
arch/arm/mach-at91/at91rm9200.c +10 −0 Original line number Original line Diff line number Diff line Loading @@ -289,6 +289,15 @@ static struct at91_gpio_bank at91rm9200_gpio[] __initdata = { } } }; }; static void at91rm9200_idle(void) { /* * Disable the processor clock. The processor will be automatically * re-enabled by an interrupt or by a reset. */ at91_sys_write(AT91_PMC_SCDR, AT91_PMC_PCK); } static void at91rm9200_restart(char mode, const char *cmd) static void at91rm9200_restart(char mode, const char *cmd) { { /* /* Loading @@ -314,6 +323,7 @@ static void __init at91rm9200_ioremap_registers(void) static void __init at91rm9200_initialize(void) static void __init at91rm9200_initialize(void) { { arm_pm_idle = at91rm9200_idle; arm_pm_restart = at91rm9200_restart; arm_pm_restart = at91rm9200_restart; at91_extern_irq = (1 << AT91RM9200_ID_IRQ0) | (1 << AT91RM9200_ID_IRQ1) at91_extern_irq = (1 << AT91RM9200_ID_IRQ0) | (1 << AT91RM9200_ID_IRQ1) | (1 << AT91RM9200_ID_IRQ2) | (1 << AT91RM9200_ID_IRQ3) | (1 << AT91RM9200_ID_IRQ2) | (1 << AT91RM9200_ID_IRQ3) Loading