diff options
Diffstat (limited to 'include/linux/sh_intc.h')
| -rw-r--r-- | include/linux/sh_intc.h | 19 | 
1 files changed, 14 insertions, 5 deletions
| diff --git a/include/linux/sh_intc.h b/include/linux/sh_intc.h index 0d6cd38e673d..f656d1a43dc0 100644 --- a/include/linux/sh_intc.h +++ b/include/linux/sh_intc.h | |||
| @@ -20,6 +20,12 @@ struct intc_group { | |||
| 20 | 20 | ||
| 21 | #define INTC_GROUP(enum_id, ids...) { enum_id, { ids } } | 21 | #define INTC_GROUP(enum_id, ids...) { enum_id, { ids } } | 
| 22 | 22 | ||
| 23 | struct intc_subgroup { | ||
| 24 | unsigned long reg, reg_width; | ||
| 25 | intc_enum parent_id; | ||
| 26 | intc_enum enum_ids[32]; | ||
| 27 | }; | ||
| 28 | |||
| 23 | struct intc_mask_reg { | 29 | struct intc_mask_reg { | 
| 24 | unsigned long set_reg, clr_reg, reg_width; | 30 | unsigned long set_reg, clr_reg, reg_width; | 
| 25 | intc_enum enum_ids[32]; | 31 | intc_enum enum_ids[32]; | 
| @@ -69,9 +75,12 @@ struct intc_hw_desc { | |||
| 69 | unsigned int nr_sense_regs; | 75 | unsigned int nr_sense_regs; | 
| 70 | struct intc_mask_reg *ack_regs; | 76 | struct intc_mask_reg *ack_regs; | 
| 71 | unsigned int nr_ack_regs; | 77 | unsigned int nr_ack_regs; | 
| 78 | struct intc_subgroup *subgroups; | ||
| 79 | unsigned int nr_subgroups; | ||
| 72 | }; | 80 | }; | 
| 73 | 81 | ||
| 74 | #define _INTC_ARRAY(a) a, sizeof(a)/sizeof(*a) | 82 | #define _INTC_ARRAY(a) a, a == NULL ? 0 : sizeof(a)/sizeof(*a) | 
| 83 | |||
| 75 | #define INTC_HW_DESC(vectors, groups, mask_regs, \ | 84 | #define INTC_HW_DESC(vectors, groups, mask_regs, \ | 
| 76 | prio_regs, sense_regs, ack_regs) \ | 85 | prio_regs, sense_regs, ack_regs) \ | 
| 77 | { \ | 86 | { \ | 
| @@ -105,8 +114,11 @@ struct intc_desc symbol __initdata = { \ | |||
| 105 | prio_regs, sense_regs, ack_regs), \ | 114 | prio_regs, sense_regs, ack_regs), \ | 
| 106 | } | 115 | } | 
| 107 | 116 | ||
| 108 | int __init register_intc_controller(struct intc_desc *desc); | 117 | int register_intc_controller(struct intc_desc *desc); | 
| 118 | void reserve_intc_vectors(struct intc_vect *vectors, unsigned int nr_vecs); | ||
| 109 | int intc_set_priority(unsigned int irq, unsigned int prio); | 119 | int intc_set_priority(unsigned int irq, unsigned int prio); | 
| 120 | int intc_irq_lookup(const char *chipname, intc_enum enum_id); | ||
| 121 | void intc_finalize(void); | ||
| 110 | 122 | ||
| 111 | #ifdef CONFIG_INTC_USERIMASK | 123 | #ifdef CONFIG_INTC_USERIMASK | 
| 112 | int register_intc_userimask(unsigned long addr); | 124 | int register_intc_userimask(unsigned long addr); | 
| @@ -117,7 +129,4 @@ static inline int register_intc_userimask(unsigned long addr) | |||
| 117 | } | 129 | } | 
| 118 | #endif | 130 | #endif | 
| 119 | 131 | ||
| 120 | int reserve_irq_vector(unsigned int irq); | ||
| 121 | void reserve_irq_legacy(void); | ||
| 122 | |||
| 123 | #endif /* __SH_INTC_H */ | 132 | #endif /* __SH_INTC_H */ | 
