Loading Documentation/power/runtime_pm.txt +4 −0 Original line number Diff line number Diff line Loading @@ -468,6 +468,10 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h: - set the power.irq_safe flag for the device, causing the runtime-PM callbacks to be invoked with interrupts off bool pm_runtime_is_irq_safe(struct device *dev); - return true if power.irq_safe flag was set for the device, causing the runtime-PM callbacks to be invoked with interrupts off void pm_runtime_mark_last_busy(struct device *dev); - set the power.last_busy field to the current time Loading arch/arm/Kconfig +2 −0 Original line number Diff line number Diff line Loading @@ -702,7 +702,9 @@ config ARCH_SA1100 select CPU_SA1100 select GENERIC_CLOCKEVENTS select HAVE_IDE select IRQ_DOMAIN select ISA select MULTI_IRQ_HANDLER select NEED_MACH_MEMORY_H select SPARSE_IRQ help Loading arch/arm/common/sa1111.c +6 −7 Original line number Diff line number Diff line Loading @@ -282,8 +282,8 @@ static int sa1111_retrigger_lowirq(struct irq_data *d) } if (i == 8) printk(KERN_ERR "Danger Will Robinson: failed to " "re-trigger IRQ%d\n", d->irq); pr_err("Danger Will Robinson: failed to re-trigger IRQ%d\n", d->irq); return i == 8 ? -1 : 0; } Loading Loading @@ -384,8 +384,8 @@ static int sa1111_retrigger_highirq(struct irq_data *d) } if (i == 8) printk(KERN_ERR "Danger Will Robinson: failed to " "re-trigger IRQ%d\n", d->irq); pr_err("Danger Will Robinson: failed to re-trigger IRQ%d\n", d->irq); return i == 8 ? -1 : 0; } Loading Loading @@ -740,9 +740,8 @@ static int __sa1111_probe(struct device *me, struct resource *mem, int irq) goto err_unmap; } printk(KERN_INFO "SA1111 Microprocessor Companion Chip: " "silicon revision %lx, metal revision %lx\n", (id & SKID_SIREV_MASK)>>4, (id & SKID_MTREV_MASK)); pr_info("SA1111 Microprocessor Companion Chip: silicon revision %lx, metal revision %lx\n", (id & SKID_SIREV_MASK) >> 4, id & SKID_MTREV_MASK); /* * We found it. Wake the chip up, and initialise. Loading arch/arm/include/asm/hw_irq.h +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ static inline void ack_bad_irq(int irq) { extern unsigned long irq_err_count; irq_err_count++; pr_crit("unexpected IRQ trap at vector %02x\n", irq); } void set_irq_flags(unsigned int irq, unsigned int flags); Loading arch/arm/include/asm/mcpm.h +17 −0 Original line number Diff line number Diff line Loading @@ -219,6 +219,23 @@ void __mcpm_outbound_leave_critical(unsigned int cluster, int state); bool __mcpm_outbound_enter_critical(unsigned int this_cpu, unsigned int cluster); int __mcpm_cluster_state(unsigned int cluster); /** * mcpm_sync_init - Initialize the cluster synchronization support * * @power_up_setup: platform specific function invoked during very * early CPU/cluster bringup stage. * * This prepares memory used by vlocks and the MCPM state machine used * across CPUs that may have their caches active or inactive. Must be * called only after a successful call to mcpm_platform_register(). * * The power_up_setup argument is a pointer to assembly code called when * the MMU and caches are still disabled during boot and no stack space is * available. The affinity level passed to that code corresponds to the * resource that needs to be initialized (e.g. 1 for cluster level, 0 for * CPU level). Proper exclusion mechanisms are already activated at that * point. */ int __init mcpm_sync_init( void (*power_up_setup)(unsigned int affinity_level)); Loading Loading
Documentation/power/runtime_pm.txt +4 −0 Original line number Diff line number Diff line Loading @@ -468,6 +468,10 @@ drivers/base/power/runtime.c and include/linux/pm_runtime.h: - set the power.irq_safe flag for the device, causing the runtime-PM callbacks to be invoked with interrupts off bool pm_runtime_is_irq_safe(struct device *dev); - return true if power.irq_safe flag was set for the device, causing the runtime-PM callbacks to be invoked with interrupts off void pm_runtime_mark_last_busy(struct device *dev); - set the power.last_busy field to the current time Loading
arch/arm/Kconfig +2 −0 Original line number Diff line number Diff line Loading @@ -702,7 +702,9 @@ config ARCH_SA1100 select CPU_SA1100 select GENERIC_CLOCKEVENTS select HAVE_IDE select IRQ_DOMAIN select ISA select MULTI_IRQ_HANDLER select NEED_MACH_MEMORY_H select SPARSE_IRQ help Loading
arch/arm/common/sa1111.c +6 −7 Original line number Diff line number Diff line Loading @@ -282,8 +282,8 @@ static int sa1111_retrigger_lowirq(struct irq_data *d) } if (i == 8) printk(KERN_ERR "Danger Will Robinson: failed to " "re-trigger IRQ%d\n", d->irq); pr_err("Danger Will Robinson: failed to re-trigger IRQ%d\n", d->irq); return i == 8 ? -1 : 0; } Loading Loading @@ -384,8 +384,8 @@ static int sa1111_retrigger_highirq(struct irq_data *d) } if (i == 8) printk(KERN_ERR "Danger Will Robinson: failed to " "re-trigger IRQ%d\n", d->irq); pr_err("Danger Will Robinson: failed to re-trigger IRQ%d\n", d->irq); return i == 8 ? -1 : 0; } Loading Loading @@ -740,9 +740,8 @@ static int __sa1111_probe(struct device *me, struct resource *mem, int irq) goto err_unmap; } printk(KERN_INFO "SA1111 Microprocessor Companion Chip: " "silicon revision %lx, metal revision %lx\n", (id & SKID_SIREV_MASK)>>4, (id & SKID_MTREV_MASK)); pr_info("SA1111 Microprocessor Companion Chip: silicon revision %lx, metal revision %lx\n", (id & SKID_SIREV_MASK) >> 4, id & SKID_MTREV_MASK); /* * We found it. Wake the chip up, and initialise. Loading
arch/arm/include/asm/hw_irq.h +1 −0 Original line number Diff line number Diff line Loading @@ -8,6 +8,7 @@ static inline void ack_bad_irq(int irq) { extern unsigned long irq_err_count; irq_err_count++; pr_crit("unexpected IRQ trap at vector %02x\n", irq); } void set_irq_flags(unsigned int irq, unsigned int flags); Loading
arch/arm/include/asm/mcpm.h +17 −0 Original line number Diff line number Diff line Loading @@ -219,6 +219,23 @@ void __mcpm_outbound_leave_critical(unsigned int cluster, int state); bool __mcpm_outbound_enter_critical(unsigned int this_cpu, unsigned int cluster); int __mcpm_cluster_state(unsigned int cluster); /** * mcpm_sync_init - Initialize the cluster synchronization support * * @power_up_setup: platform specific function invoked during very * early CPU/cluster bringup stage. * * This prepares memory used by vlocks and the MCPM state machine used * across CPUs that may have their caches active or inactive. Must be * called only after a successful call to mcpm_platform_register(). * * The power_up_setup argument is a pointer to assembly code called when * the MMU and caches are still disabled during boot and no stack space is * available. The affinity level passed to that code corresponds to the * resource that needs to be initialized (e.g. 1 for cluster level, 0 for * CPU level). Proper exclusion mechanisms are already activated at that * point. */ int __init mcpm_sync_init( void (*power_up_setup)(unsigned int affinity_level)); Loading