Annotation of qemu/hw/sh_intc.h, revision 1.1.1.2

1.1       root        1: #ifndef __SH_INTC_H__
                      2: #define __SH_INTC_H__
                      3: 
1.1.1.2 ! root        4: #include "qemu-common.h"
        !             5: #include "irq.h"
        !             6: 
1.1       root        7: typedef unsigned char intc_enum;
                      8: 
                      9: struct intc_vect {
                     10:     intc_enum enum_id;
                     11:     unsigned short vect;
                     12: };
                     13: 
                     14: #define INTC_VECT(enum_id, vect) { enum_id, vect }
                     15: 
                     16: struct intc_group {
                     17:     intc_enum enum_id;
                     18:     intc_enum enum_ids[32];
                     19: };
                     20: 
                     21: #define INTC_GROUP(enum_id, ids...) { enum_id, { ids } }
                     22: 
                     23: struct intc_mask_reg {
                     24:     unsigned long set_reg, clr_reg, reg_width;
                     25:     intc_enum enum_ids[32];
                     26:     unsigned long value;
                     27: };
                     28: 
                     29: struct intc_prio_reg {
                     30:     unsigned long set_reg, clr_reg, reg_width, field_width;
                     31:     intc_enum enum_ids[16];
                     32:     unsigned long value;
                     33: };
                     34: 
1.1.1.2 ! root       35: #define _INTC_ARRAY(a) a, ARRAY_SIZE(a)
1.1       root       36: 
                     37: struct intc_source {
                     38:     unsigned short vect;
                     39:     intc_enum next_enum_id;
                     40: 
                     41:     int asserted; /* emulates the interrupt signal line from device to intc */
                     42:     int enable_count;
                     43:     int enable_max;
                     44:     int pending; /* emulates the result of signal and masking */
                     45:     struct intc_desc *parent;
                     46: };
                     47: 
                     48: struct intc_desc {
1.1.1.2 ! root       49:     qemu_irq *irqs;
1.1       root       50:     struct intc_source *sources;
                     51:     int nr_sources;
                     52:     struct intc_mask_reg *mask_regs;
                     53:     int nr_mask_regs;
                     54:     struct intc_prio_reg *prio_regs;
                     55:     int nr_prio_regs;
                     56:     int iomemtype;
                     57:     int pending; /* number of interrupt sources that has pending set */
                     58: };
                     59: 
                     60: int sh_intc_get_pending_vector(struct intc_desc *desc, int imask);
                     61: struct intc_source *sh_intc_source(struct intc_desc *desc, intc_enum id);
                     62: void sh_intc_toggle_source(struct intc_source *source,
                     63:                           int enable_adj, int assert_adj);
                     64: 
                     65: void sh_intc_register_sources(struct intc_desc *desc,
                     66:                              struct intc_vect *vectors,
                     67:                              int nr_vectors,
                     68:                              struct intc_group *groups,
                     69:                              int nr_groups);
                     70: 
                     71: int sh_intc_init(struct intc_desc *desc,
                     72:                 int nr_sources,
                     73:                 struct intc_mask_reg *mask_regs,
                     74:                 int nr_mask_regs,
                     75:                 struct intc_prio_reg *prio_regs,
                     76:                 int nr_prio_regs);
                     77: 
1.1.1.2 ! root       78: void sh_intc_set_irl(void *opaque, int n, int level);
        !            79: 
1.1       root       80: #endif /* __SH_INTC_H__ */

unix.superglobalmegacorp.com