cregit-Linux how code gets into the kernel

Release 4.11 arch/arm/mach-s3c24xx/irq-pm.c

/* linux/arch/arm/plat-s3c24xx/irq-om.c
 *
 * Copyright (c) 2003-2004 Simtec Electronics
 *      Ben Dooks <ben@simtec.co.uk>
 *      http://armlinux.simtec.co.uk/
 *
 * S3C24XX - IRQ PM code
 *
 * This program is free software; you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 2 as
 * published by the Free Software Foundation.
 */

#include <linux/init.h>
#include <linux/module.h>
#include <linux/interrupt.h>
#include <linux/irq.h>
#include <linux/syscore_ops.h>
#include <linux/io.h>

#include <plat/cpu.h>
#include <plat/pm.h>
#include <plat/map-base.h>
#include <plat/map-s3c.h>

#include <mach/regs-irq.h>
#include <mach/regs-gpio.h>
#include <mach/pm-core.h>

#include <asm/irq.h>


int s3c_irq_wake(struct irq_data *data, unsigned int state) { unsigned long irqbit = 1 << data->hwirq; if (!(s3c_irqwake_intallow & irqbit)) return -ENOENT; pr_info("wake %s for hwirq %lu\n", state ? "enabled" : "disabled", data->hwirq); if (!state) s3c_irqwake_intmask |= irqbit; else s3c_irqwake_intmask &= ~irqbit; return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Dooks5882.86%250.00%
Lennert Buytenhek811.43%125.00%
Heiko Stübner45.71%125.00%
Total70100.00%4100.00%

static struct sleep_save irq_save[] = { SAVE_ITEM(S3C2410_INTMSK), SAVE_ITEM(S3C2410_INTSUBMSK), }; /* the extint values move between the s3c2410/s3c2440 and the s3c2412 * so we use an array to hold them, and to calculate the address of * the register at run-time */ static unsigned long save_extint[3]; static unsigned long save_eintflt[4]; static unsigned long save_eintmask;
static int s3c24xx_irq_suspend(void) { unsigned int i; for (i = 0; i < ARRAY_SIZE(save_extint); i++) save_extint[i] = __raw_readl(S3C24XX_EXTINT0 + (i*4)); for (i = 0; i < ARRAY_SIZE(save_eintflt); i++) save_eintflt[i] = __raw_readl(S3C24XX_EINFLT0 + (i*4)); s3c_pm_do_save(irq_save, ARRAY_SIZE(irq_save)); save_eintmask = __raw_readl(S3C24XX_EINTMASK); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Ben Dooks9497.92%133.33%
Heiko Stübner11.04%133.33%
Rafael J. Wysocki11.04%133.33%
Total96100.00%3100.00%


static void s3c24xx_irq_resume(void) { unsigned int i; for (i = 0; i < ARRAY_SIZE(save_extint); i++) __raw_writel(save_extint[i], S3C24XX_EXTINT0 + (i*4)); for (i = 0; i < ARRAY_SIZE(save_eintflt); i++) __raw_writel(save_eintflt[i], S3C24XX_EINFLT0 + (i*4)); s3c_pm_do_restore(irq_save, ARRAY_SIZE(irq_save)); __raw_writel(save_eintmask, S3C24XX_EINTMASK); }

Contributors

PersonTokensPropCommitsCommitProp
Ben Dooks9096.77%133.33%
Rafael J. Wysocki22.15%133.33%
Heiko Stübner11.08%133.33%
Total93100.00%3100.00%

struct syscore_ops s3c24xx_irq_syscore_ops = { .suspend = s3c24xx_irq_suspend, .resume = s3c24xx_irq_resume, }; #ifdef CONFIG_CPU_S3C2416 static struct sleep_save s3c2416_irq_save[] = { SAVE_ITEM(S3C2416_INTMSK2), };
static int s3c2416_irq_suspend(void) { s3c_pm_do_save(s3c2416_irq_save, ARRAY_SIZE(s3c2416_irq_save)); return 0; }

Contributors

PersonTokensPropCommitsCommitProp
Heiko Stübner21100.00%1100.00%
Total21100.00%1100.00%


static void s3c2416_irq_resume(void) { s3c_pm_do_restore(s3c2416_irq_save, ARRAY_SIZE(s3c2416_irq_save)); }

Contributors

PersonTokensPropCommitsCommitProp
Heiko Stübner18100.00%1100.00%
Total18100.00%1100.00%

struct syscore_ops s3c2416_irq_syscore_ops = { .suspend = s3c2416_irq_suspend, .resume = s3c2416_irq_resume, }; #endif

Overall Contributors

PersonTokensPropCommitsCommitProp
Ben Dooks30069.61%330.00%
Heiko Stübner11125.75%440.00%
Lennert Buytenhek143.25%110.00%
Arnd Bergmann30.70%110.00%
Rafael J. Wysocki30.70%110.00%
Total431100.00%10100.00%
Information contained on this website is for historical information purposes only and does not indicate or represent copyright ownership.
Created with cregit.