Linux kernel mirror (for testing) git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
kernel os linux
1
fork

Configure Feed

Select the types of activity you want to include in your feed.

at be662a18b7763496a052d489206af9ca2c2e1ac2 70 lines 1.9 kB view raw
1/* irq-routing.h: multiplexed IRQ routing 2 * 3 * Copyright (C) 2004 Red Hat, Inc. All Rights Reserved. 4 * Written by David Howells (dhowells@redhat.com) 5 * 6 * This program is free software; you can redistribute it and/or 7 * modify it under the terms of the GNU General Public License 8 * as published by the Free Software Foundation; either version 9 * 2 of the License, or (at your option) any later version. 10 */ 11 12#ifndef _ASM_IRQ_ROUTING_H 13#define _ASM_IRQ_ROUTING_H 14 15#ifndef __ASSEMBLY__ 16 17#include <linux/spinlock.h> 18#include <asm/irq.h> 19 20struct irq_source; 21struct irq_level; 22 23/* 24 * IRQ action distribution sets 25 */ 26struct irq_group { 27 int first_irq; /* first IRQ distributed here */ 28 void (*control)(struct irq_group *group, int index, int on); 29 30 struct irqaction *actions[NR_IRQ_ACTIONS_PER_GROUP]; /* IRQ action chains */ 31 struct irq_source *sources[NR_IRQ_ACTIONS_PER_GROUP]; /* IRQ sources */ 32 int disable_cnt[NR_IRQ_ACTIONS_PER_GROUP]; /* disable counts */ 33}; 34 35/* 36 * IRQ source manager 37 */ 38struct irq_source { 39 struct irq_source *next; 40 struct irq_level *level; 41 const char *muxname; 42 volatile void __iomem *muxdata; 43 unsigned long irqmask; 44 45 void (*doirq)(struct irq_source *source); 46}; 47 48/* 49 * IRQ level management (per CPU IRQ priority / entry vector) 50 */ 51struct irq_level { 52 int usage; 53 int disable_count; 54 unsigned long flags; /* current SA_INTERRUPT and SA_SHIRQ settings */ 55 spinlock_t lock; 56 struct irq_source *sources; 57}; 58 59extern struct irq_level frv_irq_levels[16]; 60extern struct irq_group *irq_groups[NR_IRQ_GROUPS]; 61 62extern void frv_irq_route(struct irq_source *source, int irqlevel); 63extern void frv_irq_route_external(struct irq_source *source, int irq); 64extern void frv_irq_set_group(struct irq_group *group); 65extern void distribute_irqs(struct irq_group *group, unsigned long irqmask); 66extern void route_cpu_irqs(void); 67 68#endif /* !__ASSEMBLY__ */ 69 70#endif /* _ASM_IRQ_ROUTING_H */