📄 irq.c
字号:
/* * arch/sh/boards/saturn/irq.c * * Copyright (C) 2002 Paul Mundt * * Released under the terms of the GNU GPL v2.0. */#include <linux/kernel.h>#include <linux/init.h>#include <linux/interrupt.h>#include <asm/irq.h>#include <asm/io.h>/* * Interrupts map out as follows: * * Vector Name Mask * * 64 VBLANKIN 0x0001 * 65 VBLANKOUT 0x0002 * 66 HBLANKIN 0x0004 * 67 TIMER0 0x0008 * 68 TIMER1 0x0010 * 69 DSPEND 0x0020 * 70 SOUNDREQUEST 0x0040 * 71 SYSTEMMANAGER 0x0080 * 72 PAD 0x0100 * 73 LEVEL2DMAEND 0x0200 * 74 LEVEL1DMAEND 0x0400 * 75 LEVEL0DMAEND 0x0800 * 76 DMAILLEGAL 0x1000 * 77 SRITEDRAWEND 0x2000 * 78 ABUS 0x8000 * */#define SATURN_IRQ_MIN 64 /* VBLANKIN */#define SATURN_IRQ_MAX 78 /* ABUS */#define SATURN_IRQ_MASK 0xbfffstatic inline u32 saturn_irq_mask(unsigned int irq_nr){ u32 mask; mask = (1 << (irq_nr - SATURN_IRQ_MIN)); mask <<= (irq_nr == SATURN_IRQ_MAX); mask &= SATURN_IRQ_MASK; return mask;}static inline void mask_saturn_irq(unsigned int irq_nr){ u32 mask; mask = ctrl_inl(SATURN_IMR); mask |= saturn_irq_mask(irq_nr); ctrl_outl(mask, SATURN_IMR);}static inline void unmask_saturn_irq(unsigned int irq_nr){ u32 mask; mask = ctrl_inl(SATURN_IMR); mask &= ~saturn_irq_mask(irq_nr); ctrl_outl(mask, SATURN_IMR);}static void disable_saturn_irq(unsigned int irq_nr){ mask_saturn_irq(irq_nr);}static void enable_saturn_irq(unsigned int irq_nr){ unmask_saturn_irq(irq_nr);}static void mask_and_ack_saturn_irq(unsigned int irq_nr){ mask_saturn_irq(irq_nr);}static void end_saturn_irq(unsigned int irq_nr){ if (!(irq_desc[irq_nr].status & (IRQ_DISABLED | IRQ_INPROGRESS))) unmask_saturn_irq(irq_nr);}static unsigned int startup_saturn_irq(unsigned int irq_nr){ unmask_saturn_irq(irq_nr); return 0;}static void shutdown_saturn_irq(unsigned int irq_nr){ mask_saturn_irq(irq_nr);}static struct hw_interrupt_type saturn_int = { .typename = "Saturn", .enable = enable_saturn_irq, .disable = disable_saturn_irq, .ack = mask_and_ack_saturn_irq, .end = end_saturn_irq, .startup = startup_saturn_irq, .shutdown = shutdown_saturn_irq,};int saturn_irq_demux(int irq_nr){ /* FIXME */ return irq_nr;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -